Update the NPM dependencies
authorAlexander Ebert <ebert@woltlab.com>
Fri, 15 Nov 2024 16:21:58 +0000 (17:21 +0100)
committerAlexander Ebert <ebert@woltlab.com>
Fri, 15 Nov 2024 16:21:58 +0000 (17:21 +0100)
package-lock.json
package.json
wcfsetup/install/files/js/3rdParty/googlemaps/markerclusterer/index.umd.js
wcfsetup/install/files/js/3rdParty/googlemaps/markerclusterer/index.umd.js.map
wcfsetup/install/files/js/WoltLabSuite/WebComponent.min.js

index d2252eb3993434d261438913d99feacd94ff3a6f..00433dd2b857df8232778d061e5d624df91aa885 100644 (file)
@@ -7,34 +7,34 @@
       "name": "@woltlab/wcf",
       "dependencies": {
         "@ckeditor/ckeditor5-inspector": "^4.1.0",
-        "@googlemaps/markerclusterer": "2.3.2",
+        "@googlemaps/markerclusterer": "2.5.3",
         "@types/facebook-js-sdk": "^3.3.12",
         "@types/google.maps": "^3.58.1",
-        "@types/jquery": "^3.5.30",
+        "@types/jquery": "^3.5.32",
         "@types/pica": "5.1.3",
-        "@types/prismjs": "^1.26.4",
+        "@types/prismjs": "^1.26.5",
         "@types/twitter-for-web": "0.0.6",
         "@woltlab/editor": "git+https://github.com/WoltLab/editor.git#b9a8e10528a42c5aac06ec1837881a7dd141aefb",
         "@woltlab/visual-dom-diff": "git+https://github.com/WoltLab/visual-dom-diff.git#e5b51fce3157d1eda310566fc1f86101341d1fea",
         "@woltlab/zxcvbn": "git+https://github.com/WoltLab/zxcvbn.git#5b582b24e437f1883ccad3c37dae7c3c5f1e7da3",
-        "emoji-picker-element": "^1.22.8",
-        "focus-trap": "^7.6.0",
+        "emoji-picker-element": "^1.23.0",
+        "focus-trap": "^7.6.1",
         "html-parsed-element": "^0.4.1",
-        "perfect-scrollbar": "^1.5.5",
+        "perfect-scrollbar": "^1.5.6",
         "qr-creator": "^1.0.0",
         "reflect-metadata": "^0.2.2",
         "tabbable": "^6.2.0",
-        "tslib": "^2.7.0",
+        "tslib": "^2.8.1",
         "webpack-cli": "^5.1.4"
       },
       "devDependencies": {
-        "@typescript-eslint/eslint-plugin": "^8.7.0",
-        "@typescript-eslint/parser": "^8.7.0",
+        "@typescript-eslint/eslint-plugin": "^8.14.0",
+        "@typescript-eslint/parser": "^8.14.0",
         "esbuild": "^0.24.0",
-        "eslint": "^9.11.1",
+        "eslint": "^9.14.0",
         "eslint-config-prettier": "^9.1.0",
         "prettier": "^3.3.3",
-        "typescript": "^5.6.2"
+        "typescript": "^5.6.3"
       }
     },
     "node_modules/@aashutoshrathi/word-wrap": {
       }
     },
     "node_modules/@eslint-community/regexpp": {
-      "version": "4.11.1",
-      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz",
-      "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==",
+      "version": "4.12.1",
+      "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz",
+      "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==",
       "dev": true,
       "license": "MIT",
       "engines": {
       }
     },
     "node_modules/@eslint/core": {
-      "version": "0.6.0",
-      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz",
-      "integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==",
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz",
+      "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==",
       "dev": true,
       "license": "Apache-2.0",
       "engines": {
       }
     },
     "node_modules/@eslint/js": {
-      "version": "9.11.1",
-      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.11.1.tgz",
-      "integrity": "sha512-/qu+TWz8WwPWc7/HcIJKi+c+MOm46GdVaSlTTQcaqaL53+GsoA6MxWp5PtTx48qbSP7ylM1Kn7nhvkugfJvRSA==",
+      "version": "9.14.0",
+      "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz",
+      "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==",
       "dev": true,
       "license": "MIT",
       "engines": {
       }
     },
     "node_modules/@googlemaps/markerclusterer": {
-      "version": "2.3.2",
-      "resolved": "https://registry.npmjs.org/@googlemaps/markerclusterer/-/markerclusterer-2.3.2.tgz",
-      "integrity": "sha512-zb9OQP8XscZp2Npt1uQUYnGKu1miuq4DPP28JyDuFd6HV17HCEcjV9MtBi4muG/iVRXXvuHW9bRCnHbao9ITfw==",
+      "version": "2.5.3",
+      "resolved": "https://registry.npmjs.org/@googlemaps/markerclusterer/-/markerclusterer-2.5.3.tgz",
+      "integrity": "sha512-x7lX0R5yYOoiNectr10wLgCBasNcXFHiADIBdmn7jQllF2B5ENQw5XtZK+hIw4xnV0Df0xhN4LN98XqA5jaiOw==",
       "license": "Apache-2.0",
       "dependencies": {
         "fast-deep-equal": "^3.1.3",
         "supercluster": "^8.0.1"
       }
     },
+    "node_modules/@humanfs/core": {
+      "version": "0.19.1",
+      "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+      "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=18.18.0"
+      }
+    },
+    "node_modules/@humanfs/node": {
+      "version": "0.16.6",
+      "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz",
+      "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "dependencies": {
+        "@humanfs/core": "^0.19.1",
+        "@humanwhocodes/retry": "^0.3.0"
+      },
+      "engines": {
+        "node": ">=18.18.0"
+      }
+    },
+    "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz",
+      "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==",
+      "dev": true,
+      "license": "Apache-2.0",
+      "engines": {
+        "node": ">=18.18"
+      },
+      "funding": {
+        "type": "github",
+        "url": "https://github.com/sponsors/nzakas"
+      }
+    },
     "node_modules/@humanwhocodes/module-importer": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
       }
     },
     "node_modules/@humanwhocodes/retry": {
-      "version": "0.3.0",
-      "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.0.tgz",
-      "integrity": "sha512-d2CGZR2o7fS6sWB7DG/3a95bGKQyHMACZ5aW8qGkkqQpUoZV6C0X7Pc7l4ZNMZkfNBf4VWNe9E1jRsf0G146Ew==",
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz",
+      "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==",
       "dev": true,
       "license": "Apache-2.0",
       "engines": {
       "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
       "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@nodelib/fs.stat": "2.0.5",
         "run-parallel": "^1.1.9"
       "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
       "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "node": ">= 8"
       }
       "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
       "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
       "dev": true,
+      "license": "MIT",
       "dependencies": {
         "@nodelib/fs.scandir": "2.1.5",
         "fastq": "^1.6.0"
       "integrity": "sha512-X9QTSvGJ0nCfMzYOnaVs/k6/4L+7F5uCS+4iUmkLEls6J9S/Phv+m/i3mDeyc49ZBgwab3EFO1HEoBY7k98EGQ=="
     },
     "node_modules/@types/jquery": {
-      "version": "3.5.30",
-      "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.30.tgz",
-      "integrity": "sha512-nbWKkkyb919DOUxjmRVk8vwtDb0/k8FKncmUKFi+NY+QXqWltooxTrswvz4LspQwxvLdvzBN1TImr6cw3aQx2A==",
+      "version": "3.5.32",
+      "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.32.tgz",
+      "integrity": "sha512-b9Xbf4CkMqS02YH8zACqN1xzdxc3cO735Qe5AbSUFmyOiaWAbcpqh9Wna+Uk0vgACvoQHpWDg2rGdHkYPLmCiQ==",
       "license": "MIT",
       "dependencies": {
         "@types/sizzle": "*"
       "license": "MIT"
     },
     "node_modules/@types/prismjs": {
-      "version": "1.26.4",
-      "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.4.tgz",
-      "integrity": "sha512-rlAnzkW2sZOjbqZ743IHUhFcvzaGbqijwOu8QZnZCjfQzBqFE3s4lOTJEsxikImav9uzz/42I+O7YUs1mWgMlg==",
+      "version": "1.26.5",
+      "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz",
+      "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==",
       "license": "MIT"
     },
     "node_modules/@types/sizzle": {
       "integrity": "sha512-3NoqvZC2W5gAC5DZbTpCeJ251vGQmgcWIHQJGq2J240HY6ErQ9aWKkwfoKJlHLx+A83WPNTZ9+3cd2ILxbvr1w=="
     },
     "node_modules/@typescript-eslint/eslint-plugin": {
-      "version": "8.7.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.7.0.tgz",
-      "integrity": "sha512-RIHOoznhA3CCfSTFiB6kBGLQtB/sox+pJ6jeFu6FxJvqL8qRxq/FfGO/UhsGgQM9oGdXkV4xUgli+dt26biB6A==",
+      "version": "8.14.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.14.0.tgz",
+      "integrity": "sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
         "@eslint-community/regexpp": "^4.10.0",
-        "@typescript-eslint/scope-manager": "8.7.0",
-        "@typescript-eslint/type-utils": "8.7.0",
-        "@typescript-eslint/utils": "8.7.0",
-        "@typescript-eslint/visitor-keys": "8.7.0",
+        "@typescript-eslint/scope-manager": "8.14.0",
+        "@typescript-eslint/type-utils": "8.14.0",
+        "@typescript-eslint/utils": "8.14.0",
+        "@typescript-eslint/visitor-keys": "8.14.0",
         "graphemer": "^1.4.0",
         "ignore": "^5.3.1",
         "natural-compare": "^1.4.0",
       }
     },
     "node_modules/@typescript-eslint/parser": {
-      "version": "8.7.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.7.0.tgz",
-      "integrity": "sha512-lN0btVpj2unxHlNYLI//BQ7nzbMJYBVQX5+pbNXvGYazdlgYonMn4AhhHifQ+J4fGRYA/m1DjaQjx+fDetqBOQ==",
+      "version": "8.14.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.14.0.tgz",
+      "integrity": "sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==",
       "dev": true,
       "license": "BSD-2-Clause",
       "dependencies": {
-        "@typescript-eslint/scope-manager": "8.7.0",
-        "@typescript-eslint/types": "8.7.0",
-        "@typescript-eslint/typescript-estree": "8.7.0",
-        "@typescript-eslint/visitor-keys": "8.7.0",
+        "@typescript-eslint/scope-manager": "8.14.0",
+        "@typescript-eslint/types": "8.14.0",
+        "@typescript-eslint/typescript-estree": "8.14.0",
+        "@typescript-eslint/visitor-keys": "8.14.0",
         "debug": "^4.3.4"
       },
       "engines": {
       }
     },
     "node_modules/@typescript-eslint/scope-manager": {
-      "version": "8.7.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.7.0.tgz",
-      "integrity": "sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==",
+      "version": "8.14.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.14.0.tgz",
+      "integrity": "sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@typescript-eslint/types": "8.7.0",
-        "@typescript-eslint/visitor-keys": "8.7.0"
+        "@typescript-eslint/types": "8.14.0",
+        "@typescript-eslint/visitor-keys": "8.14.0"
       },
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       }
     },
     "node_modules/@typescript-eslint/type-utils": {
-      "version": "8.7.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.7.0.tgz",
-      "integrity": "sha512-tl0N0Mj3hMSkEYhLkjREp54OSb/FI6qyCzfiiclvJvOqre6hsZTGSnHtmFLDU8TIM62G7ygEa1bI08lcuRwEnQ==",
+      "version": "8.14.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.14.0.tgz",
+      "integrity": "sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@typescript-eslint/typescript-estree": "8.7.0",
-        "@typescript-eslint/utils": "8.7.0",
+        "@typescript-eslint/typescript-estree": "8.14.0",
+        "@typescript-eslint/utils": "8.14.0",
         "debug": "^4.3.4",
         "ts-api-utils": "^1.3.0"
       },
       }
     },
     "node_modules/@typescript-eslint/types": {
-      "version": "8.7.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.7.0.tgz",
-      "integrity": "sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==",
+      "version": "8.14.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.14.0.tgz",
+      "integrity": "sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==",
       "dev": true,
       "license": "MIT",
       "engines": {
       }
     },
     "node_modules/@typescript-eslint/typescript-estree": {
-      "version": "8.7.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.7.0.tgz",
-      "integrity": "sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==",
+      "version": "8.14.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.14.0.tgz",
+      "integrity": "sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==",
       "dev": true,
       "license": "BSD-2-Clause",
       "dependencies": {
-        "@typescript-eslint/types": "8.7.0",
-        "@typescript-eslint/visitor-keys": "8.7.0",
+        "@typescript-eslint/types": "8.14.0",
+        "@typescript-eslint/visitor-keys": "8.14.0",
         "debug": "^4.3.4",
         "fast-glob": "^3.3.2",
         "is-glob": "^4.0.3",
       }
     },
     "node_modules/@typescript-eslint/utils": {
-      "version": "8.7.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.7.0.tgz",
-      "integrity": "sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==",
+      "version": "8.14.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.14.0.tgz",
+      "integrity": "sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.4.0",
-        "@typescript-eslint/scope-manager": "8.7.0",
-        "@typescript-eslint/types": "8.7.0",
-        "@typescript-eslint/typescript-estree": "8.7.0"
+        "@typescript-eslint/scope-manager": "8.14.0",
+        "@typescript-eslint/types": "8.14.0",
+        "@typescript-eslint/typescript-estree": "8.14.0"
       },
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       }
     },
     "node_modules/@typescript-eslint/visitor-keys": {
-      "version": "8.7.0",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.7.0.tgz",
-      "integrity": "sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==",
+      "version": "8.14.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.14.0.tgz",
+      "integrity": "sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@typescript-eslint/types": "8.7.0",
+        "@typescript-eslint/types": "8.14.0",
         "eslint-visitor-keys": "^3.4.3"
       },
       "engines": {
       "peer": true
     },
     "node_modules/acorn": {
-      "version": "8.12.1",
-      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz",
-      "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==",
+      "version": "8.14.0",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz",
+      "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==",
       "license": "MIT",
       "bin": {
         "acorn": "bin/acorn"
         "ajv": "^6.9.1"
       }
     },
-    "node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/ansi-styles": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
       "peer": true
     },
     "node_modules/emoji-picker-element": {
-      "version": "1.22.8",
-      "resolved": "https://registry.npmjs.org/emoji-picker-element/-/emoji-picker-element-1.22.8.tgz",
-      "integrity": "sha512-EFgRjrlIcdA1ilyMH/f9KjB0Pi/vynrojNgMDZfU1Jv2YLrhdLJWx6xCehizPyxm4/NUuB8DfFvIT4v+1njjPQ=="
+      "version": "1.23.0",
+      "resolved": "https://registry.npmjs.org/emoji-picker-element/-/emoji-picker-element-1.23.0.tgz",
+      "integrity": "sha512-eITYquXyUoaTkpxJxEMIzCO6y3xpFxLvLuIRbnG+fL5u0aicHzKFvjSScrOSEwqg+2LWUlDqu08vqBFvtBOAeQ==",
+      "license": "Apache-2.0"
     },
     "node_modules/enhanced-resolve": {
       "version": "5.17.1",
       }
     },
     "node_modules/eslint": {
-      "version": "9.11.1",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.11.1.tgz",
-      "integrity": "sha512-MobhYKIoAO1s1e4VUrgx1l1Sk2JBR/Gqjjgw8+mfgoLE2xwsHur4gdfTxyTgShrhvdVFTaJSgMiQBl1jv/AWxg==",
+      "version": "9.14.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz",
+      "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
-        "@eslint-community/regexpp": "^4.11.0",
+        "@eslint-community/regexpp": "^4.12.1",
         "@eslint/config-array": "^0.18.0",
-        "@eslint/core": "^0.6.0",
+        "@eslint/core": "^0.7.0",
         "@eslint/eslintrc": "^3.1.0",
-        "@eslint/js": "9.11.1",
+        "@eslint/js": "9.14.0",
         "@eslint/plugin-kit": "^0.2.0",
+        "@humanfs/node": "^0.16.6",
         "@humanwhocodes/module-importer": "^1.0.1",
-        "@humanwhocodes/retry": "^0.3.0",
-        "@nodelib/fs.walk": "^1.2.8",
+        "@humanwhocodes/retry": "^0.4.0",
         "@types/estree": "^1.0.6",
         "@types/json-schema": "^7.0.15",
         "ajv": "^6.12.4",
         "cross-spawn": "^7.0.2",
         "debug": "^4.3.2",
         "escape-string-regexp": "^4.0.0",
-        "eslint-scope": "^8.0.2",
-        "eslint-visitor-keys": "^4.0.0",
-        "espree": "^10.1.0",
+        "eslint-scope": "^8.2.0",
+        "eslint-visitor-keys": "^4.2.0",
+        "espree": "^10.3.0",
         "esquery": "^1.5.0",
         "esutils": "^2.0.2",
         "fast-deep-equal": "^3.1.3",
         "ignore": "^5.2.0",
         "imurmurhash": "^0.1.4",
         "is-glob": "^4.0.0",
-        "is-path-inside": "^3.0.3",
         "json-stable-stringify-without-jsonify": "^1.0.1",
         "lodash.merge": "^4.6.2",
         "minimatch": "^3.1.2",
         "natural-compare": "^1.4.0",
         "optionator": "^0.9.3",
-        "strip-ansi": "^6.0.1",
         "text-table": "^0.2.0"
       },
       "bin": {
       }
     },
     "node_modules/eslint-scope": {
-      "version": "8.0.2",
-      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.2.tgz",
-      "integrity": "sha512-6E4xmrTw5wtxnLA5wYL3WDfhZ/1bUBGOXV0zQvVRDOtrR8D0p6W7fs3JweNYhwRYeGvd/1CKX2se0/2s7Q/nJA==",
+      "version": "8.2.0",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz",
+      "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==",
       "dev": true,
       "license": "BSD-2-Clause",
       "dependencies": {
       }
     },
     "node_modules/eslint/node_modules/eslint-visitor-keys": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz",
-      "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==",
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+      "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
       "dev": true,
       "license": "Apache-2.0",
       "engines": {
       }
     },
     "node_modules/espree": {
-      "version": "10.1.0",
-      "resolved": "https://registry.npmjs.org/espree/-/espree-10.1.0.tgz",
-      "integrity": "sha512-M1M6CpiE6ffoigIOWYO9UDP8TMUw9kqb21tf+08IgDYjCsOvCuDt4jQcZmoYxx+w7zlKw9/N0KXfto+I8/FrXA==",
+      "version": "10.3.0",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz",
+      "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==",
       "dev": true,
       "license": "BSD-2-Clause",
       "dependencies": {
-        "acorn": "^8.12.0",
+        "acorn": "^8.14.0",
         "acorn-jsx": "^5.3.2",
-        "eslint-visitor-keys": "^4.0.0"
+        "eslint-visitor-keys": "^4.2.0"
       },
       "engines": {
         "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
       }
     },
     "node_modules/espree/node_modules/eslint-visitor-keys": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.0.0.tgz",
-      "integrity": "sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==",
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz",
+      "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==",
       "dev": true,
       "license": "Apache-2.0",
       "engines": {
       }
     },
     "node_modules/fastq": {
-      "version": "1.13.0",
-      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
-      "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
+      "version": "1.17.1",
+      "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",
+      "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",
       "dev": true,
+      "license": "ISC",
       "dependencies": {
         "reusify": "^1.0.4"
       }
       "license": "ISC"
     },
     "node_modules/focus-trap": {
-      "version": "7.6.0",
-      "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.0.tgz",
-      "integrity": "sha512-1td0l3pMkWJLFipobUcGaf+5DTY4PLDDrcqoSaKP8ediO/CoWCCYk/fT/Y2A4e6TNB+Sh6clRJCjOPPnKoNHnQ==",
+      "version": "7.6.1",
+      "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.6.1.tgz",
+      "integrity": "sha512-nB8y4nQl8PshahLpGKZOq1sb0xrMVFSn6at7u/qOsBZTlZRzaapISGENcB6mOkoezbClZyiMwEF/dGY8AZ00rA==",
       "license": "MIT",
       "dependencies": {
         "tabbable": "^6.2.0"
         "node": ">=0.12.0"
       }
     },
-    "node_modules/is-path-inside": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
-      "dev": true,
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/is-plain-object": {
       "version": "2.0.4",
       "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
       "license": "MIT"
     },
     "node_modules/perfect-scrollbar": {
-      "version": "1.5.5",
-      "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.5.tgz",
-      "integrity": "sha512-dzalfutyP3e/FOpdlhVryN4AJ5XDVauVWxybSkLZmakFE2sS3y3pc4JnSprw8tGmHvkaG5Edr5T7LBTZ+WWU2g=="
+      "version": "1.5.6",
+      "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.5.6.tgz",
+      "integrity": "sha512-rixgxw3SxyJbCaSpo1n35A/fwI1r2rdwMKOTCg/AcG+xOEyZcE8UHVjpZMFCVImzsFoCZeJTT+M/rdEIQYO2nw==",
+      "license": "MIT"
     },
     "node_modules/picocolors": {
       "version": "1.1.1",
           "type": "consulting",
           "url": "https://feross.org/support"
         }
-      ]
+      ],
+      "license": "MIT"
     },
     "node_modules/randombytes": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
       "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
       "dev": true,
+      "license": "MIT",
       "engines": {
         "iojs": ">=1.0.0",
         "node": ">=0.10.0"
           "url": "https://feross.org/support"
         }
       ],
+      "license": "MIT",
       "dependencies": {
         "queue-microtask": "^1.2.2"
       }
         "source-map": "^0.6.0"
       }
     },
-    "node_modules/strip-ansi": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
-      "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^5.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/strip-json-comments": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
       }
     },
     "node_modules/tslib": {
-      "version": "2.7.0",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz",
-      "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==",
+      "version": "2.8.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+      "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
       "license": "0BSD"
     },
     "node_modules/turndown": {
       }
     },
     "node_modules/typescript": {
-      "version": "5.6.2",
-      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz",
-      "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==",
+      "version": "5.6.3",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
+      "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
       "dev": true,
       "license": "Apache-2.0",
       "bin": {
index 43e9e1ce9dcc415511d2a9f69cd26aa1543f810c..7fd027afe80fc36b73d9c52bf185e9d5cad08abe 100644 (file)
@@ -5,34 +5,34 @@
     "bundle-emoji-picker": "npx webpack build --config emoji-picker-webpack.config.js"
   },
   "devDependencies": {
-    "@typescript-eslint/eslint-plugin": "^8.7.0",
-    "@typescript-eslint/parser": "^8.7.0",
+    "@typescript-eslint/eslint-plugin": "^8.14.0",
+    "@typescript-eslint/parser": "^8.14.0",
     "esbuild": "^0.24.0",
-    "eslint": "^9.11.1",
+    "eslint": "^9.14.0",
     "eslint-config-prettier": "^9.1.0",
     "prettier": "^3.3.3",
-    "typescript": "^5.6.2"
+    "typescript": "^5.6.3"
   },
   "dependencies": {
     "@ckeditor/ckeditor5-inspector": "^4.1.0",
-    "@googlemaps/markerclusterer": "2.3.2",
+    "@googlemaps/markerclusterer": "2.5.3",
     "@types/facebook-js-sdk": "^3.3.12",
     "@types/google.maps": "^3.58.1",
-    "@types/jquery": "^3.5.30",
+    "@types/jquery": "^3.5.32",
     "@types/pica": "5.1.3",
-    "@types/prismjs": "^1.26.4",
+    "@types/prismjs": "^1.26.5",
     "@types/twitter-for-web": "0.0.6",
     "@woltlab/editor": "git+https://github.com/WoltLab/editor.git#b9a8e10528a42c5aac06ec1837881a7dd141aefb",
     "@woltlab/visual-dom-diff": "git+https://github.com/WoltLab/visual-dom-diff.git#e5b51fce3157d1eda310566fc1f86101341d1fea",
     "@woltlab/zxcvbn": "git+https://github.com/WoltLab/zxcvbn.git#5b582b24e437f1883ccad3c37dae7c3c5f1e7da3",
-    "emoji-picker-element": "^1.22.8",
-    "focus-trap": "^7.6.0",
+    "emoji-picker-element": "^1.23.0",
+    "focus-trap": "^7.6.1",
     "html-parsed-element": "^0.4.1",
-    "perfect-scrollbar": "^1.5.5",
+    "perfect-scrollbar": "^1.5.6",
     "qr-creator": "^1.0.0",
     "reflect-metadata": "^0.2.2",
     "tabbable": "^6.2.0",
-    "tslib": "^2.7.0",
+    "tslib": "^2.8.1",
     "webpack-cli": "^5.1.4"
   }
 }
index 7b6f906976e57a1c74f595cb5f77331fb0b483e1..d2d5d0d5b085066773f0f975b014061278c19dcd 100644 (file)
@@ -1,2 +1,2 @@
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).markerClusterer={})}(this,(function(t){"use strict";function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){for(var r=0;r<e.length;r++){var n=e[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(t,(o=n.key,i=void 0,"symbol"==typeof(i=function(t,e){if("object"!=typeof t||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(o,"string"))?i:String(i)),n)}var o,i}function n(t,e,n){return e&&r(t.prototype,e),n&&r(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&a(t,e)}function i(t){return i=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},i(t)}function a(t,e){return a=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},a(t,e)}function s(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}function u(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,n=i(t);if(e){var o=i(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return s(this,r)}}function c(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,a,s=[],u=!0,c=!1;try{if(i=(r=r.call(t)).next,0===e){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=i.call(r)).done)&&(s.push(n.value),s.length!==e);u=!0);}catch(t){c=!0,o=t}finally{try{if(!u&&null!=r.return&&(a=r.return(),Object(a)!==a))return}finally{if(c)throw o}}return s}}(t,e)||l(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(t){return function(t){if(Array.isArray(t))return h(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||l(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function l(t,e){if(t){if("string"==typeof t)return h(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?h(t,e):void 0}}function h(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function p(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!r){if(Array.isArray(t)||(r=l(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0,o=function(){};return{s:o,n:function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,a=!0,s=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return a=t.done,t},e:function(t){s=!0,i=t},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw i}}}}var d="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function v(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var y=function(t){return t&&t.Math==Math&&t},g=y("object"==typeof globalThis&&globalThis)||y("object"==typeof window&&window)||y("object"==typeof self&&self)||y("object"==typeof d&&d)||function(){return this}()||d||Function("return this")(),m={},b=function(t){try{return!!t()}catch(t){return!0}},w=!b((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),k=!b((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})),O=k,x=Function.prototype.call,E=O?x.bind(x):function(){return x.apply(x,arguments)},S={},A={}.propertyIsEnumerable,M=Object.getOwnPropertyDescriptor,j=M&&!A.call({1:2},1);S.f=j?function(t){var e=M(this,t);return!!e&&e.enumerable}:A;var P,T,_=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},I=k,C=Function.prototype,L=C.call,N=I&&C.bind.bind(L,L),R=I?N:function(t){return function(){return L.apply(t,arguments)}},D=R,F=D({}.toString),z=D("".slice),Z=function(t){return z(F(t),8,-1)},U=b,B=Z,G=Object,V=R("".split),W=U((function(){return!G("z").propertyIsEnumerable(0)}))?function(t){return"String"==B(t)?V(t,""):G(t)}:G,$=function(t){return null==t},H=$,q=TypeError,Y=function(t){if(H(t))throw q("Can't call method on "+t);return t},K=W,X=Y,J=function(t){return K(X(t))},Q="object"==typeof document&&document.all,tt={all:Q,IS_HTMLDDA:void 0===Q&&void 0!==Q},et=tt.all,rt=tt.IS_HTMLDDA?function(t){return"function"==typeof t||t===et}:function(t){return"function"==typeof t},nt=rt,ot=tt.all,it=tt.IS_HTMLDDA?function(t){return"object"==typeof t?null!==t:nt(t)||t===ot}:function(t){return"object"==typeof t?null!==t:nt(t)},at=g,st=rt,ut=function(t,e){return arguments.length<2?(r=at[t],st(r)?r:void 0):at[t]&&at[t][e];var r},ct=R({}.isPrototypeOf),ft=g,lt="undefined"!=typeof navigator&&String(navigator.userAgent)||"",ht=ft.process,pt=ft.Deno,dt=ht&&ht.versions||pt&&pt.version,vt=dt&&dt.v8;vt&&(T=(P=vt.split("."))[0]>0&&P[0]<4?1:+(P[0]+P[1])),!T&&lt&&(!(P=lt.match(/Edge\/(\d+)/))||P[1]>=74)&&(P=lt.match(/Chrome\/(\d+)/))&&(T=+P[1]);var yt=T,gt=yt,mt=b,bt=g.String,wt=!!Object.getOwnPropertySymbols&&!mt((function(){var t=Symbol();return!bt(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&gt&&gt<41})),kt=wt&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Ot=ut,xt=rt,Et=ct,St=Object,At=kt?function(t){return"symbol"==typeof t}:function(t){var e=Ot("Symbol");return xt(e)&&Et(e.prototype,St(t))},Mt=String,jt=function(t){try{return Mt(t)}catch(t){return"Object"}},Pt=rt,Tt=jt,_t=TypeError,It=function(t){if(Pt(t))return t;throw _t(Tt(t)+" is not a function")},Ct=It,Lt=$,Nt=function(t,e){var r=t[e];return Lt(r)?void 0:Ct(r)},Rt=E,Dt=rt,Ft=it,zt=TypeError,Zt={exports:{}},Ut=g,Bt=Object.defineProperty,Gt=function(t,e){try{Bt(Ut,t,{value:e,configurable:!0,writable:!0})}catch(r){Ut[t]=e}return e},Vt=Gt,Wt="__core-js_shared__",$t=g[Wt]||Vt(Wt,{}),Ht=$t;(Zt.exports=function(t,e){return Ht[t]||(Ht[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.31.1",mode:"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE",source:"https://github.com/zloirock/core-js"});var qt=Zt.exports,Yt=Y,Kt=Object,Xt=function(t){return Kt(Yt(t))},Jt=Xt,Qt=R({}.hasOwnProperty),te=Object.hasOwn||function(t,e){return Qt(Jt(t),e)},ee=R,re=0,ne=Math.random(),oe=ee(1..toString),ie=function(t){return"Symbol("+(void 0===t?"":t)+")_"+oe(++re+ne,36)},ae=qt,se=te,ue=ie,ce=wt,fe=kt,le=g.Symbol,he=ae("wks"),pe=fe?le.for||le:le&&le.withoutSetter||ue,de=function(t){return se(he,t)||(he[t]=ce&&se(le,t)?le[t]:pe("Symbol."+t)),he[t]},ve=E,ye=it,ge=At,me=Nt,be=function(t,e){var r,n;if("string"===e&&Dt(r=t.toString)&&!Ft(n=Rt(r,t)))return n;if(Dt(r=t.valueOf)&&!Ft(n=Rt(r,t)))return n;if("string"!==e&&Dt(r=t.toString)&&!Ft(n=Rt(r,t)))return n;throw zt("Can't convert object to primitive value")},we=TypeError,ke=de("toPrimitive"),Oe=function(t,e){if(!ye(t)||ge(t))return t;var r,n=me(t,ke);if(n){if(void 0===e&&(e="default"),r=ve(n,t,e),!ye(r)||ge(r))return r;throw we("Can't convert object to primitive value")}return void 0===e&&(e="number"),be(t,e)},xe=Oe,Ee=At,Se=function(t){var e=xe(t,"string");return Ee(e)?e:e+""},Ae=it,Me=g.document,je=Ae(Me)&&Ae(Me.createElement),Pe=function(t){return je?Me.createElement(t):{}},Te=Pe,_e=!w&&!b((function(){return 7!=Object.defineProperty(Te("div"),"a",{get:function(){return 7}}).a})),Ie=w,Ce=E,Le=S,Ne=_,Re=J,De=Se,Fe=te,ze=_e,Ze=Object.getOwnPropertyDescriptor;m.f=Ie?Ze:function(t,e){if(t=Re(t),e=De(e),ze)try{return Ze(t,e)}catch(t){}if(Fe(t,e))return Ne(!Ce(Le.f,t,e),t[e])};var Ue={},Be=w&&b((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),Ge=it,Ve=String,We=TypeError,$e=function(t){if(Ge(t))return t;throw We(Ve(t)+" is not an object")},He=w,qe=_e,Ye=Be,Ke=$e,Xe=Se,Je=TypeError,Qe=Object.defineProperty,tr=Object.getOwnPropertyDescriptor,er="enumerable",rr="configurable",nr="writable";Ue.f=He?Ye?function(t,e,r){if(Ke(t),e=Xe(e),Ke(r),"function"==typeof t&&"prototype"===e&&"value"in r&&nr in r&&!r[nr]){var n=tr(t,e);n&&n[nr]&&(t[e]=r.value,r={configurable:rr in r?r[rr]:n[rr],enumerable:er in r?r[er]:n[er],writable:!1})}return Qe(t,e,r)}:Qe:function(t,e,r){if(Ke(t),e=Xe(e),Ke(r),qe)try{return Qe(t,e,r)}catch(t){}if("get"in r||"set"in r)throw Je("Accessors not supported");return"value"in r&&(t[e]=r.value),t};var or=Ue,ir=_,ar=w?function(t,e,r){return or.f(t,e,ir(1,r))}:function(t,e,r){return t[e]=r,t},sr={exports:{}},ur=w,cr=te,fr=Function.prototype,lr=ur&&Object.getOwnPropertyDescriptor,hr=cr(fr,"name"),pr={EXISTS:hr,PROPER:hr&&"something"===function(){}.name,CONFIGURABLE:hr&&(!ur||ur&&lr(fr,"name").configurable)},dr=rt,vr=$t,yr=R(Function.toString);dr(vr.inspectSource)||(vr.inspectSource=function(t){return yr(t)});var gr,mr,br,wr=vr.inspectSource,kr=rt,Or=g.WeakMap,xr=kr(Or)&&/native code/.test(String(Or)),Er=ie,Sr=qt("keys"),Ar=function(t){return Sr[t]||(Sr[t]=Er(t))},Mr={},jr=xr,Pr=g,Tr=it,_r=ar,Ir=te,Cr=$t,Lr=Ar,Nr=Mr,Rr="Object already initialized",Dr=Pr.TypeError,Fr=Pr.WeakMap;if(jr||Cr.state){var zr=Cr.state||(Cr.state=new Fr);zr.get=zr.get,zr.has=zr.has,zr.set=zr.set,gr=function(t,e){if(zr.has(t))throw Dr(Rr);return e.facade=t,zr.set(t,e),e},mr=function(t){return zr.get(t)||{}},br=function(t){return zr.has(t)}}else{var Zr=Lr("state");Nr[Zr]=!0,gr=function(t,e){if(Ir(t,Zr))throw Dr(Rr);return e.facade=t,_r(t,Zr,e),e},mr=function(t){return Ir(t,Zr)?t[Zr]:{}},br=function(t){return Ir(t,Zr)}}var Ur={set:gr,get:mr,has:br,enforce:function(t){return br(t)?mr(t):gr(t,{})},getterFor:function(t){return function(e){var r;if(!Tr(e)||(r=mr(e)).type!==t)throw Dr("Incompatible receiver, "+t+" required");return r}}},Br=R,Gr=b,Vr=rt,Wr=te,$r=w,Hr=pr.CONFIGURABLE,qr=wr,Yr=Ur.enforce,Kr=Ur.get,Xr=String,Jr=Object.defineProperty,Qr=Br("".slice),tn=Br("".replace),en=Br([].join),rn=$r&&!Gr((function(){return 8!==Jr((function(){}),"length",{value:8}).length})),nn=String(String).split("String"),on=sr.exports=function(t,e,r){"Symbol("===Qr(Xr(e),0,7)&&(e="["+tn(Xr(e),/^Symbol\(([^)]*)\)/,"$1")+"]"),r&&r.getter&&(e="get "+e),r&&r.setter&&(e="set "+e),(!Wr(t,"name")||Hr&&t.name!==e)&&($r?Jr(t,"name",{value:e,configurable:!0}):t.name=e),rn&&r&&Wr(r,"arity")&&t.length!==r.arity&&Jr(t,"length",{value:r.arity});try{r&&Wr(r,"constructor")&&r.constructor?$r&&Jr(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var n=Yr(t);return Wr(n,"source")||(n.source=en(nn,"string"==typeof e?e:"")),t};Function.prototype.toString=on((function(){return Vr(this)&&Kr(this).source||qr(this)}),"toString");var an=sr.exports,sn=rt,un=Ue,cn=an,fn=Gt,ln=function(t,e,r,n){n||(n={});var o=n.enumerable,i=void 0!==n.name?n.name:e;if(sn(r)&&cn(r,i,n),n.global)o?t[e]=r:fn(e,r);else{try{n.unsafe?t[e]&&(o=!0):delete t[e]}catch(t){}o?t[e]=r:un.f(t,e,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return t},hn={},pn=Math.ceil,dn=Math.floor,vn=Math.trunc||function(t){var e=+t;return(e>0?dn:pn)(e)},yn=function(t){var e=+t;return e!=e||0===e?0:vn(e)},gn=yn,mn=Math.max,bn=Math.min,wn=function(t,e){var r=gn(t);return r<0?mn(r+e,0):bn(r,e)},kn=yn,On=Math.min,xn=function(t){return t>0?On(kn(t),9007199254740991):0},En=function(t){return xn(t.length)},Sn=J,An=wn,Mn=En,jn=function(t){return function(e,r,n){var o,i=Sn(e),a=Mn(i),s=An(n,a);if(t&&r!=r){for(;a>s;)if((o=i[s++])!=o)return!0}else for(;a>s;s++)if((t||s in i)&&i[s]===r)return t||s||0;return!t&&-1}},Pn={includes:jn(!0),indexOf:jn(!1)},Tn=te,_n=J,In=Pn.indexOf,Cn=Mr,Ln=R([].push),Nn=function(t,e){var r,n=_n(t),o=0,i=[];for(r in n)!Tn(Cn,r)&&Tn(n,r)&&Ln(i,r);for(;e.length>o;)Tn(n,r=e[o++])&&(~In(i,r)||Ln(i,r));return i},Rn=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Dn=Nn,Fn=Rn.concat("length","prototype");hn.f=Object.getOwnPropertyNames||function(t){return Dn(t,Fn)};var zn={};zn.f=Object.getOwnPropertySymbols;var Zn=ut,Un=hn,Bn=zn,Gn=$e,Vn=R([].concat),Wn=Zn("Reflect","ownKeys")||function(t){var e=Un.f(Gn(t)),r=Bn.f;return r?Vn(e,r(t)):e},$n=te,Hn=Wn,qn=m,Yn=Ue,Kn=b,Xn=rt,Jn=/#|\.prototype\./,Qn=function(t,e){var r=eo[to(t)];return r==no||r!=ro&&(Xn(e)?Kn(e):!!e)},to=Qn.normalize=function(t){return String(t).replace(Jn,".").toLowerCase()},eo=Qn.data={},ro=Qn.NATIVE="N",no=Qn.POLYFILL="P",oo=Qn,io=g,ao=m.f,so=ar,uo=ln,co=Gt,fo=function(t,e,r){for(var n=Hn(e),o=Yn.f,i=qn.f,a=0;a<n.length;a++){var s=n[a];$n(t,s)||r&&$n(r,s)||o(t,s,i(e,s))}},lo=oo,ho=function(t,e){var r,n,o,i,a,s=t.target,u=t.global,c=t.stat;if(r=u?io:c?io[s]||co(s,{}):(io[s]||{}).prototype)for(n in e){if(i=e[n],o=t.dontCallGetSet?(a=ao(r,n))&&a.value:r[n],!lo(u?n:s+(c?".":"#")+n,t.forced)&&void 0!==o){if(typeof i==typeof o)continue;fo(i,o)}(t.sham||o&&o.sham)&&so(i,"sham",!0),uo(r,n,i,t)}},po=Z,vo=R,yo=function(t){if("Function"===po(t))return vo(t)},go=It,mo=k,bo=yo(yo.bind),wo=function(t,e){return go(t),void 0===e?t:mo?bo(t,e):function(){return t.apply(e,arguments)}},ko=Z,Oo=Array.isArray||function(t){return"Array"==ko(t)},xo={};xo[de("toStringTag")]="z";var Eo="[object z]"===String(xo),So=Eo,Ao=rt,Mo=Z,jo=de("toStringTag"),Po=Object,To="Arguments"==Mo(function(){return arguments}()),_o=So?Mo:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=Po(t),jo))?r:To?Mo(e):"Object"==(n=Mo(e))&&Ao(e.callee)?"Arguments":n},Io=R,Co=b,Lo=rt,No=_o,Ro=wr,Do=function(){},Fo=[],zo=ut("Reflect","construct"),Zo=/^\s*(?:class|function)\b/,Uo=Io(Zo.exec),Bo=!Zo.exec(Do),Go=function(t){if(!Lo(t))return!1;try{return zo(Do,Fo,t),!0}catch(t){return!1}},Vo=function(t){if(!Lo(t))return!1;switch(No(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return Bo||!!Uo(Zo,Ro(t))}catch(t){return!0}};Vo.sham=!0;var Wo=!zo||Co((function(){var t;return Go(Go.call)||!Go(Object)||!Go((function(){t=!0}))||t}))?Vo:Go,$o=Oo,Ho=Wo,qo=it,Yo=de("species"),Ko=Array,Xo=function(t){var e;return $o(t)&&(e=t.constructor,(Ho(e)&&(e===Ko||$o(e.prototype))||qo(e)&&null===(e=e[Yo]))&&(e=void 0)),void 0===e?Ko:e},Jo=function(t,e){return new(Xo(t))(0===e?0:e)},Qo=wo,ti=W,ei=Xt,ri=En,ni=Jo,oi=R([].push),ii=function(t){var e=1==t,r=2==t,n=3==t,o=4==t,i=6==t,a=7==t,s=5==t||i;return function(u,c,f,l){for(var h,p,d=ei(u),v=ti(d),y=Qo(c,f),g=ri(v),m=0,b=l||ni,w=e?b(u,g):r||a?b(u,0):void 0;g>m;m++)if((s||m in v)&&(p=y(h=v[m],m,d),t))if(e)w[m]=p;else if(p)switch(t){case 3:return!0;case 5:return h;case 6:return m;case 2:oi(w,h)}else switch(t){case 4:return!1;case 7:oi(w,h)}return i?-1:n||o?o:w}},ai={forEach:ii(0),map:ii(1),filter:ii(2),some:ii(3),every:ii(4),find:ii(5),findIndex:ii(6),filterReject:ii(7)},si=b,ui=yt,ci=de("species"),fi=function(t){return ui>=51||!si((function(){var e=[];return(e.constructor={})[ci]=function(){return{foo:1}},1!==e[t](Boolean).foo}))},li=ai.map;function hi(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(t);o<n.length;o++)e.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(t,n[o])&&(r[n[o]]=t[n[o]])}return r}ho({target:"Array",proto:!0,forced:!fi("map")},{map:function(t){return li(this,t,arguments.length>1?arguments[1]:void 0)}});var pi=ai.filter;ho({target:"Array",proto:!0,forced:!fi("filter")},{filter:function(t){return pi(this,t,arguments.length>1?arguments[1]:void 0)}});var di=_o,vi=Eo?{}.toString:function(){return"[object "+di(this)+"]"};Eo||ln(Object.prototype,"toString",vi,{unsafe:!0});var yi=function(){function t(){e(this,t)}return n(t,null,[{key:"isAdvancedMarkerAvailable",value:function(t){return google.maps.marker&&!0===t.getMapCapabilities().isAdvancedMarkersAvailable}},{key:"isAdvancedMarker",value:function(t){return google.maps.marker&&t instanceof google.maps.marker.AdvancedMarkerElement}},{key:"setMap",value:function(t,e){this.isAdvancedMarker(t)?t.map=e:t.setMap(e)}},{key:"getPosition",value:function(t){if(this.isAdvancedMarker(t)){if(t.position){if(t.position instanceof google.maps.LatLng)return t.position;if(t.position.lat&&t.position.lng)return new google.maps.LatLng(t.position.lat,t.position.lng)}return new google.maps.LatLng(null)}return t.getPosition()}},{key:"getVisible",value:function(t){return!!this.isAdvancedMarker(t)||t.getVisible()}}]),t}(),gi=function(){function t(r){var n=r.markers,o=r.position;e(this,t),this.markers=n,o&&(o instanceof google.maps.LatLng?this._position=o:this._position=new google.maps.LatLng(o))}return n(t,[{key:"bounds",get:function(){if(0!==this.markers.length||this._position){var t,e=new google.maps.LatLngBounds(this._position,this._position),r=p(this.markers);try{for(r.s();!(t=r.n()).done;){var n=t.value;e.extend(yi.getPosition(n))}}catch(t){r.e(t)}finally{r.f()}return e}}},{key:"position",get:function(){return this._position||this.bounds.getCenter()}},{key:"count",get:function(){return this.markers.filter((function(t){return yi.getVisible(t)})).length}},{key:"push",value:function(t){this.markers.push(t)}},{key:"delete",value:function(){this.marker&&(yi.setMap(this.marker,null),this.marker=void 0),this.markers.length=0}}]),t}(),mi=function(t,e,r,n){var o=bi(t.getBounds(),e,n);return r.filter((function(t){return o.contains(yi.getPosition(t))}))},bi=function(t,e,r){var n=ki(t,e),o=n.northEast,i=n.southWest,a=Oi({northEast:o,southWest:i},r);return xi(a,e)},wi=function(t,e){var r=(e.lat-t.lat)*Math.PI/180,n=(e.lng-t.lng)*Math.PI/180,o=Math.sin(r/2),i=Math.sin(n/2),a=o*o+Math.cos(t.lat*Math.PI/180)*Math.cos(e.lat*Math.PI/180)*i*i;return 6371*(2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a)))},ki=function(t,e){return{northEast:e.fromLatLngToDivPixel(t.getNorthEast()),southWest:e.fromLatLngToDivPixel(t.getSouthWest())}},Oi=function(t,e){var r=t.northEast,n=t.southWest;return r.x+=e,r.y-=e,n.x-=e,n.y+=e,{northEast:r,southWest:n}},xi=function(t,e){var r=t.northEast,n=t.southWest,o=e.fromDivPixelToLatLng(n),i=e.fromDivPixelToLatLng(r);return new google.maps.LatLngBounds(o,i)},Ei=function(){function t(r){var n=r.maxZoom,o=void 0===n?16:n;e(this,t),this.maxZoom=o}return n(t,[{key:"noop",value:function(t){var e=t.markers;return Ai(e)}}]),t}(),Si=function(t){o(i,t);var r=u(i);function i(t){var n;e(this,i);var o=t.viewportPadding,a=void 0===o?60:o,s=hi(t,["viewportPadding"]);return(n=r.call(this,s)).viewportPadding=60,n.viewportPadding=a,n}return n(i,[{key:"calculate",value:function(t){var e=t.markers,r=t.map,n=t.mapCanvasProjection;return r.getZoom()>=this.maxZoom?{clusters:this.noop({markers:e}),changed:!1}:{clusters:this.cluster({markers:mi(r,n,e,this.viewportPadding),map:r,mapCanvasProjection:n})}}}]),i}(Ei),Ai=function(t){return t.map((function(t){return new gi({position:yi.getPosition(t),markers:[t]})}))},Mi={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},ji=Pe("span").classList,Pi=ji&&ji.constructor&&ji.constructor.prototype,Ti=Pi===Object.prototype?void 0:Pi,_i=b,Ii=function(t,e){var r=[][t];return!!r&&_i((function(){r.call(null,e||function(){return 1},1)}))},Ci=ai.forEach,Li=Ii("forEach")?[].forEach:function(t){return Ci(this,t,arguments.length>1?arguments[1]:void 0)},Ni=g,Ri=Mi,Di=Ti,Fi=Li,zi=ar,Zi=function(t){if(t&&t.forEach!==Fi)try{zi(t,"forEach",Fi)}catch(e){t.forEach=Fi}};for(var Ui in Ri)Ri[Ui]&&Zi(Ni[Ui]&&Ni[Ui].prototype);Zi(Di);var Bi=E;ho({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return Bi(URL.prototype.toString,this)}});var Gi=function t(e,r){if(e===r)return!0;if(e&&r&&"object"==typeof e&&"object"==typeof r){if(e.constructor!==r.constructor)return!1;var n,o,i;if(Array.isArray(e)){if((n=e.length)!=r.length)return!1;for(o=n;0!=o--;)if(!t(e[o],r[o]))return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if((n=(i=Object.keys(e)).length)!==Object.keys(r).length)return!1;for(o=n;0!=o--;)if(!Object.prototype.hasOwnProperty.call(r,i[o]))return!1;for(o=n;0!=o--;){var a=i[o];if(!t(e[a],r[a]))return!1}return!0}return e!=e&&r!=r},Vi=v(Gi),Wi=function(t){o(i,t);var r=u(i);function i(t){var n;e(this,i);var o=t.maxDistance,a=void 0===o?4e4:o,s=t.gridSize,u=void 0===s?40:s,c=hi(t,["maxDistance","gridSize"]);return(n=r.call(this,c)).clusters=[],n.state={zoom:-1},n.maxDistance=a,n.gridSize=u,n}return n(i,[{key:"calculate",value:function(t){var e=t.markers,r=t.map,n=t.mapCanvasProjection,o={zoom:r.getZoom()},i=!1;return this.state.zoom>=this.maxZoom&&o.zoom>=this.maxZoom||(i=!Vi(this.state,o)),this.state=o,r.getZoom()>=this.maxZoom?{clusters:this.noop({markers:e}),changed:i}:{clusters:this.cluster({markers:mi(r,n,e,this.viewportPadding),map:r,mapCanvasProjection:n})}}},{key:"cluster",value:function(t){var e=this,r=t.markers,n=t.map,o=t.mapCanvasProjection;return this.clusters=[],r.forEach((function(t){e.addToClosestCluster(t,n,o)})),this.clusters}},{key:"addToClosestCluster",value:function(t,e,r){for(var n=this.maxDistance,o=null,i=0;i<this.clusters.length;i++){var a=this.clusters[i],s=wi(a.bounds.getCenter().toJSON(),yi.getPosition(t).toJSON());s<n&&(n=s,o=a)}if(o&&bi(o.bounds,r,this.gridSize).contains(yi.getPosition(t)))o.push(t);else{var u=new gi({markers:[t]});this.clusters.push(u)}}}]),i}(Si),$i=function(t){o(i,t);var r=u(i);function i(t){e(this,i);var n=hi(t,[]);return r.call(this,n)}return n(i,[{key:"calculate",value:function(t){var e=t.markers,r=t.map,n=t.mapCanvasProjection;return{clusters:this.cluster({markers:e,map:r,mapCanvasProjection:n}),changed:!1}}},{key:"cluster",value:function(t){return this.noop(t)}}]),i}(Ei),Hi=Nn,qi=Rn,Yi=Object.keys||function(t){return Hi(t,qi)},Ki=w,Xi=R,Ji=E,Qi=b,ta=Yi,ea=zn,ra=S,na=Xt,oa=W,ia=Object.assign,aa=Object.defineProperty,sa=Xi([].concat),ua=!ia||Qi((function(){if(Ki&&1!==ia({b:1},ia(aa({},"a",{enumerable:!0,get:function(){aa(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},r=Symbol(),n="abcdefghijklmnopqrst";return t[r]=7,n.split("").forEach((function(t){e[t]=t})),7!=ia({},t)[r]||ta(ia({},e)).join("")!=n}))?function(t,e){for(var r=na(t),n=arguments.length,o=1,i=ea.f,a=ra.f;n>o;)for(var s,u=oa(arguments[o++]),c=i?sa(ta(u),i(u)):ta(u),f=c.length,l=0;f>l;)s=c[l++],Ki&&!Ji(a,u,s)||(r[s]=u[s]);return r}:ia,ca=ua;ho({target:"Object",stat:!0,arity:2,forced:Object.assign!==ca},{assign:ca});const fa=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class la{static from(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");const[e,r]=new Uint8Array(t,0,2);if(219!==e)throw new Error("Data does not appear to be in a KDBush format.");const n=r>>4;if(1!==n)throw new Error(`Got v${n} data when expected v1.`);const o=fa[15&r];if(!o)throw new Error("Unrecognized array type.");const[i]=new Uint16Array(t,2,1),[a]=new Uint32Array(t,4,1);return new la(a,i,o,t)}constructor(t,e=64,r=Float64Array,n){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+e,2),65535),this.ArrayType=r,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;const o=fa.indexOf(this.ArrayType),i=2*t*this.ArrayType.BYTES_PER_ELEMENT,a=t*this.IndexArrayType.BYTES_PER_ELEMENT,s=(8-a%8)%8;if(o<0)throw new Error(`Unexpected typed array class: ${r}.`);n&&n instanceof ArrayBuffer?(this.data=n,this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+a+s,2*t),this._pos=2*t,this._finished=!0):(this.data=new ArrayBuffer(8+i+a+s),this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+a+s,2*t),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+o]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=t)}add(t,e){const r=this._pos>>1;return this.ids[r]=r,this.coords[this._pos++]=t,this.coords[this._pos++]=e,r}finish(){const t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return ha(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,e,r,n){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:o,coords:i,nodeSize:a}=this,s=[0,o.length-1,0],u=[];for(;s.length;){const c=s.pop()||0,f=s.pop()||0,l=s.pop()||0;if(f-l<=a){for(let a=l;a<=f;a++){const s=i[2*a],c=i[2*a+1];s>=t&&s<=r&&c>=e&&c<=n&&u.push(o[a])}continue}const h=l+f>>1,p=i[2*h],d=i[2*h+1];p>=t&&p<=r&&d>=e&&d<=n&&u.push(o[h]),(0===c?t<=p:e<=d)&&(s.push(l),s.push(h-1),s.push(1-c)),(0===c?r>=p:n>=d)&&(s.push(h+1),s.push(f),s.push(1-c))}return u}within(t,e,r){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:n,coords:o,nodeSize:i}=this,a=[0,n.length-1,0],s=[],u=r*r;for(;a.length;){const c=a.pop()||0,f=a.pop()||0,l=a.pop()||0;if(f-l<=i){for(let r=l;r<=f;r++)ya(o[2*r],o[2*r+1],t,e)<=u&&s.push(n[r]);continue}const h=l+f>>1,p=o[2*h],d=o[2*h+1];ya(p,d,t,e)<=u&&s.push(n[h]),(0===c?t-r<=p:e-r<=d)&&(a.push(l),a.push(h-1),a.push(1-c)),(0===c?t+r>=p:e+r>=d)&&(a.push(h+1),a.push(f),a.push(1-c))}return s}}function ha(t,e,r,n,o,i){if(o-n<=r)return;const a=n+o>>1;pa(t,e,a,n,o,i),ha(t,e,r,n,a-1,1-i),ha(t,e,r,a+1,o,1-i)}function pa(t,e,r,n,o,i){for(;o>n;){if(o-n>600){const a=o-n+1,s=r-n+1,u=Math.log(a),c=.5*Math.exp(2*u/3),f=.5*Math.sqrt(u*c*(a-c)/a)*(s-a/2<0?-1:1);pa(t,e,r,Math.max(n,Math.floor(r-s*c/a+f)),Math.min(o,Math.floor(r+(a-s)*c/a+f)),i)}const a=e[2*r+i];let s=n,u=o;for(da(t,e,n,r),e[2*o+i]>a&&da(t,e,n,o);s<u;){for(da(t,e,s,u),s++,u--;e[2*s+i]<a;)s++;for(;e[2*u+i]>a;)u--}e[2*n+i]===a?da(t,e,n,u):(u++,da(t,e,u,o)),u<=r&&(n=u+1),r<=u&&(o=u-1)}}function da(t,e,r,n){va(t,r,n),va(e,2*r,2*n),va(e,2*r+1,2*n+1)}function va(t,e,r){const n=t[e];t[e]=t[r],t[r]=n}function ya(t,e,r,n){const o=t-r,i=e-n;return o*o+i*i}const ga={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:t=>t},ma=Math.fround||(ba=new Float32Array(1),t=>(ba[0]=+t,ba[0]));var ba;const wa=3,ka=5,Oa=6;class xa{constructor(t){this.options=Object.assign(Object.create(ga),t),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(t){const{log:e,minZoom:r,maxZoom:n}=this.options;e&&console.time("total time");const o=`prepare ${t.length} points`;e&&console.time(o),this.points=t;const i=[];for(let e=0;e<t.length;e++){const r=t[e];if(!r.geometry)continue;const[n,o]=r.geometry.coordinates,a=ma(Aa(n)),s=ma(Ma(o));i.push(a,s,1/0,e,-1,1),this.options.reduce&&i.push(0)}let a=this.trees[n+1]=this._createTree(i);e&&console.timeEnd(o);for(let t=n;t>=r;t--){const r=+Date.now();a=this.trees[t]=this._createTree(this._cluster(a,t)),e&&console.log("z%d: %d clusters in %dms",t,a.numItems,+Date.now()-r)}return e&&console.timeEnd("total time"),this}getClusters(t,e){let r=((t[0]+180)%360+360)%360-180;const n=Math.max(-90,Math.min(90,t[1]));let o=180===t[2]?180:((t[2]+180)%360+360)%360-180;const i=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)r=-180,o=180;else if(r>o){const t=this.getClusters([r,n,180,i],e),a=this.getClusters([-180,n,o,i],e);return t.concat(a)}const a=this.trees[this._limitZoom(e)],s=a.range(Aa(r),Ma(i),Aa(o),Ma(n)),u=a.data,c=[];for(const t of s){const e=this.stride*t;c.push(u[e+ka]>1?Ea(u,e,this.clusterProps):this.points[u[e+wa]])}return c}getChildren(t){const e=this._getOriginId(t),r=this._getOriginZoom(t),n="No cluster with the specified id.",o=this.trees[r];if(!o)throw new Error(n);const i=o.data;if(e*this.stride>=i.length)throw new Error(n);const a=this.options.radius/(this.options.extent*Math.pow(2,r-1)),s=i[e*this.stride],u=i[e*this.stride+1],c=o.within(s,u,a),f=[];for(const e of c){const r=e*this.stride;i[r+4]===t&&f.push(i[r+ka]>1?Ea(i,r,this.clusterProps):this.points[i[r+wa]])}if(0===f.length)throw new Error(n);return f}getLeaves(t,e,r){e=e||10,r=r||0;const n=[];return this._appendLeaves(n,t,e,r,0),n}getTile(t,e,r){const n=this.trees[this._limitZoom(t)],o=Math.pow(2,t),{extent:i,radius:a}=this.options,s=a/i,u=(r-s)/o,c=(r+1+s)/o,f={features:[]};return this._addTileFeatures(n.range((e-s)/o,u,(e+1+s)/o,c),n.data,e,r,o,f),0===e&&this._addTileFeatures(n.range(1-s/o,u,1,c),n.data,o,r,o,f),e===o-1&&this._addTileFeatures(n.range(0,u,s/o,c),n.data,-1,r,o,f),f.features.length?f:null}getClusterExpansionZoom(t){let e=this._getOriginZoom(t)-1;for(;e<=this.options.maxZoom;){const r=this.getChildren(t);if(e++,1!==r.length)break;t=r[0].properties.cluster_id}return e}_appendLeaves(t,e,r,n,o){const i=this.getChildren(e);for(const e of i){const i=e.properties;if(i&&i.cluster?o+i.point_count<=n?o+=i.point_count:o=this._appendLeaves(t,i.cluster_id,r,n,o):o<n?o++:t.push(e),t.length===r)break}return o}_createTree(t){const e=new la(t.length/this.stride|0,this.options.nodeSize,Float32Array);for(let r=0;r<t.length;r+=this.stride)e.add(t[r],t[r+1]);return e.finish(),e.data=t,e}_addTileFeatures(t,e,r,n,o,i){for(const a of t){const t=a*this.stride,s=e[t+ka]>1;let u,c,f;if(s)u=Sa(e,t,this.clusterProps),c=e[t],f=e[t+1];else{const r=this.points[e[t+wa]];u=r.properties;const[n,o]=r.geometry.coordinates;c=Aa(n),f=Ma(o)}const l={type:1,geometry:[[Math.round(this.options.extent*(c*o-r)),Math.round(this.options.extent*(f*o-n))]],tags:u};let h;h=s||this.options.generateId?e[t+wa]:this.points[e[t+wa]].id,void 0!==h&&(l.id=h),i.features.push(l)}}_limitZoom(t){return Math.max(this.options.minZoom,Math.min(Math.floor(+t),this.options.maxZoom+1))}_cluster(t,e){const{radius:r,extent:n,reduce:o,minPoints:i}=this.options,a=r/(n*Math.pow(2,e)),s=t.data,u=[],c=this.stride;for(let r=0;r<s.length;r+=c){if(s[r+2]<=e)continue;s[r+2]=e;const n=s[r],f=s[r+1],l=t.within(s[r],s[r+1],a),h=s[r+ka];let p=h;for(const t of l){const r=t*c;s[r+2]>e&&(p+=s[r+ka])}if(p>h&&p>=i){let t,i=n*h,a=f*h,d=-1;const v=((r/c|0)<<5)+(e+1)+this.points.length;for(const n of l){const u=n*c;if(s[u+2]<=e)continue;s[u+2]=e;const f=s[u+ka];i+=s[u]*f,a+=s[u+1]*f,s[u+4]=v,o&&(t||(t=this._map(s,r,!0),d=this.clusterProps.length,this.clusterProps.push(t)),o(t,this._map(s,u)))}s[r+4]=v,u.push(i/p,a/p,1/0,v,-1,p),o&&u.push(d)}else{for(let t=0;t<c;t++)u.push(s[r+t]);if(p>1)for(const t of l){const r=t*c;if(!(s[r+2]<=e)){s[r+2]=e;for(let t=0;t<c;t++)u.push(s[r+t])}}}}return u}_getOriginId(t){return t-this.points.length>>5}_getOriginZoom(t){return(t-this.points.length)%32}_map(t,e,r){if(t[e+ka]>1){const n=this.clusterProps[t[e+Oa]];return r?Object.assign({},n):n}const n=this.points[t[e+wa]].properties,o=this.options.map(n);return r&&o===n?Object.assign({},o):o}}function Ea(t,e,r){return{type:"Feature",id:t[e+wa],properties:Sa(t,e,r),geometry:{type:"Point",coordinates:[(n=t[e],360*(n-.5)),ja(t[e+1])]}};var n}function Sa(t,e,r){const n=t[e+ka],o=n>=1e4?`${Math.round(n/1e3)}k`:n>=1e3?Math.round(n/100)/10+"k":n,i=t[e+Oa],a=-1===i?{}:Object.assign({},r[i]);return Object.assign(a,{cluster:!0,cluster_id:t[e+wa],point_count:n,point_count_abbreviated:o})}function Aa(t){return t/360+.5}function Ma(t){const e=Math.sin(t*Math.PI/180),r=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return r<0?0:r>1?1:r}function ja(t){const e=(180-360*t)*Math.PI/180;return 360*Math.atan(Math.exp(e))/Math.PI-90}var Pa=function(t){o(i,t);var r=u(i);function i(t){var n;e(this,i);var o=t.maxZoom,a=t.radius,s=void 0===a?60:a,u=hi(t,["maxZoom","radius"]);return(n=r.call(this,{maxZoom:o})).state={zoom:-1},n.superCluster=new xa(Object.assign({maxZoom:n.maxZoom,radius:s},u)),n}return n(i,[{key:"calculate",value:function(t){var e=!1,r={zoom:t.map.getZoom()};if(!Vi(t.markers,this.markers)){e=!0,this.markers=f(t.markers);var n=this.markers.map((function(t){var e=yi.getPosition(t);return{type:"Feature",geometry:{type:"Point",coordinates:[e.lng(),e.lat()]},properties:{marker:t}}}));this.superCluster.load(n)}return e||(this.state.zoom<=this.maxZoom||r.zoom<=this.maxZoom)&&(e=!Vi(this.state,r)),this.state=r,e&&(this.clusters=this.cluster(t)),{clusters:this.clusters,changed:e}}},{key:"cluster",value:function(t){var e=this,r=t.map;return this.superCluster.getClusters([-180,-90,180,90],Math.round(r.getZoom())).map((function(t){return e.transformCluster(t)}))}},{key:"transformCluster",value:function(t){var e=c(t.geometry.coordinates,2),r=e[0],n=e[1],o=t.properties;if(o.cluster)return new gi({markers:this.superCluster.getLeaves(o.cluster_id,1/0).map((function(t){return t.properties.marker})),position:{lat:n,lng:r}});var i=o.marker;return new gi({markers:[i],position:yi.getPosition(i)})}}]),i}(Ei),Ta={},_a=w,Ia=Be,Ca=Ue,La=$e,Na=J,Ra=Yi;Ta.f=_a&&!Ia?Object.defineProperties:function(t,e){La(t);for(var r,n=Na(e),o=Ra(e),i=o.length,a=0;i>a;)Ca.f(t,r=o[a++],n[r]);return t};var Da,Fa=ut("document","documentElement"),za=$e,Za=Ta,Ua=Rn,Ba=Mr,Ga=Fa,Va=Pe,Wa="prototype",$a="script",Ha=Ar("IE_PROTO"),qa=function(){},Ya=function(t){return"<"+$a+">"+t+"</"+$a+">"},Ka=function(t){t.write(Ya("")),t.close();var e=t.parentWindow.Object;return t=null,e},Xa=function(){try{Da=new ActiveXObject("htmlfile")}catch(t){}var t,e,r;Xa="undefined"!=typeof document?document.domain&&Da?Ka(Da):(e=Va("iframe"),r="java"+$a+":",e.style.display="none",Ga.appendChild(e),e.src=String(r),(t=e.contentWindow.document).open(),t.write(Ya("document.F=Object")),t.close(),t.F):Ka(Da);for(var n=Ua.length;n--;)delete Xa[Wa][Ua[n]];return Xa()};Ba[Ha]=!0;var Ja=Object.create||function(t,e){var r;return null!==t?(qa[Wa]=za(t),r=new qa,qa[Wa]=null,r[Ha]=t):r=Xa(),void 0===e?r:Za.f(r,e)},Qa=de,ts=Ja,es=Ue.f,rs=Qa("unscopables"),ns=Array.prototype;null==ns[rs]&&es(ns,rs,{configurable:!0,value:ts(null)});var os=function(t){ns[rs][t]=!0},is=Pn.includes,as=os;ho({target:"Array",proto:!0,forced:b((function(){return!Array(1).includes()}))},{includes:function(t){return is(this,t,arguments.length>1?arguments[1]:void 0)}}),as("includes");var ss=it,us=Z,cs=de("match"),fs=function(t){var e;return ss(t)&&(void 0!==(e=t[cs])?!!e:"RegExp"==us(t))},ls=TypeError,hs=_o,ps=String,ds=function(t){if("Symbol"===hs(t))throw TypeError("Cannot convert a Symbol value to a string");return ps(t)},vs=de("match"),ys=ho,gs=function(t){if(fs(t))throw ls("The method doesn't accept regular expressions");return t},ms=Y,bs=ds,ws=function(t){var e=/./;try{"/./"[t](e)}catch(r){try{return e[vs]=!1,"/./"[t](e)}catch(t){}}return!1},ks=R("".indexOf);ys({target:"String",proto:!0,forced:!ws("includes")},{includes:function(t){return!!~ks(bs(ms(this)),bs(gs(t)),arguments.length>1?arguments[1]:void 0)}});var Os=ho,xs=Pn.indexOf,Es=Ii,Ss=yo([].indexOf),As=!!Ss&&1/Ss([1],1,-0)<0;Os({target:"Array",proto:!0,forced:As||!Es("indexOf")},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return As?Ss(this,t,e)||0:xs(this,t,e)}});var Ms=w,js=Oo,Ps=TypeError,Ts=Object.getOwnPropertyDescriptor,_s=Ms&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(t){return t instanceof TypeError}}(),Is=TypeError,Cs=function(t){if(t>9007199254740991)throw Is("Maximum allowed index exceeded");return t},Ls=Se,Ns=Ue,Rs=_,Ds=function(t,e,r){var n=Ls(e);n in t?Ns.f(t,n,Rs(0,r)):t[n]=r},Fs=jt,zs=TypeError,Zs=ho,Us=Xt,Bs=wn,Gs=yn,Vs=En,Ws=_s?function(t,e){if(js(t)&&!Ts(t,"length").writable)throw Ps("Cannot set read only .length");return t.length=e}:function(t,e){return t.length=e},$s=Cs,Hs=Jo,qs=Ds,Ys=function(t,e){if(!delete t[e])throw zs("Cannot delete property "+Fs(e)+" of "+Fs(t))},Ks=fi("splice"),Xs=Math.max,Js=Math.min;Zs({target:"Array",proto:!0,forced:!Ks},{splice:function(t,e){var r,n,o,i,a,s,u=Us(this),c=Vs(u),f=Bs(t,c),l=arguments.length;for(0===l?r=n=0:1===l?(r=0,n=c-f):(r=l-2,n=Js(Xs(Gs(e),0),c-f)),$s(c+r-n),o=Hs(u,n),i=0;i<n;i++)(a=f+i)in u&&qs(o,i,u[a]);if(o.length=n,r<n){for(i=f;i<c-n;i++)s=i+r,(a=i+n)in u?u[s]=u[a]:Ys(u,s);for(i=c;i>c-n+r;i--)Ys(u,i-1)}else if(r>n)for(i=c-n;i>f;i--)s=i+r-1,(a=i+n-1)in u?u[s]=u[a]:Ys(u,s);for(i=0;i<r;i++)u[i+f]=arguments[i+2];return Ws(u,c-n+r),o}});var Qs,tu,eu,ru={},nu=!b((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype})),ou=te,iu=rt,au=Xt,su=nu,uu=Ar("IE_PROTO"),cu=Object,fu=cu.prototype,lu=su?cu.getPrototypeOf:function(t){var e=au(t);if(ou(e,uu))return e[uu];var r=e.constructor;return iu(r)&&e instanceof r?r.prototype:e instanceof cu?fu:null},hu=b,pu=rt,du=it,vu=lu,yu=ln,gu=de("iterator"),mu=!1;[].keys&&("next"in(eu=[].keys())?(tu=vu(vu(eu)))!==Object.prototype&&(Qs=tu):mu=!0);var bu=!du(Qs)||hu((function(){var t={};return Qs[gu].call(t)!==t}));bu&&(Qs={}),pu(Qs[gu])||yu(Qs,gu,(function(){return this}));var wu={IteratorPrototype:Qs,BUGGY_SAFARI_ITERATORS:mu},ku=Ue.f,Ou=te,xu=de("toStringTag"),Eu=function(t,e,r){t&&!r&&(t=t.prototype),t&&!Ou(t,xu)&&ku(t,xu,{configurable:!0,value:e})},Su=wu.IteratorPrototype,Au=Ja,Mu=_,ju=Eu,Pu=ru,Tu=function(){return this},_u=R,Iu=It,Cu=rt,Lu=String,Nu=TypeError,Ru=function(t,e,r){try{return _u(Iu(Object.getOwnPropertyDescriptor(t,e)[r]))}catch(t){}},Du=$e,Fu=function(t){if("object"==typeof t||Cu(t))return t;throw Nu("Can't set "+Lu(t)+" as a prototype")},zu=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=Ru(Object.prototype,"__proto__","set"))(r,[]),e=r instanceof Array}catch(t){}return function(r,n){return Du(r),Fu(n),e?t(r,n):r.__proto__=n,r}}():void 0),Zu=ho,Uu=E,Bu=rt,Gu=function(t,e,r,n){var o=e+" Iterator";return t.prototype=Au(Su,{next:Mu(+!n,r)}),ju(t,o,!1),Pu[o]=Tu,t},Vu=lu,Wu=zu,$u=Eu,Hu=ar,qu=ln,Yu=ru,Ku=pr.PROPER,Xu=pr.CONFIGURABLE,Ju=wu.IteratorPrototype,Qu=wu.BUGGY_SAFARI_ITERATORS,tc=de("iterator"),ec="keys",rc="values",nc="entries",oc=function(){return this},ic=function(t,e,r,n,o,i,a){Gu(r,e,n);var s,u,c,f=function(t){if(t===o&&v)return v;if(!Qu&&t in p)return p[t];switch(t){case ec:case rc:case nc:return function(){return new r(this,t)}}return function(){return new r(this)}},l=e+" Iterator",h=!1,p=t.prototype,d=p[tc]||p["@@iterator"]||o&&p[o],v=!Qu&&d||f(o),y="Array"==e&&p.entries||d;if(y&&(s=Vu(y.call(new t)))!==Object.prototype&&s.next&&(Vu(s)!==Ju&&(Wu?Wu(s,Ju):Bu(s[tc])||qu(s,tc,oc)),$u(s,l,!0)),Ku&&o==rc&&d&&d.name!==rc&&(Xu?Hu(p,"name",rc):(h=!0,v=function(){return Uu(d,this)})),o)if(u={values:f(rc),keys:i?v:f(ec),entries:f(nc)},a)for(c in u)(Qu||h||!(c in p))&&qu(p,c,u[c]);else Zu({target:e,proto:!0,forced:Qu||h},u);return p[tc]!==v&&qu(p,tc,v,{name:o}),Yu[e]=v,u},ac=function(t,e){return{value:t,done:e}},sc=J,uc=os,cc=ru,fc=Ur,lc=Ue.f,hc=ic,pc=ac,dc=w,vc="Array Iterator",yc=fc.set,gc=fc.getterFor(vc),mc=hc(Array,"Array",(function(t,e){yc(this,{type:vc,target:sc(t),index:0,kind:e})}),(function(){var t=gc(this),e=t.target,r=t.kind,n=t.index++;return!e||n>=e.length?(t.target=void 0,pc(void 0,!0)):pc("keys"==r?n:"values"==r?e[n]:[n,e[n]],!1)}),"values"),bc=cc.Arguments=cc.Array;if(uc("keys"),uc("values"),uc("entries"),dc&&"values"!==bc.name)try{lc(bc,"name",{value:"values"})}catch(t){}var wc={exports:{}},kc={},Oc=wn,xc=En,Ec=Ds,Sc=Array,Ac=Math.max,Mc=Z,jc=J,Pc=hn.f,Tc=function(t,e,r){for(var n=xc(t),o=Oc(e,n),i=Oc(void 0===r?n:r,n),a=Sc(Ac(i-o,0)),s=0;o<i;o++,s++)Ec(a,s,t[o]);return a.length=s,a},_c="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];kc.f=function(t){return _c&&"Window"==Mc(t)?function(t){try{return Pc(t)}catch(t){return Tc(_c)}}(t):Pc(jc(t))};var Ic=b((function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}})),Cc=b,Lc=it,Nc=Z,Rc=Ic,Dc=Object.isExtensible,Fc=Cc((function(){Dc(1)}))||Rc?function(t){return!!Lc(t)&&((!Rc||"ArrayBuffer"!=Nc(t))&&(!Dc||Dc(t)))}:Dc,zc=!b((function(){return Object.isExtensible(Object.preventExtensions({}))})),Zc=ho,Uc=R,Bc=Mr,Gc=it,Vc=te,Wc=Ue.f,$c=hn,Hc=kc,qc=Fc,Yc=zc,Kc=!1,Xc=ie("meta"),Jc=0,Qc=function(t){Wc(t,Xc,{value:{objectID:"O"+Jc++,weakData:{}}})},tf=wc.exports={enable:function(){tf.enable=function(){},Kc=!0;var t=$c.f,e=Uc([].splice),r={};r[Xc]=1,t(r).length&&($c.f=function(r){for(var n=t(r),o=0,i=n.length;o<i;o++)if(n[o]===Xc){e(n,o,1);break}return n},Zc({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:Hc.f}))},fastKey:function(t,e){if(!Gc(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!Vc(t,Xc)){if(!qc(t))return"F";if(!e)return"E";Qc(t)}return t[Xc].objectID},getWeakData:function(t,e){if(!Vc(t,Xc)){if(!qc(t))return!0;if(!e)return!1;Qc(t)}return t[Xc].weakData},onFreeze:function(t){return Yc&&Kc&&qc(t)&&!Vc(t,Xc)&&Qc(t),t}};Bc[Xc]=!0;var ef=wc.exports,rf=ru,nf=de("iterator"),of=Array.prototype,af=_o,sf=Nt,uf=$,cf=ru,ff=de("iterator"),lf=function(t){if(!uf(t))return sf(t,ff)||sf(t,"@@iterator")||cf[af(t)]},hf=E,pf=It,df=$e,vf=jt,yf=lf,gf=TypeError,mf=E,bf=$e,wf=Nt,kf=wo,Of=E,xf=$e,Ef=jt,Sf=function(t){return void 0!==t&&(rf.Array===t||of[nf]===t)},Af=En,Mf=ct,jf=function(t,e){var r=arguments.length<2?yf(t):e;if(pf(r))return df(hf(r,t));throw gf(vf(t)+" is not iterable")},Pf=lf,Tf=function(t,e,r){var n,o;bf(t);try{if(!(n=wf(t,"return"))){if("throw"===e)throw r;return r}n=mf(n,t)}catch(t){o=!0,n=t}if("throw"===e)throw r;if(o)throw n;return bf(n),r},_f=TypeError,If=function(t,e){this.stopped=t,this.result=e},Cf=If.prototype,Lf=function(t,e,r){var n,o,i,a,s,u,c,f=r&&r.that,l=!(!r||!r.AS_ENTRIES),h=!(!r||!r.IS_RECORD),p=!(!r||!r.IS_ITERATOR),d=!(!r||!r.INTERRUPTED),v=kf(e,f),y=function(t){return n&&Tf(n,"normal",t),new If(!0,t)},g=function(t){return l?(xf(t),d?v(t[0],t[1],y):v(t[0],t[1])):d?v(t,y):v(t)};if(h)n=t.iterator;else if(p)n=t;else{if(!(o=Pf(t)))throw _f(Ef(t)+" is not iterable");if(Sf(o)){for(i=0,a=Af(t);a>i;i++)if((s=g(t[i]))&&Mf(Cf,s))return s;return new If(!1)}n=jf(t,o)}for(u=h?t.next:n.next;!(c=Of(u,n)).done;){try{s=g(c.value)}catch(t){Tf(n,"throw",t)}if("object"==typeof s&&s&&Mf(Cf,s))return s}return new If(!1)},Nf=ct,Rf=TypeError,Df=function(t,e){if(Nf(e,t))return t;throw Rf("Incorrect invocation")},Ff=de("iterator"),zf=!1;try{var Zf=0,Uf={next:function(){return{done:!!Zf++}},return:function(){zf=!0}};Uf[Ff]=function(){return this},Array.from(Uf,(function(){throw 2}))}catch(t){}var Bf=rt,Gf=it,Vf=zu,Wf=function(t,e,r){var n,o;return Vf&&Bf(n=e.constructor)&&n!==r&&Gf(o=n.prototype)&&o!==r.prototype&&Vf(t,o),t},$f=ho,Hf=g,qf=R,Yf=oo,Kf=ln,Xf=ef,Jf=Lf,Qf=Df,tl=rt,el=$,rl=it,nl=b,ol=function(t,e){if(!e&&!zf)return!1;var r=!1;try{var n={};n[Ff]=function(){return{next:function(){return{done:r=!0}}}},t(n)}catch(t){}return r},il=Eu,al=Wf,sl=an,ul=Ue,cl=function(t,e,r){return r.get&&sl(r.get,e,{getter:!0}),r.set&&sl(r.set,e,{setter:!0}),ul.f(t,e,r)},fl=ln,ll=ut,hl=cl,pl=w,dl=de("species"),vl=Ja,yl=cl,gl=function(t,e,r){for(var n in e)fl(t,n,e[n],r);return t},ml=wo,bl=Df,wl=$,kl=Lf,Ol=ic,xl=ac,El=function(t){var e=ll(t);pl&&e&&!e[dl]&&hl(e,dl,{configurable:!0,get:function(){return this}})},Sl=w,Al=ef.fastKey,Ml=Ur.set,jl=Ur.getterFor,Pl={getConstructor:function(t,e,r,n){var o=t((function(t,o){bl(t,i),Ml(t,{type:e,index:vl(null),first:void 0,last:void 0,size:0}),Sl||(t.size=0),wl(o)||kl(o,t[n],{that:t,AS_ENTRIES:r})})),i=o.prototype,a=jl(e),s=function(t,e,r){var n,o,i=a(t),s=u(t,e);return s?s.value=r:(i.last=s={index:o=Al(e,!0),key:e,value:r,previous:n=i.last,next:void 0,removed:!1},i.first||(i.first=s),n&&(n.next=s),Sl?i.size++:t.size++,"F"!==o&&(i.index[o]=s)),t},u=function(t,e){var r,n=a(t),o=Al(e);if("F"!==o)return n.index[o];for(r=n.first;r;r=r.next)if(r.key==e)return r};return gl(i,{clear:function(){for(var t=a(this),e=t.index,r=t.first;r;)r.removed=!0,r.previous&&(r.previous=r.previous.next=void 0),delete e[r.index],r=r.next;t.first=t.last=void 0,Sl?t.size=0:this.size=0},delete:function(t){var e=this,r=a(e),n=u(e,t);if(n){var o=n.next,i=n.previous;delete r.index[n.index],n.removed=!0,i&&(i.next=o),o&&(o.previous=i),r.first==n&&(r.first=o),r.last==n&&(r.last=i),Sl?r.size--:e.size--}return!!n},forEach:function(t){for(var e,r=a(this),n=ml(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:r.first;)for(n(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!u(this,t)}}),gl(i,r?{get:function(t){var e=u(this,t);return e&&e.value},set:function(t,e){return s(this,0===t?0:t,e)}}:{add:function(t){return s(this,t=0===t?0:t,t)}}),Sl&&yl(i,"size",{configurable:!0,get:function(){return a(this).size}}),o},setStrong:function(t,e,r){var n=e+" Iterator",o=jl(e),i=jl(n);Ol(t,e,(function(t,e){Ml(this,{type:n,target:t,state:o(t),kind:e,last:void 0})}),(function(){for(var t=i(this),e=t.kind,r=t.last;r&&r.removed;)r=r.previous;return t.target&&(t.last=r=r?r.next:t.state.first)?xl("keys"==e?r.key:"values"==e?r.value:[r.key,r.value],!1):(t.target=void 0,xl(void 0,!0))}),r?"entries":"values",!r,!0),El(e)}};(function(t,e,r){var n=-1!==t.indexOf("Map"),o=-1!==t.indexOf("Weak"),i=n?"set":"add",a=Hf[t],s=a&&a.prototype,u=a,c={},f=function(t){var e=qf(s[t]);Kf(s,t,"add"==t?function(t){return e(this,0===t?0:t),this}:"delete"==t?function(t){return!(o&&!rl(t))&&e(this,0===t?0:t)}:"get"==t?function(t){return o&&!rl(t)?void 0:e(this,0===t?0:t)}:"has"==t?function(t){return!(o&&!rl(t))&&e(this,0===t?0:t)}:function(t,r){return e(this,0===t?0:t,r),this})};if(Yf(t,!tl(a)||!(o||s.forEach&&!nl((function(){(new a).entries().next()})))))u=r.getConstructor(e,t,n,i),Xf.enable();else if(Yf(t,!0)){var l=new u,h=l[i](o?{}:-0,1)!=l,p=nl((function(){l.has(1)})),d=ol((function(t){new a(t)})),v=!o&&nl((function(){for(var t=new a,e=5;e--;)t[i](e,e);return!t.has(-0)}));d||((u=e((function(t,e){Qf(t,s);var r=al(new a,t,u);return el(e)||Jf(e,r[i],{that:r,AS_ENTRIES:n}),r}))).prototype=s,s.constructor=u),(p||v)&&(f("delete"),f("has"),n&&f("get")),(v||h)&&f(i),o&&s.clear&&delete s.clear}c[t]=u,$f({global:!0,constructor:!0,forced:u!=a},c),il(u,t),o||r.setStrong(u,t,n)})("Set",(function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}}),Pl);var Tl=R,_l=yn,Il=ds,Cl=Y,Ll=Tl("".charAt),Nl=Tl("".charCodeAt),Rl=Tl("".slice),Dl=function(t){return function(e,r){var n,o,i=Il(Cl(e)),a=_l(r),s=i.length;return a<0||a>=s?t?"":void 0:(n=Nl(i,a))<55296||n>56319||a+1===s||(o=Nl(i,a+1))<56320||o>57343?t?Ll(i,a):n:t?Rl(i,a,a+2):o-56320+(n-55296<<10)+65536}},Fl={codeAt:Dl(!1),charAt:Dl(!0)}.charAt,zl=ds,Zl=Ur,Ul=ic,Bl=ac,Gl="String Iterator",Vl=Zl.set,Wl=Zl.getterFor(Gl);Ul(String,"String",(function(t){Vl(this,{type:Gl,string:zl(t),index:0})}),(function(){var t,e=Wl(this),r=e.string,n=e.index;return n>=r.length?Bl(void 0,!0):(t=Fl(r,n),e.index+=t.length,Bl(t,!1))}));var $l=g,Hl=Mi,ql=Ti,Yl=mc,Kl=ar,Xl=de,Jl=Xl("iterator"),Ql=Xl("toStringTag"),th=Yl.values,eh=function(t,e){if(t){if(t[Jl]!==th)try{Kl(t,Jl,th)}catch(e){t[Jl]=th}if(t[Ql]||Kl(t,Ql,e),Hl[e])for(var r in Yl)if(t[r]!==Yl[r])try{Kl(t,r,Yl[r])}catch(e){t[r]=Yl[r]}}};for(var rh in Hl)eh($l[rh]&&$l[rh].prototype,rh);eh(ql,"DOMTokenList");var nh=It,oh=Xt,ih=W,ah=En,sh=TypeError,uh=function(t){return function(e,r,n,o){nh(r);var i=oh(e),a=ih(i),s=ah(i),u=t?s-1:0,c=t?-1:1;if(n<2)for(;;){if(u in a){o=a[u],u+=c;break}if(u+=c,t?u<0:s<=u)throw sh("Reduce of empty array with no initial value")}for(;t?u>=0:s>u;u+=c)u in a&&(o=r(o,a[u],u,i));return o}},ch={left:uh(!1),right:uh(!0)},fh="undefined"!=typeof process&&"process"==Z(process),lh=ch.left;ho({target:"Array",proto:!0,forced:!fh&&yt>79&&yt<83||!Ii("reduce")},{reduce:function(t){var e=arguments.length;return lh(this,t,e,e>1?arguments[1]:void 0)}});var hh=ho,ph=b,dh=Oo,vh=it,yh=Xt,gh=En,mh=Cs,bh=Ds,wh=Jo,kh=fi,Oh=yt,xh=de("isConcatSpreadable"),Eh=Oh>=51||!ph((function(){var t=[];return t[xh]=!1,t.concat()[0]!==t})),Sh=function(t){if(!vh(t))return!1;var e=t[xh];return void 0!==e?!!e:dh(t)};hh({target:"Array",proto:!0,arity:1,forced:!Eh||!kh("concat")},{concat:function(t){var e,r,n,o,i,a=yh(this),s=wh(a,0),u=0;for(e=-1,n=arguments.length;e<n;e++)if(Sh(i=-1===e?a:arguments[e]))for(o=gh(i),mh(u+o),r=0;r<o;r++,u++)r in i&&bh(s,u,i[r]);else mh(u+1),bh(s,u++,i);return s.length=u,s}});var Ah=g,Mh=R(1..valueOf),jh=Y,Ph=ds,Th="\t\n\v\f\r                 \u2028\u2029\ufeff",_h=R("".replace),Ih=RegExp("^["+Th+"]+"),Ch=RegExp("(^|[^"+Th+"])["+Th+"]+$"),Lh=function(t){return function(e){var r=Ph(jh(e));return 1&t&&(r=_h(r,Ih,"")),2&t&&(r=_h(r,Ch,"$1")),r}},Nh={start:Lh(1),end:Lh(2),trim:Lh(3)},Rh=ho,Dh=w,Fh=g,zh=Ah,Zh=R,Uh=oo,Bh=te,Gh=Wf,Vh=ct,Wh=At,$h=Oe,Hh=b,qh=hn.f,Yh=m.f,Kh=Ue.f,Xh=Mh,Jh=Nh.trim,Qh="Number",tp=Fh[Qh];zh[Qh];var ep=tp.prototype,rp=Fh.TypeError,np=Zh("".slice),op=Zh("".charCodeAt),ip=function(t){var e,r,n,o,i,a,s,u,c=$h(t,"number");if(Wh(c))throw rp("Cannot convert a Symbol value to a number");if("string"==typeof c&&c.length>2)if(c=Jh(c),43===(e=op(c,0))||45===e){if(88===(r=op(c,2))||120===r)return NaN}else if(48===e){switch(op(c,1)){case 66:case 98:n=2,o=49;break;case 79:case 111:n=8,o=55;break;default:return+c}for(a=(i=np(c,2)).length,s=0;s<a;s++)if((u=op(i,s))<48||u>o)return NaN;return parseInt(i,n)}return+c},ap=Uh(Qh,!tp(" 0o1")||!tp("0b1")||tp("+0x1")),sp=function(t){var e,r=arguments.length<1?0:tp(function(t){var e=$h(t,"number");return"bigint"==typeof e?e:ip(e)}(t));return Vh(ep,e=this)&&Hh((function(){Xh(e)}))?Gh(Object(r),this,sp):r};sp.prototype=ep,ap&&(ep.constructor=sp),Rh({global:!0,constructor:!0,wrap:!0,forced:ap},{Number:sp});ap&&function(t,e){for(var r,n=Dh?qh(e):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),o=0;n.length>o;o++)Bh(e,r=n[o])&&!Bh(t,r)&&Kh(t,r,Yh(e,r))}(zh[Qh],tp);var up=n((function t(r,n){e(this,t),this.markers={sum:r.length};var o=n.map((function(t){return t.count})),i=o.reduce((function(t,e){return t+e}),0);this.clusters={count:n.length,markers:{mean:i/n.length,sum:i,min:Math.min.apply(Math,f(o)),max:Math.max.apply(Math,f(o))}}})),cp=function(){function t(){e(this,t)}return n(t,[{key:"render",value:function(t,e,r){var n=t.count,o=t.position,i=n>Math.max(10,e.clusters.markers.mean)?"#ff0000":"#0000ff",a='<svg fill="'.concat(i,'" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240" width="50" height="50">\n<circle cx="120" cy="120" opacity=".6" r="70" />\n<circle cx="120" cy="120" opacity=".3" r="90" />\n<circle cx="120" cy="120" opacity=".2" r="110" />\n<text x="50%" y="50%" style="fill:#fff" text-anchor="middle" font-size="50" dominant-baseline="middle" font-family="roboto,arial,sans-serif">').concat(n,"</text>\n</svg>"),s="Cluster of ".concat(n," markers"),u=Number(google.maps.Marker.MAX_ZINDEX)+n;if(yi.isAdvancedMarkerAvailable(r)){var c=document.createElement("div");c.innerHTML=a;var f=c.firstElementChild;f.setAttribute("transform","translate(0 25)");var l={map:r,position:o,zIndex:u,title:s,content:f};return new google.maps.marker.AdvancedMarkerElement(l)}var h={position:o,zIndex:u,title:s,icon:{url:"data:image/svg+xml;base64,".concat(btoa(a)),anchor:new google.maps.Point(25,25)}};return new google.maps.Marker(h)}}]),t}();var fp,lp=n((function t(){e(this,t),function(t,e){for(var r in e.prototype)t.prototype[r]=e.prototype[r]}(t,google.maps.OverlayView)}));t.MarkerClustererEvents=void 0,(fp=t.MarkerClustererEvents||(t.MarkerClustererEvents={})).CLUSTERING_BEGIN="clusteringbegin",fp.CLUSTERING_END="clusteringend",fp.CLUSTER_CLICK="click";var hp=function(t,e,r){r.fitBounds(e.bounds)},pp=function(r){o(a,r);var i=u(a);function a(t){var r,n=t.map,o=t.markers,s=void 0===o?[]:o,u=t.algorithmOptions,c=void 0===u?{}:u,l=t.algorithm,h=void 0===l?new Pa(c):l,p=t.renderer,d=void 0===p?new cp:p,v=t.onClusterClick,y=void 0===v?hp:v;return e(this,a),(r=i.call(this)).markers=f(s),r.clusters=[],r.algorithm=h,r.renderer=d,r.onClusterClick=y,n&&r.setMap(n),r}return n(a,[{key:"addMarker",value:function(t,e){this.markers.includes(t)||(this.markers.push(t),e||this.render())}},{key:"addMarkers",value:function(t,e){var r=this;t.forEach((function(t){r.addMarker(t,!0)})),e||this.render()}},{key:"removeMarker",value:function(t,e){var r=this.markers.indexOf(t);return-1!==r&&(yi.setMap(t,null),this.markers.splice(r,1),e||this.render(),!0)}},{key:"removeMarkers",value:function(t,e){var r=this,n=!1;return t.forEach((function(t){n=r.removeMarker(t,!0)||n})),n&&!e&&this.render(),n}},{key:"clearMarkers",value:function(t){this.markers.length=0,t||this.render()}},{key:"render",value:function(){var e=this.getMap();if(e instanceof google.maps.Map&&e.getProjection()){google.maps.event.trigger(this,t.MarkerClustererEvents.CLUSTERING_BEGIN,this);var r=this.algorithm.calculate({markers:this.markers,map:e,mapCanvasProjection:this.getProjection()}),n=r.clusters,o=r.changed;if(o||null==o){var i,a=new Set,s=p(n);try{for(s.s();!(i=s.n()).done;){var u=i.value;1==u.markers.length&&a.add(u.markers[0])}}catch(t){s.e(t)}finally{s.f()}var c,f=[],l=p(this.clusters);try{for(l.s();!(c=l.n()).done;){var h=c.value;null!=h.marker&&(1==h.markers.length?a.has(h.marker)||yi.setMap(h.marker,null):f.push(h.marker))}}catch(t){l.e(t)}finally{l.f()}this.clusters=n,this.renderClusters(),requestAnimationFrame((function(){return f.forEach((function(t){return yi.setMap(t,null)}))}))}google.maps.event.trigger(this,t.MarkerClustererEvents.CLUSTERING_END,this)}}},{key:"onAdd",value:function(){this.idleListener=this.getMap().addListener("idle",this.render.bind(this)),this.render()}},{key:"onRemove",value:function(){google.maps.event.removeListener(this.idleListener),this.reset()}},{key:"reset",value:function(){this.markers.forEach((function(t){return yi.setMap(t,null)})),this.clusters.forEach((function(t){return t.delete()})),this.clusters=[]}},{key:"renderClusters",value:function(){var e=this,r=new up(this.markers,this.clusters),n=this.getMap();this.clusters.forEach((function(o){1===o.markers.length?o.marker=o.markers[0]:(o.marker=e.renderer.render(o,r,n),o.markers.forEach((function(t){return yi.setMap(t,null)})),e.onClusterClick&&o.marker.addListener("click",(function(r){google.maps.event.trigger(e,t.MarkerClustererEvents.CLUSTER_CLICK,o),e.onClusterClick(r,o,n)}))),yi.setMap(o.marker,n)}))}}]),a}(lp);t.AbstractAlgorithm=Ei,t.AbstractViewportAlgorithm=Si,t.Cluster=gi,t.ClusterStats=up,t.DefaultRenderer=cp,t.GridAlgorithm=Wi,t.MarkerClusterer=pp,t.NoopAlgorithm=$i,t.SuperClusterAlgorithm=Pa,t.defaultOnClusterClickHandler=hp,t.distanceBetweenPoints=wi,t.extendBoundsToPaddedViewport=bi,t.extendPixelBounds=Oi,t.filterMarkersToPaddedViewport=mi,t.noop=Ai,t.pixelBoundsToLatLngBounds=xi,Object.defineProperty(t,"__esModule",{value:!0})}));
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).markerClusterer={})}(this,(function(t){"use strict";function e(t,e){var s={};for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&e.indexOf(r)<0&&(s[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols){var o=0;for(r=Object.getOwnPropertySymbols(t);o<r.length;o++)e.indexOf(r[o])<0&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(s[r[o]]=t[r[o]])}return s}class s{static isAdvancedMarkerAvailable(t){return google.maps.marker&&!0===t.getMapCapabilities().isAdvancedMarkersAvailable}static isAdvancedMarker(t){return google.maps.marker&&t instanceof google.maps.marker.AdvancedMarkerElement}static setMap(t,e){this.isAdvancedMarker(t)?t.map=e:t.setMap(e)}static getPosition(t){if(this.isAdvancedMarker(t)){if(t.position){if(t.position instanceof google.maps.LatLng)return t.position;if(t.position.lat&&t.position.lng)return new google.maps.LatLng(t.position.lat,t.position.lng)}return new google.maps.LatLng(null)}return t.getPosition()}static getVisible(t){return!!this.isAdvancedMarker(t)||t.getVisible()}}class r{constructor(t){let{markers:e,position:s}=t;this.markers=e,s&&(s instanceof google.maps.LatLng?this._position=s:this._position=new google.maps.LatLng(s))}get bounds(){if(0===this.markers.length&&!this._position)return;const t=new google.maps.LatLngBounds(this._position,this._position);for(const e of this.markers)t.extend(s.getPosition(e));return t}get position(){return this._position||this.bounds.getCenter()}get count(){return this.markers.filter((t=>s.getVisible(t))).length}push(t){this.markers.push(t)}delete(){this.marker&&(s.setMap(this.marker,null),this.marker=void 0),this.markers.length=0}}const o=(t,e,r,o)=>{const n=i(t.getBounds(),e,o);return r.filter((t=>n.contains(s.getPosition(t))))},i=(t,e,s)=>{const{northEast:r,southWest:o}=h(t,e),i=l({northEast:r,southWest:o},s);return c(i,e)},n=(t,e,s)=>{const r=i(t,e,s),o=r.getNorthEast(),n=r.getSouthWest();return[n.lng(),n.lat(),o.lng(),o.lat()]},a=(t,e)=>{const s=(e.lat-t.lat)*Math.PI/180,r=(e.lng-t.lng)*Math.PI/180,o=Math.sin(s/2),i=Math.sin(r/2),n=o*o+Math.cos(t.lat*Math.PI/180)*Math.cos(e.lat*Math.PI/180)*i*i;return 6371*(2*Math.atan2(Math.sqrt(n),Math.sqrt(1-n)))},h=(t,e)=>({northEast:e.fromLatLngToDivPixel(t.getNorthEast()),southWest:e.fromLatLngToDivPixel(t.getSouthWest())}),l=(t,e)=>{let{northEast:s,southWest:r}=t;return s.x+=e,s.y-=e,r.x-=e,r.y+=e,{northEast:s,southWest:r}},c=(t,e)=>{let{northEast:s,southWest:r}=t;const o=e.fromDivPixelToLatLng(r),i=e.fromDivPixelToLatLng(s);return new google.maps.LatLngBounds(o,i)};class u{constructor(t){let{maxZoom:e=16}=t;this.maxZoom=e}noop(t){let{markers:e}=t;return m(e)}}class p extends u{constructor(t){var{viewportPadding:s=60}=t;super(e(t,["viewportPadding"])),this.viewportPadding=60,this.viewportPadding=s}calculate(t){let{markers:e,map:s,mapCanvasProjection:r}=t;return s.getZoom()>=this.maxZoom?{clusters:this.noop({markers:e}),changed:!1}:{clusters:this.cluster({markers:o(s,r,e,this.viewportPadding),map:s,mapCanvasProjection:r})}}}const m=t=>t.map((t=>new r({position:s.getPosition(t),markers:[t]})));function d(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var g=function t(e,s){if(e===s)return!0;if(e&&s&&"object"==typeof e&&"object"==typeof s){if(e.constructor!==s.constructor)return!1;var r,o,i;if(Array.isArray(e)){if((r=e.length)!=s.length)return!1;for(o=r;0!=o--;)if(!t(e[o],s[o]))return!1;return!0}if(e.constructor===RegExp)return e.source===s.source&&e.flags===s.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===s.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===s.toString();if((r=(i=Object.keys(e)).length)!==Object.keys(s).length)return!1;for(o=r;0!=o--;)if(!Object.prototype.hasOwnProperty.call(s,i[o]))return!1;for(o=r;0!=o--;){var n=i[o];if(!t(e[n],s[n]))return!1}return!0}return e!=e&&s!=s},f=d(g);const k=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];class y{static from(t){if(!(t instanceof ArrayBuffer))throw new Error("Data must be an instance of ArrayBuffer.");const[e,s]=new Uint8Array(t,0,2);if(219!==e)throw new Error("Data does not appear to be in a KDBush format.");const r=s>>4;if(1!==r)throw new Error(`Got v${r} data when expected v1.`);const o=k[15&s];if(!o)throw new Error("Unrecognized array type.");const[i]=new Uint16Array(t,2,1),[n]=new Uint32Array(t,4,1);return new y(n,i,o,t)}constructor(t,e=64,s=Float64Array,r){if(isNaN(t)||t<0)throw new Error(`Unpexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+e,2),65535),this.ArrayType=s,this.IndexArrayType=t<65536?Uint16Array:Uint32Array;const o=k.indexOf(this.ArrayType),i=2*t*this.ArrayType.BYTES_PER_ELEMENT,n=t*this.IndexArrayType.BYTES_PER_ELEMENT,a=(8-n%8)%8;if(o<0)throw new Error(`Unexpected typed array class: ${s}.`);r&&r instanceof ArrayBuffer?(this.data=r,this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+n+a,2*t),this._pos=2*t,this._finished=!0):(this.data=new ArrayBuffer(8+i+n+a),this.ids=new this.IndexArrayType(this.data,8,t),this.coords=new this.ArrayType(this.data,8+n+a,2*t),this._pos=0,this._finished=!1,new Uint8Array(this.data,0,2).set([219,16+o]),new Uint16Array(this.data,2,1)[0]=e,new Uint32Array(this.data,4,1)[0]=t)}add(t,e){const s=this._pos>>1;return this.ids[s]=s,this.coords[this._pos++]=t,this.coords[this._pos++]=e,s}finish(){const t=this._pos>>1;if(t!==this.numItems)throw new Error(`Added ${t} items when expected ${this.numItems}.`);return w(this.ids,this.coords,this.nodeSize,0,this.numItems-1,0),this._finished=!0,this}range(t,e,s,r){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:o,coords:i,nodeSize:n}=this,a=[0,o.length-1,0],h=[];for(;a.length;){const l=a.pop()||0,c=a.pop()||0,u=a.pop()||0;if(c-u<=n){for(let n=u;n<=c;n++){const a=i[2*n],l=i[2*n+1];a>=t&&a<=s&&l>=e&&l<=r&&h.push(o[n])}continue}const p=u+c>>1,m=i[2*p],d=i[2*p+1];m>=t&&m<=s&&d>=e&&d<=r&&h.push(o[p]),(0===l?t<=m:e<=d)&&(a.push(u),a.push(p-1),a.push(1-l)),(0===l?s>=m:r>=d)&&(a.push(p+1),a.push(c),a.push(1-l))}return h}within(t,e,s){if(!this._finished)throw new Error("Data not yet indexed - call index.finish().");const{ids:r,coords:o,nodeSize:i}=this,n=[0,r.length-1,0],a=[],h=s*s;for(;n.length;){const l=n.pop()||0,c=n.pop()||0,u=n.pop()||0;if(c-u<=i){for(let s=u;s<=c;s++)C(o[2*s],o[2*s+1],t,e)<=h&&a.push(r[s]);continue}const p=u+c>>1,m=o[2*p],d=o[2*p+1];C(m,d,t,e)<=h&&a.push(r[p]),(0===l?t-s<=m:e-s<=d)&&(n.push(u),n.push(p-1),n.push(1-l)),(0===l?t+s>=m:e+s>=d)&&(n.push(p+1),n.push(c),n.push(1-l))}return a}}function w(t,e,s,r,o,i){if(o-r<=s)return;const n=r+o>>1;M(t,e,n,r,o,i),w(t,e,s,r,n-1,1-i),w(t,e,s,n+1,o,1-i)}function M(t,e,s,r,o,i){for(;o>r;){if(o-r>600){const n=o-r+1,a=s-r+1,h=Math.log(n),l=.5*Math.exp(2*h/3),c=.5*Math.sqrt(h*l*(n-l)/n)*(a-n/2<0?-1:1);M(t,e,s,Math.max(r,Math.floor(s-a*l/n+c)),Math.min(o,Math.floor(s+(n-a)*l/n+c)),i)}const n=e[2*s+i];let a=r,h=o;for(v(t,e,r,s),e[2*o+i]>n&&v(t,e,r,o);a<h;){for(v(t,e,a,h),a++,h--;e[2*a+i]<n;)a++;for(;e[2*h+i]>n;)h--}e[2*r+i]===n?v(t,e,r,h):(h++,v(t,e,h,o)),h<=s&&(r=h+1),s<=h&&(o=h-1)}}function v(t,e,s,r){x(t,s,r),x(e,2*s,2*r),x(e,2*s+1,2*r+1)}function x(t,e,s){const r=t[e];t[e]=t[s],t[s]=r}function C(t,e,s,r){const o=t-s,i=e-r;return o*o+i*i}const P={minZoom:0,maxZoom:16,minPoints:2,radius:40,extent:512,nodeSize:64,log:!1,generateId:!1,reduce:null,map:t=>t},_=Math.fround||(E=new Float32Array(1),t=>(E[0]=+t,E[0]));var E;const A=3,b=5,L=6;class O{constructor(t){this.options=Object.assign(Object.create(P),t),this.trees=new Array(this.options.maxZoom+1),this.stride=this.options.reduce?7:6,this.clusterProps=[]}load(t){const{log:e,minZoom:s,maxZoom:r}=this.options;e&&console.time("total time");const o=`prepare ${t.length} points`;e&&console.time(o),this.points=t;const i=[];for(let e=0;e<t.length;e++){const s=t[e];if(!s.geometry)continue;const[r,o]=s.geometry.coordinates,n=_(I(r)),a=_(j(o));i.push(n,a,1/0,e,-1,1),this.options.reduce&&i.push(0)}let n=this.trees[r+1]=this._createTree(i);e&&console.timeEnd(o);for(let t=r;t>=s;t--){const s=+Date.now();n=this.trees[t]=this._createTree(this._cluster(n,t)),e&&console.log("z%d: %d clusters in %dms",t,n.numItems,+Date.now()-s)}return e&&console.timeEnd("total time"),this}getClusters(t,e){let s=((t[0]+180)%360+360)%360-180;const r=Math.max(-90,Math.min(90,t[1]));let o=180===t[2]?180:((t[2]+180)%360+360)%360-180;const i=Math.max(-90,Math.min(90,t[3]));if(t[2]-t[0]>=360)s=-180,o=180;else if(s>o){const t=this.getClusters([s,r,180,i],e),n=this.getClusters([-180,r,o,i],e);return t.concat(n)}const n=this.trees[this._limitZoom(e)],a=n.range(I(s),j(i),I(o),j(r)),h=n.data,l=[];for(const t of a){const e=this.stride*t;l.push(h[e+b]>1?Z(h,e,this.clusterProps):this.points[h[e+A]])}return l}getChildren(t){const e=this._getOriginId(t),s=this._getOriginZoom(t),r="No cluster with the specified id.",o=this.trees[s];if(!o)throw new Error(r);const i=o.data;if(e*this.stride>=i.length)throw new Error(r);const n=this.options.radius/(this.options.extent*Math.pow(2,s-1)),a=i[e*this.stride],h=i[e*this.stride+1],l=o.within(a,h,n),c=[];for(const e of l){const s=e*this.stride;i[s+4]===t&&c.push(i[s+b]>1?Z(i,s,this.clusterProps):this.points[i[s+A]])}if(0===c.length)throw new Error(r);return c}getLeaves(t,e,s){e=e||10,s=s||0;const r=[];return this._appendLeaves(r,t,e,s,0),r}getTile(t,e,s){const r=this.trees[this._limitZoom(t)],o=Math.pow(2,t),{extent:i,radius:n}=this.options,a=n/i,h=(s-a)/o,l=(s+1+a)/o,c={features:[]};return this._addTileFeatures(r.range((e-a)/o,h,(e+1+a)/o,l),r.data,e,s,o,c),0===e&&this._addTileFeatures(r.range(1-a/o,h,1,l),r.data,o,s,o,c),e===o-1&&this._addTileFeatures(r.range(0,h,a/o,l),r.data,-1,s,o,c),c.features.length?c:null}getClusterExpansionZoom(t){let e=this._getOriginZoom(t)-1;for(;e<=this.options.maxZoom;){const s=this.getChildren(t);if(e++,1!==s.length)break;t=s[0].properties.cluster_id}return e}_appendLeaves(t,e,s,r,o){const i=this.getChildren(e);for(const e of i){const i=e.properties;if(i&&i.cluster?o+i.point_count<=r?o+=i.point_count:o=this._appendLeaves(t,i.cluster_id,s,r,o):o<r?o++:t.push(e),t.length===s)break}return o}_createTree(t){const e=new y(t.length/this.stride|0,this.options.nodeSize,Float32Array);for(let s=0;s<t.length;s+=this.stride)e.add(t[s],t[s+1]);return e.finish(),e.data=t,e}_addTileFeatures(t,e,s,r,o,i){for(const n of t){const t=n*this.stride,a=e[t+b]>1;let h,l,c;if(a)h=T(e,t,this.clusterProps),l=e[t],c=e[t+1];else{const s=this.points[e[t+A]];h=s.properties;const[r,o]=s.geometry.coordinates;l=I(r),c=j(o)}const u={type:1,geometry:[[Math.round(this.options.extent*(l*o-s)),Math.round(this.options.extent*(c*o-r))]],tags:h};let p;p=a||this.options.generateId?e[t+A]:this.points[e[t+A]].id,void 0!==p&&(u.id=p),i.features.push(u)}}_limitZoom(t){return Math.max(this.options.minZoom,Math.min(Math.floor(+t),this.options.maxZoom+1))}_cluster(t,e){const{radius:s,extent:r,reduce:o,minPoints:i}=this.options,n=s/(r*Math.pow(2,e)),a=t.data,h=[],l=this.stride;for(let s=0;s<a.length;s+=l){if(a[s+2]<=e)continue;a[s+2]=e;const r=a[s],c=a[s+1],u=t.within(a[s],a[s+1],n),p=a[s+b];let m=p;for(const t of u){const s=t*l;a[s+2]>e&&(m+=a[s+b])}if(m>p&&m>=i){let t,i=r*p,n=c*p,d=-1;const g=((s/l|0)<<5)+(e+1)+this.points.length;for(const r of u){const h=r*l;if(a[h+2]<=e)continue;a[h+2]=e;const c=a[h+b];i+=a[h]*c,n+=a[h+1]*c,a[h+4]=g,o&&(t||(t=this._map(a,s,!0),d=this.clusterProps.length,this.clusterProps.push(t)),o(t,this._map(a,h)))}a[s+4]=g,h.push(i/m,n/m,1/0,g,-1,m),o&&h.push(d)}else{for(let t=0;t<l;t++)h.push(a[s+t]);if(m>1)for(const t of u){const s=t*l;if(!(a[s+2]<=e)){a[s+2]=e;for(let t=0;t<l;t++)h.push(a[s+t])}}}}return h}_getOriginId(t){return t-this.points.length>>5}_getOriginZoom(t){return(t-this.points.length)%32}_map(t,e,s){if(t[e+b]>1){const r=this.clusterProps[t[e+L]];return s?Object.assign({},r):r}const r=this.points[t[e+A]].properties,o=this.options.map(r);return s&&o===r?Object.assign({},o):o}}function Z(t,e,s){return{type:"Feature",id:t[e+A],properties:T(t,e,s),geometry:{type:"Point",coordinates:[(r=t[e],360*(r-.5)),S(t[e+1])]}};var r}function T(t,e,s){const r=t[e+b],o=r>=1e4?`${Math.round(r/1e3)}k`:r>=1e3?Math.round(r/100)/10+"k":r,i=t[e+L],n=-1===i?{}:Object.assign({},s[i]);return Object.assign(n,{cluster:!0,cluster_id:t[e+A],point_count:r,point_count_abbreviated:o})}function I(t){return t/360+.5}function j(t){const e=Math.sin(t*Math.PI/180),s=.5-.25*Math.log((1+e)/(1-e))/Math.PI;return s<0?0:s>1?1:s}function S(t){const e=(180-360*t)*Math.PI/180;return 360*Math.atan(Math.exp(e))/Math.PI-90}class z extends u{constructor(t){var{maxZoom:s,radius:r=60}=t,o=e(t,["maxZoom","radius"]);super({maxZoom:s}),this.state={zoom:-1},this.superCluster=new O(Object.assign({maxZoom:this.maxZoom,radius:r},o))}calculate(t){let e=!1;const r={zoom:t.map.getZoom()};if(!f(t.markers,this.markers)){e=!0,this.markers=[...t.markers];const r=this.markers.map((t=>{const e=s.getPosition(t);return{type:"Feature",geometry:{type:"Point",coordinates:[e.lng(),e.lat()]},properties:{marker:t}}}));this.superCluster.load(r)}return e||(this.state.zoom<=this.maxZoom||r.zoom<=this.maxZoom)&&(e=!f(this.state,r)),this.state=r,e&&(this.clusters=this.cluster(t)),{clusters:this.clusters,changed:e}}cluster(t){let{map:e}=t;return this.superCluster.getClusters([-180,-90,180,90],Math.round(e.getZoom())).map((t=>this.transformCluster(t)))}transformCluster(t){let{geometry:{coordinates:[e,o]},properties:i}=t;if(i.cluster)return new r({markers:this.superCluster.getLeaves(i.cluster_id,1/0).map((t=>t.properties.marker)),position:{lat:o,lng:e}});const n=i.marker;return new r({markers:[n],position:s.getPosition(n)})}}class U{constructor(t,e){this.markers={sum:t.length};const s=e.map((t=>t.count)),r=s.reduce(((t,e)=>t+e),0);this.clusters={count:e.length,markers:{mean:r/e.length,sum:r,min:Math.min(...s),max:Math.max(...s)}}}}class B{render(t,e,r){let{count:o,position:i}=t;const n=`<svg fill="${o>Math.max(10,e.clusters.markers.mean)?"#ff0000":"#0000ff"}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240" width="50" height="50">\n<circle cx="120" cy="120" opacity=".6" r="70" />\n<circle cx="120" cy="120" opacity=".3" r="90" />\n<circle cx="120" cy="120" opacity=".2" r="110" />\n<text x="50%" y="50%" style="fill:#fff" text-anchor="middle" font-size="50" dominant-baseline="middle" font-family="roboto,arial,sans-serif">${o}</text>\n</svg>`,a=`Cluster of ${o} markers`,h=Number(google.maps.Marker.MAX_ZINDEX)+o;if(s.isAdvancedMarkerAvailable(r)){const t=(new DOMParser).parseFromString(n,"image/svg+xml").documentElement;t.setAttribute("transform","translate(0 25)");const e={map:r,position:i,zIndex:h,title:a,content:t};return new google.maps.marker.AdvancedMarkerElement(e)}const l={position:i,zIndex:h,title:a,icon:{url:`data:image/svg+xml;base64,${btoa(n)}`,anchor:new google.maps.Point(25,25)}};return new google.maps.Marker(l)}}class D{constructor(){!function(t,e){for(let s in e.prototype)t.prototype[s]=e.prototype[s]}(D,google.maps.OverlayView)}}var N;t.MarkerClustererEvents=void 0,(N=t.MarkerClustererEvents||(t.MarkerClustererEvents={})).CLUSTERING_BEGIN="clusteringbegin",N.CLUSTERING_END="clusteringend",N.CLUSTER_CLICK="click";const F=(t,e,s)=>{s.fitBounds(e.bounds)};t.AbstractAlgorithm=u,t.AbstractViewportAlgorithm=p,t.Cluster=r,t.ClusterStats=U,t.DefaultRenderer=B,t.GridAlgorithm=class extends p{constructor(t){var{maxDistance:s=4e4,gridSize:r=40}=t;super(e(t,["maxDistance","gridSize"])),this.clusters=[],this.state={zoom:-1},this.maxDistance=s,this.gridSize=r}calculate(t){let{markers:e,map:s,mapCanvasProjection:r}=t;const i={zoom:s.getZoom()};let n=!1;return this.state.zoom>=this.maxZoom&&i.zoom>=this.maxZoom||(n=!f(this.state,i)),this.state=i,s.getZoom()>=this.maxZoom?{clusters:this.noop({markers:e}),changed:n}:{clusters:this.cluster({markers:o(s,r,e,this.viewportPadding),map:s,mapCanvasProjection:r})}}cluster(t){let{markers:e,map:s,mapCanvasProjection:r}=t;return this.clusters=[],e.forEach((t=>{this.addToClosestCluster(t,s,r)})),this.clusters}addToClosestCluster(t,e,o){let n=this.maxDistance,h=null;for(let e=0;e<this.clusters.length;e++){const r=this.clusters[e],o=a(r.bounds.getCenter().toJSON(),s.getPosition(t).toJSON());o<n&&(n=o,h=r)}if(h&&i(h.bounds,o,this.gridSize).contains(s.getPosition(t)))h.push(t);else{const e=new r({markers:[t]});this.clusters.push(e)}}},t.MarkerClusterer=class extends D{constructor(t){let{map:e,markers:s=[],algorithmOptions:r={},algorithm:o=new z(r),renderer:i=new B,onClusterClick:n=F}=t;super(),this.markers=[...s],this.clusters=[],this.algorithm=o,this.renderer=i,this.onClusterClick=n,e&&this.setMap(e)}addMarker(t,e){this.markers.includes(t)||(this.markers.push(t),e||this.render())}addMarkers(t,e){t.forEach((t=>{this.addMarker(t,!0)})),e||this.render()}removeMarker(t,e){const r=this.markers.indexOf(t);return-1!==r&&(s.setMap(t,null),this.markers.splice(r,1),e||this.render(),!0)}removeMarkers(t,e){let s=!1;return t.forEach((t=>{s=this.removeMarker(t,!0)||s})),s&&!e&&this.render(),s}clearMarkers(t){this.markers.length=0,t||this.render()}render(){const e=this.getMap();if(e instanceof google.maps.Map&&e.getProjection()){google.maps.event.trigger(this,t.MarkerClustererEvents.CLUSTERING_BEGIN,this);const{clusters:r,changed:o}=this.algorithm.calculate({markers:this.markers,map:e,mapCanvasProjection:this.getProjection()});if(o||null==o){const t=new Set;for(const e of r)1==e.markers.length&&t.add(e.markers[0]);const e=[];for(const r of this.clusters)null!=r.marker&&(1==r.markers.length?t.has(r.marker)||s.setMap(r.marker,null):e.push(r.marker));this.clusters=r,this.renderClusters(),requestAnimationFrame((()=>e.forEach((t=>s.setMap(t,null)))))}google.maps.event.trigger(this,t.MarkerClustererEvents.CLUSTERING_END,this)}}onAdd(){this.idleListener=this.getMap().addListener("idle",this.render.bind(this)),this.render()}onRemove(){google.maps.event.removeListener(this.idleListener),this.reset()}reset(){this.markers.forEach((t=>s.setMap(t,null))),this.clusters.forEach((t=>t.delete())),this.clusters=[]}renderClusters(){const e=new U(this.markers,this.clusters),r=this.getMap();this.clusters.forEach((o=>{1===o.markers.length?o.marker=o.markers[0]:(o.marker=this.renderer.render(o,e,r),o.markers.forEach((t=>s.setMap(t,null))),this.onClusterClick&&o.marker.addListener("click",(e=>{google.maps.event.trigger(this,t.MarkerClustererEvents.CLUSTER_CLICK,o),this.onClusterClick(e,o,r)}))),s.setMap(o.marker,r)}))}},t.MarkerUtils=s,t.NoopAlgorithm=class extends u{constructor(t){super(e(t,[]))}calculate(t){let{markers:e,map:s,mapCanvasProjection:r}=t;return{clusters:this.cluster({markers:e,map:s,mapCanvasProjection:r}),changed:!1}}cluster(t){return this.noop(t)}},t.SuperClusterAlgorithm=z,t.SuperClusterViewportAlgorithm=class extends p{constructor(t){var{maxZoom:s,radius:r=60,viewportPadding:o=60}=t,i=e(t,["maxZoom","radius","viewportPadding"]);super({maxZoom:s,viewportPadding:o}),this.superCluster=new O(Object.assign({maxZoom:this.maxZoom,radius:r},i)),this.state={zoom:-1,view:[0,0,0,0]}}calculate(t){const e={zoom:Math.round(t.map.getZoom()),view:n(t.map.getBounds(),t.mapCanvasProjection,this.viewportPadding)};let r=!f(this.state,e);if(!f(t.markers,this.markers)){r=!0,this.markers=[...t.markers];const e=this.markers.map((t=>{const e=s.getPosition(t);return{type:"Feature",geometry:{type:"Point",coordinates:[e.lng(),e.lat()]},properties:{marker:t}}}));this.superCluster.load(e)}return r&&(this.clusters=this.cluster(t),this.state=e),{clusters:this.clusters,changed:r}}cluster(t){let{map:e,mapCanvasProjection:s}=t;const r={zoom:Math.round(e.getZoom()),view:n(e.getBounds(),s,this.viewportPadding)};return this.superCluster.getClusters(r.view,r.zoom).map((t=>this.transformCluster(t)))}transformCluster(t){let{geometry:{coordinates:[e,o]},properties:i}=t;if(i.cluster)return new r({markers:this.superCluster.getLeaves(i.cluster_id,1/0).map((t=>t.properties.marker)),position:{lat:o,lng:e}});const n=i.marker;return new r({markers:[n],position:s.getPosition(n)})}},t.defaultOnClusterClickHandler=F,t.distanceBetweenPoints=a,t.extendBoundsToPaddedViewport=i,t.extendPixelBounds=l,t.filterMarkersToPaddedViewport=o,t.getPaddedViewport=n,t.noop=m,t.pixelBoundsToLatLngBounds=c,Object.defineProperty(t,"__esModule",{value:!0})}));
 //# sourceMappingURL=index.umd.js.map
index 361a28b4d8fb8f4671d068ee6dbbbb4aa59625bf..77fb75bbc942ec5d574966811dd0d0575d931936 100644 (file)
@@ -1 +1 @@
-{"version":3,"file":"index.umd.js","sources":["../node_modules/core-js/internals/global.js","../node_modules/core-js/internals/fails.js","../node_modules/core-js/internals/descriptors.js","../node_modules/core-js/internals/function-bind-native.js","../node_modules/core-js/internals/function-call.js","../node_modules/core-js/internals/object-property-is-enumerable.js","../node_modules/core-js/internals/create-property-descriptor.js","../node_modules/core-js/internals/engine-v8-version.js","../node_modules/core-js/internals/function-uncurry-this.js","../node_modules/core-js/internals/classof-raw.js","../node_modules/core-js/internals/indexed-object.js","../node_modules/core-js/internals/is-null-or-undefined.js","../node_modules/core-js/internals/require-object-coercible.js","../node_modules/core-js/internals/to-indexed-object.js","../node_modules/core-js/internals/document-all.js","../node_modules/core-js/internals/is-callable.js","../node_modules/core-js/internals/is-object.js","../node_modules/core-js/internals/get-built-in.js","../node_modules/core-js/internals/object-is-prototype-of.js","../node_modules/core-js/internals/engine-user-agent.js","../node_modules/core-js/internals/symbol-constructor-detection.js","../node_modules/core-js/internals/use-symbol-as-uid.js","../node_modules/core-js/internals/is-symbol.js","../node_modules/core-js/internals/try-to-string.js","../node_modules/core-js/internals/a-callable.js","../node_modules/core-js/internals/get-method.js","../node_modules/core-js/internals/ordinary-to-primitive.js","../node_modules/core-js/internals/define-global-property.js","../node_modules/core-js/internals/shared-store.js","../node_modules/core-js/internals/shared.js","../node_modules/core-js/internals/to-object.js","../node_modules/core-js/internals/has-own-property.js","../node_modules/core-js/internals/uid.js","../node_modules/core-js/internals/well-known-symbol.js","../node_modules/core-js/internals/to-primitive.js","../node_modules/core-js/internals/to-property-key.js","../node_modules/core-js/internals/document-create-element.js","../node_modules/core-js/internals/ie8-dom-define.js","../node_modules/core-js/internals/object-get-own-property-descriptor.js","../node_modules/core-js/internals/v8-prototype-define-bug.js","../node_modules/core-js/internals/an-object.js","../node_modules/core-js/internals/object-define-property.js","../node_modules/core-js/internals/create-non-enumerable-property.js","../node_modules/core-js/internals/function-name.js","../node_modules/core-js/internals/inspect-source.js","../node_modules/core-js/internals/internal-state.js","../node_modules/core-js/internals/weak-map-basic-detection.js","../node_modules/core-js/internals/shared-key.js","../node_modules/core-js/internals/hidden-keys.js","../node_modules/core-js/internals/make-built-in.js","../node_modules/core-js/internals/define-built-in.js","../node_modules/core-js/internals/math-trunc.js","../node_modules/core-js/internals/to-integer-or-infinity.js","../node_modules/core-js/internals/to-absolute-index.js","../node_modules/core-js/internals/to-length.js","../node_modules/core-js/internals/length-of-array-like.js","../node_modules/core-js/internals/array-includes.js","../node_modules/core-js/internals/object-keys-internal.js","../node_modules/core-js/internals/enum-bug-keys.js","../node_modules/core-js/internals/object-get-own-property-names.js","../node_modules/core-js/internals/object-get-own-property-symbols.js","../node_modules/core-js/internals/own-keys.js","../node_modules/core-js/internals/copy-constructor-properties.js","../node_modules/core-js/internals/is-forced.js","../node_modules/core-js/internals/export.js","../node_modules/core-js/internals/function-uncurry-this-clause.js","../node_modules/core-js/internals/function-bind-context.js","../node_modules/core-js/internals/is-array.js","../node_modules/core-js/internals/to-string-tag-support.js","../node_modules/core-js/internals/classof.js","../node_modules/core-js/internals/is-constructor.js","../node_modules/core-js/internals/array-species-constructor.js","../node_modules/core-js/internals/array-species-create.js","../node_modules/core-js/internals/array-iteration.js","../node_modules/core-js/internals/array-method-has-species-support.js","../node_modules/core-js/modules/es.array.map.js","../node_modules/tslib/tslib.es6.js","../node_modules/core-js/modules/es.array.filter.js","../node_modules/core-js/internals/object-to-string.js","../node_modules/core-js/modules/es.object.to-string.js","../src/marker-utils.ts","../src/cluster.ts","../src/algorithms/utils.ts","../src/algorithms/core.ts","../node_modules/core-js/internals/dom-iterables.js","../node_modules/core-js/internals/dom-token-list-prototype.js","../node_modules/core-js/internals/array-method-is-strict.js","../node_modules/core-js/internals/array-for-each.js","../node_modules/core-js/modules/web.dom-collections.for-each.js","../node_modules/core-js/modules/web.url.to-json.js","../node_modules/fast-deep-equal/index.js","../src/algorithms/grid.ts","../src/algorithms/noop.ts","../node_modules/core-js/internals/object-keys.js","../node_modules/core-js/internals/object-assign.js","../node_modules/core-js/modules/es.object.assign.js","../node_modules/kdbush/index.js","../node_modules/supercluster/index.js","../src/algorithms/supercluster.ts","../node_modules/core-js/internals/object-define-properties.js","../node_modules/core-js/internals/html.js","../node_modules/core-js/internals/object-create.js","../node_modules/core-js/internals/add-to-unscopables.js","../node_modules/core-js/modules/es.array.includes.js","../node_modules/core-js/internals/is-regexp.js","../node_modules/core-js/internals/not-a-regexp.js","../node_modules/core-js/internals/to-string.js","../node_modules/core-js/internals/correct-is-regexp-logic.js","../node_modules/core-js/modules/es.string.includes.js","../node_modules/core-js/modules/es.array.index-of.js","../node_modules/core-js/internals/array-set-length.js","../node_modules/core-js/internals/does-not-exceed-safe-integer.js","../node_modules/core-js/internals/create-property.js","../node_modules/core-js/internals/delete-property-or-throw.js","../node_modules/core-js/modules/es.array.splice.js","../node_modules/core-js/internals/iterators.js","../node_modules/core-js/internals/iterators-core.js","../node_modules/core-js/internals/correct-prototype-getter.js","../node_modules/core-js/internals/object-get-prototype-of.js","../node_modules/core-js/internals/set-to-string-tag.js","../node_modules/core-js/internals/iterator-create-constructor.js","../node_modules/core-js/internals/function-uncurry-this-accessor.js","../node_modules/core-js/internals/a-possible-prototype.js","../node_modules/core-js/internals/object-set-prototype-of.js","../node_modules/core-js/internals/iterator-define.js","../node_modules/core-js/internals/create-iter-result-object.js","../node_modules/core-js/modules/es.array.iterator.js","../node_modules/core-js/internals/array-slice-simple.js","../node_modules/core-js/internals/object-get-own-property-names-external.js","../node_modules/core-js/internals/array-buffer-non-extensible.js","../node_modules/core-js/internals/object-is-extensible.js","../node_modules/core-js/internals/freezing.js","../node_modules/core-js/internals/internal-metadata.js","../node_modules/core-js/internals/is-array-iterator-method.js","../node_modules/core-js/internals/get-iterator-method.js","../node_modules/core-js/internals/get-iterator.js","../node_modules/core-js/internals/iterator-close.js","../node_modules/core-js/internals/iterate.js","../node_modules/core-js/internals/an-instance.js","../node_modules/core-js/internals/check-correctness-of-iteration.js","../node_modules/core-js/internals/inherit-if-required.js","../node_modules/core-js/internals/collection.js","../node_modules/core-js/internals/define-built-in-accessor.js","../node_modules/core-js/internals/define-built-ins.js","../node_modules/core-js/internals/set-species.js","../node_modules/core-js/internals/collection-strong.js","../node_modules/core-js/modules/es.set.constructor.js","../node_modules/core-js/internals/string-multibyte.js","../node_modules/core-js/modules/es.string.iterator.js","../node_modules/core-js/modules/web.dom-collections.iterator.js","../node_modules/core-js/internals/array-reduce.js","../node_modules/core-js/internals/engine-is-node.js","../node_modules/core-js/modules/es.array.reduce.js","../node_modules/core-js/modules/es.array.concat.js","../node_modules/core-js/internals/path.js","../node_modules/core-js/internals/this-number-value.js","../node_modules/core-js/internals/string-trim.js","../node_modules/core-js/internals/whitespaces.js","../node_modules/core-js/modules/es.number.constructor.js","../src/renderer.ts","../src/overlay-view-safe.ts","../src/markerclusterer.ts"],"sourcesContent":["var check = function (it) {\n  return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || this || Function('return this')();\n","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n  all: documentAll,\n  IS_HTMLDDA: IS_HTMLDDA\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol();\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: '3.31.1',\n  mode: IS_PURE ? 'pure' : 'global',\n  copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n  license: 'https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n  if (!hasOwn(WellKnownSymbolsStore, name)) {\n    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n      ? Symbol[name]\n      : createWellKnownSymbol('Symbol.' + name);\n  } return WellKnownSymbolsStore[name];\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a != 7;\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype != 42;\n});\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw $TypeError($String(argument) + ' is not an object');\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = {};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\)/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","var isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n","// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value == POLYFILL ? true\n    : value == NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = (global[TARGET] || {}).prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n","var classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","var uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) == 'Array';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, empty, argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? $Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE == 1;\n  var IS_FILTER = TYPE == 2;\n  var IS_SOME = TYPE == 3;\n  var IS_EVERY = TYPE == 4;\n  var IS_FIND_INDEX = TYPE == 6;\n  var IS_FILTER_REJECT = TYPE == 7;\n  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var boundFunction = bind(callbackfn, that);\n    var length = lengthOfArrayLike(self);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push(target, value);      // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push(target, value);      // filterReject\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterReject` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterReject: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  map: function map(callbackfn /* , thisArg */) {\n    return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n  defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","/**\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * util class that creates a common set of convenience functions to wrap\n * shared behavior of Advanced Markers and Markers.\n */\n\nexport type Marker =\n  | google.maps.Marker\n  | google.maps.marker.AdvancedMarkerElement;\n\nexport class MarkerUtils {\n  public static isAdvancedMarkerAvailable(map: google.maps.Map): boolean {\n    return (\n      google.maps.marker &&\n      map.getMapCapabilities().isAdvancedMarkersAvailable === true\n    );\n  }\n\n  public static isAdvancedMarker(\n    marker: Marker\n  ): marker is google.maps.marker.AdvancedMarkerElement {\n    return (\n      google.maps.marker &&\n      marker instanceof google.maps.marker.AdvancedMarkerElement\n    );\n  }\n\n  public static setMap(marker: Marker, map: google.maps.Map | null) {\n    if (this.isAdvancedMarker(marker)) {\n      marker.map = map;\n    } else {\n      marker.setMap(map);\n    }\n  }\n\n  public static getPosition(marker: Marker): google.maps.LatLng {\n    // SuperClusterAlgorithm.calculate expects a LatLng instance so we fake it for Adv Markers\n    if (this.isAdvancedMarker(marker)) {\n      if (marker.position) {\n        if (marker.position instanceof google.maps.LatLng) {\n          return marker.position;\n        }\n        // since we can't cast to LatLngLiteral for reasons =(\n        if (marker.position.lat && marker.position.lng) {\n          return new google.maps.LatLng(\n            marker.position.lat,\n            marker.position.lng\n          );\n        }\n      }\n      return new google.maps.LatLng(null);\n    }\n    return marker.getPosition();\n  }\n\n  public static getVisible(marker: Marker) {\n    if (this.isAdvancedMarker(marker)) {\n      /**\n       * Always return true for Advanced Markers because the clusterer\n       * uses getVisible as a way to count legacy markers not as an actual\n       * indicator of visibility for some reason. Even when markers are hidden\n       * Marker.getVisible returns `true` and this is used to set the marker count\n       * on the cluster. See the behavior of Cluster.count\n       */\n      return true;\n    }\n    return marker.getVisible();\n  }\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MarkerUtils, Marker } from \"./marker-utils\";\n\nexport interface ClusterOptions {\n  position?: google.maps.LatLng | google.maps.LatLngLiteral;\n  markers?: Marker[];\n}\n\nexport class Cluster {\n  public marker?: Marker;\n  public readonly markers?: Marker[];\n  protected _position: google.maps.LatLng;\n\n  constructor({ markers, position }: ClusterOptions) {\n    this.markers = markers;\n\n    if (position) {\n      if (position instanceof google.maps.LatLng) {\n        this._position = position;\n      } else {\n        this._position = new google.maps.LatLng(position);\n      }\n    }\n  }\n\n  public get bounds(): google.maps.LatLngBounds | undefined {\n    if (this.markers.length === 0 && !this._position) {\n      return;\n    }\n\n    const bounds = new google.maps.LatLngBounds(this._position, this._position);\n    for (const marker of this.markers) {\n      bounds.extend(MarkerUtils.getPosition(marker));\n    }\n    return bounds;\n  }\n\n  public get position(): google.maps.LatLng {\n    return this._position || this.bounds.getCenter();\n  }\n\n  /**\n   * Get the count of **visible** markers.\n   */\n  public get count(): number {\n    return this.markers.filter((m: Marker) => MarkerUtils.getVisible(m)).length;\n  }\n\n  /**\n   * Add a marker to the cluster.\n   */\n  public push(marker: Marker): void {\n    this.markers.push(marker);\n  }\n\n  /**\n   * Cleanup references and remove marker from map.\n   */\n  public delete(): void {\n    if (this.marker) {\n      MarkerUtils.setMap(this.marker, null);\n      this.marker = undefined;\n    }\n    this.markers.length = 0;\n  }\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MarkerUtils, Marker } from \"../marker-utils\";\n\n/**\n * Returns the markers visible in a padded map viewport\n *\n * @param map\n * @param mapCanvasProjection\n * @param markers The list of marker to filter\n * @param viewportPaddingPixels The padding in pixel\n * @returns The list of markers in the padded viewport\n */\nexport const filterMarkersToPaddedViewport = (\n  map: google.maps.Map,\n  mapCanvasProjection: google.maps.MapCanvasProjection,\n  markers: Marker[],\n  viewportPaddingPixels: number\n): Marker[] => {\n  const extendedMapBounds = extendBoundsToPaddedViewport(\n    map.getBounds(),\n    mapCanvasProjection,\n    viewportPaddingPixels\n  );\n  return markers.filter((marker) =>\n    extendedMapBounds.contains(MarkerUtils.getPosition(marker))\n  );\n};\n\n/**\n * Extends a bounds by a number of pixels in each direction\n */\nexport const extendBoundsToPaddedViewport = (\n  bounds: google.maps.LatLngBounds,\n  projection: google.maps.MapCanvasProjection,\n  numPixels: number\n): google.maps.LatLngBounds => {\n  const { northEast, southWest } = latLngBoundsToPixelBounds(\n    bounds,\n    projection\n  );\n  const extendedPixelBounds = extendPixelBounds(\n    { northEast, southWest },\n    numPixels\n  );\n  return pixelBoundsToLatLngBounds(extendedPixelBounds, projection);\n};\n\n/**\n * Returns the distance between 2 positions.\n *\n * @hidden\n */\nexport const distanceBetweenPoints = (\n  p1: google.maps.LatLngLiteral,\n  p2: google.maps.LatLngLiteral\n): number => {\n  const R = 6371; // Radius of the Earth in km\n  const dLat = ((p2.lat - p1.lat) * Math.PI) / 180;\n  const dLon = ((p2.lng - p1.lng) * Math.PI) / 180;\n  const sinDLat = Math.sin(dLat / 2);\n  const sinDLon = Math.sin(dLon / 2);\n  const a =\n    sinDLat * sinDLat +\n    Math.cos((p1.lat * Math.PI) / 180) *\n      Math.cos((p2.lat * Math.PI) / 180) *\n      sinDLon *\n      sinDLon;\n  const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n  return R * c;\n};\n\ntype PixelBounds = {\n  northEast: google.maps.Point;\n  southWest: google.maps.Point;\n};\n\n/**\n * Converts a LatLng bound to pixels.\n *\n * @hidden\n */\nconst latLngBoundsToPixelBounds = (\n  bounds: google.maps.LatLngBounds,\n  projection: google.maps.MapCanvasProjection\n): PixelBounds => {\n  return {\n    northEast: projection.fromLatLngToDivPixel(bounds.getNorthEast()),\n    southWest: projection.fromLatLngToDivPixel(bounds.getSouthWest()),\n  };\n};\n\n/**\n * Extends a pixel bounds by numPixels in all directions.\n *\n * @hidden\n */\nexport const extendPixelBounds = (\n  { northEast, southWest }: PixelBounds,\n  numPixels: number\n): PixelBounds => {\n  northEast.x += numPixels;\n  northEast.y -= numPixels;\n\n  southWest.x -= numPixels;\n  southWest.y += numPixels;\n\n  return { northEast, southWest };\n};\n\n/**\n * @hidden\n */\nexport const pixelBoundsToLatLngBounds = (\n  { northEast, southWest }: PixelBounds,\n  projection: google.maps.MapCanvasProjection\n): google.maps.LatLngBounds => {\n  const sw = projection.fromDivPixelToLatLng(southWest);\n  const ne = projection.fromDivPixelToLatLng(northEast);\n  return new google.maps.LatLngBounds(sw, ne);\n};\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Cluster } from \"../cluster\";\nimport { filterMarkersToPaddedViewport } from \"./utils\";\nimport { MarkerUtils, Marker } from \"../marker-utils\";\n\nexport interface AlgorithmInput {\n  /**\n   * The map containing the markers and clusters.\n   */\n  map: google.maps.Map;\n  /**\n   * An array of markers to be clustered.\n   *\n   * There are some specific edge cases to be aware of including the following:\n   * * Markers that are not visible.\n   */\n  markers: Marker[];\n  /**\n   * The `mapCanvasProjection` enables easy conversion from lat/lng to pixel.\n   *\n   * @see [MapCanvasProjection](https://developers.google.com/maps/documentation/javascript/reference/overlay-view#MapCanvasProjection)\n   */\n  mapCanvasProjection: google.maps.MapCanvasProjection;\n}\n\nexport interface AlgorithmOutput {\n  /**\n   * The clusters returned based upon the {@link AlgorithmInput}.\n   */\n  clusters: Cluster[];\n  /**\n   * A boolean flag indicating that the clusters have not changed.\n   */\n  changed?: boolean;\n}\n\nexport interface Algorithm {\n  /**\n   * Calculates an array of {@link Cluster}.\n   */\n  calculate: ({ markers, map }: AlgorithmInput) => AlgorithmOutput;\n}\n\nexport interface AlgorithmOptions {\n  // Markers are not clustered at maxZoom and above.\n  maxZoom?: number;\n}\n\n/**\n * @hidden\n */\nexport abstract class AbstractAlgorithm implements Algorithm {\n  protected maxZoom: number;\n\n  constructor({ maxZoom = 16 }: AlgorithmOptions) {\n    this.maxZoom = maxZoom;\n  }\n  /**\n   * Helper function to bypass clustering based upon some map state such as\n   * zoom, number of markers, etc.\n   *\n   * ```typescript\n   *  cluster({markers, map}: AlgorithmInput): Cluster[] {\n   *    if (shouldBypassClustering(map)) {\n   *      return this.noop({markers})\n   *    }\n   * }\n   * ```\n   */\n  protected noop<T extends Pick<AlgorithmInput, \"markers\">>({\n    markers,\n  }: T): Cluster[] {\n    return noop(markers);\n  }\n  /**\n   * Calculates an array of {@link Cluster}. Calculate is separate from\n   * {@link cluster} as it does preprocessing on the markers such as filtering\n   * based upon the viewport as in {@link AbstractViewportAlgorithm}. Caching\n   * and other optimizations can also be done here.\n   */\n  public abstract calculate({ markers, map }: AlgorithmInput): AlgorithmOutput;\n\n  /**\n   * Clusters the markers and called from {@link calculate}.\n   */\n  protected abstract cluster({ markers, map }: AlgorithmInput): Cluster[];\n}\n\n/**\n * @hidden\n */\nexport interface ViewportAlgorithmOptions extends AlgorithmOptions {\n  /**\n   * The number of pixels to extend beyond the viewport bounds when filtering\n   * markers prior to clustering.\n   */\n  viewportPadding?: number;\n}\n\n/**\n * Abstract viewport algorithm proves a class to filter markers by a padded\n * viewport. This is a common optimization.\n *\n * @hidden\n */\nexport abstract class AbstractViewportAlgorithm extends AbstractAlgorithm {\n  protected viewportPadding = 60;\n\n  constructor({ viewportPadding = 60, ...options }: ViewportAlgorithmOptions) {\n    super(options);\n    this.viewportPadding = viewportPadding;\n  }\n  public calculate({\n    markers,\n    map,\n    mapCanvasProjection,\n  }: AlgorithmInput): AlgorithmOutput {\n    if (map.getZoom() >= this.maxZoom) {\n      return {\n        clusters: this.noop({\n          markers,\n        }),\n        changed: false,\n      };\n    }\n\n    return {\n      clusters: this.cluster({\n        markers: filterMarkersToPaddedViewport(\n          map,\n          mapCanvasProjection,\n          markers,\n          this.viewportPadding\n        ),\n        map,\n        mapCanvasProjection,\n      }),\n    };\n  }\n  protected abstract cluster({ markers, map }: AlgorithmInput): Cluster[];\n}\n\n/**\n * @hidden\n */\nexport const noop = (markers: Marker[]): Cluster[] => {\n  const clusters = markers.map(\n    (marker) =>\n      new Cluster({\n        position: MarkerUtils.getPosition(marker),\n        markers: [marker],\n      })\n  );\n  return clusters;\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n  CSSRuleList: 0,\n  CSSStyleDeclaration: 0,\n  CSSValueList: 0,\n  ClientRectList: 0,\n  DOMRectList: 0,\n  DOMStringList: 0,\n  DOMTokenList: 1,\n  DataTransferItemList: 0,\n  FileList: 0,\n  HTMLAllCollection: 0,\n  HTMLCollection: 0,\n  HTMLFormElement: 0,\n  HTMLSelectElement: 0,\n  MediaList: 0,\n  MimeTypeArray: 0,\n  NamedNodeMap: 0,\n  NodeList: 1,\n  PaintRequestList: 0,\n  Plugin: 0,\n  PluginArray: 0,\n  SVGLengthList: 0,\n  SVGNumberList: 0,\n  SVGPathSegList: 0,\n  SVGPointList: 0,\n  SVGStringList: 0,\n  SVGTransformList: 0,\n  SourceBufferList: 0,\n  StyleSheetList: 0,\n  TextTrackCueList: 0,\n  TextTrackList: 0,\n  TouchList: 0\n};\n","// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`\nvar documentCreateElement = require('../internals/document-create-element');\n\nvar classList = documentCreateElement('span').classList;\nvar DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;\n\nmodule.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call -- required for testing\n    method.call(null, argument || function () { return 1; }, 1);\n  });\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar handlePrototype = function (CollectionPrototype) {\n  // some Chrome versions have non-configurable methods on DOMTokenList\n  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n  } catch (error) {\n    CollectionPrototype.forEach = forEach;\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  if (DOMIterables[COLLECTION_NAME]) {\n    handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype);\n  }\n}\n\nhandlePrototype(DOMTokenListPrototype);\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\n\n// `URL.prototype.toJSON` method\n// https://url.spec.whatwg.org/#dom-url-tojson\n$({ target: 'URL', proto: true, enumerable: true }, {\n  toJSON: function toJSON() {\n    return call(URL.prototype.toString, this);\n  }\n});\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbstractViewportAlgorithm,\n  AlgorithmInput,\n  AlgorithmOutput,\n  ViewportAlgorithmOptions,\n} from \"./core\";\nimport {\n  distanceBetweenPoints,\n  extendBoundsToPaddedViewport,\n  filterMarkersToPaddedViewport,\n} from \"./utils\";\n\nimport { Cluster } from \"../cluster\";\nimport equal from \"fast-deep-equal\";\nimport { MarkerUtils, Marker } from \"../marker-utils\";\n\nexport interface GridOptions extends ViewportAlgorithmOptions {\n  gridSize?: number;\n  /**\n   * Max distance between cluster center and point in meters.\n   * @default 10000\n   */\n  maxDistance?: number;\n}\n\n/**\n * The default Grid algorithm historically used in Google Maps marker\n * clustering.\n *\n * The Grid algorithm does not implement caching and markers may flash as the\n * viewport changes. Instead use {@link SuperClusterAlgorithm}.\n */\nexport class GridAlgorithm extends AbstractViewportAlgorithm {\n  protected gridSize: number;\n  protected maxDistance: number;\n  protected clusters: Cluster[] = [];\n  protected state = { zoom: -1 };\n\n  constructor({ maxDistance = 40000, gridSize = 40, ...options }: GridOptions) {\n    super(options);\n\n    this.maxDistance = maxDistance;\n    this.gridSize = gridSize;\n  }\n\n  public calculate({\n    markers,\n    map,\n    mapCanvasProjection,\n  }: AlgorithmInput): AlgorithmOutput {\n    const state = { zoom: map.getZoom() };\n    let changed = false;\n    if (this.state.zoom >= this.maxZoom && state.zoom >= this.maxZoom) {\n      // still at or beyond maxZoom, no change\n    } else {\n      changed = !equal(this.state, state);\n    }\n    this.state = state;\n    if (map.getZoom() >= this.maxZoom) {\n      return {\n        clusters: this.noop({\n          markers,\n        }),\n        changed,\n      };\n    }\n\n    return {\n      clusters: this.cluster({\n        markers: filterMarkersToPaddedViewport(\n          map,\n          mapCanvasProjection,\n          markers,\n          this.viewportPadding\n        ),\n        map,\n        mapCanvasProjection,\n      }),\n    };\n  }\n\n  protected cluster({\n    markers,\n    map,\n    mapCanvasProjection,\n  }: AlgorithmInput): Cluster[] {\n    this.clusters = [];\n    markers.forEach((marker) => {\n      this.addToClosestCluster(marker, map, mapCanvasProjection);\n    });\n\n    return this.clusters;\n  }\n\n  protected addToClosestCluster(\n    marker: Marker,\n    map: google.maps.Map,\n    projection: google.maps.MapCanvasProjection\n  ): void {\n    let maxDistance = this.maxDistance; // Some large number\n    let cluster: Cluster = null;\n\n    for (let i = 0; i < this.clusters.length; i++) {\n      const candidate = this.clusters[i];\n      const distance = distanceBetweenPoints(\n        candidate.bounds.getCenter().toJSON(),\n        MarkerUtils.getPosition(marker).toJSON()\n      );\n\n      if (distance < maxDistance) {\n        maxDistance = distance;\n        cluster = candidate;\n      }\n    }\n\n    if (\n      cluster &&\n      extendBoundsToPaddedViewport(\n        cluster.bounds,\n        projection,\n        this.gridSize\n      ).contains(MarkerUtils.getPosition(marker))\n    ) {\n      cluster.push(marker);\n    } else {\n      const cluster = new Cluster({ markers: [marker] });\n      this.clusters.push(cluster);\n    }\n  }\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbstractAlgorithm,\n  AlgorithmInput,\n  AlgorithmOptions,\n  AlgorithmOutput,\n} from \"./core\";\n\nimport { Cluster } from \"../cluster\";\n\n/**\n * Noop algorithm does not generate any clusters or filter markers by the an extended viewport.\n */\nexport class NoopAlgorithm extends AbstractAlgorithm {\n  constructor({ ...options }: AlgorithmOptions) {\n    super(options);\n  }\n  public calculate({\n    markers,\n    map,\n    mapCanvasProjection,\n  }: AlgorithmInput): AlgorithmOutput {\n    return {\n      clusters: this.cluster({ markers, map, mapCanvasProjection }),\n      changed: false,\n    };\n  }\n\n  protected cluster(input: AlgorithmInput): Cluster[] {\n    return this.noop(input);\n  }\n}\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line es/no-symbol -- safe\n  var symbol = Symbol();\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n  assign: assign\n});\n","\nconst ARRAY_TYPES = [\n    Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array,\n    Int32Array, Uint32Array, Float32Array, Float64Array\n];\n\n/** @typedef {Int8ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor} TypedArrayConstructor */\n\nconst VERSION = 1; // serialized format version\nconst HEADER_SIZE = 8;\n\nexport default class KDBush {\n\n    /**\n     * Creates an index from raw `ArrayBuffer` data.\n     * @param {ArrayBuffer} data\n     */\n    static from(data) {\n        if (!(data instanceof ArrayBuffer)) {\n            throw new Error('Data must be an instance of ArrayBuffer.');\n        }\n        const [magic, versionAndType] = new Uint8Array(data, 0, 2);\n        if (magic !== 0xdb) {\n            throw new Error('Data does not appear to be in a KDBush format.');\n        }\n        const version = versionAndType >> 4;\n        if (version !== VERSION) {\n            throw new Error(`Got v${version} data when expected v${VERSION}.`);\n        }\n        const ArrayType = ARRAY_TYPES[versionAndType & 0x0f];\n        if (!ArrayType) {\n            throw new Error('Unrecognized array type.');\n        }\n        const [nodeSize] = new Uint16Array(data, 2, 1);\n        const [numItems] = new Uint32Array(data, 4, 1);\n\n        return new KDBush(numItems, nodeSize, ArrayType, data);\n    }\n\n    /**\n     * Creates an index that will hold a given number of items.\n     * @param {number} numItems\n     * @param {number} [nodeSize=64] Size of the KD-tree node (64 by default).\n     * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n     * @param {ArrayBuffer} [data] (For internal use only)\n     */\n    constructor(numItems, nodeSize = 64, ArrayType = Float64Array, data) {\n        if (isNaN(numItems) || numItems < 0) throw new Error(`Unpexpected numItems value: ${numItems}.`);\n\n        this.numItems = +numItems;\n        this.nodeSize = Math.min(Math.max(+nodeSize, 2), 65535);\n        this.ArrayType = ArrayType;\n        this.IndexArrayType = numItems < 65536 ? Uint16Array : Uint32Array;\n\n        const arrayTypeIndex = ARRAY_TYPES.indexOf(this.ArrayType);\n        const coordsByteSize = numItems * 2 * this.ArrayType.BYTES_PER_ELEMENT;\n        const idsByteSize = numItems * this.IndexArrayType.BYTES_PER_ELEMENT;\n        const padCoords = (8 - idsByteSize % 8) % 8;\n\n        if (arrayTypeIndex < 0) {\n            throw new Error(`Unexpected typed array class: ${ArrayType}.`);\n        }\n\n        if (data && (data instanceof ArrayBuffer)) { // reconstruct an index from a buffer\n            this.data = data;\n            this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);\n            this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);\n            this._pos = numItems * 2;\n            this._finished = true;\n        } else { // initialize a new index\n            this.data = new ArrayBuffer(HEADER_SIZE + coordsByteSize + idsByteSize + padCoords);\n            this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);\n            this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);\n            this._pos = 0;\n            this._finished = false;\n\n            // set header\n            new Uint8Array(this.data, 0, 2).set([0xdb, (VERSION << 4) + arrayTypeIndex]);\n            new Uint16Array(this.data, 2, 1)[0] = nodeSize;\n            new Uint32Array(this.data, 4, 1)[0] = numItems;\n        }\n    }\n\n    /**\n     * Add a point to the index.\n     * @param {number} x\n     * @param {number} y\n     * @returns {number} An incremental index associated with the added item (starting from `0`).\n     */\n    add(x, y) {\n        const index = this._pos >> 1;\n        this.ids[index] = index;\n        this.coords[this._pos++] = x;\n        this.coords[this._pos++] = y;\n        return index;\n    }\n\n    /**\n     * Perform indexing of the added points.\n     */\n    finish() {\n        const numAdded = this._pos >> 1;\n        if (numAdded !== this.numItems) {\n            throw new Error(`Added ${numAdded} items when expected ${this.numItems}.`);\n        }\n        // kd-sort both arrays for efficient search\n        sort(this.ids, this.coords, this.nodeSize, 0, this.numItems - 1, 0);\n\n        this._finished = true;\n        return this;\n    }\n\n    /**\n     * Search the index for items within a given bounding box.\n     * @param {number} minX\n     * @param {number} minY\n     * @param {number} maxX\n     * @param {number} maxY\n     * @returns {number[]} An array of indices correponding to the found items.\n     */\n    range(minX, minY, maxX, maxY) {\n        if (!this._finished) throw new Error('Data not yet indexed - call index.finish().');\n\n        const {ids, coords, nodeSize} = this;\n        const stack = [0, ids.length - 1, 0];\n        const result = [];\n\n        // recursively search for items in range in the kd-sorted arrays\n        while (stack.length) {\n            const axis = stack.pop() || 0;\n            const right = stack.pop() || 0;\n            const left = stack.pop() || 0;\n\n            // if we reached \"tree node\", search linearly\n            if (right - left <= nodeSize) {\n                for (let i = left; i <= right; i++) {\n                    const x = coords[2 * i];\n                    const y = coords[2 * i + 1];\n                    if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[i]);\n                }\n                continue;\n            }\n\n            // otherwise find the middle index\n            const m = (left + right) >> 1;\n\n            // include the middle item if it's in range\n            const x = coords[2 * m];\n            const y = coords[2 * m + 1];\n            if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[m]);\n\n            // queue search in halves that intersect the query\n            if (axis === 0 ? minX <= x : minY <= y) {\n                stack.push(left);\n                stack.push(m - 1);\n                stack.push(1 - axis);\n            }\n            if (axis === 0 ? maxX >= x : maxY >= y) {\n                stack.push(m + 1);\n                stack.push(right);\n                stack.push(1 - axis);\n            }\n        }\n\n        return result;\n    }\n\n    /**\n     * Search the index for items within a given radius.\n     * @param {number} qx\n     * @param {number} qy\n     * @param {number} r Query radius.\n     * @returns {number[]} An array of indices correponding to the found items.\n     */\n    within(qx, qy, r) {\n        if (!this._finished) throw new Error('Data not yet indexed - call index.finish().');\n\n        const {ids, coords, nodeSize} = this;\n        const stack = [0, ids.length - 1, 0];\n        const result = [];\n        const r2 = r * r;\n\n        // recursively search for items within radius in the kd-sorted arrays\n        while (stack.length) {\n            const axis = stack.pop() || 0;\n            const right = stack.pop() || 0;\n            const left = stack.pop() || 0;\n\n            // if we reached \"tree node\", search linearly\n            if (right - left <= nodeSize) {\n                for (let i = left; i <= right; i++) {\n                    if (sqDist(coords[2 * i], coords[2 * i + 1], qx, qy) <= r2) result.push(ids[i]);\n                }\n                continue;\n            }\n\n            // otherwise find the middle index\n            const m = (left + right) >> 1;\n\n            // include the middle item if it's in range\n            const x = coords[2 * m];\n            const y = coords[2 * m + 1];\n            if (sqDist(x, y, qx, qy) <= r2) result.push(ids[m]);\n\n            // queue search in halves that intersect the query\n            if (axis === 0 ? qx - r <= x : qy - r <= y) {\n                stack.push(left);\n                stack.push(m - 1);\n                stack.push(1 - axis);\n            }\n            if (axis === 0 ? qx + r >= x : qy + r >= y) {\n                stack.push(m + 1);\n                stack.push(right);\n                stack.push(1 - axis);\n            }\n        }\n\n        return result;\n    }\n}\n\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} nodeSize\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */\nfunction sort(ids, coords, nodeSize, left, right, axis) {\n    if (right - left <= nodeSize) return;\n\n    const m = (left + right) >> 1; // middle index\n\n    // sort ids and coords around the middle index so that the halves lie\n    // either left/right or top/bottom correspondingly (taking turns)\n    select(ids, coords, m, left, right, axis);\n\n    // recursively kd-sort first half and second half on the opposite axis\n    sort(ids, coords, nodeSize, left, m - 1, 1 - axis);\n    sort(ids, coords, nodeSize, m + 1, right, 1 - axis);\n}\n\n/**\n * Custom Floyd-Rivest selection algorithm: sort ids and coords so that\n * [left..k-1] items are smaller than k-th item (on either x or y axis)\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} k\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */\nfunction select(ids, coords, k, left, right, axis) {\n\n    while (right > left) {\n        if (right - left > 600) {\n            const n = right - left + 1;\n            const m = k - left + 1;\n            const z = Math.log(n);\n            const s = 0.5 * Math.exp(2 * z / 3);\n            const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n            const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n            const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n            select(ids, coords, k, newLeft, newRight, axis);\n        }\n\n        const t = coords[2 * k + axis];\n        let i = left;\n        let j = right;\n\n        swapItem(ids, coords, left, k);\n        if (coords[2 * right + axis] > t) swapItem(ids, coords, left, right);\n\n        while (i < j) {\n            swapItem(ids, coords, i, j);\n            i++;\n            j--;\n            while (coords[2 * i + axis] < t) i++;\n            while (coords[2 * j + axis] > t) j--;\n        }\n\n        if (coords[2 * left + axis] === t) swapItem(ids, coords, left, j);\n        else {\n            j++;\n            swapItem(ids, coords, j, right);\n        }\n\n        if (j <= k) left = j + 1;\n        if (k <= j) right = j - 1;\n    }\n}\n\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} i\n * @param {number} j\n */\nfunction swapItem(ids, coords, i, j) {\n    swap(ids, i, j);\n    swap(coords, 2 * i, 2 * j);\n    swap(coords, 2 * i + 1, 2 * j + 1);\n}\n\n/**\n * @param {InstanceType<TypedArrayConstructor>} arr\n * @param {number} i\n * @param {number} j\n */\nfunction swap(arr, i, j) {\n    const tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\n/**\n * @param {number} ax\n * @param {number} ay\n * @param {number} bx\n * @param {number} by\n */\nfunction sqDist(ax, ay, bx, by) {\n    const dx = ax - bx;\n    const dy = ay - by;\n    return dx * dx + dy * dy;\n}\n","\nimport KDBush from 'kdbush';\n\nconst defaultOptions = {\n    minZoom: 0,   // min zoom to generate clusters on\n    maxZoom: 16,  // max zoom level to cluster the points on\n    minPoints: 2, // minimum points to form a cluster\n    radius: 40,   // cluster radius in pixels\n    extent: 512,  // tile extent (radius is calculated relative to it)\n    nodeSize: 64, // size of the KD-tree leaf node, affects performance\n    log: false,   // whether to log timing info\n\n    // whether to generate numeric ids for input features (in vector tiles)\n    generateId: false,\n\n    // a reduce function for calculating custom cluster properties\n    reduce: null, // (accumulated, props) => { accumulated.sum += props.sum; }\n\n    // properties to use for individual points when running the reducer\n    map: props => props // props => ({sum: props.my_value})\n};\n\nconst fround = Math.fround || (tmp => ((x) => { tmp[0] = +x; return tmp[0]; }))(new Float32Array(1));\n\nconst OFFSET_ZOOM = 2;\nconst OFFSET_ID = 3;\nconst OFFSET_PARENT = 4;\nconst OFFSET_NUM = 5;\nconst OFFSET_PROP = 6;\n\nexport default class Supercluster {\n    constructor(options) {\n        this.options = Object.assign(Object.create(defaultOptions), options);\n        this.trees = new Array(this.options.maxZoom + 1);\n        this.stride = this.options.reduce ? 7 : 6;\n        this.clusterProps = [];\n    }\n\n    load(points) {\n        const {log, minZoom, maxZoom} = this.options;\n\n        if (log) console.time('total time');\n\n        const timerId = `prepare ${  points.length  } points`;\n        if (log) console.time(timerId);\n\n        this.points = points;\n\n        // generate a cluster object for each point and index input points into a KD-tree\n        const data = [];\n\n        for (let i = 0; i < points.length; i++) {\n            const p = points[i];\n            if (!p.geometry) continue;\n\n            const [lng, lat] = p.geometry.coordinates;\n            const x = fround(lngX(lng));\n            const y = fround(latY(lat));\n            // store internal point/cluster data in flat numeric arrays for performance\n            data.push(\n                x, y, // projected point coordinates\n                Infinity, // the last zoom the point was processed at\n                i, // index of the source feature in the original input array\n                -1, // parent cluster id\n                1 // number of points in a cluster\n            );\n            if (this.options.reduce) data.push(0); // noop\n        }\n        let tree = this.trees[maxZoom + 1] = this._createTree(data);\n\n        if (log) console.timeEnd(timerId);\n\n        // cluster points on max zoom, then cluster the results on previous zoom, etc.;\n        // results in a cluster hierarchy across zoom levels\n        for (let z = maxZoom; z >= minZoom; z--) {\n            const now = +Date.now();\n\n            // create a new set of clusters for the zoom and index them with a KD-tree\n            tree = this.trees[z] = this._createTree(this._cluster(tree, z));\n\n            if (log) console.log('z%d: %d clusters in %dms', z, tree.numItems, +Date.now() - now);\n        }\n\n        if (log) console.timeEnd('total time');\n\n        return this;\n    }\n\n    getClusters(bbox, zoom) {\n        let minLng = ((bbox[0] + 180) % 360 + 360) % 360 - 180;\n        const minLat = Math.max(-90, Math.min(90, bbox[1]));\n        let maxLng = bbox[2] === 180 ? 180 : ((bbox[2] + 180) % 360 + 360) % 360 - 180;\n        const maxLat = Math.max(-90, Math.min(90, bbox[3]));\n\n        if (bbox[2] - bbox[0] >= 360) {\n            minLng = -180;\n            maxLng = 180;\n        } else if (minLng > maxLng) {\n            const easternHem = this.getClusters([minLng, minLat, 180, maxLat], zoom);\n            const westernHem = this.getClusters([-180, minLat, maxLng, maxLat], zoom);\n            return easternHem.concat(westernHem);\n        }\n\n        const tree = this.trees[this._limitZoom(zoom)];\n        const ids = tree.range(lngX(minLng), latY(maxLat), lngX(maxLng), latY(minLat));\n        const data = tree.data;\n        const clusters = [];\n        for (const id of ids) {\n            const k = this.stride * id;\n            clusters.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]);\n        }\n        return clusters;\n    }\n\n    getChildren(clusterId) {\n        const originId = this._getOriginId(clusterId);\n        const originZoom = this._getOriginZoom(clusterId);\n        const errorMsg = 'No cluster with the specified id.';\n\n        const tree = this.trees[originZoom];\n        if (!tree) throw new Error(errorMsg);\n\n        const data = tree.data;\n        if (originId * this.stride >= data.length) throw new Error(errorMsg);\n\n        const r = this.options.radius / (this.options.extent * Math.pow(2, originZoom - 1));\n        const x = data[originId * this.stride];\n        const y = data[originId * this.stride + 1];\n        const ids = tree.within(x, y, r);\n        const children = [];\n        for (const id of ids) {\n            const k = id * this.stride;\n            if (data[k + OFFSET_PARENT] === clusterId) {\n                children.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]);\n            }\n        }\n\n        if (children.length === 0) throw new Error(errorMsg);\n\n        return children;\n    }\n\n    getLeaves(clusterId, limit, offset) {\n        limit = limit || 10;\n        offset = offset || 0;\n\n        const leaves = [];\n        this._appendLeaves(leaves, clusterId, limit, offset, 0);\n\n        return leaves;\n    }\n\n    getTile(z, x, y) {\n        const tree = this.trees[this._limitZoom(z)];\n        const z2 = Math.pow(2, z);\n        const {extent, radius} = this.options;\n        const p = radius / extent;\n        const top = (y - p) / z2;\n        const bottom = (y + 1 + p) / z2;\n\n        const tile = {\n            features: []\n        };\n\n        this._addTileFeatures(\n            tree.range((x - p) / z2, top, (x + 1 + p) / z2, bottom),\n            tree.data, x, y, z2, tile);\n\n        if (x === 0) {\n            this._addTileFeatures(\n                tree.range(1 - p / z2, top, 1, bottom),\n                tree.data, z2, y, z2, tile);\n        }\n        if (x === z2 - 1) {\n            this._addTileFeatures(\n                tree.range(0, top, p / z2, bottom),\n                tree.data, -1, y, z2, tile);\n        }\n\n        return tile.features.length ? tile : null;\n    }\n\n    getClusterExpansionZoom(clusterId) {\n        let expansionZoom = this._getOriginZoom(clusterId) - 1;\n        while (expansionZoom <= this.options.maxZoom) {\n            const children = this.getChildren(clusterId);\n            expansionZoom++;\n            if (children.length !== 1) break;\n            clusterId = children[0].properties.cluster_id;\n        }\n        return expansionZoom;\n    }\n\n    _appendLeaves(result, clusterId, limit, offset, skipped) {\n        const children = this.getChildren(clusterId);\n\n        for (const child of children) {\n            const props = child.properties;\n\n            if (props && props.cluster) {\n                if (skipped + props.point_count <= offset) {\n                    // skip the whole cluster\n                    skipped += props.point_count;\n                } else {\n                    // enter the cluster\n                    skipped = this._appendLeaves(result, props.cluster_id, limit, offset, skipped);\n                    // exit the cluster\n                }\n            } else if (skipped < offset) {\n                // skip a single point\n                skipped++;\n            } else {\n                // add a single point\n                result.push(child);\n            }\n            if (result.length === limit) break;\n        }\n\n        return skipped;\n    }\n\n    _createTree(data) {\n        const tree = new KDBush(data.length / this.stride | 0, this.options.nodeSize, Float32Array);\n        for (let i = 0; i < data.length; i += this.stride) tree.add(data[i], data[i + 1]);\n        tree.finish();\n        tree.data = data;\n        return tree;\n    }\n\n    _addTileFeatures(ids, data, x, y, z2, tile) {\n        for (const i of ids) {\n            const k = i * this.stride;\n            const isCluster = data[k + OFFSET_NUM] > 1;\n\n            let tags, px, py;\n            if (isCluster) {\n                tags = getClusterProperties(data, k, this.clusterProps);\n                px = data[k];\n                py = data[k + 1];\n            } else {\n                const p = this.points[data[k + OFFSET_ID]];\n                tags = p.properties;\n                const [lng, lat] = p.geometry.coordinates;\n                px = lngX(lng);\n                py = latY(lat);\n            }\n\n            const f = {\n                type: 1,\n                geometry: [[\n                    Math.round(this.options.extent * (px * z2 - x)),\n                    Math.round(this.options.extent * (py * z2 - y))\n                ]],\n                tags\n            };\n\n            // assign id\n            let id;\n            if (isCluster || this.options.generateId) {\n                // optionally generate id for points\n                id = data[k + OFFSET_ID];\n            } else {\n                // keep id if already assigned\n                id = this.points[data[k + OFFSET_ID]].id;\n            }\n\n            if (id !== undefined) f.id = id;\n\n            tile.features.push(f);\n        }\n    }\n\n    _limitZoom(z) {\n        return Math.max(this.options.minZoom, Math.min(Math.floor(+z), this.options.maxZoom + 1));\n    }\n\n    _cluster(tree, zoom) {\n        const {radius, extent, reduce, minPoints} = this.options;\n        const r = radius / (extent * Math.pow(2, zoom));\n        const data = tree.data;\n        const nextData = [];\n        const stride = this.stride;\n\n        // loop through each point\n        for (let i = 0; i < data.length; i += stride) {\n            // if we've already visited the point at this zoom level, skip it\n            if (data[i + OFFSET_ZOOM] <= zoom) continue;\n            data[i + OFFSET_ZOOM] = zoom;\n\n            // find all nearby points\n            const x = data[i];\n            const y = data[i + 1];\n            const neighborIds = tree.within(data[i], data[i + 1], r);\n\n            const numPointsOrigin = data[i + OFFSET_NUM];\n            let numPoints = numPointsOrigin;\n\n            // count the number of points in a potential cluster\n            for (const neighborId of neighborIds) {\n                const k = neighborId * stride;\n                // filter out neighbors that are already processed\n                if (data[k + OFFSET_ZOOM] > zoom) numPoints += data[k + OFFSET_NUM];\n            }\n\n            // if there were neighbors to merge, and there are enough points to form a cluster\n            if (numPoints > numPointsOrigin && numPoints >= minPoints) {\n                let wx = x * numPointsOrigin;\n                let wy = y * numPointsOrigin;\n\n                let clusterProperties;\n                let clusterPropIndex = -1;\n\n                // encode both zoom and point index on which the cluster originated -- offset by total length of features\n                const id = ((i / stride | 0) << 5) + (zoom + 1) + this.points.length;\n\n                for (const neighborId of neighborIds) {\n                    const k = neighborId * stride;\n\n                    if (data[k + OFFSET_ZOOM] <= zoom) continue;\n                    data[k + OFFSET_ZOOM] = zoom; // save the zoom (so it doesn't get processed twice)\n\n                    const numPoints2 = data[k + OFFSET_NUM];\n                    wx += data[k] * numPoints2; // accumulate coordinates for calculating weighted center\n                    wy += data[k + 1] * numPoints2;\n\n                    data[k + OFFSET_PARENT] = id;\n\n                    if (reduce) {\n                        if (!clusterProperties) {\n                            clusterProperties = this._map(data, i, true);\n                            clusterPropIndex = this.clusterProps.length;\n                            this.clusterProps.push(clusterProperties);\n                        }\n                        reduce(clusterProperties, this._map(data, k));\n                    }\n                }\n\n                data[i + OFFSET_PARENT] = id;\n                nextData.push(wx / numPoints, wy / numPoints, Infinity, id, -1, numPoints);\n                if (reduce) nextData.push(clusterPropIndex);\n\n            } else { // left points as unclustered\n                for (let j = 0; j < stride; j++) nextData.push(data[i + j]);\n\n                if (numPoints > 1) {\n                    for (const neighborId of neighborIds) {\n                        const k = neighborId * stride;\n                        if (data[k + OFFSET_ZOOM] <= zoom) continue;\n                        data[k + OFFSET_ZOOM] = zoom;\n                        for (let j = 0; j < stride; j++) nextData.push(data[k + j]);\n                    }\n                }\n            }\n        }\n\n        return nextData;\n    }\n\n    // get index of the point from which the cluster originated\n    _getOriginId(clusterId) {\n        return (clusterId - this.points.length) >> 5;\n    }\n\n    // get zoom of the point from which the cluster originated\n    _getOriginZoom(clusterId) {\n        return (clusterId - this.points.length) % 32;\n    }\n\n    _map(data, i, clone) {\n        if (data[i + OFFSET_NUM] > 1) {\n            const props = this.clusterProps[data[i + OFFSET_PROP]];\n            return clone ? Object.assign({}, props) : props;\n        }\n        const original = this.points[data[i + OFFSET_ID]].properties;\n        const result = this.options.map(original);\n        return clone && result === original ? Object.assign({}, result) : result;\n    }\n}\n\nfunction getClusterJSON(data, i, clusterProps) {\n    return {\n        type: 'Feature',\n        id: data[i + OFFSET_ID],\n        properties: getClusterProperties(data, i, clusterProps),\n        geometry: {\n            type: 'Point',\n            coordinates: [xLng(data[i]), yLat(data[i + 1])]\n        }\n    };\n}\n\nfunction getClusterProperties(data, i, clusterProps) {\n    const count = data[i + OFFSET_NUM];\n    const abbrev =\n        count >= 10000 ? `${Math.round(count / 1000)  }k` :\n        count >= 1000 ? `${Math.round(count / 100) / 10  }k` : count;\n    const propIndex = data[i + OFFSET_PROP];\n    const properties = propIndex === -1 ? {} : Object.assign({}, clusterProps[propIndex]);\n    return Object.assign(properties, {\n        cluster: true,\n        cluster_id: data[i + OFFSET_ID],\n        point_count: count,\n        point_count_abbreviated: abbrev\n    });\n}\n\n// longitude/latitude to spherical mercator in [0..1] range\nfunction lngX(lng) {\n    return lng / 360 + 0.5;\n}\nfunction latY(lat) {\n    const sin = Math.sin(lat * Math.PI / 180);\n    const y = (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI);\n    return y < 0 ? 0 : y > 1 ? 1 : y;\n}\n\n// spherical mercator to longitude/latitude\nfunction xLng(x) {\n    return (x - 0.5) * 360;\n}\nfunction yLat(y) {\n    const y2 = (180 - y * 360) * Math.PI / 180;\n    return 360 * Math.atan(Math.exp(y2)) / Math.PI - 90;\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AbstractAlgorithm, AlgorithmInput, AlgorithmOutput } from \"./core\";\nimport SuperCluster, { ClusterFeature } from \"supercluster\";\nimport { MarkerUtils, Marker } from \"../marker-utils\";\nimport { Cluster } from \"../cluster\";\nimport equal from \"fast-deep-equal\";\n\nexport type SuperClusterOptions = SuperCluster.Options<\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  { [name: string]: any },\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  { [name: string]: any }\n>;\n\n/**\n * A very fast JavaScript algorithm for geospatial point clustering using KD trees.\n *\n * @see https://www.npmjs.com/package/supercluster for more information on options.\n */\nexport class SuperClusterAlgorithm extends AbstractAlgorithm {\n  protected superCluster: SuperCluster;\n  protected markers: Marker[];\n  protected clusters: Cluster[];\n  protected state = { zoom: -1 };\n\n  constructor({ maxZoom, radius = 60, ...options }: SuperClusterOptions) {\n    super({ maxZoom });\n\n    this.superCluster = new SuperCluster({\n      maxZoom: this.maxZoom,\n      radius,\n      ...options,\n    });\n  }\n\n  public calculate(input: AlgorithmInput): AlgorithmOutput {\n    let changed = false;\n    const state = { zoom: input.map.getZoom() };\n\n    if (!equal(input.markers, this.markers)) {\n      changed = true;\n      // TODO use proxy to avoid copy?\n      this.markers = [...input.markers];\n\n      const points = this.markers.map((marker) => {\n        const position = MarkerUtils.getPosition(marker);\n        const coordinates = [position.lng(), position.lat()];\n        return {\n          type: \"Feature\" as const,\n          geometry: {\n            type: \"Point\" as const,\n            coordinates,\n          },\n          properties: { marker },\n        };\n      });\n      this.superCluster.load(points);\n    }\n\n    if (!changed) {\n      if (this.state.zoom <= this.maxZoom || state.zoom <= this.maxZoom) {\n        changed = !equal(this.state, state);\n      }\n    }\n\n    this.state = state;\n\n    if (changed) {\n      this.clusters = this.cluster(input);\n    }\n\n    return { clusters: this.clusters, changed };\n  }\n\n  public cluster({ map }: AlgorithmInput): Cluster[] {\n    return this.superCluster\n      .getClusters([-180, -90, 180, 90], Math.round(map.getZoom()))\n      .map((feature: ClusterFeature<{ marker: Marker }>) =>\n        this.transformCluster(feature)\n      );\n  }\n\n  protected transformCluster({\n    geometry: {\n      coordinates: [lng, lat],\n    },\n    properties,\n  }: ClusterFeature<{ marker: Marker }>): Cluster {\n    if (properties.cluster) {\n      return new Cluster({\n        markers: this.superCluster\n          .getLeaves(properties.cluster_id, Infinity)\n          .map((leaf) => leaf.properties.marker),\n        position: { lat, lng },\n      });\n    }\n\n    const marker = properties.marker;\n\n    return new Cluster({\n      markers: [marker],\n      position: MarkerUtils.getPosition(marker),\n    });\n  }\n}\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n  defineProperty(ArrayPrototype, UNSCOPABLES, {\n    configurable: true,\n    value: create(null)\n  });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n  ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar fails = require('../internals/fails');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// FF99+ bug\nvar BROKEN_ON_SPARSE = fails(function () {\n  // eslint-disable-next-line es/no-array-prototype-includes -- detection\n  return !Array(1).includes();\n});\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {\n  includes: function includes(el /* , fromIndex = 0 */) {\n    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","var isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\n// `IsRegExp` abstract operation\n// https://tc39.es/ecma262/#sec-isregexp\nmodule.exports = function (it) {\n  var isRegExp;\n  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) == 'RegExp');\n};\n","var isRegExp = require('../internals/is-regexp');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it) {\n  if (isRegExp(it)) {\n    throw $TypeError(\"The method doesn't accept regular expressions\");\n  } return it;\n};\n","var classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n  var regexp = /./;\n  try {\n    '/./'[METHOD_NAME](regexp);\n  } catch (error1) {\n    try {\n      regexp[MATCH] = false;\n      return '/./'[METHOD_NAME](regexp);\n    } catch (error2) { /* empty */ }\n  } return false;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\nvar stringIndexOf = uncurryThis(''.indexOf);\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n  includes: function includes(searchString /* , position = 0 */) {\n    return !!~stringIndexOf(\n      toString(requireObjectCoercible(this)),\n      toString(notARegExp(searchString)),\n      arguments.length > 1 ? arguments[1] : undefined\n    );\n  }\n});\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n    var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n    return NEGATIVE_ZERO\n      // convert -0 to +0\n      ? nativeIndexOf(this, searchElement, fromIndex) || 0\n      : $indexOf(this, searchElement, fromIndex);\n  }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n  // makes no sense without proper strict mode support\n  if (this !== undefined) return true;\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n    throw $TypeError('Cannot set read only .length');\n  } return O.length = length;\n} : function (O, length) {\n  return O.length = length;\n};\n","var $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n  return it;\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  var propertyKey = toPropertyKey(key);\n  if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n  else object[propertyKey] = value;\n};\n","'use strict';\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (O, P) {\n  if (!delete O[P]) throw $TypeError('Cannot delete property ' + tryToString(P) + ' of ' + tryToString(O));\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar createProperty = require('../internals/create-property');\nvar deletePropertyOrThrow = require('../internals/delete-property-or-throw');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// `Array.prototype.splice` method\n// https://tc39.es/ecma262/#sec-array.prototype.splice\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  splice: function splice(start, deleteCount /* , ...items */) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var actualStart = toAbsoluteIndex(start, len);\n    var argumentsLength = arguments.length;\n    var insertCount, actualDeleteCount, A, k, from, to;\n    if (argumentsLength === 0) {\n      insertCount = actualDeleteCount = 0;\n    } else if (argumentsLength === 1) {\n      insertCount = 0;\n      actualDeleteCount = len - actualStart;\n    } else {\n      insertCount = argumentsLength - 2;\n      actualDeleteCount = min(max(toIntegerOrInfinity(deleteCount), 0), len - actualStart);\n    }\n    doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);\n    A = arraySpeciesCreate(O, actualDeleteCount);\n    for (k = 0; k < actualDeleteCount; k++) {\n      from = actualStart + k;\n      if (from in O) createProperty(A, k, O[from]);\n    }\n    A.length = actualDeleteCount;\n    if (insertCount < actualDeleteCount) {\n      for (k = actualStart; k < len - actualDeleteCount; k++) {\n        from = k + actualDeleteCount;\n        to = k + insertCount;\n        if (from in O) O[to] = O[from];\n        else deletePropertyOrThrow(O, to);\n      }\n      for (k = len; k > len - actualDeleteCount + insertCount; k--) deletePropertyOrThrow(O, k - 1);\n    } else if (insertCount > actualDeleteCount) {\n      for (k = len - actualDeleteCount; k > actualStart; k--) {\n        from = k + actualDeleteCount - 1;\n        to = k + insertCount - 1;\n        if (from in O) O[to] = O[from];\n        else deletePropertyOrThrow(O, to);\n      }\n    }\n    for (k = 0; k < insertCount; k++) {\n      O[k + actualStart] = arguments[k + 2];\n    }\n    setArrayLength(O, len - actualDeleteCount + insertCount);\n    return A;\n  }\n});\n","module.exports = {};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof $Object ? ObjectPrototype : null;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n  if (target && !STATIC) target = target.prototype;\n  if (target && !hasOwn(target, TO_STRING_TAG)) {\n    defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n  }\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n  var TO_STRING_TAG = NAME + ' Iterator';\n  IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n  setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n  Iterators[TO_STRING_TAG] = returnThis;\n  return IteratorConstructor;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n  } catch (error) { /* empty */ }\n};\n","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (typeof argument == 'object' || isCallable(argument)) return argument;\n  throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n  createIteratorConstructor(IteratorConstructor, NAME, next);\n\n  var getIterationMethod = function (KIND) {\n    if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n    if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n    switch (KIND) {\n      case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n      case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n      case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n    } return function () { return new IteratorConstructor(this); };\n  };\n\n  var TO_STRING_TAG = NAME + ' Iterator';\n  var INCORRECT_VALUES_NAME = false;\n  var IterablePrototype = Iterable.prototype;\n  var nativeIterator = IterablePrototype[ITERATOR]\n    || IterablePrototype['@@iterator']\n    || DEFAULT && IterablePrototype[DEFAULT];\n  var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n  var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n  var CurrentIteratorPrototype, methods, KEY;\n\n  // fix native\n  if (anyNativeIterator) {\n    CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n    if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n      if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n        if (setPrototypeOf) {\n          setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n        } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n          defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n        }\n      }\n      // Set @@toStringTag to native iterators\n      setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n      if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n    }\n  }\n\n  // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n  if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n    if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n      createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n    } else {\n      INCORRECT_VALUES_NAME = true;\n      defaultIterator = function values() { return call(nativeIterator, this); };\n    }\n  }\n\n  // export additional methods\n  if (DEFAULT) {\n    methods = {\n      values: getIterationMethod(VALUES),\n      keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n      entries: getIterationMethod(ENTRIES)\n    };\n    if (FORCED) for (KEY in methods) {\n      if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n        defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n      }\n    } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n  }\n\n  // define iterator\n  if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n    defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n  }\n  Iterators[NAME] = defaultIterator;\n\n  return methods;\n};\n","// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n  setInternalState(this, {\n    type: ARRAY_ITERATOR,\n    target: toIndexedObject(iterated), // target\n    index: 0,                          // next index\n    kind: kind                         // kind\n  });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n  var state = getInternalState(this);\n  var target = state.target;\n  var kind = state.kind;\n  var index = state.index++;\n  if (!target || index >= target.length) {\n    state.target = undefined;\n    return createIterResultObject(undefined, true);\n  }\n  if (kind == 'keys') return createIterResultObject(index, false);\n  if (kind == 'values') return createIterResultObject(target[index], false);\n  return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n  defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","var toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar createProperty = require('../internals/create-property');\n\nvar $Array = Array;\nvar max = Math.max;\n\nmodule.exports = function (O, start, end) {\n  var length = lengthOfArrayLike(O);\n  var k = toAbsoluteIndex(start, length);\n  var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n  var result = $Array(max(fin - k, 0));\n  for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);\n  result.length = n;\n  return result;\n};\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar classof = require('../internals/classof-raw');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar arraySlice = require('../internals/array-slice-simple');\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n  ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n  try {\n    return $getOwnPropertyNames(it);\n  } catch (error) {\n    return arraySlice(windowNames);\n  }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n  return windowNames && classof(it) == 'Window'\n    ? getWindowNames(it)\n    : $getOwnPropertyNames(toIndexedObject(it));\n};\n","// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n  if (typeof ArrayBuffer == 'function') {\n    var buffer = new ArrayBuffer(8);\n    // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe\n    if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n  }\n});\n","var fails = require('../internals/fails');\nvar isObject = require('../internals/is-object');\nvar classof = require('../internals/classof-raw');\nvar ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');\n\n// eslint-disable-next-line es/no-object-isextensible -- safe\nvar $isExtensible = Object.isExtensible;\nvar FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });\n\n// `Object.isExtensible` method\n// https://tc39.es/ecma262/#sec-object.isextensible\nmodule.exports = (FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE) ? function isExtensible(it) {\n  if (!isObject(it)) return false;\n  if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return false;\n  return $isExtensible ? $isExtensible(it) : true;\n} : $isExtensible;\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-isextensible, es/no-object-preventextensions -- required for testing\n  return Object.isExtensible(Object.preventExtensions({}));\n});\n","var $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n  defineProperty(it, METADATA, { value: {\n    objectID: 'O' + id++, // object ID\n    weakData: {}          // weak collections IDs\n  } });\n};\n\nvar fastKey = function (it, create) {\n  // return a primitive with prefix\n  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return 'F';\n    // not necessary to add metadata\n    if (!create) return 'E';\n    // add missing metadata\n    setMetadata(it);\n  // return object ID\n  } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n  if (!hasOwn(it, METADATA)) {\n    // can't set metadata to uncaught frozen object\n    if (!isExtensible(it)) return true;\n    // not necessary to add metadata\n    if (!create) return false;\n    // add missing metadata\n    setMetadata(it);\n  // return the store of weak collections IDs\n  } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n  if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n  return it;\n};\n\nvar enable = function () {\n  meta.enable = function () { /* empty */ };\n  REQUIRED = true;\n  var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n  var splice = uncurryThis([].splice);\n  var test = {};\n  test[METADATA] = 1;\n\n  // prevent exposing of metadata key\n  if (getOwnPropertyNames(test).length) {\n    getOwnPropertyNamesModule.f = function (it) {\n      var result = getOwnPropertyNames(it);\n      for (var i = 0, length = result.length; i < length; i++) {\n        if (result[i] === METADATA) {\n          splice(result, i, 1);\n          break;\n        }\n      } return result;\n    };\n\n    $({ target: 'Object', stat: true, forced: true }, {\n      getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n    });\n  }\n};\n\nvar meta = module.exports = {\n  enable: enable,\n  fastKey: fastKey,\n  getWeakData: getWeakData,\n  onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n    || getMethod(it, '@@iterator')\n    || Iterators[classof(it)];\n};\n","var call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n  throw $TypeError(tryToString(argument) + ' is not iterable');\n};\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n","var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n  this.stopped = stopped;\n  this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n  var that = options && options.that;\n  var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n  var IS_RECORD = !!(options && options.IS_RECORD);\n  var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n  var INTERRUPTED = !!(options && options.INTERRUPTED);\n  var fn = bind(unboundFunction, that);\n  var iterator, iterFn, index, length, result, next, step;\n\n  var stop = function (condition) {\n    if (iterator) iteratorClose(iterator, 'normal', condition);\n    return new Result(true, condition);\n  };\n\n  var callFn = function (value) {\n    if (AS_ENTRIES) {\n      anObject(value);\n      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n    } return INTERRUPTED ? fn(value, stop) : fn(value);\n  };\n\n  if (IS_RECORD) {\n    iterator = iterable.iterator;\n  } else if (IS_ITERATOR) {\n    iterator = iterable;\n  } else {\n    iterFn = getIteratorMethod(iterable);\n    if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n    // optimisation for array iterators\n    if (isArrayIteratorMethod(iterFn)) {\n      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n        result = callFn(iterable[index]);\n        if (result && isPrototypeOf(ResultPrototype, result)) return result;\n      } return new Result(false);\n    }\n    iterator = getIterator(iterable, iterFn);\n  }\n\n  next = IS_RECORD ? iterable.next : iterator.next;\n  while (!(step = call(next, iterator)).done) {\n    try {\n      result = callFn(step.value);\n    } catch (error) {\n      iteratorClose(iterator, 'throw', error);\n    }\n    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n  } return new Result(false);\n};\n","var isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw $TypeError('Incorrect invocation');\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n  var called = 0;\n  var iteratorWithReturn = {\n    next: function () {\n      return { done: !!called++ };\n    },\n    'return': function () {\n      SAFE_CLOSING = true;\n    }\n  };\n  iteratorWithReturn[ITERATOR] = function () {\n    return this;\n  };\n  // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n  Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n  if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n  var ITERATION_SUPPORT = false;\n  try {\n    var object = {};\n    object[ITERATOR] = function () {\n      return {\n        next: function () {\n          return { done: ITERATION_SUPPORT = true };\n        }\n      };\n    };\n    exec(object);\n  } catch (error) { /* empty */ }\n  return ITERATION_SUPPORT;\n};\n","var isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    isCallable(NewTarget = dummy.constructor) &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar InternalMetadataModule = require('../internals/internal-metadata');\nvar iterate = require('../internals/iterate');\nvar anInstance = require('../internals/an-instance');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar isObject = require('../internals/is-object');\nvar fails = require('../internals/fails');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar inheritIfRequired = require('../internals/inherit-if-required');\n\nmodule.exports = function (CONSTRUCTOR_NAME, wrapper, common) {\n  var IS_MAP = CONSTRUCTOR_NAME.indexOf('Map') !== -1;\n  var IS_WEAK = CONSTRUCTOR_NAME.indexOf('Weak') !== -1;\n  var ADDER = IS_MAP ? 'set' : 'add';\n  var NativeConstructor = global[CONSTRUCTOR_NAME];\n  var NativePrototype = NativeConstructor && NativeConstructor.prototype;\n  var Constructor = NativeConstructor;\n  var exported = {};\n\n  var fixMethod = function (KEY) {\n    var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);\n    defineBuiltIn(NativePrototype, KEY,\n      KEY == 'add' ? function add(value) {\n        uncurriedNativeMethod(this, value === 0 ? 0 : value);\n        return this;\n      } : KEY == 'delete' ? function (key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY == 'get' ? function get(key) {\n        return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : KEY == 'has' ? function has(key) {\n        return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);\n      } : function set(key, value) {\n        uncurriedNativeMethod(this, key === 0 ? 0 : key, value);\n        return this;\n      }\n    );\n  };\n\n  var REPLACE = isForced(\n    CONSTRUCTOR_NAME,\n    !isCallable(NativeConstructor) || !(IS_WEAK || NativePrototype.forEach && !fails(function () {\n      new NativeConstructor().entries().next();\n    }))\n  );\n\n  if (REPLACE) {\n    // create collection constructor\n    Constructor = common.getConstructor(wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER);\n    InternalMetadataModule.enable();\n  } else if (isForced(CONSTRUCTOR_NAME, true)) {\n    var instance = new Constructor();\n    // early implementations not supports chaining\n    var HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance;\n    // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false\n    var THROWS_ON_PRIMITIVES = fails(function () { instance.has(1); });\n    // most early implementations doesn't supports iterables, most modern - not close it correctly\n    // eslint-disable-next-line no-new -- required for testing\n    var ACCEPT_ITERABLES = checkCorrectnessOfIteration(function (iterable) { new NativeConstructor(iterable); });\n    // for early implementations -0 and +0 not the same\n    var BUGGY_ZERO = !IS_WEAK && fails(function () {\n      // V8 ~ Chromium 42- fails only with 5+ elements\n      var $instance = new NativeConstructor();\n      var index = 5;\n      while (index--) $instance[ADDER](index, index);\n      return !$instance.has(-0);\n    });\n\n    if (!ACCEPT_ITERABLES) {\n      Constructor = wrapper(function (dummy, iterable) {\n        anInstance(dummy, NativePrototype);\n        var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);\n        if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n        return that;\n      });\n      Constructor.prototype = NativePrototype;\n      NativePrototype.constructor = Constructor;\n    }\n\n    if (THROWS_ON_PRIMITIVES || BUGGY_ZERO) {\n      fixMethod('delete');\n      fixMethod('has');\n      IS_MAP && fixMethod('get');\n    }\n\n    if (BUGGY_ZERO || HASNT_CHAINING) fixMethod(ADDER);\n\n    // weak collections should not contains .clear method\n    if (IS_WEAK && NativePrototype.clear) delete NativePrototype.clear;\n  }\n\n  exported[CONSTRUCTOR_NAME] = Constructor;\n  $({ global: true, constructor: true, forced: Constructor != NativeConstructor }, exported);\n\n  setToStringTag(Constructor, CONSTRUCTOR_NAME);\n\n  if (!IS_WEAK) common.setStrong(Constructor, CONSTRUCTOR_NAME, IS_MAP);\n\n  return Constructor;\n};\n","var makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n","var defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\n  return target;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n  var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\n  if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n    defineBuiltInAccessor(Constructor, SPECIES, {\n      configurable: true,\n      get: function () { return this; }\n    });\n  }\n};\n","'use strict';\nvar create = require('../internals/object-create');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar bind = require('../internals/function-bind-context');\nvar anInstance = require('../internals/an-instance');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar iterate = require('../internals/iterate');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar setSpecies = require('../internals/set-species');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fastKey = require('../internals/internal-metadata').fastKey;\nvar InternalStateModule = require('../internals/internal-state');\n\nvar setInternalState = InternalStateModule.set;\nvar internalStateGetterFor = InternalStateModule.getterFor;\n\nmodule.exports = {\n  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {\n    var Constructor = wrapper(function (that, iterable) {\n      anInstance(that, Prototype);\n      setInternalState(that, {\n        type: CONSTRUCTOR_NAME,\n        index: create(null),\n        first: undefined,\n        last: undefined,\n        size: 0\n      });\n      if (!DESCRIPTORS) that.size = 0;\n      if (!isNullOrUndefined(iterable)) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });\n    });\n\n    var Prototype = Constructor.prototype;\n\n    var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);\n\n    var define = function (that, key, value) {\n      var state = getInternalState(that);\n      var entry = getEntry(that, key);\n      var previous, index;\n      // change existing entry\n      if (entry) {\n        entry.value = value;\n      // create new entry\n      } else {\n        state.last = entry = {\n          index: index = fastKey(key, true),\n          key: key,\n          value: value,\n          previous: previous = state.last,\n          next: undefined,\n          removed: false\n        };\n        if (!state.first) state.first = entry;\n        if (previous) previous.next = entry;\n        if (DESCRIPTORS) state.size++;\n        else that.size++;\n        // add to index\n        if (index !== 'F') state.index[index] = entry;\n      } return that;\n    };\n\n    var getEntry = function (that, key) {\n      var state = getInternalState(that);\n      // fast case\n      var index = fastKey(key);\n      var entry;\n      if (index !== 'F') return state.index[index];\n      // frozen object case\n      for (entry = state.first; entry; entry = entry.next) {\n        if (entry.key == key) return entry;\n      }\n    };\n\n    defineBuiltIns(Prototype, {\n      // `{ Map, Set }.prototype.clear()` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.clear\n      // https://tc39.es/ecma262/#sec-set.prototype.clear\n      clear: function clear() {\n        var that = this;\n        var state = getInternalState(that);\n        var data = state.index;\n        var entry = state.first;\n        while (entry) {\n          entry.removed = true;\n          if (entry.previous) entry.previous = entry.previous.next = undefined;\n          delete data[entry.index];\n          entry = entry.next;\n        }\n        state.first = state.last = undefined;\n        if (DESCRIPTORS) state.size = 0;\n        else that.size = 0;\n      },\n      // `{ Map, Set }.prototype.delete(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.delete\n      // https://tc39.es/ecma262/#sec-set.prototype.delete\n      'delete': function (key) {\n        var that = this;\n        var state = getInternalState(that);\n        var entry = getEntry(that, key);\n        if (entry) {\n          var next = entry.next;\n          var prev = entry.previous;\n          delete state.index[entry.index];\n          entry.removed = true;\n          if (prev) prev.next = next;\n          if (next) next.previous = prev;\n          if (state.first == entry) state.first = next;\n          if (state.last == entry) state.last = prev;\n          if (DESCRIPTORS) state.size--;\n          else that.size--;\n        } return !!entry;\n      },\n      // `{ Map, Set }.prototype.forEach(callbackfn, thisArg = undefined)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.foreach\n      // https://tc39.es/ecma262/#sec-set.prototype.foreach\n      forEach: function forEach(callbackfn /* , that = undefined */) {\n        var state = getInternalState(this);\n        var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n        var entry;\n        while (entry = entry ? entry.next : state.first) {\n          boundFunction(entry.value, entry.key, this);\n          // revert to the last existing entry\n          while (entry && entry.removed) entry = entry.previous;\n        }\n      },\n      // `{ Map, Set}.prototype.has(key)` methods\n      // https://tc39.es/ecma262/#sec-map.prototype.has\n      // https://tc39.es/ecma262/#sec-set.prototype.has\n      has: function has(key) {\n        return !!getEntry(this, key);\n      }\n    });\n\n    defineBuiltIns(Prototype, IS_MAP ? {\n      // `Map.prototype.get(key)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.get\n      get: function get(key) {\n        var entry = getEntry(this, key);\n        return entry && entry.value;\n      },\n      // `Map.prototype.set(key, value)` method\n      // https://tc39.es/ecma262/#sec-map.prototype.set\n      set: function set(key, value) {\n        return define(this, key === 0 ? 0 : key, value);\n      }\n    } : {\n      // `Set.prototype.add(value)` method\n      // https://tc39.es/ecma262/#sec-set.prototype.add\n      add: function add(value) {\n        return define(this, value = value === 0 ? 0 : value, value);\n      }\n    });\n    if (DESCRIPTORS) defineBuiltInAccessor(Prototype, 'size', {\n      configurable: true,\n      get: function () {\n        return getInternalState(this).size;\n      }\n    });\n    return Constructor;\n  },\n  setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {\n    var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';\n    var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);\n    var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);\n    // `{ Map, Set }.prototype.{ keys, values, entries, @@iterator }()` methods\n    // https://tc39.es/ecma262/#sec-map.prototype.entries\n    // https://tc39.es/ecma262/#sec-map.prototype.keys\n    // https://tc39.es/ecma262/#sec-map.prototype.values\n    // https://tc39.es/ecma262/#sec-map.prototype-@@iterator\n    // https://tc39.es/ecma262/#sec-set.prototype.entries\n    // https://tc39.es/ecma262/#sec-set.prototype.keys\n    // https://tc39.es/ecma262/#sec-set.prototype.values\n    // https://tc39.es/ecma262/#sec-set.prototype-@@iterator\n    defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {\n      setInternalState(this, {\n        type: ITERATOR_NAME,\n        target: iterated,\n        state: getInternalCollectionState(iterated),\n        kind: kind,\n        last: undefined\n      });\n    }, function () {\n      var state = getInternalIteratorState(this);\n      var kind = state.kind;\n      var entry = state.last;\n      // revert to the last existing entry\n      while (entry && entry.removed) entry = entry.previous;\n      // get next entry\n      if (!state.target || !(state.last = entry = entry ? entry.next : state.state.first)) {\n        // or finish the iteration\n        state.target = undefined;\n        return createIterResultObject(undefined, true);\n      }\n      // return step by kind\n      if (kind == 'keys') return createIterResultObject(entry.key, false);\n      if (kind == 'values') return createIterResultObject(entry.value, false);\n      return createIterResultObject([entry.key, entry.value], false);\n    }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n    // `{ Map, Set }.prototype[@@species]` accessors\n    // https://tc39.es/ecma262/#sec-get-map-@@species\n    // https://tc39.es/ecma262/#sec-get-set-@@species\n    setSpecies(CONSTRUCTOR_NAME);\n  }\n};\n","'use strict';\nvar collection = require('../internals/collection');\nvar collectionStrong = require('../internals/collection-strong');\n\n// `Set` constructor\n// https://tc39.es/ecma262/#sec-set-objects\ncollection('Set', function (init) {\n  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };\n}, collectionStrong);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n  setInternalState(this, {\n    type: STRING_ITERATOR,\n    string: toString(iterated),\n    index: 0\n  });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n  var state = getInternalState(this);\n  var string = state.string;\n  var index = state.index;\n  var point;\n  if (index >= string.length) return createIterResultObject(undefined, true);\n  point = charAt(string, index);\n  state.index += point.length;\n  return createIterResultObject(point, false);\n});\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n  if (CollectionPrototype) {\n    // some Chrome versions have non-configurable methods on DOMTokenList\n    if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n      createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n    } catch (error) {\n      CollectionPrototype[ITERATOR] = ArrayValues;\n    }\n    if (!CollectionPrototype[TO_STRING_TAG]) {\n      createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n    }\n    if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n      // some Chrome versions have non-configurable methods on DOMTokenList\n      if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n        createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n      } catch (error) {\n        CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n      }\n    }\n  }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n  handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","var aCallable = require('../internals/a-callable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\nvar $TypeError = TypeError;\n\n// `Array.prototype.{ reduce, reduceRight }` methods implementation\nvar createMethod = function (IS_RIGHT) {\n  return function (that, callbackfn, argumentsLength, memo) {\n    aCallable(callbackfn);\n    var O = toObject(that);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(O);\n    var index = IS_RIGHT ? length - 1 : 0;\n    var i = IS_RIGHT ? -1 : 1;\n    if (argumentsLength < 2) while (true) {\n      if (index in self) {\n        memo = self[index];\n        index += i;\n        break;\n      }\n      index += i;\n      if (IS_RIGHT ? index < 0 : length <= index) {\n        throw $TypeError('Reduce of empty array with no initial value');\n      }\n    }\n    for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {\n      memo = callbackfn(memo, self[index], index, O);\n    }\n    return memo;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.reduce` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduce\n  left: createMethod(false),\n  // `Array.prototype.reduceRight` method\n  // https://tc39.es/ecma262/#sec-array.prototype.reduceright\n  right: createMethod(true)\n};\n","var classof = require('../internals/classof-raw');\n\nmodule.exports = typeof process != 'undefined' && classof(process) == 'process';\n","'use strict';\nvar $ = require('../internals/export');\nvar $reduce = require('../internals/array-reduce').left;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar CHROME_VERSION = require('../internals/engine-v8-version');\nvar IS_NODE = require('../internals/engine-is-node');\n\n// Chrome 80-82 has a critical bug\n// https://bugs.chromium.org/p/chromium/issues/detail?id=1049982\nvar CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;\nvar FORCED = CHROME_BUG || !arrayMethodIsStrict('reduce');\n\n// `Array.prototype.reduce` method\n// https://tc39.es/ecma262/#sec-array.prototype.reduce\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  reduce: function reduce(callbackfn /* , initialValue */) {\n    var length = arguments.length;\n    return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);\n  }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = lengthOfArrayLike(E);\n        doesNotExceedSafeInteger(n + len);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        doesNotExceedSafeInteger(n + 1);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar replace = uncurryThis(''.replace);\nvar ltrim = RegExp('^[' + whitespaces + ']+');\nvar rtrim = RegExp('(^|[^' + whitespaces + '])[' + whitespaces + ']+$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n  return function ($this) {\n    var string = toString(requireObjectCoercible($this));\n    if (TYPE & 1) string = replace(string, ltrim, '');\n    if (TYPE & 2) string = replace(string, rtrim, '$1');\n    return string;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.{ trimLeft, trimStart }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n  start: createMethod(1),\n  // `String.prototype.{ trimRight, trimEnd }` methods\n  // https://tc39.es/ecma262/#sec-string.prototype.trimend\n  end: createMethod(2),\n  // `String.prototype.trim` method\n  // https://tc39.es/ecma262/#sec-string.prototype.trim\n  trim: createMethod(3)\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n  '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar path = require('../internals/path');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isForced = require('../internals/is-forced');\nvar hasOwn = require('../internals/has-own-property');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar isSymbol = require('../internals/is-symbol');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar thisNumberValue = require('../internals/this-number-value');\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar PureNumberNamespace = path[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\nvar TypeError = global.TypeError;\nvar stringSlice = uncurryThis(''.slice);\nvar charCodeAt = uncurryThis(''.charCodeAt);\n\n// `ToNumeric` abstract operation\n// https://tc39.es/ecma262/#sec-tonumeric\nvar toNumeric = function (value) {\n  var primValue = toPrimitive(value, 'number');\n  return typeof primValue == 'bigint' ? primValue : toNumber(primValue);\n};\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n  var it = toPrimitive(argument, 'number');\n  var first, third, radix, maxCode, digits, length, index, code;\n  if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');\n  if (typeof it == 'string' && it.length > 2) {\n    it = trim(it);\n    first = charCodeAt(it, 0);\n    if (first === 43 || first === 45) {\n      third = charCodeAt(it, 2);\n      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n    } else if (first === 48) {\n      switch (charCodeAt(it, 1)) {\n        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n        default: return +it;\n      }\n      digits = stringSlice(it, 2);\n      length = digits.length;\n      for (index = 0; index < length; index++) {\n        code = charCodeAt(digits, index);\n        // parseInt parses a string to a first unavailable symbol\n        // but ToNumber should return NaN if a string contains unavailable symbols\n        if (code < 48 || code > maxCode) return NaN;\n      } return parseInt(digits, radix);\n    }\n  } return +it;\n};\n\nvar FORCED = isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'));\n\nvar calledWithNew = function (dummy) {\n  // includes check on 1..constructor(foo) case\n  return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); });\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nvar NumberWrapper = function Number(value) {\n  var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));\n  return calledWithNew(this) ? inheritIfRequired(Object(n), this, NumberWrapper) : n;\n};\n\nNumberWrapper.prototype = NumberPrototype;\nif (FORCED && !IS_PURE) NumberPrototype.constructor = NumberWrapper;\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED }, {\n  Number: NumberWrapper\n});\n\n// Use `internal/copy-constructor-properties` helper in `core-js@4`\nvar copyConstructorProperties = function (target, source) {\n  for (var keys = DESCRIPTORS ? getOwnPropertyNames(source) : (\n    // ES3:\n    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n    // ES2015 (in case, if modules with ES2015 Number statics required before):\n    'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +\n    // ESNext\n    'fromString,range'\n  ).split(','), j = 0, key; keys.length > j; j++) {\n    if (hasOwn(source, key = keys[j]) && !hasOwn(target, key)) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n\nif (IS_PURE && PureNumberNamespace) copyConstructorProperties(path[NUMBER], PureNumberNamespace);\nif (FORCED || IS_PURE) copyConstructorProperties(path[NUMBER], NativeNumber);\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Cluster } from \"./cluster\";\nimport { Marker, MarkerUtils } from \"./marker-utils\";\n\n/**\n * Provides statistics on all clusters in the current render cycle for use in {@link Renderer.render}.\n */\nexport class ClusterStats {\n  public readonly markers: { sum: number };\n  public readonly clusters: {\n    count: number;\n    markers: {\n      mean: number;\n      sum: number;\n      min: number;\n      max: number;\n    };\n  };\n\n  constructor(markers: Marker[], clusters: Cluster[]) {\n    this.markers = { sum: markers.length };\n    const clusterMarkerCounts = clusters.map((a) => a.count);\n    const clusterMarkerSum = clusterMarkerCounts.reduce((a, b) => a + b, 0);\n\n    this.clusters = {\n      count: clusters.length,\n      markers: {\n        mean: clusterMarkerSum / clusters.length,\n        sum: clusterMarkerSum,\n        min: Math.min(...clusterMarkerCounts),\n        max: Math.max(...clusterMarkerCounts),\n      },\n    };\n  }\n}\n\nexport interface Renderer {\n  /**\n   * Turn a {@link Cluster} into a `Marker`.\n   *\n   * Below is a simple example to create a marker with the number of markers in the cluster as a label.\n   *\n   * ```typescript\n   * return new google.maps.Marker({\n   *   position,\n   *   label: String(markers.length),\n   * });\n   * ```\n   */\n  render(cluster: Cluster, stats: ClusterStats, map: google.maps.Map): Marker;\n}\n\nexport class DefaultRenderer implements Renderer {\n  /**\n   * The default render function for the library used by {@link MarkerClusterer}.\n   *\n   * Currently set to use the following:\n   *\n   * ```typescript\n   * // change color if this cluster has more markers than the mean cluster\n   * const color =\n   *   count > Math.max(10, stats.clusters.markers.mean)\n   *     ? \"#ff0000\"\n   *     : \"#0000ff\";\n   *\n   * // create svg url with fill color\n   * const svg = window.btoa(`\n   * <svg fill=\"${color}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\">\n   *   <circle cx=\"120\" cy=\"120\" opacity=\".6\" r=\"70\" />\n   *   <circle cx=\"120\" cy=\"120\" opacity=\".3\" r=\"90\" />\n   *   <circle cx=\"120\" cy=\"120\" opacity=\".2\" r=\"110\" />\n   *   <circle cx=\"120\" cy=\"120\" opacity=\".1\" r=\"130\" />\n   * </svg>`);\n   *\n   * // create marker using svg icon\n   * return new google.maps.Marker({\n   *   position,\n   *   icon: {\n   *     url: `data:image/svg+xml;base64,${svg}`,\n   *     scaledSize: new google.maps.Size(45, 45),\n   *   },\n   *   label: {\n   *     text: String(count),\n   *     color: \"rgba(255,255,255,0.9)\",\n   *     fontSize: \"12px\",\n   *   },\n   *   // adjust zIndex to be above other markers\n   *   zIndex: 1000 + count,\n   * });\n   * ```\n   */\n  public render(\n    { count, position }: Cluster,\n    stats: ClusterStats,\n    map: google.maps.Map\n  ): Marker {\n    // change color if this cluster has more markers than the mean cluster\n    const color =\n      count > Math.max(10, stats.clusters.markers.mean) ? \"#ff0000\" : \"#0000ff\";\n\n    // create svg literal with fill color\n    const svg = `<svg fill=\"${color}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"50\" height=\"50\">\n<circle cx=\"120\" cy=\"120\" opacity=\".6\" r=\"70\" />\n<circle cx=\"120\" cy=\"120\" opacity=\".3\" r=\"90\" />\n<circle cx=\"120\" cy=\"120\" opacity=\".2\" r=\"110\" />\n<text x=\"50%\" y=\"50%\" style=\"fill:#fff\" text-anchor=\"middle\" font-size=\"50\" dominant-baseline=\"middle\" font-family=\"roboto,arial,sans-serif\">${count}</text>\n</svg>`;\n\n    const title = `Cluster of ${count} markers`,\n      // adjust zIndex to be above other markers\n      zIndex: number = Number(google.maps.Marker.MAX_ZINDEX) + count;\n\n    if (MarkerUtils.isAdvancedMarkerAvailable(map)) {\n      // create cluster SVG element\n      const div = document.createElement(\"div\");\n      div.innerHTML = svg;\n      const svgEl = div.firstElementChild;\n      svgEl.setAttribute(\"transform\", \"translate(0 25)\");\n\n      const clusterOptions: google.maps.marker.AdvancedMarkerElementOptions = {\n        map,\n        position,\n        zIndex,\n        title,\n        content: svgEl,\n      };\n      return new google.maps.marker.AdvancedMarkerElement(clusterOptions);\n    }\n\n    const clusterOptions: google.maps.MarkerOptions = {\n      position,\n      zIndex,\n      title,\n      icon: {\n        url: `data:image/svg+xml;base64,${btoa(svg)}`,\n        anchor: new google.maps.Point(25, 25),\n      },\n    };\n    return new google.maps.Marker(clusterOptions);\n  }\n}\n","/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface OverlayViewSafe extends google.maps.OverlayView {}\n\n/**\n * Extends an object's prototype by another's.\n *\n * @param type1 The Type to be extended.\n * @param type2 The Type to extend with.\n * @ignore\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extend(type1: any, type2: any): void {\n  /* istanbul ignore next */\n  // eslint-disable-next-line prefer-const\n  for (let property in type2.prototype) {\n    type1.prototype[property] = type2.prototype[property];\n  }\n}\n\n/**\n * @ignore\n */\nexport class OverlayViewSafe {\n  constructor() {\n    // MarkerClusterer implements google.maps.OverlayView interface. We use the\n    // extend function to extend MarkerClusterer with google.maps.OverlayView\n    // because it might not always be available when the code is defined so we\n    // look for it at the last possible moment. If it doesn't exist now then\n    // there is no point going ahead :)\n    extend(OverlayViewSafe, google.maps.OverlayView);\n  }\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  Algorithm,\n  AlgorithmOptions,\n  SuperClusterAlgorithm,\n} from \"./algorithms\";\nimport { ClusterStats, DefaultRenderer, Renderer } from \"./renderer\";\nimport { Cluster } from \"./cluster\";\nimport { OverlayViewSafe } from \"./overlay-view-safe\";\nimport { MarkerUtils, Marker } from \"./marker-utils\";\n\nexport type onClusterClickHandler = (\n  event: google.maps.MapMouseEvent,\n  cluster: Cluster,\n  map: google.maps.Map\n) => void;\nexport interface MarkerClustererOptions {\n  markers?: Marker[];\n  /**\n   * An algorithm to cluster markers. Default is {@link SuperClusterAlgorithm}. Must\n   * provide a `calculate` method accepting {@link AlgorithmInput} and returning\n   * an array of {@link Cluster}.\n   */\n  algorithm?: Algorithm;\n  algorithmOptions?: AlgorithmOptions;\n  map?: google.maps.Map | null;\n  /**\n   * An object that converts a {@link Cluster} into a `google.maps.Marker`.\n   * Default is {@link DefaultRenderer}.\n   */\n  renderer?: Renderer;\n  onClusterClick?: onClusterClickHandler;\n}\n\nexport enum MarkerClustererEvents {\n  CLUSTERING_BEGIN = \"clusteringbegin\",\n  CLUSTERING_END = \"clusteringend\",\n  CLUSTER_CLICK = \"click\",\n}\n\nexport const defaultOnClusterClickHandler: onClusterClickHandler = (\n  _: google.maps.MapMouseEvent,\n  cluster: Cluster,\n  map: google.maps.Map\n): void => {\n  map.fitBounds(cluster.bounds);\n};\n/**\n * MarkerClusterer creates and manages per-zoom-level clusters for large amounts\n * of markers. See {@link MarkerClustererOptions} for more details.\n *\n */\nexport class MarkerClusterer extends OverlayViewSafe {\n  /** @see {@link MarkerClustererOptions.onClusterClick} */\n  public onClusterClick: onClusterClickHandler;\n  /** @see {@link MarkerClustererOptions.algorithm} */\n  protected algorithm: Algorithm;\n  protected clusters: Cluster[];\n  protected markers: Marker[];\n  /** @see {@link MarkerClustererOptions.renderer} */\n  protected renderer: Renderer;\n  /** @see {@link MarkerClustererOptions.map} */\n  protected map: google.maps.Map | null;\n  protected idleListener: google.maps.MapsEventListener;\n\n  constructor({\n    map,\n    markers = [],\n    algorithmOptions = {},\n    algorithm = new SuperClusterAlgorithm(algorithmOptions),\n    renderer = new DefaultRenderer(),\n    onClusterClick = defaultOnClusterClickHandler,\n  }: MarkerClustererOptions) {\n    super();\n    this.markers = [...markers];\n    this.clusters = [];\n\n    this.algorithm = algorithm;\n    this.renderer = renderer;\n\n    this.onClusterClick = onClusterClick;\n\n    if (map) {\n      this.setMap(map);\n    }\n  }\n\n  public addMarker(marker: Marker, noDraw?: boolean): void {\n    if (this.markers.includes(marker)) {\n      return;\n    }\n\n    this.markers.push(marker);\n    if (!noDraw) {\n      this.render();\n    }\n  }\n\n  public addMarkers(markers: Marker[], noDraw?: boolean): void {\n    markers.forEach((marker) => {\n      this.addMarker(marker, true);\n    });\n\n    if (!noDraw) {\n      this.render();\n    }\n  }\n\n  public removeMarker(marker: Marker, noDraw?: boolean): boolean {\n    const index = this.markers.indexOf(marker);\n\n    if (index === -1) {\n      // Marker is not in our list of markers, so do nothing:\n      return false;\n    }\n\n    MarkerUtils.setMap(marker, null);\n    this.markers.splice(index, 1); // Remove the marker from the list of managed markers\n\n    if (!noDraw) {\n      this.render();\n    }\n\n    return true;\n  }\n\n  public removeMarkers(markers: Marker[], noDraw?: boolean): boolean {\n    let removed = false;\n\n    markers.forEach((marker) => {\n      removed = this.removeMarker(marker, true) || removed;\n    });\n\n    if (removed && !noDraw) {\n      this.render();\n    }\n\n    return removed;\n  }\n\n  public clearMarkers(noDraw?: boolean): void {\n    this.markers.length = 0;\n\n    if (!noDraw) {\n      this.render();\n    }\n  }\n\n  /**\n   * Recalculates and draws all the marker clusters.\n   */\n  public render(): void {\n    const map = this.getMap();\n    if (map instanceof google.maps.Map && map.getProjection()) {\n      google.maps.event.trigger(\n        this,\n        MarkerClustererEvents.CLUSTERING_BEGIN,\n        this\n      );\n      const { clusters, changed } = this.algorithm.calculate({\n        markers: this.markers,\n        map,\n        mapCanvasProjection: this.getProjection(),\n      });\n\n      // Allow algorithms to return flag on whether the clusters/markers have changed.\n      if (changed || changed == undefined) {\n        // Accumulate the markers of the clusters composed of a single marker.\n        // Those clusters directly use the marker.\n        // Clusters with more than one markers use a group marker generated by a renderer.\n        const singleMarker = new Set<Marker>();\n        for (const cluster of clusters) {\n          if (cluster.markers.length == 1) {\n            singleMarker.add(cluster.markers[0]);\n          }\n        }\n\n        const groupMarkers: Marker[] = [];\n        // Iterate the clusters that are currently rendered.\n        for (const cluster of this.clusters) {\n          if (cluster.marker == null) {\n            continue;\n          }\n          if (cluster.markers.length == 1) {\n            if (!singleMarker.has(cluster.marker)) {\n              // The marker:\n              // - was previously rendered because it is from a cluster with 1 marker,\n              // - should no more be rendered as it is not in singleMarker.\n              MarkerUtils.setMap(cluster.marker, null);\n            }\n          } else {\n            // Delay the removal of old group markers to avoid flickering.\n            groupMarkers.push(cluster.marker);\n          }\n        }\n\n        this.clusters = clusters;\n        this.renderClusters();\n\n        // Delayed removal of the markers of the former groups.\n        requestAnimationFrame(() =>\n          groupMarkers.forEach((marker) => MarkerUtils.setMap(marker, null))\n        );\n      }\n      google.maps.event.trigger(\n        this,\n        MarkerClustererEvents.CLUSTERING_END,\n        this\n      );\n    }\n  }\n\n  public onAdd(): void {\n    this.idleListener = this.getMap().addListener(\n      \"idle\",\n      this.render.bind(this)\n    );\n    this.render();\n  }\n\n  public onRemove(): void {\n    google.maps.event.removeListener(this.idleListener);\n    this.reset();\n  }\n\n  protected reset(): void {\n    this.markers.forEach((marker) => MarkerUtils.setMap(marker, null));\n    this.clusters.forEach((cluster) => cluster.delete());\n    this.clusters = [];\n  }\n\n  protected renderClusters(): void {\n    // Generate stats to pass to renderers.\n    const stats = new ClusterStats(this.markers, this.clusters);\n    const map = this.getMap() as google.maps.Map;\n\n    this.clusters.forEach((cluster) => {\n      if (cluster.markers.length === 1) {\n        cluster.marker = cluster.markers[0];\n      } else {\n        // Generate the marker to represent the group.\n        cluster.marker = this.renderer.render(cluster, stats, map);\n        // Make sure all individual markers are removed from the map.\n        cluster.markers.forEach((marker) => MarkerUtils.setMap(marker, null));\n        if (this.onClusterClick) {\n          cluster.marker.addListener(\n            \"click\",\n            /* istanbul ignore next */\n            (event: google.maps.MapMouseEvent) => {\n              google.maps.event.trigger(\n                this,\n                MarkerClustererEvents.CLUSTER_CLICK,\n                cluster\n              );\n              this.onClusterClick(event, cluster, map);\n            }\n          );\n        }\n      }\n      MarkerUtils.setMap(cluster.marker, map);\n    });\n  }\n}\n"],"names":["check","it","Math","global","globalThis","window","self","this","Function","fails","exec","error","descriptors","require$$0","Object","defineProperty","get","functionBindNative","test","bind","hasOwnProperty","NATIVE_BIND","call","prototype","functionCall","apply","arguments","$propertyIsEnumerable","propertyIsEnumerable","getOwnPropertyDescriptor","NASHORN_BUG","objectPropertyIsEnumerable","f","V","descriptor","enumerable","match","version","createPropertyDescriptor","bitmap","value","configurable","writable","FunctionPrototype","uncurryThisWithBind","functionUncurryThis","fn","uncurryThis","toString","stringSlice","slice","classofRaw","require$$1","classof","require$$2","$Object","split","indexedObject","isNullOrUndefined","$TypeError","TypeError","requireObjectCoercible","IndexedObject","toIndexedObject","documentAll","document","all","documentAll_1","IS_HTMLDDA","undefined","isCallable","argument","isObject","getBuiltIn","namespace","method","length","objectIsPrototypeOf","isPrototypeOf","userAgent","navigator","String","process","Deno","versions","v8","engineV8Version","V8_VERSION","$String","symbolConstructorDetection","getOwnPropertySymbols","symbol","Symbol","sham","useSymbolAsUid","iterator","isSymbol","require$$3","$Symbol","tryToString","aCallable","getMethod","P","func","defineGlobalProperty","key","SHARED","sharedStore","store","sharedModule","push","mode","copyright","license","source","toObject","hasOwnProperty_1","hasOwn","id","postfix","random","uid","shared","NATIVE_SYMBOL","require$$4","USE_SYMBOL_AS_UID","require$$5","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","wellKnownSymbol","name","ordinaryToPrimitive","input","pref","val","valueOf","TO_PRIMITIVE","toPrimitive","result","exoticToPrim","toPropertyKey","EXISTS","createElement","documentCreateElement","ie8DomDefine","a","DESCRIPTORS","propertyIsEnumerableModule","require$$6","IE8_DOM_DEFINE","require$$7","$getOwnPropertyDescriptor","objectGetOwnPropertyDescriptor","O","v8PrototypeDefineBug","anObject","V8_PROTOTYPE_DEFINE_BUG","$defineProperty","ENUMERABLE","CONFIGURABLE","WRITABLE","objectDefineProperty","Attributes","current","definePropertyModule","createNonEnumerableProperty","object","getDescriptor","functionName","PROPER","functionToString","inspectSource","set","has","WeakMap","weakMapBasicDetection","keys","sharedKey","hiddenKeys","NATIVE_WEAK_MAP","OBJECT_ALREADY_INITIALIZED","state","metadata","facade","STATE","internalState","enforce","getterFor","TYPE","type","CONFIGURABLE_FUNCTION_NAME","enforceInternalState","getInternalState","replace","join","CONFIGURABLE_LENGTH","TEMPLATE","makeBuiltIn","makeBuiltInModule","exports","options","getter","setter","arity","constructor","defineBuiltIn","simple","unsafe","nonConfigurable","nonWritable","ceil","floor","trunc","x","n","toIntegerOrInfinity","number","max","min","toAbsoluteIndex","index","integer","toLength","lengthOfArrayLike","obj","createMethod","IS_INCLUDES","$this","el","fromIndex","arrayIncludes","includes","indexOf","objectKeysInternal","names","i","enumBugKeys","internalObjectKeys","concat","objectGetOwnPropertyNames","getOwnPropertyNames","objectGetOwnPropertySymbols","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","ownKeys","getOwnPropertyDescriptorModule","replacement","isForced","feature","detection","data","normalize","POLYFILL","NATIVE","string","toLowerCase","isForced_1","copyConstructorProperties","target","exceptions","_export","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","forced","functionUncurryThisClause","functionBindContext","that","isArray","Array","toStringTagSupport","TO_STRING_TAG_SUPPORT","TO_STRING_TAG","CORRECT_ARGUMENTS","tag","tryGet","callee","noop","empty","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","isConstructor","called","SPECIES","$Array","arraySpeciesConstructor","originalArray","C","arraySpeciesCreate","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","callbackfn","specificCreate","boundFunction","create","arrayIteration","forEach","map","filter","some","every","find","findIndex","filterReject","arrayMethodHasSpeciesSupport","METHOD_NAME","array","foo","Boolean","$map","__rest","s","e","t","p","proto","$filter","MarkerUtils","_classCallCheck","_createClass","google","maps","marker","getMapCapabilities","isAdvancedMarkersAvailable","AdvancedMarkerElement","isAdvancedMarker","setMap","position","LatLng","lat","lng","getPosition","getVisible","Cluster","_ref","markers","_position","_step","bounds","LatLngBounds","_iterator","_createForOfIteratorHelper","done","extend","err","getCenter","m","filterMarkersToPaddedViewport","mapCanvasProjection","viewportPaddingPixels","extendedMapBounds","extendBoundsToPaddedViewport","getBounds","contains","projection","numPixels","_latLngBoundsToPixelB","latLngBoundsToPixelBounds","northEast","southWest","extendedPixelBounds","extendPixelBounds","pixelBoundsToLatLngBounds","distanceBetweenPoints","p1","p2","dLat","PI","dLon","sinDLat","sin","sinDLon","cos","atan2","sqrt","fromLatLngToDivPixel","getNorthEast","getSouthWest","y","_ref2","sw","fromDivPixelToLatLng","ne","AbstractAlgorithm","_ref$maxZoom","maxZoom","AbstractViewportAlgorithm","_AbstractAlgorithm","_inherits","_super","_createSuper","_a","_this","viewportPadding","_a$viewportPadding","_ref3","getZoom","clusters","changed","cluster","domIterables","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","classList","DOMTokenListPrototype","domTokenListPrototype","arrayMethodIsStrict","$forEach","arrayForEach","DOMIterables","handlePrototype","CollectionPrototype","COLLECTION_NAME","handlePrototype$1","toJSON","URL","fastDeepEqual","equal","b","RegExp","flags","GridAlgorithm","_AbstractViewportAlgo","_a$maxDistance","maxDistance","_a$gridSize","gridSize","zoom","_this2","addToClosestCluster","candidate","distance","NoopAlgorithm","objectKeys","require$$8","$assign","assign","objectAssign","A","B","alphabet","chr","T","argumentsLength","S","j","ARRAY_TYPES","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","KDBush","static","ArrayBuffer","Error","magic","versionAndType","ArrayType","nodeSize","numItems","isNaN","IndexArrayType","arrayTypeIndex","coordsByteSize","BYTES_PER_ELEMENT","idsByteSize","padCoords","ids","coords","_pos","_finished","add","finish","numAdded","sort","range","minX","minY","maxX","maxY","stack","axis","pop","right","left","within","qx","qy","r","r2","sqDist","select","k","z","log","exp","sd","swapItem","swap","arr","tmp","ax","ay","bx","by","dx","dy","defaultOptions","minZoom","minPoints","radius","extent","generateId","reduce","props","fround","OFFSET_ID","OFFSET_NUM","OFFSET_PROP","Supercluster","trees","stride","clusterProps","load","points","console","time","timerId","geometry","coordinates","lngX","latY","Infinity","tree","_createTree","timeEnd","now","Date","_cluster","getClusters","bbox","minLng","minLat","maxLng","maxLat","easternHem","westernHem","_limitZoom","getClusterJSON","getChildren","clusterId","originId","_getOriginId","originZoom","_getOriginZoom","errorMsg","pow","children","getLeaves","limit","offset","leaves","_appendLeaves","getTile","z2","top","bottom","tile","features","_addTileFeatures","getClusterExpansionZoom","expansionZoom","properties","cluster_id","skipped","child","point_count","isCluster","tags","px","py","getClusterProperties","round","nextData","neighborIds","numPointsOrigin","numPoints","neighborId","clusterProperties","wx","wy","clusterPropIndex","numPoints2","_map","clone","original","yLat","count","abbrev","propIndex","point_count_abbreviated","y2","atan","SuperClusterAlgorithm","_a$radius","superCluster","SuperCluster","_toConsumableArray","transformCluster","_ref2$geometry$coordi","_slicedToArray","leaf","objectDefineProperties","defineProperties","Properties","activeXDocument","html","definePropertiesModule","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","domain","style","display","appendChild","src","contentWindow","open","F","objectCreate","UNSCOPABLES","ArrayPrototype","addToUnscopables","$includes","addToUnscopables$1","MATCH","isRegExp","$","notARegExp","correctIsRegExpLogic","regexp","error1","error2","stringIndexOf","searchString","$indexOf","nativeIndexOf","NEGATIVE_ZERO","searchElement","SILENT_ON_NON_WRITABLE_LENGTH_SET","doesNotExceedSafeInteger","createProperty","propertyKey","setArrayLength","deletePropertyOrThrow","HAS_SPECIES_SUPPORT","require$$10","splice","start","deleteCount","insertCount","actualDeleteCount","from","to","len","actualStart","IteratorPrototype","PrototypeOfArrayIteratorPrototype","arrayIterator","iterators","correctPrototypeGetter","getPrototypeOf","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","objectGetPrototypeOf","ITERATOR","BUGGY_SAFARI_ITERATORS","NEW_ITERATOR_PROTOTYPE","iteratorsCore","setToStringTag","TAG","Iterators","returnThis","uncurryThisAccessor","aPossiblePrototype","objectSetPrototypeOf","setPrototypeOf","CORRECT_SETTER","__proto__","createIteratorConstructor","IteratorConstructor","NAME","next","ENUMERABLE_NEXT","require$$9","require$$12","PROPER_FUNCTION_NAME","require$$13","require$$11","KEYS","VALUES","ENTRIES","iteratorDefine","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","values","createIterResultObject","InternalStateModule","defineIterator","ARRAY_ITERATOR","setInternalState","es_array_iterator","iterated","kind","Arguments","$getOwnPropertyNames","arraySlice","end","fin","windowNames","objectGetOwnPropertyNamesExternal","getWindowNames","arrayBufferNonExtensible","buffer","isExtensible","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","objectIsExtensible","freezing","preventExtensions","getOwnPropertyNamesExternalModule","FREEZING","REQUIRED","METADATA","setMetadata","objectID","weakData","meta","internalMetadataModule","enable","fastKey","getWeakData","onFreeze","getIteratorMethod","isArrayIteratorMethod","getIterator","usingIterator","iteratorMethod","iteratorClose","innerResult","innerError","Result","stopped","ResultPrototype","iterate","iterable","unboundFunction","iterFn","step","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","anInstance","Prototype","SAFE_CLOSING","iteratorWithReturn","return","inheritIfRequired","dummy","Wrapper","NewTarget","NewTargetPrototype","InternalMetadataModule","checkCorrectnessOfIteration","SKIP_CLOSING","ITERATION_SUPPORT","require$$14","defineBuiltInAccessor","defineBuiltIns","setSpecies","CONSTRUCTOR_NAME","Constructor","internalStateGetterFor","collectionStrong","getConstructor","wrapper","ADDER","first","last","size","define","previous","entry","getEntry","removed","clear","delete","prev","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","common","IS_WEAK","NativeConstructor","NativePrototype","exported","fixMethod","uncurriedNativeMethod","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","collection","init","charAt","charCodeAt","CONVERT_TO_STRING","pos","second","codeAt","STRING_ITERATOR","point","ArrayIteratorMethods","ArrayValues","IS_RIGHT","memo","arrayReduce","engineIsNode","$reduce","IS_CONCAT_SPREADABLE","IS_CONCAT_SPREADABLE_SUPPORT","isConcatSpreadable","spreadable","arg","E","path","thisNumberValue","whitespaces","ltrim","rtrim","stringTrim","trim","require$$15","require$$16","require$$17","NUMBER","NativeNumber","NumberPrototype","toNumber","third","radix","maxCode","digits","code","NaN","parseInt","NumberWrapper","primValue","toNumeric","wrap","Number","ClusterStats","sum","clusterMarkerCounts","clusterMarkerSum","mean","DefaultRenderer","stats","color","svg","title","zIndex","Marker","MAX_ZINDEX","isAdvancedMarkerAvailable","div","innerHTML","svgEl","firstElementChild","setAttribute","clusterOptions","icon","url","btoa","anchor","Point","MarkerClustererEvents","OverlayViewSafe","type1","type2","property","OverlayView","defaultOnClusterClickHandler","_","fitBounds","MarkerClusterer","_OverlayViewSafe","_ref$markers","_ref$algorithmOptions","algorithmOptions","_ref$algorithm","algorithm","_ref$renderer","renderer","_ref$onClusterClick","onClusterClick","noDraw","render","addMarker","_this3","removeMarker","getMap","Map","getProjection","event","trigger","CLUSTERING_BEGIN","_this$algorithm$calcu","calculate","singleMarker","Set","_step2","groupMarkers","_iterator2","renderClusters","requestAnimationFrame","CLUSTERING_END","idleListener","addListener","removeListener","reset","_this4","CLUSTER_CLICK"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"index.umd.js","sources":["../node_modules/tslib/tslib.es6.js","../src/marker-utils.ts","../src/cluster.ts","../src/algorithms/utils.ts","../src/algorithms/core.ts","../node_modules/fast-deep-equal/index.js","../node_modules/kdbush/index.js","../node_modules/supercluster/index.js","../src/algorithms/supercluster.ts","../src/renderer.ts","../src/overlay-view-safe.ts","../src/markerclusterer.ts","../src/algorithms/grid.ts","../src/algorithms/noop.ts","../src/algorithms/superviewport.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n    extendStatics = Object.setPrototypeOf ||\r\n        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n    return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n    extendStatics(d, b);\r\n    function __() { this.constructor = d; }\r\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n    __assign = Object.assign || function __assign(t) {\r\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n            s = arguments[i];\r\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n        }\r\n        return t;\r\n    }\r\n    return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n    var t = {};\r\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n        t[p] = s[p];\r\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n                t[p[i]] = s[p[i]];\r\n        }\r\n    return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n    if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n    return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n    return new (P || (P = Promise))(function (resolve, reject) {\r\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n    });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n    function verb(n) { return function (v) { return step([n, v]); }; }\r\n    function step(op) {\r\n        if (f) throw new TypeError(\"Generator is already executing.\");\r\n        while (_) try {\r\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n            if (y = 0, t) op = [op[0] & 2, t.value];\r\n            switch (op[0]) {\r\n                case 0: case 1: t = op; break;\r\n                case 4: _.label++; return { value: op[1], done: false };\r\n                case 5: _.label++; y = op[1]; op = [0]; continue;\r\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n                default:\r\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n                    if (t[2]) _.ops.pop();\r\n                    _.trys.pop(); continue;\r\n            }\r\n            op = body.call(thisArg, _);\r\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n    }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n    for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n    var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n    if (m) return m.call(o);\r\n    if (o && typeof o.length === \"number\") return {\r\n        next: function () {\r\n            if (o && i >= o.length) o = void 0;\r\n            return { value: o && o[i++], done: !o };\r\n        }\r\n    };\r\n    throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n    var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n    if (!m) return o;\r\n    var i = m.call(o), r, ar = [], e;\r\n    try {\r\n        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n    }\r\n    catch (error) { e = { error: error }; }\r\n    finally {\r\n        try {\r\n            if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n        }\r\n        finally { if (e) throw e.error; }\r\n    }\r\n    return ar;\r\n}\r\n\r\nexport function __spread() {\r\n    for (var ar = [], i = 0; i < arguments.length; i++)\r\n        ar = ar.concat(__read(arguments[i]));\r\n    return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n            r[k] = a[j];\r\n    return r;\r\n};\r\n\r\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n    return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n    function fulfill(value) { resume(\"next\", value); }\r\n    function reject(value) { resume(\"throw\", value); }\r\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n    var i, p;\r\n    return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n    var m = o[Symbol.asyncIterator], i;\r\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n    if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n    return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n    if (mod && mod.__esModule) return mod;\r\n    var result = {};\r\n    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n    result.default = mod;\r\n    return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to get private field on non-instance\");\r\n    }\r\n    return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n    if (!privateMap.has(receiver)) {\r\n        throw new TypeError(\"attempted to set private field on non-instance\");\r\n    }\r\n    privateMap.set(receiver, value);\r\n    return value;\r\n}\r\n","/**\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Supports markers of either either \"legacy\" or \"advanced\" types.\n */\nexport type Marker =\n  | google.maps.Marker\n  | google.maps.marker.AdvancedMarkerElement;\n\n/**\n * util class that creates a common set of convenience functions to wrap\n * shared behavior of Advanced Markers and Markers.\n */\nexport class MarkerUtils {\n  public static isAdvancedMarkerAvailable(map: google.maps.Map): boolean {\n    return (\n      google.maps.marker &&\n      map.getMapCapabilities().isAdvancedMarkersAvailable === true\n    );\n  }\n\n  public static isAdvancedMarker(\n    marker: Marker\n  ): marker is google.maps.marker.AdvancedMarkerElement {\n    return (\n      google.maps.marker &&\n      marker instanceof google.maps.marker.AdvancedMarkerElement\n    );\n  }\n\n  public static setMap(marker: Marker, map: google.maps.Map | null) {\n    if (this.isAdvancedMarker(marker)) {\n      marker.map = map;\n    } else {\n      marker.setMap(map);\n    }\n  }\n\n  public static getPosition(marker: Marker): google.maps.LatLng {\n    // SuperClusterAlgorithm.calculate expects a LatLng instance so we fake it for Adv Markers\n    if (this.isAdvancedMarker(marker)) {\n      if (marker.position) {\n        if (marker.position instanceof google.maps.LatLng) {\n          return marker.position;\n        }\n        // since we can't cast to LatLngLiteral for reasons =(\n        if (marker.position.lat && marker.position.lng) {\n          return new google.maps.LatLng(\n            marker.position.lat,\n            marker.position.lng\n          );\n        }\n      }\n      return new google.maps.LatLng(null);\n    }\n    return marker.getPosition();\n  }\n\n  public static getVisible(marker: Marker) {\n    if (this.isAdvancedMarker(marker)) {\n      /**\n       * Always return true for Advanced Markers because the clusterer\n       * uses getVisible as a way to count legacy markers not as an actual\n       * indicator of visibility for some reason. Even when markers are hidden\n       * Marker.getVisible returns `true` and this is used to set the marker count\n       * on the cluster. See the behavior of Cluster.count\n       */\n      return true;\n    }\n    return marker.getVisible();\n  }\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MarkerUtils, Marker } from \"./marker-utils\";\n\nexport interface ClusterOptions {\n  position?: google.maps.LatLng | google.maps.LatLngLiteral;\n  markers?: Marker[];\n}\n\nexport class Cluster {\n  public marker?: Marker;\n  public readonly markers?: Marker[];\n  protected _position: google.maps.LatLng;\n\n  constructor({ markers, position }: ClusterOptions) {\n    this.markers = markers;\n\n    if (position) {\n      if (position instanceof google.maps.LatLng) {\n        this._position = position;\n      } else {\n        this._position = new google.maps.LatLng(position);\n      }\n    }\n  }\n\n  public get bounds(): google.maps.LatLngBounds | undefined {\n    if (this.markers.length === 0 && !this._position) {\n      return;\n    }\n\n    const bounds = new google.maps.LatLngBounds(this._position, this._position);\n    for (const marker of this.markers) {\n      bounds.extend(MarkerUtils.getPosition(marker));\n    }\n    return bounds;\n  }\n\n  public get position(): google.maps.LatLng {\n    return this._position || this.bounds.getCenter();\n  }\n\n  /**\n   * Get the count of **visible** markers.\n   */\n  public get count(): number {\n    return this.markers.filter((m: Marker) => MarkerUtils.getVisible(m)).length;\n  }\n\n  /**\n   * Add a marker to the cluster.\n   */\n  public push(marker: Marker): void {\n    this.markers.push(marker);\n  }\n\n  /**\n   * Cleanup references and remove marker from map.\n   */\n  public delete(): void {\n    if (this.marker) {\n      MarkerUtils.setMap(this.marker, null);\n      this.marker = undefined;\n    }\n    this.markers.length = 0;\n  }\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MarkerUtils, Marker } from \"../marker-utils\";\n\n/**\n * Returns the markers visible in a padded map viewport\n *\n * @param map\n * @param mapCanvasProjection\n * @param markers The list of marker to filter\n * @param viewportPaddingPixels The padding in pixel\n * @returns The list of markers in the padded viewport\n */\nexport const filterMarkersToPaddedViewport = (\n  map: google.maps.Map,\n  mapCanvasProjection: google.maps.MapCanvasProjection,\n  markers: Marker[],\n  viewportPaddingPixels: number\n): Marker[] => {\n  const extendedMapBounds = extendBoundsToPaddedViewport(\n    map.getBounds(),\n    mapCanvasProjection,\n    viewportPaddingPixels\n  );\n  return markers.filter((marker) =>\n    extendedMapBounds.contains(MarkerUtils.getPosition(marker))\n  );\n};\n\n/**\n * Extends a bounds by a number of pixels in each direction\n */\nexport const extendBoundsToPaddedViewport = (\n  bounds: google.maps.LatLngBounds,\n  projection: google.maps.MapCanvasProjection,\n  numPixels: number\n): google.maps.LatLngBounds => {\n  const { northEast, southWest } = latLngBoundsToPixelBounds(\n    bounds,\n    projection\n  );\n  const extendedPixelBounds = extendPixelBounds(\n    { northEast, southWest },\n    numPixels\n  );\n  return pixelBoundsToLatLngBounds(extendedPixelBounds, projection);\n};\n\n/**\n * Gets the extended bounds as a bbox [westLng, southLat, eastLng, northLat]\n */\nexport const getPaddedViewport = (\n  bounds: google.maps.LatLngBounds,\n  projection: google.maps.MapCanvasProjection,\n  pixels: number\n): [number, number, number, number] => {\n  const extended = extendBoundsToPaddedViewport(bounds, projection, pixels);\n  const ne = extended.getNorthEast();\n  const sw = extended.getSouthWest();\n\n  return [sw.lng(), sw.lat(), ne.lng(), ne.lat()];\n};\n\n/**\n * Returns the distance between 2 positions.\n *\n * @hidden\n */\nexport const distanceBetweenPoints = (\n  p1: google.maps.LatLngLiteral,\n  p2: google.maps.LatLngLiteral\n): number => {\n  const R = 6371; // Radius of the Earth in km\n  const dLat = ((p2.lat - p1.lat) * Math.PI) / 180;\n  const dLon = ((p2.lng - p1.lng) * Math.PI) / 180;\n  const sinDLat = Math.sin(dLat / 2);\n  const sinDLon = Math.sin(dLon / 2);\n  const a =\n    sinDLat * sinDLat +\n    Math.cos((p1.lat * Math.PI) / 180) *\n      Math.cos((p2.lat * Math.PI) / 180) *\n      sinDLon *\n      sinDLon;\n  const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n  return R * c;\n};\n\ntype PixelBounds = {\n  northEast: google.maps.Point;\n  southWest: google.maps.Point;\n};\n\n/**\n * Converts a LatLng bound to pixels.\n *\n * @hidden\n */\nconst latLngBoundsToPixelBounds = (\n  bounds: google.maps.LatLngBounds,\n  projection: google.maps.MapCanvasProjection\n): PixelBounds => {\n  return {\n    northEast: projection.fromLatLngToDivPixel(bounds.getNorthEast()),\n    southWest: projection.fromLatLngToDivPixel(bounds.getSouthWest()),\n  };\n};\n\n/**\n * Extends a pixel bounds by numPixels in all directions.\n *\n * @hidden\n */\nexport const extendPixelBounds = (\n  { northEast, southWest }: PixelBounds,\n  numPixels: number\n): PixelBounds => {\n  northEast.x += numPixels;\n  northEast.y -= numPixels;\n\n  southWest.x -= numPixels;\n  southWest.y += numPixels;\n\n  return { northEast, southWest };\n};\n\n/**\n * @hidden\n */\nexport const pixelBoundsToLatLngBounds = (\n  { northEast, southWest }: PixelBounds,\n  projection: google.maps.MapCanvasProjection\n): google.maps.LatLngBounds => {\n  const sw = projection.fromDivPixelToLatLng(southWest);\n  const ne = projection.fromDivPixelToLatLng(northEast);\n  return new google.maps.LatLngBounds(sw, ne);\n};\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Cluster } from \"../cluster\";\nimport { filterMarkersToPaddedViewport } from \"./utils\";\nimport { MarkerUtils, Marker } from \"../marker-utils\";\n\nexport interface AlgorithmInput {\n  /**\n   * The map containing the markers and clusters.\n   */\n  map: google.maps.Map;\n  /**\n   * An array of markers to be clustered.\n   *\n   * There are some specific edge cases to be aware of including the following:\n   * * Markers that are not visible.\n   */\n  markers: Marker[];\n  /**\n   * The `mapCanvasProjection` enables easy conversion from lat/lng to pixel.\n   *\n   * @see [MapCanvasProjection](https://developers.google.com/maps/documentation/javascript/reference/overlay-view#MapCanvasProjection)\n   */\n  mapCanvasProjection: google.maps.MapCanvasProjection;\n}\n\nexport interface AlgorithmOutput {\n  /**\n   * The clusters returned based upon the {@link AlgorithmInput}.\n   */\n  clusters: Cluster[];\n  /**\n   * A boolean flag indicating that the clusters have not changed.\n   */\n  changed?: boolean;\n}\n\nexport interface Algorithm {\n  /**\n   * Calculates an array of {@link Cluster}.\n   */\n  calculate: ({ markers, map }: AlgorithmInput) => AlgorithmOutput;\n}\n\nexport interface AlgorithmOptions {\n  // Markers are not clustered at maxZoom and above.\n  maxZoom?: number;\n}\n\n/**\n * @hidden\n */\nexport abstract class AbstractAlgorithm implements Algorithm {\n  protected maxZoom: number;\n\n  constructor({ maxZoom = 16 }: AlgorithmOptions) {\n    this.maxZoom = maxZoom;\n  }\n  /**\n   * Helper function to bypass clustering based upon some map state such as\n   * zoom, number of markers, etc.\n   *\n   * ```typescript\n   *  cluster({markers, map}: AlgorithmInput): Cluster[] {\n   *    if (shouldBypassClustering(map)) {\n   *      return this.noop({markers})\n   *    }\n   * }\n   * ```\n   */\n  protected noop<T extends Pick<AlgorithmInput, \"markers\">>({\n    markers,\n  }: T): Cluster[] {\n    return noop(markers);\n  }\n  /**\n   * Calculates an array of {@link Cluster}. Calculate is separate from\n   * {@link cluster} as it does preprocessing on the markers such as filtering\n   * based upon the viewport as in {@link AbstractViewportAlgorithm}. Caching\n   * and other optimizations can also be done here.\n   */\n  public abstract calculate({ markers, map }: AlgorithmInput): AlgorithmOutput;\n\n  /**\n   * Clusters the markers and called from {@link calculate}.\n   */\n  protected abstract cluster({ markers, map }: AlgorithmInput): Cluster[];\n}\n\n/**\n * @hidden\n */\nexport interface ViewportAlgorithmOptions extends AlgorithmOptions {\n  /**\n   * The number of pixels to extend beyond the viewport bounds when filtering\n   * markers prior to clustering.\n   */\n  viewportPadding?: number;\n}\n\n/**\n * Abstract viewport algorithm proves a class to filter markers by a padded\n * viewport. This is a common optimization.\n *\n * @hidden\n */\nexport abstract class AbstractViewportAlgorithm extends AbstractAlgorithm {\n  protected viewportPadding = 60;\n\n  constructor({ viewportPadding = 60, ...options }: ViewportAlgorithmOptions) {\n    super(options);\n    this.viewportPadding = viewportPadding;\n  }\n  public calculate({\n    markers,\n    map,\n    mapCanvasProjection,\n  }: AlgorithmInput): AlgorithmOutput {\n    if (map.getZoom() >= this.maxZoom) {\n      return {\n        clusters: this.noop({\n          markers,\n        }),\n        changed: false,\n      };\n    }\n\n    return {\n      clusters: this.cluster({\n        markers: filterMarkersToPaddedViewport(\n          map,\n          mapCanvasProjection,\n          markers,\n          this.viewportPadding\n        ),\n        map,\n        mapCanvasProjection,\n      }),\n    };\n  }\n  protected abstract cluster({ markers, map }: AlgorithmInput): Cluster[];\n}\n\n/**\n * @hidden\n */\nexport const noop = (markers: Marker[]): Cluster[] => {\n  const clusters = markers.map(\n    (marker) =>\n      new Cluster({\n        position: MarkerUtils.getPosition(marker),\n        markers: [marker],\n      })\n  );\n  return clusters;\n};\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n","\nconst ARRAY_TYPES = [\n    Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array,\n    Int32Array, Uint32Array, Float32Array, Float64Array\n];\n\n/** @typedef {Int8ArrayConstructor | Uint8ArrayConstructor | Uint8ClampedArrayConstructor | Int16ArrayConstructor | Uint16ArrayConstructor | Int32ArrayConstructor | Uint32ArrayConstructor | Float32ArrayConstructor | Float64ArrayConstructor} TypedArrayConstructor */\n\nconst VERSION = 1; // serialized format version\nconst HEADER_SIZE = 8;\n\nexport default class KDBush {\n\n    /**\n     * Creates an index from raw `ArrayBuffer` data.\n     * @param {ArrayBuffer} data\n     */\n    static from(data) {\n        if (!(data instanceof ArrayBuffer)) {\n            throw new Error('Data must be an instance of ArrayBuffer.');\n        }\n        const [magic, versionAndType] = new Uint8Array(data, 0, 2);\n        if (magic !== 0xdb) {\n            throw new Error('Data does not appear to be in a KDBush format.');\n        }\n        const version = versionAndType >> 4;\n        if (version !== VERSION) {\n            throw new Error(`Got v${version} data when expected v${VERSION}.`);\n        }\n        const ArrayType = ARRAY_TYPES[versionAndType & 0x0f];\n        if (!ArrayType) {\n            throw new Error('Unrecognized array type.');\n        }\n        const [nodeSize] = new Uint16Array(data, 2, 1);\n        const [numItems] = new Uint32Array(data, 4, 1);\n\n        return new KDBush(numItems, nodeSize, ArrayType, data);\n    }\n\n    /**\n     * Creates an index that will hold a given number of items.\n     * @param {number} numItems\n     * @param {number} [nodeSize=64] Size of the KD-tree node (64 by default).\n     * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).\n     * @param {ArrayBuffer} [data] (For internal use only)\n     */\n    constructor(numItems, nodeSize = 64, ArrayType = Float64Array, data) {\n        if (isNaN(numItems) || numItems < 0) throw new Error(`Unpexpected numItems value: ${numItems}.`);\n\n        this.numItems = +numItems;\n        this.nodeSize = Math.min(Math.max(+nodeSize, 2), 65535);\n        this.ArrayType = ArrayType;\n        this.IndexArrayType = numItems < 65536 ? Uint16Array : Uint32Array;\n\n        const arrayTypeIndex = ARRAY_TYPES.indexOf(this.ArrayType);\n        const coordsByteSize = numItems * 2 * this.ArrayType.BYTES_PER_ELEMENT;\n        const idsByteSize = numItems * this.IndexArrayType.BYTES_PER_ELEMENT;\n        const padCoords = (8 - idsByteSize % 8) % 8;\n\n        if (arrayTypeIndex < 0) {\n            throw new Error(`Unexpected typed array class: ${ArrayType}.`);\n        }\n\n        if (data && (data instanceof ArrayBuffer)) { // reconstruct an index from a buffer\n            this.data = data;\n            this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);\n            this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);\n            this._pos = numItems * 2;\n            this._finished = true;\n        } else { // initialize a new index\n            this.data = new ArrayBuffer(HEADER_SIZE + coordsByteSize + idsByteSize + padCoords);\n            this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);\n            this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);\n            this._pos = 0;\n            this._finished = false;\n\n            // set header\n            new Uint8Array(this.data, 0, 2).set([0xdb, (VERSION << 4) + arrayTypeIndex]);\n            new Uint16Array(this.data, 2, 1)[0] = nodeSize;\n            new Uint32Array(this.data, 4, 1)[0] = numItems;\n        }\n    }\n\n    /**\n     * Add a point to the index.\n     * @param {number} x\n     * @param {number} y\n     * @returns {number} An incremental index associated with the added item (starting from `0`).\n     */\n    add(x, y) {\n        const index = this._pos >> 1;\n        this.ids[index] = index;\n        this.coords[this._pos++] = x;\n        this.coords[this._pos++] = y;\n        return index;\n    }\n\n    /**\n     * Perform indexing of the added points.\n     */\n    finish() {\n        const numAdded = this._pos >> 1;\n        if (numAdded !== this.numItems) {\n            throw new Error(`Added ${numAdded} items when expected ${this.numItems}.`);\n        }\n        // kd-sort both arrays for efficient search\n        sort(this.ids, this.coords, this.nodeSize, 0, this.numItems - 1, 0);\n\n        this._finished = true;\n        return this;\n    }\n\n    /**\n     * Search the index for items within a given bounding box.\n     * @param {number} minX\n     * @param {number} minY\n     * @param {number} maxX\n     * @param {number} maxY\n     * @returns {number[]} An array of indices correponding to the found items.\n     */\n    range(minX, minY, maxX, maxY) {\n        if (!this._finished) throw new Error('Data not yet indexed - call index.finish().');\n\n        const {ids, coords, nodeSize} = this;\n        const stack = [0, ids.length - 1, 0];\n        const result = [];\n\n        // recursively search for items in range in the kd-sorted arrays\n        while (stack.length) {\n            const axis = stack.pop() || 0;\n            const right = stack.pop() || 0;\n            const left = stack.pop() || 0;\n\n            // if we reached \"tree node\", search linearly\n            if (right - left <= nodeSize) {\n                for (let i = left; i <= right; i++) {\n                    const x = coords[2 * i];\n                    const y = coords[2 * i + 1];\n                    if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[i]);\n                }\n                continue;\n            }\n\n            // otherwise find the middle index\n            const m = (left + right) >> 1;\n\n            // include the middle item if it's in range\n            const x = coords[2 * m];\n            const y = coords[2 * m + 1];\n            if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[m]);\n\n            // queue search in halves that intersect the query\n            if (axis === 0 ? minX <= x : minY <= y) {\n                stack.push(left);\n                stack.push(m - 1);\n                stack.push(1 - axis);\n            }\n            if (axis === 0 ? maxX >= x : maxY >= y) {\n                stack.push(m + 1);\n                stack.push(right);\n                stack.push(1 - axis);\n            }\n        }\n\n        return result;\n    }\n\n    /**\n     * Search the index for items within a given radius.\n     * @param {number} qx\n     * @param {number} qy\n     * @param {number} r Query radius.\n     * @returns {number[]} An array of indices correponding to the found items.\n     */\n    within(qx, qy, r) {\n        if (!this._finished) throw new Error('Data not yet indexed - call index.finish().');\n\n        const {ids, coords, nodeSize} = this;\n        const stack = [0, ids.length - 1, 0];\n        const result = [];\n        const r2 = r * r;\n\n        // recursively search for items within radius in the kd-sorted arrays\n        while (stack.length) {\n            const axis = stack.pop() || 0;\n            const right = stack.pop() || 0;\n            const left = stack.pop() || 0;\n\n            // if we reached \"tree node\", search linearly\n            if (right - left <= nodeSize) {\n                for (let i = left; i <= right; i++) {\n                    if (sqDist(coords[2 * i], coords[2 * i + 1], qx, qy) <= r2) result.push(ids[i]);\n                }\n                continue;\n            }\n\n            // otherwise find the middle index\n            const m = (left + right) >> 1;\n\n            // include the middle item if it's in range\n            const x = coords[2 * m];\n            const y = coords[2 * m + 1];\n            if (sqDist(x, y, qx, qy) <= r2) result.push(ids[m]);\n\n            // queue search in halves that intersect the query\n            if (axis === 0 ? qx - r <= x : qy - r <= y) {\n                stack.push(left);\n                stack.push(m - 1);\n                stack.push(1 - axis);\n            }\n            if (axis === 0 ? qx + r >= x : qy + r >= y) {\n                stack.push(m + 1);\n                stack.push(right);\n                stack.push(1 - axis);\n            }\n        }\n\n        return result;\n    }\n}\n\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} nodeSize\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */\nfunction sort(ids, coords, nodeSize, left, right, axis) {\n    if (right - left <= nodeSize) return;\n\n    const m = (left + right) >> 1; // middle index\n\n    // sort ids and coords around the middle index so that the halves lie\n    // either left/right or top/bottom correspondingly (taking turns)\n    select(ids, coords, m, left, right, axis);\n\n    // recursively kd-sort first half and second half on the opposite axis\n    sort(ids, coords, nodeSize, left, m - 1, 1 - axis);\n    sort(ids, coords, nodeSize, m + 1, right, 1 - axis);\n}\n\n/**\n * Custom Floyd-Rivest selection algorithm: sort ids and coords so that\n * [left..k-1] items are smaller than k-th item (on either x or y axis)\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} k\n * @param {number} left\n * @param {number} right\n * @param {number} axis\n */\nfunction select(ids, coords, k, left, right, axis) {\n\n    while (right > left) {\n        if (right - left > 600) {\n            const n = right - left + 1;\n            const m = k - left + 1;\n            const z = Math.log(n);\n            const s = 0.5 * Math.exp(2 * z / 3);\n            const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);\n            const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));\n            const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));\n            select(ids, coords, k, newLeft, newRight, axis);\n        }\n\n        const t = coords[2 * k + axis];\n        let i = left;\n        let j = right;\n\n        swapItem(ids, coords, left, k);\n        if (coords[2 * right + axis] > t) swapItem(ids, coords, left, right);\n\n        while (i < j) {\n            swapItem(ids, coords, i, j);\n            i++;\n            j--;\n            while (coords[2 * i + axis] < t) i++;\n            while (coords[2 * j + axis] > t) j--;\n        }\n\n        if (coords[2 * left + axis] === t) swapItem(ids, coords, left, j);\n        else {\n            j++;\n            swapItem(ids, coords, j, right);\n        }\n\n        if (j <= k) left = j + 1;\n        if (k <= j) right = j - 1;\n    }\n}\n\n/**\n * @param {Uint16Array | Uint32Array} ids\n * @param {InstanceType<TypedArrayConstructor>} coords\n * @param {number} i\n * @param {number} j\n */\nfunction swapItem(ids, coords, i, j) {\n    swap(ids, i, j);\n    swap(coords, 2 * i, 2 * j);\n    swap(coords, 2 * i + 1, 2 * j + 1);\n}\n\n/**\n * @param {InstanceType<TypedArrayConstructor>} arr\n * @param {number} i\n * @param {number} j\n */\nfunction swap(arr, i, j) {\n    const tmp = arr[i];\n    arr[i] = arr[j];\n    arr[j] = tmp;\n}\n\n/**\n * @param {number} ax\n * @param {number} ay\n * @param {number} bx\n * @param {number} by\n */\nfunction sqDist(ax, ay, bx, by) {\n    const dx = ax - bx;\n    const dy = ay - by;\n    return dx * dx + dy * dy;\n}\n","\nimport KDBush from 'kdbush';\n\nconst defaultOptions = {\n    minZoom: 0,   // min zoom to generate clusters on\n    maxZoom: 16,  // max zoom level to cluster the points on\n    minPoints: 2, // minimum points to form a cluster\n    radius: 40,   // cluster radius in pixels\n    extent: 512,  // tile extent (radius is calculated relative to it)\n    nodeSize: 64, // size of the KD-tree leaf node, affects performance\n    log: false,   // whether to log timing info\n\n    // whether to generate numeric ids for input features (in vector tiles)\n    generateId: false,\n\n    // a reduce function for calculating custom cluster properties\n    reduce: null, // (accumulated, props) => { accumulated.sum += props.sum; }\n\n    // properties to use for individual points when running the reducer\n    map: props => props // props => ({sum: props.my_value})\n};\n\nconst fround = Math.fround || (tmp => ((x) => { tmp[0] = +x; return tmp[0]; }))(new Float32Array(1));\n\nconst OFFSET_ZOOM = 2;\nconst OFFSET_ID = 3;\nconst OFFSET_PARENT = 4;\nconst OFFSET_NUM = 5;\nconst OFFSET_PROP = 6;\n\nexport default class Supercluster {\n    constructor(options) {\n        this.options = Object.assign(Object.create(defaultOptions), options);\n        this.trees = new Array(this.options.maxZoom + 1);\n        this.stride = this.options.reduce ? 7 : 6;\n        this.clusterProps = [];\n    }\n\n    load(points) {\n        const {log, minZoom, maxZoom} = this.options;\n\n        if (log) console.time('total time');\n\n        const timerId = `prepare ${  points.length  } points`;\n        if (log) console.time(timerId);\n\n        this.points = points;\n\n        // generate a cluster object for each point and index input points into a KD-tree\n        const data = [];\n\n        for (let i = 0; i < points.length; i++) {\n            const p = points[i];\n            if (!p.geometry) continue;\n\n            const [lng, lat] = p.geometry.coordinates;\n            const x = fround(lngX(lng));\n            const y = fround(latY(lat));\n            // store internal point/cluster data in flat numeric arrays for performance\n            data.push(\n                x, y, // projected point coordinates\n                Infinity, // the last zoom the point was processed at\n                i, // index of the source feature in the original input array\n                -1, // parent cluster id\n                1 // number of points in a cluster\n            );\n            if (this.options.reduce) data.push(0); // noop\n        }\n        let tree = this.trees[maxZoom + 1] = this._createTree(data);\n\n        if (log) console.timeEnd(timerId);\n\n        // cluster points on max zoom, then cluster the results on previous zoom, etc.;\n        // results in a cluster hierarchy across zoom levels\n        for (let z = maxZoom; z >= minZoom; z--) {\n            const now = +Date.now();\n\n            // create a new set of clusters for the zoom and index them with a KD-tree\n            tree = this.trees[z] = this._createTree(this._cluster(tree, z));\n\n            if (log) console.log('z%d: %d clusters in %dms', z, tree.numItems, +Date.now() - now);\n        }\n\n        if (log) console.timeEnd('total time');\n\n        return this;\n    }\n\n    getClusters(bbox, zoom) {\n        let minLng = ((bbox[0] + 180) % 360 + 360) % 360 - 180;\n        const minLat = Math.max(-90, Math.min(90, bbox[1]));\n        let maxLng = bbox[2] === 180 ? 180 : ((bbox[2] + 180) % 360 + 360) % 360 - 180;\n        const maxLat = Math.max(-90, Math.min(90, bbox[3]));\n\n        if (bbox[2] - bbox[0] >= 360) {\n            minLng = -180;\n            maxLng = 180;\n        } else if (minLng > maxLng) {\n            const easternHem = this.getClusters([minLng, minLat, 180, maxLat], zoom);\n            const westernHem = this.getClusters([-180, minLat, maxLng, maxLat], zoom);\n            return easternHem.concat(westernHem);\n        }\n\n        const tree = this.trees[this._limitZoom(zoom)];\n        const ids = tree.range(lngX(minLng), latY(maxLat), lngX(maxLng), latY(minLat));\n        const data = tree.data;\n        const clusters = [];\n        for (const id of ids) {\n            const k = this.stride * id;\n            clusters.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]);\n        }\n        return clusters;\n    }\n\n    getChildren(clusterId) {\n        const originId = this._getOriginId(clusterId);\n        const originZoom = this._getOriginZoom(clusterId);\n        const errorMsg = 'No cluster with the specified id.';\n\n        const tree = this.trees[originZoom];\n        if (!tree) throw new Error(errorMsg);\n\n        const data = tree.data;\n        if (originId * this.stride >= data.length) throw new Error(errorMsg);\n\n        const r = this.options.radius / (this.options.extent * Math.pow(2, originZoom - 1));\n        const x = data[originId * this.stride];\n        const y = data[originId * this.stride + 1];\n        const ids = tree.within(x, y, r);\n        const children = [];\n        for (const id of ids) {\n            const k = id * this.stride;\n            if (data[k + OFFSET_PARENT] === clusterId) {\n                children.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]);\n            }\n        }\n\n        if (children.length === 0) throw new Error(errorMsg);\n\n        return children;\n    }\n\n    getLeaves(clusterId, limit, offset) {\n        limit = limit || 10;\n        offset = offset || 0;\n\n        const leaves = [];\n        this._appendLeaves(leaves, clusterId, limit, offset, 0);\n\n        return leaves;\n    }\n\n    getTile(z, x, y) {\n        const tree = this.trees[this._limitZoom(z)];\n        const z2 = Math.pow(2, z);\n        const {extent, radius} = this.options;\n        const p = radius / extent;\n        const top = (y - p) / z2;\n        const bottom = (y + 1 + p) / z2;\n\n        const tile = {\n            features: []\n        };\n\n        this._addTileFeatures(\n            tree.range((x - p) / z2, top, (x + 1 + p) / z2, bottom),\n            tree.data, x, y, z2, tile);\n\n        if (x === 0) {\n            this._addTileFeatures(\n                tree.range(1 - p / z2, top, 1, bottom),\n                tree.data, z2, y, z2, tile);\n        }\n        if (x === z2 - 1) {\n            this._addTileFeatures(\n                tree.range(0, top, p / z2, bottom),\n                tree.data, -1, y, z2, tile);\n        }\n\n        return tile.features.length ? tile : null;\n    }\n\n    getClusterExpansionZoom(clusterId) {\n        let expansionZoom = this._getOriginZoom(clusterId) - 1;\n        while (expansionZoom <= this.options.maxZoom) {\n            const children = this.getChildren(clusterId);\n            expansionZoom++;\n            if (children.length !== 1) break;\n            clusterId = children[0].properties.cluster_id;\n        }\n        return expansionZoom;\n    }\n\n    _appendLeaves(result, clusterId, limit, offset, skipped) {\n        const children = this.getChildren(clusterId);\n\n        for (const child of children) {\n            const props = child.properties;\n\n            if (props && props.cluster) {\n                if (skipped + props.point_count <= offset) {\n                    // skip the whole cluster\n                    skipped += props.point_count;\n                } else {\n                    // enter the cluster\n                    skipped = this._appendLeaves(result, props.cluster_id, limit, offset, skipped);\n                    // exit the cluster\n                }\n            } else if (skipped < offset) {\n                // skip a single point\n                skipped++;\n            } else {\n                // add a single point\n                result.push(child);\n            }\n            if (result.length === limit) break;\n        }\n\n        return skipped;\n    }\n\n    _createTree(data) {\n        const tree = new KDBush(data.length / this.stride | 0, this.options.nodeSize, Float32Array);\n        for (let i = 0; i < data.length; i += this.stride) tree.add(data[i], data[i + 1]);\n        tree.finish();\n        tree.data = data;\n        return tree;\n    }\n\n    _addTileFeatures(ids, data, x, y, z2, tile) {\n        for (const i of ids) {\n            const k = i * this.stride;\n            const isCluster = data[k + OFFSET_NUM] > 1;\n\n            let tags, px, py;\n            if (isCluster) {\n                tags = getClusterProperties(data, k, this.clusterProps);\n                px = data[k];\n                py = data[k + 1];\n            } else {\n                const p = this.points[data[k + OFFSET_ID]];\n                tags = p.properties;\n                const [lng, lat] = p.geometry.coordinates;\n                px = lngX(lng);\n                py = latY(lat);\n            }\n\n            const f = {\n                type: 1,\n                geometry: [[\n                    Math.round(this.options.extent * (px * z2 - x)),\n                    Math.round(this.options.extent * (py * z2 - y))\n                ]],\n                tags\n            };\n\n            // assign id\n            let id;\n            if (isCluster || this.options.generateId) {\n                // optionally generate id for points\n                id = data[k + OFFSET_ID];\n            } else {\n                // keep id if already assigned\n                id = this.points[data[k + OFFSET_ID]].id;\n            }\n\n            if (id !== undefined) f.id = id;\n\n            tile.features.push(f);\n        }\n    }\n\n    _limitZoom(z) {\n        return Math.max(this.options.minZoom, Math.min(Math.floor(+z), this.options.maxZoom + 1));\n    }\n\n    _cluster(tree, zoom) {\n        const {radius, extent, reduce, minPoints} = this.options;\n        const r = radius / (extent * Math.pow(2, zoom));\n        const data = tree.data;\n        const nextData = [];\n        const stride = this.stride;\n\n        // loop through each point\n        for (let i = 0; i < data.length; i += stride) {\n            // if we've already visited the point at this zoom level, skip it\n            if (data[i + OFFSET_ZOOM] <= zoom) continue;\n            data[i + OFFSET_ZOOM] = zoom;\n\n            // find all nearby points\n            const x = data[i];\n            const y = data[i + 1];\n            const neighborIds = tree.within(data[i], data[i + 1], r);\n\n            const numPointsOrigin = data[i + OFFSET_NUM];\n            let numPoints = numPointsOrigin;\n\n            // count the number of points in a potential cluster\n            for (const neighborId of neighborIds) {\n                const k = neighborId * stride;\n                // filter out neighbors that are already processed\n                if (data[k + OFFSET_ZOOM] > zoom) numPoints += data[k + OFFSET_NUM];\n            }\n\n            // if there were neighbors to merge, and there are enough points to form a cluster\n            if (numPoints > numPointsOrigin && numPoints >= minPoints) {\n                let wx = x * numPointsOrigin;\n                let wy = y * numPointsOrigin;\n\n                let clusterProperties;\n                let clusterPropIndex = -1;\n\n                // encode both zoom and point index on which the cluster originated -- offset by total length of features\n                const id = ((i / stride | 0) << 5) + (zoom + 1) + this.points.length;\n\n                for (const neighborId of neighborIds) {\n                    const k = neighborId * stride;\n\n                    if (data[k + OFFSET_ZOOM] <= zoom) continue;\n                    data[k + OFFSET_ZOOM] = zoom; // save the zoom (so it doesn't get processed twice)\n\n                    const numPoints2 = data[k + OFFSET_NUM];\n                    wx += data[k] * numPoints2; // accumulate coordinates for calculating weighted center\n                    wy += data[k + 1] * numPoints2;\n\n                    data[k + OFFSET_PARENT] = id;\n\n                    if (reduce) {\n                        if (!clusterProperties) {\n                            clusterProperties = this._map(data, i, true);\n                            clusterPropIndex = this.clusterProps.length;\n                            this.clusterProps.push(clusterProperties);\n                        }\n                        reduce(clusterProperties, this._map(data, k));\n                    }\n                }\n\n                data[i + OFFSET_PARENT] = id;\n                nextData.push(wx / numPoints, wy / numPoints, Infinity, id, -1, numPoints);\n                if (reduce) nextData.push(clusterPropIndex);\n\n            } else { // left points as unclustered\n                for (let j = 0; j < stride; j++) nextData.push(data[i + j]);\n\n                if (numPoints > 1) {\n                    for (const neighborId of neighborIds) {\n                        const k = neighborId * stride;\n                        if (data[k + OFFSET_ZOOM] <= zoom) continue;\n                        data[k + OFFSET_ZOOM] = zoom;\n                        for (let j = 0; j < stride; j++) nextData.push(data[k + j]);\n                    }\n                }\n            }\n        }\n\n        return nextData;\n    }\n\n    // get index of the point from which the cluster originated\n    _getOriginId(clusterId) {\n        return (clusterId - this.points.length) >> 5;\n    }\n\n    // get zoom of the point from which the cluster originated\n    _getOriginZoom(clusterId) {\n        return (clusterId - this.points.length) % 32;\n    }\n\n    _map(data, i, clone) {\n        if (data[i + OFFSET_NUM] > 1) {\n            const props = this.clusterProps[data[i + OFFSET_PROP]];\n            return clone ? Object.assign({}, props) : props;\n        }\n        const original = this.points[data[i + OFFSET_ID]].properties;\n        const result = this.options.map(original);\n        return clone && result === original ? Object.assign({}, result) : result;\n    }\n}\n\nfunction getClusterJSON(data, i, clusterProps) {\n    return {\n        type: 'Feature',\n        id: data[i + OFFSET_ID],\n        properties: getClusterProperties(data, i, clusterProps),\n        geometry: {\n            type: 'Point',\n            coordinates: [xLng(data[i]), yLat(data[i + 1])]\n        }\n    };\n}\n\nfunction getClusterProperties(data, i, clusterProps) {\n    const count = data[i + OFFSET_NUM];\n    const abbrev =\n        count >= 10000 ? `${Math.round(count / 1000)  }k` :\n        count >= 1000 ? `${Math.round(count / 100) / 10  }k` : count;\n    const propIndex = data[i + OFFSET_PROP];\n    const properties = propIndex === -1 ? {} : Object.assign({}, clusterProps[propIndex]);\n    return Object.assign(properties, {\n        cluster: true,\n        cluster_id: data[i + OFFSET_ID],\n        point_count: count,\n        point_count_abbreviated: abbrev\n    });\n}\n\n// longitude/latitude to spherical mercator in [0..1] range\nfunction lngX(lng) {\n    return lng / 360 + 0.5;\n}\nfunction latY(lat) {\n    const sin = Math.sin(lat * Math.PI / 180);\n    const y = (0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI);\n    return y < 0 ? 0 : y > 1 ? 1 : y;\n}\n\n// spherical mercator to longitude/latitude\nfunction xLng(x) {\n    return (x - 0.5) * 360;\n}\nfunction yLat(y) {\n    const y2 = (180 - y * 360) * Math.PI / 180;\n    return 360 * Math.atan(Math.exp(y2)) / Math.PI - 90;\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AbstractAlgorithm, AlgorithmInput, AlgorithmOutput } from \"./core\";\nimport SuperCluster, { ClusterFeature } from \"supercluster\";\nimport { MarkerUtils, Marker } from \"../marker-utils\";\nimport { Cluster } from \"../cluster\";\nimport equal from \"fast-deep-equal\";\n\nexport type SuperClusterOptions = SuperCluster.Options<\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  { [name: string]: any },\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  { [name: string]: any }\n>;\n\n/**\n * A very fast JavaScript algorithm for geospatial point clustering using KD trees.\n *\n * @see https://www.npmjs.com/package/supercluster for more information on options.\n */\nexport class SuperClusterAlgorithm extends AbstractAlgorithm {\n  protected superCluster: SuperCluster;\n  protected markers: Marker[];\n  protected clusters: Cluster[];\n  protected state = { zoom: -1 };\n\n  constructor({ maxZoom, radius = 60, ...options }: SuperClusterOptions) {\n    super({ maxZoom });\n\n    this.superCluster = new SuperCluster({\n      maxZoom: this.maxZoom,\n      radius,\n      ...options,\n    });\n  }\n\n  public calculate(input: AlgorithmInput): AlgorithmOutput {\n    let changed = false;\n    const state = { zoom: input.map.getZoom() };\n\n    if (!equal(input.markers, this.markers)) {\n      changed = true;\n      // TODO use proxy to avoid copy?\n      this.markers = [...input.markers];\n\n      const points = this.markers.map((marker) => {\n        const position = MarkerUtils.getPosition(marker);\n        const coordinates = [position.lng(), position.lat()];\n        return {\n          type: \"Feature\" as const,\n          geometry: {\n            type: \"Point\" as const,\n            coordinates,\n          },\n          properties: { marker },\n        };\n      });\n      this.superCluster.load(points);\n    }\n\n    if (!changed) {\n      if (this.state.zoom <= this.maxZoom || state.zoom <= this.maxZoom) {\n        changed = !equal(this.state, state);\n      }\n    }\n\n    this.state = state;\n\n    if (changed) {\n      this.clusters = this.cluster(input);\n    }\n\n    return { clusters: this.clusters, changed };\n  }\n\n  public cluster({ map }: AlgorithmInput): Cluster[] {\n    return this.superCluster\n      .getClusters([-180, -90, 180, 90], Math.round(map.getZoom()))\n      .map((feature: ClusterFeature<{ marker: Marker }>) =>\n        this.transformCluster(feature)\n      );\n  }\n\n  protected transformCluster({\n    geometry: {\n      coordinates: [lng, lat],\n    },\n    properties,\n  }: ClusterFeature<{ marker: Marker }>): Cluster {\n    if (properties.cluster) {\n      return new Cluster({\n        markers: this.superCluster\n          .getLeaves(properties.cluster_id, Infinity)\n          .map((leaf) => leaf.properties.marker),\n        position: { lat, lng },\n      });\n    }\n\n    const marker = properties.marker;\n\n    return new Cluster({\n      markers: [marker],\n      position: MarkerUtils.getPosition(marker),\n    });\n  }\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Cluster } from \"./cluster\";\nimport { Marker, MarkerUtils } from \"./marker-utils\";\n\n/**\n * Provides statistics on all clusters in the current render cycle for use in {@link Renderer.render}.\n */\nexport class ClusterStats {\n  public readonly markers: { sum: number };\n  public readonly clusters: {\n    count: number;\n    markers: {\n      mean: number;\n      sum: number;\n      min: number;\n      max: number;\n    };\n  };\n\n  constructor(markers: Marker[], clusters: Cluster[]) {\n    this.markers = { sum: markers.length };\n    const clusterMarkerCounts = clusters.map((a) => a.count);\n    const clusterMarkerSum = clusterMarkerCounts.reduce((a, b) => a + b, 0);\n\n    this.clusters = {\n      count: clusters.length,\n      markers: {\n        mean: clusterMarkerSum / clusters.length,\n        sum: clusterMarkerSum,\n        min: Math.min(...clusterMarkerCounts),\n        max: Math.max(...clusterMarkerCounts),\n      },\n    };\n  }\n}\n\nexport interface Renderer {\n  /**\n   * Turn a {@link Cluster} into a `Marker`.\n   *\n   * Below is a simple example to create a marker with the number of markers in the cluster as a label.\n   *\n   * ```typescript\n   * return new google.maps.Marker({\n   *   position,\n   *   label: String(markers.length),\n   * });\n   * ```\n   */\n  render(cluster: Cluster, stats: ClusterStats, map: google.maps.Map): Marker;\n}\n\nexport class DefaultRenderer implements Renderer {\n  /**\n   * The default render function for the library used by {@link MarkerClusterer}.\n   *\n   * Currently set to use the following:\n   *\n   * ```typescript\n   * // change color if this cluster has more markers than the mean cluster\n   * const color =\n   *   count > Math.max(10, stats.clusters.markers.mean)\n   *     ? \"#ff0000\"\n   *     : \"#0000ff\";\n   *\n   * // create svg url with fill color\n   * const svg = window.btoa(`\n   * <svg fill=\"${color}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\">\n   *   <circle cx=\"120\" cy=\"120\" opacity=\".6\" r=\"70\" />\n   *   <circle cx=\"120\" cy=\"120\" opacity=\".3\" r=\"90\" />\n   *   <circle cx=\"120\" cy=\"120\" opacity=\".2\" r=\"110\" />\n   *   <circle cx=\"120\" cy=\"120\" opacity=\".1\" r=\"130\" />\n   * </svg>`);\n   *\n   * // create marker using svg icon\n   * return new google.maps.Marker({\n   *   position,\n   *   icon: {\n   *     url: `data:image/svg+xml;base64,${svg}`,\n   *     scaledSize: new google.maps.Size(45, 45),\n   *   },\n   *   label: {\n   *     text: String(count),\n   *     color: \"rgba(255,255,255,0.9)\",\n   *     fontSize: \"12px\",\n   *   },\n   *   // adjust zIndex to be above other markers\n   *   zIndex: 1000 + count,\n   * });\n   * ```\n   */\n  public render(\n    { count, position }: Cluster,\n    stats: ClusterStats,\n    map: google.maps.Map\n  ): Marker {\n    // change color if this cluster has more markers than the mean cluster\n    const color =\n      count > Math.max(10, stats.clusters.markers.mean) ? \"#ff0000\" : \"#0000ff\";\n\n    // create svg literal with fill color\n    const svg = `<svg fill=\"${color}\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 240 240\" width=\"50\" height=\"50\">\n<circle cx=\"120\" cy=\"120\" opacity=\".6\" r=\"70\" />\n<circle cx=\"120\" cy=\"120\" opacity=\".3\" r=\"90\" />\n<circle cx=\"120\" cy=\"120\" opacity=\".2\" r=\"110\" />\n<text x=\"50%\" y=\"50%\" style=\"fill:#fff\" text-anchor=\"middle\" font-size=\"50\" dominant-baseline=\"middle\" font-family=\"roboto,arial,sans-serif\">${count}</text>\n</svg>`;\n\n    const title = `Cluster of ${count} markers`,\n      // adjust zIndex to be above other markers\n      zIndex: number = Number(google.maps.Marker.MAX_ZINDEX) + count;\n\n    if (MarkerUtils.isAdvancedMarkerAvailable(map)) {\n      // create cluster SVG element\n      const parser = new DOMParser();\n      const svgEl = parser.parseFromString(\n        svg,\n        \"image/svg+xml\"\n      ).documentElement;\n      svgEl.setAttribute(\"transform\", \"translate(0 25)\");\n\n      const clusterOptions: google.maps.marker.AdvancedMarkerElementOptions = {\n        map,\n        position,\n        zIndex,\n        title,\n        content: svgEl,\n      };\n      return new google.maps.marker.AdvancedMarkerElement(clusterOptions);\n    }\n\n    const clusterOptions: google.maps.MarkerOptions = {\n      position,\n      zIndex,\n      title,\n      icon: {\n        url: `data:image/svg+xml;base64,${btoa(svg)}`,\n        anchor: new google.maps.Point(25, 25),\n      },\n    };\n    return new google.maps.Marker(clusterOptions);\n  }\n}\n","/**\n * Copyright 2019 Google LLC. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\nexport interface OverlayViewSafe extends google.maps.OverlayView {}\n\n/**\n * Extends an object's prototype by another's.\n *\n * @param type1 The Type to be extended.\n * @param type2 The Type to extend with.\n * @ignore\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction extend(type1: any, type2: any): void {\n  /* istanbul ignore next */\n  // eslint-disable-next-line prefer-const\n  for (let property in type2.prototype) {\n    type1.prototype[property] = type2.prototype[property];\n  }\n}\n\n/**\n * @ignore\n */\nexport class OverlayViewSafe {\n  constructor() {\n    // MarkerClusterer implements google.maps.OverlayView interface. We use the\n    // extend function to extend MarkerClusterer with google.maps.OverlayView\n    // because it might not always be available when the code is defined so we\n    // look for it at the last possible moment. If it doesn't exist now then\n    // there is no point going ahead :)\n    extend(OverlayViewSafe, google.maps.OverlayView);\n  }\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  Algorithm,\n  AlgorithmOptions,\n  SuperClusterAlgorithm,\n} from \"./algorithms\";\nimport { ClusterStats, DefaultRenderer, Renderer } from \"./renderer\";\nimport { Cluster } from \"./cluster\";\nimport { OverlayViewSafe } from \"./overlay-view-safe\";\nimport { MarkerUtils, Marker } from \"./marker-utils\";\n\nexport type onClusterClickHandler = (\n  event: google.maps.MapMouseEvent,\n  cluster: Cluster,\n  map: google.maps.Map\n) => void;\nexport interface MarkerClustererOptions {\n  markers?: Marker[];\n  /**\n   * An algorithm to cluster markers. Default is {@link SuperClusterAlgorithm}. Must\n   * provide a `calculate` method accepting {@link AlgorithmInput} and returning\n   * an array of {@link Cluster}.\n   */\n  algorithm?: Algorithm;\n  algorithmOptions?: AlgorithmOptions;\n  map?: google.maps.Map | null;\n  /**\n   * An object that converts a {@link Cluster} into a `google.maps.Marker`.\n   * Default is {@link DefaultRenderer}.\n   */\n  renderer?: Renderer;\n  onClusterClick?: onClusterClickHandler;\n}\n\nexport enum MarkerClustererEvents {\n  CLUSTERING_BEGIN = \"clusteringbegin\",\n  CLUSTERING_END = \"clusteringend\",\n  CLUSTER_CLICK = \"click\",\n}\n\nexport const defaultOnClusterClickHandler: onClusterClickHandler = (\n  _: google.maps.MapMouseEvent,\n  cluster: Cluster,\n  map: google.maps.Map\n): void => {\n  map.fitBounds(cluster.bounds);\n};\n/**\n * MarkerClusterer creates and manages per-zoom-level clusters for large amounts\n * of markers. See {@link MarkerClustererOptions} for more details.\n *\n */\nexport class MarkerClusterer extends OverlayViewSafe {\n  /** @see {@link MarkerClustererOptions.onClusterClick} */\n  public onClusterClick: onClusterClickHandler;\n  /** @see {@link MarkerClustererOptions.algorithm} */\n  protected algorithm: Algorithm;\n  protected clusters: Cluster[];\n  protected markers: Marker[];\n  /** @see {@link MarkerClustererOptions.renderer} */\n  protected renderer: Renderer;\n  /** @see {@link MarkerClustererOptions.map} */\n  protected map: google.maps.Map | null;\n  protected idleListener: google.maps.MapsEventListener;\n\n  constructor({\n    map,\n    markers = [],\n    algorithmOptions = {},\n    algorithm = new SuperClusterAlgorithm(algorithmOptions),\n    renderer = new DefaultRenderer(),\n    onClusterClick = defaultOnClusterClickHandler,\n  }: MarkerClustererOptions) {\n    super();\n    this.markers = [...markers];\n    this.clusters = [];\n\n    this.algorithm = algorithm;\n    this.renderer = renderer;\n\n    this.onClusterClick = onClusterClick;\n\n    if (map) {\n      this.setMap(map);\n    }\n  }\n\n  public addMarker(marker: Marker, noDraw?: boolean): void {\n    if (this.markers.includes(marker)) {\n      return;\n    }\n\n    this.markers.push(marker);\n    if (!noDraw) {\n      this.render();\n    }\n  }\n\n  public addMarkers(markers: Marker[], noDraw?: boolean): void {\n    markers.forEach((marker) => {\n      this.addMarker(marker, true);\n    });\n\n    if (!noDraw) {\n      this.render();\n    }\n  }\n\n  public removeMarker(marker: Marker, noDraw?: boolean): boolean {\n    const index = this.markers.indexOf(marker);\n\n    if (index === -1) {\n      // Marker is not in our list of markers, so do nothing:\n      return false;\n    }\n\n    MarkerUtils.setMap(marker, null);\n    this.markers.splice(index, 1); // Remove the marker from the list of managed markers\n\n    if (!noDraw) {\n      this.render();\n    }\n\n    return true;\n  }\n\n  public removeMarkers(markers: Marker[], noDraw?: boolean): boolean {\n    let removed = false;\n\n    markers.forEach((marker) => {\n      removed = this.removeMarker(marker, true) || removed;\n    });\n\n    if (removed && !noDraw) {\n      this.render();\n    }\n\n    return removed;\n  }\n\n  public clearMarkers(noDraw?: boolean): void {\n    this.markers.length = 0;\n\n    if (!noDraw) {\n      this.render();\n    }\n  }\n\n  /**\n   * Recalculates and draws all the marker clusters.\n   */\n  public render(): void {\n    const map = this.getMap();\n    if (map instanceof google.maps.Map && map.getProjection()) {\n      google.maps.event.trigger(\n        this,\n        MarkerClustererEvents.CLUSTERING_BEGIN,\n        this\n      );\n      const { clusters, changed } = this.algorithm.calculate({\n        markers: this.markers,\n        map,\n        mapCanvasProjection: this.getProjection(),\n      });\n\n      // Allow algorithms to return flag on whether the clusters/markers have changed.\n      if (changed || changed == undefined) {\n        // Accumulate the markers of the clusters composed of a single marker.\n        // Those clusters directly use the marker.\n        // Clusters with more than one markers use a group marker generated by a renderer.\n        const singleMarker = new Set<Marker>();\n        for (const cluster of clusters) {\n          if (cluster.markers.length == 1) {\n            singleMarker.add(cluster.markers[0]);\n          }\n        }\n\n        const groupMarkers: Marker[] = [];\n        // Iterate the clusters that are currently rendered.\n        for (const cluster of this.clusters) {\n          if (cluster.marker == null) {\n            continue;\n          }\n          if (cluster.markers.length == 1) {\n            if (!singleMarker.has(cluster.marker)) {\n              // The marker:\n              // - was previously rendered because it is from a cluster with 1 marker,\n              // - should no more be rendered as it is not in singleMarker.\n              MarkerUtils.setMap(cluster.marker, null);\n            }\n          } else {\n            // Delay the removal of old group markers to avoid flickering.\n            groupMarkers.push(cluster.marker);\n          }\n        }\n\n        this.clusters = clusters;\n        this.renderClusters();\n\n        // Delayed removal of the markers of the former groups.\n        requestAnimationFrame(() =>\n          groupMarkers.forEach((marker) => MarkerUtils.setMap(marker, null))\n        );\n      }\n      google.maps.event.trigger(\n        this,\n        MarkerClustererEvents.CLUSTERING_END,\n        this\n      );\n    }\n  }\n\n  public onAdd(): void {\n    this.idleListener = this.getMap().addListener(\n      \"idle\",\n      this.render.bind(this)\n    );\n    this.render();\n  }\n\n  public onRemove(): void {\n    google.maps.event.removeListener(this.idleListener);\n    this.reset();\n  }\n\n  protected reset(): void {\n    this.markers.forEach((marker) => MarkerUtils.setMap(marker, null));\n    this.clusters.forEach((cluster) => cluster.delete());\n    this.clusters = [];\n  }\n\n  protected renderClusters(): void {\n    // Generate stats to pass to renderers.\n    const stats = new ClusterStats(this.markers, this.clusters);\n    const map = this.getMap() as google.maps.Map;\n\n    this.clusters.forEach((cluster) => {\n      if (cluster.markers.length === 1) {\n        cluster.marker = cluster.markers[0];\n      } else {\n        // Generate the marker to represent the group.\n        cluster.marker = this.renderer.render(cluster, stats, map);\n        // Make sure all individual markers are removed from the map.\n        cluster.markers.forEach((marker) => MarkerUtils.setMap(marker, null));\n        if (this.onClusterClick) {\n          cluster.marker.addListener(\n            \"click\",\n            /* istanbul ignore next */\n            (event: google.maps.MapMouseEvent) => {\n              google.maps.event.trigger(\n                this,\n                MarkerClustererEvents.CLUSTER_CLICK,\n                cluster\n              );\n              this.onClusterClick(event, cluster, map);\n            }\n          );\n        }\n      }\n      MarkerUtils.setMap(cluster.marker, map);\n    });\n  }\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbstractViewportAlgorithm,\n  AlgorithmInput,\n  AlgorithmOutput,\n  ViewportAlgorithmOptions,\n} from \"./core\";\nimport {\n  distanceBetweenPoints,\n  extendBoundsToPaddedViewport,\n  filterMarkersToPaddedViewport,\n} from \"./utils\";\n\nimport { Cluster } from \"../cluster\";\nimport equal from \"fast-deep-equal\";\nimport { MarkerUtils, Marker } from \"../marker-utils\";\n\nexport interface GridOptions extends ViewportAlgorithmOptions {\n  gridSize?: number;\n  /**\n   * Max distance between cluster center and point in meters.\n   * @default 10000\n   */\n  maxDistance?: number;\n}\n\n/**\n * The default Grid algorithm historically used in Google Maps marker\n * clustering.\n *\n * The Grid algorithm does not implement caching and markers may flash as the\n * viewport changes. Instead use {@link SuperClusterAlgorithm}.\n */\nexport class GridAlgorithm extends AbstractViewportAlgorithm {\n  protected gridSize: number;\n  protected maxDistance: number;\n  protected clusters: Cluster[] = [];\n  protected state = { zoom: -1 };\n\n  constructor({ maxDistance = 40000, gridSize = 40, ...options }: GridOptions) {\n    super(options);\n\n    this.maxDistance = maxDistance;\n    this.gridSize = gridSize;\n  }\n\n  public calculate({\n    markers,\n    map,\n    mapCanvasProjection,\n  }: AlgorithmInput): AlgorithmOutput {\n    const state = { zoom: map.getZoom() };\n    let changed = false;\n    if (this.state.zoom >= this.maxZoom && state.zoom >= this.maxZoom) {\n      // still at or beyond maxZoom, no change\n    } else {\n      changed = !equal(this.state, state);\n    }\n    this.state = state;\n    if (map.getZoom() >= this.maxZoom) {\n      return {\n        clusters: this.noop({\n          markers,\n        }),\n        changed,\n      };\n    }\n\n    return {\n      clusters: this.cluster({\n        markers: filterMarkersToPaddedViewport(\n          map,\n          mapCanvasProjection,\n          markers,\n          this.viewportPadding\n        ),\n        map,\n        mapCanvasProjection,\n      }),\n    };\n  }\n\n  protected cluster({\n    markers,\n    map,\n    mapCanvasProjection,\n  }: AlgorithmInput): Cluster[] {\n    this.clusters = [];\n    markers.forEach((marker) => {\n      this.addToClosestCluster(marker, map, mapCanvasProjection);\n    });\n\n    return this.clusters;\n  }\n\n  protected addToClosestCluster(\n    marker: Marker,\n    map: google.maps.Map,\n    projection: google.maps.MapCanvasProjection\n  ): void {\n    let maxDistance = this.maxDistance; // Some large number\n    let cluster: Cluster = null;\n\n    for (let i = 0; i < this.clusters.length; i++) {\n      const candidate = this.clusters[i];\n      const distance = distanceBetweenPoints(\n        candidate.bounds.getCenter().toJSON(),\n        MarkerUtils.getPosition(marker).toJSON()\n      );\n\n      if (distance < maxDistance) {\n        maxDistance = distance;\n        cluster = candidate;\n      }\n    }\n\n    if (\n      cluster &&\n      extendBoundsToPaddedViewport(\n        cluster.bounds,\n        projection,\n        this.gridSize\n      ).contains(MarkerUtils.getPosition(marker))\n    ) {\n      cluster.push(marker);\n    } else {\n      const cluster = new Cluster({ markers: [marker] });\n      this.clusters.push(cluster);\n    }\n  }\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbstractAlgorithm,\n  AlgorithmInput,\n  AlgorithmOptions,\n  AlgorithmOutput,\n} from \"./core\";\n\nimport { Cluster } from \"../cluster\";\n\n/**\n * Noop algorithm does not generate any clusters or filter markers by the an extended viewport.\n */\nexport class NoopAlgorithm extends AbstractAlgorithm {\n  constructor({ ...options }: AlgorithmOptions) {\n    super(options);\n  }\n  public calculate({\n    markers,\n    map,\n    mapCanvasProjection,\n  }: AlgorithmInput): AlgorithmOutput {\n    return {\n      clusters: this.cluster({ markers, map, mapCanvasProjection }),\n      changed: false,\n    };\n  }\n\n  protected cluster(input: AlgorithmInput): Cluster[] {\n    return this.noop(input);\n  }\n}\n","/**\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbstractViewportAlgorithm,\n  AlgorithmInput,\n  AlgorithmOutput,\n  ViewportAlgorithmOptions,\n} from \"./core\";\nimport { SuperClusterOptions } from \"./supercluster\";\nimport SuperCluster, { ClusterFeature } from \"supercluster\";\nimport { MarkerUtils, Marker } from \"../marker-utils\";\nimport { Cluster } from \"../cluster\";\nimport { getPaddedViewport } from \"./utils\";\nimport equal from \"fast-deep-equal\";\n\nexport interface SuperClusterViewportOptions\n  extends SuperClusterOptions,\n    ViewportAlgorithmOptions {}\n\nexport interface SuperClusterViewportState {\n  /* The current zoom level */\n  zoom: number;\n\n  /* The current viewport as a bbox [westLng, southLat, eastLng, northLat] */\n  view: [number, number, number, number];\n}\n\n/**\n * A very fast JavaScript algorithm for geospatial point clustering using KD trees.\n *\n * @see https://www.npmjs.com/package/supercluster for more information on options.\n */\nexport class SuperClusterViewportAlgorithm extends AbstractViewportAlgorithm {\n  protected superCluster: SuperCluster;\n  protected markers: Marker[];\n  protected clusters: Cluster[];\n  protected state: SuperClusterViewportState;\n\n  constructor({\n    maxZoom,\n    radius = 60,\n    viewportPadding = 60,\n    ...options\n  }: SuperClusterViewportOptions) {\n    super({ maxZoom, viewportPadding });\n\n    this.superCluster = new SuperCluster({\n      maxZoom: this.maxZoom,\n      radius,\n      ...options,\n    });\n\n    this.state = { zoom: -1, view: [0, 0, 0, 0] };\n  }\n\n  public calculate(input: AlgorithmInput): AlgorithmOutput {\n    const state: SuperClusterViewportState = {\n      zoom: Math.round(input.map.getZoom()),\n      view: getPaddedViewport(\n        input.map.getBounds(),\n        input.mapCanvasProjection,\n        this.viewportPadding\n      ),\n    };\n\n    let changed = !equal(this.state, state);\n    if (!equal(input.markers, this.markers)) {\n      changed = true;\n      // TODO use proxy to avoid copy?\n      this.markers = [...input.markers];\n\n      const points = this.markers.map((marker) => {\n        const position = MarkerUtils.getPosition(marker);\n        const coordinates = [position.lng(), position.lat()];\n        return {\n          type: \"Feature\" as const,\n          geometry: {\n            type: \"Point\" as const,\n            coordinates,\n          },\n          properties: { marker },\n        };\n      });\n      this.superCluster.load(points);\n    }\n\n    if (changed) {\n      this.clusters = this.cluster(input);\n      this.state = state;\n    }\n\n    return { clusters: this.clusters, changed };\n  }\n\n  public cluster({ map, mapCanvasProjection }: AlgorithmInput): Cluster[] {\n    /* recalculate new state because we can't use the cached version. */\n    const state: SuperClusterViewportState = {\n      zoom: Math.round(map.getZoom()),\n      view: getPaddedViewport(\n        map.getBounds(),\n        mapCanvasProjection,\n        this.viewportPadding\n      ),\n    };\n\n    return this.superCluster\n      .getClusters(state.view, state.zoom)\n      .map((feature: ClusterFeature<{ marker: Marker }>) =>\n        this.transformCluster(feature)\n      );\n  }\n\n  protected transformCluster({\n    geometry: {\n      coordinates: [lng, lat],\n    },\n    properties,\n  }: ClusterFeature<{ marker: Marker }>): Cluster {\n    if (properties.cluster) {\n      return new Cluster({\n        markers: this.superCluster\n          .getLeaves(properties.cluster_id, Infinity)\n          .map((leaf) => leaf.properties.marker),\n        position: { lat, lng },\n      });\n    }\n\n    const marker = properties.marker;\n\n    return new Cluster({\n      markers: [marker],\n      position: MarkerUtils.getPosition(marker),\n    });\n  }\n}\n"],"names":["__rest","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","MarkerUtils","static","map","google","maps","marker","getMapCapabilities","isAdvancedMarkersAvailable","AdvancedMarkerElement","this","isAdvancedMarker","setMap","position","LatLng","lat","lng","getPosition","getVisible","Cluster","constructor","_ref","markers","_position","bounds","LatLngBounds","extend","getCenter","count","filter","m","push","delete","undefined","filterMarkersToPaddedViewport","mapCanvasProjection","viewportPaddingPixels","extendedMapBounds","extendBoundsToPaddedViewport","getBounds","contains","projection","numPixels","northEast","southWest","latLngBoundsToPixelBounds","extendedPixelBounds","extendPixelBounds","pixelBoundsToLatLngBounds","getPaddedViewport","pixels","extended","ne","getNorthEast","sw","getSouthWest","distanceBetweenPoints","p1","p2","dLat","Math","PI","dLon","sinDLat","sin","sinDLon","a","cos","atan2","sqrt","fromLatLngToDivPixel","x","y","_ref2","fromDivPixelToLatLng","AbstractAlgorithm","maxZoom","noop","AbstractViewportAlgorithm","_a","viewportPadding","super","calculate","_ref3","getZoom","clusters","changed","cluster","fastDeepEqual","equal","b","keys","Array","isArray","RegExp","source","flags","valueOf","toString","key","ARRAY_TYPES","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Uint16Array","Int32Array","Uint32Array","Float32Array","Float64Array","KDBush","data","ArrayBuffer","Error","magic","versionAndType","version","ArrayType","nodeSize","numItems","isNaN","min","max","IndexArrayType","arrayTypeIndex","coordsByteSize","BYTES_PER_ELEMENT","idsByteSize","padCoords","ids","coords","_pos","_finished","set","add","index","finish","numAdded","sort","range","minX","minY","maxX","maxY","stack","result","axis","pop","right","left","within","qx","qy","r","r2","sqDist","select","k","n","z","log","exp","sd","floor","j","swapItem","swap","arr","tmp","ax","ay","bx","by","dx","dy","defaultOptions","minZoom","minPoints","radius","extent","generateId","reduce","props","fround","OFFSET_ID","OFFSET_NUM","OFFSET_PROP","Supercluster","options","assign","create","trees","stride","clusterProps","load","points","console","time","timerId","geometry","coordinates","lngX","latY","Infinity","tree","_createTree","timeEnd","now","Date","_cluster","getClusters","bbox","zoom","minLng","minLat","maxLng","maxLat","easternHem","westernHem","concat","_limitZoom","id","getClusterJSON","getChildren","clusterId","originId","_getOriginId","originZoom","_getOriginZoom","errorMsg","pow","children","getLeaves","limit","offset","leaves","_appendLeaves","getTile","z2","top","bottom","tile","features","_addTileFeatures","getClusterExpansionZoom","expansionZoom","properties","cluster_id","skipped","child","point_count","isCluster","tags","px","py","getClusterProperties","f","type","round","nextData","neighborIds","numPointsOrigin","numPoints","neighborId","clusterProperties","wx","wy","clusterPropIndex","numPoints2","_map","clone","original","yLat","abbrev","propIndex","point_count_abbreviated","y2","atan","SuperClusterAlgorithm","state","superCluster","SuperCluster","input","feature","transformCluster","leaf","ClusterStats","sum","clusterMarkerCounts","clusterMarkerSum","mean","DefaultRenderer","render","stats","svg","title","zIndex","Number","Marker","MAX_ZINDEX","isAdvancedMarkerAvailable","svgEl","DOMParser","parseFromString","documentElement","setAttribute","clusterOptions","content","icon","url","btoa","anchor","Point","OverlayViewSafe","type1","type2","property","OverlayView","MarkerClustererEvents","exports","defaultOnClusterClickHandler","_","fitBounds","maxDistance","gridSize","forEach","addToClosestCluster","candidate","distance","toJSON","algorithmOptions","algorithm","renderer","onClusterClick","addMarker","noDraw","includes","addMarkers","removeMarker","splice","removeMarkers","removed","clearMarkers","getMap","Map","getProjection","event","trigger","CLUSTERING_BEGIN","singleMarker","Set","groupMarkers","has","renderClusters","requestAnimationFrame","CLUSTERING_END","onAdd","idleListener","addListener","bind","onRemove","removeListener","reset","CLUSTER_CLICK","view"],"mappings":"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"}
\ No newline at end of file
index 989207263500561ac1356991d89db9f04b3c4822..33d559212fec37ba450cbe841ab47de816ef12f9 100644 (file)
@@ -60,7 +60,7 @@ Expecting `+Z.join(", ")+", got '"+(this.terminals_[T]||T)+"'":ae="Parse error o
             time::after {
               content: " (" attr(title) ")";
             }
-          }`,x.append(D)}m&&(this.#a.dateTime=g.toISOString(),this.#a.title=d.DateAndTime.format(g));let k;if(this.static)k=this.#a.title;else if(E<w.OneMinute)k=window.WoltLabLanguage.getPhrase("wcf.date.relative.now");else if(E<w.OneHour){let x=Math.trunc(E/w.OneMinute);k=d.Minutes.format(x*-1,"minute")}else if(E<w.TwelveHours){let x=Math.trunc(E/w.OneHour);k=d.Hours.format(x*-1,"hour")}else if(E<w.SixDays){let x=d.DayOfWeekAndTime.formatToParts(g);x[0].type==="weekday"?g.getTime()>t?k=this.#t(x,0):g.getTime()>a?k=this.#t(x,-1):k=x.map(V=>V.value).join(""):k=d.DateAndTime.format(g)}else k=d.Date.format(g);k=k.charAt(0).toUpperCase()+k.slice(1),this.#a.textContent=k}#t(m,g){return m.map(k=>k.type==="weekday"?d.TodayOrYesterday.format(g,"day"):k.value).join("")}}window.customElements.define("woltlab-core-date-time",q);let S=()=>{document.querySelectorAll("woltlab-core-date-time").forEach(h=>h.refresh(!1))},z,P=()=>{z=window.setInterval(()=>{i(),S()},6e4)};document.addEventListener("DOMContentLoaded",()=>P(),{once:!0}),document.addEventListener("visibilitychange",()=>{document.hidden?window.clearInterval(z):(S(),P())})}{class e extends HTMLElement{#e;constructor(){super(),this.#e=document.createElement("input"),this.#e.type="file",this.#e.classList.add("woltlabCoreFileUpload__input"),this.#e.addEventListener("change",()=>{let{files:r}=this.#e;if(!(r===null||r.length===0)){for(let c of r){let t=new CustomEvent("shouldUpload",{cancelable:!0,detail:c});if(this.dispatchEvent(t),t.defaultPrevented)continue;let a=new CustomEvent("upload",{detail:c});this.dispatchEvent(a)}this.#e.value=""}})}connectedCallback(){let r=this.dataset.fileExtensions||"";r!==""&&(this.#e.accept=r);let c=this.maximumCount;(c>1||c===-1)&&(this.#e.multiple=!0);let t=document.createElement("fa-icon");t.setIcon("upload");let a=document.createElement("button");a.type="button",a.classList.add("button","woltlabCoreFileUpload__button"),a.addEventListener("keydown",i=>{(i.key==="Enter"||i.key===" ")&&this.#e.click()}),a.append(t,window.WoltLabLanguage.getPhrase("wcf.global.button.upload"),this.#e),this.append(a)}get maximumCount(){return parseInt(this.dataset.maximumCount||"1")}get maximumSize(){return parseInt(this.dataset.maximumSize||"-1")}get disabled(){return this.#e.disabled}set disabled(r){this.#e.disabled=!!r}}window.customElements.define("woltlab-core-file-upload",e)}{let l=[24,48,96];class r extends HTMLElement{#e;#a;connectedCallback(){this.#e===void 0&&this.#t()}attributeChangedCallback(t,a,i){if(t==="size"){let p=parseInt(i||"");if(!l.includes(p)){let d=parseInt(a||"");l.includes(d)||(d=24),this.setAttribute(t,d.toString())}}}#t(){this.classList.add("loading-indicator"),this.hasAttribute("size")||this.setAttribute("size","24"),this.#e=document.createElement("fa-icon"),this.#e.size=this.size,this.#e.setIcon("spinner"),this.#a=document.createElement("span"),this.#a.classList.add("loading-indicator__text"),this.#a.textContent=window.WoltLabLanguage.getPhrase("wcf.global.loading"),this.#a.hidden=this.hideText;let t=document.createElement("div");t.classList.add("loading-indicator__wrapper"),t.append(this.#e,this.#a),this.append(t)}get size(){return parseInt(this.getAttribute("size"))}set size(t){if(!l.includes(t))throw new TypeError(`The size ${t} is unrecognized, permitted values are ${l.join(", ")}.`);this.setAttribute("size",t.toString()),this.#e&&(this.#e.size=t)}get hideText(){return this.hasAttribute("hide-text")}set hideText(t){t?this.setAttribute("hide-text",""):this.removeAttribute("hide-text"),this.#a&&(this.#a.hidden=t)}static get observedAttributes(){return["size"]}}window.customElements.define("woltlab-core-loading-indicator",r)}{let e;(i=>(i.Info="info",i.Success="success",i.Warning="warning",i.Error="error"))(e||={});class l extends HTMLElement{#e;#a;constructor(){super(),this.#e=document.createElement("fa-icon"),this.#e.size=24,this.#e.slot="icon"}connectedCallback(){this.#t(),this.#s(),this.querySelector(':scope > fa-icon[slot="icon"]')?.remove(),this.append(this.#e)}#t(){let c=this.attachShadow({mode:"open"}),t=document.createElement("style");t.textContent=`
+          }`,x.append(D)}m&&(this.#a.dateTime=g.toISOString(),this.#a.title=d.DateAndTime.format(g));let k;if(this.static)k=this.#a.title;else if(E<w.OneMinute)k=window.WoltLabLanguage.getPhrase("wcf.date.relative.now");else if(E<w.OneHour){let x=Math.trunc(E/w.OneMinute);k=d.Minutes.format(x*-1,"minute")}else if(E<w.TwelveHours){let x=Math.trunc(E/w.OneHour);k=d.Hours.format(x*-1,"hour")}else if(E<w.SixDays){let x=d.DayOfWeekAndTime.formatToParts(g);x[0].type==="weekday"?g.getTime()>t?k=this.#t(x,0):g.getTime()>a?k=this.#t(x,-1):k=x.map(V=>V.value).join(""):k=d.DateAndTime.format(g)}else k=d.Date.format(g);k=k.charAt(0).toUpperCase()+k.slice(1),this.#a.textContent=k}#t(m,g){return m.map(k=>k.type==="weekday"?d.TodayOrYesterday.format(g,"day"):k.value).join("")}}window.customElements.define("woltlab-core-date-time",q);let S=()=>{document.querySelectorAll("woltlab-core-date-time").forEach(h=>h.refresh(!1))},z,P=()=>{z=window.setInterval(()=>{i(),S()},6e4)};document.addEventListener("DOMContentLoaded",()=>P(),{once:!0}),document.addEventListener("visibilitychange",()=>{document.hidden?window.clearInterval(z):(S(),P())})}{class e extends HTMLElement{#e;constructor(){super(),this.#e=document.createElement("input"),this.#e.type="file",this.#e.classList.add("woltlabCoreFileUpload__input"),this.#e.addEventListener("change",()=>{let{files:r}=this.#e;if(!(r===null||r.length===0)){for(let c of r){let t=new CustomEvent("shouldUpload",{cancelable:!0,detail:c});if(this.dispatchEvent(t),t.defaultPrevented)continue;let a=new CustomEvent("upload",{detail:c});this.dispatchEvent(a)}this.#e.value=""}})}connectedCallback(){let r=this.dataset.fileExtensions||"";r!==""&&(this.#e.accept=r);let c=this.maximumCount;(c>1||c===-1)&&(this.#e.multiple=!0);let t=document.createElement("fa-icon");t.setIcon("upload");let a=document.createElement("button");a.type="button",a.classList.add("button","woltlabCoreFileUpload__button"),a.addEventListener("keydown",i=>{(i.key==="Enter"||i.key===" ")&&this.#e.click()}),a.append(t,window.WoltLabLanguage.getPhrase("wcf.global.button.upload"),this.#e),this.append(a)}get maximumCount(){return parseInt(this.dataset.maximumCount||"1")}get maximumSize(){return parseInt(this.dataset.maximumSize||"-1")}get disabled(){return this.#e.disabled}set disabled(r){this.#e.disabled=!!r}}window.customElements.define("woltlab-core-file-upload",e)}{let l=[24,48,96];class r extends HTMLElement{#e;#a;connectedCallback(){this.#e===void 0&&this.#t()}attributeChangedCallback(t,a,i){if(t==="size"){let p=parseInt(i||"");if(!l.includes(p)){let d=parseInt(a||"");l.includes(d)||(d=24),this.setAttribute(t,d.toString())}}}#t(){this.classList.add("loading-indicator"),this.hasAttribute("size")||this.setAttribute("size","24"),this.#e=document.createElement("fa-icon"),this.#e.size=this.size,this.#e.setIcon("spinner"),this.#a=document.createElement("span"),this.#a.classList.add("loading-indicator__text"),this.#a.textContent=window.WoltLabLanguage.getPhrase("wcf.global.loading"),this.#a.hidden=this.hideText;let t=document.createElement("div");t.classList.add("loading-indicator__wrapper"),t.append(this.#e,this.#a),this.append(t)}get size(){return parseInt(this.getAttribute("size"))}set size(t){if(!l.includes(t))throw new TypeError(`The size ${t} is unrecognized, permitted values are ${l.join(", ")}.`);this.setAttribute("size",t.toString()),this.#e&&(this.#e.size=t)}get hideText(){return this.hasAttribute("hide-text")}set hideText(t){t?this.setAttribute("hide-text",""):this.removeAttribute("hide-text"),this.#a&&(this.#a.hidden=t)}static get observedAttributes(){return["size"]}}window.customElements.define("woltlab-core-loading-indicator",r)}{let e;(i=>(i.Info="info",i.Success="success",i.Warning="warning",i.Error="error"))(e||={});class l extends HTMLElement{#e;#a;constructor(){super(),this.#e=document.createElement("fa-icon"),this.#e.size=24,this.#e.slot="icon"}connectedCallback(){this.#t(),this.#s(),this.querySelector(':scope > fa-icon[slot="icon"]')?.remove(),this.append(this.#e)}#t(){if(this.shadowRoot!==null)return;let c=this.attachShadow({mode:"open"}),t=document.createElement("style");t.textContent=`
         :host {
           align-items: center;
           display: grid;