diff --git a/.gitignore b/.gitignore
index 1f252dc..20daf8c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,7 +18,8 @@
npm-debug.log*
yarn-debug.log*
yarn-error.log*
-
+yarn.lock
.external
-performance_staging/
\ No newline at end of file
+performance_staging/
+.claude/
diff --git a/package-lock.json b/package-lock.json
index abbf9ca..126c821 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,15 +15,18 @@
"@mdx-js/react": "^3.0.0",
"@orama/orama": "^3.1.18",
"clsx": "^2.0.0",
+ "plotly.js-dist-min": "^3.7.0",
"prism-react-renderer": "^2.3.0",
"react": "^19.0.0",
- "react-dom": "^19.0.0"
+ "react-dom": "^19.0.0",
+ "react-plotly.js": "^4.1.0"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "3.10.1",
"@docusaurus/tsconfig": "3.10.1",
"@docusaurus/types": "3.10.1",
"@types/react": "^19.0.0",
+ "@types/react-dom": "^19.2.4",
"tsx": "^4.23.5",
"typescript": "~6.0.2"
},
@@ -32,46 +35,46 @@
}
},
"node_modules/@algolia/abtesting": {
- "version": "1.22.0",
- "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.22.0.tgz",
- "integrity": "sha512-BFR6zNowNKcY7Ou7TaJc9QWexES4YKPbmf/OTFofpdsdhz4x6q0lbxp3duO0EHnyrN7rE4ba/TSXuY+BDGu4+g==",
+ "version": "1.19.0",
+ "resolved": "https://registry.npmjs.org/@algolia/abtesting/-/abtesting-1.19.0.tgz",
+ "integrity": "sha512-Lhnez3hhXHk25lfxLAMxvkP4fmN3+1RgADhD2ssMDBYuAsDVReeyP+3SGRx+ntq8ijMrLqUyfvO72TB6jsTteQ==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.56.0",
- "@algolia/requester-browser-xhr": "5.56.0",
- "@algolia/requester-fetch": "5.56.0",
- "@algolia/requester-node-http": "5.56.0"
+ "@algolia/client-common": "5.53.0",
+ "@algolia/requester-browser-xhr": "5.53.0",
+ "@algolia/requester-fetch": "5.53.0",
+ "@algolia/requester-node-http": "5.53.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/autocomplete-core": {
- "version": "1.19.9",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.9.tgz",
- "integrity": "sha512-4U2JKLMWlDu0CotYyUkWakDxr8AIav3QtIUXXRpfavYN29aVWfzlwJp9T0rPKEf/dO2QCPAUc0Kq1Tj1GJxo2A==",
+ "version": "1.19.8",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.19.8.tgz",
+ "integrity": "sha512-3YEorYg44niXcm7gkft3nXYItHd44e8tmh4D33CTszPgP0QWkaLEaFywiNyJBo7UL/mqObA/G9RYuU7R8tN1IA==",
"license": "MIT",
"dependencies": {
- "@algolia/autocomplete-plugin-algolia-insights": "1.19.9",
- "@algolia/autocomplete-shared": "1.19.9"
+ "@algolia/autocomplete-plugin-algolia-insights": "1.19.8",
+ "@algolia/autocomplete-shared": "1.19.8"
}
},
"node_modules/@algolia/autocomplete-plugin-algolia-insights": {
- "version": "1.19.9",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.9.tgz",
- "integrity": "sha512-6mExC6X7762s2SV3eJy3QOkB8bdMmnUhQ2agvGVDuzwoGyr3PquGSY/0vPQXCfiAiCaXUz1rXn+lwghgSi0l0w==",
+ "version": "1.19.8",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.19.8.tgz",
+ "integrity": "sha512-ZvJWO8ZZJDpc1LNM2TTBdmQsZBLMR4rU5iNR2OYvEeFBiaf/0ESnRSSLQbryarJY4SVxtoz6A2ZtDMNM+iQEAA==",
"license": "MIT",
"dependencies": {
- "@algolia/autocomplete-shared": "1.19.9"
+ "@algolia/autocomplete-shared": "1.19.8"
},
"peerDependencies": {
"search-insights": ">= 1 < 3"
}
},
"node_modules/@algolia/autocomplete-shared": {
- "version": "1.19.9",
- "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.9.tgz",
- "integrity": "sha512-YosP9Uoek6y/Ur1r1qeogk4biMe/hzkyNcgMCciw0//3XpCM7VlYLSHnyt/vOnEOGhCCc0+3v+unEiH6zz+Z1A==",
+ "version": "1.19.8",
+ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.19.8.tgz",
+ "integrity": "sha512-h5hf2t8ejF6vlOgvLaZzQbWs5SyH2z4PAWygNAvvD/2RI29hdQ54ldUGwqVuj9Srs+n8XUKTPUqb7fvhBhQrnQ==",
"license": "MIT",
"peerDependencies": {
"@algolia/client-search": ">= 4.9.1 < 6",
@@ -79,99 +82,99 @@
}
},
"node_modules/@algolia/client-abtesting": {
- "version": "5.56.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.56.0.tgz",
- "integrity": "sha512-7r4Z3NC7yU1oAQVWJNA2HX7tX481F3pJvCGyLIXiTdBcthz4Q/o21jwcMYDFkuI92UWTNBQQmHYgwHo1zS5dzg==",
+ "version": "5.53.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.53.0.tgz",
+ "integrity": "sha512-0ZjA5Hcmaoz5Lj6OG0zhfIyeqzJZnLW2CRJA1W17UwMFGRtZAJ9yJKRvPEDA6gkpsIoQxORTSW6sWFiuYncPNQ==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.56.0",
- "@algolia/requester-browser-xhr": "5.56.0",
- "@algolia/requester-fetch": "5.56.0",
- "@algolia/requester-node-http": "5.56.0"
+ "@algolia/client-common": "5.53.0",
+ "@algolia/requester-browser-xhr": "5.53.0",
+ "@algolia/requester-fetch": "5.53.0",
+ "@algolia/requester-node-http": "5.53.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-analytics": {
- "version": "5.56.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.56.0.tgz",
- "integrity": "sha512-avmjXQSq+jadFO8Xl2em05/uQdQnEmHsJyOAdVbZkmVgpMfxL12aJwVVfGNwYr9nulcpuJN1X0lTaQ5wxuNGcA==",
+ "version": "5.53.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.53.0.tgz",
+ "integrity": "sha512-kWNodP75iiEaOtemC9F/hlxNBG5E2QUjN1BusnE6m2b4l7Qh/BUO3fGCVsmKJI65VO4VKGGmT43ICvHtTcJ2JQ==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.56.0",
- "@algolia/requester-browser-xhr": "5.56.0",
- "@algolia/requester-fetch": "5.56.0",
- "@algolia/requester-node-http": "5.56.0"
+ "@algolia/client-common": "5.53.0",
+ "@algolia/requester-browser-xhr": "5.53.0",
+ "@algolia/requester-fetch": "5.53.0",
+ "@algolia/requester-node-http": "5.53.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-common": {
- "version": "5.56.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.56.0.tgz",
- "integrity": "sha512-v2TPStUhY//ripPjIVclZ8AWc7DEGooXULZGFlFu37zNatgHjw34oZZ+OSbbc/YHO+xZwPl62I1k8xH1m4S2eg==",
+ "version": "5.53.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.53.0.tgz",
+ "integrity": "sha512-YPN45TXD9Wrse185t/Ta7nktZsqpv97oOjCzp2sblHnCL6rBc9TDeJAg1IGl2UpdwnSD05Zu/5wLB4watOUMyg==",
"license": "MIT",
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-insights": {
- "version": "5.56.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.56.0.tgz",
- "integrity": "sha512-P0ehROpM4Sem3Sqo5x2cKPgj67D3G3jy0rh1Amwkcvsfr6tkvIcdCmerieanqTF7NxUMPNFLkpIFeMO8Rpa50w==",
+ "version": "5.53.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.53.0.tgz",
+ "integrity": "sha512-qAcYTDJE6m924FDDUQvdD6vh7DYaqOeSpFS74IP37/JRV0v4cGBauyxTF2WzDnokUylQDbqreoFIJZfg0Fitmw==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.56.0",
- "@algolia/requester-browser-xhr": "5.56.0",
- "@algolia/requester-fetch": "5.56.0",
- "@algolia/requester-node-http": "5.56.0"
+ "@algolia/client-common": "5.53.0",
+ "@algolia/requester-browser-xhr": "5.53.0",
+ "@algolia/requester-fetch": "5.53.0",
+ "@algolia/requester-node-http": "5.53.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-personalization": {
- "version": "5.56.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.56.0.tgz",
- "integrity": "sha512-SXK3Vn3WVxyzbm31oePZBJkp1wpOyuWdd4B/Pv7n0aXDxmeSWhC1R1FC1517mMrFAIaPH4Rt0x6RUe7ZNjz8FA==",
+ "version": "5.53.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.53.0.tgz",
+ "integrity": "sha512-fQaY+DkSJOpuUVUe8MQTwrdiKAqkJGhpDarB08duBn/sUv7Bkib6MDRQauCcWTWTe4HIW+EbwQP9R4kci1V/Yw==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.56.0",
- "@algolia/requester-browser-xhr": "5.56.0",
- "@algolia/requester-fetch": "5.56.0",
- "@algolia/requester-node-http": "5.56.0"
+ "@algolia/client-common": "5.53.0",
+ "@algolia/requester-browser-xhr": "5.53.0",
+ "@algolia/requester-fetch": "5.53.0",
+ "@algolia/requester-node-http": "5.53.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-query-suggestions": {
- "version": "5.56.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.56.0.tgz",
- "integrity": "sha512-5+ZdX8garFnmycnZgKhtXHePEaLj5zqDxI/0lkhhluzCcvTn0/PvvTirTg8hHYetQHvn7GDyeAiqTAieMvMW4A==",
+ "version": "5.53.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.53.0.tgz",
+ "integrity": "sha512-o72tsiEZGfeS/dxL9IADfzcZWGEwKDEe5CvtrBuT//3JR+SHuTtHRI2ZTf7D7bcKagcbojvO8hnkHdfoakSlYg==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.56.0",
- "@algolia/requester-browser-xhr": "5.56.0",
- "@algolia/requester-fetch": "5.56.0",
- "@algolia/requester-node-http": "5.56.0"
+ "@algolia/client-common": "5.53.0",
+ "@algolia/requester-browser-xhr": "5.53.0",
+ "@algolia/requester-fetch": "5.53.0",
+ "@algolia/requester-node-http": "5.53.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/client-search": {
- "version": "5.56.0",
- "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.56.0.tgz",
- "integrity": "sha512-+mKUdYvqOi0BcvpAEyCEw49vSBptufIcfibtHz2bdr1pI789M46Yt0uQEk/sxtK3teh71OQvVFHaTDzShUWewQ==",
+ "version": "5.53.0",
+ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.53.0.tgz",
+ "integrity": "sha512-Ds16IyPm/dNJPCU8OzApo2gwGrgWT5BYHhE3NFwZbpCveqyvPDB9sZDDkJ5DsdOGT2aC+R3i0/M1OVXF2qdgPg==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.56.0",
- "@algolia/requester-browser-xhr": "5.56.0",
- "@algolia/requester-fetch": "5.56.0",
- "@algolia/requester-node-http": "5.56.0"
+ "@algolia/client-common": "5.53.0",
+ "@algolia/requester-browser-xhr": "5.53.0",
+ "@algolia/requester-fetch": "5.53.0",
+ "@algolia/requester-node-http": "5.53.0"
},
"engines": {
"node": ">= 14.0.0"
@@ -184,81 +187,81 @@
"license": "MIT"
},
"node_modules/@algolia/ingestion": {
- "version": "1.56.0",
- "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.56.0.tgz",
- "integrity": "sha512-9g/zj+AZx5moFcdFIrYQoVrueXivjUcc3MQHtCYT8WhIuk1lUh1AyEhvJCS0XBZld09cLvd1AZ3BvDBpVpX2UA==",
+ "version": "1.53.0",
+ "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.53.0.tgz",
+ "integrity": "sha512-oNbT6z4NwD8Pou9VPINGlN/tlG1afESh2EbxqnP6rwl95xKVD/Zlciis1PpNeO/9U/rrajc1+7DcfKi03tX1KQ==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.56.0",
- "@algolia/requester-browser-xhr": "5.56.0",
- "@algolia/requester-fetch": "5.56.0",
- "@algolia/requester-node-http": "5.56.0"
+ "@algolia/client-common": "5.53.0",
+ "@algolia/requester-browser-xhr": "5.53.0",
+ "@algolia/requester-fetch": "5.53.0",
+ "@algolia/requester-node-http": "5.53.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/monitoring": {
- "version": "1.56.0",
- "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.56.0.tgz",
- "integrity": "sha512-Qf3Sr6f9A9uxCZUf3MXS0d2b877uYzEB5yxqpVGXAhcJnBCQjrRRon0KvefpGkxy+BshrIJs96OUoMtGqXTFDA==",
+ "version": "1.53.0",
+ "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.53.0.tgz",
+ "integrity": "sha512-G+KZb/yd+qAOFn/cEvTGeLxQm8aP3a0od50l3z/ylccY+/o4YG3TNcjU1tFQHW4mXC137GPyR7W70R0kRQDLnA==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.56.0",
- "@algolia/requester-browser-xhr": "5.56.0",
- "@algolia/requester-fetch": "5.56.0",
- "@algolia/requester-node-http": "5.56.0"
+ "@algolia/client-common": "5.53.0",
+ "@algolia/requester-browser-xhr": "5.53.0",
+ "@algolia/requester-fetch": "5.53.0",
+ "@algolia/requester-node-http": "5.53.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/recommend": {
- "version": "5.56.0",
- "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.56.0.tgz",
- "integrity": "sha512-GXWG1rWc5wu8hY4N33Y3b6ernY6sAdAvmKWN/zHAiACOx40WnpG0TVX5YazCAr/9gOYGInSiM2A0y2jy2xbiDA==",
+ "version": "5.53.0",
+ "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.53.0.tgz",
+ "integrity": "sha512-6aVfYd55Un6IUgPLbo84WfgFZlS3L0vA1ttzXL5vahHewUJ8jYgd89TzlWRTeej7w70mb9RWsVlFYGmJ/diQww==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.56.0",
- "@algolia/requester-browser-xhr": "5.56.0",
- "@algolia/requester-fetch": "5.56.0",
- "@algolia/requester-node-http": "5.56.0"
+ "@algolia/client-common": "5.53.0",
+ "@algolia/requester-browser-xhr": "5.53.0",
+ "@algolia/requester-fetch": "5.53.0",
+ "@algolia/requester-node-http": "5.53.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/requester-browser-xhr": {
- "version": "5.56.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.56.0.tgz",
- "integrity": "sha512-7t24cBxaInS3mZb7ddEaZT/tp6q+/aR4YttsQVyP1/i+LmwPR34atO35KjaLFCcRVrlP7sYOAqkCfg6lIRB+ew==",
+ "version": "5.53.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.53.0.tgz",
+ "integrity": "sha512-ke27DqgzCOlt+RbeEdCxtXxMQOnAOi8ujr2wid0DmDKzR95Kw/f9sBsuhBxtjevCqJRJszfRTLY0B1pbO6IhkA==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.56.0"
+ "@algolia/client-common": "5.53.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/requester-fetch": {
- "version": "5.56.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.56.0.tgz",
- "integrity": "sha512-R7ePHgVYmDFjZpvrsVAfbDz/d4RxKAYZ5/vgLfIsCVRZRryjWl/3INOxpOICzitehQ5FjNtNjcLQTrmHPTcHBQ==",
+ "version": "5.53.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.53.0.tgz",
+ "integrity": "sha512-GngiOqt2Gq4oLno6yXQVj9om+qSO9SWAoduoTOEg79dKZ62brB8OOIvSJG/vDNoanYi6a7Al9uDZwXvi+bcVTg==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.56.0"
+ "@algolia/client-common": "5.53.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/@algolia/requester-node-http": {
- "version": "5.56.0",
- "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.56.0.tgz",
- "integrity": "sha512-PIOUXlSnrqM0S+WOgDRb4RzotydJH7ZoT6tOyL7tAO7qJOfvX5wsEW8Pe+PMKMwvuI4/gIyK9cg2H7lJXqnc4Q==",
+ "version": "5.53.0",
+ "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.53.0.tgz",
+ "integrity": "sha512-6mF9LZMUk0QqWvrnxkxBqhswwz6Xfiwy6/gmTzL5HrlhdVG3ITAqGV2k3XmVThP1h0Ulc3VQwiNCD7/Nr4JNlQ==",
"license": "MIT",
"dependencies": {
- "@algolia/client-common": "5.56.0"
+ "@algolia/client-common": "5.53.0"
},
"engines": {
"node": ">= 14.0.0"
@@ -327,13 +330,13 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.29.8",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz",
- "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz",
+ "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==",
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.29.8",
- "@babel/types": "^7.29.8",
+ "@babel/parser": "^7.29.7",
+ "@babel/types": "^7.29.7",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@@ -626,12 +629,12 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.29.8",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz",
- "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz",
+ "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.29.8"
+ "@babel/types": "^7.29.7"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -1232,15 +1235,15 @@
}
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.29.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz",
- "integrity": "sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.7.tgz",
+ "integrity": "sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ==",
"license": "MIT",
"dependencies": {
"@babel/helper-module-transforms": "^7.29.7",
"@babel/helper-plugin-utils": "^7.29.7",
"@babel/helper-validator-identifier": "^7.29.7",
- "@babel/traverse": "^7.29.8"
+ "@babel/traverse": "^7.29.7"
},
"engines": {
"node": ">=6.9.0"
@@ -1536,9 +1539,9 @@
}
},
"node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.29.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz",
- "integrity": "sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.7.tgz",
+ "integrity": "sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==",
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.29.7"
@@ -1626,9 +1629,9 @@
}
},
"node_modules/@babel/plugin-transform-spread": {
- "version": "7.29.8",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.8.tgz",
- "integrity": "sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.7.tgz",
+ "integrity": "sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ==",
"license": "MIT",
"dependencies": {
"@babel/helper-plugin-utils": "^7.29.7",
@@ -1952,17 +1955,17 @@
}
},
"node_modules/@babel/traverse": {
- "version": "7.29.8",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz",
- "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz",
+ "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==",
"license": "MIT",
"dependencies": {
"@babel/code-frame": "^7.29.7",
- "@babel/generator": "^7.29.8",
+ "@babel/generator": "^7.29.7",
"@babel/helper-globals": "^7.29.7",
- "@babel/parser": "^7.29.8",
+ "@babel/parser": "^7.29.7",
"@babel/template": "^7.29.7",
- "@babel/types": "^7.29.8",
+ "@babel/types": "^7.29.7",
"debug": "^4.3.1"
},
"engines": {
@@ -1970,9 +1973,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.29.8",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz",
- "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==",
+ "version": "7.29.7",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz",
+ "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.29.7",
@@ -1982,6 +1985,26 @@
"node": ">=6.9.0"
}
},
+ "node_modules/@choojs/findup": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz",
+ "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "commander": "^2.15.1"
+ },
+ "bin": {
+ "findup": "bin/findup.js"
+ }
+ },
+ "node_modules/@choojs/findup/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/@colors/colors": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz",
@@ -2226,9 +2249,9 @@
}
},
"node_modules/@csstools/postcss-cascade-layers/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -2647,9 +2670,9 @@
}
},
"node_modules/@csstools/postcss-is-pseudo-class/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -3094,9 +3117,9 @@
}
},
"node_modules/@csstools/postcss-scope-pseudo-class/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -3318,9 +3341,9 @@
}
},
"node_modules/@docsearch/core": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@docsearch/core/-/core-4.7.0.tgz",
- "integrity": "sha512-p/9xVKmPDj3FPvMfPf5naVO3Ej8SCbcUugGvx1+8GgkuBNbqxqN2Irx3WLBv8VY0jH7XpRwKWdlmjXLZsmTLsg==",
+ "version": "4.6.3",
+ "resolved": "https://registry.npmjs.org/@docsearch/core/-/core-4.6.3.tgz",
+ "integrity": "sha512-rUOujwIpxJRgD7+kicVsI3D5sqBvdiRTquzWBpTEXZs8ZXfGbfzpus5HqumaNYTppN2HvH8E2yNuRwYdHJeOlA==",
"license": "MIT",
"peerDependencies": {
"@types/react": ">= 16.8.0 < 20.0.0",
@@ -3340,20 +3363,20 @@
}
},
"node_modules/@docsearch/css": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.7.0.tgz",
- "integrity": "sha512-Sk5xkdRFeE7PeWjG9l4AfTwdvMfr9wHiwNNCpHXT4v4SNyNMKdHGvEILc31BgaVFGDDNbv5u/a73tofRiwbEZw==",
+ "version": "4.6.3",
+ "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-4.6.3.tgz",
+ "integrity": "sha512-nlOwcXcsNAptQl4vlL4MA78qNJKO0Qlds5GuBjCoePgkebTXLSf8Qt1oyZ3YBshYupKXG9VRGEsk1zr23d+bzQ==",
"license": "MIT"
},
"node_modules/@docsearch/react": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.7.0.tgz",
- "integrity": "sha512-x6oedjJ8O8/pIDBsMo5Orca3/6cQCz616/CwthVe68l43mqnj2lrJ9kFQITBqy8hMsS3nWeBWFoVO5dJ1DCFKA==",
+ "version": "4.6.3",
+ "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-4.6.3.tgz",
+ "integrity": "sha512-Bg2wdDsoQVlNCcEKuEJAU04tvHCqgx8rIu+uIoM4pRtcx3TBKJuXutJik3LTA8LRc9YEyHkrYUrmcC0D7BYf+g==",
"license": "MIT",
"dependencies": {
"@algolia/autocomplete-core": "1.19.2",
- "@docsearch/core": "4.7.0",
- "@docsearch/css": "4.7.0"
+ "@docsearch/core": "4.6.3",
+ "@docsearch/css": "4.6.3"
},
"peerDependencies": {
"@types/react": ">= 16.8.0 < 20.0.0",
@@ -4169,9 +4192,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz",
- "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz",
+ "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==",
"cpu": [
"ppc64"
],
@@ -4186,9 +4209,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz",
- "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz",
+ "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==",
"cpu": [
"arm"
],
@@ -4203,9 +4226,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz",
- "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz",
+ "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==",
"cpu": [
"arm64"
],
@@ -4220,9 +4243,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz",
- "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz",
+ "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==",
"cpu": [
"x64"
],
@@ -4237,9 +4260,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz",
- "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz",
+ "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==",
"cpu": [
"arm64"
],
@@ -4254,9 +4277,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz",
- "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz",
+ "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==",
"cpu": [
"x64"
],
@@ -4271,9 +4294,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz",
- "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==",
"cpu": [
"arm64"
],
@@ -4288,9 +4311,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz",
- "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz",
+ "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==",
"cpu": [
"x64"
],
@@ -4305,9 +4328,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz",
- "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz",
+ "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==",
"cpu": [
"arm"
],
@@ -4322,9 +4345,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz",
- "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz",
+ "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==",
"cpu": [
"arm64"
],
@@ -4339,9 +4362,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz",
- "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz",
+ "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==",
"cpu": [
"ia32"
],
@@ -4356,9 +4379,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz",
- "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz",
+ "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==",
"cpu": [
"loong64"
],
@@ -4373,9 +4396,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz",
- "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz",
+ "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==",
"cpu": [
"mips64el"
],
@@ -4390,9 +4413,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz",
- "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz",
+ "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==",
"cpu": [
"ppc64"
],
@@ -4407,9 +4430,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz",
- "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz",
+ "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==",
"cpu": [
"riscv64"
],
@@ -4424,9 +4447,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz",
- "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz",
+ "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==",
"cpu": [
"s390x"
],
@@ -4441,9 +4464,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz",
- "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz",
+ "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==",
"cpu": [
"x64"
],
@@ -4458,9 +4481,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz",
- "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==",
"cpu": [
"arm64"
],
@@ -4475,9 +4498,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz",
- "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz",
+ "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==",
"cpu": [
"x64"
],
@@ -4492,9 +4515,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz",
- "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz",
+ "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==",
"cpu": [
"arm64"
],
@@ -4509,9 +4532,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz",
- "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz",
+ "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==",
"cpu": [
"x64"
],
@@ -4526,9 +4549,9 @@
}
},
"node_modules/@esbuild/openharmony-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz",
- "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz",
+ "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==",
"cpu": [
"arm64"
],
@@ -4543,9 +4566,9 @@
}
},
"node_modules/@esbuild/sunos-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz",
- "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz",
+ "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==",
"cpu": [
"x64"
],
@@ -4560,9 +4583,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz",
- "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz",
+ "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==",
"cpu": [
"arm64"
],
@@ -4577,9 +4600,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz",
- "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz",
+ "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==",
"cpu": [
"ia32"
],
@@ -4594,9 +4617,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz",
- "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz",
+ "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==",
"cpu": [
"x64"
],
@@ -5299,13 +5322,13 @@
}
},
"node_modules/@jsonjoy.com/fs-core": {
- "version": "4.67.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.67.0.tgz",
- "integrity": "sha512-+QOYAGujzm86pKcX4N0JQ1YcLEjypr/I+wmQRxwI8W7K0QXKSi8vQVC2oKQGjcfbHq02JvCQijypfvyhcTz7uw==",
+ "version": "4.57.3",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-core/-/fs-core-4.57.3.tgz",
+ "integrity": "sha512-IvO50vkGydDZwS1e9rz/JXEtCCt9XvqxoGI6FlrVIvVm4/HpygMKW4ETtREWtMTsN5CLJ9FR6GuCduoQPZLBiw==",
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/fs-node-builtins": "4.67.0",
- "@jsonjoy.com/fs-node-utils": "4.67.0",
+ "@jsonjoy.com/fs-node-builtins": "4.57.3",
+ "@jsonjoy.com/fs-node-utils": "4.57.3",
"thingies": "^2.5.0"
},
"engines": {
@@ -5320,14 +5343,14 @@
}
},
"node_modules/@jsonjoy.com/fs-fsa": {
- "version": "4.67.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.67.0.tgz",
- "integrity": "sha512-2jCnH5ofKXb+6vcl8dQArO1Gb4FT7vLbMGVnNim0ekXkY78DPVXZvJ8DQp9WLbqP/G/gxiPVz/DOMoOCD4BqqQ==",
+ "version": "4.57.3",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-fsa/-/fs-fsa-4.57.3.tgz",
+ "integrity": "sha512-JlIDGUWPl7Y6zl+/ISnZuh8z2aMr/xoR66D18zlaVAuL192CvlNJEzOlzp27x4P52HRtDnCSOk6f59vTsmp5vw==",
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/fs-core": "4.67.0",
- "@jsonjoy.com/fs-node-builtins": "4.67.0",
- "@jsonjoy.com/fs-node-utils": "4.67.0",
+ "@jsonjoy.com/fs-core": "4.57.3",
+ "@jsonjoy.com/fs-node-builtins": "4.57.3",
+ "@jsonjoy.com/fs-node-utils": "4.57.3",
"thingies": "^2.5.0"
},
"engines": {
@@ -5342,16 +5365,16 @@
}
},
"node_modules/@jsonjoy.com/fs-node": {
- "version": "4.67.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.67.0.tgz",
- "integrity": "sha512-EZ/mSrxRYphDbyll1VuDW0mvj/USoe2M5sxT2nYqyYyvdxsIsijhJOiygBHAaj86Eqd/Kb9ukkwXjBisRTk1tg==",
+ "version": "4.57.3",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node/-/fs-node-4.57.3.tgz",
+ "integrity": "sha512-089gZoKvbeOsT2jeBaVKSz91oFXQWFG7a62sMY6gVMHnoWbyGzTb6OVUP/V7G3wLQLJ555BEsHt8SD1nj1dgaQ==",
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/fs-core": "4.67.0",
- "@jsonjoy.com/fs-node-builtins": "4.67.0",
- "@jsonjoy.com/fs-node-utils": "4.67.0",
- "@jsonjoy.com/fs-print": "4.67.0",
- "@jsonjoy.com/fs-snapshot": "4.67.0",
+ "@jsonjoy.com/fs-core": "4.57.3",
+ "@jsonjoy.com/fs-node-builtins": "4.57.3",
+ "@jsonjoy.com/fs-node-utils": "4.57.3",
+ "@jsonjoy.com/fs-print": "4.57.3",
+ "@jsonjoy.com/fs-snapshot": "4.57.3",
"glob-to-regex.js": "^1.0.0",
"thingies": "^2.5.0"
},
@@ -5367,9 +5390,9 @@
}
},
"node_modules/@jsonjoy.com/fs-node-builtins": {
- "version": "4.67.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.67.0.tgz",
- "integrity": "sha512-os7Cft1EudH0xZs5Kh5/qHI72jk8DMQ1561elyHkHd9c9xaa4wOfK1iMh4JB9y+kXtpXjEnT4cjHqqc7A3X3lA==",
+ "version": "4.57.3",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-builtins/-/fs-node-builtins-4.57.3.tgz",
+ "integrity": "sha512-JAI3PqNuY8BR7ovy4h0bADLrqJLIcUauONNZfyTxUnj3Wf3tpTYe39eJ6z7FzYyA+tdMt33VpiQQUikGr3QOBw==",
"license": "Apache-2.0",
"engines": {
"node": ">=10.0"
@@ -5383,14 +5406,14 @@
}
},
"node_modules/@jsonjoy.com/fs-node-to-fsa": {
- "version": "4.67.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.67.0.tgz",
- "integrity": "sha512-5e6WTnLhw0Q5mPEACOsA7h2BA++N1FCSmhXRX5gone8Le4fsqcpgpukqW5hWneLfzIr5AOEliu0PyokdYx3Bwg==",
+ "version": "4.57.3",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-to-fsa/-/fs-node-to-fsa-4.57.3.tgz",
+ "integrity": "sha512-uZGxyC0zDmcmW5bfHd4YivAZ54BLlbF9G0K5rBaksI/tZdJSGM7/AC+1TY7yvFu0Wc6gUHR7mFwf6SbQ3J1BTQ==",
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/fs-fsa": "4.67.0",
- "@jsonjoy.com/fs-node-builtins": "4.67.0",
- "@jsonjoy.com/fs-node-utils": "4.67.0"
+ "@jsonjoy.com/fs-fsa": "4.57.3",
+ "@jsonjoy.com/fs-node-builtins": "4.57.3",
+ "@jsonjoy.com/fs-node-utils": "4.57.3"
},
"engines": {
"node": ">=10.0"
@@ -5404,13 +5427,12 @@
}
},
"node_modules/@jsonjoy.com/fs-node-utils": {
- "version": "4.67.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.67.0.tgz",
- "integrity": "sha512-ZcCPh4jvUqYxAgu4lLe+6eQbijxEkZIrCq0Jhh669o3v3zrCn8N4YAFod3zllZtSHhwb+YbER29LUW/SdNrP7Q==",
+ "version": "4.57.3",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-node-utils/-/fs-node-utils-4.57.3.tgz",
+ "integrity": "sha512-quCil8AvfcOxob4pn0drGdcQWpkPVgkt9q1+EjeyXXT40/L3l5lvYrr6hR8LmHu0eg+DNNaUwqjLT6Hr7V4sdQ==",
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/fs-node-builtins": "4.67.0",
- "glob-to-regex.js": "^1.0.1"
+ "@jsonjoy.com/fs-node-builtins": "4.57.3"
},
"engines": {
"node": ">=10.0"
@@ -5424,12 +5446,12 @@
}
},
"node_modules/@jsonjoy.com/fs-print": {
- "version": "4.67.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.67.0.tgz",
- "integrity": "sha512-xBhay3ayVlFeScafZy+7jyH0+I6MLomaL+2nn/KWirgjwh58w8+u44j7oSvE8EQ2NLF63B1eVc65awmbs/39Iw==",
+ "version": "4.57.3",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-print/-/fs-print-4.57.3.tgz",
+ "integrity": "sha512-ITwaLZpGIqD9jHndwMvDFZDIvbVzGRsJZDQ5HKln0vyMculu1c1nb7zbEBgY8BVSBZ9S2xO138OWIBGeRsrF3Q==",
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/fs-node-utils": "4.67.0",
+ "@jsonjoy.com/fs-node-utils": "4.57.3",
"tree-dump": "^1.1.0"
},
"engines": {
@@ -5444,13 +5466,13 @@
}
},
"node_modules/@jsonjoy.com/fs-snapshot": {
- "version": "4.67.0",
- "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.67.0.tgz",
- "integrity": "sha512-wn5c6Qx0iVX1dV74l5WOCIPH9lz3xU6A0QG45n0c53athmmr7Z+XTg0YOndME88g/5LjcqwiSSYD9aSr9+goYg==",
+ "version": "4.57.3",
+ "resolved": "https://registry.npmjs.org/@jsonjoy.com/fs-snapshot/-/fs-snapshot-4.57.3.tgz",
+ "integrity": "sha512-wdNaG2DxCtvj9lKldAnEV3ycYPEpk+p2cP2lHD1qdxkoQGlWUtQverqvG9KZSkm6BHFha4PP6XRZbpARNfHRxA==",
"license": "Apache-2.0",
"dependencies": {
"@jsonjoy.com/buffers": "^17.65.0",
- "@jsonjoy.com/fs-node-utils": "4.67.0",
+ "@jsonjoy.com/fs-node-utils": "4.57.3",
"@jsonjoy.com/json-pack": "^17.65.0",
"@jsonjoy.com/util": "^17.65.0"
},
@@ -5666,6 +5688,123 @@
"integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==",
"license": "MIT"
},
+ "node_modules/@mapbox/geojson-rewind": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz",
+ "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "get-stream": "^6.0.1",
+ "minimist": "^1.2.6"
+ },
+ "bin": {
+ "geojson-rewind": "geojson-rewind"
+ }
+ },
+ "node_modules/@mapbox/geojson-types": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz",
+ "integrity": "sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/@mapbox/jsonlint-lines-primitives": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.3.tgz",
+ "integrity": "sha512-0SElaV0uMxEnxzBhhX9WTuPyUeMsAN/SS0i16tjuba4/mio63MG9khjC1a0JAiPGXAwvwm4UfHJURCN7nyudQg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 22"
+ }
+ },
+ "node_modules/@mapbox/mapbox-gl-supported": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz",
+ "integrity": "sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "peerDependencies": {
+ "mapbox-gl": ">=0.32.1 <2.0.0"
+ }
+ },
+ "node_modules/@mapbox/point-geometry": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz",
+ "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/@mapbox/tiny-sdf": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz",
+ "integrity": "sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw==",
+ "license": "BSD-2-Clause",
+ "peer": true
+ },
+ "node_modules/@mapbox/unitbezier": {
+ "version": "0.0.0",
+ "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz",
+ "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==",
+ "license": "BSD-2-Clause",
+ "peer": true
+ },
+ "node_modules/@mapbox/vector-tile": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz",
+ "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "@mapbox/point-geometry": "~0.1.0"
+ }
+ },
+ "node_modules/@mapbox/whoots-js": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz",
+ "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==",
+ "license": "ISC",
+ "peer": true,
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@maplibre/maplibre-gl-style-spec": {
+ "version": "20.4.0",
+ "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.4.0.tgz",
+ "integrity": "sha512-AzBy3095fTFPjDjmWpR2w6HVRAZJ6hQZUCwk5Plz6EyfnfuQW1odeW5i2Ai47Y6TBA2hQnC+azscjBSALpaWgw==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "@mapbox/jsonlint-lines-primitives": "~2.0.2",
+ "@mapbox/unitbezier": "^0.0.1",
+ "json-stringify-pretty-compact": "^4.0.0",
+ "minimist": "^1.2.8",
+ "quickselect": "^2.0.0",
+ "rw": "^1.3.3",
+ "tinyqueue": "^3.0.0"
+ },
+ "bin": {
+ "gl-style-format": "dist/gl-style-format.mjs",
+ "gl-style-migrate": "dist/gl-style-migrate.mjs",
+ "gl-style-validate": "dist/gl-style-validate.mjs"
+ }
+ },
+ "node_modules/@maplibre/maplibre-gl-style-spec/node_modules/@mapbox/unitbezier": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz",
+ "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==",
+ "license": "BSD-2-Clause",
+ "peer": true
+ },
+ "node_modules/@maplibre/maplibre-gl-style-spec/node_modules/tinyqueue": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-3.0.0.tgz",
+ "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==",
+ "license": "ISC",
+ "peer": true
+ },
"node_modules/@mdx-js/mdx": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.1.tgz",
@@ -5842,128 +5981,128 @@
}
},
"node_modules/@peculiar/asn1-cms": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.8.0.tgz",
- "integrity": "sha512-NgekZOrSJFSBFLFoLfwePguAWAx7z1+f2TEsWFUMyiqqfntZ4+S/S5hzqME3q4pCA0iOsFKdwiQ35dwY24eVqA==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-cms/-/asn1-cms-2.7.0.tgz",
+ "integrity": "sha512-hew63shtzzvBcSHbhm+cyAmKe6AIfinT9hzEqSPjDC6opTTMKmTkQ0gHuN2KsWlvqiKw1S/fS94fhag/FJkioQ==",
"license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.8.0",
- "@peculiar/asn1-x509": "^2.8.0",
- "@peculiar/asn1-x509-attr": "^2.8.0",
- "asn1js": "^3.0.10",
+ "@peculiar/asn1-schema": "^2.7.0",
+ "@peculiar/asn1-x509": "^2.7.0",
+ "@peculiar/asn1-x509-attr": "^2.7.0",
+ "asn1js": "^3.0.6",
"tslib": "^2.8.1"
}
},
"node_modules/@peculiar/asn1-csr": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.8.0.tgz",
- "integrity": "sha512-akbF8+uvleHs8sejNPQxwmVFuInAg6FMNHOwMILXfP518YfFJwdR3jr6oNUPOaEJfuEhn/vkNOCIT6ASUd4mbg==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-csr/-/asn1-csr-2.7.0.tgz",
+ "integrity": "sha512-VVsAyGqErT9D1SY4aEqozThXMVI+ssVRiv2DDeYuvpBKLIgZ3hYs3Ay3u/VSoKq6ESFi9cf6rf3IOOzfwh7oMA==",
"license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.8.0",
- "@peculiar/asn1-x509": "^2.8.0",
- "asn1js": "^3.0.10",
+ "@peculiar/asn1-schema": "^2.7.0",
+ "@peculiar/asn1-x509": "^2.7.0",
+ "asn1js": "^3.0.6",
"tslib": "^2.8.1"
}
},
"node_modules/@peculiar/asn1-ecc": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.8.0.tgz",
- "integrity": "sha512-ohwlk+u9Rv2NOAY1c6MfHj45ATVF8R1DUN/WCgABiRtLi2ZftlZWZX7KvpAbU8v9xPcmoILfELeEABj/rn18AQ==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.7.0.tgz",
+ "integrity": "sha512-n7KEs/Q/wrB415cxy4fHOBhegp4NdJ15fkJPwcB/3/8iNBQC2L/N7SChJPKDJPZGYH0jD4Tg4/0vnHmwghnbKw==",
"license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.8.0",
- "@peculiar/asn1-x509": "^2.8.0",
- "asn1js": "^3.0.10",
+ "@peculiar/asn1-schema": "^2.7.0",
+ "@peculiar/asn1-x509": "^2.7.0",
+ "asn1js": "^3.0.6",
"tslib": "^2.8.1"
}
},
"node_modules/@peculiar/asn1-pfx": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.8.0.tgz",
- "integrity": "sha512-5yof1ytoB++RQtaFbqSUJ8pxDJtZT6vbVqZ8XoJ61ph7UjNVvfFwAilnCodqkNsAodpy13gDhoxZXw00pghnyg==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-pfx/-/asn1-pfx-2.7.0.tgz",
+ "integrity": "sha512-V/nrlQVmhg7lYAsM7E13UDL5erAwFv6kCIVFqNaMIHSVi7dngcT839JkRTkQBqznMG98l2XjxYk74ZztAohZzA==",
"license": "MIT",
"dependencies": {
- "@peculiar/asn1-cms": "^2.8.0",
- "@peculiar/asn1-pkcs8": "^2.8.0",
- "@peculiar/asn1-rsa": "^2.8.0",
- "@peculiar/asn1-schema": "^2.8.0",
- "asn1js": "^3.0.10",
+ "@peculiar/asn1-cms": "^2.7.0",
+ "@peculiar/asn1-pkcs8": "^2.7.0",
+ "@peculiar/asn1-rsa": "^2.7.0",
+ "@peculiar/asn1-schema": "^2.7.0",
+ "asn1js": "^3.0.6",
"tslib": "^2.8.1"
}
},
"node_modules/@peculiar/asn1-pkcs8": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.8.0.tgz",
- "integrity": "sha512-qAKXtLpBEw9LqhKpjw3ajZSXlBur+ipW+y2ivVBQAG6F6qRx94yO+1ZR4mvw+YaCfKSaOzLeYEzsPaBp4SJELA==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs8/-/asn1-pkcs8-2.7.0.tgz",
+ "integrity": "sha512-9GTl1nE8Mx1kTZ+7QyYatDyKsm34QcWRBFkY1iPvWC3X4Dona5s/tlLiQsx5WzVdZqiMBZNYT0buyw4/vbhnjw==",
"license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.8.0",
- "@peculiar/asn1-x509": "^2.8.0",
- "asn1js": "^3.0.10",
+ "@peculiar/asn1-schema": "^2.7.0",
+ "@peculiar/asn1-x509": "^2.7.0",
+ "asn1js": "^3.0.6",
"tslib": "^2.8.1"
}
},
"node_modules/@peculiar/asn1-pkcs9": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.8.0.tgz",
- "integrity": "sha512-b5nDWCnkV60+cQ141D6sVVwK9nz64R5n3zSVnklGd+ECdkW2Ol3U1a6yYFlalpSOaD557yuJB64A+q42jG7lUQ==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-pkcs9/-/asn1-pkcs9-2.7.0.tgz",
+ "integrity": "sha512-Bh7m+OuIaSEllPQcSd9OSp93F4ROWH7sbITWV8MI+8dwsjE5111/87VxiWVvYFKyww3vp39geLv9ENqhwWHcew==",
"license": "MIT",
"dependencies": {
- "@peculiar/asn1-cms": "^2.8.0",
- "@peculiar/asn1-pfx": "^2.8.0",
- "@peculiar/asn1-pkcs8": "^2.8.0",
- "@peculiar/asn1-schema": "^2.8.0",
- "@peculiar/asn1-x509": "^2.8.0",
- "@peculiar/asn1-x509-attr": "^2.8.0",
- "asn1js": "^3.0.10",
+ "@peculiar/asn1-cms": "^2.7.0",
+ "@peculiar/asn1-pfx": "^2.7.0",
+ "@peculiar/asn1-pkcs8": "^2.7.0",
+ "@peculiar/asn1-schema": "^2.7.0",
+ "@peculiar/asn1-x509": "^2.7.0",
+ "@peculiar/asn1-x509-attr": "^2.7.0",
+ "asn1js": "^3.0.6",
"tslib": "^2.8.1"
}
},
"node_modules/@peculiar/asn1-rsa": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.8.0.tgz",
- "integrity": "sha512-zHEUlCqB2mk7x2lxDwHHJy7hWZOPdGHVlsmITWKB5/PbQo61atbu9PJ/0r9dQNMwFzbKPXZ8uK8/91eUhRznSg==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.7.0.tgz",
+ "integrity": "sha512-/qvENQrXyTZURjMqSeofHul0JJt2sNSzSwk36pl2olkHbaioMQgrASDZAlHXl0xUlnVbHj0uGgOrBMTb5x2aJQ==",
"license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.8.0",
- "@peculiar/asn1-x509": "^2.8.0",
- "asn1js": "^3.0.10",
+ "@peculiar/asn1-schema": "^2.7.0",
+ "@peculiar/asn1-x509": "^2.7.0",
+ "asn1js": "^3.0.6",
"tslib": "^2.8.1"
}
},
"node_modules/@peculiar/asn1-schema": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.8.0.tgz",
- "integrity": "sha512-7YT0U/ze0tF2QOBbE15gKZwy5tvgGyLRiRHLzhlbOpf7BT032oBSd0haZqXn5W6l26WLlu3dyxzjM+2638/z2Q==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.7.0.tgz",
+ "integrity": "sha512-W8ZfWzLmQnrcky+eh3tni4IozMdqBDiHWU0N+vve/UGjMaUs8c0L7A2oEdkBXS8rTpWDpK/aoI3DG/L/hxmxPg==",
"license": "MIT",
"dependencies": {
"@peculiar/utils": "^2.0.2",
- "asn1js": "^3.0.10",
+ "asn1js": "^3.0.6",
"tslib": "^2.8.1"
}
},
"node_modules/@peculiar/asn1-x509": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.8.0.tgz",
- "integrity": "sha512-N0CMuhWUzsWEVq6F1q9X6+VKUnWzSW+cSVg+aPaGGwDdbFoFWTYgin5MHwXgpWd6y9COMBxnfy/Qc+Xc7F0Zwg==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.7.0.tgz",
+ "integrity": "sha512-mUn9RRrkGDnG4ALfunDmzyRW5dg+sWCj/pfnCCqEHYbkGxEpvUt6iVJv8Yw1cyp6SWZ26ZE5oSmI5SqEaen15g==",
"license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.8.0",
+ "@peculiar/asn1-schema": "^2.7.0",
"@peculiar/utils": "^2.0.2",
- "asn1js": "^3.0.10",
+ "asn1js": "^3.0.6",
"tslib": "^2.8.1"
}
},
"node_modules/@peculiar/asn1-x509-attr": {
- "version": "2.8.0",
- "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.8.0.tgz",
- "integrity": "sha512-tHjkfS/qhMnmrlB2J9NhflQlQ7In3khO3CfmVrriOlpTeErY9ZIKOso1hQ5JQiyrJ7ShvqVPk7E5fQmbclkSKA==",
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509-attr/-/asn1-x509-attr-2.7.0.tgz",
+ "integrity": "sha512-NS8e7SOgXipkzUPLF/sce7ukpMpWjhxYsH0n6Y+bHYo4TTxOb95Zv7hqwSuL212mj5YxovjdOKQOgH1As3E94w==",
"license": "MIT",
"dependencies": {
- "@peculiar/asn1-schema": "^2.8.0",
- "@peculiar/asn1-x509": "^2.8.0",
- "asn1js": "^3.0.10",
+ "@peculiar/asn1-schema": "^2.7.0",
+ "@peculiar/asn1-x509": "^2.7.0",
+ "asn1js": "^3.0.6",
"tslib": "^2.8.1"
}
},
@@ -5998,6 +6137,99 @@
"node": ">=20.0.0"
}
},
+ "node_modules/@plotly/d3": {
+ "version": "3.8.2",
+ "resolved": "https://registry.npmjs.org/@plotly/d3/-/d3-3.8.2.tgz",
+ "integrity": "sha512-wvsNmh1GYjyJfyEBPKJLTMzgf2c2bEbSIL50lmqVUi+o1NHaLPi1Lb4v7VxXXJn043BhNyrxUrWI85Q+zmjOVA==",
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/@plotly/d3-sankey": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/@plotly/d3-sankey/-/d3-sankey-0.7.2.tgz",
+ "integrity": "sha512-2jdVos1N3mMp3QW0k2q1ph7Gd6j5PY1YihBrwpkFnKqO+cqtZq3AdEYUeSGXMeLsBDQYiqTVcihYfk8vr5tqhw==",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "d3-array": "1",
+ "d3-collection": "1",
+ "d3-shape": "^1.2.0"
+ }
+ },
+ "node_modules/@plotly/d3-sankey-circular": {
+ "version": "0.33.1",
+ "resolved": "https://registry.npmjs.org/@plotly/d3-sankey-circular/-/d3-sankey-circular-0.33.1.tgz",
+ "integrity": "sha512-FgBV1HEvCr3DV7RHhDsPXyryknucxtfnLwPtCKKxdolKyTFYoLX/ibEfX39iFYIL7DYbVeRtP43dbFcrHNE+KQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "d3-array": "^1.2.1",
+ "d3-collection": "^1.0.4",
+ "d3-shape": "^1.2.0",
+ "elementary-circuits-directed-graph": "^1.0.4"
+ }
+ },
+ "node_modules/@plotly/mapbox-gl": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/@plotly/mapbox-gl/-/mapbox-gl-1.13.4.tgz",
+ "integrity": "sha512-sR3/Pe5LqT/fhYgp4rT4aSFf1rTsxMbGiH6Hojc7PH36ny5Bn17iVFUjpzycafETURuFbLZUfjODO8LvSI+5zQ==",
+ "deprecated": "This package is deprecated as of August 2026. plotly.js v4 uses MapLibre for map traces — see https://github.com/maplibre/maplibre-gl-js.",
+ "license": "SEE LICENSE IN LICENSE.txt",
+ "peer": true,
+ "dependencies": {
+ "@mapbox/geojson-rewind": "^0.5.2",
+ "@mapbox/geojson-types": "^1.0.2",
+ "@mapbox/jsonlint-lines-primitives": "^2.0.2",
+ "@mapbox/mapbox-gl-supported": "^1.5.0",
+ "@mapbox/point-geometry": "^0.1.0",
+ "@mapbox/tiny-sdf": "^1.1.1",
+ "@mapbox/unitbezier": "^0.0.0",
+ "@mapbox/vector-tile": "^1.3.1",
+ "@mapbox/whoots-js": "^3.1.0",
+ "csscolorparser": "~1.0.3",
+ "earcut": "^2.2.2",
+ "geojson-vt": "^3.2.1",
+ "gl-matrix": "^3.2.1",
+ "grid-index": "^1.1.0",
+ "murmurhash-js": "^1.0.0",
+ "pbf": "^3.2.1",
+ "potpack": "^1.0.1",
+ "quickselect": "^2.0.0",
+ "rw": "^1.3.3",
+ "supercluster": "^7.1.0",
+ "tinyqueue": "^2.0.3",
+ "vt-pbf": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=6.4.0"
+ }
+ },
+ "node_modules/@plotly/point-cluster": {
+ "version": "3.1.9",
+ "resolved": "https://registry.npmjs.org/@plotly/point-cluster/-/point-cluster-3.1.9.tgz",
+ "integrity": "sha512-MwaI6g9scKf68Orpr1pHZ597pYx9uP8UEFXLPbsCmuw3a84obwz6pnMXGc90VhgDNeNiLEdlmuK7CPo+5PIxXw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "array-bounds": "^1.0.1",
+ "binary-search-bounds": "^2.0.4",
+ "clamp": "^1.0.1",
+ "defined": "^1.0.0",
+ "dtype": "^2.0.0",
+ "flatten-vertex-data": "^1.0.2",
+ "is-obj": "^1.0.1",
+ "math-log2": "^1.0.1",
+ "parse-rect": "^1.2.0",
+ "pick-by-alias": "^1.2.0"
+ }
+ },
+ "node_modules/@plotly/regl": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/@plotly/regl/-/regl-2.1.2.tgz",
+ "integrity": "sha512-Mdk+vUACbQvjd0m/1JJjOOafmkp/EpmHjISsopEz5Av44CBq7rPC05HHNbYGKVyNUF2zmEoBS/TT0pd0SPFFyw==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/@pnpm/config.env-replace": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz",
@@ -6026,9 +6258,9 @@
"license": "ISC"
},
"node_modules/@pnpm/npm-conf": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.3.tgz",
- "integrity": "sha512-//0sR/cow/s4ICQaYoAobOl4aU8cjU6x/V24V7XkKotb9+O+3zySIYp146vpaobYHnxa4pZX8NkV54Z5AwbDKA==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.2.tgz",
+ "integrity": "sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==",
"license": "MIT",
"dependencies": {
"@pnpm/config.env-replace": "^1.1.0",
@@ -6103,27 +6335,27 @@
"license": "BSD-3-Clause"
},
"node_modules/@rspack/binding": {
- "version": "1.7.12",
- "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.7.12.tgz",
- "integrity": "sha512-f4HHuLbvuld8Ba4iB/4ibse5XrKxFrgmM3S4P2AOKnPlekAFlBjmltCuaTL/W2ggYvILaVY+YcFXrEH1rrKeQA==",
+ "version": "1.7.11",
+ "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.7.11.tgz",
+ "integrity": "sha512-2MGdy2s2HimsDT444Bp5XnALzNRxuBNc7y0JzyuqKbHBywd4x2NeXyhWXXoxufaCFu5PBc9Qq9jyfjW2Aeh06Q==",
"license": "MIT",
"optionalDependencies": {
- "@rspack/binding-darwin-arm64": "1.7.12",
- "@rspack/binding-darwin-x64": "1.7.12",
- "@rspack/binding-linux-arm64-gnu": "1.7.12",
- "@rspack/binding-linux-arm64-musl": "1.7.12",
- "@rspack/binding-linux-x64-gnu": "1.7.12",
- "@rspack/binding-linux-x64-musl": "1.7.12",
- "@rspack/binding-wasm32-wasi": "1.7.12",
- "@rspack/binding-win32-arm64-msvc": "1.7.12",
- "@rspack/binding-win32-ia32-msvc": "1.7.12",
- "@rspack/binding-win32-x64-msvc": "1.7.12"
+ "@rspack/binding-darwin-arm64": "1.7.11",
+ "@rspack/binding-darwin-x64": "1.7.11",
+ "@rspack/binding-linux-arm64-gnu": "1.7.11",
+ "@rspack/binding-linux-arm64-musl": "1.7.11",
+ "@rspack/binding-linux-x64-gnu": "1.7.11",
+ "@rspack/binding-linux-x64-musl": "1.7.11",
+ "@rspack/binding-wasm32-wasi": "1.7.11",
+ "@rspack/binding-win32-arm64-msvc": "1.7.11",
+ "@rspack/binding-win32-ia32-msvc": "1.7.11",
+ "@rspack/binding-win32-x64-msvc": "1.7.11"
}
},
"node_modules/@rspack/binding-darwin-arm64": {
- "version": "1.7.12",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.12.tgz",
- "integrity": "sha512-rbFprJaJiqrmfy8SHth8EsoRS0wg4bXcucwj9NiMzpGFq14Opw8c04iQ6H9BECYzgmN0PKZ9rh41LdVvhdZe4A==",
+ "version": "1.7.11",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.7.11.tgz",
+ "integrity": "sha512-oduECiZVqbO5zlVw+q7Vy65sJFth99fWPTyucwvLJJtJkPL5n17Uiql2cYP6Ijn0pkqtf1SXgK8WjiKLG5bIig==",
"cpu": [
"arm64"
],
@@ -6134,9 +6366,9 @@
]
},
"node_modules/@rspack/binding-darwin-x64": {
- "version": "1.7.12",
- "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.12.tgz",
- "integrity": "sha512-jnOp+/UXOJa9xqUb8KXH03sysoO2e4Ij6tw6MqDdmdj8n/A8PQENRPUbW9AwXpPtVDJPus9r4fi7b3+6e4B8Hg==",
+ "version": "1.7.11",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.7.11.tgz",
+ "integrity": "sha512-a1+TtTE9ap6RalgFi7FGIgkJP6O4Vy6ctv+9WGJy53E4kuqHR0RygzaiVxCI/GMc/vBT9vY23hyrpWb3d1vtXA==",
"cpu": [
"x64"
],
@@ -6147,9 +6379,9 @@
]
},
"node_modules/@rspack/binding-linux-arm64-gnu": {
- "version": "1.7.12",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.12.tgz",
- "integrity": "sha512-C8owWG+yvo7X0oVLIXetkoJhIFBP1LYNcAQqtgLmJnQLQDklGuP83dKC+zISGQWpjawHfZ1ER96vLgoTrxKZdw==",
+ "version": "1.7.11",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.7.11.tgz",
+ "integrity": "sha512-P0QrGRPbTWu6RKWfN0bDtbnEps3rXH0MWIMreZABoUrVmNQKtXR6e73J3ub6a+di5s2+K0M2LJ9Bh2/H4UsDUA==",
"cpu": [
"arm64"
],
@@ -6163,9 +6395,9 @@
]
},
"node_modules/@rspack/binding-linux-arm64-musl": {
- "version": "1.7.12",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.12.tgz",
- "integrity": "sha512-i51WWI64aRpsfSki6rN0aepPqXkVfS+vZM7+4bWDcmnhUmdMvhIPcYg0QRk3DtyJnu33jqNLM0WHY78k00NyfA==",
+ "version": "1.7.11",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.7.11.tgz",
+ "integrity": "sha512-6ky7R43VMjWwmx3Yx7Jl7faLBBMAgMDt+/bN35RgwjiPgsIByz65EwytUVuW9rikB43BGHvA/eqlnjLrUzNBqw==",
"cpu": [
"arm64"
],
@@ -6179,9 +6411,9 @@
]
},
"node_modules/@rspack/binding-linux-x64-gnu": {
- "version": "1.7.12",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.12.tgz",
- "integrity": "sha512-MSos0FuPEefqo9V92ULd5hggKG29EkSNg1zDcypy0OkpsKh5pfjVxTLYFXgTcVyFoUQQbdG8zFBzYbwmJ8V4ew==",
+ "version": "1.7.11",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.7.11.tgz",
+ "integrity": "sha512-cuOJMfCOvb2Wgsry5enXJ3iT1FGUjdPqtGUBVupQlEG4ntSYsQ2PtF4wIDVasR3wdxC5nQbipOrDiN/u6fYsdQ==",
"cpu": [
"x64"
],
@@ -6195,9 +6427,9 @@
]
},
"node_modules/@rspack/binding-linux-x64-musl": {
- "version": "1.7.12",
- "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.12.tgz",
- "integrity": "sha512-JcAMVKXOnjfpC3coWjCFPWD3Yl8RBw6a+IXQQ8mfRlHaHMIiOv8IfZqx15XRxMUn49CtP7Z0Na8iiAg2aKrcfw==",
+ "version": "1.7.11",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.7.11.tgz",
+ "integrity": "sha512-CoK37hva4AmHGh3VCsQXmGr40L36m1/AdnN5LEjUX6kx5rEH7/1nEBN6Ii72pejqDVvk9anEROmPDiPw10tpFg==",
"cpu": [
"x64"
],
@@ -6211,9 +6443,9 @@
]
},
"node_modules/@rspack/binding-wasm32-wasi": {
- "version": "1.7.12",
- "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.12.tgz",
- "integrity": "sha512-n+ZqP6ZMc0nhOgvadg5VhEs9ojtbES80AcWeFnmGkbzIszvGSO63GKNiRkXtjJ9KFuRzytbbmsCqkUVH+Tywxg==",
+ "version": "1.7.11",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-wasm32-wasi/-/binding-wasm32-wasi-1.7.11.tgz",
+ "integrity": "sha512-OtrmnPUVJMxjNa3eDMfHyPdtlLRmmp/aIm0fQHlAOATbZvlGm12q7rhPW5BXTu1yh+1rQ1/uqvz+SzKEZXuJaQ==",
"cpu": [
"wasm32"
],
@@ -6224,9 +6456,9 @@
}
},
"node_modules/@rspack/binding-win32-arm64-msvc": {
- "version": "1.7.12",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.12.tgz",
- "integrity": "sha512-8+h5fYDXYdmugbdfZ+D1y8IQ3rv2EhSfyGP7vBe+bjNyaMa4jWrpucmZbtxojUL1AzaeuHbvMdj9UO/gelk/+g==",
+ "version": "1.7.11",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.7.11.tgz",
+ "integrity": "sha512-lObFW6e5lCWNgTBNwT//yiEDbsxm9QG4BYUojqeXxothuzJ/L6ibXz6+gLMvbOvLGV3nKgkXmx8GvT9WDKR0mA==",
"cpu": [
"arm64"
],
@@ -6237,9 +6469,9 @@
]
},
"node_modules/@rspack/binding-win32-ia32-msvc": {
- "version": "1.7.12",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.12.tgz",
- "integrity": "sha512-cDMGwTRSa2p9fNBVe1wTRkF2AEXZ9ARWW36QeC5CkLaI0Ezz8lvhF2+CSOPnhaQ1O1qtn0L0SF+lFnrY+I7xGQ==",
+ "version": "1.7.11",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.7.11.tgz",
+ "integrity": "sha512-0pYGnZd8PPqNR68zQ8skamqNAXEA1sUfXuAdYcknIIRq2wsbiwFzIc0Pov1cIfHYab37G7sSIPBiOUdOWF5Ivw==",
"cpu": [
"ia32"
],
@@ -6250,9 +6482,9 @@
]
},
"node_modules/@rspack/binding-win32-x64-msvc": {
- "version": "1.7.12",
- "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.12.tgz",
- "integrity": "sha512-wIqFvlgFqrgUyj/6S/FJcvShnkZOmIeXTfqvheLY67MGq8qd8jb1YimQVKAIrmWB3yuJKUFACI3Ag1UBtEedEA==",
+ "version": "1.7.11",
+ "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.7.11.tgz",
+ "integrity": "sha512-EeQXayoQk/uBkI3pdoXfQBXNIUrADq56L3s/DFyM2pJeUDrWmhfIw2UFIGkYPTMSCo8F2JcdcGM32FGJrSnU0Q==",
"cpu": [
"x64"
],
@@ -6263,13 +6495,13 @@
]
},
"node_modules/@rspack/core": {
- "version": "1.7.12",
- "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.7.12.tgz",
- "integrity": "sha512-6CwFIHlhRmXfZoMj3v9MZ1SMTPBn+cHVXeMIeaGp5sufqinKsISbsqHu6ZMJu2wDSmZLdmQJX6zLxkhcAUlhkQ==",
+ "version": "1.7.11",
+ "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.7.11.tgz",
+ "integrity": "sha512-rsD9b+Khmot5DwCMiB3cqTQo53ioPG3M/A7BySu8+0+RS7GCxKm+Z+mtsjtG/vsu4Tn2tcqCdZtA3pgLoJB+ew==",
"license": "MIT",
"dependencies": {
"@module-federation/runtime-tools": "0.22.0",
- "@rspack/binding": "1.7.12",
+ "@rspack/binding": "1.7.11",
"@rspack/lite-tapable": "1.1.0"
},
"engines": {
@@ -6312,9 +6544,9 @@
"license": "BSD-3-Clause"
},
"node_modules/@sinclair/typebox": {
- "version": "0.27.12",
- "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.12.tgz",
- "integrity": "sha512-hhyNJ+nbR6ZR7pToHvllEFun9TL0sbL+tk/ON75lo+Xas054uez98qRbsuNt7MBCyZKK4+8Yli/OAGZhmfBZ/g==",
+ "version": "0.27.10",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz",
+ "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==",
"license": "MIT"
},
"node_modules/@sindresorhus/is": {
@@ -6598,14 +6830,14 @@
}
},
"node_modules/@swc/core": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.47.tgz",
- "integrity": "sha512-FbsO5JcfOjfH38W/rohBRBweJeERsAuIP4f377lmkmxTcq9exjtx4SkRuZY5CdfhR2CBVwDIJegBpJDffwNsOg==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.15.40.tgz",
+ "integrity": "sha512-2kwzJikRvgtNAG7MwVZY2vEzZjTxKIq5jXOihuSV/8U+Hej8Va22t65aKnJZs3P+NwojZvR8Mf8kyM7O+V8sQg==",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"@swc/counter": "^0.1.3",
- "@swc/types": "^0.1.27"
+ "@swc/types": "^0.1.26"
},
"engines": {
"node": ">=10"
@@ -6615,18 +6847,18 @@
"url": "https://opencollective.com/swc"
},
"optionalDependencies": {
- "@swc/core-darwin-arm64": "1.15.47",
- "@swc/core-darwin-x64": "1.15.47",
- "@swc/core-linux-arm-gnueabihf": "1.15.47",
- "@swc/core-linux-arm64-gnu": "1.15.47",
- "@swc/core-linux-arm64-musl": "1.15.47",
- "@swc/core-linux-ppc64-gnu": "1.15.47",
- "@swc/core-linux-s390x-gnu": "1.15.47",
- "@swc/core-linux-x64-gnu": "1.15.47",
- "@swc/core-linux-x64-musl": "1.15.47",
- "@swc/core-win32-arm64-msvc": "1.15.47",
- "@swc/core-win32-ia32-msvc": "1.15.47",
- "@swc/core-win32-x64-msvc": "1.15.47"
+ "@swc/core-darwin-arm64": "1.15.40",
+ "@swc/core-darwin-x64": "1.15.40",
+ "@swc/core-linux-arm-gnueabihf": "1.15.40",
+ "@swc/core-linux-arm64-gnu": "1.15.40",
+ "@swc/core-linux-arm64-musl": "1.15.40",
+ "@swc/core-linux-ppc64-gnu": "1.15.40",
+ "@swc/core-linux-s390x-gnu": "1.15.40",
+ "@swc/core-linux-x64-gnu": "1.15.40",
+ "@swc/core-linux-x64-musl": "1.15.40",
+ "@swc/core-win32-arm64-msvc": "1.15.40",
+ "@swc/core-win32-ia32-msvc": "1.15.40",
+ "@swc/core-win32-x64-msvc": "1.15.40"
},
"peerDependencies": {
"@swc/helpers": ">=0.5.17"
@@ -6638,9 +6870,9 @@
}
},
"node_modules/@swc/core-darwin-arm64": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.47.tgz",
- "integrity": "sha512-GsoMtan3ojGGMGFbl31mmRu5ctZ56re8grGE8mO/OHJ8O+JRkzod02fe7X6ZQ8JvamA3imkEkx/h3u+vsOgPgA==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.15.40.tgz",
+ "integrity": "sha512-PaYyclfmQ++77D8ityYvmmVzHv9aG8ROwt2GfG6/ccloy4Hgf80qtOnzb9VYvPsUT7Ty1uhuDRhv3XYpf62qhQ==",
"cpu": [
"arm64"
],
@@ -6654,9 +6886,9 @@
}
},
"node_modules/@swc/core-darwin-x64": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.47.tgz",
- "integrity": "sha512-leTi7Rx3KF4zcC637iqWgk9SoV8VXAD8ppQYXsep63px5A/UftOcxLN1pmr8Z1si/YvX90ompP/rHgpYkgwXWg==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.15.40.tgz",
+ "integrity": "sha512-HbbPzvfLBUXjIB1Ezks+//lNUjmLjfyd63XSwprJgrZaXYdm70kohXPJUWdqKZozolFxbPaO+xtBaiUp6BoueA==",
"cpu": [
"x64"
],
@@ -6670,9 +6902,9 @@
}
},
"node_modules/@swc/core-linux-arm-gnueabihf": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.47.tgz",
- "integrity": "sha512-hBqHuoWKKIsKmDBn9qVeWqj5GWZhtlcczVaqQmNRXsDfq+voR5CxKRfamA367QjJXtceYuliLFfEL8QsskRM2g==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.15.40.tgz",
+ "integrity": "sha512-SlRZsCjOCPR2LvFs0Ri/Xrx/5o5TCt8vl4gW6mX1hEZOG0a625RxzRHpHdAQNGykmAN/7IeaFAJG+QnNmxlHcA==",
"cpu": [
"arm"
],
@@ -6686,9 +6918,9 @@
}
},
"node_modules/@swc/core-linux-arm64-gnu": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.47.tgz",
- "integrity": "sha512-TBxvRz+B4K205TWHHZxWVxkC2RFNP/Mz3PNcECBos5PsKwxjg3QSJzdoebr0VCf0Bfh8HOPldKxAP/8XkFe9gA==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.15.40.tgz",
+ "integrity": "sha512-Q8byxJt2fh8CR3EUX6snBpy47AoBVm+In/+Z3rjDHMjC38ZvR9/gtUUNCT0tfrn4EdVsO8/QPi59nxrxvqxvBQ==",
"cpu": [
"arm64"
],
@@ -6705,9 +6937,9 @@
}
},
"node_modules/@swc/core-linux-arm64-musl": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.47.tgz",
- "integrity": "sha512-3Yu3Uq/VgytqsPjTMbkPU1ExADytbdWbruJYhA584E9jrpE2Ki+R6VVPoZCeAVk1Cb7QxcRTgblw6bSa6a/R+w==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.15.40.tgz",
+ "integrity": "sha512-4z0MgHU+7M0pZDqBN1El7mFXDI1SBwinfcUkAyA4v8QrhOIUOZltySt2aStQLZGrdXVXM4Y4ylfiTC04ED+MoQ==",
"cpu": [
"arm64"
],
@@ -6724,9 +6956,9 @@
}
},
"node_modules/@swc/core-linux-ppc64-gnu": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.47.tgz",
- "integrity": "sha512-wfdMi5IaOaNtmh2/6geRoxIdNfqylUZFdtzTKS655y1axWfIWyx7As74vv0wVdjeCIZ3WmCI9odDd4rUttXOSQ==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-ppc64-gnu/-/core-linux-ppc64-gnu-1.15.40.tgz",
+ "integrity": "sha512-fLI4iUgeSZu0eRWUXwe6YzPFx9gHbFiPkl8Rp3mJfP8OpNR3nTQCGPvHdDh9xniW7mVvgMY4ni7A4VzqI1KrpA==",
"cpu": [
"ppc64"
],
@@ -6743,9 +6975,9 @@
}
},
"node_modules/@swc/core-linux-s390x-gnu": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.47.tgz",
- "integrity": "sha512-3hHYBY0yx8Ez7GMRrkhXHQzMdR5IZA6Wq5Ee4svlgwvSECLpnAJ9+0AimEGUFDvuLwE7nV/2+PYe8+Nm4rvNcQ==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-s390x-gnu/-/core-linux-s390x-gnu-1.15.40.tgz",
+ "integrity": "sha512-YqeKMAb7d4nQSGMJQ454IlaCENpzcDqhvBE9+CPfdnYpnUXxd+BSrB6Xk0YjW8UyoEhUj4p6quATCxbsp6J3jg==",
"cpu": [
"s390x"
],
@@ -6762,9 +6994,9 @@
}
},
"node_modules/@swc/core-linux-x64-gnu": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.47.tgz",
- "integrity": "sha512-TjfhjgP/jGCfFHYC3JQPhJA1HwErbIJ9JfREDc1KNkvY6P0LodCgKVIlQ5deeTbkG7ih3bF5PHJLuLpaZjdRyQ==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.15.40.tgz",
+ "integrity": "sha512-7HOuS1iGcme/j/TuL1TfmmLGiMQrjv/GmjyZeydl00FKPtpGXEldwqfI56xgd1YzrzoB2svWjxbGGyQ0TEASxg==",
"cpu": [
"x64"
],
@@ -6781,9 +7013,9 @@
}
},
"node_modules/@swc/core-linux-x64-musl": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.47.tgz",
- "integrity": "sha512-CQpS8Ge/avfjZd0UEwG/sds83Uu32deQXcV1Jo3jD0mmvQQqtYAjpsDZXugmheeAwmt+YIuoVtVHro8LMYHqsQ==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.15.40.tgz",
+ "integrity": "sha512-h4kZYHc7dpc9P9u4brRJaS8Pl7tPVHAeiLSzw7T5RfIJgAoSdaCMKzI/2Uay9gFhaw8uyCDl0L5q37r0EpAfIA==",
"cpu": [
"x64"
],
@@ -6800,9 +7032,9 @@
}
},
"node_modules/@swc/core-win32-arm64-msvc": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.47.tgz",
- "integrity": "sha512-0W8IKHsUTYiT7G2RqtOoVWk+89yzZikIiDUb/sCK6BmQDBhN91hQSfyUtW12jhEWLzYgcfmisfsZrmZE+84U1A==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.15.40.tgz",
+ "integrity": "sha512-+mQgKZXSj6mV38Zh05QaxSjUDmGP/R2JWlXZTDLSPkDzHU6p3GxN9eeSf5dfyDVU86946fmCvSzyl/ucImx8+A==",
"cpu": [
"arm64"
],
@@ -6816,9 +7048,9 @@
}
},
"node_modules/@swc/core-win32-ia32-msvc": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.47.tgz",
- "integrity": "sha512-ZIp49d2Z4/ka2jO9otOg4hDvTdPmp86kVOgS2M5FCPI7eKKZ1W0boxWn+8XeZrfERtFGW0AlMRm4JhlJa7l3NA==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.15.40.tgz",
+ "integrity": "sha512-yvwdPLGd25mcj/mNatjNQ0lZujtQD6psH3v9PNmMb+fSzjbNG8KIDxjFWrcV+fsFVLOkyOmdJsFmX7NAFjVyPw==",
"cpu": [
"ia32"
],
@@ -6832,9 +7064,9 @@
}
},
"node_modules/@swc/core-win32-x64-msvc": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.47.tgz",
- "integrity": "sha512-2h8Iek95vnixkBRCo+H8p09+Q5ll2NgSMFrWTy0iKt7+/t+8/T5mBpiT6c0ZxSS7wcWjwZ9sGZkK70tTSYHdDw==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.15.40.tgz",
+ "integrity": "sha512-OXtKsLU1bVtInzzDEAY2sYiF/rl4tvAnLLLpuMp3HzAOQZ5A+i69AKDhA1YLQTaMAqO3vzyYNVAYVRMPtSYD4w==",
"cpu": [
"x64"
],
@@ -6854,9 +7086,9 @@
"license": "Apache-2.0"
},
"node_modules/@swc/html": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/html/-/html-1.15.47.tgz",
- "integrity": "sha512-Olu/8OORvYB+43v2/85nHe1EA8WSvWp8D3kctEAput/o4F+EWCK0nr4yGTqvWB7Z+ODz0k+vnxpvHQYzsKP2LA==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/html/-/html-1.15.40.tgz",
+ "integrity": "sha512-YVWNrh3wZWH2oXz7uL+s1WZbFIsnAp9cCl/b+C7ufDJqhsOvbr0un9IOYZ/CxRIRdnHGfhVD199n8baD/kRQew==",
"license": "Apache-2.0",
"dependencies": {
"@swc/counter": "^0.1.3"
@@ -6865,24 +7097,24 @@
"node": ">=14"
},
"optionalDependencies": {
- "@swc/html-darwin-arm64": "1.15.47",
- "@swc/html-darwin-x64": "1.15.47",
- "@swc/html-linux-arm-gnueabihf": "1.15.47",
- "@swc/html-linux-arm64-gnu": "1.15.47",
- "@swc/html-linux-arm64-musl": "1.15.47",
- "@swc/html-linux-ppc64-gnu": "1.15.47",
- "@swc/html-linux-s390x-gnu": "1.15.47",
- "@swc/html-linux-x64-gnu": "1.15.47",
- "@swc/html-linux-x64-musl": "1.15.47",
- "@swc/html-win32-arm64-msvc": "1.15.47",
- "@swc/html-win32-ia32-msvc": "1.15.47",
- "@swc/html-win32-x64-msvc": "1.15.47"
+ "@swc/html-darwin-arm64": "1.15.40",
+ "@swc/html-darwin-x64": "1.15.40",
+ "@swc/html-linux-arm-gnueabihf": "1.15.40",
+ "@swc/html-linux-arm64-gnu": "1.15.40",
+ "@swc/html-linux-arm64-musl": "1.15.40",
+ "@swc/html-linux-ppc64-gnu": "1.15.40",
+ "@swc/html-linux-s390x-gnu": "1.15.40",
+ "@swc/html-linux-x64-gnu": "1.15.40",
+ "@swc/html-linux-x64-musl": "1.15.40",
+ "@swc/html-win32-arm64-msvc": "1.15.40",
+ "@swc/html-win32-ia32-msvc": "1.15.40",
+ "@swc/html-win32-x64-msvc": "1.15.40"
}
},
"node_modules/@swc/html-darwin-arm64": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/html-darwin-arm64/-/html-darwin-arm64-1.15.47.tgz",
- "integrity": "sha512-Qe3FXNLO/k2WN7xmBP8SzBrtLvlIbyqa8cceUOI0opE4gk+myk5qIk022MiGJOgiF1B21/wMXgA08gYjQ2lP2Q==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/html-darwin-arm64/-/html-darwin-arm64-1.15.40.tgz",
+ "integrity": "sha512-A9oxSh60pMEsX/4VBpn3e6s8DfGWsHzAeG+Vd9mXgkTqt/ouX12owP6RyqfqK8v0WuEsBKkGY0+MbwLvlOG8NQ==",
"cpu": [
"arm64"
],
@@ -6896,9 +7128,9 @@
}
},
"node_modules/@swc/html-darwin-x64": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/html-darwin-x64/-/html-darwin-x64-1.15.47.tgz",
- "integrity": "sha512-khCOiWmqlqi8yz+F/ePExhht/+3/cz1XzKV7raPKVynzd6sPxYtFQlNubj305s2soEXgkYYIH0zVVLwiMOVn6Q==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/html-darwin-x64/-/html-darwin-x64-1.15.40.tgz",
+ "integrity": "sha512-GZ5KxJ/1pqnpOAjaa9hnkSk3M1LHjc5ci5GCt5/llAgDKFLDHzydIflHXTOIaS4nRCtfVMmD0joKX+ZWruSkJw==",
"cpu": [
"x64"
],
@@ -6912,9 +7144,9 @@
}
},
"node_modules/@swc/html-linux-arm-gnueabihf": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.15.47.tgz",
- "integrity": "sha512-7VRqaOEQEFPHSbUcnobmI59WbFK9M35Sse8TFN3hHxOlK9fINJ9yN5FuE9XEeRQAk+PFdR6WrIcF1Xwx1Cpi8A==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.15.40.tgz",
+ "integrity": "sha512-Bbwtl0G6vYcWlDQmjeuyFx8YIvqi1StlQWjRNB1ZtvrRNL3JadFARhijBONiUIyTK9MgUbWtTV3QU69qzjNENQ==",
"cpu": [
"arm"
],
@@ -6928,9 +7160,9 @@
}
},
"node_modules/@swc/html-linux-arm64-gnu": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.15.47.tgz",
- "integrity": "sha512-Ri9MmQqVRiEWuRfpkSTqz0bguvejXQcqQAkoW1Hke6+DColfzETcgNWa/Kw/ii5A/SS9Nb7acKaYdIw1vMBPwA==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.15.40.tgz",
+ "integrity": "sha512-buu4fGyCIhkwmCetI4CfWOPn7cphJHwQ9ksK685hlL0R0PUaDCNdIxo+JAz0mK2JgPhoGqnKsVEmV6gLIL5GBw==",
"cpu": [
"arm64"
],
@@ -6947,9 +7179,9 @@
}
},
"node_modules/@swc/html-linux-arm64-musl": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.15.47.tgz",
- "integrity": "sha512-NyXRQiVBkeutgCwCxUUaFqZdDmpZONs7Zz3AZGoY35s9GwXF412Nt22fK/e7lO/sM6G/+S3rOom/0xTmUQSK6A==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.15.40.tgz",
+ "integrity": "sha512-BwWtpAGEHIP1QwKExWqBIjGpAHMahjT26ORZv3+TbwW4IuEl2QP5FrcYc30O8abCG5J1lWRl1vXKYDpzbIDz1A==",
"cpu": [
"arm64"
],
@@ -6966,9 +7198,9 @@
}
},
"node_modules/@swc/html-linux-ppc64-gnu": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/html-linux-ppc64-gnu/-/html-linux-ppc64-gnu-1.15.47.tgz",
- "integrity": "sha512-rQ+XLJHFzu0e4M5p1+8kF2FKzI7WO9KPPji87OuicHZVrDCEqg7/jSGu3hys9CjIQIYVfR+tAFuZz3Q1/jOoNA==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/html-linux-ppc64-gnu/-/html-linux-ppc64-gnu-1.15.40.tgz",
+ "integrity": "sha512-wLtHgwmZu5K7PvuTROklgWJO6D+KwywpYR1geI8dSWX/AYnx/KCGVK9ncPzWVfnLXWhXbkgua3Ujdrfoxf+qSw==",
"cpu": [
"ppc64"
],
@@ -6985,9 +7217,9 @@
}
},
"node_modules/@swc/html-linux-s390x-gnu": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/html-linux-s390x-gnu/-/html-linux-s390x-gnu-1.15.47.tgz",
- "integrity": "sha512-w6bitHrllrE3lqmf14cT3spmWhZHGts1O08O4adzxztSPto7O5GM3IerqZm/NtsqlxNsfbVHnhaNXxXWe/8Q+Q==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/html-linux-s390x-gnu/-/html-linux-s390x-gnu-1.15.40.tgz",
+ "integrity": "sha512-WbWzQBCmvECZG6ep9D5SMMZTFCbFmRSCc7lPD3YhhaK16BNqr1AybvybZYOgxX9Ot5tq7gTWCgjFZXLDOn6Y/g==",
"cpu": [
"s390x"
],
@@ -7004,9 +7236,9 @@
}
},
"node_modules/@swc/html-linux-x64-gnu": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.15.47.tgz",
- "integrity": "sha512-FTA7E29gcyadd71prg8sJUVacYrIhAXS8L7p48yCfgcNOKquofN1TDOrHVOyYMoxplL3FUwwbN+AZxWO7QfWPQ==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.15.40.tgz",
+ "integrity": "sha512-i+/JqL5j9mTGMcVshWLMzciqyE3Np+gN5+UqMyO1D5zSmniJD5MHRlGXCtLaWx/MIKX0Q4Xkre33o56fmxp+uA==",
"cpu": [
"x64"
],
@@ -7023,9 +7255,9 @@
}
},
"node_modules/@swc/html-linux-x64-musl": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.15.47.tgz",
- "integrity": "sha512-g+K1GKUrj+S9o8Qsgii2g7ooMzZ750R4IAqH5CVElIA5FTMAx7KGnu9ga6aEnRwwLYxY3s1k/nN+ls0NEk240g==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.15.40.tgz",
+ "integrity": "sha512-mroZnb5omFc4iE01UsJgta+Nm0sIFWpGfTPk+BHfH165MZAM4wNndeczX5RpGZbQSF1nNpCoNgqJyT7l3hITMg==",
"cpu": [
"x64"
],
@@ -7042,9 +7274,9 @@
}
},
"node_modules/@swc/html-win32-arm64-msvc": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.15.47.tgz",
- "integrity": "sha512-5Iw3i00JdTySi+ccc2CM5bxY+8TZivQmcTqUC6mUdAY0/KYBgSe1/L294UJQ4OTLQqNDOYXY9jdb070zZUX7jg==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.15.40.tgz",
+ "integrity": "sha512-qg1LXRrsY9FXy0S7vouSF0kkn1vdkTD//FW66iuezH7HMm5/DJGwEj7oc1zTKPWU0HnwOINOUbl6rUHrRuXHAQ==",
"cpu": [
"arm64"
],
@@ -7058,9 +7290,9 @@
}
},
"node_modules/@swc/html-win32-ia32-msvc": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.15.47.tgz",
- "integrity": "sha512-YkKd0hbIOeuFC1Sg7uGKkU2JhL+c9vAJlT6P0nRbWCAL71n01IPbdtbW6PmvgVmI7pxRYucXpr4pg839nX5+9Q==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.15.40.tgz",
+ "integrity": "sha512-5NwMmgt9A70LQzcYOl4OiIJk5AhsGP69fNRfkmXXop+iIcAGUmYy+d6F2/Gc0u05j9G0R04NPWcHBQrHQhr0Gw==",
"cpu": [
"ia32"
],
@@ -7074,9 +7306,9 @@
}
},
"node_modules/@swc/html-win32-x64-msvc": {
- "version": "1.15.47",
- "resolved": "https://registry.npmjs.org/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.15.47.tgz",
- "integrity": "sha512-w9Ug+VB9hlHT4hTWIJSB40AdF+qs5w07CYq/+ef1vQRjT5naN6/SKuXmr9/CKLn3T7A9z3lRMPKE4+lmtUkBOQ==",
+ "version": "1.15.40",
+ "resolved": "https://registry.npmjs.org/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.15.40.tgz",
+ "integrity": "sha512-WUNZqCZ+8WY1pr8t3X3fq4gI5+FL/tCCzlrJ2lLn0s+TyA2SLm/RPfXxQIr94EnjJWcIV21G//6/uXeBN8cPzw==",
"cpu": [
"x64"
],
@@ -7090,9 +7322,9 @@
}
},
"node_modules/@swc/types": {
- "version": "0.1.28",
- "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.28.tgz",
- "integrity": "sha512-V6Mnml8v09QALx6K0elJ7o9K/MkVDtW3t6L+7Ou/JcWtb3xwId2AH4FeOceySd2JaO87IMw4+6vSZxLm34LPbw==",
+ "version": "0.1.26",
+ "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.26.tgz",
+ "integrity": "sha512-lyMwd7WGgG79RS7EERZV3T8wMdmPq3xwyg+1nmAM64kIhx5yl+juO2PYIHb7vTiPgPCj8LYjsNV2T5wiQHUEaw==",
"license": "Apache-2.0",
"dependencies": {
"@swc/counter": "^0.1.3"
@@ -7110,6 +7342,83 @@
"node": ">=14.16"
}
},
+ "node_modules/@turf/area": {
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.3.5.tgz",
+ "integrity": "sha512-sSn80wPT7XfBIDN3vurCPxhk9W4U8ozS/XImSqeLN8qveTICOxzZkhsGDMp0CuncaN+plWut4a2TdNM7mzZB6Q==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@turf/helpers": "7.3.5",
+ "@turf/meta": "7.3.5",
+ "@types/geojson": "^7946.0.10",
+ "tslib": "^2.8.1"
+ },
+ "funding": {
+ "url": "https://opencollective.com/turf"
+ }
+ },
+ "node_modules/@turf/bbox": {
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.3.5.tgz",
+ "integrity": "sha512-oG1ya/HtBjAIg4TimbWx+nOYPbY0bCvt82Bq8tm6sBw3qqtbOyRSfDz79Sq90TnH7DXJprJ1qnVGKNtZ6jemfw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@turf/helpers": "7.3.5",
+ "@turf/meta": "7.3.5",
+ "@types/geojson": "^7946.0.10",
+ "tslib": "^2.8.1"
+ },
+ "funding": {
+ "url": "https://opencollective.com/turf"
+ }
+ },
+ "node_modules/@turf/centroid": {
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.3.5.tgz",
+ "integrity": "sha512-hkWaqwGFdOn6Tf0EWfn2yn1XZ1FWE1h2C5ZWstDMu/FxYO5DB+YjlmOFPl4K6SmSOEgdV07eK2vDCyPeTHqKGA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@turf/helpers": "7.3.5",
+ "@turf/meta": "7.3.5",
+ "@types/geojson": "^7946.0.10",
+ "tslib": "^2.8.1"
+ },
+ "funding": {
+ "url": "https://opencollective.com/turf"
+ }
+ },
+ "node_modules/@turf/helpers": {
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.5.tgz",
+ "integrity": "sha512-E/NMGV5MwbjjP7AJXBtsanC3yY8N2MQ87IGdIgkB2ji5AtBpwnH4L3gEqpYN4RlCJJWbLbzO91BbKv2waUd0eg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/geojson": "^7946.0.10",
+ "tslib": "^2.8.1"
+ },
+ "funding": {
+ "url": "https://opencollective.com/turf"
+ }
+ },
+ "node_modules/@turf/meta": {
+ "version": "7.3.5",
+ "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.5.tgz",
+ "integrity": "sha512-r+ohqxoyqeigFB0oFrQx/YEHIkOKqcKpCjvZkvZs7Tkv+IFco5MezAd2zd4rzK+0DfFgDP3KpJc7HqrYjvEjhg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@turf/helpers": "7.3.5",
+ "@types/geojson": "^7946.0.10",
+ "tslib": "^2.8.1"
+ },
+ "funding": {
+ "url": "https://opencollective.com/turf"
+ }
+ },
"node_modules/@tybys/wasm-util": {
"version": "0.10.3",
"resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz",
@@ -7195,9 +7504,9 @@
}
},
"node_modules/@types/express-serve-static-core": {
- "version": "4.19.9",
- "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.9.tgz",
- "integrity": "sha512-QP2ESEe/ImWY0HDwNAnK9PvEffUyhLTnWkk7KXzHfyeWAnlrDe1fN77bXl6ia8KT3wPlmA7t9/VPRpnf4Ex9sg==",
+ "version": "4.19.8",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.8.tgz",
+ "integrity": "sha512-02S5fmqeoKzVZCHPZid4b8JH2eM5HzQLZWN2FohQEy/0eXTq8VXZfSN6Pcr3F6N9R/vNrj7cpgbhjie6m/1tCA==",
"license": "MIT",
"dependencies": {
"@types/node": "*",
@@ -7206,6 +7515,23 @@
"@types/send": "*"
}
},
+ "node_modules/@types/geojson": {
+ "version": "7946.0.16",
+ "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz",
+ "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@types/geojson-vt": {
+ "version": "3.2.5",
+ "resolved": "https://registry.npmjs.org/@types/geojson-vt/-/geojson-vt-3.2.5.tgz",
+ "integrity": "sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/geojson": "*"
+ }
+ },
"node_modules/@types/gtag.js": {
"version": "0.0.20",
"resolved": "https://registry.npmjs.org/@types/gtag.js/-/gtag.js-0.0.20.tgz",
@@ -7213,9 +7539,9 @@
"license": "MIT"
},
"node_modules/@types/hast": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.5.tgz",
- "integrity": "sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==",
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz",
+ "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==",
"license": "MIT",
"dependencies": {
"@types/unist": "*"
@@ -7284,6 +7610,25 @@
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
"license": "MIT"
},
+ "node_modules/@types/mapbox__point-geometry": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.4.tgz",
+ "integrity": "sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@types/mapbox__vector-tile": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.4.tgz",
+ "integrity": "sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/geojson": "*",
+ "@types/mapbox__point-geometry": "*",
+ "@types/pbf": "*"
+ }
+ },
"node_modules/@types/mdast": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz",
@@ -7294,9 +7639,9 @@
}
},
"node_modules/@types/mdx": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.14.tgz",
- "integrity": "sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==",
+ "version": "2.0.13",
+ "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz",
+ "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==",
"license": "MIT"
},
"node_modules/@types/mime": {
@@ -7312,14 +7657,21 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "26.1.2",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.2.tgz",
- "integrity": "sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==",
+ "version": "25.9.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz",
+ "integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==",
"license": "MIT",
"dependencies": {
- "undici-types": "~8.3.0"
+ "undici-types": ">=7.24.0 <7.24.7"
}
},
+ "node_modules/@types/pbf": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@types/pbf/-/pbf-3.0.5.tgz",
+ "integrity": "sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/@types/prismjs": {
"version": "1.26.6",
"resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.6.tgz",
@@ -7339,14 +7691,24 @@
"license": "MIT"
},
"node_modules/@types/react": {
- "version": "19.2.18",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.18.tgz",
- "integrity": "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==",
+ "version": "19.2.15",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.15.tgz",
+ "integrity": "sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q==",
"license": "MIT",
"dependencies": {
"csstype": "^3.2.2"
}
},
+ "node_modules/@types/react-dom": {
+ "version": "19.2.4",
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.4.tgz",
+ "integrity": "sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "@types/react": "^19.2.0"
+ }
+ },
"node_modules/@types/react-router": {
"version": "5.1.20",
"resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz",
@@ -7442,6 +7804,16 @@
"@types/node": "*"
}
},
+ "node_modules/@types/supercluster": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/@types/supercluster/-/supercluster-7.1.3.tgz",
+ "integrity": "sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@types/geojson": "*"
+ }
+ },
"node_modules/@types/unist": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
@@ -7473,9 +7845,9 @@
"license": "MIT"
},
"node_modules/@ungap/structured-clone": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.3.tgz",
- "integrity": "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==",
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz",
+ "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==",
"license": "ISC"
},
"node_modules/@webassemblyjs/ast": {
@@ -7636,6 +8008,13 @@
"integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
"license": "Apache-2.0"
},
+ "node_modules/abs-svg-path": {
+ "version": "0.1.1",
+ "resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz",
+ "integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/accepts": {
"version": "1.3.8",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
@@ -7680,9 +8059,9 @@
}
},
"node_modules/acorn": {
- "version": "8.18.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz",
- "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==",
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
"license": "MIT",
"bin": {
"acorn": "bin/acorn"
@@ -7691,6 +8070,18 @@
"node": ">=0.4.0"
}
},
+ "node_modules/acorn-import-phases": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/acorn-import-phases/-/acorn-import-phases-1.0.4.tgz",
+ "integrity": "sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.13.0"
+ },
+ "peerDependencies": {
+ "acorn": "^8.14.0"
+ }
+ },
"node_modules/acorn-jsx": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
@@ -7789,34 +8180,34 @@
}
},
"node_modules/algoliasearch": {
- "version": "5.56.0",
- "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.56.0.tgz",
- "integrity": "sha512-PrqppUmhT4ENdas2pH9caE7efUcxy6EcSFhWzosiVuQBzu2tQ5yLTI6jwomT/1cuBnivzGfxiJCqDNN9FRRh+Q==",
- "license": "MIT",
- "dependencies": {
- "@algolia/abtesting": "1.22.0",
- "@algolia/client-abtesting": "5.56.0",
- "@algolia/client-analytics": "5.56.0",
- "@algolia/client-common": "5.56.0",
- "@algolia/client-insights": "5.56.0",
- "@algolia/client-personalization": "5.56.0",
- "@algolia/client-query-suggestions": "5.56.0",
- "@algolia/client-search": "5.56.0",
- "@algolia/ingestion": "1.56.0",
- "@algolia/monitoring": "1.56.0",
- "@algolia/recommend": "5.56.0",
- "@algolia/requester-browser-xhr": "5.56.0",
- "@algolia/requester-fetch": "5.56.0",
- "@algolia/requester-node-http": "5.56.0"
+ "version": "5.53.0",
+ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.53.0.tgz",
+ "integrity": "sha512-OGW1q6b91CRSSeiOnM8LxuR5NYJ2esvw66jUZ4IIvdv+ItNkx3pwLuyR+jaCdbGee4ov5WgUnyPryyh11xvByQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@algolia/abtesting": "1.19.0",
+ "@algolia/client-abtesting": "5.53.0",
+ "@algolia/client-analytics": "5.53.0",
+ "@algolia/client-common": "5.53.0",
+ "@algolia/client-insights": "5.53.0",
+ "@algolia/client-personalization": "5.53.0",
+ "@algolia/client-query-suggestions": "5.53.0",
+ "@algolia/client-search": "5.53.0",
+ "@algolia/ingestion": "1.53.0",
+ "@algolia/monitoring": "1.53.0",
+ "@algolia/recommend": "5.53.0",
+ "@algolia/requester-browser-xhr": "5.53.0",
+ "@algolia/requester-fetch": "5.53.0",
+ "@algolia/requester-node-http": "5.53.0"
},
"engines": {
"node": ">= 14.0.0"
}
},
"node_modules/algoliasearch-helper": {
- "version": "3.29.2",
- "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.29.2.tgz",
- "integrity": "sha512-SaV+rZM3drExb0punEYYjT+sNcH74YFwN8ocjya7IDOyQvKWeQpEaSMVG3+IGTVos+feuatj7ljQ4BXlXdUp3w==",
+ "version": "3.29.1",
+ "resolved": "https://registry.npmjs.org/algoliasearch-helper/-/algoliasearch-helper-3.29.1.tgz",
+ "integrity": "sha512-6ck2YFudF2Pje7szQoPBiRFTGfd+1I+0I/WfLPGn0bj1kvrFoOQmNyedNiDxTk3/r4IfSLDYk+RA4G7u8H6+yA==",
"license": "MIT",
"dependencies": {
"@algolia/events": "^4.0.1"
@@ -7924,12 +8315,46 @@
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
"license": "Python-2.0"
},
+ "node_modules/array-bounds": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-bounds/-/array-bounds-1.0.1.tgz",
+ "integrity": "sha512-8wdW3ZGk6UjMPJx/glyEt0sLzzwAE1bhToPsO1W2pbpR2gULyxe3BjSiuJFheP50T/GgODVPz2fuMUmIywt8cQ==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/array-find-index": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
+ "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==",
"license": "MIT"
},
+ "node_modules/array-normalize": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/array-normalize/-/array-normalize-1.1.4.tgz",
+ "integrity": "sha512-fCp0wKFLjvSPmCn4F5Tiw4M3lpMZoHlCjfcs7nNzuj3vqQQ1/a8cgB9DXcpDSn18c+coLnaW7rqfcYCvKbyJXg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "array-bounds": "^1.0.0"
+ }
+ },
+ "node_modules/array-range": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/array-range/-/array-range-1.0.1.tgz",
+ "integrity": "sha512-shdaI1zT3CVNL2hnx9c0JMc0ZogGaxDs5e85akgHWKYa0yVbIyp06Ind3dVkTj/uuFrzaHBOyqFzo+VV6aXgtA==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/array-union": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
@@ -7963,9 +8388,9 @@
}
},
"node_modules/autoprefixer": {
- "version": "10.5.4",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.4.tgz",
- "integrity": "sha512-MaU0U/za7N3r6brxD4YB/l4NSrFzLPlANv6wEuQVaIPlD3L4W9rFcQPbL/EilY9BHhHvhfcz3gInDLrEtWT4EA==",
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.5.0.tgz",
+ "integrity": "sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==",
"funding": [
{
"type": "opencollective",
@@ -7982,8 +8407,8 @@
],
"license": "MIT",
"dependencies": {
- "browserslist": "^4.28.6",
- "caniuse-lite": "^1.0.30001806",
+ "browserslist": "^4.28.2",
+ "caniuse-lite": "^1.0.30001787",
"fraction.js": "^5.3.4",
"picocolors": "^1.1.1",
"postcss-value-parser": "^4.2.0"
@@ -8088,10 +8513,20 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"license": "MIT"
},
+ "node_modules/base64-arraybuffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+ "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
"node_modules/baseline-browser-mapping": {
- "version": "2.11.12",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.12.tgz",
- "integrity": "sha512-r7WnVImvVCeFpf2DOXfy41aPWzeNg3H/A2X4dKmy1QL0MSyyk/e7z8ihJ3N6Nn2PsdhkVlqnEfnUE4a05P2aTA==",
+ "version": "2.10.32",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.32.tgz",
+ "integrity": "sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==",
"license": "Apache-2.0",
"bin": {
"baseline-browser-mapping": "dist/cli.cjs"
@@ -8127,6 +8562,38 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/binary-search-bounds": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/binary-search-bounds/-/binary-search-bounds-2.0.5.tgz",
+ "integrity": "sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/bit-twiddle": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/bit-twiddle/-/bit-twiddle-1.0.2.tgz",
+ "integrity": "sha512-B9UhK0DKFZhoTFcfvAzhqsjStvGJp9vYWf3+6SNTtdSQnvIgfkHbgHrg/e4+TH71N2GDu8tpmCVoyfrL1d7ntA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/bitmap-sdf": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/bitmap-sdf/-/bitmap-sdf-1.0.4.tgz",
+ "integrity": "sha512-1G3U4n5JE6RAiALMxu0p1XmeZkTeCwGKykzsLTCqVzfSDaN6S7fKnkIkfejogz+iwqBWc0UYAIKnKHNN7pSfDg==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/bl": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz",
+ "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "readable-stream": "^2.3.5",
+ "safe-buffer": "^5.1.1"
+ }
+ },
"node_modules/body-parser": {
"version": "1.20.6",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.6.tgz",
@@ -8176,9 +8643,9 @@
"license": "MIT"
},
"node_modules/bonjour-service": {
- "version": "1.4.4",
- "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.4.4.tgz",
- "integrity": "sha512-jCZcVv7eoc4QesRscwEZtSROBen+6LpKAmBIsQYQrsAeVHLyMXWX/t6eIV5KiRZYNUBl8eVqImEEMQ8L5+c/Kw==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.4.0.tgz",
+ "integrity": "sha512-fGQtj1qdR9vIKjFiWPQd52qIqwjaYqhcI40JEiDuvlZ86E7ZBPBwY9fPgHy9r2rYGIjiRfctNPYz6OQU73ww2w==",
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
@@ -8243,9 +8710,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.28.7",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.7.tgz",
- "integrity": "sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==",
+ "version": "4.28.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz",
+ "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==",
"funding": [
{
"type": "opencollective",
@@ -8262,10 +8729,10 @@
],
"license": "MIT",
"dependencies": {
- "baseline-browser-mapping": "^2.10.44",
- "caniuse-lite": "^1.0.30001806",
- "electron-to-chromium": "^1.5.393",
- "node-releases": "^2.0.51",
+ "baseline-browser-mapping": "^2.10.12",
+ "caniuse-lite": "^1.0.30001782",
+ "electron-to-chromium": "^1.5.328",
+ "node-releases": "^2.0.36",
"update-browserslist-db": "^1.2.3"
},
"bin": {
@@ -8432,9 +8899,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001806",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001806.tgz",
- "integrity": "sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==",
+ "version": "1.0.30001793",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz",
+ "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==",
"funding": [
{
"type": "opencollective",
@@ -8612,6 +9079,13 @@
"node": ">=8"
}
},
+ "node_modules/clamp": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz",
+ "integrity": "sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/clean-css": {
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
@@ -8722,7 +9196,27 @@
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/color-convert": {
+ "node_modules/color-alpha": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-alpha/-/color-alpha-1.1.3.tgz",
+ "integrity": "sha512-krPYBO1RSO5LH4AGb/b6z70O1Ip2o0F0+0cVFN5FN99jfQtZFT08rQyg+9oOBNJYAn3SRwJIFC8jUEOKz7PisA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-parse": "^1.4.1"
+ }
+ },
+ "node_modules/color-alpha/node_modules/color-parse": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.4.3.tgz",
+ "integrity": "sha512-BADfVl/FHkQkyo8sRBwMYBqemqsgnu7JZAwUgvBvuwwuNUZAhSvLTbsEErS5bQXzOjDR0dWzJ4vXN2Q+QoPx0A==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "^1.0.0"
+ }
+ },
+ "node_modules/color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
@@ -8734,12 +9228,93 @@
"node": ">=7.0.0"
}
},
+ "node_modules/color-id": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/color-id/-/color-id-1.1.0.tgz",
+ "integrity": "sha512-2iRtAn6dC/6/G7bBIo0uupVrIne1NsQJvJxZOBCzQOfk7jRq97feaDZ3RdzuHakRXXnHGNwglto3pqtRx1sX0g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "clamp": "^1.0.1"
+ }
+ },
"node_modules/color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"license": "MIT"
},
+ "node_modules/color-normalize": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/color-normalize/-/color-normalize-1.5.0.tgz",
+ "integrity": "sha512-rUT/HDXMr6RFffrR53oX3HGWkDOP9goSAQGBkUaAYKjOE2JxozccdGyufageWDlInRAjm/jYPrf/Y38oa+7obw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "clamp": "^1.0.1",
+ "color-rgba": "^2.1.1",
+ "dtype": "^2.0.0"
+ }
+ },
+ "node_modules/color-normalize/node_modules/color-parse": {
+ "version": "1.4.3",
+ "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.4.3.tgz",
+ "integrity": "sha512-BADfVl/FHkQkyo8sRBwMYBqemqsgnu7JZAwUgvBvuwwuNUZAhSvLTbsEErS5bQXzOjDR0dWzJ4vXN2Q+QoPx0A==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "^1.0.0"
+ }
+ },
+ "node_modules/color-normalize/node_modules/color-rgba": {
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/color-rgba/-/color-rgba-2.4.0.tgz",
+ "integrity": "sha512-Nti4qbzr/z2LbUWySr7H9dk3Rl7gZt7ihHAxlgT4Ho90EXWkjtkL1avTleu9yeGuqrt/chxTB6GKK8nZZ6V0+Q==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-parse": "^1.4.2",
+ "color-space": "^2.0.0"
+ }
+ },
+ "node_modules/color-parse": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-2.1.2.tgz",
+ "integrity": "sha512-z0f1xKxh4za/RSprsmxNkFcyO2o/4VJ2QxiiRRIjfqAsqOXys+BvpOCINNAKOX9AQ/alpS03Wc0WMtEmtLmHzw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-name": "^2.0.0"
+ }
+ },
+ "node_modules/color-parse/node_modules/color-name": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-2.1.1.tgz",
+ "integrity": "sha512-p2FdgwVx1a9yWBHP2wI0VgShkDpgN4kZISkxdNipGBJWpa5G6b04OINlVWCyJj0JmfvcPrgqt95E9k8yvaOJFg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=12.20"
+ }
+ },
+ "node_modules/color-rgba": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/color-rgba/-/color-rgba-3.0.0.tgz",
+ "integrity": "sha512-PPwZYkEY3M2THEHHV6Y95sGUie77S7X8v+h1r6LSAPF3/LL2xJ8duUXSrkic31Nzc4odPwHgUbiX/XuTYzQHQg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "color-parse": "^2.0.0",
+ "color-space": "^2.0.0"
+ }
+ },
+ "node_modules/color-space": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/color-space/-/color-space-2.3.2.tgz",
+ "integrity": "sha512-BcKnbOEsOarCwyoLstcoEztwT0IJxqqQkNwDuA3a65sICvvHL2yoeV13psoDFh5IuiOMnIOKdQDwB4Mk3BypiA==",
+ "license": "Unlicense",
+ "peer": true
+ },
"node_modules/colord": {
"version": "2.9.3",
"resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz",
@@ -8849,12 +9424,48 @@
"integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"license": "MIT"
},
+ "node_modules/compression/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"license": "MIT"
},
+ "node_modules/concat-stream": {
+ "version": "1.6.2",
+ "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+ "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+ "engines": [
+ "node >= 0.8"
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
+ }
+ },
"node_modules/config-chain": {
"version": "1.1.13",
"resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
@@ -9082,6 +9693,13 @@
}
}
},
+ "node_modules/country-regex": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/country-regex/-/country-regex-1.1.0.tgz",
+ "integrity": "sha512-iSPlClZP8vX7MC3/u6s3lrDuoQyhQukh5LyABJ3hvfzbQ3Yyayd4fp04zjLnfi267B/B2FkumcWWgrbban7sSA==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/cross-spawn": {
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
@@ -9149,9 +9767,9 @@
}
},
"node_modules/css-blank-pseudo/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -9173,6 +9791,59 @@
"postcss": "^8.0.9"
}
},
+ "node_modules/css-font": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/css-font/-/css-font-1.2.0.tgz",
+ "integrity": "sha512-V4U4Wps4dPDACJ4WpgofJ2RT5Yqwe1lEH6wlOOaIxMi0gTjdIijsc5FmxQlZ7ZZyKQkkutqqvULOp07l9c7ssA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "css-font-size-keywords": "^1.0.0",
+ "css-font-stretch-keywords": "^1.0.1",
+ "css-font-style-keywords": "^1.0.1",
+ "css-font-weight-keywords": "^1.0.0",
+ "css-global-keywords": "^1.0.1",
+ "css-system-font-keywords": "^1.0.0",
+ "pick-by-alias": "^1.2.0",
+ "string-split-by": "^1.0.0",
+ "unquote": "^1.1.0"
+ }
+ },
+ "node_modules/css-font-size-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz",
+ "integrity": "sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/css-font-stretch-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz",
+ "integrity": "sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/css-font-style-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz",
+ "integrity": "sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/css-font-weight-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz",
+ "integrity": "sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/css-global-keywords": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/css-global-keywords/-/css-global-keywords-1.0.1.tgz",
+ "integrity": "sha512-X1xgQhkZ9n94WDwntqst5D/FKkmiU0GlJSFZSV3kLvyJ1WC5VeyoXDOuleUD+SIuH9C7W05is++0Woh0CGfKjQ==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/css-has-pseudo": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-7.0.3.tgz",
@@ -9223,9 +9894,9 @@
}
},
"node_modules/css-has-pseudo/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -9352,6 +10023,13 @@
"url": "https://github.com/sponsors/fb55"
}
},
+ "node_modules/css-system-font-keywords": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz",
+ "integrity": "sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/css-tree": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz",
@@ -9377,6 +10055,13 @@
"url": "https://github.com/sponsors/fb55"
}
},
+ "node_modules/csscolorparser": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz",
+ "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/cssdb": {
"version": "8.9.0",
"resolved": "https://registry.npmjs.org/cssdb/-/cssdb-8.9.0.tgz",
@@ -9541,6 +10226,176 @@
"integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==",
"license": "MIT"
},
+ "node_modules/d": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz",
+ "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "es5-ext": "^0.10.64",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/d3-array": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz",
+ "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==",
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/d3-collection": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz",
+ "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==",
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/d3-color": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz",
+ "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==",
+ "license": "ISC",
+ "peer": true,
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-dispatch": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz",
+ "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==",
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/d3-force": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz",
+ "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "d3-collection": "1",
+ "d3-dispatch": "1",
+ "d3-quadtree": "1",
+ "d3-timer": "1"
+ }
+ },
+ "node_modules/d3-format": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz",
+ "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==",
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/d3-geo": {
+ "version": "1.12.1",
+ "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz",
+ "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "d3-array": "1"
+ }
+ },
+ "node_modules/d3-geo-projection": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-2.9.0.tgz",
+ "integrity": "sha512-ZULvK/zBn87of5rWAfFMc9mJOipeSo57O+BBitsKIXmU4rTVAnX1kSsJkE0R+TxY8pGNoM1nbyRRE7GYHhdOEQ==",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "commander": "2",
+ "d3-array": "1",
+ "d3-geo": "^1.12.0",
+ "resolve": "^1.1.10"
+ },
+ "bin": {
+ "geo2svg": "bin/geo2svg",
+ "geograticule": "bin/geograticule",
+ "geoproject": "bin/geoproject",
+ "geoquantize": "bin/geoquantize",
+ "geostitch": "bin/geostitch"
+ }
+ },
+ "node_modules/d3-geo-projection/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/d3-hierarchy": {
+ "version": "1.1.9",
+ "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz",
+ "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==",
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/d3-interpolate": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz",
+ "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "d3-color": "1 - 3"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/d3-path": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
+ "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==",
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/d3-quadtree": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz",
+ "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==",
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/d3-shape": {
+ "version": "1.3.7",
+ "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz",
+ "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "d3-path": "1"
+ }
+ },
+ "node_modules/d3-time": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz",
+ "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==",
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
+ "node_modules/d3-time-format": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz",
+ "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "d3-time": "1"
+ }
+ },
+ "node_modules/d3-timer": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz",
+ "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==",
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
"node_modules/debounce": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz",
@@ -9702,6 +10557,16 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/defined": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz",
+ "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==",
+ "license": "MIT",
+ "peer": true,
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/depd": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
@@ -9730,6 +10595,13 @@
"npm": "1.2.8000 || >= 1.4.16"
}
},
+ "node_modules/detect-kerning": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-kerning/-/detect-kerning-2.1.2.tgz",
+ "integrity": "sha512-I3JIbrnKPAntNLl1I6TpSQQdQ4AutYzv/sKMFKbepawV/hlH0GmYKhUoOEMd4xqaUHT+Bm0f4127lh5qs1m1tw==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/detect-libc": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
@@ -9897,6 +10769,27 @@
"node": ">=8"
}
},
+ "node_modules/draw-svg-path": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/draw-svg-path/-/draw-svg-path-1.0.0.tgz",
+ "integrity": "sha512-P8j3IHxcgRMcY6sDzr0QvJDLzBnJJqpTG33UZ2Pvp8rw0apCHhJCWqYprqrXjrgHnJ6tuhP1iTJSAodPDHxwkg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "abs-svg-path": "~0.1.1",
+ "normalize-svg-path": "~0.1.0"
+ }
+ },
+ "node_modules/dtype": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz",
+ "integrity": "sha512-s2YVcLKdFGS0hpFqJaTwscsyt0E8nNFdmo73Ocd81xNPj4URI4rj6D60A+vFMIw7BXWlb4yRkEwfBqcZzPGiZg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
@@ -9911,12 +10804,39 @@
"node": ">= 0.4"
}
},
+ "node_modules/dup": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/dup/-/dup-1.0.0.tgz",
+ "integrity": "sha512-Bz5jxMMC0wgp23Zm15ip1x8IhYRqJvF3nFC0UInJUDkN1z4uNPk9jTnfCUJXbOGiQ1JbXLQsiV41Fb+HXcj5BA==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/duplexer": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
"integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
"license": "MIT"
},
+ "node_modules/duplexify": {
+ "version": "3.7.1",
+ "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+ "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "end-of-stream": "^1.0.0",
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0",
+ "stream-shift": "^1.0.0"
+ }
+ },
+ "node_modules/earcut": {
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz",
+ "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==",
+ "license": "ISC",
+ "peer": true
+ },
"node_modules/eastasianwidth": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
@@ -9930,11 +10850,21 @@
"license": "MIT"
},
"node_modules/electron-to-chromium": {
- "version": "1.5.401",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.401.tgz",
- "integrity": "sha512-H6ViHN68nGYlChEvlIU67fn8O2/tpbWQPwck98yaJmh+08LSvHiydzDQ6oXNccLU3kNRVIRS9A4mA7CG+i6fLQ==",
+ "version": "1.5.364",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.364.tgz",
+ "integrity": "sha512-G/dYE3+AYhyHwzTwg8UbnXf7zqMERYh7l2jJ3QujhFsH8agSYwtnGAR2aZ7f0AakIKJXd5En/Hre4igIUrdlYw==",
"license": "ISC"
},
+ "node_modules/elementary-circuits-directed-graph": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/elementary-circuits-directed-graph/-/elementary-circuits-directed-graph-1.3.1.tgz",
+ "integrity": "sha512-ZEiB5qkn2adYmpXGnJKkxT8uJHlW/mxmBpmeqawEHzPxh9HkLD4/1mFYX5l0On+f6rcPIt8/EWlRU2Vo3fX6dQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "strongly-connected-components": "^1.0.1"
+ }
+ },
"node_modules/emoji-regex": {
"version": "9.2.2",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
@@ -9975,10 +10905,20 @@
"node": ">= 0.8"
}
},
+ "node_modules/end-of-stream": {
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
+ "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "once": "^1.4.0"
+ }
+ },
"node_modules/enhanced-resolve": {
- "version": "5.24.5",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.24.5.tgz",
- "integrity": "sha512-L1l8TNvomm6UVW5B253AGxQagSQr+vGwhMlrrfRS2qmhx46AMpMVJKQYLvWYbysTMY8VoicOvzHzoHMbyzB+4A==",
+ "version": "5.22.1",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.1.tgz",
+ "integrity": "sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww==",
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.4",
@@ -10028,9 +10968,9 @@
}
},
"node_modules/es-module-lexer": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.3.1.tgz",
- "integrity": "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz",
+ "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==",
"license": "MIT"
},
"node_modules/es-object-atoms": {
@@ -10045,19 +10985,75 @@
"node": ">= 0.4"
}
},
+ "node_modules/es5-ext": {
+ "version": "0.10.64",
+ "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz",
+ "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==",
+ "hasInstallScript": true,
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.3",
+ "esniff": "^2.0.1",
+ "next-tick": "^1.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/es6-error": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
"integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
"license": "MIT"
},
- "node_modules/esast-util-from-estree": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz",
- "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==",
+ "node_modules/es6-iterator": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz",
+ "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==",
"license": "MIT",
+ "peer": true,
"dependencies": {
- "@types/estree-jsx": "^1.0.0",
+ "d": "1",
+ "es5-ext": "^0.10.35",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/es6-symbol": {
+ "version": "3.1.4",
+ "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz",
+ "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "d": "^1.0.2",
+ "ext": "^1.7.0"
+ },
+ "engines": {
+ "node": ">=0.12"
+ }
+ },
+ "node_modules/es6-weak-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz",
+ "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "^0.10.46",
+ "es6-iterator": "^2.0.3",
+ "es6-symbol": "^3.1.1"
+ }
+ },
+ "node_modules/esast-util-from-estree": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz",
+ "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree-jsx": "^1.0.0",
"devlop": "^1.0.0",
"estree-util-visit": "^2.0.0",
"unist-util-position-from-estree": "^2.0.0"
@@ -10084,9 +11080,9 @@
}
},
"node_modules/esbuild": {
- "version": "0.28.1",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz",
- "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==",
+ "version": "0.28.2",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz",
+ "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
@@ -10097,32 +11093,32 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.28.1",
- "@esbuild/android-arm": "0.28.1",
- "@esbuild/android-arm64": "0.28.1",
- "@esbuild/android-x64": "0.28.1",
- "@esbuild/darwin-arm64": "0.28.1",
- "@esbuild/darwin-x64": "0.28.1",
- "@esbuild/freebsd-arm64": "0.28.1",
- "@esbuild/freebsd-x64": "0.28.1",
- "@esbuild/linux-arm": "0.28.1",
- "@esbuild/linux-arm64": "0.28.1",
- "@esbuild/linux-ia32": "0.28.1",
- "@esbuild/linux-loong64": "0.28.1",
- "@esbuild/linux-mips64el": "0.28.1",
- "@esbuild/linux-ppc64": "0.28.1",
- "@esbuild/linux-riscv64": "0.28.1",
- "@esbuild/linux-s390x": "0.28.1",
- "@esbuild/linux-x64": "0.28.1",
- "@esbuild/netbsd-arm64": "0.28.1",
- "@esbuild/netbsd-x64": "0.28.1",
- "@esbuild/openbsd-arm64": "0.28.1",
- "@esbuild/openbsd-x64": "0.28.1",
- "@esbuild/openharmony-arm64": "0.28.1",
- "@esbuild/sunos-x64": "0.28.1",
- "@esbuild/win32-arm64": "0.28.1",
- "@esbuild/win32-ia32": "0.28.1",
- "@esbuild/win32-x64": "0.28.1"
+ "@esbuild/aix-ppc64": "0.28.2",
+ "@esbuild/android-arm": "0.28.2",
+ "@esbuild/android-arm64": "0.28.2",
+ "@esbuild/android-x64": "0.28.2",
+ "@esbuild/darwin-arm64": "0.28.2",
+ "@esbuild/darwin-x64": "0.28.2",
+ "@esbuild/freebsd-arm64": "0.28.2",
+ "@esbuild/freebsd-x64": "0.28.2",
+ "@esbuild/linux-arm": "0.28.2",
+ "@esbuild/linux-arm64": "0.28.2",
+ "@esbuild/linux-ia32": "0.28.2",
+ "@esbuild/linux-loong64": "0.28.2",
+ "@esbuild/linux-mips64el": "0.28.2",
+ "@esbuild/linux-ppc64": "0.28.2",
+ "@esbuild/linux-riscv64": "0.28.2",
+ "@esbuild/linux-s390x": "0.28.2",
+ "@esbuild/linux-x64": "0.28.2",
+ "@esbuild/netbsd-arm64": "0.28.2",
+ "@esbuild/netbsd-x64": "0.28.2",
+ "@esbuild/openbsd-arm64": "0.28.2",
+ "@esbuild/openbsd-x64": "0.28.2",
+ "@esbuild/openharmony-arm64": "0.28.2",
+ "@esbuild/sunos-x64": "0.28.2",
+ "@esbuild/win32-arm64": "0.28.2",
+ "@esbuild/win32-ia32": "0.28.2",
+ "@esbuild/win32-x64": "0.28.2"
}
},
"node_modules/escalade": {
@@ -10164,6 +11160,39 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/escodegen": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz",
+ "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==",
+ "license": "BSD-2-Clause",
+ "peer": true,
+ "dependencies": {
+ "esprima": "^4.0.1",
+ "estraverse": "^5.2.0",
+ "esutils": "^2.0.2"
+ },
+ "bin": {
+ "escodegen": "bin/escodegen.js",
+ "esgenerate": "bin/esgenerate.js"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "optionalDependencies": {
+ "source-map": "~0.6.1"
+ }
+ },
+ "node_modules/escodegen/node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "license": "BSD-3-Clause",
+ "optional": true,
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/eslint-scope": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
@@ -10177,6 +11206,31 @@
"node": ">=8.0.0"
}
},
+ "node_modules/eslint-scope/node_modules/estraverse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+ "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esniff": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz",
+ "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "d": "^1.0.1",
+ "es5-ext": "^0.10.62",
+ "event-emitter": "^0.3.5",
+ "type": "^2.7.2"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
@@ -10202,7 +11256,7 @@
"node": ">=4.0"
}
},
- "node_modules/esrecurse/node_modules/estraverse": {
+ "node_modules/estraverse": {
"version": "5.3.0",
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
@@ -10211,15 +11265,6 @@
"node": ">=4.0"
}
},
- "node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "license": "BSD-2-Clause",
- "engines": {
- "node": ">=4.0"
- }
- },
"node_modules/estree-util-attach-comments": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz",
@@ -10365,6 +11410,17 @@
"node": ">= 0.8"
}
},
+ "node_modules/event-emitter": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+ "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "d": "1",
+ "es5-ext": "~0.10.14"
+ }
+ },
"node_modules/eventemitter3": {
"version": "4.0.7",
"resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
@@ -10491,6 +11547,36 @@
"node": ">= 0.6"
}
},
+ "node_modules/express/node_modules/safe-buffer": {
+ "version": "5.2.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+ "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/ext": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz",
+ "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "type": "^2.7.2"
+ }
+ },
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -10509,6 +11595,40 @@
"node": ">=0.10.0"
}
},
+ "node_modules/falafel": {
+ "version": "2.2.5",
+ "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.5.tgz",
+ "integrity": "sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "acorn": "^7.1.1",
+ "isarray": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/falafel/node_modules/acorn": {
+ "version": "7.4.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
+ "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
+ "license": "MIT",
+ "peer": true,
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/falafel/node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -10531,6 +11651,16 @@
"node": ">=8.6.0"
}
},
+ "node_modules/fast-isnumeric": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/fast-isnumeric/-/fast-isnumeric-1.1.4.tgz",
+ "integrity": "sha512-1mM8qOr2LYz8zGaUdmiqRDiuue00Dxjgcb1NQR7TnhLVh6sQyngP9xvLo7Sl7LZpP/sk5eb+bcyWXw530NTBZw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "is-string-blank": "^1.0.1"
+ }
+ },
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -10760,6 +11890,16 @@
"integrity": "sha512-MI1qs7Lo4Syw0EOzUl0xjs2lsoeqFku44KpngfIduHBYvzm8h2+7K8YMQh1JtVVVrUvhLpNwqVi4DERegUJhPQ==",
"license": "Apache-2.0"
},
+ "node_modules/flatten-vertex-data": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/flatten-vertex-data/-/flatten-vertex-data-1.0.2.tgz",
+ "integrity": "sha512-BvCBFK2NZqerFTdMDgqfHBwxYWnxeCkwONsw6PvBMcUXqo8U/KDWwmXhqx1x2kLIg7DqIsJfOaJFOmlua3Lxuw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "dtype": "^2.0.0"
+ }
+ },
"node_modules/follow-redirects": {
"version": "1.16.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz",
@@ -10780,6 +11920,26 @@
}
}
},
+ "node_modules/font-atlas": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/font-atlas/-/font-atlas-2.1.0.tgz",
+ "integrity": "sha512-kP3AmvX+HJpW4w3d+PiPR2X6E1yvsBXt2yhuCw+yReO9F1WYhvZwx3c95DGZGwg9xYzDGrgJYa885xmVA+28Cg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "css-font": "^1.0.0"
+ }
+ },
+ "node_modules/font-measure": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/font-measure/-/font-measure-1.2.2.tgz",
+ "integrity": "sha512-mRLEpdrWzKe9hbfaF3Qpr06TAjquuBVP5cHy4b3hyeNdjc9i0PO6HniGsX5vjL5OWv7+Bd++NiooNpT/s8BvIA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "css-font": "^1.2.0"
+ }
+ },
"node_modules/form-data-encoder": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
@@ -10828,10 +11988,21 @@
"node": ">= 0.6"
}
},
+ "node_modules/from2": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+ "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "readable-stream": "^2.0.0"
+ }
+ },
"node_modules/fs-extra": {
- "version": "11.4.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.4.0.tgz",
- "integrity": "sha512-EQsFzMUJkCKGr1ePqlYADkIUmHW1s3ZXr5Yqy6wbGrfUCphpl2maM/kyOIRA2HpP3AaFQTZXD4ldjek+nccddA==",
+ "version": "11.3.5",
+ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.5.tgz",
+ "integrity": "sha512-eKpRKAovdpZtR1WopLHxlBWvAgPny3c4gX1G5Jhwmmw4XJj0ifSD5qB5TOo8hmA0wlRKDAOAhEE1yVPgs6Fgcg==",
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.0",
@@ -10874,6 +12045,20 @@
"node": ">=6.9.0"
}
},
+ "node_modules/geojson-vt": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz",
+ "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/get-canvas-context": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/get-canvas-context/-/get-canvas-context-1.0.2.tgz",
+ "integrity": "sha512-LnpfLf/TNzr9zVOGiIY6aKCz8EKuXmlYNV7CM2pUjBa/B+c2I15tS7KLySep75+FuerJdmArvJLcsAXWEy2H0A==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/get-intrinsic": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
@@ -10935,6 +12120,62 @@
"integrity": "sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==",
"license": "ISC"
},
+ "node_modules/gl-mat4": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gl-mat4/-/gl-mat4-1.2.0.tgz",
+ "integrity": "sha512-sT5C0pwB1/e9G9AvAoLsoaJtbMGjfd/jfxo8jMCKqYYEnjZuFvqV5rehqar0538EmssjdDeiEWnKyBSTw7quoA==",
+ "license": "Zlib",
+ "peer": true
+ },
+ "node_modules/gl-matrix": {
+ "version": "3.4.4",
+ "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.4.tgz",
+ "integrity": "sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/gl-text": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/gl-text/-/gl-text-1.4.0.tgz",
+ "integrity": "sha512-o47+XBqLCj1efmuNyCHt7/UEJmB9l66ql7pnobD6p+sgmBUdzfMZXIF0zD2+KRfpd99DJN+QXdvTFAGCKCVSmQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "bit-twiddle": "^1.0.2",
+ "color-normalize": "^1.5.0",
+ "css-font": "^1.2.0",
+ "detect-kerning": "^2.1.2",
+ "es6-weak-map": "^2.0.3",
+ "flatten-vertex-data": "^1.0.2",
+ "font-atlas": "^2.1.0",
+ "font-measure": "^1.2.2",
+ "gl-util": "^3.1.2",
+ "is-plain-obj": "^1.1.0",
+ "object-assign": "^4.1.1",
+ "parse-rect": "^1.2.0",
+ "parse-unit": "^1.0.1",
+ "pick-by-alias": "^1.2.0",
+ "regl": "^2.0.0",
+ "to-px": "^1.0.1",
+ "typedarray-pool": "^1.1.0"
+ }
+ },
+ "node_modules/gl-util": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/gl-util/-/gl-util-3.1.3.tgz",
+ "integrity": "sha512-dvRTggw5MSkJnCbh74jZzSoTOGnVYK+Bt+Ckqm39CVcl6+zSsxqWk4lr5NKhkqXHL6qvZAU9h17ZF8mIskY9mA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "is-browser": "^2.0.1",
+ "is-firefox": "^1.0.3",
+ "is-plain-obj": "^1.1.0",
+ "number-is-integer": "^1.0.1",
+ "object-assign": "^4.1.0",
+ "pick-by-alias": "^1.2.0",
+ "weak-map": "^1.0.5"
+ }
+ },
"node_modules/glob-parent": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
@@ -10963,72 +12204,343 @@
"tslib": "2"
}
},
- "node_modules/global-agent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
- "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==",
- "license": "BSD-3-Clause",
+ "node_modules/glob-to-regexp": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==",
+ "license": "BSD-2-Clause"
+ },
+ "node_modules/global-agent": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz",
+ "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "boolean": "^3.0.1",
+ "es6-error": "^4.1.1",
+ "matcher": "^3.0.0",
+ "roarr": "^2.15.3",
+ "semver": "^7.3.2",
+ "serialize-error": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=10.0"
+ }
+ },
+ "node_modules/global-dirs": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
+ "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
+ "license": "MIT",
+ "dependencies": {
+ "ini": "2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/global-dirs/node_modules/ini": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
+ "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/global-prefix": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-4.0.0.tgz",
+ "integrity": "sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ini": "^4.1.3",
+ "kind-of": "^6.0.3",
+ "which": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/global-prefix/node_modules/isexe": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz",
+ "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==",
+ "license": "BlueOak-1.0.0",
+ "peer": true,
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/global-prefix/node_modules/which": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz",
+ "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "isexe": "^3.1.1"
+ },
+ "bin": {
+ "node-which": "bin/which.js"
+ },
+ "engines": {
+ "node": "^16.13.0 || >=18.0.0"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/globby": {
+ "version": "11.1.0",
+ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
+ "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "license": "MIT",
+ "dependencies": {
+ "array-union": "^2.1.0",
+ "dir-glob": "^3.0.1",
+ "fast-glob": "^3.2.9",
+ "ignore": "^5.2.0",
+ "merge2": "^1.4.1",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/glsl-inject-defines": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz",
+ "integrity": "sha512-W49jIhuDtF6w+7wCMcClk27a2hq8znvHtlGnrYkSWEr8tHe9eA2dcnohlcAmxLYBSpSSdzOkRdyPTrx9fw49+A==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "glsl-token-inject-block": "^1.0.0",
+ "glsl-token-string": "^1.0.1",
+ "glsl-tokenizer": "^2.0.2"
+ }
+ },
+ "node_modules/glsl-resolve": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/glsl-resolve/-/glsl-resolve-0.0.1.tgz",
+ "integrity": "sha512-xxFNsfnhZTK9NBhzJjSBGX6IOqYpvBHxxmo+4vapiljyGNCY0Bekzn0firQkQrazK59c1hYxMDxYS8MDlhw4gA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "resolve": "^0.6.1",
+ "xtend": "^2.1.2"
+ }
+ },
+ "node_modules/glsl-resolve/node_modules/resolve": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz",
+ "integrity": "sha512-UHBY3viPlJKf85YijDUcikKX6tmF4SokIDp518ZDVT92JNDcG5uKIthaT/owt3Sar0lwtOafsQuwrg22/v2Dwg==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/glsl-resolve/node_modules/xtend": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.2.0.tgz",
+ "integrity": "sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw==",
+ "peer": true,
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
+ "node_modules/glsl-token-assignments": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/glsl-token-assignments/-/glsl-token-assignments-2.0.2.tgz",
+ "integrity": "sha512-OwXrxixCyHzzA0U2g4btSNAyB2Dx8XrztY5aVUCjRSh4/D0WoJn8Qdps7Xub3sz6zE73W3szLrmWtQ7QMpeHEQ==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/glsl-token-defines": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/glsl-token-defines/-/glsl-token-defines-1.0.0.tgz",
+ "integrity": "sha512-Vb5QMVeLjmOwvvOJuPNg3vnRlffscq2/qvIuTpMzuO/7s5kT+63iL6Dfo2FYLWbzuiycWpbC0/KV0biqFwHxaQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "glsl-tokenizer": "^2.0.0"
+ }
+ },
+ "node_modules/glsl-token-depth": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz",
+ "integrity": "sha512-eQnIBLc7vFf8axF9aoi/xW37LSWd2hCQr/3sZui8aBJnksq9C7zMeUYHVJWMhFzXrBU7fgIqni4EhXVW4/krpg==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/glsl-token-descope": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz",
+ "integrity": "sha512-kS2PTWkvi/YOeicVjXGgX5j7+8N7e56srNDEHDTVZ1dcESmbmpmgrnpjPcjxJjMxh56mSXYoFdZqb90gXkGjQw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "glsl-token-assignments": "^2.0.0",
+ "glsl-token-depth": "^1.1.0",
+ "glsl-token-properties": "^1.0.0",
+ "glsl-token-scope": "^1.1.0"
+ }
+ },
+ "node_modules/glsl-token-inject-block": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/glsl-token-inject-block/-/glsl-token-inject-block-1.1.0.tgz",
+ "integrity": "sha512-q/m+ukdUBuHCOtLhSr0uFb/qYQr4/oKrPSdIK2C4TD+qLaJvqM9wfXIF/OOBjuSA3pUoYHurVRNao6LTVVUPWA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/glsl-token-properties": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz",
+ "integrity": "sha512-dSeW1cOIzbuUoYH0y+nxzwK9S9O3wsjttkq5ij9ZGw0OS41BirKJzzH48VLm8qLg+au6b0sINxGC0IrGwtQUcA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/glsl-token-scope": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz",
+ "integrity": "sha512-YKyOMk1B/tz9BwYUdfDoHvMIYTGtVv2vbDSLh94PT4+f87z21FVdou1KNKgF+nECBTo0fJ20dpm0B1vZB1Q03A==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/glsl-token-string": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/glsl-token-string/-/glsl-token-string-1.0.1.tgz",
+ "integrity": "sha512-1mtQ47Uxd47wrovl+T6RshKGkRRCYWhnELmkEcUAPALWGTFe2XZpH3r45XAwL2B6v+l0KNsCnoaZCSnhzKEksg==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/glsl-token-whitespace-trim": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/glsl-token-whitespace-trim/-/glsl-token-whitespace-trim-1.0.0.tgz",
+ "integrity": "sha512-ZJtsPut/aDaUdLUNtmBYhaCmhIjpKNg7IgZSfX5wFReMc2vnj8zok+gB/3Quqs0TsBSX/fGnqUUYZDqyuc2xLQ==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/glsl-tokenizer": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz",
+ "integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==",
+ "license": "MIT",
+ "peer": true,
"dependencies": {
- "boolean": "^3.0.1",
- "es6-error": "^4.1.1",
- "matcher": "^3.0.0",
- "roarr": "^2.15.3",
- "semver": "^7.3.2",
- "serialize-error": "^7.0.1"
- },
- "engines": {
- "node": ">=10.0"
+ "through2": "^0.6.3"
}
},
- "node_modules/global-dirs": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz",
- "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==",
+ "node_modules/glsl-tokenizer/node_modules/readable-stream": {
+ "version": "1.0.34",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+ "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
- "ini": "2.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.1",
+ "isarray": "0.0.1",
+ "string_decoder": "~0.10.x"
}
},
- "node_modules/globalthis": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
- "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "node_modules/glsl-tokenizer/node_modules/string_decoder": {
+ "version": "0.10.31",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+ "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/glsl-tokenizer/node_modules/through2": {
+ "version": "0.6.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
+ "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==",
"license": "MIT",
+ "peer": true,
"dependencies": {
- "define-properties": "^1.2.1",
- "gopd": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
+ "readable-stream": ">=1.0.33-1 <1.1.0-0",
+ "xtend": ">=4.0.0 <4.1.0-0"
+ }
+ },
+ "node_modules/glslify": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/glslify/-/glslify-7.1.1.tgz",
+ "integrity": "sha512-bud98CJ6kGZcP9Yxcsi7Iz647wuDz3oN+IZsjCRi5X1PI7t/xPKeL0mOwXJjo+CRZMqvq0CkSJiywCcY7kVYog==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "bl": "^2.2.1",
+ "concat-stream": "^1.5.2",
+ "duplexify": "^3.4.5",
+ "falafel": "^2.1.0",
+ "from2": "^2.3.0",
+ "glsl-resolve": "0.0.1",
+ "glsl-token-whitespace-trim": "^1.0.0",
+ "glslify-bundle": "^5.0.0",
+ "glslify-deps": "^1.2.5",
+ "minimist": "^1.2.5",
+ "resolve": "^1.1.5",
+ "stack-trace": "0.0.9",
+ "static-eval": "^2.0.5",
+ "through2": "^2.0.1",
+ "xtend": "^4.0.0"
},
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
+ "bin": {
+ "glslify": "bin.js"
}
},
- "node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
+ "node_modules/glslify-bundle": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/glslify-bundle/-/glslify-bundle-5.1.1.tgz",
+ "integrity": "sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A==",
"license": "MIT",
+ "peer": true,
"dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "glsl-inject-defines": "^1.0.1",
+ "glsl-token-defines": "^1.0.0",
+ "glsl-token-depth": "^1.1.1",
+ "glsl-token-descope": "^1.0.2",
+ "glsl-token-scope": "^1.1.1",
+ "glsl-token-string": "^1.0.1",
+ "glsl-token-whitespace-trim": "^1.0.0",
+ "glsl-tokenizer": "^2.0.2",
+ "murmurhash-js": "^1.0.0",
+ "shallow-copy": "0.0.1"
+ }
+ },
+ "node_modules/glslify-deps": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/glslify-deps/-/glslify-deps-1.3.2.tgz",
+ "integrity": "sha512-7S7IkHWygJRjcawveXQjRXLO2FTjijPDYC7QfZyAQanY+yGLCFHYnPtsGT9bdyHiwPTw/5a1m1M9hamT2aBpag==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "@choojs/findup": "^0.2.0",
+ "events": "^3.2.0",
+ "glsl-resolve": "0.0.1",
+ "glsl-tokenizer": "^2.0.0",
+ "graceful-fs": "^4.1.2",
+ "inherits": "^2.0.1",
+ "map-limit": "0.0.1",
+ "resolve": "^1.0.0"
}
},
"node_modules/gopd": {
@@ -11129,6 +12641,13 @@
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"license": "BSD-3-Clause"
},
+ "node_modules/grid-index": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz",
+ "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==",
+ "license": "ISC",
+ "peer": true
+ },
"node_modules/guid-typescript": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/guid-typescript/-/guid-typescript-1.0.9.tgz",
@@ -11165,6 +12684,26 @@
"node": ">=8"
}
},
+ "node_modules/has-hover": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/has-hover/-/has-hover-1.0.1.tgz",
+ "integrity": "sha512-0G6w7LnlcpyDzpeGUTuT0CEw05+QlMuGVk1IHNAlHrGJITGodjZu3x8BNDUMfKJSZXNB2ZAclqc1bvrd+uUpfg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "is-browser": "^2.0.1"
+ }
+ },
+ "node_modules/has-passive-events": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-passive-events/-/has-passive-events-1.0.0.tgz",
+ "integrity": "sha512-2vSj6IeIsgvsRMyeQ0JaCX5Q3lX4zMn5HpoVc7MEhQ6pv8Iq9rsXjsp+E5ZwaT7T0xhMT0KmU8gtt1EFVdbJiw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "is-browser": "^2.0.1"
+ }
+ },
"node_modules/has-property-descriptors": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
@@ -11419,42 +12958,6 @@
"wbuf": "^1.1.0"
}
},
- "node_modules/hpack.js/node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "license": "MIT"
- },
- "node_modules/hpack.js/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "license": "MIT",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/hpack.js/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "license": "MIT"
- },
- "node_modules/hpack.js/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
"node_modules/html-escaper": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
@@ -11514,9 +13017,9 @@
}
},
"node_modules/html-webpack-plugin": {
- "version": "5.6.8",
- "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.8.tgz",
- "integrity": "sha512-MZmKQcTnhEh1SPSyMiEytIeDZDUoBZVorNHivQGXMASHf/BSGGOrKa2xQ5bGx3TCe1n109ecCt+cpww7wwWhKA==",
+ "version": "5.6.7",
+ "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.7.tgz",
+ "integrity": "sha512-md+vXtdCAe60s1k6AU3dUyMJnDxUyQAwfwPKoLisvgUF1IXjtlLsk2se54+qfL9Mdm26bbwvjJybpNx48NKRLw==",
"license": "MIT",
"dependencies": {
"@types/html-minifier-terser": "^6.0.0",
@@ -11533,7 +13036,7 @@
"url": "https://opencollective.com/html-webpack-plugin"
},
"peerDependencies": {
- "@rspack/core": "0.x || 1.x || 2.x",
+ "@rspack/core": "0.x || 1.x",
"webpack": "^5.20.0"
},
"peerDependenciesMeta": {
@@ -11737,6 +13240,27 @@
"postcss": "^8.1.0"
}
},
+ "node_modules/ieee754": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
"node_modules/ignore": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
@@ -11817,12 +13341,13 @@
"license": "ISC"
},
"node_modules/ini": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz",
- "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==",
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz",
+ "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==",
"license": "ISC",
+ "peer": true,
"engines": {
- "node": ">=10"
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
"node_modules/inline-style-parser": {
@@ -11841,9 +13366,9 @@
}
},
"node_modules/ipaddr.js": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.5.0.tgz",
- "integrity": "sha512-aq+t5NAc+cS6rZQQVWC2x98CPqGtKKTMDd4Gaodv0wShnItdKg/51djkGJ1hqH+Oy0ivDftCbSLCQob8zso01w==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.4.0.tgz",
+ "integrity": "sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==",
"license": "MIT",
"engines": {
"node": ">= 10"
@@ -11891,6 +13416,13 @@
"node": ">=8"
}
},
+ "node_modules/is-browser": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-browser/-/is-browser-2.1.0.tgz",
+ "integrity": "sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/is-ci": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz",
@@ -11961,6 +13493,29 @@
"node": ">=0.10.0"
}
},
+ "node_modules/is-finite": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
+ "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-firefox": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/is-firefox/-/is-firefox-1.0.3.tgz",
+ "integrity": "sha512-6Q9ITjvWIm0Xdqv+5U12wgOKEM2KoBw4Y926m0OFkvlCxnbG94HKAsVz8w3fWcfAS5YA2fJORXX1dLrkprCCxA==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/is-fullwidth-code-point": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
@@ -12041,6 +13596,13 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-mobile": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-4.0.0.tgz",
+ "integrity": "sha512-mlcHZA84t1qLSuWkt2v0I2l61PYdyQDt4aG1mLIXF5FDMm4+haBCxCPYSr/uwqQNRk1MiTizn0ypEuRAOLRAew==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/is-network-error": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.2.tgz",
@@ -12093,15 +13655,13 @@
}
},
"node_modules/is-plain-obj": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+ "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
"license": "MIT",
+ "peer": true,
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": ">=0.10.0"
}
},
"node_modules/is-plain-object": {
@@ -12137,6 +13697,20 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/is-string-blank": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-string-blank/-/is-string-blank-1.0.1.tgz",
+ "integrity": "sha512-9H+ZBCVs3L9OYqv8nuUAzpcT9OTgMD1yAWrG7ihlnibdkbtB850heAmYWxHuXc4CHy4lKeK69tN+ny1K7gBIrw==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/is-svg-path": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-svg-path/-/is-svg-path-1.0.2.tgz",
+ "integrity": "sha512-Lj4vePmqpPR1ZnRctHv8ltSh1OrSxHkhUkd7wi+VQdcdP15/KvQFyk7LhNuM7ZW0EVbJz8kZLVmL9quLrfq4Kg==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/is-typedarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
@@ -12312,6 +13886,13 @@
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
"license": "MIT"
},
+ "node_modules/json-stringify-pretty-compact": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-4.0.0.tgz",
+ "integrity": "sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/json-stringify-safe": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
@@ -12342,6 +13923,13 @@
"graceful-fs": "^4.1.6"
}
},
+ "node_modules/kdbush": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.1.0.tgz",
+ "integrity": "sha512-e9vurzrXJQrFX6ckpHP3bvj5l+9CnYzkxDNnNQ1h2QTqdWsUAJgXiKdGNcOa1EY85dU8KbQ+z/FdQdB7P+9yfQ==",
+ "license": "ISC",
+ "peer": true
+ },
"node_modules/keyv": {
"version": "4.5.4",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
@@ -12404,9 +13992,9 @@
}
},
"node_modules/lightningcss": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz",
- "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==",
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz",
+ "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==",
"license": "MPL-2.0",
"dependencies": {
"detect-libc": "^2.0.3"
@@ -12419,23 +14007,23 @@
"url": "https://opencollective.com/parcel"
},
"optionalDependencies": {
- "lightningcss-android-arm64": "1.33.0",
- "lightningcss-darwin-arm64": "1.33.0",
- "lightningcss-darwin-x64": "1.33.0",
- "lightningcss-freebsd-x64": "1.33.0",
- "lightningcss-linux-arm-gnueabihf": "1.33.0",
- "lightningcss-linux-arm64-gnu": "1.33.0",
- "lightningcss-linux-arm64-musl": "1.33.0",
- "lightningcss-linux-x64-gnu": "1.33.0",
- "lightningcss-linux-x64-musl": "1.33.0",
- "lightningcss-win32-arm64-msvc": "1.33.0",
- "lightningcss-win32-x64-msvc": "1.33.0"
+ "lightningcss-android-arm64": "1.32.0",
+ "lightningcss-darwin-arm64": "1.32.0",
+ "lightningcss-darwin-x64": "1.32.0",
+ "lightningcss-freebsd-x64": "1.32.0",
+ "lightningcss-linux-arm-gnueabihf": "1.32.0",
+ "lightningcss-linux-arm64-gnu": "1.32.0",
+ "lightningcss-linux-arm64-musl": "1.32.0",
+ "lightningcss-linux-x64-gnu": "1.32.0",
+ "lightningcss-linux-x64-musl": "1.32.0",
+ "lightningcss-win32-arm64-msvc": "1.32.0",
+ "lightningcss-win32-x64-msvc": "1.32.0"
}
},
"node_modules/lightningcss-android-arm64": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz",
- "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==",
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz",
+ "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==",
"cpu": [
"arm64"
],
@@ -12453,9 +14041,9 @@
}
},
"node_modules/lightningcss-darwin-arm64": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz",
- "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==",
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz",
+ "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==",
"cpu": [
"arm64"
],
@@ -12473,9 +14061,9 @@
}
},
"node_modules/lightningcss-darwin-x64": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz",
- "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==",
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz",
+ "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==",
"cpu": [
"x64"
],
@@ -12493,9 +14081,9 @@
}
},
"node_modules/lightningcss-freebsd-x64": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz",
- "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==",
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz",
+ "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==",
"cpu": [
"x64"
],
@@ -12513,9 +14101,9 @@
}
},
"node_modules/lightningcss-linux-arm-gnueabihf": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz",
- "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==",
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz",
+ "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==",
"cpu": [
"arm"
],
@@ -12533,9 +14121,9 @@
}
},
"node_modules/lightningcss-linux-arm64-gnu": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz",
- "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==",
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz",
+ "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==",
"cpu": [
"arm64"
],
@@ -12556,9 +14144,9 @@
}
},
"node_modules/lightningcss-linux-arm64-musl": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz",
- "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==",
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz",
+ "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==",
"cpu": [
"arm64"
],
@@ -12579,9 +14167,9 @@
}
},
"node_modules/lightningcss-linux-x64-gnu": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz",
- "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==",
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz",
+ "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==",
"cpu": [
"x64"
],
@@ -12602,9 +14190,9 @@
}
},
"node_modules/lightningcss-linux-x64-musl": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz",
- "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==",
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz",
+ "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==",
"cpu": [
"x64"
],
@@ -12625,9 +14213,9 @@
}
},
"node_modules/lightningcss-win32-arm64-msvc": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz",
- "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==",
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz",
+ "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==",
"cpu": [
"arm64"
],
@@ -12645,9 +14233,9 @@
}
},
"node_modules/lightningcss-win32-x64-msvc": {
- "version": "1.33.0",
- "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz",
- "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==",
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz",
+ "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==",
"cpu": [
"x64"
],
@@ -12682,6 +14270,19 @@
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"license": "MIT"
},
+ "node_modules/loader-runner": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.2.tgz",
+ "integrity": "sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.11.5"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/webpack"
+ }
+ },
"node_modules/loader-utils": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
@@ -12729,6 +14330,13 @@
"integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
"license": "MIT"
},
+ "node_modules/lodash.merge": {
+ "version": "4.6.2",
+ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/lodash.uniq": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
@@ -12790,9 +14398,164 @@
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
"license": "ISC",
"dependencies": {
- "yallist": "^3.0.2"
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/map-limit": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz",
+ "integrity": "sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "once": "~1.3.0"
+ }
+ },
+ "node_modules/map-limit/node_modules/once": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
+ "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/mapbox-gl": {
+ "version": "1.13.3",
+ "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-1.13.3.tgz",
+ "integrity": "sha512-p8lJFEiqmEQlyv+DQxFAOG/XPWN0Wp7j/Psq93Zywz7qt9CcUKFYDBOoOEKzqe6gudHVJY8/Bhqw6VDpX2lSBg==",
+ "license": "SEE LICENSE IN LICENSE.txt",
+ "peer": true,
+ "dependencies": {
+ "@mapbox/geojson-rewind": "^0.5.2",
+ "@mapbox/geojson-types": "^1.0.2",
+ "@mapbox/jsonlint-lines-primitives": "^2.0.2",
+ "@mapbox/mapbox-gl-supported": "^1.5.0",
+ "@mapbox/point-geometry": "^0.1.0",
+ "@mapbox/tiny-sdf": "^1.1.1",
+ "@mapbox/unitbezier": "^0.0.0",
+ "@mapbox/vector-tile": "^1.3.1",
+ "@mapbox/whoots-js": "^3.1.0",
+ "csscolorparser": "~1.0.3",
+ "earcut": "^2.2.2",
+ "geojson-vt": "^3.2.1",
+ "gl-matrix": "^3.2.1",
+ "grid-index": "^1.1.0",
+ "murmurhash-js": "^1.0.0",
+ "pbf": "^3.2.1",
+ "potpack": "^1.0.1",
+ "quickselect": "^2.0.0",
+ "rw": "^1.3.3",
+ "supercluster": "^7.1.0",
+ "tinyqueue": "^2.0.3",
+ "vt-pbf": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=6.4.0"
+ }
+ },
+ "node_modules/maplibre-gl": {
+ "version": "4.7.1",
+ "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-4.7.1.tgz",
+ "integrity": "sha512-lgL7XpIwsgICiL82ITplfS7IGwrB1OJIw/pCvprDp2dhmSSEBgmPzYRvwYYYvJGJD7fxUv1Tvpih4nZ6VrLuaA==",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "@mapbox/geojson-rewind": "^0.5.2",
+ "@mapbox/jsonlint-lines-primitives": "^2.0.2",
+ "@mapbox/point-geometry": "^0.1.0",
+ "@mapbox/tiny-sdf": "^2.0.6",
+ "@mapbox/unitbezier": "^0.0.1",
+ "@mapbox/vector-tile": "^1.3.1",
+ "@mapbox/whoots-js": "^3.1.0",
+ "@maplibre/maplibre-gl-style-spec": "^20.3.1",
+ "@types/geojson": "^7946.0.14",
+ "@types/geojson-vt": "3.2.5",
+ "@types/mapbox__point-geometry": "^0.1.4",
+ "@types/mapbox__vector-tile": "^1.3.4",
+ "@types/pbf": "^3.0.5",
+ "@types/supercluster": "^7.1.3",
+ "earcut": "^3.0.0",
+ "geojson-vt": "^4.0.2",
+ "gl-matrix": "^3.4.3",
+ "global-prefix": "^4.0.0",
+ "kdbush": "^4.0.2",
+ "murmurhash-js": "^1.0.0",
+ "pbf": "^3.3.0",
+ "potpack": "^2.0.0",
+ "quickselect": "^3.0.0",
+ "supercluster": "^8.0.1",
+ "tinyqueue": "^3.0.0",
+ "vt-pbf": "^3.1.3"
+ },
+ "engines": {
+ "node": ">=16.14.0",
+ "npm": ">=8.1.0"
+ },
+ "funding": {
+ "url": "https://github.com/maplibre/maplibre-gl-js?sponsor=1"
+ }
+ },
+ "node_modules/maplibre-gl/node_modules/@mapbox/tiny-sdf": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.2.0.tgz",
+ "integrity": "sha512-LVL4wgI9YAum5V+LNVQO6QgFBPw7/MIIY4XJPNsPDMrjEwcE+JfKk1LuIl8GnF197ejVdC9QdPaxrx5gfgdGXg==",
+ "license": "BSD-2-Clause",
+ "peer": true
+ },
+ "node_modules/maplibre-gl/node_modules/@mapbox/unitbezier": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz",
+ "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==",
+ "license": "BSD-2-Clause",
+ "peer": true
+ },
+ "node_modules/maplibre-gl/node_modules/earcut": {
+ "version": "3.2.3",
+ "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.2.3.tgz",
+ "integrity": "sha512-vnS4AVwp1KHAF13i1vp1/2D5evWy3k5u/iW/B81QVsUZtV8cv2tU0b2VNFlqvh4kYwrFMDdjPCfAmfyJW9y14Q==",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/maplibre-gl/node_modules/geojson-vt": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-4.0.3.tgz",
+ "integrity": "sha512-jR1MwkLaZGa8Zftct9ZFruyWFrdl9ZyD2OliXNy9Qq5bBPeg5wHVpBQF9p5GjnicSDQqvBVpysxTPKmWdsfWMA==",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/maplibre-gl/node_modules/potpack": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/potpack/-/potpack-2.1.0.tgz",
+ "integrity": "sha512-pcaShQc1Shq0y+E7GqJqvZj8DTthWV1KeHGdi0Z6IAin2Oi3JnLCOfwnCo84qc+HAp52wT9nK9H7FAJp5a44GQ==",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/maplibre-gl/node_modules/quickselect": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz",
+ "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/maplibre-gl/node_modules/supercluster": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz",
+ "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "kdbush": "^4.0.2"
}
},
+ "node_modules/maplibre-gl/node_modules/tinyqueue": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-3.0.0.tgz",
+ "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==",
+ "license": "ISC",
+ "peer": true
+ },
"node_modules/markdown-extensions": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz",
@@ -12836,6 +14599,16 @@
"node": ">= 0.4"
}
},
+ "node_modules/math-log2": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/math-log2/-/math-log2-1.0.1.tgz",
+ "integrity": "sha512-9W0yGtkaMAkf74XGYVy4Dqw3YUMnTNB2eeiw9aQbUl4A3KmuCEHTt2DgAB07ENzOYAjsYSAYufkAq0Zd+jU7zA==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/mdast-util-directive": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/mdast-util-directive/-/mdast-util-directive-3.1.0.tgz",
@@ -13254,19 +15027,19 @@
}
},
"node_modules/memfs": {
- "version": "4.67.0",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.67.0.tgz",
- "integrity": "sha512-yuwPWDAs2kfwpQFuFNQI2OkiJ4ZqkGvSFq2jbgC9pFPfgh1N1lPxJaBj5rHp9R1wfJlSzUQkFnSw6WYGPwBbRg==",
+ "version": "4.57.3",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.57.3.tgz",
+ "integrity": "sha512-dlvqataP1zUOlfj6pv9wgCSC5pRIooNntXgdLfR7FWlcKi1p8fMfJADtHp/+8Dhu5JFvMHNh7L0QVcuaaBKqqA==",
"license": "Apache-2.0",
"dependencies": {
- "@jsonjoy.com/fs-core": "4.67.0",
- "@jsonjoy.com/fs-fsa": "4.67.0",
- "@jsonjoy.com/fs-node": "4.67.0",
- "@jsonjoy.com/fs-node-builtins": "4.67.0",
- "@jsonjoy.com/fs-node-to-fsa": "4.67.0",
- "@jsonjoy.com/fs-node-utils": "4.67.0",
- "@jsonjoy.com/fs-print": "4.67.0",
- "@jsonjoy.com/fs-snapshot": "4.67.0",
+ "@jsonjoy.com/fs-core": "4.57.3",
+ "@jsonjoy.com/fs-fsa": "4.57.3",
+ "@jsonjoy.com/fs-node": "4.57.3",
+ "@jsonjoy.com/fs-node-builtins": "4.57.3",
+ "@jsonjoy.com/fs-node-to-fsa": "4.57.3",
+ "@jsonjoy.com/fs-node-utils": "4.57.3",
+ "@jsonjoy.com/fs-print": "4.57.3",
+ "@jsonjoy.com/fs-snapshot": "4.57.3",
"@jsonjoy.com/json-pack": "^1.11.0",
"@jsonjoy.com/util": "^1.9.0",
"glob-to-regex.js": "^1.0.1",
@@ -13277,6 +15050,9 @@
"funding": {
"type": "github",
"url": "https://github.com/sponsors/streamich"
+ },
+ "peerDependencies": {
+ "tslib": "2"
}
},
"node_modules/merge-descriptors": {
@@ -15210,94 +16986,12 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/minimizer-webpack-plugin": {
- "version": "5.6.1",
- "resolved": "https://registry.npmjs.org/minimizer-webpack-plugin/-/minimizer-webpack-plugin-5.6.1.tgz",
- "integrity": "sha512-DoeAZz8Q1C1znwsUzej1fdoi4jCf7/+Em27ouLqfK/+3m8G+D7yDhUwrc3CNhjSzGUN1kn7Iv4sWmjflQHenpw==",
- "license": "MIT",
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.25",
- "jest-worker": "^27.4.5",
- "schema-utils": "^4.3.0",
- "terser": "^5.31.1"
- },
- "engines": {
- "node": ">= 10.13.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/webpack"
- },
- "peerDependencies": {
- "webpack": "^5.1.0"
- },
- "peerDependenciesMeta": {
- "@minify-html/node": {
- "optional": true
- },
- "@swc/core": {
- "optional": true
- },
- "@swc/css": {
- "optional": true
- },
- "@swc/html": {
- "optional": true
- },
- "clean-css": {
- "optional": true
- },
- "cssnano": {
- "optional": true
- },
- "csso": {
- "optional": true
- },
- "esbuild": {
- "optional": true
- },
- "html-minifier-terser": {
- "optional": true
- },
- "lightningcss": {
- "optional": true
- },
- "postcss": {
- "optional": true
- },
- "uglify-js": {
- "optional": true
- }
- }
- },
- "node_modules/minimizer-webpack-plugin/node_modules/jest-worker": {
- "version": "27.5.1",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz",
- "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==",
- "license": "MIT",
- "dependencies": {
- "@types/node": "*",
- "merge-stream": "^2.0.0",
- "supports-color": "^8.0.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- }
- },
- "node_modules/minimizer-webpack-plugin/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "node_modules/mouse-event-offset": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/mouse-event-offset/-/mouse-event-offset-3.0.2.tgz",
+ "integrity": "sha512-s9sqOs5B1Ykox3Xo8b3Ss2IQju4UwlW6LSR+Q5FXWpprJ5fzMLefIIItr3PH8RwzfGy6gxs/4GAmiNuZScE25w==",
"license": "MIT",
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
- }
+ "peer": true
},
"node_modules/mrmime": {
"version": "2.0.1",
@@ -15327,10 +17021,17 @@
"multicast-dns": "cli.js"
}
},
+ "node_modules/murmurhash-js": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz",
+ "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/nanoid": {
- "version": "3.3.17",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.17.tgz",
- "integrity": "sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==",
+ "version": "3.3.18",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz",
+ "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==",
"funding": [
{
"type": "github",
@@ -15345,6 +17046,41 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
+ "node_modules/native-promise-only": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz",
+ "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/needle": {
+ "version": "2.9.1",
+ "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz",
+ "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "debug": "^3.2.6",
+ "iconv-lite": "^0.4.4",
+ "sax": "^1.2.4"
+ },
+ "bin": {
+ "needle": "bin/needle"
+ },
+ "engines": {
+ "node": ">= 4.4.x"
+ }
+ },
+ "node_modules/needle/node_modules/debug": {
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+ "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ms": "^2.1.1"
+ }
+ },
"node_modules/negotiator": {
"version": "0.6.4",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz",
@@ -15360,6 +17096,13 @@
"integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
"license": "MIT"
},
+ "node_modules/next-tick": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz",
+ "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==",
+ "license": "ISC",
+ "peer": true
+ },
"node_modules/no-case": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz",
@@ -15386,9 +17129,9 @@
}
},
"node_modules/node-releases": {
- "version": "2.0.52",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.52.tgz",
- "integrity": "sha512-MRlTqhAfoMx/4mhEbPo3Hi02g9LJZaJkka69V6h67Cb1gjrAG0jsTE4CZX1eptNx+VCAwJmfpnDIF4P0Nh1A7A==",
+ "version": "2.0.46",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.46.tgz",
+ "integrity": "sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==",
"license": "MIT",
"engines": {
"node": ">=18"
@@ -15403,6 +17146,13 @@
"node": ">=0.10.0"
}
},
+ "node_modules/normalize-svg-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-0.1.0.tgz",
+ "integrity": "sha512-1/kmYej2iedi5+ROxkRESL/pI02pkg0OBnaR4hJkSIX6+ORzepwbuUXfrdZaPjysTsJInj0Rj5NuX027+dMBvA==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/normalize-url": {
"version": "8.1.1",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.1.1.tgz",
@@ -15514,6 +17264,19 @@
"url": "https://opencollective.com/webpack"
}
},
+ "node_modules/number-is-integer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-integer/-/number-is-integer-1.0.1.tgz",
+ "integrity": "sha512-Dq3iuiFBkrbmuQjGFFF3zckXNCQoSD37/SdSbgcBailUx6knDvDwb5CympBgcoWHy36sfS12u74MHYkXyHq6bg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "is-finite": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -15591,6 +17354,16 @@
"node": ">= 0.8"
}
},
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
"node_modules/onetime": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
@@ -15823,6 +17596,13 @@
"node": ">=6"
}
},
+ "node_modules/parenthesis": {
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/parenthesis/-/parenthesis-3.1.8.tgz",
+ "integrity": "sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/parse-entities": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz",
@@ -15872,6 +17652,30 @@
"integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==",
"license": "ISC"
},
+ "node_modules/parse-rect": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/parse-rect/-/parse-rect-1.2.0.tgz",
+ "integrity": "sha512-4QZ6KYbnE6RTwg9E0HpLchUM9EZt6DnDxajFZZDSV4p/12ZJEvPO702DZpGvRYEPo00yKDys7jASi+/w7aO8LA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "pick-by-alias": "^1.2.0"
+ }
+ },
+ "node_modules/parse-svg-path": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz",
+ "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/parse-unit": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz",
+ "integrity": "sha512-hrqldJHokR3Qj88EIlV/kAyAi/G5R2+R56TBANxNMy0uPlYcttx0jnMW6Yx5KsKPSbC3KddM/7qQm3+0wEXKxg==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/parse5": {
"version": "7.3.0",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
@@ -15976,6 +17780,34 @@
"node": ">=8"
}
},
+ "node_modules/pbf": {
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.3.0.tgz",
+ "integrity": "sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==",
+ "license": "BSD-3-Clause",
+ "peer": true,
+ "dependencies": {
+ "ieee754": "^1.1.12",
+ "resolve-protobuf-schema": "^2.1.0"
+ },
+ "bin": {
+ "pbf": "bin/pbf"
+ }
+ },
+ "node_modules/performance-now": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/pick-by-alias": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/pick-by-alias/-/pick-by-alias-1.2.0.tgz",
+ "integrity": "sha512-ESj2+eBxhGrcA1azgHs7lARG5+5iLakc/6nlfbpjcLl00HuuUOIuORhYXN4D1HfvMSKuVtFQjAlnwi1JHEeDIw==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
@@ -16032,10 +17864,85 @@
"integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==",
"license": "MIT"
},
+ "node_modules/plotly.js": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-3.7.0.tgz",
+ "integrity": "sha512-r17/w3Ob/E+A1vqN382PV/6Dz+IAxAsxNCpWcnGfGFLqE0M6vPUa+ve7HPhivrl9LMicZg2Fy0U5GbpauHo32A==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@plotly/d3": "3.8.2",
+ "@plotly/d3-sankey": "0.7.2",
+ "@plotly/d3-sankey-circular": "0.33.1",
+ "@plotly/mapbox-gl": "1.13.4",
+ "@plotly/regl": "^2.1.2",
+ "@turf/area": "^7.1.0",
+ "@turf/bbox": "^7.1.0",
+ "@turf/centroid": "^7.1.0",
+ "base64-arraybuffer": "^1.0.2",
+ "color-normalize": "1.5.0",
+ "color-rgba": "3.0.0",
+ "country-regex": "^1.1.0",
+ "d3-force": "^1.2.1",
+ "d3-format": "^1.4.5",
+ "d3-geo": "^1.12.1",
+ "d3-geo-projection": "^2.9.0",
+ "d3-hierarchy": "^1.1.9",
+ "d3-interpolate": "^3.0.1",
+ "d3-time": "^1.1.0",
+ "d3-time-format": "^2.2.3",
+ "fast-isnumeric": "^1.1.4",
+ "gl-mat4": "^1.2.0",
+ "gl-text": "^1.4.0",
+ "has-hover": "^1.0.1",
+ "has-passive-events": "^1.0.0",
+ "is-mobile": "^4.0.0",
+ "maplibre-gl": "^4.7.1",
+ "mouse-event-offset": "^3.0.2",
+ "native-promise-only": "^0.8.1",
+ "parse-svg-path": "^0.1.2",
+ "point-in-polygon": "^1.1.0",
+ "polybooljs": "^1.2.2",
+ "probe-image-size": "^7.2.3",
+ "regl-error2d": "^2.0.12",
+ "regl-line2d": "^3.1.3",
+ "regl-scatter2d": "^3.3.1",
+ "regl-splom": "^1.0.14",
+ "strongly-connected-components": "^1.0.1",
+ "svg-path-sdf": "^1.1.3",
+ "tinycolor2": "^1.4.2",
+ "topojson-client": "^3.1.0",
+ "webgl-context": "^2.2.0",
+ "world-calendars": "^1.0.4"
+ },
+ "engines": {
+ "node": ">=18.0.0"
+ }
+ },
+ "node_modules/plotly.js-dist-min": {
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/plotly.js-dist-min/-/plotly.js-dist-min-3.7.0.tgz",
+ "integrity": "sha512-IRWNnBJZmKss3URDnicBK2nvt/VTSi/MD1GnUscAYFjwSuN6g/CTde5R1UC0RYtblehj8rkT4BL8r05e/c8j5Q==",
+ "license": "MIT"
+ },
+ "node_modules/point-in-polygon": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz",
+ "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/polybooljs": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/polybooljs/-/polybooljs-1.2.2.tgz",
+ "integrity": "sha512-ziHW/02J0XuNuUtmidBc6GXE8YohYydp3DWPWXYsd7O721TjcmN+k6ezjdwkDqep+gnWnFY+yqZHvzElra2oCg==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/postcss": {
- "version": "8.5.25",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.25.tgz",
- "integrity": "sha512-DTPx3RWSSnWyzLxQnlH0rJP+EW5ekl16ZU4/psbIhA0e53kJfdgaN5vKM+xP7yJtXVu+nfdVFmlgFDEKAe4Pyw==",
+ "version": "8.5.26",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz",
+ "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==",
"funding": [
{
"type": "opencollective",
@@ -16052,7 +17959,7 @@
],
"license": "MIT",
"dependencies": {
- "nanoid": "^3.3.16",
+ "nanoid": "^3.3.17",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
@@ -16086,9 +17993,9 @@
}
},
"node_modules/postcss-attribute-case-insensitive/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -16330,9 +18237,9 @@
}
},
"node_modules/postcss-custom-selectors/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -16368,9 +18275,9 @@
}
},
"node_modules/postcss-dir-pseudo-class/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -16496,9 +18403,9 @@
}
},
"node_modules/postcss-focus-visible/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -16534,9 +18441,9 @@
}
},
"node_modules/postcss-focus-within/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -16823,9 +18730,9 @@
}
},
"node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -16851,9 +18758,9 @@
}
},
"node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -16950,9 +18857,9 @@
}
},
"node_modules/postcss-nesting/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -17313,9 +19220,9 @@
}
},
"node_modules/postcss-pseudo-class-any-link/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -17406,9 +19313,9 @@
}
},
"node_modules/postcss-selector-not/node_modules/postcss-selector-parser": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.4.tgz",
- "integrity": "sha512-HeP7D2wyhkR+XaK6v4W8oRF62Dsz4flyuczALJp61GckGm42u1saSSJ/0auvcBqxs3jMRFEcPK34At/0JBKdOg==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -17419,9 +19326,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "6.1.4",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz",
- "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==",
+ "version": "6.1.2",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz",
+ "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==",
"license": "MIT",
"dependencies": {
"cssesc": "^3.0.0",
@@ -17495,6 +19402,13 @@
"postcss": "^8.4.31"
}
},
+ "node_modules/potpack": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz",
+ "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==",
+ "license": "ISC",
+ "peer": true
+ },
"node_modules/pretty-error": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz",
@@ -17536,6 +19450,28 @@
"node": ">=6"
}
},
+ "node_modules/probe-image-size": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.3.0.tgz",
+ "integrity": "sha512-7CaDeBwiAbh6ohXsvLbAZhO7wzsZAmaevfxe39qvCwRh8LyaZfDlBGGLU1CCTgrTLtCOdwBBhjOrIHaIIimHfQ==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/puzrin"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/nodeca"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "lodash.merge": "^4.6.2",
+ "needle": "^2.5.2",
+ "stream-parser": "~0.3.1"
+ }
+ },
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
@@ -17567,9 +19503,9 @@
}
},
"node_modules/property-information": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.2.0.tgz",
- "integrity": "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
+ "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==",
"license": "MIT",
"funding": {
"type": "github",
@@ -17605,6 +19541,13 @@
"node": ">=12.0.0"
}
},
+ "node_modules/protocol-buffers-schema": {
+ "version": "3.6.1",
+ "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.1.tgz",
+ "integrity": "sha512-VG2K63Igkiv9p76tk1lilczEK1cT+kCjKtkdhw1dQZV3k3IXJbd3o6Ho8b9zJZaHSnT2hKe4I+ObmX9w6m5SmQ==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/proxy-addr": {
"version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@@ -17670,13 +19613,12 @@
}
},
"node_modules/qs": {
- "version": "6.15.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz",
- "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==",
+ "version": "6.15.2",
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz",
+ "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==",
"license": "BSD-3-Clause",
"dependencies": {
- "es-define-property": "^1.0.1",
- "side-channel": "^1.1.1"
+ "side-channel": "^1.1.0"
},
"engines": {
"node": ">=0.6"
@@ -17717,6 +19659,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/quickselect": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz",
+ "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/raf": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+ "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "performance-now": "^2.1.0"
+ }
+ },
"node_modules/randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -17790,24 +19749,24 @@
}
},
"node_modules/react": {
- "version": "19.2.8",
- "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz",
- "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==",
+ "version": "19.2.6",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz",
+ "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==",
"license": "MIT",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-dom": {
- "version": "19.2.8",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz",
- "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==",
+ "version": "19.2.6",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz",
+ "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==",
"license": "MIT",
"dependencies": {
"scheduler": "^0.27.0"
},
"peerDependencies": {
- "react": "^19.2.8"
+ "react": "^19.2.6"
}
},
"node_modules/react-fast-compare": {
@@ -17881,6 +19840,19 @@
"webpack": ">=4.41.1 || 5.x"
}
},
+ "node_modules/react-plotly.js": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/react-plotly.js/-/react-plotly.js-4.1.0.tgz",
+ "integrity": "sha512-+CJA9xOY4UjH1RnRqQnpBGoFSzsrB/e7CR4k8AMQ20RkBlXjqkiIVLdIA5N1hinEVdoTdhaS6krKEARyfSixXg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "plotly.js": ">=3.0.0",
+ "react": "^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/react-router": {
"version": "5.3.4",
"resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz",
@@ -17933,19 +19905,26 @@
}
},
"node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
+ "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"license": "MIT",
"dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
}
},
+ "node_modules/readable-stream/node_modules/isarray": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+ "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
+ "license": "MIT"
+ },
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@@ -18100,9 +20079,9 @@
"license": "MIT"
},
"node_modules/regjsparser": {
- "version": "0.13.2",
- "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz",
- "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==",
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.1.tgz",
+ "integrity": "sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==",
"license": "BSD-2-Clause",
"dependencies": {
"jsesc": "~3.1.0"
@@ -18111,6 +20090,85 @@
"regjsparser": "bin/parser"
}
},
+ "node_modules/regl": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/regl/-/regl-2.1.1.tgz",
+ "integrity": "sha512-+IOGrxl3FZ8ZM9ixCWQZzFRiRn7Rzn9bu3iFHwg/yz4tlOUQgbO4PHLgG+1ZT60zcIV8tief6Qrmyl8qcoJP0g==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/regl-error2d": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/regl-error2d/-/regl-error2d-2.0.12.tgz",
+ "integrity": "sha512-r7BUprZoPO9AbyqM5qlJesrSRkl+hZnVKWKsVp7YhOl/3RIpi4UDGASGJY0puQ96u5fBYw/OlqV24IGcgJ0McA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "array-bounds": "^1.0.1",
+ "color-normalize": "^1.5.0",
+ "flatten-vertex-data": "^1.0.2",
+ "object-assign": "^4.1.1",
+ "pick-by-alias": "^1.2.0",
+ "to-float32": "^1.1.0",
+ "update-diff": "^1.1.0"
+ }
+ },
+ "node_modules/regl-line2d": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/regl-line2d/-/regl-line2d-3.1.3.tgz",
+ "integrity": "sha512-fkgzW+tTn4QUQLpFKsUIE0sgWdCmXAM3ctXcCgoGBZTSX5FE2A0M7aynz7nrZT5baaftLrk9te54B+MEq4QcSA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "array-bounds": "^1.0.1",
+ "array-find-index": "^1.0.2",
+ "array-normalize": "^1.1.4",
+ "color-normalize": "^1.5.0",
+ "earcut": "^2.1.5",
+ "es6-weak-map": "^2.0.3",
+ "flatten-vertex-data": "^1.0.2",
+ "object-assign": "^4.1.1",
+ "parse-rect": "^1.2.0",
+ "pick-by-alias": "^1.2.0",
+ "to-float32": "^1.1.0"
+ }
+ },
+ "node_modules/regl-scatter2d": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/regl-scatter2d/-/regl-scatter2d-3.4.0.tgz",
+ "integrity": "sha512-DavKQlHsI+iHZuLgOL+yGkg+sPd94CS+7FCBWkcQ6s/TbaNfUsF9eN591fjjSWIoKrGNfb/SEGhsXR5lXjqZ2w==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@plotly/point-cluster": "^3.1.9",
+ "array-bounds": "^1.0.1",
+ "color-id": "^1.1.0",
+ "color-normalize": "^1.5.0",
+ "flatten-vertex-data": "^1.0.2",
+ "glslify": "^7.0.0",
+ "parse-rect": "^1.2.0",
+ "pick-by-alias": "^1.2.0",
+ "to-float32": "^1.1.0",
+ "update-diff": "^1.1.0"
+ }
+ },
+ "node_modules/regl-splom": {
+ "version": "1.0.14",
+ "resolved": "https://registry.npmjs.org/regl-splom/-/regl-splom-1.0.14.tgz",
+ "integrity": "sha512-OiLqjmPRYbd7kDlHC6/zDf6L8lxgDC65BhC8JirhP4ykrK4x22ZyS+BnY8EUinXKDeMgmpRwCvUmk7BK4Nweuw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "array-bounds": "^1.0.1",
+ "array-range": "^1.0.1",
+ "color-alpha": "^1.0.4",
+ "flatten-vertex-data": "^1.0.2",
+ "parse-rect": "^1.2.0",
+ "pick-by-alias": "^1.2.0",
+ "raf": "^3.4.1",
+ "regl-scatter2d": "^3.2.3"
+ }
+ },
"node_modules/rehype-raw": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz",
@@ -18443,6 +20501,16 @@
"integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==",
"license": "MIT"
},
+ "node_modules/resolve-protobuf-schema": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz",
+ "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "protocol-buffers-schema": "^3.3.1"
+ }
+ },
"node_modules/responselike": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz",
@@ -18547,24 +20615,17 @@
"queue-microtask": "^1.2.2"
}
},
+ "node_modules/rw": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
+ "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==",
+ "license": "BSD-3-Clause",
+ "peer": true
+ },
"node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"license": "MIT"
},
"node_modules/safer-buffer": {
@@ -18574,9 +20635,9 @@
"license": "MIT"
},
"node_modules/sax": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.1.tgz",
- "integrity": "sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz",
+ "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==",
"license": "BlueOak-1.0.0",
"engines": {
"node": ">=11.0.0"
@@ -18653,9 +20714,9 @@
}
},
"node_modules/semver": {
- "version": "7.8.5",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz",
- "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==",
+ "version": "7.8.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz",
+ "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@@ -18932,6 +20993,13 @@
"node": ">=8"
}
},
+ "node_modules/shallow-copy": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz",
+ "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/shallowequal": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz",
@@ -19016,14 +21084,14 @@
}
},
"node_modules/side-channel": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz",
- "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
- "object-inspect": "^1.13.4",
- "side-channel-list": "^1.0.1",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
"side-channel-map": "^1.0.1",
"side-channel-weakmap": "^1.0.2"
},
@@ -19266,6 +21334,20 @@
"wbuf": "^1.7.3"
}
},
+ "node_modules/spdy-transport/node_modules/readable-stream": {
+ "version": "3.6.2",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
+ "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "license": "MIT",
+ "dependencies": {
+ "inherits": "^2.0.3",
+ "string_decoder": "^1.1.1",
+ "util-deprecate": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
"node_modules/sprintf-js": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz",
@@ -19284,6 +21366,25 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/stack-trace": {
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz",
+ "integrity": "sha512-vjUc6sfgtgY0dxCdnc40mK6Oftjo9+2K8H/NG81TMhgL392FtiPA9tn9RLyTxXmTLPJPjF3VyzFp6bsWFLisMQ==",
+ "peer": true,
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/static-eval": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.1.tgz",
+ "integrity": "sha512-MgWpQ/ZjGieSVB3eOJVs4OA2LT/q1vx98KPCTTQPzq/aLr0YUXTsgryTXr4SLfR0ZfUUCiedM9n/ABeDIyy4mA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "escodegen": "^2.1.0"
+ }
+ },
"node_modules/statuses": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz",
@@ -19299,13 +21400,57 @@
"integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==",
"license": "MIT"
},
+ "node_modules/stream-parser": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz",
+ "integrity": "sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "debug": "2"
+ }
+ },
+ "node_modules/stream-parser/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/stream-parser/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/stream-shift": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz",
+ "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/string_decoder": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
- "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "license": "MIT",
+ "dependencies": {
+ "safe-buffer": "~5.1.0"
+ }
+ },
+ "node_modules/string-split-by": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/string-split-by/-/string-split-by-1.0.0.tgz",
+ "integrity": "sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==",
"license": "MIT",
+ "peer": true,
"dependencies": {
- "safe-buffer": "~5.2.0"
+ "parenthesis": "^3.1.5"
}
},
"node_modules/string-width": {
@@ -19422,6 +21567,13 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/strongly-connected-components": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/strongly-connected-components/-/strongly-connected-components-1.0.1.tgz",
+ "integrity": "sha512-i0TFx4wPcO0FwX+4RkLJi1MxmcTv90jNZgxMu9XRnMXMeFUY1VJlIoXpZunPUvUUqbCT1pg5PEkFqqpcaElNaA==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/style-to-js": {
"version": "1.1.21",
"resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.21.tgz",
@@ -19456,6 +21608,23 @@
"postcss": "^8.4.31"
}
},
+ "node_modules/supercluster": {
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.5.tgz",
+ "integrity": "sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "kdbush": "^3.0.0"
+ }
+ },
+ "node_modules/supercluster/node_modules/kdbush": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz",
+ "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==",
+ "license": "ISC",
+ "peer": true
+ },
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -19480,12 +21649,56 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/svg-arc-to-cubic-bezier": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz",
+ "integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==",
+ "license": "ISC",
+ "peer": true
+ },
"node_modules/svg-parser": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz",
"integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==",
"license": "MIT"
},
+ "node_modules/svg-path-bounds": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/svg-path-bounds/-/svg-path-bounds-1.0.2.tgz",
+ "integrity": "sha512-H4/uAgLWrppIC0kHsb2/dWUYSmb4GE5UqH06uqWBcg6LBjX2fu0A8+JrO2/FJPZiSsNOKZAhyFFgsLTdYUvSqQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "abs-svg-path": "^0.1.1",
+ "is-svg-path": "^1.0.1",
+ "normalize-svg-path": "^1.0.0",
+ "parse-svg-path": "^0.1.2"
+ }
+ },
+ "node_modules/svg-path-bounds/node_modules/normalize-svg-path": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-1.1.0.tgz",
+ "integrity": "sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "svg-arc-to-cubic-bezier": "^3.0.0"
+ }
+ },
+ "node_modules/svg-path-sdf": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/svg-path-sdf/-/svg-path-sdf-1.1.3.tgz",
+ "integrity": "sha512-vJJjVq/R5lSr2KLfVXVAStktfcfa1pNFjFOgyJnzZFXlO/fDZ5DmM8FpnSKKzLPfEYTVeXuVBTHF296TpxuJVg==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "bitmap-sdf": "^1.0.0",
+ "draw-svg-path": "^1.0.0",
+ "is-svg-path": "^1.0.1",
+ "parse-svg-path": "^0.1.2",
+ "svg-path-bounds": "^1.0.1"
+ }
+ },
"node_modules/svgo": {
"version": "3.3.4",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.4.tgz",
@@ -19547,9 +21760,9 @@
}
},
"node_modules/terser": {
- "version": "5.49.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.49.1.tgz",
- "integrity": "sha512-7A2xlQ5EnGT8KPA92dUh6RbRYTVw8hEaEN9L1K68l4UOXFuV511NnAqObGoRqGOQofQcMypisu1s3xawCEHrvA==",
+ "version": "5.48.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.48.0.tgz",
+ "integrity": "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==",
"license": "BSD-2-Clause",
"dependencies": {
"@jridgewell/source-map": "^0.3.3",
@@ -19660,9 +21873,9 @@
"license": "MIT"
},
"node_modules/thingies": {
- "version": "2.6.1",
- "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.6.1.tgz",
- "integrity": "sha512-cV/CMGTK3M4MlnJ/0At6ismOw/A0EEniDNScajjz/Br3c1sqE72YD01rGpPTKwd27wAxI5Pr+6+0w8yofzFRYw==",
+ "version": "2.6.0",
+ "resolved": "https://registry.npmjs.org/thingies/-/thingies-2.6.0.tgz",
+ "integrity": "sha512-rMHRjmlFLM1R96UYPvpmnc3LYtdFrT33JIB7L9hetGue1qAPfn1N2LJeEjxUSidu1Iku+haLZXDuEXUHNGO/lg==",
"license": "MIT",
"engines": {
"node": ">=10.18"
@@ -19675,6 +21888,17 @@
"tslib": "^2"
}
},
+ "node_modules/through2": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "readable-stream": "~2.3.6",
+ "xtend": "~4.0.1"
+ }
+ },
"node_modules/thunky": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
@@ -19693,6 +21917,13 @@
"integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==",
"license": "MIT"
},
+ "node_modules/tinycolor2": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz",
+ "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/tinypool": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz",
@@ -19702,6 +21933,30 @@
"node": "^18.0.0 || >=20.0.0"
}
},
+ "node_modules/tinyqueue": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz",
+ "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/to-float32": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/to-float32/-/to-float32-1.1.0.tgz",
+ "integrity": "sha512-keDnAusn/vc+R3iEiSDw8TOF7gPiTLdK1ArvWtYbJQiVfmRg6i/CAvbKq3uIS0vWroAC7ZecN3DjQKw3aSklUg==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/to-px": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/to-px/-/to-px-1.1.0.tgz",
+ "integrity": "sha512-bfg3GLYrGoEzrGoE05TAL/Uw+H/qrf2ptr9V3W7U0lkjjyYnIfgxmVLUfhQ1hZpIQwin81uxhDjvUkDYsC0xWw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "parse-unit": "^1.0.1"
+ }
+ },
"node_modules/to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
@@ -19723,6 +21978,28 @@
"node": ">=0.6"
}
},
+ "node_modules/topojson-client": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz",
+ "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "commander": "2"
+ },
+ "bin": {
+ "topo2geo": "bin/topo2geo",
+ "topomerge": "bin/topomerge",
+ "topoquantize": "bin/topoquantize"
+ }
+ },
+ "node_modules/topojson-client/node_modules/commander": {
+ "version": "2.20.3",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/totalist": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz",
@@ -19775,9 +22052,9 @@
"license": "0BSD"
},
"node_modules/tsx": {
- "version": "4.23.5",
- "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.23.5.tgz",
- "integrity": "sha512-rw55FUaqOoI7RvlQwLbhO4nSDApnQ4/CykPuiQ/EPvtrX3WA9Ig55jIt9VvbBJbzJuj12ueRu4PMZ2SxPVbihg==",
+ "version": "4.23.12",
+ "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.23.12.tgz",
+ "integrity": "sha512-FDf4L4sYzKtzWYhU/Xm0AQFdTjdIxNo9ElTf2mxXM6k8YMHXzYUe4yODVaXP4V9uMFbVg8c0qyBccK2OOxb45Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -19811,6 +22088,13 @@
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
"license": "0BSD"
},
+ "node_modules/type": {
+ "version": "2.7.3",
+ "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz",
+ "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==",
+ "license": "ISC",
+ "peer": true
+ },
"node_modules/type-fest": {
"version": "2.19.0",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz",
@@ -19857,6 +22141,24 @@
"node": ">= 0.6"
}
},
+ "node_modules/typedarray": {
+ "version": "0.0.6",
+ "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/typedarray-pool": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/typedarray-pool/-/typedarray-pool-1.2.0.tgz",
+ "integrity": "sha512-YTSQbzX43yvtpfRtIDAYygoYtgT+Rpjuxy9iOpczrjpXLgGoyG7aS5USJXV2d3nn8uHTeb9rXDvzS27zUg5KYQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "bit-twiddle": "^1.0.0",
+ "dup": "^1.0.0"
+ }
+ },
"node_modules/typedarray-to-buffer": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz",
@@ -19881,9 +22183,9 @@
}
},
"node_modules/undici-types": {
- "version": "8.3.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
- "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==",
+ "version": "7.24.6",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz",
+ "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==",
"license": "MIT"
},
"node_modules/unicode-canonical-property-names-ecmascript": {
@@ -19954,6 +22256,18 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/unified/node_modules/is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/unique-string": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz",
@@ -20068,6 +22382,13 @@
"node": ">= 0.8"
}
},
+ "node_modules/unquote": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
+ "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/update-browserslist-db": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
@@ -20098,6 +22419,13 @@
"browserslist": ">= 4.21.0"
}
},
+ "node_modules/update-diff": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/update-diff/-/update-diff-1.1.0.tgz",
+ "integrity": "sha512-rCiBPiHxZwT4+sBhEbChzpO5hYHjm91kScWgdHf4Qeafs6Ba7MBl+d9GlGv72bcTZQO0sLmtQS1pHSWoCLtN/A==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/update-notifier": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz",
@@ -20375,12 +22703,25 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/vt-pbf": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz",
+ "integrity": "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@mapbox/point-geometry": "0.1.0",
+ "@mapbox/vector-tile": "^1.3.1",
+ "pbf": "^3.2.1"
+ }
+ },
"node_modules/watchpack": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.2.tgz",
- "integrity": "sha512-6i/00NBjP4yGPs+caKSyRfpTF/8Torsu0MOW3mMzIbhgISFder8i7xbqgHlLMwJrdiN8ndBV3UA1/AfzPSr+jg==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz",
+ "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==",
"license": "MIT",
"dependencies": {
+ "glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.1.2"
},
"engines": {
@@ -20396,6 +22737,13 @@
"minimalistic-assert": "^1.0.0"
}
},
+ "node_modules/weak-map": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.8.tgz",
+ "integrity": "sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw==",
+ "license": "Apache-2.0",
+ "peer": true
+ },
"node_modules/web-namespaces": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz",
@@ -20406,10 +22754,20 @@
"url": "https://github.com/sponsors/wooorm"
}
},
+ "node_modules/webgl-context": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/webgl-context/-/webgl-context-2.2.0.tgz",
+ "integrity": "sha512-q/fGIivtqTT7PEoF07axFIlHNk/XCPaYpq64btnepopSWvKNFkoORlQYgqDigBIuGA1ExnFd/GnSUnBNEPQY7Q==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "get-canvas-context": "^1.0.1"
+ }
+ },
"node_modules/webpack": {
- "version": "5.109.2",
- "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.109.2.tgz",
- "integrity": "sha512-U9/cvLzxObKNEZ9+TtdqrHM5/9z3lgl2c+c4BzbqGxFQvQvBAq87yql5A8pQ+rrMbS496MZJeF5enVBndIy2hw==",
+ "version": "5.107.2",
+ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.107.2.tgz",
+ "integrity": "sha512-v7RhXaJbpMlV0D7hC7lb2EbnxkoeUqf9qhKr6lozx3Q48pmFrqqNRmZFUEGmi7pSwm6fCQ2H1IjvCkHqdpVdjQ==",
"license": "MIT",
"dependencies": {
"@types/estree": "^1.0.8",
@@ -20418,20 +22776,23 @@
"@webassemblyjs/wasm-edit": "^1.14.1",
"@webassemblyjs/wasm-parser": "^1.14.1",
"acorn": "^8.16.0",
+ "acorn-import-phases": "^1.0.3",
"browserslist": "^4.28.1",
"chrome-trace-event": "^1.0.2",
- "enhanced-resolve": "^5.24.4",
+ "enhanced-resolve": "^5.22.0",
"es-module-lexer": "^2.1.0",
"eslint-scope": "5.1.1",
"events": "^3.2.0",
+ "glob-to-regexp": "^0.4.1",
"graceful-fs": "^4.2.11",
+ "loader-runner": "^4.3.2",
"mime-db": "^1.54.0",
- "minimizer-webpack-plugin": "^5.6.1",
"neo-async": "^2.6.2",
"schema-utils": "^4.3.3",
"tapable": "^2.3.0",
- "watchpack": "^2.5.2",
- "webpack-sources": "^3.5.1"
+ "terser-webpack-plugin": "^5.5.0",
+ "watchpack": "^2.5.1",
+ "webpack-sources": "^3.5.0"
},
"bin": {
"webpack": "bin/webpack.js"
@@ -20539,16 +22900,12 @@
}
},
"node_modules/webpack-dev-middleware/node_modules/range-parser": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.3.0.tgz",
- "integrity": "sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/express"
}
},
"node_modules/webpack-dev-server": {
@@ -20639,9 +22996,9 @@
}
},
"node_modules/webpack-dev-server/node_modules/ws": {
- "version": "8.21.2",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.2.tgz",
- "integrity": "sha512-54dMVAo4WIe6SKy3vBgN+9bJZqqQ8IMRevAkOLQALhi49qkkQDQfWdAZ8KQlXiEabw88ARXXdUrlvtbKQX+aKw==",
+ "version": "8.21.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz",
+ "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==",
"license": "MIT",
"engines": {
"node": ">=10.0.0"
@@ -20674,9 +23031,9 @@
}
},
"node_modules/webpack-sources": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.1.tgz",
- "integrity": "sha512-jyuiGJdtvY434z5bUZrjz67v76/ePNvFZTp9Mdz29IlH4+GPsgyGjiv0fKI+M7BdkU6ADjulUcKAd3tUK3WlEw==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.5.0.tgz",
+ "integrity": "sha512-HPuy+uuoTCaaoEoI1LQ3JN9+vrPBvEesnnX1jADHy728cHSMlq4wUc4afYqahq2B1mhQVZxCXOkNTnXltr+2vQ==",
"license": "MIT",
"engines": {
"node": ">=10.13.0"
@@ -20777,6 +23134,16 @@
"integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==",
"license": "MIT"
},
+ "node_modules/world-calendars": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/world-calendars/-/world-calendars-1.0.4.tgz",
+ "integrity": "sha512-VGRnLJS+xJmGDPodgJRnGIDwGu0s+Cr9V2HB3EzlDZ5n0qb8h5SJtGUEkjrphZYAglEiXZ6kiXdmk0H/h/uu/w==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "object-assign": "^4.1.0"
+ }
+ },
"node_modules/wrap-ansi": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
@@ -20833,6 +23200,13 @@
"url": "https://github.com/chalk/strip-ansi?sponsor=1"
}
},
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "license": "ISC",
+ "peer": true
+ },
"node_modules/write-file-atomic": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
@@ -20846,9 +23220,9 @@
}
},
"node_modules/ws": {
- "version": "7.5.13",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.13.tgz",
- "integrity": "sha512-rsKI6xDBFVf4r/x8XyChGK04QR/XHroxs/jUcoWvtEZM8TPU/X/uIY9B1CsSzYws9ZJb/6bbBu7dPhFW00CAoA==",
+ "version": "7.5.11",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.11.tgz",
+ "integrity": "sha512-zS54Oen9bITtp7kp2XM3AydrCIq1D+HwJOuH+c+e4LfpL/lotP5osijd+UoMnxwAam1GN8R4KtLAyIrIcBNpiA==",
"license": "MIT",
"engines": {
"node": ">=8.3.0"
@@ -20920,6 +23294,16 @@
"xml-js": "bin/cli.js"
}
},
+ "node_modules/xtend": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=0.4"
+ }
+ },
"node_modules/yallist": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
diff --git a/package.json b/package.json
index 4da819d..547a60d 100644
--- a/package.json
+++ b/package.json
@@ -28,15 +28,18 @@
"@mdx-js/react": "^3.0.0",
"@orama/orama": "^3.1.18",
"clsx": "^2.0.0",
+ "plotly.js-dist-min": "^3.7.0",
"prism-react-renderer": "^2.3.0",
"react": "^19.0.0",
- "react-dom": "^19.0.0"
+ "react-dom": "^19.0.0",
+ "react-plotly.js": "^4.1.0"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "3.10.1",
"@docusaurus/tsconfig": "3.10.1",
"@docusaurus/types": "3.10.1",
"@types/react": "^19.0.0",
+ "@types/react-dom": "^19.2.4",
"tsx": "^4.23.5",
"typescript": "~6.0.2"
},
diff --git a/src/components/DatasetMetadataModal.module.css b/src/components/DatasetMetadataModal.module.css
index bed1eea..16dfeeb 100644
--- a/src/components/DatasetMetadataModal.module.css
+++ b/src/components/DatasetMetadataModal.module.css
@@ -19,6 +19,7 @@
box-shadow: var(--agml-shadow-strong);
color: var(--agml-text);
padding: 2rem;
+ perspective: 2400px;
}
.header {
@@ -68,6 +69,11 @@
color: var(--agml-badge-segmentation-fg);
}
+.badgeVlm {
+ background: var(--agml-badge-vlm-bg);
+ color: var(--agml-badge-vlm-fg);
+}
+
.badgeOther {
background: var(--agml-badge-other-bg);
color: var(--agml-badge-other-fg);
@@ -107,6 +113,76 @@
outline: none;
}
+.headerActions {
+ flex: 0 0 auto;
+ display: flex;
+ align-items: center;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+ gap: 0.6rem;
+}
+
+.benchmarkToggle {
+ flex: 0 0 auto;
+ display: inline-flex;
+ align-items: center;
+ gap: 0.35rem;
+ border: 1px solid var(--ifm-color-primary);
+ border-radius: 999px;
+ background: var(--agml-accent-soft);
+ color: var(--ifm-color-primary);
+ padding: 0.5rem 1rem;
+ font-size: 0.78rem;
+ font-weight: 600;
+ cursor: pointer;
+ white-space: nowrap;
+ font-family: inherit;
+}
+
+.benchmarkToggle:hover,
+.benchmarkToggle:focus-visible {
+ border-color: var(--ifm-color-primary-dark);
+ outline: none;
+}
+
+/* Card-flip mechanism: both faces stack in the same grid cell so the container's height
+ always matches the taller face, regardless of which one is currently shown. */
+.flipper {
+ position: relative;
+ display: grid;
+ transform-style: preserve-3d;
+ transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
+ transform: rotateY(0deg);
+}
+
+.flipperFlipped {
+ transform: rotateY(180deg);
+}
+
+.face {
+ grid-area: 1 / 1;
+ width: 100%;
+ min-width: 0;
+ box-sizing: border-box;
+ backface-visibility: hidden;
+ -webkit-backface-visibility: hidden;
+}
+
+.faceBack {
+ transform: rotateY(180deg);
+}
+
+.faceHidden {
+ visibility: hidden;
+ pointer-events: none;
+ /* Absolutely positioned grid items don't contribute to track sizing, so taking the hidden
+ face out of flow here means the flipper's height always matches whichever face is
+ actually showing — not the max of both, which left a dead gap under short front-face
+ content (e.g. an empty leaderboard) whenever the other face was taller. */
+ position: absolute;
+ inset: 0;
+}
+
.detailGrid {
display: grid;
gap: 0.85rem;
@@ -590,18 +666,821 @@
text-decoration: underline;
}
-@media (max-width: 720px) {
- .modal {
- padding: 1.25rem;
- border-radius: 10px;
- }
+.benchmarkRunNote {
+ margin: 0;
+ font-size: 0.78rem;
+ color: var(--agml-muted);
+}
- .header {
- flex-direction: column;
- }
+.benchmarkDivider {
+ border: none;
+ border-top: 1px solid var(--agml-border);
+ margin: 0.85rem 0 1.25rem;
+}
- .detailGrid {
- grid-template-columns: repeat(2, 1fr) !important;
+.reproDetails {
+ margin: 0.6rem 0 0;
+}
+
+.reproSummary {
+ cursor: pointer;
+ width: fit-content;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.66rem;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ color: var(--agml-muted);
+}
+
+.reproSummary:hover,
+.reproSummary:focus-visible {
+ color: var(--agml-text);
+ outline: none;
+}
+
+.reproGrid {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.4rem;
+ margin-top: 0.55rem;
+}
+
+.reproTag {
+ flex: 0 0 auto;
+ display: flex;
+ flex-direction: column;
+ gap: 1px;
+ font-family: var(--ifm-code-font-family);
+ padding: 0.3rem 0.55rem;
+ border-radius: 5px;
+ background: var(--agml-tag-bg);
+}
+
+.reproTagKey {
+ font-size: 0.58rem;
+ text-transform: uppercase;
+ letter-spacing: 0.03em;
+ color: var(--agml-muted);
+ white-space: nowrap;
+}
+
+.reproTagValue {
+ font-size: 0.72rem;
+ color: var(--agml-text);
+ font-weight: 600;
+ white-space: nowrap;
+}
+
+/* Overall + per-axis score gauge — the tier color comes from a --tier-color custom property
+ set per data-tier so the box border, value, and (reused below) proportion-bar segments and
+ confusion-cell heat all read off the same three-tier scale. */
+.scoreRow {
+ display: flex;
+ flex-wrap: nowrap;
+ gap: 0.6rem;
+ margin: 0.75rem 0 0;
+}
+
+.methodologyLink {
+ flex: 0 0 auto;
+ border: none;
+ background: none;
+ padding: 0;
+ cursor: pointer;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.72rem;
+ color: var(--agml-muted);
+ white-space: nowrap;
+}
+
+.methodologyLink:hover,
+.methodologyLink:focus-visible {
+ color: var(--ifm-color-primary);
+ outline: none;
+}
+
+.scoreBox {
+ flex: 1 1 0;
+ min-width: 0;
+ border: 1px solid var(--agml-border);
+ border-top: 3px solid var(--tier-color);
+ border-radius: 8px;
+ padding: 0.65rem 0.8rem;
+ background: var(--agml-surface-soft);
+}
+
+.scoreBox[data-tier='good'] {
+ --tier-color: var(--ifm-color-primary);
+}
+
+.scoreBox[data-tier='mid'] {
+ --tier-color: var(--agml-caution-text);
+}
+
+.scoreBox[data-tier='poor'] {
+ --tier-color: var(--agml-warning-text);
+}
+
+.scoreBoxLabel {
+ margin: 0 0 0.3rem;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.58rem;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.03em;
+ line-height: 1.3;
+ color: var(--agml-muted);
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.scoreBoxValue {
+ margin: 0;
+ font-size: 1.15rem;
+ font-weight: 700;
+ color: var(--tier-color);
+}
+
+.axisSection {
+ margin-bottom: 1.75rem;
+}
+
+.axisTitle {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.66rem;
+ font-weight: 700;
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+ color: var(--ifm-color-primary);
+ margin: 0 0 0.75rem;
+ padding-bottom: 0.5rem;
+ border-bottom: 1px solid var(--agml-border);
+}
+
+.proportionBar {
+ display: flex;
+ height: 14px;
+ border-radius: 999px;
+ overflow: hidden;
+ background: var(--agml-tag-bg);
+}
+
+.proportionSegment {
+ height: 100%;
+}
+
+.proportionSegment[data-tier='good'] {
+ background: var(--ifm-color-primary);
+}
+
+.proportionSegment[data-tier='mid'] {
+ background: var(--agml-caution-text);
+}
+
+.proportionSegment[data-tier='poor'] {
+ background: var(--agml-warning-text);
+}
+
+.proportionTileGrid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(105px, 1fr));
+ gap: 0.6rem;
+ margin-top: 0.6rem;
+}
+
+.proportionTile {
+ border: 1px solid var(--agml-border);
+ border-top: 3px solid var(--tier-color);
+ border-radius: 8px;
+ padding: 0.65rem 0.8rem;
+ background: var(--agml-surface-soft);
+}
+
+.proportionTile[data-tier='good'] {
+ --tier-color: var(--ifm-color-primary);
+}
+
+.proportionTile[data-tier='mid'] {
+ --tier-color: var(--agml-caution-text);
+}
+
+.proportionTile[data-tier='poor'] {
+ --tier-color: var(--agml-warning-text);
+}
+
+.proportionDot {
+ display: inline-block;
+ width: 7px;
+ height: 7px;
+ border-radius: 50%;
+ margin-right: 0.35rem;
+ background: var(--tier-color);
+}
+
+.proportionDot[data-tier='good'] {
+ --tier-color: var(--ifm-color-primary);
+}
+
+.proportionDot[data-tier='mid'] {
+ --tier-color: var(--agml-caution-text);
+}
+
+.proportionDot[data-tier='poor'] {
+ --tier-color: var(--agml-warning-text);
+}
+
+.confusionWrap {
+ overflow-x: auto;
+ padding-bottom: 4px;
+}
+
+.confusionGrid {
+ display: grid;
+ gap: 3px;
+ align-items: center;
+}
+
+.confusionCorner {
+ visibility: hidden;
+}
+
+.confusionColHeader {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.6rem;
+ color: var(--agml-muted);
+ text-align: center;
+ padding-bottom: 0.2rem;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.confusionRowHeader {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.6rem;
+ color: var(--agml-muted);
+ padding-right: 0.4rem;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.confusionCell {
+ aspect-ratio: 1;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-radius: 4px;
+ font-size: 0.62rem;
+ font-weight: 600;
+ color: var(--agml-text);
+}
+
+.metricOverflowNote {
+ margin: 0.5rem 0 0;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.68rem;
+ color: var(--agml-muted);
+}
+
+.confusionPairs {
+ margin-top: 0.2rem;
+ display: flex;
+ flex-direction: column;
+ gap: 0.35rem;
+}
+
+.confusionPairsHeader {
+ margin: 0 0 0.2rem;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.62rem;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+ color: var(--agml-muted);
+}
+
+.confusionPairsList,
+.confusionPairsListExpanded {
+ display: flex;
+ flex-direction: column;
+ gap: 0.35rem;
+}
+
+.confusionPairsListExpanded {
+ max-height: 168px;
+ overflow-y: auto;
+ padding-right: 4px;
+}
+
+.confusionPairRow {
+ display: flex;
+ justify-content: space-between;
+ gap: 0.6rem;
+ font-size: 0.78rem;
+ color: var(--agml-text);
+}
+
+.metricCardGrid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
+ /* Cards stretch to match the tallest card in their row (grid's default), so a row of
+ mixed content (e.g. a 4-stat card next to a bar-chart card) reads as one aligned row
+ instead of a ragged bottom edge. */
+ align-items: stretch;
+ gap: 1rem;
+ margin: 0 0 1.75rem;
+ /* 1-column stat cards backfill the gaps left by 2-column bar cards instead of leaving a
+ hole and pushing everything after it down to the next row. */
+ grid-auto-flow: dense;
+}
+
+.metricCard {
+ padding: 1rem 1.1rem;
+ border-radius: 10px;
+ border: 1px solid var(--agml-border);
+ background: var(--agml-surface-soft);
+ display: flex;
+ flex-direction: column;
+ gap: 0.75rem;
+}
+
+.metricCardSpan2 {
+ grid-column: span 2;
+}
+
+.metricCardHeader {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 0.6rem;
+}
+
+.metricCardTitle {
+ margin: 0;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.72rem;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+ color: var(--agml-muted);
+}
+
+.metricCardTitleRow {
+ display: flex;
+ align-items: center;
+ gap: 0.35rem;
+ min-width: 0;
+}
+
+.infoTooltip {
+ position: relative;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ width: 14px;
+ height: 14px;
+ flex-shrink: 0;
+ border-radius: 50%;
+ border: 1px solid var(--agml-border-strong);
+ color: var(--agml-muted);
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.58rem;
+ font-weight: 700;
+ /* Keep the "i" glyph lowercase even when the icon sits inside an uppercased label. */
+ text-transform: none;
+ letter-spacing: normal;
+ cursor: help;
+}
+
+.infoTooltip:hover,
+.infoTooltip:focus-visible {
+ border-color: var(--ifm-color-primary);
+ color: var(--ifm-color-primary);
+ outline: none;
+}
+
+.infoTooltipIcon {
+ pointer-events: none;
+}
+
+.infoTooltipBubble {
+ position: absolute;
+ bottom: calc(100% + 8px);
+ left: 0;
+ width: max-content;
+ max-width: 240px;
+ padding: 0.5rem 0.65rem;
+ border-radius: 6px;
+ border: 1px solid var(--agml-border-strong);
+ background: var(--agml-tag-bg);
+ color: var(--agml-text);
+ font-size: 0.72rem;
+ font-weight: 400;
+ line-height: 1.45;
+ text-transform: none;
+ letter-spacing: normal;
+ white-space: normal;
+ /* `display: none` rather than `visibility: hidden`: a visibility-hidden box is still laid
+ out, and an absolutely positioned one still contributes to the modal's scrollable overflow
+ region. With a 240px bubble anchored to every stat-tile icon, the tiles near the modal's
+ right edge pushed that region ~200px wide and gave the benchmark face a permanent
+ horizontal scrollbar while nothing was even visible. */
+ display: none;
+ opacity: 0;
+ pointer-events: none;
+ /* allow-discrete + @starting-style keep the fade across the display change on browsers that
+ support them; elsewhere the bubble simply appears instantly. */
+ transition: opacity 0.12s ease;
+ transition-behavior: allow-discrete;
+ box-shadow: var(--agml-shadow-strong);
+ z-index: 20;
+}
+
+.infoTooltip:hover .infoTooltipBubble,
+.infoTooltip:focus-visible .infoTooltipBubble {
+ display: block;
+ opacity: 1;
+}
+
+@starting-style {
+ .infoTooltip:hover .infoTooltipBubble,
+ .infoTooltip:focus-visible .infoTooltipBubble {
+ opacity: 0;
+ }
+}
+
+.metricCardBadge {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.68rem;
+ padding: 0.2rem 0.55rem;
+ border-radius: 4px;
+ display: inline-block;
+ white-space: nowrap;
+ background: var(--agml-tag-bg);
+ color: var(--agml-tag-fg);
+}
+
+.metricSkipped {
+ margin: 0;
+ font-size: 0.84rem;
+ font-style: italic;
+ color: var(--agml-muted);
+}
+
+.metricBars {
+ display: flex;
+ flex-direction: column;
+ gap: var(--metric-bar-gap);
+ /* Single source of truth for row height and gap — referenced by .metricBarRow's flex-basis
+ and by .metricBarsExpanded's cap height below, so the two can't drift out of sync. */
+ --metric-bar-row-height: 24px;
+ --metric-bar-gap: 0.3rem;
+}
+
+.metricBarRow {
+ display: grid;
+ grid-template-columns: 112px 1fr 56px;
+ align-items: center;
+ gap: 0.6rem;
+ flex: 0 0 var(--metric-bar-row-height);
+ height: var(--metric-bar-row-height);
+ box-sizing: border-box;
+ overflow: hidden;
+}
+
+/* Exactly 10 rows visible before scrolling — derived from the same row-height variable the
+ rows themselves use, so this can't drift from the actual rendered row height. */
+.metricBarsExpanded {
+ max-height: calc(10 * var(--metric-bar-row-height) + 9 * var(--metric-bar-gap));
+ overflow-y: auto;
+ padding-right: 4px;
+}
+
+.metricExpandLink {
+ align-self: flex-start;
+ border: none;
+ background: none;
+ padding: 0;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.72rem;
+ font-weight: 600;
+ color: var(--ifm-color-primary);
+ cursor: pointer;
+}
+
+.metricExpandLink:hover,
+.metricExpandLink:focus-visible {
+ text-decoration: underline;
+ outline: none;
+}
+
+.metricBarLabel {
+ font-size: 0.8rem;
+ color: var(--agml-text);
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.metricBarTrack {
+ height: 8px;
+ border-radius: 999px;
+ background: var(--agml-tag-bg);
+ overflow: hidden;
+}
+
+.metricBarFill {
+ height: 100%;
+ border-radius: 999px;
+ background: var(--ifm-color-primary);
+ transition: width 0.3s ease;
+}
+
+.metricBarValue {
+ font-size: 0.82rem;
+ font-weight: 600;
+ color: var(--agml-text);
+ text-align: right;
+ white-space: nowrap;
+}
+
+.metricSignedTrack {
+ position: relative;
+ height: 8px;
+ border-radius: 999px;
+ background: var(--agml-tag-bg);
+ overflow: hidden;
+}
+
+.metricSignedMidline {
+ position: absolute;
+ left: 50%;
+ top: 0;
+ bottom: 0;
+ width: 1px;
+ background: var(--agml-border-strong);
+}
+
+.metricSignedFill {
+ position: absolute;
+ top: 0;
+ height: 100%;
+ border-radius: 999px;
+ transition: width 0.3s ease;
+}
+
+.metricSignedPositive {
+ background: var(--ifm-color-primary);
+}
+
+.metricSignedNegative {
+ background: var(--agml-warning-text);
+}
+
+.statTileGrid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(105px, 1fr));
+ gap: 0.6rem;
+}
+
+.statTile {
+ min-width: 0;
+}
+
+.statTileLabel {
+ /* Deliberately not flex: a flex row lays the icon out beside the *whole* (possibly
+ two-line) text box, wherever that box's edge lands — which is what put the icon in the
+ dead space toward the next column. Plain inline flow instead treats the icon as another
+ inline element and wraps it right after the label's own last word, like normal text. */
+ margin: 0 0 0.3rem;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.62rem;
+ font-weight: 600;
+ line-height: 1.3;
+ letter-spacing: 0.06em;
+ text-transform: uppercase;
+ color: var(--agml-muted);
+ /* Reserves space for two lines even when a label only needs one, so neighboring stat tiles
+ in the same grid row keep their values aligned instead of the value's baseline shifting
+ down only under whichever label happens to wrap. */
+ min-height: 2.6em;
+}
+
+.statTileLabel .infoTooltip {
+ margin-left: 0.3rem;
+ vertical-align: middle;
+}
+
+.statTileValue {
+ margin: 0;
+ font-size: 0.9rem;
+ font-weight: 600;
+ color: var(--agml-text);
+ overflow-wrap: anywhere;
+}
+
+/* Interpretation line under a stat's value — smaller and muted so it reads as an explanation
+ of the number above it, not another value. */
+.statTileHint {
+ margin: 0.2rem 0 0;
+ font-size: 0.7rem;
+ font-weight: 400;
+ line-height: 1.35;
+ color: var(--agml-muted);
+ overflow-wrap: anywhere;
+}
+
+.metricFooterStats {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(105px, 1fr));
+ gap: 0.6rem;
+ padding-top: 0.6rem;
+ border-top: 1px solid var(--agml-border);
+}
+
+.metricStatSections {
+ display: flex;
+ flex-direction: column;
+ gap: 0.85rem;
+}
+
+.metricStatSection {
+ display: flex;
+ flex-direction: column;
+ gap: 0.6rem;
+}
+
+.metricStatSection + .metricStatSection {
+ padding-top: 0.85rem;
+ border-top: 1px solid var(--agml-border);
+}
+
+.metricStatSectionTitle {
+ margin: 0;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.66rem;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+ color: var(--agml-text);
+}
+
+.embedHeader {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 1rem;
+ flex-wrap: wrap;
+ margin-bottom: 0;
+}
+
+.embedToggle {
+ display: inline-flex;
+ border-radius: 999px;
+ background: var(--agml-tag-bg);
+ padding: 4px;
+ gap: 4px;
+}
+
+.embedToggleButton {
+ border: none;
+ border-radius: 999px;
+ padding: 0.4rem 0.9rem;
+ font-size: 0.82rem;
+ font-weight: 600;
+ cursor: pointer;
+ font-family: inherit;
+ background: transparent;
+ color: var(--agml-muted);
+ transition: background 0.15s, color 0.15s;
+}
+
+.embedToggleActive {
+ background: var(--ifm-color-primary);
+ color: var(--agml-page-bg);
+}
+
+.embedViewport {
+ position: relative;
+ margin-top: 0.9rem;
+ height: 440px;
+ border-radius: 10px;
+ border: 1px solid var(--agml-border);
+ background-color: var(--agml-surface-soft);
+ overflow: hidden;
+}
+
+.embedPlotFallback {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 100%;
+ color: var(--agml-muted);
+ font-size: 0.78rem;
+}
+
+.embedResetButton {
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ z-index: 5;
+ border: 1px solid var(--agml-border-strong);
+ border-radius: 999px;
+ background: var(--agml-tag-bg);
+ color: var(--agml-muted);
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.68rem;
+ padding: 0.3rem 0.65rem;
+ cursor: pointer;
+}
+
+.embedResetButton:hover,
+.embedResetButton:focus-visible {
+ border-color: var(--ifm-color-primary);
+ color: var(--ifm-color-primary);
+ outline: none;
+}
+
+.embedLegend {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1rem;
+ margin-top: 0.9rem;
+}
+
+.embedLegendItem {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.4rem;
+ font-size: 0.8rem;
+ color: var(--agml-text);
+}
+
+.embedLegendDot {
+ display: inline-block;
+ width: 9px;
+ height: 9px;
+ border-radius: 50%;
+ flex-shrink: 0;
+}
+
+.embedLegendOverflow {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.74rem;
+ color: var(--agml-muted);
+}
+
+.embedNote {
+ margin: 0.7rem 0 0;
+ font-size: 0.72rem;
+ font-style: italic;
+ color: var(--agml-muted);
+}
+
+@media (max-width: 720px) {
+ .modal {
+ padding: 1.25rem;
+ border-radius: 10px;
+ }
+
+ .header {
+ flex-direction: column;
+ }
+
+ .detailGrid {
+ grid-template-columns: repeat(2, 1fr) !important;
+ }
+
+ .metricCardGrid {
+ grid-template-columns: 1fr;
+ }
+
+ .metricCardSpan2 {
+ grid-column: span 1;
+ }
+
+ .metricBarRow {
+ grid-template-columns: 88px 1fr 48px;
+ }
+
+ .embedViewport {
+ height: 260px;
+ }
+
+ /* Five boxes side by side is too cramped under ~720px — wrap into rows of two instead of
+ forcing a horizontal scroll on what's meant to be a quick-glance score summary. */
+ .scoreRow {
+ flex-wrap: wrap;
+ }
+
+ .scoreBox {
+ flex: 1 1 calc(50% - 0.3rem);
+ }
+
+ .reproGrid {
+ gap: 0.35rem;
}
.locationColumns {
diff --git a/src/components/DatasetMetadataModal.tsx b/src/components/DatasetMetadataModal.tsx
index a9be387..942d400 100644
--- a/src/components/DatasetMetadataModal.tsx
+++ b/src/components/DatasetMetadataModal.tsx
@@ -1,8 +1,21 @@
-import { Fragment, useEffect, useMemo, useState } from 'react';
+import { Fragment, useEffect, useMemo, useRef, useState } from 'react';
+import { useColorMode } from '@docusaurus/theme-common';
import type { Dataset } from '../lib/datasets';
-import { formatCoordinateList, formatDisplayLocation, formatLocationList } from '../lib/datasets';
+import { formatCoordinateList, formatDisplayLocation, formatLocationList, toTitleCase } from '../lib/datasets';
+import { toDisplayLabel } from '../lib/labelOverrides';
+import {
+ useBenchmark,
+ type BenchmarkData,
+ type EmbedPoint as RawEmbedPoint,
+ type ReproducibilityInfo,
+} from '../lib/benchmarks';
+import { computeScores, type AxisScores } from '../lib/scoring';
import { METRIC_CATEGORY_LABELS, useDatasetPerformance } from '../lib/performance';
import type { MetricCategory, PerformanceEntry } from '../lib/performance';
+import { oklchToRgb } from '../lib/plotlyChrome';
+import { EmbeddingPlot2D } from './EmbeddingPlot2D';
+import { EmbeddingPlot3D } from './EmbeddingPlot3D';
+import { ScoringMethodologyModal } from './ScoringMethodologyModal';
import styles from './DatasetMetadataModal.module.css';
function formatImageCount(count: number | null) {
@@ -17,8 +30,8 @@ function formatImageCount(count: number | null) {
function formatValue(value: string | string[] | null | undefined) {
if (value == null) return 'Unknown';
- if (Array.isArray(value)) return value.length ? value.join(', ') : 'Unknown';
- return value;
+ if (Array.isArray(value)) return value.length ? value.map(toTitleCase).join(', ') : 'Unknown';
+ return toTitleCase(value);
}
function formatArray(value: number[] | null) {
@@ -58,6 +71,7 @@ function formatResultType(entry: { variant: 'zero-shot' | 'fine-tuned' | null; o
function taskBadgeClass(task: string | null): string {
if (!task) return styles.badgeOther;
+ if (task.includes('image-text') || task.includes('text-to-text')) return styles.badgeVlm;
if (task.includes('classif')) return styles.badgeClassification;
if (task.includes('detect')) return styles.badgeDetection;
if (task.includes('segment')) return styles.badgeSegmentation;
@@ -92,6 +106,12 @@ function formatMetricScore(entry: { metrics: { key: string; label: string; value
function formatLoaderInstructions(dataset: Dataset) {
if (dataset.source === 'huggingface') {
+ if(dataset.dataset_type === 'vlm') {
+ return {
+ title: 'Load from Hugging Face',
+ code: `from datasets import load_dataset\nloader = load_dataset("Project-AgML/${dataset.name}")`,
+ };
+ }
return {
title: 'Load from Hugging Face',
code: `from agml.data.hf_loader import HuggingFaceDataLoader\nloader = HuggingFaceDataLoader("Project-AgML/${dataset.name}")`,
@@ -104,6 +124,906 @@ function formatLoaderInstructions(dataset: Dataset) {
};
}
+function StatTile({ label, value, hint, info }: { label: string; value: string; hint?: string; info?: string }) {
+ return (
+
+
+ {label}
+ {info && }
+
+
{value}
+ {hint &&
{hint}
}
+
+ );
+}
+
+type MetricBar = { label: string; value: string; pct: number; positive?: boolean };
+type MetricStat = { label: string; value: string; hint?: string; info?: string };
+type MetricStatSection = { title: string; description: string; badge?: string; stats: MetricStat[] };
+// 'good' / 'mid' / 'poor' key into the same three-tier color scale used by the score boxes
+// (--ifm-color-primary / --agml-caution-text / --agml-warning-text) so a cartography split and
+// an axis score read as the same kind of judgment.
+type ScoreTier = 'good' | 'mid' | 'poor';
+type MetricSegment = { label: string; value: string; pct: number; tier: ScoreTier };
+type ConfusionCell = { value: string; title: string; intensity: number; diagonal: boolean };
+type ConfusionRow = { name: string; cells: ConfusionCell[] };
+type MetricPair = { label: string; value: string };
+type MetricCardVM =
+ | { kind: 'bars'; title: string; description: string; badge?: string; bars: MetricBar[]; footerStats?: MetricStat[] }
+ | { kind: 'signed'; title: string; description: string; badge?: string; bars: MetricBar[]; footerStats?: MetricStat[] }
+ | { kind: 'stats'; title: string; description: string; badge?: string; wide?: boolean; stats: MetricStat[] }
+ | { kind: 'stat-sections'; title: string; sections: MetricStatSection[] }
+ | { kind: 'skipped'; title: string; message: string }
+ | { kind: 'proportion'; title: string; description: string; badge?: string; segments: MetricSegment[]; footerStats?: MetricStat[] }
+ | {
+ kind: 'confusion';
+ title: string;
+ description: string;
+ badge?: string;
+ classNames: string[];
+ rows: ConfusionRow[];
+ overflowNote?: string;
+ pairs: MetricPair[];
+ footerStats?: MetricStat[];
+ };
+
+function buildMetricCards(benchmark: BenchmarkData): MetricCardVM[] {
+ const m = benchmark.metrics;
+ const cards: MetricCardVM[] = [];
+
+ if (m.class_imbalance) {
+ const d = m.class_imbalance;
+ const max = Math.max(...Object.values(d.counts));
+ cards.push({
+ kind: 'bars',
+ title: 'Class Imbalance',
+ description:
+ 'How evenly the classes are represented. Imbalance ratio is the most-frequent class’s count divided by the least-frequent’s (1.0 = perfectly balanced, higher = more skewed). Normalized entropy ranges 0–1, where 1 means every class has an equal share.',
+ badge: `${d.total_train_examples} train examples`,
+ bars: Object.entries(d.counts)
+ .map(([label, value]) => ({ label: toTitleCase(label), value: value.toLocaleString(), pct: (value / max) * 100 }))
+ .sort((a, b) => b.pct - a.pct),
+ footerStats: [
+ {
+ label: 'Imbalance ratio',
+ value: d.imbalance_ratio.toFixed(2),
+ info: 'Most-frequent class count ÷ least-frequent. 1.0 = perfectly balanced; higher = more skewed.',
+ },
+ {
+ label: 'Norm. entropy',
+ value: d.normalized_entropy.toFixed(2),
+ info: 'Normalized entropy, 0–1. 1 = every class has an equal share; lower = more concentrated.',
+ },
+ { label: 'Most frequent', value: toTitleCase(d.most_frequent_class), info: 'Class with the most training examples.' },
+ { label: 'Least frequent', value: toTitleCase(d.least_frequent_class), info: 'Class with the fewest training examples.' },
+ ],
+ });
+ }
+
+ if (m.exact_duplicate || m.near_duplicate) {
+ const sections: MetricStatSection[] = [];
+
+ if (m.exact_duplicate) {
+ const d = m.exact_duplicate;
+ sections.push({
+ title: 'Exact',
+ description:
+ 'Images that are byte-for-byte identical to another image in the dataset. A high duplicate rate inflates the apparent dataset size and can leak the same example across train/test splits, making evaluation look better than it is.',
+ badge: `${d.total_images} images`,
+ stats: [
+ { label: 'Duplicate count', value: String(d.exact_duplicate_count), info: 'Images that are byte-for-byte identical to another image in the dataset.' },
+ {
+ label: 'Duplicate rate',
+ value: `${(d.exact_duplicate_rate * 100).toFixed(1)}%`,
+ info: 'Share of images that are exact duplicates. A higher rate inflates the apparent dataset size.',
+ },
+ { label: 'Groups', value: String(d.duplicate_groups), info: 'Number of distinct sets of identical images.' },
+ {
+ label: 'Cross-split',
+ value: String(d.cross_split_duplicates),
+ info: 'Duplicates that appear across train/test splits — a direct source of evaluation leakage.',
+ },
+ ],
+ });
+ }
+
+ if (m.near_duplicate) {
+ const d = m.near_duplicate;
+ sections.push({
+ title: 'Near',
+ description:
+ 'Images that are nearly identical (crops, recompressions, small edits) based on embedding similarity above a threshold — not exact byte matches. High near-duplicate rates risk train/test leakage even when the exact-duplicate count is zero.',
+ badge: d.embed_model,
+ stats: [
+ {
+ label: 'Near-dup count',
+ value: String(d.near_duplicate_count),
+ info: 'Images that are nearly identical (crops, recompressions, small edits) by embedding similarity — not exact byte matches.',
+ },
+ { label: 'Near-dup rate', value: `${(d.near_duplicate_rate * 100).toFixed(1)}%`, info: 'Share of images that are near-duplicates.' },
+ { label: 'Groups', value: String(d.near_duplicate_groups), info: 'Number of distinct near-duplicate clusters.' },
+ {
+ label: 'Cross-split',
+ value: String(d.cross_split_near_duplicates),
+ info: 'Near-duplicates spanning train/test splits — risks leakage even when the exact-duplicate count is zero.',
+ },
+ { label: 'Threshold', value: String(d.threshold), info: 'Cosine-similarity cutoff above which two images count as near-duplicates.' },
+ { label: 'Index type', value: d.faiss_index_type, info: 'FAISS index type used for the similarity search.' },
+ ],
+ });
+ }
+
+ cards.push({ kind: 'stat-sections', title: 'Duplicate Detection', sections });
+ }
+
+ if (m.resolution_consistency) {
+ const d = m.resolution_consistency;
+ cards.push({
+ kind: 'stats',
+ title: 'Resolution Consistency',
+ wide: true,
+ description:
+ 'How uniform image dimensions and aspect ratios are across the dataset. Area CV (coefficient of variation) near 0 means sizes barely vary; higher values mean preprocessing has to handle a wide range of source resolutions.',
+ badge: `${d.total_images} images`,
+ stats: [
+ { label: 'Width (mean)', value: `${d.width.mean}px`, info: 'Average image width in pixels.' },
+ { label: 'Height (μ±σ)', value: `${d.height.mean.toFixed(0)}±${d.height.std.toFixed(1)}`, info: 'Average image height ± standard deviation, in pixels.' },
+ {
+ label: 'Aspect ratio',
+ value: `${d.aspect_ratio.mean.toFixed(2)} (${d.aspect_ratio.min.toFixed(2)}–${d.aspect_ratio.max.toFixed(2)})`,
+ info: 'Mean aspect ratio, with the min–max range across the dataset in parentheses.',
+ },
+ {
+ label: 'Area CV',
+ value: d.area_cv.toFixed(3),
+ info: 'Coefficient of variation of image area. Near 0 = uniform sizes; higher = a wide range of source resolutions.',
+ },
+ { label: 'Color mode', value: Object.keys(d.mode_distribution).join(', '), info: 'Image color modes present in the dataset (e.g. RGB, L).' },
+ ],
+ });
+ }
+
+ if (m.feature_separability) {
+ const d = m.feature_separability;
+ cards.push({
+ kind: 'signed',
+ title: 'Feature Separability',
+ description:
+ 'How distinctly the classes cluster in embedding space. Silhouette score ranges −1 to 1 (higher = better-separated clusters, near 0 = overlapping, negative = points closer to another class than their own — often mislabeled or genuinely ambiguous). Davies-Bouldin index is ≥0 and unbounded, where lower means better separation.',
+ badge: d.embed_model,
+ bars: Object.entries(d.per_class_silhouette)
+ .map(([label, value]) => ({
+ label: toTitleCase(label),
+ value: value.toFixed(2),
+ pct: Math.abs(value) * 50,
+ positive: value >= 0,
+ }))
+ .sort((a, b) => b.pct - a.pct),
+ footerStats: [
+ {
+ label: 'Silhouette',
+ value: d.silhouette_score.toFixed(2),
+ hint: d.silhouette_interpretation,
+ info: 'Ranges −1 to 1. Higher = better-separated clusters; near 0 = overlapping; negative = points closer to another class than their own.',
+ },
+ {
+ label: 'Davies-Bouldin',
+ value: d.davies_bouldin_index.toFixed(2),
+ hint: d.davies_bouldin_interpretation,
+ info: 'Index ≥ 0 and unbounded. Lower means better separation between classes.',
+ },
+ ],
+ });
+ }
+
+ if (m.intra_class_diversity) {
+ const d = m.intra_class_diversity;
+ const max = Math.max(...Object.values(d.per_class_diversity));
+ cards.push({
+ kind: 'bars',
+ title: 'Intra-class Diversity',
+ description:
+ 'How visually varied the images within each class are, based on average embedding distance between same-class examples. Higher values mean more diverse, less redundant examples per class; a very low value can mean that class is dominated by near-duplicates.',
+ badge: d.embed_model,
+ bars: Object.entries(d.per_class_diversity)
+ .map(([label, value]) => ({ label: toTitleCase(label), value: value.toFixed(2), pct: (value / max) * 100 }))
+ .sort((a, b) => b.pct - a.pct),
+ footerStats: [
+ {
+ label: 'Mean diversity',
+ value: d.mean_diversity.toFixed(2),
+ info: 'Average embedding distance between same-class images, averaged over classes. Higher = more varied, less redundant.',
+ },
+ { label: 'Min class', value: toTitleCase(d.min_diversity_class), info: 'Class with the least visual variety — possibly dominated by near-duplicates.' },
+ { label: 'Max class', value: toTitleCase(d.max_diversity_class), info: 'Class with the most visual variety.' },
+ ],
+ });
+ }
+
+ if (m.metadata_coverage?.skipped) {
+ cards.push({ kind: 'skipped', title: 'Metadata Coverage', message: m.metadata_coverage.reason || 'Skipped for this run.' });
+ }
+
+ const backbone = benchmark.reproducibility?.backbone;
+
+ if (m.dataset_cartography) {
+ const d = m.dataset_cartography;
+ cards.push({
+ kind: 'proportion',
+ title: 'Dataset Cartography',
+ description:
+ 'Prediction confidence and variability across training epochs from a reference model, sorting examples into easy, ambiguous, or hard-to-learn based on how consistently the model got them right.',
+ badge: backbone ? `${backbone} · ${d.n_epochs} epochs` : `${d.n_epochs} epochs`,
+ segments: [
+ { label: 'Easy', pct: d.pct_easy, value: `${d.n_easy.toLocaleString()} (${d.pct_easy.toFixed(1)}%)`, tier: 'good' },
+ { label: 'Ambiguous', pct: d.pct_ambiguous, value: `${d.n_ambiguous.toLocaleString()} (${d.pct_ambiguous.toFixed(1)}%)`, tier: 'mid' },
+ { label: 'Hard', pct: d.pct_hard, value: `${d.n_hard.toLocaleString()} (${d.pct_hard.toFixed(1)}%)`, tier: 'poor' },
+ ],
+ footerStats: [
+ {
+ label: 'Mean confidence',
+ value: d.mean_confidence.toFixed(2),
+ info: 'Average model confidence on its predicted class across training epochs.',
+ },
+ {
+ label: 'Mean variability',
+ value: d.mean_variability.toFixed(2),
+ info: 'Average variance of that confidence across epochs — high variability means the model flip-flops on that example.',
+ },
+ ],
+ });
+ }
+
+ if (m.class_confusability) {
+ const d = m.class_confusability;
+ const allNames = Object.keys(d.per_class_accuracy);
+ let keepIdx = allNames.map((_, i) => i);
+ if (allNames.length > CONFUSION_CAP) {
+ keepIdx = allNames
+ .map((name, i): [number, number] => [i, d.per_class_accuracy[name]])
+ .sort((a, b) => a[1] - b[1])
+ .slice(0, CONFUSION_CAP)
+ .map(([i]) => i)
+ .sort((a, b) => a - b);
+ }
+ const classNames = keepIdx.map((i) => toTitleCase(allNames[i]));
+ const rows: ConfusionRow[] = keepIdx.map((ri, rowPos) => ({
+ name: classNames[rowPos],
+ cells: keepIdx.map((ci) => {
+ const value = d.confusion_matrix[ri][ci];
+ return {
+ value: (value * 100).toFixed(0),
+ title: `${toTitleCase(allNames[ri])} → ${toTitleCase(allNames[ci])}: ${(value * 100).toFixed(1)}%`,
+ intensity: Math.max(0.06, value),
+ diagonal: ri === ci,
+ };
+ }),
+ }));
+ const overflowNote =
+ allNames.length > CONFUSION_CAP
+ ? `Showing ${CONFUSION_CAP} of ${allNames.length} classes (lowest accuracy) — hover cells for exact values`
+ : undefined;
+ cards.push({
+ kind: 'confusion',
+ title: 'Class Confusability',
+ description: 'Confusion matrix from a reference model on held-out data, highlighting class pairs that are visually hard to tell apart.',
+ badge: backbone ? `${backbone} · ${(d.accuracy * 100).toFixed(1)}% acc.` : `${(d.accuracy * 100).toFixed(1)}% acc.`,
+ classNames,
+ rows,
+ overflowNote,
+ pairs: d.top_confused_pairs.map((p) => ({
+ label: `${toTitleCase(p.true_class)} → ${toTitleCase(p.predicted_as)}`,
+ value: `${(p.confusion_rate * 100).toFixed(1)}%`,
+ })),
+ footerStats: [
+ { label: 'Overall accuracy', value: `${(d.accuracy * 100).toFixed(1)}%`, info: 'Accuracy of the reference model on held-out test data.' },
+ { label: 'Test samples', value: String(d.n_test_samples), info: 'Number of held-out samples used to compute this confusion matrix.' },
+ ],
+ });
+ }
+
+ if (m.label_noise) {
+ const d = m.label_noise;
+ const max = Math.max(...Object.values(d.per_class_noise_counts));
+ cards.push({
+ kind: 'bars',
+ title: 'Label Noise',
+ description:
+ 'Out-of-fold predictions from k-fold cross-validation, flagged via confident-learning (cleanlab-style) methods to estimate the mislabeled rate per class.',
+ badge: backbone
+ ? `${backbone} · ${(d.estimated_noise_rate * 100).toFixed(1)}% est. rate`
+ : `${(d.estimated_noise_rate * 100).toFixed(1)}% est. rate`,
+ bars: Object.entries(d.per_class_noise_counts)
+ .map(([label, value]) => ({ label: toTitleCase(label), value: String(value), pct: max ? (value / max) * 100 : 0 }))
+ .sort((a, b) => b.pct - a.pct),
+ footerStats: [
+ { label: 'Noisy samples', value: `${d.n_noisy_samples} / ${d.n_total_samples}`, info: 'Samples flagged as likely mislabeled, out of the total evaluated.' },
+ { label: 'CV folds', value: String(d.cv_folds), info: 'Number of cross-validation folds used to generate out-of-fold predictions.' },
+ ],
+ });
+ }
+
+ return cards;
+}
+
+// A plain ascending-bars glyph in currentColor — matches the rest of the header's monochrome
+// icon language (×, ←) instead of a colorful emoji that clashes with it.
+function BenchmarkIcon() {
+ return (
+
+
+
+
+
+ );
+}
+
+function BackIcon() {
+ return (
+
+
+
+ );
+}
+
+// Breathing room between a clamped tooltip and the modal's content edge.
+const TOOLTIP_EDGE_GAP = 4;
+
+function InfoTooltip({ text }: { text: string }) {
+ const bubbleRef = useRef(null);
+
+ // The bubble is absolutely positioned against its own 14px icon, so `position: absolute`
+ // alone can't also keep it inside the modal — one containing block resolves both axes, and
+ // re-anchoring it to something wider would detach it vertically from the icon. Measure it
+ // once it's laid out and translate it back inside instead.
+ const clamp = () => {
+ const bubble = bubbleRef.current;
+ if (!bubble) return;
+ // Reset first: measuring an already-shifted bubble would compound the offset on
+ // every subsequent hover.
+ bubble.style.transform = '';
+ const boundary = bubble.closest(`.${styles.modal}`);
+ if (!boundary) return;
+ // The modal's *border-box* right edge sits outside both its vertical scrollbar and its
+ // 2rem padding, so clamping to it still let the bubble overflow. Walk in to the content
+ // edge instead: clientLeft skips the border, clientWidth stops before the scrollbar, and
+ // paddingRight takes off the rest.
+ const bounds = boundary.getBoundingClientRect();
+ const paddingRight = parseFloat(getComputedStyle(boundary).paddingRight) || 0;
+ const contentRight = bounds.left + boundary.clientLeft + boundary.clientWidth - paddingRight;
+ const overflow = bubble.getBoundingClientRect().right - (contentRight - TOOLTIP_EDGE_GAP);
+ if (overflow > 0) bubble.style.transform = `translateX(${-overflow}px)`;
+ };
+
+ // Deferred a frame so the :hover rule has flipped the bubble to `display: block` — a
+ // display:none element measures as a zero-size rect. The fade starts from opacity 0, so
+ // the one-frame delay isn't visible.
+ const scheduleClamp = () => {
+ requestAnimationFrame(clamp);
+ };
+
+ return (
+
+
+ i
+
+
+ {text}
+
+
+ );
+}
+
+// Above this many bars, a card shows only the top BAR_CAP (already sorted descending in
+// buildMetricCards) with a "Show all N →" link instead of every class at once.
+const BAR_CAP = 8;
+
+// Above this many classes, the confusion matrix shows only the CONFUSION_CAP lowest-accuracy
+// classes (the ones most worth looking at) instead of a matrix too wide to read.
+const CONFUSION_CAP = 12;
+
+// Above this many confused pairs, only the top 3 show before a "Show all N →" link.
+const PAIR_CAP = 3;
+
+// Bar-chart, signed-diverging, and confusion-matrix cards read better wider (long class lists,
+// wide grids), so they span 2 grid columns while stat-only cards stay at 1 — paired with
+// grid-auto-flow: dense on .metricCardGrid so 1-column cards backfill the gaps.
+function isWideCard(card: MetricCardVM): boolean {
+ return card.kind === 'bars' || card.kind === 'signed' || card.kind === 'confusion' || (card.kind === 'stats' && !!card.wide);
+}
+
+const METRIC_AXES = ['Structural Quality', 'Content Difficulty', 'Diversity & Coverage', 'Annotation Reliability'] as const;
+const METRIC_AXIS_MAP: Record = {
+ 'Class Imbalance': 'Structural Quality',
+ 'Duplicate Detection': 'Structural Quality',
+ 'Resolution Consistency': 'Structural Quality',
+ 'Dataset Cartography': 'Content Difficulty',
+ 'Class Confusability': 'Content Difficulty',
+ 'Feature Separability': 'Content Difficulty',
+ 'Intra-class Diversity': 'Diversity & Coverage',
+ 'Metadata Coverage': 'Diversity & Coverage',
+ 'Label Noise': 'Annotation Reliability',
+};
+
+function MetricCard({ card }: { card: MetricCardVM }) {
+ const [expanded, setExpanded] = useState(false);
+ const [pairsExpanded, setPairsExpanded] = useState(false);
+ const badge = card.kind !== 'skipped' && card.kind !== 'stat-sections' ? card.badge : undefined;
+ const allBars = card.kind === 'bars' || card.kind === 'signed' ? card.bars : undefined;
+ const hasMoreBars = Boolean(allBars && allBars.length > BAR_CAP);
+ const visibleBars = allBars ? (expanded || !hasMoreBars ? allBars : allBars.slice(0, BAR_CAP)) : undefined;
+ const hasMorePairs = card.kind === 'confusion' && card.pairs.length > PAIR_CAP;
+ const visiblePairs = card.kind === 'confusion' ? (pairsExpanded || !hasMorePairs ? card.pairs : card.pairs.slice(0, PAIR_CAP)) : undefined;
+
+ return (
+
+
+
+
{card.title}
+ {card.kind !== 'skipped' && card.kind !== 'stat-sections' && }
+
+ {badge &&
{badge} }
+
+
+ {card.kind === 'skipped' &&
Skipped — {card.message}
}
+
+ {card.kind === 'stat-sections' && (
+
+ {card.sections.map((section) => (
+
+
+
+
{section.title}
+
+
+ {section.badge &&
{section.badge} }
+
+
+ {section.stats.map((stat) => (
+
+ ))}
+
+
+ ))}
+
+ )}
+
+ {visibleBars && (
+
+ {visibleBars.map((bar) => (
+
+
{bar.label}
+ {card.kind === 'signed' ? (
+
+ ) : (
+
+ )}
+
{bar.value}
+
+ ))}
+
+ )}
+
+ {hasMoreBars && allBars && (
+
setExpanded((value) => !value)}>
+ {expanded ? '← Show fewer' : `Show all ${allBars.length} →`}
+
+ )}
+
+ {card.kind === 'stats' && (
+
+ {card.stats.map((stat) => (
+
+ ))}
+
+ )}
+
+ {card.kind === 'proportion' && (
+ <>
+
+ {card.segments.map((seg) => (
+
+ ))}
+
+
+ {card.segments.map((seg) => (
+
+
+
+ {seg.label}
+
+
{seg.value}
+
+ ))}
+
+ >
+ )}
+
+ {card.kind === 'confusion' && (
+ <>
+
+
+
+ {card.classNames.map((name) => (
+
+ {name}
+
+ ))}
+ {card.rows.map((row) => (
+
+
+ {row.name}
+
+ {row.cells.map((cell, cellIndex) => (
+
+ {cell.value}
+
+ ))}
+
+ ))}
+
+
+ {card.overflowNote &&
{card.overflowNote}
}
+ {card.pairs.length > 0 ? (
+
+
Top confused pairs
+
+ {visiblePairs?.map((pair) => (
+
+ {pair.label}
+ {pair.value}
+
+ ))}
+
+ {hasMorePairs && (
+
setPairsExpanded((value) => !value)}>
+ {pairsExpanded ? '← Show fewer' : `Show all ${card.pairs.length} →`}
+
+ )}
+
+ ) : (
+
No confused pairs — every class was classified perfectly.
+ )}
+ >
+ )}
+
+ {'footerStats' in card && card.footerStats && card.footerStats.length > 0 && (
+
+ {card.footerStats.map((stat) => (
+
+ ))}
+
+ )}
+
+ );
+}
+
+// A fixed palette repeats (or blurs together) past a handful of classes, so class colors are
+// generated procedurally instead: step the hue by 47° per class (coprime-ish with 360, so
+// hues don't cluster or repeat for a long time) at a lightness/chroma tuned per theme.
+function classColor(index: number, isDark: boolean): string {
+ const hue = (index * 47) % 360;
+ const lightness = isDark ? 0.72 : 0.5;
+ const chroma = isDark ? 0.13 : 0.12;
+ return oklchToRgb(lightness, chroma, hue);
+}
+
+const EMBED_CLUSTER_CENTERS: [number, number, number][] = [
+ [-0.6, 0.5, 0.3],
+ [0.55, 0.55, -0.4],
+ [-0.5, -0.55, -0.2],
+ [0.6, -0.5, 0.45],
+];
+
+function mulberry32(seed: number) {
+ return function random() {
+ seed |= 0;
+ seed = (seed + 0x6d2b79f5) | 0;
+ let t = Math.imul(seed ^ (seed >>> 15), 1 | seed);
+ t = (t + Math.imul(t ^ (t >>> 7), 61 | t)) ^ t;
+ return ((t ^ (t >>> 14)) >>> 0) / 4294967296;
+ };
+}
+
+export interface EmbedPoint {
+ id: string;
+ cls: string;
+ split: string;
+ index: number;
+ x: number;
+ y: number;
+ z: number;
+}
+
+function embedPointsFromReal(embeddings: RawEmbedPoint[]): EmbedPoint[] {
+ return embeddings.map((p, i) => ({
+ id: `${p.label}-${p.index ?? i}`,
+ cls: p.label,
+ split: p.split ?? 'train',
+ index: p.index ?? i,
+ x: p.x,
+ y: p.y,
+ z: p.z ?? 0,
+ }));
+}
+
+function buildEmbeddingPoints(benchmark: BenchmarkData): EmbedPoint[] {
+ const counts = benchmark.metrics.class_imbalance?.counts ?? {};
+ const sep = benchmark.metrics.feature_separability?.per_class_silhouette ?? {};
+ const classes = Object.keys(counts);
+ const rand = mulberry32(42);
+ const splits = ['train', 'val', 'test'];
+ const points: EmbedPoint[] = [];
+ let globalIndex = 0;
+ classes.forEach((cls, i) => {
+ const center = EMBED_CLUSTER_CENTERS[i % EMBED_CLUSTER_CENTERS.length];
+ const sil = sep[cls] ?? 0.3;
+ const spread = 0.22 + Math.max(0, 0.65 - sil) * 0.55;
+ const n = Math.max(6, Math.round((counts[cls] || 30) / 8));
+ for (let k = 0; k < n; k += 1) {
+ const jitter = () => (((rand() + rand() + rand()) - 1.5) / 1.5) * spread;
+ points.push({
+ id: `${cls}-${k}`,
+ cls,
+ split: splits[globalIndex % splits.length],
+ index: globalIndex,
+ x: center[0] + jitter(),
+ y: center[1] + jitter(),
+ z: center[2] + jitter(),
+ });
+ globalIndex += 1;
+ }
+ });
+ return points;
+}
+
+function buildClassColorMap(points: EmbedPoint[], isDark: boolean): Record {
+ const labels = Array.from(new Set(points.map((p) => p.cls))).sort();
+ return Object.fromEntries(labels.map((label, i) => [label, classColor(i, isDark)]));
+}
+
+// Beyond this many classes, the legend switches from listing every one to a "+N more" note —
+// past ~10 swatches a legend stops being scannable anyway.
+const LEGEND_CAP = 10;
+
+function EmbeddingScatter({
+ benchmark,
+ embeddings2d,
+ embeddings3d,
+}: {
+ benchmark: BenchmarkData;
+ embeddings2d: RawEmbedPoint[] | null;
+ embeddings3d: RawEmbedPoint[] | null;
+}) {
+ const [view, setView] = useState<'2d' | '3d'>('2d');
+ const { colorMode } = useColorMode();
+
+ // 2D and 3D UMAP projections are independently fit, so they're separate point sets —
+ // not the same points with one axis dropped.
+ const activeRaw = view === '2d' ? embeddings2d : embeddings3d;
+ const hasRealEmbeddings = Boolean(activeRaw && activeRaw.length > 0);
+ const points = useMemo(() => {
+ if (activeRaw && activeRaw.length > 0) return embedPointsFromReal(activeRaw);
+ return buildEmbeddingPoints(benchmark);
+ }, [activeRaw, benchmark]);
+
+ const colorMap = useMemo(() => buildClassColorMap(points, colorMode === 'dark'), [points, colorMode]);
+
+ const embedModel = benchmark.metrics.feature_separability?.embed_model ?? 'dinov2-base';
+
+ return (
+
+
+
+
Embedding Space — UMAP
+ {embedModel}
+
+
+ setView('2d')}
+ >
+ 2D
+
+ setView('3d')}
+ >
+ 3D
+
+
+
+
+ {view === '2d' ? (
+
+ ) : (
+
+ )}
+
+
+ {Object.entries(colorMap)
+ .slice(0, LEGEND_CAP)
+ .map(([key, color]) => (
+
+
+ {toTitleCase(key)}
+
+ ))}
+ {Object.keys(colorMap).length > LEGEND_CAP && (
+
+ +{Object.keys(colorMap).length - LEGEND_CAP} more (hover points for class)
+
+ )}
+
+
+ {hasRealEmbeddings
+ ? `projected from real ${view.toUpperCase()} UMAP embeddings`
+ : `no ${view.toUpperCase()} UMAP embeddings found for this dataset · showing a seeded demo scatter around class clusters`}
+
+
+ );
+}
+
+function formatBenchmarkDate(dateStr: string): string {
+ const match = /^(\d{4})-(\d{2})-(\d{2})/.exec(dateStr);
+ if (!match) return dateStr;
+ const [, year, month, day] = match;
+ return `${month}/${day}/${year}`;
+}
+
+// Same three-tier thresholds as the axis-score gauge below, on the doc's 0–10 scale.
+function scoreTier(value: number): ScoreTier {
+ if (value >= 7.5) return 'good';
+ if (value >= 5) return 'mid';
+ return 'poor';
+}
+
+type ScoreBoxVM = { label: string; value: string; tier: ScoreTier };
+
+function buildScoreBoxes(scores: AxisScores): ScoreBoxVM[] {
+ const entries: { label: string; value: number | null }[] = [
+ { label: 'Overall', value: scores.overall },
+ { label: 'Structural Quality', value: scores.structural },
+ { label: 'Content Difficulty', value: scores.difficulty },
+ { label: 'Diversity & Coverage', value: scores.diversity },
+ { label: 'Annotation Reliability', value: scores.annotation },
+ ];
+ return entries
+ .filter((entry): entry is { label: string; value: number } => entry.value != null && !Number.isNaN(entry.value))
+ .map((entry) => ({ label: entry.label, value: entry.value.toFixed(1), tier: scoreTier(entry.value) }));
+}
+
+type ReproRowVM = { label: string; value: string };
+
+function buildReproRows(info: ReproducibilityInfo | undefined): ReproRowVM[] {
+ if (!info) return [];
+ const rows: ReproRowVM[] = [];
+ if (info.split_seed != null) rows.push({ label: 'Split seed', value: String(info.split_seed) });
+ if (info.train_ratio != null && info.val_ratio != null && info.test_ratio != null) {
+ rows.push({
+ label: 'Train / val / test',
+ value: `${Math.round(info.train_ratio * 100)} / ${Math.round(info.val_ratio * 100)} / ${Math.round(info.test_ratio * 100)}`,
+ });
+ }
+ if (info.embed_model) rows.push({ label: 'Embed model', value: info.embed_model });
+ if (info.near_dup_threshold != null) rows.push({ label: 'Near-dup threshold', value: String(info.near_dup_threshold) });
+ if (info.backbone) rows.push({ label: 'Reference backbone', value: info.backbone });
+ if (info.cartography_epochs != null) {
+ rows.push({
+ label: 'Cartography epochs',
+ value: info.cartography_lr != null ? `${info.cartography_epochs} (lr ${info.cartography_lr})` : String(info.cartography_epochs),
+ });
+ }
+ if (info.cv_folds != null) rows.push({ label: 'CV folds', value: String(info.cv_folds) });
+ return rows;
+}
+
+function BenchmarkView({
+ benchmark,
+ embeddings2d,
+ embeddings3d,
+}: {
+ benchmark: BenchmarkData;
+ embeddings2d: RawEmbedPoint[] | null;
+ embeddings3d: RawEmbedPoint[] | null;
+}) {
+ const cards = useMemo(() => buildMetricCards(benchmark), [benchmark]);
+ const scores = useMemo(() => computeScores(benchmark), [benchmark]);
+ const scoreBoxes = useMemo(() => buildScoreBoxes(scores), [scores]);
+ const reproRows = useMemo(() => buildReproRows(benchmark.reproducibility), [benchmark.reproducibility]);
+ const axisGroups = useMemo(
+ () =>
+ METRIC_AXES.map((axis) => ({ axis, cards: cards.filter((card) => METRIC_AXIS_MAP[card.title] === axis) })).filter(
+ (group) => group.cards.length > 0,
+ ),
+ [cards],
+ );
+
+ return (
+
+
Last benchmarking check run: {formatBenchmarkDate(benchmark.date)}
+
+ {reproRows.length > 0 && (
+
+ Reproducibility details
+
+ {reproRows.map((row) => (
+
+ {row.label}
+
+ {row.value}
+
+
+ ))}
+
+
+ )}
+
+ {scoreBoxes.length > 0 && (
+
+ {scoreBoxes.map((box) => (
+
+
+ {box.label}
+
+
{box.value}
+
+ ))}
+
+ )}
+
+
+
+ {axisGroups.map((group) => (
+
+ {group.axis}
+
+ {group.cards.map((card) => (
+
+ ))}
+
+
+ ))}
+
+
+
+ );
+}
+
function InlineFilterGroup({
label,
options,
@@ -146,14 +1066,21 @@ export function DatasetMetadataModal({
open: boolean;
onClose: () => void;
}) {
+ // Declared above the Escape effect below, which has to read it — the methodology sheet
+ // layers on top of this modal and owns Escape while it's open.
+ const [showMethodology, setShowMethodology] = useState(false);
+
useEffect(() => {
if (!open) return;
const previousOverflow = document.body.style.overflow;
document.body.style.overflow = 'hidden';
+ // Both modals listen on `window`, so stopPropagation from the methodology sheet wouldn't
+ // suppress this one (same event target). Skip closing here instead, so one Escape dismisses
+ // only the topmost layer rather than collapsing the whole stack.
const onKeyDown = (event: KeyboardEvent) => {
- if (event.key === 'Escape') onClose();
+ if (event.key === 'Escape' && !showMethodology) onClose();
};
window.addEventListener('keydown', onKeyDown);
@@ -161,9 +1088,12 @@ export function DatasetMetadataModal({
document.body.style.overflow = previousOverflow;
window.removeEventListener('keydown', onKeyDown);
};
- }, [open, onClose]);
+ }, [open, onClose, showMethodology]);
const datasetPerformance = useDatasetPerformance(open ? (dataset?.name ?? null) : null);
+ const { data: benchmark, embeddings2d, embeddings3d } = useBenchmark(open ? (dataset?.name ?? null) : null);
+ const [showBenchmarks, setShowBenchmarks] = useState(false);
+ useEffect(() => setShowBenchmarks(false), [dataset?.name, open]);
const [metricTypeFilter, setMetricTypeFilter] = useState([]);
const [tunedFilter, setTunedFilter] = useState([]);
@@ -249,10 +1179,17 @@ export function DatasetMetadataModal({
if (!open || dataset == null) return null;
+ const isVlm = dataset.dataset_type === 'vlm';
+
const metadataRows = [
- ['Sensor modality', formatValue(dataset.sensor_modality)],
+ ['Sensor modality', dataset.sensor_modality == null || dataset.sensor_modality === '' ? 'Unknown' : toDisplayLabel(dataset.sensor_modality)],
['Platform', formatValue(dataset.platform)],
- ['Number of images', formatImageCount(dataset.num_images)],
+ ...(isVlm
+ ? ([
+ ['Conversation format', formatValue(dataset.conversation_format)],
+ ['Num of samples', formatImageCount(dataset.num_rows)],
+ ] as const)
+ : ([['Number of images', formatImageCount(dataset.num_images)]] as const)),
['Size', formatBytesDecimal(dataset.zip_size_bytes)],
...(dataset.augmented_num_images != null
? ([['Augmented images', formatImageCount(dataset.augmented_num_images)]] as const)
@@ -295,14 +1232,39 @@ export function DatasetMetadataModal({
)}
{dataset.agricultural_task && {formatValue(dataset.agricultural_task)} }
{dataset.real_or_synthetic && {formatValue(dataset.real_or_synthetic)} }
- {dataset.license && {formatValue(dataset.license)} }
+ {dataset.license && {dataset.license} }
-
- ×
-
+
+ {benchmark && showBenchmarks && (
+ setShowMethodology(true)}>
+ ⓘ How scores are calculated
+
+ )}
+ {benchmark && (
+ setShowBenchmarks((value) => !value)}>
+ {showBenchmarks ? (
+ <>
+ Dataset Details
+ >
+ ) : (
+ <>
+ View Benchmarks
+ >
+ )}
+
+ )}
+
+ ×
+
+
+
+
{metadataRows.map(([label, value]) => (
@@ -331,7 +1293,7 @@ export function DatasetMetadataModal({
{siteRows.map((site, index) => (
- {site.location && {site.location} }
+ {site.location && {toTitleCase(site.location)} }
{site.coordinate && {site.coordinate} }
))}
@@ -361,6 +1323,39 @@ export function DatasetMetadataModal({
)}
+ {isVlm && dataset.qa_type && dataset.qa_type.length > 0 && (
+
+ QA Types
+
+ {dataset.qa_type.map((value) => (
+ {toTitleCase(value)}
+ ))}
+
+
+ )}
+
+ {isVlm && dataset.task_dimensions && dataset.task_dimensions.length > 0 && (
+
+ Task Dimensions
+
+ {dataset.task_dimensions.map((value) => (
+ {toTitleCase(value)}
+ ))}
+
+
+ )}
+
+ {isVlm && dataset.source_datasets && dataset.source_datasets.length > 0 && (
+
+ Source Datasets
+
+ {dataset.source_datasets.map((sourceDataset) => (
+ {sourceDataset}
+ ))}
+
+
+ )}
+
{cropList.length > 0 && (
Crops
@@ -446,6 +1441,10 @@ export function DatasetMetadataModal({
View on Hugging Face
)}
+ {/* "View Original Dataset" is hidden for now: VLM records carry `parent_dataset`
+ as a bare Hugging Face repo slug (e.g. "AgroMind/AgroMind"), not a URL, so
+ linking it directly resolved as a relative site link and 404'd. Restore this
+ once the field is normalized to an absolute URL upstream. */}
)}
@@ -610,7 +1609,24 @@ export function DatasetMetadataModal({
)}
+
+
+ {benchmark && (
+
+
+
+ )}
+
+
+ setShowMethodology(false)}
+ />
);
}
diff --git a/src/components/DatasetTable.module.css b/src/components/DatasetTable.module.css
index 7dca769..679329f 100644
--- a/src/components/DatasetTable.module.css
+++ b/src/components/DatasetTable.module.css
@@ -1,119 +1,865 @@
+.backdrop {
+ position: fixed;
+ inset: 0;
+ z-index: 999;
+ display: grid;
+ place-items: center;
+ padding: 1.25rem;
+ background: var(--agml-modal-overlay);
+ backdrop-filter: blur(10px);
+}
+
+.modal {
+ width: min(1140px, 95vw);
+ max-height: min(88vh, 920px);
+ overflow: auto;
+ border-radius: 12px;
+ border: 1px solid var(--agml-border-strong);
+ background: var(--agml-surface-strong);
+ box-shadow: var(--agml-shadow-strong);
+ color: var(--agml-text);
+ padding: 2rem;
+ perspective: 2000px;
+}
+
+.header {
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ gap: 1rem;
+ margin-bottom: 1.1rem;
+}
+
+.title {
+ font-family: var(--ifm-code-font-family);
+ font-weight: 700;
+ font-size: 1.25rem;
+ margin: 0 0 0.5rem;
+ line-height: 1.2;
+ overflow-wrap: anywhere;
+}
+
+.headerBadges {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.4rem;
+}
+
+.taskBadge {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.65rem;
+ padding: 0.15rem 0.5rem;
+ border-radius: 4px;
+ display: inline-block;
+ white-space: nowrap;
+}
+
+.badgeClassification {
+ background: var(--agml-badge-classification-bg);
+ color: var(--agml-badge-classification-fg);
+}
+
+.badgeDetection {
+ background: var(--agml-badge-detection-bg);
+ color: var(--agml-badge-detection-fg);
+}
+
+.badgeSegmentation {
+ background: var(--agml-badge-segmentation-bg);
+ color: var(--agml-badge-segmentation-fg);
+}
+
+.badgeOther {
+ background: var(--agml-badge-other-bg);
+ color: var(--agml-badge-other-fg);
+}
+
+.tag {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.68rem;
+ padding: 0.2rem 0.55rem;
+ border-radius: 4px;
+ display: inline-block;
+ white-space: nowrap;
+ background: var(--agml-tag-bg);
+ color: var(--agml-tag-fg);
+}
+
+.closeButton {
+ flex: 0 0 auto;
+ width: 30px;
+ height: 30px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border: 1px solid var(--agml-border-strong);
+ border-radius: 6px;
+ background: var(--agml-surface-soft);
+ color: var(--agml-text);
+ padding: 0;
+ font-size: 15px;
+ line-height: 1;
+ cursor: pointer;
+}
+
+.closeButton:hover,
+.closeButton:focus-visible {
+ background: var(--agml-border);
+ outline: none;
+}
+
+.headerActions {
+ flex: 0 0 auto;
+ display: flex;
+ align-items: center;
+ gap: 0.6rem;
+}
+
+.benchmarkToggle {
+ flex: 0 0 auto;
+ border: 1px solid var(--ifm-color-primary);
+ border-radius: 999px;
+ background: var(--agml-accent-soft);
+ color: var(--ifm-color-primary);
+ padding: 0.5rem 1rem;
+ font-size: 0.78rem;
+ font-weight: 600;
+ cursor: pointer;
+ white-space: nowrap;
+}
+
+.benchmarkToggle:hover,
+.benchmarkToggle:focus-visible {
+ background: var(--ifm-color-primary);
+ color: var(--agml-surface-strong);
+ outline: none;
+}
+
+.flipper {
+ position: relative;
+ transform-style: preserve-3d;
+ transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1);
+}
+
+.flipperFlipped {
+ transform: rotateY(180deg);
+}
+
+.face {
+ backface-visibility: hidden;
+}
+
+.faceHidden {
+ visibility: hidden;
+ pointer-events: none;
+}
+
+.faceBack {
+ position: absolute;
+ inset: 0;
+ transform: rotateY(180deg);
+}
+
+.metricCardGrid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
+ gap: 1rem;
+ margin: 1rem 0 1.5rem;
+}
+
+.metricCard {
+ padding: 1rem 1.1rem;
+ border-radius: 10px;
+ border: 1px solid var(--agml-border);
+ background: var(--agml-surface-soft);
+ display: flex;
+ flex-direction: column;
+ gap: 0.75rem;
+}
+
+.metricCardHeader {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 0.6rem;
+}
+
+.metricCardTitle {
+ margin: 0;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.72rem;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+ color: var(--agml-muted);
+}
+
+.metricCardBadge {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.66rem;
+ color: var(--agml-muted);
+ background: var(--agml-tag-bg);
+ border-radius: 999px;
+ padding: 0.2rem 0.55rem;
+ white-space: nowrap;
+}
+
+.metricSkipped {
+ margin: 0;
+ font-size: 0.84rem;
+ font-style: italic;
+ color: var(--agml-muted);
+}
+
+.metricBars {
+ display: flex;
+ flex-direction: column;
+ gap: 0.5rem;
+}
+
+.metricBarRow {
+ display: grid;
+ grid-template-columns: 112px 1fr 56px;
+ align-items: center;
+ gap: 0.6rem;
+}
+
+.metricBarLabel {
+ font-size: 0.8rem;
+ color: var(--agml-text);
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.metricBarTrack {
+ height: 8px;
+ border-radius: 999px;
+ background: var(--agml-tag-bg);
+ overflow: hidden;
+}
+
+.metricBarFill {
+ height: 100%;
+ border-radius: 999px;
+ background: var(--ifm-color-primary);
+}
+
+.metricSignedTrack {
+ position: relative;
+ height: 8px;
+ border-radius: 999px;
+ background: var(--agml-tag-bg);
+ overflow: hidden;
+}
+
+.metricSignedMidline {
+ position: absolute;
+ left: 50%;
+ top: 0;
+ bottom: 0;
+ width: 1px;
+ background: var(--agml-border-strong);
+}
+
+.metricSignedFill {
+ position: absolute;
+ top: 0;
+ height: 100%;
+ border-radius: 999px;
+}
+
+.metricBarValue {
+ font-size: 0.82rem;
+ font-weight: 600;
+ color: var(--agml-text);
+ text-align: right;
+ white-space: nowrap;
+}
+
+.metricFooterStats {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
+ gap: 0.6rem;
+ padding-top: 0.6rem;
+ border-top: 1px solid var(--agml-border);
+}
+
+.statTileGrid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
+ gap: 0.6rem;
+}
+
+.statTile {
+ border: 1px solid var(--agml-border);
+ border-radius: 8px;
+ padding: 0.65rem 0.8rem;
+ background: var(--agml-surface-soft);
+}
+
+.statTileLabel {
+ margin: 0 0 0.3rem;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.62rem;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ color: var(--agml-muted);
+}
+
+.statTileValue {
+ margin: 0;
+ font-size: 0.95rem;
+ font-weight: 600;
+ color: var(--agml-text);
+}
+
+.embedHeader {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 1rem;
+ flex-wrap: wrap;
+}
+
+.embedSubtitle {
+ margin: 0.2rem 0 0;
+ font-size: 0.82rem;
+ color: var(--agml-muted);
+}
+
+.embedToggle {
+ display: inline-flex;
+ border-radius: 999px;
+ background: var(--agml-tag-bg);
+ padding: 4px;
+ gap: 4px;
+}
+
+.embedToggleButton {
+ border: none;
+ border-radius: 999px;
+ padding: 0.4rem 0.9rem;
+ font-size: 0.82rem;
+ font-weight: 600;
+ cursor: pointer;
+ font-family: inherit;
+ background: transparent;
+ color: var(--agml-muted);
+}
+
+.embedToggleActive {
+ background: var(--ifm-color-primary);
+ color: var(--agml-surface-strong);
+}
+
+.embedViewport {
+ position: relative;
+ margin-top: 0.9rem;
+ height: 340px;
+ border-radius: 12px;
+ border: 1px solid var(--agml-border);
+ background-color: var(--agml-surface-soft);
+ background-image:
+ linear-gradient(var(--agml-border) 1px, transparent 1px),
+ linear-gradient(90deg, var(--agml-border) 1px, transparent 1px);
+ background-size: 34px 34px;
+ background-position: center;
+ overflow: hidden;
+}
+
+.embedDragHint {
+ position: absolute;
+ left: 14px;
+ bottom: 12px;
+ margin: 0;
+ font-size: 0.7rem;
+ color: var(--agml-muted);
+ font-family: var(--ifm-code-font-family);
+}
+
+.embedAxisTickX {
+ position: absolute;
+ bottom: 4px;
+ transform: translateX(-50%);
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.62rem;
+ color: var(--agml-muted);
+ pointer-events: none;
+}
+
+.embedAxisTickY {
+ position: absolute;
+ left: 4px;
+ transform: translateY(-50%);
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.62rem;
+ color: var(--agml-muted);
+ pointer-events: none;
+}
+
+.embedLegend {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 1rem;
+ margin-top: 0.9rem;
+}
+
+.embedLegendItem {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.4rem;
+ font-size: 0.8rem;
+ color: var(--agml-text);
+}
+
+.embedLegendDot {
+ display: inline-block;
+ width: 9px;
+ height: 9px;
+ border-radius: 50%;
+}
+
+.embedNote {
+ margin: 0.9rem 0 0;
+ font-size: 0.74rem;
+ color: var(--agml-muted);
+ font-family: var(--ifm-code-font-family);
+}
+
+.detailGrid {
+ display: grid;
+ gap: 0.85rem;
+ margin: 1.25rem 0 1.75rem;
+}
+
+.detailItem {
+ min-width: 0;
+}
+
+.detailLabel {
+ margin: 0 0 0.3rem;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.62rem;
+ letter-spacing: 0.05em;
+ text-transform: uppercase;
+ color: var(--agml-muted);
+}
+
+.detailValue {
+ margin: 0;
+ font-size: 0.82rem;
+ line-height: 1.4;
+ color: var(--agml-text);
+ overflow-wrap: anywhere;
+}
+
.section {
- margin-top: 1.5rem;
- padding: 1.5rem;
- border-radius: 20px;
- background: var(--agml-surface);
- border: 1px solid var(--agml-border);
- box-shadow: var(--agml-shadow);
- color: var(--agml-text);
+ margin-bottom: 1.75rem;
+}
+
+.sectionTitle {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.68rem;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ color: var(--agml-muted);
+ margin: 0 0 0.65rem;
+}
+
+.bodyText {
+ margin: 0;
+ color: var(--agml-text);
+ line-height: 1.5;
+ overflow-wrap: anywhere;
+}
+
+.bodyText + .bodyText {
+ margin-top: 0.5rem;
+}
+
+.inlineLabel {
+ color: var(--agml-muted);
+ font-weight: 600;
+}
+
+.badgeWrap {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.5rem;
+}
+
+.expandButton {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.68rem;
+ padding: 0.2rem 0.55rem;
+ border-radius: 4px;
+ background: transparent;
+ border: 1px dashed var(--agml-border-strong);
+ color: var(--agml-muted);
+ cursor: pointer;
+}
+
+.expandButton:hover,
+.expandButton:focus-visible {
+ border-color: var(--ifm-color-primary);
+ color: var(--agml-text);
+ outline: none;
+}
+
+.figure {
+ margin: 0;
+}
+
+.exampleImage {
+ display: block;
+ width: 100%;
+ max-height: 65vh;
+ object-fit: contain;
+ border-radius: 8px;
+ background: var(--agml-surface-soft);
+}
+
+.snippetRow {
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ gap: 0.75rem;
+ background: var(--agml-page-bg);
+ border: 1px solid var(--agml-border);
+ border-radius: 6px;
+ padding: 0.6rem 0.85rem;
+ margin-top: 0.6rem;
+}
+
+.snippetCode {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.78rem;
+ line-height: 1.6;
+ color: var(--agml-text);
+ overflow-x: auto;
+ white-space: pre;
+}
+
+.snippetCopyButton {
+ flex-shrink: 0;
+ align-self: center;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.68rem;
+ padding: 0.3rem 0.65rem;
+ border-radius: 5px;
+ border: 1px solid var(--agml-border-strong);
+ background: transparent;
+ color: var(--agml-muted);
+ cursor: pointer;
}
-.controls {
- display: flex;
- flex-wrap: wrap;
- align-items: flex-end;
- gap: 1rem;
- justify-content: space-between;
- margin-bottom: 1rem;
+.snippetCopyButton:hover,
+.snippetCopyButton:focus-visible {
+ border-color: var(--ifm-color-primary);
+ color: var(--agml-text);
+ outline: none;
}
-.count {
- font-weight: 600;
- margin: 0;
- color: var(--agml-text);
+.linkRow {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.6rem;
+ margin-bottom: 1.75rem;
}
-.helper {
- margin: 0.35rem 0 0;
- color: var(--agml-muted);
- font-size: 0.9rem;
+.externalLink,
+.hfLink {
+ display: inline-flex;
+ width: fit-content;
+ border-radius: 6px;
+ padding: 0.5rem 1rem;
+ border: 1px solid var(--agml-border-strong);
+ background: var(--agml-tag-bg);
+ color: var(--agml-tag-fg);
+ text-decoration: none;
+ font-size: 0.82rem;
+ cursor: pointer;
}
-.searchLabel {
- display: flex;
- flex-direction: column;
- gap: 0.35rem;
- font-size: 0.8rem;
- text-transform: uppercase;
- letter-spacing: 0.08em;
- color: var(--agml-muted);
+.externalLink:hover,
+.externalLink:focus-visible,
+.hfLink:hover,
+.hfLink:focus-visible {
+ border-color: var(--ifm-color-primary);
+ color: var(--ifm-color-primary);
+ outline: none;
}
-.searchInput {
- min-width: 220px;
- border-radius: 999px;
- border: 1px solid var(--agml-border-strong);
- padding: 0.6rem 0.9rem;
- font-size: 0.9rem;
- background: var(--agml-surface-strong);
- color: var(--agml-text);
+.leaderboardWrap {
+ overflow-x: auto;
}
-.searchInput:focus {
- outline: none;
- border-color: var(--ifm-color-primary);
- box-shadow: 0 0 0 3px var(--agml-accent-soft);
+.filterBar {
+ display: flex;
+ flex-wrap: wrap;
+ align-items: flex-end;
+ gap: 1rem;
+ margin-bottom: 0.9rem;
+ padding: 0.75rem;
+ border-radius: 8px;
+ border: 1px solid var(--agml-border);
+ background: var(--agml-surface-soft);
+}
+
+.filterGroup {
+ display: flex;
+ flex-direction: column;
+ gap: 0.4rem;
+}
+
+.filterGroupLabel {
+ margin: 0;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.62rem;
+ text-transform: uppercase;
+ letter-spacing: 0.04em;
+ color: var(--agml-muted);
+}
+
+.filterGroupOptions {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 0.65rem;
+}
+
+.filterCheckboxRow {
+ display: flex;
+ align-items: center;
+ gap: 0.35rem;
+ font-size: 0.75rem;
+ cursor: pointer;
+ color: var(--agml-text);
+ white-space: nowrap;
+}
+
+.checkbox {
+ appearance: none;
+ -webkit-appearance: none;
+ width: 15px;
+ height: 15px;
+ flex-shrink: 0;
+ border-radius: 4px;
+ border: 1.5px solid var(--agml-border-strong);
+ background: var(--agml-page-bg);
+ position: relative;
+ cursor: pointer;
+ transition: background 0.12s, border-color 0.12s;
+}
+
+.checkbox:hover {
+ border-color: var(--agml-muted);
+}
+
+.checkbox:checked {
+ background: var(--ifm-color-primary);
+ border-color: var(--ifm-color-primary);
+}
+
+.checkbox::after {
+ content: '';
+ position: absolute;
+ left: 3.5px;
+ top: 0.5px;
+ width: 4px;
+ height: 7px;
+ border-style: solid;
+ border-width: 0 2px 2px 0;
+ border-color: var(--agml-page-bg);
+ transform: rotate(45deg);
+ opacity: 0;
+}
+
+.checkbox:checked::after {
+ opacity: 1;
+}
+
+.filterRange {
+ display: flex;
+ flex-direction: column;
+ gap: 0.4rem;
+}
+
+.filterRangeLabel {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.62rem;
+ text-transform: uppercase;
+ letter-spacing: 0.04em;
+ color: var(--agml-muted);
+}
+
+.filterRangeInput {
+ width: 96px;
+ border-radius: 5px;
+ border: 1px solid var(--agml-border-strong);
+ padding: 0.4rem 0.55rem;
+ background: var(--agml-surface-strong);
+ color: var(--agml-text);
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.75rem;
+}
+
+.clearFiltersButton {
+ border: 1px solid var(--agml-border-strong);
+ background: transparent;
+ border-radius: 999px;
+ padding: 0.45rem 0.9rem;
+ font-size: 0.78rem;
+ color: var(--agml-text);
+ cursor: pointer;
+ white-space: nowrap;
}
.tableWrap {
- overflow-x: auto;
- border-radius: 16px;
- background: var(--agml-surface-strong);
- border: 1px solid var(--agml-border);
+ border: 1px solid var(--agml-border);
+ border-radius: 8px;
+ overflow-x: auto;
+}
+
+.leaderboardTable {
+ width: 100%;
+ min-width: 960px;
+ font-size: 0.78rem;
+}
+
+.tableRow {
+ display: grid;
+ grid-template-columns: 42px minmax(150px, 1fr) 120px 70px 125px 130px 120px 65px;
+ gap: 0.5rem;
+ align-items: start;
+}
+
+.tableRow[role='row']:first-child {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.62rem;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ color: var(--agml-muted);
+ background: var(--agml-tag-bg);
+ padding: 0.5rem 0.75rem;
+ align-items: center;
}
-.table {
- width: 100%;
- border-collapse: collapse;
- font-size: 0.95rem;
+.tableRow:not(:first-child) {
+ padding: 0.55rem 0.75rem;
+ border-top: 1px solid var(--agml-border);
}
-.table th,
-.table td {
- padding: 0.8rem 1rem;
- border-bottom: 1px solid var(--agml-border);
- text-align: left;
+.tableRow > [role='columnheader'] {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
}
-.datasetButton {
- appearance: none;
- border: none;
- background: transparent;
- color: var(--ifm-color-primary);
- padding: 0;
- font: inherit;
- cursor: pointer;
- text-align: left;
+.simpleCell {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: block;
}
-.datasetButton:hover,
-.datasetButton:focus-visible {
- text-decoration: underline;
+.rankCell {
+ font-family: var(--ifm-code-font-family);
+ color: var(--agml-muted);
}
-.datasetButton:focus-visible {
- outline: 2px solid var(--ifm-color-primary);
- outline-offset: 3px;
- border-radius: 4px;
+.modelButton {
+ background: none;
+ border: none;
+ padding: 0;
+ max-width: 100%;
+ font-family: var(--ifm-code-font-family);
+ font-weight: 500;
+ color: var(--agml-text);
+ text-decoration: underline dashed var(--agml-muted);
+ text-decoration-thickness: 1px;
+ text-underline-offset: 3px;
+ cursor: pointer;
+ text-align: left;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ display: block;
}
-.table th {
- font-size: 0.75rem;
- text-transform: uppercase;
- letter-spacing: 0.08em;
- color: var(--agml-muted);
- background: var(--agml-surface-soft);
+.scoresCell {
+ display: flex;
+ flex-direction: column;
+ gap: 0.15rem;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.72rem;
+ color: var(--ifm-color-primary);
}
-.num {
- text-align: right;
- font-variant-numeric: tabular-nums;
+.scoresCell span {
+ white-space: nowrap;
}
-.status {
- color: var(--agml-muted);
+.stackCell {
+ display: flex;
+ flex-direction: column;
+ gap: 0.15rem;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.72rem;
+ color: var(--agml-muted);
}
-:global(html[data-theme='dark']) .tableWrap {
- background: var(--agml-surface-strong);
+.stackCell span {
+ white-space: nowrap;
+}
+
+.notesRow {
+ padding: 0.5rem 0.75rem 0.75rem 2.6rem;
+ background: var(--agml-surface-soft);
+ border-top: 1px dashed var(--agml-border);
+ font-size: 0.75rem;
+ line-height: 1.5;
+}
+
+.notesLabel {
+ margin: 0 0 0.2rem;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.62rem;
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+ color: var(--agml-muted);
+}
+
+.notesText {
+ margin: 0;
+ color: var(--agml-text);
+ line-height: 1.5;
+ overflow-wrap: anywhere;
+}
+
+.leaderboardTable a {
+ color: var(--ifm-color-primary);
+ font-weight: 600;
+ text-decoration: none;
+}
+
+.leaderboardTable a:hover,
+.leaderboardTable a:focus-visible {
+ text-decoration: underline;
+}
+
+@media (max-width: 720px) {
+ .modal {
+ padding: 1.25rem;
+ border-radius: 10px;
+ }
+
+ .header {
+ flex-direction: column;
+ }
+
+ .detailGrid {
+ grid-template-columns: repeat(2, 1fr) !important;
+ }
}
diff --git a/src/components/EmbeddingPlot2D.tsx b/src/components/EmbeddingPlot2D.tsx
new file mode 100644
index 0000000..4ea9299
--- /dev/null
+++ b/src/components/EmbeddingPlot2D.tsx
@@ -0,0 +1,145 @@
+import { useMemo, useRef } from 'react';
+import BrowserOnly from '@docusaurus/BrowserOnly';
+import { toTitleCase } from '../lib/datasets';
+import { usePlotlyChrome } from '../lib/plotlyChrome';
+import type { EmbedPoint } from './DatasetMetadataModal';
+import styles from './DatasetMetadataModal.module.css';
+
+// scattergl (WebGL) instead of the SVG scatter trace — SVG puts one DOM node per point and
+// bogs down well before real dataset sizes. See EmbeddingPlot3D for the SSR/bundle notes;
+// both views share the same plotly.js-dist-min instance.
+function buildTraces(
+ points: EmbedPoint[],
+ colorMap: Record,
+ hoverlabel: { bgcolor: string; bordercolor: string; font: { color: string } },
+ markerRing: string,
+) {
+ return Object.keys(colorMap).map((group) => {
+ const subset = points.filter((p) => p.cls === group);
+ return {
+ type: 'scattergl',
+ mode: 'markers',
+ name: toTitleCase(group),
+ x: subset.map((p) => p.x),
+ y: subset.map((p) => p.y),
+ // A thin ring in the panel's own surface color separates overlapping points instead
+ // of them just fusing into a blob at the edges.
+ marker: { size: 7, color: colorMap[group], opacity: 0.85, line: { width: 1, color: markerRing } },
+ text: subset.map((p) => `${toTitleCase(p.cls)} · ${p.split} · #${p.index}`),
+ hovertemplate: '%{text} ',
+ // Set per-trace, not just at the layout level — Plotly's hoverlabel.bgcolor
+ // default is "auto" (derived from the trace/marker color), which otherwise wins.
+ hoverlabel,
+ };
+ });
+}
+
+export function EmbeddingPlot2D({
+ points,
+ colorMap,
+}: {
+ points: EmbedPoint[];
+ colorMap: Record;
+}) {
+ const chrome = usePlotlyChrome();
+ const hoverlabel = useMemo(
+ () => ({
+ bgcolor: chrome.tooltipBg,
+ bordercolor: chrome.tooltipBorder,
+ font: { color: chrome.tooltipText },
+ }),
+ [chrome],
+ );
+ const traces = useMemo(
+ () => buildTraces(points, colorMap, hoverlabel, chrome.markerRing),
+ [points, colorMap, hoverlabel, chrome.markerRing],
+ );
+
+ // Captured once the plot mounts, so the "Reset view" button can relayout it directly.
+ const plotlyRef = useRef(null);
+ const graphDivRef = useRef(null);
+ const handleResetView = () => {
+ if (!plotlyRef.current || !graphDivRef.current) return;
+ plotlyRef.current.relayout(graphDivRef.current, { 'xaxis.autorange': true, 'yaxis.autorange': true });
+ };
+
+ // Recessive hairline grid with numeric ticks — gives the cloud a spatial reference frame
+ // instead of floating in a void. A *fresh* object per axis — Plotly's internal axis
+ // bookkeeping got confused when xaxis/yaxis pointed at the literal same object (identical
+ // autoranged x/y spans regardless of actual data, and scroll-zoom anchoring at the wrong
+ // point), so this is a factory, not a shared constant.
+ const makeAxis = () => ({
+ showgrid: true,
+ gridcolor: chrome.grid,
+ zeroline: false,
+ showticklabels: true,
+ linecolor: chrome.grid,
+ tickfont: { color: chrome.text, family: chrome.fontFamily, size: 10 },
+ });
+
+ return (
+
+ Loading 2D view…
}>
+ {() => {
+ const Plotly = require('plotly.js-dist-min');
+ plotlyRef.current = Plotly;
+ const createPlotlyComponent = require('react-plotly.js/factory').default;
+ const Plot = createPlotlyComponent(Plotly);
+ return (
+ {
+ graphDivRef.current = graphDiv;
+ }}
+ onUpdate={(_figure: unknown, graphDiv: HTMLElement) => {
+ graphDivRef.current = graphDiv;
+ }}
+ layout={{
+ autosize: true,
+ margin: { l: 35, r: 15, t: 15, b: 30 },
+ paper_bgcolor: 'transparent',
+ plot_bgcolor: 'transparent',
+ // x/y autorange independently (no scaleanchor) so the plot fills the panel's
+ // actual aspect ratio instead of leaving gutters to preserve a 1:1 scale.
+ xaxis: makeAxis(),
+ yaxis: makeAxis(),
+ showlegend: false,
+ hoverlabel: {
+ bgcolor: chrome.tooltipBg,
+ bordercolor: chrome.tooltipBorder,
+ font: { color: chrome.tooltipText },
+ },
+ // Drag disabled outright — Plotly's default 'zoom' draws a rubber-band select
+ // box, and 'pan' has a rendering-pipeline quirk where the SVG grid/tick layer
+ // only catches up to the WebGL point layer at drag-end instead of tracking it
+ // live, which reads as the grid "jumping" mid-drag. Scroll-zoom (below) has
+ // neither problem since each wheel tick is a discrete, fully-committed relayout.
+ dragmode: false,
+ // A constant uirevision tells Plotly to keep whatever zoom/pan the user set
+ // across re-renders. Without it, any re-render (e.g. a theme toggle recomputing
+ // chrome colors) passes a "fresh" layout with only autorange requested, and
+ // Plotly.react() reads that as "reset the view" — the zoom snapping back you saw.
+ uirevision: 'embedding-2d',
+ }}
+ // Plotly's cartesian plots default scrollZoom to false (only mapbox/geo get it
+ // for free) — this adds the scroll-wheel zoom people expect from a scatter plot.
+ config={{ displayModeBar: false, responsive: true, scrollZoom: true }}
+ style={{ width: '100%', height: '100%' }}
+ useResizeHandler
+ />
+ );
+ }}
+
+
+ ⟲ Reset view
+
+
+ );
+}
+
+export default EmbeddingPlot2D;
diff --git a/src/components/EmbeddingPlot3D.tsx b/src/components/EmbeddingPlot3D.tsx
new file mode 100644
index 0000000..b28fd34
--- /dev/null
+++ b/src/components/EmbeddingPlot3D.tsx
@@ -0,0 +1,165 @@
+import { useMemo, useRef } from 'react';
+import BrowserOnly from '@docusaurus/BrowserOnly';
+import { toTitleCase } from '../lib/datasets';
+import { usePlotlyChrome } from '../lib/plotlyChrome';
+import type { EmbedPoint } from './DatasetMetadataModal';
+import styles from './DatasetMetadataModal.module.css';
+
+// Plotly's default eye distance (1.25 on each axis) leaves a lot of headroom around the
+// cube — this pulls the camera in so it fills the panel. Shared with the reset handler below
+// so "Reset view" restores exactly this framing, not Plotly's own (more zoomed-out) default.
+const DEFAULT_CAMERA_EYE = { x: 0.85, y: 0.85, z: 0.85 };
+
+// chrome.markerRing is a solid "rgb(r, g, b)" string (no alpha channel) — wrapping it as a
+// translucent rgba() lets the 3D ring fade in gradually as points stack, instead of a solid
+// stroke that saturates to a flat black smear after only a few overlaps.
+function withAlpha(rgb: string, alpha: number): string {
+ const match = /rgb\(\s*([\d.]+)[,\s]+([\d.]+)[,\s]+([\d.]+)\s*\)/.exec(rgb);
+ if (!match) return rgb;
+ const [, r, g, b] = match;
+ return `rgba(${r}, ${g}, ${b}, ${alpha})`;
+}
+
+// plotly.js touches `window` at import time, which breaks Docusaurus's build-time SSR pass —
+// the require() calls for it must stay inside a children function so they're
+// never evaluated outside the browser. This uses the full plotly.js-dist-min bundle (shared
+// with EmbeddingPlot2D's scattergl trace) since 2D and 3D need different partial-bundle trace
+// families (gl2d vs gl3d) that no single partial bundle covers together.
+function buildTraces(
+ points: EmbedPoint[],
+ colorMap: Record,
+ hoverlabel: { bgcolor: string; bordercolor: string; font: { color: string } },
+ markerRing: string,
+) {
+ return Object.keys(colorMap).map((group) => {
+ const subset = points.filter((p) => p.cls === group);
+ return {
+ type: 'scatter3d',
+ mode: 'markers',
+ name: toTitleCase(group),
+ x: subset.map((p) => p.x),
+ y: subset.map((p) => p.y),
+ z: subset.map((p) => p.z),
+ // A full-opacity fill would flatten a dense cluster into one hard-edged silhouette —
+ // dropping opacity lets overlapping points layer into a soft density gradient instead,
+ // which reads as a point cloud rather than a sticker. The ring is real but very faint
+ // (low alpha), so a couple of overlapping points still get a crisp edge without
+ // hundreds of them compounding back into the solid dark smear this replaced.
+ marker: { size: 4, color: colorMap[group], opacity: 0.72, line: { width: 0.5, color: withAlpha(markerRing, 0.22) } },
+ text: subset.map((p) => `${toTitleCase(p.cls)} · ${p.split} · #${p.index}`),
+ hovertemplate: '%{text} ',
+ // Set per-trace, not just at the layout level — Plotly's hoverlabel.bgcolor
+ // default is "auto" (derived from the trace/marker color), which otherwise wins.
+ hoverlabel,
+ };
+ });
+}
+
+export function EmbeddingPlot3D({
+ points,
+ colorMap,
+}: {
+ points: EmbedPoint[];
+ colorMap: Record;
+}) {
+ const chrome = usePlotlyChrome();
+ const hoverlabel = useMemo(
+ () => ({
+ bgcolor: chrome.tooltipBg,
+ bordercolor: chrome.tooltipBorder,
+ font: { color: chrome.tooltipText },
+ }),
+ [chrome],
+ );
+ const traces = useMemo(
+ () => buildTraces(points, colorMap, hoverlabel, chrome.markerRing),
+ [points, colorMap, hoverlabel, chrome.markerRing],
+ );
+
+ // Captured once the plot mounts, so the "Reset view" button can relayout it directly.
+ // Double-click (Plotly's usual reset gesture) resets 2D axis ranges but does *not* reset
+ // the 3D camera, so an explicit control is the only reliable way to get back here.
+ const plotlyRef = useRef(null);
+ const graphDivRef = useRef(null);
+ const handleResetView = () => {
+ if (!plotlyRef.current || !graphDivRef.current) return;
+ plotlyRef.current.relayout(graphDivRef.current, {
+ 'scene.camera.eye': DEFAULT_CAMERA_EYE,
+ 'scene.xaxis.autorange': true,
+ 'scene.yaxis.autorange': true,
+ 'scene.zaxis.autorange': true,
+ });
+ };
+
+ // Recessive hairline wireframe (one step off the panel surface) with numeric ticks —
+ // gives the cloud a spatial reference frame instead of floating in a void. A *fresh*
+ // object per axis, not a shared constant — see EmbeddingPlot2D for why (Plotly's internal
+ // axis bookkeeping gets confused when multiple axes point at the literal same object).
+ const makeAxis = () => ({
+ showgrid: true,
+ gridcolor: chrome.grid,
+ zeroline: false,
+ showticklabels: true,
+ linecolor: chrome.grid,
+ tickfont: { color: chrome.text, family: chrome.fontFamily, size: 10 },
+ });
+
+ return (
+
+ Loading 3D view…
}>
+ {() => {
+ const Plotly = require('plotly.js-dist-min');
+ plotlyRef.current = Plotly;
+ const createPlotlyComponent = require('react-plotly.js/factory').default;
+ const Plot = createPlotlyComponent(Plotly);
+ return (
+ {
+ graphDivRef.current = graphDiv;
+ }}
+ onUpdate={(_figure: unknown, graphDiv: HTMLElement) => {
+ graphDivRef.current = graphDiv;
+ }}
+ layout={{
+ autosize: true,
+ margin: { l: 20, r: 20, t: 15, b: 35 },
+ paper_bgcolor: 'transparent',
+ plot_bgcolor: 'transparent',
+ scene: {
+ aspectmode: 'cube',
+ xaxis: makeAxis(),
+ yaxis: makeAxis(),
+ zaxis: makeAxis(),
+ camera: { eye: DEFAULT_CAMERA_EYE },
+ },
+ showlegend: false,
+ hoverlabel: {
+ bgcolor: chrome.tooltipBg,
+ bordercolor: chrome.tooltipBorder,
+ font: { color: chrome.tooltipText },
+ },
+ // Keeps whatever camera orbit/zoom the user set across re-renders instead of
+ // snapping back to the default eye position — see EmbeddingPlot2D for why.
+ uirevision: 'embedding-3d',
+ }}
+ config={{ displayModeBar: false, responsive: true }}
+ style={{ width: '100%', height: '100%' }}
+ useResizeHandler
+ />
+ );
+ }}
+
+
+ ⟲ Reset view
+
+
+ );
+}
+
+export default EmbeddingPlot3D;
diff --git a/src/components/ScoringMethodologyModal.module.css b/src/components/ScoringMethodologyModal.module.css
new file mode 100644
index 0000000..854d503
--- /dev/null
+++ b/src/components/ScoringMethodologyModal.module.css
@@ -0,0 +1,546 @@
+.backdrop {
+ position: fixed;
+ inset: 0;
+ z-index: 1050;
+ display: grid;
+ place-items: center;
+ padding: 1.25rem;
+ background: var(--agml-modal-overlay);
+ backdrop-filter: blur(10px);
+}
+
+.panel {
+ width: min(980px, 100%);
+ max-height: min(90vh, 960px);
+ overflow-y: auto;
+ border-radius: 14px;
+ border: 1px solid var(--agml-border-strong);
+ background: var(--agml-surface-strong);
+ box-shadow: var(--agml-shadow-strong);
+ color: var(--agml-text);
+ padding: 2rem;
+ box-sizing: border-box;
+}
+
+.header {
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ gap: 1rem;
+ padding-bottom: 1.2rem;
+ margin-bottom: 1.2rem;
+ border-bottom: 1px solid var(--agml-border);
+}
+
+.eyebrow {
+ margin: 0 0 0.3rem;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.68rem;
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+ color: var(--ifm-color-primary);
+}
+
+.title {
+ margin: 0 0 0.4rem;
+ font-size: 1.4rem;
+ font-weight: 700;
+ color: var(--agml-text);
+}
+
+.subtitle {
+ margin: 0;
+ font-size: 0.85rem;
+ color: var(--agml-muted);
+ max-width: 560px;
+ line-height: 1.5;
+ text-align: justify;
+}
+
+.closeButton {
+ flex: 0 0 auto;
+ width: 32px;
+ height: 32px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border: 1px solid var(--agml-border-strong);
+ border-radius: 8px;
+ background: var(--agml-surface-soft);
+ color: var(--agml-text);
+ padding: 0;
+ font-size: 16px;
+ line-height: 1;
+ cursor: pointer;
+}
+
+.closeButton:hover,
+.closeButton:focus-visible {
+ background: var(--agml-border);
+ outline: none;
+}
+
+.tabRow {
+ display: flex;
+ gap: 0.5rem;
+ flex-wrap: wrap;
+ margin-bottom: 1.75rem;
+}
+
+.tab {
+ border: 1px solid var(--agml-border);
+ border-radius: 999px;
+ padding: 0.4rem 0.9rem;
+ font-size: 0.78rem;
+ font-weight: 600;
+ font-family: var(--ifm-code-font-family);
+ cursor: pointer;
+ background: transparent;
+ color: var(--agml-muted);
+}
+
+.tab:hover,
+.tab:focus-visible {
+ border-color: var(--ifm-color-primary);
+ color: var(--agml-text);
+ outline: none;
+}
+
+.tabActive,
+.tabActive:hover {
+ border-color: var(--ifm-color-primary);
+ background: var(--ifm-color-primary);
+ color: var(--agml-page-bg);
+}
+
+.sectionTitle {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.85rem;
+ font-weight: 700;
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+ color: var(--agml-text);
+ margin: 0 0 0.6rem;
+}
+
+.bodyText {
+ font-size: 0.88rem;
+ color: var(--agml-muted);
+ line-height: 1.55;
+ margin: 0 0 0.7rem;
+ text-align: justify;
+}
+
+.bodyText:last-child {
+ margin-bottom: 0;
+}
+
+.overallSection {
+ margin-bottom: 2rem;
+ padding: 1.2rem 1.3rem;
+ border-radius: 10px;
+ border: 1px solid var(--agml-border);
+ background: var(--agml-surface-soft);
+}
+
+.weightRow {
+ display: flex;
+ gap: 0.6rem;
+ flex-wrap: wrap;
+ margin: 0.9rem 0 1rem;
+}
+
+.weightTile {
+ flex: 1 1 0;
+ min-width: 140px;
+ border-radius: 8px;
+ border: 1px solid var(--agml-border);
+ border-top: 6px solid var(--axis-accent);
+ padding: 0.7rem 0.8rem;
+ background: var(--agml-surface-strong);
+ display: flex;
+ flex-direction: column;
+ gap: 0.25rem;
+}
+
+.weightPct {
+ font-size: 1.1rem;
+ font-weight: 700;
+ color: var(--agml-text);
+}
+
+.weightLabel {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.66rem;
+ color: var(--agml-muted);
+ line-height: 1.3;
+}
+
+.formulaBox {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.8rem;
+ color: var(--agml-text);
+ background: var(--agml-tag-bg);
+ border: 1px solid var(--agml-border);
+ border-radius: 8px;
+ padding: 0.65rem 0.85rem;
+ line-height: 1.5;
+ white-space: pre-wrap;
+ overflow-wrap: anywhere;
+ margin: 0 0 0.7rem;
+}
+
+.thresholdLegend {
+ display: flex;
+ gap: 1.1rem;
+ flex-wrap: wrap;
+ margin-top: 0.9rem;
+}
+
+.thresholdItem {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.4rem;
+ font-size: 0.78rem;
+ color: var(--agml-text);
+}
+
+.thresholdDot {
+ display: inline-block;
+ width: 9px;
+ height: 9px;
+ border-radius: 50%;
+ flex-shrink: 0;
+}
+
+.thresholdGood {
+ background: var(--ifm-color-primary);
+}
+
+.thresholdFair {
+ background: var(--agml-caution-text);
+}
+
+.thresholdPoor {
+ background: var(--agml-warning-text);
+}
+
+.scaleNote {
+ margin: 0.9rem 0 0;
+ font-size: 0.74rem;
+ color: var(--agml-muted);
+ font-style: italic;
+ line-height: 1.5;
+ text-align: justify;
+}
+
+.axisSection {
+ margin-bottom: 2rem;
+}
+
+.axisTitle {
+ margin: 0 0 0.4rem;
+ font-size: 1.05rem;
+ font-weight: 700;
+ color: var(--agml-text);
+ padding-left: 0.7rem;
+ border-left: 4px solid var(--axis-accent);
+}
+
+/* 4 tracks with every card spanning 2 (so 2 cards per row) instead of auto-fit — matches the
+ wide-card pattern already used for the bar-chart cards on the main benchmark view, and gives
+ each card enough width that its paragraphs stop wrapping into a narrow ladder. */
+.metricGrid {
+ display: grid;
+ grid-template-columns: repeat(4, 1fr);
+ gap: 1rem;
+ margin-top: 0.9rem;
+}
+
+.metricCard {
+ grid-column: span 2;
+ padding: 1rem 1.1rem;
+ border-radius: 10px;
+ border: 1px solid var(--agml-border);
+ border-top: 5px solid var(--axis-accent);
+ background: var(--agml-surface-soft);
+ display: flex;
+ flex-direction: column;
+ gap: 0.7rem;
+ /* Grid items default to min-width: auto, which lets long unwrapped content (the weight tag
+ below) force the card wider than its grid track instead of wrapping inside it. */
+ min-width: 0;
+}
+
+.metricCardPenalty {
+ grid-column: span 2;
+ padding: 1rem 1.1rem;
+ border-radius: 10px;
+ border: 1px solid var(--agml-border);
+ border-top: 5px solid var(--agml-warning-text);
+ background: var(--agml-surface-soft);
+ display: flex;
+ flex-direction: column;
+ gap: 0.7rem;
+ /* Grid items default to min-width: auto, which lets long unwrapped content (the weight tag
+ below) force the card wider than its grid track instead of wrapping inside it. */
+ min-width: 0;
+}
+
+.metricCardHeader {
+ display: flex;
+ align-items: flex-start;
+ justify-content: space-between;
+ gap: 0.6rem;
+ /* The badge group can be wider than the title's remaining space (e.g. "Subtracted, up to 2
+ points" next to "Cross Split Contamination Penalty") — wrapping it to its own line below
+ the title keeps it inside the card instead of overflowing past the right edge. */
+ flex-wrap: wrap;
+}
+
+.metricName {
+ margin: 0;
+ font-size: 0.95rem;
+ font-weight: 700;
+ color: var(--agml-text);
+}
+
+.badgeGroup {
+ display: flex;
+ gap: 0.35rem;
+ flex-wrap: wrap;
+ justify-content: flex-end;
+ flex: 0 0 auto;
+ max-width: 100%;
+}
+
+.penaltyBadge {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.62rem;
+ padding: 0.18rem 0.5rem;
+ border-radius: 4px;
+ background: var(--agml-warning-soft);
+ color: var(--agml-warning-text);
+ text-transform: uppercase;
+ letter-spacing: 0.04em;
+ white-space: nowrap;
+}
+
+.weightTag {
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.62rem;
+ padding: 0.18rem 0.5rem;
+ border-radius: 4px;
+ background: var(--agml-tag-bg);
+ color: var(--agml-muted);
+ white-space: nowrap;
+}
+
+.fieldLabel {
+ margin: 0 0 0.2rem;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.62rem;
+ font-weight: 600;
+ letter-spacing: 0.06em;
+ text-transform: uppercase;
+ color: var(--agml-muted);
+}
+
+.fieldText {
+ margin: 0;
+ font-size: 0.83rem;
+ color: var(--agml-text);
+ line-height: 1.55;
+ text-align: justify;
+ overflow-wrap: anywhere;
+}
+
+.pendingNote {
+ margin: 0;
+ font-size: 0.78rem;
+ color: var(--agml-muted);
+ font-style: italic;
+ padding: 0.5rem 0.7rem;
+ background: var(--agml-tag-bg);
+ border-radius: 6px;
+ text-align: justify;
+}
+
+.placeholderCard {
+ margin-top: 0.9rem;
+ padding: 1.4rem;
+ border-radius: 10px;
+ border: 1px dashed var(--agml-border-strong);
+ background: var(--agml-surface-soft);
+ text-align: center;
+}
+
+.placeholderText {
+ margin: 0;
+ font-size: 0.85rem;
+ color: var(--agml-muted);
+ font-style: italic;
+ text-align: justify;
+}
+
+.axisFormulaFooter {
+ margin-top: 1rem;
+ display: flex;
+ flex-direction: column;
+ gap: 0.4rem;
+}
+
+.axisFormulaFooter .formulaBox {
+ margin: 0;
+}
+
+.axisFormulaBox {
+ border-color: var(--axis-accent);
+ font-weight: 600;
+}
+
+/* Structural Quality reuses the site's primary green (their hues already match) and Annotation
+ Reliability reuses the caution amber — only Content Difficulty and Diversity & Coverage need
+ their own tokens. Defined once here and consumed via var(--axis-accent) by every element that
+ needs this axis's accent color, instead of four near-duplicate rule sets. */
+.axisStructural {
+ --axis-accent: var(--ifm-color-primary);
+}
+
+.axisDifficulty {
+ --axis-accent: var(--agml-axis-difficulty);
+}
+
+.axisDiversity {
+ --axis-accent: var(--agml-axis-diversity);
+}
+
+.axisAnnotation {
+ --axis-accent: var(--agml-caution-text);
+}
+
+.footerSection {
+ margin-top: 0.5rem;
+}
+
+.antiGamingList {
+ margin: 0 0 1.2rem;
+ display: flex;
+ flex-direction: column;
+ gap: 0.55rem;
+}
+
+.antiGamingItem {
+ display: flex;
+ gap: 0.55rem;
+ align-items: flex-start;
+}
+
+.antiGamingMarker {
+ flex: 0 0 auto;
+ color: var(--ifm-color-primary);
+ font-size: 0.8rem;
+ line-height: 1.5;
+}
+
+.antiGamingText {
+ margin: 0;
+ font-size: 0.82rem;
+ color: var(--agml-muted);
+ line-height: 1.5;
+ text-align: justify;
+}
+
+.fieldRefDetails {
+ border: 1px solid var(--agml-border);
+ border-radius: 8px;
+ padding: 0.7rem 0.9rem;
+ background: var(--agml-surface-soft);
+}
+
+.fieldRefSummary {
+ cursor: pointer;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.74rem;
+ font-weight: 600;
+ color: var(--agml-text);
+}
+
+.fieldRefSummary:hover,
+.fieldRefSummary:focus-visible {
+ color: var(--ifm-color-primary);
+ outline: none;
+}
+
+.fieldRefGrid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
+ gap: 0.4rem;
+ margin-top: 0.7rem;
+}
+
+.fieldRefRow {
+ display: flex;
+ justify-content: space-between;
+ gap: 0.6rem;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.72rem;
+ padding: 0.25rem 0.1rem;
+ border-bottom: 1px solid var(--agml-border);
+}
+
+.fieldRefSymbol {
+ color: var(--ifm-color-primary);
+ font-weight: 600;
+ white-space: nowrap;
+}
+
+.fieldRefPath {
+ color: var(--agml-muted);
+ overflow-wrap: anywhere;
+ text-align: right;
+}
+
+/* Between mobile and the panel's own max width, 2-cards-per-row (each half of a ~980px panel)
+ gets tight enough that the formula boxes start cramping — drop to one full-width card per row
+ a bit before the general mobile breakpoint below. This block must come before the 720px block
+ so that, once both conditions are true on a narrow phone, the more specific 720px rules below
+ (later in source order, equal selector specificity) are the ones that win. */
+@media (max-width: 900px) {
+ .metricGrid {
+ grid-template-columns: repeat(2, 1fr);
+ }
+
+ .metricCard,
+ .metricCardPenalty {
+ grid-column: span 2;
+ }
+}
+
+@media (max-width: 720px) {
+ .panel {
+ padding: 1.25rem;
+ border-radius: 10px;
+ }
+
+ .title {
+ font-size: 1.2rem;
+ }
+
+ .weightTile {
+ min-width: 120px;
+ }
+
+ .header {
+ flex-direction: column;
+ }
+
+ .metricGrid {
+ grid-template-columns: 1fr;
+ }
+
+ .metricCard,
+ .metricCardPenalty {
+ grid-column: span 1;
+ }
+}
diff --git a/src/components/ScoringMethodologyModal.tsx b/src/components/ScoringMethodologyModal.tsx
new file mode 100644
index 0000000..401e0c5
--- /dev/null
+++ b/src/components/ScoringMethodologyModal.tsx
@@ -0,0 +1,425 @@
+// Static reference modal explaining how dataset quality scores are computed. Unlike the rest
+// of the benchmarking UI, nothing here is driven by a specific dataset's data — it's the same
+// content for every dataset, documenting the formulas in SCORING_FORMULAS.md in plain language.
+import { useEffect, useState } from 'react';
+import { createPortal } from 'react-dom';
+import styles from './ScoringMethodologyModal.module.css';
+
+type MetricDoc = {
+ name: string;
+ weight?: string;
+ badge?: string;
+ how: string;
+ formula?: string;
+ meaning: string;
+ interpretation: string;
+ isPenalty?: boolean;
+ isPending?: boolean;
+};
+
+type AxisKey = 'structural' | 'difficulty' | 'diversity' | 'annotation';
+
+type AxisDoc = {
+ key: AxisKey;
+ name: string;
+ description: string;
+ metrics: MetricDoc[];
+ axisFormula: string;
+};
+
+const TASK_TYPES = ['Image Classification', 'Object Detection', 'Image Segmentation', 'Image Text To Text'] as const;
+type TaskType = (typeof TASK_TYPES)[number];
+
+const AXIS_WEIGHTS: { label: string; pct: string; key: AxisKey }[] = [
+ { label: 'Structural Quality', pct: '30%', key: 'structural' },
+ { label: 'Content Difficulty', pct: '25%', key: 'difficulty' },
+ { label: 'Diversity & Coverage', pct: '25%', key: 'diversity' },
+ { label: 'Annotation Reliability', pct: '20%', key: 'annotation' },
+];
+
+const AXIS_META: { key: AxisKey; name: string; description: string }[] = [
+ { key: 'structural', name: 'Structural Quality', description: 'Basic health of the dataset: size, balance, redundancy, and format consistency.' },
+ {
+ key: 'difficulty',
+ name: 'Content Difficulty',
+ description: 'How hard the task genuinely is on this data, and whether that difficulty is meaningful or just noise.',
+ },
+ {
+ key: 'diversity',
+ name: 'Diversity & Coverage',
+ description: 'How much of the real world variation the dataset captures, versus narrow or repetitive samples.',
+ },
+ { key: 'annotation', name: 'Annotation Reliability', description: 'How trustworthy the ground truth labels are.' },
+];
+
+const IMAGE_CLASSIFICATION_AXES: Record = {
+ structural: {
+ metrics: [
+ {
+ name: 'Class Balance',
+ weight: '40% of axis score',
+ how: 'We count examples per class and take the ratio of the largest class to the smallest. We also compute the normalized entropy of the class distribution, which gives a smoother read than a single ratio.',
+ meaning: 'Highly imbalanced datasets are easy to get high accuracy on and hard to trust for the rare classes.',
+ formula: 'S_balance = clamp(entropy × 10, 0, 10)',
+ interpretation:
+ 'A score close to 0 means one or two classes dominate and the rest are barely represented. A score close to 10 means classes are close to equal size. Higher is better.',
+ },
+ {
+ name: 'Redundancy',
+ weight: '35% of axis score',
+ how: "We hash every image to catch exact duplicates. For near duplicates, we embed images with a general purpose model and flag pairs with very high cosine similarity. Exact and near rates are added together so cleaning only one type can't inflate the score.",
+ meaning: 'High duplication means the dataset is smaller and less varied than its file count suggests.',
+ formula: 'S_redundancy = clamp(10 × (1 − (exact_rate + near_rate) / 0.20), 0, 10)',
+ interpretation:
+ 'A score close to 10 means almost no duplicate images. A score close to 0 means a fifth or more of the dataset is duplicated. Higher is better.',
+ },
+ {
+ name: 'Cross Split Contamination Penalty',
+ badge: 'penalty',
+ weight: 'Subtracted, up to 2 points',
+ how: 'Same duplicate detection as above, but restricted to pairs where one copy lands in the train set and the other in validation or test.',
+ meaning:
+ 'Samples that appear in more than one split let a model see the test answers during training, which inflates test accuracy without the model actually being better.',
+ formula: 'P_cross = clamp((cross_dups + cross_near) × 100 / total_images, 0, 2)',
+ interpretation:
+ "This is a penalty, so lower is better and 0 is best. It grows as more images leak across splits and maxes out at 2 points once 2% or more of the dataset is contaminated this way. It's subtracted from the structural score rather than blended in, so it can't be hidden by a strong balance or resolution score.",
+ isPenalty: true,
+ },
+ {
+ name: 'Resolution Consistency',
+ weight: '25% of axis score',
+ how: 'We look at the spread of image width, height, aspect ratio, and file size across the whole dataset.',
+ meaning: 'Tells us whether images come from a single clean source or a mix of cameras and phones.',
+ formula: 'S_resolution = clamp(10 × (1 − area_cv), 0, 10)',
+ interpretation:
+ 'A score close to 10 means images are highly uniform, usually a sign they came from one collection pipeline. A score close to 0 means resolutions vary wildly. Higher is generally better, though very low variation can also mean the images were all captured under one narrow setup.',
+ },
+ ],
+ axisFormula: 'Q_structural = clamp(0.40·S_balance + 0.35·S_redundancy + 0.25·S_resolution − P_cross, 0, 10)',
+ },
+ difficulty: {
+ metrics: [
+ {
+ name: 'Feature Space Separability',
+ weight: '40% of axis score',
+ how: 'We embed images with a frozen, general purpose backbone that was never trained on this data, then score how well the ground truth labels separate into clusters in that embedding space.',
+ meaning:
+ 'A model independent read on how separable the classes are. Low separability can mean the classes are genuinely hard to tell apart, or that some labels are wrong.',
+ formula: 'S_separability = (clamp(silhouette × 10, 0, 10) + clamp(10 − davies_bouldin × 3, 0, 10)) / 2',
+ interpretation:
+ 'A score close to 10 means the classes form tight, well separated clusters even to a model that has never seen this data. A score close to 0 means the classes overlap heavily. Higher is better.',
+ },
+ {
+ name: 'Training Difficulty Balance',
+ weight: '30% of axis score',
+ how: "We train a reference model and track each example's prediction confidence and how much that confidence swings across training epochs. Plotting those two values sorts examples into easy, ambiguous, or hard to learn.",
+ meaning: 'Shows whether a dataset is mostly trivial for a model to learn or has a genuine hard tail worth benchmarking against.',
+ formula: 'S_cartography = clamp(10 × (1 − pct_hard / 50), 0, 10)',
+ interpretation:
+ 'A score close to 0 means over half the dataset is hard for the reference model to learn confidently. A score close to 10 means almost everything is easy, which sounds good but can also mean the dataset is too trivial to be a useful benchmark. A mid to high score is usually the healthiest place to be, not a perfect 10.',
+ },
+ {
+ name: 'Class Confusability',
+ weight: '30% of axis score',
+ how: 'Using the same reference model, we build a confusion matrix on held out data and pull out the class pairs the model mixes up most.',
+ meaning: 'Shows which classes are visually hard to tell apart in this data, which helps prioritize where more examples are needed.',
+ formula: 'S_confusability = clamp(accuracy × 10, 0, 10)',
+ interpretation:
+ "A score close to 10 means the reference model rarely confuses classes on held out data. A score close to 0 means it mixes them up constantly. Higher is better. The split seed is fixed and published, so this can't be inflated by choosing an easy test set.",
+ },
+ ],
+ axisFormula: 'Q_difficulty = 0.40·S_separability + 0.30·S_cartography + 0.30·S_confusability',
+ },
+ diversity: {
+ metrics: [
+ {
+ name: 'Intra Class Visual Diversity',
+ weight: '100% of axis score',
+ how: "For each class, we embed every image and measure how far each one sits from that class's average embedding.",
+ meaning:
+ 'Low diversity means a class is really just many near copies of the same shot, which can lead a model to memorize a narrow template instead of learning the real features.',
+ formula: 'S_diversity = clamp(mean_diversity / 0.4 × 10, 0, 10)',
+ interpretation:
+ 'A score close to 0 means images in a class barely differ from each other. A score close to 10 means wide visual variety within each class. Higher is better.',
+ },
+ {
+ name: 'Metadata Coverage',
+ weight: 'Not yet weighted',
+ isPending: true,
+ how: 'Where metadata exists, such as location, lighting, growth stage, or sensor type, we build frequency tables per class.',
+ meaning:
+ 'Shows whether a class was only ever captured under one condition, which limits how well a model trained on it will generalize.',
+ interpretation:
+ "This metric doesn't produce a numeric score yet. It shows up as frequency tables on the benchmark card so it can be reviewed by eye.",
+ },
+ ],
+ axisFormula: 'Q_diversity = S_diversity',
+ },
+ annotation: {
+ metrics: [
+ {
+ name: 'Label Noise Rate',
+ weight: '100% of axis score',
+ how: 'We train with k-fold cross validation to get an out of fold prediction for every example, then use confident learning methods (like cleanlab) to flag examples where the model consistently disagrees with the assigned label.',
+ meaning: 'Gives an estimated share of mislabeled examples, plus a ranked list of the most likely mislabels for someone to review by hand.',
+ formula: 'S_noise = clamp(10 × (1 − noise_rate / 0.10)^1.5, 0, 10)',
+ interpretation:
+ 'A score close to 10 means very few labels are likely wrong. A score close to 0 means a large share are. The curve is steep near the bottom, so even a little estimated noise pulls the score down fast, and it hits 0 once estimated noise reaches 10%.',
+ },
+ ],
+ axisFormula: 'Q_annotation = S_noise',
+ },
+};
+
+const PLACEHOLDER_NOTE = "Metric formulas for this task type are still being worked out. The four axes above apply, but the per metric scoring isn't published yet.";
+
+const ANTI_GAMING_NOTES = [
+ "Exact and near duplicate rates are added together for the redundancy score, so removing only exact duplicates while keeping near duplicates doesn't improve the score.",
+ "Cross split contamination is penalized on its own and subtracted at the end, so it can't be masked by a strong balance or resolution score.",
+ 'Removing images to lower the duplicate rate also tends to lower diversity, since the removed images were adding variation. The two scores pull against each other.',
+ 'Separability uses both silhouette and Davies-Bouldin. Optimizing for one alone tends to push the other in the wrong direction.',
+ "The label noise formula uses an exponent of 1.5, so small amounts of noise near the 10% cutoff barely move the score. There's little to gain from cleaning just enough to cross a boundary.",
+ "The train and test split is drawn with a fixed, published seed, so confusability accuracy can't be inflated by choosing which examples land in the test set.",
+];
+
+const FIELD_REFS: { symbol: string; path: string }[] = [
+ { symbol: 'entropy', path: 'metrics.class_imbalance.normalized_entropy' },
+ { symbol: 'exact_rate', path: 'metrics.exact_duplicate.exact_duplicate_rate' },
+ { symbol: 'near_rate', path: 'metrics.near_duplicate.near_duplicate_rate' },
+ { symbol: 'cross_split_dups', path: 'metrics.exact_duplicate.cross_split_duplicates' },
+ { symbol: 'cross_split_near', path: 'metrics.near_duplicate.cross_split_near_duplicates' },
+ { symbol: 'total_images', path: 'metrics.exact_duplicate.total_images' },
+ { symbol: 'area_cv', path: 'metrics.resolution_consistency.area_cv' },
+ { symbol: 'silhouette', path: 'metrics.feature_separability.silhouette_score' },
+ { symbol: 'davies_bouldin', path: 'metrics.feature_separability.davies_bouldin_index' },
+ { symbol: 'mean_diversity', path: 'metrics.intra_class_diversity.mean_diversity' },
+ { symbol: 'pct_hard', path: 'metrics.dataset_cartography.pct_hard' },
+ { symbol: 'accuracy', path: 'metrics.class_confusability.accuracy' },
+ { symbol: 'noise_rate', path: 'metrics.label_noise.estimated_noise_rate' },
+];
+
+function buildAxisGroups(taskType: TaskType): AxisDoc[] {
+ const data = taskType === 'Image Classification' ? IMAGE_CLASSIFICATION_AXES : null;
+ return AXIS_META.map((meta) => ({
+ ...meta,
+ metrics: data ? data[meta.key].metrics : [],
+ axisFormula: data ? data[meta.key].axisFormula : '',
+ }));
+}
+
+function MetricCard({ metric, axisClass }: { metric: MetricDoc; axisClass: string }) {
+ return (
+
+
+
{metric.name}
+
+ {metric.badge && {metric.badge} }
+ {metric.weight && {metric.weight} }
+
+
+
+
+
How it’s calculated
+
{metric.how}
+
+
+ {metric.formula &&
{metric.formula}
}
+
+
+
What it means
+
{metric.meaning}
+
+
+ {metric.isPending ? (
+
{metric.interpretation}
+ ) : (
+
+
Reading the score
+
{metric.interpretation}
+
+ )}
+
+ );
+}
+
+const AXIS_CLASS: Record = {
+ structural: 'axisStructural',
+ difficulty: 'axisDifficulty',
+ diversity: 'axisDiversity',
+ annotation: 'axisAnnotation',
+};
+
+export function ScoringMethodologyModal({
+ open,
+ taskType = 'Image Classification',
+ onClose,
+}: {
+ open: boolean;
+ taskType?: TaskType;
+ onClose: () => void;
+}) {
+ const [activeTab, setActiveTab] = useState(taskType);
+
+ useEffect(() => {
+ if (open) setActiveTab(taskType);
+ }, [open, taskType]);
+
+ useEffect(() => {
+ if (!open) return;
+ const onKeyDown = (event: KeyboardEvent) => {
+ if (event.key === 'Escape') onClose();
+ };
+ window.addEventListener('keydown', onKeyDown);
+ return () => window.removeEventListener('keydown', onKeyDown);
+ }, [open, onClose]);
+
+ if (!open) return null;
+
+ const axisGroups = buildAxisGroups(activeTab);
+
+ // Portaled to the document body — this modal can be opened from inside the dataset modal's
+ // flip-card face, and that face's `transform`/`perspective` (for the 3D flip) creates a new
+ // containing block for any `position: fixed` descendant, which would otherwise center this
+ // backdrop inside that tall transformed box instead of the actual viewport.
+ return createPortal(
+
+
event.stopPropagation()}
+ >
+
+
+
Reference
+
+ Scoring Methodology
+
+
+ How overall and per axis quality scores are computed from each run’s report.json. This is a static
+ reference, not live data.
+
+
+
+ ×
+
+
+
+
+ {TASK_TYPES.map((label) => (
+ setActiveTab(label)}
+ >
+ {label}
+
+ ))}
+
+
+
+
Overall score
+
The overall score is a weighted average of the four axis scores below.
+
+ {AXIS_WEIGHTS.map((w) => (
+
+ {w.pct}
+ {w.label}
+
+ ))}
+
+
+ Q_overall = 0.30·Q_structural + 0.25·Q_difficulty + 0.25·Q_diversity + 0.20·Q_annotation
+
+
+ If an entire axis can’t be computed for a dataset, it is dropped and the remaining axes are
+ renormalized against their own weights, so the overall score is always a full weighted average of
+ whatever was available rather than being dragged down by a missing axis.
+
+
+ An axis needs every one of its metrics to be scored. If any single metric inside an axis is missing,
+ the whole axis is dropped and its weight is redistributed as above. The one exception is Content
+ Difficulty, which falls back to the separability score on its own when a run hasn’t completed
+ the phase 3 cartography and confusability metrics.
+
+
+
+
+ 7.5 and up is good
+
+
+
+ 5.0 to 7.5 is fair
+
+
+
+ below 5.0 needs attention
+
+
+
+ Every formula below computes on a 0 to 10 scale, and that is the same scale the dataset card displays,
+ rounded to one decimal place. The thresholds above are in those units.
+
+
+
+ {axisGroups.map((axis) => (
+
+
{axis.name}
+
{axis.description}
+
+ {axis.metrics.length > 0 ? (
+
+ {axis.metrics.map((metric) => (
+
+ ))}
+
+ ) : (
+
+ )}
+
+ {axis.axisFormula && (
+
+
Axis score
+
+ {axis.axisFormula}
+
+
+ )}
+
+ ))}
+
+
+
How the formulas resist gaming
+
+ {ANTI_GAMING_NOTES.map((note) => (
+
+ ))}
+
+
+ JSON field reference
+
+ {FIELD_REFS.map((f) => (
+
+ {f.symbol}
+ {f.path}
+
+ ))}
+
+
+
+
+
,
+ document.body,
+ );
+}
+
+export default ScoringMethodologyModal;
diff --git a/src/css/custom.css b/src/css/custom.css
index 62cf4a0..85b2ea1 100644
--- a/src/css/custom.css
+++ b/src/css/custom.css
@@ -1,4 +1,4 @@
-@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Inter:wght@400;500;600;700&display=swap');
+@import url("https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Inter:wght@400;500;600;700&display=swap");
/**
* Any CSS included here will be global. The classic template
@@ -8,104 +8,127 @@
/* You can override the default Infima variables here. */
:root {
- --ifm-color-primary: oklch(0.5 0.14 150);
- --ifm-color-primary-dark: oklch(0.45 0.14 150);
- --ifm-color-primary-darker: oklch(0.42 0.14 150);
- --ifm-color-primary-darkest: oklch(0.35 0.13 150);
- --ifm-color-primary-light: oklch(0.55 0.14 150);
- --ifm-color-primary-lighter: oklch(0.6 0.14 150);
- --ifm-color-primary-lightest: oklch(0.7 0.13 150);
- --ifm-font-family-base: 'Inter', 'Noto Sans', sans-serif;
- --ifm-heading-font-family: 'Inter', 'Noto Sans', sans-serif;
- --ifm-code-font-family: 'IBM Plex Mono', 'Fira Code', monospace;
- --ifm-code-font-size: 95%;
- --docusaurus-highlighted-code-line-bg: oklch(0.16 0.01 145 / 0.08);
- --agml-page-bg: oklch(0.985 0.006 145);
- --agml-surface: oklch(0.97 0.01 145);
- --agml-surface-strong: oklch(1 0.002 145);
- --agml-surface-soft: oklch(0.965 0.008 145);
- --agml-border: oklch(0.85 0.012 145);
- --agml-border-strong: oklch(0.78 0.014 145);
- --agml-shadow: 0 16px 32px oklch(0 0 0 / 0.06);
- --agml-shadow-strong: 0 24px 48px oklch(0 0 0 / 0.09);
- --agml-text: oklch(0.2 0.012 145);
- --agml-muted: oklch(0.45 0.012 145);
- --agml-accent-soft: oklch(0.92 0.06 150);
- --agml-accent-border: color-mix(in oklch, var(--ifm-color-primary) 35%, var(--agml-border));
- --agml-warning-soft: rgba(189, 139, 76, 0.12);
- --agml-warning-text: #7a4e2a;
- --agml-modal-overlay: oklch(0 0 0 / 0.3);
- --agml-badge-classification-bg: oklch(0.89 0.10 145);
- --agml-badge-classification-fg: oklch(0.34 0.13 145);
- --agml-badge-detection-bg: oklch(0.89 0.08 175);
- --agml-badge-detection-fg: oklch(0.36 0.12 175);
- --agml-badge-segmentation-bg: oklch(0.89 0.07 110);
- --agml-badge-segmentation-fg: oklch(0.36 0.11 110);
- --agml-badge-other-bg: oklch(0.91 0.01 145);
- --agml-badge-other-fg: oklch(0.4 0.01 145);
- --agml-tag-bg: oklch(0.91 0.02 145);
- --agml-tag-fg: oklch(0.36 0.03 145);
- --ifm-background-color: transparent;
- --ifm-navbar-background-color: var(--agml-surface);
- --ifm-footer-background-color: var(--agml-surface);
- --ifm-card-background-color: var(--agml-surface-strong);
- --ifm-toc-background-color: var(--agml-surface);
- --ifm-toc-border-color: var(--agml-border);
+ --ifm-color-primary: oklch(0.5 0.14 150);
+ --ifm-color-primary-dark: oklch(0.45 0.14 150);
+ --ifm-color-primary-darker: oklch(0.42 0.14 150);
+ --ifm-color-primary-darkest: oklch(0.35 0.13 150);
+ --ifm-color-primary-light: oklch(0.55 0.14 150);
+ --ifm-color-primary-lighter: oklch(0.6 0.14 150);
+ --ifm-color-primary-lightest: oklch(0.7 0.13 150);
+ --ifm-font-family-base: "Inter", "Noto Sans", sans-serif;
+ --ifm-heading-font-family: "Inter", "Noto Sans", sans-serif;
+ --ifm-code-font-family: "IBM Plex Mono", "Fira Code", monospace;
+ --ifm-code-font-size: 95%;
+ --docusaurus-highlighted-code-line-bg: oklch(0.16 0.01 145 / 0.08);
+ --agml-page-bg: oklch(0.985 0.006 145);
+ --agml-surface: oklch(0.97 0.01 145);
+ --agml-surface-strong: oklch(1 0.002 145);
+ --agml-surface-soft: oklch(0.965 0.008 145);
+ --agml-border: oklch(0.85 0.012 145);
+ --agml-border-strong: oklch(0.78 0.014 145);
+ --agml-shadow: 0 16px 32px oklch(0 0 0 / 0.06);
+ --agml-shadow-strong: 0 24px 48px oklch(0 0 0 / 0.09);
+ --agml-text: oklch(0.2 0.012 145);
+ --agml-muted: oklch(0.45 0.012 145);
+ --agml-accent-soft: oklch(0.92 0.06 150);
+ --agml-accent-border: color-mix(
+ in oklch,
+ var(--ifm-color-primary) 35%,
+ var(--agml-border)
+ );
+ --agml-warning-soft: rgba(199, 60, 41, 0.12);
+ --agml-warning-text: oklch(0.55 0.19 27);
+ --agml-caution-text: oklch(0.65 0.18 97);
+ /* Per-axis accent hues for the scoring methodology reference (Structural Quality reuses
+ --ifm-color-primary and Annotation Reliability reuses --agml-caution-text — both already
+ sit at a matching hue, so only blue/pink need their own tokens). */
+ --agml-axis-difficulty: oklch(0.5 0.15 250);
+ --agml-axis-diversity: oklch(0.55 0.17 340);
+ --agml-modal-overlay: oklch(0 0 0 / 0.3);
+ --agml-badge-classification-bg: oklch(0.89 0.1 145);
+ --agml-badge-classification-fg: oklch(0.34 0.13 145);
+ --agml-badge-detection-bg: oklch(0.89 0.08 175);
+ --agml-badge-detection-fg: oklch(0.36 0.12 175);
+ --agml-badge-segmentation-bg: oklch(0.89 0.07 110);
+ --agml-badge-segmentation-fg: oklch(0.36 0.11 110);
+ --agml-badge-other-bg: oklch(0.91 0.01 145);
+ --agml-badge-other-fg: oklch(0.4 0.01 145);
+ --agml-badge-vlm-bg: oklch(0.89 0.08 300);
+ --agml-badge-vlm-fg: oklch(0.36 0.13 300);
+ --agml-tag-bg: oklch(0.91 0.02 145);
+ --agml-tag-fg: oklch(0.36 0.03 145);
+ --ifm-background-color: transparent;
+ --ifm-navbar-background-color: var(--agml-surface);
+ --ifm-footer-background-color: var(--agml-surface);
+ --ifm-card-background-color: var(--agml-surface-strong);
+ --ifm-toc-background-color: var(--agml-surface);
+ --ifm-toc-border-color: var(--agml-border);
}
/* For readability concerns, you should choose a lighter palette in dark mode. */
-html[data-theme='dark'] {
- --ifm-color-primary: oklch(0.72 0.15 150);
- --ifm-color-primary-dark: oklch(0.65 0.15 150);
- --ifm-color-primary-darker: oklch(0.6 0.15 150);
- --ifm-color-primary-darkest: oklch(0.5 0.14 150);
- --ifm-color-primary-light: oklch(0.78 0.14 150);
- --ifm-color-primary-lighter: oklch(0.83 0.13 150);
- --ifm-color-primary-lightest: oklch(0.88 0.11 150);
- --docusaurus-highlighted-code-line-bg: oklch(0 0 0 / 0.35);
- --agml-page-bg: oklch(0.16 0.01 145);
- --agml-surface: oklch(0.18 0.012 145);
- --agml-surface-strong: oklch(0.19 0.012 145);
- --agml-surface-soft: oklch(0.17 0.01 145);
- --agml-border: oklch(0.28 0.014 145);
- --agml-border-strong: oklch(0.3 0.014 145);
- --agml-shadow: 0 16px 32px oklch(0 0 0 / 0.28);
- --agml-shadow-strong: 0 24px 48px oklch(0 0 0 / 0.34);
- --agml-text: oklch(0.92 0.006 145);
- --agml-muted: oklch(0.65 0.01 145);
- --agml-accent-soft: oklch(0.22 0.05 150);
- --agml-accent-border: color-mix(in oklch, var(--ifm-color-primary) 30%, var(--agml-border));
- --agml-warning-soft: rgba(189, 139, 76, 0.18);
- --agml-warning-text: #d9b084;
- --agml-modal-overlay: oklch(0 0 0 / 0.62);
- --agml-badge-classification-bg: oklch(0.30 0.10 145);
- --agml-badge-classification-fg: oklch(0.88 0.15 145);
- --agml-badge-detection-bg: oklch(0.30 0.09 175);
- --agml-badge-detection-fg: oklch(0.86 0.13 175);
- --agml-badge-segmentation-bg: oklch(0.30 0.07 110);
- --agml-badge-segmentation-fg: oklch(0.86 0.12 110);
- --agml-badge-other-bg: oklch(0.30 0.02 145);
- --agml-badge-other-fg: oklch(0.8 0.02 145);
- --agml-tag-bg: oklch(0.24 0.014 145);
- --agml-tag-fg: oklch(0.75 0.012 145);
- --ifm-background-color: transparent;
- --ifm-navbar-background-color: var(--agml-surface);
- --ifm-footer-background-color: var(--agml-surface);
- --ifm-card-background-color: var(--agml-surface-strong);
- --ifm-toc-background-color: var(--agml-surface);
- --ifm-toc-border-color: var(--agml-border);
+html[data-theme="dark"] {
+ --ifm-color-primary: oklch(0.72 0.15 150);
+ --ifm-color-primary-dark: oklch(0.65 0.15 150);
+ --ifm-color-primary-darker: oklch(0.6 0.15 150);
+ --ifm-color-primary-darkest: oklch(0.5 0.14 150);
+ --ifm-color-primary-light: oklch(0.78 0.14 150);
+ --ifm-color-primary-lighter: oklch(0.83 0.13 150);
+ --ifm-color-primary-lightest: oklch(0.88 0.11 150);
+ --docusaurus-highlighted-code-line-bg: oklch(0 0 0 / 0.35);
+ --agml-page-bg: oklch(0.16 0.01 145);
+ --agml-surface: oklch(0.18 0.012 145);
+ --agml-surface-strong: oklch(0.19 0.012 145);
+ --agml-surface-soft: oklch(0.17 0.01 145);
+ --agml-border: oklch(0.28 0.014 145);
+ --agml-border-strong: oklch(0.3 0.014 145);
+ --agml-shadow: 0 16px 32px oklch(0 0 0 / 0.28);
+ --agml-shadow-strong: 0 24px 48px oklch(0 0 0 / 0.34);
+ --agml-text: oklch(0.92 0.006 145);
+ --agml-muted: oklch(0.65 0.01 145);
+ --agml-accent-soft: oklch(0.22 0.05 150);
+ --agml-accent-border: color-mix(
+ in oklch,
+ var(--ifm-color-primary) 30%,
+ var(--agml-border)
+ );
+ --agml-warning-soft: rgba(224, 90, 70, 0.18);
+ --agml-warning-text: oklch(0.7 0.18 27);
+ --agml-caution-text: oklch(0.78 0.14 80);
+ --agml-axis-difficulty: oklch(0.72 0.15 250);
+ --agml-axis-diversity: oklch(0.74 0.15 340);
+ --agml-modal-overlay: oklch(0 0 0 / 0.62);
+ --agml-badge-classification-bg: oklch(0.3 0.1 145);
+ --agml-badge-classification-fg: oklch(0.88 0.15 145);
+ --agml-badge-detection-bg: oklch(0.3 0.09 175);
+ --agml-badge-detection-fg: oklch(0.86 0.13 175);
+ --agml-badge-segmentation-bg: oklch(0.3 0.07 110);
+ --agml-badge-segmentation-fg: oklch(0.86 0.12 110);
+ --agml-badge-other-bg: oklch(0.3 0.02 145);
+ --agml-badge-other-fg: oklch(0.8 0.02 145);
+ --agml-badge-vlm-bg: oklch(0.3 0.09 300);
+ --agml-badge-vlm-fg: oklch(0.86 0.13 300);
+ --agml-tag-bg: oklch(0.24 0.014 145);
+ --agml-tag-fg: oklch(0.75 0.012 145);
+ --ifm-background-color: transparent;
+ --ifm-navbar-background-color: var(--agml-surface);
+ --ifm-footer-background-color: var(--agml-surface);
+ --ifm-card-background-color: var(--agml-surface-strong);
+ --ifm-toc-background-color: var(--agml-surface);
+ --ifm-toc-border-color: var(--agml-border);
}
html,
body,
#__docusaurus {
- background: var(--agml-page-bg);
- color: var(--agml-text);
- overflow-x: hidden;
+ background: var(--agml-page-bg);
+ color: var(--agml-text);
+ overflow-x: hidden;
}
body {
- transition: background-color 0.2s ease, color 0.2s ease;
+ transition:
+ background-color 0.2s ease,
+ color 0.2s ease;
}
.navbar,
@@ -120,7 +143,7 @@ body {
.theme-admonition,
.theme-code-block,
.table-of-contents__link {
- color: var(--agml-text);
+ color: var(--agml-text);
}
.navbar,
@@ -133,172 +156,172 @@ body {
.card,
.theme-admonition,
.theme-code-block {
- background: var(--agml-surface);
- border-color: var(--agml-border);
- box-shadow: var(--agml-shadow);
+ background: var(--agml-surface);
+ border-color: var(--agml-border);
+ box-shadow: var(--agml-shadow);
}
.navbar,
.footer {
- backdrop-filter: blur(14px);
+ backdrop-filter: blur(14px);
}
.navbar {
- border-bottom: 1px solid var(--agml-border);
- --ifm-navbar-height: 64px;
- --ifm-navbar-padding-horizontal: 24px;
- --ifm-navbar-item-padding-horizontal: 0;
- --ifm-navbar-item-padding-vertical: 0;
+ border-bottom: 1px solid var(--agml-border);
+ --ifm-navbar-height: 64px;
+ --ifm-navbar-padding-horizontal: 24px;
+ --ifm-navbar-item-padding-horizontal: 0;
+ --ifm-navbar-item-padding-vertical: 0;
}
.navbar__brand {
- margin-right: 20px;
+ margin-right: 20px;
}
.navbar__brand::before {
- content: '';
- display: inline-block;
- width: 10px;
- height: 10px;
- margin-right: 10px;
- border-radius: 2px;
- background: var(--ifm-color-primary);
- flex-shrink: 0;
+ content: "";
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin-right: 10px;
+ border-radius: 2px;
+ background: var(--ifm-color-primary);
+ flex-shrink: 0;
}
.navbar__title {
- font-family: var(--ifm-code-font-family);
- font-weight: 600;
- font-size: 15px;
- letter-spacing: -0.2px;
+ font-family: var(--ifm-code-font-family);
+ font-weight: 600;
+ font-size: 15px;
+ letter-spacing: -0.2px;
}
.navbar__item {
- padding: 4px;
+ padding: 4px;
}
.navbar__link {
- font-family: var(--ifm-code-font-family);
- font-size: 12.5px;
- font-weight: 400;
- padding: 8px 12px;
- border-radius: 6px;
- color: var(--agml-muted);
+ font-family: var(--ifm-code-font-family);
+ font-size: 12.5px;
+ font-weight: 400;
+ padding: 8px 12px;
+ border-radius: 6px;
+ color: var(--agml-muted);
}
.navbar__link:hover,
.navbar__link--active {
- background: var(--agml-tag-bg);
- color: var(--agml-text);
+ background: var(--agml-tag-bg);
+ color: var(--agml-text);
}
.navbar__github-button .navbar__link {
- color: var(--ifm-navbar-background-color);
- background: var(--ifm-color-primary);
- font-weight: 600;
+ color: var(--ifm-navbar-background-color);
+ background: var(--ifm-color-primary);
+ font-weight: 600;
}
.navbar__github-button .navbar__link:hover {
- background: var(--ifm-color-primary-dark);
- color: var(--ifm-navbar-background-color);
+ background: var(--ifm-color-primary-dark);
+ color: var(--ifm-navbar-background-color);
}
.theme-doc-markdown {
- border-radius: 0;
- padding: 0;
- background: transparent;
- border: none;
- box-shadow: none;
- max-width: 760px;
+ border-radius: 0;
+ padding: 0;
+ background: transparent;
+ border: none;
+ box-shadow: none;
+ max-width: 760px;
}
.theme-doc-markdown.markdown h1 {
- font-size: 1.875rem;
- font-weight: 600;
- letter-spacing: -0.01em;
- margin-bottom: 0.5rem;
+ font-size: 1.875rem;
+ font-weight: 600;
+ letter-spacing: -0.01em;
+ margin-bottom: 0.5rem;
}
.theme-doc-markdown.markdown h2 {
- font-size: 1.1875rem;
- font-weight: 600;
- scroll-margin-top: 1.25rem;
+ font-size: 1.1875rem;
+ font-weight: 600;
+ scroll-margin-top: 1.25rem;
}
.theme-doc-markdown.markdown h3 {
- font-size: 1rem;
- font-weight: 600;
- scroll-margin-top: 1.25rem;
+ font-size: 1rem;
+ font-weight: 600;
+ scroll-margin-top: 1.25rem;
}
.theme-doc-markdown.markdown p,
.theme-doc-markdown.markdown li {
- font-size: 0.906rem;
- line-height: 1.65;
+ font-size: 0.906rem;
+ line-height: 1.65;
}
.main-wrapper {
- padding-top: 1.5rem;
- padding-bottom: 2rem;
+ padding-top: 1.5rem;
+ padding-bottom: 2rem;
}
.theme-doc-sidebar-container {
- border-right: 1px solid var(--agml-border);
- background: var(--agml-surface-soft);
- box-shadow: none;
+ border-right: 1px solid var(--agml-border);
+ background: var(--agml-surface-soft);
+ box-shadow: none;
}
.theme-doc-sidebar-menu {
- --ifm-menu-color: var(--agml-muted);
- --ifm-menu-color-active: var(--agml-text);
- --ifm-menu-color-background-hover: var(--agml-tag-bg);
- --ifm-menu-color-background-active: var(--agml-tag-bg);
- --ifm-menu-link-padding-vertical: 0.5rem;
- --ifm-menu-link-padding-horizontal: 0.5rem;
- padding: 1.5rem 1rem;
+ --ifm-menu-color: var(--agml-muted);
+ --ifm-menu-color-active: var(--agml-text);
+ --ifm-menu-color-background-hover: var(--agml-tag-bg);
+ --ifm-menu-color-background-active: var(--agml-tag-bg);
+ --ifm-menu-link-padding-vertical: 0.5rem;
+ --ifm-menu-link-padding-horizontal: 0.5rem;
+ padding: 1.5rem 1rem;
}
.menu__link {
- font-size: 0.82rem;
- font-weight: 400;
+ font-size: 0.82rem;
+ font-weight: 400;
}
.sidebarCategoryLabel > .menu__list-item-collapsible {
- background: transparent !important;
+ background: transparent !important;
}
.sidebarCategoryLabel > .menu__list-item-collapsible > .menu__link {
- font-family: var(--ifm-code-font-family);
- font-size: 0.68rem;
- font-weight: 600;
- letter-spacing: 0.06em;
- text-transform: uppercase;
- color: var(--agml-muted);
- padding: 0.4rem 0.5rem;
- pointer-events: none;
+ font-family: var(--ifm-code-font-family);
+ font-size: 0.68rem;
+ font-weight: 600;
+ letter-spacing: 0.06em;
+ text-transform: uppercase;
+ color: var(--agml-muted);
+ padding: 0.4rem 0.5rem;
+ pointer-events: none;
}
.sidebarCategoryLabel + .sidebarCategoryLabel {
- margin-top: 1.25rem;
+ margin-top: 1.25rem;
}
.theme-doc-sidebar-item-link,
.table-of-contents__link,
.footer__link-item {
- color: var(--agml-text);
+ color: var(--agml-text);
}
.theme-doc-sidebar-item-link--active {
- color: var(--ifm-color-primary);
+ color: var(--ifm-color-primary);
}
.theme-code-block {
- border: 1px solid var(--agml-border);
- border-radius: 8px;
- box-shadow: none;
+ border: 1px solid var(--agml-border);
+ border-radius: 8px;
+ box-shadow: none;
}
.theme-code-block pre,
.prism-code {
- background: var(--agml-surface-strong) !important;
+ background: var(--agml-surface-strong) !important;
}
diff --git a/src/lib/benchmarks.ts b/src/lib/benchmarks.ts
new file mode 100644
index 0000000..195cbc9
--- /dev/null
+++ b/src/lib/benchmarks.ts
@@ -0,0 +1,241 @@
+// Dataset benchmarking metrics, loaded on demand from the shared
+// static/data/dataset-benchmarking/results.json (keyed by dataset name), plus optional
+// per-dataset UMAP embedding files under static/data/dataset-benchmarking/embeddings/
+// (_umap_2d.json / _umap_3d.json). One task type's metric shape is defined
+// below; other task types will get their own shape as their benchmarking pipelines ship.
+import { useEffect, useState } from "react";
+import useBaseUrl from "@docusaurus/useBaseUrl";
+
+export interface ClassImbalanceMetrics {
+ counts: Record;
+ imbalance_ratio: number;
+ normalized_entropy: number;
+ most_frequent_class: string;
+ least_frequent_class: string;
+ total_train_examples: number;
+}
+
+export interface ExactDuplicateMetrics {
+ total_images: number;
+ exact_duplicate_count: number;
+ exact_duplicate_rate: number;
+ duplicate_groups: number;
+ cross_split_duplicates: number;
+}
+
+export interface ResolutionStat {
+ mean: number;
+ std: number;
+ min: number;
+ max: number;
+}
+
+export interface ResolutionConsistencyMetrics {
+ total_images: number;
+ width: ResolutionStat;
+ height: ResolutionStat;
+ aspect_ratio: ResolutionStat;
+ area_cv: number;
+ mode_distribution: Record;
+}
+
+export interface NearDuplicateMetrics {
+ total_images: number;
+ embed_model: string;
+ threshold: number;
+ near_duplicate_count: number;
+ near_duplicate_rate: number;
+ near_duplicate_groups: number;
+ cross_split_near_duplicates: number;
+ faiss_index_type: string;
+}
+
+export interface FeatureSeparabilityMetrics {
+ embed_model: string;
+ n_total: number;
+ n_silhouette_samples: number;
+ silhouette_score: number;
+ silhouette_interpretation: string;
+ davies_bouldin_index: number;
+ davies_bouldin_interpretation: string;
+ per_class_silhouette: Record;
+}
+
+export interface IntraClassDiversityMetrics {
+ embed_model: string;
+ per_class_diversity: Record;
+ mean_diversity: number;
+ min_diversity_class: string;
+ max_diversity_class: string;
+}
+
+export interface DatasetCartographyMetrics {
+ n_easy: number;
+ n_ambiguous: number;
+ n_hard: number;
+ pct_easy: number;
+ pct_ambiguous: number;
+ pct_hard: number;
+ mean_confidence: number;
+ mean_variability: number;
+ easy_threshold: number;
+ hard_threshold: number;
+ variability_threshold: number;
+ n_epochs: number;
+}
+
+export interface ConfusedPair {
+ true_class: string;
+ predicted_as: string;
+ confusion_rate: number;
+}
+
+export interface ClassConfusabilityMetrics {
+ accuracy: number;
+ per_class_accuracy: Record;
+ confusion_matrix: number[][];
+ top_confused_pairs: ConfusedPair[];
+ n_top_pairs: number;
+ n_test_samples: number;
+}
+
+export interface LabelNoiseMetrics {
+ estimated_noise_rate: number;
+ n_noisy_samples: number;
+ n_total_samples: number;
+ flagged_orig_indices?: number[];
+ per_class_noise_counts: Record;
+ cv_folds: number;
+}
+
+export interface ReproducibilityInfo {
+ split_seed?: number;
+ train_ratio?: number;
+ val_ratio?: number;
+ test_ratio?: number;
+ embed_model?: string;
+ near_dup_threshold?: number;
+ backbone?: string;
+ cartography_epochs?: number;
+ cartography_lr?: number;
+ cv_folds?: number;
+}
+
+export interface ImageClassificationBenchmark {
+ dataset: string;
+ date: string;
+ reproducibility?: ReproducibilityInfo;
+ phases_completed?: number[];
+ metrics: {
+ class_imbalance?: ClassImbalanceMetrics;
+ exact_duplicate?: ExactDuplicateMetrics;
+ resolution_consistency?: ResolutionConsistencyMetrics;
+ metadata_coverage?: { skipped: boolean; reason?: string; metadata_columns?: string[]; normalized_entropy?: Record> };
+ near_duplicate?: NearDuplicateMetrics;
+ feature_separability?: FeatureSeparabilityMetrics;
+ intra_class_diversity?: IntraClassDiversityMetrics;
+ dataset_cartography?: DatasetCartographyMetrics;
+ class_confusability?: ClassConfusabilityMetrics;
+ label_noise?: LabelNoiseMetrics;
+ };
+}
+
+// Only image-classification benchmarks exist today; other task types will get their own
+// metric shapes later.
+export type BenchmarkData = ImageClassificationBenchmark;
+
+type BenchmarkResults = Record;
+
+// One row per sample from a UMAP projection. 2D files omit `z`.
+export interface EmbedPoint {
+ x: number;
+ y: number;
+ z?: number;
+ label: string;
+ split?: string;
+ index?: number;
+}
+
+interface BenchmarkState {
+ data: BenchmarkData | null;
+ embeddings2d: EmbedPoint[] | null;
+ embeddings3d: EmbedPoint[] | null;
+ loading: boolean;
+}
+
+const EMPTY_STATE: BenchmarkState = {
+ data: null,
+ embeddings2d: null,
+ embeddings3d: null,
+ loading: false,
+};
+
+async function fetchJson(url: string): Promise {
+ try {
+ const response = await fetch(url);
+ if (!response.ok) return null;
+ return (await response.json()) as T;
+ } catch {
+ return null;
+ }
+}
+
+// results.json is one shared file covering every dataset, so it only needs to be
+// fetched once per page load rather than once per dataset looked up.
+let resultsPromise: Promise | null = null;
+function loadResults(url: string): Promise {
+ if (!resultsPromise) {
+ resultsPromise = fetchJson(url).then((data) => data ?? {});
+ }
+ return resultsPromise;
+}
+
+// Looks up `datasetName` in the shared results.json and, if found, fetches that dataset's
+// 2D and 3D UMAP embedding files. Returns null data when the dataset has no benchmark entry
+// (a missing key, not an error state) or when the fetch itself fails.
+export function useBenchmark(datasetName: string | null): BenchmarkState {
+ const resultsUrl = useBaseUrl("/data/dataset-benchmarking/results.json");
+ const embeddings2dUrl = useBaseUrl(
+ `/data/dataset-benchmarking/embeddings/${datasetName ?? "_none"}_umap_2d.json`,
+ );
+ const embeddings3dUrl = useBaseUrl(
+ `/data/dataset-benchmarking/embeddings/${datasetName ?? "_none"}_umap_3d.json`,
+ );
+ const [state, setState] = useState(EMPTY_STATE);
+
+ useEffect(() => {
+ if (!datasetName) {
+ setState(EMPTY_STATE);
+ return;
+ }
+ let cancelled = false;
+ setState({ data: null, embeddings2d: null, embeddings3d: null, loading: true });
+
+ loadResults(resultsUrl).then((results) => {
+ if (cancelled) return;
+ const data = results[datasetName] ?? null;
+ if (!data) {
+ setState({ data: null, embeddings2d: null, embeddings3d: null, loading: false });
+ return;
+ }
+ Promise.all([
+ fetchJson(embeddings2dUrl),
+ fetchJson(embeddings3dUrl),
+ ]).then(([embeddings2d, embeddings3d]) => {
+ if (cancelled) return;
+ setState({
+ data,
+ embeddings2d: embeddings2d ?? null,
+ embeddings3d: embeddings3d ?? null,
+ loading: false,
+ });
+ });
+ });
+
+ return () => {
+ cancelled = true;
+ };
+ }, [datasetName, resultsUrl, embeddings2dUrl, embeddings3dUrl]);
+
+ return state;
+}
diff --git a/src/lib/datasets.ts b/src/lib/datasets.ts
index 9a21a2a..fc5e244 100644
--- a/src/lib/datasets.ts
+++ b/src/lib/datasets.ts
@@ -1,372 +1,581 @@
-import { useEffect, useMemo, useState } from 'react';
-import useBaseUrl from '@docusaurus/useBaseUrl';
+import { useEffect, useMemo, useState } from "react";
+import useBaseUrl from "@docusaurus/useBaseUrl";
+import { toDisplayLabel } from "./labelOverrides";
export interface Dataset {
- name: string;
- source: 'agml' | 'huggingface' | string | null;
- machine_learning_task: string | null;
- agricultural_task: string | null;
- location: string | string[] | null;
- country: string | string[] | null;
- // Derived: `country`, falling back to `location` when country wasn't extracted. Used for the
- // search page's location filter/display so it groups by country instead of full addresses.
- display_location: string | string[] | null;
- lat_lon: string | string[] | null;
- imaging_equipment: string | string[] | null;
- collection_period: string | string[] | null;
- environment: string | null;
- augmented_counterpart: string | null;
- crop_types: string[] | null;
- sensor_modality: string | null;
- real_or_synthetic: string | null;
- platform: string | null;
- input_data_format: string | null;
- annotation_format: string | null;
- num_images: number | null;
- augmented_num_images: number | null;
- augmented_zip_size_bytes: number | null;
- documentation: string | null;
- classes: string | null;
- stats_mean: number[] | null;
- stats_std: number[] | null;
- examples_image_url: string | null;
- license: string | null;
- citation: string | null;
- parent_dataset?: string | null;
- zip_size_bytes?: number | null;
- hf_link?: string | null;
+ name: string;
+ source: "agml" | "huggingface" | string | null;
+ machine_learning_task: string | null;
+ agricultural_task: string | null;
+ location: string | string[] | null;
+ country: string | string[] | null;
+ // Derived: `country`, falling back to `location` when country wasn't extracted. Used for the
+ // search page's location filter/display so it groups by country instead of full addresses.
+ display_location: string | string[] | null;
+ lat_lon: string | string[] | null;
+ imaging_equipment: string | string[] | null;
+ collection_period: string | string[] | null;
+ environment: string | null;
+ augmented_counterpart: string | null;
+ crop_types: string[] | null;
+ sensor_modality: string | null;
+ real_or_synthetic: string | null;
+ platform: string[] | null;
+ input_data_format: string | null;
+ annotation_format: string | null;
+ num_images: number | null;
+ augmented_num_images: number | null;
+ augmented_zip_size_bytes: number | null;
+ documentation: string | null;
+ classes: string | null;
+ stats_mean: number[] | null;
+ stats_std: number[] | null;
+ examples_image_url: string | null;
+ license: string | null;
+ citation: string | null;
+ parent_dataset?: string | null;
+ zip_size_bytes?: number | null;
+ hf_link?: string | null;
+ // VLM (vision-language) dataset fields — absent/null on plain vision datasets.
+ dataset_type: "vision" | "vlm";
+ qa_type: string[] | null;
+ task_dimensions: string[] | null;
+ num_task_types: number | null;
+ conversation_format: string | null;
+ num_rows: number | null;
+ source_datasets: string[] | null;
}
type DatasetRecord = Record;
export type DatasetFieldFilter = {
- field: keyof Dataset;
- values?: string[];
- mode?: 'exact' | 'containsAny';
+ field: keyof Dataset;
+ values?: string[];
+ mode?: "exact" | "containsAny";
};
-const DATASET_MANIFESTS = ['/data/datasets.json', '/data/hf_datasets.json'] as const;
+const DATASET_MANIFESTS = [
+ "/data/datasets.json",
+ "/data/hf_datasets.json",
+] as const;
function isRecord(value: unknown): value is DatasetRecord {
- return typeof value === 'object' && value !== null && !Array.isArray(value);
+ return typeof value === "object" && value !== null && !Array.isArray(value);
}
function firstString(...values: unknown[]): string | null {
- for (const value of values) {
- if (typeof value === 'string') {
- const trimmed = value.trim();
- if (trimmed) return trimmed;
+ for (const value of values) {
+ if (typeof value === "string") {
+ const trimmed = value.trim();
+ if (trimmed) return trimmed;
+ }
}
- }
- return null;
+ return null;
}
function toNumber(value: unknown): number | null {
- if (typeof value === 'number' && Number.isFinite(value)) return value;
- if (typeof value === 'string' && value.trim()) {
- const parsed = Number(value.replace(/,/g, ''));
- return Number.isFinite(parsed) ? parsed : null;
- }
- return null;
+ if (typeof value === "number" && Number.isFinite(value)) return value;
+ if (typeof value === "string" && value.trim()) {
+ const parsed = Number(value.replace(/,/g, ""));
+ return Number.isFinite(parsed) ? parsed : null;
+ }
+ return null;
}
function toNumberArray(value: unknown): number[] | null {
- if (!Array.isArray(value)) return null;
- const numbers = value.map((entry) => toNumber(entry));
- return numbers.every((entry) => entry != null) ? (numbers as number[]) : null;
+ if (!Array.isArray(value)) return null;
+ const numbers = value.map((entry) => toNumber(entry));
+ return numbers.every((entry) => entry != null)
+ ? (numbers as number[])
+ : null;
}
function toText(value: unknown): string | null {
- if (typeof value === 'string') {
- const trimmed = value.trim();
- return trimmed ? trimmed : null;
- }
- if (typeof value === 'number' || typeof value === 'boolean') return String(value);
- if (Array.isArray(value)) {
- const parts = value.map((entry) => toText(entry)).filter((entry): entry is string => entry != null);
- return parts.length ? parts.join(', ') : null;
- }
- if (isRecord(value)) {
- const parts = Object.entries(value)
- .map(([key, entry]) => {
- const text = toText(entry);
- return text ? `${key}: ${text}` : null;
- })
- .filter((entry): entry is string => entry != null);
- return parts.length ? parts.join('; ') : null;
- }
- return null;
+ if (typeof value === "string") {
+ const trimmed = value.trim();
+ return trimmed ? trimmed : null;
+ }
+ if (typeof value === "number" || typeof value === "boolean")
+ return String(value);
+ if (Array.isArray(value)) {
+ const parts = value
+ .map((entry) => toText(entry))
+ .filter((entry): entry is string => entry != null);
+ return parts.length ? parts.join(", ") : null;
+ }
+ if (isRecord(value)) {
+ const parts = Object.entries(value)
+ .map(([key, entry]) => {
+ const text = toText(entry);
+ return text ? `${key}: ${text}` : null;
+ })
+ .filter((entry): entry is string => entry != null);
+ return parts.length ? parts.join("; ") : null;
+ }
+ return null;
}
function toStringArray(value: unknown): string[] | null {
- if (!Array.isArray(value)) return null;
- const parts = value
- .map((entry) => firstString(entry))
- .filter((entry): entry is string => entry != null);
- return parts.length ? parts : null;
+ if (!Array.isArray(value)) return null;
+ const parts = value
+ .map((entry) => firstString(entry))
+ .filter((entry): entry is string => entry != null);
+ return parts.length ? parts : null;
}
function normalizeLocation(value: unknown): string | string[] | null {
- if (Array.isArray(value)) return toStringArray(value);
- return firstString(value);
+ if (Array.isArray(value)) return toStringArray(value);
+ return firstString(value);
}
function normalizeDataset(raw: unknown): Dataset | null {
- if (!isRecord(raw)) return null;
-
- const stats = isRecord(raw.stats) ? raw.stats : null;
- const name = firstString(raw.name, raw.dataset, raw.slug, raw.id, raw.key);
- if (!name) return null;
-
- const augmentedNumImages = toNumber(raw.augmented_num_images ?? raw.augmented_n_images ?? raw.augmented_image_count);
- const augmentedCounterpart =
- firstString(raw.augmented_counterpart) ?? (augmentedNumImages != null ? 'yes' : 'no');
-
- const location = normalizeLocation(raw.location);
- const country = normalizeLocation(raw.country);
-
- return {
- name,
- machine_learning_task: firstString(raw.machine_learning_task, raw.ml_task, raw.task),
- source: firstString(raw.source),
- agricultural_task: firstString(raw.agricultural_task, raw.ag_task),
- location,
- country,
- display_location: country ?? location,
- lat_lon: normalizeLocation(raw.lat_lon),
- imaging_equipment: normalizeLocation(raw.imaging_equipment),
- collection_period: normalizeLocation(raw.collection_period),
- environment: firstString(raw.environment, raw.env, raw.image_environment)?.toLowerCase() ?? null,
- augmented_counterpart: augmentedCounterpart,
- crop_types: toStringArray(raw.crop_types ?? raw.cropType ?? raw.crop_type)?.map((c) => c.toLowerCase()) ?? null,
- sensor_modality: firstString(raw.sensor_modality, raw.sensor, raw.modality),
- real_or_synthetic: firstString(raw.real_or_synthetic, raw.real_synthetic),
- platform: firstString(raw.platform),
- input_data_format: firstString(raw.input_data_format, raw.input_format),
- annotation_format: firstString(raw.annotation_format),
- num_images: toNumber(raw.num_images ?? raw.n_images ?? raw.image_count),
- augmented_num_images: augmentedNumImages,
- augmented_zip_size_bytes: toNumber(raw.augmented_zip_size_bytes ?? raw.augmentedZipSizeBytes),
- documentation: firstString(raw.documentation, raw.docs_url, raw.doc_url, raw.url),
- classes: toText(raw.classes),
- stats_mean: toNumberArray(raw.stats_mean ?? stats?.mean),
- stats_std: toNumberArray(raw.stats_std ?? stats?.std),
- examples_image_url: firstString(raw.examples_image_url, raw.example_image_url, raw.examples_url, raw.image_url),
- license: firstString(raw.license),
- citation: firstString(raw.citation),
- parent_dataset: firstString(raw.parent_dataset, raw.parentDataset),
- zip_size_bytes: toNumber(raw.zip_size_bytes ?? raw.zipSizeBytes),
- hf_link: firstString(raw.hf_link, raw.huggingface_link, raw.hf_url),
- };
+ if (!isRecord(raw)) return null;
+
+ const stats = isRecord(raw.stats) ? raw.stats : null;
+ const name = firstString(raw.name, raw.dataset, raw.slug, raw.id, raw.key);
+ if (!name) return null;
+
+ const augmentedNumImages = toNumber(
+ raw.augmented_num_images ??
+ raw.augmented_n_images ??
+ raw.augmented_image_count,
+ );
+ const augmentedCounterpart =
+ firstString(raw.augmented_counterpart) ??
+ (augmentedNumImages != null ? "yes" : "no");
+
+ const location = normalizeLocation(raw.location);
+ const country = normalizeLocation(raw.country);
+
+ const mlTask = firstString(
+ raw.machine_learning_task,
+ raw.ml_task,
+ raw.task,
+ );
+ const qaType = toStringArray(raw.qa_type);
+ const taskDimensions = toStringArray(raw.task_dimensions);
+ const isVlm =
+ mlTask === "image-text-to-text" ||
+ Boolean(qaType?.length) ||
+ Boolean(taskDimensions?.length);
+
+ return {
+ name,
+ machine_learning_task: mlTask,
+ source: firstString(raw.source),
+ agricultural_task: firstString(raw.agricultural_task, raw.ag_task),
+ location,
+ country,
+ display_location: country ?? location,
+ lat_lon: normalizeLocation(raw.lat_lon),
+ imaging_equipment: normalizeLocation(raw.imaging_equipment),
+ collection_period: normalizeLocation(raw.collection_period),
+ environment:
+ firstString(
+ raw.environment,
+ raw.env,
+ raw.image_environment,
+ )?.toLowerCase() ?? null,
+ augmented_counterpart: augmentedCounterpart,
+ crop_types:
+ toStringArray(raw.crop_types ?? raw.cropType ?? raw.crop_type)
+ ?.map((c) => c.trim().toLowerCase())
+ .filter((c) => c && !/^\+.*\b(more|others?)\b/i.test(c)) ??
+ null,
+ sensor_modality:
+ firstString(raw.sensor_modality, raw.sensor, raw.modality) ??
+ toStringArray(raw.sensor_modality)?.join(", ") ??
+ null,
+ real_or_synthetic: firstString(
+ raw.real_or_synthetic,
+ raw.real_synthetic,
+ ),
+ platform: parsePlatform(raw.platform),
+ input_data_format: firstString(raw.input_data_format, raw.input_format),
+ annotation_format: firstString(raw.annotation_format),
+ num_images: toNumber(raw.num_images ?? raw.n_images ?? raw.image_count),
+ augmented_num_images: augmentedNumImages,
+ augmented_zip_size_bytes: toNumber(
+ raw.augmented_zip_size_bytes ?? raw.augmentedZipSizeBytes,
+ ),
+ documentation: firstString(
+ raw.documentation,
+ raw.docs_url,
+ raw.doc_url,
+ raw.url,
+ ),
+ classes: toText(raw.classes),
+ stats_mean: toNumberArray(raw.stats_mean ?? stats?.mean),
+ stats_std: toNumberArray(raw.stats_std ?? stats?.std),
+ examples_image_url: firstString(
+ raw.examples_image_url,
+ raw.example_image_url,
+ raw.examples_url,
+ raw.image_url,
+ ),
+ license: firstString(raw.license),
+ citation: firstString(raw.citation),
+ parent_dataset: firstString(raw.parent_dataset, raw.parentDataset),
+ zip_size_bytes: toNumber(raw.zip_size_bytes ?? raw.zipSizeBytes),
+ hf_link: firstString(raw.hf_link, raw.huggingface_link, raw.hf_url),
+ dataset_type: isVlm ? "vlm" : "vision",
+ qa_type: qaType,
+ task_dimensions: taskDimensions,
+ num_task_types: toNumber(raw.num_task_types),
+ conversation_format: firstString(raw.conversation_format),
+ num_rows: toNumber(raw.num_rows),
+ source_datasets: toStringArray(
+ (raw.composition as Record | undefined)
+ ?.source_datasets,
+ ),
+ };
}
function mergeDataset(current: Dataset, incoming: Dataset): Dataset {
- return {
- name: current.name,
- machine_learning_task: current.machine_learning_task ?? incoming.machine_learning_task,
- source: current.source ?? incoming.source,
- agricultural_task: current.agricultural_task ?? incoming.agricultural_task,
- location: current.location ?? incoming.location,
- country: current.country ?? incoming.country,
- display_location: current.display_location ?? incoming.display_location,
- lat_lon: current.lat_lon ?? incoming.lat_lon,
- imaging_equipment: current.imaging_equipment ?? incoming.imaging_equipment,
- collection_period: current.collection_period ?? incoming.collection_period,
- environment: current.environment ?? incoming.environment,
- augmented_counterpart: current.augmented_counterpart ?? incoming.augmented_counterpart,
- crop_types: current.crop_types ?? incoming.crop_types,
- sensor_modality: current.sensor_modality ?? incoming.sensor_modality,
- real_or_synthetic: current.real_or_synthetic ?? incoming.real_or_synthetic,
- platform: current.platform ?? incoming.platform,
- input_data_format: current.input_data_format ?? incoming.input_data_format,
- annotation_format: current.annotation_format ?? incoming.annotation_format,
- num_images: current.num_images ?? incoming.num_images,
- augmented_num_images: current.augmented_num_images ?? incoming.augmented_num_images,
- augmented_zip_size_bytes: current.augmented_zip_size_bytes ?? incoming.augmented_zip_size_bytes,
- documentation: current.documentation ?? incoming.documentation,
- classes: current.classes ?? incoming.classes,
- stats_mean: current.stats_mean ?? incoming.stats_mean,
- stats_std: current.stats_std ?? incoming.stats_std,
- examples_image_url: current.examples_image_url ?? incoming.examples_image_url,
- license: current.license ?? incoming.license,
- citation: current.citation ?? incoming.citation,
- parent_dataset: current.parent_dataset ?? incoming.parent_dataset,
- zip_size_bytes: current.zip_size_bytes ?? incoming.zip_size_bytes,
- hf_link: current.hf_link ?? incoming.hf_link,
- };
+ return {
+ name: current.name,
+ machine_learning_task:
+ current.machine_learning_task ?? incoming.machine_learning_task,
+ source: current.source ?? incoming.source,
+ agricultural_task:
+ current.agricultural_task ?? incoming.agricultural_task,
+ location: current.location ?? incoming.location,
+ country: current.country ?? incoming.country,
+ display_location: current.display_location ?? incoming.display_location,
+ lat_lon: current.lat_lon ?? incoming.lat_lon,
+ imaging_equipment: current.imaging_equipment ?? incoming.imaging_equipment,
+ collection_period: current.collection_period ?? incoming.collection_period,
+ environment: current.environment ?? incoming.environment,
+ augmented_counterpart:
+ current.augmented_counterpart ?? incoming.augmented_counterpart,
+ crop_types: current.crop_types ?? incoming.crop_types,
+ sensor_modality: current.sensor_modality ?? incoming.sensor_modality,
+ real_or_synthetic:
+ current.real_or_synthetic ?? incoming.real_or_synthetic,
+ platform:
+ current.platform || incoming.platform
+ ? Array.from(
+ new Set([
+ ...(current.platform ?? []),
+ ...(incoming.platform ?? []),
+ ]),
+ )
+ : null,
+ input_data_format:
+ current.input_data_format ?? incoming.input_data_format,
+ annotation_format:
+ current.annotation_format ?? incoming.annotation_format,
+ num_images: current.num_images ?? incoming.num_images,
+ augmented_num_images:
+ current.augmented_num_images ?? incoming.augmented_num_images,
+ augmented_zip_size_bytes:
+ current.augmented_zip_size_bytes ??
+ incoming.augmented_zip_size_bytes,
+ documentation: current.documentation ?? incoming.documentation,
+ classes: current.classes ?? incoming.classes,
+ stats_mean: current.stats_mean ?? incoming.stats_mean,
+ stats_std: current.stats_std ?? incoming.stats_std,
+ examples_image_url:
+ current.examples_image_url ?? incoming.examples_image_url,
+ license: current.license ?? incoming.license,
+ citation: current.citation ?? incoming.citation,
+ parent_dataset: current.parent_dataset ?? incoming.parent_dataset,
+ zip_size_bytes: current.zip_size_bytes ?? incoming.zip_size_bytes,
+ hf_link: current.hf_link ?? incoming.hf_link,
+ dataset_type:
+ current.dataset_type === "vlm" || incoming.dataset_type === "vlm"
+ ? "vlm"
+ : "vision",
+ qa_type: current.qa_type ?? incoming.qa_type,
+ task_dimensions: current.task_dimensions ?? incoming.task_dimensions,
+ num_task_types: current.num_task_types ?? incoming.num_task_types,
+ conversation_format:
+ current.conversation_format ?? incoming.conversation_format,
+ num_rows: current.num_rows ?? incoming.num_rows,
+ source_datasets: current.source_datasets ?? incoming.source_datasets,
+ };
}
function normalizeManifest(json: unknown): Dataset[] {
- const records = Array.isArray(json) ? json : isRecord(json) ? Object.values(json) : [];
- return records.map(normalizeDataset).filter((entry): entry is Dataset => entry != null);
+ const records = Array.isArray(json)
+ ? json
+ : isRecord(json)
+ ? Object.values(json)
+ : [];
+ return records
+ .map(normalizeDataset)
+ .filter((entry): entry is Dataset => entry != null);
}
async function fetchManifest(manifestUrl: string): Promise {
- const response = await fetch(manifestUrl);
- if (!response.ok) {
- throw new Error(`Failed to load ${manifestUrl}`);
- }
- return normalizeManifest(await response.json());
+ const response = await fetch(manifestUrl);
+ if (!response.ok) {
+ throw new Error(`Failed to load ${manifestUrl}`);
+ }
+ return normalizeManifest(await response.json());
}
export async function loadDatasets(manifestUrls: string[]): Promise {
- const results = await Promise.allSettled(manifestUrls.map((manifestUrl) => fetchManifest(manifestUrl)));
- const merged = new Map();
- let loadedAny = false;
-
- for (const result of results) {
- if (result.status !== 'fulfilled') continue;
- loadedAny = true;
- for (const entry of result.value) {
- const existing = merged.get(entry.name);
- merged.set(entry.name, existing ? mergeDataset(existing, entry) : entry);
+ const results = await Promise.allSettled(
+ manifestUrls.map((manifestUrl) => fetchManifest(manifestUrl)),
+ );
+ const merged = new Map();
+ let loadedAny = false;
+
+ for (const result of results) {
+ if (result.status !== "fulfilled") continue;
+ loadedAny = true;
+ for (const entry of result.value) {
+ const existing = merged.get(entry.name);
+ merged.set(
+ entry.name,
+ existing ? mergeDataset(existing, entry) : entry,
+ );
+ }
}
- }
- if (loadedAny) {
- return Array.from(merged.values()).sort((a, b) => a.name.localeCompare(b.name));
- }
+ if (loadedAny) {
+ return Array.from(merged.values()).sort((a, b) =>
+ a.name.localeCompare(b.name),
+ );
+ }
- const firstError = results.find((result): result is PromiseRejectedResult => result.status === 'rejected');
- throw firstError?.reason instanceof Error ? firstError.reason : new Error('Failed to load datasets');
-}
-
-export function useDatasets(): { data: Dataset[]; loading: boolean; error: Error | null } {
- const [data, setData] = useState([]);
- const [loading, setLoading] = useState(true);
- const [error, setError] = useState(null);
- const resolvedManifestUrls = DATASET_MANIFESTS.map((manifest) => useBaseUrl(manifest));
- // Memoized off the individual (stable) resolved URLs rather than reusing the array
- // from .map() above, which is a new reference every render and would otherwise
- // retrigger the effect below on every single render — an infinite fetch loop.
- const manifestUrls = useMemo(() => resolvedManifestUrls, resolvedManifestUrls);
-
- useEffect(() => {
- let active = true;
- loadDatasets(manifestUrls)
- .then((next) => {
- if (!active) return;
- setData(next);
- })
- .catch((err) => {
- if (!active) return;
- setError(err instanceof Error ? err : new Error('Failed to load datasets'));
- })
- .finally(() => {
- if (!active) return;
- setLoading(false);
- });
-
- return () => {
- active = false;
- };
- }, [manifestUrls]);
+ const firstError = results.find(
+ (result): result is PromiseRejectedResult =>
+ result.status === "rejected",
+ );
+ throw firstError?.reason instanceof Error
+ ? firstError.reason
+ : new Error("Failed to load datasets");
+}
- return { data, loading, error };
+export function useDatasets(): {
+ data: Dataset[];
+ loading: boolean;
+ error: Error | null;
+} {
+ const [data, setData] = useState([]);
+ const [loading, setLoading] = useState(true);
+ const [error, setError] = useState(null);
+ const resolvedManifestUrls = DATASET_MANIFESTS.map((manifest) =>
+ useBaseUrl(manifest),
+ );
+ // Memoized off the individual (stable) resolved URLs rather than reusing the array
+ // from .map() above, which is a new reference every render and would otherwise
+ // retrigger the effect below on every single render — an infinite fetch loop.
+ const manifestUrls = useMemo(
+ () => resolvedManifestUrls,
+ resolvedManifestUrls,
+ );
+
+ useEffect(() => {
+ let active = true;
+ loadDatasets(manifestUrls)
+ .then((next) => {
+ if (!active) return;
+ setData(next);
+ })
+ .catch((err) => {
+ if (!active) return;
+ setError(
+ err instanceof Error
+ ? err
+ : new Error("Failed to load datasets"),
+ );
+ })
+ .finally(() => {
+ if (!active) return;
+ setLoading(false);
+ });
+
+ return () => {
+ active = false;
+ };
+ }, [manifestUrls]);
+
+ return { data, loading, error };
}
-function matchesFieldValue(value: string | string[] | null | undefined, values: string[], mode: 'exact' | 'containsAny') {
- if (value == null || values.length === 0) return false;
- if (Array.isArray(value)) {
- return mode === 'containsAny'
- ? value.some((entry) => values.includes(entry))
- : value.some((entry) => values.includes(entry));
- }
- if (mode === 'containsAny') {
- return values.some((entry) => value.toLowerCase().includes(entry.toLowerCase()));
- }
- return values.includes(value);
+function matchesFieldValue(
+ value: string | string[] | null | undefined,
+ values: string[],
+ mode: "exact" | "containsAny",
+) {
+ if (value == null || values.length === 0) return false;
+ if (Array.isArray(value)) {
+ return mode === "containsAny"
+ ? value.some((entry) => values.includes(entry))
+ : values.length === value.length && values.every((entry) => value.includes(entry));
+ }
+ if (mode === "containsAny") {
+ return values.some((entry) =>
+ value.toLowerCase().includes(entry.toLowerCase()),
+ );
+ }
+ return values.includes(value);
}
export function filterDatasets(
- datasets: Dataset[],
- opts: {
- q?: string;
- fieldFilters?: DatasetFieldFilter[];
- mlTasks?: string[];
- agTasks?: string[];
- platforms?: string[];
- realOrSynthetic?: string[];
- includeChildren?: boolean;
- }
+ datasets: Dataset[],
+ opts: {
+ q?: string;
+ fieldFilters?: DatasetFieldFilter[];
+ mlTasks?: string[];
+ agTasks?: string[];
+ platforms?: string[];
+ realOrSynthetic?: string[];
+ includeChildren?: boolean;
+ },
): Dataset[] {
- let out = datasets;
+ let out = datasets;
- if (opts.includeChildren === false) {
- out = out.filter((d) => !d.parent_dataset);
- }
+ if (opts.includeChildren === false) {
+ out = out.filter((d) => !isChildDataset(d));
+ }
- if (opts.q?.trim()) {
- const q = opts.q.trim().toLowerCase();
- out = out.filter((d) => {
- const locationMatches = Array.isArray(d.location)
- ? d.location.some((entry) => entry.toLowerCase().includes(q))
- : d.location?.toLowerCase().includes(q) ?? false;
- const cropMatches = d.crop_types?.some((entry) => entry.toLowerCase().includes(q)) ?? false;
- const countryMatches = Array.isArray(d.country)
- ? d.country.some((entry) => entry.toLowerCase().includes(q))
- : d.country?.toLowerCase().includes(q) ?? false;
- return (
- d.name.toLowerCase().includes(q) ||
- d.agricultural_task?.toLowerCase().includes(q) ||
- d.machine_learning_task?.toLowerCase().includes(q) ||
- d.environment?.toLowerCase().includes(q) ||
- d.augmented_counterpart?.toLowerCase().includes(q) ||
- d.platform?.toLowerCase().includes(q) ||
- countryMatches ||
- locationMatches ||
- cropMatches
- );
- });
- }
+ if (opts.q?.trim()) {
+ const q = opts.q.trim().toLowerCase();
+ out = out.filter((d) => {
+ const locationMatches = Array.isArray(d.location)
+ ? d.location.some((entry) => entry.toLowerCase().includes(q))
+ : (d.location?.toLowerCase().includes(q) ?? false);
+ const countryMatches = Array.isArray(d.country)
+ ? d.country.some((entry) => entry.toLowerCase().includes(q))
+ : (d.country?.toLowerCase().includes(q) ?? false);
+ const cropMatches =
+ d.crop_types?.some((entry) =>
+ entry.toLowerCase().includes(q),
+ ) ?? false;
+ return (
+ d.name.toLowerCase().includes(q) ||
+ d.agricultural_task?.toLowerCase().includes(q) ||
+ d.machine_learning_task?.toLowerCase().includes(q) ||
+ d.environment?.toLowerCase().includes(q) ||
+ d.augmented_counterpart?.toLowerCase().includes(q) ||
+ d.platform?.some((p) => p.toLowerCase().includes(q)) ||
+ countryMatches ||
+ locationMatches ||
+ cropMatches
+ );
+ });
+ }
- for (const filter of opts.fieldFilters ?? []) {
- if (!filter.values?.length) continue;
- out = out.filter((dataset) => matchesFieldValue(dataset[filter.field] as string | string[] | null | undefined, filter.values!, filter.mode ?? 'exact'));
- }
+ for (const filter of opts.fieldFilters ?? []) {
+ if (!filter.values?.length) continue;
+ out = out.filter((dataset) =>
+ matchesFieldValue(
+ dataset[filter.field] as string | string[] | null | undefined,
+ filter.values!,
+ filter.mode ?? "exact",
+ ),
+ );
+ }
- if (opts.mlTasks?.length) {
- out = out.filter((d) => d.machine_learning_task != null && opts.mlTasks!.includes(d.machine_learning_task));
- }
- if (opts.agTasks?.length) {
- out = out.filter((d) => d.agricultural_task != null && opts.agTasks!.includes(d.agricultural_task));
- }
- if (opts.platforms?.length) {
- out = out.filter((d) => d.platform != null && opts.platforms!.includes(d.platform));
- }
- if (opts.realOrSynthetic?.length) {
- out = out.filter((d) => d.real_or_synthetic != null && opts.realOrSynthetic!.includes(d.real_or_synthetic));
- }
+ if (opts.mlTasks?.length) {
+ out = out.filter(
+ (d) =>
+ d.machine_learning_task != null &&
+ opts.mlTasks!.includes(d.machine_learning_task),
+ );
+ }
+ if (opts.agTasks?.length) {
+ out = out.filter(
+ (d) =>
+ d.agricultural_task != null &&
+ opts.agTasks!.includes(d.agricultural_task),
+ );
+ }
+ if (opts.platforms?.length) {
+ out = out.filter(
+ (d) =>
+ d.platform != null &&
+ d.platform.some((p) => opts.platforms!.includes(p)),
+ );
+ }
+ if (opts.realOrSynthetic?.length) {
+ out = out.filter(
+ (d) =>
+ d.real_or_synthetic != null &&
+ opts.realOrSynthetic!.includes(d.real_or_synthetic),
+ );
+ }
- return out;
+ return out;
}
export function useDatasetOptions(data: Dataset[]) {
- return useMemo(() => {
- const unique = (values: Array, sort = true) => {
- const flattened = values.flatMap((value) => (Array.isArray(value) ? value : value != null ? [value] : []));
- const set = new Set(flattened.filter((value) => Boolean(value && String(value).trim())));
- const list = Array.from(set);
- if (sort) list.sort((a, b) => a.localeCompare(b));
- return list;
- };
+ return useMemo(() => {
+ const unique = (
+ values: Array,
+ sort = true,
+ ) => {
+ const flattened = values.flatMap((value) =>
+ Array.isArray(value) ? value : value != null ? [value] : [],
+ );
+ const set = new Set(
+ flattened.filter((value) =>
+ Boolean(value && String(value).trim()),
+ ),
+ );
+ const list = Array.from(set);
+ if (sort) list.sort((a, b) => a.localeCompare(b));
+ return list;
+ };
+
+ return {
+ mlTasks: unique(data.map((d) => d.machine_learning_task)),
+ agTasks: unique(data.map((d) => d.agricultural_task)),
+ environments: unique(data.map((d) => d.environment)),
+ augmentedCounterparts: unique(
+ data.map((d) => d.augmented_counterpart),
+ ),
+ cropTypes: unique(data.flatMap((d) => d.crop_types ?? [])),
+ locations: unique(data.map((d) => d.display_location)),
+ platforms: unique(data.flatMap((d) => d.platform ?? [])),
+ realOptions: unique(data.map((d) => d.real_or_synthetic)),
+ datasetTypes: unique(data.map((d) => d.dataset_type)),
+ qaTypes: unique(data.flatMap((d) => d.qa_type ?? [])),
+ taskDimensions: unique(
+ data.flatMap((d) => d.task_dimensions ?? []),
+ ),
+ };
+ }, [data]);
+}
- return {
- mlTasks: unique(data.map((d) => d.machine_learning_task)),
- agTasks: unique(data.map((d) => d.agricultural_task)),
- environments: unique(data.map((d) => d.environment)),
- augmentedCounterparts: unique(data.map((d) => d.augmented_counterpart)),
- cropTypes: unique(data.flatMap((d) => d.crop_types ?? [])),
- locations: unique(data.map((d) => d.display_location)),
- platforms: unique(data.map((d) => d.platform)),
- realOptions: unique(data.map((d) => d.real_or_synthetic)),
- };
- }, [data]);
+export function toTitleCase(value: string): string {
+ return toDisplayLabel(value);
}
-export function formatDisplayLocation(value: string | string[] | null | undefined): string {
- if (value == null) return '—';
- return Array.isArray(value) ? value.join(', ') : value;
+function parsePlatform(raw: unknown): string[] | null {
+ const tokens: string[] = [];
+ const pushSplit = (s: string) =>
+ s.split(",").forEach((part) => {
+ const t = part.trim();
+ if (t) tokens.push(t);
+ });
+ if (Array.isArray(raw)) {
+ raw.forEach((entry) => {
+ if (typeof entry === "string") pushSplit(entry);
+ });
+ } else if (typeof raw === "string") {
+ pushSplit(raw);
+ }
+ if (!tokens.length) return null;
+ const seen = new Map();
+ for (const t of tokens) {
+ const key = t.toLowerCase();
+ if (!seen.has(key)) seen.set(key, toTitleCase(t));
+ }
+ return Array.from(seen.values());
+}
+
+export function formatDisplayLocation(
+ value: string | string[] | null | undefined,
+): string {
+ if (value == null) return "—";
+ return Array.isArray(value)
+ ? value.map(toTitleCase).join(", ")
+ : toTitleCase(value);
}
// Primary location label used on cards/badges: prefer the structured `country` field,
@@ -470,25 +679,43 @@ export function formatCoordinateList(value: string | string[] | null): string[]
}
export interface DatasetStats {
- datasetCount: number;
- imageCount: number;
- taskTypeCount: number;
+ datasetCount: number;
+ imageCount: number;
+ taskTypeCount: number;
+}
+
+// `parent_dataset` means two different things depending on the record. On vision datasets it
+// marks a child/augmented variant of another AgML dataset, which shouldn't be counted or listed
+// separately. On VLM records it's a pointer to the upstream source the dataset was built from
+// (a Hugging Face repo slug), and those are standalone top-level datasets — so reading the field
+// as "this is a child" there wrongly hid all six of them from the counts and listings.
+export function isChildDataset(dataset: Dataset): boolean {
+ return Boolean(dataset.parent_dataset) && dataset.dataset_type !== "vlm";
+}
+
+// Key for counting *distinct* datasets: child variants collapse onto their parent so an
+// augmented counterpart isn't counted twice, while VLM records key on their own name rather
+// than the upstream repo slug (which names a Hugging Face repo, not an AgML dataset).
+export function datasetGroupKey(dataset: Dataset): string {
+ return isChildDataset(dataset) ? dataset.parent_dataset! : dataset.name;
}
// Shared by the homepage stats row and the dataset search page's hero stats, so both
// report the same real numbers instead of two slightly different ad-hoc counts.
export function computeDatasetStats(datasets: Dataset[]): DatasetStats {
- const topLevel = datasets.filter((dataset) => !dataset.parent_dataset);
- const imageCount = topLevel
- .filter((dataset) => !dataset.name.startsWith('iNatAg-mini'))
- .reduce((sum, dataset) => sum + (dataset.num_images ?? 0), 0);
- const taskTypeCount = new Set(
- datasets.map((dataset) => dataset.machine_learning_task).filter((task): task is string => Boolean(task))
- ).size;
-
- return {
- datasetCount: topLevel.length,
- imageCount,
- taskTypeCount,
- };
-}
+ const topLevel = datasets.filter((dataset) => !isChildDataset(dataset));
+ const imageCount = topLevel
+ .filter((dataset) => !dataset.name.startsWith("iNatAg-mini"))
+ .reduce((sum, dataset) => sum + (dataset.num_images ?? 0), 0);
+ const taskTypeCount = new Set(
+ datasets
+ .map((dataset) => dataset.machine_learning_task)
+ .filter((task): task is string => Boolean(task)),
+ ).size;
+
+ return {
+ datasetCount: topLevel.length,
+ imageCount,
+ taskTypeCount,
+ };
+}
\ No newline at end of file
diff --git a/src/lib/labelOverrides.ts b/src/lib/labelOverrides.ts
new file mode 100644
index 0000000..a057e34
--- /dev/null
+++ b/src/lib/labelOverrides.ts
@@ -0,0 +1,74 @@
+// Explicit display-label overrides for raw dataset field values (task types, platforms,
+// modalities, QA types, etc). Add an entry here whenever the auto-generated Title Case
+// (underscores/hyphens replaced, each word capitalized) isn't right — acronyms, special casing.
+export const LABEL_OVERRIDES: Record = {
+ /* machine_learning_task */
+ "image-text-to-text": "Image Text To Text",
+ image_classification: "Image Classification",
+ object_detection: "Object Detection",
+ semantic_segmentation: "Semantic Segmentation",
+ instance_segmentation: "Instance Segmentation",
+ image_regression: "Image Regression",
+
+ /* qa_type */
+ judgement: "Judgement",
+ counting: "Counting",
+ multiple_choice_text: "Multiple Choice Text",
+ multiple_choice_image: "Multiple Choice Image",
+ open_ended: "Open Ended",
+ long_form_qa: "Long Form QA",
+
+ /* conversation_format */
+ single_turn_reasoning: "Single Turn Reasoning",
+ multi_turn_reasoning: "Multi Turn Reasoning",
+ mixed: "Mixed",
+
+ /* environment */
+ field: "Field",
+ lab: "Lab",
+
+ /* real_or_synthetic */
+ real: "Real",
+ synthetic: "Synthetic",
+
+ /* platform */
+ ground: "Ground",
+ "ground camera": "Ground Camera",
+ handheld: "Handheld",
+ "handheld/ground": "Handheld/Ground",
+ ground_fixed: "Ground Fixed",
+ ground_mobile: "Ground Mobile",
+ aerial: "Aerial",
+ satellite: "Satellite",
+ uav: "UAV",
+ uas: "UAS",
+
+ /* sensor_modality (acronym casing, used where title-cased elsewhere) */
+ rgb: "RGB",
+ nir: "NIR",
+ "nir multispectral": "NIR Multispectral",
+ multispectral: "Multispectral",
+ gps: "GPS",
+ lidar: "LIDAR",
+ uv: "UV",
+ ir: "IR",
+
+ /* country */
+ usa: "USA",
+};
+
+function autoTitleCase(value: string): string {
+ return value
+ .replace(/[_-]/g, " ")
+ .split(" ")
+ .map((word) =>
+ word ? word[0].toUpperCase() + word.slice(1).toLowerCase() : word,
+ )
+ .join(" ");
+}
+
+// Looks up an explicit override (case-insensitive); falls back to auto Title Case.
+export function toDisplayLabel(value: string): string {
+ const override = LABEL_OVERRIDES[value.toLowerCase()];
+ return override ?? autoTitleCase(value);
+}
\ No newline at end of file
diff --git a/src/lib/plotlyChrome.ts b/src/lib/plotlyChrome.ts
new file mode 100644
index 0000000..0099e60
--- /dev/null
+++ b/src/lib/plotlyChrome.ts
@@ -0,0 +1,87 @@
+import { useMemo } from 'react';
+import { useColorMode } from '@docusaurus/theme-common';
+
+// Modern browsers serialize getComputedStyle().color back in whatever color space it was
+// declared in — the site's --agml-* tokens are oklch(), so a naive resolve returns an
+// oklch() string verbatim. Plotly's WebGL/SVG color parsing doesn't understand that syntax,
+// so it silently ignores the color and falls back to its own default. Convert explicitly.
+// (OKLCH -> OKLab -> linear sRGB -> sRGB, per the CSS Color 4 reference algorithm.)
+// Exported for reuse by anything that needs to hand Plotly a procedurally generated OKLCH
+// color (e.g. per-class hues) rather than one resolved from a CSS variable.
+export function oklchToRgb(l: number, c: number, hDeg: number): string {
+ const hRad = (hDeg * Math.PI) / 180;
+ const a = c * Math.cos(hRad);
+ const b = c * Math.sin(hRad);
+
+ const l_ = l + 0.3963377774 * a + 0.2158037573 * b;
+ const m_ = l - 0.1055613458 * a - 0.0638541728 * b;
+ const s_ = l - 0.0894841775 * a - 1.291485548 * b;
+
+ const l3 = l_ ** 3;
+ const m3 = m_ ** 3;
+ const s3 = s_ ** 3;
+
+ const rLin = 4.0767416621 * l3 - 3.3077115913 * m3 + 0.2309699292 * s3;
+ const gLin = -1.2684380046 * l3 + 2.6097574011 * m3 - 0.3413193965 * s3;
+ const bLin = -0.0041960863 * l3 - 0.7034186147 * m3 + 1.707614701 * s3;
+
+ const toSrgb = (channel: number) => {
+ const clamped = channel <= 0.0031308 ? 12.92 * channel : 1.055 * Math.pow(Math.max(channel, 0), 1 / 2.4) - 0.055;
+ return Math.max(0, Math.min(255, Math.round(clamped * 255)));
+ };
+
+ return `rgb(${toSrgb(rLin)}, ${toSrgb(gLin)}, ${toSrgb(bLin)})`;
+}
+
+function normalizeColor(color: string): string {
+ const match = /oklch\(\s*([\d.]+)\s+([\d.]+)\s+([\d.]+)/i.exec(color);
+ if (!match) return color;
+ const [, l, c, h] = match;
+ return oklchToRgb(Number(l), Number(c), Number(h));
+}
+
+function resolveCssColor(varName: string, fallback: string): string {
+ if (typeof document === 'undefined') return fallback;
+ const probe = document.createElement('span');
+ probe.style.color = `var(${varName})`;
+ probe.style.position = 'absolute';
+ probe.style.visibility = 'hidden';
+ document.body.appendChild(probe);
+ const resolved = getComputedStyle(probe).color;
+ document.body.removeChild(probe);
+ return resolved ? normalizeColor(resolved) : fallback;
+}
+
+function resolveCssFontFamily(varName: string, fallback: string): string {
+ if (typeof document === 'undefined') return fallback;
+ const probe = document.createElement('span');
+ probe.style.fontFamily = `var(${varName})`;
+ probe.style.position = 'absolute';
+ probe.style.visibility = 'hidden';
+ document.body.appendChild(probe);
+ const resolved = getComputedStyle(probe).fontFamily;
+ document.body.removeChild(probe);
+ return resolved || fallback;
+}
+
+// Plotly's WebGL/SVG chrome can't consume CSS custom properties directly — resolve the site's
+// actual computed colors/fonts so chart chrome (axis lines, grid, tick labels, hover tooltip)
+// tracks the design system's --agml-*/--ifm-* tokens (and light/dark mode) instead of guessed
+// literals. Recomputed whenever the theme toggles.
+export function usePlotlyChrome() {
+ const { colorMode } = useColorMode();
+ return useMemo(
+ () => ({
+ grid: resolveCssColor('--agml-border', '#33383a'),
+ text: resolveCssColor('--agml-muted', '#8a8f8c'),
+ tooltipBg: resolveCssColor('--agml-tag-bg', '#1c211d'),
+ tooltipBorder: resolveCssColor('--agml-border-strong', '#3a4038'),
+ tooltipText: resolveCssColor('--agml-text', '#e8ece9'),
+ // Ring color for marker outlines — matches the panel surface so overlapping points
+ // separate via a gap rather than a contrasting stroke.
+ markerRing: resolveCssColor('--agml-surface-soft', '#171a17'),
+ fontFamily: resolveCssFontFamily('--ifm-code-font-family', 'monospace'),
+ }),
+ [colorMode],
+ );
+}
diff --git a/src/lib/scoring.ts b/src/lib/scoring.ts
new file mode 100644
index 0000000..a7e27eb
--- /dev/null
+++ b/src/lib/scoring.ts
@@ -0,0 +1,92 @@
+// Implements the scoring formulas from SCORING_FORMULAS.md against a benchmark report. Kept
+// separate from benchmarks.ts (data fetching) and DatasetMetadataModal.tsx (rendering) so the
+// math has one source of truth that matches the published doc line for line.
+import type { ImageClassificationBenchmark } from './benchmarks';
+
+export interface AxisScores {
+ overall: number | null;
+ structural: number | null;
+ difficulty: number | null;
+ diversity: number | null;
+ annotation: number | null;
+}
+
+function clamp(x: number, min: number, max: number): number {
+ return Math.min(Math.max(x, min), max);
+}
+
+// A metric is "available" if its key exists in `metrics` and isn't a skipped run (e.g.
+// metadata_coverage with no metadata columns detected).
+function has(metrics: ImageClassificationBenchmark['metrics'], key: keyof ImageClassificationBenchmark['metrics']): boolean {
+ const value = metrics[key];
+ return value != null && !(value as { skipped?: boolean }).skipped;
+}
+
+export function computeScores(benchmark: ImageClassificationBenchmark): AxisScores {
+ const m = benchmark.metrics;
+ const phases = benchmark.phases_completed ?? [];
+ const p1 = phases.includes(1);
+ const p2 = phases.includes(2);
+ const p3 = phases.includes(3);
+
+ const axes: Partial> = {};
+
+ // Axis 1 — Structural Quality
+ if (p1 && has(m, 'class_imbalance') && has(m, 'exact_duplicate') && has(m, 'near_duplicate') && has(m, 'resolution_consistency')) {
+ const balance = clamp(m.class_imbalance!.normalized_entropy * 10, 0, 10);
+ const combined = m.exact_duplicate!.exact_duplicate_rate + m.near_duplicate!.near_duplicate_rate;
+ const redundancy = clamp(10 * (1 - combined / 0.2), 0, 10);
+ const resolution = clamp(10 * (1 - m.resolution_consistency!.area_cv), 0, 10);
+ const crossSplit = m.exact_duplicate!.cross_split_duplicates + m.near_duplicate!.cross_split_near_duplicates;
+ const totalImages = m.exact_duplicate!.total_images;
+ const penalty = totalImages > 0 ? clamp((crossSplit * 100) / totalImages, 0, 2) : 0;
+ axes.structural = clamp(0.4 * balance + 0.35 * redundancy + 0.25 * resolution - penalty, 0, 10);
+ }
+
+ // Axis 2 — Content Difficulty
+ if (p2 && has(m, 'feature_separability')) {
+ const sep = m.feature_separability!;
+ const sil = clamp(sep.silhouette_score * 10, 0, 10);
+ const db = clamp(10 - sep.davies_bouldin_index * 3, 0, 10);
+ const separability = (sil + db) / 2;
+ if (p3 && has(m, 'dataset_cartography') && has(m, 'class_confusability')) {
+ const cart = clamp(10 * (1 - m.dataset_cartography!.pct_hard / 50), 0, 10);
+ const conf = clamp(m.class_confusability!.accuracy * 10, 0, 10);
+ axes.difficulty = 0.4 * separability + 0.3 * cart + 0.3 * conf;
+ } else {
+ axes.difficulty = separability;
+ }
+ }
+
+ // Axis 3 — Diversity & Coverage
+ if (p2 && has(m, 'intra_class_diversity')) {
+ axes.diversity = clamp((m.intra_class_diversity!.mean_diversity / 0.4) * 10, 0, 10);
+ }
+
+ // Axis 4 — Annotation Reliability
+ if (p3 && has(m, 'label_noise')) {
+ // Base is clamped to [0, 1] before the fractional exponent: a negative base raised to a
+ // fractional power is undefined (NaN in JS), and the doc's intent is to floor the score at
+ // 0 once noise reaches 10%, not to produce NaN beyond that point.
+ const base = clamp(1 - m.label_noise!.estimated_noise_rate / 0.1, 0, 1);
+ axes.annotation = clamp(10 * Math.pow(base, 1.5), 0, 10);
+ }
+
+ const weights: Record = { structural: 0.3, difficulty: 0.25, diversity: 0.25, annotation: 0.2 };
+ let weightedSum = 0;
+ let totalWeight = 0;
+ for (const [axis, score] of Object.entries(axes)) {
+ weightedSum += score * weights[axis];
+ totalWeight += weights[axis];
+ }
+ const overall = totalWeight > 0 ? weightedSum / totalWeight : null;
+
+ const round1 = (value: number | undefined) => (value != null ? Math.round(value * 10) / 10 : null);
+ return {
+ overall: round1(overall ?? undefined),
+ structural: round1(axes.structural),
+ difficulty: round1(axes.difficulty),
+ diversity: round1(axes.diversity),
+ annotation: round1(axes.annotation),
+ };
+}
diff --git a/src/lib/semanticSearchIndex.ts b/src/lib/semanticSearchIndex.ts
index 4c4d4a3..3b7a868 100644
--- a/src/lib/semanticSearchIndex.ts
+++ b/src/lib/semanticSearchIndex.ts
@@ -62,7 +62,7 @@ export function buildIndexRow(name: string, dataset: Dataset | undefined) {
location: toLocationArray(dataset?.location),
environment: dataset?.environment ? humanize(dataset.environment) : '',
sensor_modality: dataset?.sensor_modality ? humanize(dataset.sensor_modality) : '',
- platform: dataset?.platform ? humanize(dataset.platform) : '',
+ platform: dataset?.platform?.length ? humanize(dataset.platform.join(', ')) : '',
// Truncated to match scripts/generate-embeddings.mjs's buildEmbeddingText(), which truncates
// `classes` to the same length for the corpus-side embedding text. This only lines up because
// both sides join array-valued `classes` with ', ' before truncating — `dataset.classes` here
diff --git a/src/pages/datasets/index.module.css b/src/pages/datasets/index.module.css
index 32f9694..6ef7aeb 100644
--- a/src/pages/datasets/index.module.css
+++ b/src/pages/datasets/index.module.css
@@ -231,6 +231,11 @@
color: var(--agml-badge-other-fg);
}
+.badgeVlm {
+ background: var(--agml-badge-vlm-bg);
+ color: var(--agml-badge-vlm-fg);
+}
+
.tag {
font-family: var(--ifm-code-font-family);
font-size: 0.68rem;
diff --git a/src/pages/datasets/index.tsx b/src/pages/datasets/index.tsx
index d4e8770..8034599 100644
--- a/src/pages/datasets/index.tsx
+++ b/src/pages/datasets/index.tsx
@@ -4,7 +4,8 @@ import { useHistory, useLocation } from '@docusaurus/router';
import { DatasetMetadataModal } from '../../components/DatasetMetadataModal';
import { MultiSelectDropdown } from '../../components/MultiSelectDropdown';
import styles from './index.module.css';
-import { computeDatasetStats, filterDatasets, formatPrimaryLocation, useDatasets } from '../../lib/datasets';
+import { computeDatasetStats, datasetGroupKey, filterDatasets, formatPrimaryLocation, useDatasets } from '../../lib/datasets';
+import { toDisplayLabel } from '../../lib/labelOverrides';
import { useSemanticDatasetSearch } from '../../lib/semanticSearch';
type FilterKind = 'checkbox' | 'dropdown';
@@ -24,14 +25,14 @@ const DATASET_FILTERS: DatasetFilterConfig[] = [
label: 'CV Task',
field: 'machine_learning_task',
kind: 'checkbox',
- formatOption: (value) => value.replace(/_/g, ' '),
+ formatOption: (value) => toDisplayLabel(value),
},
{
key: 'ag_task',
label: 'Agricultural Task',
field: 'agricultural_task',
kind: 'dropdown',
- formatOption: (value) => value.replace(/_/g, ' '),
+ formatOption: (value) => toDisplayLabel(value),
},
{
key: 'crop_types',
@@ -39,7 +40,7 @@ const DATASET_FILTERS: DatasetFilterConfig[] = [
field: 'crop_types',
kind: 'dropdown',
mode: 'containsAny',
- formatOption: (value) => value.replace(/_/g, ' '),
+ formatOption: (value) => toDisplayLabel(value),
},
{
key: 'location',
@@ -47,28 +48,37 @@ const DATASET_FILTERS: DatasetFilterConfig[] = [
field: 'display_location',
kind: 'dropdown',
mode: 'containsAny',
- formatOption: (value) => value,
- },
- {
- key: 'environment',
- label: 'Environment',
- field: 'environment',
- kind: 'checkbox',
- formatOption: (value) => value.charAt(0).toUpperCase() + value.slice(1),
+ formatOption: (value) => toDisplayLabel(value),
},
{
key: 'platform',
label: 'Platform',
field: 'platform',
kind: 'dropdown',
- formatOption: (value) => value,
+ mode: 'containsAny',
+ formatOption: (value) => toDisplayLabel(value),
+ },
+ {
+ key: 'qa_type',
+ label: 'QA Type',
+ field: 'qa_type',
+ kind: 'dropdown',
+ mode: 'containsAny',
+ formatOption: (value) => toDisplayLabel(value),
+ },
+ {
+ key: 'environment',
+ label: 'Environment',
+ field: 'environment',
+ kind: 'checkbox',
+ formatOption: (value) => toDisplayLabel(value),
},
{
key: 'real',
label: 'Data Type',
field: 'real_or_synthetic',
kind: 'checkbox',
- formatOption: (value) => value,
+ formatOption: (value) => toDisplayLabel(value),
},
{
key: 'augmented_counterpart',
@@ -76,7 +86,7 @@ const DATASET_FILTERS: DatasetFilterConfig[] = [
field: 'augmented_counterpart',
kind: 'checkbox',
formatOption: (value) => (value === 'yes' ? 'Yes' : 'No'),
- },
+ }
];
type FilterKey = (typeof DATASET_FILTERS)[number]['key'];
@@ -118,6 +128,7 @@ function formatBytesDecimal(bytes: number | null | undefined) {
function taskBadgeClass(task: string | null): string {
if (!task) return styles.badgeOther;
+ if (task.includes('image-text') || task.includes('text-to-text')) return styles.badgeVlm;
if (task.includes('classif')) return styles.badgeClassification;
if (task.includes('detect')) return styles.badgeDetection;
if (task.includes('segment')) return styles.badgeSegmentation;
@@ -187,13 +198,19 @@ function DatasetCard({
machine_learning_task,
agricultural_task,
num_images,
+ num_rows,
zip_size_bytes,
augmented_num_images,
augmented_zip_size_bytes,
+ dataset_type,
} = dataset;
const fileSize = formatBytesDecimal(zip_size_bytes);
const augmentedFileSize = formatBytesDecimal(augmented_zip_size_bytes);
const hasAugmented = augmented_num_images != null;
+ // VLM datasets are row-based (image/text pairs, conversations) rather than image-count based.
+ const isVlm = dataset_type === 'vlm';
+ const countLabel = isVlm ? 'rows' : 'images';
+ const countValue = isVlm ? num_rows : num_images;
const primaryLocation = formatPrimaryLocation(dataset);
return (
@@ -210,15 +227,15 @@ function DatasetCard({
{machine_learning_task && (
- {toLabel(machine_learning_task)}
+ {toDisplayLabel(machine_learning_task)}
)}
- {agricultural_task && {toLabel(agricultural_task)} }
+ {agricultural_task && {toDisplayLabel(agricultural_task)} }
{primaryLocation && {primaryLocation} }
- {formatImageCount(num_images)} images
+ {formatImageCount(countValue)} {countLabel}
{fileSize && {fileSize} }
{hasAugmented && (
@@ -326,7 +343,7 @@ export default function DatasetBrowserPage() {
const fieldValue = dataset[filter.field] as string | string[] | null | undefined;
return Array.isArray(fieldValue) ? fieldValue.includes(value) : fieldValue === value;
})
- .map((dataset) => dataset.parent_dataset ?? dataset.name)
+ .map(datasetGroupKey)
).size,
])
),
@@ -425,7 +442,7 @@ export default function DatasetBrowserPage() {
const displayed = useMemo(() => filtered.slice(0, showCount), [filtered, showCount]);
const hasMore = filtered.length > showCount;
const distinctDatasetCount = useMemo(
- () => new Set(filtered.map((dataset) => dataset.parent_dataset ?? dataset.name)).size,
+ () => new Set(filtered.map(datasetGroupKey)).size,
[filtered]
);
const selectedDataset = useMemo(
@@ -550,4 +567,4 @@ export default function DatasetBrowserPage() {
);
-}
+}
\ No newline at end of file
diff --git a/static/data/dataset-benchmarking/embeddings/watermelon_disease_classification_umap_2d.json b/static/data/dataset-benchmarking/embeddings/watermelon_disease_classification_umap_2d.json
new file mode 100644
index 0000000..4d07123
--- /dev/null
+++ b/static/data/dataset-benchmarking/embeddings/watermelon_disease_classification_umap_2d.json
@@ -0,0 +1 @@
+[{"x":16.3714,"y":5.8098,"label":"Mosaic_Virus","split":"train","index":0},{"x":2.831,"y":16.3235,"label":"Mosaic_Virus","split":"train","index":1},{"x":10.8214,"y":-8.0589,"label":"Mosaic_Virus","split":"train","index":2},{"x":15.5892,"y":5.8084,"label":"Mosaic_Virus","split":"val","index":3},{"x":6.6311,"y":-4.0435,"label":"Mosaic_Virus","split":"val","index":4},{"x":10.8813,"y":-8.0746,"label":"Mosaic_Virus","split":"test","index":5},{"x":15.8823,"y":6.2675,"label":"Mosaic_Virus","split":"val","index":6},{"x":6.6619,"y":-4.0132,"label":"Mosaic_Virus","split":"train","index":7},{"x":11.5232,"y":-7.8614,"label":"Mosaic_Virus","split":"train","index":8},{"x":14.2003,"y":-5.0249,"label":"Mosaic_Virus","split":"val","index":9},{"x":15.7467,"y":5.4745,"label":"Mosaic_Virus","split":"train","index":10},{"x":14.8385,"y":-5.5567,"label":"Mosaic_Virus","split":"val","index":11},{"x":17.1104,"y":2.3974,"label":"Mosaic_Virus","split":"train","index":12},{"x":11.4899,"y":-7.9841,"label":"Mosaic_Virus","split":"test","index":13},{"x":14.9355,"y":6.2542,"label":"Mosaic_Virus","split":"train","index":14},{"x":13.8311,"y":6.2187,"label":"Mosaic_Virus","split":"val","index":15},{"x":16.5356,"y":6.1169,"label":"Mosaic_Virus","split":"train","index":16},{"x":11.3994,"y":-8.1569,"label":"Mosaic_Virus","split":"test","index":17},{"x":15.8203,"y":5.4566,"label":"Mosaic_Virus","split":"train","index":18},{"x":17.0404,"y":5.698,"label":"Mosaic_Virus","split":"train","index":19},{"x":16.4133,"y":5.6642,"label":"Mosaic_Virus","split":"train","index":20},{"x":2.8383,"y":16.3017,"label":"Mosaic_Virus","split":"train","index":21},{"x":14.8619,"y":-5.5942,"label":"Mosaic_Virus","split":"train","index":22},{"x":12.2024,"y":-7.7137,"label":"Mosaic_Virus","split":"train","index":23},{"x":16.1376,"y":6.1955,"label":"Mosaic_Virus","split":"train","index":24},{"x":16.2172,"y":6.2075,"label":"Mosaic_Virus","split":"train","index":25},{"x":11.1866,"y":-7.8155,"label":"Mosaic_Virus","split":"train","index":26},{"x":11.8213,"y":-7.7887,"label":"Mosaic_Virus","split":"train","index":27},{"x":17.1828,"y":-5.0315,"label":"Mosaic_Virus","split":"test","index":28},{"x":16.0921,"y":-3.9648,"label":"Mosaic_Virus","split":"test","index":29},{"x":17.3669,"y":2.1082,"label":"Mosaic_Virus","split":"train","index":30},{"x":14.1618,"y":-5.0692,"label":"Mosaic_Virus","split":"val","index":31},{"x":6.7639,"y":-3.9109,"label":"Mosaic_Virus","split":"train","index":32},{"x":17.0775,"y":-5.23,"label":"Mosaic_Virus","split":"train","index":33},{"x":14.0908,"y":-5.0747,"label":"Mosaic_Virus","split":"train","index":34},{"x":16.8338,"y":-6.248,"label":"Mosaic_Virus","split":"train","index":35},{"x":15.5707,"y":-4.2709,"label":"Mosaic_Virus","split":"train","index":36},{"x":16.397,"y":6.1789,"label":"Mosaic_Virus","split":"train","index":37},{"x":16.2553,"y":5.814,"label":"Mosaic_Virus","split":"train","index":38},{"x":11.3615,"y":-7.9953,"label":"Mosaic_Virus","split":"train","index":39},{"x":6.8143,"y":-3.8603,"label":"Mosaic_Virus","split":"train","index":40},{"x":13.9858,"y":6.6144,"label":"Mosaic_Virus","split":"train","index":41},{"x":13.9746,"y":-4.9174,"label":"Mosaic_Virus","split":"val","index":42},{"x":16.8923,"y":-6.3155,"label":"Mosaic_Virus","split":"train","index":43},{"x":15.0706,"y":-6.071,"label":"Mosaic_Virus","split":"val","index":44},{"x":0.7973,"y":13.1296,"label":"Mosaic_Virus","split":"train","index":45},{"x":15.5573,"y":6.0951,"label":"Mosaic_Virus","split":"train","index":46},{"x":15.0938,"y":-6.0639,"label":"Mosaic_Virus","split":"train","index":47},{"x":0.778,"y":13.1108,"label":"Mosaic_Virus","split":"train","index":48},{"x":6.7631,"y":-3.9121,"label":"Mosaic_Virus","split":"val","index":49},{"x":11.8769,"y":-7.7955,"label":"Mosaic_Virus","split":"val","index":50},{"x":17.177,"y":-5.0571,"label":"Mosaic_Virus","split":"train","index":51},{"x":14.5472,"y":-4.9917,"label":"Mosaic_Virus","split":"train","index":52},{"x":15.1554,"y":-6.3126,"label":"Mosaic_Virus","split":"test","index":53},{"x":1.6918,"y":13.8482,"label":"Mosaic_Virus","split":"val","index":54},{"x":15.8185,"y":6.4101,"label":"Mosaic_Virus","split":"train","index":55},{"x":15.5853,"y":-4.2671,"label":"Mosaic_Virus","split":"train","index":56},{"x":14.8814,"y":-5.1009,"label":"Mosaic_Virus","split":"train","index":57},{"x":14.0131,"y":6.4859,"label":"Mosaic_Virus","split":"train","index":58},{"x":14.1533,"y":6.5403,"label":"Mosaic_Virus","split":"train","index":59},{"x":17.3586,"y":2.1131,"label":"Mosaic_Virus","split":"train","index":60},{"x":14.5782,"y":-5.1131,"label":"Mosaic_Virus","split":"train","index":61},{"x":16.882,"y":-6.3027,"label":"Mosaic_Virus","split":"train","index":62},{"x":14.1074,"y":6.687,"label":"Mosaic_Virus","split":"train","index":63},{"x":15.3028,"y":-6.5478,"label":"Mosaic_Virus","split":"val","index":64},{"x":1.6692,"y":13.8249,"label":"Mosaic_Virus","split":"train","index":65},{"x":17.3326,"y":2.1614,"label":"Mosaic_Virus","split":"train","index":66},{"x":16.7128,"y":-3.9662,"label":"Mosaic_Virus","split":"train","index":67},{"x":14.8839,"y":-5.0928,"label":"Mosaic_Virus","split":"train","index":68},{"x":14.6941,"y":-5.1857,"label":"Mosaic_Virus","split":"train","index":69},{"x":15.016,"y":6.0631,"label":"Mosaic_Virus","split":"test","index":70},{"x":15.1478,"y":6.2964,"label":"Mosaic_Virus","split":"train","index":71},{"x":11.5756,"y":-7.7472,"label":"Mosaic_Virus","split":"train","index":72},{"x":15.2749,"y":5.7943,"label":"Mosaic_Virus","split":"train","index":73},{"x":15.4523,"y":5.7638,"label":"Mosaic_Virus","split":"val","index":74},{"x":11.5551,"y":-7.7287,"label":"Mosaic_Virus","split":"val","index":75},{"x":14.7475,"y":5.9579,"label":"Mosaic_Virus","split":"val","index":76},{"x":16.7301,"y":-6.0987,"label":"Mosaic_Virus","split":"train","index":77},{"x":16.7432,"y":-3.958,"label":"Mosaic_Virus","split":"train","index":78},{"x":14.8473,"y":-5.0956,"label":"Mosaic_Virus","split":"test","index":79},{"x":14.0513,"y":-4.9668,"label":"Mosaic_Virus","split":"train","index":80},{"x":14.1862,"y":6.4035,"label":"Mosaic_Virus","split":"val","index":81},{"x":3.361,"y":16.3861,"label":"Mosaic_Virus","split":"train","index":82},{"x":15.3535,"y":5.6743,"label":"Mosaic_Virus","split":"train","index":83},{"x":13.769,"y":6.161,"label":"Mosaic_Virus","split":"train","index":84},{"x":17.1227,"y":2.8086,"label":"Mosaic_Virus","split":"train","index":85},{"x":14.6177,"y":6.1114,"label":"Mosaic_Virus","split":"val","index":86},{"x":3.8003,"y":16.4965,"label":"Mosaic_Virus","split":"val","index":87},{"x":14.9076,"y":3.1312,"label":"Mosaic_Virus","split":"test","index":88},{"x":3.7953,"y":16.4827,"label":"Mosaic_Virus","split":"train","index":89},{"x":14.946,"y":3.1562,"label":"Mosaic_Virus","split":"train","index":90},{"x":15.7217,"y":6.2455,"label":"Mosaic_Virus","split":"train","index":91},{"x":15.2446,"y":-6.4727,"label":"Mosaic_Virus","split":"test","index":92},{"x":15.3559,"y":6.0141,"label":"Mosaic_Virus","split":"val","index":93},{"x":15.8567,"y":6.45,"label":"Mosaic_Virus","split":"train","index":94},{"x":13.8477,"y":-5.0325,"label":"Mosaic_Virus","split":"train","index":95},{"x":15.0901,"y":6.078,"label":"Mosaic_Virus","split":"val","index":96},{"x":14.1722,"y":6.6072,"label":"Mosaic_Virus","split":"train","index":97},{"x":17.1018,"y":2.8541,"label":"Mosaic_Virus","split":"train","index":98},{"x":2.8321,"y":16.3292,"label":"Mosaic_Virus","split":"train","index":99},{"x":15.9071,"y":2.8475,"label":"Mosaic_Virus","split":"train","index":100},{"x":13.8135,"y":-5.0163,"label":"Mosaic_Virus","split":"train","index":101},{"x":3.2881,"y":16.4224,"label":"Mosaic_Virus","split":"train","index":102},{"x":15.9203,"y":2.8399,"label":"Mosaic_Virus","split":"train","index":103},{"x":15.5886,"y":6.3858,"label":"Mosaic_Virus","split":"train","index":104},{"x":14.3414,"y":6.1961,"label":"Mosaic_Virus","split":"train","index":105},{"x":17.0722,"y":2.8583,"label":"Mosaic_Virus","split":"test","index":106},{"x":15.3558,"y":5.7184,"label":"Mosaic_Virus","split":"train","index":107},{"x":15.1002,"y":-6.1113,"label":"Mosaic_Virus","split":"train","index":108},{"x":0.8005,"y":13.1307,"label":"Mosaic_Virus","split":"train","index":109},{"x":6.7175,"y":-3.9576,"label":"Mosaic_Virus","split":"train","index":110},{"x":11.8614,"y":-7.8361,"label":"Mosaic_Virus","split":"train","index":111},{"x":17.1699,"y":-5.0734,"label":"Mosaic_Virus","split":"test","index":112},{"x":14.235,"y":-4.9665,"label":"Mosaic_Virus","split":"val","index":113},{"x":6.8023,"y":-3.8726,"label":"Mosaic_Virus","split":"train","index":114},{"x":13.9929,"y":6.6696,"label":"Mosaic_Virus","split":"val","index":115},{"x":14.0635,"y":-4.9517,"label":"Mosaic_Virus","split":"train","index":116},{"x":16.8524,"y":-6.2682,"label":"Mosaic_Virus","split":"test","index":117},{"x":15.092,"y":-6.06,"label":"Mosaic_Virus","split":"test","index":118},{"x":0.7888,"y":13.1212,"label":"Mosaic_Virus","split":"train","index":119},{"x":14.293,"y":6.8564,"label":"Mosaic_Virus","split":"val","index":120},{"x":16.9787,"y":-5.3679,"label":"Mosaic_Virus","split":"test","index":121},{"x":13.9755,"y":-4.9344,"label":"Mosaic_Virus","split":"train","index":122},{"x":17.2674,"y":2.2159,"label":"Mosaic_Virus","split":"train","index":123},{"x":15.6022,"y":-4.2763,"label":"Mosaic_Virus","split":"train","index":124},{"x":15.9731,"y":5.4777,"label":"Mosaic_Virus","split":"train","index":125},{"x":16.2774,"y":6.0757,"label":"Mosaic_Virus","split":"val","index":126},{"x":11.3867,"y":-7.9838,"label":"Mosaic_Virus","split":"train","index":127},{"x":16.2425,"y":5.9434,"label":"Mosaic_Virus","split":"train","index":128},{"x":15.4051,"y":6.3981,"label":"Mosaic_Virus","split":"train","index":129},{"x":11.1778,"y":-7.8162,"label":"Mosaic_Virus","split":"train","index":130},{"x":11.8836,"y":-7.8059,"label":"Mosaic_Virus","split":"train","index":131},{"x":17.1667,"y":-5.0682,"label":"Mosaic_Virus","split":"train","index":132},{"x":16.0877,"y":-3.9567,"label":"Mosaic_Virus","split":"train","index":133},{"x":17.409,"y":2.1756,"label":"Mosaic_Virus","split":"train","index":134},{"x":14.2194,"y":-4.9886,"label":"Mosaic_Virus","split":"train","index":135},{"x":11.3373,"y":-8.183,"label":"Mosaic_Virus","split":"train","index":136},{"x":15.8073,"y":5.3929,"label":"Mosaic_Virus","split":"train","index":137},{"x":13.7098,"y":6.1306,"label":"Mosaic_Virus","split":"test","index":138},{"x":16.4563,"y":5.8008,"label":"Mosaic_Virus","split":"test","index":139},{"x":2.876,"y":16.3574,"label":"Mosaic_Virus","split":"test","index":140},{"x":14.8527,"y":-5.6152,"label":"Mosaic_Virus","split":"train","index":141},{"x":12.2388,"y":-7.7091,"label":"Mosaic_Virus","split":"train","index":142},{"x":15.7842,"y":5.3878,"label":"Mosaic_Virus","split":"train","index":143},{"x":14.8337,"y":-5.3708,"label":"Mosaic_Virus","split":"train","index":144},{"x":12.2988,"y":-7.6601,"label":"Mosaic_Virus","split":"train","index":145},{"x":11.4189,"y":-8.1637,"label":"Mosaic_Virus","split":"val","index":146},{"x":14.9975,"y":6.2043,"label":"Mosaic_Virus","split":"train","index":147},{"x":13.7853,"y":6.1866,"label":"Mosaic_Virus","split":"test","index":148},{"x":15.9727,"y":5.4681,"label":"Mosaic_Virus","split":"train","index":149},{"x":15.8082,"y":5.4968,"label":"Mosaic_Virus","split":"train","index":150},{"x":6.6779,"y":-3.997,"label":"Mosaic_Virus","split":"train","index":151},{"x":11.4621,"y":-7.9607,"label":"Mosaic_Virus","split":"train","index":152},{"x":16.5387,"y":6.0231,"label":"Mosaic_Virus","split":"train","index":153},{"x":2.7917,"y":16.3522,"label":"Mosaic_Virus","split":"val","index":154},{"x":10.7813,"y":-8.0935,"label":"Mosaic_Virus","split":"train","index":155},{"x":15.6091,"y":5.8477,"label":"Mosaic_Virus","split":"train","index":156},{"x":6.6981,"y":-3.9766,"label":"Mosaic_Virus","split":"train","index":157},{"x":3.3592,"y":16.3861,"label":"Mosaic_Virus","split":"train","index":158},{"x":15.9165,"y":2.8413,"label":"Mosaic_Virus","split":"train","index":159},{"x":17.0023,"y":5.7257,"label":"Mosaic_Virus","split":"train","index":160},{"x":14.2792,"y":6.2796,"label":"Mosaic_Virus","split":"train","index":161},{"x":17.0241,"y":2.8591,"label":"Mosaic_Virus","split":"train","index":162},{"x":14.2239,"y":6.3692,"label":"Mosaic_Virus","split":"test","index":163},{"x":17.0843,"y":2.8836,"label":"Mosaic_Virus","split":"train","index":164},{"x":2.8007,"y":16.3488,"label":"Mosaic_Virus","split":"train","index":165},{"x":15.9186,"y":2.8366,"label":"Mosaic_Virus","split":"test","index":166},{"x":11.4333,"y":-8.0642,"label":"Mosaic_Virus","split":"train","index":167},{"x":3.8158,"y":16.5056,"label":"Mosaic_Virus","split":"train","index":168},{"x":14.9317,"y":3.1496,"label":"Mosaic_Virus","split":"train","index":169},{"x":15.2214,"y":-6.4733,"label":"Mosaic_Virus","split":"train","index":170},{"x":16.9966,"y":5.7165,"label":"Mosaic_Virus","split":"train","index":171},{"x":14.41,"y":6.9425,"label":"Mosaic_Virus","split":"train","index":172},{"x":13.8741,"y":-5.044,"label":"Mosaic_Virus","split":"train","index":173},{"x":15.1554,"y":6.3054,"label":"Mosaic_Virus","split":"train","index":174},{"x":3.296,"y":16.4313,"label":"Mosaic_Virus","split":"train","index":175},{"x":15.2853,"y":5.6842,"label":"Mosaic_Virus","split":"train","index":176},{"x":6.7433,"y":-3.9317,"label":"Mosaic_Virus","split":"test","index":177},{"x":17.0782,"y":2.8685,"label":"Mosaic_Virus","split":"train","index":178},{"x":15.1876,"y":6.3885,"label":"Mosaic_Virus","split":"train","index":179},{"x":3.7883,"y":16.4852,"label":"Mosaic_Virus","split":"train","index":180},{"x":14.9551,"y":3.1779,"label":"Mosaic_Virus","split":"train","index":181},{"x":15.4347,"y":5.6878,"label":"Mosaic_Virus","split":"train","index":182},{"x":11.6455,"y":-7.699,"label":"Mosaic_Virus","split":"train","index":183},{"x":14.7437,"y":5.9461,"label":"Mosaic_Virus","split":"train","index":184},{"x":16.7198,"y":-6.1212,"label":"Mosaic_Virus","split":"train","index":185},{"x":16.7391,"y":-3.9872,"label":"Mosaic_Virus","split":"train","index":186},{"x":14.8913,"y":-5.0765,"label":"Mosaic_Virus","split":"train","index":187},{"x":14.1372,"y":-5.0424,"label":"Mosaic_Virus","split":"val","index":188},{"x":14.0333,"y":6.4536,"label":"Mosaic_Virus","split":"train","index":189},{"x":17.3587,"y":2.1119,"label":"Mosaic_Virus","split":"train","index":190},{"x":16.7239,"y":-3.9635,"label":"Mosaic_Virus","split":"train","index":191},{"x":17.1749,"y":-5.0582,"label":"Mosaic_Virus","split":"test","index":192},{"x":14.6266,"y":-5.0745,"label":"Mosaic_Virus","split":"test","index":193},{"x":15.2844,"y":6.4101,"label":"Mosaic_Virus","split":"train","index":194},{"x":15.6872,"y":6.3595,"label":"Mosaic_Virus","split":"train","index":195},{"x":11.6067,"y":-7.6841,"label":"Mosaic_Virus","split":"train","index":196},{"x":14.6941,"y":5.9644,"label":"Mosaic_Virus","split":"test","index":197},{"x":17.3589,"y":2.1277,"label":"Mosaic_Virus","split":"train","index":198},{"x":14.7068,"y":-5.0366,"label":"Mosaic_Virus","split":"val","index":199},{"x":16.895,"y":-6.3138,"label":"Mosaic_Virus","split":"train","index":200},{"x":14.1366,"y":6.42,"label":"Mosaic_Virus","split":"train","index":201},{"x":15.2495,"y":-6.4869,"label":"Mosaic_Virus","split":"test","index":202},{"x":1.6856,"y":13.8402,"label":"Mosaic_Virus","split":"train","index":203},{"x":15.2194,"y":-6.3187,"label":"Mosaic_Virus","split":"train","index":204},{"x":1.6871,"y":13.8417,"label":"Mosaic_Virus","split":"test","index":205},{"x":15.6337,"y":6.2523,"label":"Mosaic_Virus","split":"val","index":206},{"x":15.6447,"y":-4.2079,"label":"Mosaic_Virus","split":"train","index":207},{"x":15.0228,"y":3.2331,"label":"Mosaic_Virus","split":"train","index":208},{"x":13.9485,"y":6.3562,"label":"Mosaic_Virus","split":"train","index":209},{"x":14.2698,"y":6.2862,"label":"Mosaic_Virus","split":"train","index":210},{"x":12.3435,"y":-7.6253,"label":"Mosaic_Virus","split":"val","index":211},{"x":17.0844,"y":2.8765,"label":"Mosaic_Virus","split":"val","index":212},{"x":15.8596,"y":2.8989,"label":"Mosaic_Virus","split":"train","index":213},{"x":2.8169,"y":16.33,"label":"Mosaic_Virus","split":"train","index":214},{"x":17.0612,"y":5.6332,"label":"Mosaic_Virus","split":"test","index":215},{"x":15.1664,"y":6.1611,"label":"Mosaic_Virus","split":"train","index":216},{"x":15.9063,"y":2.8529,"label":"Mosaic_Virus","split":"train","index":217},{"x":3.313,"y":16.3789,"label":"Mosaic_Virus","split":"train","index":218},{"x":14.775,"y":-5.4509,"label":"Mosaic_Virus","split":"test","index":219},{"x":14.1841,"y":6.3537,"label":"Mosaic_Virus","split":"train","index":220},{"x":10.927,"y":-8.101,"label":"Mosaic_Virus","split":"train","index":221},{"x":14.2867,"y":6.8006,"label":"Mosaic_Virus","split":"train","index":222},{"x":14.954,"y":5.859,"label":"Mosaic_Virus","split":"train","index":223},{"x":14.5754,"y":5.9942,"label":"Mosaic_Virus","split":"test","index":224},{"x":13.8403,"y":-5.0049,"label":"Mosaic_Virus","split":"train","index":225},{"x":14.9238,"y":3.1545,"label":"Mosaic_Virus","split":"train","index":226},{"x":3.7937,"y":16.49,"label":"Mosaic_Virus","split":"train","index":227},{"x":14.1581,"y":6.6309,"label":"Mosaic_Virus","split":"test","index":228},{"x":14.9513,"y":3.1794,"label":"Mosaic_Virus","split":"train","index":229},{"x":3.8363,"y":16.4952,"label":"Mosaic_Virus","split":"val","index":230},{"x":17.0817,"y":2.8619,"label":"Mosaic_Virus","split":"train","index":231},{"x":16.4597,"y":6.1571,"label":"Mosaic_Virus","split":"train","index":232},{"x":17.0601,"y":5.6497,"label":"Mosaic_Virus","split":"train","index":233},{"x":14.9287,"y":6.1478,"label":"Mosaic_Virus","split":"test","index":234},{"x":13.808,"y":-5.0438,"label":"Mosaic_Virus","split":"train","index":235},{"x":16.7221,"y":-3.9656,"label":"Mosaic_Virus","split":"train","index":236},{"x":16.7094,"y":-6.0971,"label":"Mosaic_Virus","split":"train","index":237},{"x":14.6712,"y":-4.9179,"label":"Mosaic_Virus","split":"train","index":238},{"x":14.8676,"y":-5.0602,"label":"Mosaic_Virus","split":"val","index":239},{"x":0.8099,"y":13.1423,"label":"Mosaic_Virus","split":"val","index":240},{"x":11.6972,"y":-7.6564,"label":"Mosaic_Virus","split":"train","index":241},{"x":15.4394,"y":5.8201,"label":"Mosaic_Virus","split":"train","index":242},{"x":16.3176,"y":5.9858,"label":"Mosaic_Virus","split":"train","index":243},{"x":15.1225,"y":-6.1205,"label":"Mosaic_Virus","split":"train","index":244},{"x":11.6519,"y":-7.7684,"label":"Mosaic_Virus","split":"val","index":245},{"x":14.9621,"y":5.8144,"label":"Mosaic_Virus","split":"train","index":246},{"x":14.9866,"y":6.0222,"label":"Mosaic_Virus","split":"train","index":247},{"x":16.7121,"y":-3.9664,"label":"Mosaic_Virus","split":"train","index":248},{"x":16.7748,"y":-6.0743,"label":"Mosaic_Virus","split":"train","index":249},{"x":14.163,"y":-5.0947,"label":"Mosaic_Virus","split":"test","index":250},{"x":14.8959,"y":-5.068,"label":"Mosaic_Virus","split":"train","index":251},{"x":3.3881,"y":16.3637,"label":"Mosaic_Virus","split":"train","index":252},{"x":15.2126,"y":-6.3682,"label":"Mosaic_Virus","split":"train","index":253},{"x":11.6034,"y":-7.7663,"label":"Mosaic_Virus","split":"train","index":254},{"x":14.033,"y":6.6473,"label":"Mosaic_Virus","split":"train","index":255},{"x":14.3184,"y":6.1941,"label":"Mosaic_Virus","split":"test","index":256},{"x":16.8959,"y":-6.2954,"label":"Mosaic_Virus","split":"train","index":257},{"x":14.2431,"y":6.3462,"label":"Mosaic_Virus","split":"train","index":258},{"x":1.6813,"y":13.8358,"label":"Mosaic_Virus","split":"train","index":259},{"x":15.2561,"y":-6.4309,"label":"Mosaic_Virus","split":"test","index":260},{"x":16.4139,"y":5.7324,"label":"Mosaic_Virus","split":"train","index":261},{"x":6.8862,"y":-3.7876,"label":"Mosaic_Virus","split":"test","index":262},{"x":13.9941,"y":6.6727,"label":"Mosaic_Virus","split":"train","index":263},{"x":16.1334,"y":5.4946,"label":"Mosaic_Virus","split":"train","index":264},{"x":15.1283,"y":-6.2004,"label":"Mosaic_Virus","split":"train","index":265},{"x":11.6811,"y":-7.6722,"label":"Mosaic_Virus","split":"train","index":266},{"x":0.7874,"y":13.1204,"label":"Mosaic_Virus","split":"test","index":267},{"x":16.9659,"y":-5.3944,"label":"Mosaic_Virus","split":"test","index":268},{"x":6.8735,"y":-3.8004,"label":"Mosaic_Virus","split":"val","index":269},{"x":11.8458,"y":-7.8506,"label":"Mosaic_Virus","split":"train","index":270},{"x":16.4331,"y":5.7097,"label":"Mosaic_Virus","split":"train","index":271},{"x":11.2006,"y":-7.8506,"label":"Mosaic_Virus","split":"train","index":272},{"x":16.3922,"y":5.7412,"label":"Mosaic_Virus","split":"train","index":273},{"x":17.0638,"y":-5.2569,"label":"Mosaic_Virus","split":"train","index":274},{"x":16.0655,"y":-3.994,"label":"Mosaic_Virus","split":"train","index":275},{"x":17.1786,"y":-5.0342,"label":"Mosaic_Virus","split":"val","index":276},{"x":15.5784,"y":-4.2382,"label":"Mosaic_Virus","split":"test","index":277},{"x":16.0005,"y":-4.0157,"label":"Mosaic_Virus","split":"train","index":278},{"x":16.9859,"y":-5.3754,"label":"Mosaic_Virus","split":"test","index":279},{"x":15.5492,"y":-4.289,"label":"Mosaic_Virus","split":"train","index":280},{"x":17.3289,"y":2.1653,"label":"Mosaic_Virus","split":"train","index":281},{"x":16.0579,"y":5.5077,"label":"Mosaic_Virus","split":"train","index":282},{"x":11.5544,"y":-7.9092,"label":"Mosaic_Virus","split":"train","index":283},{"x":16.3248,"y":5.6358,"label":"Mosaic_Virus","split":"train","index":284},{"x":16.0163,"y":-3.9963,"label":"Mosaic_Virus","split":"val","index":285},{"x":10.7341,"y":-8.0353,"label":"Mosaic_Virus","split":"val","index":286},{"x":16.9894,"y":5.3068,"label":"Mosaic_Virus","split":"train","index":287},{"x":14.7625,"y":-5.3482,"label":"Mosaic_Virus","split":"train","index":288},{"x":14.9332,"y":6.2245,"label":"Mosaic_Virus","split":"train","index":289},{"x":11.3606,"y":-8.1191,"label":"Mosaic_Virus","split":"train","index":290},{"x":16.3506,"y":5.8979,"label":"Mosaic_Virus","split":"test","index":291},{"x":13.7736,"y":6.1686,"label":"Mosaic_Virus","split":"test","index":292},{"x":15.7921,"y":5.4076,"label":"Mosaic_Virus","split":"train","index":293},{"x":11.4666,"y":-8.1057,"label":"Mosaic_Virus","split":"train","index":294},{"x":16.2902,"y":5.8625,"label":"Mosaic_Virus","split":"train","index":295},{"x":17.0581,"y":5.6593,"label":"Mosaic_Virus","split":"val","index":296},{"x":6.6264,"y":-4.0484,"label":"Mosaic_Virus","split":"train","index":297},{"x":12.27,"y":-7.6799,"label":"Mosaic_Virus","split":"train","index":298},{"x":16.7103,"y":-6.1123,"label":"Mosaic_Virus","split":"test","index":299},{"x":2.8055,"y":16.3306,"label":"Mosaic_Virus","split":"train","index":300},{"x":15.6827,"y":5.8506,"label":"Mosaic_Virus","split":"train","index":301},{"x":10.8511,"y":-8.0912,"label":"Mosaic_Virus","split":"test","index":302},{"x":6.7017,"y":-3.9728,"label":"Mosaic_Virus","split":"train","index":303},{"x":16.7203,"y":-6.1418,"label":"Mosaic_Virus","split":"train","index":304},{"x":15.5905,"y":5.7521,"label":"Mosaic_Virus","split":"train","index":305},{"x":10.8984,"y":-8.0218,"label":"Mosaic_Virus","split":"train","index":306},{"x":6.681,"y":-3.9942,"label":"Mosaic_Virus","split":"train","index":307},{"x":16.9912,"y":5.4888,"label":"Mosaic_Virus","split":"test","index":308},{"x":14.5774,"y":5.9841,"label":"Mosaic_Virus","split":"train","index":309},{"x":13.7339,"y":6.1413,"label":"Mosaic_Virus","split":"val","index":310},{"x":14.1378,"y":-5.0273,"label":"Mosaic_Virus","split":"train","index":311},{"x":16.9051,"y":-6.3276,"label":"Mosaic_Virus","split":"train","index":312},{"x":14.1797,"y":6.4014,"label":"Mosaic_Virus","split":"train","index":313},{"x":1.6648,"y":13.8204,"label":"Mosaic_Virus","split":"train","index":314},{"x":15.1965,"y":-6.3851,"label":"Mosaic_Virus","split":"test","index":315},{"x":16.3502,"y":5.8196,"label":"Mosaic_Virus","split":"train","index":316},{"x":1.6717,"y":13.8262,"label":"Mosaic_Virus","split":"train","index":317},{"x":15.1789,"y":-6.2076,"label":"Mosaic_Virus","split":"test","index":318},{"x":13.9193,"y":6.5539,"label":"Mosaic_Virus","split":"test","index":319},{"x":14.3429,"y":6.1558,"label":"Mosaic_Virus","split":"train","index":320},{"x":15.1338,"y":-6.147,"label":"Mosaic_Virus","split":"val","index":321},{"x":11.629,"y":-7.683,"label":"Mosaic_Virus","split":"test","index":322},{"x":15.5411,"y":5.6469,"label":"Mosaic_Virus","split":"train","index":323},{"x":14.7468,"y":5.997,"label":"Mosaic_Virus","split":"train","index":324},{"x":16.6993,"y":-3.9933,"label":"Mosaic_Virus","split":"train","index":325},{"x":16.6926,"y":-6.1399,"label":"Mosaic_Virus","split":"train","index":326},{"x":14.4994,"y":-5.1732,"label":"Mosaic_Virus","split":"train","index":327},{"x":14.9148,"y":-5.0818,"label":"Mosaic_Virus","split":"train","index":328},{"x":16.7152,"y":-3.9838,"label":"Mosaic_Virus","split":"val","index":329},{"x":17.3667,"y":2.1348,"label":"Mosaic_Virus","split":"val","index":330},{"x":14.5994,"y":-5.2786,"label":"Mosaic_Virus","split":"train","index":331},{"x":14.8894,"y":-5.0743,"label":"Mosaic_Virus","split":"val","index":332},{"x":1.6939,"y":13.8482,"label":"Mosaic_Virus","split":"train","index":333},{"x":11.7378,"y":-7.6145,"label":"Mosaic_Virus","split":"train","index":334},{"x":15.425,"y":5.6738,"label":"Mosaic_Virus","split":"train","index":335},{"x":15.8236,"y":6.3864,"label":"Mosaic_Virus","split":"train","index":336},{"x":14.9247,"y":3.1406,"label":"Mosaic_Virus","split":"train","index":337},{"x":3.7963,"y":16.4934,"label":"Mosaic_Virus","split":"val","index":338},{"x":17.0917,"y":2.8633,"label":"Mosaic_Virus","split":"train","index":339},{"x":15.1799,"y":6.4019,"label":"Mosaic_Virus","split":"train","index":340},{"x":16.9989,"y":5.6341,"label":"Mosaic_Virus","split":"val","index":341},{"x":15.0663,"y":6.2183,"label":"Mosaic_Virus","split":"test","index":342},{"x":13.8423,"y":-5.0326,"label":"Mosaic_Virus","split":"test","index":343},{"x":6.6584,"y":-4.0165,"label":"Mosaic_Virus","split":"test","index":344},{"x":15.3011,"y":5.6752,"label":"Mosaic_Virus","split":"test","index":345},{"x":14.5797,"y":6.0159,"label":"Mosaic_Virus","split":"train","index":346},{"x":13.9051,"y":-5.0345,"label":"Mosaic_Virus","split":"val","index":347},{"x":14.9996,"y":3.192,"label":"Mosaic_Virus","split":"train","index":348},{"x":3.8094,"y":16.4985,"label":"Mosaic_Virus","split":"train","index":349},{"x":14.1623,"y":6.5302,"label":"Mosaic_Virus","split":"train","index":350},{"x":15.9068,"y":2.8501,"label":"Mosaic_Virus","split":"train","index":351},{"x":3.2754,"y":16.3708,"label":"Mosaic_Virus","split":"train","index":352},{"x":14.8123,"y":-5.5507,"label":"Mosaic_Virus","split":"train","index":353},{"x":14.2115,"y":6.4411,"label":"Mosaic_Virus","split":"test","index":354},{"x":10.8121,"y":-8.0709,"label":"Mosaic_Virus","split":"val","index":355},{"x":12.2811,"y":-7.6638,"label":"Mosaic_Virus","split":"train","index":356},{"x":14.3787,"y":6.8525,"label":"Mosaic_Virus","split":"train","index":357},{"x":17.1053,"y":2.8859,"label":"Mosaic_Virus","split":"train","index":358},{"x":15.9011,"y":2.87,"label":"Mosaic_Virus","split":"test","index":359},{"x":3.3938,"y":16.3737,"label":"Mosaic_Virus","split":"test","index":360},{"x":16.9541,"y":5.6448,"label":"Mosaic_Virus","split":"train","index":361},{"x":14.9823,"y":6.165,"label":"Mosaic_Virus","split":"val","index":362},{"x":15.6251,"y":5.8863,"label":"Mosaic_Virus","split":"test","index":363},{"x":10.8188,"y":-8.1063,"label":"Mosaic_Virus","split":"train","index":364},{"x":6.668,"y":-4.0072,"label":"Mosaic_Virus","split":"val","index":365},{"x":16.9901,"y":5.3217,"label":"Mosaic_Virus","split":"train","index":366},{"x":14.5951,"y":5.9867,"label":"Mosaic_Virus","split":"train","index":367},{"x":13.7465,"y":6.1691,"label":"Mosaic_Virus","split":"train","index":368},{"x":14.1073,"y":-4.9801,"label":"Mosaic_Virus","split":"train","index":369},{"x":2.7868,"y":16.3634,"label":"Mosaic_Virus","split":"val","index":370},{"x":15.6493,"y":5.7641,"label":"Mosaic_Virus","split":"train","index":371},{"x":10.831,"y":-8.1061,"label":"Mosaic_Virus","split":"train","index":372},{"x":6.7028,"y":-3.9724,"label":"Mosaic_Virus","split":"val","index":373},{"x":16.7293,"y":-6.1431,"label":"Mosaic_Virus","split":"train","index":374},{"x":15.9416,"y":5.478,"label":"Mosaic_Virus","split":"train","index":375},{"x":11.3933,"y":-8.1726,"label":"Mosaic_Virus","split":"train","index":376},{"x":16.4417,"y":5.7606,"label":"Mosaic_Virus","split":"val","index":377},{"x":17.0119,"y":5.6486,"label":"Mosaic_Virus","split":"val","index":378},{"x":6.6255,"y":-4.0495,"label":"Mosaic_Virus","split":"val","index":379},{"x":12.1509,"y":-7.6942,"label":"Mosaic_Virus","split":"train","index":380},{"x":16.7005,"y":-6.1315,"label":"Mosaic_Virus","split":"test","index":381},{"x":10.7457,"y":-8.109,"label":"Mosaic_Virus","split":"test","index":382},{"x":16.9659,"y":5.3706,"label":"Mosaic_Virus","split":"train","index":383},{"x":14.7766,"y":-5.4675,"label":"Mosaic_Virus","split":"train","index":384},{"x":14.5411,"y":6.0376,"label":"Mosaic_Virus","split":"train","index":385},{"x":11.3815,"y":-8.1747,"label":"Mosaic_Virus","split":"train","index":386},{"x":16.5479,"y":6.111,"label":"Mosaic_Virus","split":"train","index":387},{"x":13.7664,"y":6.1839,"label":"Mosaic_Virus","split":"train","index":388},{"x":14.2611,"y":-5.1716,"label":"Mosaic_Virus","split":"train","index":389},{"x":17.184,"y":-5.1107,"label":"Mosaic_Virus","split":"val","index":390},{"x":15.5755,"y":-4.2646,"label":"Mosaic_Virus","split":"train","index":391},{"x":17.3156,"y":2.2002,"label":"Mosaic_Virus","split":"train","index":392},{"x":16.0438,"y":5.4845,"label":"Mosaic_Virus","split":"train","index":393},{"x":11.4902,"y":-7.9035,"label":"Mosaic_Virus","split":"train","index":394},{"x":16.4706,"y":5.651,"label":"Mosaic_Virus","split":"train","index":395},{"x":16.1188,"y":-3.9042,"label":"Mosaic_Virus","split":"train","index":396},{"x":16.276,"y":5.523,"label":"Mosaic_Virus","split":"test","index":397},{"x":11.1743,"y":-7.8322,"label":"Mosaic_Virus","split":"val","index":398},{"x":16.2043,"y":5.8556,"label":"Mosaic_Virus","split":"train","index":399},{"x":17.0417,"y":-5.2932,"label":"Mosaic_Virus","split":"train","index":400},{"x":16.0342,"y":-3.9699,"label":"Mosaic_Virus","split":"val","index":401},{"x":17.1702,"y":-5.0762,"label":"Mosaic_Virus","split":"val","index":402},{"x":15.5863,"y":-4.2583,"label":"Mosaic_Virus","split":"train","index":403},{"x":17.3565,"y":2.1373,"label":"Mosaic_Virus","split":"train","index":404},{"x":11.1804,"y":-7.7905,"label":"Mosaic_Virus","split":"train","index":405},{"x":0.7904,"y":13.1228,"label":"Mosaic_Virus","split":"test","index":406},{"x":16.9603,"y":-5.4414,"label":"Mosaic_Virus","split":"train","index":407},{"x":6.8094,"y":-3.8653,"label":"Mosaic_Virus","split":"train","index":408},{"x":11.863,"y":-7.8555,"label":"Mosaic_Virus","split":"test","index":409},{"x":6.8718,"y":-3.8026,"label":"Mosaic_Virus","split":"train","index":410},{"x":11.9108,"y":-7.858,"label":"Mosaic_Virus","split":"train","index":411},{"x":16.2329,"y":5.5871,"label":"Mosaic_Virus","split":"train","index":412},{"x":15.9758,"y":-4.0429,"label":"Mosaic_Virus","split":"test","index":413},{"x":15.1189,"y":-6.1446,"label":"Mosaic_Virus","split":"val","index":414},{"x":-8.0173,"y":3.3703,"label":"Anthracnose","split":"train","index":415},{"x":-8.0296,"y":2.7481,"label":"Anthracnose","split":"train","index":416},{"x":-8.3702,"y":-0.56,"label":"Anthracnose","split":"train","index":417},{"x":-8.0066,"y":3.4783,"label":"Anthracnose","split":"train","index":418},{"x":-7.3762,"y":-0.221,"label":"Anthracnose","split":"train","index":419},{"x":-8.4537,"y":2.8803,"label":"Anthracnose","split":"train","index":420},{"x":-7.3412,"y":-0.2819,"label":"Anthracnose","split":"test","index":421},{"x":-7.1322,"y":0.972,"label":"Anthracnose","split":"train","index":422},{"x":-8.1446,"y":2.9735,"label":"Anthracnose","split":"train","index":423},{"x":-7.8087,"y":1.2749,"label":"Anthracnose","split":"test","index":424},{"x":-8.2143,"y":0.2574,"label":"Anthracnose","split":"train","index":425},{"x":-7.9016,"y":1.438,"label":"Anthracnose","split":"train","index":426},{"x":-8.3886,"y":-0.6034,"label":"Anthracnose","split":"train","index":427},{"x":-8.3919,"y":4.1933,"label":"Anthracnose","split":"train","index":428},{"x":-7.8778,"y":1.3509,"label":"Anthracnose","split":"val","index":429},{"x":-7.9135,"y":1.7109,"label":"Anthracnose","split":"val","index":430},{"x":-8.1882,"y":0.2615,"label":"Anthracnose","split":"val","index":431},{"x":-8.2341,"y":4.7084,"label":"Anthracnose","split":"train","index":432},{"x":-8.3982,"y":4.167,"label":"Anthracnose","split":"train","index":433},{"x":-8.1275,"y":3.3102,"label":"Anthracnose","split":"val","index":434},{"x":-9.1984,"y":2.0524,"label":"Anthracnose","split":"train","index":435},{"x":-9.1176,"y":0.1429,"label":"Anthracnose","split":"train","index":436},{"x":-9.2731,"y":2.1163,"label":"Anthracnose","split":"test","index":437},{"x":-9.136,"y":0.1555,"label":"Anthracnose","split":"val","index":438},{"x":-8.8557,"y":0.0074,"label":"Anthracnose","split":"train","index":439},{"x":-9.0519,"y":3.9375,"label":"Anthracnose","split":"train","index":440},{"x":-8.1993,"y":0.4081,"label":"Anthracnose","split":"train","index":441},{"x":-8.262,"y":3.2171,"label":"Anthracnose","split":"train","index":442},{"x":-9.0755,"y":0.1234,"label":"Anthracnose","split":"train","index":443},{"x":-7.7823,"y":2.381,"label":"Anthracnose","split":"train","index":444},{"x":-7.3846,"y":-0.2683,"label":"Anthracnose","split":"test","index":445},{"x":-8.0082,"y":2.7027,"label":"Anthracnose","split":"val","index":446},{"x":-7.8172,"y":2.4025,"label":"Anthracnose","split":"val","index":447},{"x":-8.133,"y":2.8535,"label":"Anthracnose","split":"train","index":448},{"x":-8.0388,"y":3.4478,"label":"Anthracnose","split":"val","index":449},{"x":-8.0301,"y":3.4793,"label":"Anthracnose","split":"val","index":450},{"x":-7.9066,"y":2.6232,"label":"Anthracnose","split":"val","index":451},{"x":-8.186,"y":0.2804,"label":"Anthracnose","split":"train","index":452},{"x":-8.2095,"y":4.7406,"label":"Anthracnose","split":"train","index":453},{"x":-8.2586,"y":3.6164,"label":"Anthracnose","split":"train","index":454},{"x":-8.3786,"y":-0.5489,"label":"Anthracnose","split":"train","index":455},{"x":-8.42,"y":4.1242,"label":"Anthracnose","split":"val","index":456},{"x":-7.8953,"y":1.4084,"label":"Anthracnose","split":"train","index":457},{"x":-8.3009,"y":3.0684,"label":"Anthracnose","split":"test","index":458},{"x":-7.8635,"y":1.4355,"label":"Anthracnose","split":"test","index":459},{"x":-7.7561,"y":1.233,"label":"Anthracnose","split":"train","index":460},{"x":-8.2238,"y":0.2853,"label":"Anthracnose","split":"train","index":461},{"x":-7.3505,"y":-0.2685,"label":"Anthracnose","split":"val","index":462},{"x":-7.125,"y":0.9826,"label":"Anthracnose","split":"test","index":463},{"x":-8.1483,"y":2.7686,"label":"Anthracnose","split":"val","index":464},{"x":-7.36,"y":-0.1919,"label":"Anthracnose","split":"train","index":465},{"x":-7.1969,"y":1.0173,"label":"Anthracnose","split":"train","index":466},{"x":-8.2087,"y":-0.1808,"label":"Anthracnose","split":"train","index":467},{"x":-7.9754,"y":3.4105,"label":"Anthracnose","split":"train","index":468},{"x":-7.9667,"y":3.3754,"label":"Anthracnose","split":"train","index":469},{"x":-8.1724,"y":2.9778,"label":"Anthracnose","split":"train","index":470},{"x":-8.167,"y":3.377,"label":"Anthracnose","split":"train","index":471},{"x":-7.9592,"y":2.6421,"label":"Anthracnose","split":"test","index":472},{"x":-8.1841,"y":2.8249,"label":"Anthracnose","split":"test","index":473},{"x":-8.0904,"y":3.4527,"label":"Anthracnose","split":"train","index":474},{"x":-7.7675,"y":2.3759,"label":"Anthracnose","split":"test","index":475},{"x":-9.0128,"y":3.8762,"label":"Anthracnose","split":"test","index":476},{"x":-7.7037,"y":2.3172,"label":"Anthracnose","split":"test","index":477},{"x":-7.3272,"y":-0.3036,"label":"Anthracnose","split":"train","index":478},{"x":-8.1689,"y":3.2984,"label":"Anthracnose","split":"val","index":479},{"x":-9.1288,"y":0.157,"label":"Anthracnose","split":"train","index":480},{"x":-8.1854,"y":0.4299,"label":"Anthracnose","split":"train","index":481},{"x":-9.2371,"y":2.1184,"label":"Anthracnose","split":"train","index":482},{"x":-9.1626,"y":0.179,"label":"Anthracnose","split":"train","index":483},{"x":-8.8704,"y":0.0197,"label":"Anthracnose","split":"train","index":484},{"x":-7.9547,"y":2.5949,"label":"Anthracnose","split":"train","index":485},{"x":-9.2495,"y":2.1025,"label":"Anthracnose","split":"train","index":486},{"x":-9.1344,"y":0.1566,"label":"Anthracnose","split":"train","index":487},{"x":-7.9657,"y":2.6313,"label":"Anthracnose","split":"train","index":488},{"x":-8.0979,"y":3.4887,"label":"Anthracnose","split":"train","index":489},{"x":-9.0487,"y":3.931,"label":"Anthracnose","split":"train","index":490},{"x":-8.1507,"y":3.3999,"label":"Anthracnose","split":"train","index":491},{"x":-7.1521,"y":0.9844,"label":"Anthracnose","split":"test","index":492},{"x":-7.866,"y":2.5442,"label":"Anthracnose","split":"train","index":493},{"x":-7.275,"y":0.906,"label":"Anthracnose","split":"train","index":494},{"x":-7.3829,"y":-0.2986,"label":"Anthracnose","split":"train","index":495},{"x":-8.0804,"y":3.3927,"label":"Anthracnose","split":"train","index":496},{"x":-7.7085,"y":2.2949,"label":"Anthracnose","split":"train","index":497},{"x":-8.9397,"y":3.8421,"label":"Anthracnose","split":"test","index":498},{"x":-9.262,"y":2.0991,"label":"Anthracnose","split":"test","index":499},{"x":-8.1973,"y":4.752,"label":"Anthracnose","split":"train","index":500},{"x":-9.0103,"y":3.9026,"label":"Anthracnose","split":"train","index":501},{"x":-9.0203,"y":0.0881,"label":"Anthracnose","split":"train","index":502},{"x":-9.063,"y":3.943,"label":"Anthracnose","split":"train","index":503},{"x":-9.0692,"y":0.1206,"label":"Anthracnose","split":"train","index":504},{"x":-9.275,"y":2.0668,"label":"Anthracnose","split":"train","index":505},{"x":-8.9464,"y":0.0357,"label":"Anthracnose","split":"train","index":506},{"x":-9.2732,"y":2.1266,"label":"Anthracnose","split":"train","index":507},{"x":-8.2079,"y":4.7451,"label":"Anthracnose","split":"train","index":508},{"x":-8.427,"y":-0.5809,"label":"Anthracnose","split":"train","index":509},{"x":-8.3656,"y":3.5587,"label":"Anthracnose","split":"train","index":510},{"x":-7.5778,"y":1.1409,"label":"Anthracnose","split":"train","index":511},{"x":-7.5296,"y":1.1278,"label":"Anthracnose","split":"val","index":512},{"x":-8.2254,"y":4.7228,"label":"Anthracnose","split":"train","index":513},{"x":-8.3047,"y":3.7438,"label":"Anthracnose","split":"train","index":514},{"x":-7.7402,"y":1.2096,"label":"Anthracnose","split":"train","index":515},{"x":-8.3724,"y":-0.5681,"label":"Anthracnose","split":"train","index":516},{"x":-8.3813,"y":4.2463,"label":"Anthracnose","split":"val","index":517},{"x":-7.8729,"y":1.3096,"label":"Anthracnose","split":"train","index":518},{"x":-7.3913,"y":-0.2126,"label":"Anthracnose","split":"train","index":519},{"x":-7.1949,"y":1.0251,"label":"Anthracnose","split":"train","index":520},{"x":-7.7214,"y":2.3073,"label":"Anthracnose","split":"train","index":521},{"x":-9.2354,"y":2.1232,"label":"Anthracnose","split":"train","index":522},{"x":-7.0961,"y":0.9382,"label":"Anthracnose","split":"train","index":523},{"x":-7.7959,"y":1.2788,"label":"Anthracnose","split":"test","index":524},{"x":-8.107,"y":3.33,"label":"Anthracnose","split":"test","index":525},{"x":-8.3441,"y":-0.5083,"label":"Anthracnose","split":"train","index":526},{"x":-8.3468,"y":-0.6399,"label":"Anthracnose","split":"train","index":527},{"x":-7.409,"y":-0.2145,"label":"Anthracnose","split":"val","index":528},{"x":-7.7955,"y":2.4305,"label":"Anthracnose","split":"train","index":529},{"x":-9.2381,"y":2.1237,"label":"Anthracnose","split":"train","index":530},{"x":-8.2062,"y":4.7485,"label":"Anthracnose","split":"train","index":531},{"x":-9.2395,"y":2.0606,"label":"Anthracnose","split":"train","index":532},{"x":-8.8823,"y":0.0264,"label":"Anthracnose","split":"val","index":533},{"x":-9.04,"y":3.9186,"label":"Anthracnose","split":"test","index":534},{"x":-8.9902,"y":0.0777,"label":"Anthracnose","split":"train","index":535},{"x":-9.2921,"y":2.1015,"label":"Anthracnose","split":"train","index":536},{"x":-8.175,"y":4.7025,"label":"Anthracnose","split":"train","index":537},{"x":-9.0689,"y":3.955,"label":"Anthracnose","split":"train","index":538},{"x":-8.2289,"y":0.3564,"label":"Anthracnose","split":"train","index":539},{"x":-8.0538,"y":3.3613,"label":"Anthracnose","split":"train","index":540},{"x":-7.7272,"y":2.2833,"label":"Anthracnose","split":"train","index":541},{"x":-9.0685,"y":3.9645,"label":"Anthracnose","split":"train","index":542},{"x":-7.172,"y":0.9572,"label":"Anthracnose","split":"train","index":543},{"x":-8.1598,"y":0.3584,"label":"Anthracnose","split":"test","index":544},{"x":-7.2214,"y":1.0091,"label":"Anthracnose","split":"train","index":545},{"x":-7.854,"y":2.5202,"label":"Anthracnose","split":"train","index":546},{"x":-8.1479,"y":2.8356,"label":"Anthracnose","split":"val","index":547},{"x":-8.1012,"y":3.4733,"label":"Anthracnose","split":"train","index":548},{"x":-9.0863,"y":3.9737,"label":"Anthracnose","split":"train","index":549},{"x":-8.3063,"y":-0.5363,"label":"Anthracnose","split":"train","index":550},{"x":-7.436,"y":-0.1853,"label":"Anthracnose","split":"test","index":551},{"x":-7.9884,"y":3.3497,"label":"Anthracnose","split":"train","index":552},{"x":-7.7386,"y":1.2042,"label":"Anthracnose","split":"train","index":553},{"x":-8.2187,"y":3.1692,"label":"Anthracnose","split":"test","index":554},{"x":-8.3426,"y":-0.5172,"label":"Anthracnose","split":"test","index":555},{"x":-7.3426,"y":-0.2787,"label":"Anthracnose","split":"val","index":556},{"x":-7.0885,"y":0.9407,"label":"Anthracnose","split":"val","index":557},{"x":-7.3898,"y":-0.2161,"label":"Anthracnose","split":"val","index":558},{"x":-7.1468,"y":0.9858,"label":"Anthracnose","split":"train","index":559},{"x":-7.7599,"y":2.3582,"label":"Anthracnose","split":"train","index":560},{"x":-8.3673,"y":-0.5947,"label":"Anthracnose","split":"train","index":561},{"x":-8.8847,"y":3.7309,"label":"Anthracnose","split":"train","index":562},{"x":-7.6936,"y":1.1897,"label":"Anthracnose","split":"train","index":563},{"x":-7.7534,"y":1.2347,"label":"Anthracnose","split":"train","index":564},{"x":-7.63,"y":1.1575,"label":"Anthracnose","split":"val","index":565},{"x":-8.196,"y":4.7419,"label":"Anthracnose","split":"train","index":566},{"x":-8.3838,"y":-0.5833,"label":"Anthracnose","split":"test","index":567},{"x":-8.2662,"y":3.5756,"label":"Anthracnose","split":"train","index":568},{"x":-7.9274,"y":1.5488,"label":"Anthracnose","split":"train","index":569},{"x":1.7461,"y":0.3315,"label":"Downy_Mildew","split":"train","index":570},{"x":2.2214,"y":1.2394,"label":"Downy_Mildew","split":"train","index":571},{"x":0.1064,"y":0.8628,"label":"Downy_Mildew","split":"train","index":572},{"x":7.273,"y":2.9862,"label":"Downy_Mildew","split":"train","index":573},{"x":2.3085,"y":2.1942,"label":"Downy_Mildew","split":"test","index":574},{"x":7.2422,"y":1.919,"label":"Downy_Mildew","split":"train","index":575},{"x":2.3634,"y":2.1949,"label":"Downy_Mildew","split":"train","index":576},{"x":1.1673,"y":1.0529,"label":"Downy_Mildew","split":"test","index":577},{"x":2.1919,"y":0.8892,"label":"Downy_Mildew","split":"train","index":578},{"x":10.8059,"y":-0.6044,"label":"Downy_Mildew","split":"val","index":579},{"x":-0.3737,"y":0.0501,"label":"Downy_Mildew","split":"train","index":580},{"x":7.0964,"y":2.697,"label":"Downy_Mildew","split":"test","index":581},{"x":1.24,"y":0.6545,"label":"Downy_Mildew","split":"test","index":582},{"x":2.2771,"y":0.2795,"label":"Downy_Mildew","split":"val","index":583},{"x":1.0382,"y":0.8131,"label":"Downy_Mildew","split":"train","index":584},{"x":10.8096,"y":-0.596,"label":"Downy_Mildew","split":"train","index":585},{"x":1.5828,"y":1.1982,"label":"Downy_Mildew","split":"train","index":586},{"x":1.4848,"y":1.8698,"label":"Downy_Mildew","split":"train","index":587},{"x":10.7044,"y":-0.8598,"label":"Downy_Mildew","split":"val","index":588},{"x":0.2231,"y":0.7572,"label":"Downy_Mildew","split":"train","index":589},{"x":-0.3903,"y":0.042,"label":"Downy_Mildew","split":"train","index":590},{"x":1.5109,"y":0.7341,"label":"Downy_Mildew","split":"train","index":591},{"x":1.6634,"y":0.9132,"label":"Downy_Mildew","split":"test","index":592},{"x":13.313,"y":1.4173,"label":"Downy_Mildew","split":"val","index":593},{"x":0.9752,"y":0.3188,"label":"Downy_Mildew","split":"train","index":594},{"x":-0.763,"y":0.1137,"label":"Downy_Mildew","split":"val","index":595},{"x":0.9885,"y":0.573,"label":"Downy_Mildew","split":"train","index":596},{"x":10.5191,"y":-0.3362,"label":"Downy_Mildew","split":"test","index":597},{"x":1.7643,"y":1.4639,"label":"Downy_Mildew","split":"train","index":598},{"x":10.2282,"y":-1.023,"label":"Downy_Mildew","split":"train","index":599},{"x":1.6725,"y":2.1481,"label":"Downy_Mildew","split":"train","index":600},{"x":7.2248,"y":3.0386,"label":"Downy_Mildew","split":"train","index":601},{"x":0.8072,"y":1.5812,"label":"Downy_Mildew","split":"test","index":602},{"x":1.7911,"y":2.1597,"label":"Downy_Mildew","split":"train","index":603},{"x":10.1896,"y":-1.0807,"label":"Downy_Mildew","split":"train","index":604},{"x":3.1014,"y":0.3654,"label":"Downy_Mildew","split":"train","index":605},{"x":1.1312,"y":-0.137,"label":"Downy_Mildew","split":"train","index":606},{"x":-0.7282,"y":0.1324,"label":"Downy_Mildew","split":"val","index":607},{"x":10.6439,"y":-0.4625,"label":"Downy_Mildew","split":"train","index":608},{"x":0.9511,"y":0.6505,"label":"Downy_Mildew","split":"train","index":609},{"x":0.6975,"y":1.4119,"label":"Downy_Mildew","split":"train","index":610},{"x":10.2508,"y":-0.9145,"label":"Downy_Mildew","split":"train","index":611},{"x":3.1296,"y":0.3649,"label":"Downy_Mildew","split":"train","index":612},{"x":7.0866,"y":2.7669,"label":"Downy_Mildew","split":"test","index":613},{"x":-0.2641,"y":0.771,"label":"Downy_Mildew","split":"train","index":614},{"x":-0.2363,"y":0.7915,"label":"Downy_Mildew","split":"train","index":615},{"x":1.8012,"y":2.2029,"label":"Downy_Mildew","split":"train","index":616},{"x":1.3386,"y":-0.4756,"label":"Downy_Mildew","split":"train","index":617},{"x":7.2748,"y":2.9883,"label":"Downy_Mildew","split":"train","index":618},{"x":1.3315,"y":1.9931,"label":"Downy_Mildew","split":"train","index":619},{"x":7.0239,"y":2.7193,"label":"Downy_Mildew","split":"train","index":620},{"x":3.1514,"y":0.3563,"label":"Downy_Mildew","split":"train","index":621},{"x":2.5213,"y":0.5697,"label":"Downy_Mildew","split":"train","index":622},{"x":10.2354,"y":-1.0092,"label":"Downy_Mildew","split":"train","index":623},{"x":2.5776,"y":0.3672,"label":"Downy_Mildew","split":"val","index":624},{"x":7.0761,"y":2.166,"label":"Downy_Mildew","split":"train","index":625},{"x":2.1141,"y":0.9329,"label":"Downy_Mildew","split":"train","index":626},{"x":14.5664,"y":2.9104,"label":"Downy_Mildew","split":"train","index":627},{"x":2.061,"y":0.1363,"label":"Downy_Mildew","split":"train","index":628},{"x":2.6341,"y":0.4101,"label":"Downy_Mildew","split":"val","index":629},{"x":-1.9754,"y":0.4955,"label":"Downy_Mildew","split":"train","index":630},{"x":7.0822,"y":2.1211,"label":"Downy_Mildew","split":"train","index":631},{"x":2.0622,"y":1.5354,"label":"Downy_Mildew","split":"train","index":632},{"x":1.7221,"y":-0.3727,"label":"Downy_Mildew","split":"val","index":633},{"x":0.2887,"y":1.2333,"label":"Downy_Mildew","split":"train","index":634},{"x":2.2058,"y":-2.1035,"label":"Downy_Mildew","split":"train","index":635},{"x":1.7596,"y":-0.3537,"label":"Downy_Mildew","split":"test","index":636},{"x":0.3379,"y":1.2092,"label":"Downy_Mildew","split":"test","index":637},{"x":2.2296,"y":-2.1158,"label":"Downy_Mildew","split":"train","index":638},{"x":7.0503,"y":2.8214,"label":"Downy_Mildew","split":"train","index":639},{"x":13.2962,"y":1.4026,"label":"Downy_Mildew","split":"test","index":640},{"x":2.4737,"y":0.6434,"label":"Downy_Mildew","split":"train","index":641},{"x":1.556,"y":0.8845,"label":"Downy_Mildew","split":"train","index":642},{"x":-0.6008,"y":0.3291,"label":"Downy_Mildew","split":"train","index":643},{"x":10.9009,"y":-1.1303,"label":"Downy_Mildew","split":"train","index":644},{"x":2.566,"y":1.4099,"label":"Downy_Mildew","split":"test","index":645},{"x":1.2444,"y":2.2638,"label":"Downy_Mildew","split":"test","index":646},{"x":14.6298,"y":2.9602,"label":"Downy_Mildew","split":"train","index":647},{"x":0.2821,"y":1.3345,"label":"Downy_Mildew","split":"val","index":648},{"x":14.635,"y":2.9704,"label":"Downy_Mildew","split":"train","index":649},{"x":1.2375,"y":2.2773,"label":"Downy_Mildew","split":"train","index":650},{"x":2.1411,"y":1.8003,"label":"Downy_Mildew","split":"train","index":651},{"x":0.308,"y":0.8657,"label":"Downy_Mildew","split":"train","index":652},{"x":0.0945,"y":0.8036,"label":"Downy_Mildew","split":"train","index":653},{"x":10.7462,"y":-0.6066,"label":"Downy_Mildew","split":"train","index":654},{"x":1.7898,"y":0.3579,"label":"Downy_Mildew","split":"val","index":655},{"x":2.5676,"y":1.1062,"label":"Downy_Mildew","split":"train","index":656},{"x":14.351,"y":1.1908,"label":"Downy_Mildew","split":"train","index":657},{"x":10.725,"y":-0.7323,"label":"Downy_Mildew","split":"test","index":658},{"x":1.8183,"y":-0.113,"label":"Downy_Mildew","split":"test","index":659},{"x":-0.6433,"y":0.1702,"label":"Downy_Mildew","split":"train","index":660},{"x":1.3034,"y":1.9918,"label":"Downy_Mildew","split":"train","index":661},{"x":2.5931,"y":1.1855,"label":"Downy_Mildew","split":"val","index":662},{"x":14.3527,"y":1.1749,"label":"Downy_Mildew","split":"test","index":663},{"x":-0.1553,"y":0.8437,"label":"Downy_Mildew","split":"test","index":664},{"x":1.2473,"y":2.24,"label":"Downy_Mildew","split":"val","index":665},{"x":1.3967,"y":-0.5153,"label":"Downy_Mildew","split":"train","index":666},{"x":7.2734,"y":2.9842,"label":"Downy_Mildew","split":"train","index":667},{"x":0.6905,"y":1.54,"label":"Downy_Mildew","split":"train","index":668},{"x":10.2548,"y":-0.9306,"label":"Downy_Mildew","split":"train","index":669},{"x":3.1145,"y":0.3635,"label":"Downy_Mildew","split":"train","index":670},{"x":7.1248,"y":2.8263,"label":"Downy_Mildew","split":"train","index":671},{"x":-0.1984,"y":0.8344,"label":"Downy_Mildew","split":"train","index":672},{"x":1.0442,"y":1.6769,"label":"Downy_Mildew","split":"train","index":673},{"x":2.3092,"y":0.3456,"label":"Downy_Mildew","split":"train","index":674},{"x":10.19,"y":-1.0526,"label":"Downy_Mildew","split":"train","index":675},{"x":3.0749,"y":0.4126,"label":"Downy_Mildew","split":"train","index":676},{"x":1.1065,"y":-0.1519,"label":"Downy_Mildew","split":"train","index":677},{"x":-0.7517,"y":0.0911,"label":"Downy_Mildew","split":"train","index":678},{"x":10.8166,"y":-0.5643,"label":"Downy_Mildew","split":"test","index":679},{"x":0.6991,"y":1.0312,"label":"Downy_Mildew","split":"train","index":680},{"x":1.055,"y":-0.102,"label":"Downy_Mildew","split":"train","index":681},{"x":-0.756,"y":0.133,"label":"Downy_Mildew","split":"val","index":682},{"x":0.762,"y":1.0442,"label":"Downy_Mildew","split":"test","index":683},{"x":10.513,"y":-0.334,"label":"Downy_Mildew","split":"train","index":684},{"x":1.6664,"y":0.9515,"label":"Downy_Mildew","split":"train","index":685},{"x":10.1829,"y":-1.071,"label":"Downy_Mildew","split":"train","index":686},{"x":1.7438,"y":2.2153,"label":"Downy_Mildew","split":"train","index":687},{"x":7.3158,"y":3.0171,"label":"Downy_Mildew","split":"train","index":688},{"x":1.9754,"y":1.6977,"label":"Downy_Mildew","split":"train","index":689},{"x":10.7032,"y":-0.7924,"label":"Downy_Mildew","split":"train","index":690},{"x":0.1772,"y":0.8794,"label":"Downy_Mildew","split":"train","index":691},{"x":-0.3116,"y":0.0061,"label":"Downy_Mildew","split":"val","index":692},{"x":1.4544,"y":0.382,"label":"Downy_Mildew","split":"train","index":693},{"x":1.4041,"y":0.6398,"label":"Downy_Mildew","split":"train","index":694},{"x":7.0953,"y":2.7512,"label":"Downy_Mildew","split":"train","index":695},{"x":-0.2294,"y":0.0533,"label":"Downy_Mildew","split":"train","index":696},{"x":7.1679,"y":2.8103,"label":"Downy_Mildew","split":"train","index":697},{"x":1.3873,"y":0.6591,"label":"Downy_Mildew","split":"train","index":698},{"x":1.1888,"y":0.5576,"label":"Downy_Mildew","split":"train","index":699},{"x":1.3722,"y":0.3852,"label":"Downy_Mildew","split":"train","index":700},{"x":10.8065,"y":-0.6437,"label":"Downy_Mildew","split":"train","index":701},{"x":1.6327,"y":1.3041,"label":"Downy_Mildew","split":"train","index":702},{"x":7.1841,"y":2.0022,"label":"Downy_Mildew","split":"train","index":703},{"x":2.232,"y":2.1419,"label":"Downy_Mildew","split":"val","index":704},{"x":0.9929,"y":0.9996,"label":"Downy_Mildew","split":"train","index":705},{"x":1.7544,"y":0.8471,"label":"Downy_Mildew","split":"test","index":706},{"x":10.7854,"y":-0.6443,"label":"Downy_Mildew","split":"val","index":707},{"x":1.723,"y":0.49,"label":"Downy_Mildew","split":"train","index":708},{"x":2.1341,"y":1.4893,"label":"Downy_Mildew","split":"train","index":709},{"x":0.1319,"y":0.8158,"label":"Downy_Mildew","split":"train","index":710},{"x":7.2557,"y":2.9532,"label":"Downy_Mildew","split":"train","index":711},{"x":2.2147,"y":2.0791,"label":"Downy_Mildew","split":"train","index":712},{"x":-0.6649,"y":0.1727,"label":"Downy_Mildew","split":"val","index":713},{"x":1.3054,"y":1.9753,"label":"Downy_Mildew","split":"train","index":714},{"x":2.5287,"y":1.0748,"label":"Downy_Mildew","split":"train","index":715},{"x":14.3651,"y":1.1736,"label":"Downy_Mildew","split":"train","index":716},{"x":2.5494,"y":1.0324,"label":"Downy_Mildew","split":"train","index":717},{"x":14.3718,"y":1.1775,"label":"Downy_Mildew","split":"test","index":718},{"x":10.6866,"y":-0.779,"label":"Downy_Mildew","split":"test","index":719},{"x":1.9521,"y":0.6865,"label":"Downy_Mildew","split":"train","index":720},{"x":1.6908,"y":1.3917,"label":"Downy_Mildew","split":"train","index":721},{"x":14.674,"y":2.9995,"label":"Downy_Mildew","split":"train","index":722},{"x":2.5215,"y":1.447,"label":"Downy_Mildew","split":"val","index":723},{"x":1.214,"y":2.2325,"label":"Downy_Mildew","split":"train","index":724},{"x":0.2807,"y":1.0032,"label":"Downy_Mildew","split":"train","index":725},{"x":0.0902,"y":0.9631,"label":"Downy_Mildew","split":"train","index":726},{"x":10.9468,"y":-1.1891,"label":"Downy_Mildew","split":"val","index":727},{"x":1.8128,"y":-0.0644,"label":"Downy_Mildew","split":"test","index":728},{"x":-0.6819,"y":0.2584,"label":"Downy_Mildew","split":"train","index":729},{"x":10.9023,"y":-1.134,"label":"Downy_Mildew","split":"train","index":730},{"x":1.2496,"y":2.2758,"label":"Downy_Mildew","split":"val","index":731},{"x":2.5783,"y":1.3969,"label":"Downy_Mildew","split":"train","index":732},{"x":14.5537,"y":2.8905,"label":"Downy_Mildew","split":"train","index":733},{"x":0.2589,"y":1.2857,"label":"Downy_Mildew","split":"train","index":734},{"x":1.7819,"y":-0.3041,"label":"Downy_Mildew","split":"test","index":735},{"x":0.3478,"y":1.0873,"label":"Downy_Mildew","split":"train","index":736},{"x":2.2083,"y":-2.1002,"label":"Downy_Mildew","split":"train","index":737},{"x":6.9907,"y":2.7264,"label":"Downy_Mildew","split":"train","index":738},{"x":13.2696,"y":1.3857,"label":"Downy_Mildew","split":"test","index":739},{"x":2.4234,"y":0.5887,"label":"Downy_Mildew","split":"test","index":740},{"x":0.657,"y":1.2993,"label":"Downy_Mildew","split":"train","index":741},{"x":2.6628,"y":0.3139,"label":"Downy_Mildew","split":"train","index":742},{"x":-1.96,"y":0.4802,"label":"Downy_Mildew","split":"val","index":743},{"x":7.0883,"y":2.1016,"label":"Downy_Mildew","split":"train","index":744},{"x":2.0214,"y":1.4311,"label":"Downy_Mildew","split":"test","index":745},{"x":1.7727,"y":-0.3184,"label":"Downy_Mildew","split":"train","index":746},{"x":0.2604,"y":1.3219,"label":"Downy_Mildew","split":"test","index":747},{"x":2.1866,"y":-2.0791,"label":"Downy_Mildew","split":"train","index":748},{"x":10.2833,"y":-1.0742,"label":"Downy_Mildew","split":"train","index":749},{"x":2.7031,"y":0.3448,"label":"Downy_Mildew","split":"train","index":750},{"x":7.0865,"y":2.121,"label":"Downy_Mildew","split":"test","index":751},{"x":2.5528,"y":1.2079,"label":"Downy_Mildew","split":"train","index":752},{"x":14.5469,"y":2.8842,"label":"Downy_Mildew","split":"train","index":753},{"x":1.9705,"y":0.1108,"label":"Downy_Mildew","split":"train","index":754},{"x":1.3838,"y":1.7985,"label":"Downy_Mildew","split":"train","index":755},{"x":7.002,"y":2.7082,"label":"Downy_Mildew","split":"val","index":756},{"x":3.113,"y":0.4059,"label":"Downy_Mildew","split":"train","index":757},{"x":2.5026,"y":0.6764,"label":"Downy_Mildew","split":"train","index":758},{"x":2.6676,"y":0.2456,"label":"Downy_Mildew","split":"train","index":759},{"x":14.3689,"y":1.1725,"label":"Downy_Mildew","split":"train","index":760},{"x":1.3737,"y":0.6133,"label":"Downy_Mildew","split":"train","index":761},{"x":-1.9535,"y":0.4706,"label":"Downy_Mildew","split":"train","index":762},{"x":1.739,"y":0.8108,"label":"Downy_Mildew","split":"train","index":763},{"x":1.3002,"y":2.0042,"label":"Downy_Mildew","split":"train","index":764},{"x":2.5305,"y":0.9343,"label":"Downy_Mildew","split":"train","index":765},{"x":7.277,"y":1.9547,"label":"Downy_Mildew","split":"val","index":766},{"x":1.4437,"y":0.3113,"label":"Downy_Mildew","split":"train","index":767},{"x":7.0495,"y":2.7014,"label":"Downy_Mildew","split":"train","index":768},{"x":-0.7039,"y":0.2122,"label":"Downy_Mildew","split":"train","index":769},{"x":10.8899,"y":-1.1454,"label":"Downy_Mildew","split":"train","index":770},{"x":2.5785,"y":1.1802,"label":"Downy_Mildew","split":"val","index":771},{"x":7.1178,"y":2.7216,"label":"Downy_Mildew","split":"train","index":772},{"x":1.2456,"y":2.2861,"label":"Downy_Mildew","split":"train","index":773},{"x":2.5275,"y":1.3119,"label":"Downy_Mildew","split":"train","index":774},{"x":0.2759,"y":1.0351,"label":"Downy_Mildew","split":"test","index":775},{"x":10.859,"y":-1.0939,"label":"Downy_Mildew","split":"val","index":776},{"x":2.5916,"y":1.407,"label":"Downy_Mildew","split":"val","index":777},{"x":1.1948,"y":2.1969,"label":"Downy_Mildew","split":"train","index":778},{"x":14.61,"y":2.9415,"label":"Downy_Mildew","split":"test","index":779},{"x":-1.9601,"y":0.4791,"label":"Downy_Mildew","split":"val","index":780},{"x":0.251,"y":0.7439,"label":"Downy_Mildew","split":"train","index":781},{"x":10.9457,"y":-1.2164,"label":"Downy_Mildew","split":"val","index":782},{"x":7.0827,"y":2.1508,"label":"Downy_Mildew","split":"train","index":783},{"x":-1.9758,"y":0.4648,"label":"Downy_Mildew","split":"test","index":784},{"x":2.0105,"y":1.5197,"label":"Downy_Mildew","split":"val","index":785},{"x":1.6341,"y":-0.3863,"label":"Downy_Mildew","split":"val","index":786},{"x":0.2434,"y":1.3647,"label":"Downy_Mildew","split":"train","index":787},{"x":1.7735,"y":-0.376,"label":"Downy_Mildew","split":"train","index":788},{"x":2.1917,"y":-2.0846,"label":"Downy_Mildew","split":"train","index":789},{"x":2.6453,"y":0.283,"label":"Downy_Mildew","split":"train","index":790},{"x":1.4634,"y":1.8901,"label":"Downy_Mildew","split":"train","index":791},{"x":2.3536,"y":0.7001,"label":"Downy_Mildew","split":"train","index":792},{"x":13.3233,"y":1.3732,"label":"Downy_Mildew","split":"val","index":793},{"x":1.9338,"y":1.6304,"label":"Downy_Mildew","split":"train","index":794},{"x":2.2047,"y":-2.1012,"label":"Downy_Mildew","split":"train","index":795},{"x":1.3496,"y":1.9165,"label":"Downy_Mildew","split":"train","index":796},{"x":10.2659,"y":-0.922,"label":"Downy_Mildew","split":"test","index":797},{"x":3.0522,"y":0.3287,"label":"Downy_Mildew","split":"test","index":798},{"x":10.3563,"y":-1.1133,"label":"Downy_Mildew","split":"val","index":799},{"x":2.3794,"y":0.1698,"label":"Downy_Mildew","split":"train","index":800},{"x":-0.3189,"y":0.7455,"label":"Downy_Mildew","split":"train","index":801},{"x":0.2771,"y":1.1714,"label":"Downy_Mildew","split":"train","index":802},{"x":2.0028,"y":-0.0229,"label":"Downy_Mildew","split":"val","index":803},{"x":1.3514,"y":-0.4796,"label":"Downy_Mildew","split":"train","index":804},{"x":7.0247,"y":2.7517,"label":"Downy_Mildew","split":"train","index":805},{"x":-0.2471,"y":0.8107,"label":"Downy_Mildew","split":"train","index":806},{"x":1.5684,"y":-0.4197,"label":"Downy_Mildew","split":"train","index":807},{"x":0.8988,"y":0.6851,"label":"Downy_Mildew","split":"val","index":808},{"x":2.0759,"y":0.109,"label":"Downy_Mildew","split":"train","index":809},{"x":2.5096,"y":0.4926,"label":"Downy_Mildew","split":"test","index":810},{"x":10.4662,"y":-0.2971,"label":"Downy_Mildew","split":"train","index":811},{"x":1.4506,"y":-0.5131,"label":"Downy_Mildew","split":"train","index":812},{"x":7.0017,"y":2.7125,"label":"Downy_Mildew","split":"train","index":813},{"x":2.3043,"y":0.4637,"label":"Downy_Mildew","split":"train","index":814},{"x":2.5277,"y":0.2358,"label":"Downy_Mildew","split":"train","index":815},{"x":1.1352,"y":-0.0286,"label":"Downy_Mildew","split":"train","index":816},{"x":10.4604,"y":-0.2776,"label":"Downy_Mildew","split":"test","index":817},{"x":-0.7031,"y":0.202,"label":"Downy_Mildew","split":"val","index":818},{"x":2.4463,"y":0.1963,"label":"Downy_Mildew","split":"val","index":819},{"x":1.787,"y":2.2389,"label":"Downy_Mildew","split":"test","index":820},{"x":10.211,"y":-1.118,"label":"Downy_Mildew","split":"test","index":821},{"x":0.9551,"y":1.6136,"label":"Downy_Mildew","split":"train","index":822},{"x":10.1832,"y":-1.1468,"label":"Downy_Mildew","split":"train","index":823},{"x":1.7468,"y":2.2426,"label":"Downy_Mildew","split":"train","index":824},{"x":-0.7456,"y":0.1205,"label":"Downy_Mildew","split":"test","index":825},{"x":1.1344,"y":-0.2339,"label":"Downy_Mildew","split":"train","index":826},{"x":0.7623,"y":0.9807,"label":"Downy_Mildew","split":"val","index":827},{"x":10.8441,"y":-0.5971,"label":"Downy_Mildew","split":"train","index":828},{"x":-0.226,"y":0.0091,"label":"Downy_Mildew","split":"train","index":829},{"x":1.8692,"y":1.1786,"label":"Downy_Mildew","split":"train","index":830},{"x":1.3454,"y":0.7669,"label":"Downy_Mildew","split":"train","index":831},{"x":7.0539,"y":2.7368,"label":"Downy_Mildew","split":"train","index":832},{"x":7.2821,"y":1.9574,"label":"Downy_Mildew","split":"test","index":833},{"x":10.7305,"y":-0.7392,"label":"Downy_Mildew","split":"train","index":834},{"x":1.7294,"y":1.5644,"label":"Downy_Mildew","split":"test","index":835},{"x":10.7089,"y":-0.7467,"label":"Downy_Mildew","split":"test","index":836},{"x":1.4419,"y":-0.4699,"label":"Downy_Mildew","split":"train","index":837},{"x":-0.1837,"y":0.0063,"label":"Downy_Mildew","split":"train","index":838},{"x":13.2923,"y":1.4083,"label":"Downy_Mildew","split":"train","index":839},{"x":1.8472,"y":0.9192,"label":"Downy_Mildew","split":"val","index":840},{"x":1.4707,"y":0.844,"label":"Downy_Mildew","split":"train","index":841},{"x":1.4671,"y":-0.4439,"label":"Downy_Mildew","split":"train","index":842},{"x":1.0872,"y":0.9848,"label":"Downy_Mildew","split":"train","index":843},{"x":2.2507,"y":1.4703,"label":"Downy_Mildew","split":"train","index":844},{"x":1.9024,"y":0.9642,"label":"Downy_Mildew","split":"train","index":845},{"x":13.3383,"y":1.4541,"label":"Downy_Mildew","split":"val","index":846},{"x":7.3256,"y":2.9458,"label":"Downy_Mildew","split":"val","index":847},{"x":2.3784,"y":2.1987,"label":"Downy_Mildew","split":"train","index":848},{"x":0.378,"y":1.1872,"label":"Downy_Mildew","split":"train","index":849},{"x":1.8451,"y":1.3697,"label":"Downy_Mildew","split":"test","index":850},{"x":7.2536,"y":1.9398,"label":"Downy_Mildew","split":"train","index":851},{"x":2.3899,"y":2.1974,"label":"Downy_Mildew","split":"train","index":852},{"x":1.0811,"y":0.9922,"label":"Downy_Mildew","split":"val","index":853},{"x":1.8187,"y":0.7712,"label":"Downy_Mildew","split":"train","index":854},{"x":10.3188,"y":-1.0413,"label":"Downy_Mildew","split":"train","index":855},{"x":2.7019,"y":0.265,"label":"Downy_Mildew","split":"val","index":856},{"x":-0.1522,"y":0.8402,"label":"Downy_Mildew","split":"test","index":857},{"x":0.2525,"y":1.179,"label":"Downy_Mildew","split":"train","index":858},{"x":2.1626,"y":0.1854,"label":"Downy_Mildew","split":"train","index":859},{"x":2.2044,"y":-2.0974,"label":"Downy_Mildew","split":"train","index":860},{"x":1.4247,"y":1.9833,"label":"Downy_Mildew","split":"test","index":861},{"x":10.2851,"y":-0.8967,"label":"Downy_Mildew","split":"train","index":862},{"x":3.0608,"y":0.3373,"label":"Downy_Mildew","split":"train","index":863},{"x":1.7627,"y":-0.2621,"label":"Downy_Mildew","split":"train","index":864},{"x":2.209,"y":-2.1032,"label":"Downy_Mildew","split":"train","index":865},{"x":2.6149,"y":0.2537,"label":"Downy_Mildew","split":"val","index":866},{"x":1.2887,"y":1.8603,"label":"Downy_Mildew","split":"val","index":867},{"x":2.2383,"y":0.1883,"label":"Downy_Mildew","split":"train","index":868},{"x":7.0728,"y":2.1186,"label":"Downy_Mildew","split":"train","index":869},{"x":1.8576,"y":1.5152,"label":"Downy_Mildew","split":"train","index":870},{"x":7.137,"y":2.0592,"label":"Downy_Mildew","split":"train","index":871},{"x":-1.9625,"y":0.4804,"label":"Downy_Mildew","split":"train","index":872},{"x":1.9621,"y":1.5787,"label":"Downy_Mildew","split":"train","index":873},{"x":1.7527,"y":-0.2628,"label":"Downy_Mildew","split":"train","index":874},{"x":0.2876,"y":1.1953,"label":"Downy_Mildew","split":"val","index":875},{"x":14.368,"y":1.1804,"label":"Downy_Mildew","split":"test","index":876},{"x":1.2046,"y":1.0191,"label":"Downy_Mildew","split":"val","index":877},{"x":2.6033,"y":1.3793,"label":"Downy_Mildew","split":"train","index":878},{"x":14.5985,"y":2.9278,"label":"Downy_Mildew","split":"train","index":879},{"x":-1.9299,"y":0.4826,"label":"Downy_Mildew","split":"train","index":880},{"x":0.5173,"y":0.6037,"label":"Downy_Mildew","split":"train","index":881},{"x":10.9275,"y":-1.1846,"label":"Downy_Mildew","split":"train","index":882},{"x":-0.6552,"y":0.2691,"label":"Downy_Mildew","split":"val","index":883},{"x":10.8446,"y":-1.1464,"label":"Downy_Mildew","split":"test","index":884},{"x":2.3842,"y":2.1887,"label":"Downy_Mildew","split":"test","index":885},{"x":7.07,"y":2.722,"label":"Downy_Mildew","split":"val","index":886},{"x":1.4467,"y":0.2453,"label":"Downy_Mildew","split":"train","index":887},{"x":1.2195,"y":2.2999,"label":"Downy_Mildew","split":"val","index":888},{"x":0.1728,"y":1.0554,"label":"Downy_Mildew","split":"train","index":889},{"x":1.7743,"y":0.6717,"label":"Downy_Mildew","split":"train","index":890},{"x":2.5595,"y":0.945,"label":"Downy_Mildew","split":"train","index":891},{"x":7.2611,"y":1.9245,"label":"Downy_Mildew","split":"test","index":892},{"x":1.2119,"y":0.6193,"label":"Downy_Mildew","split":"train","index":893},{"x":7.103,"y":2.7947,"label":"Downy_Mildew","split":"train","index":894},{"x":2.683,"y":0.3614,"label":"Downy_Mildew","split":"train","index":895},{"x":14.3734,"y":1.1621,"label":"Downy_Mildew","split":"train","index":896},{"x":1.3583,"y":0.7163,"label":"Downy_Mildew","split":"train","index":897},{"x":-1.9642,"y":0.481,"label":"Downy_Mildew","split":"train","index":898},{"x":1.7665,"y":0.7031,"label":"Downy_Mildew","split":"train","index":899},{"x":1.0203,"y":-0.0199,"label":"Downy_Mildew","split":"train","index":900},{"x":1.8878,"y":1.3324,"label":"Downy_Mildew","split":"train","index":901},{"x":7.275,"y":1.9181,"label":"Downy_Mildew","split":"test","index":902},{"x":2.328,"y":2.1584,"label":"Downy_Mildew","split":"train","index":903},{"x":1.073,"y":1.0118,"label":"Downy_Mildew","split":"val","index":904},{"x":1.7773,"y":0.7735,"label":"Downy_Mildew","split":"val","index":905},{"x":1.5592,"y":0.0462,"label":"Downy_Mildew","split":"train","index":906},{"x":1.9275,"y":1.6323,"label":"Downy_Mildew","split":"test","index":907},{"x":1.82,"y":0.9896,"label":"Downy_Mildew","split":"train","index":908},{"x":13.2997,"y":1.4152,"label":"Downy_Mildew","split":"test","index":909},{"x":7.2787,"y":2.9894,"label":"Downy_Mildew","split":"train","index":910},{"x":2.3998,"y":2.2053,"label":"Downy_Mildew","split":"train","index":911},{"x":10.7652,"y":-0.7111,"label":"Downy_Mildew","split":"train","index":912},{"x":1.5037,"y":0.2949,"label":"Downy_Mildew","split":"train","index":913},{"x":-0.1935,"y":0.0052,"label":"Downy_Mildew","split":"train","index":914},{"x":13.2859,"y":1.3914,"label":"Downy_Mildew","split":"val","index":915},{"x":1.3626,"y":1.2893,"label":"Downy_Mildew","split":"train","index":916},{"x":1.808,"y":0.9088,"label":"Downy_Mildew","split":"train","index":917},{"x":1.371,"y":-0.5392,"label":"Downy_Mildew","split":"test","index":918},{"x":-0.1654,"y":0.0323,"label":"Downy_Mildew","split":"train","index":919},{"x":1.3039,"y":1.0759,"label":"Downy_Mildew","split":"train","index":920},{"x":2.0873,"y":0.8663,"label":"Downy_Mildew","split":"train","index":921},{"x":7.2652,"y":1.9437,"label":"Downy_Mildew","split":"test","index":922},{"x":10.7987,"y":-0.5964,"label":"Downy_Mildew","split":"train","index":923},{"x":1.7025,"y":1.4439,"label":"Downy_Mildew","split":"train","index":924},{"x":0.6471,"y":1.2922,"label":"Downy_Mildew","split":"test","index":925},{"x":10.1246,"y":-1.1442,"label":"Downy_Mildew","split":"val","index":926},{"x":1.8348,"y":2.2048,"label":"Downy_Mildew","split":"train","index":927},{"x":-0.766,"y":0.1484,"label":"Downy_Mildew","split":"train","index":928},{"x":0.9491,"y":0.2627,"label":"Downy_Mildew","split":"train","index":929},{"x":0.7473,"y":0.9653,"label":"Downy_Mildew","split":"train","index":930},{"x":10.7843,"y":-0.6091,"label":"Downy_Mildew","split":"train","index":931},{"x":2.2442,"y":0.3943,"label":"Downy_Mildew","split":"test","index":932},{"x":2.6428,"y":0.2716,"label":"Downy_Mildew","split":"train","index":933},{"x":1.1878,"y":-0.1608,"label":"Downy_Mildew","split":"train","index":934},{"x":10.4809,"y":-0.2859,"label":"Downy_Mildew","split":"train","index":935},{"x":-0.6672,"y":0.2323,"label":"Downy_Mildew","split":"val","index":936},{"x":0.9663,"y":1.221,"label":"Downy_Mildew","split":"train","index":937},{"x":1.755,"y":2.2434,"label":"Downy_Mildew","split":"train","index":938},{"x":10.2401,"y":-1.0329,"label":"Downy_Mildew","split":"test","index":939},{"x":2.0932,"y":0.0952,"label":"Downy_Mildew","split":"train","index":940},{"x":2.6111,"y":0.5994,"label":"Downy_Mildew","split":"train","index":941},{"x":10.4595,"y":-0.3153,"label":"Downy_Mildew","split":"train","index":942},{"x":1.4214,"y":-0.5428,"label":"Downy_Mildew","split":"train","index":943},{"x":7.2616,"y":2.9895,"label":"Downy_Mildew","split":"train","index":944},{"x":1.3423,"y":-0.4792,"label":"Downy_Mildew","split":"train","index":945},{"x":7.023,"y":2.743,"label":"Downy_Mildew","split":"val","index":946},{"x":-0.3154,"y":0.7635,"label":"Downy_Mildew","split":"val","index":947},{"x":1.5035,"y":-0.4768,"label":"Downy_Mildew","split":"train","index":948},{"x":0.9619,"y":0.3689,"label":"Downy_Mildew","split":"train","index":949},{"x":13.5717,"y":9.7041,"label":"Healthy","split":"train","index":950},{"x":14.5073,"y":8.8769,"label":"Healthy","split":"train","index":951},{"x":13.1213,"y":10.6269,"label":"Healthy","split":"train","index":952},{"x":13.0602,"y":10.0145,"label":"Healthy","split":"train","index":953},{"x":14.1945,"y":8.7991,"label":"Healthy","split":"train","index":954},{"x":13.1255,"y":10.1756,"label":"Healthy","split":"train","index":955},{"x":14.4694,"y":8.6946,"label":"Healthy","split":"train","index":956},{"x":12.672,"y":9.8298,"label":"Healthy","split":"train","index":957},{"x":13.6783,"y":10.9598,"label":"Healthy","split":"test","index":958},{"x":13.5176,"y":9.9054,"label":"Healthy","split":"train","index":959},{"x":12.6836,"y":9.8983,"label":"Healthy","split":"train","index":960},{"x":13.9995,"y":9.4608,"label":"Healthy","split":"train","index":961},{"x":14.5009,"y":8.6411,"label":"Healthy","split":"train","index":962},{"x":12.8595,"y":9.9372,"label":"Healthy","split":"val","index":963},{"x":13.7201,"y":9.0591,"label":"Healthy","split":"train","index":964},{"x":13.6456,"y":9.1738,"label":"Healthy","split":"test","index":965},{"x":14.4325,"y":8.6086,"label":"Healthy","split":"val","index":966},{"x":13.121,"y":10.6729,"label":"Healthy","split":"train","index":967},{"x":13.7535,"y":8.8697,"label":"Healthy","split":"test","index":968},{"x":13.1192,"y":11.1747,"label":"Healthy","split":"test","index":969},{"x":12.797,"y":9.803,"label":"Healthy","split":"val","index":970},{"x":13.7664,"y":8.9662,"label":"Healthy","split":"train","index":971},{"x":13.477,"y":9.2772,"label":"Healthy","split":"train","index":972},{"x":13.1819,"y":11.1614,"label":"Healthy","split":"val","index":973},{"x":13.7189,"y":8.904,"label":"Healthy","split":"train","index":974},{"x":13.8404,"y":8.699,"label":"Healthy","split":"train","index":975},{"x":13.9287,"y":10.6166,"label":"Healthy","split":"val","index":976},{"x":13.0992,"y":10.5819,"label":"Healthy","split":"train","index":977},{"x":12.6154,"y":9.8283,"label":"Healthy","split":"train","index":978},{"x":14.3087,"y":8.6256,"label":"Healthy","split":"train","index":979},{"x":13.9336,"y":8.4261,"label":"Healthy","split":"train","index":980},{"x":12.6914,"y":9.945,"label":"Healthy","split":"train","index":981},{"x":14.5473,"y":9.0243,"label":"Healthy","split":"val","index":982},{"x":13.7471,"y":8.2208,"label":"Healthy","split":"val","index":983},{"x":12.8638,"y":10.2405,"label":"Healthy","split":"train","index":984},{"x":14.5548,"y":8.9908,"label":"Healthy","split":"train","index":985},{"x":13.5407,"y":11.0993,"label":"Healthy","split":"train","index":986},{"x":13.1666,"y":11.2915,"label":"Healthy","split":"train","index":987},{"x":14.3663,"y":9.2151,"label":"Healthy","split":"train","index":988},{"x":14.2662,"y":9.2656,"label":"Healthy","split":"train","index":989},{"x":12.7616,"y":9.8098,"label":"Healthy","split":"val","index":990},{"x":14.5706,"y":8.999,"label":"Healthy","split":"train","index":991},{"x":14.327,"y":9.3584,"label":"Healthy","split":"val","index":992},{"x":13.0737,"y":10.6922,"label":"Healthy","split":"train","index":993},{"x":13.5875,"y":10.6557,"label":"Healthy","split":"val","index":994},{"x":12.951,"y":10.4127,"label":"Healthy","split":"train","index":995},{"x":12.7963,"y":10.0101,"label":"Healthy","split":"train","index":996},{"x":13.697,"y":9.0133,"label":"Healthy","split":"val","index":997},{"x":14.1835,"y":8.3522,"label":"Healthy","split":"train","index":998},{"x":13.1344,"y":11.1822,"label":"Healthy","split":"train","index":999},{"x":13.7367,"y":8.906,"label":"Healthy","split":"val","index":1000},{"x":13.7348,"y":8.2015,"label":"Healthy","split":"train","index":1001},{"x":13.1111,"y":11.1509,"label":"Healthy","split":"train","index":1002},{"x":12.8134,"y":9.9055,"label":"Healthy","split":"train","index":1003},{"x":14.2207,"y":9.6997,"label":"Healthy","split":"test","index":1004},{"x":13.751,"y":8.8648,"label":"Healthy","split":"train","index":1005},{"x":13.6988,"y":9.6526,"label":"Healthy","split":"train","index":1006},{"x":13.9999,"y":8.5096,"label":"Healthy","split":"train","index":1007},{"x":13.1769,"y":10.242,"label":"Healthy","split":"test","index":1008},{"x":13.0476,"y":10.5962,"label":"Healthy","split":"test","index":1009},{"x":13.9796,"y":9.1203,"label":"Healthy","split":"val","index":1010},{"x":14.2867,"y":8.6868,"label":"Healthy","split":"train","index":1011},{"x":13.177,"y":10.7323,"label":"Healthy","split":"train","index":1012},{"x":13.1959,"y":9.6632,"label":"Healthy","split":"train","index":1013},{"x":13.5996,"y":10.0254,"label":"Healthy","split":"test","index":1014},{"x":13.4555,"y":9.3438,"label":"Healthy","split":"test","index":1015},{"x":12.9853,"y":10.5035,"label":"Healthy","split":"train","index":1016},{"x":12.9786,"y":10.2312,"label":"Healthy","split":"val","index":1017},{"x":13.5823,"y":8.9079,"label":"Healthy","split":"val","index":1018},{"x":13.4741,"y":10.8522,"label":"Healthy","split":"train","index":1019},{"x":13.6192,"y":9.2677,"label":"Healthy","split":"train","index":1020},{"x":13.5599,"y":9.4241,"label":"Healthy","split":"train","index":1021},{"x":13.2721,"y":10.5254,"label":"Healthy","split":"test","index":1022},{"x":14.0751,"y":8.8911,"label":"Healthy","split":"train","index":1023},{"x":12.9854,"y":10.3938,"label":"Healthy","split":"train","index":1024},{"x":13.6814,"y":9.1287,"label":"Healthy","split":"train","index":1025},{"x":12.8536,"y":10.0518,"label":"Healthy","split":"train","index":1026},{"x":12.6928,"y":9.837,"label":"Healthy","split":"train","index":1027},{"x":14.1677,"y":9.1934,"label":"Healthy","split":"train","index":1028},{"x":13.1487,"y":9.8,"label":"Healthy","split":"train","index":1029},{"x":13.0049,"y":10.489,"label":"Healthy","split":"train","index":1030},{"x":13.5687,"y":8.8861,"label":"Healthy","split":"train","index":1031},{"x":13.2223,"y":10.9242,"label":"Healthy","split":"train","index":1032},{"x":12.9663,"y":11.0554,"label":"Healthy","split":"train","index":1033},{"x":14.6169,"y":9.5441,"label":"Healthy","split":"train","index":1034},{"x":14.5024,"y":8.6923,"label":"Healthy","split":"val","index":1035},{"x":14.3239,"y":8.3731,"label":"Healthy","split":"train","index":1036},{"x":13.8121,"y":8.3228,"label":"Healthy","split":"train","index":1037},{"x":13.0496,"y":10.6021,"label":"Healthy","split":"train","index":1038},{"x":14.3936,"y":9.3018,"label":"Healthy","split":"test","index":1039},{"x":12.959,"y":10.5613,"label":"Healthy","split":"train","index":1040},{"x":14.465,"y":8.782,"label":"Healthy","split":"train","index":1041},{"x":13.4466,"y":10.0389,"label":"Healthy","split":"train","index":1042},{"x":13.8897,"y":8.5147,"label":"Healthy","split":"test","index":1043},{"x":13.4223,"y":9.575,"label":"Healthy","split":"train","index":1044},{"x":13.1578,"y":10.1149,"label":"Healthy","split":"train","index":1045},{"x":13.7482,"y":10.7698,"label":"Healthy","split":"train","index":1046},{"x":13.7496,"y":9.6532,"label":"Healthy","split":"train","index":1047},{"x":13.1755,"y":10.2303,"label":"Healthy","split":"train","index":1048},{"x":13.184,"y":10.0139,"label":"Healthy","split":"test","index":1049},{"x":14.1661,"y":10.4093,"label":"Healthy","split":"train","index":1050},{"x":14.6589,"y":9.5439,"label":"Healthy","split":"train","index":1051},{"x":13.2916,"y":10.5967,"label":"Healthy","split":"train","index":1052},{"x":14.6425,"y":9.7226,"label":"Healthy","split":"train","index":1053},{"x":13.7855,"y":10.9712,"label":"Healthy","split":"train","index":1054},{"x":13.8042,"y":8.818,"label":"Healthy","split":"test","index":1055},{"x":13.7343,"y":8.217,"label":"Healthy","split":"train","index":1056},{"x":13.3331,"y":10.5223,"label":"Healthy","split":"train","index":1057},{"x":13.3404,"y":10.7561,"label":"Healthy","split":"test","index":1058},{"x":13.4686,"y":11.0793,"label":"Healthy","split":"val","index":1059},{"x":14.4477,"y":9.9786,"label":"Healthy","split":"train","index":1060},{"x":14.4698,"y":9.7853,"label":"Healthy","split":"train","index":1061},{"x":13.0381,"y":10.8114,"label":"Healthy","split":"train","index":1062},{"x":14.431,"y":9.8952,"label":"Healthy","split":"train","index":1063},{"x":14.0896,"y":10.3028,"label":"Healthy","split":"train","index":1064},{"x":13.6924,"y":10.7916,"label":"Healthy","split":"train","index":1065},{"x":14.3071,"y":9.8905,"label":"Healthy","split":"train","index":1066},{"x":13.3741,"y":9.9312,"label":"Healthy","split":"val","index":1067},{"x":14.3027,"y":10.1103,"label":"Healthy","split":"train","index":1068},{"x":13.6776,"y":8.1357,"label":"Healthy","split":"val","index":1069},{"x":14.2902,"y":9.6632,"label":"Healthy","split":"test","index":1070},{"x":13.1072,"y":10.226,"label":"Healthy","split":"val","index":1071},{"x":14.1541,"y":9.1539,"label":"Healthy","split":"train","index":1072},{"x":14.2981,"y":9.2838,"label":"Healthy","split":"train","index":1073},{"x":13.2328,"y":11.2435,"label":"Healthy","split":"val","index":1074},{"x":13.6761,"y":8.1279,"label":"Healthy","split":"train","index":1075},{"x":13.6027,"y":10.5391,"label":"Healthy","split":"train","index":1076},{"x":14.3819,"y":10.0349,"label":"Healthy","split":"train","index":1077},{"x":12.6908,"y":9.8996,"label":"Healthy","split":"val","index":1078},{"x":13.7785,"y":8.7056,"label":"Healthy","split":"train","index":1079},{"x":13.7412,"y":10.7654,"label":"Healthy","split":"train","index":1080},{"x":13.4482,"y":11.1231,"label":"Healthy","split":"train","index":1081},{"x":13.2659,"y":10.4532,"label":"Healthy","split":"test","index":1082},{"x":14.2067,"y":9.8808,"label":"Healthy","split":"val","index":1083},{"x":14.3322,"y":9.9775,"label":"Healthy","split":"train","index":1084},{"x":14.2585,"y":10.1202,"label":"Healthy","split":"test","index":1085},{"x":14.6555,"y":8.6153,"label":"Healthy","split":"train","index":1086},{"x":14.3667,"y":10.1,"label":"Healthy","split":"test","index":1087},{"x":13.4085,"y":9.8941,"label":"Healthy","split":"train","index":1088},{"x":13.413,"y":10.8322,"label":"Healthy","split":"train","index":1089},{"x":13.5931,"y":9.6808,"label":"Healthy","split":"test","index":1090},{"x":13.8001,"y":10.5155,"label":"Healthy","split":"train","index":1091},{"x":13.2357,"y":10.6829,"label":"Healthy","split":"test","index":1092},{"x":13.5475,"y":9.5272,"label":"Healthy","split":"train","index":1093},{"x":13.7077,"y":10.9207,"label":"Healthy","split":"train","index":1094},{"x":14.0646,"y":10.6288,"label":"Healthy","split":"train","index":1095},{"x":14.2828,"y":10.0822,"label":"Healthy","split":"train","index":1096},{"x":13.5388,"y":10.8294,"label":"Healthy","split":"train","index":1097},{"x":13.0884,"y":10.2712,"label":"Healthy","split":"val","index":1098},{"x":14.0538,"y":9.7735,"label":"Healthy","split":"test","index":1099},{"x":13.7959,"y":9.0697,"label":"Healthy","split":"train","index":1100},{"x":13.8815,"y":10.6763,"label":"Healthy","split":"train","index":1101},{"x":14.4154,"y":10.1073,"label":"Healthy","split":"train","index":1102},{"x":13.6942,"y":8.1515,"label":"Healthy","split":"train","index":1103},{"x":13.8673,"y":8.7875,"label":"Healthy","split":"test","index":1104},{"x":12.9202,"y":10.5099,"label":"Healthy","split":"test","index":1105},{"x":13.2185,"y":10.4824,"label":"Healthy","split":"val","index":1106},{"x":14.2756,"y":9.7037,"label":"Healthy","split":"test","index":1107},{"x":14.1121,"y":10.3747,"label":"Healthy","split":"train","index":1108},{"x":13.8786,"y":10.355,"label":"Healthy","split":"train","index":1109},{"x":13.4658,"y":11.0788,"label":"Healthy","split":"train","index":1110},{"x":14.6756,"y":9.5184,"label":"Healthy","split":"train","index":1111},{"x":14.3826,"y":9.3635,"label":"Healthy","split":"test","index":1112},{"x":13.5915,"y":9.1184,"label":"Healthy","split":"test","index":1113},{"x":13.7477,"y":8.2188,"label":"Healthy","split":"train","index":1114},{"x":13.0415,"y":10.8107,"label":"Healthy","split":"train","index":1115},{"x":12.8879,"y":10.0428,"label":"Healthy","split":"val","index":1116},{"x":14.7059,"y":9.5384,"label":"Healthy","split":"train","index":1117},{"x":14.0525,"y":10.544,"label":"Healthy","split":"val","index":1118},{"x":13.8352,"y":10.8238,"label":"Healthy","split":"train","index":1119},{"x":14.1738,"y":9.9626,"label":"Healthy","split":"train","index":1120},{"x":14.2306,"y":9.3147,"label":"Healthy","split":"train","index":1121},{"x":13.8825,"y":9.4246,"label":"Healthy","split":"train","index":1122},{"x":13.0821,"y":10.34,"label":"Healthy","split":"train","index":1123},{"x":13.193,"y":10.8171,"label":"Healthy","split":"val","index":1124},{"x":13.7296,"y":10.5715,"label":"Healthy","split":"val","index":1125},{"x":13.4497,"y":10.4959,"label":"Healthy","split":"train","index":1126},{"x":13.7013,"y":9.1962,"label":"Healthy","split":"train","index":1127},{"x":14.1279,"y":10.5649,"label":"Healthy","split":"train","index":1128},{"x":13.817,"y":10.7459,"label":"Healthy","split":"train","index":1129},{"x":13.5675,"y":9.5558,"label":"Healthy","split":"train","index":1130},{"x":13.7275,"y":10.9159,"label":"Healthy","split":"train","index":1131},{"x":14.072,"y":10.6247,"label":"Healthy","split":"train","index":1132},{"x":13.6109,"y":10.0271,"label":"Healthy","split":"train","index":1133},{"x":13.3493,"y":10.4712,"label":"Healthy","split":"train","index":1134},{"x":13.0778,"y":10.7297,"label":"Healthy","split":"test","index":1135},{"x":14.0487,"y":9.0418,"label":"Healthy","split":"train","index":1136},{"x":14.2778,"y":10.1812,"label":"Healthy","split":"train","index":1137},{"x":13.6701,"y":9.1972,"label":"Healthy","split":"train","index":1138},{"x":13.6466,"y":10.6623,"label":"Healthy","split":"train","index":1139},{"x":13.6396,"y":10.8635,"label":"Healthy","split":"val","index":1140},{"x":14.2803,"y":10.0008,"label":"Healthy","split":"train","index":1141},{"x":13.513,"y":9.2434,"label":"Healthy","split":"train","index":1142},{"x":14.3909,"y":9.9553,"label":"Healthy","split":"train","index":1143},{"x":12.6531,"y":9.8257,"label":"Healthy","split":"train","index":1144},{"x":13.7024,"y":8.9824,"label":"Healthy","split":"test","index":1145},{"x":13.6254,"y":10.7336,"label":"Healthy","split":"val","index":1146},{"x":13.8179,"y":9.031,"label":"Healthy","split":"train","index":1147},{"x":13.2275,"y":11.2583,"label":"Healthy","split":"test","index":1148},{"x":14.4028,"y":9.7954,"label":"Healthy","split":"train","index":1149},{"x":14.5134,"y":9.5404,"label":"Healthy","split":"train","index":1150},{"x":13.2563,"y":11.2991,"label":"Healthy","split":"train","index":1151},{"x":13.678,"y":8.133,"label":"Healthy","split":"test","index":1152},{"x":13.0041,"y":9.8777,"label":"Healthy","split":"train","index":1153},{"x":14.3511,"y":9.8554,"label":"Healthy","split":"train","index":1154}]
\ No newline at end of file
diff --git a/static/data/dataset-benchmarking/embeddings/watermelon_disease_classification_umap_3d.json b/static/data/dataset-benchmarking/embeddings/watermelon_disease_classification_umap_3d.json
new file mode 100644
index 0000000..cf4af85
--- /dev/null
+++ b/static/data/dataset-benchmarking/embeddings/watermelon_disease_classification_umap_3d.json
@@ -0,0 +1 @@
+[{"x":5.8817,"y":-3.0129,"z":3.9549,"label":"Mosaic_Virus","split":"train","index":0},{"x":1.203,"y":12.9537,"z":9.0847,"label":"Mosaic_Virus","split":"train","index":1},{"x":5.801,"y":14.9443,"z":3.1255,"label":"Mosaic_Virus","split":"train","index":2},{"x":6.2909,"y":-3.6259,"z":4.4216,"label":"Mosaic_Virus","split":"val","index":3},{"x":4.8578,"y":-3.5842,"z":1.7194,"label":"Mosaic_Virus","split":"val","index":4},{"x":5.8133,"y":14.9112,"z":3.1511,"label":"Mosaic_Virus","split":"test","index":5},{"x":6.0836,"y":-3.1509,"z":4.7024,"label":"Mosaic_Virus","split":"val","index":6},{"x":4.8794,"y":-3.5611,"z":1.7261,"label":"Mosaic_Virus","split":"train","index":7},{"x":6.1202,"y":14.2525,"z":3.2669,"label":"Mosaic_Virus","split":"train","index":8},{"x":7.2888,"y":8.9031,"z":4.0751,"label":"Mosaic_Virus","split":"val","index":9},{"x":6.5286,"y":-3.5415,"z":4.134,"label":"Mosaic_Virus","split":"train","index":10},{"x":6.5721,"y":9.3769,"z":4.0888,"label":"Mosaic_Virus","split":"val","index":11},{"x":7.1786,"y":0.3616,"z":4.1621,"label":"Mosaic_Virus","split":"train","index":12},{"x":5.9929,"y":14.2724,"z":3.1352,"label":"Mosaic_Virus","split":"test","index":13},{"x":6.6472,"y":-3.5979,"z":5.2364,"label":"Mosaic_Virus","split":"train","index":14},{"x":7.3298,"y":-4.1895,"z":6.0364,"label":"Mosaic_Virus","split":"val","index":15},{"x":5.9078,"y":-2.8084,"z":4.2538,"label":"Mosaic_Virus","split":"train","index":16},{"x":5.9587,"y":14.2592,"z":3.0831,"label":"Mosaic_Virus","split":"test","index":17},{"x":6.4167,"y":-3.4283,"z":4.0387,"label":"Mosaic_Virus","split":"train","index":18},{"x":5.8906,"y":-2.4114,"z":4.0617,"label":"Mosaic_Virus","split":"train","index":19},{"x":5.9373,"y":-3.1655,"z":3.7448,"label":"Mosaic_Virus","split":"train","index":20},{"x":1.1458,"y":13.0172,"z":9.1266,"label":"Mosaic_Virus","split":"train","index":21},{"x":6.5729,"y":9.406,"z":4.104,"label":"Mosaic_Virus","split":"train","index":22},{"x":6.2808,"y":13.4619,"z":3.3932,"label":"Mosaic_Virus","split":"train","index":23},{"x":5.9332,"y":-3.0599,"z":4.4647,"label":"Mosaic_Virus","split":"train","index":24},{"x":5.9397,"y":-3.0146,"z":4.4441,"label":"Mosaic_Virus","split":"train","index":25},{"x":5.9341,"y":14.5076,"z":3.524,"label":"Mosaic_Virus","split":"train","index":26},{"x":6.274,"y":13.9269,"z":3.3592,"label":"Mosaic_Virus","split":"train","index":27},{"x":4.7762,"y":8.8866,"z":1.6123,"label":"Mosaic_Virus","split":"test","index":28},{"x":5.8228,"y":8.2435,"z":2.7164,"label":"Mosaic_Virus","split":"test","index":29},{"x":7.1685,"y":0.6872,"z":4.157,"label":"Mosaic_Virus","split":"train","index":30},{"x":7.3545,"y":8.8979,"z":4.1049,"label":"Mosaic_Virus","split":"val","index":31},{"x":4.8613,"y":-3.5137,"z":1.7659,"label":"Mosaic_Virus","split":"train","index":32},{"x":4.917,"y":9.1392,"z":1.6941,"label":"Mosaic_Virus","split":"train","index":33},{"x":7.3114,"y":8.9862,"z":4.0425,"label":"Mosaic_Virus","split":"train","index":34},{"x":5.6138,"y":9.6338,"z":2.0353,"label":"Mosaic_Virus","split":"train","index":35},{"x":6.2916,"y":8.1564,"z":3.1997,"label":"Mosaic_Virus","split":"train","index":36},{"x":5.9145,"y":-2.7945,"z":4.3445,"label":"Mosaic_Virus","split":"train","index":37},{"x":5.9815,"y":-3.189,"z":4.0571,"label":"Mosaic_Virus","split":"train","index":38},{"x":5.9742,"y":14.4515,"z":3.2294,"label":"Mosaic_Virus","split":"train","index":39},{"x":4.9324,"y":-3.4869,"z":1.8418,"label":"Mosaic_Virus","split":"train","index":40},{"x":6.9933,"y":-3.8706,"z":6.0881,"label":"Mosaic_Virus","split":"train","index":41},{"x":7.46,"y":8.8829,"z":4.0333,"label":"Mosaic_Virus","split":"val","index":42},{"x":5.6695,"y":9.5725,"z":2.0702,"label":"Mosaic_Virus","split":"train","index":43},{"x":6.3554,"y":9.9569,"z":3.9705,"label":"Mosaic_Virus","split":"val","index":44},{"x":-0.1967,"y":13.8752,"z":6.1853,"label":"Mosaic_Virus","split":"train","index":45},{"x":6.3912,"y":-3.4275,"z":4.7458,"label":"Mosaic_Virus","split":"train","index":46},{"x":6.3777,"y":9.9728,"z":3.9911,"label":"Mosaic_Virus","split":"train","index":47},{"x":-0.2104,"y":13.8893,"z":6.1764,"label":"Mosaic_Virus","split":"train","index":48},{"x":4.8673,"y":-3.5142,"z":1.7626,"label":"Mosaic_Virus","split":"val","index":49},{"x":6.2573,"y":13.9274,"z":3.3156,"label":"Mosaic_Virus","split":"val","index":50},{"x":4.8142,"y":8.9367,"z":1.6454,"label":"Mosaic_Virus","split":"train","index":51},{"x":7.1231,"y":8.8499,"z":4.1351,"label":"Mosaic_Virus","split":"train","index":52},{"x":6.2997,"y":10.1744,"z":3.8685,"label":"Mosaic_Virus","split":"test","index":53},{"x":-0.1363,"y":13.9677,"z":6.8047,"label":"Mosaic_Virus","split":"val","index":54},{"x":6.018,"y":-3.1787,"z":4.8298,"label":"Mosaic_Virus","split":"train","index":55},{"x":6.266,"y":8.1566,"z":3.1617,"label":"Mosaic_Virus","split":"train","index":56},{"x":6.5922,"y":8.9468,"z":4.2551,"label":"Mosaic_Virus","split":"train","index":57},{"x":7.0673,"y":-3.8786,"z":6.0914,"label":"Mosaic_Virus","split":"train","index":58},{"x":6.8433,"y":-3.9356,"z":5.9764,"label":"Mosaic_Virus","split":"train","index":59},{"x":7.1675,"y":0.704,"z":4.1495,"label":"Mosaic_Virus","split":"train","index":60},{"x":6.7934,"y":9.064,"z":4.1171,"label":"Mosaic_Virus","split":"train","index":61},{"x":5.67,"y":9.5704,"z":2.0772,"label":"Mosaic_Virus","split":"train","index":62},{"x":6.8772,"y":-3.9368,"z":6.0147,"label":"Mosaic_Virus","split":"train","index":63},{"x":6.284,"y":10.2891,"z":3.8164,"label":"Mosaic_Virus","split":"val","index":64},{"x":-0.1328,"y":13.9528,"z":6.7795,"label":"Mosaic_Virus","split":"train","index":65},{"x":7.1571,"y":0.6992,"z":4.1407,"label":"Mosaic_Virus","split":"train","index":66},{"x":5.3223,"y":8.259,"z":2.3624,"label":"Mosaic_Virus","split":"train","index":67},{"x":6.6142,"y":8.915,"z":4.2509,"label":"Mosaic_Virus","split":"train","index":68},{"x":6.7406,"y":9.0907,"z":4.1157,"label":"Mosaic_Virus","split":"train","index":69},{"x":6.5061,"y":-3.7197,"z":5.0504,"label":"Mosaic_Virus","split":"test","index":70},{"x":6.6506,"y":-3.4701,"z":5.0233,"label":"Mosaic_Virus","split":"train","index":71},{"x":6.0526,"y":14.1571,"z":3.4642,"label":"Mosaic_Virus","split":"train","index":72},{"x":6.6409,"y":-3.6381,"z":4.6673,"label":"Mosaic_Virus","split":"train","index":73},{"x":6.5171,"y":-3.5497,"z":4.4944,"label":"Mosaic_Virus","split":"val","index":74},{"x":6.0356,"y":14.1621,"z":3.4966,"label":"Mosaic_Virus","split":"val","index":75},{"x":6.811,"y":-3.9198,"z":5.027,"label":"Mosaic_Virus","split":"val","index":76},{"x":5.4535,"y":9.6926,"z":1.9757,"label":"Mosaic_Virus","split":"train","index":77},{"x":5.3242,"y":8.2559,"z":2.3631,"label":"Mosaic_Virus","split":"train","index":78},{"x":6.6388,"y":8.9425,"z":4.2269,"label":"Mosaic_Virus","split":"test","index":79},{"x":7.4429,"y":8.807,"z":3.9625,"label":"Mosaic_Virus","split":"train","index":80},{"x":7.1499,"y":-3.877,"z":6.0236,"label":"Mosaic_Virus","split":"val","index":81},{"x":1.4642,"y":12.5448,"z":9.1708,"label":"Mosaic_Virus","split":"train","index":82},{"x":6.6662,"y":-3.6444,"z":4.5912,"label":"Mosaic_Virus","split":"train","index":83},{"x":7.3566,"y":-4.2086,"z":6.0602,"label":"Mosaic_Virus","split":"train","index":84},{"x":6.7741,"y":0.6949,"z":3.8097,"label":"Mosaic_Virus","split":"train","index":85},{"x":6.8208,"y":-3.8666,"z":5.314,"label":"Mosaic_Virus","split":"val","index":86},{"x":1.7073,"y":12.2493,"z":9.0479,"label":"Mosaic_Virus","split":"val","index":87},{"x":8.2932,"y":-2.1702,"z":3.0968,"label":"Mosaic_Virus","split":"test","index":88},{"x":1.705,"y":12.2526,"z":9.0489,"label":"Mosaic_Virus","split":"train","index":89},{"x":8.2637,"y":-2.1524,"z":3.1224,"label":"Mosaic_Virus","split":"train","index":90},{"x":6.1421,"y":-3.3215,"z":4.7899,"label":"Mosaic_Virus","split":"train","index":91},{"x":6.2822,"y":10.238,"z":3.8309,"label":"Mosaic_Virus","split":"test","index":92},{"x":6.5824,"y":-3.5399,"z":4.7515,"label":"Mosaic_Virus","split":"val","index":93},{"x":6.0033,"y":-3.1632,"z":4.8121,"label":"Mosaic_Virus","split":"train","index":94},{"x":7.5937,"y":8.9331,"z":4.1142,"label":"Mosaic_Virus","split":"train","index":95},{"x":6.7249,"y":-3.506,"z":4.9838,"label":"Mosaic_Virus","split":"val","index":96},{"x":6.8501,"y":-3.996,"z":5.9096,"label":"Mosaic_Virus","split":"train","index":97},{"x":6.7314,"y":0.6915,"z":3.776,"label":"Mosaic_Virus","split":"train","index":98},{"x":1.201,"y":12.9608,"z":9.0836,"label":"Mosaic_Virus","split":"train","index":99},{"x":7.9035,"y":-1.3585,"z":3.2797,"label":"Mosaic_Virus","split":"train","index":100},{"x":7.5517,"y":8.9536,"z":4.1971,"label":"Mosaic_Virus","split":"train","index":101},{"x":1.4504,"y":12.5827,"z":9.1457,"label":"Mosaic_Virus","split":"train","index":102},{"x":7.8798,"y":-1.3301,"z":3.2794,"label":"Mosaic_Virus","split":"train","index":103},{"x":6.1834,"y":-3.2708,"z":4.9339,"label":"Mosaic_Virus","split":"train","index":104},{"x":6.9668,"y":-3.9773,"z":5.5015,"label":"Mosaic_Virus","split":"train","index":105},{"x":6.7054,"y":0.6886,"z":3.7503,"label":"Mosaic_Virus","split":"test","index":106},{"x":6.6048,"y":-3.6037,"z":4.5447,"label":"Mosaic_Virus","split":"train","index":107},{"x":6.3386,"y":9.9807,"z":3.9657,"label":"Mosaic_Virus","split":"train","index":108},{"x":-0.213,"y":13.8913,"z":6.1793,"label":"Mosaic_Virus","split":"train","index":109},{"x":4.8556,"y":-3.5757,"z":1.7017,"label":"Mosaic_Virus","split":"train","index":110},{"x":6.2838,"y":13.9177,"z":3.3125,"label":"Mosaic_Virus","split":"train","index":111},{"x":4.8265,"y":8.9433,"z":1.6539,"label":"Mosaic_Virus","split":"test","index":112},{"x":7.272,"y":8.9055,"z":4.112,"label":"Mosaic_Virus","split":"val","index":113},{"x":4.8718,"y":-3.5206,"z":1.767,"label":"Mosaic_Virus","split":"train","index":114},{"x":6.9874,"y":-3.7403,"z":6.228,"label":"Mosaic_Virus","split":"val","index":115},{"x":7.441,"y":8.8642,"z":4.0519,"label":"Mosaic_Virus","split":"train","index":116},{"x":5.6102,"y":9.6267,"z":2.0317,"label":"Mosaic_Virus","split":"test","index":117},{"x":6.3672,"y":9.9267,"z":3.9925,"label":"Mosaic_Virus","split":"test","index":118},{"x":-0.1897,"y":13.8682,"z":6.155,"label":"Mosaic_Virus","split":"train","index":119},{"x":6.5829,"y":-3.8532,"z":6.0162,"label":"Mosaic_Virus","split":"val","index":120},{"x":4.97,"y":9.2391,"z":1.7268,"label":"Mosaic_Virus","split":"test","index":121},{"x":7.4403,"y":8.8311,"z":4.0075,"label":"Mosaic_Virus","split":"train","index":122},{"x":7.172,"y":0.5995,"z":4.1615,"label":"Mosaic_Virus","split":"train","index":123},{"x":6.323,"y":8.1126,"z":3.136,"label":"Mosaic_Virus","split":"train","index":124},{"x":6.3518,"y":-3.3714,"z":3.9505,"label":"Mosaic_Virus","split":"train","index":125},{"x":5.9136,"y":-3.0336,"z":4.1727,"label":"Mosaic_Virus","split":"val","index":126},{"x":6.0135,"y":14.4956,"z":3.2467,"label":"Mosaic_Virus","split":"train","index":127},{"x":5.9606,"y":-3.1368,"z":4.1742,"label":"Mosaic_Virus","split":"train","index":128},{"x":6.3977,"y":-3.3466,"z":5.0072,"label":"Mosaic_Virus","split":"train","index":129},{"x":5.9227,"y":14.5447,"z":3.5024,"label":"Mosaic_Virus","split":"train","index":130},{"x":6.2443,"y":13.9222,"z":3.3042,"label":"Mosaic_Virus","split":"train","index":131},{"x":4.8326,"y":8.9504,"z":1.6631,"label":"Mosaic_Virus","split":"train","index":132},{"x":5.8346,"y":8.2652,"z":2.7282,"label":"Mosaic_Virus","split":"train","index":133},{"x":7.1563,"y":0.6821,"z":4.141,"label":"Mosaic_Virus","split":"train","index":134},{"x":7.3088,"y":8.902,"z":4.1483,"label":"Mosaic_Virus","split":"train","index":135},{"x":5.954,"y":14.3255,"z":3.0664,"label":"Mosaic_Virus","split":"train","index":136},{"x":6.5238,"y":-3.5325,"z":4.1133,"label":"Mosaic_Virus","split":"train","index":137},{"x":7.3791,"y":-4.2235,"z":6.0682,"label":"Mosaic_Virus","split":"test","index":138},{"x":5.8354,"y":-3.0291,"z":3.8992,"label":"Mosaic_Virus","split":"test","index":139},{"x":1.2157,"y":12.9356,"z":9.0986,"label":"Mosaic_Virus","split":"test","index":140},{"x":6.5343,"y":9.4768,"z":4.0825,"label":"Mosaic_Virus","split":"train","index":141},{"x":6.3046,"y":13.4062,"z":3.4032,"label":"Mosaic_Virus","split":"train","index":142},{"x":6.4738,"y":-3.491,"z":4.0343,"label":"Mosaic_Virus","split":"train","index":143},{"x":6.5931,"y":9.2712,"z":4.1198,"label":"Mosaic_Virus","split":"train","index":144},{"x":6.2894,"y":13.3563,"z":3.4435,"label":"Mosaic_Virus","split":"train","index":145},{"x":5.9823,"y":14.2464,"z":3.0821,"label":"Mosaic_Virus","split":"val","index":146},{"x":6.6705,"y":-3.6096,"z":5.1423,"label":"Mosaic_Virus","split":"train","index":147},{"x":7.3582,"y":-4.1899,"z":6.0825,"label":"Mosaic_Virus","split":"test","index":148},{"x":6.3731,"y":-3.3797,"z":3.9627,"label":"Mosaic_Virus","split":"train","index":149},{"x":6.4391,"y":-3.4397,"z":4.0571,"label":"Mosaic_Virus","split":"train","index":150},{"x":4.9205,"y":-3.5935,"z":1.6843,"label":"Mosaic_Virus","split":"train","index":151},{"x":6.067,"y":14.2784,"z":3.1649,"label":"Mosaic_Virus","split":"train","index":152},{"x":5.8961,"y":-2.7797,"z":4.2095,"label":"Mosaic_Virus","split":"train","index":153},{"x":1.1742,"y":12.9889,"z":9.097,"label":"Mosaic_Virus","split":"val","index":154},{"x":5.7832,"y":14.9636,"z":3.1396,"label":"Mosaic_Virus","split":"train","index":155},{"x":6.2575,"y":-3.641,"z":4.4523,"label":"Mosaic_Virus","split":"train","index":156},{"x":4.9131,"y":-3.5419,"z":1.7797,"label":"Mosaic_Virus","split":"train","index":157},{"x":1.4962,"y":12.5196,"z":9.1439,"label":"Mosaic_Virus","split":"train","index":158},{"x":7.8939,"y":-1.3293,"z":3.2715,"label":"Mosaic_Virus","split":"train","index":159},{"x":5.879,"y":-2.4102,"z":4.0958,"label":"Mosaic_Virus","split":"train","index":160},{"x":6.952,"y":-3.9983,"z":5.598,"label":"Mosaic_Virus","split":"train","index":161},{"x":6.7285,"y":0.6841,"z":3.7651,"label":"Mosaic_Virus","split":"train","index":162},{"x":6.8901,"y":-3.9621,"z":5.7877,"label":"Mosaic_Virus","split":"test","index":163},{"x":6.7872,"y":0.6474,"z":3.837,"label":"Mosaic_Virus","split":"train","index":164},{"x":1.1807,"y":12.9794,"z":9.1019,"label":"Mosaic_Virus","split":"train","index":165},{"x":7.9098,"y":-1.3108,"z":3.2561,"label":"Mosaic_Virus","split":"test","index":166},{"x":5.9756,"y":14.2326,"z":3.154,"label":"Mosaic_Virus","split":"train","index":167},{"x":1.6965,"y":12.2604,"z":9.0589,"label":"Mosaic_Virus","split":"train","index":168},{"x":8.2928,"y":-2.176,"z":3.1005,"label":"Mosaic_Virus","split":"train","index":169},{"x":6.2749,"y":10.2862,"z":3.8138,"label":"Mosaic_Virus","split":"train","index":170},{"x":5.8889,"y":-2.4091,"z":4.0646,"label":"Mosaic_Virus","split":"train","index":171},{"x":6.4365,"y":-3.7877,"z":6.0867,"label":"Mosaic_Virus","split":"train","index":172},{"x":7.5053,"y":9.0075,"z":4.2455,"label":"Mosaic_Virus","split":"train","index":173},{"x":6.6266,"y":-3.4907,"z":5.063,"label":"Mosaic_Virus","split":"train","index":174},{"x":1.4708,"y":12.5508,"z":9.1535,"label":"Mosaic_Virus","split":"train","index":175},{"x":6.6992,"y":-3.6471,"z":4.5568,"label":"Mosaic_Virus","split":"train","index":176},{"x":4.8612,"y":-3.5545,"z":1.7255,"label":"Mosaic_Virus","split":"test","index":177},{"x":6.7317,"y":0.7016,"z":3.7975,"label":"Mosaic_Virus","split":"train","index":178},{"x":6.5396,"y":-3.4482,"z":5.16,"label":"Mosaic_Virus","split":"train","index":179},{"x":1.7236,"y":12.2281,"z":9.042,"label":"Mosaic_Virus","split":"train","index":180},{"x":8.3116,"y":-2.1887,"z":3.0883,"label":"Mosaic_Virus","split":"train","index":181},{"x":6.5553,"y":-3.5801,"z":4.4198,"label":"Mosaic_Virus","split":"train","index":182},{"x":6.1026,"y":14.0915,"z":3.4292,"label":"Mosaic_Virus","split":"train","index":183},{"x":6.8062,"y":-3.951,"z":5.1023,"label":"Mosaic_Virus","split":"train","index":184},{"x":5.4821,"y":9.7577,"z":1.9633,"label":"Mosaic_Virus","split":"train","index":185},{"x":5.3233,"y":8.2528,"z":2.3651,"label":"Mosaic_Virus","split":"train","index":186},{"x":6.5805,"y":8.8826,"z":4.3032,"label":"Mosaic_Virus","split":"train","index":187},{"x":7.3731,"y":8.927,"z":4.0812,"label":"Mosaic_Virus","split":"val","index":188},{"x":7.1023,"y":-3.8685,"z":6.0424,"label":"Mosaic_Virus","split":"train","index":189},{"x":7.1664,"y":0.6816,"z":4.1485,"label":"Mosaic_Virus","split":"train","index":190},{"x":5.3143,"y":8.2338,"z":2.3564,"label":"Mosaic_Virus","split":"train","index":191},{"x":4.8089,"y":8.9231,"z":1.6539,"label":"Mosaic_Virus","split":"test","index":192},{"x":6.8404,"y":8.9332,"z":4.0405,"label":"Mosaic_Virus","split":"test","index":193},{"x":6.3916,"y":-3.5774,"z":5.1603,"label":"Mosaic_Virus","split":"train","index":194},{"x":6.2155,"y":-3.3016,"z":4.9364,"label":"Mosaic_Virus","split":"train","index":195},{"x":6.0506,"y":14.1192,"z":3.5078,"label":"Mosaic_Virus","split":"train","index":196},{"x":6.7651,"y":-3.9595,"z":5.0641,"label":"Mosaic_Virus","split":"test","index":197},{"x":7.167,"y":0.6989,"z":4.1461,"label":"Mosaic_Virus","split":"train","index":198},{"x":6.754,"y":9.0103,"z":4.0869,"label":"Mosaic_Virus","split":"val","index":199},{"x":5.6853,"y":9.5599,"z":2.0849,"label":"Mosaic_Virus","split":"train","index":200},{"x":7.028,"y":-3.9447,"z":5.9206,"label":"Mosaic_Virus","split":"train","index":201},{"x":6.282,"y":10.2952,"z":3.8118,"label":"Mosaic_Virus","split":"test","index":202},{"x":-0.165,"y":13.9307,"z":6.7635,"label":"Mosaic_Virus","split":"train","index":203},{"x":6.2893,"y":10.1801,"z":3.8528,"label":"Mosaic_Virus","split":"train","index":204},{"x":-0.1399,"y":13.9637,"z":6.8039,"label":"Mosaic_Virus","split":"test","index":205},{"x":6.2159,"y":-3.3212,"z":4.8231,"label":"Mosaic_Virus","split":"val","index":206},{"x":6.2642,"y":8.1523,"z":3.1599,"label":"Mosaic_Virus","split":"train","index":207},{"x":8.3459,"y":-2.2189,"z":3.0526,"label":"Mosaic_Virus","split":"train","index":208},{"x":7.1883,"y":-3.9619,"z":6.0072,"label":"Mosaic_Virus","split":"train","index":209},{"x":6.94,"y":-3.9689,"z":5.7448,"label":"Mosaic_Virus","split":"train","index":210},{"x":6.3335,"y":13.2923,"z":3.4236,"label":"Mosaic_Virus","split":"val","index":211},{"x":6.7183,"y":0.7316,"z":3.7452,"label":"Mosaic_Virus","split":"val","index":212},{"x":7.8888,"y":-1.3385,"z":3.2787,"label":"Mosaic_Virus","split":"train","index":213},{"x":1.1615,"y":13.001,"z":9.1125,"label":"Mosaic_Virus","split":"train","index":214},{"x":5.9298,"y":-2.4296,"z":3.9865,"label":"Mosaic_Virus","split":"test","index":215},{"x":6.6977,"y":-3.5096,"z":4.9645,"label":"Mosaic_Virus","split":"train","index":216},{"x":7.9168,"y":-1.3092,"z":3.2464,"label":"Mosaic_Virus","split":"train","index":217},{"x":1.4271,"y":12.5888,"z":9.1914,"label":"Mosaic_Virus","split":"train","index":218},{"x":6.6173,"y":9.2775,"z":4.1309,"label":"Mosaic_Virus","split":"test","index":219},{"x":6.9307,"y":-4.0033,"z":5.7526,"label":"Mosaic_Virus","split":"train","index":220},{"x":5.8968,"y":14.7807,"z":3.2104,"label":"Mosaic_Virus","split":"train","index":221},{"x":6.6712,"y":-3.8557,"z":6.0294,"label":"Mosaic_Virus","split":"train","index":222},{"x":6.788,"y":-3.7891,"z":4.8664,"label":"Mosaic_Virus","split":"train","index":223},{"x":6.8582,"y":-3.9115,"z":5.2593,"label":"Mosaic_Virus","split":"test","index":224},{"x":7.5928,"y":8.9189,"z":4.1376,"label":"Mosaic_Virus","split":"train","index":225},{"x":8.2971,"y":-2.1724,"z":3.0997,"label":"Mosaic_Virus","split":"train","index":226},{"x":1.6816,"y":12.2781,"z":9.0683,"label":"Mosaic_Virus","split":"train","index":227},{"x":6.7984,"y":-3.9129,"z":5.9882,"label":"Mosaic_Virus","split":"test","index":228},{"x":8.2819,"y":-2.1625,"z":3.1116,"label":"Mosaic_Virus","split":"train","index":229},{"x":1.7566,"y":12.1961,"z":9.0077,"label":"Mosaic_Virus","split":"val","index":230},{"x":6.7555,"y":0.7067,"z":3.7584,"label":"Mosaic_Virus","split":"train","index":231},{"x":5.9058,"y":-2.7882,"z":4.3289,"label":"Mosaic_Virus","split":"train","index":232},{"x":5.8841,"y":-2.3938,"z":4.0589,"label":"Mosaic_Virus","split":"train","index":233},{"x":6.7515,"y":-3.622,"z":5.0293,"label":"Mosaic_Virus","split":"test","index":234},{"x":7.5857,"y":8.9401,"z":4.1862,"label":"Mosaic_Virus","split":"train","index":235},{"x":5.326,"y":8.246,"z":2.3679,"label":"Mosaic_Virus","split":"train","index":236},{"x":5.4868,"y":9.7318,"z":1.9641,"label":"Mosaic_Virus","split":"train","index":237},{"x":6.7601,"y":8.895,"z":3.9986,"label":"Mosaic_Virus","split":"train","index":238},{"x":6.6362,"y":8.899,"z":4.2263,"label":"Mosaic_Virus","split":"val","index":239},{"x":-0.2113,"y":13.8896,"z":6.1759,"label":"Mosaic_Virus","split":"val","index":240},{"x":6.0655,"y":14.1082,"z":3.4573,"label":"Mosaic_Virus","split":"train","index":241},{"x":6.4818,"y":-3.51,"z":4.4754,"label":"Mosaic_Virus","split":"train","index":242},{"x":5.9225,"y":-3.1241,"z":4.0645,"label":"Mosaic_Virus","split":"train","index":243},{"x":6.3307,"y":10.0006,"z":3.9537,"label":"Mosaic_Virus","split":"train","index":244},{"x":6.1715,"y":14.0256,"z":3.3619,"label":"Mosaic_Virus","split":"val","index":245},{"x":6.7436,"y":-3.8209,"z":4.8295,"label":"Mosaic_Virus","split":"train","index":246},{"x":6.6042,"y":-3.7948,"z":5.1099,"label":"Mosaic_Virus","split":"train","index":247},{"x":5.3541,"y":8.2335,"z":2.3903,"label":"Mosaic_Virus","split":"train","index":248},{"x":5.4252,"y":9.7365,"z":1.9251,"label":"Mosaic_Virus","split":"train","index":249},{"x":7.2494,"y":8.9598,"z":4.0473,"label":"Mosaic_Virus","split":"test","index":250},{"x":6.6073,"y":8.9284,"z":4.2484,"label":"Mosaic_Virus","split":"train","index":251},{"x":1.4948,"y":12.5221,"z":9.142,"label":"Mosaic_Virus","split":"train","index":252},{"x":6.265,"y":10.166,"z":3.8519,"label":"Mosaic_Virus","split":"train","index":253},{"x":6.0647,"y":14.1009,"z":3.4215,"label":"Mosaic_Virus","split":"train","index":254},{"x":6.8811,"y":-3.8454,"z":6.1304,"label":"Mosaic_Virus","split":"train","index":255},{"x":6.9606,"y":-4.0198,"z":5.5736,"label":"Mosaic_Virus","split":"test","index":256},{"x":5.6019,"y":9.6089,"z":2.0473,"label":"Mosaic_Virus","split":"train","index":257},{"x":6.8805,"y":-3.9938,"z":5.7954,"label":"Mosaic_Virus","split":"train","index":258},{"x":-0.1396,"y":13.964,"z":6.8008,"label":"Mosaic_Virus","split":"train","index":259},{"x":6.2821,"y":10.2623,"z":3.8257,"label":"Mosaic_Virus","split":"test","index":260},{"x":5.8615,"y":-3.1809,"z":3.783,"label":"Mosaic_Virus","split":"train","index":261},{"x":5.022,"y":-3.4687,"z":1.9608,"label":"Mosaic_Virus","split":"test","index":262},{"x":6.9275,"y":-3.7737,"z":6.2141,"label":"Mosaic_Virus","split":"train","index":263},{"x":6.1842,"y":-3.4025,"z":3.8341,"label":"Mosaic_Virus","split":"train","index":264},{"x":6.3262,"y":10.0385,"z":3.9412,"label":"Mosaic_Virus","split":"train","index":265},{"x":6.0325,"y":14.1236,"z":3.5111,"label":"Mosaic_Virus","split":"train","index":266},{"x":-0.2668,"y":13.9459,"z":6.1174,"label":"Mosaic_Virus","split":"test","index":267},{"x":5.0349,"y":9.3004,"z":1.782,"label":"Mosaic_Virus","split":"test","index":268},{"x":5.007,"y":-3.4806,"z":1.9494,"label":"Mosaic_Virus","split":"val","index":269},{"x":6.2985,"y":13.9688,"z":3.2674,"label":"Mosaic_Virus","split":"train","index":270},{"x":5.8564,"y":-3.1201,"z":3.8439,"label":"Mosaic_Virus","split":"train","index":271},{"x":5.9242,"y":14.5468,"z":3.4951,"label":"Mosaic_Virus","split":"train","index":272},{"x":5.8483,"y":-3.1622,"z":3.8307,"label":"Mosaic_Virus","split":"train","index":273},{"x":4.9404,"y":9.1794,"z":1.7045,"label":"Mosaic_Virus","split":"train","index":274},{"x":5.8515,"y":8.2749,"z":2.7396,"label":"Mosaic_Virus","split":"train","index":275},{"x":4.84,"y":8.9638,"z":1.6437,"label":"Mosaic_Virus","split":"val","index":276},{"x":6.2892,"y":8.145,"z":3.1799,"label":"Mosaic_Virus","split":"test","index":277},{"x":5.9298,"y":8.301,"z":2.8133,"label":"Mosaic_Virus","split":"train","index":278},{"x":4.9832,"y":9.2469,"z":1.7355,"label":"Mosaic_Virus","split":"test","index":279},{"x":6.2853,"y":8.1745,"z":3.1861,"label":"Mosaic_Virus","split":"train","index":280},{"x":7.1611,"y":0.63,"z":4.1497,"label":"Mosaic_Virus","split":"train","index":281},{"x":6.3143,"y":-3.2943,"z":3.9648,"label":"Mosaic_Virus","split":"train","index":282},{"x":6.1366,"y":14.1845,"z":3.3127,"label":"Mosaic_Virus","split":"train","index":283},{"x":5.8758,"y":-3.1896,"z":3.8055,"label":"Mosaic_Virus","split":"train","index":284},{"x":5.8912,"y":8.2809,"z":2.7712,"label":"Mosaic_Virus","split":"val","index":285},{"x":5.7818,"y":14.9692,"z":3.1118,"label":"Mosaic_Virus","split":"val","index":286},{"x":6.1056,"y":-2.1754,"z":4.0068,"label":"Mosaic_Virus","split":"train","index":287},{"x":6.5972,"y":9.216,"z":4.1491,"label":"Mosaic_Virus","split":"train","index":288},{"x":6.6641,"y":-3.6368,"z":5.127,"label":"Mosaic_Virus","split":"train","index":289},{"x":5.9731,"y":14.3236,"z":3.0692,"label":"Mosaic_Virus","split":"train","index":290},{"x":5.8425,"y":-2.9449,"z":4.03,"label":"Mosaic_Virus","split":"test","index":291},{"x":7.361,"y":-4.2086,"z":6.0439,"label":"Mosaic_Virus","split":"test","index":292},{"x":6.4987,"y":-3.4821,"z":4.0476,"label":"Mosaic_Virus","split":"train","index":293},{"x":6.0297,"y":14.2675,"z":3.149,"label":"Mosaic_Virus","split":"train","index":294},{"x":5.9205,"y":-3.0855,"z":4.0896,"label":"Mosaic_Virus","split":"train","index":295},{"x":5.8845,"y":-2.4103,"z":4.0184,"label":"Mosaic_Virus","split":"val","index":296},{"x":4.8288,"y":-3.565,"z":1.7024,"label":"Mosaic_Virus","split":"train","index":297},{"x":6.3041,"y":13.3447,"z":3.3975,"label":"Mosaic_Virus","split":"train","index":298},{"x":5.4384,"y":9.7929,"z":1.949,"label":"Mosaic_Virus","split":"test","index":299},{"x":1.1791,"y":12.9811,"z":9.1018,"label":"Mosaic_Virus","split":"train","index":300},{"x":6.1665,"y":-3.6353,"z":4.4095,"label":"Mosaic_Virus","split":"train","index":301},{"x":5.7787,"y":14.8895,"z":3.1065,"label":"Mosaic_Virus","split":"test","index":302},{"x":4.9233,"y":-3.5378,"z":1.793,"label":"Mosaic_Virus","split":"train","index":303},{"x":5.4854,"y":9.7846,"z":2.011,"label":"Mosaic_Virus","split":"train","index":304},{"x":6.3273,"y":-3.609,"z":4.4034,"label":"Mosaic_Virus","split":"train","index":305},{"x":5.8102,"y":14.9129,"z":3.1175,"label":"Mosaic_Virus","split":"train","index":306},{"x":4.849,"y":-3.5896,"z":1.6878,"label":"Mosaic_Virus","split":"train","index":307},{"x":6.0084,"y":-2.2589,"z":3.9453,"label":"Mosaic_Virus","split":"test","index":308},{"x":6.9003,"y":-3.9321,"z":5.3269,"label":"Mosaic_Virus","split":"train","index":309},{"x":7.3788,"y":-4.2169,"z":6.0262,"label":"Mosaic_Virus","split":"val","index":310},{"x":7.3876,"y":8.8687,"z":4.1224,"label":"Mosaic_Virus","split":"train","index":311},{"x":5.6296,"y":9.6363,"z":2.0271,"label":"Mosaic_Virus","split":"train","index":312},{"x":6.9783,"y":-3.9651,"z":5.8264,"label":"Mosaic_Virus","split":"train","index":313},{"x":-0.1564,"y":13.9472,"z":6.7807,"label":"Mosaic_Virus","split":"train","index":314},{"x":6.2953,"y":10.1873,"z":3.897,"label":"Mosaic_Virus","split":"test","index":315},{"x":5.9309,"y":-3.0875,"z":4.0689,"label":"Mosaic_Virus","split":"train","index":316},{"x":-0.1361,"y":13.9666,"z":6.8082,"label":"Mosaic_Virus","split":"train","index":317},{"x":6.3323,"y":9.9913,"z":3.9574,"label":"Mosaic_Virus","split":"test","index":318},{"x":6.9963,"y":-3.8094,"z":6.202,"label":"Mosaic_Virus","split":"test","index":319},{"x":6.9734,"y":-4.0368,"z":5.5884,"label":"Mosaic_Virus","split":"train","index":320},{"x":6.3548,"y":9.9533,"z":3.9923,"label":"Mosaic_Virus","split":"val","index":321},{"x":6.0322,"y":14.1711,"z":3.4269,"label":"Mosaic_Virus","split":"test","index":322},{"x":6.4952,"y":-3.5964,"z":4.3274,"label":"Mosaic_Virus","split":"train","index":323},{"x":6.8053,"y":-3.9342,"z":5.1198,"label":"Mosaic_Virus","split":"train","index":324},{"x":5.3544,"y":8.2695,"z":2.3872,"label":"Mosaic_Virus","split":"train","index":325},{"x":5.4602,"y":9.7693,"z":2.0021,"label":"Mosaic_Virus","split":"train","index":326},{"x":6.8924,"y":9.107,"z":4.0881,"label":"Mosaic_Virus","split":"train","index":327},{"x":6.5846,"y":8.8969,"z":4.2592,"label":"Mosaic_Virus","split":"train","index":328},{"x":5.3382,"y":8.2607,"z":2.3684,"label":"Mosaic_Virus","split":"val","index":329},{"x":7.1931,"y":0.6068,"z":4.1806,"label":"Mosaic_Virus","split":"val","index":330},{"x":6.8527,"y":9.2148,"z":4.0857,"label":"Mosaic_Virus","split":"train","index":331},{"x":6.6151,"y":8.9116,"z":4.2443,"label":"Mosaic_Virus","split":"val","index":332},{"x":-0.1042,"y":13.9991,"z":6.8437,"label":"Mosaic_Virus","split":"train","index":333},{"x":6.0756,"y":14.0927,"z":3.4914,"label":"Mosaic_Virus","split":"train","index":334},{"x":6.5771,"y":-3.5752,"z":4.419,"label":"Mosaic_Virus","split":"train","index":335},{"x":6.0364,"y":-3.1688,"z":4.7882,"label":"Mosaic_Virus","split":"train","index":336},{"x":8.3671,"y":-2.2152,"z":3.0354,"label":"Mosaic_Virus","split":"train","index":337},{"x":1.7068,"y":12.2502,"z":9.0477,"label":"Mosaic_Virus","split":"val","index":338},{"x":6.7126,"y":0.7043,"z":3.7668,"label":"Mosaic_Virus","split":"train","index":339},{"x":6.3794,"y":-3.6013,"z":5.1627,"label":"Mosaic_Virus","split":"train","index":340},{"x":5.9022,"y":-2.4122,"z":4.0213,"label":"Mosaic_Virus","split":"val","index":341},{"x":6.7477,"y":-3.5438,"z":5.1018,"label":"Mosaic_Virus","split":"test","index":342},{"x":7.6082,"y":8.9186,"z":4.1563,"label":"Mosaic_Virus","split":"test","index":343},{"x":4.8602,"y":-3.5882,"z":1.7015,"label":"Mosaic_Virus","split":"test","index":344},{"x":6.6817,"y":-3.6773,"z":4.5016,"label":"Mosaic_Virus","split":"test","index":345},{"x":6.8714,"y":-3.9243,"z":5.3045,"label":"Mosaic_Virus","split":"train","index":346},{"x":7.6062,"y":8.9276,"z":4.1986,"label":"Mosaic_Virus","split":"val","index":347},{"x":8.2899,"y":-2.1973,"z":3.104,"label":"Mosaic_Virus","split":"train","index":348},{"x":1.6945,"y":12.2606,"z":9.0624,"label":"Mosaic_Virus","split":"train","index":349},{"x":6.8601,"y":-3.9944,"z":5.8836,"label":"Mosaic_Virus","split":"train","index":350},{"x":7.8933,"y":-1.3396,"z":3.2733,"label":"Mosaic_Virus","split":"train","index":351},{"x":1.4222,"y":12.613,"z":9.1642,"label":"Mosaic_Virus","split":"train","index":352},{"x":6.6306,"y":9.4027,"z":4.1489,"label":"Mosaic_Virus","split":"train","index":353},{"x":6.8454,"y":-3.9501,"z":5.7916,"label":"Mosaic_Virus","split":"test","index":354},{"x":5.8078,"y":14.9292,"z":3.129,"label":"Mosaic_Virus","split":"val","index":355},{"x":6.319,"y":13.3372,"z":3.4273,"label":"Mosaic_Virus","split":"train","index":356},{"x":6.5529,"y":-3.8283,"z":5.98,"label":"Mosaic_Virus","split":"train","index":357},{"x":6.8,"y":0.644,"z":3.8586,"label":"Mosaic_Virus","split":"train","index":358},{"x":7.8397,"y":-1.3928,"z":3.3163,"label":"Mosaic_Virus","split":"test","index":359},{"x":1.5161,"y":12.4976,"z":9.1397,"label":"Mosaic_Virus","split":"test","index":360},{"x":5.8764,"y":-2.4688,"z":4.0074,"label":"Mosaic_Virus","split":"train","index":361},{"x":6.7879,"y":-3.6051,"z":5.0607,"label":"Mosaic_Virus","split":"val","index":362},{"x":6.2297,"y":-3.5535,"z":4.4736,"label":"Mosaic_Virus","split":"test","index":363},{"x":5.8054,"y":14.939,"z":3.1272,"label":"Mosaic_Virus","split":"train","index":364},{"x":4.8731,"y":-3.5627,"z":1.6795,"label":"Mosaic_Virus","split":"val","index":365},{"x":6.1023,"y":-2.1972,"z":3.987,"label":"Mosaic_Virus","split":"train","index":366},{"x":6.8944,"y":-4.0069,"z":5.2385,"label":"Mosaic_Virus","split":"train","index":367},{"x":7.3598,"y":-4.2348,"z":6.0775,"label":"Mosaic_Virus","split":"train","index":368},{"x":7.4107,"y":8.8116,"z":4.1479,"label":"Mosaic_Virus","split":"train","index":369},{"x":1.1776,"y":12.9838,"z":9.1009,"label":"Mosaic_Virus","split":"val","index":370},{"x":6.2785,"y":-3.6461,"z":4.3981,"label":"Mosaic_Virus","split":"train","index":371},{"x":5.7876,"y":14.9783,"z":3.0936,"label":"Mosaic_Virus","split":"train","index":372},{"x":5.0104,"y":-3.4506,"z":1.8763,"label":"Mosaic_Virus","split":"val","index":373},{"x":5.4311,"y":9.8386,"z":1.9492,"label":"Mosaic_Virus","split":"train","index":374},{"x":6.3808,"y":-3.4686,"z":3.9605,"label":"Mosaic_Virus","split":"train","index":375},{"x":5.9796,"y":14.2526,"z":3.0514,"label":"Mosaic_Virus","split":"train","index":376},{"x":5.8794,"y":-3.0632,"z":3.8514,"label":"Mosaic_Virus","split":"val","index":377},{"x":5.9022,"y":-2.3689,"z":4.0166,"label":"Mosaic_Virus","split":"val","index":378},{"x":4.9016,"y":-3.5894,"z":1.712,"label":"Mosaic_Virus","split":"val","index":379},{"x":6.2459,"y":13.5862,"z":3.391,"label":"Mosaic_Virus","split":"train","index":380},{"x":5.4929,"y":9.7764,"z":1.9977,"label":"Mosaic_Virus","split":"test","index":381},{"x":5.7917,"y":14.9689,"z":3.1168,"label":"Mosaic_Virus","split":"test","index":382},{"x":6.1177,"y":-2.2156,"z":4.0151,"label":"Mosaic_Virus","split":"train","index":383},{"x":6.6044,"y":9.3296,"z":4.1078,"label":"Mosaic_Virus","split":"train","index":384},{"x":6.8931,"y":-3.9585,"z":5.4963,"label":"Mosaic_Virus","split":"train","index":385},{"x":5.9033,"y":14.3031,"z":3.0054,"label":"Mosaic_Virus","split":"train","index":386},{"x":5.8783,"y":-2.697,"z":4.2791,"label":"Mosaic_Virus","split":"train","index":387},{"x":7.3497,"y":-4.1853,"z":6.0779,"label":"Mosaic_Virus","split":"train","index":388},{"x":7.1985,"y":9.0248,"z":4.078,"label":"Mosaic_Virus","split":"train","index":389},{"x":4.8535,"y":8.9853,"z":1.6457,"label":"Mosaic_Virus","split":"val","index":390},{"x":6.2775,"y":8.1814,"z":3.191,"label":"Mosaic_Virus","split":"train","index":391},{"x":7.123,"y":0.6741,"z":4.1142,"label":"Mosaic_Virus","split":"train","index":392},{"x":6.2756,"y":-3.3351,"z":3.8917,"label":"Mosaic_Virus","split":"train","index":393},{"x":6.0568,"y":14.3376,"z":3.2071,"label":"Mosaic_Virus","split":"train","index":394},{"x":5.8697,"y":-3.1562,"z":3.7544,"label":"Mosaic_Virus","split":"train","index":395},{"x":5.8853,"y":8.2862,"z":2.77,"label":"Mosaic_Virus","split":"train","index":396},{"x":5.929,"y":-3.2387,"z":3.7923,"label":"Mosaic_Virus","split":"test","index":397},{"x":5.9267,"y":14.5374,"z":3.4993,"label":"Mosaic_Virus","split":"val","index":398},{"x":5.9994,"y":-3.181,"z":4.1226,"label":"Mosaic_Virus","split":"train","index":399},{"x":4.9301,"y":9.1622,"z":1.7038,"label":"Mosaic_Virus","split":"train","index":400},{"x":5.8663,"y":8.2717,"z":2.7545,"label":"Mosaic_Virus","split":"val","index":401},{"x":4.8387,"y":8.966,"z":1.6598,"label":"Mosaic_Virus","split":"val","index":402},{"x":6.2639,"y":8.1802,"z":3.1947,"label":"Mosaic_Virus","split":"train","index":403},{"x":7.1706,"y":0.6943,"z":4.1553,"label":"Mosaic_Virus","split":"train","index":404},{"x":5.9336,"y":14.5016,"z":3.5515,"label":"Mosaic_Virus","split":"train","index":405},{"x":-0.2149,"y":13.8831,"z":6.1499,"label":"Mosaic_Virus","split":"test","index":406},{"x":5.01,"y":9.2765,"z":1.7497,"label":"Mosaic_Virus","split":"train","index":407},{"x":4.8466,"y":-3.4438,"z":1.8442,"label":"Mosaic_Virus","split":"train","index":408},{"x":6.2837,"y":13.9468,"z":3.2854,"label":"Mosaic_Virus","split":"test","index":409},{"x":4.9491,"y":-3.457,"z":1.8763,"label":"Mosaic_Virus","split":"train","index":410},{"x":6.3353,"y":13.8635,"z":3.266,"label":"Mosaic_Virus","split":"train","index":411},{"x":6.0841,"y":-3.2008,"z":3.9315,"label":"Mosaic_Virus","split":"train","index":412},{"x":5.9159,"y":8.2822,"z":2.796,"label":"Mosaic_Virus","split":"test","index":413},{"x":6.3527,"y":9.9921,"z":3.945,"label":"Mosaic_Virus","split":"val","index":414},{"x":-5.3274,"y":2.3147,"z":5.3772,"label":"Anthracnose","split":"train","index":415},{"x":-5.0534,"y":2.6662,"z":5.8126,"label":"Anthracnose","split":"train","index":416},{"x":-5.7743,"y":3.3307,"z":8.1438,"label":"Anthracnose","split":"train","index":417},{"x":-5.3368,"y":2.2676,"z":5.3165,"label":"Anthracnose","split":"train","index":418},{"x":-6.3234,"y":4.3539,"z":8.0465,"label":"Anthracnose","split":"train","index":419},{"x":-5.038,"y":2.8414,"z":5.3752,"label":"Anthracnose","split":"train","index":420},{"x":-6.3623,"y":4.3929,"z":8.086,"label":"Anthracnose","split":"test","index":421},{"x":-4.5661,"y":4.075,"z":6.8924,"label":"Anthracnose","split":"train","index":422},{"x":-5.0775,"y":2.6741,"z":5.5591,"label":"Anthracnose","split":"train","index":423},{"x":-4.7115,"y":3.4103,"z":7.0932,"label":"Anthracnose","split":"test","index":424},{"x":-5.5116,"y":3.5668,"z":7.7059,"label":"Anthracnose","split":"train","index":425},{"x":-4.8021,"y":3.2956,"z":6.9566,"label":"Anthracnose","split":"train","index":426},{"x":-5.7763,"y":3.3476,"z":8.1269,"label":"Anthracnose","split":"train","index":427},{"x":-5.2748,"y":2.2637,"z":4.2913,"label":"Anthracnose","split":"train","index":428},{"x":-4.8558,"y":3.2875,"z":6.9965,"label":"Anthracnose","split":"val","index":429},{"x":-4.9117,"y":3.1792,"z":6.7283,"label":"Anthracnose","split":"val","index":430},{"x":-5.5407,"y":3.6052,"z":7.6911,"label":"Anthracnose","split":"val","index":431},{"x":-5.5814,"y":2.0266,"z":3.6223,"label":"Anthracnose","split":"train","index":432},{"x":-5.2608,"y":2.2584,"z":4.2701,"label":"Anthracnose","split":"train","index":433},{"x":-5.1432,"y":2.5049,"z":5.2736,"label":"Anthracnose","split":"val","index":434},{"x":-5.9039,"y":4.3675,"z":6.1971,"label":"Anthracnose","split":"train","index":435},{"x":-4.815,"y":3.0508,"z":8.5658,"label":"Anthracnose","split":"train","index":436},{"x":-5.8911,"y":4.3668,"z":6.1927,"label":"Anthracnose","split":"test","index":437},{"x":-4.8029,"y":3.04,"z":8.5801,"label":"Anthracnose","split":"val","index":438},{"x":-4.9604,"y":3.1695,"z":8.4037,"label":"Anthracnose","split":"train","index":439},{"x":-4.7882,"y":2.5544,"z":4.3897,"label":"Anthracnose","split":"train","index":440},{"x":-5.3224,"y":3.5965,"z":7.5396,"label":"Anthracnose","split":"train","index":441},{"x":-5.1384,"y":2.6116,"z":5.3413,"label":"Anthracnose","split":"train","index":442},{"x":-4.8464,"y":3.076,"z":8.5352,"label":"Anthracnose","split":"train","index":443},{"x":-5.0688,"y":2.645,"z":6.1318,"label":"Anthracnose","split":"train","index":444},{"x":-6.3345,"y":4.3606,"z":8.0685,"label":"Anthracnose","split":"test","index":445},{"x":-5.0556,"y":2.6714,"z":5.8964,"label":"Anthracnose","split":"val","index":446},{"x":-5.0843,"y":2.6253,"z":6.161,"label":"Anthracnose","split":"val","index":447},{"x":-5.0756,"y":2.6921,"z":5.6576,"label":"Anthracnose","split":"train","index":448},{"x":-5.323,"y":2.2968,"z":5.3072,"label":"Anthracnose","split":"val","index":449},{"x":-5.3298,"y":2.277,"z":5.2601,"label":"Anthracnose","split":"val","index":450},{"x":-5.0717,"y":2.6401,"z":5.9887,"label":"Anthracnose","split":"val","index":451},{"x":-5.595,"y":3.5816,"z":7.7532,"label":"Anthracnose","split":"train","index":452},{"x":-5.6011,"y":2.0081,"z":3.5973,"label":"Anthracnose","split":"train","index":453},{"x":-5.2281,"y":2.3584,"z":4.9558,"label":"Anthracnose","split":"train","index":454},{"x":-5.8095,"y":3.2985,"z":8.1773,"label":"Anthracnose","split":"train","index":455},{"x":-5.2648,"y":2.2734,"z":4.3302,"label":"Anthracnose","split":"val","index":456},{"x":-4.8345,"y":3.3052,"z":6.9493,"label":"Anthracnose","split":"train","index":457},{"x":-5.1442,"y":2.6509,"z":5.3593,"label":"Anthracnose","split":"test","index":458},{"x":-4.819,"y":3.2671,"z":6.9222,"label":"Anthracnose","split":"test","index":459},{"x":-4.7045,"y":3.4073,"z":7.1046,"label":"Anthracnose","split":"train","index":460},{"x":-5.5091,"y":3.5099,"z":7.7236,"label":"Anthracnose","split":"train","index":461},{"x":-6.3762,"y":4.4119,"z":8.1015,"label":"Anthracnose","split":"val","index":462},{"x":-4.5988,"y":4.0442,"z":6.9362,"label":"Anthracnose","split":"test","index":463},{"x":-5.0658,"y":2.7144,"z":5.6319,"label":"Anthracnose","split":"val","index":464},{"x":-6.3057,"y":4.3363,"z":8.0323,"label":"Anthracnose","split":"train","index":465},{"x":-4.557,"y":4.0662,"z":6.8905,"label":"Anthracnose","split":"train","index":466},{"x":-5.7002,"y":3.4877,"z":7.9367,"label":"Anthracnose","split":"train","index":467},{"x":-5.3364,"y":2.2755,"z":5.3666,"label":"Anthracnose","split":"train","index":468},{"x":-5.3188,"y":2.2993,"z":5.4032,"label":"Anthracnose","split":"train","index":469},{"x":-5.0803,"y":2.6687,"z":5.5602,"label":"Anthracnose","split":"train","index":470},{"x":-5.1529,"y":2.4788,"z":5.1951,"label":"Anthracnose","split":"train","index":471},{"x":-5.1126,"y":2.6037,"z":5.9626,"label":"Anthracnose","split":"test","index":472},{"x":-5.0384,"y":2.7354,"z":5.5471,"label":"Anthracnose","split":"test","index":473},{"x":-5.2517,"y":2.3554,"z":5.2004,"label":"Anthracnose","split":"train","index":474},{"x":-5.05,"y":2.635,"z":6.1537,"label":"Anthracnose","split":"test","index":475},{"x":-4.834,"y":2.5777,"z":4.462,"label":"Anthracnose","split":"test","index":476},{"x":-5.049,"y":2.6607,"z":6.218,"label":"Anthracnose","split":"test","index":477},{"x":-6.4092,"y":4.4423,"z":8.13,"label":"Anthracnose","split":"train","index":478},{"x":-5.1314,"y":2.5351,"z":5.2779,"label":"Anthracnose","split":"val","index":479},{"x":-4.7939,"y":3.0292,"z":8.5881,"label":"Anthracnose","split":"train","index":480},{"x":-5.3458,"y":3.6278,"z":7.5273,"label":"Anthracnose","split":"train","index":481},{"x":-5.9313,"y":4.3948,"z":6.1569,"label":"Anthracnose","split":"train","index":482},{"x":-4.7808,"y":3.0198,"z":8.6035,"label":"Anthracnose","split":"train","index":483},{"x":-4.9933,"y":3.1809,"z":8.3937,"label":"Anthracnose","split":"train","index":484},{"x":-5.0132,"y":2.7427,"z":5.9447,"label":"Anthracnose","split":"train","index":485},{"x":-5.8957,"y":4.3561,"z":6.1468,"label":"Anthracnose","split":"train","index":486},{"x":-4.8089,"y":3.0477,"z":8.5689,"label":"Anthracnose","split":"train","index":487},{"x":-5.0509,"y":2.6915,"z":5.9511,"label":"Anthracnose","split":"train","index":488},{"x":-5.2636,"y":2.3401,"z":5.206,"label":"Anthracnose","split":"train","index":489},{"x":-4.7954,"y":2.5661,"z":4.395,"label":"Anthracnose","split":"train","index":490},{"x":-5.1477,"y":2.4784,"z":5.2104,"label":"Anthracnose","split":"train","index":491},{"x":-4.5673,"y":4.0786,"z":6.9011,"label":"Anthracnose","split":"test","index":492},{"x":-5.063,"y":2.6441,"z":6.0687,"label":"Anthracnose","split":"train","index":493},{"x":-4.6771,"y":3.9877,"z":6.9867,"label":"Anthracnose","split":"train","index":494},{"x":-6.3515,"y":4.3813,"z":8.0769,"label":"Anthracnose","split":"train","index":495},{"x":-5.2847,"y":2.3715,"z":5.2903,"label":"Anthracnose","split":"train","index":496},{"x":-5.0605,"y":2.6909,"z":6.2336,"label":"Anthracnose","split":"train","index":497},{"x":-4.9146,"y":2.5686,"z":4.637,"label":"Anthracnose","split":"test","index":498},{"x":-5.9106,"y":4.3707,"z":6.1517,"label":"Anthracnose","split":"test","index":499},{"x":-5.6089,"y":2.0008,"z":3.5867,"label":"Anthracnose","split":"train","index":500},{"x":-4.8389,"y":2.5914,"z":4.4951,"label":"Anthracnose","split":"train","index":501},{"x":-4.883,"y":3.1129,"z":8.491,"label":"Anthracnose","split":"train","index":502},{"x":-4.8136,"y":2.561,"z":4.4055,"label":"Anthracnose","split":"train","index":503},{"x":-4.848,"y":3.0777,"z":8.5322,"label":"Anthracnose","split":"train","index":504},{"x":-5.8912,"y":4.354,"z":6.199,"label":"Anthracnose","split":"train","index":505},{"x":-4.9646,"y":3.1695,"z":8.4244,"label":"Anthracnose","split":"train","index":506},{"x":-5.916,"y":4.3801,"z":6.1576,"label":"Anthracnose","split":"train","index":507},{"x":-5.6158,"y":1.996,"z":3.5907,"label":"Anthracnose","split":"train","index":508},{"x":-5.7526,"y":3.3206,"z":8.1574,"label":"Anthracnose","split":"train","index":509},{"x":-5.0398,"y":2.538,"z":5.0192,"label":"Anthracnose","split":"train","index":510},{"x":-4.7133,"y":3.605,"z":7.0017,"label":"Anthracnose","split":"train","index":511},{"x":-4.6794,"y":3.6826,"z":6.9529,"label":"Anthracnose","split":"val","index":512},{"x":-5.6086,"y":2.0009,"z":3.5878,"label":"Anthracnose","split":"train","index":513},{"x":-5.1796,"y":2.3947,"z":4.8622,"label":"Anthracnose","split":"train","index":514},{"x":-4.731,"y":3.411,"z":7.0661,"label":"Anthracnose","split":"train","index":515},{"x":-5.7749,"y":3.3304,"z":8.1424,"label":"Anthracnose","split":"train","index":516},{"x":-5.3039,"y":2.2392,"z":4.2394,"label":"Anthracnose","split":"val","index":517},{"x":-4.8048,"y":3.358,"z":7.1054,"label":"Anthracnose","split":"train","index":518},{"x":-6.3334,"y":4.364,"z":8.0563,"label":"Anthracnose","split":"train","index":519},{"x":-4.5389,"y":4.0793,"z":6.8611,"label":"Anthracnose","split":"train","index":520},{"x":-5.0496,"y":2.6692,"z":6.2357,"label":"Anthracnose","split":"train","index":521},{"x":-5.9335,"y":4.3934,"z":6.1461,"label":"Anthracnose","split":"train","index":522},{"x":-4.5935,"y":4.1105,"z":6.9321,"label":"Anthracnose","split":"train","index":523},{"x":-4.7089,"y":3.3984,"z":7.1174,"label":"Anthracnose","split":"test","index":524},{"x":-5.2249,"y":2.4152,"z":5.2874,"label":"Anthracnose","split":"test","index":525},{"x":-5.7561,"y":3.3581,"z":8.107,"label":"Anthracnose","split":"train","index":526},{"x":-5.7766,"y":3.3278,"z":8.1484,"label":"Anthracnose","split":"train","index":527},{"x":-6.3552,"y":4.3837,"z":8.085,"label":"Anthracnose","split":"val","index":528},{"x":-5.0715,"y":2.6275,"z":6.1345,"label":"Anthracnose","split":"train","index":529},{"x":-5.8804,"y":4.3448,"z":6.1122,"label":"Anthracnose","split":"train","index":530},{"x":-5.64,"y":1.9705,"z":3.554,"label":"Anthracnose","split":"train","index":531},{"x":-5.9248,"y":4.3846,"z":6.2083,"label":"Anthracnose","split":"train","index":532},{"x":-4.9564,"y":3.1607,"z":8.4166,"label":"Anthracnose","split":"val","index":533},{"x":-4.8145,"y":2.5701,"z":4.408,"label":"Anthracnose","split":"test","index":534},{"x":-4.8724,"y":3.0988,"z":8.4982,"label":"Anthracnose","split":"train","index":535},{"x":-5.9156,"y":4.3797,"z":6.1574,"label":"Anthracnose","split":"train","index":536},{"x":-5.5955,"y":2.0137,"z":3.6017,"label":"Anthracnose","split":"train","index":537},{"x":-4.8172,"y":2.5632,"z":4.4164,"label":"Anthracnose","split":"train","index":538},{"x":-5.3075,"y":3.6258,"z":7.5263,"label":"Anthracnose","split":"train","index":539},{"x":-5.2095,"y":2.4106,"z":5.3403,"label":"Anthracnose","split":"train","index":540},{"x":-4.9944,"y":2.7293,"z":6.2657,"label":"Anthracnose","split":"train","index":541},{"x":-4.7875,"y":2.549,"z":4.3826,"label":"Anthracnose","split":"train","index":542},{"x":-4.6331,"y":4.0345,"z":6.9604,"label":"Anthracnose","split":"train","index":543},{"x":-5.4906,"y":3.5688,"z":7.6672,"label":"Anthracnose","split":"test","index":544},{"x":-4.6306,"y":4.0168,"z":6.9314,"label":"Anthracnose","split":"train","index":545},{"x":-5.041,"y":2.6702,"z":6.05,"label":"Anthracnose","split":"train","index":546},{"x":-5.0316,"y":2.7528,"z":5.6652,"label":"Anthracnose","split":"val","index":547},{"x":-5.2515,"y":2.3468,"z":5.139,"label":"Anthracnose","split":"train","index":548},{"x":-4.7916,"y":2.5624,"z":4.388,"label":"Anthracnose","split":"train","index":549},{"x":-5.776,"y":3.3257,"z":8.1546,"label":"Anthracnose","split":"train","index":550},{"x":-6.3288,"y":4.3633,"z":8.055,"label":"Anthracnose","split":"test","index":551},{"x":-5.3491,"y":2.2657,"z":5.4067,"label":"Anthracnose","split":"train","index":552},{"x":-4.7129,"y":3.4061,"z":7.0953,"label":"Anthracnose","split":"train","index":553},{"x":-5.127,"y":2.6109,"z":5.3863,"label":"Anthracnose","split":"test","index":554},{"x":-5.7435,"y":3.3858,"z":8.0833,"label":"Anthracnose","split":"test","index":555},{"x":-6.382,"y":4.4026,"z":8.1094,"label":"Anthracnose","split":"val","index":556},{"x":-4.5555,"y":4.0893,"z":6.8919,"label":"Anthracnose","split":"val","index":557},{"x":-6.3494,"y":4.3794,"z":8.0753,"label":"Anthracnose","split":"val","index":558},{"x":-4.5558,"y":4.0797,"z":6.8883,"label":"Anthracnose","split":"train","index":559},{"x":-5.0456,"y":2.6601,"z":6.1794,"label":"Anthracnose","split":"train","index":560},{"x":-5.7638,"y":3.3366,"z":8.1389,"label":"Anthracnose","split":"train","index":561},{"x":-4.8874,"y":2.6424,"z":4.694,"label":"Anthracnose","split":"train","index":562},{"x":-4.6883,"y":3.4729,"z":7.0914,"label":"Anthracnose","split":"train","index":563},{"x":-4.7042,"y":3.4183,"z":7.097,"label":"Anthracnose","split":"train","index":564},{"x":-4.7352,"y":3.5947,"z":6.9524,"label":"Anthracnose","split":"val","index":565},{"x":-5.5953,"y":2.0129,"z":3.6062,"label":"Anthracnose","split":"train","index":566},{"x":-5.7036,"y":3.2893,"z":8.1835,"label":"Anthracnose","split":"test","index":567},{"x":-5.1554,"y":2.4253,"z":5.0072,"label":"Anthracnose","split":"train","index":568},{"x":-4.9354,"y":3.2021,"z":6.7848,"label":"Anthracnose","split":"train","index":569},{"x":16.6784,"y":5.5405,"z":8.6825,"label":"Downy_Mildew","split":"train","index":570},{"x":17.3512,"y":4.805,"z":8.3699,"label":"Downy_Mildew","split":"train","index":571},{"x":18.0084,"y":5.883,"z":9.8841,"label":"Downy_Mildew","split":"train","index":572},{"x":16.8802,"y":7.3333,"z":2.0606,"label":"Downy_Mildew","split":"train","index":573},{"x":17.3097,"y":6.0826,"z":7.73,"label":"Downy_Mildew","split":"test","index":574},{"x":16.2599,"y":6.8181,"z":1.4187,"label":"Downy_Mildew","split":"train","index":575},{"x":17.2759,"y":6.0676,"z":7.7399,"label":"Downy_Mildew","split":"train","index":576},{"x":17.7701,"y":5.2219,"z":9.0902,"label":"Downy_Mildew","split":"test","index":577},{"x":16.8896,"y":5.1221,"z":8.4774,"label":"Downy_Mildew","split":"train","index":578},{"x":13.0862,"y":1.4532,"z":-1.5175,"label":"Downy_Mildew","split":"val","index":579},{"x":18.2134,"y":6.3391,"z":10.7243,"label":"Downy_Mildew","split":"train","index":580},{"x":16.6075,"y":7.3496,"z":1.7843,"label":"Downy_Mildew","split":"test","index":581},{"x":17.2993,"y":5.4068,"z":9.0767,"label":"Downy_Mildew","split":"test","index":582},{"x":17.4068,"y":4.5816,"z":8.6868,"label":"Downy_Mildew","split":"val","index":583},{"x":17.6692,"y":5.1868,"z":9.2721,"label":"Downy_Mildew","split":"train","index":584},{"x":13.1048,"y":1.4601,"z":-1.4928,"label":"Downy_Mildew","split":"train","index":585},{"x":17.3207,"y":5.7729,"z":8.4773,"label":"Downy_Mildew","split":"train","index":586},{"x":18.0418,"y":5.4132,"z":8.1487,"label":"Downy_Mildew","split":"train","index":587},{"x":13.2373,"y":1.508,"z":-1.7757,"label":"Downy_Mildew","split":"val","index":588},{"x":17.8524,"y":5.8257,"z":9.847,"label":"Downy_Mildew","split":"train","index":589},{"x":18.2467,"y":6.3086,"z":10.7643,"label":"Downy_Mildew","split":"train","index":590},{"x":17.1815,"y":5.5827,"z":8.7381,"label":"Downy_Mildew","split":"train","index":591},{"x":17.1494,"y":5.6066,"z":8.4328,"label":"Downy_Mildew","split":"test","index":592},{"x":9.814,"y":-1.4748,"z":1.477,"label":"Downy_Mildew","split":"val","index":593},{"x":17.2044,"y":5.2419,"z":9.5162,"label":"Downy_Mildew","split":"train","index":594},{"x":18.498,"y":6.2021,"z":11.1067,"label":"Downy_Mildew","split":"val","index":595},{"x":17.3999,"y":5.4107,"z":9.3647,"label":"Downy_Mildew","split":"train","index":596},{"x":13.3276,"y":1.6057,"z":-1.3023,"label":"Downy_Mildew","split":"test","index":597},{"x":17.7336,"y":5.0643,"z":8.3821,"label":"Downy_Mildew","split":"train","index":598},{"x":13.6458,"y":1.4898,"z":-1.8581,"label":"Downy_Mildew","split":"train","index":599},{"x":17.9025,"y":5.9061,"z":8.0024,"label":"Downy_Mildew","split":"train","index":600},{"x":16.9068,"y":7.3053,"z":2.0878,"label":"Downy_Mildew","split":"train","index":601},{"x":18.1243,"y":5.8507,"z":9.0097,"label":"Downy_Mildew","split":"test","index":602},{"x":17.7726,"y":5.9668,"z":7.9486,"label":"Downy_Mildew","split":"train","index":603},{"x":13.6699,"y":1.4939,"z":-1.8835,"label":"Downy_Mildew","split":"train","index":604},{"x":17.6443,"y":3.8973,"z":8.2296,"label":"Downy_Mildew","split":"train","index":605},{"x":16.7288,"y":5.1557,"z":9.5985,"label":"Downy_Mildew","split":"train","index":606},{"x":18.5193,"y":6.1957,"z":11.1098,"label":"Downy_Mildew","split":"val","index":607},{"x":13.2859,"y":1.6032,"z":-1.3413,"label":"Downy_Mildew","split":"train","index":608},{"x":17.4532,"y":5.4092,"z":9.3234,"label":"Downy_Mildew","split":"train","index":609},{"x":18.048,"y":5.8454,"z":9.1377,"label":"Downy_Mildew","split":"train","index":610},{"x":13.7502,"y":1.5665,"z":-1.7751,"label":"Downy_Mildew","split":"train","index":611},{"x":17.6204,"y":3.9117,"z":8.2441,"label":"Downy_Mildew","split":"train","index":612},{"x":16.8006,"y":7.4108,"z":1.9844,"label":"Downy_Mildew","split":"test","index":613},{"x":18.1621,"y":5.8061,"z":10.2474,"label":"Downy_Mildew","split":"train","index":614},{"x":18.1566,"y":5.8001,"z":10.2408,"label":"Downy_Mildew","split":"train","index":615},{"x":17.7883,"y":6.0048,"z":7.9004,"label":"Downy_Mildew","split":"train","index":616},{"x":16.3041,"y":5.3058,"z":9.5321,"label":"Downy_Mildew","split":"train","index":617},{"x":16.8916,"y":7.3244,"z":2.0717,"label":"Downy_Mildew","split":"train","index":618},{"x":18.1244,"y":5.5696,"z":8.2004,"label":"Downy_Mildew","split":"train","index":619},{"x":16.5878,"y":7.4364,"z":1.7498,"label":"Downy_Mildew","split":"train","index":620},{"x":17.6298,"y":3.9058,"z":8.2445,"label":"Downy_Mildew","split":"train","index":621},{"x":16.9493,"y":4.5543,"z":8.5198,"label":"Downy_Mildew","split":"train","index":622},{"x":13.6543,"y":1.5548,"z":-1.8833,"label":"Downy_Mildew","split":"train","index":623},{"x":17.3679,"y":4.3805,"z":8.6226,"label":"Downy_Mildew","split":"val","index":624},{"x":16.1366,"y":7.0815,"z":1.623,"label":"Downy_Mildew","split":"train","index":625},{"x":17.0739,"y":5.1464,"z":8.5909,"label":"Downy_Mildew","split":"train","index":626},{"x":8.637,"y":-2.3276,"z":2.8214,"label":"Downy_Mildew","split":"train","index":627},{"x":16.5988,"y":4.8679,"z":8.8979,"label":"Downy_Mildew","split":"train","index":628},{"x":17.4983,"y":4.4143,"z":8.4849,"label":"Downy_Mildew","split":"val","index":629},{"x":17.8978,"y":5.8744,"z":12.2563,"label":"Downy_Mildew","split":"train","index":630},{"x":16.0905,"y":7.0178,"z":1.5818,"label":"Downy_Mildew","split":"train","index":631},{"x":17.6326,"y":5.1706,"z":8.0135,"label":"Downy_Mildew","split":"train","index":632},{"x":16.1763,"y":5.3612,"z":9.1404,"label":"Downy_Mildew","split":"val","index":633},{"x":18.2089,"y":6.1833,"z":9.5369,"label":"Downy_Mildew","split":"train","index":634},{"x":16.9646,"y":3.2269,"z":11.0351,"label":"Downy_Mildew","split":"train","index":635},{"x":16.2107,"y":5.3545,"z":9.0562,"label":"Downy_Mildew","split":"test","index":636},{"x":18.0853,"y":5.9756,"z":9.4314,"label":"Downy_Mildew","split":"test","index":637},{"x":16.9565,"y":3.241,"z":11.023,"label":"Downy_Mildew","split":"train","index":638},{"x":16.767,"y":7.4298,"z":1.941,"label":"Downy_Mildew","split":"train","index":639},{"x":9.8047,"y":-1.4852,"z":1.4854,"label":"Downy_Mildew","split":"test","index":640},{"x":16.9523,"y":4.5828,"z":8.4819,"label":"Downy_Mildew","split":"train","index":641},{"x":17.2617,"y":5.5692,"z":8.6056,"label":"Downy_Mildew","split":"train","index":642},{"x":18.454,"y":6.0465,"z":10.9031,"label":"Downy_Mildew","split":"train","index":643},{"x":13.4013,"y":2.0277,"z":-1.8712,"label":"Downy_Mildew","split":"train","index":644},{"x":17.0361,"y":4.9446,"z":7.8404,"label":"Downy_Mildew","split":"test","index":645},{"x":18.3948,"y":5.7661,"z":8.1467,"label":"Downy_Mildew","split":"test","index":646},{"x":8.6008,"y":-2.3117,"z":2.8531,"label":"Downy_Mildew","split":"train","index":647},{"x":18.2312,"y":6.1188,"z":9.4748,"label":"Downy_Mildew","split":"val","index":648},{"x":8.5688,"y":-2.2988,"z":2.8865,"label":"Downy_Mildew","split":"train","index":649},{"x":18.4949,"y":5.7821,"z":8.1246,"label":"Downy_Mildew","split":"train","index":650},{"x":17.4864,"y":5.7471,"z":7.9019,"label":"Downy_Mildew","split":"train","index":651},{"x":17.6485,"y":5.9939,"z":9.6525,"label":"Downy_Mildew","split":"train","index":652},{"x":17.9832,"y":5.8485,"z":9.9444,"label":"Downy_Mildew","split":"train","index":653},{"x":13.1805,"y":1.4783,"z":-1.589,"label":"Downy_Mildew","split":"train","index":654},{"x":16.5994,"y":5.4823,"z":8.7256,"label":"Downy_Mildew","split":"val","index":655},{"x":16.8124,"y":4.8573,"z":8.1182,"label":"Downy_Mildew","split":"train","index":656},{"x":9.7283,"y":-1.8085,"z":0.5654,"label":"Downy_Mildew","split":"train","index":657},{"x":13.1918,"y":1.4681,"z":-1.6929,"label":"Downy_Mildew","split":"test","index":658},{"x":16.3344,"y":5.4314,"z":8.8478,"label":"Downy_Mildew","split":"test","index":659},{"x":18.4595,"y":6.0925,"z":10.9525,"label":"Downy_Mildew","split":"train","index":660},{"x":18.1686,"y":5.5775,"z":8.2868,"label":"Downy_Mildew","split":"train","index":661},{"x":16.8418,"y":4.837,"z":8.0485,"label":"Downy_Mildew","split":"val","index":662},{"x":9.7619,"y":-1.7734,"z":0.6028,"label":"Downy_Mildew","split":"test","index":663},{"x":18.1439,"y":5.7893,"z":10.2113,"label":"Downy_Mildew","split":"test","index":664},{"x":18.4025,"y":5.833,"z":8.0868,"label":"Downy_Mildew","split":"val","index":665},{"x":16.3042,"y":5.2838,"z":9.5108,"label":"Downy_Mildew","split":"train","index":666},{"x":16.905,"y":7.311,"z":2.0865,"label":"Downy_Mildew","split":"train","index":667},{"x":18.1307,"y":5.9102,"z":9.1007,"label":"Downy_Mildew","split":"train","index":668},{"x":13.7171,"y":1.5467,"z":-1.8156,"label":"Downy_Mildew","split":"train","index":669},{"x":17.5965,"y":3.9072,"z":8.2791,"label":"Downy_Mildew","split":"train","index":670},{"x":16.8088,"y":7.4377,"z":1.9847,"label":"Downy_Mildew","split":"train","index":671},{"x":18.1249,"y":5.8126,"z":10.1244,"label":"Downy_Mildew","split":"train","index":672},{"x":18.1188,"y":5.6822,"z":8.7457,"label":"Downy_Mildew","split":"train","index":673},{"x":17.023,"y":4.6982,"z":8.7948,"label":"Downy_Mildew","split":"train","index":674},{"x":13.7286,"y":1.5138,"z":-1.8653,"label":"Downy_Mildew","split":"train","index":675},{"x":17.6274,"y":3.9554,"z":8.2084,"label":"Downy_Mildew","split":"train","index":676},{"x":16.7681,"y":5.1806,"z":9.6105,"label":"Downy_Mildew","split":"train","index":677},{"x":18.4807,"y":6.1793,"z":11.0836,"label":"Downy_Mildew","split":"train","index":678},{"x":13.0565,"y":1.4298,"z":-1.4718,"label":"Downy_Mildew","split":"test","index":679},{"x":17.9153,"y":5.5914,"z":9.4192,"label":"Downy_Mildew","split":"train","index":680},{"x":16.8106,"y":5.1893,"z":9.6887,"label":"Downy_Mildew","split":"train","index":681},{"x":18.5007,"y":6.154,"z":11.0866,"label":"Downy_Mildew","split":"val","index":682},{"x":17.7984,"y":5.8136,"z":9.2063,"label":"Downy_Mildew","split":"test","index":683},{"x":13.3295,"y":1.6248,"z":-1.2839,"label":"Downy_Mildew","split":"train","index":684},{"x":17.7015,"y":4.8395,"z":8.8024,"label":"Downy_Mildew","split":"train","index":685},{"x":13.6205,"y":1.4293,"z":-1.8688,"label":"Downy_Mildew","split":"train","index":686},{"x":17.8859,"y":5.9822,"z":7.9056,"label":"Downy_Mildew","split":"train","index":687},{"x":16.9185,"y":7.3001,"z":2.1008,"label":"Downy_Mildew","split":"train","index":688},{"x":17.8163,"y":5.2294,"z":8.0802,"label":"Downy_Mildew","split":"train","index":689},{"x":13.1832,"y":1.4947,"z":-1.7589,"label":"Downy_Mildew","split":"train","index":690},{"x":17.9289,"y":5.852,"z":9.8684,"label":"Downy_Mildew","split":"train","index":691},{"x":18.1567,"y":6.3779,"z":10.6762,"label":"Downy_Mildew","split":"val","index":692},{"x":16.9693,"y":5.2174,"z":9.0823,"label":"Downy_Mildew","split":"train","index":693},{"x":17.1139,"y":5.6195,"z":8.8733,"label":"Downy_Mildew","split":"train","index":694},{"x":16.646,"y":7.3333,"z":1.8239,"label":"Downy_Mildew","split":"train","index":695},{"x":18.1188,"y":6.387,"z":10.6067,"label":"Downy_Mildew","split":"train","index":696},{"x":16.6207,"y":7.3391,"z":1.8061,"label":"Downy_Mildew","split":"train","index":697},{"x":17.1733,"y":5.5689,"z":8.897,"label":"Downy_Mildew","split":"train","index":698},{"x":17.3046,"y":5.3234,"z":9.1822,"label":"Downy_Mildew","split":"train","index":699},{"x":17.0199,"y":5.2507,"z":9.1724,"label":"Downy_Mildew","split":"train","index":700},{"x":13.1222,"y":1.4796,"z":-1.5167,"label":"Downy_Mildew","split":"train","index":701},{"x":17.3639,"y":5.7029,"z":8.3597,"label":"Downy_Mildew","split":"train","index":702},{"x":16.2132,"y":6.8894,"z":1.4718,"label":"Downy_Mildew","split":"train","index":703},{"x":17.4169,"y":6.0253,"z":7.8058,"label":"Downy_Mildew","split":"val","index":704},{"x":17.8208,"y":5.1982,"z":9.1312,"label":"Downy_Mildew","split":"train","index":705},{"x":16.9494,"y":5.3948,"z":8.5323,"label":"Downy_Mildew","split":"test","index":706},{"x":13.0782,"y":1.4513,"z":-1.5116,"label":"Downy_Mildew","split":"val","index":707},{"x":16.7537,"y":5.5211,"z":8.6599,"label":"Downy_Mildew","split":"train","index":708},{"x":17.6921,"y":5.1056,"z":8.0531,"label":"Downy_Mildew","split":"train","index":709},{"x":17.9775,"y":5.8567,"z":9.9003,"label":"Downy_Mildew","split":"train","index":710},{"x":16.9438,"y":7.2829,"z":2.1235,"label":"Downy_Mildew","split":"train","index":711},{"x":17.391,"y":6.0164,"z":7.7981,"label":"Downy_Mildew","split":"train","index":712},{"x":18.5185,"y":6.0964,"z":10.9954,"label":"Downy_Mildew","split":"val","index":713},{"x":18.1558,"y":5.552,"z":8.2702,"label":"Downy_Mildew","split":"train","index":714},{"x":16.796,"y":4.7741,"z":8.2467,"label":"Downy_Mildew","split":"train","index":715},{"x":9.7251,"y":-1.8121,"z":0.5609,"label":"Downy_Mildew","split":"train","index":716},{"x":16.8214,"y":4.8658,"z":8.1195,"label":"Downy_Mildew","split":"train","index":717},{"x":9.7606,"y":-1.7731,"z":0.6093,"label":"Downy_Mildew","split":"test","index":718},{"x":13.1916,"y":1.4901,"z":-1.718,"label":"Downy_Mildew","split":"test","index":719},{"x":17.2964,"y":5.2402,"z":8.4869,"label":"Downy_Mildew","split":"train","index":720},{"x":17.375,"y":5.7235,"z":8.2771,"label":"Downy_Mildew","split":"train","index":721},{"x":8.5784,"y":-2.2978,"z":2.8744,"label":"Downy_Mildew","split":"train","index":722},{"x":17.1286,"y":4.9426,"z":7.8432,"label":"Downy_Mildew","split":"val","index":723},{"x":18.4307,"y":5.7816,"z":8.1231,"label":"Downy_Mildew","split":"train","index":724},{"x":17.9723,"y":6.0948,"z":9.6781,"label":"Downy_Mildew","split":"train","index":725},{"x":18.0592,"y":5.8566,"z":9.8773,"label":"Downy_Mildew","split":"train","index":726},{"x":13.3658,"y":2.0804,"z":-1.8284,"label":"Downy_Mildew","split":"val","index":727},{"x":16.338,"y":5.4589,"z":8.818,"label":"Downy_Mildew","split":"test","index":728},{"x":18.4571,"y":6.0432,"z":10.92,"label":"Downy_Mildew","split":"train","index":729},{"x":13.4147,"y":2.0089,"z":-1.8903,"label":"Downy_Mildew","split":"train","index":730},{"x":18.4201,"y":5.8122,"z":8.1024,"label":"Downy_Mildew","split":"val","index":731},{"x":17.0085,"y":4.8607,"z":7.925,"label":"Downy_Mildew","split":"train","index":732},{"x":8.6355,"y":-2.3376,"z":2.8204,"label":"Downy_Mildew","split":"train","index":733},{"x":18.1973,"y":6.1369,"z":9.5307,"label":"Downy_Mildew","split":"train","index":734},{"x":16.1441,"y":5.3224,"z":8.9797,"label":"Downy_Mildew","split":"test","index":735},{"x":18.0005,"y":5.9293,"z":9.6576,"label":"Downy_Mildew","split":"train","index":736},{"x":16.9561,"y":3.2449,"z":11.0204,"label":"Downy_Mildew","split":"train","index":737},{"x":16.5505,"y":7.4371,"z":1.6969,"label":"Downy_Mildew","split":"train","index":738},{"x":9.8211,"y":-1.4688,"z":1.4746,"label":"Downy_Mildew","split":"test","index":739},{"x":16.7856,"y":4.732,"z":8.5404,"label":"Downy_Mildew","split":"test","index":740},{"x":17.9887,"y":5.8201,"z":9.2032,"label":"Downy_Mildew","split":"train","index":741},{"x":17.4162,"y":4.2752,"z":8.5808,"label":"Downy_Mildew","split":"train","index":742},{"x":17.9174,"y":5.9033,"z":12.2704,"label":"Downy_Mildew","split":"val","index":743},{"x":16.1265,"y":7.0365,"z":1.5994,"label":"Downy_Mildew","split":"train","index":744},{"x":17.4785,"y":5.1771,"z":8.1352,"label":"Downy_Mildew","split":"test","index":745},{"x":16.1272,"y":5.3499,"z":9.0312,"label":"Downy_Mildew","split":"train","index":746},{"x":18.2388,"y":6.1819,"z":9.5221,"label":"Downy_Mildew","split":"test","index":747},{"x":16.9676,"y":3.23,"z":11.0332,"label":"Downy_Mildew","split":"train","index":748},{"x":13.6186,"y":1.652,"z":-1.907,"label":"Downy_Mildew","split":"train","index":749},{"x":17.4605,"y":4.2732,"z":8.5486,"label":"Downy_Mildew","split":"train","index":750},{"x":16.0946,"y":7.0429,"z":1.6247,"label":"Downy_Mildew","split":"test","index":751},{"x":16.8881,"y":4.9003,"z":8.0329,"label":"Downy_Mildew","split":"train","index":752},{"x":8.6483,"y":-2.3292,"z":2.8068,"label":"Downy_Mildew","split":"train","index":753},{"x":16.6113,"y":4.8346,"z":8.908,"label":"Downy_Mildew","split":"train","index":754},{"x":17.8178,"y":5.6232,"z":8.3441,"label":"Downy_Mildew","split":"train","index":755},{"x":16.5774,"y":7.4202,"z":1.7323,"label":"Downy_Mildew","split":"val","index":756},{"x":17.6351,"y":3.9436,"z":8.2444,"label":"Downy_Mildew","split":"train","index":757},{"x":17.0677,"y":4.5668,"z":8.4937,"label":"Downy_Mildew","split":"train","index":758},{"x":17.3455,"y":4.314,"z":8.6081,"label":"Downy_Mildew","split":"train","index":759},{"x":9.747,"y":-1.7895,"z":0.5861,"label":"Downy_Mildew","split":"train","index":760},{"x":17.094,"y":5.5052,"z":8.9138,"label":"Downy_Mildew","split":"train","index":761},{"x":17.9025,"y":5.8795,"z":12.2525,"label":"Downy_Mildew","split":"train","index":762},{"x":16.9359,"y":5.5163,"z":8.4681,"label":"Downy_Mildew","split":"train","index":763},{"x":18.1559,"y":5.608,"z":8.2617,"label":"Downy_Mildew","split":"train","index":764},{"x":16.7891,"y":4.6827,"z":8.4213,"label":"Downy_Mildew","split":"train","index":765},{"x":16.2167,"y":6.9253,"z":1.5132,"label":"Downy_Mildew","split":"val","index":766},{"x":16.9598,"y":5.2343,"z":9.137,"label":"Downy_Mildew","split":"train","index":767},{"x":16.5481,"y":7.2685,"z":1.6946,"label":"Downy_Mildew","split":"train","index":768},{"x":18.4649,"y":6.0972,"z":10.9744,"label":"Downy_Mildew","split":"train","index":769},{"x":13.4263,"y":1.9935,"z":-1.8964,"label":"Downy_Mildew","split":"train","index":770},{"x":16.8619,"y":4.8432,"z":8.0449,"label":"Downy_Mildew","split":"val","index":771},{"x":16.7371,"y":7.2922,"z":1.9169,"label":"Downy_Mildew","split":"train","index":772},{"x":18.4711,"y":5.796,"z":8.1127,"label":"Downy_Mildew","split":"train","index":773},{"x":17.0344,"y":5.1715,"z":7.9909,"label":"Downy_Mildew","split":"train","index":774},{"x":17.9768,"y":6.1578,"z":9.691,"label":"Downy_Mildew","split":"test","index":775},{"x":13.4098,"y":2.0598,"z":-1.8545,"label":"Downy_Mildew","split":"val","index":776},{"x":17.0291,"y":4.8904,"z":7.8822,"label":"Downy_Mildew","split":"val","index":777},{"x":18.4273,"y":5.7888,"z":8.1422,"label":"Downy_Mildew","split":"train","index":778},{"x":8.6401,"y":-2.3183,"z":2.8211,"label":"Downy_Mildew","split":"test","index":779},{"x":17.8939,"y":5.8691,"z":12.2554,"label":"Downy_Mildew","split":"val","index":780},{"x":17.8713,"y":5.8101,"z":9.9273,"label":"Downy_Mildew","split":"train","index":781},{"x":13.3923,"y":2.0569,"z":-1.8634,"label":"Downy_Mildew","split":"val","index":782},{"x":16.1384,"y":7.0547,"z":1.6138,"label":"Downy_Mildew","split":"train","index":783},{"x":17.9093,"y":5.8865,"z":12.2472,"label":"Downy_Mildew","split":"test","index":784},{"x":17.5873,"y":5.1987,"z":8.0425,"label":"Downy_Mildew","split":"val","index":785},{"x":16.2322,"y":5.316,"z":9.2197,"label":"Downy_Mildew","split":"val","index":786},{"x":18.2082,"y":6.0883,"z":9.5139,"label":"Downy_Mildew","split":"train","index":787},{"x":16.2198,"y":5.3576,"z":9.1558,"label":"Downy_Mildew","split":"train","index":788},{"x":16.958,"y":3.2372,"z":11.0256,"label":"Downy_Mildew","split":"train","index":789},{"x":17.3947,"y":4.306,"z":8.6389,"label":"Downy_Mildew","split":"train","index":790},{"x":18.1027,"y":5.5033,"z":8.2226,"label":"Downy_Mildew","split":"train","index":791},{"x":16.8316,"y":4.8105,"z":8.6191,"label":"Downy_Mildew","split":"train","index":792},{"x":9.8311,"y":-1.4611,"z":1.4608,"label":"Downy_Mildew","split":"val","index":793},{"x":17.7005,"y":5.1964,"z":8.0325,"label":"Downy_Mildew","split":"train","index":794},{"x":16.9575,"y":3.234,"z":11.0284,"label":"Downy_Mildew","split":"train","index":795},{"x":18.1783,"y":5.5882,"z":8.3238,"label":"Downy_Mildew","split":"train","index":796},{"x":13.7532,"y":1.5999,"z":-1.7789,"label":"Downy_Mildew","split":"test","index":797},{"x":17.5596,"y":3.9629,"z":8.317,"label":"Downy_Mildew","split":"test","index":798},{"x":13.5924,"y":1.6317,"z":-1.9634,"label":"Downy_Mildew","split":"val","index":799},{"x":17.2742,"y":4.4447,"z":8.7801,"label":"Downy_Mildew","split":"train","index":800},{"x":18.1779,"y":5.8238,"z":10.2868,"label":"Downy_Mildew","split":"train","index":801},{"x":18.1783,"y":6.145,"z":9.6587,"label":"Downy_Mildew","split":"train","index":802},{"x":16.3715,"y":5.0191,"z":8.9475,"label":"Downy_Mildew","split":"val","index":803},{"x":16.3481,"y":5.2884,"z":9.565,"label":"Downy_Mildew","split":"train","index":804},{"x":16.5539,"y":7.4242,"z":1.7329,"label":"Downy_Mildew","split":"train","index":805},{"x":18.1232,"y":5.8298,"z":10.1634,"label":"Downy_Mildew","split":"train","index":806},{"x":16.2718,"y":5.3011,"z":9.2541,"label":"Downy_Mildew","split":"train","index":807},{"x":17.4957,"y":5.4697,"z":9.4122,"label":"Downy_Mildew","split":"val","index":808},{"x":16.5418,"y":4.8541,"z":8.9445,"label":"Downy_Mildew","split":"train","index":809},{"x":17.1135,"y":4.4955,"z":8.5728,"label":"Downy_Mildew","split":"test","index":810},{"x":13.3778,"y":1.6383,"z":-1.3072,"label":"Downy_Mildew","split":"train","index":811},{"x":16.2869,"y":5.2934,"z":9.4962,"label":"Downy_Mildew","split":"train","index":812},{"x":16.6224,"y":7.4359,"z":1.7827,"label":"Downy_Mildew","split":"train","index":813},{"x":16.6396,"y":4.7569,"z":8.5927,"label":"Downy_Mildew","split":"train","index":814},{"x":17.2826,"y":4.4222,"z":8.7504,"label":"Downy_Mildew","split":"train","index":815},{"x":16.8718,"y":5.1895,"z":9.5322,"label":"Downy_Mildew","split":"train","index":816},{"x":13.3491,"y":1.6344,"z":-1.2868,"label":"Downy_Mildew","split":"test","index":817},{"x":18.4515,"y":6.1023,"z":10.9773,"label":"Downy_Mildew","split":"val","index":818},{"x":17.4388,"y":4.4302,"z":8.6337,"label":"Downy_Mildew","split":"val","index":819},{"x":17.844,"y":5.9396,"z":7.8804,"label":"Downy_Mildew","split":"test","index":820},{"x":13.5868,"y":1.5204,"z":-1.9347,"label":"Downy_Mildew","split":"test","index":821},{"x":18.1518,"y":5.7299,"z":8.8865,"label":"Downy_Mildew","split":"train","index":822},{"x":13.5039,"y":1.4507,"z":-1.9804,"label":"Downy_Mildew","split":"train","index":823},{"x":17.8349,"y":5.9864,"z":7.9215,"label":"Downy_Mildew","split":"train","index":824},{"x":18.4954,"y":6.2105,"z":11.1103,"label":"Downy_Mildew","split":"test","index":825},{"x":16.6216,"y":5.2564,"z":9.6523,"label":"Downy_Mildew","split":"train","index":826},{"x":17.8608,"y":5.5446,"z":9.4231,"label":"Downy_Mildew","split":"val","index":827},{"x":13.0993,"y":1.4678,"z":-1.4835,"label":"Downy_Mildew","split":"train","index":828},{"x":18.1332,"y":6.3793,"z":10.6265,"label":"Downy_Mildew","split":"train","index":829},{"x":17.6946,"y":4.7997,"z":8.5226,"label":"Downy_Mildew","split":"train","index":830},{"x":17.3955,"y":5.4329,"z":8.9249,"label":"Downy_Mildew","split":"train","index":831},{"x":16.8041,"y":7.3974,"z":1.984,"label":"Downy_Mildew","split":"train","index":832},{"x":16.305,"y":6.9565,"z":1.55,"label":"Downy_Mildew","split":"test","index":833},{"x":13.2237,"y":1.4968,"z":-1.6655,"label":"Downy_Mildew","split":"train","index":834},{"x":17.3975,"y":5.8497,"z":8.1453,"label":"Downy_Mildew","split":"test","index":835},{"x":13.2235,"y":1.487,"z":-1.7112,"label":"Downy_Mildew","split":"test","index":836},{"x":16.3061,"y":5.3177,"z":9.3972,"label":"Downy_Mildew","split":"train","index":837},{"x":18.1413,"y":6.3703,"z":10.6651,"label":"Downy_Mildew","split":"train","index":838},{"x":9.8184,"y":-1.4704,"z":1.4832,"label":"Downy_Mildew","split":"train","index":839},{"x":17.0,"y":5.4479,"z":8.4128,"label":"Downy_Mildew","split":"val","index":840},{"x":17.3186,"y":5.4697,"z":8.8806,"label":"Downy_Mildew","split":"train","index":841},{"x":16.3032,"y":5.3165,"z":9.423,"label":"Downy_Mildew","split":"train","index":842},{"x":17.7481,"y":5.1496,"z":9.1506,"label":"Downy_Mildew","split":"train","index":843},{"x":17.4569,"y":5.0464,"z":7.9894,"label":"Downy_Mildew","split":"train","index":844},{"x":17.0108,"y":5.3538,"z":8.4147,"label":"Downy_Mildew","split":"train","index":845},{"x":9.8016,"y":-1.485,"z":1.4724,"label":"Downy_Mildew","split":"val","index":846},{"x":16.8811,"y":7.3305,"z":2.0636,"label":"Downy_Mildew","split":"val","index":847},{"x":17.2859,"y":6.0721,"z":7.7493,"label":"Downy_Mildew","split":"train","index":848},{"x":18.0522,"y":6.0326,"z":9.511,"label":"Downy_Mildew","split":"train","index":849},{"x":17.7418,"y":4.9901,"z":8.374,"label":"Downy_Mildew","split":"test","index":850},{"x":16.2257,"y":6.8189,"z":1.4115,"label":"Downy_Mildew","split":"train","index":851},{"x":17.2688,"y":6.0701,"z":7.7229,"label":"Downy_Mildew","split":"train","index":852},{"x":17.756,"y":5.1734,"z":9.138,"label":"Downy_Mildew","split":"val","index":853},{"x":16.9578,"y":5.4909,"z":8.4881,"label":"Downy_Mildew","split":"train","index":854},{"x":13.6588,"y":1.6545,"z":-1.8681,"label":"Downy_Mildew","split":"train","index":855},{"x":17.428,"y":4.3035,"z":8.6209,"label":"Downy_Mildew","split":"val","index":856},{"x":18.1005,"y":5.8211,"z":10.1046,"label":"Downy_Mildew","split":"test","index":857},{"x":18.0991,"y":6.0177,"z":9.635,"label":"Downy_Mildew","split":"train","index":858},{"x":16.475,"y":4.8268,"z":8.8059,"label":"Downy_Mildew","split":"train","index":859},{"x":16.9577,"y":3.234,"z":11.0276,"label":"Downy_Mildew","split":"train","index":860},{"x":18.1775,"y":5.4904,"z":8.2282,"label":"Downy_Mildew","split":"test","index":861},{"x":13.681,"y":1.5422,"z":-1.7849,"label":"Downy_Mildew","split":"train","index":862},{"x":17.5999,"y":3.898,"z":8.2492,"label":"Downy_Mildew","split":"train","index":863},{"x":16.2388,"y":5.3245,"z":9.1177,"label":"Downy_Mildew","split":"train","index":864},{"x":16.9581,"y":3.234,"z":11.0281,"label":"Downy_Mildew","split":"train","index":865},{"x":17.3438,"y":4.2981,"z":8.7669,"label":"Downy_Mildew","split":"val","index":866},{"x":18.1985,"y":5.5706,"z":8.3647,"label":"Downy_Mildew","split":"val","index":867},{"x":16.868,"y":4.665,"z":8.8769,"label":"Downy_Mildew","split":"train","index":868},{"x":16.0992,"y":7.0619,"z":1.6251,"label":"Downy_Mildew","split":"train","index":869},{"x":17.6072,"y":5.3055,"z":8.073,"label":"Downy_Mildew","split":"train","index":870},{"x":16.1273,"y":7.0155,"z":1.5715,"label":"Downy_Mildew","split":"train","index":871},{"x":17.9106,"y":5.8872,"z":12.2436,"label":"Downy_Mildew","split":"train","index":872},{"x":17.7429,"y":5.1633,"z":8.1377,"label":"Downy_Mildew","split":"train","index":873},{"x":16.2571,"y":5.4061,"z":9.1248,"label":"Downy_Mildew","split":"train","index":874},{"x":18.1239,"y":6.0818,"z":9.6223,"label":"Downy_Mildew","split":"val","index":875},{"x":9.7409,"y":-1.7945,"z":0.5864,"label":"Downy_Mildew","split":"test","index":876},{"x":17.3685,"y":5.6791,"z":8.8103,"label":"Downy_Mildew","split":"val","index":877},{"x":16.9968,"y":4.9159,"z":7.883,"label":"Downy_Mildew","split":"train","index":878},{"x":8.6264,"y":-2.316,"z":2.8303,"label":"Downy_Mildew","split":"train","index":879},{"x":17.9169,"y":5.8901,"z":12.2264,"label":"Downy_Mildew","split":"train","index":880},{"x":17.6271,"y":5.544,"z":9.7263,"label":"Downy_Mildew","split":"train","index":881},{"x":13.4094,"y":2.0366,"z":-1.8875,"label":"Downy_Mildew","split":"train","index":882},{"x":18.4583,"y":6.056,"z":10.923,"label":"Downy_Mildew","split":"val","index":883},{"x":13.4385,"y":2.0146,"z":-1.8958,"label":"Downy_Mildew","split":"test","index":884},{"x":17.2767,"y":6.0859,"z":7.7444,"label":"Downy_Mildew","split":"test","index":885},{"x":16.5944,"y":7.3782,"z":1.7683,"label":"Downy_Mildew","split":"val","index":886},{"x":16.903,"y":5.1163,"z":9.2217,"label":"Downy_Mildew","split":"train","index":887},{"x":18.4677,"y":5.8209,"z":8.1051,"label":"Downy_Mildew","split":"val","index":888},{"x":18.1471,"y":6.1336,"z":9.6175,"label":"Downy_Mildew","split":"train","index":889},{"x":16.9592,"y":5.6057,"z":8.5472,"label":"Downy_Mildew","split":"train","index":890},{"x":16.768,"y":4.7743,"z":8.2806,"label":"Downy_Mildew","split":"train","index":891},{"x":16.2625,"y":6.8225,"z":1.4212,"label":"Downy_Mildew","split":"test","index":892},{"x":17.2965,"y":5.3882,"z":9.1287,"label":"Downy_Mildew","split":"train","index":893},{"x":16.7641,"y":7.3781,"z":1.945,"label":"Downy_Mildew","split":"train","index":894},{"x":17.2819,"y":4.2734,"z":8.5515,"label":"Downy_Mildew","split":"train","index":895},{"x":9.7484,"y":-1.7881,"z":0.587,"label":"Downy_Mildew","split":"train","index":896},{"x":17.1814,"y":5.543,"z":8.8851,"label":"Downy_Mildew","split":"train","index":897},{"x":17.9073,"y":5.8843,"z":12.2475,"label":"Downy_Mildew","split":"train","index":898},{"x":16.8865,"y":5.5758,"z":8.5059,"label":"Downy_Mildew","split":"train","index":899},{"x":17.3119,"y":5.8849,"z":9.6154,"label":"Downy_Mildew","split":"train","index":900},{"x":17.7407,"y":4.89,"z":8.4407,"label":"Downy_Mildew","split":"train","index":901},{"x":16.2687,"y":6.7901,"z":1.3995,"label":"Downy_Mildew","split":"test","index":902},{"x":17.2801,"y":6.0688,"z":7.7323,"label":"Downy_Mildew","split":"train","index":903},{"x":17.7914,"y":5.1144,"z":9.1833,"label":"Downy_Mildew","split":"val","index":904},{"x":17.3075,"y":5.3525,"z":8.5068,"label":"Downy_Mildew","split":"val","index":905},{"x":16.9681,"y":5.0307,"z":9.2163,"label":"Downy_Mildew","split":"train","index":906},{"x":17.7552,"y":5.1839,"z":8.0423,"label":"Downy_Mildew","split":"test","index":907},{"x":17.0247,"y":5.4246,"z":8.3876,"label":"Downy_Mildew","split":"train","index":908},{"x":9.8244,"y":-1.4583,"z":1.4986,"label":"Downy_Mildew","split":"test","index":909},{"x":16.8981,"y":7.3166,"z":2.0769,"label":"Downy_Mildew","split":"train","index":910},{"x":17.2503,"y":6.074,"z":7.6907,"label":"Downy_Mildew","split":"train","index":911},{"x":13.2249,"y":1.5025,"z":-1.7558,"label":"Downy_Mildew","split":"train","index":912},{"x":16.8674,"y":5.3489,"z":9.0699,"label":"Downy_Mildew","split":"train","index":913},{"x":18.1194,"y":6.3814,"z":10.6229,"label":"Downy_Mildew","split":"train","index":914},{"x":9.8199,"y":-1.4702,"z":1.4734,"label":"Downy_Mildew","split":"val","index":915},{"x":17.7598,"y":5.4728,"z":8.7754,"label":"Downy_Mildew","split":"train","index":916},{"x":17.1981,"y":5.4011,"z":8.3287,"label":"Downy_Mildew","split":"train","index":917},{"x":16.2886,"y":5.2815,"z":9.5127,"label":"Downy_Mildew","split":"test","index":918},{"x":18.0731,"y":6.3629,"z":10.5615,"label":"Downy_Mildew","split":"train","index":919},{"x":17.5662,"y":5.4275,"z":8.904,"label":"Downy_Mildew","split":"train","index":920},{"x":17.6441,"y":4.63,"z":8.5825,"label":"Downy_Mildew","split":"train","index":921},{"x":16.2767,"y":6.8383,"z":1.4382,"label":"Downy_Mildew","split":"test","index":922},{"x":13.0975,"y":1.4522,"z":-1.4797,"label":"Downy_Mildew","split":"train","index":923},{"x":17.3423,"y":5.8313,"z":8.2442,"label":"Downy_Mildew","split":"train","index":924},{"x":18.0502,"y":5.8643,"z":9.1981,"label":"Downy_Mildew","split":"test","index":925},{"x":13.6231,"y":1.5308,"z":-1.9496,"label":"Downy_Mildew","split":"val","index":926},{"x":17.7598,"y":6.0017,"z":7.9048,"label":"Downy_Mildew","split":"train","index":927},{"x":18.4272,"y":6.1799,"z":11.0325,"label":"Downy_Mildew","split":"train","index":928},{"x":17.1521,"y":5.298,"z":9.5329,"label":"Downy_Mildew","split":"train","index":929},{"x":17.8016,"y":5.5714,"z":9.4098,"label":"Downy_Mildew","split":"train","index":930},{"x":13.1113,"y":1.4831,"z":-1.4877,"label":"Downy_Mildew","split":"train","index":931},{"x":16.5526,"y":4.7601,"z":8.6934,"label":"Downy_Mildew","split":"test","index":932},{"x":17.3719,"y":4.3437,"z":8.7167,"label":"Downy_Mildew","split":"train","index":933},{"x":16.7256,"y":5.1937,"z":9.5964,"label":"Downy_Mildew","split":"train","index":934},{"x":13.3585,"y":1.6392,"z":-1.247,"label":"Downy_Mildew","split":"train","index":935},{"x":18.4769,"y":6.0482,"z":10.8965,"label":"Downy_Mildew","split":"val","index":936},{"x":17.8023,"y":5.7798,"z":8.9582,"label":"Downy_Mildew","split":"train","index":937},{"x":17.862,"y":5.9519,"z":7.9392,"label":"Downy_Mildew","split":"train","index":938},{"x":13.6192,"y":1.507,"z":-1.9087,"label":"Downy_Mildew","split":"test","index":939},{"x":16.5377,"y":4.8696,"z":8.8916,"label":"Downy_Mildew","split":"train","index":940},{"x":17.23,"y":4.465,"z":8.4781,"label":"Downy_Mildew","split":"train","index":941},{"x":13.4101,"y":1.6373,"z":-1.3057,"label":"Downy_Mildew","split":"train","index":942},{"x":16.278,"y":5.302,"z":9.5149,"label":"Downy_Mildew","split":"train","index":943},{"x":16.8427,"y":7.3137,"z":2.0236,"label":"Downy_Mildew","split":"train","index":944},{"x":16.3589,"y":5.2783,"z":9.5932,"label":"Downy_Mildew","split":"train","index":945},{"x":16.6821,"y":7.4513,"z":1.8442,"label":"Downy_Mildew","split":"val","index":946},{"x":18.168,"y":5.7938,"z":10.2686,"label":"Downy_Mildew","split":"val","index":947},{"x":16.3481,"y":5.2515,"z":9.3723,"label":"Downy_Mildew","split":"train","index":948},{"x":17.2884,"y":5.3403,"z":9.4484,"label":"Downy_Mildew","split":"train","index":949},{"x":4.8639,"y":-3.9617,"z":7.9571,"label":"Healthy","split":"train","index":950},{"x":5.5712,"y":-3.8721,"z":7.2609,"label":"Healthy","split":"train","index":951},{"x":4.0799,"y":-4.1242,"z":8.5193,"label":"Healthy","split":"train","index":952},{"x":4.1537,"y":-4.27,"z":7.8263,"label":"Healthy","split":"train","index":953},{"x":5.2783,"y":-3.9003,"z":7.0972,"label":"Healthy","split":"train","index":954},{"x":4.0992,"y":-3.996,"z":8.21,"label":"Healthy","split":"train","index":955},{"x":5.4943,"y":-3.8039,"z":7.058,"label":"Healthy","split":"train","index":956},{"x":4.036,"y":-3.9195,"z":7.7885,"label":"Healthy","split":"train","index":957},{"x":4.4082,"y":-4.3847,"z":9.0073,"label":"Healthy","split":"test","index":958},{"x":4.713,"y":-3.904,"z":8.1488,"label":"Healthy","split":"train","index":959},{"x":3.9734,"y":-3.8648,"z":7.9119,"label":"Healthy","split":"train","index":960},{"x":5.4708,"y":-4.7881,"z":7.9627,"label":"Healthy","split":"train","index":961},{"x":5.5205,"y":-3.7724,"z":6.984,"label":"Healthy","split":"train","index":962},{"x":4.0778,"y":-4.2467,"z":7.8768,"label":"Healthy","split":"val","index":963},{"x":5.25,"y":-4.6864,"z":7.5738,"label":"Healthy","split":"train","index":964},{"x":5.1818,"y":-4.5373,"z":7.6028,"label":"Healthy","split":"test","index":965},{"x":5.6203,"y":-3.9134,"z":7.0888,"label":"Healthy","split":"val","index":966},{"x":3.8803,"y":-4.0068,"z":8.4669,"label":"Healthy","split":"train","index":967},{"x":5.3479,"y":-4.3439,"z":7.2075,"label":"Healthy","split":"test","index":968},{"x":3.8953,"y":-4.1088,"z":8.9511,"label":"Healthy","split":"test","index":969},{"x":4.2168,"y":-3.97,"z":7.7929,"label":"Healthy","split":"val","index":970},{"x":5.3394,"y":-4.6358,"z":7.5579,"label":"Healthy","split":"train","index":971},{"x":5.0798,"y":-3.9178,"z":7.4274,"label":"Healthy","split":"train","index":972},{"x":3.8674,"y":-4.092,"z":8.9704,"label":"Healthy","split":"val","index":973},{"x":5.3096,"y":-4.5491,"z":7.3938,"label":"Healthy","split":"train","index":974},{"x":5.5964,"y":-4.7081,"z":7.5906,"label":"Healthy","split":"train","index":975},{"x":4.6798,"y":-4.5428,"z":8.7469,"label":"Healthy","split":"val","index":976},{"x":4.0336,"y":-4.2277,"z":8.4787,"label":"Healthy","split":"train","index":977},{"x":3.9986,"y":-3.9757,"z":7.7435,"label":"Healthy","split":"train","index":978},{"x":5.4167,"y":-3.8552,"z":7.0397,"label":"Healthy","split":"train","index":979},{"x":5.7689,"y":-4.6147,"z":7.3111,"label":"Healthy","split":"train","index":980},{"x":3.9976,"y":-3.9638,"z":7.8479,"label":"Healthy","split":"train","index":981},{"x":5.6447,"y":-3.8135,"z":7.5275,"label":"Healthy","split":"val","index":982},{"x":5.8985,"y":-5.1378,"z":7.4351,"label":"Healthy","split":"val","index":983},{"x":3.999,"y":-3.9366,"z":8.0968,"label":"Healthy","split":"train","index":984},{"x":5.6069,"y":-3.7967,"z":7.445,"label":"Healthy","split":"train","index":985},{"x":4.2893,"y":-4.0758,"z":9.0,"label":"Healthy","split":"train","index":986},{"x":3.8142,"y":-4.1163,"z":9.0035,"label":"Healthy","split":"train","index":987},{"x":5.5744,"y":-3.9737,"z":7.783,"label":"Healthy","split":"train","index":988},{"x":5.5463,"y":-4.0715,"z":7.7742,"label":"Healthy","split":"train","index":989},{"x":4.0855,"y":-3.9613,"z":7.7299,"label":"Healthy","split":"val","index":990},{"x":5.5742,"y":-3.8096,"z":7.3746,"label":"Healthy","split":"train","index":991},{"x":5.3423,"y":-3.9116,"z":7.9436,"label":"Healthy","split":"val","index":992},{"x":3.8968,"y":-4.0834,"z":8.5261,"label":"Healthy","split":"train","index":993},{"x":4.323,"y":-4.5808,"z":8.4922,"label":"Healthy","split":"val","index":994},{"x":3.8875,"y":-4.1133,"z":8.2784,"label":"Healthy","split":"train","index":995},{"x":4.0409,"y":-4.279,"z":7.9523,"label":"Healthy","split":"train","index":996},{"x":5.2354,"y":-4.5876,"z":7.5201,"label":"Healthy","split":"val","index":997},{"x":5.6393,"y":-4.0031,"z":6.9828,"label":"Healthy","split":"train","index":998},{"x":3.8048,"y":-4.0787,"z":8.9477,"label":"Healthy","split":"train","index":999},{"x":5.3677,"y":-4.5245,"z":7.3413,"label":"Healthy","split":"val","index":1000},{"x":5.8645,"y":-5.0851,"z":7.4023,"label":"Healthy","split":"train","index":1001},{"x":3.8807,"y":-4.1232,"z":8.968,"label":"Healthy","split":"train","index":1002},{"x":4.1106,"y":-3.9657,"z":7.9011,"label":"Healthy","split":"train","index":1003},{"x":5.4547,"y":-4.6859,"z":8.0866,"label":"Healthy","split":"test","index":1004},{"x":5.3291,"y":-4.652,"z":7.4717,"label":"Healthy","split":"train","index":1005},{"x":4.8779,"y":-4.3522,"z":7.7939,"label":"Healthy","split":"train","index":1006},{"x":5.605,"y":-4.4888,"z":7.2477,"label":"Healthy","split":"train","index":1007},{"x":4.2498,"y":-4.0143,"z":8.2029,"label":"Healthy","split":"test","index":1008},{"x":3.9728,"y":-3.9907,"z":8.5234,"label":"Healthy","split":"test","index":1009},{"x":5.5307,"y":-4.7731,"z":7.8002,"label":"Healthy","split":"val","index":1010},{"x":5.4402,"y":-3.9207,"z":7.1788,"label":"Healthy","split":"train","index":1011},{"x":4.0825,"y":-4.2736,"z":8.4794,"label":"Healthy","split":"train","index":1012},{"x":4.4698,"y":-4.14,"z":7.8134,"label":"Healthy","split":"train","index":1013},{"x":4.7232,"y":-3.8763,"z":8.2575,"label":"Healthy","split":"test","index":1014},{"x":4.9695,"y":-3.9125,"z":7.5124,"label":"Healthy","split":"test","index":1015},{"x":3.927,"y":-3.9501,"z":8.3357,"label":"Healthy","split":"train","index":1016},{"x":4.1118,"y":-4.3961,"z":7.982,"label":"Healthy","split":"val","index":1017},{"x":5.2852,"y":-3.9913,"z":7.192,"label":"Healthy","split":"val","index":1018},{"x":4.2525,"y":-4.3972,"z":8.7612,"label":"Healthy","split":"train","index":1019},{"x":5.106,"y":-4.0115,"z":7.5836,"label":"Healthy","split":"train","index":1020},{"x":5.0019,"y":-3.9641,"z":7.6321,"label":"Healthy","split":"train","index":1021},{"x":4.1746,"y":-4.1457,"z":8.5277,"label":"Healthy","split":"test","index":1022},{"x":5.0343,"y":-3.9248,"z":7.1239,"label":"Healthy","split":"train","index":1023},{"x":3.9709,"y":-4.2601,"z":8.2304,"label":"Healthy","split":"train","index":1024},{"x":5.2914,"y":-4.6928,"z":7.5609,"label":"Healthy","split":"train","index":1025},{"x":4.0872,"y":-4.353,"z":7.9814,"label":"Healthy","split":"train","index":1026},{"x":3.9806,"y":-3.9137,"z":7.8154,"label":"Healthy","split":"train","index":1027},{"x":5.4126,"y":-4.0312,"z":7.7462,"label":"Healthy","split":"train","index":1028},{"x":4.4184,"y":-4.2879,"z":7.9186,"label":"Healthy","split":"train","index":1029},{"x":3.9556,"y":-3.9501,"z":8.4149,"label":"Healthy","split":"train","index":1030},{"x":5.2742,"y":-4.1738,"z":7.2377,"label":"Healthy","split":"train","index":1031},{"x":4.1619,"y":-3.9448,"z":8.8159,"label":"Healthy","split":"train","index":1032},{"x":3.8093,"y":-4.082,"z":8.8907,"label":"Healthy","split":"train","index":1033},{"x":5.5905,"y":-4.028,"z":8.1492,"label":"Healthy","split":"train","index":1034},{"x":5.4766,"y":-3.7477,"z":7.0132,"label":"Healthy","split":"val","index":1035},{"x":5.6945,"y":-3.9364,"z":6.8959,"label":"Healthy","split":"train","index":1036},{"x":5.7484,"y":-4.8753,"z":7.3098,"label":"Healthy","split":"train","index":1037},{"x":4.0294,"y":-3.931,"z":8.5475,"label":"Healthy","split":"train","index":1038},{"x":5.514,"y":-3.9605,"z":7.8855,"label":"Healthy","split":"test","index":1039},{"x":3.851,"y":-4.1225,"z":8.385,"label":"Healthy","split":"train","index":1040},{"x":5.6001,"y":-3.8293,"z":7.1922,"label":"Healthy","split":"train","index":1041},{"x":4.5572,"y":-4.2817,"z":7.9305,"label":"Healthy","split":"train","index":1042},{"x":5.6574,"y":-4.6624,"z":7.365,"label":"Healthy","split":"test","index":1043},{"x":4.81,"y":-4.5263,"z":7.8086,"label":"Healthy","split":"train","index":1044},{"x":4.3611,"y":-4.469,"z":8.1589,"label":"Healthy","split":"train","index":1045},{"x":4.4277,"y":-4.6257,"z":8.616,"label":"Healthy","split":"train","index":1046},{"x":4.825,"y":-4.2316,"z":7.7358,"label":"Healthy","split":"train","index":1047},{"x":4.0586,"y":-4.4657,"z":8.2118,"label":"Healthy","split":"train","index":1048},{"x":4.2992,"y":-4.0982,"z":8.2745,"label":"Healthy","split":"test","index":1049},{"x":5.0237,"y":-4.3523,"z":8.5826,"label":"Healthy","split":"train","index":1050},{"x":5.555,"y":-3.9932,"z":8.1564,"label":"Healthy","split":"train","index":1051},{"x":4.0604,"y":-4.4207,"z":8.323,"label":"Healthy","split":"train","index":1052},{"x":5.5571,"y":-4.1227,"z":8.3116,"label":"Healthy","split":"train","index":1053},{"x":4.4782,"y":-4.3898,"z":8.8816,"label":"Healthy","split":"train","index":1054},{"x":5.3749,"y":-4.4826,"z":7.3757,"label":"Healthy","split":"test","index":1055},{"x":5.8774,"y":-5.1251,"z":7.4235,"label":"Healthy","split":"train","index":1056},{"x":4.2503,"y":-4.0297,"z":8.558,"label":"Healthy","split":"train","index":1057},{"x":4.0876,"y":-4.2978,"z":8.5966,"label":"Healthy","split":"test","index":1058},{"x":4.1867,"y":-4.067,"z":9.001,"label":"Healthy","split":"val","index":1059},{"x":5.4413,"y":-4.4547,"z":8.4275,"label":"Healthy","split":"train","index":1060},{"x":5.5104,"y":-4.3022,"z":8.2792,"label":"Healthy","split":"train","index":1061},{"x":3.9889,"y":-3.9615,"z":8.7039,"label":"Healthy","split":"train","index":1062},{"x":5.5609,"y":-4.4883,"z":8.3327,"label":"Healthy","split":"train","index":1063},{"x":5.0556,"y":-4.6401,"z":8.4632,"label":"Healthy","split":"train","index":1064},{"x":4.329,"y":-4.4425,"z":8.7463,"label":"Healthy","split":"train","index":1065},{"x":5.4158,"y":-4.6348,"z":8.2707,"label":"Healthy","split":"train","index":1066},{"x":4.504,"y":-4.0548,"z":8.149,"label":"Healthy","split":"val","index":1067},{"x":5.3175,"y":-4.6361,"z":8.4448,"label":"Healthy","split":"train","index":1068},{"x":5.9095,"y":-5.1698,"z":7.4471,"label":"Healthy","split":"val","index":1069},{"x":5.6046,"y":-4.6511,"z":8.0797,"label":"Healthy","split":"test","index":1070},{"x":4.0572,"y":-3.9978,"z":8.2126,"label":"Healthy","split":"val","index":1071},{"x":5.5269,"y":-4.1425,"z":7.7327,"label":"Healthy","split":"train","index":1072},{"x":5.4578,"y":-4.05,"z":7.8513,"label":"Healthy","split":"train","index":1073},{"x":3.8671,"y":-4.1338,"z":9.0251,"label":"Healthy","split":"val","index":1074},{"x":5.911,"y":-5.1659,"z":7.4513,"label":"Healthy","split":"train","index":1075},{"x":4.3328,"y":-4.2789,"z":8.3567,"label":"Healthy","split":"train","index":1076},{"x":5.3952,"y":-4.597,"z":8.4447,"label":"Healthy","split":"train","index":1077},{"x":4.0209,"y":-3.9078,"z":7.8491,"label":"Healthy","split":"val","index":1078},{"x":5.5149,"y":-4.7355,"z":7.4373,"label":"Healthy","split":"train","index":1079},{"x":4.4458,"y":-4.261,"z":8.9177,"label":"Healthy","split":"train","index":1080},{"x":4.1353,"y":-4.3219,"z":8.9789,"label":"Healthy","split":"train","index":1081},{"x":4.2198,"y":-3.9628,"z":8.4558,"label":"Healthy","split":"test","index":1082},{"x":5.2756,"y":-4.7586,"z":8.2166,"label":"Healthy","split":"val","index":1083},{"x":5.3987,"y":-4.611,"z":8.3832,"label":"Healthy","split":"train","index":1084},{"x":5.3772,"y":-4.6192,"z":8.4528,"label":"Healthy","split":"test","index":1085},{"x":5.5689,"y":-3.7068,"z":6.9285,"label":"Healthy","split":"train","index":1086},{"x":5.3559,"y":-4.5838,"z":8.4687,"label":"Healthy","split":"test","index":1087},{"x":4.6019,"y":-4.2878,"z":7.8797,"label":"Healthy","split":"train","index":1088},{"x":4.1662,"y":-4.4118,"z":8.803,"label":"Healthy","split":"train","index":1089},{"x":4.8506,"y":-3.9773,"z":7.9492,"label":"Healthy","split":"test","index":1090},{"x":4.6374,"y":-4.6054,"z":8.5711,"label":"Healthy","split":"train","index":1091},{"x":4.1918,"y":-4.04,"z":8.675,"label":"Healthy","split":"test","index":1092},{"x":4.933,"y":-3.9722,"z":7.8523,"label":"Healthy","split":"train","index":1093},{"x":4.3649,"y":-4.4543,"z":8.9656,"label":"Healthy","split":"train","index":1094},{"x":4.7859,"y":-4.2513,"z":8.8076,"label":"Healthy","split":"train","index":1095},{"x":5.2604,"y":-4.602,"z":8.4395,"label":"Healthy","split":"train","index":1096},{"x":4.2639,"y":-4.3577,"z":8.8023,"label":"Healthy","split":"train","index":1097},{"x":4.0224,"y":-4.2901,"z":8.2391,"label":"Healthy","split":"val","index":1098},{"x":5.1257,"y":-4.502,"z":8.116,"label":"Healthy","split":"test","index":1099},{"x":5.2812,"y":-4.4485,"z":7.5663,"label":"Healthy","split":"train","index":1100},{"x":4.5611,"y":-4.6048,"z":8.6497,"label":"Healthy","split":"train","index":1101},{"x":5.4141,"y":-4.5951,"z":8.4693,"label":"Healthy","split":"train","index":1102},{"x":5.9248,"y":-5.185,"z":7.4587,"label":"Healthy","split":"train","index":1103},{"x":5.6769,"y":-4.745,"z":7.6168,"label":"Healthy","split":"test","index":1104},{"x":3.8519,"y":-4.0409,"z":8.3447,"label":"Healthy","split":"test","index":1105},{"x":4.3147,"y":-3.862,"z":8.5567,"label":"Healthy","split":"val","index":1106},{"x":5.5029,"y":-4.6306,"z":8.0502,"label":"Healthy","split":"test","index":1107},{"x":4.998,"y":-4.6538,"z":8.6498,"label":"Healthy","split":"train","index":1108},{"x":4.848,"y":-4.6717,"z":8.6489,"label":"Healthy","split":"train","index":1109},{"x":4.2893,"y":-4.0198,"z":9.0235,"label":"Healthy","split":"train","index":1110},{"x":5.5952,"y":-3.9939,"z":8.1768,"label":"Healthy","split":"train","index":1111},{"x":5.5809,"y":-4.1864,"z":7.9919,"label":"Healthy","split":"test","index":1112},{"x":5.1377,"y":-4.5424,"z":7.5799,"label":"Healthy","split":"test","index":1113},{"x":5.8623,"y":-5.0928,"z":7.4124,"label":"Healthy","split":"train","index":1114},{"x":3.9978,"y":-4.035,"z":8.6308,"label":"Healthy","split":"train","index":1115},{"x":4.2178,"y":-4.4962,"z":8.0797,"label":"Healthy","split":"val","index":1116},{"x":5.5945,"y":-3.9913,"z":8.2398,"label":"Healthy","split":"train","index":1117},{"x":4.8071,"y":-4.5489,"z":8.8285,"label":"Healthy","split":"val","index":1118},{"x":4.5315,"y":-4.488,"z":8.8342,"label":"Healthy","split":"train","index":1119},{"x":5.2755,"y":-4.7416,"z":8.3542,"label":"Healthy","split":"train","index":1120},{"x":5.343,"y":-3.9235,"z":7.8532,"label":"Healthy","split":"train","index":1121},{"x":5.1302,"y":-4.5201,"z":7.847,"label":"Healthy","split":"train","index":1122},{"x":4.0591,"y":-4.474,"z":8.1291,"label":"Healthy","split":"train","index":1123},{"x":4.0732,"y":-4.0708,"z":8.684,"label":"Healthy","split":"val","index":1124},{"x":4.5574,"y":-4.6312,"z":8.609,"label":"Healthy","split":"val","index":1125},{"x":4.1313,"y":-4.5081,"z":8.4298,"label":"Healthy","split":"train","index":1126},{"x":5.1933,"y":-4.6271,"z":7.6639,"label":"Healthy","split":"train","index":1127},{"x":4.8633,"y":-4.383,"z":8.6784,"label":"Healthy","split":"train","index":1128},{"x":4.5716,"y":-4.4716,"z":8.7974,"label":"Healthy","split":"train","index":1129},{"x":4.9388,"y":-3.9514,"z":7.8603,"label":"Healthy","split":"train","index":1130},{"x":4.4437,"y":-4.4542,"z":8.901,"label":"Healthy","split":"train","index":1131},{"x":4.8086,"y":-4.2632,"z":8.7569,"label":"Healthy","split":"train","index":1132},{"x":4.6442,"y":-3.8969,"z":8.2729,"label":"Healthy","split":"train","index":1133},{"x":4.1079,"y":-4.5148,"z":8.3278,"label":"Healthy","split":"train","index":1134},{"x":3.9064,"y":-4.0519,"z":8.5875,"label":"Healthy","split":"test","index":1135},{"x":5.4486,"y":-4.0874,"z":7.5945,"label":"Healthy","split":"train","index":1136},{"x":5.1395,"y":-4.5554,"z":8.562,"label":"Healthy","split":"train","index":1137},{"x":5.1972,"y":-4.6938,"z":7.6811,"label":"Healthy","split":"train","index":1138},{"x":4.5031,"y":-4.4253,"z":8.6855,"label":"Healthy","split":"train","index":1139},{"x":4.3359,"y":-4.2175,"z":8.9256,"label":"Healthy","split":"val","index":1140},{"x":5.3701,"y":-4.7289,"z":8.2946,"label":"Healthy","split":"train","index":1141},{"x":5.0616,"y":-4.4311,"z":7.6557,"label":"Healthy","split":"train","index":1142},{"x":5.2997,"y":-4.6843,"z":8.4189,"label":"Healthy","split":"train","index":1143},{"x":4.0413,"y":-3.9198,"z":7.7805,"label":"Healthy","split":"train","index":1144},{"x":5.3309,"y":-4.6525,"z":7.5244,"label":"Healthy","split":"test","index":1145},{"x":4.4413,"y":-4.282,"z":8.8101,"label":"Healthy","split":"val","index":1146},{"x":5.326,"y":-4.4427,"z":7.4617,"label":"Healthy","split":"train","index":1147},{"x":3.824,"y":-4.1499,"z":9.0614,"label":"Healthy","split":"test","index":1148},{"x":5.5096,"y":-4.4226,"z":8.3018,"label":"Healthy","split":"train","index":1149},{"x":5.5909,"y":-4.1346,"z":8.153,"label":"Healthy","split":"train","index":1150},{"x":3.8813,"y":-4.157,"z":9.0214,"label":"Healthy","split":"train","index":1151},{"x":5.9035,"y":-5.1586,"z":7.438,"label":"Healthy","split":"test","index":1152},{"x":4.3054,"y":-4.2887,"z":7.7476,"label":"Healthy","split":"train","index":1153},{"x":5.4985,"y":-4.7423,"z":8.2427,"label":"Healthy","split":"train","index":1154}]
\ No newline at end of file
diff --git a/static/data/dataset-benchmarking/results.json b/static/data/dataset-benchmarking/results.json
new file mode 100644
index 0000000..685545f
--- /dev/null
+++ b/static/data/dataset-benchmarking/results.json
@@ -0,0 +1,539 @@
+{
+ "watermelon_disease_classification": {
+ "dataset": "Project-AgML/watermelon_disease_classification",
+ "date": "2026-08-13",
+ "reproducibility": {
+ "split_seed": 42,
+ "train_ratio": 0.7,
+ "val_ratio": 0.15,
+ "test_ratio": 0.15,
+ "embed_model": "facebook/dinov2-base",
+ "near_dup_threshold": 0.98,
+ "backbone": "resnet18",
+ "cartography_epochs": 30,
+ "cartography_lr": 0.001,
+ "cv_folds": 5
+ },
+ "phases_completed": [
+ 1,
+ 2,
+ 3
+ ],
+ "metrics": {
+ "class_imbalance": {
+ "counts": {
+ "Anthracnose": 109,
+ "Downy_Mildew": 266,
+ "Healthy": 143,
+ "Mosaic_Virus": 290
+ },
+ "imbalance_ratio": 2.6606,
+ "normalized_entropy": 0.9452,
+ "most_frequent_class": "Mosaic_Virus",
+ "least_frequent_class": "Anthracnose",
+ "total_train_examples": 808
+ },
+ "exact_duplicate": {
+ "total_images": 1155,
+ "exact_duplicate_count": 0,
+ "exact_duplicate_rate": 0.0,
+ "duplicate_groups": 0,
+ "cross_split_duplicates": 0
+ },
+ "resolution_consistency": {
+ "total_images": 1155,
+ "width": {
+ "mean": 3024,
+ "std": 0.0,
+ "min": 3024,
+ "max": 3024
+ },
+ "height": {
+ "mean": 3091.2,
+ "std": 251.55,
+ "min": 3024,
+ "max": 4032
+ },
+ "aspect_ratio": {
+ "mean": 0.98,
+ "std": 0.06,
+ "min": 0.75,
+ "max": 1.0
+ },
+ "area_cv": 0.0814,
+ "mode_distribution": {
+ "RGB": 1155
+ }
+ },
+ "metadata_coverage": {
+ "skipped": true,
+ "reason": "No metadata columns detected in dataset schema."
+ },
+ "near_duplicate": {
+ "total_images": 1155,
+ "embed_model": "facebook/dinov2-base",
+ "threshold": 0.98,
+ "near_duplicate_count": 46,
+ "near_duplicate_rate": 0.0398,
+ "near_duplicate_groups": 22,
+ "cross_split_near_duplicates": 27,
+ "faiss_index_type": "IndexFlatIP"
+ },
+ "feature_separability": {
+ "embed_model": "facebook/dinov2-base",
+ "n_total": 1155,
+ "n_silhouette_samples": 1155,
+ "silhouette_score": 0.2629,
+ "silhouette_interpretation": "moderate separation",
+ "davies_bouldin_index": 1.9661,
+ "davies_bouldin_interpretation": "some overlap between clusters",
+ "per_class_silhouette": {
+ "Anthracnose": 0.6231,
+ "Downy_Mildew": 0.4447,
+ "Healthy": 0.6217,
+ "Mosaic_Virus": -0.2152
+ }
+ },
+ "intra_class_diversity": {
+ "embed_model": "facebook/dinov2-base",
+ "per_class_diversity": {
+ "Anthracnose": 0.5802,
+ "Downy_Mildew": 0.3971,
+ "Healthy": 0.3354,
+ "Mosaic_Virus": 0.5747
+ },
+ "mean_diversity": 0.4718,
+ "min_diversity_class": "Healthy",
+ "max_diversity_class": "Anthracnose"
+ },
+ "dataset_cartography": {
+ "n_easy": 750,
+ "n_ambiguous": 58,
+ "n_hard": 0,
+ "pct_easy": 92.82,
+ "pct_ambiguous": 7.18,
+ "pct_hard": 0.0,
+ "mean_confidence": 0.9938,
+ "mean_variability": 0.0243,
+ "easy_threshold": 0.7,
+ "hard_threshold": 0.3,
+ "variability_threshold": 0.1,
+ "n_epochs": 30
+ },
+ "class_confusability": {
+ "accuracy": 1.0,
+ "per_class_accuracy": {
+ "Anthracnose": 1.0,
+ "Downy_Mildew": 1.0,
+ "Healthy": 1.0,
+ "Mosaic_Virus": 1.0
+ },
+ "confusion_matrix": [
+ [1.0, 0.0, 0.0, 0.0],
+ [0.0, 1.0, 0.0, 0.0],
+ [0.0, 0.0, 1.0, 0.0],
+ [0.0, 0.0, 0.0, 1.0]
+ ],
+ "top_confused_pairs": [],
+ "n_top_pairs": 0,
+ "n_test_samples": 174
+ },
+ "label_noise": {
+ "estimated_noise_rate": 0.0,
+ "n_noisy_samples": 0,
+ "n_total_samples": 1155,
+ "flagged_orig_indices": [],
+ "per_class_noise_counts": {
+ "Anthracnose": 0,
+ "Downy_Mildew": 0,
+ "Healthy": 0,
+ "Mosaic_Virus": 0
+ },
+ "cv_folds": 5
+ }
+ }
+ },
+ "rice_variety_classification_bangladesh": {
+ "dataset": "Project-AgML/rice_variety_classification_bangladesh",
+ "date": "2026-08-03",
+ "reproducibility": {
+ "split_seed": 42,
+ "train_ratio": 0.7,
+ "val_ratio": 0.15,
+ "test_ratio": 0.15,
+ "embed_model": "facebook/dinov2-base",
+ "near_dup_threshold": 0.98
+ },
+ "phases_completed": [1, 2],
+ "metrics": {
+ "class_imbalance": {
+ "counts": {
+ "BD30": 350,
+ "BD33": 350,
+ "BD39": 350,
+ "BD49": 350,
+ "BD51": 350,
+ "BD52": 350,
+ "BD56": 350,
+ "BD57": 350,
+ "BD70": 350,
+ "BD72": 350,
+ "BD75": 350,
+ "BD76": 350,
+ "BD79": 350,
+ "BD85": 350,
+ "BD87": 350,
+ "BD91": 350,
+ "BD93": 350,
+ "BD95": 350,
+ "BR22": 350,
+ "BR23": 350,
+ "BRRI102": 350,
+ "BRRI67": 350,
+ "BRRI74": 350,
+ "Binadhan10": 350,
+ "Binadhan11": 350,
+ "Binadhan12": 350,
+ "Binadhan14": 350,
+ "Binadhan16": 350,
+ "Binadhan17": 350,
+ "Binadhan19": 350,
+ "Binadhan20": 350,
+ "Binadhan21": 350,
+ "Binadhan23": 350,
+ "Binadhan24": 350,
+ "Binadhan25": 349,
+ "Binadhan26": 350,
+ "Binadhan7": 350,
+ "Binadhan8": 350
+ },
+ "imbalance_ratio": 1.0029,
+ "normalized_entropy": 1.0,
+ "most_frequent_class": "BD30",
+ "least_frequent_class": "Binadhan25",
+ "total_train_examples": 13299
+ },
+ "exact_duplicate": {
+ "total_images": 19000,
+ "exact_duplicate_count": 0,
+ "exact_duplicate_rate": 0.0,
+ "duplicate_groups": 0,
+ "cross_split_duplicates": 0
+ },
+ "resolution_consistency": {
+ "total_images": 19000,
+ "width": {
+ "mean": 640,
+ "std": 0.0,
+ "min": 640,
+ "max": 640
+ },
+ "height": {
+ "mean": 480,
+ "std": 0.0,
+ "min": 480,
+ "max": 480
+ },
+ "aspect_ratio": {
+ "mean": 1.33,
+ "std": 0.0,
+ "min": 1.3333333333333333,
+ "max": 1.3333333333333333
+ },
+ "area_cv": 0.0,
+ "mode_distribution": {
+ "RGBA": 7500,
+ "RGB": 11500
+ }
+ },
+ "metadata_coverage": {
+ "skipped": true,
+ "reason": "No metadata columns detected in dataset schema."
+ },
+ "near_duplicate": {
+ "total_images": 19000,
+ "embed_model": "facebook/dinov2-base",
+ "threshold": 0.98,
+ "near_duplicate_count": 36,
+ "near_duplicate_rate": 0.0019,
+ "near_duplicate_groups": 18,
+ "cross_split_near_duplicates": 20,
+ "faiss_index_type": "IndexFlatIP"
+ },
+ "feature_separability": {
+ "embed_model": "facebook/dinov2-base",
+ "n_total": 19000,
+ "n_silhouette_samples": 9994,
+ "silhouette_score": -0.0172,
+ "silhouette_interpretation": "overlapping or no separation",
+ "davies_bouldin_index": 6.277,
+ "davies_bouldin_interpretation": "high overlap — classes not well-separated",
+ "per_class_silhouette": {
+ "BD30": -0.0048,
+ "BD33": -0.0348,
+ "BD39": 0.0449,
+ "BD49": -0.0861,
+ "BD51": -0.0316,
+ "BD52": -0.0291,
+ "BD56": -0.0434,
+ "BD57": -0.0479,
+ "BD70": -0.0623,
+ "BD72": 0.0167,
+ "BD75": -0.0805,
+ "BD76": 0.0543,
+ "BD79": -0.0197,
+ "BD85": -0.1005,
+ "BD87": 0.0829,
+ "BD91": -0.0505,
+ "BD93": -0.0357,
+ "BD95": -0.1184,
+ "BR22": 0.0376,
+ "BR23": 0.0062,
+ "BRRI102": -0.079,
+ "BRRI67": -0.0374,
+ "BRRI74": 0.0222,
+ "Binadhan10": 0.0131,
+ "Binadhan11": 0.0264,
+ "Binadhan12": -0.0271,
+ "Binadhan14": -0.0819,
+ "Binadhan16": -0.0121,
+ "Binadhan17": -0.0136,
+ "Binadhan19": -0.0176,
+ "Binadhan20": 0.2056,
+ "Binadhan21": -0.036,
+ "Binadhan23": -0.0188,
+ "Binadhan24": -0.0521,
+ "Binadhan25": -0.0142,
+ "Binadhan26": -0.0373,
+ "Binadhan7": 0.0181,
+ "Binadhan8": -0.009
+ }
+ },
+ "intra_class_diversity": {
+ "embed_model": "facebook/dinov2-base",
+ "per_class_diversity": {
+ "BD30": 0.4799,
+ "BD33": 0.5027,
+ "BD39": 0.492,
+ "BD49": 0.516,
+ "BD51": 0.4809,
+ "BD52": 0.4774,
+ "BD56": 0.4863,
+ "BD57": 0.4993,
+ "BD70": 0.5314,
+ "BD72": 0.4583,
+ "BD75": 0.5077,
+ "BD76": 0.4541,
+ "BD79": 0.4732,
+ "BD85": 0.5212,
+ "BD87": 0.4587,
+ "BD91": 0.4851,
+ "BD93": 0.4751,
+ "BD95": 0.5115,
+ "BR22": 0.4446,
+ "BR23": 0.4636,
+ "BRRI102": 0.5574,
+ "BRRI67": 0.5032,
+ "BRRI74": 0.4858,
+ "Binadhan10": 0.4951,
+ "Binadhan11": 0.4708,
+ "Binadhan12": 0.4991,
+ "Binadhan14": 0.5032,
+ "Binadhan16": 0.488,
+ "Binadhan17": 0.4875,
+ "Binadhan19": 0.4997,
+ "Binadhan20": 0.523,
+ "Binadhan21": 0.4837,
+ "Binadhan23": 0.4981,
+ "Binadhan24": 0.507,
+ "Binadhan25": 0.519,
+ "Binadhan26": 0.4948,
+ "Binadhan7": 0.4746,
+ "Binadhan8": 0.511
+ },
+ "mean_diversity": 0.4926,
+ "min_diversity_class": "BR22",
+ "max_diversity_class": "BRRI102"
+ }
+ }
+ },
+ "ACHENY_variety_classification": {
+ "dataset": "Project-AgML/ACHENY_variety_classification",
+ "date": "2026-08-03",
+ "reproducibility": {
+ "split_seed": 42,
+ "train_ratio": 0.7,
+ "val_ratio": 0.15,
+ "test_ratio": 0.15,
+ "embed_model": "facebook/dinov2-base",
+ "near_dup_threshold": 0.98
+ },
+ "phases_completed": [1, 2],
+ "metrics": {
+ "class_imbalance": {
+ "counts": {
+ "AnaHau": 538,
+ "AnaSet": 897,
+ "AtrCan": 505,
+ "AtrLen": 936,
+ "AtrLeu": 440,
+ "CerAre": 565,
+ "CheAlb": 456,
+ "CorMon": 769,
+ "GirOpp": 217,
+ "HalAmm": 650,
+ "HalBel": 440,
+ "HalPer": 812,
+ "HalStr": 594,
+ "HalSub": 677,
+ "HamSal": 834,
+ "KocSco": 637,
+ "KocSte": 596,
+ "SalAba": 513,
+ "SalDen": 1023,
+ "SalInc": 812,
+ "SalKal": 210,
+ "SalKer": 633,
+ "SalPra": 650,
+ "SalTom": 678,
+ "SalTur": 685,
+ "SalYaz": 734,
+ "SeiCin": 385,
+ "SeiRos": 700,
+ "SuaAcu": 820,
+ "SuaAeg": 514
+ },
+ "imbalance_ratio": 4.8714,
+ "normalized_entropy": 0.9857,
+ "most_frequent_class": "SalDen",
+ "least_frequent_class": "SalKal",
+ "total_train_examples": 18920
+ },
+ "exact_duplicate": {
+ "total_images": 27030,
+ "exact_duplicate_count": 0,
+ "exact_duplicate_rate": 0.0,
+ "duplicate_groups": 0,
+ "cross_split_duplicates": 0
+ },
+ "resolution_consistency": {
+ "total_images": 27030,
+ "width": {
+ "mean": 224,
+ "std": 0.0,
+ "min": 224,
+ "max": 224
+ },
+ "height": {
+ "mean": 224,
+ "std": 0.0,
+ "min": 224,
+ "max": 224
+ },
+ "aspect_ratio": {
+ "mean": 1.0,
+ "std": 0.0,
+ "min": 1.0,
+ "max": 1.0
+ },
+ "area_cv": 0.0,
+ "mode_distribution": {
+ "RGB": 27030
+ }
+ },
+ "metadata_coverage": {
+ "skipped": true,
+ "reason": "No metadata columns detected in dataset schema."
+ },
+ "near_duplicate": {
+ "total_images": 27030,
+ "embed_model": "facebook/dinov2-base",
+ "threshold": 0.98,
+ "near_duplicate_count": 8,
+ "near_duplicate_rate": 0.0003,
+ "near_duplicate_groups": 4,
+ "cross_split_near_duplicates": 6,
+ "faiss_index_type": "IndexFlatIP"
+ },
+ "feature_separability": {
+ "embed_model": "facebook/dinov2-base",
+ "n_total": 27030,
+ "n_silhouette_samples": 10000,
+ "silhouette_score": 0.0851,
+ "silhouette_interpretation": "weak separation",
+ "davies_bouldin_index": 2.9768,
+ "davies_bouldin_interpretation": "high overlap — classes not well-separated",
+ "per_class_silhouette": {
+ "AnaHau": 0.1234,
+ "AnaSet": 0.2493,
+ "AtrCan": 0.0097,
+ "AtrLen": 0.0487,
+ "AtrLeu": 0.0222,
+ "CerAre": 0.3038,
+ "CheAlb": 0.1869,
+ "CorMon": 0.1051,
+ "GirOpp": 0.221,
+ "HalAmm": 0.0616,
+ "HalBel": 0.2117,
+ "HalPer": 0.0156,
+ "HalStr": 0.2143,
+ "HalSub": -0.0415,
+ "HamSal": 0.1021,
+ "KocSco": -0.0639,
+ "KocSte": 0.203,
+ "SalAba": -0.0611,
+ "SalDen": -0.0028,
+ "SalInc": -0.0389,
+ "SalKal": 0.0784,
+ "SalKer": 0.0476,
+ "SalPra": 0.3901,
+ "SalTom": 0.2113,
+ "SalTur": -0.0844,
+ "SalYaz": 0.0653,
+ "SeiCin": 0.0781,
+ "SeiRos": 0.0033,
+ "SuaAcu": 0.0433,
+ "SuaAeg": 0.0561
+ }
+ },
+ "intra_class_diversity": {
+ "embed_model": "facebook/dinov2-base",
+ "per_class_diversity": {
+ "AnaHau": 0.5733,
+ "AnaSet": 0.5439,
+ "AtrCan": 0.6505,
+ "AtrLen": 0.631,
+ "AtrLeu": 0.5972,
+ "CerAre": 0.5711,
+ "CheAlb": 0.7238,
+ "CorMon": 0.5252,
+ "GirOpp": 0.5125,
+ "HalAmm": 0.6213,
+ "HalBel": 0.5918,
+ "HalPer": 0.5619,
+ "HalStr": 0.6569,
+ "HalSub": 0.5981,
+ "HamSal": 0.5068,
+ "KocSco": 0.6997,
+ "KocSte": 0.5007,
+ "SalAba": 0.624,
+ "SalDen": 0.5772,
+ "SalInc": 0.6843,
+ "SalKal": 0.6593,
+ "SalKer": 0.5971,
+ "SalPra": 0.5797,
+ "SalTom": 0.5858,
+ "SalTur": 0.7058,
+ "SalYaz": 0.512,
+ "SeiCin": 0.6223,
+ "SeiRos": 0.5881,
+ "SuaAcu": 0.6384,
+ "SuaAeg": 0.5694
+ },
+ "mean_diversity": 0.6003,
+ "min_diversity_class": "KocSte",
+ "max_diversity_class": "CheAlb"
+ }
+ }
+ }
+}
diff --git a/static/data/datasets.json b/static/data/datasets.json
index e208a53..4f90191 100644
--- a/static/data/datasets.json
+++ b/static/data/datasets.json
@@ -124334,7 +124334,7 @@
"machine_learning_task": "image_classification",
"agricultural_task": "papaya_leaf_disease_classification",
"location": "Bangladesh, Asia",
- "sensor_modality": "RGB",
+ "sensor_modality": "rgb",
"real_or_synthetic": "real",
"platform": "uav",
"input_data_format": "JPG",
@@ -124357,7 +124357,7 @@
"machine_learning_task": "object_detection",
"agricultural_task": "None",
"location": "None",
- "sensor_modality": "RGB",
+ "sensor_modality": "rgb",
"real_or_synthetic": "real",
"platform": "None",
"input_data_format": "jpg",
diff --git a/static/data/embeddings/meta.json b/static/data/embeddings/meta.json
index 659db51..8e3c660 100644
--- a/static/data/embeddings/meta.json
+++ b/static/data/embeddings/meta.json
@@ -1 +1 @@
-{"model":"Xenova/all-MiniLM-L6-v2","dtype":"q8","dim":384,"count":6186,"generatedAt":"2026-08-13T21:12:32.257Z","contentHash":"76622341623868a7bc0d190d32903679db7d867258274f727bd5369cd2928077","names":["ACHENY_variety_classification","african_plum_grading_classification","AFruitDB_fruit_grade_classification","agarwood_leaf_disease_classification","AgriVision4_disease_classification","almond_bloom_2023","almond_harvest_2021","apple_detection_drone_brazil","apple_detection_spain","apple_detection_usa","apple_flower_segmentation","apple_leaf_disease_classification","apple_segmentation_minnesota","arabica_coffee_leaf_disease_classification","ash_gourd_disease_classification","autonomous_greenhouse_regression","bacterial_grain_rot_classification","banana_bunch_detection","banana_bunch_maturity_classification_classification","banana_grade_variety_classification","banana_guava_quality_classification","banana_leaf_disease_classification","banana_leaf_nutrient_classification","banana_variety_classification","BananaImageBD_ripeness_classification","BananaImageBD_variety_classification","BananaLSD_leaf_disease_classification","Basmati_rice_seed_varitey_classification","bay_leaf_disease_classification","BDHerbalPlants_variety_classification","BDMANGO_variety_classification","BDMediLeaves_variety_classification","bean_cowpea_leaf_disease_classification","bean_disease_classification_tanzania","bean_disease_uganda","bean_synthetic_earlygrowth_aerial","betel_leaf_disease_classification","betel_leaf_disease_classification_2","black_gram_disease_classification","blackgram_plant_leaf_disease_classification","BPLD_leaf_disease_classification","BrinjalFruitX_disease_classification","bruised_vegetable_classification","cabbage_instance_segmentation","carambola_disease_classification","carrot_weeds_germany","cashew_detection","cauliflower_leaf_disease_classification","centella_asiatica_leaves","chitrak_leaf_disease_classification","citrus_fruit_leaf_disease_classification","citrus_fruit_variety_classification","citrusuat_disease_classification","CocoaMFDB_detection","coconut_tree_disease_classification","coffee_bean_quality_classification","coffee_detection","CoFly-Weed-DB_weed_segmentation","COLD_chili_leaf_disease_classification","COLD_onion_leaf_disease_classification","CoLeaf_nutritional_deficiency_classification","corn_leaf_pest_classification","corn_maize_leaf_disease","cotton_leaf_disease_classification","cotton_leaf_disease_classification_bangladesh_2","cotton_weed_detection","crop_pest_disease_classification","crop_weed_detection_latvia","crop_weeds_greece","CS-D_tea_leaf_disease_classification","cucumber_disease_classification","custard_apple_disease_classification","date_cluster_detection","date_fruit_maturity_detection","date_grade_variety_classification","date_palm_leaf_disease_classification","date_palm_leaf_disease_classification_iraq","DIMPSAR_medicinal_leaf_classification","DIMPSAR_medicinal_plant_classification","dragonfruit_disease_classification","dragonfruit_maturity_classification","dragonfruit_quality_classification","durian_disease_classification","durian_disease_classification_vietnam","EfficientMaize_classification","eggplant_disease_classification","eggplant_leaf_disease_classification","embrapa_wgisd_grape_detection","ERWIAM_blight_detection","fig_leaf_ficus_worm_classification","fortunella_margarita_growth_detection","fresh_rotten_fruit_classification","fruit_detection_worldwide","fruit_leaf_variety_classification","FruitNet_quality_classification","fruitseg30_segmentation","FruitVision_quality_classification","GEMINI_cowpea_flower_detection","GEMINI_cowpea_pod_detection","gemini_flower_detection","gemini_leaf_detection","gemini_plant_detection","gemini_pod_detection","ghai_broccoli_detection","ghai_green_cabbage_detection","ghai_iceberg_lettuce_detection","ghai_romaine_detection","ghai_strawberry_fruit_detection","grape_detection_californiaday","grape_detection_californianight","grape_detection_syntheticday","grape_leaf_disease_classification","grape_variety_classification","grapevine_development_stage_classification","grapevine_disease_classification","grapevine_esca_classification","grapevine_growth_detection","greenhouse_crop_weed_classification","greenhouse_crop_weed_detection","groundnut_leaf_disease_classification","groundnut_leaf_disease_classification_2","growliflower_cauliflower_segmentation","guava_disease_classification","guava_disease_classification_bangladesh","guava_disease_pakistan","guava_maturity_classification","GYMNSA_pear_rust_detection","Hibiscus_Tea_disease_classification","hog_plum_leaf_disease_classification","ICPTC_pistachio_tree_variety_classification","IDDMSLD_spinach_leaf_disease_classification","ImageWeeds_aerial_weed_detection","ImageWeeds_weed_detection","iNatAg","iNatAg-mini","iNatAg-mini/abelmoschus_esculentus","iNatAg-mini/abelmoschus_manihot","iNatAg-mini/abelmoschus_moschatus","iNatAg-mini/abies_alba","iNatAg-mini/abies_amabilis","iNatAg-mini/abies_balsamea","iNatAg-mini/abies_concolor","iNatAg-mini/abies_pindrow","iNatAg-mini/abroma_augustum","iNatAg-mini/abrus_pecatorius","iNatAg-mini/abrus_precatorius","iNatAg-mini/abutilon_theophrasti","iNatAg-mini/acacia_abyssinica","iNatAg-mini/acacia_acradenia","iNatAg-mini/acacia_acuminata","iNatAg-mini/acacia_ampliceps","iNatAg-mini/acacia_anceps","iNatAg-mini/acacia_ancistrocarpa","iNatAg-mini/acacia_aneura","iNatAg-mini/acacia_angustissima","iNatAg-mini/acacia_ataxacantha","iNatAg-mini/acacia_aulacocarpa","iNatAg-mini/acacia_auriculiformis","iNatAg-mini/acacia_bidwillii","iNatAg-mini/acacia_brachystachya","iNatAg-mini/acacia_brevispica","iNatAg-mini/acacia_burkei","iNatAg-mini/acacia_caffra","iNatAg-mini/acacia_cambagei","iNatAg-mini/acacia_catechu","iNatAg-mini/acacia_catenulata","iNatAg-mini/acacia_caven","iNatAg-mini/acacia_cincinnata","iNatAg-mini/acacia_coriacea","iNatAg-mini/acacia_cowleana","iNatAg-mini/acacia_crassicarpa","iNatAg-mini/acacia_cyclops","iNatAg-mini/acacia_cyperophylla","iNatAg-mini/acacia_dealbata","iNatAg-mini/acacia_deanei","iNatAg-mini/acacia_decurrens","iNatAg-mini/acacia_difficilis","iNatAg-mini/acacia_doratoxylon","iNatAg-mini/acacia_ehrenbergiana","iNatAg-mini/acacia_erioloba","iNatAg-mini/acacia_estrophiolata","iNatAg-mini/acacia_excelsa","iNatAg-mini/acacia_falciformis","iNatAg-mini/acacia_farnesiana","iNatAg-mini/acacia_fasciculifera","iNatAg-mini/acacia_flavescens","iNatAg-mini/acacia_georginae","iNatAg-mini/acacia_gerrardii","iNatAg-mini/acacia_glaucocarpa","iNatAg-mini/acacia_gourmaensis","iNatAg-mini/acacia_harpophylla","iNatAg-mini/acacia_holosericea","iNatAg-mini/acacia_irrorata","iNatAg-mini/acacia_ixiophylla","iNatAg-mini/acacia_karroo","iNatAg-mini/acacia_koa","iNatAg-mini/acacia_leptocarpa","iNatAg-mini/acacia_leucophloea","iNatAg-mini/acacia_ligulata","iNatAg-mini/acacia_maidenii","iNatAg-mini/acacia_mangium","iNatAg-mini/acacia_mearnsii","iNatAg-mini/acacia_melanoxylon","iNatAg-mini/acacia_mellifera","iNatAg-mini/acacia_murrayana","iNatAg-mini/acacia_neriifolia","iNatAg-mini/acacia_nigrescens","iNatAg-mini/acacia_nilotica","iNatAg-mini/acacia_occidentalis","iNatAg-mini/acacia_oraria","iNatAg-mini/acacia_oswaldii","iNatAg-mini/acacia_pachycarpa","iNatAg-mini/acacia_papyrocarpa","iNatAg-mini/acacia_paradoxa","iNatAg-mini/acacia_pendula","iNatAg-mini/acacia_peuce","iNatAg-mini/acacia_podalyriifolia","iNatAg-mini/acacia_polyacantha","iNatAg-mini/acacia_polystachya","iNatAg-mini/acacia_pruinocarpa","iNatAg-mini/acacia_pycnantha","iNatAg-mini/acacia_salicina","iNatAg-mini/acacia_saligna","iNatAg-mini/acacia_sclerosperma","iNatAg-mini/acacia_senegal","iNatAg-mini/acacia_seyal","iNatAg-mini/acacia_shirleyi","iNatAg-mini/acacia_sieberiana","iNatAg-mini/acacia_silvestris","iNatAg-mini/acacia_simsii","iNatAg-mini/acacia_stenophylla","iNatAg-mini/acacia_tetragonophylla","iNatAg-mini/acacia_tortilis","iNatAg-mini/acacia_torulosa","iNatAg-mini/acacia_trachycarpa","iNatAg-mini/acacia_victoriae","iNatAg-mini/acaena_novae-zelandiae","iNatAg-mini/acalypha_rhomboidea","iNatAg-mini/acalypha_virginica","iNatAg-mini/acanthosicyos_horridus","iNatAg-mini/acanthosicyos_naudinianus","iNatAg-mini/acanthospermum_hispidum","iNatAg-mini/acanthus_ilicifolius","iNatAg-mini/acanthus_mollis","iNatAg-mini/acca_sellowiana","iNatAg-mini/acer_caesium","iNatAg-mini/acer_campestre","iNatAg-mini/acer_platanoides","iNatAg-mini/acer_pseudoplatanus","iNatAg-mini/acer_saccharum","iNatAg-mini/achillea_fragrantissima","iNatAg-mini/achillea_millefolium","iNatAg-mini/achillea_ptarmica","iNatAg-mini/achnatherum_pekinense","iNatAg-mini/achyranthes_aspera","iNatAg-mini/acmena_smithii","iNatAg-mini/aconitum_napellus","iNatAg-mini/acorus_calamus","iNatAg-mini/acrocarpus_fraxinifolius","iNatAg-mini/acrocomia_aculeata","iNatAg-mini/acrocomia_totai","iNatAg-mini/actaea_racemosa","iNatAg-mini/actinidia_arguta","iNatAg-mini/actinidia_chinensis","iNatAg-mini/adansonia_digitata","iNatAg-mini/adansonia_grandidieri","iNatAg-mini/adansonia_gregorii","iNatAg-mini/adenanthera_pavonina","iNatAg-mini/adesmia_bicolor","iNatAg-mini/adesmia_latifolia","iNatAg-mini/adesmia_punctata","iNatAg-mini/adesmia_securigerifolia","iNatAg-mini/adiantum_capillus-veneris","iNatAg-mini/adina_cordifolia","iNatAg-mini/adonis_annua","iNatAg-mini/adonis_vernalis","iNatAg-mini/aechmea_magdalenae","iNatAg-mini/aegiceras_corniculatum","iNatAg-mini/aegilops_biuncialis","iNatAg-mini/aegilops_cylindrica","iNatAg-mini/aegilops_geniculata","iNatAg-mini/aegilops_triuncialis","iNatAg-mini/aegle_marmelos","iNatAg-mini/aegopodium_podagraria","iNatAg-mini/aeschynomene_americana","iNatAg-mini/aeschynomene_brasiliana","iNatAg-mini/aeschynomene_falcata","iNatAg-mini/aeschynomene_histrix","iNatAg-mini/aeschynomene_indica","iNatAg-mini/aeschynomene_villosa","iNatAg-mini/aesculus_hippocastanum","iNatAg-mini/aesculus_indica","iNatAg-mini/aethusa_cynapium","iNatAg-mini/afzelia_africana","iNatAg-mini/afzelia_quanzensis","iNatAg-mini/agathis_australis","iNatAg-mini/agathis_dammara","iNatAg-mini/agathis_macrophylla","iNatAg-mini/agathis_microstachya","iNatAg-mini/agathis_robusta","iNatAg-mini/agave_fourcroydes","iNatAg-mini/agave_lecheguilla","iNatAg-mini/agave_sisalana","iNatAg-mini/ageratum_conyzoides","iNatAg-mini/agrimonia_eupatoria","iNatAg-mini/agrimonia_gryposepala","iNatAg-mini/agrimonia_parviflora","iNatAg-mini/agropyron_cristatum","iNatAg-mini/agropyron_dasyanthum","iNatAg-mini/agropyron_desertorum","iNatAg-mini/agropyron_scabrum","iNatAg-mini/agrostemma_githago","iNatAg-mini/agrostis_canina","iNatAg-mini/agrostis_capillaris","iNatAg-mini/agrostis_gigantea","iNatAg-mini/agrostis_stolonifera","iNatAg-mini/agrostis_tenuis","iNatAg-mini/ailanthus_altissima","iNatAg-mini/ailanthus_excelsa","iNatAg-mini/aiphanes_aculeata","iNatAg-mini/aira_caryophyllea","iNatAg-mini/ajuga_genevensis","iNatAg-mini/ajuga_reptans","iNatAg-mini/alania_cunninghamii","iNatAg-mini/albizia_adianthifolia","iNatAg-mini/albizia_amara","iNatAg-mini/albizia_chinensis","iNatAg-mini/albizia_falcataria","iNatAg-mini/albizia_harveyi","iNatAg-mini/albizia_lebbeck","iNatAg-mini/albizia_lophantha","iNatAg-mini/albizia_lucida","iNatAg-mini/albizia_odoratissima","iNatAg-mini/albizia_procera","iNatAg-mini/alcea_rosea","iNatAg-mini/alchemilla_monticola","iNatAg-mini/alchemilla_occidentalis","iNatAg-mini/alchemilla_vulgaris","iNatAg-mini/alchemilla_xanthochlora","iNatAg-mini/aleurites_fordii","iNatAg-mini/aleurites_moluccana","iNatAg-mini/alisma_gramineum","iNatAg-mini/alisma_lanceolatum","iNatAg-mini/alisma_plantago-aquatica","iNatAg-mini/alkanna_tinctoria","iNatAg-mini/alliaria_petiolata","iNatAg-mini/allionia_incarnata","iNatAg-mini/allium_ampeloprasum","iNatAg-mini/allium_canadense","iNatAg-mini/allium_cepa","iNatAg-mini/allium_chinense","iNatAg-mini/allium_fistulosum","iNatAg-mini/allium_paniculatum","iNatAg-mini/allium_sativum","iNatAg-mini/allium_schoenoprasum","iNatAg-mini/allium_triquetrum","iNatAg-mini/allium_tuberosum","iNatAg-mini/allium_ursinum","iNatAg-mini/allocasuarina_campestris","iNatAg-mini/allocasuarina_decaisneana","iNatAg-mini/allocasuarina_fraseriana","iNatAg-mini/allocasuarina_huegeliana","iNatAg-mini/allocasuarina_littoralis","iNatAg-mini/allocasuarina_luehmannii","iNatAg-mini/allocasuarina_torulosa","iNatAg-mini/alloteropsis_semialata","iNatAg-mini/alnus_acuminata","iNatAg-mini/alnus_glutinosa","iNatAg-mini/alnus_japonica","iNatAg-mini/alnus_maritima","iNatAg-mini/alnus_nepalensis","iNatAg-mini/alnus_rubra","iNatAg-mini/alocasia_macrorrhizos","iNatAg-mini/aloe_arborescens","iNatAg-mini/aloe_barbadensis","iNatAg-mini/aloe_ferox","iNatAg-mini/aloe_perryi","iNatAg-mini/alopecurus_arundinaceus","iNatAg-mini/alopecurus_carolinianus","iNatAg-mini/alopecurus_geniculatus","iNatAg-mini/alopecurus_myosuroides","iNatAg-mini/alopecurus_pratensis","iNatAg-mini/alopecurus_rendlei","iNatAg-mini/aloysia_triphylla","iNatAg-mini/alphitonia_excelsa","iNatAg-mini/alpinia_galanga","iNatAg-mini/alstonia_scholaris","iNatAg-mini/alternanthera_pungens","iNatAg-mini/althaea_officinalis","iNatAg-mini/altingia_excelsa","iNatAg-mini/alysicarpus_monilifer","iNatAg-mini/alysicarpus_ovalifolius","iNatAg-mini/alysicarpus_rugosus","iNatAg-mini/alysicarpus_vaginalis","iNatAg-mini/alyssum_desertorum","iNatAg-mini/amaranthus_albus","iNatAg-mini/amaranthus_blitum","iNatAg-mini/amaranthus_caudatus","iNatAg-mini/amaranthus_cruentus","iNatAg-mini/amaranthus_dubius","iNatAg-mini/amaranthus_hybridus","iNatAg-mini/amaranthus_hypochondriacus","iNatAg-mini/amaranthus_lividus","iNatAg-mini/amaranthus_retroflexus","iNatAg-mini/amaranthus_speciosus","iNatAg-mini/amaranthus_spinosus","iNatAg-mini/amaranthus_tricolor","iNatAg-mini/amaranthus_viridis","iNatAg-mini/ambelania_acida","iNatAg-mini/ambrosia_acanthicarpa","iNatAg-mini/ambrosia_artemisiifolia","iNatAg-mini/ambrosia_confertiflora","iNatAg-mini/ambrosia_psilostachya","iNatAg-mini/ambrosia_tomentosa","iNatAg-mini/ambrosia_trifida","iNatAg-mini/ammannia_latifolia","iNatAg-mini/ammi_majus","iNatAg-mini/ammophila_arenaria","iNatAg-mini/ammophila_breviligulata","iNatAg-mini/amorpha_fruticosa","iNatAg-mini/amorphophallus_paeoniifolius","iNatAg-mini/amsinckia_douglasiana","iNatAg-mini/amsinckia_lycopsoides","iNatAg-mini/anacardium_occidentale","iNatAg-mini/anagallis_arvensis","iNatAg-mini/ananas_comosus","iNatAg-mini/anchusa_azurea","iNatAg-mini/andrographis_paniculata","iNatAg-mini/andropogon_barbinodis","iNatAg-mini/andropogon_bicornis","iNatAg-mini/andropogon_brachystachyus","iNatAg-mini/andropogon_gayanus","iNatAg-mini/andropogon_gyrans","iNatAg-mini/andropogon_hallii","iNatAg-mini/andropogon_leucostachyus","iNatAg-mini/andropogon_ternarius","iNatAg-mini/androsace_septentrionalis","iNatAg-mini/anemone_hepatica","iNatAg-mini/anemone_nemorosa","iNatAg-mini/anethum_graveolens","iNatAg-mini/angelica_archangelica","iNatAg-mini/angelica_atropurpurea","iNatAg-mini/angelica_sylvestris","iNatAg-mini/angophora_costata","iNatAg-mini/angophora_floribunda","iNatAg-mini/annona_atemoya","iNatAg-mini/annona_cherimola","iNatAg-mini/annona_diversifolia","iNatAg-mini/annona_montana","iNatAg-mini/annona_muricata","iNatAg-mini/annona_purpurea","iNatAg-mini/annona_reticulata","iNatAg-mini/annona_senegalensis","iNatAg-mini/annona_squamosa","iNatAg-mini/anogeissus_acuminata","iNatAg-mini/anogeissus_latifolia","iNatAg-mini/anogeissus_pendula","iNatAg-mini/antennaria_dioica","iNatAg-mini/anthemis_arvensis","iNatAg-mini/anthemis_cotula","iNatAg-mini/anthemis_tinctoria","iNatAg-mini/anthephora_pubescens","iNatAg-mini/anthoxanthum_odoratum","iNatAg-mini/anthriscus_cerefolium","iNatAg-mini/anthyllis_vulneraria","iNatAg-mini/antidesma_bunius","iNatAg-mini/antirrhinum_majus","iNatAg-mini/aphandra_natalia","iNatAg-mini/aphanes_arvensis","iNatAg-mini/apios_americana","iNatAg-mini/apium_graveolens","iNatAg-mini/apocynum_cannabinum","iNatAg-mini/apocynum_sibiricum","iNatAg-mini/aponogeton_distachyos","iNatAg-mini/aquilaria_malaccensis","iNatAg-mini/aquilegia_canadensis","iNatAg-mini/aquilegia_vulgaris","iNatAg-mini/arachis_glabrata","iNatAg-mini/arachis_hypogaea","iNatAg-mini/arachis_pintoi","iNatAg-mini/arachis_villosa","iNatAg-mini/araucaria_angustifolia","iNatAg-mini/araucaria_bidwillii","iNatAg-mini/araucaria_cunninghamii","iNatAg-mini/araucaria_hunsteinii","iNatAg-mini/arbutus_unedo","iNatAg-mini/archidendron_jiringa","iNatAg-mini/arctium_lappa","iNatAg-mini/arctostaphylos_glandulosa","iNatAg-mini/arctostaphylos_manzanita","iNatAg-mini/arctostaphylos_patula","iNatAg-mini/arctostaphylos_uva-ursi","iNatAg-mini/arctostaphylos_viscida","iNatAg-mini/ardisia_crenata","iNatAg-mini/areca_catechu","iNatAg-mini/arenaria_serpyllifolia","iNatAg-mini/arenga_pinnata","iNatAg-mini/argemone_mexicana","iNatAg-mini/argyrodendron_actinophyllum","iNatAg-mini/argyrodendron_peralatum","iNatAg-mini/aria_alnifolia","iNatAg-mini/aristida_adscensionis","iNatAg-mini/aristida_behriana","iNatAg-mini/aristida_congesta","iNatAg-mini/aristida_junciformis","iNatAg-mini/aristida_lanosa","iNatAg-mini/aristida_latifolia","iNatAg-mini/aristida_longispica","iNatAg-mini/aristida_personata","iNatAg-mini/aristida_purpurascens","iNatAg-mini/aristida_schiedeana","iNatAg-mini/aristida_transvaalensis","iNatAg-mini/aristolochia_rotunda","iNatAg-mini/armoracia_rusticana","iNatAg-mini/arnica_montana","iNatAg-mini/arrhenatherum_elatius","iNatAg-mini/artemisia_abrotanum","iNatAg-mini/artemisia_absinthium","iNatAg-mini/artemisia_afra","iNatAg-mini/artemisia_annua","iNatAg-mini/artemisia_campestris","iNatAg-mini/artemisia_dracunculus","iNatAg-mini/artemisia_filifolia","iNatAg-mini/artemisia_glacialis","iNatAg-mini/artemisia_herba-alba","iNatAg-mini/artemisia_ludoviciana","iNatAg-mini/artemisia_stelleriana","iNatAg-mini/artemisia_tridentata","iNatAg-mini/artemisia_vulgaris","iNatAg-mini/artocarpus_altilis","iNatAg-mini/artocarpus_heterophyllus","iNatAg-mini/artocarpus_hirsutus","iNatAg-mini/artocarpus_integer","iNatAg-mini/artocarpus_lakoocha","iNatAg-mini/arundinella_hirta","iNatAg-mini/arundo_donax","iNatAg-mini/asarina_stricta","iNatAg-mini/asarum_europaeum","iNatAg-mini/asclepias_curassavica","iNatAg-mini/asclepias_fascicularis","iNatAg-mini/asclepias_incarnata","iNatAg-mini/asclepias_lanceolata","iNatAg-mini/asclepias_purpurascens","iNatAg-mini/asclepias_speciosa","iNatAg-mini/asclepias_subverticillata","iNatAg-mini/asclepias_tuberosa","iNatAg-mini/asclepias_verticillata","iNatAg-mini/asclepias_viridiflora","iNatAg-mini/asimina_angustifolia","iNatAg-mini/asimina_triloba","iNatAg-mini/asparagus_densiflorus","iNatAg-mini/asparagus_officinalis","iNatAg-mini/asperula_arvensis","iNatAg-mini/asphodelus_albus","iNatAg-mini/asphodelus_tenuifolius","iNatAg-mini/aspilia_angustifolia","iNatAg-mini/asplenium_ruta-muraria","iNatAg-mini/aster_ericoides","iNatAg-mini/astragalus_adsurgens","iNatAg-mini/astragalus_asymmetricus","iNatAg-mini/astragalus_canadensis","iNatAg-mini/astragalus_cicer","iNatAg-mini/astragalus_gummifer","iNatAg-mini/astragalus_mollissimus","iNatAg-mini/astragalus_nuttallianus","iNatAg-mini/astragalus_sinicus","iNatAg-mini/astragalus_tweedyi","iNatAg-mini/astrantia_major","iNatAg-mini/astrebla_lappacea","iNatAg-mini/astrebla_pectinata","iNatAg-mini/astrebla_squarrosa","iNatAg-mini/astrocaryum_jauari","iNatAg-mini/astrocaryum_vulgare","iNatAg-mini/asystasia_gangetica","iNatAg-mini/atalaya_hemiglauca","iNatAg-mini/atherosperma_moschatum","iNatAg-mini/athrotaxis_selaginoides","iNatAg-mini/atriplex_canescens","iNatAg-mini/atriplex_confertifolia","iNatAg-mini/atriplex_gardneri","iNatAg-mini/atriplex_glauca","iNatAg-mini/atriplex_halimus","iNatAg-mini/atriplex_hortensis","iNatAg-mini/atriplex_lentiformis","iNatAg-mini/atriplex_nummularia","iNatAg-mini/atriplex_patula","iNatAg-mini/atriplex_rosea","iNatAg-mini/atriplex_semibaccata","iNatAg-mini/atriplex_vesicaria","iNatAg-mini/atropa_belladonna","iNatAg-mini/attalea_cohune","iNatAg-mini/avena_fatua","iNatAg-mini/avena_sativa","iNatAg-mini/avena_sterilis","iNatAg-mini/avenula_pubescens","iNatAg-mini/averrhoa_bilimbi","iNatAg-mini/averrhoa_carambola","iNatAg-mini/avicennia_germinans","iNatAg-mini/avicennia_marina","iNatAg-mini/avicennia_officinalis","iNatAg-mini/axonopus_affinis","iNatAg-mini/axonopus_compressus","iNatAg-mini/axonopus_fissifolius","iNatAg-mini/axyris_amaranthoides","iNatAg-mini/azadirachta_indica","iNatAg-mini/azanza_garckeana","iNatAg-mini/azolla_filiculoides","iNatAg-mini/azolla_pinnata","iNatAg-mini/baccaurea_motleyana","iNatAg-mini/baccaurea_ramiflora","iNatAg-mini/baccharis_glutinosa","iNatAg-mini/baccharis_pilularis","iNatAg-mini/bactris_gasipaes","iNatAg-mini/baikiaea_plurijuga","iNatAg-mini/balanites_aegyptiaca","iNatAg-mini/bambusa_arundinacea","iNatAg-mini/bambusa_balcooa","iNatAg-mini/bambusa_blumeana","iNatAg-mini/bambusa_tulda","iNatAg-mini/bambusa_vulgaris","iNatAg-mini/banksia_integrifolia","iNatAg-mini/banksia_occidentalis","iNatAg-mini/baphia_nitida","iNatAg-mini/barringtonia_racemosa","iNatAg-mini/basella_alba","iNatAg-mini/bauhinia_aculeata","iNatAg-mini/bauhinia_petersiana","iNatAg-mini/bauhinia_racemosa","iNatAg-mini/bauhinia_rufescens","iNatAg-mini/bauhinia_thonningii","iNatAg-mini/bauhinia_tomentosa","iNatAg-mini/bauhinia_variegata","iNatAg-mini/beckmannia_eruciformis","iNatAg-mini/beckmannia_syzigachne","iNatAg-mini/bellis_perennis","iNatAg-mini/benincasa_hispida","iNatAg-mini/berberis_aquifolium","iNatAg-mini/berberis_thunbergii","iNatAg-mini/berberis_vulgaris","iNatAg-mini/berchemia_discolor","iNatAg-mini/berrya_cordifolia","iNatAg-mini/bersama_lucens","iNatAg-mini/bertholletia_excelsa","iNatAg-mini/beta_vulgaris","iNatAg-mini/betula_nigra","iNatAg-mini/betula_pendula","iNatAg-mini/betula_pubescens","iNatAg-mini/bidens_bipinnata","iNatAg-mini/bidens_cernua","iNatAg-mini/bidens_frondosa","iNatAg-mini/bidens_pilosa","iNatAg-mini/bidens_tripartita","iNatAg-mini/bignonia_capreolata","iNatAg-mini/biserrula_pelecinus","iNatAg-mini/bixa_orellana","iNatAg-mini/blighia_sapida","iNatAg-mini/blumea_balsamifera","iNatAg-mini/bocconia_frutescens","iNatAg-mini/boehmeria_nivea","iNatAg-mini/boerhavia_coccinea","iNatAg-mini/boerhavia_diffusa","iNatAg-mini/boerhavia_erecta","iNatAg-mini/boesenbergia_rotunda","iNatAg-mini/bolusanthus_speciosus","iNatAg-mini/bombacopsis_quinata","iNatAg-mini/bombax_ceiba","iNatAg-mini/bombax_insigne","iNatAg-mini/borago_officinalis","iNatAg-mini/borassus_aethiopum","iNatAg-mini/borassus_flabellifer","iNatAg-mini/borojoa_patinoi","iNatAg-mini/boronia_glabra","iNatAg-mini/boscia_angustifolia","iNatAg-mini/boswellia_serrata","iNatAg-mini/bothriochloa_bladhii","iNatAg-mini/bothriochloa_insculpta","iNatAg-mini/bothriochloa_ischaemum","iNatAg-mini/bothriochloa_pertusa","iNatAg-mini/bougainvillea_glabra","iNatAg-mini/bouteloua_curtipendula","iNatAg-mini/bouteloua_gracilis","iNatAg-mini/brachiaria_brizantha","iNatAg-mini/brachiaria_decumbens","iNatAg-mini/brachiaria_deflexa","iNatAg-mini/brachiaria_distachya","iNatAg-mini/brachiaria_humidicola","iNatAg-mini/brachiaria_mutica","iNatAg-mini/brachiaria_ramosa","iNatAg-mini/brachiaria_serrata","iNatAg-mini/brachychiton_acerifolius","iNatAg-mini/brachychiton_populneus","iNatAg-mini/brachylaena_huillensis","iNatAg-mini/brachystegia_spiciformis","iNatAg-mini/brassica_campestris","iNatAg-mini/brassica_chinensis","iNatAg-mini/brassica_incana","iNatAg-mini/brassica_juncea","iNatAg-mini/brassica_napus","iNatAg-mini/brassica_nigra","iNatAg-mini/brassica_rapa","iNatAg-mini/brassica_tournefortii","iNatAg-mini/bridelia_micrantha","iNatAg-mini/briza_maxima","iNatAg-mini/briza_media","iNatAg-mini/briza_minor","iNatAg-mini/bromus_arvensis","iNatAg-mini/bromus_carinatus","iNatAg-mini/bromus_catharticus","iNatAg-mini/bromus_diandrus","iNatAg-mini/bromus_erectus","iNatAg-mini/bromus_hordeaceus","iNatAg-mini/bromus_inermis","iNatAg-mini/bromus_madritensis","iNatAg-mini/bromus_marginatus","iNatAg-mini/bromus_racemosus","iNatAg-mini/bromus_rubens","iNatAg-mini/bromus_secalinus","iNatAg-mini/bromus_sterilis","iNatAg-mini/bromus_tectorum","iNatAg-mini/bromus_unioloides","iNatAg-mini/bromus_willdenowii","iNatAg-mini/brosimum_alicastrum","iNatAg-mini/broussonetia_papyrifera","iNatAg-mini/bruguiera_gymnorrhiza","iNatAg-mini/bryonia_alba","iNatAg-mini/bryonia_cretica","iNatAg-mini/buchloe_dactyloides","iNatAg-mini/buckinghamia_celsissima","iNatAg-mini/bunias_erucago","iNatAg-mini/bunias_orientalis","iNatAg-mini/burkea_africana","iNatAg-mini/bursera_simaruba","iNatAg-mini/butea_monosperma","iNatAg-mini/butomus_umbellatus","iNatAg-mini/buxus_sempervirens","iNatAg-mini/cacalia_atriplicifolia","iNatAg-mini/caesalpinia_coriaria","iNatAg-mini/caesalpinia_sappan","iNatAg-mini/cajanus_cajan","iNatAg-mini/calamagrostis_epigeios","iNatAg-mini/calathea_allouia","iNatAg-mini/calendula_arvensis","iNatAg-mini/calendula_officinalis","iNatAg-mini/calliandra_calothyrsus","iNatAg-mini/calliandra_tweedii","iNatAg-mini/callisia_angustifolia","iNatAg-mini/callitriche_palustris","iNatAg-mini/callitriche_stagnalis","iNatAg-mini/callitriche_verna","iNatAg-mini/callitris_columellaris","iNatAg-mini/callitris_endlicheri","iNatAg-mini/callitris_macleayana","iNatAg-mini/calluna_vulgaris","iNatAg-mini/calodendrum_capense","iNatAg-mini/calophyllum_apetalum","iNatAg-mini/calophyllum_brasiliense","iNatAg-mini/calophyllum_inophyllum","iNatAg-mini/calopogonium_caeruleum","iNatAg-mini/calopogonium_mucunoides","iNatAg-mini/calotropis_procera","iNatAg-mini/caltha_palustris","iNatAg-mini/calystegia_hederacea","iNatAg-mini/calystegia_occidentalis","iNatAg-mini/calystegia_pubescens","iNatAg-mini/camelina_sativa","iNatAg-mini/camellia_sinensis","iNatAg-mini/campanula_americana","iNatAg-mini/campanula_rapunculus","iNatAg-mini/campanula_rotundifolia","iNatAg-mini/cananga_odorata","iNatAg-mini/canavalia_brasiliensis","iNatAg-mini/canavalia_ensiformis","iNatAg-mini/canavalia_gladiata","iNatAg-mini/canna_indica","iNatAg-mini/canthium_spinosum","iNatAg-mini/capparis_decidua","iNatAg-mini/capparis_spinosa","iNatAg-mini/capparis_tomentosa","iNatAg-mini/capsella_bursa-pastoris","iNatAg-mini/capsicum_annuum","iNatAg-mini/capsicum_chinense","iNatAg-mini/capsicum_frutescens","iNatAg-mini/capsicum_pubescens","iNatAg-mini/caragana_arborescens","iNatAg-mini/caragana_microphylla","iNatAg-mini/carapa_guianensis","iNatAg-mini/cardamine_flexuosa","iNatAg-mini/cardamine_hirsuta","iNatAg-mini/cardamine_impatiens","iNatAg-mini/cardamine_oligosperma","iNatAg-mini/cardamine_parviflora","iNatAg-mini/cardamine_pratensis","iNatAg-mini/cardiospermum_halicacabum","iNatAg-mini/carduus_acanthoides","iNatAg-mini/carduus_crispus","iNatAg-mini/carduus_lanceolatus","iNatAg-mini/carduus_pycnocephalus","iNatAg-mini/carex_nebrascensis","iNatAg-mini/carex_pallescens","iNatAg-mini/carica_cauliflora","iNatAg-mini/carica_papaya","iNatAg-mini/carica_pubescens","iNatAg-mini/cariniana_pyriformis","iNatAg-mini/carissa_carandas","iNatAg-mini/carissa_edulis","iNatAg-mini/carissa_macrocarpa","iNatAg-mini/carlina_acaulis","iNatAg-mini/carludovica_palmata","iNatAg-mini/caroxylon_aphyllum","iNatAg-mini/carpinus_betulus","iNatAg-mini/carthamus_creticus","iNatAg-mini/carthamus_lanatus","iNatAg-mini/carthamus_tinctorius","iNatAg-mini/carum_carvi","iNatAg-mini/carya_illinoensis","iNatAg-mini/caryodendron_orinocense","iNatAg-mini/caryota_urens","iNatAg-mini/casimiroa_edulis","iNatAg-mini/cassia_articulata","iNatAg-mini/cassia_brewsteri","iNatAg-mini/cassia_fistula","iNatAg-mini/cassia_marilandica","iNatAg-mini/cassia_nictitans","iNatAg-mini/cassia_reticulata","iNatAg-mini/cassia_senna","iNatAg-mini/cassia_siamea","iNatAg-mini/cassia_sieberiana","iNatAg-mini/cassia_tomentosa","iNatAg-mini/cassia_tora","iNatAg-mini/castanea_crenata","iNatAg-mini/castanea_dentata","iNatAg-mini/castanea_mollissima","iNatAg-mini/castanea_pumila","iNatAg-mini/castanea_sativa","iNatAg-mini/castanospermum_australe","iNatAg-mini/castilla_elastica","iNatAg-mini/castilleja_angustifolia","iNatAg-mini/castilleja_occidentalis","iNatAg-mini/casuarina_cristata","iNatAg-mini/casuarina_cunninghamiana","iNatAg-mini/casuarina_equisetifolia","iNatAg-mini/casuarina_glauca","iNatAg-mini/casuarina_junghuhniana","iNatAg-mini/casuarina_obesa","iNatAg-mini/catalpa_bignonioides","iNatAg-mini/catha_edulis","iNatAg-mini/catharanthus_roseus","iNatAg-mini/ceanothus_americanus","iNatAg-mini/ceanothus_prostratus","iNatAg-mini/cedrela_odorata","iNatAg-mini/cedrus_deodara","iNatAg-mini/ceiba_pentandra","iNatAg-mini/celastrus_orbiculatus","iNatAg-mini/celastrus_scandens","iNatAg-mini/celosia_argentea","iNatAg-mini/celtis_australis","iNatAg-mini/cenchrus_biflorus","iNatAg-mini/cenchrus_ciliaris","iNatAg-mini/cenchrus_echinatus","iNatAg-mini/cenchrus_setigerus","iNatAg-mini/cenchrus_spinifex","iNatAg-mini/cenchrus_tribuloides","iNatAg-mini/centaurea_biebersteinii","iNatAg-mini/centaurea_calcitrapa","iNatAg-mini/centaurea_cyanus","iNatAg-mini/centaurea_diluta","iNatAg-mini/centaurea_jacea","iNatAg-mini/centaurea_melitensis","iNatAg-mini/centaurea_nigra","iNatAg-mini/centaurea_nigrescens","iNatAg-mini/centaurea_solstitalis","iNatAg-mini/centaurea_solstitialis","iNatAg-mini/centaurea_stoebe","iNatAg-mini/centaurea_virgata","iNatAg-mini/centella_asiatica","iNatAg-mini/centropodia_glauca","iNatAg-mini/centrosema_brasilianum","iNatAg-mini/centrosema_macrocarpum","iNatAg-mini/centrosema_pascuorum","iNatAg-mini/centrosema_plumieri","iNatAg-mini/centrosema_pubescens","iNatAg-mini/centrosema_virginianum","iNatAg-mini/cephalanthus_occidentalis","iNatAg-mini/cerastium_arvense","iNatAg-mini/cerastium_nutans","iNatAg-mini/cerastium_vulgatum","iNatAg-mini/ceratonia_siliqua","iNatAg-mini/ceratopetalum_apetalum","iNatAg-mini/ceratophyllum_demersum","iNatAg-mini/ceratophyllum_echinatum","iNatAg-mini/ceriops_tagal","iNatAg-mini/cestrum_diurnum","iNatAg-mini/ceterach_officinarum","iNatAg-mini/chaerophyllum_tainturieri","iNatAg-mini/chamaebatia_foliolosa","iNatAg-mini/chamaecrista_nictitans","iNatAg-mini/chamaecrista_rotundifolia","iNatAg-mini/chamaedorea_tepejilote","iNatAg-mini/chamaerops_humilis","iNatAg-mini/chara_intermedia","iNatAg-mini/chelidonium_majus","iNatAg-mini/chenopodium_album","iNatAg-mini/chenopodium_ambrosioides","iNatAg-mini/chenopodium_ambrosoides","iNatAg-mini/chenopodium_berlandieri","iNatAg-mini/chenopodium_bonus-henricus","iNatAg-mini/chenopodium_botrys","iNatAg-mini/chenopodium_ficifolium","iNatAg-mini/chenopodium_gigantospermum","iNatAg-mini/chenopodium_glaucum","iNatAg-mini/chenopodium_missouriense","iNatAg-mini/chenopodium_multifidum","iNatAg-mini/chenopodium_murale","iNatAg-mini/chenopodium_polyspermum","iNatAg-mini/chenopodium_quinoa","iNatAg-mini/chenopodium_rubrum","iNatAg-mini/chenopodium_urbicum","iNatAg-mini/chloris_ciliata","iNatAg-mini/chloris_gayana","iNatAg-mini/chloris_roxburghiana","iNatAg-mini/chloris_verticillata","iNatAg-mini/chloris_virgata","iNatAg-mini/chlorogalum_pomeridianum","iNatAg-mini/chlorophora_excelsa","iNatAg-mini/chlorophytum_comosum","iNatAg-mini/chloroxylon_swietenia","iNatAg-mini/chromolaena_odorata","iNatAg-mini/chrysanthemum_coronarium","iNatAg-mini/chrysanthemum_leucanthemum","iNatAg-mini/chrysophyllum_cainito","iNatAg-mini/chrysopogon_aciculatus","iNatAg-mini/chukrasia_velutina","iNatAg-mini/cicer_arietinum","iNatAg-mini/cichorium_endivia","iNatAg-mini/cichorium_intybus","iNatAg-mini/cicuta_bulbifera","iNatAg-mini/cicuta_mackenzieana","iNatAg-mini/cicuta_maculata","iNatAg-mini/cicuta_virosa","iNatAg-mini/cimicifuga_racemosa","iNatAg-mini/cinchona_officinalis","iNatAg-mini/cinchona_pubescens","iNatAg-mini/cinnamomum_burmannii","iNatAg-mini/cinnamomum_camphora","iNatAg-mini/cinnamomum_cassia","iNatAg-mini/cinnamomum_verum","iNatAg-mini/cistus_creticus","iNatAg-mini/citrofortunella_microcarpa","iNatAg-mini/citrullus_colocynthis","iNatAg-mini/citrullus_lanatus","iNatAg-mini/citrus_aurantifolia","iNatAg-mini/citrus_aurantium","iNatAg-mini/citrus_deliciosa","iNatAg-mini/citrus_latifolia","iNatAg-mini/citrus_limon","iNatAg-mini/citrus_madurensis","iNatAg-mini/citrus_medica","iNatAg-mini/citrus_paradisi","iNatAg-mini/citrus_reticulata","iNatAg-mini/citrus_sinensis","iNatAg-mini/citrus_unshiu","iNatAg-mini/clausena_lansium","iNatAg-mini/claytonia_caroliniana","iNatAg-mini/claytonia_virginica","iNatAg-mini/cleistogenes_squarrosa","iNatAg-mini/clematis_ligusticifolia","iNatAg-mini/clematis_orientalis","iNatAg-mini/clematis_virginiana","iNatAg-mini/clematis_vitalba","iNatAg-mini/cleome_gynandra","iNatAg-mini/cleome_hassleriana","iNatAg-mini/cleome_viscosa","iNatAg-mini/clitoria_laurifolia","iNatAg-mini/clitoria_ternatea","iNatAg-mini/clusia_occidentalis","iNatAg-mini/cnicus_benedictus","iNatAg-mini/coccoloba_uvifera","iNatAg-mini/cochlospermum_religiosum","iNatAg-mini/cocos_nucifera","iNatAg-mini/coffea_arabica","iNatAg-mini/coffea_canephora","iNatAg-mini/coffea_liberica","iNatAg-mini/coix_lacryma-jobi","iNatAg-mini/cola_acuminata","iNatAg-mini/cola_nitida","iNatAg-mini/colchicum_autumnale","iNatAg-mini/coleus_amboinicus","iNatAg-mini/colocasia_esculenta","iNatAg-mini/colophospermum_mopane","iNatAg-mini/combretum_aculeatum","iNatAg-mini/combretum_micranthum","iNatAg-mini/combretum_molle","iNatAg-mini/commelina_bengalensis","iNatAg-mini/commelina_benghalensis","iNatAg-mini/commelina_communis","iNatAg-mini/commelina_erecta","iNatAg-mini/commiphora_africana","iNatAg-mini/conium_maculatum","iNatAg-mini/conocarpus_erectus","iNatAg-mini/conocarpus_lancifolius","iNatAg-mini/convallaria_majalis","iNatAg-mini/convolvulus_althaeoides","iNatAg-mini/convolvulus_arvensis","iNatAg-mini/convolvulus_equitans","iNatAg-mini/convolvulus_sepium","iNatAg-mini/copaifera_langsdorffii","iNatAg-mini/corchorus_aestuans","iNatAg-mini/corchorus_capsularis","iNatAg-mini/cordia_africana","iNatAg-mini/cordia_alliodora","iNatAg-mini/coreopsis_lanceolata","iNatAg-mini/coreopsis_tinctoria","iNatAg-mini/coreopsis_verticillata","iNatAg-mini/coriandrum_sativum","iNatAg-mini/corispermum_hyssopifolium","iNatAg-mini/corispermum_villosum","iNatAg-mini/cornus_canadensis","iNatAg-mini/cornus_florida","iNatAg-mini/cornus_mas","iNatAg-mini/cornus_sanguinea","iNatAg-mini/coronilla_varia","iNatAg-mini/corylus_avellana","iNatAg-mini/corylus_maxima","iNatAg-mini/cotoneaster_franchetii","iNatAg-mini/cotula_coronopifolia","iNatAg-mini/crambe_cordifolia","iNatAg-mini/crambe_maritima","iNatAg-mini/crassula_sieberiana","iNatAg-mini/crataegus_crus-galli","iNatAg-mini/crataegus_crus-gallii","iNatAg-mini/crataegus_marshallii","iNatAg-mini/crataegus_monogyna","iNatAg-mini/crataegus_oxyacantha","iNatAg-mini/crataegus_rivularis","iNatAg-mini/cratylia_argentea","iNatAg-mini/crepis_biennis","iNatAg-mini/crepis_occidentalis","iNatAg-mini/crepis_vesicaria","iNatAg-mini/cressa_truxillensis","iNatAg-mini/crinum_americanum","iNatAg-mini/crithmum_maritimum","iNatAg-mini/crocus_sativus","iNatAg-mini/crotalaria_juncea","iNatAg-mini/crotalaria_lanceolata","iNatAg-mini/crotalaria_pallida","iNatAg-mini/crotalaria_podocarpa","iNatAg-mini/crotalaria_retusa","iNatAg-mini/crotalaria_sagittalis","iNatAg-mini/crotalaria_spectabilis","iNatAg-mini/croton_monanthogynus","iNatAg-mini/crucianella_angustifolia","iNatAg-mini/cryptocarya_erythroxylon","iNatAg-mini/cryptomeria_japonica","iNatAg-mini/cryptotaenia_japonica","iNatAg-mini/ctenium_concinnum","iNatAg-mini/cucumis_anguria","iNatAg-mini/cucumis_melo","iNatAg-mini/cucumis_sativus","iNatAg-mini/cucurbita_argyrosperma","iNatAg-mini/cucurbita_digitata","iNatAg-mini/cucurbita_ficifolia","iNatAg-mini/cucurbita_foetidissima","iNatAg-mini/cucurbita_maxima","iNatAg-mini/cucurbita_mixta","iNatAg-mini/cucurbita_moschata","iNatAg-mini/cucurbita_pepo","iNatAg-mini/cunninghamia_lanceolata","iNatAg-mini/cupania_auriculata","iNatAg-mini/cuphea_viscosissima","iNatAg-mini/cupressus_arizonica","iNatAg-mini/cupressus_lusitanica","iNatAg-mini/cupressus_macrocarpa","iNatAg-mini/cupressus_sempervirens","iNatAg-mini/cupressus_torulosa","iNatAg-mini/curcuma_longa","iNatAg-mini/curcuma_zedoaria","iNatAg-mini/cuscuta_approximata","iNatAg-mini/cuscuta_epithymum","iNatAg-mini/cuscuta_obtusiflora","iNatAg-mini/cuscuta_planiflora","iNatAg-mini/cuscuta_sandwichiana","iNatAg-mini/cydonia_oblonga","iNatAg-mini/cymbalaria_muralis","iNatAg-mini/cymbopogon_citratus","iNatAg-mini/cynanchum_scoparium","iNatAg-mini/cynara_cardunculus","iNatAg-mini/cynara_scolymus","iNatAg-mini/cynodon_dactylon","iNatAg-mini/cynodon_nlemfuensis","iNatAg-mini/cynoglossum_officinale","iNatAg-mini/cynometra_cauliflora","iNatAg-mini/cynosurus_cristatus","iNatAg-mini/cyperus_alopecuroides","iNatAg-mini/cyperus_articulatus","iNatAg-mini/cyperus_compressus","iNatAg-mini/cyperus_croceus","iNatAg-mini/cyperus_cuspidatus","iNatAg-mini/cyperus_difformis","iNatAg-mini/cyperus_eragrostis","iNatAg-mini/cyperus_erythrorhizos","iNatAg-mini/cyperus_esculentus","iNatAg-mini/cyperus_flavescens","iNatAg-mini/cyperus_fuscus","iNatAg-mini/cyperus_hyalinus","iNatAg-mini/cyperus_involucratus","iNatAg-mini/cyperus_iria","iNatAg-mini/cyperus_lanceolatus","iNatAg-mini/cyperus_longus","iNatAg-mini/cyperus_odoratus","iNatAg-mini/cyperus_pilosus","iNatAg-mini/cyperus_prolifer","iNatAg-mini/cyperus_pseudovegetus","iNatAg-mini/cyperus_rotundus","iNatAg-mini/cyperus_sanguinolentus","iNatAg-mini/cyperus_squarrosus","iNatAg-mini/cyperus_strigosus","iNatAg-mini/cyperus_subsquarrosus","iNatAg-mini/cyperus_surinamensis","iNatAg-mini/cyphomandra_betacea","iNatAg-mini/cytisus_albus","iNatAg-mini/cytisus_proliferus","iNatAg-mini/cytisus_supinus","iNatAg-mini/dacrydium_franklinii","iNatAg-mini/dactylis_glomerata","iNatAg-mini/dactyloctenium_aegyptium","iNatAg-mini/dactyloctenium_giganteum","iNatAg-mini/dalbergia_latifolia","iNatAg-mini/dalbergia_melanoxylon","iNatAg-mini/dalbergia_sissoo","iNatAg-mini/daphne_laureola","iNatAg-mini/daphne_mezereum","iNatAg-mini/datura_ferox","iNatAg-mini/datura_quercifolia","iNatAg-mini/datura_stramonium","iNatAg-mini/daucus_carota","iNatAg-mini/daucus_carrota","iNatAg-mini/delairea_odorata","iNatAg-mini/delonix_regia","iNatAg-mini/delphinium_bicolor","iNatAg-mini/delphinium_carolinianum","iNatAg-mini/delphinium_menziesii","iNatAg-mini/delphinium_trolliifolium","iNatAg-mini/dendrocalamus_asper","iNatAg-mini/dendrocalamus_giganteus","iNatAg-mini/dendrocalamus_strictus","iNatAg-mini/dendrolobium_umbellatum","iNatAg-mini/derris_elliptica","iNatAg-mini/deschampsia_caespitosa","iNatAg-mini/deschampsia_flexuosa","iNatAg-mini/desmanthus_leptophyllus","iNatAg-mini/desmanthus_virgatus","iNatAg-mini/desmodium_affine","iNatAg-mini/desmodium_barbatum","iNatAg-mini/desmodium_cuneatum","iNatAg-mini/desmodium_cuspidatum","iNatAg-mini/desmodium_distortum","iNatAg-mini/desmodium_gyroides","iNatAg-mini/desmodium_heterophyllum","iNatAg-mini/desmodium_incanum","iNatAg-mini/desmodium_intortum","iNatAg-mini/desmodium_paniculatum","iNatAg-mini/desmodium_psilocarpum","iNatAg-mini/desmodium_reticulatum","iNatAg-mini/desmodium_sandwicense","iNatAg-mini/desmodium_scorpiurus","iNatAg-mini/desmodium_tortuosum","iNatAg-mini/desmodium_triflorum","iNatAg-mini/desmodium_uncinatum","iNatAg-mini/desmodium_velutinum","iNatAg-mini/dialium_guineense","iNatAg-mini/dianthus_armeria","iNatAg-mini/dichanthium_annulatum","iNatAg-mini/dichanthium_aristatum","iNatAg-mini/dichanthium_caricosum","iNatAg-mini/dichanthium_sericeum","iNatAg-mini/dichondra_carolinensis","iNatAg-mini/dichondra_micrantha","iNatAg-mini/dichrostachys_cinerea","iNatAg-mini/dictamnus_albus","iNatAg-mini/didymopanax_morototoni","iNatAg-mini/diervilla_lonicera","iNatAg-mini/digitalis_lanata","iNatAg-mini/digitalis_lutea","iNatAg-mini/digitalis_purpurea","iNatAg-mini/digitaria_argyrograpta","iNatAg-mini/digitaria_ciliaris","iNatAg-mini/digitaria_decumbens","iNatAg-mini/digitaria_didactyla","iNatAg-mini/digitaria_eriantha","iNatAg-mini/digitaria_tricholaenoides","iNatAg-mini/digitaria_violascens","iNatAg-mini/dillenia_indica","iNatAg-mini/dillenia_pentagyna","iNatAg-mini/diodia_virginiana","iNatAg-mini/dioscorea_alata","iNatAg-mini/dioscorea_bulbifera","iNatAg-mini/dioscorea_esculenta","iNatAg-mini/dioscorea_opposita","iNatAg-mini/dioscorea_oppositifolia","iNatAg-mini/dioscorea_trifida","iNatAg-mini/diospyros_digyna","iNatAg-mini/diospyros_kaki","iNatAg-mini/diospyros_malabarica","iNatAg-mini/diospyros_melanoxylon","iNatAg-mini/diospyros_mespiliformis","iNatAg-mini/diospyros_virginiana","iNatAg-mini/diplachne_fusca","iNatAg-mini/diploglottis_cunninghamii","iNatAg-mini/dipsacus_fullonum","iNatAg-mini/dipsacus_laciniatus","iNatAg-mini/dipsacus_sylvestris","iNatAg-mini/dipterocarpus_alatus","iNatAg-mini/dipterocarpus_indicus","iNatAg-mini/dipterocarpus_turbinatus","iNatAg-mini/dodonaea_viscosa","iNatAg-mini/dovyalis_caffra","iNatAg-mini/dovyalis_hebecarpa","iNatAg-mini/draba_nemorosa","iNatAg-mini/draba_verna","iNatAg-mini/dracocephalum_parviflorum","iNatAg-mini/dracocephalum_thymiflorum","iNatAg-mini/drosera_rotundifolia","iNatAg-mini/dryopteris_filix-mas","iNatAg-mini/duboisia_myoporoides","iNatAg-mini/durio_zibethinus","iNatAg-mini/dysoxylum_fraserianum","iNatAg-mini/ecballium_elaterium","iNatAg-mini/echinacea_purpurea","iNatAg-mini/echinochloa_colona","iNatAg-mini/echinochloa_crus-galli","iNatAg-mini/echinochloa_frumentacea","iNatAg-mini/echinochloa_polystachya","iNatAg-mini/echinochloa_pyramidalis","iNatAg-mini/echinops_sphaerocephalus","iNatAg-mini/echium_plantagineum","iNatAg-mini/echium_vulgare","iNatAg-mini/ehrharta_calycina","iNatAg-mini/ehrharta_erecta","iNatAg-mini/ehrharta_longiflora","iNatAg-mini/ehrharta_villosa","iNatAg-mini/eichhornia_crassipes","iNatAg-mini/ekebergia_capensis","iNatAg-mini/elaeagnus_angustifolia","iNatAg-mini/elaeagnus_multiflora","iNatAg-mini/elaeis_guineensis","iNatAg-mini/elaeis_oleifera","iNatAg-mini/elaeocarpus_grandis","iNatAg-mini/eleagnus_angustifolia","iNatAg-mini/elegia_cuspidata","iNatAg-mini/eleocharis_cellulosa","iNatAg-mini/eleocharis_dulcis","iNatAg-mini/eleocharis_macrostachya","iNatAg-mini/eleocharis_montevidensis","iNatAg-mini/eleocharis_vivipara","iNatAg-mini/elephantopus_mollis","iNatAg-mini/elephantorrhiza_elephantina","iNatAg-mini/elettaria_cardamomum","iNatAg-mini/eleusine_indica","iNatAg-mini/ellisia_nyctelea","iNatAg-mini/elsholtzia_ciliata","iNatAg-mini/elymus_canadensis","iNatAg-mini/elymus_caput-medusae","iNatAg-mini/elymus_cinereus","iNatAg-mini/elymus_condensatus","iNatAg-mini/elymus_dahuricus","iNatAg-mini/elymus_glaucus","iNatAg-mini/elymus_viginicus","iNatAg-mini/elymus_virginicus","iNatAg-mini/emilia_sonchifolia","iNatAg-mini/encalypta_intermedia","iNatAg-mini/enneapogon_scoparius","iNatAg-mini/ensete_ventricosum","iNatAg-mini/entada_abyssinica","iNatAg-mini/entada_africana","iNatAg-mini/enterolobium_cyclocarpum","iNatAg-mini/epilobium_angustifolium","iNatAg-mini/epilobium_ciliatum","iNatAg-mini/equisetum_arvense","iNatAg-mini/equisetum_hyemale","iNatAg-mini/equisetum_palustre","iNatAg-mini/equisetum_sylvaticum","iNatAg-mini/equisetum_telmateia","iNatAg-mini/eragrostis_amabilis","iNatAg-mini/eragrostis_barrelieri","iNatAg-mini/eragrostis_capillaris","iNatAg-mini/eragrostis_chloromelas","iNatAg-mini/eragrostis_cilianensis","iNatAg-mini/eragrostis_curvula","iNatAg-mini/eragrostis_interrupta","iNatAg-mini/eragrostis_lehmanniana","iNatAg-mini/eragrostis_minor","iNatAg-mini/eragrostis_obtusa","iNatAg-mini/eragrostis_pilosa","iNatAg-mini/eragrostis_racemosa","iNatAg-mini/eragrostis_superba","iNatAg-mini/eragrostis_tef","iNatAg-mini/eragrostis_tremula","iNatAg-mini/eragrostis_trichodes","iNatAg-mini/eragrostis_unioloides","iNatAg-mini/eremochloa_ophiuroides","iNatAg-mini/erigeron_canadensis","iNatAg-mini/erigeron_cascadensis","iNatAg-mini/erigeron_divaricatus","iNatAg-mini/erigeron_philadelphicus","iNatAg-mini/eriobotrya_japonica","iNatAg-mini/eriochloa_punctata","iNatAg-mini/eriogonum_deflexum","iNatAg-mini/eriogonum_longifolium","iNatAg-mini/eriosema_psoraleoides","iNatAg-mini/eruca_sativa","iNatAg-mini/eryngium_campestre","iNatAg-mini/eryngium_yuccifolium","iNatAg-mini/erysimum_cheiranthoides","iNatAg-mini/erysimum_hieracifolium","iNatAg-mini/erysimum_hieraciifolium","iNatAg-mini/erysimum_repandum","iNatAg-mini/erythrina_abyssinica","iNatAg-mini/erythrina_caffra","iNatAg-mini/erythrina_edulis","iNatAg-mini/erythrina_fusca","iNatAg-mini/erythrina_poeppigiana","iNatAg-mini/erythrina_variegata","iNatAg-mini/erythrina_vespertilio","iNatAg-mini/erythrophleum_chlorostachys","iNatAg-mini/erythroxylum_coca","iNatAg-mini/eucalyptus_accedens","iNatAg-mini/eucalyptus_agglomerata","iNatAg-mini/eucalyptus_albens","iNatAg-mini/eucalyptus_astringens","iNatAg-mini/eucalyptus_bosistoana","iNatAg-mini/eucalyptus_botryoides","iNatAg-mini/eucalyptus_brockwayi","iNatAg-mini/eucalyptus_calophylla","iNatAg-mini/eucalyptus_camaldulensis","iNatAg-mini/eucalyptus_cinerea","iNatAg-mini/eucalyptus_citriodora","iNatAg-mini/eucalyptus_cladocalyx","iNatAg-mini/eucalyptus_cloeziana","iNatAg-mini/eucalyptus_consideniana","iNatAg-mini/eucalyptus_cornuta","iNatAg-mini/eucalyptus_crebra","iNatAg-mini/eucalyptus_cypellocarpa","iNatAg-mini/eucalyptus_dalrympleana","iNatAg-mini/eucalyptus_deglupta","iNatAg-mini/eucalyptus_delegatensis","iNatAg-mini/eucalyptus_diversicolor","iNatAg-mini/eucalyptus_dumosa","iNatAg-mini/eucalyptus_elata","iNatAg-mini/eucalyptus_eremophila","iNatAg-mini/eucalyptus_eugenioides","iNatAg-mini/eucalyptus_exserta","iNatAg-mini/eucalyptus_fastigata","iNatAg-mini/eucalyptus_fraxinoides","iNatAg-mini/eucalyptus_globoidea","iNatAg-mini/eucalyptus_globulus","iNatAg-mini/eucalyptus_gomphocephala","iNatAg-mini/eucalyptus_gongylocarpa","iNatAg-mini/eucalyptus_grandis","iNatAg-mini/eucalyptus_guilfoylei","iNatAg-mini/eucalyptus_gummifera","iNatAg-mini/eucalyptus_intertexta","iNatAg-mini/eucalyptus_jacksonii","iNatAg-mini/eucalyptus_johnstonii","iNatAg-mini/eucalyptus_kessellii","iNatAg-mini/eucalyptus_laophila","iNatAg-mini/eucalyptus_largiflorens","iNatAg-mini/eucalyptus_leucoxylon","iNatAg-mini/eucalyptus_longifolia","iNatAg-mini/eucalyptus_loxophleba","iNatAg-mini/eucalyptus_maculata","iNatAg-mini/eucalyptus_marginata","iNatAg-mini/eucalyptus_melliodora","iNatAg-mini/eucalyptus_microcarpa","iNatAg-mini/eucalyptus_microcorys","iNatAg-mini/eucalyptus_microtheca","iNatAg-mini/eucalyptus_mitchelliana","iNatAg-mini/eucalyptus_moluccana","iNatAg-mini/eucalyptus_muelleriana","iNatAg-mini/eucalyptus_nigrifunda","iNatAg-mini/eucalyptus_niphophila","iNatAg-mini/eucalyptus_nitens","iNatAg-mini/eucalyptus_obliqua","iNatAg-mini/eucalyptus_occidentalis","iNatAg-mini/eucalyptus_ochrophloia","iNatAg-mini/eucalyptus_oreades","iNatAg-mini/eucalyptus_paniculata","iNatAg-mini/eucalyptus_papuana","iNatAg-mini/eucalyptus_patens","iNatAg-mini/eucalyptus_pauciflora","iNatAg-mini/eucalyptus_pellita","iNatAg-mini/eucalyptus_phoenicea","iNatAg-mini/eucalyptus_pilularis","iNatAg-mini/eucalyptus_piperita","iNatAg-mini/eucalyptus_planchoniana","iNatAg-mini/eucalyptus_pleurocarpa","iNatAg-mini/eucalyptus_polyanthemos","iNatAg-mini/eucalyptus_populnea","iNatAg-mini/eucalyptus_propinqua","iNatAg-mini/eucalyptus_pulchella","iNatAg-mini/eucalyptus_punctata","iNatAg-mini/eucalyptus_pyrocarpa","iNatAg-mini/eucalyptus_quadrangulata","iNatAg-mini/eucalyptus_regnans","iNatAg-mini/eucalyptus_resinifera","iNatAg-mini/eucalyptus_robusta","iNatAg-mini/eucalyptus_rubida","iNatAg-mini/eucalyptus_rudis","iNatAg-mini/eucalyptus_saligna","iNatAg-mini/eucalyptus_salmonophloia","iNatAg-mini/eucalyptus_salubris","iNatAg-mini/eucalyptus_sargentii","iNatAg-mini/eucalyptus_scias","iNatAg-mini/eucalyptus_sideroxylon","iNatAg-mini/eucalyptus_sieberi","iNatAg-mini/eucalyptus_socialis","iNatAg-mini/eucalyptus_subcrenulata","iNatAg-mini/eucalyptus_tereticornis","iNatAg-mini/eucalyptus_thozetiana","iNatAg-mini/eucalyptus_transcontinentalis","iNatAg-mini/eucalyptus_trivalva","iNatAg-mini/eucalyptus_urnigera","iNatAg-mini/eucalyptus_urophylla","iNatAg-mini/eucalyptus_utilis","iNatAg-mini/eucalyptus_viminalis","iNatAg-mini/eucalyptus_wandoo","iNatAg-mini/eucalyptus_woollsiana","iNatAg-mini/eucryphia_lucida","iNatAg-mini/eugenia_aromatica","iNatAg-mini/eugenia_stipitata","iNatAg-mini/eugenia_uniflora","iNatAg-mini/euonymus_atropurpureus","iNatAg-mini/euonymus_europaeus","iNatAg-mini/euonymus_japonicus","iNatAg-mini/eupatorium_album","iNatAg-mini/eupatorium_altissimum","iNatAg-mini/eupatorium_cannabinum","iNatAg-mini/eupatorium_compositifolium","iNatAg-mini/eupatorium_hyssopifolium","iNatAg-mini/eupatorium_maculatum","iNatAg-mini/eupatorium_perfoliatum","iNatAg-mini/eupatorium_purpureum","iNatAg-mini/eupatorium_serotinum","iNatAg-mini/euphorbia_cyathophora","iNatAg-mini/euphorbia_cyparissias","iNatAg-mini/euphorbia_dendroides","iNatAg-mini/euphorbia_epicyparissias","iNatAg-mini/euphorbia_esula","iNatAg-mini/euphorbia_helioscopia","iNatAg-mini/euphorbia_heterophylla","iNatAg-mini/euphorbia_hirsuta","iNatAg-mini/euphorbia_hirta","iNatAg-mini/euphorbia_hyssopifolia","iNatAg-mini/euphorbia_lathyris","iNatAg-mini/euphorbia_lathyrus","iNatAg-mini/euphorbia_maculata","iNatAg-mini/euphorbia_marginata","iNatAg-mini/euphorbia_nutans","iNatAg-mini/euphorbia_peplis","iNatAg-mini/euphorbia_peplus","iNatAg-mini/euphorbia_platyphyllos","iNatAg-mini/euphorbia_prostata","iNatAg-mini/euphorbia_prostrata","iNatAg-mini/euphorbia_serphyllifolia","iNatAg-mini/euphorbia_serpyllifolia","iNatAg-mini/euphorbia_serrata","iNatAg-mini/euphorbia_serrulata","iNatAg-mini/euphorbia_spathulata","iNatAg-mini/euphorbia_terracina","iNatAg-mini/euphorbia_tirucalli","iNatAg-mini/euphorbia_vermiculata","iNatAg-mini/eurycoma_longifolia","iNatAg-mini/eusideroxylon_zwageri","iNatAg-mini/eustachys_paspaloides","iNatAg-mini/euterpe_edulis","iNatAg-mini/euterpe_oleracea","iNatAg-mini/euthamia_occidentalis","iNatAg-mini/evax_multicaulis","iNatAg-mini/evonymus_europaeus","iNatAg-mini/excoecaria_agallocha","iNatAg-mini/fagopyrum_esculentum","iNatAg-mini/fagopyrum_tataricum","iNatAg-mini/fagraea_fragrans","iNatAg-mini/fagus_grandifolia","iNatAg-mini/fagus_sylvatica","iNatAg-mini/faidherbia_albida","iNatAg-mini/faurea_saligna","iNatAg-mini/feijoa_sellowiana","iNatAg-mini/festuca_arundinacea","iNatAg-mini/festuca_gigantea","iNatAg-mini/festuca_idahoensis","iNatAg-mini/festuca_microstachys","iNatAg-mini/festuca_myuros","iNatAg-mini/festuca_ovina","iNatAg-mini/festuca_pratensis","iNatAg-mini/festuca_rubra","iNatAg-mini/festuca_scabra","iNatAg-mini/fibraurea_tinctoria","iNatAg-mini/ficus_abutilifolia","iNatAg-mini/ficus_auriculata","iNatAg-mini/ficus_benghalensis","iNatAg-mini/ficus_carica","iNatAg-mini/ficus_elastica","iNatAg-mini/ficus_glumosa","iNatAg-mini/ficus_macrophylla","iNatAg-mini/ficus_sycomorus","iNatAg-mini/ficus_thonningii","iNatAg-mini/filago_gallica","iNatAg-mini/filipendula_vulgaris","iNatAg-mini/flacourtia_indica","iNatAg-mini/flemingia_macrophylla","iNatAg-mini/flindersia_bourjotiana","iNatAg-mini/flindersia_brayleyana","iNatAg-mini/flindersia_pimenteliana","iNatAg-mini/foeniculum_vulgare","iNatAg-mini/fortunella_hindsii","iNatAg-mini/fortunella_japonica","iNatAg-mini/fortunella_margarita","iNatAg-mini/fragaria_ananassa","iNatAg-mini/fragaria_chiloensis","iNatAg-mini/fragaria_vesca","iNatAg-mini/fragaria_virginiana","iNatAg-mini/frangula_alnus","iNatAg-mini/fraxinus_americana","iNatAg-mini/fraxinus_excelsior","iNatAg-mini/frithia_humilis","iNatAg-mini/fuirena_simplex","iNatAg-mini/fumaria_capreolata","iNatAg-mini/fumaria_officinalis","iNatAg-mini/fumaria_parviflora","iNatAg-mini/gaillardia_pulchella","iNatAg-mini/galactia_marginalis","iNatAg-mini/galactia_striata","iNatAg-mini/galega_officinalis","iNatAg-mini/galega_orientalis","iNatAg-mini/galeopsis_ladanum","iNatAg-mini/galeopsis_tetrahit","iNatAg-mini/galinsoga_quadriradiata","iNatAg-mini/galium_aparine","iNatAg-mini/galium_mollugo","iNatAg-mini/galium_paniculatum","iNatAg-mini/galium_parisiense","iNatAg-mini/galium_saxatile","iNatAg-mini/galium_spurium","iNatAg-mini/galium_tricornutum","iNatAg-mini/galium_verum","iNatAg-mini/garcinia_dulcis","iNatAg-mini/garcinia_mangostana","iNatAg-mini/garcinia_multiflora","iNatAg-mini/garcinia_xanthochymus","iNatAg-mini/garuga_pinnata","iNatAg-mini/gaultheria_procumbens","iNatAg-mini/gaura_biennis","iNatAg-mini/geissois_benthamii","iNatAg-mini/genipa_americana","iNatAg-mini/genista_canariensis","iNatAg-mini/genista_tinctoria","iNatAg-mini/gentiana_acaulis","iNatAg-mini/gentiana_lutea","iNatAg-mini/geranium_carolinianum","iNatAg-mini/geranium_dissectum","iNatAg-mini/geranium_molle","iNatAg-mini/geranium_pratense","iNatAg-mini/geranium_pusillum","iNatAg-mini/geranium_robertianum","iNatAg-mini/girardinia_diversifolia","iNatAg-mini/glechoma_hederacea","iNatAg-mini/glecoma_hederacea","iNatAg-mini/gleditsia_triacanthos","iNatAg-mini/gliricidia_sepium","iNatAg-mini/globularia_vulgaris","iNatAg-mini/glyceria_fluitans","iNatAg-mini/glyceria_septentrionalis","iNatAg-mini/glycine_max","iNatAg-mini/glycyrrhiza_glabra","iNatAg-mini/glycyrrhiza_lepidota","iNatAg-mini/gmelina_arborea","iNatAg-mini/gmelina_leichhardtii","iNatAg-mini/gnaphalium_calviceps","iNatAg-mini/gnaphalium_luteo-album","iNatAg-mini/gnaphalium_luteoalbum","iNatAg-mini/gnaphalium_palustre","iNatAg-mini/gnaphalium_pensylvanicum","iNatAg-mini/gnaphalium_purpureum","iNatAg-mini/gnaphalium_uliginosum","iNatAg-mini/gossypium_barbadense","iNatAg-mini/gossypium_herbaceum","iNatAg-mini/gossypium_hirsutum","iNatAg-mini/grevillea_parallela","iNatAg-mini/grevillea_robusta","iNatAg-mini/grewia_asiatica","iNatAg-mini/grewia_bicolor","iNatAg-mini/grewia_tiliifolia","iNatAg-mini/guaiacum_officinale","iNatAg-mini/guaiacum_sanctum","iNatAg-mini/guazuma_ulmifolia","iNatAg-mini/guizotia_abyssinica","iNatAg-mini/gunnera_tinctoria","iNatAg-mini/gypsophila_paniculata","iNatAg-mini/hagenia_abyssinica","iNatAg-mini/hamamelis_virginiana","iNatAg-mini/hardwickia_binata","iNatAg-mini/harpagophytum_procumbens","iNatAg-mini/harpochloa_falx","iNatAg-mini/harungana_madagascariensis","iNatAg-mini/hedera_helix","iNatAg-mini/hedysarum_coronarium","iNatAg-mini/hedysarum_pallidum","iNatAg-mini/hedysarum_spinosissimum","iNatAg-mini/helenium_autumnale","iNatAg-mini/helenium_tenuifolium","iNatAg-mini/helianthus_annus","iNatAg-mini/helianthus_annuus","iNatAg-mini/helianthus_ciliaris","iNatAg-mini/helianthus_pauciflorus","iNatAg-mini/helianthus_petiolaris","iNatAg-mini/helianthus_tuberosus","iNatAg-mini/helictotrichon_turgidulum","iNatAg-mini/heliotropium_amplexicaule","iNatAg-mini/heliotropium_curassavicum","iNatAg-mini/heliotropium_europaeum","iNatAg-mini/hemarthria_altissima","iNatAg-mini/hemizonia_congesta","iNatAg-mini/heracleum_sphondylium","iNatAg-mini/heritiera_littoralis","iNatAg-mini/heteropogon_contortus","iNatAg-mini/heterotheca_grandiflora","iNatAg-mini/heuchera_mexicana","iNatAg-mini/hevea_brasiliensis","iNatAg-mini/hibiscus_cannabinus","iNatAg-mini/hibiscus_sabdariffa","iNatAg-mini/hibiscus_syriacus","iNatAg-mini/hibiscus_tiliaceus","iNatAg-mini/hibiscus_tilliaceus","iNatAg-mini/hieracium_aurantiacum","iNatAg-mini/hieracium_gronovii","iNatAg-mini/hieracium_lachenalii","iNatAg-mini/hieracium_laevigatum","iNatAg-mini/hieracium_murorum","iNatAg-mini/hieracium_pilosella","iNatAg-mini/hieracium_piloselloides","iNatAg-mini/hieracium_umbellatum","iNatAg-mini/hieracium_venosum","iNatAg-mini/hieracium_vulgatum","iNatAg-mini/hierochloe_odorata","iNatAg-mini/hilaria_jamesii","iNatAg-mini/hilaria_mutica","iNatAg-mini/hippophae_rhamnoides","iNatAg-mini/hippophae_salicifolia","iNatAg-mini/hippuris_vulgaris","iNatAg-mini/holcus_lanatus","iNatAg-mini/holcus_mollis","iNatAg-mini/hopea_odorata","iNatAg-mini/hopea_parviflora","iNatAg-mini/hopea_wightiana","iNatAg-mini/hordeum_brachyantherum","iNatAg-mini/hordeum_brevisubulatum","iNatAg-mini/hordeum_bulbosum","iNatAg-mini/hordeum_distichon","iNatAg-mini/hordeum_geniculatum","iNatAg-mini/hordeum_jubatum","iNatAg-mini/hordeum_murinum","iNatAg-mini/hordeum_vulgare","iNatAg-mini/houstonia_caerulea","iNatAg-mini/humulus_lupulus","iNatAg-mini/hydnocarpus_alpina","iNatAg-mini/hydrocotyle_americana","iNatAg-mini/hydrocotyle_mexicana","iNatAg-mini/hydrocotyle_ranunculoides","iNatAg-mini/hydrocotyle_sibthorpioides","iNatAg-mini/hydrocotyle_umbellata","iNatAg-mini/hydrocotyle_verticillata","iNatAg-mini/hydrolea_uniflora","iNatAg-mini/hylocereus_undatus","iNatAg-mini/hymenaea_courbaril","iNatAg-mini/hymenopappus_scabiosaeus","iNatAg-mini/hymenoxys_odorata","iNatAg-mini/hyosciamus_niger","iNatAg-mini/hyoscyamus_niger","iNatAg-mini/hyparrhenia_dregeana","iNatAg-mini/hyparrhenia_filipendula","iNatAg-mini/hyparrhenia_hirta","iNatAg-mini/hyparrhenia_rufa","iNatAg-mini/hypericum_canadense","iNatAg-mini/hypericum_canariense","iNatAg-mini/hypericum_mutilum","iNatAg-mini/hypericum_mutlium","iNatAg-mini/hypericum_perforatum","iNatAg-mini/hypericum_prolificum","iNatAg-mini/hypericum_punctatum","iNatAg-mini/hyperthelia_dissoluta","iNatAg-mini/hyphaene_compressa","iNatAg-mini/hyphaene_thebaica","iNatAg-mini/hypochaeris_glabra","iNatAg-mini/hypochaeris_radicata","iNatAg-mini/hypoxis_hemerocallidea","iNatAg-mini/hyssopus_officinalis","iNatAg-mini/ilex_aquifolium","iNatAg-mini/ilex_dipyrena","iNatAg-mini/ilex_paraguariensis","iNatAg-mini/impatiens_balsamina","iNatAg-mini/impatiens_parviflora","iNatAg-mini/imperata_brevifolia","iNatAg-mini/imperata_cylindrica","iNatAg-mini/indigofera_arrecta","iNatAg-mini/indigofera_hirsuta","iNatAg-mini/indigofera_oblongifolia","iNatAg-mini/indigofera_schimperi","iNatAg-mini/indigofera_spicata","iNatAg-mini/indigofera_suffruticosa","iNatAg-mini/indigofera_tinctoria","iNatAg-mini/inga_edulis","iNatAg-mini/inga_vera","iNatAg-mini/intsia_bijuga","iNatAg-mini/inula_britannica","iNatAg-mini/inula_helenium","iNatAg-mini/ipomoea_alba","iNatAg-mini/ipomoea_aquatica","iNatAg-mini/ipomoea_batatas","iNatAg-mini/ipomoea_coccinea","iNatAg-mini/ipomoea_hederifolia","iNatAg-mini/ipomoea_lacunosa","iNatAg-mini/ipomoea_quamoclit","iNatAg-mini/ipomoea_tricolor","iNatAg-mini/ipomoea_triloba","iNatAg-mini/ipomoea_turbinata","iNatAg-mini/iris_germanica","iNatAg-mini/iris_missouriensis","iNatAg-mini/iris_pseudacorus","iNatAg-mini/iris_pseudoacorus","iNatAg-mini/iris_virginica","iNatAg-mini/isatis_tinctoria","iNatAg-mini/ischaemum_ciliare","iNatAg-mini/ischaemum_muticum","iNatAg-mini/ischaemum_rugosum","iNatAg-mini/iseilema_vaginiflorum","iNatAg-mini/iva_angustifolia","iNatAg-mini/iva_annua","iNatAg-mini/jacaranda_copaia","iNatAg-mini/jacaranda_mimosifolia","iNatAg-mini/jatropha_curcas","iNatAg-mini/jatropha_gossypifolia","iNatAg-mini/jatropha_gossypiifolia","iNatAg-mini/juglans_hindsii","iNatAg-mini/juglans_nigra","iNatAg-mini/juglans_regia","iNatAg-mini/juncus_bufonius","iNatAg-mini/juncus_effusus","iNatAg-mini/juniperus_communis","iNatAg-mini/juniperus_occidentalis","iNatAg-mini/juniperus_pinchotii","iNatAg-mini/juniperus_procera","iNatAg-mini/juniperus_sabina","iNatAg-mini/justicia_adhatoda","iNatAg-mini/kalmia_angustifolia","iNatAg-mini/khaya_anthotheca","iNatAg-mini/khaya_senegalensis","iNatAg-mini/kigelia_pinnata","iNatAg-mini/kyllinga_gracillima","iNatAg-mini/kyllinga_odorata","iNatAg-mini/lablab_purpureus","iNatAg-mini/lactuca_canadensis","iNatAg-mini/lactuca_indica","iNatAg-mini/lactuca_saligna","iNatAg-mini/lactuca_serriola","iNatAg-mini/lactuca_virosa","iNatAg-mini/lagascea_mollis","iNatAg-mini/lagenaria_siceraria","iNatAg-mini/lagerstroemia_flos-reginae","iNatAg-mini/lagerstroemia_lanceolata","iNatAg-mini/lagerstroemia_parviflora","iNatAg-mini/laguncularia_racemosa","iNatAg-mini/lamium_album","iNatAg-mini/lamium_amplexicaule","iNatAg-mini/lamium_maculatum","iNatAg-mini/lamium_purpureum","iNatAg-mini/lannea_coromandelica","iNatAg-mini/lannea_edulis","iNatAg-mini/lansium_domesticum","iNatAg-mini/lantana_camara","iNatAg-mini/lapsana_communis","iNatAg-mini/larix_decidua","iNatAg-mini/larrea_divaricata","iNatAg-mini/lathyrus_angulatus","iNatAg-mini/lathyrus_cicera","iNatAg-mini/lathyrus_hirsutus","iNatAg-mini/lathyrus_latifolius","iNatAg-mini/lathyrus_ochrus","iNatAg-mini/lathyrus_odoratus","iNatAg-mini/lathyrus_palustris","iNatAg-mini/lathyrus_pratensis","iNatAg-mini/lathyrus_pubescens","iNatAg-mini/lathyrus_sativus","iNatAg-mini/lathyrus_tingitanus","iNatAg-mini/lathyrus_tuberosus","iNatAg-mini/laurus_nobilis","iNatAg-mini/lavandula_angustifolia","iNatAg-mini/lavandula_dentata","iNatAg-mini/lavandula_latifolia","iNatAg-mini/lawsonia_inermis","iNatAg-mini/ledum_groenlandicum","iNatAg-mini/leersia_hexandra","iNatAg-mini/leersia_lenticularis","iNatAg-mini/lemna_aequinoctialis","iNatAg-mini/lemna_gibba","iNatAg-mini/lemna_minor","iNatAg-mini/lemna_trisulca","iNatAg-mini/lens_culinaris","iNatAg-mini/leontodon_autumnale","iNatAg-mini/leontodon_autumnalis","iNatAg-mini/leontodon_hirtus","iNatAg-mini/leontodon_saxatilis","iNatAg-mini/leontopodium_alpinum","iNatAg-mini/leonurus_cardiaca","iNatAg-mini/leonurus_marrubiastrum","iNatAg-mini/leonurus_sibericus","iNatAg-mini/leonurus_sibiricus","iNatAg-mini/lepidium_austrinum","iNatAg-mini/lepidium_chalepense","iNatAg-mini/lepidium_didymum","iNatAg-mini/lepidium_draba","iNatAg-mini/lepidium_lasiocarpum","iNatAg-mini/lepidium_latifolium","iNatAg-mini/lepidium_perfoliatum","iNatAg-mini/lepidium_ruderale","iNatAg-mini/lepidium_sativum","iNatAg-mini/lepidium_virginicum","iNatAg-mini/leptochloa_chinensis","iNatAg-mini/leptochloa_fusca","iNatAg-mini/leptochloa_nealleyi","iNatAg-mini/lespedeza_cuneata","iNatAg-mini/lespedeza_striata","iNatAg-mini/lesquerella_fendleri","iNatAg-mini/leucaena_diversifolia","iNatAg-mini/leucaena_leucocephala","iNatAg-mini/leucanthemum_vulgare","iNatAg-mini/leucojum_aestivum","iNatAg-mini/levisticum_officinale","iNatAg-mini/liatris_mucronata","iNatAg-mini/licuala_ramsayi","iNatAg-mini/ligustrum_ovalifolium","iNatAg-mini/ligustrum_vulgare","iNatAg-mini/lilium_canadense","iNatAg-mini/lilium_candidum","iNatAg-mini/limnanthes_alba","iNatAg-mini/limnophila_sessiliflora","iNatAg-mini/linaria_vulgaris","iNatAg-mini/lindernia_grandiflora","iNatAg-mini/linum_usitatissimum","iNatAg-mini/lippia_alba","iNatAg-mini/liquidambar_styraciflua","iNatAg-mini/liriodendron_tulipifera","iNatAg-mini/litchi_chinensis","iNatAg-mini/lithospermum_arvense","iNatAg-mini/lithospermum_officinale","iNatAg-mini/livistona_australis","iNatAg-mini/lobelia_inflata","iNatAg-mini/lobelia_siphilitica","iNatAg-mini/lolium_multiflorum","iNatAg-mini/lolium_perenne","iNatAg-mini/lolium_rigidum","iNatAg-mini/lolium_temulentum","iNatAg-mini/lonchocarpus_laxiflorus","iNatAg-mini/lonicera_caerulea","iNatAg-mini/lonicera_caprifolium","iNatAg-mini/lonicera_periclymenum","iNatAg-mini/lonicera_sempervirens","iNatAg-mini/lonicera_tartarica","iNatAg-mini/lonicera_tatarica","iNatAg-mini/lonicera_xylosteum","iNatAg-mini/lophostemon_suaveolens","iNatAg-mini/lotus_corniculatus","iNatAg-mini/lotus_creticus","iNatAg-mini/lotus_edulis","iNatAg-mini/lotus_halophilus","iNatAg-mini/lotus_parviflorus","iNatAg-mini/lotus_tenuis","iNatAg-mini/lotus_uliginosus","iNatAg-mini/loudetia_simplex","iNatAg-mini/ludwigia_adscendens","iNatAg-mini/ludwigia_alternifolia","iNatAg-mini/luffa_acutangula","iNatAg-mini/luffa_cylindrica","iNatAg-mini/lumnitzera_littorea","iNatAg-mini/lumnitzera_racemosa","iNatAg-mini/lunaria_annua","iNatAg-mini/lupinus_albus","iNatAg-mini/lupinus_angustifolius","iNatAg-mini/lupinus_arboreus","iNatAg-mini/lupinus_cosentinii","iNatAg-mini/lupinus_luteus","iNatAg-mini/lupinus_mutabilis","iNatAg-mini/lupinus_pilosus","iNatAg-mini/lychnis_chalcedonica","iNatAg-mini/lychnis_flos-cuculi","iNatAg-mini/lychnis_viscaria","iNatAg-mini/lycium_barbarum","iNatAg-mini/lycium_berlandieri","iNatAg-mini/lycium_chinense","iNatAg-mini/lycium_ferocissimum","iNatAg-mini/lycium_halimifolium","iNatAg-mini/lycopersicon_esculentum","iNatAg-mini/lycopodium_clavatum","iNatAg-mini/lycopus_europaeus","iNatAg-mini/lysimachia_ciliata","iNatAg-mini/lysimachia_nummularia","iNatAg-mini/lysimachia_punctata","iNatAg-mini/lysimachia_vulgaris","iNatAg-mini/lythrum_hyssopifolia","iNatAg-mini/lythrum_salicaria","iNatAg-mini/lythrum_virgatum","iNatAg-mini/macadamia_integrifolia","iNatAg-mini/macadamia_tetraphylla","iNatAg-mini/macaranga_tanarius","iNatAg-mini/macroptilium_atropurpureum","iNatAg-mini/macroptilium_erythroloma","iNatAg-mini/macroptilium_gracile","iNatAg-mini/macroptilium_lathyroides","iNatAg-mini/macroptilium_longepedunculatum","iNatAg-mini/macrotyloma_axillare","iNatAg-mini/maesopsis_eminii","iNatAg-mini/maianthemum_canadense","iNatAg-mini/majorana_hortensis","iNatAg-mini/malachra_alceifolia","iNatAg-mini/mallotus_philippensis","iNatAg-mini/malpighia_glabra","iNatAg-mini/malus_domestica","iNatAg-mini/malus_sylvestris","iNatAg-mini/malva_alcea","iNatAg-mini/malva_moschata","iNatAg-mini/malva_nicaeensis","iNatAg-mini/malva_parviflora","iNatAg-mini/malva_pusilla","iNatAg-mini/malva_rotundifolia","iNatAg-mini/malva_silvestris","iNatAg-mini/malva_sylvestris","iNatAg-mini/mammea_americana","iNatAg-mini/mangifera_indica","iNatAg-mini/manihot_esculenta","iNatAg-mini/manilkara_zapota","iNatAg-mini/maranta_arundinacea","iNatAg-mini/markhamia_lutea","iNatAg-mini/marrubium_vulgare","iNatAg-mini/marsilea_quadrifolia","iNatAg-mini/matricaria_chamomila","iNatAg-mini/matricaria_chamomilla","iNatAg-mini/matricaria_discoidea","iNatAg-mini/matricaria_perforata","iNatAg-mini/matricaria_recutita","iNatAg-mini/mauritia_flexuosa","iNatAg-mini/mayaca_fluviatilis","iNatAg-mini/medicago_arabica","iNatAg-mini/medicago_falcata","iNatAg-mini/medicago_intertexta","iNatAg-mini/medicago_laciniata","iNatAg-mini/medicago_littoralis","iNatAg-mini/medicago_lupulina","iNatAg-mini/medicago_marina","iNatAg-mini/medicago_minima","iNatAg-mini/medicago_orbicularis","iNatAg-mini/medicago_polymorpha","iNatAg-mini/medicago_rigidula","iNatAg-mini/medicago_rugosa","iNatAg-mini/medicago_sativa","iNatAg-mini/medicago_scutellata","iNatAg-mini/medicago_tornata","iNatAg-mini/medicago_truncatula","iNatAg-mini/medicago_turbinata","iNatAg-mini/melaleuca_bracteata","iNatAg-mini/melaleuca_cajuputi","iNatAg-mini/melaleuca_dealbata","iNatAg-mini/melaleuca_lanceolata","iNatAg-mini/melaleuca_leucadendron","iNatAg-mini/melaleuca_nervosa","iNatAg-mini/melaleuca_quinquenervia","iNatAg-mini/melaleuca_viridiflora","iNatAg-mini/melampyrum_lineare","iNatAg-mini/melastoma_malabathricum","iNatAg-mini/melastoma_melabathricum","iNatAg-mini/melia_azedarach","iNatAg-mini/melica_decumbens","iNatAg-mini/melicoccus_bijugatus","iNatAg-mini/melilotus_albus","iNatAg-mini/melilotus_indica","iNatAg-mini/melilotus_officinalis","iNatAg-mini/melilotus_suaveolens","iNatAg-mini/melinis_minutiflora","iNatAg-mini/melissa_officinalis","iNatAg-mini/melochia_corchorifolia","iNatAg-mini/melothria_pendula","iNatAg-mini/mentha_arvensis","iNatAg-mini/mentha_longifolia","iNatAg-mini/mentha_piperita","iNatAg-mini/mentha_pulegium","iNatAg-mini/mentha_rotundifolia","iNatAg-mini/mentha_spicata","iNatAg-mini/menyanthes_trifoliata","iNatAg-mini/mercurialis_annua","iNatAg-mini/mesembryanthemum_cristallinum","iNatAg-mini/mesembryanthemum_noctiflorum","iNatAg-mini/mespilus_germanica","iNatAg-mini/mesua_ferrea","iNatAg-mini/metroxylon_sagu","iNatAg-mini/michelia_champaca","iNatAg-mini/microstegium_ciliatum","iNatAg-mini/miliusa_velutina","iNatAg-mini/mimosa_casta","iNatAg-mini/mimosa_dutrae","iNatAg-mini/mimosa_pigra","iNatAg-mini/mimosa_pudica","iNatAg-mini/mirabilis_jalapa","iNatAg-mini/molinia_caerulea","iNatAg-mini/mollugo_verticillata","iNatAg-mini/momordica_charantia","iNatAg-mini/momordica_cochinchinensis","iNatAg-mini/monarda_fistulosa","iNatAg-mini/monarda_punctata","iNatAg-mini/monochoria_hastata","iNatAg-mini/monochoria_vaginalis","iNatAg-mini/monocymbium_ceresiiforme","iNatAg-mini/monstera_deliciosa","iNatAg-mini/montanoa_hibiscifolia","iNatAg-mini/morinda_citrifolia","iNatAg-mini/moringa_oleifera","iNatAg-mini/morus_alba","iNatAg-mini/morus_nigra","iNatAg-mini/morus_rubra","iNatAg-mini/mucuna_pruriens","iNatAg-mini/muntingia_calabura","iNatAg-mini/murraya_koenigii","iNatAg-mini/musa_acuminata","iNatAg-mini/musa_acuminata_×_balbisiana","iNatAg-mini/musa_balbisiana","iNatAg-mini/musa_sapientium","iNatAg-mini/musanga_cecropioides","iNatAg-mini/muscari_comosum","iNatAg-mini/myosotis_alpestris","iNatAg-mini/myosurus_minimus","iNatAg-mini/myrica_cerifera","iNatAg-mini/myriophyllum_heterophyllum","iNatAg-mini/myriophyllum_implicatum","iNatAg-mini/myriophyllum_sibiricum","iNatAg-mini/myriophyllum_spicatum","iNatAg-mini/myriophyllum_verticillatum","iNatAg-mini/myristica_fragrans","iNatAg-mini/myroxylon_balsamum","iNatAg-mini/myrsine_africana","iNatAg-mini/myrtus_communis","iNatAg-mini/nardus_stricta","iNatAg-mini/nasturtium_officinale","iNatAg-mini/nauclea_orientalis","iNatAg-mini/nelumbo_nucifera","iNatAg-mini/neofabricia_myrtifolia","iNatAg-mini/neoglaziovia_variegata","iNatAg-mini/neonotonia_wightii","iNatAg-mini/nepeta_cataria","iNatAg-mini/nephelium_lappaceum","iNatAg-mini/nephelium_mutabile","iNatAg-mini/nerium_oleander","iNatAg-mini/nicotiana_quadrivalvis","iNatAg-mini/nicotiana_rustica","iNatAg-mini/nicotiana_trigonophylla","iNatAg-mini/nigella_sativa","iNatAg-mini/nothofagus_cunninghamii","iNatAg-mini/nothofagus_moorei","iNatAg-mini/nothoscordum_borbonicum","iNatAg-mini/nuphar_advena","iNatAg-mini/nuphar_lutea","iNatAg-mini/nymphaea_alba","iNatAg-mini/nypa_fruticans","iNatAg-mini/ochroma_pyramidale","iNatAg-mini/ocimum_americanum","iNatAg-mini/ocimum_basilicum","iNatAg-mini/ocimum_tenuiflorum","iNatAg-mini/octomeles_sumatrana","iNatAg-mini/oenanthe_javanica","iNatAg-mini/oenothera_albicaulis","iNatAg-mini/oenothera_biennis","iNatAg-mini/oenothera_parviflora","iNatAg-mini/oenothera_perennis","iNatAg-mini/oldenlandia_corymbosa","iNatAg-mini/olea_africana","iNatAg-mini/olea_capensis","iNatAg-mini/olea_europaea","iNatAg-mini/olea_europea","iNatAg-mini/oncosperma_tigillarium","iNatAg-mini/onobrychis_viciifolia","iNatAg-mini/ononis_alopecuroides","iNatAg-mini/ononis_spinosa","iNatAg-mini/onopordum_acanthium","iNatAg-mini/onopordum_illyricum","iNatAg-mini/onosmodium_discolor","iNatAg-mini/opuntia_ficus-indica","iNatAg-mini/opuntia_leptocaulis","iNatAg-mini/opuntia_polyacantha","iNatAg-mini/opuntia_polycantha","iNatAg-mini/origanum_majorana","iNatAg-mini/origanum_onites","iNatAg-mini/origanum_vulgare","iNatAg-mini/ornithogalum_nutans","iNatAg-mini/ornithogalum_umbellatum","iNatAg-mini/ornithopus_compressus","iNatAg-mini/ornithopus_sativus","iNatAg-mini/orobanche_flava","iNatAg-mini/orobanche_ludoviciana","iNatAg-mini/orobanche_minor","iNatAg-mini/orobanche_ramosa","iNatAg-mini/orontium_aquaticum","iNatAg-mini/orthosiphon_aristatus","iNatAg-mini/oryza_sativa","iNatAg-mini/oryzopsis_holciformis","iNatAg-mini/oryzopsis_miliacea","iNatAg-mini/osmorhiza_berteroi","iNatAg-mini/osmunda_regalis","iNatAg-mini/ottochloa_nodosa","iNatAg-mini/oxalis_acetosella","iNatAg-mini/oxalis_corniculata","iNatAg-mini/oxalis_pes-caprae","iNatAg-mini/oxalis_pescaprae","iNatAg-mini/oxalis_stricta","iNatAg-mini/oxalis_tuberosa","iNatAg-mini/oxytropis_lambertii","iNatAg-mini/pachyrhizus_erosus","iNatAg-mini/paederia_cruddasiana","iNatAg-mini/paederia_foetida","iNatAg-mini/paeonia_officinalis","iNatAg-mini/panax_ginseng","iNatAg-mini/panax_quinquefolius","iNatAg-mini/pangium_edule","iNatAg-mini/panicum_antidotale","iNatAg-mini/panicum_capillare","iNatAg-mini/panicum_coloratum","iNatAg-mini/panicum_ecklonii","iNatAg-mini/panicum_gattingeri","iNatAg-mini/panicum_maximum","iNatAg-mini/panicum_miliaceum","iNatAg-mini/panicum_natalense","iNatAg-mini/panicum_obtusum","iNatAg-mini/panicum_pilosum","iNatAg-mini/panicum_racemosum","iNatAg-mini/panicum_repens","iNatAg-mini/panicum_sphaerocarpon","iNatAg-mini/panicum_trichocladum","iNatAg-mini/panicum_turgidum","iNatAg-mini/panicum_virgatum","iNatAg-mini/papaver_argemone","iNatAg-mini/papaver_bracteatum","iNatAg-mini/papaver_dubium","iNatAg-mini/papaver_rhoeas","iNatAg-mini/papaver_somniferum","iNatAg-mini/parietaria_floridana","iNatAg-mini/parietaria_officinalis","iNatAg-mini/parinari_curatellifolia","iNatAg-mini/parkia_biglobosa","iNatAg-mini/parkia_speciosa","iNatAg-mini/parkinsonia_aculeata","iNatAg-mini/parnassia_palustris","iNatAg-mini/parsonsia_latifolia","iNatAg-mini/parthenium_argentatum","iNatAg-mini/parthenium_hysterophorus","iNatAg-mini/paspalum_conjugatum","iNatAg-mini/paspalum_dilatatum","iNatAg-mini/paspalum_distichum","iNatAg-mini/paspalum_nicorae","iNatAg-mini/paspalum_notatum","iNatAg-mini/paspalum_plicatulum","iNatAg-mini/paspalum_scrobiculatum","iNatAg-mini/paspalum_separatum","iNatAg-mini/paspalum_urvillei","iNatAg-mini/paspalum_vaginatum","iNatAg-mini/passiflora_bicornis","iNatAg-mini/passiflora_edulis","iNatAg-mini/passiflora_foetida","iNatAg-mini/passiflora_incarnata","iNatAg-mini/passiflora_laurifolia","iNatAg-mini/passiflora_ligularis","iNatAg-mini/passiflora_lutea","iNatAg-mini/passiflora_mollissima","iNatAg-mini/passiflora_quadrangularis","iNatAg-mini/passiflora_suberosa","iNatAg-mini/pastinaca_sativa","iNatAg-mini/paullinia_cupana","iNatAg-mini/paulownia_tomentosa","iNatAg-mini/peganum_harmala","iNatAg-mini/pelargonium_graveolens","iNatAg-mini/peltandra_sagittifolia","iNatAg-mini/peltandra_virginica","iNatAg-mini/peltophorum_africanum","iNatAg-mini/peltophorum_pterocarpum","iNatAg-mini/pennisetum_clandestinum","iNatAg-mini/pennisetum_glaucum","iNatAg-mini/pennisetum_macrourum","iNatAg-mini/pennisetum_pedicellatum","iNatAg-mini/pennisetum_polystachyon","iNatAg-mini/pennisetum_purpureum","iNatAg-mini/pennisetum_setaceum","iNatAg-mini/pennisetum_villosum","iNatAg-mini/perilla_frutescens","iNatAg-mini/persea_americana","iNatAg-mini/persicaria_maculosa","iNatAg-mini/persoonia_falcata","iNatAg-mini/petalostigma_pubescens","iNatAg-mini/petasites_albus","iNatAg-mini/petasites_hybridus","iNatAg-mini/petroselinum_crispum","iNatAg-mini/petunia_parviflora","iNatAg-mini/peucedanum_ostruthium","iNatAg-mini/phalaris_aquatica","iNatAg-mini/phalaris_arundinacea","iNatAg-mini/phalaris_arundinaceae","iNatAg-mini/phalaris_brachystachys","iNatAg-mini/phalaris_canariensis","iNatAg-mini/phalaris_caroliniana","iNatAg-mini/phalaris_coerulescens","iNatAg-mini/phalaris_paradoxa","iNatAg-mini/phaseolus_acutifolius","iNatAg-mini/phaseolus_coccineus","iNatAg-mini/phaseolus_lunatus","iNatAg-mini/phaseolus_vulgaris","iNatAg-mini/phleum_alpinum","iNatAg-mini/phleum_pratense","iNatAg-mini/phoenix_dactylifera","iNatAg-mini/phoenix_reclinata","iNatAg-mini/phoenix_sylvestris","iNatAg-mini/phormium_tenax","iNatAg-mini/phragmites_australis","iNatAg-mini/phragmites_communis","iNatAg-mini/phragmites_karka","iNatAg-mini/phyllanthus_niruri","iNatAg-mini/phyllanthus_tenellus","iNatAg-mini/phyllanthus_urinaria","iNatAg-mini/phyllocladus_aspleniifolius","iNatAg-mini/physalis_alkekengi","iNatAg-mini/physalis_angulata","iNatAg-mini/physalis_heterophylla","iNatAg-mini/physalis_lancifolia","iNatAg-mini/physalis_peruviana","iNatAg-mini/physalis_philadelphica","iNatAg-mini/physalis_pubescens","iNatAg-mini/physalis_virginiana","iNatAg-mini/physalis_viscosa","iNatAg-mini/phytolacca_acinosa","iNatAg-mini/phytolacca_americana","iNatAg-mini/phytolacca_dioica","iNatAg-mini/picea_abies","iNatAg-mini/picea_omorica","iNatAg-mini/picea_omorika","iNatAg-mini/picris_echioides","iNatAg-mini/picris_hieracioides","iNatAg-mini/piliostigma_reticulatum","iNatAg-mini/piliostigma_thonningii","iNatAg-mini/pimenta_dioica","iNatAg-mini/pimenta_racemosa","iNatAg-mini/pimpinella_anisum","iNatAg-mini/pimpinella_saxifraga","iNatAg-mini/pinguicula_vulgaris","iNatAg-mini/pinus_ayacahuite","iNatAg-mini/pinus_brutia","iNatAg-mini/pinus_canariensis","iNatAg-mini/pinus_caribaea","iNatAg-mini/pinus_chiapensis","iNatAg-mini/pinus_douglasiana","iNatAg-mini/pinus_durangensis","iNatAg-mini/pinus_greggii","iNatAg-mini/pinus_halepensis","iNatAg-mini/pinus_hartwegii","iNatAg-mini/pinus_kesiya","iNatAg-mini/pinus_merkusii","iNatAg-mini/pinus_montezumae","iNatAg-mini/pinus_mugo","iNatAg-mini/pinus_occidentalis","iNatAg-mini/pinus_oocarpa","iNatAg-mini/pinus_palustris","iNatAg-mini/pinus_patula","iNatAg-mini/pinus_pinaster","iNatAg-mini/pinus_pinea","iNatAg-mini/pinus_ponderosa","iNatAg-mini/pinus_pseudostrobus","iNatAg-mini/pinus_radiata","iNatAg-mini/pinus_roxburghii","iNatAg-mini/pinus_sylvestris","iNatAg-mini/pinus_tabuliformis","iNatAg-mini/pinus_taeda","iNatAg-mini/pinus_teocote","iNatAg-mini/piper_aduncum","iNatAg-mini/piper_betle","iNatAg-mini/piper_longum","iNatAg-mini/piper_methysticum","iNatAg-mini/piper_nigrum","iNatAg-mini/pistacia_atlantica","iNatAg-mini/pistacia_lentiscus","iNatAg-mini/pistacia_vera","iNatAg-mini/pistia_stratiotes","iNatAg-mini/pisum_sativum","iNatAg-mini/pithecellobium_dulce","iNatAg-mini/pittosporum_resiniferum","iNatAg-mini/pittosporum_undulatum","iNatAg-mini/plagiobothrys_canescens","iNatAg-mini/plantago_coronopus","iNatAg-mini/plantago_heterophylla","iNatAg-mini/plantago_indica","iNatAg-mini/plantago_lanceolata","iNatAg-mini/plantago_major","iNatAg-mini/plantago_media","iNatAg-mini/plantago_ovata","iNatAg-mini/plantago_psyllium","iNatAg-mini/plantago_virginica","iNatAg-mini/platanus_orientalis","iNatAg-mini/poa_alpina","iNatAg-mini/poa_annua","iNatAg-mini/poa_bulbosa","iNatAg-mini/poa_compressa","iNatAg-mini/poa_cuspidata","iNatAg-mini/poa_fendleriana","iNatAg-mini/poa_nemoralis","iNatAg-mini/poa_pratensis","iNatAg-mini/poa_trivialis","iNatAg-mini/podocarpus_elatus","iNatAg-mini/podocarpus_falcatus","iNatAg-mini/poeciloneuron_indicum","iNatAg-mini/pogostemon_cablin","iNatAg-mini/polemonium_caeruleum","iNatAg-mini/polemonium_micranthum","iNatAg-mini/polyalthia_fragrans","iNatAg-mini/polycarpon_tetraphyllum","iNatAg-mini/polygonatum_orientale","iNatAg-mini/polygonum_achoreum","iNatAg-mini/polygonum_arenastrum","iNatAg-mini/polygonum_aviculare","iNatAg-mini/polygonum_bistorta","iNatAg-mini/polygonum_convolvulus","iNatAg-mini/polygonum_equisetiforme","iNatAg-mini/polygonum_erectum","iNatAg-mini/polygonum_hydropiper","iNatAg-mini/polygonum_hydropiperoides","iNatAg-mini/polygonum_lapathifolium","iNatAg-mini/polygonum_orientale","iNatAg-mini/polygonum_pensylvanicum","iNatAg-mini/polygonum_perfoliatum","iNatAg-mini/polygonum_persicaria","iNatAg-mini/polygonum_punctatum","iNatAg-mini/polygonum_ramosissimum","iNatAg-mini/polygonum_scandens","iNatAg-mini/polymnia_sonchifolia","iNatAg-mini/polypodium_vulgare","iNatAg-mini/polypogon_interruptus","iNatAg-mini/polypremum_procumbens","iNatAg-mini/polyscias_fulva","iNatAg-mini/polytrichum_commune","iNatAg-mini/pongamia_pinnata","iNatAg-mini/pontederia_cordata","iNatAg-mini/pontederia_rotundifolia","iNatAg-mini/populus_balsamifera","iNatAg-mini/populus_ciliata","iNatAg-mini/populus_deltoides","iNatAg-mini/populus_euphratica","iNatAg-mini/populus_simonii","iNatAg-mini/portulaca_oleracea","iNatAg-mini/portulaca_pilosa","iNatAg-mini/portulaca_pilosa_pilosa","iNatAg-mini/portulaca_quadrifida","iNatAg-mini/potamogeton_diversifolius","iNatAg-mini/potamogeton_epihydrus","iNatAg-mini/potamogeton_filiformis","iNatAg-mini/potamogeton_foliosus","iNatAg-mini/potamogeton_friesii","iNatAg-mini/potamogeton_gramineus","iNatAg-mini/potamogeton_illinoensis","iNatAg-mini/potamogeton_natans","iNatAg-mini/potamogeton_nodosus","iNatAg-mini/potamogeton_pectinatus","iNatAg-mini/potamogeton_praelongus","iNatAg-mini/potamogeton_pusillus","iNatAg-mini/potamogeton_zosteriformis","iNatAg-mini/potentilla_anserina","iNatAg-mini/potentilla_argentea","iNatAg-mini/potentilla_erecta","iNatAg-mini/potentilla_fruticosa","iNatAg-mini/potentilla_intermedia","iNatAg-mini/potentilla_norvegica","iNatAg-mini/potentilla_norvegicae","iNatAg-mini/potentilla_recta","iNatAg-mini/potentilla_reptans","iNatAg-mini/potentilla_tridentata","iNatAg-mini/poterium_sanguisorba","iNatAg-mini/pouteria_campechiana","iNatAg-mini/pouteria_lucuma","iNatAg-mini/pouteria_sapota","iNatAg-mini/prasophyllum_elatum","iNatAg-mini/primula_veris","iNatAg-mini/proserpinaca_palustris","iNatAg-mini/proserpinaca_pectinata","iNatAg-mini/prosopis_affinis","iNatAg-mini/prosopis_africana","iNatAg-mini/prosopis_alba","iNatAg-mini/prosopis_chilensis","iNatAg-mini/prosopis_cineraria","iNatAg-mini/prosopis_glandulosa","iNatAg-mini/prosopis_juliflora","iNatAg-mini/prosopis_nigra","iNatAg-mini/prosopis_pallida","iNatAg-mini/prosopis_tamarugo","iNatAg-mini/prosopis_velutina","iNatAg-mini/prunella_vulgaris","iNatAg-mini/prunus_africana","iNatAg-mini/prunus_amygdalus","iNatAg-mini/prunus_armeniaca","iNatAg-mini/prunus_avium","iNatAg-mini/prunus_capuli","iNatAg-mini/prunus_cerasus","iNatAg-mini/prunus_domestica","iNatAg-mini/prunus_laurocerasus","iNatAg-mini/prunus_mahaleb","iNatAg-mini/prunus_mume","iNatAg-mini/prunus_padus","iNatAg-mini/prunus_pensylvanica","iNatAg-mini/prunus_persica","iNatAg-mini/prunus_salicina","iNatAg-mini/prunus_spinosa","iNatAg-mini/prunus_virginiana","iNatAg-mini/psathyrostachys_juncea","iNatAg-mini/psidium_cattleianum","iNatAg-mini/psidium_friedrichsthalianum","iNatAg-mini/psidium_guajava","iNatAg-mini/psophocarpus_tetragonolobus","iNatAg-mini/psoralea_repens","iNatAg-mini/ptelea_trifoliata","iNatAg-mini/pterocarpus_angolensis","iNatAg-mini/pterocarpus_dalbergioides","iNatAg-mini/pterocarpus_erinaceus","iNatAg-mini/pterocarpus_indicus","iNatAg-mini/pterocarpus_lucens","iNatAg-mini/pterocarpus_macrocarpus","iNatAg-mini/pterocarpus_marsupium","iNatAg-mini/pterocarpus_santalinoides","iNatAg-mini/pterocarpus_santalinus","iNatAg-mini/pueraria_lobata","iNatAg-mini/pueraria_phaseoloides","iNatAg-mini/pulmonaria_officinalis","iNatAg-mini/punica_granatum","iNatAg-mini/pycnanthus_angolensis","iNatAg-mini/pyrola_rotundifolia","iNatAg-mini/pyrus_communis","iNatAg-mini/pyrus_pyrifolia","iNatAg-mini/quercus_agrifolia","iNatAg-mini/quercus_alba","iNatAg-mini/quercus_bicolor","iNatAg-mini/quercus_chrysolepis","iNatAg-mini/quercus_dumosa","iNatAg-mini/quercus_fusiformis","iNatAg-mini/quercus_ilex","iNatAg-mini/quercus_incana","iNatAg-mini/quercus_lanata","iNatAg-mini/quercus_nigra","iNatAg-mini/quercus_phellos","iNatAg-mini/quercus_robur","iNatAg-mini/quercus_semecarpifolia","iNatAg-mini/quercus_suber","iNatAg-mini/quercus_virginiana","iNatAg-mini/quisqualis_indica","iNatAg-mini/ranunculus_abortivus","iNatAg-mini/ranunculus_acris","iNatAg-mini/ranunculus_arbortivus","iNatAg-mini/ranunculus_arvensis","iNatAg-mini/ranunculus_bulbosus","iNatAg-mini/ranunculus_californicus","iNatAg-mini/ranunculus_cymbalaria","iNatAg-mini/ranunculus_ficaria","iNatAg-mini/ranunculus_flabellaris","iNatAg-mini/ranunculus_muricatulus","iNatAg-mini/ranunculus_muricatus","iNatAg-mini/ranunculus_occidentalis","iNatAg-mini/ranunculus_orthorhynchus","iNatAg-mini/ranunculus_parviflorus","iNatAg-mini/ranunculus_sceleratus","iNatAg-mini/ranunculus_testiculatus","iNatAg-mini/ranunculus_trichophyllus","iNatAg-mini/raphanus_raphanistrum","iNatAg-mini/raphanus_sativus","iNatAg-mini/rauvolfia_caffra","iNatAg-mini/rauvolfia_serpentina","iNatAg-mini/reseda_alba","iNatAg-mini/reseda_lutea","iNatAg-mini/retama_monosperma","iNatAg-mini/rhamnus_cathartica","iNatAg-mini/rhamnus_prinoides","iNatAg-mini/rheum_palmatum","iNatAg-mini/rheum_rhaponticum","iNatAg-mini/rhigozum_trichotomum","iNatAg-mini/rhinanthus_crista-galli","iNatAg-mini/rhinanthus_minor","iNatAg-mini/rhizophora_mangle","iNatAg-mini/rhizophora_mucronata","iNatAg-mini/rhizophora_stylosa","iNatAg-mini/rhodiola_rosea","iNatAg-mini/rhododendron_ferrugineum","iNatAg-mini/rhus_copallinum","iNatAg-mini/rhus_glabra","iNatAg-mini/rhus_typhina","iNatAg-mini/rhynchosia_minima","iNatAg-mini/rhynchosia_senna","iNatAg-mini/rhynchosia_sublobata","iNatAg-mini/ribes_hirtellum","iNatAg-mini/ribes_nigrum","iNatAg-mini/ribes_rubrum","iNatAg-mini/ribes_uva-crispa","iNatAg-mini/ribes_viscosissimum","iNatAg-mini/richardia_brasiliensis","iNatAg-mini/richardia_scabra","iNatAg-mini/ricinus_communis","iNatAg-mini/ricinus_comunis","iNatAg-mini/rivina_humilis","iNatAg-mini/robinia_pseudoacacia","iNatAg-mini/roemeria_refracta","iNatAg-mini/rosa_canina","iNatAg-mini/rosa_cinnamomea","iNatAg-mini/rosa_eglanteria","iNatAg-mini/rosa_pendulina","iNatAg-mini/rosa_pimpinellifolia","iNatAg-mini/rosa_rubiginosa","iNatAg-mini/rosa_spinosissima","iNatAg-mini/roseodendron_donnell-smithii","iNatAg-mini/rosmarinus_officinalis","iNatAg-mini/rubia_tinctorum","iNatAg-mini/rubus_ellipticus","iNatAg-mini/rubus_fructicosus","iNatAg-mini/rubus_fruticosus","iNatAg-mini/rubus_hispidus","iNatAg-mini/rubus_idaeus","iNatAg-mini/rubus_moluccanus","iNatAg-mini/rubus_occidentalis","iNatAg-mini/rubus_pensilvanicus","iNatAg-mini/rudbeckia_amplexicaulis","iNatAg-mini/rudbeckia_hirta","iNatAg-mini/rudbeckia_laciniata","iNatAg-mini/rudbeckia_triloba","iNatAg-mini/rumex_acetosa","iNatAg-mini/rumex_acetosella","iNatAg-mini/rumex_aquaticus","iNatAg-mini/rumex_crispus","iNatAg-mini/rumex_dentatus","iNatAg-mini/rumex_hymenosepalus","iNatAg-mini/rumex_longifolius","iNatAg-mini/rumex_maritimus","iNatAg-mini/rumex_obtusifolius","iNatAg-mini/rumex_patienta","iNatAg-mini/rumex_patientia","iNatAg-mini/rumex_pseudonatronatus","iNatAg-mini/rumex_pulcher","iNatAg-mini/rumex_verticillatus","iNatAg-mini/ruppia_maritima","iNatAg-mini/ruscus_aculeatus","iNatAg-mini/ruta_graveolens","iNatAg-mini/saccharum_officinarum","iNatAg-mini/saccharum_sinense","iNatAg-mini/saccharum_spontaneum","iNatAg-mini/sacorstemma_cynanchoides","iNatAg-mini/sagina_procumbens","iNatAg-mini/sagittaria_kurziana","iNatAg-mini/sagittaria_lancifolia","iNatAg-mini/sagittaria_latifolia","iNatAg-mini/sagittaria_sagittifolia","iNatAg-mini/salacca_wallichiana","iNatAg-mini/salacca_zalacca","iNatAg-mini/salicornia_bigelovii","iNatAg-mini/salix_alba","iNatAg-mini/salix_caprea","iNatAg-mini/salix_laevigata","iNatAg-mini/salix_pentandra","iNatAg-mini/salix_viminalis","iNatAg-mini/salsola_kali","iNatAg-mini/salsola_tragus","iNatAg-mini/salsola_vermiculata","iNatAg-mini/salvadora_persica","iNatAg-mini/salvia_lyrata","iNatAg-mini/salvia_officinalis","iNatAg-mini/salvia_sclarea","iNatAg-mini/salvia_verticillata","iNatAg-mini/salvinia_auriculata","iNatAg-mini/samanea_saman","iNatAg-mini/sambucus_canadensis","iNatAg-mini/sambucus_canadiensis","iNatAg-mini/sambucus_cerulea","iNatAg-mini/sambucus_ebulus","iNatAg-mini/sambucus_nigra","iNatAg-mini/sambucus_racemosa","iNatAg-mini/samolus_parviflorus","iNatAg-mini/samolus_valerandi","iNatAg-mini/sanguisorba_minor","iNatAg-mini/sanguisorba_officinalis","iNatAg-mini/sanicula_europaea","iNatAg-mini/santalum_acuminatum","iNatAg-mini/santalum_album","iNatAg-mini/santolina_chamaecyparissus","iNatAg-mini/sapindus_emarginatus","iNatAg-mini/sapindus_saponaria","iNatAg-mini/sapium_sebiferum","iNatAg-mini/saponaria_officinalis","iNatAg-mini/sarcostemma_cynanchoides","iNatAg-mini/satureja_hortensis","iNatAg-mini/satureja_montana","iNatAg-mini/sauropus_androgynus","iNatAg-mini/saururus_cernuus","iNatAg-mini/scandix_pecten-veneris","iNatAg-mini/schima_wallichii","iNatAg-mini/schinus_molle","iNatAg-mini/schinus_terebinthifolia","iNatAg-mini/schinus_terebinthifolius","iNatAg-mini/schismus_arabicus","iNatAg-mini/schizolobium_parahyba","iNatAg-mini/schizomeria_ovata","iNatAg-mini/schleichera_oleosa","iNatAg-mini/scirpus_lacustris","iNatAg-mini/scleranthus_annuus","iNatAg-mini/sclerocarya_caffra","iNatAg-mini/scoparia_dulcis","iNatAg-mini/scorzonera_laciniata","iNatAg-mini/scrophularia_lanceolata","iNatAg-mini/searsia_angustifolia","iNatAg-mini/secale_cereale","iNatAg-mini/secale_montanum","iNatAg-mini/sechium_edule","iNatAg-mini/securidaca_longepedunculata","iNatAg-mini/securidaca_longipedunculata","iNatAg-mini/sedum_acre","iNatAg-mini/sedum_telephium","iNatAg-mini/sehima_nervosum","iNatAg-mini/sempervivum_arachnoideum","iNatAg-mini/sempervivum_tectorum","iNatAg-mini/senecio_elegans","iNatAg-mini/senecio_jacobaea","iNatAg-mini/senecio_madagascariensis","iNatAg-mini/senecio_plattensis","iNatAg-mini/senecio_squalidus","iNatAg-mini/senecio_sylvaticus","iNatAg-mini/senecio_viscosus","iNatAg-mini/senecio_vulgaris","iNatAg-mini/senna_spectabilis","iNatAg-mini/serenoa_repens","iNatAg-mini/sesamum_indicum","iNatAg-mini/sesbania_bispinosa","iNatAg-mini/sesbania_cannabina","iNatAg-mini/sesbania_exaltata","iNatAg-mini/sesbania_formosa","iNatAg-mini/sesbania_grandiflora","iNatAg-mini/sesbania_pachycarpa","iNatAg-mini/sesbania_sesban","iNatAg-mini/setaria_incrassata","iNatAg-mini/setaria_italica","iNatAg-mini/setaria_lindenbergiana","iNatAg-mini/setaria_pumila","iNatAg-mini/seymeria_pectinata","iNatAg-mini/shorea_robusta","iNatAg-mini/shorea_talura","iNatAg-mini/sicyos_angulatus","iNatAg-mini/sida_angustifolia","iNatAg-mini/sida_cordifolia","iNatAg-mini/sida_spinosa","iNatAg-mini/silene_antirrhina","iNatAg-mini/silene_armeria","iNatAg-mini/silene_conica","iNatAg-mini/silene_conoidea","iNatAg-mini/silene_gallica","iNatAg-mini/silene_noctiflora","iNatAg-mini/silene_pendula","iNatAg-mini/silphium_asperrimum","iNatAg-mini/silphium_integrifolium","iNatAg-mini/silphium_laciniatum","iNatAg-mini/silybum_marianum","iNatAg-mini/simarouba_glauca","iNatAg-mini/simmondsia_chinensis","iNatAg-mini/simsia_auriculata","iNatAg-mini/sinapis_alba","iNatAg-mini/sinapis_arvensis","iNatAg-mini/sinapis_incana","iNatAg-mini/siphonochilus_aethiopicus","iNatAg-mini/sisymbrium_altissimum","iNatAg-mini/sisymbrium_erysimoides","iNatAg-mini/sisymbrium_irio","iNatAg-mini/sisymbrium_officinale","iNatAg-mini/sisymbrium_orientale","iNatAg-mini/sisymbrium_sophia","iNatAg-mini/sisyrinchium_montanum","iNatAg-mini/sloanea_woollsii","iNatAg-mini/smilax_aspera","iNatAg-mini/smilax_bona-nox","iNatAg-mini/smilax_laurifolia","iNatAg-mini/smilax_rotundifolia","iNatAg-mini/solanum_aethiopicum","iNatAg-mini/solanum_americanum","iNatAg-mini/solanum_capsicoides","iNatAg-mini/solanum_carolinense","iNatAg-mini/solanum_coriaceum","iNatAg-mini/solanum_dimidiatum","iNatAg-mini/solanum_diphyllum","iNatAg-mini/solanum_dulcamara","iNatAg-mini/solanum_elaeagnifolium","iNatAg-mini/solanum_eleagnifolium","iNatAg-mini/solanum_ellipticum","iNatAg-mini/solanum_ferox","iNatAg-mini/solanum_heterodoxum","iNatAg-mini/solanum_incanum","iNatAg-mini/solanum_jamaicense","iNatAg-mini/solanum_lanceolatum","iNatAg-mini/solanum_macrocarpon","iNatAg-mini/solanum_mammosum","iNatAg-mini/solanum_marginatum","iNatAg-mini/solanum_mauritianum","iNatAg-mini/solanum_melongena","iNatAg-mini/solanum_muricatum","iNatAg-mini/solanum_nigrum","iNatAg-mini/solanum_physalifolium","iNatAg-mini/solanum_pseudo-capsicum","iNatAg-mini/solanum_pseudocapsicum","iNatAg-mini/solanum_quitoense","iNatAg-mini/solanum_sisymbrifolium","iNatAg-mini/solanum_sisymbriifolium","iNatAg-mini/solanum_tampicense","iNatAg-mini/solanum_torvum","iNatAg-mini/solanum_tuberosum","iNatAg-mini/solanum_violaceum","iNatAg-mini/soldanella_alpina","iNatAg-mini/solidago_californica","iNatAg-mini/solidago_canadensis","iNatAg-mini/solidago_fistulosa","iNatAg-mini/solidago_missouriensis","iNatAg-mini/solidago_nemoralis","iNatAg-mini/solidago_rigida","iNatAg-mini/solidago_sempervirens","iNatAg-mini/solidago_virgaurea","iNatAg-mini/sonchus_arvensis","iNatAg-mini/sonchus_oleraceus","iNatAg-mini/sonchus_palustris","iNatAg-mini/sonneratia_apetala","iNatAg-mini/sonneratia_caseolaris","iNatAg-mini/sorbus_aucuparia","iNatAg-mini/sorbus_domestica","iNatAg-mini/sorghum_bicolor","iNatAg-mini/sorghum_drummondii","iNatAg-mini/sorghum_halepense","iNatAg-mini/soymida_febrifuga","iNatAg-mini/sparganium_americanum","iNatAg-mini/sparganium_erectum","iNatAg-mini/spartina_pectinata","iNatAg-mini/spartium_junceum","iNatAg-mini/spathodea_campanulata","iNatAg-mini/spergula_arvensis","iNatAg-mini/spermacoce_verticillata","iNatAg-mini/spinacia_oleracea","iNatAg-mini/spinifex_hirsutus","iNatAg-mini/spirea_tomentosa","iNatAg-mini/spodiopogon_sibiricus","iNatAg-mini/spondias_cythera","iNatAg-mini/spondias_mombin","iNatAg-mini/spondias_purpurea","iNatAg-mini/sporobolus_airoides","iNatAg-mini/sporobolus_fimbriatus","iNatAg-mini/sporobolus_maritimus","iNatAg-mini/sporobolus_neglectus","iNatAg-mini/sporobolus_spicatus","iNatAg-mini/sporobolus_virginicus","iNatAg-mini/stachys_affinis","iNatAg-mini/stachys_palustris","iNatAg-mini/stachytarpheta_incana","iNatAg-mini/stachytarpheta_indica","iNatAg-mini/stellaria_graminea","iNatAg-mini/stellaria_holostea","iNatAg-mini/stellaria_media","iNatAg-mini/stenotaphrum_secundatum","iNatAg-mini/sterculia_foetida","iNatAg-mini/sterculia_urens","iNatAg-mini/sterculia_villosa","iNatAg-mini/stereospermum_kunthianum","iNatAg-mini/stevia_rebaudiana","iNatAg-mini/stipa_baicalensis","iNatAg-mini/stipa_brachychaeta","iNatAg-mini/stipa_capillata","iNatAg-mini/stipa_glareosa","iNatAg-mini/stipa_grandis","iNatAg-mini/stipa_krylovii","iNatAg-mini/stipa_lagascae","iNatAg-mini/stipa_occidentalis","iNatAg-mini/stipa_parviflora","iNatAg-mini/stipa_tenacissima","iNatAg-mini/stipa_trichotoma","iNatAg-mini/stipagrostis_amabilis","iNatAg-mini/stipagrostis_zeyheri","iNatAg-mini/stratiotes_aloides","iNatAg-mini/strychnos_cocculoides","iNatAg-mini/strychnos_innocua","iNatAg-mini/strychnos_spinosa","iNatAg-mini/stylidium_desertorum","iNatAg-mini/stylosanthes_capitata","iNatAg-mini/stylosanthes_fruticosa","iNatAg-mini/stylosanthes_hamata","iNatAg-mini/stylosanthes_humilis","iNatAg-mini/stylosanthes_scabra","iNatAg-mini/stylosanthes_viscosa","iNatAg-mini/succisa_pratensis","iNatAg-mini/swertia_baicalensis","iNatAg-mini/swietenia_macrophylla","iNatAg-mini/swietenia_mahogani","iNatAg-mini/symphoricarpos_mollis","iNatAg-mini/symphoricarpos_occidentalis","iNatAg-mini/symphoricarpos_orbiculatus","iNatAg-mini/symphoricarpos_rotundifolius","iNatAg-mini/symphytum_officinale","iNatAg-mini/syncarpia_glomulifera","iNatAg-mini/syncarpia_hillii","iNatAg-mini/syzygium_cordatum","iNatAg-mini/syzygium_cumini","iNatAg-mini/syzygium_guineense","iNatAg-mini/syzygium_malaccense","iNatAg-mini/syzygium_taiwanicum","iNatAg-mini/tabebuia_rosea","iNatAg-mini/tabebuia_serratifolia","iNatAg-mini/tagetes_minuta","iNatAg-mini/talinum_triangulare","iNatAg-mini/tamarindus_indica","iNatAg-mini/tamarix_aphylla","iNatAg-mini/tamarix_chinensis","iNatAg-mini/tamarix_gallica","iNatAg-mini/tamarix_parviflora","iNatAg-mini/tanacetum_balsamita","iNatAg-mini/tanacetum_vulgare","iNatAg-mini/taraxacum_officinale","iNatAg-mini/taraxia_breviflora","iNatAg-mini/tarchonanthus_camphoratus","iNatAg-mini/taxodium_distichum","iNatAg-mini/taxus_baccata","iNatAg-mini/tecoma_stans","iNatAg-mini/tectona_grandis","iNatAg-mini/tephrosia_candida","iNatAg-mini/tephrosia_lupinifolia","iNatAg-mini/tephrosia_obovata","iNatAg-mini/tephrosia_purpurea","iNatAg-mini/tephrosia_vogelii","iNatAg-mini/teramnus_labialis","iNatAg-mini/terminalia_arjuna","iNatAg-mini/terminalia_bellirica","iNatAg-mini/terminalia_brownii","iNatAg-mini/terminalia_calamansanai","iNatAg-mini/terminalia_catappa","iNatAg-mini/terminalia_chebula","iNatAg-mini/terminalia_ivorensis","iNatAg-mini/terminalia_mantaly","iNatAg-mini/terminalia_myriocarpa","iNatAg-mini/terminalia_paniculata","iNatAg-mini/terminalia_prunioides","iNatAg-mini/terminalia_sericocarpa","iNatAg-mini/terminalia_tomentosa","iNatAg-mini/tetradymia_canescens","iNatAg-mini/tetragonia_tetragonioides","iNatAg-mini/teucrium_botrys","iNatAg-mini/teucrium_canadense","iNatAg-mini/teucrium_chamaedrys","iNatAg-mini/teucrium_polium","iNatAg-mini/thalia_geniculata","iNatAg-mini/thalictrum_pubescens","iNatAg-mini/thaumatococcus_daniellii","iNatAg-mini/themeda_australis","iNatAg-mini/themeda_quadrivalvis","iNatAg-mini/themeda_triandra","iNatAg-mini/theobroma_bicolor","iNatAg-mini/theobroma_cacao","iNatAg-mini/theobroma_grandiflorum","iNatAg-mini/thermopsis_montana","iNatAg-mini/thermopsis_rhombifolia","iNatAg-mini/thespesia_populnea","iNatAg-mini/thlaspi_arvense","iNatAg-mini/thlaspi_perfoliatum","iNatAg-mini/thuja_occidentalis","iNatAg-mini/thymus_serphyllum","iNatAg-mini/thymus_serpyllum","iNatAg-mini/thymus_vulgaris","iNatAg-mini/thyrsostachys_siamensis","iNatAg-mini/thysanolaena_latifolia","iNatAg-mini/tilia_cordata","iNatAg-mini/tilia_platyphyllos","iNatAg-mini/tipuana_tipu","iNatAg-mini/tithonia_diversifolia","iNatAg-mini/toona_ciliata","iNatAg-mini/torenia_glabra","iNatAg-mini/toxicodendron_pubescens","iNatAg-mini/trachypogon_spicatus","iNatAg-mini/tradescantia_bracteata","iNatAg-mini/tradescantia_fluminensis","iNatAg-mini/tradescantia_ohiensis","iNatAg-mini/tradescantia_virginiana","iNatAg-mini/tragia_betonicifolia","iNatAg-mini/tragopogon_lamottei","iNatAg-mini/tragopogon_porrifolius","iNatAg-mini/tragopogon_pratensis","iNatAg-mini/tragus_koelerioides","iNatAg-mini/trapa_natans","iNatAg-mini/trema_orientale","iNatAg-mini/trianthema_portulacastrum","iNatAg-mini/tribulus_cistoides","iNatAg-mini/tribulus_terrestris","iNatAg-mini/trichanthera_gigantea","iNatAg-mini/trichoneura_grandiglumis","iNatAg-mini/trichosanthes_cucumerina","iNatAg-mini/trichostema_lanceolatum","iNatAg-mini/tridax_procumbens","iNatAg-mini/trifolium_africanum","iNatAg-mini/trifolium_alexandrinum","iNatAg-mini/trifolium_ambiguum","iNatAg-mini/trifolium_angustifolium","iNatAg-mini/trifolium_arvense","iNatAg-mini/trifolium_burchellianum","iNatAg-mini/trifolium_campestre","iNatAg-mini/trifolium_carolinianum","iNatAg-mini/trifolium_cherleri","iNatAg-mini/trifolium_dubium","iNatAg-mini/trifolium_fragiferum","iNatAg-mini/trifolium_glanduliferum","iNatAg-mini/trifolium_glomeratum","iNatAg-mini/trifolium_hirtum","iNatAg-mini/trifolium_hybridum","iNatAg-mini/trifolium_incarnatum","iNatAg-mini/trifolium_medium","iNatAg-mini/trifolium_michelianum","iNatAg-mini/trifolium_nigrescens","iNatAg-mini/trifolium_patens","iNatAg-mini/trifolium_pilulare","iNatAg-mini/trifolium_polymorphum","iNatAg-mini/trifolium_pratense","iNatAg-mini/trifolium_reflexum","iNatAg-mini/trifolium_repens","iNatAg-mini/trifolium_resupinatum","iNatAg-mini/trifolium_subterraneum","iNatAg-mini/trifolium_tomentosum","iNatAg-mini/trifolium_variegatum","iNatAg-mini/trifolium_vesiculosum","iNatAg-mini/trifolium_wormskioldii","iNatAg-mini/triglochin_maritima","iNatAg-mini/triglochin_maritimum","iNatAg-mini/triglochin_palustre","iNatAg-mini/trigonella_foenum-graecum","iNatAg-mini/tripsacum_dactyloides","iNatAg-mini/trisetum_flavescens","iNatAg-mini/tristachya_leucothrix","iNatAg-mini/triticum_aestivum","iNatAg-mini/triticum_dicoccoides","iNatAg-mini/triticum_durum","iNatAg-mini/triticum_spelta","iNatAg-mini/triumfetta_rhomboidea","iNatAg-mini/triumfetta_semitriloba","iNatAg-mini/trollius_europaeus","iNatAg-mini/tropaeolum_majus","iNatAg-mini/tropaeolum_tuberosum","iNatAg-mini/tropidocarpum_gracile","iNatAg-mini/turritis_glabra","iNatAg-mini/tussilago_farfara","iNatAg-mini/tylosema_esculentum","iNatAg-mini/typha_angustifolia","iNatAg-mini/typha_domingensis","iNatAg-mini/typha_latifolia","iNatAg-mini/uapaca_kirkiana","iNatAg-mini/ulex_europaeus","iNatAg-mini/ullucus_tuberosus","iNatAg-mini/ulmus_procera","iNatAg-mini/umbilicus_rupestris","iNatAg-mini/uncaria_gambir","iNatAg-mini/urelytrum_agropyroides","iNatAg-mini/urena_lobata","iNatAg-mini/urochloa_mosambicensis","iNatAg-mini/urochloa_panicoides","iNatAg-mini/urtica_chamaedryoides","iNatAg-mini/urtica_dioica","iNatAg-mini/urtica_urens","iNatAg-mini/utricularia_floridana","iNatAg-mini/utricularia_foliosa","iNatAg-mini/utricularia_gibba","iNatAg-mini/utricularia_purpurea","iNatAg-mini/utricularia_radiata","iNatAg-mini/utricularia_vulgaris","iNatAg-mini/uvaria_littoralis","iNatAg-mini/uvularia_sessilifolia","iNatAg-mini/vaccinium_angustifolium","iNatAg-mini/vaccinium_corymbosum","iNatAg-mini/vaccinium_macrocarpon","iNatAg-mini/vaccinium_myrtillus","iNatAg-mini/vaccinium_uliginosum","iNatAg-mini/vaccinium_vitis-idaea","iNatAg-mini/valeriana_officinalis","iNatAg-mini/valerianella_eriocarpa","iNatAg-mini/vallisneria_americana","iNatAg-mini/vangueria_infausta","iNatAg-mini/vangueria_madagascariensis","iNatAg-mini/vanilla_planifolia","iNatAg-mini/vateria_indica","iNatAg-mini/ventilago_viminalis","iNatAg-mini/veratrum_album","iNatAg-mini/veratrum_californicum","iNatAg-mini/verbascum_blattaria","iNatAg-mini/verbascum_lychnitis","iNatAg-mini/verbascum_phlomoides","iNatAg-mini/verbascum_thapsus","iNatAg-mini/verbascum_thaspus","iNatAg-mini/verbena_bonariensis","iNatAg-mini/verbena_brasiliensis","iNatAg-mini/verbena_hastata","iNatAg-mini/verbena_officinalis","iNatAg-mini/verbena_urticifolia","iNatAg-mini/vernonia_altissima","iNatAg-mini/vernonia_amygdalina","iNatAg-mini/vernonia_baldwinii","iNatAg-mini/vernonia_chamaedrys","iNatAg-mini/vernonia_fasciculata","iNatAg-mini/veronica_agrestis","iNatAg-mini/veronica_anagallis-aquatica","iNatAg-mini/veronica_arvensis","iNatAg-mini/veronica_biloba","iNatAg-mini/veronica_chamaedrys","iNatAg-mini/veronica_filiformis","iNatAg-mini/veronica_hederaefolia","iNatAg-mini/veronica_hederifolia","iNatAg-mini/veronica_longifolia","iNatAg-mini/veronica_officinalis","iNatAg-mini/veronica_peregrina","iNatAg-mini/veronica_polita","iNatAg-mini/veronica_serpyllifolia","iNatAg-mini/vetiveria_zizanioides","iNatAg-mini/viburnum_cassinoides","iNatAg-mini/viburnum_lentago","iNatAg-mini/viburnum_prunifolium","iNatAg-mini/viccia_cracca","iNatAg-mini/vicia_augustifolia","iNatAg-mini/vicia_benghalensis","iNatAg-mini/vicia_cracca","iNatAg-mini/vicia_ervilia","iNatAg-mini/vicia_faba","iNatAg-mini/vicia_monantha","iNatAg-mini/vicia_narbonensis","iNatAg-mini/vicia_pannonica","iNatAg-mini/vicia_sativa","iNatAg-mini/vicia_sepium","iNatAg-mini/vigna_adenantha","iNatAg-mini/vigna_angularis","iNatAg-mini/vigna_hosei","iNatAg-mini/vigna_lanceolata","iNatAg-mini/vigna_longifolia","iNatAg-mini/vigna_luteola","iNatAg-mini/vigna_parkeri","iNatAg-mini/vigna_radiata","iNatAg-mini/vigna_trilobata","iNatAg-mini/vigna_umbellata","iNatAg-mini/vigna_unguiculata","iNatAg-mini/vigna_vexillata","iNatAg-mini/vinca_major","iNatAg-mini/vinca_minor","iNatAg-mini/viola_lanceolata","iNatAg-mini/viola_odorata","iNatAg-mini/viola_tricolor","iNatAg-mini/viscum_album","iNatAg-mini/vitellaria_paradoxa","iNatAg-mini/vitex_agnus-castus","iNatAg-mini/vitex_doniana","iNatAg-mini/vitex_negundo","iNatAg-mini/vitis_labrusca","iNatAg-mini/vitis_rotundifolia","iNatAg-mini/vitis_vinifera","iNatAg-mini/vitis_vulpina","iNatAg-mini/waltheria_indica","iNatAg-mini/warburgia_salutaris","iNatAg-mini/warburgia_ugandensis","iNatAg-mini/withania_somnifera","iNatAg-mini/wrightia_tomentosa","iNatAg-mini/xanthium_spinosum","iNatAg-mini/xanthium_strumarium","iNatAg-mini/xanthosoma_sagittifolium","iNatAg-mini/ximenia_americana","iNatAg-mini/xylia_xylocarpa","iNatAg-mini/xylocarpus_granatum","iNatAg-mini/xylocarpus_mekongensis","iNatAg-mini/xylocarpus_moluccensis","iNatAg-mini/xylorhiza_glabriuscula","iNatAg-mini/yucca_elephantipes","iNatAg-mini/zannichellia_palustris","iNatAg-mini/zanthoxylum_americanum","iNatAg-mini/zea_mays","iNatAg-mini/zingiber_officinale","iNatAg-mini/zizania_aquatica","iNatAg-mini/zizania_latifolia","iNatAg-mini/ziziphus_abyssinica","iNatAg-mini/ziziphus_mauritiana","iNatAg-mini/ziziphus_mucronata","iNatAg-mini/zornia_diphylla","iNatAg-mini/zornia_glochidiata","iNatAg-mini/zornia_latifolia","iNatAg-mini/zostera_marina","iNatAg-mini/zoysia_matrella","iNatAg-mini/zygophyllum_fabago","iNatAg/abelmoschus_esculentus","iNatAg/abelmoschus_manihot","iNatAg/abelmoschus_moschatus","iNatAg/abies_alba","iNatAg/abies_amabilis","iNatAg/abies_balsamea","iNatAg/abies_concolor","iNatAg/abies_pindrow","iNatAg/abroma_augustum","iNatAg/abrus_pecatorius","iNatAg/abrus_precatorius","iNatAg/abutilon_theophrasti","iNatAg/acacia_abyssinica","iNatAg/acacia_acradenia","iNatAg/acacia_acuminata","iNatAg/acacia_ampliceps","iNatAg/acacia_anceps","iNatAg/acacia_ancistrocarpa","iNatAg/acacia_aneura","iNatAg/acacia_angustissima","iNatAg/acacia_ataxacantha","iNatAg/acacia_aulacocarpa","iNatAg/acacia_auriculiformis","iNatAg/acacia_bidwillii","iNatAg/acacia_brachystachya","iNatAg/acacia_brevispica","iNatAg/acacia_burkei","iNatAg/acacia_caffra","iNatAg/acacia_cambagei","iNatAg/acacia_catechu","iNatAg/acacia_catenulata","iNatAg/acacia_caven","iNatAg/acacia_cincinnata","iNatAg/acacia_coriacea","iNatAg/acacia_cowleana","iNatAg/acacia_crassicarpa","iNatAg/acacia_cyclops","iNatAg/acacia_cyperophylla","iNatAg/acacia_dealbata","iNatAg/acacia_deanei","iNatAg/acacia_decurrens","iNatAg/acacia_difficilis","iNatAg/acacia_doratoxylon","iNatAg/acacia_ehrenbergiana","iNatAg/acacia_erioloba","iNatAg/acacia_estrophiolata","iNatAg/acacia_excelsa","iNatAg/acacia_falciformis","iNatAg/acacia_farnesiana","iNatAg/acacia_fasciculifera","iNatAg/acacia_flavescens","iNatAg/acacia_georginae","iNatAg/acacia_gerrardii","iNatAg/acacia_glaucocarpa","iNatAg/acacia_gourmaensis","iNatAg/acacia_harpophylla","iNatAg/acacia_holosericea","iNatAg/acacia_irrorata","iNatAg/acacia_ixiophylla","iNatAg/acacia_karroo","iNatAg/acacia_koa","iNatAg/acacia_leptocarpa","iNatAg/acacia_leucophloea","iNatAg/acacia_ligulata","iNatAg/acacia_maidenii","iNatAg/acacia_mangium","iNatAg/acacia_mearnsii","iNatAg/acacia_melanoxylon","iNatAg/acacia_mellifera","iNatAg/acacia_murrayana","iNatAg/acacia_neriifolia","iNatAg/acacia_nigrescens","iNatAg/acacia_nilotica","iNatAg/acacia_occidentalis","iNatAg/acacia_oraria","iNatAg/acacia_oswaldii","iNatAg/acacia_pachycarpa","iNatAg/acacia_papyrocarpa","iNatAg/acacia_paradoxa","iNatAg/acacia_pendula","iNatAg/acacia_peuce","iNatAg/acacia_podalyriifolia","iNatAg/acacia_polyacantha","iNatAg/acacia_polystachya","iNatAg/acacia_pruinocarpa","iNatAg/acacia_pycnantha","iNatAg/acacia_salicina","iNatAg/acacia_saligna","iNatAg/acacia_sclerosperma","iNatAg/acacia_senegal","iNatAg/acacia_seyal","iNatAg/acacia_shirleyi","iNatAg/acacia_sieberiana","iNatAg/acacia_silvestris","iNatAg/acacia_simsii","iNatAg/acacia_stenophylla","iNatAg/acacia_tetragonophylla","iNatAg/acacia_tortilis","iNatAg/acacia_torulosa","iNatAg/acacia_trachycarpa","iNatAg/acacia_victoriae","iNatAg/acaena_novae-zelandiae","iNatAg/acalypha_rhomboidea","iNatAg/acalypha_virginica","iNatAg/acanthosicyos_horridus","iNatAg/acanthosicyos_naudinianus","iNatAg/acanthospermum_hispidum","iNatAg/acanthus_ilicifolius","iNatAg/acanthus_mollis","iNatAg/acca_sellowiana","iNatAg/acer_caesium","iNatAg/acer_campestre","iNatAg/acer_platanoides","iNatAg/acer_pseudoplatanus","iNatAg/acer_saccharum","iNatAg/achillea_fragrantissima","iNatAg/achillea_millefolium","iNatAg/achillea_ptarmica","iNatAg/achnatherum_pekinense","iNatAg/achyranthes_aspera","iNatAg/acmena_smithii","iNatAg/aconitum_napellus","iNatAg/acorus_calamus","iNatAg/acrocarpus_fraxinifolius","iNatAg/acrocomia_aculeata","iNatAg/acrocomia_totai","iNatAg/actaea_racemosa","iNatAg/actinidia_arguta","iNatAg/actinidia_chinensis","iNatAg/adansonia_digitata","iNatAg/adansonia_grandidieri","iNatAg/adansonia_gregorii","iNatAg/adenanthera_pavonina","iNatAg/adesmia_bicolor","iNatAg/adesmia_latifolia","iNatAg/adesmia_punctata","iNatAg/adesmia_securigerifolia","iNatAg/adiantum_capillus-veneris","iNatAg/adina_cordifolia","iNatAg/adonis_annua","iNatAg/adonis_vernalis","iNatAg/aechmea_magdalenae","iNatAg/aegiceras_corniculatum","iNatAg/aegilops_biuncialis","iNatAg/aegilops_cylindrica","iNatAg/aegilops_geniculata","iNatAg/aegilops_triuncialis","iNatAg/aegle_marmelos","iNatAg/aegopodium_podagraria","iNatAg/aeschynomene_americana","iNatAg/aeschynomene_brasiliana","iNatAg/aeschynomene_falcata","iNatAg/aeschynomene_histrix","iNatAg/aeschynomene_indica","iNatAg/aeschynomene_villosa","iNatAg/aesculus_hippocastanum","iNatAg/aesculus_indica","iNatAg/aethusa_cynapium","iNatAg/afzelia_africana","iNatAg/afzelia_quanzensis","iNatAg/agathis_australis","iNatAg/agathis_dammara","iNatAg/agathis_macrophylla","iNatAg/agathis_microstachya","iNatAg/agathis_robusta","iNatAg/agave_fourcroydes","iNatAg/agave_lecheguilla","iNatAg/agave_sisalana","iNatAg/ageratum_conyzoides","iNatAg/agrimonia_eupatoria","iNatAg/agrimonia_gryposepala","iNatAg/agrimonia_parviflora","iNatAg/agropyron_cristatum","iNatAg/agropyron_dasyanthum","iNatAg/agropyron_desertorum","iNatAg/agropyron_scabrum","iNatAg/agrostemma_githago","iNatAg/agrostis_canina","iNatAg/agrostis_capillaris","iNatAg/agrostis_gigantea","iNatAg/agrostis_stolonifera","iNatAg/agrostis_tenuis","iNatAg/ailanthus_altissima","iNatAg/ailanthus_excelsa","iNatAg/aiphanes_aculeata","iNatAg/aira_caryophyllea","iNatAg/ajuga_genevensis","iNatAg/ajuga_reptans","iNatAg/alania_cunninghamii","iNatAg/albizia_adianthifolia","iNatAg/albizia_amara","iNatAg/albizia_chinensis","iNatAg/albizia_falcataria","iNatAg/albizia_harveyi","iNatAg/albizia_lebbeck","iNatAg/albizia_lophantha","iNatAg/albizia_lucida","iNatAg/albizia_odoratissima","iNatAg/albizia_procera","iNatAg/alcea_rosea","iNatAg/alchemilla_monticola","iNatAg/alchemilla_occidentalis","iNatAg/alchemilla_vulgaris","iNatAg/alchemilla_xanthochlora","iNatAg/aleurites_fordii","iNatAg/aleurites_moluccana","iNatAg/alisma_gramineum","iNatAg/alisma_lanceolatum","iNatAg/alisma_plantago-aquatica","iNatAg/alkanna_tinctoria","iNatAg/alliaria_petiolata","iNatAg/allionia_incarnata","iNatAg/allium_ampeloprasum","iNatAg/allium_canadense","iNatAg/allium_cepa","iNatAg/allium_chinense","iNatAg/allium_fistulosum","iNatAg/allium_paniculatum","iNatAg/allium_sativum","iNatAg/allium_schoenoprasum","iNatAg/allium_triquetrum","iNatAg/allium_tuberosum","iNatAg/allium_ursinum","iNatAg/allocasuarina_campestris","iNatAg/allocasuarina_decaisneana","iNatAg/allocasuarina_fraseriana","iNatAg/allocasuarina_huegeliana","iNatAg/allocasuarina_littoralis","iNatAg/allocasuarina_luehmannii","iNatAg/allocasuarina_torulosa","iNatAg/alloteropsis_semialata","iNatAg/alnus_acuminata","iNatAg/alnus_glutinosa","iNatAg/alnus_japonica","iNatAg/alnus_maritima","iNatAg/alnus_nepalensis","iNatAg/alnus_rubra","iNatAg/alocasia_macrorrhizos","iNatAg/aloe_arborescens","iNatAg/aloe_barbadensis","iNatAg/aloe_ferox","iNatAg/aloe_perryi","iNatAg/alopecurus_arundinaceus","iNatAg/alopecurus_carolinianus","iNatAg/alopecurus_geniculatus","iNatAg/alopecurus_myosuroides","iNatAg/alopecurus_pratensis","iNatAg/alopecurus_rendlei","iNatAg/aloysia_triphylla","iNatAg/alphitonia_excelsa","iNatAg/alpinia_galanga","iNatAg/alstonia_scholaris","iNatAg/alternanthera_pungens","iNatAg/althaea_officinalis","iNatAg/altingia_excelsa","iNatAg/alysicarpus_monilifer","iNatAg/alysicarpus_ovalifolius","iNatAg/alysicarpus_rugosus","iNatAg/alysicarpus_vaginalis","iNatAg/alyssum_desertorum","iNatAg/amaranthus_albus","iNatAg/amaranthus_blitum","iNatAg/amaranthus_caudatus","iNatAg/amaranthus_cruentus","iNatAg/amaranthus_dubius","iNatAg/amaranthus_hybridus","iNatAg/amaranthus_hypochondriacus","iNatAg/amaranthus_lividus","iNatAg/amaranthus_retroflexus","iNatAg/amaranthus_speciosus","iNatAg/amaranthus_spinosus","iNatAg/amaranthus_tricolor","iNatAg/amaranthus_viridis","iNatAg/ambelania_acida","iNatAg/ambrosia_acanthicarpa","iNatAg/ambrosia_artemisiifolia","iNatAg/ambrosia_confertiflora","iNatAg/ambrosia_psilostachya","iNatAg/ambrosia_tomentosa","iNatAg/ambrosia_trifida","iNatAg/ammannia_latifolia","iNatAg/ammi_majus","iNatAg/ammophila_arenaria","iNatAg/ammophila_breviligulata","iNatAg/amorpha_fruticosa","iNatAg/amorphophallus_paeoniifolius","iNatAg/amsinckia_douglasiana","iNatAg/amsinckia_lycopsoides","iNatAg/anacardium_occidentale","iNatAg/anagallis_arvensis","iNatAg/ananas_comosus","iNatAg/anchusa_azurea","iNatAg/andrographis_paniculata","iNatAg/andropogon_barbinodis","iNatAg/andropogon_bicornis","iNatAg/andropogon_brachystachyus","iNatAg/andropogon_gayanus","iNatAg/andropogon_gyrans","iNatAg/andropogon_hallii","iNatAg/andropogon_leucostachyus","iNatAg/andropogon_ternarius","iNatAg/androsace_septentrionalis","iNatAg/anemone_hepatica","iNatAg/anemone_nemorosa","iNatAg/anethum_graveolens","iNatAg/angelica_archangelica","iNatAg/angelica_atropurpurea","iNatAg/angelica_sylvestris","iNatAg/angophora_costata","iNatAg/angophora_floribunda","iNatAg/annona_atemoya","iNatAg/annona_cherimola","iNatAg/annona_diversifolia","iNatAg/annona_montana","iNatAg/annona_muricata","iNatAg/annona_purpurea","iNatAg/annona_reticulata","iNatAg/annona_senegalensis","iNatAg/annona_squamosa","iNatAg/anogeissus_acuminata","iNatAg/anogeissus_latifolia","iNatAg/anogeissus_pendula","iNatAg/antennaria_dioica","iNatAg/anthemis_arvensis","iNatAg/anthemis_cotula","iNatAg/anthemis_tinctoria","iNatAg/anthephora_pubescens","iNatAg/anthoxanthum_odoratum","iNatAg/anthriscus_cerefolium","iNatAg/anthyllis_vulneraria","iNatAg/antidesma_bunius","iNatAg/antirrhinum_majus","iNatAg/aphandra_natalia","iNatAg/aphanes_arvensis","iNatAg/apios_americana","iNatAg/apium_graveolens","iNatAg/apocynum_cannabinum","iNatAg/apocynum_sibiricum","iNatAg/aponogeton_distachyos","iNatAg/aquilaria_malaccensis","iNatAg/aquilegia_canadensis","iNatAg/aquilegia_vulgaris","iNatAg/arachis_glabrata","iNatAg/arachis_hypogaea","iNatAg/arachis_pintoi","iNatAg/arachis_villosa","iNatAg/araucaria_angustifolia","iNatAg/araucaria_bidwillii","iNatAg/araucaria_cunninghamii","iNatAg/araucaria_hunsteinii","iNatAg/arbutus_unedo","iNatAg/archidendron_jiringa","iNatAg/arctium_lappa","iNatAg/arctostaphylos_glandulosa","iNatAg/arctostaphylos_manzanita","iNatAg/arctostaphylos_patula","iNatAg/arctostaphylos_uva-ursi","iNatAg/arctostaphylos_viscida","iNatAg/ardisia_crenata","iNatAg/areca_catechu","iNatAg/arenaria_serpyllifolia","iNatAg/arenga_pinnata","iNatAg/argemone_mexicana","iNatAg/argyrodendron_actinophyllum","iNatAg/argyrodendron_peralatum","iNatAg/aria_alnifolia","iNatAg/aristida_adscensionis","iNatAg/aristida_behriana","iNatAg/aristida_congesta","iNatAg/aristida_junciformis","iNatAg/aristida_lanosa","iNatAg/aristida_latifolia","iNatAg/aristida_longispica","iNatAg/aristida_personata","iNatAg/aristida_purpurascens","iNatAg/aristida_schiedeana","iNatAg/aristida_transvaalensis","iNatAg/aristolochia_rotunda","iNatAg/armoracia_rusticana","iNatAg/arnica_montana","iNatAg/arrhenatherum_elatius","iNatAg/artemisia_abrotanum","iNatAg/artemisia_absinthium","iNatAg/artemisia_afra","iNatAg/artemisia_annua","iNatAg/artemisia_campestris","iNatAg/artemisia_dracunculus","iNatAg/artemisia_filifolia","iNatAg/artemisia_glacialis","iNatAg/artemisia_herba-alba","iNatAg/artemisia_ludoviciana","iNatAg/artemisia_stelleriana","iNatAg/artemisia_tridentata","iNatAg/artemisia_vulgaris","iNatAg/artocarpus_altilis","iNatAg/artocarpus_heterophyllus","iNatAg/artocarpus_hirsutus","iNatAg/artocarpus_integer","iNatAg/artocarpus_lakoocha","iNatAg/arundinella_hirta","iNatAg/arundo_donax","iNatAg/asarina_stricta","iNatAg/asarum_europaeum","iNatAg/asclepias_curassavica","iNatAg/asclepias_fascicularis","iNatAg/asclepias_incarnata","iNatAg/asclepias_lanceolata","iNatAg/asclepias_purpurascens","iNatAg/asclepias_speciosa","iNatAg/asclepias_subverticillata","iNatAg/asclepias_tuberosa","iNatAg/asclepias_verticillata","iNatAg/asclepias_viridiflora","iNatAg/asimina_angustifolia","iNatAg/asimina_triloba","iNatAg/asparagus_densiflorus","iNatAg/asparagus_officinalis","iNatAg/asperula_arvensis","iNatAg/asphodelus_albus","iNatAg/asphodelus_tenuifolius","iNatAg/aspilia_angustifolia","iNatAg/asplenium_ruta-muraria","iNatAg/aster_ericoides","iNatAg/astragalus_adsurgens","iNatAg/astragalus_asymmetricus","iNatAg/astragalus_canadensis","iNatAg/astragalus_cicer","iNatAg/astragalus_gummifer","iNatAg/astragalus_mollissimus","iNatAg/astragalus_nuttallianus","iNatAg/astragalus_sinicus","iNatAg/astragalus_tweedyi","iNatAg/astrantia_major","iNatAg/astrebla_lappacea","iNatAg/astrebla_pectinata","iNatAg/astrebla_squarrosa","iNatAg/astrocaryum_jauari","iNatAg/astrocaryum_vulgare","iNatAg/asystasia_gangetica","iNatAg/atalaya_hemiglauca","iNatAg/atherosperma_moschatum","iNatAg/athrotaxis_selaginoides","iNatAg/atriplex_canescens","iNatAg/atriplex_confertifolia","iNatAg/atriplex_gardneri","iNatAg/atriplex_glauca","iNatAg/atriplex_halimus","iNatAg/atriplex_hortensis","iNatAg/atriplex_lentiformis","iNatAg/atriplex_nummularia","iNatAg/atriplex_patula","iNatAg/atriplex_rosea","iNatAg/atriplex_semibaccata","iNatAg/atriplex_vesicaria","iNatAg/atropa_belladonna","iNatAg/attalea_cohune","iNatAg/avena_fatua","iNatAg/avena_sativa","iNatAg/avena_sterilis","iNatAg/avenula_pubescens","iNatAg/averrhoa_bilimbi","iNatAg/averrhoa_carambola","iNatAg/avicennia_germinans","iNatAg/avicennia_marina","iNatAg/avicennia_officinalis","iNatAg/axonopus_affinis","iNatAg/axonopus_compressus","iNatAg/axonopus_fissifolius","iNatAg/axyris_amaranthoides","iNatAg/azadirachta_indica","iNatAg/azanza_garckeana","iNatAg/azolla_filiculoides","iNatAg/azolla_pinnata","iNatAg/baccaurea_motleyana","iNatAg/baccaurea_ramiflora","iNatAg/baccharis_glutinosa","iNatAg/baccharis_pilularis","iNatAg/bactris_gasipaes","iNatAg/baikiaea_plurijuga","iNatAg/balanites_aegyptiaca","iNatAg/bambusa_arundinacea","iNatAg/bambusa_balcooa","iNatAg/bambusa_blumeana","iNatAg/bambusa_tulda","iNatAg/bambusa_vulgaris","iNatAg/banksia_integrifolia","iNatAg/banksia_occidentalis","iNatAg/baphia_nitida","iNatAg/barringtonia_racemosa","iNatAg/basella_alba","iNatAg/bauhinia_aculeata","iNatAg/bauhinia_petersiana","iNatAg/bauhinia_racemosa","iNatAg/bauhinia_rufescens","iNatAg/bauhinia_thonningii","iNatAg/bauhinia_tomentosa","iNatAg/bauhinia_variegata","iNatAg/beckmannia_eruciformis","iNatAg/beckmannia_syzigachne","iNatAg/bellis_perennis","iNatAg/benincasa_hispida","iNatAg/berberis_aquifolium","iNatAg/berberis_thunbergii","iNatAg/berberis_vulgaris","iNatAg/berchemia_discolor","iNatAg/berrya_cordifolia","iNatAg/bersama_lucens","iNatAg/bertholletia_excelsa","iNatAg/beta_vulgaris","iNatAg/betula_nigra","iNatAg/betula_pendula","iNatAg/betula_pubescens","iNatAg/bidens_bipinnata","iNatAg/bidens_cernua","iNatAg/bidens_frondosa","iNatAg/bidens_pilosa","iNatAg/bidens_tripartita","iNatAg/bignonia_capreolata","iNatAg/biserrula_pelecinus","iNatAg/bixa_orellana","iNatAg/blighia_sapida","iNatAg/blumea_balsamifera","iNatAg/bocconia_frutescens","iNatAg/boehmeria_nivea","iNatAg/boerhavia_coccinea","iNatAg/boerhavia_diffusa","iNatAg/boerhavia_erecta","iNatAg/boesenbergia_rotunda","iNatAg/bolusanthus_speciosus","iNatAg/bombacopsis_quinata","iNatAg/bombax_ceiba","iNatAg/bombax_insigne","iNatAg/borago_officinalis","iNatAg/borassus_aethiopum","iNatAg/borassus_flabellifer","iNatAg/borojoa_patinoi","iNatAg/boronia_glabra","iNatAg/boscia_angustifolia","iNatAg/boswellia_serrata","iNatAg/bothriochloa_bladhii","iNatAg/bothriochloa_insculpta","iNatAg/bothriochloa_ischaemum","iNatAg/bothriochloa_pertusa","iNatAg/bougainvillea_glabra","iNatAg/bouteloua_curtipendula","iNatAg/bouteloua_gracilis","iNatAg/brachiaria_brizantha","iNatAg/brachiaria_decumbens","iNatAg/brachiaria_deflexa","iNatAg/brachiaria_distachya","iNatAg/brachiaria_humidicola","iNatAg/brachiaria_mutica","iNatAg/brachiaria_ramosa","iNatAg/brachiaria_serrata","iNatAg/brachychiton_acerifolius","iNatAg/brachychiton_populneus","iNatAg/brachylaena_huillensis","iNatAg/brachystegia_spiciformis","iNatAg/brassica_campestris","iNatAg/brassica_chinensis","iNatAg/brassica_incana","iNatAg/brassica_juncea","iNatAg/brassica_napus","iNatAg/brassica_nigra","iNatAg/brassica_rapa","iNatAg/brassica_tournefortii","iNatAg/bridelia_micrantha","iNatAg/briza_maxima","iNatAg/briza_media","iNatAg/briza_minor","iNatAg/bromus_arvensis","iNatAg/bromus_carinatus","iNatAg/bromus_catharticus","iNatAg/bromus_diandrus","iNatAg/bromus_erectus","iNatAg/bromus_hordeaceus","iNatAg/bromus_inermis","iNatAg/bromus_madritensis","iNatAg/bromus_marginatus","iNatAg/bromus_racemosus","iNatAg/bromus_rubens","iNatAg/bromus_secalinus","iNatAg/bromus_sterilis","iNatAg/bromus_tectorum","iNatAg/bromus_unioloides","iNatAg/bromus_willdenowii","iNatAg/brosimum_alicastrum","iNatAg/broussonetia_papyrifera","iNatAg/bruguiera_gymnorrhiza","iNatAg/bryonia_alba","iNatAg/bryonia_cretica","iNatAg/buchloe_dactyloides","iNatAg/buckinghamia_celsissima","iNatAg/bunias_erucago","iNatAg/bunias_orientalis","iNatAg/burkea_africana","iNatAg/bursera_simaruba","iNatAg/butea_monosperma","iNatAg/butomus_umbellatus","iNatAg/buxus_sempervirens","iNatAg/cacalia_atriplicifolia","iNatAg/caesalpinia_coriaria","iNatAg/caesalpinia_sappan","iNatAg/cajanus_cajan","iNatAg/calamagrostis_epigeios","iNatAg/calathea_allouia","iNatAg/calendula_arvensis","iNatAg/calendula_officinalis","iNatAg/calliandra_calothyrsus","iNatAg/calliandra_tweedii","iNatAg/callisia_angustifolia","iNatAg/callitriche_palustris","iNatAg/callitriche_stagnalis","iNatAg/callitriche_verna","iNatAg/callitris_columellaris","iNatAg/callitris_endlicheri","iNatAg/callitris_macleayana","iNatAg/calluna_vulgaris","iNatAg/calodendrum_capense","iNatAg/calophyllum_apetalum","iNatAg/calophyllum_brasiliense","iNatAg/calophyllum_inophyllum","iNatAg/calopogonium_caeruleum","iNatAg/calopogonium_mucunoides","iNatAg/calotropis_procera","iNatAg/caltha_palustris","iNatAg/calystegia_hederacea","iNatAg/calystegia_occidentalis","iNatAg/calystegia_pubescens","iNatAg/camelina_sativa","iNatAg/camellia_sinensis","iNatAg/campanula_americana","iNatAg/campanula_rapunculus","iNatAg/campanula_rotundifolia","iNatAg/cananga_odorata","iNatAg/canavalia_brasiliensis","iNatAg/canavalia_ensiformis","iNatAg/canavalia_gladiata","iNatAg/canna_indica","iNatAg/canthium_spinosum","iNatAg/capparis_decidua","iNatAg/capparis_spinosa","iNatAg/capparis_tomentosa","iNatAg/capsella_bursa-pastoris","iNatAg/capsicum_annuum","iNatAg/capsicum_chinense","iNatAg/capsicum_frutescens","iNatAg/capsicum_pubescens","iNatAg/caragana_arborescens","iNatAg/caragana_microphylla","iNatAg/carapa_guianensis","iNatAg/cardamine_flexuosa","iNatAg/cardamine_hirsuta","iNatAg/cardamine_impatiens","iNatAg/cardamine_oligosperma","iNatAg/cardamine_parviflora","iNatAg/cardamine_pratensis","iNatAg/cardiospermum_halicacabum","iNatAg/carduus_acanthoides","iNatAg/carduus_crispus","iNatAg/carduus_lanceolatus","iNatAg/carduus_pycnocephalus","iNatAg/carex_nebrascensis","iNatAg/carex_pallescens","iNatAg/carica_cauliflora","iNatAg/carica_papaya","iNatAg/carica_pubescens","iNatAg/cariniana_pyriformis","iNatAg/carissa_carandas","iNatAg/carissa_edulis","iNatAg/carissa_macrocarpa","iNatAg/carlina_acaulis","iNatAg/carludovica_palmata","iNatAg/caroxylon_aphyllum","iNatAg/carpinus_betulus","iNatAg/carthamus_creticus","iNatAg/carthamus_lanatus","iNatAg/carthamus_tinctorius","iNatAg/carum_carvi","iNatAg/carya_illinoensis","iNatAg/caryodendron_orinocense","iNatAg/caryota_urens","iNatAg/casimiroa_edulis","iNatAg/cassia_articulata","iNatAg/cassia_brewsteri","iNatAg/cassia_fistula","iNatAg/cassia_marilandica","iNatAg/cassia_nictitans","iNatAg/cassia_reticulata","iNatAg/cassia_senna","iNatAg/cassia_siamea","iNatAg/cassia_sieberiana","iNatAg/cassia_tomentosa","iNatAg/cassia_tora","iNatAg/castanea_crenata","iNatAg/castanea_dentata","iNatAg/castanea_mollissima","iNatAg/castanea_pumila","iNatAg/castanea_sativa","iNatAg/castanospermum_australe","iNatAg/castilla_elastica","iNatAg/castilleja_angustifolia","iNatAg/castilleja_occidentalis","iNatAg/casuarina_cristata","iNatAg/casuarina_cunninghamiana","iNatAg/casuarina_equisetifolia","iNatAg/casuarina_glauca","iNatAg/casuarina_junghuhniana","iNatAg/casuarina_obesa","iNatAg/catalpa_bignonioides","iNatAg/catha_edulis","iNatAg/catharanthus_roseus","iNatAg/ceanothus_americanus","iNatAg/ceanothus_prostratus","iNatAg/cedrela_odorata","iNatAg/cedrus_deodara","iNatAg/ceiba_pentandra","iNatAg/celastrus_orbiculatus","iNatAg/celastrus_scandens","iNatAg/celosia_argentea","iNatAg/celtis_australis","iNatAg/cenchrus_biflorus","iNatAg/cenchrus_ciliaris","iNatAg/cenchrus_echinatus","iNatAg/cenchrus_setigerus","iNatAg/cenchrus_spinifex","iNatAg/cenchrus_tribuloides","iNatAg/centaurea_biebersteinii","iNatAg/centaurea_calcitrapa","iNatAg/centaurea_cyanus","iNatAg/centaurea_diluta","iNatAg/centaurea_jacea","iNatAg/centaurea_melitensis","iNatAg/centaurea_nigra","iNatAg/centaurea_nigrescens","iNatAg/centaurea_solstitalis","iNatAg/centaurea_solstitialis","iNatAg/centaurea_stoebe","iNatAg/centaurea_virgata","iNatAg/centella_asiatica","iNatAg/centropodia_glauca","iNatAg/centrosema_brasilianum","iNatAg/centrosema_macrocarpum","iNatAg/centrosema_pascuorum","iNatAg/centrosema_plumieri","iNatAg/centrosema_pubescens","iNatAg/centrosema_virginianum","iNatAg/cephalanthus_occidentalis","iNatAg/cerastium_arvense","iNatAg/cerastium_nutans","iNatAg/cerastium_vulgatum","iNatAg/ceratonia_siliqua","iNatAg/ceratopetalum_apetalum","iNatAg/ceratophyllum_demersum","iNatAg/ceratophyllum_echinatum","iNatAg/ceriops_tagal","iNatAg/cestrum_diurnum","iNatAg/ceterach_officinarum","iNatAg/chaerophyllum_tainturieri","iNatAg/chamaebatia_foliolosa","iNatAg/chamaecrista_nictitans","iNatAg/chamaecrista_rotundifolia","iNatAg/chamaedorea_tepejilote","iNatAg/chamaerops_humilis","iNatAg/chara_intermedia","iNatAg/chelidonium_majus","iNatAg/chenopodium_album","iNatAg/chenopodium_ambrosioides","iNatAg/chenopodium_ambrosoides","iNatAg/chenopodium_berlandieri","iNatAg/chenopodium_bonus-henricus","iNatAg/chenopodium_botrys","iNatAg/chenopodium_ficifolium","iNatAg/chenopodium_gigantospermum","iNatAg/chenopodium_glaucum","iNatAg/chenopodium_missouriense","iNatAg/chenopodium_multifidum","iNatAg/chenopodium_murale","iNatAg/chenopodium_polyspermum","iNatAg/chenopodium_quinoa","iNatAg/chenopodium_rubrum","iNatAg/chenopodium_urbicum","iNatAg/chloris_ciliata","iNatAg/chloris_gayana","iNatAg/chloris_roxburghiana","iNatAg/chloris_verticillata","iNatAg/chloris_virgata","iNatAg/chlorogalum_pomeridianum","iNatAg/chlorophora_excelsa","iNatAg/chlorophytum_comosum","iNatAg/chloroxylon_swietenia","iNatAg/chromolaena_odorata","iNatAg/chrysanthemum_coronarium","iNatAg/chrysanthemum_leucanthemum","iNatAg/chrysophyllum_cainito","iNatAg/chrysopogon_aciculatus","iNatAg/chukrasia_velutina","iNatAg/cicer_arietinum","iNatAg/cichorium_endivia","iNatAg/cichorium_intybus","iNatAg/cicuta_bulbifera","iNatAg/cicuta_mackenzieana","iNatAg/cicuta_maculata","iNatAg/cicuta_virosa","iNatAg/cimicifuga_racemosa","iNatAg/cinchona_officinalis","iNatAg/cinchona_pubescens","iNatAg/cinnamomum_burmannii","iNatAg/cinnamomum_camphora","iNatAg/cinnamomum_cassia","iNatAg/cinnamomum_verum","iNatAg/cistus_creticus","iNatAg/citrofortunella_microcarpa","iNatAg/citrullus_colocynthis","iNatAg/citrullus_lanatus","iNatAg/citrus_aurantifolia","iNatAg/citrus_aurantium","iNatAg/citrus_deliciosa","iNatAg/citrus_latifolia","iNatAg/citrus_limon","iNatAg/citrus_madurensis","iNatAg/citrus_medica","iNatAg/citrus_paradisi","iNatAg/citrus_reticulata","iNatAg/citrus_sinensis","iNatAg/citrus_unshiu","iNatAg/clausena_lansium","iNatAg/claytonia_caroliniana","iNatAg/claytonia_virginica","iNatAg/cleistogenes_squarrosa","iNatAg/clematis_ligusticifolia","iNatAg/clematis_orientalis","iNatAg/clematis_virginiana","iNatAg/clematis_vitalba","iNatAg/cleome_gynandra","iNatAg/cleome_hassleriana","iNatAg/cleome_viscosa","iNatAg/clitoria_laurifolia","iNatAg/clitoria_ternatea","iNatAg/clusia_occidentalis","iNatAg/cnicus_benedictus","iNatAg/coccoloba_uvifera","iNatAg/cochlospermum_religiosum","iNatAg/cocos_nucifera","iNatAg/coffea_arabica","iNatAg/coffea_canephora","iNatAg/coffea_liberica","iNatAg/coix_lacryma-jobi","iNatAg/cola_acuminata","iNatAg/cola_nitida","iNatAg/colchicum_autumnale","iNatAg/coleus_amboinicus","iNatAg/colocasia_esculenta","iNatAg/colophospermum_mopane","iNatAg/combretum_aculeatum","iNatAg/combretum_micranthum","iNatAg/combretum_molle","iNatAg/commelina_bengalensis","iNatAg/commelina_benghalensis","iNatAg/commelina_communis","iNatAg/commelina_erecta","iNatAg/commiphora_africana","iNatAg/conium_maculatum","iNatAg/conocarpus_erectus","iNatAg/conocarpus_lancifolius","iNatAg/convallaria_majalis","iNatAg/convolvulus_althaeoides","iNatAg/convolvulus_arvensis","iNatAg/convolvulus_equitans","iNatAg/convolvulus_sepium","iNatAg/copaifera_langsdorffii","iNatAg/corchorus_aestuans","iNatAg/corchorus_capsularis","iNatAg/cordia_africana","iNatAg/cordia_alliodora","iNatAg/coreopsis_lanceolata","iNatAg/coreopsis_tinctoria","iNatAg/coreopsis_verticillata","iNatAg/coriandrum_sativum","iNatAg/corispermum_hyssopifolium","iNatAg/corispermum_villosum","iNatAg/cornus_canadensis","iNatAg/cornus_florida","iNatAg/cornus_mas","iNatAg/cornus_sanguinea","iNatAg/coronilla_varia","iNatAg/corylus_avellana","iNatAg/corylus_maxima","iNatAg/cotoneaster_franchetii","iNatAg/cotula_coronopifolia","iNatAg/crambe_cordifolia","iNatAg/crambe_maritima","iNatAg/crassula_sieberiana","iNatAg/crataegus_crus-galli","iNatAg/crataegus_crus-gallii","iNatAg/crataegus_marshallii","iNatAg/crataegus_monogyna","iNatAg/crataegus_oxyacantha","iNatAg/crataegus_rivularis","iNatAg/cratylia_argentea","iNatAg/crepis_biennis","iNatAg/crepis_occidentalis","iNatAg/crepis_vesicaria","iNatAg/cressa_truxillensis","iNatAg/crinum_americanum","iNatAg/crithmum_maritimum","iNatAg/crocus_sativus","iNatAg/crotalaria_juncea","iNatAg/crotalaria_lanceolata","iNatAg/crotalaria_pallida","iNatAg/crotalaria_podocarpa","iNatAg/crotalaria_retusa","iNatAg/crotalaria_sagittalis","iNatAg/crotalaria_spectabilis","iNatAg/croton_monanthogynus","iNatAg/crucianella_angustifolia","iNatAg/cryptocarya_erythroxylon","iNatAg/cryptomeria_japonica","iNatAg/cryptotaenia_japonica","iNatAg/ctenium_concinnum","iNatAg/cucumis_anguria","iNatAg/cucumis_melo","iNatAg/cucumis_sativus","iNatAg/cucurbita_argyrosperma","iNatAg/cucurbita_digitata","iNatAg/cucurbita_ficifolia","iNatAg/cucurbita_foetidissima","iNatAg/cucurbita_maxima","iNatAg/cucurbita_mixta","iNatAg/cucurbita_moschata","iNatAg/cucurbita_pepo","iNatAg/cunninghamia_lanceolata","iNatAg/cupania_auriculata","iNatAg/cuphea_viscosissima","iNatAg/cupressus_arizonica","iNatAg/cupressus_lusitanica","iNatAg/cupressus_macrocarpa","iNatAg/cupressus_sempervirens","iNatAg/cupressus_torulosa","iNatAg/curcuma_longa","iNatAg/curcuma_zedoaria","iNatAg/cuscuta_approximata","iNatAg/cuscuta_epithymum","iNatAg/cuscuta_obtusiflora","iNatAg/cuscuta_planiflora","iNatAg/cuscuta_sandwichiana","iNatAg/cydonia_oblonga","iNatAg/cymbalaria_muralis","iNatAg/cymbopogon_citratus","iNatAg/cynanchum_scoparium","iNatAg/cynara_cardunculus","iNatAg/cynara_scolymus","iNatAg/cynodon_dactylon","iNatAg/cynodon_nlemfuensis","iNatAg/cynoglossum_officinale","iNatAg/cynometra_cauliflora","iNatAg/cynosurus_cristatus","iNatAg/cyperus_alopecuroides","iNatAg/cyperus_articulatus","iNatAg/cyperus_compressus","iNatAg/cyperus_croceus","iNatAg/cyperus_cuspidatus","iNatAg/cyperus_difformis","iNatAg/cyperus_eragrostis","iNatAg/cyperus_erythrorhizos","iNatAg/cyperus_esculentus","iNatAg/cyperus_flavescens","iNatAg/cyperus_fuscus","iNatAg/cyperus_hyalinus","iNatAg/cyperus_involucratus","iNatAg/cyperus_iria","iNatAg/cyperus_lanceolatus","iNatAg/cyperus_longus","iNatAg/cyperus_odoratus","iNatAg/cyperus_pilosus","iNatAg/cyperus_prolifer","iNatAg/cyperus_pseudovegetus","iNatAg/cyperus_rotundus","iNatAg/cyperus_sanguinolentus","iNatAg/cyperus_squarrosus","iNatAg/cyperus_strigosus","iNatAg/cyperus_subsquarrosus","iNatAg/cyperus_surinamensis","iNatAg/cyphomandra_betacea","iNatAg/cytisus_albus","iNatAg/cytisus_proliferus","iNatAg/cytisus_supinus","iNatAg/dacrydium_franklinii","iNatAg/dactylis_glomerata","iNatAg/dactyloctenium_aegyptium","iNatAg/dactyloctenium_giganteum","iNatAg/dalbergia_latifolia","iNatAg/dalbergia_melanoxylon","iNatAg/dalbergia_sissoo","iNatAg/daphne_laureola","iNatAg/daphne_mezereum","iNatAg/datura_ferox","iNatAg/datura_quercifolia","iNatAg/datura_stramonium","iNatAg/daucus_carota","iNatAg/daucus_carrota","iNatAg/delairea_odorata","iNatAg/delonix_regia","iNatAg/delphinium_bicolor","iNatAg/delphinium_carolinianum","iNatAg/delphinium_menziesii","iNatAg/delphinium_trolliifolium","iNatAg/dendrocalamus_asper","iNatAg/dendrocalamus_giganteus","iNatAg/dendrocalamus_strictus","iNatAg/dendrolobium_umbellatum","iNatAg/derris_elliptica","iNatAg/deschampsia_caespitosa","iNatAg/deschampsia_flexuosa","iNatAg/desmanthus_leptophyllus","iNatAg/desmanthus_virgatus","iNatAg/desmodium_affine","iNatAg/desmodium_barbatum","iNatAg/desmodium_cuneatum","iNatAg/desmodium_cuspidatum","iNatAg/desmodium_distortum","iNatAg/desmodium_gyroides","iNatAg/desmodium_heterophyllum","iNatAg/desmodium_incanum","iNatAg/desmodium_intortum","iNatAg/desmodium_paniculatum","iNatAg/desmodium_psilocarpum","iNatAg/desmodium_reticulatum","iNatAg/desmodium_sandwicense","iNatAg/desmodium_scorpiurus","iNatAg/desmodium_tortuosum","iNatAg/desmodium_triflorum","iNatAg/desmodium_uncinatum","iNatAg/desmodium_velutinum","iNatAg/dialium_guineense","iNatAg/dianthus_armeria","iNatAg/dichanthium_annulatum","iNatAg/dichanthium_aristatum","iNatAg/dichanthium_caricosum","iNatAg/dichanthium_sericeum","iNatAg/dichondra_carolinensis","iNatAg/dichondra_micrantha","iNatAg/dichrostachys_cinerea","iNatAg/dictamnus_albus","iNatAg/didymopanax_morototoni","iNatAg/diervilla_lonicera","iNatAg/digitalis_lanata","iNatAg/digitalis_lutea","iNatAg/digitalis_purpurea","iNatAg/digitaria_argyrograpta","iNatAg/digitaria_ciliaris","iNatAg/digitaria_decumbens","iNatAg/digitaria_didactyla","iNatAg/digitaria_eriantha","iNatAg/digitaria_tricholaenoides","iNatAg/digitaria_violascens","iNatAg/dillenia_indica","iNatAg/dillenia_pentagyna","iNatAg/diodia_virginiana","iNatAg/dioscorea_alata","iNatAg/dioscorea_bulbifera","iNatAg/dioscorea_esculenta","iNatAg/dioscorea_opposita","iNatAg/dioscorea_oppositifolia","iNatAg/dioscorea_trifida","iNatAg/diospyros_digyna","iNatAg/diospyros_kaki","iNatAg/diospyros_malabarica","iNatAg/diospyros_melanoxylon","iNatAg/diospyros_mespiliformis","iNatAg/diospyros_virginiana","iNatAg/diplachne_fusca","iNatAg/diploglottis_cunninghamii","iNatAg/dipsacus_fullonum","iNatAg/dipsacus_laciniatus","iNatAg/dipsacus_sylvestris","iNatAg/dipterocarpus_alatus","iNatAg/dipterocarpus_indicus","iNatAg/dipterocarpus_turbinatus","iNatAg/dodonaea_viscosa","iNatAg/dovyalis_caffra","iNatAg/dovyalis_hebecarpa","iNatAg/draba_nemorosa","iNatAg/draba_verna","iNatAg/dracocephalum_parviflorum","iNatAg/dracocephalum_thymiflorum","iNatAg/drosera_rotundifolia","iNatAg/dryopteris_filix-mas","iNatAg/duboisia_myoporoides","iNatAg/durio_zibethinus","iNatAg/dysoxylum_fraserianum","iNatAg/ecballium_elaterium","iNatAg/echinacea_purpurea","iNatAg/echinochloa_colona","iNatAg/echinochloa_crus-galli","iNatAg/echinochloa_frumentacea","iNatAg/echinochloa_polystachya","iNatAg/echinochloa_pyramidalis","iNatAg/echinops_sphaerocephalus","iNatAg/echium_plantagineum","iNatAg/echium_vulgare","iNatAg/ehrharta_calycina","iNatAg/ehrharta_erecta","iNatAg/ehrharta_longiflora","iNatAg/ehrharta_villosa","iNatAg/eichhornia_crassipes","iNatAg/ekebergia_capensis","iNatAg/elaeagnus_angustifolia","iNatAg/elaeagnus_multiflora","iNatAg/elaeis_guineensis","iNatAg/elaeis_oleifera","iNatAg/elaeocarpus_grandis","iNatAg/eleagnus_angustifolia","iNatAg/elegia_cuspidata","iNatAg/eleocharis_cellulosa","iNatAg/eleocharis_dulcis","iNatAg/eleocharis_macrostachya","iNatAg/eleocharis_montevidensis","iNatAg/eleocharis_vivipara","iNatAg/elephantopus_mollis","iNatAg/elephantorrhiza_elephantina","iNatAg/elettaria_cardamomum","iNatAg/eleusine_indica","iNatAg/ellisia_nyctelea","iNatAg/elsholtzia_ciliata","iNatAg/elymus_canadensis","iNatAg/elymus_caput-medusae","iNatAg/elymus_cinereus","iNatAg/elymus_condensatus","iNatAg/elymus_dahuricus","iNatAg/elymus_glaucus","iNatAg/elymus_viginicus","iNatAg/elymus_virginicus","iNatAg/emilia_sonchifolia","iNatAg/encalypta_intermedia","iNatAg/enneapogon_scoparius","iNatAg/ensete_ventricosum","iNatAg/entada_abyssinica","iNatAg/entada_africana","iNatAg/enterolobium_cyclocarpum","iNatAg/epilobium_angustifolium","iNatAg/epilobium_ciliatum","iNatAg/equisetum_arvense","iNatAg/equisetum_hyemale","iNatAg/equisetum_palustre","iNatAg/equisetum_sylvaticum","iNatAg/equisetum_telmateia","iNatAg/eragrostis_amabilis","iNatAg/eragrostis_barrelieri","iNatAg/eragrostis_capillaris","iNatAg/eragrostis_chloromelas","iNatAg/eragrostis_cilianensis","iNatAg/eragrostis_curvula","iNatAg/eragrostis_interrupta","iNatAg/eragrostis_lehmanniana","iNatAg/eragrostis_minor","iNatAg/eragrostis_obtusa","iNatAg/eragrostis_pilosa","iNatAg/eragrostis_racemosa","iNatAg/eragrostis_superba","iNatAg/eragrostis_tef","iNatAg/eragrostis_tremula","iNatAg/eragrostis_trichodes","iNatAg/eragrostis_unioloides","iNatAg/eremochloa_ophiuroides","iNatAg/erigeron_canadensis","iNatAg/erigeron_cascadensis","iNatAg/erigeron_divaricatus","iNatAg/erigeron_philadelphicus","iNatAg/eriobotrya_japonica","iNatAg/eriochloa_punctata","iNatAg/eriogonum_deflexum","iNatAg/eriogonum_longifolium","iNatAg/eriosema_psoraleoides","iNatAg/eruca_sativa","iNatAg/eryngium_campestre","iNatAg/eryngium_yuccifolium","iNatAg/erysimum_cheiranthoides","iNatAg/erysimum_hieracifolium","iNatAg/erysimum_hieraciifolium","iNatAg/erysimum_repandum","iNatAg/erythrina_abyssinica","iNatAg/erythrina_caffra","iNatAg/erythrina_edulis","iNatAg/erythrina_fusca","iNatAg/erythrina_poeppigiana","iNatAg/erythrina_variegata","iNatAg/erythrina_vespertilio","iNatAg/erythrophleum_chlorostachys","iNatAg/erythroxylum_coca","iNatAg/eucalyptus_accedens","iNatAg/eucalyptus_agglomerata","iNatAg/eucalyptus_albens","iNatAg/eucalyptus_astringens","iNatAg/eucalyptus_bosistoana","iNatAg/eucalyptus_botryoides","iNatAg/eucalyptus_brockwayi","iNatAg/eucalyptus_calophylla","iNatAg/eucalyptus_camaldulensis","iNatAg/eucalyptus_cinerea","iNatAg/eucalyptus_citriodora","iNatAg/eucalyptus_cladocalyx","iNatAg/eucalyptus_cloeziana","iNatAg/eucalyptus_consideniana","iNatAg/eucalyptus_cornuta","iNatAg/eucalyptus_crebra","iNatAg/eucalyptus_cypellocarpa","iNatAg/eucalyptus_dalrympleana","iNatAg/eucalyptus_deglupta","iNatAg/eucalyptus_delegatensis","iNatAg/eucalyptus_diversicolor","iNatAg/eucalyptus_dumosa","iNatAg/eucalyptus_elata","iNatAg/eucalyptus_eremophila","iNatAg/eucalyptus_eugenioides","iNatAg/eucalyptus_exserta","iNatAg/eucalyptus_fastigata","iNatAg/eucalyptus_fraxinoides","iNatAg/eucalyptus_globoidea","iNatAg/eucalyptus_globulus","iNatAg/eucalyptus_gomphocephala","iNatAg/eucalyptus_gongylocarpa","iNatAg/eucalyptus_grandis","iNatAg/eucalyptus_guilfoylei","iNatAg/eucalyptus_gummifera","iNatAg/eucalyptus_intertexta","iNatAg/eucalyptus_jacksonii","iNatAg/eucalyptus_johnstonii","iNatAg/eucalyptus_kessellii","iNatAg/eucalyptus_laophila","iNatAg/eucalyptus_largiflorens","iNatAg/eucalyptus_leucoxylon","iNatAg/eucalyptus_longifolia","iNatAg/eucalyptus_loxophleba","iNatAg/eucalyptus_maculata","iNatAg/eucalyptus_marginata","iNatAg/eucalyptus_melliodora","iNatAg/eucalyptus_microcarpa","iNatAg/eucalyptus_microcorys","iNatAg/eucalyptus_microtheca","iNatAg/eucalyptus_mitchelliana","iNatAg/eucalyptus_moluccana","iNatAg/eucalyptus_muelleriana","iNatAg/eucalyptus_nigrifunda","iNatAg/eucalyptus_niphophila","iNatAg/eucalyptus_nitens","iNatAg/eucalyptus_obliqua","iNatAg/eucalyptus_occidentalis","iNatAg/eucalyptus_ochrophloia","iNatAg/eucalyptus_oreades","iNatAg/eucalyptus_paniculata","iNatAg/eucalyptus_papuana","iNatAg/eucalyptus_patens","iNatAg/eucalyptus_pauciflora","iNatAg/eucalyptus_pellita","iNatAg/eucalyptus_phoenicea","iNatAg/eucalyptus_pilularis","iNatAg/eucalyptus_piperita","iNatAg/eucalyptus_planchoniana","iNatAg/eucalyptus_pleurocarpa","iNatAg/eucalyptus_polyanthemos","iNatAg/eucalyptus_populnea","iNatAg/eucalyptus_propinqua","iNatAg/eucalyptus_pulchella","iNatAg/eucalyptus_punctata","iNatAg/eucalyptus_pyrocarpa","iNatAg/eucalyptus_quadrangulata","iNatAg/eucalyptus_regnans","iNatAg/eucalyptus_resinifera","iNatAg/eucalyptus_robusta","iNatAg/eucalyptus_rubida","iNatAg/eucalyptus_rudis","iNatAg/eucalyptus_saligna","iNatAg/eucalyptus_salmonophloia","iNatAg/eucalyptus_salubris","iNatAg/eucalyptus_sargentii","iNatAg/eucalyptus_scias","iNatAg/eucalyptus_sideroxylon","iNatAg/eucalyptus_sieberi","iNatAg/eucalyptus_socialis","iNatAg/eucalyptus_subcrenulata","iNatAg/eucalyptus_tereticornis","iNatAg/eucalyptus_thozetiana","iNatAg/eucalyptus_transcontinentalis","iNatAg/eucalyptus_trivalva","iNatAg/eucalyptus_urnigera","iNatAg/eucalyptus_urophylla","iNatAg/eucalyptus_utilis","iNatAg/eucalyptus_viminalis","iNatAg/eucalyptus_wandoo","iNatAg/eucalyptus_woollsiana","iNatAg/eucryphia_lucida","iNatAg/eugenia_aromatica","iNatAg/eugenia_stipitata","iNatAg/eugenia_uniflora","iNatAg/euonymus_atropurpureus","iNatAg/euonymus_europaeus","iNatAg/euonymus_japonicus","iNatAg/eupatorium_album","iNatAg/eupatorium_altissimum","iNatAg/eupatorium_cannabinum","iNatAg/eupatorium_compositifolium","iNatAg/eupatorium_hyssopifolium","iNatAg/eupatorium_maculatum","iNatAg/eupatorium_perfoliatum","iNatAg/eupatorium_purpureum","iNatAg/eupatorium_serotinum","iNatAg/euphorbia_cyathophora","iNatAg/euphorbia_cyparissias","iNatAg/euphorbia_dendroides","iNatAg/euphorbia_epicyparissias","iNatAg/euphorbia_esula","iNatAg/euphorbia_helioscopia","iNatAg/euphorbia_heterophylla","iNatAg/euphorbia_hirsuta","iNatAg/euphorbia_hirta","iNatAg/euphorbia_hyssopifolia","iNatAg/euphorbia_lathyris","iNatAg/euphorbia_lathyrus","iNatAg/euphorbia_maculata","iNatAg/euphorbia_marginata","iNatAg/euphorbia_nutans","iNatAg/euphorbia_peplis","iNatAg/euphorbia_peplus","iNatAg/euphorbia_platyphyllos","iNatAg/euphorbia_prostata","iNatAg/euphorbia_prostrata","iNatAg/euphorbia_serphyllifolia","iNatAg/euphorbia_serpyllifolia","iNatAg/euphorbia_serrata","iNatAg/euphorbia_serrulata","iNatAg/euphorbia_spathulata","iNatAg/euphorbia_terracina","iNatAg/euphorbia_tirucalli","iNatAg/euphorbia_vermiculata","iNatAg/eurycoma_longifolia","iNatAg/eusideroxylon_zwageri","iNatAg/eustachys_paspaloides","iNatAg/euterpe_edulis","iNatAg/euterpe_oleracea","iNatAg/euthamia_occidentalis","iNatAg/evax_multicaulis","iNatAg/evonymus_europaeus","iNatAg/excoecaria_agallocha","iNatAg/fagopyrum_esculentum","iNatAg/fagopyrum_tataricum","iNatAg/fagraea_fragrans","iNatAg/fagus_grandifolia","iNatAg/fagus_sylvatica","iNatAg/faidherbia_albida","iNatAg/faurea_saligna","iNatAg/feijoa_sellowiana","iNatAg/festuca_arundinacea","iNatAg/festuca_gigantea","iNatAg/festuca_idahoensis","iNatAg/festuca_microstachys","iNatAg/festuca_myuros","iNatAg/festuca_ovina","iNatAg/festuca_pratensis","iNatAg/festuca_rubra","iNatAg/festuca_scabra","iNatAg/fibraurea_tinctoria","iNatAg/ficus_abutilifolia","iNatAg/ficus_auriculata","iNatAg/ficus_benghalensis","iNatAg/ficus_carica","iNatAg/ficus_elastica","iNatAg/ficus_glumosa","iNatAg/ficus_macrophylla","iNatAg/ficus_sycomorus","iNatAg/ficus_thonningii","iNatAg/filago_gallica","iNatAg/filipendula_vulgaris","iNatAg/flacourtia_indica","iNatAg/flemingia_macrophylla","iNatAg/flindersia_bourjotiana","iNatAg/flindersia_brayleyana","iNatAg/flindersia_pimenteliana","iNatAg/foeniculum_vulgare","iNatAg/fortunella_hindsii","iNatAg/fortunella_japonica","iNatAg/fortunella_margarita","iNatAg/fragaria_ananassa","iNatAg/fragaria_chiloensis","iNatAg/fragaria_vesca","iNatAg/fragaria_virginiana","iNatAg/frangula_alnus","iNatAg/fraxinus_americana","iNatAg/fraxinus_excelsior","iNatAg/frithia_humilis","iNatAg/fuirena_simplex","iNatAg/fumaria_capreolata","iNatAg/fumaria_officinalis","iNatAg/fumaria_parviflora","iNatAg/gaillardia_pulchella","iNatAg/galactia_marginalis","iNatAg/galactia_striata","iNatAg/galega_officinalis","iNatAg/galega_orientalis","iNatAg/galeopsis_ladanum","iNatAg/galeopsis_tetrahit","iNatAg/galinsoga_quadriradiata","iNatAg/galium_aparine","iNatAg/galium_mollugo","iNatAg/galium_paniculatum","iNatAg/galium_parisiense","iNatAg/galium_saxatile","iNatAg/galium_spurium","iNatAg/galium_tricornutum","iNatAg/galium_verum","iNatAg/garcinia_dulcis","iNatAg/garcinia_mangostana","iNatAg/garcinia_multiflora","iNatAg/garcinia_xanthochymus","iNatAg/garuga_pinnata","iNatAg/gaultheria_procumbens","iNatAg/gaura_biennis","iNatAg/geissois_benthamii","iNatAg/genipa_americana","iNatAg/genista_canariensis","iNatAg/genista_tinctoria","iNatAg/gentiana_acaulis","iNatAg/gentiana_lutea","iNatAg/geranium_carolinianum","iNatAg/geranium_dissectum","iNatAg/geranium_molle","iNatAg/geranium_pratense","iNatAg/geranium_pusillum","iNatAg/geranium_robertianum","iNatAg/girardinia_diversifolia","iNatAg/glechoma_hederacea","iNatAg/glecoma_hederacea","iNatAg/gleditsia_triacanthos","iNatAg/gliricidia_sepium","iNatAg/globularia_vulgaris","iNatAg/glyceria_fluitans","iNatAg/glyceria_septentrionalis","iNatAg/glycine_max","iNatAg/glycyrrhiza_glabra","iNatAg/glycyrrhiza_lepidota","iNatAg/gmelina_arborea","iNatAg/gmelina_leichhardtii","iNatAg/gnaphalium_calviceps","iNatAg/gnaphalium_luteo-album","iNatAg/gnaphalium_luteoalbum","iNatAg/gnaphalium_palustre","iNatAg/gnaphalium_pensylvanicum","iNatAg/gnaphalium_purpureum","iNatAg/gnaphalium_uliginosum","iNatAg/gossypium_barbadense","iNatAg/gossypium_herbaceum","iNatAg/gossypium_hirsutum","iNatAg/grevillea_parallela","iNatAg/grevillea_robusta","iNatAg/grewia_asiatica","iNatAg/grewia_bicolor","iNatAg/grewia_tiliifolia","iNatAg/guaiacum_officinale","iNatAg/guaiacum_sanctum","iNatAg/guazuma_ulmifolia","iNatAg/guizotia_abyssinica","iNatAg/gunnera_tinctoria","iNatAg/gypsophila_paniculata","iNatAg/hagenia_abyssinica","iNatAg/hamamelis_virginiana","iNatAg/hardwickia_binata","iNatAg/harpagophytum_procumbens","iNatAg/harpochloa_falx","iNatAg/harungana_madagascariensis","iNatAg/hedera_helix","iNatAg/hedysarum_coronarium","iNatAg/hedysarum_pallidum","iNatAg/hedysarum_spinosissimum","iNatAg/helenium_autumnale","iNatAg/helenium_tenuifolium","iNatAg/helianthus_annus","iNatAg/helianthus_annuus","iNatAg/helianthus_ciliaris","iNatAg/helianthus_pauciflorus","iNatAg/helianthus_petiolaris","iNatAg/helianthus_tuberosus","iNatAg/helictotrichon_turgidulum","iNatAg/heliotropium_amplexicaule","iNatAg/heliotropium_curassavicum","iNatAg/heliotropium_europaeum","iNatAg/hemarthria_altissima","iNatAg/hemizonia_congesta","iNatAg/heracleum_sphondylium","iNatAg/heritiera_littoralis","iNatAg/heteropogon_contortus","iNatAg/heterotheca_grandiflora","iNatAg/heuchera_mexicana","iNatAg/hevea_brasiliensis","iNatAg/hibiscus_cannabinus","iNatAg/hibiscus_sabdariffa","iNatAg/hibiscus_syriacus","iNatAg/hibiscus_tiliaceus","iNatAg/hibiscus_tilliaceus","iNatAg/hieracium_aurantiacum","iNatAg/hieracium_gronovii","iNatAg/hieracium_lachenalii","iNatAg/hieracium_laevigatum","iNatAg/hieracium_murorum","iNatAg/hieracium_pilosella","iNatAg/hieracium_piloselloides","iNatAg/hieracium_umbellatum","iNatAg/hieracium_venosum","iNatAg/hieracium_vulgatum","iNatAg/hierochloe_odorata","iNatAg/hilaria_jamesii","iNatAg/hilaria_mutica","iNatAg/hippophae_rhamnoides","iNatAg/hippophae_salicifolia","iNatAg/hippuris_vulgaris","iNatAg/holcus_lanatus","iNatAg/holcus_mollis","iNatAg/hopea_odorata","iNatAg/hopea_parviflora","iNatAg/hopea_wightiana","iNatAg/hordeum_brachyantherum","iNatAg/hordeum_brevisubulatum","iNatAg/hordeum_bulbosum","iNatAg/hordeum_distichon","iNatAg/hordeum_geniculatum","iNatAg/hordeum_jubatum","iNatAg/hordeum_murinum","iNatAg/hordeum_vulgare","iNatAg/houstonia_caerulea","iNatAg/humulus_lupulus","iNatAg/hydnocarpus_alpina","iNatAg/hydrocotyle_americana","iNatAg/hydrocotyle_mexicana","iNatAg/hydrocotyle_ranunculoides","iNatAg/hydrocotyle_sibthorpioides","iNatAg/hydrocotyle_umbellata","iNatAg/hydrocotyle_verticillata","iNatAg/hydrolea_uniflora","iNatAg/hylocereus_undatus","iNatAg/hymenaea_courbaril","iNatAg/hymenopappus_scabiosaeus","iNatAg/hymenoxys_odorata","iNatAg/hyosciamus_niger","iNatAg/hyoscyamus_niger","iNatAg/hyparrhenia_dregeana","iNatAg/hyparrhenia_filipendula","iNatAg/hyparrhenia_hirta","iNatAg/hyparrhenia_rufa","iNatAg/hypericum_canadense","iNatAg/hypericum_canariense","iNatAg/hypericum_mutilum","iNatAg/hypericum_mutlium","iNatAg/hypericum_perforatum","iNatAg/hypericum_prolificum","iNatAg/hypericum_punctatum","iNatAg/hyperthelia_dissoluta","iNatAg/hyphaene_compressa","iNatAg/hyphaene_thebaica","iNatAg/hypochaeris_glabra","iNatAg/hypochaeris_radicata","iNatAg/hypoxis_hemerocallidea","iNatAg/hyssopus_officinalis","iNatAg/ilex_aquifolium","iNatAg/ilex_dipyrena","iNatAg/ilex_paraguariensis","iNatAg/impatiens_balsamina","iNatAg/impatiens_parviflora","iNatAg/imperata_brevifolia","iNatAg/imperata_cylindrica","iNatAg/indigofera_arrecta","iNatAg/indigofera_hirsuta","iNatAg/indigofera_oblongifolia","iNatAg/indigofera_schimperi","iNatAg/indigofera_spicata","iNatAg/indigofera_suffruticosa","iNatAg/indigofera_tinctoria","iNatAg/inga_edulis","iNatAg/inga_vera","iNatAg/intsia_bijuga","iNatAg/inula_britannica","iNatAg/inula_helenium","iNatAg/ipomoea_alba","iNatAg/ipomoea_aquatica","iNatAg/ipomoea_batatas","iNatAg/ipomoea_coccinea","iNatAg/ipomoea_hederifolia","iNatAg/ipomoea_lacunosa","iNatAg/ipomoea_quamoclit","iNatAg/ipomoea_tricolor","iNatAg/ipomoea_triloba","iNatAg/ipomoea_turbinata","iNatAg/iris_germanica","iNatAg/iris_missouriensis","iNatAg/iris_pseudacorus","iNatAg/iris_pseudoacorus","iNatAg/iris_virginica","iNatAg/isatis_tinctoria","iNatAg/ischaemum_ciliare","iNatAg/ischaemum_muticum","iNatAg/ischaemum_rugosum","iNatAg/iseilema_vaginiflorum","iNatAg/iva_angustifolia","iNatAg/iva_annua","iNatAg/jacaranda_copaia","iNatAg/jacaranda_mimosifolia","iNatAg/jatropha_curcas","iNatAg/jatropha_gossypifolia","iNatAg/jatropha_gossypiifolia","iNatAg/juglans_hindsii","iNatAg/juglans_nigra","iNatAg/juglans_regia","iNatAg/juncus_bufonius","iNatAg/juncus_effusus","iNatAg/juniperus_communis","iNatAg/juniperus_occidentalis","iNatAg/juniperus_pinchotii","iNatAg/juniperus_procera","iNatAg/juniperus_sabina","iNatAg/justicia_adhatoda","iNatAg/kalmia_angustifolia","iNatAg/khaya_anthotheca","iNatAg/khaya_senegalensis","iNatAg/kigelia_pinnata","iNatAg/kyllinga_gracillima","iNatAg/kyllinga_odorata","iNatAg/lablab_purpureus","iNatAg/lactuca_canadensis","iNatAg/lactuca_indica","iNatAg/lactuca_saligna","iNatAg/lactuca_serriola","iNatAg/lactuca_virosa","iNatAg/lagascea_mollis","iNatAg/lagenaria_siceraria","iNatAg/lagerstroemia_flos-reginae","iNatAg/lagerstroemia_lanceolata","iNatAg/lagerstroemia_parviflora","iNatAg/laguncularia_racemosa","iNatAg/lamium_album","iNatAg/lamium_amplexicaule","iNatAg/lamium_maculatum","iNatAg/lamium_purpureum","iNatAg/lannea_coromandelica","iNatAg/lannea_edulis","iNatAg/lansium_domesticum","iNatAg/lantana_camara","iNatAg/lapsana_communis","iNatAg/larix_decidua","iNatAg/larrea_divaricata","iNatAg/lathyrus_angulatus","iNatAg/lathyrus_cicera","iNatAg/lathyrus_hirsutus","iNatAg/lathyrus_latifolius","iNatAg/lathyrus_ochrus","iNatAg/lathyrus_odoratus","iNatAg/lathyrus_palustris","iNatAg/lathyrus_pratensis","iNatAg/lathyrus_pubescens","iNatAg/lathyrus_sativus","iNatAg/lathyrus_tingitanus","iNatAg/lathyrus_tuberosus","iNatAg/laurus_nobilis","iNatAg/lavandula_angustifolia","iNatAg/lavandula_dentata","iNatAg/lavandula_latifolia","iNatAg/lawsonia_inermis","iNatAg/ledum_groenlandicum","iNatAg/leersia_hexandra","iNatAg/leersia_lenticularis","iNatAg/lemna_aequinoctialis","iNatAg/lemna_gibba","iNatAg/lemna_minor","iNatAg/lemna_trisulca","iNatAg/lens_culinaris","iNatAg/leontodon_autumnale","iNatAg/leontodon_autumnalis","iNatAg/leontodon_hirtus","iNatAg/leontodon_saxatilis","iNatAg/leontopodium_alpinum","iNatAg/leonurus_cardiaca","iNatAg/leonurus_marrubiastrum","iNatAg/leonurus_sibericus","iNatAg/leonurus_sibiricus","iNatAg/lepidium_austrinum","iNatAg/lepidium_chalepense","iNatAg/lepidium_didymum","iNatAg/lepidium_draba","iNatAg/lepidium_lasiocarpum","iNatAg/lepidium_latifolium","iNatAg/lepidium_perfoliatum","iNatAg/lepidium_ruderale","iNatAg/lepidium_sativum","iNatAg/lepidium_virginicum","iNatAg/leptochloa_chinensis","iNatAg/leptochloa_fusca","iNatAg/leptochloa_nealleyi","iNatAg/lespedeza_cuneata","iNatAg/lespedeza_striata","iNatAg/lesquerella_fendleri","iNatAg/leucaena_diversifolia","iNatAg/leucaena_leucocephala","iNatAg/leucanthemum_vulgare","iNatAg/leucojum_aestivum","iNatAg/levisticum_officinale","iNatAg/liatris_mucronata","iNatAg/licuala_ramsayi","iNatAg/ligustrum_ovalifolium","iNatAg/ligustrum_vulgare","iNatAg/lilium_canadense","iNatAg/lilium_candidum","iNatAg/limnanthes_alba","iNatAg/limnophila_sessiliflora","iNatAg/linaria_vulgaris","iNatAg/lindernia_grandiflora","iNatAg/linum_usitatissimum","iNatAg/lippia_alba","iNatAg/liquidambar_styraciflua","iNatAg/liriodendron_tulipifera","iNatAg/litchi_chinensis","iNatAg/lithospermum_arvense","iNatAg/lithospermum_officinale","iNatAg/livistona_australis","iNatAg/lobelia_inflata","iNatAg/lobelia_siphilitica","iNatAg/lolium_multiflorum","iNatAg/lolium_perenne","iNatAg/lolium_rigidum","iNatAg/lolium_temulentum","iNatAg/lonchocarpus_laxiflorus","iNatAg/lonicera_caerulea","iNatAg/lonicera_caprifolium","iNatAg/lonicera_periclymenum","iNatAg/lonicera_sempervirens","iNatAg/lonicera_tartarica","iNatAg/lonicera_tatarica","iNatAg/lonicera_xylosteum","iNatAg/lophostemon_suaveolens","iNatAg/lotus_corniculatus","iNatAg/lotus_creticus","iNatAg/lotus_edulis","iNatAg/lotus_halophilus","iNatAg/lotus_parviflorus","iNatAg/lotus_tenuis","iNatAg/lotus_uliginosus","iNatAg/loudetia_simplex","iNatAg/ludwigia_adscendens","iNatAg/ludwigia_alternifolia","iNatAg/luffa_acutangula","iNatAg/luffa_cylindrica","iNatAg/lumnitzera_littorea","iNatAg/lumnitzera_racemosa","iNatAg/lunaria_annua","iNatAg/lupinus_albus","iNatAg/lupinus_angustifolius","iNatAg/lupinus_arboreus","iNatAg/lupinus_cosentinii","iNatAg/lupinus_luteus","iNatAg/lupinus_mutabilis","iNatAg/lupinus_pilosus","iNatAg/lychnis_chalcedonica","iNatAg/lychnis_flos-cuculi","iNatAg/lychnis_viscaria","iNatAg/lycium_barbarum","iNatAg/lycium_berlandieri","iNatAg/lycium_chinense","iNatAg/lycium_ferocissimum","iNatAg/lycium_halimifolium","iNatAg/lycopersicon_esculentum","iNatAg/lycopodium_clavatum","iNatAg/lycopus_europaeus","iNatAg/lysimachia_ciliata","iNatAg/lysimachia_nummularia","iNatAg/lysimachia_punctata","iNatAg/lysimachia_vulgaris","iNatAg/lythrum_hyssopifolia","iNatAg/lythrum_salicaria","iNatAg/lythrum_virgatum","iNatAg/macadamia_integrifolia","iNatAg/macadamia_tetraphylla","iNatAg/macaranga_tanarius","iNatAg/macroptilium_atropurpureum","iNatAg/macroptilium_erythroloma","iNatAg/macroptilium_gracile","iNatAg/macroptilium_lathyroides","iNatAg/macroptilium_longepedunculatum","iNatAg/macrotyloma_axillare","iNatAg/maesopsis_eminii","iNatAg/maianthemum_canadense","iNatAg/majorana_hortensis","iNatAg/malachra_alceifolia","iNatAg/mallotus_philippensis","iNatAg/malpighia_glabra","iNatAg/malus_domestica","iNatAg/malus_sylvestris","iNatAg/malva_alcea","iNatAg/malva_moschata","iNatAg/malva_nicaeensis","iNatAg/malva_parviflora","iNatAg/malva_pusilla","iNatAg/malva_rotundifolia","iNatAg/malva_silvestris","iNatAg/malva_sylvestris","iNatAg/mammea_americana","iNatAg/mangifera_indica","iNatAg/manihot_esculenta","iNatAg/manilkara_zapota","iNatAg/maranta_arundinacea","iNatAg/markhamia_lutea","iNatAg/marrubium_vulgare","iNatAg/marsilea_quadrifolia","iNatAg/matricaria_chamomila","iNatAg/matricaria_chamomilla","iNatAg/matricaria_discoidea","iNatAg/matricaria_perforata","iNatAg/matricaria_recutita","iNatAg/mauritia_flexuosa","iNatAg/mayaca_fluviatilis","iNatAg/medicago_arabica","iNatAg/medicago_falcata","iNatAg/medicago_intertexta","iNatAg/medicago_laciniata","iNatAg/medicago_littoralis","iNatAg/medicago_lupulina","iNatAg/medicago_marina","iNatAg/medicago_minima","iNatAg/medicago_orbicularis","iNatAg/medicago_polymorpha","iNatAg/medicago_rigidula","iNatAg/medicago_rugosa","iNatAg/medicago_sativa","iNatAg/medicago_scutellata","iNatAg/medicago_tornata","iNatAg/medicago_truncatula","iNatAg/medicago_turbinata","iNatAg/melaleuca_bracteata","iNatAg/melaleuca_cajuputi","iNatAg/melaleuca_dealbata","iNatAg/melaleuca_lanceolata","iNatAg/melaleuca_leucadendron","iNatAg/melaleuca_nervosa","iNatAg/melaleuca_quinquenervia","iNatAg/melaleuca_viridiflora","iNatAg/melampyrum_lineare","iNatAg/melastoma_malabathricum","iNatAg/melastoma_melabathricum","iNatAg/melia_azedarach","iNatAg/melica_decumbens","iNatAg/melicoccus_bijugatus","iNatAg/melilotus_albus","iNatAg/melilotus_indica","iNatAg/melilotus_officinalis","iNatAg/melilotus_suaveolens","iNatAg/melinis_minutiflora","iNatAg/melissa_officinalis","iNatAg/melochia_corchorifolia","iNatAg/melothria_pendula","iNatAg/mentha_arvensis","iNatAg/mentha_longifolia","iNatAg/mentha_piperita","iNatAg/mentha_pulegium","iNatAg/mentha_rotundifolia","iNatAg/mentha_spicata","iNatAg/menyanthes_trifoliata","iNatAg/mercurialis_annua","iNatAg/mesembryanthemum_cristallinum","iNatAg/mesembryanthemum_noctiflorum","iNatAg/mespilus_germanica","iNatAg/mesua_ferrea","iNatAg/metroxylon_sagu","iNatAg/michelia_champaca","iNatAg/microstegium_ciliatum","iNatAg/miliusa_velutina","iNatAg/mimosa_casta","iNatAg/mimosa_dutrae","iNatAg/mimosa_pigra","iNatAg/mimosa_pudica","iNatAg/mirabilis_jalapa","iNatAg/molinia_caerulea","iNatAg/mollugo_verticillata","iNatAg/momordica_charantia","iNatAg/momordica_cochinchinensis","iNatAg/monarda_fistulosa","iNatAg/monarda_punctata","iNatAg/monochoria_hastata","iNatAg/monochoria_vaginalis","iNatAg/monocymbium_ceresiiforme","iNatAg/monstera_deliciosa","iNatAg/montanoa_hibiscifolia","iNatAg/morinda_citrifolia","iNatAg/moringa_oleifera","iNatAg/morus_alba","iNatAg/morus_nigra","iNatAg/morus_rubra","iNatAg/mucuna_pruriens","iNatAg/muntingia_calabura","iNatAg/murraya_koenigii","iNatAg/musa_acuminata","iNatAg/musa_acuminata_×_balbisiana","iNatAg/musa_balbisiana","iNatAg/musa_sapientium","iNatAg/musanga_cecropioides","iNatAg/muscari_comosum","iNatAg/myosotis_alpestris","iNatAg/myosurus_minimus","iNatAg/myrica_cerifera","iNatAg/myriophyllum_heterophyllum","iNatAg/myriophyllum_implicatum","iNatAg/myriophyllum_sibiricum","iNatAg/myriophyllum_spicatum","iNatAg/myriophyllum_verticillatum","iNatAg/myristica_fragrans","iNatAg/myroxylon_balsamum","iNatAg/myrsine_africana","iNatAg/myrtus_communis","iNatAg/nardus_stricta","iNatAg/nasturtium_officinale","iNatAg/nauclea_orientalis","iNatAg/nelumbo_nucifera","iNatAg/neofabricia_myrtifolia","iNatAg/neoglaziovia_variegata","iNatAg/neonotonia_wightii","iNatAg/nepeta_cataria","iNatAg/nephelium_lappaceum","iNatAg/nephelium_mutabile","iNatAg/nerium_oleander","iNatAg/nicotiana_quadrivalvis","iNatAg/nicotiana_rustica","iNatAg/nicotiana_trigonophylla","iNatAg/nigella_sativa","iNatAg/nothofagus_cunninghamii","iNatAg/nothofagus_moorei","iNatAg/nothoscordum_borbonicum","iNatAg/nuphar_advena","iNatAg/nuphar_lutea","iNatAg/nymphaea_alba","iNatAg/nypa_fruticans","iNatAg/ochroma_pyramidale","iNatAg/ocimum_americanum","iNatAg/ocimum_basilicum","iNatAg/ocimum_tenuiflorum","iNatAg/octomeles_sumatrana","iNatAg/oenanthe_javanica","iNatAg/oenothera_albicaulis","iNatAg/oenothera_biennis","iNatAg/oenothera_parviflora","iNatAg/oenothera_perennis","iNatAg/oldenlandia_corymbosa","iNatAg/olea_africana","iNatAg/olea_capensis","iNatAg/olea_europaea","iNatAg/olea_europea","iNatAg/oncosperma_tigillarium","iNatAg/onobrychis_viciifolia","iNatAg/ononis_alopecuroides","iNatAg/ononis_spinosa","iNatAg/onopordum_acanthium","iNatAg/onopordum_illyricum","iNatAg/onosmodium_discolor","iNatAg/opuntia_ficus-indica","iNatAg/opuntia_leptocaulis","iNatAg/opuntia_polyacantha","iNatAg/opuntia_polycantha","iNatAg/origanum_majorana","iNatAg/origanum_onites","iNatAg/origanum_vulgare","iNatAg/ornithogalum_nutans","iNatAg/ornithogalum_umbellatum","iNatAg/ornithopus_compressus","iNatAg/ornithopus_sativus","iNatAg/orobanche_flava","iNatAg/orobanche_ludoviciana","iNatAg/orobanche_minor","iNatAg/orobanche_ramosa","iNatAg/orontium_aquaticum","iNatAg/orthosiphon_aristatus","iNatAg/oryza_sativa","iNatAg/oryzopsis_holciformis","iNatAg/oryzopsis_miliacea","iNatAg/osmorhiza_berteroi","iNatAg/osmunda_regalis","iNatAg/ottochloa_nodosa","iNatAg/oxalis_acetosella","iNatAg/oxalis_corniculata","iNatAg/oxalis_pes-caprae","iNatAg/oxalis_pescaprae","iNatAg/oxalis_stricta","iNatAg/oxalis_tuberosa","iNatAg/oxytropis_lambertii","iNatAg/pachyrhizus_erosus","iNatAg/paederia_cruddasiana","iNatAg/paederia_foetida","iNatAg/paeonia_officinalis","iNatAg/panax_ginseng","iNatAg/panax_quinquefolius","iNatAg/pangium_edule","iNatAg/panicum_antidotale","iNatAg/panicum_capillare","iNatAg/panicum_coloratum","iNatAg/panicum_ecklonii","iNatAg/panicum_gattingeri","iNatAg/panicum_maximum","iNatAg/panicum_miliaceum","iNatAg/panicum_natalense","iNatAg/panicum_obtusum","iNatAg/panicum_pilosum","iNatAg/panicum_racemosum","iNatAg/panicum_repens","iNatAg/panicum_sphaerocarpon","iNatAg/panicum_trichocladum","iNatAg/panicum_turgidum","iNatAg/panicum_virgatum","iNatAg/papaver_argemone","iNatAg/papaver_bracteatum","iNatAg/papaver_dubium","iNatAg/papaver_rhoeas","iNatAg/papaver_somniferum","iNatAg/parietaria_floridana","iNatAg/parietaria_officinalis","iNatAg/parinari_curatellifolia","iNatAg/parkia_biglobosa","iNatAg/parkia_speciosa","iNatAg/parkinsonia_aculeata","iNatAg/parnassia_palustris","iNatAg/parsonsia_latifolia","iNatAg/parthenium_argentatum","iNatAg/parthenium_hysterophorus","iNatAg/paspalum_conjugatum","iNatAg/paspalum_dilatatum","iNatAg/paspalum_distichum","iNatAg/paspalum_nicorae","iNatAg/paspalum_notatum","iNatAg/paspalum_plicatulum","iNatAg/paspalum_scrobiculatum","iNatAg/paspalum_separatum","iNatAg/paspalum_urvillei","iNatAg/paspalum_vaginatum","iNatAg/passiflora_bicornis","iNatAg/passiflora_edulis","iNatAg/passiflora_foetida","iNatAg/passiflora_incarnata","iNatAg/passiflora_laurifolia","iNatAg/passiflora_ligularis","iNatAg/passiflora_lutea","iNatAg/passiflora_mollissima","iNatAg/passiflora_quadrangularis","iNatAg/passiflora_suberosa","iNatAg/pastinaca_sativa","iNatAg/paullinia_cupana","iNatAg/paulownia_tomentosa","iNatAg/peganum_harmala","iNatAg/pelargonium_graveolens","iNatAg/peltandra_sagittifolia","iNatAg/peltandra_virginica","iNatAg/peltophorum_africanum","iNatAg/peltophorum_pterocarpum","iNatAg/pennisetum_clandestinum","iNatAg/pennisetum_glaucum","iNatAg/pennisetum_macrourum","iNatAg/pennisetum_pedicellatum","iNatAg/pennisetum_polystachyon","iNatAg/pennisetum_purpureum","iNatAg/pennisetum_setaceum","iNatAg/pennisetum_villosum","iNatAg/perilla_frutescens","iNatAg/persea_americana","iNatAg/persicaria_maculosa","iNatAg/persoonia_falcata","iNatAg/petalostigma_pubescens","iNatAg/petasites_albus","iNatAg/petasites_hybridus","iNatAg/petroselinum_crispum","iNatAg/petunia_parviflora","iNatAg/peucedanum_ostruthium","iNatAg/phalaris_aquatica","iNatAg/phalaris_arundinacea","iNatAg/phalaris_arundinaceae","iNatAg/phalaris_brachystachys","iNatAg/phalaris_canariensis","iNatAg/phalaris_caroliniana","iNatAg/phalaris_coerulescens","iNatAg/phalaris_paradoxa","iNatAg/phaseolus_acutifolius","iNatAg/phaseolus_coccineus","iNatAg/phaseolus_lunatus","iNatAg/phaseolus_vulgaris","iNatAg/phleum_alpinum","iNatAg/phleum_pratense","iNatAg/phoenix_dactylifera","iNatAg/phoenix_reclinata","iNatAg/phoenix_sylvestris","iNatAg/phormium_tenax","iNatAg/phragmites_australis","iNatAg/phragmites_communis","iNatAg/phragmites_karka","iNatAg/phyllanthus_niruri","iNatAg/phyllanthus_tenellus","iNatAg/phyllanthus_urinaria","iNatAg/phyllocladus_aspleniifolius","iNatAg/physalis_alkekengi","iNatAg/physalis_angulata","iNatAg/physalis_heterophylla","iNatAg/physalis_lancifolia","iNatAg/physalis_peruviana","iNatAg/physalis_philadelphica","iNatAg/physalis_pubescens","iNatAg/physalis_virginiana","iNatAg/physalis_viscosa","iNatAg/phytolacca_acinosa","iNatAg/phytolacca_americana","iNatAg/phytolacca_dioica","iNatAg/picea_abies","iNatAg/picea_omorica","iNatAg/picea_omorika","iNatAg/picris_echioides","iNatAg/picris_hieracioides","iNatAg/piliostigma_reticulatum","iNatAg/piliostigma_thonningii","iNatAg/pimenta_dioica","iNatAg/pimenta_racemosa","iNatAg/pimpinella_anisum","iNatAg/pimpinella_saxifraga","iNatAg/pinguicula_vulgaris","iNatAg/pinus_ayacahuite","iNatAg/pinus_brutia","iNatAg/pinus_canariensis","iNatAg/pinus_caribaea","iNatAg/pinus_chiapensis","iNatAg/pinus_douglasiana","iNatAg/pinus_durangensis","iNatAg/pinus_greggii","iNatAg/pinus_halepensis","iNatAg/pinus_hartwegii","iNatAg/pinus_kesiya","iNatAg/pinus_merkusii","iNatAg/pinus_montezumae","iNatAg/pinus_mugo","iNatAg/pinus_occidentalis","iNatAg/pinus_oocarpa","iNatAg/pinus_palustris","iNatAg/pinus_patula","iNatAg/pinus_pinaster","iNatAg/pinus_pinea","iNatAg/pinus_ponderosa","iNatAg/pinus_pseudostrobus","iNatAg/pinus_radiata","iNatAg/pinus_roxburghii","iNatAg/pinus_sylvestris","iNatAg/pinus_tabuliformis","iNatAg/pinus_taeda","iNatAg/pinus_teocote","iNatAg/piper_aduncum","iNatAg/piper_betle","iNatAg/piper_longum","iNatAg/piper_methysticum","iNatAg/piper_nigrum","iNatAg/pistacia_atlantica","iNatAg/pistacia_lentiscus","iNatAg/pistacia_vera","iNatAg/pistia_stratiotes","iNatAg/pisum_sativum","iNatAg/pithecellobium_dulce","iNatAg/pittosporum_resiniferum","iNatAg/pittosporum_undulatum","iNatAg/plagiobothrys_canescens","iNatAg/plantago_coronopus","iNatAg/plantago_heterophylla","iNatAg/plantago_indica","iNatAg/plantago_lanceolata","iNatAg/plantago_major","iNatAg/plantago_media","iNatAg/plantago_ovata","iNatAg/plantago_psyllium","iNatAg/plantago_virginica","iNatAg/platanus_orientalis","iNatAg/poa_alpina","iNatAg/poa_annua","iNatAg/poa_bulbosa","iNatAg/poa_compressa","iNatAg/poa_cuspidata","iNatAg/poa_fendleriana","iNatAg/poa_nemoralis","iNatAg/poa_pratensis","iNatAg/poa_trivialis","iNatAg/podocarpus_elatus","iNatAg/podocarpus_falcatus","iNatAg/poeciloneuron_indicum","iNatAg/pogostemon_cablin","iNatAg/polemonium_caeruleum","iNatAg/polemonium_micranthum","iNatAg/polyalthia_fragrans","iNatAg/polycarpon_tetraphyllum","iNatAg/polygonatum_orientale","iNatAg/polygonum_achoreum","iNatAg/polygonum_arenastrum","iNatAg/polygonum_aviculare","iNatAg/polygonum_bistorta","iNatAg/polygonum_convolvulus","iNatAg/polygonum_equisetiforme","iNatAg/polygonum_erectum","iNatAg/polygonum_hydropiper","iNatAg/polygonum_hydropiperoides","iNatAg/polygonum_lapathifolium","iNatAg/polygonum_orientale","iNatAg/polygonum_pensylvanicum","iNatAg/polygonum_perfoliatum","iNatAg/polygonum_persicaria","iNatAg/polygonum_punctatum","iNatAg/polygonum_ramosissimum","iNatAg/polygonum_scandens","iNatAg/polymnia_sonchifolia","iNatAg/polypodium_vulgare","iNatAg/polypogon_interruptus","iNatAg/polypremum_procumbens","iNatAg/polyscias_fulva","iNatAg/polytrichum_commune","iNatAg/pongamia_pinnata","iNatAg/pontederia_cordata","iNatAg/pontederia_rotundifolia","iNatAg/populus_balsamifera","iNatAg/populus_ciliata","iNatAg/populus_deltoides","iNatAg/populus_euphratica","iNatAg/populus_simonii","iNatAg/portulaca_oleracea","iNatAg/portulaca_pilosa","iNatAg/portulaca_pilosa_pilosa","iNatAg/portulaca_quadrifida","iNatAg/potamogeton_diversifolius","iNatAg/potamogeton_epihydrus","iNatAg/potamogeton_filiformis","iNatAg/potamogeton_foliosus","iNatAg/potamogeton_friesii","iNatAg/potamogeton_gramineus","iNatAg/potamogeton_illinoensis","iNatAg/potamogeton_natans","iNatAg/potamogeton_nodosus","iNatAg/potamogeton_pectinatus","iNatAg/potamogeton_praelongus","iNatAg/potamogeton_pusillus","iNatAg/potamogeton_zosteriformis","iNatAg/potentilla_anserina","iNatAg/potentilla_argentea","iNatAg/potentilla_erecta","iNatAg/potentilla_fruticosa","iNatAg/potentilla_intermedia","iNatAg/potentilla_norvegica","iNatAg/potentilla_norvegicae","iNatAg/potentilla_recta","iNatAg/potentilla_reptans","iNatAg/potentilla_tridentata","iNatAg/poterium_sanguisorba","iNatAg/pouteria_campechiana","iNatAg/pouteria_lucuma","iNatAg/pouteria_sapota","iNatAg/prasophyllum_elatum","iNatAg/primula_veris","iNatAg/proserpinaca_palustris","iNatAg/proserpinaca_pectinata","iNatAg/prosopis_affinis","iNatAg/prosopis_africana","iNatAg/prosopis_alba","iNatAg/prosopis_chilensis","iNatAg/prosopis_cineraria","iNatAg/prosopis_glandulosa","iNatAg/prosopis_juliflora","iNatAg/prosopis_nigra","iNatAg/prosopis_pallida","iNatAg/prosopis_tamarugo","iNatAg/prosopis_velutina","iNatAg/prunella_vulgaris","iNatAg/prunus_africana","iNatAg/prunus_amygdalus","iNatAg/prunus_armeniaca","iNatAg/prunus_avium","iNatAg/prunus_capuli","iNatAg/prunus_cerasus","iNatAg/prunus_domestica","iNatAg/prunus_laurocerasus","iNatAg/prunus_mahaleb","iNatAg/prunus_mume","iNatAg/prunus_padus","iNatAg/prunus_pensylvanica","iNatAg/prunus_persica","iNatAg/prunus_salicina","iNatAg/prunus_spinosa","iNatAg/prunus_virginiana","iNatAg/psathyrostachys_juncea","iNatAg/psidium_cattleianum","iNatAg/psidium_friedrichsthalianum","iNatAg/psidium_guajava","iNatAg/psophocarpus_tetragonolobus","iNatAg/psoralea_repens","iNatAg/ptelea_trifoliata","iNatAg/pterocarpus_angolensis","iNatAg/pterocarpus_dalbergioides","iNatAg/pterocarpus_erinaceus","iNatAg/pterocarpus_indicus","iNatAg/pterocarpus_lucens","iNatAg/pterocarpus_macrocarpus","iNatAg/pterocarpus_marsupium","iNatAg/pterocarpus_santalinoides","iNatAg/pterocarpus_santalinus","iNatAg/pueraria_lobata","iNatAg/pueraria_phaseoloides","iNatAg/pulmonaria_officinalis","iNatAg/punica_granatum","iNatAg/pycnanthus_angolensis","iNatAg/pyrola_rotundifolia","iNatAg/pyrus_communis","iNatAg/pyrus_pyrifolia","iNatAg/quercus_agrifolia","iNatAg/quercus_alba","iNatAg/quercus_bicolor","iNatAg/quercus_chrysolepis","iNatAg/quercus_dumosa","iNatAg/quercus_fusiformis","iNatAg/quercus_ilex","iNatAg/quercus_incana","iNatAg/quercus_lanata","iNatAg/quercus_nigra","iNatAg/quercus_phellos","iNatAg/quercus_robur","iNatAg/quercus_semecarpifolia","iNatAg/quercus_suber","iNatAg/quercus_virginiana","iNatAg/quisqualis_indica","iNatAg/ranunculus_abortivus","iNatAg/ranunculus_acris","iNatAg/ranunculus_arbortivus","iNatAg/ranunculus_arvensis","iNatAg/ranunculus_bulbosus","iNatAg/ranunculus_californicus","iNatAg/ranunculus_cymbalaria","iNatAg/ranunculus_ficaria","iNatAg/ranunculus_flabellaris","iNatAg/ranunculus_muricatulus","iNatAg/ranunculus_muricatus","iNatAg/ranunculus_occidentalis","iNatAg/ranunculus_orthorhynchus","iNatAg/ranunculus_parviflorus","iNatAg/ranunculus_sceleratus","iNatAg/ranunculus_testiculatus","iNatAg/ranunculus_trichophyllus","iNatAg/raphanus_raphanistrum","iNatAg/raphanus_sativus","iNatAg/rauvolfia_caffra","iNatAg/rauvolfia_serpentina","iNatAg/reseda_alba","iNatAg/reseda_lutea","iNatAg/retama_monosperma","iNatAg/rhamnus_cathartica","iNatAg/rhamnus_prinoides","iNatAg/rheum_palmatum","iNatAg/rheum_rhaponticum","iNatAg/rhigozum_trichotomum","iNatAg/rhinanthus_crista-galli","iNatAg/rhinanthus_minor","iNatAg/rhizophora_mangle","iNatAg/rhizophora_mucronata","iNatAg/rhizophora_stylosa","iNatAg/rhodiola_rosea","iNatAg/rhododendron_ferrugineum","iNatAg/rhus_copallinum","iNatAg/rhus_glabra","iNatAg/rhus_typhina","iNatAg/rhynchosia_minima","iNatAg/rhynchosia_senna","iNatAg/rhynchosia_sublobata","iNatAg/ribes_hirtellum","iNatAg/ribes_nigrum","iNatAg/ribes_rubrum","iNatAg/ribes_uva-crispa","iNatAg/ribes_viscosissimum","iNatAg/richardia_brasiliensis","iNatAg/richardia_scabra","iNatAg/ricinus_communis","iNatAg/ricinus_comunis","iNatAg/rivina_humilis","iNatAg/robinia_pseudoacacia","iNatAg/roemeria_refracta","iNatAg/rosa_canina","iNatAg/rosa_cinnamomea","iNatAg/rosa_eglanteria","iNatAg/rosa_pendulina","iNatAg/rosa_pimpinellifolia","iNatAg/rosa_rubiginosa","iNatAg/rosa_spinosissima","iNatAg/roseodendron_donnell-smithii","iNatAg/rosmarinus_officinalis","iNatAg/rubia_tinctorum","iNatAg/rubus_ellipticus","iNatAg/rubus_fructicosus","iNatAg/rubus_fruticosus","iNatAg/rubus_hispidus","iNatAg/rubus_idaeus","iNatAg/rubus_moluccanus","iNatAg/rubus_occidentalis","iNatAg/rubus_pensilvanicus","iNatAg/rudbeckia_amplexicaulis","iNatAg/rudbeckia_hirta","iNatAg/rudbeckia_laciniata","iNatAg/rudbeckia_triloba","iNatAg/rumex_acetosa","iNatAg/rumex_acetosella","iNatAg/rumex_aquaticus","iNatAg/rumex_crispus","iNatAg/rumex_dentatus","iNatAg/rumex_hymenosepalus","iNatAg/rumex_longifolius","iNatAg/rumex_maritimus","iNatAg/rumex_obtusifolius","iNatAg/rumex_patienta","iNatAg/rumex_patientia","iNatAg/rumex_pseudonatronatus","iNatAg/rumex_pulcher","iNatAg/rumex_verticillatus","iNatAg/ruppia_maritima","iNatAg/ruscus_aculeatus","iNatAg/ruta_graveolens","iNatAg/saccharum_officinarum","iNatAg/saccharum_sinense","iNatAg/saccharum_spontaneum","iNatAg/sacorstemma_cynanchoides","iNatAg/sagina_procumbens","iNatAg/sagittaria_kurziana","iNatAg/sagittaria_lancifolia","iNatAg/sagittaria_latifolia","iNatAg/sagittaria_sagittifolia","iNatAg/salacca_wallichiana","iNatAg/salacca_zalacca","iNatAg/salicornia_bigelovii","iNatAg/salix_alba","iNatAg/salix_caprea","iNatAg/salix_laevigata","iNatAg/salix_pentandra","iNatAg/salix_viminalis","iNatAg/salsola_kali","iNatAg/salsola_tragus","iNatAg/salsola_vermiculata","iNatAg/salvadora_persica","iNatAg/salvia_lyrata","iNatAg/salvia_officinalis","iNatAg/salvia_sclarea","iNatAg/salvia_verticillata","iNatAg/salvinia_auriculata","iNatAg/samanea_saman","iNatAg/sambucus_canadensis","iNatAg/sambucus_canadiensis","iNatAg/sambucus_cerulea","iNatAg/sambucus_ebulus","iNatAg/sambucus_nigra","iNatAg/sambucus_racemosa","iNatAg/samolus_parviflorus","iNatAg/samolus_valerandi","iNatAg/sanguisorba_minor","iNatAg/sanguisorba_officinalis","iNatAg/sanicula_europaea","iNatAg/santalum_acuminatum","iNatAg/santalum_album","iNatAg/santolina_chamaecyparissus","iNatAg/sapindus_emarginatus","iNatAg/sapindus_saponaria","iNatAg/sapium_sebiferum","iNatAg/saponaria_officinalis","iNatAg/sarcostemma_cynanchoides","iNatAg/satureja_hortensis","iNatAg/satureja_montana","iNatAg/sauropus_androgynus","iNatAg/saururus_cernuus","iNatAg/scandix_pecten-veneris","iNatAg/schima_wallichii","iNatAg/schinus_molle","iNatAg/schinus_terebinthifolia","iNatAg/schinus_terebinthifolius","iNatAg/schismus_arabicus","iNatAg/schizolobium_parahyba","iNatAg/schizomeria_ovata","iNatAg/schleichera_oleosa","iNatAg/scirpus_lacustris","iNatAg/scleranthus_annuus","iNatAg/sclerocarya_caffra","iNatAg/scoparia_dulcis","iNatAg/scorzonera_laciniata","iNatAg/scrophularia_lanceolata","iNatAg/searsia_angustifolia","iNatAg/secale_cereale","iNatAg/secale_montanum","iNatAg/sechium_edule","iNatAg/securidaca_longepedunculata","iNatAg/securidaca_longipedunculata","iNatAg/sedum_acre","iNatAg/sedum_telephium","iNatAg/sehima_nervosum","iNatAg/sempervivum_arachnoideum","iNatAg/sempervivum_tectorum","iNatAg/senecio_elegans","iNatAg/senecio_jacobaea","iNatAg/senecio_madagascariensis","iNatAg/senecio_plattensis","iNatAg/senecio_squalidus","iNatAg/senecio_sylvaticus","iNatAg/senecio_viscosus","iNatAg/senecio_vulgaris","iNatAg/senna_spectabilis","iNatAg/serenoa_repens","iNatAg/sesamum_indicum","iNatAg/sesbania_bispinosa","iNatAg/sesbania_cannabina","iNatAg/sesbania_exaltata","iNatAg/sesbania_formosa","iNatAg/sesbania_grandiflora","iNatAg/sesbania_pachycarpa","iNatAg/sesbania_sesban","iNatAg/setaria_incrassata","iNatAg/setaria_italica","iNatAg/setaria_lindenbergiana","iNatAg/setaria_pumila","iNatAg/seymeria_pectinata","iNatAg/shorea_robusta","iNatAg/shorea_talura","iNatAg/sicyos_angulatus","iNatAg/sida_angustifolia","iNatAg/sida_cordifolia","iNatAg/sida_spinosa","iNatAg/silene_antirrhina","iNatAg/silene_armeria","iNatAg/silene_conica","iNatAg/silene_conoidea","iNatAg/silene_gallica","iNatAg/silene_noctiflora","iNatAg/silene_pendula","iNatAg/silphium_asperrimum","iNatAg/silphium_integrifolium","iNatAg/silphium_laciniatum","iNatAg/silybum_marianum","iNatAg/simarouba_glauca","iNatAg/simmondsia_chinensis","iNatAg/simsia_auriculata","iNatAg/sinapis_alba","iNatAg/sinapis_arvensis","iNatAg/sinapis_incana","iNatAg/siphonochilus_aethiopicus","iNatAg/sisymbrium_altissimum","iNatAg/sisymbrium_erysimoides","iNatAg/sisymbrium_irio","iNatAg/sisymbrium_officinale","iNatAg/sisymbrium_orientale","iNatAg/sisymbrium_sophia","iNatAg/sisyrinchium_montanum","iNatAg/sloanea_woollsii","iNatAg/smilax_aspera","iNatAg/smilax_bona-nox","iNatAg/smilax_laurifolia","iNatAg/smilax_rotundifolia","iNatAg/solanum_aethiopicum","iNatAg/solanum_americanum","iNatAg/solanum_capsicoides","iNatAg/solanum_carolinense","iNatAg/solanum_coriaceum","iNatAg/solanum_dimidiatum","iNatAg/solanum_diphyllum","iNatAg/solanum_dulcamara","iNatAg/solanum_elaeagnifolium","iNatAg/solanum_eleagnifolium","iNatAg/solanum_ellipticum","iNatAg/solanum_ferox","iNatAg/solanum_heterodoxum","iNatAg/solanum_incanum","iNatAg/solanum_jamaicense","iNatAg/solanum_lanceolatum","iNatAg/solanum_macrocarpon","iNatAg/solanum_mammosum","iNatAg/solanum_marginatum","iNatAg/solanum_mauritianum","iNatAg/solanum_melongena","iNatAg/solanum_muricatum","iNatAg/solanum_nigrum","iNatAg/solanum_physalifolium","iNatAg/solanum_pseudo-capsicum","iNatAg/solanum_pseudocapsicum","iNatAg/solanum_quitoense","iNatAg/solanum_sisymbrifolium","iNatAg/solanum_sisymbriifolium","iNatAg/solanum_tampicense","iNatAg/solanum_torvum","iNatAg/solanum_tuberosum","iNatAg/solanum_violaceum","iNatAg/soldanella_alpina","iNatAg/solidago_californica","iNatAg/solidago_canadensis","iNatAg/solidago_fistulosa","iNatAg/solidago_missouriensis","iNatAg/solidago_nemoralis","iNatAg/solidago_rigida","iNatAg/solidago_sempervirens","iNatAg/solidago_virgaurea","iNatAg/sonchus_arvensis","iNatAg/sonchus_oleraceus","iNatAg/sonchus_palustris","iNatAg/sonneratia_apetala","iNatAg/sonneratia_caseolaris","iNatAg/sorbus_aucuparia","iNatAg/sorbus_domestica","iNatAg/sorghum_bicolor","iNatAg/sorghum_drummondii","iNatAg/sorghum_halepense","iNatAg/soymida_febrifuga","iNatAg/sparganium_americanum","iNatAg/sparganium_erectum","iNatAg/spartina_pectinata","iNatAg/spartium_junceum","iNatAg/spathodea_campanulata","iNatAg/spergula_arvensis","iNatAg/spermacoce_verticillata","iNatAg/spinacia_oleracea","iNatAg/spinifex_hirsutus","iNatAg/spirea_tomentosa","iNatAg/spodiopogon_sibiricus","iNatAg/spondias_cythera","iNatAg/spondias_mombin","iNatAg/spondias_purpurea","iNatAg/sporobolus_airoides","iNatAg/sporobolus_fimbriatus","iNatAg/sporobolus_maritimus","iNatAg/sporobolus_neglectus","iNatAg/sporobolus_spicatus","iNatAg/sporobolus_virginicus","iNatAg/stachys_affinis","iNatAg/stachys_palustris","iNatAg/stachytarpheta_incana","iNatAg/stachytarpheta_indica","iNatAg/stellaria_graminea","iNatAg/stellaria_holostea","iNatAg/stellaria_media","iNatAg/stenotaphrum_secundatum","iNatAg/sterculia_foetida","iNatAg/sterculia_urens","iNatAg/sterculia_villosa","iNatAg/stereospermum_kunthianum","iNatAg/stevia_rebaudiana","iNatAg/stipa_baicalensis","iNatAg/stipa_brachychaeta","iNatAg/stipa_capillata","iNatAg/stipa_glareosa","iNatAg/stipa_grandis","iNatAg/stipa_krylovii","iNatAg/stipa_lagascae","iNatAg/stipa_occidentalis","iNatAg/stipa_parviflora","iNatAg/stipa_tenacissima","iNatAg/stipa_trichotoma","iNatAg/stipagrostis_amabilis","iNatAg/stipagrostis_zeyheri","iNatAg/stratiotes_aloides","iNatAg/strychnos_cocculoides","iNatAg/strychnos_innocua","iNatAg/strychnos_spinosa","iNatAg/stylidium_desertorum","iNatAg/stylosanthes_capitata","iNatAg/stylosanthes_fruticosa","iNatAg/stylosanthes_hamata","iNatAg/stylosanthes_humilis","iNatAg/stylosanthes_scabra","iNatAg/stylosanthes_viscosa","iNatAg/succisa_pratensis","iNatAg/swertia_baicalensis","iNatAg/swietenia_macrophylla","iNatAg/swietenia_mahogani","iNatAg/symphoricarpos_mollis","iNatAg/symphoricarpos_occidentalis","iNatAg/symphoricarpos_orbiculatus","iNatAg/symphoricarpos_rotundifolius","iNatAg/symphytum_officinale","iNatAg/syncarpia_glomulifera","iNatAg/syncarpia_hillii","iNatAg/syzygium_cordatum","iNatAg/syzygium_cumini","iNatAg/syzygium_guineense","iNatAg/syzygium_malaccense","iNatAg/syzygium_taiwanicum","iNatAg/tabebuia_rosea","iNatAg/tabebuia_serratifolia","iNatAg/tagetes_minuta","iNatAg/talinum_triangulare","iNatAg/tamarindus_indica","iNatAg/tamarix_aphylla","iNatAg/tamarix_chinensis","iNatAg/tamarix_gallica","iNatAg/tamarix_parviflora","iNatAg/tanacetum_balsamita","iNatAg/tanacetum_vulgare","iNatAg/taraxacum_officinale","iNatAg/taraxia_breviflora","iNatAg/tarchonanthus_camphoratus","iNatAg/taxodium_distichum","iNatAg/taxus_baccata","iNatAg/tecoma_stans","iNatAg/tectona_grandis","iNatAg/tephrosia_candida","iNatAg/tephrosia_lupinifolia","iNatAg/tephrosia_obovata","iNatAg/tephrosia_purpurea","iNatAg/tephrosia_vogelii","iNatAg/teramnus_labialis","iNatAg/terminalia_arjuna","iNatAg/terminalia_bellirica","iNatAg/terminalia_brownii","iNatAg/terminalia_calamansanai","iNatAg/terminalia_catappa","iNatAg/terminalia_chebula","iNatAg/terminalia_ivorensis","iNatAg/terminalia_mantaly","iNatAg/terminalia_myriocarpa","iNatAg/terminalia_paniculata","iNatAg/terminalia_prunioides","iNatAg/terminalia_sericocarpa","iNatAg/terminalia_tomentosa","iNatAg/tetradymia_canescens","iNatAg/tetragonia_tetragonioides","iNatAg/teucrium_botrys","iNatAg/teucrium_canadense","iNatAg/teucrium_chamaedrys","iNatAg/teucrium_polium","iNatAg/thalia_geniculata","iNatAg/thalictrum_pubescens","iNatAg/thaumatococcus_daniellii","iNatAg/themeda_australis","iNatAg/themeda_quadrivalvis","iNatAg/themeda_triandra","iNatAg/theobroma_bicolor","iNatAg/theobroma_cacao","iNatAg/theobroma_grandiflorum","iNatAg/thermopsis_montana","iNatAg/thermopsis_rhombifolia","iNatAg/thespesia_populnea","iNatAg/thlaspi_arvense","iNatAg/thlaspi_perfoliatum","iNatAg/thuja_occidentalis","iNatAg/thymus_serphyllum","iNatAg/thymus_serpyllum","iNatAg/thymus_vulgaris","iNatAg/thyrsostachys_siamensis","iNatAg/thysanolaena_latifolia","iNatAg/tilia_cordata","iNatAg/tilia_platyphyllos","iNatAg/tipuana_tipu","iNatAg/tithonia_diversifolia","iNatAg/toona_ciliata","iNatAg/torenia_glabra","iNatAg/toxicodendron_pubescens","iNatAg/trachypogon_spicatus","iNatAg/tradescantia_bracteata","iNatAg/tradescantia_fluminensis","iNatAg/tradescantia_ohiensis","iNatAg/tradescantia_virginiana","iNatAg/tragia_betonicifolia","iNatAg/tragopogon_lamottei","iNatAg/tragopogon_porrifolius","iNatAg/tragopogon_pratensis","iNatAg/tragus_koelerioides","iNatAg/trapa_natans","iNatAg/trema_orientale","iNatAg/trianthema_portulacastrum","iNatAg/tribulus_cistoides","iNatAg/tribulus_terrestris","iNatAg/trichanthera_gigantea","iNatAg/trichoneura_grandiglumis","iNatAg/trichosanthes_cucumerina","iNatAg/trichostema_lanceolatum","iNatAg/tridax_procumbens","iNatAg/trifolium_africanum","iNatAg/trifolium_alexandrinum","iNatAg/trifolium_ambiguum","iNatAg/trifolium_angustifolium","iNatAg/trifolium_arvense","iNatAg/trifolium_burchellianum","iNatAg/trifolium_campestre","iNatAg/trifolium_carolinianum","iNatAg/trifolium_cherleri","iNatAg/trifolium_dubium","iNatAg/trifolium_fragiferum","iNatAg/trifolium_glanduliferum","iNatAg/trifolium_glomeratum","iNatAg/trifolium_hirtum","iNatAg/trifolium_hybridum","iNatAg/trifolium_incarnatum","iNatAg/trifolium_medium","iNatAg/trifolium_michelianum","iNatAg/trifolium_nigrescens","iNatAg/trifolium_patens","iNatAg/trifolium_pilulare","iNatAg/trifolium_polymorphum","iNatAg/trifolium_pratense","iNatAg/trifolium_reflexum","iNatAg/trifolium_repens","iNatAg/trifolium_resupinatum","iNatAg/trifolium_subterraneum","iNatAg/trifolium_tomentosum","iNatAg/trifolium_variegatum","iNatAg/trifolium_vesiculosum","iNatAg/trifolium_wormskioldii","iNatAg/triglochin_maritima","iNatAg/triglochin_maritimum","iNatAg/triglochin_palustre","iNatAg/trigonella_foenum-graecum","iNatAg/tripsacum_dactyloides","iNatAg/trisetum_flavescens","iNatAg/tristachya_leucothrix","iNatAg/triticum_aestivum","iNatAg/triticum_dicoccoides","iNatAg/triticum_durum","iNatAg/triticum_spelta","iNatAg/triumfetta_rhomboidea","iNatAg/triumfetta_semitriloba","iNatAg/trollius_europaeus","iNatAg/tropaeolum_majus","iNatAg/tropaeolum_tuberosum","iNatAg/tropidocarpum_gracile","iNatAg/turritis_glabra","iNatAg/tussilago_farfara","iNatAg/tylosema_esculentum","iNatAg/typha_angustifolia","iNatAg/typha_domingensis","iNatAg/typha_latifolia","iNatAg/uapaca_kirkiana","iNatAg/ulex_europaeus","iNatAg/ullucus_tuberosus","iNatAg/ulmus_procera","iNatAg/umbilicus_rupestris","iNatAg/uncaria_gambir","iNatAg/urelytrum_agropyroides","iNatAg/urena_lobata","iNatAg/urochloa_mosambicensis","iNatAg/urochloa_panicoides","iNatAg/urtica_chamaedryoides","iNatAg/urtica_dioica","iNatAg/urtica_urens","iNatAg/utricularia_floridana","iNatAg/utricularia_foliosa","iNatAg/utricularia_gibba","iNatAg/utricularia_purpurea","iNatAg/utricularia_radiata","iNatAg/utricularia_vulgaris","iNatAg/uvaria_littoralis","iNatAg/uvularia_sessilifolia","iNatAg/vaccinium_angustifolium","iNatAg/vaccinium_corymbosum","iNatAg/vaccinium_macrocarpon","iNatAg/vaccinium_myrtillus","iNatAg/vaccinium_uliginosum","iNatAg/vaccinium_vitis-idaea","iNatAg/valeriana_officinalis","iNatAg/valerianella_eriocarpa","iNatAg/vallisneria_americana","iNatAg/vangueria_infausta","iNatAg/vangueria_madagascariensis","iNatAg/vanilla_planifolia","iNatAg/vateria_indica","iNatAg/ventilago_viminalis","iNatAg/veratrum_album","iNatAg/veratrum_californicum","iNatAg/verbascum_blattaria","iNatAg/verbascum_lychnitis","iNatAg/verbascum_phlomoides","iNatAg/verbascum_thapsus","iNatAg/verbascum_thaspus","iNatAg/verbena_bonariensis","iNatAg/verbena_brasiliensis","iNatAg/verbena_hastata","iNatAg/verbena_officinalis","iNatAg/verbena_urticifolia","iNatAg/vernonia_altissima","iNatAg/vernonia_amygdalina","iNatAg/vernonia_baldwinii","iNatAg/vernonia_chamaedrys","iNatAg/vernonia_fasciculata","iNatAg/veronica_agrestis","iNatAg/veronica_anagallis-aquatica","iNatAg/veronica_arvensis","iNatAg/veronica_biloba","iNatAg/veronica_chamaedrys","iNatAg/veronica_filiformis","iNatAg/veronica_hederaefolia","iNatAg/veronica_hederifolia","iNatAg/veronica_longifolia","iNatAg/veronica_officinalis","iNatAg/veronica_peregrina","iNatAg/veronica_polita","iNatAg/veronica_serpyllifolia","iNatAg/vetiveria_zizanioides","iNatAg/viburnum_cassinoides","iNatAg/viburnum_lentago","iNatAg/viburnum_prunifolium","iNatAg/viccia_cracca","iNatAg/vicia_augustifolia","iNatAg/vicia_benghalensis","iNatAg/vicia_cracca","iNatAg/vicia_ervilia","iNatAg/vicia_faba","iNatAg/vicia_monantha","iNatAg/vicia_narbonensis","iNatAg/vicia_pannonica","iNatAg/vicia_sativa","iNatAg/vicia_sepium","iNatAg/vigna_adenantha","iNatAg/vigna_angularis","iNatAg/vigna_hosei","iNatAg/vigna_lanceolata","iNatAg/vigna_longifolia","iNatAg/vigna_luteola","iNatAg/vigna_parkeri","iNatAg/vigna_radiata","iNatAg/vigna_trilobata","iNatAg/vigna_umbellata","iNatAg/vigna_unguiculata","iNatAg/vigna_vexillata","iNatAg/vinca_major","iNatAg/vinca_minor","iNatAg/viola_lanceolata","iNatAg/viola_odorata","iNatAg/viola_tricolor","iNatAg/viscum_album","iNatAg/vitellaria_paradoxa","iNatAg/vitex_agnus-castus","iNatAg/vitex_doniana","iNatAg/vitex_negundo","iNatAg/vitis_labrusca","iNatAg/vitis_rotundifolia","iNatAg/vitis_vinifera","iNatAg/vitis_vulpina","iNatAg/waltheria_indica","iNatAg/warburgia_salutaris","iNatAg/warburgia_ugandensis","iNatAg/withania_somnifera","iNatAg/wrightia_tomentosa","iNatAg/xanthium_spinosum","iNatAg/xanthium_strumarium","iNatAg/xanthosoma_sagittifolium","iNatAg/ximenia_americana","iNatAg/xylia_xylocarpa","iNatAg/xylocarpus_granatum","iNatAg/xylocarpus_mekongensis","iNatAg/xylocarpus_moluccensis","iNatAg/xylorhiza_glabriuscula","iNatAg/yucca_elephantipes","iNatAg/zannichellia_palustris","iNatAg/zanthoxylum_americanum","iNatAg/zea_mays","iNatAg/zingiber_officinale","iNatAg/zizania_aquatica","iNatAg/zizania_latifolia","iNatAg/ziziphus_abyssinica","iNatAg/ziziphus_mauritiana","iNatAg/ziziphus_mucronata","iNatAg/zornia_diphylla","iNatAg/zornia_glochidiata","iNatAg/zornia_latifolia","iNatAg/zostera_marina","iNatAg/zoysia_matrella","iNatAg/zygophyllum_fabago","java_plum_leaf_disease_classification","jujube_bruise_classification","jute_disease_classification","leaf_counting_denmark","lemon_leaf_disease_classification","lemongrass_disease_classification","lentil_disease_classification","LSID_bean_segmentation","maize_disease_classification","maize_tomato_weed_classification","maize_weed_detection","malabar_spinach_disease_classification","mandarin_leaf_variety_classification","mangifera2012_variety_classification","mango_detection_australia","mango_growth_detection","mango_leaf_disease_classification","MangoClassify-12_variety_classification","MangoImageBD_classification","MangoLeafBD_disease_classification","Medjool_date_ripeness_detection","MedLeafX_disease_classification","merlot_mildew_segmentation","MH_SoyaHealthVision_disease_classification_leaf","MH_SoyaHealthVision_disease_classification_uav","MH_Weed16_weed_detection","MH_Weed16_weed_variety_classification","mint_leaf_classification","money_plant_disease_classification","MoringaLeafNet_disease_classification","mulberry_leaf_variety_classification","oil_palm_fruit_ripeness_classification","okra_maturity_classification","okra_thermal_maturity_classification","OkraDiseaseNet_disease_classification","olive_tree_crown_detection","onionfoliageset_detection","orange_leaf_disease_classification","oyster_mushroom_maturity_detection","paddy_disease_classification","PaddyVarietyBD_variety_classification","papaya_leaf_disease_classification","papaya_leaf_disease_classification_bangladesh","papaya_leaf_disease_detection","peachpear_flower_segmentation","PFSD_Musa_banana_disease_classification","PFSD_Musa_banana_variety_classification","plant_doc_classification","plant_doc_detection","plant_leaf_disease_classification","plant_seedlings_aarhus","plant_village_classification","plum_leaf_fruit_disease_classification","pomegranate_disease_classification","pomegranate_disease_classification_india","pomegranate_growth_detection","pomegranate_quality_classification","pomegranate_thermal_defect_classification","potato_leaf_blight_classification","potato_leaf_disease_classification","PriBel_betel_leaf_disease_classification","QuinceSet_detection","radish_leaf_disease_classification","rangeland_weeds_australia","red_grapes_and_leaves_segmentation","REMP_plant_classification","rice_disease_classification_bangladesh","rice_field_weed_classification","rice_grain_variety_classification","rice_leaf_disease_classification","rice_leaf_disease_classification_india","rice_panicle_detection","rice_seedling_classification","rice_seedling_segmentation","rice_variety_classification_bangladesh","riseholme_strawberry_classification_2021","RoCoLe_disease_detection","RoseLeafInsight_disease_classification","RoseNet_leaf_disease_classification","SapBark_64_variety_classification","sapota_fruit_size_classification","seasveg_classification_bd","SIMPDV1_plant_classification","sorghum_weed_classification","sorghum_weed_segmentation","soybean_damage_classification","soybean_harvest_damage_segmentation","soybean_insect_classification","soybean_leaf_disease_classification","soybean_leaf_disease_classification_brazil","soybean_variety_classification","soybean_weed_uav_brazil","SoyNet_leaf_health_classification","strawberry_detection_2022","strawberry_detection_2023","strawberry_growth_detection","Strawberry-DS_strawberry_detection","sugarbeet_weed_segmentation","sugarcane_damage_usa","sugarcane_leaf_disease_classification","sunflower_detection","sunflower_disease_classification","susnato_plant_disease_detection_processed","synthetic_cowpea_flower_detection","synthetic_cowpea_pod_detection","taro_blight_stage_classification","tea_leaf_disease_classification","tea_leaf_disease_classification_bangladesh","TealeafAgeQuality_detection","teaLeafBD_disease_classification_classification","three_plant_leaf_disease_classification","three_season_weed_detection","TOM2024_disease_classification","tomato_factory_detection","tomato_leaf_disease","tomato_maturity_classification","tomato_quality_classification","tomato_ripeness_detection","tropical_flower_variety_classification","turmeric_disease_classification","turmeric_leaf_disease_classification","vegann_multicrop_presence_segmentation","vegetable_classification_bangladesh_classification","vegetable_crop_early_detection","VegNet_cauliflower_disease_classification","VegNet_quality_classification","vine_virus_photo_dataset","vineyard_grape_segmentation","vineyard_pruning_segmentation","WaterHyacinth_variety_classification","watermelon_disease_classification","weed_crop_detection","wGrapeUNIPD-DL_white_grape_bunch_detection","wheat_head_counting","white_grapes_and_leaves_segmentation"]}
\ No newline at end of file
+{"model":"Xenova/all-MiniLM-L6-v2","dtype":"q8","dim":384,"count":6192,"generatedAt":"2026-08-13T23:08:51.437Z","contentHash":"2a72005a9a7bb81cc96ff3e2d5fd2c9ef83a7f65f31f728294397d447c9b6717","names":["ACHENY_variety_classification","african_plum_grading_classification","AFruitDB_fruit_grade_classification","agarwood_leaf_disease_classification","Agri-LLaVA","AgriVision4_disease_classification","AgroBench","AgroCoT","AgroMind","almond_bloom_2023","almond_harvest_2021","apple_detection_drone_brazil","apple_detection_spain","apple_detection_usa","apple_flower_segmentation","apple_leaf_disease_classification","apple_segmentation_minnesota","arabica_coffee_leaf_disease_classification","ash_gourd_disease_classification","autonomous_greenhouse_regression","bacterial_grain_rot_classification","banana_bunch_detection","banana_bunch_maturity_classification_classification","banana_grade_variety_classification","banana_guava_quality_classification","banana_leaf_disease_classification","banana_leaf_nutrient_classification","banana_variety_classification","BananaImageBD_ripeness_classification","BananaImageBD_variety_classification","BananaLSD_leaf_disease_classification","Basmati_rice_seed_varitey_classification","bay_leaf_disease_classification","BDHerbalPlants_variety_classification","BDMANGO_variety_classification","BDMediLeaves_variety_classification","bean_cowpea_leaf_disease_classification","bean_disease_classification_tanzania","bean_disease_uganda","bean_synthetic_earlygrowth_aerial","betel_leaf_disease_classification","betel_leaf_disease_classification_2","black_gram_disease_classification","blackgram_plant_leaf_disease_classification","BPLD_leaf_disease_classification","BrinjalFruitX_disease_classification","bruised_vegetable_classification","cabbage_instance_segmentation","carambola_disease_classification","carrot_weeds_germany","cashew_detection","cauliflower_leaf_disease_classification","CDDM","centella_asiatica_leaves","chitrak_leaf_disease_classification","citrus_fruit_leaf_disease_classification","citrus_fruit_variety_classification","citrusuat_disease_classification","CocoaMFDB_detection","coconut_tree_disease_classification","coffee_bean_quality_classification","coffee_detection","CoFly-Weed-DB_weed_segmentation","COLD_chili_leaf_disease_classification","COLD_onion_leaf_disease_classification","CoLeaf_nutritional_deficiency_classification","corn_leaf_pest_classification","corn_maize_leaf_disease","cotton_leaf_disease_classification","cotton_leaf_disease_classification_bangladesh_2","cotton_weed_detection","crop_pest_disease_classification","crop_weed_detection_latvia","crop_weeds_greece","CS-D_tea_leaf_disease_classification","cucumber_disease_classification","custard_apple_disease_classification","date_cluster_detection","date_fruit_maturity_detection","date_grade_variety_classification","date_palm_leaf_disease_classification","date_palm_leaf_disease_classification_iraq","DIMPSAR_medicinal_leaf_classification","DIMPSAR_medicinal_plant_classification","dragonfruit_disease_classification","dragonfruit_maturity_classification","dragonfruit_quality_classification","durian_disease_classification","durian_disease_classification_vietnam","EfficientMaize_classification","eggplant_disease_classification","eggplant_leaf_disease_classification","embrapa_wgisd_grape_detection","ERWIAM_blight_detection","fig_leaf_ficus_worm_classification","fortunella_margarita_growth_detection","fresh_rotten_fruit_classification","fruit_detection_worldwide","fruit_leaf_variety_classification","FruitNet_quality_classification","fruitseg30_segmentation","FruitVision_quality_classification","GEMINI_cowpea_flower_detection","GEMINI_cowpea_pod_detection","gemini_flower_detection","gemini_leaf_detection","gemini_plant_detection","gemini_pod_detection","ghai_broccoli_detection","ghai_green_cabbage_detection","ghai_iceberg_lettuce_detection","ghai_romaine_detection","ghai_strawberry_fruit_detection","grape_detection_californiaday","grape_detection_californianight","grape_detection_syntheticday","grape_leaf_disease_classification","grape_variety_classification","grapevine_development_stage_classification","grapevine_disease_classification","grapevine_esca_classification","grapevine_growth_detection","greenhouse_crop_weed_classification","greenhouse_crop_weed_detection","groundnut_leaf_disease_classification","groundnut_leaf_disease_classification_2","growliflower_cauliflower_segmentation","guava_disease_classification","guava_disease_classification_bangladesh","guava_disease_pakistan","guava_maturity_classification","GYMNSA_pear_rust_detection","Hibiscus_Tea_disease_classification","hog_plum_leaf_disease_classification","ICPTC_pistachio_tree_variety_classification","IDDMSLD_spinach_leaf_disease_classification","ImageWeeds_aerial_weed_detection","ImageWeeds_weed_detection","iNatAg","iNatAg-mini","iNatAg-mini/abelmoschus_esculentus","iNatAg-mini/abelmoschus_manihot","iNatAg-mini/abelmoschus_moschatus","iNatAg-mini/abies_alba","iNatAg-mini/abies_amabilis","iNatAg-mini/abies_balsamea","iNatAg-mini/abies_concolor","iNatAg-mini/abies_pindrow","iNatAg-mini/abroma_augustum","iNatAg-mini/abrus_pecatorius","iNatAg-mini/abrus_precatorius","iNatAg-mini/abutilon_theophrasti","iNatAg-mini/acacia_abyssinica","iNatAg-mini/acacia_acradenia","iNatAg-mini/acacia_acuminata","iNatAg-mini/acacia_ampliceps","iNatAg-mini/acacia_anceps","iNatAg-mini/acacia_ancistrocarpa","iNatAg-mini/acacia_aneura","iNatAg-mini/acacia_angustissima","iNatAg-mini/acacia_ataxacantha","iNatAg-mini/acacia_aulacocarpa","iNatAg-mini/acacia_auriculiformis","iNatAg-mini/acacia_bidwillii","iNatAg-mini/acacia_brachystachya","iNatAg-mini/acacia_brevispica","iNatAg-mini/acacia_burkei","iNatAg-mini/acacia_caffra","iNatAg-mini/acacia_cambagei","iNatAg-mini/acacia_catechu","iNatAg-mini/acacia_catenulata","iNatAg-mini/acacia_caven","iNatAg-mini/acacia_cincinnata","iNatAg-mini/acacia_coriacea","iNatAg-mini/acacia_cowleana","iNatAg-mini/acacia_crassicarpa","iNatAg-mini/acacia_cyclops","iNatAg-mini/acacia_cyperophylla","iNatAg-mini/acacia_dealbata","iNatAg-mini/acacia_deanei","iNatAg-mini/acacia_decurrens","iNatAg-mini/acacia_difficilis","iNatAg-mini/acacia_doratoxylon","iNatAg-mini/acacia_ehrenbergiana","iNatAg-mini/acacia_erioloba","iNatAg-mini/acacia_estrophiolata","iNatAg-mini/acacia_excelsa","iNatAg-mini/acacia_falciformis","iNatAg-mini/acacia_farnesiana","iNatAg-mini/acacia_fasciculifera","iNatAg-mini/acacia_flavescens","iNatAg-mini/acacia_georginae","iNatAg-mini/acacia_gerrardii","iNatAg-mini/acacia_glaucocarpa","iNatAg-mini/acacia_gourmaensis","iNatAg-mini/acacia_harpophylla","iNatAg-mini/acacia_holosericea","iNatAg-mini/acacia_irrorata","iNatAg-mini/acacia_ixiophylla","iNatAg-mini/acacia_karroo","iNatAg-mini/acacia_koa","iNatAg-mini/acacia_leptocarpa","iNatAg-mini/acacia_leucophloea","iNatAg-mini/acacia_ligulata","iNatAg-mini/acacia_maidenii","iNatAg-mini/acacia_mangium","iNatAg-mini/acacia_mearnsii","iNatAg-mini/acacia_melanoxylon","iNatAg-mini/acacia_mellifera","iNatAg-mini/acacia_murrayana","iNatAg-mini/acacia_neriifolia","iNatAg-mini/acacia_nigrescens","iNatAg-mini/acacia_nilotica","iNatAg-mini/acacia_occidentalis","iNatAg-mini/acacia_oraria","iNatAg-mini/acacia_oswaldii","iNatAg-mini/acacia_pachycarpa","iNatAg-mini/acacia_papyrocarpa","iNatAg-mini/acacia_paradoxa","iNatAg-mini/acacia_pendula","iNatAg-mini/acacia_peuce","iNatAg-mini/acacia_podalyriifolia","iNatAg-mini/acacia_polyacantha","iNatAg-mini/acacia_polystachya","iNatAg-mini/acacia_pruinocarpa","iNatAg-mini/acacia_pycnantha","iNatAg-mini/acacia_salicina","iNatAg-mini/acacia_saligna","iNatAg-mini/acacia_sclerosperma","iNatAg-mini/acacia_senegal","iNatAg-mini/acacia_seyal","iNatAg-mini/acacia_shirleyi","iNatAg-mini/acacia_sieberiana","iNatAg-mini/acacia_silvestris","iNatAg-mini/acacia_simsii","iNatAg-mini/acacia_stenophylla","iNatAg-mini/acacia_tetragonophylla","iNatAg-mini/acacia_tortilis","iNatAg-mini/acacia_torulosa","iNatAg-mini/acacia_trachycarpa","iNatAg-mini/acacia_victoriae","iNatAg-mini/acaena_novae-zelandiae","iNatAg-mini/acalypha_rhomboidea","iNatAg-mini/acalypha_virginica","iNatAg-mini/acanthosicyos_horridus","iNatAg-mini/acanthosicyos_naudinianus","iNatAg-mini/acanthospermum_hispidum","iNatAg-mini/acanthus_ilicifolius","iNatAg-mini/acanthus_mollis","iNatAg-mini/acca_sellowiana","iNatAg-mini/acer_caesium","iNatAg-mini/acer_campestre","iNatAg-mini/acer_platanoides","iNatAg-mini/acer_pseudoplatanus","iNatAg-mini/acer_saccharum","iNatAg-mini/achillea_fragrantissima","iNatAg-mini/achillea_millefolium","iNatAg-mini/achillea_ptarmica","iNatAg-mini/achnatherum_pekinense","iNatAg-mini/achyranthes_aspera","iNatAg-mini/acmena_smithii","iNatAg-mini/aconitum_napellus","iNatAg-mini/acorus_calamus","iNatAg-mini/acrocarpus_fraxinifolius","iNatAg-mini/acrocomia_aculeata","iNatAg-mini/acrocomia_totai","iNatAg-mini/actaea_racemosa","iNatAg-mini/actinidia_arguta","iNatAg-mini/actinidia_chinensis","iNatAg-mini/adansonia_digitata","iNatAg-mini/adansonia_grandidieri","iNatAg-mini/adansonia_gregorii","iNatAg-mini/adenanthera_pavonina","iNatAg-mini/adesmia_bicolor","iNatAg-mini/adesmia_latifolia","iNatAg-mini/adesmia_punctata","iNatAg-mini/adesmia_securigerifolia","iNatAg-mini/adiantum_capillus-veneris","iNatAg-mini/adina_cordifolia","iNatAg-mini/adonis_annua","iNatAg-mini/adonis_vernalis","iNatAg-mini/aechmea_magdalenae","iNatAg-mini/aegiceras_corniculatum","iNatAg-mini/aegilops_biuncialis","iNatAg-mini/aegilops_cylindrica","iNatAg-mini/aegilops_geniculata","iNatAg-mini/aegilops_triuncialis","iNatAg-mini/aegle_marmelos","iNatAg-mini/aegopodium_podagraria","iNatAg-mini/aeschynomene_americana","iNatAg-mini/aeschynomene_brasiliana","iNatAg-mini/aeschynomene_falcata","iNatAg-mini/aeschynomene_histrix","iNatAg-mini/aeschynomene_indica","iNatAg-mini/aeschynomene_villosa","iNatAg-mini/aesculus_hippocastanum","iNatAg-mini/aesculus_indica","iNatAg-mini/aethusa_cynapium","iNatAg-mini/afzelia_africana","iNatAg-mini/afzelia_quanzensis","iNatAg-mini/agathis_australis","iNatAg-mini/agathis_dammara","iNatAg-mini/agathis_macrophylla","iNatAg-mini/agathis_microstachya","iNatAg-mini/agathis_robusta","iNatAg-mini/agave_fourcroydes","iNatAg-mini/agave_lecheguilla","iNatAg-mini/agave_sisalana","iNatAg-mini/ageratum_conyzoides","iNatAg-mini/agrimonia_eupatoria","iNatAg-mini/agrimonia_gryposepala","iNatAg-mini/agrimonia_parviflora","iNatAg-mini/agropyron_cristatum","iNatAg-mini/agropyron_dasyanthum","iNatAg-mini/agropyron_desertorum","iNatAg-mini/agropyron_scabrum","iNatAg-mini/agrostemma_githago","iNatAg-mini/agrostis_canina","iNatAg-mini/agrostis_capillaris","iNatAg-mini/agrostis_gigantea","iNatAg-mini/agrostis_stolonifera","iNatAg-mini/agrostis_tenuis","iNatAg-mini/ailanthus_altissima","iNatAg-mini/ailanthus_excelsa","iNatAg-mini/aiphanes_aculeata","iNatAg-mini/aira_caryophyllea","iNatAg-mini/ajuga_genevensis","iNatAg-mini/ajuga_reptans","iNatAg-mini/alania_cunninghamii","iNatAg-mini/albizia_adianthifolia","iNatAg-mini/albizia_amara","iNatAg-mini/albizia_chinensis","iNatAg-mini/albizia_falcataria","iNatAg-mini/albizia_harveyi","iNatAg-mini/albizia_lebbeck","iNatAg-mini/albizia_lophantha","iNatAg-mini/albizia_lucida","iNatAg-mini/albizia_odoratissima","iNatAg-mini/albizia_procera","iNatAg-mini/alcea_rosea","iNatAg-mini/alchemilla_monticola","iNatAg-mini/alchemilla_occidentalis","iNatAg-mini/alchemilla_vulgaris","iNatAg-mini/alchemilla_xanthochlora","iNatAg-mini/aleurites_fordii","iNatAg-mini/aleurites_moluccana","iNatAg-mini/alisma_gramineum","iNatAg-mini/alisma_lanceolatum","iNatAg-mini/alisma_plantago-aquatica","iNatAg-mini/alkanna_tinctoria","iNatAg-mini/alliaria_petiolata","iNatAg-mini/allionia_incarnata","iNatAg-mini/allium_ampeloprasum","iNatAg-mini/allium_canadense","iNatAg-mini/allium_cepa","iNatAg-mini/allium_chinense","iNatAg-mini/allium_fistulosum","iNatAg-mini/allium_paniculatum","iNatAg-mini/allium_sativum","iNatAg-mini/allium_schoenoprasum","iNatAg-mini/allium_triquetrum","iNatAg-mini/allium_tuberosum","iNatAg-mini/allium_ursinum","iNatAg-mini/allocasuarina_campestris","iNatAg-mini/allocasuarina_decaisneana","iNatAg-mini/allocasuarina_fraseriana","iNatAg-mini/allocasuarina_huegeliana","iNatAg-mini/allocasuarina_littoralis","iNatAg-mini/allocasuarina_luehmannii","iNatAg-mini/allocasuarina_torulosa","iNatAg-mini/alloteropsis_semialata","iNatAg-mini/alnus_acuminata","iNatAg-mini/alnus_glutinosa","iNatAg-mini/alnus_japonica","iNatAg-mini/alnus_maritima","iNatAg-mini/alnus_nepalensis","iNatAg-mini/alnus_rubra","iNatAg-mini/alocasia_macrorrhizos","iNatAg-mini/aloe_arborescens","iNatAg-mini/aloe_barbadensis","iNatAg-mini/aloe_ferox","iNatAg-mini/aloe_perryi","iNatAg-mini/alopecurus_arundinaceus","iNatAg-mini/alopecurus_carolinianus","iNatAg-mini/alopecurus_geniculatus","iNatAg-mini/alopecurus_myosuroides","iNatAg-mini/alopecurus_pratensis","iNatAg-mini/alopecurus_rendlei","iNatAg-mini/aloysia_triphylla","iNatAg-mini/alphitonia_excelsa","iNatAg-mini/alpinia_galanga","iNatAg-mini/alstonia_scholaris","iNatAg-mini/alternanthera_pungens","iNatAg-mini/althaea_officinalis","iNatAg-mini/altingia_excelsa","iNatAg-mini/alysicarpus_monilifer","iNatAg-mini/alysicarpus_ovalifolius","iNatAg-mini/alysicarpus_rugosus","iNatAg-mini/alysicarpus_vaginalis","iNatAg-mini/alyssum_desertorum","iNatAg-mini/amaranthus_albus","iNatAg-mini/amaranthus_blitum","iNatAg-mini/amaranthus_caudatus","iNatAg-mini/amaranthus_cruentus","iNatAg-mini/amaranthus_dubius","iNatAg-mini/amaranthus_hybridus","iNatAg-mini/amaranthus_hypochondriacus","iNatAg-mini/amaranthus_lividus","iNatAg-mini/amaranthus_retroflexus","iNatAg-mini/amaranthus_speciosus","iNatAg-mini/amaranthus_spinosus","iNatAg-mini/amaranthus_tricolor","iNatAg-mini/amaranthus_viridis","iNatAg-mini/ambelania_acida","iNatAg-mini/ambrosia_acanthicarpa","iNatAg-mini/ambrosia_artemisiifolia","iNatAg-mini/ambrosia_confertiflora","iNatAg-mini/ambrosia_psilostachya","iNatAg-mini/ambrosia_tomentosa","iNatAg-mini/ambrosia_trifida","iNatAg-mini/ammannia_latifolia","iNatAg-mini/ammi_majus","iNatAg-mini/ammophila_arenaria","iNatAg-mini/ammophila_breviligulata","iNatAg-mini/amorpha_fruticosa","iNatAg-mini/amorphophallus_paeoniifolius","iNatAg-mini/amsinckia_douglasiana","iNatAg-mini/amsinckia_lycopsoides","iNatAg-mini/anacardium_occidentale","iNatAg-mini/anagallis_arvensis","iNatAg-mini/ananas_comosus","iNatAg-mini/anchusa_azurea","iNatAg-mini/andrographis_paniculata","iNatAg-mini/andropogon_barbinodis","iNatAg-mini/andropogon_bicornis","iNatAg-mini/andropogon_brachystachyus","iNatAg-mini/andropogon_gayanus","iNatAg-mini/andropogon_gyrans","iNatAg-mini/andropogon_hallii","iNatAg-mini/andropogon_leucostachyus","iNatAg-mini/andropogon_ternarius","iNatAg-mini/androsace_septentrionalis","iNatAg-mini/anemone_hepatica","iNatAg-mini/anemone_nemorosa","iNatAg-mini/anethum_graveolens","iNatAg-mini/angelica_archangelica","iNatAg-mini/angelica_atropurpurea","iNatAg-mini/angelica_sylvestris","iNatAg-mini/angophora_costata","iNatAg-mini/angophora_floribunda","iNatAg-mini/annona_atemoya","iNatAg-mini/annona_cherimola","iNatAg-mini/annona_diversifolia","iNatAg-mini/annona_montana","iNatAg-mini/annona_muricata","iNatAg-mini/annona_purpurea","iNatAg-mini/annona_reticulata","iNatAg-mini/annona_senegalensis","iNatAg-mini/annona_squamosa","iNatAg-mini/anogeissus_acuminata","iNatAg-mini/anogeissus_latifolia","iNatAg-mini/anogeissus_pendula","iNatAg-mini/antennaria_dioica","iNatAg-mini/anthemis_arvensis","iNatAg-mini/anthemis_cotula","iNatAg-mini/anthemis_tinctoria","iNatAg-mini/anthephora_pubescens","iNatAg-mini/anthoxanthum_odoratum","iNatAg-mini/anthriscus_cerefolium","iNatAg-mini/anthyllis_vulneraria","iNatAg-mini/antidesma_bunius","iNatAg-mini/antirrhinum_majus","iNatAg-mini/aphandra_natalia","iNatAg-mini/aphanes_arvensis","iNatAg-mini/apios_americana","iNatAg-mini/apium_graveolens","iNatAg-mini/apocynum_cannabinum","iNatAg-mini/apocynum_sibiricum","iNatAg-mini/aponogeton_distachyos","iNatAg-mini/aquilaria_malaccensis","iNatAg-mini/aquilegia_canadensis","iNatAg-mini/aquilegia_vulgaris","iNatAg-mini/arachis_glabrata","iNatAg-mini/arachis_hypogaea","iNatAg-mini/arachis_pintoi","iNatAg-mini/arachis_villosa","iNatAg-mini/araucaria_angustifolia","iNatAg-mini/araucaria_bidwillii","iNatAg-mini/araucaria_cunninghamii","iNatAg-mini/araucaria_hunsteinii","iNatAg-mini/arbutus_unedo","iNatAg-mini/archidendron_jiringa","iNatAg-mini/arctium_lappa","iNatAg-mini/arctostaphylos_glandulosa","iNatAg-mini/arctostaphylos_manzanita","iNatAg-mini/arctostaphylos_patula","iNatAg-mini/arctostaphylos_uva-ursi","iNatAg-mini/arctostaphylos_viscida","iNatAg-mini/ardisia_crenata","iNatAg-mini/areca_catechu","iNatAg-mini/arenaria_serpyllifolia","iNatAg-mini/arenga_pinnata","iNatAg-mini/argemone_mexicana","iNatAg-mini/argyrodendron_actinophyllum","iNatAg-mini/argyrodendron_peralatum","iNatAg-mini/aria_alnifolia","iNatAg-mini/aristida_adscensionis","iNatAg-mini/aristida_behriana","iNatAg-mini/aristida_congesta","iNatAg-mini/aristida_junciformis","iNatAg-mini/aristida_lanosa","iNatAg-mini/aristida_latifolia","iNatAg-mini/aristida_longispica","iNatAg-mini/aristida_personata","iNatAg-mini/aristida_purpurascens","iNatAg-mini/aristida_schiedeana","iNatAg-mini/aristida_transvaalensis","iNatAg-mini/aristolochia_rotunda","iNatAg-mini/armoracia_rusticana","iNatAg-mini/arnica_montana","iNatAg-mini/arrhenatherum_elatius","iNatAg-mini/artemisia_abrotanum","iNatAg-mini/artemisia_absinthium","iNatAg-mini/artemisia_afra","iNatAg-mini/artemisia_annua","iNatAg-mini/artemisia_campestris","iNatAg-mini/artemisia_dracunculus","iNatAg-mini/artemisia_filifolia","iNatAg-mini/artemisia_glacialis","iNatAg-mini/artemisia_herba-alba","iNatAg-mini/artemisia_ludoviciana","iNatAg-mini/artemisia_stelleriana","iNatAg-mini/artemisia_tridentata","iNatAg-mini/artemisia_vulgaris","iNatAg-mini/artocarpus_altilis","iNatAg-mini/artocarpus_heterophyllus","iNatAg-mini/artocarpus_hirsutus","iNatAg-mini/artocarpus_integer","iNatAg-mini/artocarpus_lakoocha","iNatAg-mini/arundinella_hirta","iNatAg-mini/arundo_donax","iNatAg-mini/asarina_stricta","iNatAg-mini/asarum_europaeum","iNatAg-mini/asclepias_curassavica","iNatAg-mini/asclepias_fascicularis","iNatAg-mini/asclepias_incarnata","iNatAg-mini/asclepias_lanceolata","iNatAg-mini/asclepias_purpurascens","iNatAg-mini/asclepias_speciosa","iNatAg-mini/asclepias_subverticillata","iNatAg-mini/asclepias_tuberosa","iNatAg-mini/asclepias_verticillata","iNatAg-mini/asclepias_viridiflora","iNatAg-mini/asimina_angustifolia","iNatAg-mini/asimina_triloba","iNatAg-mini/asparagus_densiflorus","iNatAg-mini/asparagus_officinalis","iNatAg-mini/asperula_arvensis","iNatAg-mini/asphodelus_albus","iNatAg-mini/asphodelus_tenuifolius","iNatAg-mini/aspilia_angustifolia","iNatAg-mini/asplenium_ruta-muraria","iNatAg-mini/aster_ericoides","iNatAg-mini/astragalus_adsurgens","iNatAg-mini/astragalus_asymmetricus","iNatAg-mini/astragalus_canadensis","iNatAg-mini/astragalus_cicer","iNatAg-mini/astragalus_gummifer","iNatAg-mini/astragalus_mollissimus","iNatAg-mini/astragalus_nuttallianus","iNatAg-mini/astragalus_sinicus","iNatAg-mini/astragalus_tweedyi","iNatAg-mini/astrantia_major","iNatAg-mini/astrebla_lappacea","iNatAg-mini/astrebla_pectinata","iNatAg-mini/astrebla_squarrosa","iNatAg-mini/astrocaryum_jauari","iNatAg-mini/astrocaryum_vulgare","iNatAg-mini/asystasia_gangetica","iNatAg-mini/atalaya_hemiglauca","iNatAg-mini/atherosperma_moschatum","iNatAg-mini/athrotaxis_selaginoides","iNatAg-mini/atriplex_canescens","iNatAg-mini/atriplex_confertifolia","iNatAg-mini/atriplex_gardneri","iNatAg-mini/atriplex_glauca","iNatAg-mini/atriplex_halimus","iNatAg-mini/atriplex_hortensis","iNatAg-mini/atriplex_lentiformis","iNatAg-mini/atriplex_nummularia","iNatAg-mini/atriplex_patula","iNatAg-mini/atriplex_rosea","iNatAg-mini/atriplex_semibaccata","iNatAg-mini/atriplex_vesicaria","iNatAg-mini/atropa_belladonna","iNatAg-mini/attalea_cohune","iNatAg-mini/avena_fatua","iNatAg-mini/avena_sativa","iNatAg-mini/avena_sterilis","iNatAg-mini/avenula_pubescens","iNatAg-mini/averrhoa_bilimbi","iNatAg-mini/averrhoa_carambola","iNatAg-mini/avicennia_germinans","iNatAg-mini/avicennia_marina","iNatAg-mini/avicennia_officinalis","iNatAg-mini/axonopus_affinis","iNatAg-mini/axonopus_compressus","iNatAg-mini/axonopus_fissifolius","iNatAg-mini/axyris_amaranthoides","iNatAg-mini/azadirachta_indica","iNatAg-mini/azanza_garckeana","iNatAg-mini/azolla_filiculoides","iNatAg-mini/azolla_pinnata","iNatAg-mini/baccaurea_motleyana","iNatAg-mini/baccaurea_ramiflora","iNatAg-mini/baccharis_glutinosa","iNatAg-mini/baccharis_pilularis","iNatAg-mini/bactris_gasipaes","iNatAg-mini/baikiaea_plurijuga","iNatAg-mini/balanites_aegyptiaca","iNatAg-mini/bambusa_arundinacea","iNatAg-mini/bambusa_balcooa","iNatAg-mini/bambusa_blumeana","iNatAg-mini/bambusa_tulda","iNatAg-mini/bambusa_vulgaris","iNatAg-mini/banksia_integrifolia","iNatAg-mini/banksia_occidentalis","iNatAg-mini/baphia_nitida","iNatAg-mini/barringtonia_racemosa","iNatAg-mini/basella_alba","iNatAg-mini/bauhinia_aculeata","iNatAg-mini/bauhinia_petersiana","iNatAg-mini/bauhinia_racemosa","iNatAg-mini/bauhinia_rufescens","iNatAg-mini/bauhinia_thonningii","iNatAg-mini/bauhinia_tomentosa","iNatAg-mini/bauhinia_variegata","iNatAg-mini/beckmannia_eruciformis","iNatAg-mini/beckmannia_syzigachne","iNatAg-mini/bellis_perennis","iNatAg-mini/benincasa_hispida","iNatAg-mini/berberis_aquifolium","iNatAg-mini/berberis_thunbergii","iNatAg-mini/berberis_vulgaris","iNatAg-mini/berchemia_discolor","iNatAg-mini/berrya_cordifolia","iNatAg-mini/bersama_lucens","iNatAg-mini/bertholletia_excelsa","iNatAg-mini/beta_vulgaris","iNatAg-mini/betula_nigra","iNatAg-mini/betula_pendula","iNatAg-mini/betula_pubescens","iNatAg-mini/bidens_bipinnata","iNatAg-mini/bidens_cernua","iNatAg-mini/bidens_frondosa","iNatAg-mini/bidens_pilosa","iNatAg-mini/bidens_tripartita","iNatAg-mini/bignonia_capreolata","iNatAg-mini/biserrula_pelecinus","iNatAg-mini/bixa_orellana","iNatAg-mini/blighia_sapida","iNatAg-mini/blumea_balsamifera","iNatAg-mini/bocconia_frutescens","iNatAg-mini/boehmeria_nivea","iNatAg-mini/boerhavia_coccinea","iNatAg-mini/boerhavia_diffusa","iNatAg-mini/boerhavia_erecta","iNatAg-mini/boesenbergia_rotunda","iNatAg-mini/bolusanthus_speciosus","iNatAg-mini/bombacopsis_quinata","iNatAg-mini/bombax_ceiba","iNatAg-mini/bombax_insigne","iNatAg-mini/borago_officinalis","iNatAg-mini/borassus_aethiopum","iNatAg-mini/borassus_flabellifer","iNatAg-mini/borojoa_patinoi","iNatAg-mini/boronia_glabra","iNatAg-mini/boscia_angustifolia","iNatAg-mini/boswellia_serrata","iNatAg-mini/bothriochloa_bladhii","iNatAg-mini/bothriochloa_insculpta","iNatAg-mini/bothriochloa_ischaemum","iNatAg-mini/bothriochloa_pertusa","iNatAg-mini/bougainvillea_glabra","iNatAg-mini/bouteloua_curtipendula","iNatAg-mini/bouteloua_gracilis","iNatAg-mini/brachiaria_brizantha","iNatAg-mini/brachiaria_decumbens","iNatAg-mini/brachiaria_deflexa","iNatAg-mini/brachiaria_distachya","iNatAg-mini/brachiaria_humidicola","iNatAg-mini/brachiaria_mutica","iNatAg-mini/brachiaria_ramosa","iNatAg-mini/brachiaria_serrata","iNatAg-mini/brachychiton_acerifolius","iNatAg-mini/brachychiton_populneus","iNatAg-mini/brachylaena_huillensis","iNatAg-mini/brachystegia_spiciformis","iNatAg-mini/brassica_campestris","iNatAg-mini/brassica_chinensis","iNatAg-mini/brassica_incana","iNatAg-mini/brassica_juncea","iNatAg-mini/brassica_napus","iNatAg-mini/brassica_nigra","iNatAg-mini/brassica_rapa","iNatAg-mini/brassica_tournefortii","iNatAg-mini/bridelia_micrantha","iNatAg-mini/briza_maxima","iNatAg-mini/briza_media","iNatAg-mini/briza_minor","iNatAg-mini/bromus_arvensis","iNatAg-mini/bromus_carinatus","iNatAg-mini/bromus_catharticus","iNatAg-mini/bromus_diandrus","iNatAg-mini/bromus_erectus","iNatAg-mini/bromus_hordeaceus","iNatAg-mini/bromus_inermis","iNatAg-mini/bromus_madritensis","iNatAg-mini/bromus_marginatus","iNatAg-mini/bromus_racemosus","iNatAg-mini/bromus_rubens","iNatAg-mini/bromus_secalinus","iNatAg-mini/bromus_sterilis","iNatAg-mini/bromus_tectorum","iNatAg-mini/bromus_unioloides","iNatAg-mini/bromus_willdenowii","iNatAg-mini/brosimum_alicastrum","iNatAg-mini/broussonetia_papyrifera","iNatAg-mini/bruguiera_gymnorrhiza","iNatAg-mini/bryonia_alba","iNatAg-mini/bryonia_cretica","iNatAg-mini/buchloe_dactyloides","iNatAg-mini/buckinghamia_celsissima","iNatAg-mini/bunias_erucago","iNatAg-mini/bunias_orientalis","iNatAg-mini/burkea_africana","iNatAg-mini/bursera_simaruba","iNatAg-mini/butea_monosperma","iNatAg-mini/butomus_umbellatus","iNatAg-mini/buxus_sempervirens","iNatAg-mini/cacalia_atriplicifolia","iNatAg-mini/caesalpinia_coriaria","iNatAg-mini/caesalpinia_sappan","iNatAg-mini/cajanus_cajan","iNatAg-mini/calamagrostis_epigeios","iNatAg-mini/calathea_allouia","iNatAg-mini/calendula_arvensis","iNatAg-mini/calendula_officinalis","iNatAg-mini/calliandra_calothyrsus","iNatAg-mini/calliandra_tweedii","iNatAg-mini/callisia_angustifolia","iNatAg-mini/callitriche_palustris","iNatAg-mini/callitriche_stagnalis","iNatAg-mini/callitriche_verna","iNatAg-mini/callitris_columellaris","iNatAg-mini/callitris_endlicheri","iNatAg-mini/callitris_macleayana","iNatAg-mini/calluna_vulgaris","iNatAg-mini/calodendrum_capense","iNatAg-mini/calophyllum_apetalum","iNatAg-mini/calophyllum_brasiliense","iNatAg-mini/calophyllum_inophyllum","iNatAg-mini/calopogonium_caeruleum","iNatAg-mini/calopogonium_mucunoides","iNatAg-mini/calotropis_procera","iNatAg-mini/caltha_palustris","iNatAg-mini/calystegia_hederacea","iNatAg-mini/calystegia_occidentalis","iNatAg-mini/calystegia_pubescens","iNatAg-mini/camelina_sativa","iNatAg-mini/camellia_sinensis","iNatAg-mini/campanula_americana","iNatAg-mini/campanula_rapunculus","iNatAg-mini/campanula_rotundifolia","iNatAg-mini/cananga_odorata","iNatAg-mini/canavalia_brasiliensis","iNatAg-mini/canavalia_ensiformis","iNatAg-mini/canavalia_gladiata","iNatAg-mini/canna_indica","iNatAg-mini/canthium_spinosum","iNatAg-mini/capparis_decidua","iNatAg-mini/capparis_spinosa","iNatAg-mini/capparis_tomentosa","iNatAg-mini/capsella_bursa-pastoris","iNatAg-mini/capsicum_annuum","iNatAg-mini/capsicum_chinense","iNatAg-mini/capsicum_frutescens","iNatAg-mini/capsicum_pubescens","iNatAg-mini/caragana_arborescens","iNatAg-mini/caragana_microphylla","iNatAg-mini/carapa_guianensis","iNatAg-mini/cardamine_flexuosa","iNatAg-mini/cardamine_hirsuta","iNatAg-mini/cardamine_impatiens","iNatAg-mini/cardamine_oligosperma","iNatAg-mini/cardamine_parviflora","iNatAg-mini/cardamine_pratensis","iNatAg-mini/cardiospermum_halicacabum","iNatAg-mini/carduus_acanthoides","iNatAg-mini/carduus_crispus","iNatAg-mini/carduus_lanceolatus","iNatAg-mini/carduus_pycnocephalus","iNatAg-mini/carex_nebrascensis","iNatAg-mini/carex_pallescens","iNatAg-mini/carica_cauliflora","iNatAg-mini/carica_papaya","iNatAg-mini/carica_pubescens","iNatAg-mini/cariniana_pyriformis","iNatAg-mini/carissa_carandas","iNatAg-mini/carissa_edulis","iNatAg-mini/carissa_macrocarpa","iNatAg-mini/carlina_acaulis","iNatAg-mini/carludovica_palmata","iNatAg-mini/caroxylon_aphyllum","iNatAg-mini/carpinus_betulus","iNatAg-mini/carthamus_creticus","iNatAg-mini/carthamus_lanatus","iNatAg-mini/carthamus_tinctorius","iNatAg-mini/carum_carvi","iNatAg-mini/carya_illinoensis","iNatAg-mini/caryodendron_orinocense","iNatAg-mini/caryota_urens","iNatAg-mini/casimiroa_edulis","iNatAg-mini/cassia_articulata","iNatAg-mini/cassia_brewsteri","iNatAg-mini/cassia_fistula","iNatAg-mini/cassia_marilandica","iNatAg-mini/cassia_nictitans","iNatAg-mini/cassia_reticulata","iNatAg-mini/cassia_senna","iNatAg-mini/cassia_siamea","iNatAg-mini/cassia_sieberiana","iNatAg-mini/cassia_tomentosa","iNatAg-mini/cassia_tora","iNatAg-mini/castanea_crenata","iNatAg-mini/castanea_dentata","iNatAg-mini/castanea_mollissima","iNatAg-mini/castanea_pumila","iNatAg-mini/castanea_sativa","iNatAg-mini/castanospermum_australe","iNatAg-mini/castilla_elastica","iNatAg-mini/castilleja_angustifolia","iNatAg-mini/castilleja_occidentalis","iNatAg-mini/casuarina_cristata","iNatAg-mini/casuarina_cunninghamiana","iNatAg-mini/casuarina_equisetifolia","iNatAg-mini/casuarina_glauca","iNatAg-mini/casuarina_junghuhniana","iNatAg-mini/casuarina_obesa","iNatAg-mini/catalpa_bignonioides","iNatAg-mini/catha_edulis","iNatAg-mini/catharanthus_roseus","iNatAg-mini/ceanothus_americanus","iNatAg-mini/ceanothus_prostratus","iNatAg-mini/cedrela_odorata","iNatAg-mini/cedrus_deodara","iNatAg-mini/ceiba_pentandra","iNatAg-mini/celastrus_orbiculatus","iNatAg-mini/celastrus_scandens","iNatAg-mini/celosia_argentea","iNatAg-mini/celtis_australis","iNatAg-mini/cenchrus_biflorus","iNatAg-mini/cenchrus_ciliaris","iNatAg-mini/cenchrus_echinatus","iNatAg-mini/cenchrus_setigerus","iNatAg-mini/cenchrus_spinifex","iNatAg-mini/cenchrus_tribuloides","iNatAg-mini/centaurea_biebersteinii","iNatAg-mini/centaurea_calcitrapa","iNatAg-mini/centaurea_cyanus","iNatAg-mini/centaurea_diluta","iNatAg-mini/centaurea_jacea","iNatAg-mini/centaurea_melitensis","iNatAg-mini/centaurea_nigra","iNatAg-mini/centaurea_nigrescens","iNatAg-mini/centaurea_solstitalis","iNatAg-mini/centaurea_solstitialis","iNatAg-mini/centaurea_stoebe","iNatAg-mini/centaurea_virgata","iNatAg-mini/centella_asiatica","iNatAg-mini/centropodia_glauca","iNatAg-mini/centrosema_brasilianum","iNatAg-mini/centrosema_macrocarpum","iNatAg-mini/centrosema_pascuorum","iNatAg-mini/centrosema_plumieri","iNatAg-mini/centrosema_pubescens","iNatAg-mini/centrosema_virginianum","iNatAg-mini/cephalanthus_occidentalis","iNatAg-mini/cerastium_arvense","iNatAg-mini/cerastium_nutans","iNatAg-mini/cerastium_vulgatum","iNatAg-mini/ceratonia_siliqua","iNatAg-mini/ceratopetalum_apetalum","iNatAg-mini/ceratophyllum_demersum","iNatAg-mini/ceratophyllum_echinatum","iNatAg-mini/ceriops_tagal","iNatAg-mini/cestrum_diurnum","iNatAg-mini/ceterach_officinarum","iNatAg-mini/chaerophyllum_tainturieri","iNatAg-mini/chamaebatia_foliolosa","iNatAg-mini/chamaecrista_nictitans","iNatAg-mini/chamaecrista_rotundifolia","iNatAg-mini/chamaedorea_tepejilote","iNatAg-mini/chamaerops_humilis","iNatAg-mini/chara_intermedia","iNatAg-mini/chelidonium_majus","iNatAg-mini/chenopodium_album","iNatAg-mini/chenopodium_ambrosioides","iNatAg-mini/chenopodium_ambrosoides","iNatAg-mini/chenopodium_berlandieri","iNatAg-mini/chenopodium_bonus-henricus","iNatAg-mini/chenopodium_botrys","iNatAg-mini/chenopodium_ficifolium","iNatAg-mini/chenopodium_gigantospermum","iNatAg-mini/chenopodium_glaucum","iNatAg-mini/chenopodium_missouriense","iNatAg-mini/chenopodium_multifidum","iNatAg-mini/chenopodium_murale","iNatAg-mini/chenopodium_polyspermum","iNatAg-mini/chenopodium_quinoa","iNatAg-mini/chenopodium_rubrum","iNatAg-mini/chenopodium_urbicum","iNatAg-mini/chloris_ciliata","iNatAg-mini/chloris_gayana","iNatAg-mini/chloris_roxburghiana","iNatAg-mini/chloris_verticillata","iNatAg-mini/chloris_virgata","iNatAg-mini/chlorogalum_pomeridianum","iNatAg-mini/chlorophora_excelsa","iNatAg-mini/chlorophytum_comosum","iNatAg-mini/chloroxylon_swietenia","iNatAg-mini/chromolaena_odorata","iNatAg-mini/chrysanthemum_coronarium","iNatAg-mini/chrysanthemum_leucanthemum","iNatAg-mini/chrysophyllum_cainito","iNatAg-mini/chrysopogon_aciculatus","iNatAg-mini/chukrasia_velutina","iNatAg-mini/cicer_arietinum","iNatAg-mini/cichorium_endivia","iNatAg-mini/cichorium_intybus","iNatAg-mini/cicuta_bulbifera","iNatAg-mini/cicuta_mackenzieana","iNatAg-mini/cicuta_maculata","iNatAg-mini/cicuta_virosa","iNatAg-mini/cimicifuga_racemosa","iNatAg-mini/cinchona_officinalis","iNatAg-mini/cinchona_pubescens","iNatAg-mini/cinnamomum_burmannii","iNatAg-mini/cinnamomum_camphora","iNatAg-mini/cinnamomum_cassia","iNatAg-mini/cinnamomum_verum","iNatAg-mini/cistus_creticus","iNatAg-mini/citrofortunella_microcarpa","iNatAg-mini/citrullus_colocynthis","iNatAg-mini/citrullus_lanatus","iNatAg-mini/citrus_aurantifolia","iNatAg-mini/citrus_aurantium","iNatAg-mini/citrus_deliciosa","iNatAg-mini/citrus_latifolia","iNatAg-mini/citrus_limon","iNatAg-mini/citrus_madurensis","iNatAg-mini/citrus_medica","iNatAg-mini/citrus_paradisi","iNatAg-mini/citrus_reticulata","iNatAg-mini/citrus_sinensis","iNatAg-mini/citrus_unshiu","iNatAg-mini/clausena_lansium","iNatAg-mini/claytonia_caroliniana","iNatAg-mini/claytonia_virginica","iNatAg-mini/cleistogenes_squarrosa","iNatAg-mini/clematis_ligusticifolia","iNatAg-mini/clematis_orientalis","iNatAg-mini/clematis_virginiana","iNatAg-mini/clematis_vitalba","iNatAg-mini/cleome_gynandra","iNatAg-mini/cleome_hassleriana","iNatAg-mini/cleome_viscosa","iNatAg-mini/clitoria_laurifolia","iNatAg-mini/clitoria_ternatea","iNatAg-mini/clusia_occidentalis","iNatAg-mini/cnicus_benedictus","iNatAg-mini/coccoloba_uvifera","iNatAg-mini/cochlospermum_religiosum","iNatAg-mini/cocos_nucifera","iNatAg-mini/coffea_arabica","iNatAg-mini/coffea_canephora","iNatAg-mini/coffea_liberica","iNatAg-mini/coix_lacryma-jobi","iNatAg-mini/cola_acuminata","iNatAg-mini/cola_nitida","iNatAg-mini/colchicum_autumnale","iNatAg-mini/coleus_amboinicus","iNatAg-mini/colocasia_esculenta","iNatAg-mini/colophospermum_mopane","iNatAg-mini/combretum_aculeatum","iNatAg-mini/combretum_micranthum","iNatAg-mini/combretum_molle","iNatAg-mini/commelina_bengalensis","iNatAg-mini/commelina_benghalensis","iNatAg-mini/commelina_communis","iNatAg-mini/commelina_erecta","iNatAg-mini/commiphora_africana","iNatAg-mini/conium_maculatum","iNatAg-mini/conocarpus_erectus","iNatAg-mini/conocarpus_lancifolius","iNatAg-mini/convallaria_majalis","iNatAg-mini/convolvulus_althaeoides","iNatAg-mini/convolvulus_arvensis","iNatAg-mini/convolvulus_equitans","iNatAg-mini/convolvulus_sepium","iNatAg-mini/copaifera_langsdorffii","iNatAg-mini/corchorus_aestuans","iNatAg-mini/corchorus_capsularis","iNatAg-mini/cordia_africana","iNatAg-mini/cordia_alliodora","iNatAg-mini/coreopsis_lanceolata","iNatAg-mini/coreopsis_tinctoria","iNatAg-mini/coreopsis_verticillata","iNatAg-mini/coriandrum_sativum","iNatAg-mini/corispermum_hyssopifolium","iNatAg-mini/corispermum_villosum","iNatAg-mini/cornus_canadensis","iNatAg-mini/cornus_florida","iNatAg-mini/cornus_mas","iNatAg-mini/cornus_sanguinea","iNatAg-mini/coronilla_varia","iNatAg-mini/corylus_avellana","iNatAg-mini/corylus_maxima","iNatAg-mini/cotoneaster_franchetii","iNatAg-mini/cotula_coronopifolia","iNatAg-mini/crambe_cordifolia","iNatAg-mini/crambe_maritima","iNatAg-mini/crassula_sieberiana","iNatAg-mini/crataegus_crus-galli","iNatAg-mini/crataegus_crus-gallii","iNatAg-mini/crataegus_marshallii","iNatAg-mini/crataegus_monogyna","iNatAg-mini/crataegus_oxyacantha","iNatAg-mini/crataegus_rivularis","iNatAg-mini/cratylia_argentea","iNatAg-mini/crepis_biennis","iNatAg-mini/crepis_occidentalis","iNatAg-mini/crepis_vesicaria","iNatAg-mini/cressa_truxillensis","iNatAg-mini/crinum_americanum","iNatAg-mini/crithmum_maritimum","iNatAg-mini/crocus_sativus","iNatAg-mini/crotalaria_juncea","iNatAg-mini/crotalaria_lanceolata","iNatAg-mini/crotalaria_pallida","iNatAg-mini/crotalaria_podocarpa","iNatAg-mini/crotalaria_retusa","iNatAg-mini/crotalaria_sagittalis","iNatAg-mini/crotalaria_spectabilis","iNatAg-mini/croton_monanthogynus","iNatAg-mini/crucianella_angustifolia","iNatAg-mini/cryptocarya_erythroxylon","iNatAg-mini/cryptomeria_japonica","iNatAg-mini/cryptotaenia_japonica","iNatAg-mini/ctenium_concinnum","iNatAg-mini/cucumis_anguria","iNatAg-mini/cucumis_melo","iNatAg-mini/cucumis_sativus","iNatAg-mini/cucurbita_argyrosperma","iNatAg-mini/cucurbita_digitata","iNatAg-mini/cucurbita_ficifolia","iNatAg-mini/cucurbita_foetidissima","iNatAg-mini/cucurbita_maxima","iNatAg-mini/cucurbita_mixta","iNatAg-mini/cucurbita_moschata","iNatAg-mini/cucurbita_pepo","iNatAg-mini/cunninghamia_lanceolata","iNatAg-mini/cupania_auriculata","iNatAg-mini/cuphea_viscosissima","iNatAg-mini/cupressus_arizonica","iNatAg-mini/cupressus_lusitanica","iNatAg-mini/cupressus_macrocarpa","iNatAg-mini/cupressus_sempervirens","iNatAg-mini/cupressus_torulosa","iNatAg-mini/curcuma_longa","iNatAg-mini/curcuma_zedoaria","iNatAg-mini/cuscuta_approximata","iNatAg-mini/cuscuta_epithymum","iNatAg-mini/cuscuta_obtusiflora","iNatAg-mini/cuscuta_planiflora","iNatAg-mini/cuscuta_sandwichiana","iNatAg-mini/cydonia_oblonga","iNatAg-mini/cymbalaria_muralis","iNatAg-mini/cymbopogon_citratus","iNatAg-mini/cynanchum_scoparium","iNatAg-mini/cynara_cardunculus","iNatAg-mini/cynara_scolymus","iNatAg-mini/cynodon_dactylon","iNatAg-mini/cynodon_nlemfuensis","iNatAg-mini/cynoglossum_officinale","iNatAg-mini/cynometra_cauliflora","iNatAg-mini/cynosurus_cristatus","iNatAg-mini/cyperus_alopecuroides","iNatAg-mini/cyperus_articulatus","iNatAg-mini/cyperus_compressus","iNatAg-mini/cyperus_croceus","iNatAg-mini/cyperus_cuspidatus","iNatAg-mini/cyperus_difformis","iNatAg-mini/cyperus_eragrostis","iNatAg-mini/cyperus_erythrorhizos","iNatAg-mini/cyperus_esculentus","iNatAg-mini/cyperus_flavescens","iNatAg-mini/cyperus_fuscus","iNatAg-mini/cyperus_hyalinus","iNatAg-mini/cyperus_involucratus","iNatAg-mini/cyperus_iria","iNatAg-mini/cyperus_lanceolatus","iNatAg-mini/cyperus_longus","iNatAg-mini/cyperus_odoratus","iNatAg-mini/cyperus_pilosus","iNatAg-mini/cyperus_prolifer","iNatAg-mini/cyperus_pseudovegetus","iNatAg-mini/cyperus_rotundus","iNatAg-mini/cyperus_sanguinolentus","iNatAg-mini/cyperus_squarrosus","iNatAg-mini/cyperus_strigosus","iNatAg-mini/cyperus_subsquarrosus","iNatAg-mini/cyperus_surinamensis","iNatAg-mini/cyphomandra_betacea","iNatAg-mini/cytisus_albus","iNatAg-mini/cytisus_proliferus","iNatAg-mini/cytisus_supinus","iNatAg-mini/dacrydium_franklinii","iNatAg-mini/dactylis_glomerata","iNatAg-mini/dactyloctenium_aegyptium","iNatAg-mini/dactyloctenium_giganteum","iNatAg-mini/dalbergia_latifolia","iNatAg-mini/dalbergia_melanoxylon","iNatAg-mini/dalbergia_sissoo","iNatAg-mini/daphne_laureola","iNatAg-mini/daphne_mezereum","iNatAg-mini/datura_ferox","iNatAg-mini/datura_quercifolia","iNatAg-mini/datura_stramonium","iNatAg-mini/daucus_carota","iNatAg-mini/daucus_carrota","iNatAg-mini/delairea_odorata","iNatAg-mini/delonix_regia","iNatAg-mini/delphinium_bicolor","iNatAg-mini/delphinium_carolinianum","iNatAg-mini/delphinium_menziesii","iNatAg-mini/delphinium_trolliifolium","iNatAg-mini/dendrocalamus_asper","iNatAg-mini/dendrocalamus_giganteus","iNatAg-mini/dendrocalamus_strictus","iNatAg-mini/dendrolobium_umbellatum","iNatAg-mini/derris_elliptica","iNatAg-mini/deschampsia_caespitosa","iNatAg-mini/deschampsia_flexuosa","iNatAg-mini/desmanthus_leptophyllus","iNatAg-mini/desmanthus_virgatus","iNatAg-mini/desmodium_affine","iNatAg-mini/desmodium_barbatum","iNatAg-mini/desmodium_cuneatum","iNatAg-mini/desmodium_cuspidatum","iNatAg-mini/desmodium_distortum","iNatAg-mini/desmodium_gyroides","iNatAg-mini/desmodium_heterophyllum","iNatAg-mini/desmodium_incanum","iNatAg-mini/desmodium_intortum","iNatAg-mini/desmodium_paniculatum","iNatAg-mini/desmodium_psilocarpum","iNatAg-mini/desmodium_reticulatum","iNatAg-mini/desmodium_sandwicense","iNatAg-mini/desmodium_scorpiurus","iNatAg-mini/desmodium_tortuosum","iNatAg-mini/desmodium_triflorum","iNatAg-mini/desmodium_uncinatum","iNatAg-mini/desmodium_velutinum","iNatAg-mini/dialium_guineense","iNatAg-mini/dianthus_armeria","iNatAg-mini/dichanthium_annulatum","iNatAg-mini/dichanthium_aristatum","iNatAg-mini/dichanthium_caricosum","iNatAg-mini/dichanthium_sericeum","iNatAg-mini/dichondra_carolinensis","iNatAg-mini/dichondra_micrantha","iNatAg-mini/dichrostachys_cinerea","iNatAg-mini/dictamnus_albus","iNatAg-mini/didymopanax_morototoni","iNatAg-mini/diervilla_lonicera","iNatAg-mini/digitalis_lanata","iNatAg-mini/digitalis_lutea","iNatAg-mini/digitalis_purpurea","iNatAg-mini/digitaria_argyrograpta","iNatAg-mini/digitaria_ciliaris","iNatAg-mini/digitaria_decumbens","iNatAg-mini/digitaria_didactyla","iNatAg-mini/digitaria_eriantha","iNatAg-mini/digitaria_tricholaenoides","iNatAg-mini/digitaria_violascens","iNatAg-mini/dillenia_indica","iNatAg-mini/dillenia_pentagyna","iNatAg-mini/diodia_virginiana","iNatAg-mini/dioscorea_alata","iNatAg-mini/dioscorea_bulbifera","iNatAg-mini/dioscorea_esculenta","iNatAg-mini/dioscorea_opposita","iNatAg-mini/dioscorea_oppositifolia","iNatAg-mini/dioscorea_trifida","iNatAg-mini/diospyros_digyna","iNatAg-mini/diospyros_kaki","iNatAg-mini/diospyros_malabarica","iNatAg-mini/diospyros_melanoxylon","iNatAg-mini/diospyros_mespiliformis","iNatAg-mini/diospyros_virginiana","iNatAg-mini/diplachne_fusca","iNatAg-mini/diploglottis_cunninghamii","iNatAg-mini/dipsacus_fullonum","iNatAg-mini/dipsacus_laciniatus","iNatAg-mini/dipsacus_sylvestris","iNatAg-mini/dipterocarpus_alatus","iNatAg-mini/dipterocarpus_indicus","iNatAg-mini/dipterocarpus_turbinatus","iNatAg-mini/dodonaea_viscosa","iNatAg-mini/dovyalis_caffra","iNatAg-mini/dovyalis_hebecarpa","iNatAg-mini/draba_nemorosa","iNatAg-mini/draba_verna","iNatAg-mini/dracocephalum_parviflorum","iNatAg-mini/dracocephalum_thymiflorum","iNatAg-mini/drosera_rotundifolia","iNatAg-mini/dryopteris_filix-mas","iNatAg-mini/duboisia_myoporoides","iNatAg-mini/durio_zibethinus","iNatAg-mini/dysoxylum_fraserianum","iNatAg-mini/ecballium_elaterium","iNatAg-mini/echinacea_purpurea","iNatAg-mini/echinochloa_colona","iNatAg-mini/echinochloa_crus-galli","iNatAg-mini/echinochloa_frumentacea","iNatAg-mini/echinochloa_polystachya","iNatAg-mini/echinochloa_pyramidalis","iNatAg-mini/echinops_sphaerocephalus","iNatAg-mini/echium_plantagineum","iNatAg-mini/echium_vulgare","iNatAg-mini/ehrharta_calycina","iNatAg-mini/ehrharta_erecta","iNatAg-mini/ehrharta_longiflora","iNatAg-mini/ehrharta_villosa","iNatAg-mini/eichhornia_crassipes","iNatAg-mini/ekebergia_capensis","iNatAg-mini/elaeagnus_angustifolia","iNatAg-mini/elaeagnus_multiflora","iNatAg-mini/elaeis_guineensis","iNatAg-mini/elaeis_oleifera","iNatAg-mini/elaeocarpus_grandis","iNatAg-mini/eleagnus_angustifolia","iNatAg-mini/elegia_cuspidata","iNatAg-mini/eleocharis_cellulosa","iNatAg-mini/eleocharis_dulcis","iNatAg-mini/eleocharis_macrostachya","iNatAg-mini/eleocharis_montevidensis","iNatAg-mini/eleocharis_vivipara","iNatAg-mini/elephantopus_mollis","iNatAg-mini/elephantorrhiza_elephantina","iNatAg-mini/elettaria_cardamomum","iNatAg-mini/eleusine_indica","iNatAg-mini/ellisia_nyctelea","iNatAg-mini/elsholtzia_ciliata","iNatAg-mini/elymus_canadensis","iNatAg-mini/elymus_caput-medusae","iNatAg-mini/elymus_cinereus","iNatAg-mini/elymus_condensatus","iNatAg-mini/elymus_dahuricus","iNatAg-mini/elymus_glaucus","iNatAg-mini/elymus_viginicus","iNatAg-mini/elymus_virginicus","iNatAg-mini/emilia_sonchifolia","iNatAg-mini/encalypta_intermedia","iNatAg-mini/enneapogon_scoparius","iNatAg-mini/ensete_ventricosum","iNatAg-mini/entada_abyssinica","iNatAg-mini/entada_africana","iNatAg-mini/enterolobium_cyclocarpum","iNatAg-mini/epilobium_angustifolium","iNatAg-mini/epilobium_ciliatum","iNatAg-mini/equisetum_arvense","iNatAg-mini/equisetum_hyemale","iNatAg-mini/equisetum_palustre","iNatAg-mini/equisetum_sylvaticum","iNatAg-mini/equisetum_telmateia","iNatAg-mini/eragrostis_amabilis","iNatAg-mini/eragrostis_barrelieri","iNatAg-mini/eragrostis_capillaris","iNatAg-mini/eragrostis_chloromelas","iNatAg-mini/eragrostis_cilianensis","iNatAg-mini/eragrostis_curvula","iNatAg-mini/eragrostis_interrupta","iNatAg-mini/eragrostis_lehmanniana","iNatAg-mini/eragrostis_minor","iNatAg-mini/eragrostis_obtusa","iNatAg-mini/eragrostis_pilosa","iNatAg-mini/eragrostis_racemosa","iNatAg-mini/eragrostis_superba","iNatAg-mini/eragrostis_tef","iNatAg-mini/eragrostis_tremula","iNatAg-mini/eragrostis_trichodes","iNatAg-mini/eragrostis_unioloides","iNatAg-mini/eremochloa_ophiuroides","iNatAg-mini/erigeron_canadensis","iNatAg-mini/erigeron_cascadensis","iNatAg-mini/erigeron_divaricatus","iNatAg-mini/erigeron_philadelphicus","iNatAg-mini/eriobotrya_japonica","iNatAg-mini/eriochloa_punctata","iNatAg-mini/eriogonum_deflexum","iNatAg-mini/eriogonum_longifolium","iNatAg-mini/eriosema_psoraleoides","iNatAg-mini/eruca_sativa","iNatAg-mini/eryngium_campestre","iNatAg-mini/eryngium_yuccifolium","iNatAg-mini/erysimum_cheiranthoides","iNatAg-mini/erysimum_hieracifolium","iNatAg-mini/erysimum_hieraciifolium","iNatAg-mini/erysimum_repandum","iNatAg-mini/erythrina_abyssinica","iNatAg-mini/erythrina_caffra","iNatAg-mini/erythrina_edulis","iNatAg-mini/erythrina_fusca","iNatAg-mini/erythrina_poeppigiana","iNatAg-mini/erythrina_variegata","iNatAg-mini/erythrina_vespertilio","iNatAg-mini/erythrophleum_chlorostachys","iNatAg-mini/erythroxylum_coca","iNatAg-mini/eucalyptus_accedens","iNatAg-mini/eucalyptus_agglomerata","iNatAg-mini/eucalyptus_albens","iNatAg-mini/eucalyptus_astringens","iNatAg-mini/eucalyptus_bosistoana","iNatAg-mini/eucalyptus_botryoides","iNatAg-mini/eucalyptus_brockwayi","iNatAg-mini/eucalyptus_calophylla","iNatAg-mini/eucalyptus_camaldulensis","iNatAg-mini/eucalyptus_cinerea","iNatAg-mini/eucalyptus_citriodora","iNatAg-mini/eucalyptus_cladocalyx","iNatAg-mini/eucalyptus_cloeziana","iNatAg-mini/eucalyptus_consideniana","iNatAg-mini/eucalyptus_cornuta","iNatAg-mini/eucalyptus_crebra","iNatAg-mini/eucalyptus_cypellocarpa","iNatAg-mini/eucalyptus_dalrympleana","iNatAg-mini/eucalyptus_deglupta","iNatAg-mini/eucalyptus_delegatensis","iNatAg-mini/eucalyptus_diversicolor","iNatAg-mini/eucalyptus_dumosa","iNatAg-mini/eucalyptus_elata","iNatAg-mini/eucalyptus_eremophila","iNatAg-mini/eucalyptus_eugenioides","iNatAg-mini/eucalyptus_exserta","iNatAg-mini/eucalyptus_fastigata","iNatAg-mini/eucalyptus_fraxinoides","iNatAg-mini/eucalyptus_globoidea","iNatAg-mini/eucalyptus_globulus","iNatAg-mini/eucalyptus_gomphocephala","iNatAg-mini/eucalyptus_gongylocarpa","iNatAg-mini/eucalyptus_grandis","iNatAg-mini/eucalyptus_guilfoylei","iNatAg-mini/eucalyptus_gummifera","iNatAg-mini/eucalyptus_intertexta","iNatAg-mini/eucalyptus_jacksonii","iNatAg-mini/eucalyptus_johnstonii","iNatAg-mini/eucalyptus_kessellii","iNatAg-mini/eucalyptus_laophila","iNatAg-mini/eucalyptus_largiflorens","iNatAg-mini/eucalyptus_leucoxylon","iNatAg-mini/eucalyptus_longifolia","iNatAg-mini/eucalyptus_loxophleba","iNatAg-mini/eucalyptus_maculata","iNatAg-mini/eucalyptus_marginata","iNatAg-mini/eucalyptus_melliodora","iNatAg-mini/eucalyptus_microcarpa","iNatAg-mini/eucalyptus_microcorys","iNatAg-mini/eucalyptus_microtheca","iNatAg-mini/eucalyptus_mitchelliana","iNatAg-mini/eucalyptus_moluccana","iNatAg-mini/eucalyptus_muelleriana","iNatAg-mini/eucalyptus_nigrifunda","iNatAg-mini/eucalyptus_niphophila","iNatAg-mini/eucalyptus_nitens","iNatAg-mini/eucalyptus_obliqua","iNatAg-mini/eucalyptus_occidentalis","iNatAg-mini/eucalyptus_ochrophloia","iNatAg-mini/eucalyptus_oreades","iNatAg-mini/eucalyptus_paniculata","iNatAg-mini/eucalyptus_papuana","iNatAg-mini/eucalyptus_patens","iNatAg-mini/eucalyptus_pauciflora","iNatAg-mini/eucalyptus_pellita","iNatAg-mini/eucalyptus_phoenicea","iNatAg-mini/eucalyptus_pilularis","iNatAg-mini/eucalyptus_piperita","iNatAg-mini/eucalyptus_planchoniana","iNatAg-mini/eucalyptus_pleurocarpa","iNatAg-mini/eucalyptus_polyanthemos","iNatAg-mini/eucalyptus_populnea","iNatAg-mini/eucalyptus_propinqua","iNatAg-mini/eucalyptus_pulchella","iNatAg-mini/eucalyptus_punctata","iNatAg-mini/eucalyptus_pyrocarpa","iNatAg-mini/eucalyptus_quadrangulata","iNatAg-mini/eucalyptus_regnans","iNatAg-mini/eucalyptus_resinifera","iNatAg-mini/eucalyptus_robusta","iNatAg-mini/eucalyptus_rubida","iNatAg-mini/eucalyptus_rudis","iNatAg-mini/eucalyptus_saligna","iNatAg-mini/eucalyptus_salmonophloia","iNatAg-mini/eucalyptus_salubris","iNatAg-mini/eucalyptus_sargentii","iNatAg-mini/eucalyptus_scias","iNatAg-mini/eucalyptus_sideroxylon","iNatAg-mini/eucalyptus_sieberi","iNatAg-mini/eucalyptus_socialis","iNatAg-mini/eucalyptus_subcrenulata","iNatAg-mini/eucalyptus_tereticornis","iNatAg-mini/eucalyptus_thozetiana","iNatAg-mini/eucalyptus_transcontinentalis","iNatAg-mini/eucalyptus_trivalva","iNatAg-mini/eucalyptus_urnigera","iNatAg-mini/eucalyptus_urophylla","iNatAg-mini/eucalyptus_utilis","iNatAg-mini/eucalyptus_viminalis","iNatAg-mini/eucalyptus_wandoo","iNatAg-mini/eucalyptus_woollsiana","iNatAg-mini/eucryphia_lucida","iNatAg-mini/eugenia_aromatica","iNatAg-mini/eugenia_stipitata","iNatAg-mini/eugenia_uniflora","iNatAg-mini/euonymus_atropurpureus","iNatAg-mini/euonymus_europaeus","iNatAg-mini/euonymus_japonicus","iNatAg-mini/eupatorium_album","iNatAg-mini/eupatorium_altissimum","iNatAg-mini/eupatorium_cannabinum","iNatAg-mini/eupatorium_compositifolium","iNatAg-mini/eupatorium_hyssopifolium","iNatAg-mini/eupatorium_maculatum","iNatAg-mini/eupatorium_perfoliatum","iNatAg-mini/eupatorium_purpureum","iNatAg-mini/eupatorium_serotinum","iNatAg-mini/euphorbia_cyathophora","iNatAg-mini/euphorbia_cyparissias","iNatAg-mini/euphorbia_dendroides","iNatAg-mini/euphorbia_epicyparissias","iNatAg-mini/euphorbia_esula","iNatAg-mini/euphorbia_helioscopia","iNatAg-mini/euphorbia_heterophylla","iNatAg-mini/euphorbia_hirsuta","iNatAg-mini/euphorbia_hirta","iNatAg-mini/euphorbia_hyssopifolia","iNatAg-mini/euphorbia_lathyris","iNatAg-mini/euphorbia_lathyrus","iNatAg-mini/euphorbia_maculata","iNatAg-mini/euphorbia_marginata","iNatAg-mini/euphorbia_nutans","iNatAg-mini/euphorbia_peplis","iNatAg-mini/euphorbia_peplus","iNatAg-mini/euphorbia_platyphyllos","iNatAg-mini/euphorbia_prostata","iNatAg-mini/euphorbia_prostrata","iNatAg-mini/euphorbia_serphyllifolia","iNatAg-mini/euphorbia_serpyllifolia","iNatAg-mini/euphorbia_serrata","iNatAg-mini/euphorbia_serrulata","iNatAg-mini/euphorbia_spathulata","iNatAg-mini/euphorbia_terracina","iNatAg-mini/euphorbia_tirucalli","iNatAg-mini/euphorbia_vermiculata","iNatAg-mini/eurycoma_longifolia","iNatAg-mini/eusideroxylon_zwageri","iNatAg-mini/eustachys_paspaloides","iNatAg-mini/euterpe_edulis","iNatAg-mini/euterpe_oleracea","iNatAg-mini/euthamia_occidentalis","iNatAg-mini/evax_multicaulis","iNatAg-mini/evonymus_europaeus","iNatAg-mini/excoecaria_agallocha","iNatAg-mini/fagopyrum_esculentum","iNatAg-mini/fagopyrum_tataricum","iNatAg-mini/fagraea_fragrans","iNatAg-mini/fagus_grandifolia","iNatAg-mini/fagus_sylvatica","iNatAg-mini/faidherbia_albida","iNatAg-mini/faurea_saligna","iNatAg-mini/feijoa_sellowiana","iNatAg-mini/festuca_arundinacea","iNatAg-mini/festuca_gigantea","iNatAg-mini/festuca_idahoensis","iNatAg-mini/festuca_microstachys","iNatAg-mini/festuca_myuros","iNatAg-mini/festuca_ovina","iNatAg-mini/festuca_pratensis","iNatAg-mini/festuca_rubra","iNatAg-mini/festuca_scabra","iNatAg-mini/fibraurea_tinctoria","iNatAg-mini/ficus_abutilifolia","iNatAg-mini/ficus_auriculata","iNatAg-mini/ficus_benghalensis","iNatAg-mini/ficus_carica","iNatAg-mini/ficus_elastica","iNatAg-mini/ficus_glumosa","iNatAg-mini/ficus_macrophylla","iNatAg-mini/ficus_sycomorus","iNatAg-mini/ficus_thonningii","iNatAg-mini/filago_gallica","iNatAg-mini/filipendula_vulgaris","iNatAg-mini/flacourtia_indica","iNatAg-mini/flemingia_macrophylla","iNatAg-mini/flindersia_bourjotiana","iNatAg-mini/flindersia_brayleyana","iNatAg-mini/flindersia_pimenteliana","iNatAg-mini/foeniculum_vulgare","iNatAg-mini/fortunella_hindsii","iNatAg-mini/fortunella_japonica","iNatAg-mini/fortunella_margarita","iNatAg-mini/fragaria_ananassa","iNatAg-mini/fragaria_chiloensis","iNatAg-mini/fragaria_vesca","iNatAg-mini/fragaria_virginiana","iNatAg-mini/frangula_alnus","iNatAg-mini/fraxinus_americana","iNatAg-mini/fraxinus_excelsior","iNatAg-mini/frithia_humilis","iNatAg-mini/fuirena_simplex","iNatAg-mini/fumaria_capreolata","iNatAg-mini/fumaria_officinalis","iNatAg-mini/fumaria_parviflora","iNatAg-mini/gaillardia_pulchella","iNatAg-mini/galactia_marginalis","iNatAg-mini/galactia_striata","iNatAg-mini/galega_officinalis","iNatAg-mini/galega_orientalis","iNatAg-mini/galeopsis_ladanum","iNatAg-mini/galeopsis_tetrahit","iNatAg-mini/galinsoga_quadriradiata","iNatAg-mini/galium_aparine","iNatAg-mini/galium_mollugo","iNatAg-mini/galium_paniculatum","iNatAg-mini/galium_parisiense","iNatAg-mini/galium_saxatile","iNatAg-mini/galium_spurium","iNatAg-mini/galium_tricornutum","iNatAg-mini/galium_verum","iNatAg-mini/garcinia_dulcis","iNatAg-mini/garcinia_mangostana","iNatAg-mini/garcinia_multiflora","iNatAg-mini/garcinia_xanthochymus","iNatAg-mini/garuga_pinnata","iNatAg-mini/gaultheria_procumbens","iNatAg-mini/gaura_biennis","iNatAg-mini/geissois_benthamii","iNatAg-mini/genipa_americana","iNatAg-mini/genista_canariensis","iNatAg-mini/genista_tinctoria","iNatAg-mini/gentiana_acaulis","iNatAg-mini/gentiana_lutea","iNatAg-mini/geranium_carolinianum","iNatAg-mini/geranium_dissectum","iNatAg-mini/geranium_molle","iNatAg-mini/geranium_pratense","iNatAg-mini/geranium_pusillum","iNatAg-mini/geranium_robertianum","iNatAg-mini/girardinia_diversifolia","iNatAg-mini/glechoma_hederacea","iNatAg-mini/glecoma_hederacea","iNatAg-mini/gleditsia_triacanthos","iNatAg-mini/gliricidia_sepium","iNatAg-mini/globularia_vulgaris","iNatAg-mini/glyceria_fluitans","iNatAg-mini/glyceria_septentrionalis","iNatAg-mini/glycine_max","iNatAg-mini/glycyrrhiza_glabra","iNatAg-mini/glycyrrhiza_lepidota","iNatAg-mini/gmelina_arborea","iNatAg-mini/gmelina_leichhardtii","iNatAg-mini/gnaphalium_calviceps","iNatAg-mini/gnaphalium_luteo-album","iNatAg-mini/gnaphalium_luteoalbum","iNatAg-mini/gnaphalium_palustre","iNatAg-mini/gnaphalium_pensylvanicum","iNatAg-mini/gnaphalium_purpureum","iNatAg-mini/gnaphalium_uliginosum","iNatAg-mini/gossypium_barbadense","iNatAg-mini/gossypium_herbaceum","iNatAg-mini/gossypium_hirsutum","iNatAg-mini/grevillea_parallela","iNatAg-mini/grevillea_robusta","iNatAg-mini/grewia_asiatica","iNatAg-mini/grewia_bicolor","iNatAg-mini/grewia_tiliifolia","iNatAg-mini/guaiacum_officinale","iNatAg-mini/guaiacum_sanctum","iNatAg-mini/guazuma_ulmifolia","iNatAg-mini/guizotia_abyssinica","iNatAg-mini/gunnera_tinctoria","iNatAg-mini/gypsophila_paniculata","iNatAg-mini/hagenia_abyssinica","iNatAg-mini/hamamelis_virginiana","iNatAg-mini/hardwickia_binata","iNatAg-mini/harpagophytum_procumbens","iNatAg-mini/harpochloa_falx","iNatAg-mini/harungana_madagascariensis","iNatAg-mini/hedera_helix","iNatAg-mini/hedysarum_coronarium","iNatAg-mini/hedysarum_pallidum","iNatAg-mini/hedysarum_spinosissimum","iNatAg-mini/helenium_autumnale","iNatAg-mini/helenium_tenuifolium","iNatAg-mini/helianthus_annus","iNatAg-mini/helianthus_annuus","iNatAg-mini/helianthus_ciliaris","iNatAg-mini/helianthus_pauciflorus","iNatAg-mini/helianthus_petiolaris","iNatAg-mini/helianthus_tuberosus","iNatAg-mini/helictotrichon_turgidulum","iNatAg-mini/heliotropium_amplexicaule","iNatAg-mini/heliotropium_curassavicum","iNatAg-mini/heliotropium_europaeum","iNatAg-mini/hemarthria_altissima","iNatAg-mini/hemizonia_congesta","iNatAg-mini/heracleum_sphondylium","iNatAg-mini/heritiera_littoralis","iNatAg-mini/heteropogon_contortus","iNatAg-mini/heterotheca_grandiflora","iNatAg-mini/heuchera_mexicana","iNatAg-mini/hevea_brasiliensis","iNatAg-mini/hibiscus_cannabinus","iNatAg-mini/hibiscus_sabdariffa","iNatAg-mini/hibiscus_syriacus","iNatAg-mini/hibiscus_tiliaceus","iNatAg-mini/hibiscus_tilliaceus","iNatAg-mini/hieracium_aurantiacum","iNatAg-mini/hieracium_gronovii","iNatAg-mini/hieracium_lachenalii","iNatAg-mini/hieracium_laevigatum","iNatAg-mini/hieracium_murorum","iNatAg-mini/hieracium_pilosella","iNatAg-mini/hieracium_piloselloides","iNatAg-mini/hieracium_umbellatum","iNatAg-mini/hieracium_venosum","iNatAg-mini/hieracium_vulgatum","iNatAg-mini/hierochloe_odorata","iNatAg-mini/hilaria_jamesii","iNatAg-mini/hilaria_mutica","iNatAg-mini/hippophae_rhamnoides","iNatAg-mini/hippophae_salicifolia","iNatAg-mini/hippuris_vulgaris","iNatAg-mini/holcus_lanatus","iNatAg-mini/holcus_mollis","iNatAg-mini/hopea_odorata","iNatAg-mini/hopea_parviflora","iNatAg-mini/hopea_wightiana","iNatAg-mini/hordeum_brachyantherum","iNatAg-mini/hordeum_brevisubulatum","iNatAg-mini/hordeum_bulbosum","iNatAg-mini/hordeum_distichon","iNatAg-mini/hordeum_geniculatum","iNatAg-mini/hordeum_jubatum","iNatAg-mini/hordeum_murinum","iNatAg-mini/hordeum_vulgare","iNatAg-mini/houstonia_caerulea","iNatAg-mini/humulus_lupulus","iNatAg-mini/hydnocarpus_alpina","iNatAg-mini/hydrocotyle_americana","iNatAg-mini/hydrocotyle_mexicana","iNatAg-mini/hydrocotyle_ranunculoides","iNatAg-mini/hydrocotyle_sibthorpioides","iNatAg-mini/hydrocotyle_umbellata","iNatAg-mini/hydrocotyle_verticillata","iNatAg-mini/hydrolea_uniflora","iNatAg-mini/hylocereus_undatus","iNatAg-mini/hymenaea_courbaril","iNatAg-mini/hymenopappus_scabiosaeus","iNatAg-mini/hymenoxys_odorata","iNatAg-mini/hyosciamus_niger","iNatAg-mini/hyoscyamus_niger","iNatAg-mini/hyparrhenia_dregeana","iNatAg-mini/hyparrhenia_filipendula","iNatAg-mini/hyparrhenia_hirta","iNatAg-mini/hyparrhenia_rufa","iNatAg-mini/hypericum_canadense","iNatAg-mini/hypericum_canariense","iNatAg-mini/hypericum_mutilum","iNatAg-mini/hypericum_mutlium","iNatAg-mini/hypericum_perforatum","iNatAg-mini/hypericum_prolificum","iNatAg-mini/hypericum_punctatum","iNatAg-mini/hyperthelia_dissoluta","iNatAg-mini/hyphaene_compressa","iNatAg-mini/hyphaene_thebaica","iNatAg-mini/hypochaeris_glabra","iNatAg-mini/hypochaeris_radicata","iNatAg-mini/hypoxis_hemerocallidea","iNatAg-mini/hyssopus_officinalis","iNatAg-mini/ilex_aquifolium","iNatAg-mini/ilex_dipyrena","iNatAg-mini/ilex_paraguariensis","iNatAg-mini/impatiens_balsamina","iNatAg-mini/impatiens_parviflora","iNatAg-mini/imperata_brevifolia","iNatAg-mini/imperata_cylindrica","iNatAg-mini/indigofera_arrecta","iNatAg-mini/indigofera_hirsuta","iNatAg-mini/indigofera_oblongifolia","iNatAg-mini/indigofera_schimperi","iNatAg-mini/indigofera_spicata","iNatAg-mini/indigofera_suffruticosa","iNatAg-mini/indigofera_tinctoria","iNatAg-mini/inga_edulis","iNatAg-mini/inga_vera","iNatAg-mini/intsia_bijuga","iNatAg-mini/inula_britannica","iNatAg-mini/inula_helenium","iNatAg-mini/ipomoea_alba","iNatAg-mini/ipomoea_aquatica","iNatAg-mini/ipomoea_batatas","iNatAg-mini/ipomoea_coccinea","iNatAg-mini/ipomoea_hederifolia","iNatAg-mini/ipomoea_lacunosa","iNatAg-mini/ipomoea_quamoclit","iNatAg-mini/ipomoea_tricolor","iNatAg-mini/ipomoea_triloba","iNatAg-mini/ipomoea_turbinata","iNatAg-mini/iris_germanica","iNatAg-mini/iris_missouriensis","iNatAg-mini/iris_pseudacorus","iNatAg-mini/iris_pseudoacorus","iNatAg-mini/iris_virginica","iNatAg-mini/isatis_tinctoria","iNatAg-mini/ischaemum_ciliare","iNatAg-mini/ischaemum_muticum","iNatAg-mini/ischaemum_rugosum","iNatAg-mini/iseilema_vaginiflorum","iNatAg-mini/iva_angustifolia","iNatAg-mini/iva_annua","iNatAg-mini/jacaranda_copaia","iNatAg-mini/jacaranda_mimosifolia","iNatAg-mini/jatropha_curcas","iNatAg-mini/jatropha_gossypifolia","iNatAg-mini/jatropha_gossypiifolia","iNatAg-mini/juglans_hindsii","iNatAg-mini/juglans_nigra","iNatAg-mini/juglans_regia","iNatAg-mini/juncus_bufonius","iNatAg-mini/juncus_effusus","iNatAg-mini/juniperus_communis","iNatAg-mini/juniperus_occidentalis","iNatAg-mini/juniperus_pinchotii","iNatAg-mini/juniperus_procera","iNatAg-mini/juniperus_sabina","iNatAg-mini/justicia_adhatoda","iNatAg-mini/kalmia_angustifolia","iNatAg-mini/khaya_anthotheca","iNatAg-mini/khaya_senegalensis","iNatAg-mini/kigelia_pinnata","iNatAg-mini/kyllinga_gracillima","iNatAg-mini/kyllinga_odorata","iNatAg-mini/lablab_purpureus","iNatAg-mini/lactuca_canadensis","iNatAg-mini/lactuca_indica","iNatAg-mini/lactuca_saligna","iNatAg-mini/lactuca_serriola","iNatAg-mini/lactuca_virosa","iNatAg-mini/lagascea_mollis","iNatAg-mini/lagenaria_siceraria","iNatAg-mini/lagerstroemia_flos-reginae","iNatAg-mini/lagerstroemia_lanceolata","iNatAg-mini/lagerstroemia_parviflora","iNatAg-mini/laguncularia_racemosa","iNatAg-mini/lamium_album","iNatAg-mini/lamium_amplexicaule","iNatAg-mini/lamium_maculatum","iNatAg-mini/lamium_purpureum","iNatAg-mini/lannea_coromandelica","iNatAg-mini/lannea_edulis","iNatAg-mini/lansium_domesticum","iNatAg-mini/lantana_camara","iNatAg-mini/lapsana_communis","iNatAg-mini/larix_decidua","iNatAg-mini/larrea_divaricata","iNatAg-mini/lathyrus_angulatus","iNatAg-mini/lathyrus_cicera","iNatAg-mini/lathyrus_hirsutus","iNatAg-mini/lathyrus_latifolius","iNatAg-mini/lathyrus_ochrus","iNatAg-mini/lathyrus_odoratus","iNatAg-mini/lathyrus_palustris","iNatAg-mini/lathyrus_pratensis","iNatAg-mini/lathyrus_pubescens","iNatAg-mini/lathyrus_sativus","iNatAg-mini/lathyrus_tingitanus","iNatAg-mini/lathyrus_tuberosus","iNatAg-mini/laurus_nobilis","iNatAg-mini/lavandula_angustifolia","iNatAg-mini/lavandula_dentata","iNatAg-mini/lavandula_latifolia","iNatAg-mini/lawsonia_inermis","iNatAg-mini/ledum_groenlandicum","iNatAg-mini/leersia_hexandra","iNatAg-mini/leersia_lenticularis","iNatAg-mini/lemna_aequinoctialis","iNatAg-mini/lemna_gibba","iNatAg-mini/lemna_minor","iNatAg-mini/lemna_trisulca","iNatAg-mini/lens_culinaris","iNatAg-mini/leontodon_autumnale","iNatAg-mini/leontodon_autumnalis","iNatAg-mini/leontodon_hirtus","iNatAg-mini/leontodon_saxatilis","iNatAg-mini/leontopodium_alpinum","iNatAg-mini/leonurus_cardiaca","iNatAg-mini/leonurus_marrubiastrum","iNatAg-mini/leonurus_sibericus","iNatAg-mini/leonurus_sibiricus","iNatAg-mini/lepidium_austrinum","iNatAg-mini/lepidium_chalepense","iNatAg-mini/lepidium_didymum","iNatAg-mini/lepidium_draba","iNatAg-mini/lepidium_lasiocarpum","iNatAg-mini/lepidium_latifolium","iNatAg-mini/lepidium_perfoliatum","iNatAg-mini/lepidium_ruderale","iNatAg-mini/lepidium_sativum","iNatAg-mini/lepidium_virginicum","iNatAg-mini/leptochloa_chinensis","iNatAg-mini/leptochloa_fusca","iNatAg-mini/leptochloa_nealleyi","iNatAg-mini/lespedeza_cuneata","iNatAg-mini/lespedeza_striata","iNatAg-mini/lesquerella_fendleri","iNatAg-mini/leucaena_diversifolia","iNatAg-mini/leucaena_leucocephala","iNatAg-mini/leucanthemum_vulgare","iNatAg-mini/leucojum_aestivum","iNatAg-mini/levisticum_officinale","iNatAg-mini/liatris_mucronata","iNatAg-mini/licuala_ramsayi","iNatAg-mini/ligustrum_ovalifolium","iNatAg-mini/ligustrum_vulgare","iNatAg-mini/lilium_canadense","iNatAg-mini/lilium_candidum","iNatAg-mini/limnanthes_alba","iNatAg-mini/limnophila_sessiliflora","iNatAg-mini/linaria_vulgaris","iNatAg-mini/lindernia_grandiflora","iNatAg-mini/linum_usitatissimum","iNatAg-mini/lippia_alba","iNatAg-mini/liquidambar_styraciflua","iNatAg-mini/liriodendron_tulipifera","iNatAg-mini/litchi_chinensis","iNatAg-mini/lithospermum_arvense","iNatAg-mini/lithospermum_officinale","iNatAg-mini/livistona_australis","iNatAg-mini/lobelia_inflata","iNatAg-mini/lobelia_siphilitica","iNatAg-mini/lolium_multiflorum","iNatAg-mini/lolium_perenne","iNatAg-mini/lolium_rigidum","iNatAg-mini/lolium_temulentum","iNatAg-mini/lonchocarpus_laxiflorus","iNatAg-mini/lonicera_caerulea","iNatAg-mini/lonicera_caprifolium","iNatAg-mini/lonicera_periclymenum","iNatAg-mini/lonicera_sempervirens","iNatAg-mini/lonicera_tartarica","iNatAg-mini/lonicera_tatarica","iNatAg-mini/lonicera_xylosteum","iNatAg-mini/lophostemon_suaveolens","iNatAg-mini/lotus_corniculatus","iNatAg-mini/lotus_creticus","iNatAg-mini/lotus_edulis","iNatAg-mini/lotus_halophilus","iNatAg-mini/lotus_parviflorus","iNatAg-mini/lotus_tenuis","iNatAg-mini/lotus_uliginosus","iNatAg-mini/loudetia_simplex","iNatAg-mini/ludwigia_adscendens","iNatAg-mini/ludwigia_alternifolia","iNatAg-mini/luffa_acutangula","iNatAg-mini/luffa_cylindrica","iNatAg-mini/lumnitzera_littorea","iNatAg-mini/lumnitzera_racemosa","iNatAg-mini/lunaria_annua","iNatAg-mini/lupinus_albus","iNatAg-mini/lupinus_angustifolius","iNatAg-mini/lupinus_arboreus","iNatAg-mini/lupinus_cosentinii","iNatAg-mini/lupinus_luteus","iNatAg-mini/lupinus_mutabilis","iNatAg-mini/lupinus_pilosus","iNatAg-mini/lychnis_chalcedonica","iNatAg-mini/lychnis_flos-cuculi","iNatAg-mini/lychnis_viscaria","iNatAg-mini/lycium_barbarum","iNatAg-mini/lycium_berlandieri","iNatAg-mini/lycium_chinense","iNatAg-mini/lycium_ferocissimum","iNatAg-mini/lycium_halimifolium","iNatAg-mini/lycopersicon_esculentum","iNatAg-mini/lycopodium_clavatum","iNatAg-mini/lycopus_europaeus","iNatAg-mini/lysimachia_ciliata","iNatAg-mini/lysimachia_nummularia","iNatAg-mini/lysimachia_punctata","iNatAg-mini/lysimachia_vulgaris","iNatAg-mini/lythrum_hyssopifolia","iNatAg-mini/lythrum_salicaria","iNatAg-mini/lythrum_virgatum","iNatAg-mini/macadamia_integrifolia","iNatAg-mini/macadamia_tetraphylla","iNatAg-mini/macaranga_tanarius","iNatAg-mini/macroptilium_atropurpureum","iNatAg-mini/macroptilium_erythroloma","iNatAg-mini/macroptilium_gracile","iNatAg-mini/macroptilium_lathyroides","iNatAg-mini/macroptilium_longepedunculatum","iNatAg-mini/macrotyloma_axillare","iNatAg-mini/maesopsis_eminii","iNatAg-mini/maianthemum_canadense","iNatAg-mini/majorana_hortensis","iNatAg-mini/malachra_alceifolia","iNatAg-mini/mallotus_philippensis","iNatAg-mini/malpighia_glabra","iNatAg-mini/malus_domestica","iNatAg-mini/malus_sylvestris","iNatAg-mini/malva_alcea","iNatAg-mini/malva_moschata","iNatAg-mini/malva_nicaeensis","iNatAg-mini/malva_parviflora","iNatAg-mini/malva_pusilla","iNatAg-mini/malva_rotundifolia","iNatAg-mini/malva_silvestris","iNatAg-mini/malva_sylvestris","iNatAg-mini/mammea_americana","iNatAg-mini/mangifera_indica","iNatAg-mini/manihot_esculenta","iNatAg-mini/manilkara_zapota","iNatAg-mini/maranta_arundinacea","iNatAg-mini/markhamia_lutea","iNatAg-mini/marrubium_vulgare","iNatAg-mini/marsilea_quadrifolia","iNatAg-mini/matricaria_chamomila","iNatAg-mini/matricaria_chamomilla","iNatAg-mini/matricaria_discoidea","iNatAg-mini/matricaria_perforata","iNatAg-mini/matricaria_recutita","iNatAg-mini/mauritia_flexuosa","iNatAg-mini/mayaca_fluviatilis","iNatAg-mini/medicago_arabica","iNatAg-mini/medicago_falcata","iNatAg-mini/medicago_intertexta","iNatAg-mini/medicago_laciniata","iNatAg-mini/medicago_littoralis","iNatAg-mini/medicago_lupulina","iNatAg-mini/medicago_marina","iNatAg-mini/medicago_minima","iNatAg-mini/medicago_orbicularis","iNatAg-mini/medicago_polymorpha","iNatAg-mini/medicago_rigidula","iNatAg-mini/medicago_rugosa","iNatAg-mini/medicago_sativa","iNatAg-mini/medicago_scutellata","iNatAg-mini/medicago_tornata","iNatAg-mini/medicago_truncatula","iNatAg-mini/medicago_turbinata","iNatAg-mini/melaleuca_bracteata","iNatAg-mini/melaleuca_cajuputi","iNatAg-mini/melaleuca_dealbata","iNatAg-mini/melaleuca_lanceolata","iNatAg-mini/melaleuca_leucadendron","iNatAg-mini/melaleuca_nervosa","iNatAg-mini/melaleuca_quinquenervia","iNatAg-mini/melaleuca_viridiflora","iNatAg-mini/melampyrum_lineare","iNatAg-mini/melastoma_malabathricum","iNatAg-mini/melastoma_melabathricum","iNatAg-mini/melia_azedarach","iNatAg-mini/melica_decumbens","iNatAg-mini/melicoccus_bijugatus","iNatAg-mini/melilotus_albus","iNatAg-mini/melilotus_indica","iNatAg-mini/melilotus_officinalis","iNatAg-mini/melilotus_suaveolens","iNatAg-mini/melinis_minutiflora","iNatAg-mini/melissa_officinalis","iNatAg-mini/melochia_corchorifolia","iNatAg-mini/melothria_pendula","iNatAg-mini/mentha_arvensis","iNatAg-mini/mentha_longifolia","iNatAg-mini/mentha_piperita","iNatAg-mini/mentha_pulegium","iNatAg-mini/mentha_rotundifolia","iNatAg-mini/mentha_spicata","iNatAg-mini/menyanthes_trifoliata","iNatAg-mini/mercurialis_annua","iNatAg-mini/mesembryanthemum_cristallinum","iNatAg-mini/mesembryanthemum_noctiflorum","iNatAg-mini/mespilus_germanica","iNatAg-mini/mesua_ferrea","iNatAg-mini/metroxylon_sagu","iNatAg-mini/michelia_champaca","iNatAg-mini/microstegium_ciliatum","iNatAg-mini/miliusa_velutina","iNatAg-mini/mimosa_casta","iNatAg-mini/mimosa_dutrae","iNatAg-mini/mimosa_pigra","iNatAg-mini/mimosa_pudica","iNatAg-mini/mirabilis_jalapa","iNatAg-mini/molinia_caerulea","iNatAg-mini/mollugo_verticillata","iNatAg-mini/momordica_charantia","iNatAg-mini/momordica_cochinchinensis","iNatAg-mini/monarda_fistulosa","iNatAg-mini/monarda_punctata","iNatAg-mini/monochoria_hastata","iNatAg-mini/monochoria_vaginalis","iNatAg-mini/monocymbium_ceresiiforme","iNatAg-mini/monstera_deliciosa","iNatAg-mini/montanoa_hibiscifolia","iNatAg-mini/morinda_citrifolia","iNatAg-mini/moringa_oleifera","iNatAg-mini/morus_alba","iNatAg-mini/morus_nigra","iNatAg-mini/morus_rubra","iNatAg-mini/mucuna_pruriens","iNatAg-mini/muntingia_calabura","iNatAg-mini/murraya_koenigii","iNatAg-mini/musa_acuminata","iNatAg-mini/musa_acuminata_×_balbisiana","iNatAg-mini/musa_balbisiana","iNatAg-mini/musa_sapientium","iNatAg-mini/musanga_cecropioides","iNatAg-mini/muscari_comosum","iNatAg-mini/myosotis_alpestris","iNatAg-mini/myosurus_minimus","iNatAg-mini/myrica_cerifera","iNatAg-mini/myriophyllum_heterophyllum","iNatAg-mini/myriophyllum_implicatum","iNatAg-mini/myriophyllum_sibiricum","iNatAg-mini/myriophyllum_spicatum","iNatAg-mini/myriophyllum_verticillatum","iNatAg-mini/myristica_fragrans","iNatAg-mini/myroxylon_balsamum","iNatAg-mini/myrsine_africana","iNatAg-mini/myrtus_communis","iNatAg-mini/nardus_stricta","iNatAg-mini/nasturtium_officinale","iNatAg-mini/nauclea_orientalis","iNatAg-mini/nelumbo_nucifera","iNatAg-mini/neofabricia_myrtifolia","iNatAg-mini/neoglaziovia_variegata","iNatAg-mini/neonotonia_wightii","iNatAg-mini/nepeta_cataria","iNatAg-mini/nephelium_lappaceum","iNatAg-mini/nephelium_mutabile","iNatAg-mini/nerium_oleander","iNatAg-mini/nicotiana_quadrivalvis","iNatAg-mini/nicotiana_rustica","iNatAg-mini/nicotiana_trigonophylla","iNatAg-mini/nigella_sativa","iNatAg-mini/nothofagus_cunninghamii","iNatAg-mini/nothofagus_moorei","iNatAg-mini/nothoscordum_borbonicum","iNatAg-mini/nuphar_advena","iNatAg-mini/nuphar_lutea","iNatAg-mini/nymphaea_alba","iNatAg-mini/nypa_fruticans","iNatAg-mini/ochroma_pyramidale","iNatAg-mini/ocimum_americanum","iNatAg-mini/ocimum_basilicum","iNatAg-mini/ocimum_tenuiflorum","iNatAg-mini/octomeles_sumatrana","iNatAg-mini/oenanthe_javanica","iNatAg-mini/oenothera_albicaulis","iNatAg-mini/oenothera_biennis","iNatAg-mini/oenothera_parviflora","iNatAg-mini/oenothera_perennis","iNatAg-mini/oldenlandia_corymbosa","iNatAg-mini/olea_africana","iNatAg-mini/olea_capensis","iNatAg-mini/olea_europaea","iNatAg-mini/olea_europea","iNatAg-mini/oncosperma_tigillarium","iNatAg-mini/onobrychis_viciifolia","iNatAg-mini/ononis_alopecuroides","iNatAg-mini/ononis_spinosa","iNatAg-mini/onopordum_acanthium","iNatAg-mini/onopordum_illyricum","iNatAg-mini/onosmodium_discolor","iNatAg-mini/opuntia_ficus-indica","iNatAg-mini/opuntia_leptocaulis","iNatAg-mini/opuntia_polyacantha","iNatAg-mini/opuntia_polycantha","iNatAg-mini/origanum_majorana","iNatAg-mini/origanum_onites","iNatAg-mini/origanum_vulgare","iNatAg-mini/ornithogalum_nutans","iNatAg-mini/ornithogalum_umbellatum","iNatAg-mini/ornithopus_compressus","iNatAg-mini/ornithopus_sativus","iNatAg-mini/orobanche_flava","iNatAg-mini/orobanche_ludoviciana","iNatAg-mini/orobanche_minor","iNatAg-mini/orobanche_ramosa","iNatAg-mini/orontium_aquaticum","iNatAg-mini/orthosiphon_aristatus","iNatAg-mini/oryza_sativa","iNatAg-mini/oryzopsis_holciformis","iNatAg-mini/oryzopsis_miliacea","iNatAg-mini/osmorhiza_berteroi","iNatAg-mini/osmunda_regalis","iNatAg-mini/ottochloa_nodosa","iNatAg-mini/oxalis_acetosella","iNatAg-mini/oxalis_corniculata","iNatAg-mini/oxalis_pes-caprae","iNatAg-mini/oxalis_pescaprae","iNatAg-mini/oxalis_stricta","iNatAg-mini/oxalis_tuberosa","iNatAg-mini/oxytropis_lambertii","iNatAg-mini/pachyrhizus_erosus","iNatAg-mini/paederia_cruddasiana","iNatAg-mini/paederia_foetida","iNatAg-mini/paeonia_officinalis","iNatAg-mini/panax_ginseng","iNatAg-mini/panax_quinquefolius","iNatAg-mini/pangium_edule","iNatAg-mini/panicum_antidotale","iNatAg-mini/panicum_capillare","iNatAg-mini/panicum_coloratum","iNatAg-mini/panicum_ecklonii","iNatAg-mini/panicum_gattingeri","iNatAg-mini/panicum_maximum","iNatAg-mini/panicum_miliaceum","iNatAg-mini/panicum_natalense","iNatAg-mini/panicum_obtusum","iNatAg-mini/panicum_pilosum","iNatAg-mini/panicum_racemosum","iNatAg-mini/panicum_repens","iNatAg-mini/panicum_sphaerocarpon","iNatAg-mini/panicum_trichocladum","iNatAg-mini/panicum_turgidum","iNatAg-mini/panicum_virgatum","iNatAg-mini/papaver_argemone","iNatAg-mini/papaver_bracteatum","iNatAg-mini/papaver_dubium","iNatAg-mini/papaver_rhoeas","iNatAg-mini/papaver_somniferum","iNatAg-mini/parietaria_floridana","iNatAg-mini/parietaria_officinalis","iNatAg-mini/parinari_curatellifolia","iNatAg-mini/parkia_biglobosa","iNatAg-mini/parkia_speciosa","iNatAg-mini/parkinsonia_aculeata","iNatAg-mini/parnassia_palustris","iNatAg-mini/parsonsia_latifolia","iNatAg-mini/parthenium_argentatum","iNatAg-mini/parthenium_hysterophorus","iNatAg-mini/paspalum_conjugatum","iNatAg-mini/paspalum_dilatatum","iNatAg-mini/paspalum_distichum","iNatAg-mini/paspalum_nicorae","iNatAg-mini/paspalum_notatum","iNatAg-mini/paspalum_plicatulum","iNatAg-mini/paspalum_scrobiculatum","iNatAg-mini/paspalum_separatum","iNatAg-mini/paspalum_urvillei","iNatAg-mini/paspalum_vaginatum","iNatAg-mini/passiflora_bicornis","iNatAg-mini/passiflora_edulis","iNatAg-mini/passiflora_foetida","iNatAg-mini/passiflora_incarnata","iNatAg-mini/passiflora_laurifolia","iNatAg-mini/passiflora_ligularis","iNatAg-mini/passiflora_lutea","iNatAg-mini/passiflora_mollissima","iNatAg-mini/passiflora_quadrangularis","iNatAg-mini/passiflora_suberosa","iNatAg-mini/pastinaca_sativa","iNatAg-mini/paullinia_cupana","iNatAg-mini/paulownia_tomentosa","iNatAg-mini/peganum_harmala","iNatAg-mini/pelargonium_graveolens","iNatAg-mini/peltandra_sagittifolia","iNatAg-mini/peltandra_virginica","iNatAg-mini/peltophorum_africanum","iNatAg-mini/peltophorum_pterocarpum","iNatAg-mini/pennisetum_clandestinum","iNatAg-mini/pennisetum_glaucum","iNatAg-mini/pennisetum_macrourum","iNatAg-mini/pennisetum_pedicellatum","iNatAg-mini/pennisetum_polystachyon","iNatAg-mini/pennisetum_purpureum","iNatAg-mini/pennisetum_setaceum","iNatAg-mini/pennisetum_villosum","iNatAg-mini/perilla_frutescens","iNatAg-mini/persea_americana","iNatAg-mini/persicaria_maculosa","iNatAg-mini/persoonia_falcata","iNatAg-mini/petalostigma_pubescens","iNatAg-mini/petasites_albus","iNatAg-mini/petasites_hybridus","iNatAg-mini/petroselinum_crispum","iNatAg-mini/petunia_parviflora","iNatAg-mini/peucedanum_ostruthium","iNatAg-mini/phalaris_aquatica","iNatAg-mini/phalaris_arundinacea","iNatAg-mini/phalaris_arundinaceae","iNatAg-mini/phalaris_brachystachys","iNatAg-mini/phalaris_canariensis","iNatAg-mini/phalaris_caroliniana","iNatAg-mini/phalaris_coerulescens","iNatAg-mini/phalaris_paradoxa","iNatAg-mini/phaseolus_acutifolius","iNatAg-mini/phaseolus_coccineus","iNatAg-mini/phaseolus_lunatus","iNatAg-mini/phaseolus_vulgaris","iNatAg-mini/phleum_alpinum","iNatAg-mini/phleum_pratense","iNatAg-mini/phoenix_dactylifera","iNatAg-mini/phoenix_reclinata","iNatAg-mini/phoenix_sylvestris","iNatAg-mini/phormium_tenax","iNatAg-mini/phragmites_australis","iNatAg-mini/phragmites_communis","iNatAg-mini/phragmites_karka","iNatAg-mini/phyllanthus_niruri","iNatAg-mini/phyllanthus_tenellus","iNatAg-mini/phyllanthus_urinaria","iNatAg-mini/phyllocladus_aspleniifolius","iNatAg-mini/physalis_alkekengi","iNatAg-mini/physalis_angulata","iNatAg-mini/physalis_heterophylla","iNatAg-mini/physalis_lancifolia","iNatAg-mini/physalis_peruviana","iNatAg-mini/physalis_philadelphica","iNatAg-mini/physalis_pubescens","iNatAg-mini/physalis_virginiana","iNatAg-mini/physalis_viscosa","iNatAg-mini/phytolacca_acinosa","iNatAg-mini/phytolacca_americana","iNatAg-mini/phytolacca_dioica","iNatAg-mini/picea_abies","iNatAg-mini/picea_omorica","iNatAg-mini/picea_omorika","iNatAg-mini/picris_echioides","iNatAg-mini/picris_hieracioides","iNatAg-mini/piliostigma_reticulatum","iNatAg-mini/piliostigma_thonningii","iNatAg-mini/pimenta_dioica","iNatAg-mini/pimenta_racemosa","iNatAg-mini/pimpinella_anisum","iNatAg-mini/pimpinella_saxifraga","iNatAg-mini/pinguicula_vulgaris","iNatAg-mini/pinus_ayacahuite","iNatAg-mini/pinus_brutia","iNatAg-mini/pinus_canariensis","iNatAg-mini/pinus_caribaea","iNatAg-mini/pinus_chiapensis","iNatAg-mini/pinus_douglasiana","iNatAg-mini/pinus_durangensis","iNatAg-mini/pinus_greggii","iNatAg-mini/pinus_halepensis","iNatAg-mini/pinus_hartwegii","iNatAg-mini/pinus_kesiya","iNatAg-mini/pinus_merkusii","iNatAg-mini/pinus_montezumae","iNatAg-mini/pinus_mugo","iNatAg-mini/pinus_occidentalis","iNatAg-mini/pinus_oocarpa","iNatAg-mini/pinus_palustris","iNatAg-mini/pinus_patula","iNatAg-mini/pinus_pinaster","iNatAg-mini/pinus_pinea","iNatAg-mini/pinus_ponderosa","iNatAg-mini/pinus_pseudostrobus","iNatAg-mini/pinus_radiata","iNatAg-mini/pinus_roxburghii","iNatAg-mini/pinus_sylvestris","iNatAg-mini/pinus_tabuliformis","iNatAg-mini/pinus_taeda","iNatAg-mini/pinus_teocote","iNatAg-mini/piper_aduncum","iNatAg-mini/piper_betle","iNatAg-mini/piper_longum","iNatAg-mini/piper_methysticum","iNatAg-mini/piper_nigrum","iNatAg-mini/pistacia_atlantica","iNatAg-mini/pistacia_lentiscus","iNatAg-mini/pistacia_vera","iNatAg-mini/pistia_stratiotes","iNatAg-mini/pisum_sativum","iNatAg-mini/pithecellobium_dulce","iNatAg-mini/pittosporum_resiniferum","iNatAg-mini/pittosporum_undulatum","iNatAg-mini/plagiobothrys_canescens","iNatAg-mini/plantago_coronopus","iNatAg-mini/plantago_heterophylla","iNatAg-mini/plantago_indica","iNatAg-mini/plantago_lanceolata","iNatAg-mini/plantago_major","iNatAg-mini/plantago_media","iNatAg-mini/plantago_ovata","iNatAg-mini/plantago_psyllium","iNatAg-mini/plantago_virginica","iNatAg-mini/platanus_orientalis","iNatAg-mini/poa_alpina","iNatAg-mini/poa_annua","iNatAg-mini/poa_bulbosa","iNatAg-mini/poa_compressa","iNatAg-mini/poa_cuspidata","iNatAg-mini/poa_fendleriana","iNatAg-mini/poa_nemoralis","iNatAg-mini/poa_pratensis","iNatAg-mini/poa_trivialis","iNatAg-mini/podocarpus_elatus","iNatAg-mini/podocarpus_falcatus","iNatAg-mini/poeciloneuron_indicum","iNatAg-mini/pogostemon_cablin","iNatAg-mini/polemonium_caeruleum","iNatAg-mini/polemonium_micranthum","iNatAg-mini/polyalthia_fragrans","iNatAg-mini/polycarpon_tetraphyllum","iNatAg-mini/polygonatum_orientale","iNatAg-mini/polygonum_achoreum","iNatAg-mini/polygonum_arenastrum","iNatAg-mini/polygonum_aviculare","iNatAg-mini/polygonum_bistorta","iNatAg-mini/polygonum_convolvulus","iNatAg-mini/polygonum_equisetiforme","iNatAg-mini/polygonum_erectum","iNatAg-mini/polygonum_hydropiper","iNatAg-mini/polygonum_hydropiperoides","iNatAg-mini/polygonum_lapathifolium","iNatAg-mini/polygonum_orientale","iNatAg-mini/polygonum_pensylvanicum","iNatAg-mini/polygonum_perfoliatum","iNatAg-mini/polygonum_persicaria","iNatAg-mini/polygonum_punctatum","iNatAg-mini/polygonum_ramosissimum","iNatAg-mini/polygonum_scandens","iNatAg-mini/polymnia_sonchifolia","iNatAg-mini/polypodium_vulgare","iNatAg-mini/polypogon_interruptus","iNatAg-mini/polypremum_procumbens","iNatAg-mini/polyscias_fulva","iNatAg-mini/polytrichum_commune","iNatAg-mini/pongamia_pinnata","iNatAg-mini/pontederia_cordata","iNatAg-mini/pontederia_rotundifolia","iNatAg-mini/populus_balsamifera","iNatAg-mini/populus_ciliata","iNatAg-mini/populus_deltoides","iNatAg-mini/populus_euphratica","iNatAg-mini/populus_simonii","iNatAg-mini/portulaca_oleracea","iNatAg-mini/portulaca_pilosa","iNatAg-mini/portulaca_pilosa_pilosa","iNatAg-mini/portulaca_quadrifida","iNatAg-mini/potamogeton_diversifolius","iNatAg-mini/potamogeton_epihydrus","iNatAg-mini/potamogeton_filiformis","iNatAg-mini/potamogeton_foliosus","iNatAg-mini/potamogeton_friesii","iNatAg-mini/potamogeton_gramineus","iNatAg-mini/potamogeton_illinoensis","iNatAg-mini/potamogeton_natans","iNatAg-mini/potamogeton_nodosus","iNatAg-mini/potamogeton_pectinatus","iNatAg-mini/potamogeton_praelongus","iNatAg-mini/potamogeton_pusillus","iNatAg-mini/potamogeton_zosteriformis","iNatAg-mini/potentilla_anserina","iNatAg-mini/potentilla_argentea","iNatAg-mini/potentilla_erecta","iNatAg-mini/potentilla_fruticosa","iNatAg-mini/potentilla_intermedia","iNatAg-mini/potentilla_norvegica","iNatAg-mini/potentilla_norvegicae","iNatAg-mini/potentilla_recta","iNatAg-mini/potentilla_reptans","iNatAg-mini/potentilla_tridentata","iNatAg-mini/poterium_sanguisorba","iNatAg-mini/pouteria_campechiana","iNatAg-mini/pouteria_lucuma","iNatAg-mini/pouteria_sapota","iNatAg-mini/prasophyllum_elatum","iNatAg-mini/primula_veris","iNatAg-mini/proserpinaca_palustris","iNatAg-mini/proserpinaca_pectinata","iNatAg-mini/prosopis_affinis","iNatAg-mini/prosopis_africana","iNatAg-mini/prosopis_alba","iNatAg-mini/prosopis_chilensis","iNatAg-mini/prosopis_cineraria","iNatAg-mini/prosopis_glandulosa","iNatAg-mini/prosopis_juliflora","iNatAg-mini/prosopis_nigra","iNatAg-mini/prosopis_pallida","iNatAg-mini/prosopis_tamarugo","iNatAg-mini/prosopis_velutina","iNatAg-mini/prunella_vulgaris","iNatAg-mini/prunus_africana","iNatAg-mini/prunus_amygdalus","iNatAg-mini/prunus_armeniaca","iNatAg-mini/prunus_avium","iNatAg-mini/prunus_capuli","iNatAg-mini/prunus_cerasus","iNatAg-mini/prunus_domestica","iNatAg-mini/prunus_laurocerasus","iNatAg-mini/prunus_mahaleb","iNatAg-mini/prunus_mume","iNatAg-mini/prunus_padus","iNatAg-mini/prunus_pensylvanica","iNatAg-mini/prunus_persica","iNatAg-mini/prunus_salicina","iNatAg-mini/prunus_spinosa","iNatAg-mini/prunus_virginiana","iNatAg-mini/psathyrostachys_juncea","iNatAg-mini/psidium_cattleianum","iNatAg-mini/psidium_friedrichsthalianum","iNatAg-mini/psidium_guajava","iNatAg-mini/psophocarpus_tetragonolobus","iNatAg-mini/psoralea_repens","iNatAg-mini/ptelea_trifoliata","iNatAg-mini/pterocarpus_angolensis","iNatAg-mini/pterocarpus_dalbergioides","iNatAg-mini/pterocarpus_erinaceus","iNatAg-mini/pterocarpus_indicus","iNatAg-mini/pterocarpus_lucens","iNatAg-mini/pterocarpus_macrocarpus","iNatAg-mini/pterocarpus_marsupium","iNatAg-mini/pterocarpus_santalinoides","iNatAg-mini/pterocarpus_santalinus","iNatAg-mini/pueraria_lobata","iNatAg-mini/pueraria_phaseoloides","iNatAg-mini/pulmonaria_officinalis","iNatAg-mini/punica_granatum","iNatAg-mini/pycnanthus_angolensis","iNatAg-mini/pyrola_rotundifolia","iNatAg-mini/pyrus_communis","iNatAg-mini/pyrus_pyrifolia","iNatAg-mini/quercus_agrifolia","iNatAg-mini/quercus_alba","iNatAg-mini/quercus_bicolor","iNatAg-mini/quercus_chrysolepis","iNatAg-mini/quercus_dumosa","iNatAg-mini/quercus_fusiformis","iNatAg-mini/quercus_ilex","iNatAg-mini/quercus_incana","iNatAg-mini/quercus_lanata","iNatAg-mini/quercus_nigra","iNatAg-mini/quercus_phellos","iNatAg-mini/quercus_robur","iNatAg-mini/quercus_semecarpifolia","iNatAg-mini/quercus_suber","iNatAg-mini/quercus_virginiana","iNatAg-mini/quisqualis_indica","iNatAg-mini/ranunculus_abortivus","iNatAg-mini/ranunculus_acris","iNatAg-mini/ranunculus_arbortivus","iNatAg-mini/ranunculus_arvensis","iNatAg-mini/ranunculus_bulbosus","iNatAg-mini/ranunculus_californicus","iNatAg-mini/ranunculus_cymbalaria","iNatAg-mini/ranunculus_ficaria","iNatAg-mini/ranunculus_flabellaris","iNatAg-mini/ranunculus_muricatulus","iNatAg-mini/ranunculus_muricatus","iNatAg-mini/ranunculus_occidentalis","iNatAg-mini/ranunculus_orthorhynchus","iNatAg-mini/ranunculus_parviflorus","iNatAg-mini/ranunculus_sceleratus","iNatAg-mini/ranunculus_testiculatus","iNatAg-mini/ranunculus_trichophyllus","iNatAg-mini/raphanus_raphanistrum","iNatAg-mini/raphanus_sativus","iNatAg-mini/rauvolfia_caffra","iNatAg-mini/rauvolfia_serpentina","iNatAg-mini/reseda_alba","iNatAg-mini/reseda_lutea","iNatAg-mini/retama_monosperma","iNatAg-mini/rhamnus_cathartica","iNatAg-mini/rhamnus_prinoides","iNatAg-mini/rheum_palmatum","iNatAg-mini/rheum_rhaponticum","iNatAg-mini/rhigozum_trichotomum","iNatAg-mini/rhinanthus_crista-galli","iNatAg-mini/rhinanthus_minor","iNatAg-mini/rhizophora_mangle","iNatAg-mini/rhizophora_mucronata","iNatAg-mini/rhizophora_stylosa","iNatAg-mini/rhodiola_rosea","iNatAg-mini/rhododendron_ferrugineum","iNatAg-mini/rhus_copallinum","iNatAg-mini/rhus_glabra","iNatAg-mini/rhus_typhina","iNatAg-mini/rhynchosia_minima","iNatAg-mini/rhynchosia_senna","iNatAg-mini/rhynchosia_sublobata","iNatAg-mini/ribes_hirtellum","iNatAg-mini/ribes_nigrum","iNatAg-mini/ribes_rubrum","iNatAg-mini/ribes_uva-crispa","iNatAg-mini/ribes_viscosissimum","iNatAg-mini/richardia_brasiliensis","iNatAg-mini/richardia_scabra","iNatAg-mini/ricinus_communis","iNatAg-mini/ricinus_comunis","iNatAg-mini/rivina_humilis","iNatAg-mini/robinia_pseudoacacia","iNatAg-mini/roemeria_refracta","iNatAg-mini/rosa_canina","iNatAg-mini/rosa_cinnamomea","iNatAg-mini/rosa_eglanteria","iNatAg-mini/rosa_pendulina","iNatAg-mini/rosa_pimpinellifolia","iNatAg-mini/rosa_rubiginosa","iNatAg-mini/rosa_spinosissima","iNatAg-mini/roseodendron_donnell-smithii","iNatAg-mini/rosmarinus_officinalis","iNatAg-mini/rubia_tinctorum","iNatAg-mini/rubus_ellipticus","iNatAg-mini/rubus_fructicosus","iNatAg-mini/rubus_fruticosus","iNatAg-mini/rubus_hispidus","iNatAg-mini/rubus_idaeus","iNatAg-mini/rubus_moluccanus","iNatAg-mini/rubus_occidentalis","iNatAg-mini/rubus_pensilvanicus","iNatAg-mini/rudbeckia_amplexicaulis","iNatAg-mini/rudbeckia_hirta","iNatAg-mini/rudbeckia_laciniata","iNatAg-mini/rudbeckia_triloba","iNatAg-mini/rumex_acetosa","iNatAg-mini/rumex_acetosella","iNatAg-mini/rumex_aquaticus","iNatAg-mini/rumex_crispus","iNatAg-mini/rumex_dentatus","iNatAg-mini/rumex_hymenosepalus","iNatAg-mini/rumex_longifolius","iNatAg-mini/rumex_maritimus","iNatAg-mini/rumex_obtusifolius","iNatAg-mini/rumex_patienta","iNatAg-mini/rumex_patientia","iNatAg-mini/rumex_pseudonatronatus","iNatAg-mini/rumex_pulcher","iNatAg-mini/rumex_verticillatus","iNatAg-mini/ruppia_maritima","iNatAg-mini/ruscus_aculeatus","iNatAg-mini/ruta_graveolens","iNatAg-mini/saccharum_officinarum","iNatAg-mini/saccharum_sinense","iNatAg-mini/saccharum_spontaneum","iNatAg-mini/sacorstemma_cynanchoides","iNatAg-mini/sagina_procumbens","iNatAg-mini/sagittaria_kurziana","iNatAg-mini/sagittaria_lancifolia","iNatAg-mini/sagittaria_latifolia","iNatAg-mini/sagittaria_sagittifolia","iNatAg-mini/salacca_wallichiana","iNatAg-mini/salacca_zalacca","iNatAg-mini/salicornia_bigelovii","iNatAg-mini/salix_alba","iNatAg-mini/salix_caprea","iNatAg-mini/salix_laevigata","iNatAg-mini/salix_pentandra","iNatAg-mini/salix_viminalis","iNatAg-mini/salsola_kali","iNatAg-mini/salsola_tragus","iNatAg-mini/salsola_vermiculata","iNatAg-mini/salvadora_persica","iNatAg-mini/salvia_lyrata","iNatAg-mini/salvia_officinalis","iNatAg-mini/salvia_sclarea","iNatAg-mini/salvia_verticillata","iNatAg-mini/salvinia_auriculata","iNatAg-mini/samanea_saman","iNatAg-mini/sambucus_canadensis","iNatAg-mini/sambucus_canadiensis","iNatAg-mini/sambucus_cerulea","iNatAg-mini/sambucus_ebulus","iNatAg-mini/sambucus_nigra","iNatAg-mini/sambucus_racemosa","iNatAg-mini/samolus_parviflorus","iNatAg-mini/samolus_valerandi","iNatAg-mini/sanguisorba_minor","iNatAg-mini/sanguisorba_officinalis","iNatAg-mini/sanicula_europaea","iNatAg-mini/santalum_acuminatum","iNatAg-mini/santalum_album","iNatAg-mini/santolina_chamaecyparissus","iNatAg-mini/sapindus_emarginatus","iNatAg-mini/sapindus_saponaria","iNatAg-mini/sapium_sebiferum","iNatAg-mini/saponaria_officinalis","iNatAg-mini/sarcostemma_cynanchoides","iNatAg-mini/satureja_hortensis","iNatAg-mini/satureja_montana","iNatAg-mini/sauropus_androgynus","iNatAg-mini/saururus_cernuus","iNatAg-mini/scandix_pecten-veneris","iNatAg-mini/schima_wallichii","iNatAg-mini/schinus_molle","iNatAg-mini/schinus_terebinthifolia","iNatAg-mini/schinus_terebinthifolius","iNatAg-mini/schismus_arabicus","iNatAg-mini/schizolobium_parahyba","iNatAg-mini/schizomeria_ovata","iNatAg-mini/schleichera_oleosa","iNatAg-mini/scirpus_lacustris","iNatAg-mini/scleranthus_annuus","iNatAg-mini/sclerocarya_caffra","iNatAg-mini/scoparia_dulcis","iNatAg-mini/scorzonera_laciniata","iNatAg-mini/scrophularia_lanceolata","iNatAg-mini/searsia_angustifolia","iNatAg-mini/secale_cereale","iNatAg-mini/secale_montanum","iNatAg-mini/sechium_edule","iNatAg-mini/securidaca_longepedunculata","iNatAg-mini/securidaca_longipedunculata","iNatAg-mini/sedum_acre","iNatAg-mini/sedum_telephium","iNatAg-mini/sehima_nervosum","iNatAg-mini/sempervivum_arachnoideum","iNatAg-mini/sempervivum_tectorum","iNatAg-mini/senecio_elegans","iNatAg-mini/senecio_jacobaea","iNatAg-mini/senecio_madagascariensis","iNatAg-mini/senecio_plattensis","iNatAg-mini/senecio_squalidus","iNatAg-mini/senecio_sylvaticus","iNatAg-mini/senecio_viscosus","iNatAg-mini/senecio_vulgaris","iNatAg-mini/senna_spectabilis","iNatAg-mini/serenoa_repens","iNatAg-mini/sesamum_indicum","iNatAg-mini/sesbania_bispinosa","iNatAg-mini/sesbania_cannabina","iNatAg-mini/sesbania_exaltata","iNatAg-mini/sesbania_formosa","iNatAg-mini/sesbania_grandiflora","iNatAg-mini/sesbania_pachycarpa","iNatAg-mini/sesbania_sesban","iNatAg-mini/setaria_incrassata","iNatAg-mini/setaria_italica","iNatAg-mini/setaria_lindenbergiana","iNatAg-mini/setaria_pumila","iNatAg-mini/seymeria_pectinata","iNatAg-mini/shorea_robusta","iNatAg-mini/shorea_talura","iNatAg-mini/sicyos_angulatus","iNatAg-mini/sida_angustifolia","iNatAg-mini/sida_cordifolia","iNatAg-mini/sida_spinosa","iNatAg-mini/silene_antirrhina","iNatAg-mini/silene_armeria","iNatAg-mini/silene_conica","iNatAg-mini/silene_conoidea","iNatAg-mini/silene_gallica","iNatAg-mini/silene_noctiflora","iNatAg-mini/silene_pendula","iNatAg-mini/silphium_asperrimum","iNatAg-mini/silphium_integrifolium","iNatAg-mini/silphium_laciniatum","iNatAg-mini/silybum_marianum","iNatAg-mini/simarouba_glauca","iNatAg-mini/simmondsia_chinensis","iNatAg-mini/simsia_auriculata","iNatAg-mini/sinapis_alba","iNatAg-mini/sinapis_arvensis","iNatAg-mini/sinapis_incana","iNatAg-mini/siphonochilus_aethiopicus","iNatAg-mini/sisymbrium_altissimum","iNatAg-mini/sisymbrium_erysimoides","iNatAg-mini/sisymbrium_irio","iNatAg-mini/sisymbrium_officinale","iNatAg-mini/sisymbrium_orientale","iNatAg-mini/sisymbrium_sophia","iNatAg-mini/sisyrinchium_montanum","iNatAg-mini/sloanea_woollsii","iNatAg-mini/smilax_aspera","iNatAg-mini/smilax_bona-nox","iNatAg-mini/smilax_laurifolia","iNatAg-mini/smilax_rotundifolia","iNatAg-mini/solanum_aethiopicum","iNatAg-mini/solanum_americanum","iNatAg-mini/solanum_capsicoides","iNatAg-mini/solanum_carolinense","iNatAg-mini/solanum_coriaceum","iNatAg-mini/solanum_dimidiatum","iNatAg-mini/solanum_diphyllum","iNatAg-mini/solanum_dulcamara","iNatAg-mini/solanum_elaeagnifolium","iNatAg-mini/solanum_eleagnifolium","iNatAg-mini/solanum_ellipticum","iNatAg-mini/solanum_ferox","iNatAg-mini/solanum_heterodoxum","iNatAg-mini/solanum_incanum","iNatAg-mini/solanum_jamaicense","iNatAg-mini/solanum_lanceolatum","iNatAg-mini/solanum_macrocarpon","iNatAg-mini/solanum_mammosum","iNatAg-mini/solanum_marginatum","iNatAg-mini/solanum_mauritianum","iNatAg-mini/solanum_melongena","iNatAg-mini/solanum_muricatum","iNatAg-mini/solanum_nigrum","iNatAg-mini/solanum_physalifolium","iNatAg-mini/solanum_pseudo-capsicum","iNatAg-mini/solanum_pseudocapsicum","iNatAg-mini/solanum_quitoense","iNatAg-mini/solanum_sisymbrifolium","iNatAg-mini/solanum_sisymbriifolium","iNatAg-mini/solanum_tampicense","iNatAg-mini/solanum_torvum","iNatAg-mini/solanum_tuberosum","iNatAg-mini/solanum_violaceum","iNatAg-mini/soldanella_alpina","iNatAg-mini/solidago_californica","iNatAg-mini/solidago_canadensis","iNatAg-mini/solidago_fistulosa","iNatAg-mini/solidago_missouriensis","iNatAg-mini/solidago_nemoralis","iNatAg-mini/solidago_rigida","iNatAg-mini/solidago_sempervirens","iNatAg-mini/solidago_virgaurea","iNatAg-mini/sonchus_arvensis","iNatAg-mini/sonchus_oleraceus","iNatAg-mini/sonchus_palustris","iNatAg-mini/sonneratia_apetala","iNatAg-mini/sonneratia_caseolaris","iNatAg-mini/sorbus_aucuparia","iNatAg-mini/sorbus_domestica","iNatAg-mini/sorghum_bicolor","iNatAg-mini/sorghum_drummondii","iNatAg-mini/sorghum_halepense","iNatAg-mini/soymida_febrifuga","iNatAg-mini/sparganium_americanum","iNatAg-mini/sparganium_erectum","iNatAg-mini/spartina_pectinata","iNatAg-mini/spartium_junceum","iNatAg-mini/spathodea_campanulata","iNatAg-mini/spergula_arvensis","iNatAg-mini/spermacoce_verticillata","iNatAg-mini/spinacia_oleracea","iNatAg-mini/spinifex_hirsutus","iNatAg-mini/spirea_tomentosa","iNatAg-mini/spodiopogon_sibiricus","iNatAg-mini/spondias_cythera","iNatAg-mini/spondias_mombin","iNatAg-mini/spondias_purpurea","iNatAg-mini/sporobolus_airoides","iNatAg-mini/sporobolus_fimbriatus","iNatAg-mini/sporobolus_maritimus","iNatAg-mini/sporobolus_neglectus","iNatAg-mini/sporobolus_spicatus","iNatAg-mini/sporobolus_virginicus","iNatAg-mini/stachys_affinis","iNatAg-mini/stachys_palustris","iNatAg-mini/stachytarpheta_incana","iNatAg-mini/stachytarpheta_indica","iNatAg-mini/stellaria_graminea","iNatAg-mini/stellaria_holostea","iNatAg-mini/stellaria_media","iNatAg-mini/stenotaphrum_secundatum","iNatAg-mini/sterculia_foetida","iNatAg-mini/sterculia_urens","iNatAg-mini/sterculia_villosa","iNatAg-mini/stereospermum_kunthianum","iNatAg-mini/stevia_rebaudiana","iNatAg-mini/stipa_baicalensis","iNatAg-mini/stipa_brachychaeta","iNatAg-mini/stipa_capillata","iNatAg-mini/stipa_glareosa","iNatAg-mini/stipa_grandis","iNatAg-mini/stipa_krylovii","iNatAg-mini/stipa_lagascae","iNatAg-mini/stipa_occidentalis","iNatAg-mini/stipa_parviflora","iNatAg-mini/stipa_tenacissima","iNatAg-mini/stipa_trichotoma","iNatAg-mini/stipagrostis_amabilis","iNatAg-mini/stipagrostis_zeyheri","iNatAg-mini/stratiotes_aloides","iNatAg-mini/strychnos_cocculoides","iNatAg-mini/strychnos_innocua","iNatAg-mini/strychnos_spinosa","iNatAg-mini/stylidium_desertorum","iNatAg-mini/stylosanthes_capitata","iNatAg-mini/stylosanthes_fruticosa","iNatAg-mini/stylosanthes_hamata","iNatAg-mini/stylosanthes_humilis","iNatAg-mini/stylosanthes_scabra","iNatAg-mini/stylosanthes_viscosa","iNatAg-mini/succisa_pratensis","iNatAg-mini/swertia_baicalensis","iNatAg-mini/swietenia_macrophylla","iNatAg-mini/swietenia_mahogani","iNatAg-mini/symphoricarpos_mollis","iNatAg-mini/symphoricarpos_occidentalis","iNatAg-mini/symphoricarpos_orbiculatus","iNatAg-mini/symphoricarpos_rotundifolius","iNatAg-mini/symphytum_officinale","iNatAg-mini/syncarpia_glomulifera","iNatAg-mini/syncarpia_hillii","iNatAg-mini/syzygium_cordatum","iNatAg-mini/syzygium_cumini","iNatAg-mini/syzygium_guineense","iNatAg-mini/syzygium_malaccense","iNatAg-mini/syzygium_taiwanicum","iNatAg-mini/tabebuia_rosea","iNatAg-mini/tabebuia_serratifolia","iNatAg-mini/tagetes_minuta","iNatAg-mini/talinum_triangulare","iNatAg-mini/tamarindus_indica","iNatAg-mini/tamarix_aphylla","iNatAg-mini/tamarix_chinensis","iNatAg-mini/tamarix_gallica","iNatAg-mini/tamarix_parviflora","iNatAg-mini/tanacetum_balsamita","iNatAg-mini/tanacetum_vulgare","iNatAg-mini/taraxacum_officinale","iNatAg-mini/taraxia_breviflora","iNatAg-mini/tarchonanthus_camphoratus","iNatAg-mini/taxodium_distichum","iNatAg-mini/taxus_baccata","iNatAg-mini/tecoma_stans","iNatAg-mini/tectona_grandis","iNatAg-mini/tephrosia_candida","iNatAg-mini/tephrosia_lupinifolia","iNatAg-mini/tephrosia_obovata","iNatAg-mini/tephrosia_purpurea","iNatAg-mini/tephrosia_vogelii","iNatAg-mini/teramnus_labialis","iNatAg-mini/terminalia_arjuna","iNatAg-mini/terminalia_bellirica","iNatAg-mini/terminalia_brownii","iNatAg-mini/terminalia_calamansanai","iNatAg-mini/terminalia_catappa","iNatAg-mini/terminalia_chebula","iNatAg-mini/terminalia_ivorensis","iNatAg-mini/terminalia_mantaly","iNatAg-mini/terminalia_myriocarpa","iNatAg-mini/terminalia_paniculata","iNatAg-mini/terminalia_prunioides","iNatAg-mini/terminalia_sericocarpa","iNatAg-mini/terminalia_tomentosa","iNatAg-mini/tetradymia_canescens","iNatAg-mini/tetragonia_tetragonioides","iNatAg-mini/teucrium_botrys","iNatAg-mini/teucrium_canadense","iNatAg-mini/teucrium_chamaedrys","iNatAg-mini/teucrium_polium","iNatAg-mini/thalia_geniculata","iNatAg-mini/thalictrum_pubescens","iNatAg-mini/thaumatococcus_daniellii","iNatAg-mini/themeda_australis","iNatAg-mini/themeda_quadrivalvis","iNatAg-mini/themeda_triandra","iNatAg-mini/theobroma_bicolor","iNatAg-mini/theobroma_cacao","iNatAg-mini/theobroma_grandiflorum","iNatAg-mini/thermopsis_montana","iNatAg-mini/thermopsis_rhombifolia","iNatAg-mini/thespesia_populnea","iNatAg-mini/thlaspi_arvense","iNatAg-mini/thlaspi_perfoliatum","iNatAg-mini/thuja_occidentalis","iNatAg-mini/thymus_serphyllum","iNatAg-mini/thymus_serpyllum","iNatAg-mini/thymus_vulgaris","iNatAg-mini/thyrsostachys_siamensis","iNatAg-mini/thysanolaena_latifolia","iNatAg-mini/tilia_cordata","iNatAg-mini/tilia_platyphyllos","iNatAg-mini/tipuana_tipu","iNatAg-mini/tithonia_diversifolia","iNatAg-mini/toona_ciliata","iNatAg-mini/torenia_glabra","iNatAg-mini/toxicodendron_pubescens","iNatAg-mini/trachypogon_spicatus","iNatAg-mini/tradescantia_bracteata","iNatAg-mini/tradescantia_fluminensis","iNatAg-mini/tradescantia_ohiensis","iNatAg-mini/tradescantia_virginiana","iNatAg-mini/tragia_betonicifolia","iNatAg-mini/tragopogon_lamottei","iNatAg-mini/tragopogon_porrifolius","iNatAg-mini/tragopogon_pratensis","iNatAg-mini/tragus_koelerioides","iNatAg-mini/trapa_natans","iNatAg-mini/trema_orientale","iNatAg-mini/trianthema_portulacastrum","iNatAg-mini/tribulus_cistoides","iNatAg-mini/tribulus_terrestris","iNatAg-mini/trichanthera_gigantea","iNatAg-mini/trichoneura_grandiglumis","iNatAg-mini/trichosanthes_cucumerina","iNatAg-mini/trichostema_lanceolatum","iNatAg-mini/tridax_procumbens","iNatAg-mini/trifolium_africanum","iNatAg-mini/trifolium_alexandrinum","iNatAg-mini/trifolium_ambiguum","iNatAg-mini/trifolium_angustifolium","iNatAg-mini/trifolium_arvense","iNatAg-mini/trifolium_burchellianum","iNatAg-mini/trifolium_campestre","iNatAg-mini/trifolium_carolinianum","iNatAg-mini/trifolium_cherleri","iNatAg-mini/trifolium_dubium","iNatAg-mini/trifolium_fragiferum","iNatAg-mini/trifolium_glanduliferum","iNatAg-mini/trifolium_glomeratum","iNatAg-mini/trifolium_hirtum","iNatAg-mini/trifolium_hybridum","iNatAg-mini/trifolium_incarnatum","iNatAg-mini/trifolium_medium","iNatAg-mini/trifolium_michelianum","iNatAg-mini/trifolium_nigrescens","iNatAg-mini/trifolium_patens","iNatAg-mini/trifolium_pilulare","iNatAg-mini/trifolium_polymorphum","iNatAg-mini/trifolium_pratense","iNatAg-mini/trifolium_reflexum","iNatAg-mini/trifolium_repens","iNatAg-mini/trifolium_resupinatum","iNatAg-mini/trifolium_subterraneum","iNatAg-mini/trifolium_tomentosum","iNatAg-mini/trifolium_variegatum","iNatAg-mini/trifolium_vesiculosum","iNatAg-mini/trifolium_wormskioldii","iNatAg-mini/triglochin_maritima","iNatAg-mini/triglochin_maritimum","iNatAg-mini/triglochin_palustre","iNatAg-mini/trigonella_foenum-graecum","iNatAg-mini/tripsacum_dactyloides","iNatAg-mini/trisetum_flavescens","iNatAg-mini/tristachya_leucothrix","iNatAg-mini/triticum_aestivum","iNatAg-mini/triticum_dicoccoides","iNatAg-mini/triticum_durum","iNatAg-mini/triticum_spelta","iNatAg-mini/triumfetta_rhomboidea","iNatAg-mini/triumfetta_semitriloba","iNatAg-mini/trollius_europaeus","iNatAg-mini/tropaeolum_majus","iNatAg-mini/tropaeolum_tuberosum","iNatAg-mini/tropidocarpum_gracile","iNatAg-mini/turritis_glabra","iNatAg-mini/tussilago_farfara","iNatAg-mini/tylosema_esculentum","iNatAg-mini/typha_angustifolia","iNatAg-mini/typha_domingensis","iNatAg-mini/typha_latifolia","iNatAg-mini/uapaca_kirkiana","iNatAg-mini/ulex_europaeus","iNatAg-mini/ullucus_tuberosus","iNatAg-mini/ulmus_procera","iNatAg-mini/umbilicus_rupestris","iNatAg-mini/uncaria_gambir","iNatAg-mini/urelytrum_agropyroides","iNatAg-mini/urena_lobata","iNatAg-mini/urochloa_mosambicensis","iNatAg-mini/urochloa_panicoides","iNatAg-mini/urtica_chamaedryoides","iNatAg-mini/urtica_dioica","iNatAg-mini/urtica_urens","iNatAg-mini/utricularia_floridana","iNatAg-mini/utricularia_foliosa","iNatAg-mini/utricularia_gibba","iNatAg-mini/utricularia_purpurea","iNatAg-mini/utricularia_radiata","iNatAg-mini/utricularia_vulgaris","iNatAg-mini/uvaria_littoralis","iNatAg-mini/uvularia_sessilifolia","iNatAg-mini/vaccinium_angustifolium","iNatAg-mini/vaccinium_corymbosum","iNatAg-mini/vaccinium_macrocarpon","iNatAg-mini/vaccinium_myrtillus","iNatAg-mini/vaccinium_uliginosum","iNatAg-mini/vaccinium_vitis-idaea","iNatAg-mini/valeriana_officinalis","iNatAg-mini/valerianella_eriocarpa","iNatAg-mini/vallisneria_americana","iNatAg-mini/vangueria_infausta","iNatAg-mini/vangueria_madagascariensis","iNatAg-mini/vanilla_planifolia","iNatAg-mini/vateria_indica","iNatAg-mini/ventilago_viminalis","iNatAg-mini/veratrum_album","iNatAg-mini/veratrum_californicum","iNatAg-mini/verbascum_blattaria","iNatAg-mini/verbascum_lychnitis","iNatAg-mini/verbascum_phlomoides","iNatAg-mini/verbascum_thapsus","iNatAg-mini/verbascum_thaspus","iNatAg-mini/verbena_bonariensis","iNatAg-mini/verbena_brasiliensis","iNatAg-mini/verbena_hastata","iNatAg-mini/verbena_officinalis","iNatAg-mini/verbena_urticifolia","iNatAg-mini/vernonia_altissima","iNatAg-mini/vernonia_amygdalina","iNatAg-mini/vernonia_baldwinii","iNatAg-mini/vernonia_chamaedrys","iNatAg-mini/vernonia_fasciculata","iNatAg-mini/veronica_agrestis","iNatAg-mini/veronica_anagallis-aquatica","iNatAg-mini/veronica_arvensis","iNatAg-mini/veronica_biloba","iNatAg-mini/veronica_chamaedrys","iNatAg-mini/veronica_filiformis","iNatAg-mini/veronica_hederaefolia","iNatAg-mini/veronica_hederifolia","iNatAg-mini/veronica_longifolia","iNatAg-mini/veronica_officinalis","iNatAg-mini/veronica_peregrina","iNatAg-mini/veronica_polita","iNatAg-mini/veronica_serpyllifolia","iNatAg-mini/vetiveria_zizanioides","iNatAg-mini/viburnum_cassinoides","iNatAg-mini/viburnum_lentago","iNatAg-mini/viburnum_prunifolium","iNatAg-mini/viccia_cracca","iNatAg-mini/vicia_augustifolia","iNatAg-mini/vicia_benghalensis","iNatAg-mini/vicia_cracca","iNatAg-mini/vicia_ervilia","iNatAg-mini/vicia_faba","iNatAg-mini/vicia_monantha","iNatAg-mini/vicia_narbonensis","iNatAg-mini/vicia_pannonica","iNatAg-mini/vicia_sativa","iNatAg-mini/vicia_sepium","iNatAg-mini/vigna_adenantha","iNatAg-mini/vigna_angularis","iNatAg-mini/vigna_hosei","iNatAg-mini/vigna_lanceolata","iNatAg-mini/vigna_longifolia","iNatAg-mini/vigna_luteola","iNatAg-mini/vigna_parkeri","iNatAg-mini/vigna_radiata","iNatAg-mini/vigna_trilobata","iNatAg-mini/vigna_umbellata","iNatAg-mini/vigna_unguiculata","iNatAg-mini/vigna_vexillata","iNatAg-mini/vinca_major","iNatAg-mini/vinca_minor","iNatAg-mini/viola_lanceolata","iNatAg-mini/viola_odorata","iNatAg-mini/viola_tricolor","iNatAg-mini/viscum_album","iNatAg-mini/vitellaria_paradoxa","iNatAg-mini/vitex_agnus-castus","iNatAg-mini/vitex_doniana","iNatAg-mini/vitex_negundo","iNatAg-mini/vitis_labrusca","iNatAg-mini/vitis_rotundifolia","iNatAg-mini/vitis_vinifera","iNatAg-mini/vitis_vulpina","iNatAg-mini/waltheria_indica","iNatAg-mini/warburgia_salutaris","iNatAg-mini/warburgia_ugandensis","iNatAg-mini/withania_somnifera","iNatAg-mini/wrightia_tomentosa","iNatAg-mini/xanthium_spinosum","iNatAg-mini/xanthium_strumarium","iNatAg-mini/xanthosoma_sagittifolium","iNatAg-mini/ximenia_americana","iNatAg-mini/xylia_xylocarpa","iNatAg-mini/xylocarpus_granatum","iNatAg-mini/xylocarpus_mekongensis","iNatAg-mini/xylocarpus_moluccensis","iNatAg-mini/xylorhiza_glabriuscula","iNatAg-mini/yucca_elephantipes","iNatAg-mini/zannichellia_palustris","iNatAg-mini/zanthoxylum_americanum","iNatAg-mini/zea_mays","iNatAg-mini/zingiber_officinale","iNatAg-mini/zizania_aquatica","iNatAg-mini/zizania_latifolia","iNatAg-mini/ziziphus_abyssinica","iNatAg-mini/ziziphus_mauritiana","iNatAg-mini/ziziphus_mucronata","iNatAg-mini/zornia_diphylla","iNatAg-mini/zornia_glochidiata","iNatAg-mini/zornia_latifolia","iNatAg-mini/zostera_marina","iNatAg-mini/zoysia_matrella","iNatAg-mini/zygophyllum_fabago","iNatAg/abelmoschus_esculentus","iNatAg/abelmoschus_manihot","iNatAg/abelmoschus_moschatus","iNatAg/abies_alba","iNatAg/abies_amabilis","iNatAg/abies_balsamea","iNatAg/abies_concolor","iNatAg/abies_pindrow","iNatAg/abroma_augustum","iNatAg/abrus_pecatorius","iNatAg/abrus_precatorius","iNatAg/abutilon_theophrasti","iNatAg/acacia_abyssinica","iNatAg/acacia_acradenia","iNatAg/acacia_acuminata","iNatAg/acacia_ampliceps","iNatAg/acacia_anceps","iNatAg/acacia_ancistrocarpa","iNatAg/acacia_aneura","iNatAg/acacia_angustissima","iNatAg/acacia_ataxacantha","iNatAg/acacia_aulacocarpa","iNatAg/acacia_auriculiformis","iNatAg/acacia_bidwillii","iNatAg/acacia_brachystachya","iNatAg/acacia_brevispica","iNatAg/acacia_burkei","iNatAg/acacia_caffra","iNatAg/acacia_cambagei","iNatAg/acacia_catechu","iNatAg/acacia_catenulata","iNatAg/acacia_caven","iNatAg/acacia_cincinnata","iNatAg/acacia_coriacea","iNatAg/acacia_cowleana","iNatAg/acacia_crassicarpa","iNatAg/acacia_cyclops","iNatAg/acacia_cyperophylla","iNatAg/acacia_dealbata","iNatAg/acacia_deanei","iNatAg/acacia_decurrens","iNatAg/acacia_difficilis","iNatAg/acacia_doratoxylon","iNatAg/acacia_ehrenbergiana","iNatAg/acacia_erioloba","iNatAg/acacia_estrophiolata","iNatAg/acacia_excelsa","iNatAg/acacia_falciformis","iNatAg/acacia_farnesiana","iNatAg/acacia_fasciculifera","iNatAg/acacia_flavescens","iNatAg/acacia_georginae","iNatAg/acacia_gerrardii","iNatAg/acacia_glaucocarpa","iNatAg/acacia_gourmaensis","iNatAg/acacia_harpophylla","iNatAg/acacia_holosericea","iNatAg/acacia_irrorata","iNatAg/acacia_ixiophylla","iNatAg/acacia_karroo","iNatAg/acacia_koa","iNatAg/acacia_leptocarpa","iNatAg/acacia_leucophloea","iNatAg/acacia_ligulata","iNatAg/acacia_maidenii","iNatAg/acacia_mangium","iNatAg/acacia_mearnsii","iNatAg/acacia_melanoxylon","iNatAg/acacia_mellifera","iNatAg/acacia_murrayana","iNatAg/acacia_neriifolia","iNatAg/acacia_nigrescens","iNatAg/acacia_nilotica","iNatAg/acacia_occidentalis","iNatAg/acacia_oraria","iNatAg/acacia_oswaldii","iNatAg/acacia_pachycarpa","iNatAg/acacia_papyrocarpa","iNatAg/acacia_paradoxa","iNatAg/acacia_pendula","iNatAg/acacia_peuce","iNatAg/acacia_podalyriifolia","iNatAg/acacia_polyacantha","iNatAg/acacia_polystachya","iNatAg/acacia_pruinocarpa","iNatAg/acacia_pycnantha","iNatAg/acacia_salicina","iNatAg/acacia_saligna","iNatAg/acacia_sclerosperma","iNatAg/acacia_senegal","iNatAg/acacia_seyal","iNatAg/acacia_shirleyi","iNatAg/acacia_sieberiana","iNatAg/acacia_silvestris","iNatAg/acacia_simsii","iNatAg/acacia_stenophylla","iNatAg/acacia_tetragonophylla","iNatAg/acacia_tortilis","iNatAg/acacia_torulosa","iNatAg/acacia_trachycarpa","iNatAg/acacia_victoriae","iNatAg/acaena_novae-zelandiae","iNatAg/acalypha_rhomboidea","iNatAg/acalypha_virginica","iNatAg/acanthosicyos_horridus","iNatAg/acanthosicyos_naudinianus","iNatAg/acanthospermum_hispidum","iNatAg/acanthus_ilicifolius","iNatAg/acanthus_mollis","iNatAg/acca_sellowiana","iNatAg/acer_caesium","iNatAg/acer_campestre","iNatAg/acer_platanoides","iNatAg/acer_pseudoplatanus","iNatAg/acer_saccharum","iNatAg/achillea_fragrantissima","iNatAg/achillea_millefolium","iNatAg/achillea_ptarmica","iNatAg/achnatherum_pekinense","iNatAg/achyranthes_aspera","iNatAg/acmena_smithii","iNatAg/aconitum_napellus","iNatAg/acorus_calamus","iNatAg/acrocarpus_fraxinifolius","iNatAg/acrocomia_aculeata","iNatAg/acrocomia_totai","iNatAg/actaea_racemosa","iNatAg/actinidia_arguta","iNatAg/actinidia_chinensis","iNatAg/adansonia_digitata","iNatAg/adansonia_grandidieri","iNatAg/adansonia_gregorii","iNatAg/adenanthera_pavonina","iNatAg/adesmia_bicolor","iNatAg/adesmia_latifolia","iNatAg/adesmia_punctata","iNatAg/adesmia_securigerifolia","iNatAg/adiantum_capillus-veneris","iNatAg/adina_cordifolia","iNatAg/adonis_annua","iNatAg/adonis_vernalis","iNatAg/aechmea_magdalenae","iNatAg/aegiceras_corniculatum","iNatAg/aegilops_biuncialis","iNatAg/aegilops_cylindrica","iNatAg/aegilops_geniculata","iNatAg/aegilops_triuncialis","iNatAg/aegle_marmelos","iNatAg/aegopodium_podagraria","iNatAg/aeschynomene_americana","iNatAg/aeschynomene_brasiliana","iNatAg/aeschynomene_falcata","iNatAg/aeschynomene_histrix","iNatAg/aeschynomene_indica","iNatAg/aeschynomene_villosa","iNatAg/aesculus_hippocastanum","iNatAg/aesculus_indica","iNatAg/aethusa_cynapium","iNatAg/afzelia_africana","iNatAg/afzelia_quanzensis","iNatAg/agathis_australis","iNatAg/agathis_dammara","iNatAg/agathis_macrophylla","iNatAg/agathis_microstachya","iNatAg/agathis_robusta","iNatAg/agave_fourcroydes","iNatAg/agave_lecheguilla","iNatAg/agave_sisalana","iNatAg/ageratum_conyzoides","iNatAg/agrimonia_eupatoria","iNatAg/agrimonia_gryposepala","iNatAg/agrimonia_parviflora","iNatAg/agropyron_cristatum","iNatAg/agropyron_dasyanthum","iNatAg/agropyron_desertorum","iNatAg/agropyron_scabrum","iNatAg/agrostemma_githago","iNatAg/agrostis_canina","iNatAg/agrostis_capillaris","iNatAg/agrostis_gigantea","iNatAg/agrostis_stolonifera","iNatAg/agrostis_tenuis","iNatAg/ailanthus_altissima","iNatAg/ailanthus_excelsa","iNatAg/aiphanes_aculeata","iNatAg/aira_caryophyllea","iNatAg/ajuga_genevensis","iNatAg/ajuga_reptans","iNatAg/alania_cunninghamii","iNatAg/albizia_adianthifolia","iNatAg/albizia_amara","iNatAg/albizia_chinensis","iNatAg/albizia_falcataria","iNatAg/albizia_harveyi","iNatAg/albizia_lebbeck","iNatAg/albizia_lophantha","iNatAg/albizia_lucida","iNatAg/albizia_odoratissima","iNatAg/albizia_procera","iNatAg/alcea_rosea","iNatAg/alchemilla_monticola","iNatAg/alchemilla_occidentalis","iNatAg/alchemilla_vulgaris","iNatAg/alchemilla_xanthochlora","iNatAg/aleurites_fordii","iNatAg/aleurites_moluccana","iNatAg/alisma_gramineum","iNatAg/alisma_lanceolatum","iNatAg/alisma_plantago-aquatica","iNatAg/alkanna_tinctoria","iNatAg/alliaria_petiolata","iNatAg/allionia_incarnata","iNatAg/allium_ampeloprasum","iNatAg/allium_canadense","iNatAg/allium_cepa","iNatAg/allium_chinense","iNatAg/allium_fistulosum","iNatAg/allium_paniculatum","iNatAg/allium_sativum","iNatAg/allium_schoenoprasum","iNatAg/allium_triquetrum","iNatAg/allium_tuberosum","iNatAg/allium_ursinum","iNatAg/allocasuarina_campestris","iNatAg/allocasuarina_decaisneana","iNatAg/allocasuarina_fraseriana","iNatAg/allocasuarina_huegeliana","iNatAg/allocasuarina_littoralis","iNatAg/allocasuarina_luehmannii","iNatAg/allocasuarina_torulosa","iNatAg/alloteropsis_semialata","iNatAg/alnus_acuminata","iNatAg/alnus_glutinosa","iNatAg/alnus_japonica","iNatAg/alnus_maritima","iNatAg/alnus_nepalensis","iNatAg/alnus_rubra","iNatAg/alocasia_macrorrhizos","iNatAg/aloe_arborescens","iNatAg/aloe_barbadensis","iNatAg/aloe_ferox","iNatAg/aloe_perryi","iNatAg/alopecurus_arundinaceus","iNatAg/alopecurus_carolinianus","iNatAg/alopecurus_geniculatus","iNatAg/alopecurus_myosuroides","iNatAg/alopecurus_pratensis","iNatAg/alopecurus_rendlei","iNatAg/aloysia_triphylla","iNatAg/alphitonia_excelsa","iNatAg/alpinia_galanga","iNatAg/alstonia_scholaris","iNatAg/alternanthera_pungens","iNatAg/althaea_officinalis","iNatAg/altingia_excelsa","iNatAg/alysicarpus_monilifer","iNatAg/alysicarpus_ovalifolius","iNatAg/alysicarpus_rugosus","iNatAg/alysicarpus_vaginalis","iNatAg/alyssum_desertorum","iNatAg/amaranthus_albus","iNatAg/amaranthus_blitum","iNatAg/amaranthus_caudatus","iNatAg/amaranthus_cruentus","iNatAg/amaranthus_dubius","iNatAg/amaranthus_hybridus","iNatAg/amaranthus_hypochondriacus","iNatAg/amaranthus_lividus","iNatAg/amaranthus_retroflexus","iNatAg/amaranthus_speciosus","iNatAg/amaranthus_spinosus","iNatAg/amaranthus_tricolor","iNatAg/amaranthus_viridis","iNatAg/ambelania_acida","iNatAg/ambrosia_acanthicarpa","iNatAg/ambrosia_artemisiifolia","iNatAg/ambrosia_confertiflora","iNatAg/ambrosia_psilostachya","iNatAg/ambrosia_tomentosa","iNatAg/ambrosia_trifida","iNatAg/ammannia_latifolia","iNatAg/ammi_majus","iNatAg/ammophila_arenaria","iNatAg/ammophila_breviligulata","iNatAg/amorpha_fruticosa","iNatAg/amorphophallus_paeoniifolius","iNatAg/amsinckia_douglasiana","iNatAg/amsinckia_lycopsoides","iNatAg/anacardium_occidentale","iNatAg/anagallis_arvensis","iNatAg/ananas_comosus","iNatAg/anchusa_azurea","iNatAg/andrographis_paniculata","iNatAg/andropogon_barbinodis","iNatAg/andropogon_bicornis","iNatAg/andropogon_brachystachyus","iNatAg/andropogon_gayanus","iNatAg/andropogon_gyrans","iNatAg/andropogon_hallii","iNatAg/andropogon_leucostachyus","iNatAg/andropogon_ternarius","iNatAg/androsace_septentrionalis","iNatAg/anemone_hepatica","iNatAg/anemone_nemorosa","iNatAg/anethum_graveolens","iNatAg/angelica_archangelica","iNatAg/angelica_atropurpurea","iNatAg/angelica_sylvestris","iNatAg/angophora_costata","iNatAg/angophora_floribunda","iNatAg/annona_atemoya","iNatAg/annona_cherimola","iNatAg/annona_diversifolia","iNatAg/annona_montana","iNatAg/annona_muricata","iNatAg/annona_purpurea","iNatAg/annona_reticulata","iNatAg/annona_senegalensis","iNatAg/annona_squamosa","iNatAg/anogeissus_acuminata","iNatAg/anogeissus_latifolia","iNatAg/anogeissus_pendula","iNatAg/antennaria_dioica","iNatAg/anthemis_arvensis","iNatAg/anthemis_cotula","iNatAg/anthemis_tinctoria","iNatAg/anthephora_pubescens","iNatAg/anthoxanthum_odoratum","iNatAg/anthriscus_cerefolium","iNatAg/anthyllis_vulneraria","iNatAg/antidesma_bunius","iNatAg/antirrhinum_majus","iNatAg/aphandra_natalia","iNatAg/aphanes_arvensis","iNatAg/apios_americana","iNatAg/apium_graveolens","iNatAg/apocynum_cannabinum","iNatAg/apocynum_sibiricum","iNatAg/aponogeton_distachyos","iNatAg/aquilaria_malaccensis","iNatAg/aquilegia_canadensis","iNatAg/aquilegia_vulgaris","iNatAg/arachis_glabrata","iNatAg/arachis_hypogaea","iNatAg/arachis_pintoi","iNatAg/arachis_villosa","iNatAg/araucaria_angustifolia","iNatAg/araucaria_bidwillii","iNatAg/araucaria_cunninghamii","iNatAg/araucaria_hunsteinii","iNatAg/arbutus_unedo","iNatAg/archidendron_jiringa","iNatAg/arctium_lappa","iNatAg/arctostaphylos_glandulosa","iNatAg/arctostaphylos_manzanita","iNatAg/arctostaphylos_patula","iNatAg/arctostaphylos_uva-ursi","iNatAg/arctostaphylos_viscida","iNatAg/ardisia_crenata","iNatAg/areca_catechu","iNatAg/arenaria_serpyllifolia","iNatAg/arenga_pinnata","iNatAg/argemone_mexicana","iNatAg/argyrodendron_actinophyllum","iNatAg/argyrodendron_peralatum","iNatAg/aria_alnifolia","iNatAg/aristida_adscensionis","iNatAg/aristida_behriana","iNatAg/aristida_congesta","iNatAg/aristida_junciformis","iNatAg/aristida_lanosa","iNatAg/aristida_latifolia","iNatAg/aristida_longispica","iNatAg/aristida_personata","iNatAg/aristida_purpurascens","iNatAg/aristida_schiedeana","iNatAg/aristida_transvaalensis","iNatAg/aristolochia_rotunda","iNatAg/armoracia_rusticana","iNatAg/arnica_montana","iNatAg/arrhenatherum_elatius","iNatAg/artemisia_abrotanum","iNatAg/artemisia_absinthium","iNatAg/artemisia_afra","iNatAg/artemisia_annua","iNatAg/artemisia_campestris","iNatAg/artemisia_dracunculus","iNatAg/artemisia_filifolia","iNatAg/artemisia_glacialis","iNatAg/artemisia_herba-alba","iNatAg/artemisia_ludoviciana","iNatAg/artemisia_stelleriana","iNatAg/artemisia_tridentata","iNatAg/artemisia_vulgaris","iNatAg/artocarpus_altilis","iNatAg/artocarpus_heterophyllus","iNatAg/artocarpus_hirsutus","iNatAg/artocarpus_integer","iNatAg/artocarpus_lakoocha","iNatAg/arundinella_hirta","iNatAg/arundo_donax","iNatAg/asarina_stricta","iNatAg/asarum_europaeum","iNatAg/asclepias_curassavica","iNatAg/asclepias_fascicularis","iNatAg/asclepias_incarnata","iNatAg/asclepias_lanceolata","iNatAg/asclepias_purpurascens","iNatAg/asclepias_speciosa","iNatAg/asclepias_subverticillata","iNatAg/asclepias_tuberosa","iNatAg/asclepias_verticillata","iNatAg/asclepias_viridiflora","iNatAg/asimina_angustifolia","iNatAg/asimina_triloba","iNatAg/asparagus_densiflorus","iNatAg/asparagus_officinalis","iNatAg/asperula_arvensis","iNatAg/asphodelus_albus","iNatAg/asphodelus_tenuifolius","iNatAg/aspilia_angustifolia","iNatAg/asplenium_ruta-muraria","iNatAg/aster_ericoides","iNatAg/astragalus_adsurgens","iNatAg/astragalus_asymmetricus","iNatAg/astragalus_canadensis","iNatAg/astragalus_cicer","iNatAg/astragalus_gummifer","iNatAg/astragalus_mollissimus","iNatAg/astragalus_nuttallianus","iNatAg/astragalus_sinicus","iNatAg/astragalus_tweedyi","iNatAg/astrantia_major","iNatAg/astrebla_lappacea","iNatAg/astrebla_pectinata","iNatAg/astrebla_squarrosa","iNatAg/astrocaryum_jauari","iNatAg/astrocaryum_vulgare","iNatAg/asystasia_gangetica","iNatAg/atalaya_hemiglauca","iNatAg/atherosperma_moschatum","iNatAg/athrotaxis_selaginoides","iNatAg/atriplex_canescens","iNatAg/atriplex_confertifolia","iNatAg/atriplex_gardneri","iNatAg/atriplex_glauca","iNatAg/atriplex_halimus","iNatAg/atriplex_hortensis","iNatAg/atriplex_lentiformis","iNatAg/atriplex_nummularia","iNatAg/atriplex_patula","iNatAg/atriplex_rosea","iNatAg/atriplex_semibaccata","iNatAg/atriplex_vesicaria","iNatAg/atropa_belladonna","iNatAg/attalea_cohune","iNatAg/avena_fatua","iNatAg/avena_sativa","iNatAg/avena_sterilis","iNatAg/avenula_pubescens","iNatAg/averrhoa_bilimbi","iNatAg/averrhoa_carambola","iNatAg/avicennia_germinans","iNatAg/avicennia_marina","iNatAg/avicennia_officinalis","iNatAg/axonopus_affinis","iNatAg/axonopus_compressus","iNatAg/axonopus_fissifolius","iNatAg/axyris_amaranthoides","iNatAg/azadirachta_indica","iNatAg/azanza_garckeana","iNatAg/azolla_filiculoides","iNatAg/azolla_pinnata","iNatAg/baccaurea_motleyana","iNatAg/baccaurea_ramiflora","iNatAg/baccharis_glutinosa","iNatAg/baccharis_pilularis","iNatAg/bactris_gasipaes","iNatAg/baikiaea_plurijuga","iNatAg/balanites_aegyptiaca","iNatAg/bambusa_arundinacea","iNatAg/bambusa_balcooa","iNatAg/bambusa_blumeana","iNatAg/bambusa_tulda","iNatAg/bambusa_vulgaris","iNatAg/banksia_integrifolia","iNatAg/banksia_occidentalis","iNatAg/baphia_nitida","iNatAg/barringtonia_racemosa","iNatAg/basella_alba","iNatAg/bauhinia_aculeata","iNatAg/bauhinia_petersiana","iNatAg/bauhinia_racemosa","iNatAg/bauhinia_rufescens","iNatAg/bauhinia_thonningii","iNatAg/bauhinia_tomentosa","iNatAg/bauhinia_variegata","iNatAg/beckmannia_eruciformis","iNatAg/beckmannia_syzigachne","iNatAg/bellis_perennis","iNatAg/benincasa_hispida","iNatAg/berberis_aquifolium","iNatAg/berberis_thunbergii","iNatAg/berberis_vulgaris","iNatAg/berchemia_discolor","iNatAg/berrya_cordifolia","iNatAg/bersama_lucens","iNatAg/bertholletia_excelsa","iNatAg/beta_vulgaris","iNatAg/betula_nigra","iNatAg/betula_pendula","iNatAg/betula_pubescens","iNatAg/bidens_bipinnata","iNatAg/bidens_cernua","iNatAg/bidens_frondosa","iNatAg/bidens_pilosa","iNatAg/bidens_tripartita","iNatAg/bignonia_capreolata","iNatAg/biserrula_pelecinus","iNatAg/bixa_orellana","iNatAg/blighia_sapida","iNatAg/blumea_balsamifera","iNatAg/bocconia_frutescens","iNatAg/boehmeria_nivea","iNatAg/boerhavia_coccinea","iNatAg/boerhavia_diffusa","iNatAg/boerhavia_erecta","iNatAg/boesenbergia_rotunda","iNatAg/bolusanthus_speciosus","iNatAg/bombacopsis_quinata","iNatAg/bombax_ceiba","iNatAg/bombax_insigne","iNatAg/borago_officinalis","iNatAg/borassus_aethiopum","iNatAg/borassus_flabellifer","iNatAg/borojoa_patinoi","iNatAg/boronia_glabra","iNatAg/boscia_angustifolia","iNatAg/boswellia_serrata","iNatAg/bothriochloa_bladhii","iNatAg/bothriochloa_insculpta","iNatAg/bothriochloa_ischaemum","iNatAg/bothriochloa_pertusa","iNatAg/bougainvillea_glabra","iNatAg/bouteloua_curtipendula","iNatAg/bouteloua_gracilis","iNatAg/brachiaria_brizantha","iNatAg/brachiaria_decumbens","iNatAg/brachiaria_deflexa","iNatAg/brachiaria_distachya","iNatAg/brachiaria_humidicola","iNatAg/brachiaria_mutica","iNatAg/brachiaria_ramosa","iNatAg/brachiaria_serrata","iNatAg/brachychiton_acerifolius","iNatAg/brachychiton_populneus","iNatAg/brachylaena_huillensis","iNatAg/brachystegia_spiciformis","iNatAg/brassica_campestris","iNatAg/brassica_chinensis","iNatAg/brassica_incana","iNatAg/brassica_juncea","iNatAg/brassica_napus","iNatAg/brassica_nigra","iNatAg/brassica_rapa","iNatAg/brassica_tournefortii","iNatAg/bridelia_micrantha","iNatAg/briza_maxima","iNatAg/briza_media","iNatAg/briza_minor","iNatAg/bromus_arvensis","iNatAg/bromus_carinatus","iNatAg/bromus_catharticus","iNatAg/bromus_diandrus","iNatAg/bromus_erectus","iNatAg/bromus_hordeaceus","iNatAg/bromus_inermis","iNatAg/bromus_madritensis","iNatAg/bromus_marginatus","iNatAg/bromus_racemosus","iNatAg/bromus_rubens","iNatAg/bromus_secalinus","iNatAg/bromus_sterilis","iNatAg/bromus_tectorum","iNatAg/bromus_unioloides","iNatAg/bromus_willdenowii","iNatAg/brosimum_alicastrum","iNatAg/broussonetia_papyrifera","iNatAg/bruguiera_gymnorrhiza","iNatAg/bryonia_alba","iNatAg/bryonia_cretica","iNatAg/buchloe_dactyloides","iNatAg/buckinghamia_celsissima","iNatAg/bunias_erucago","iNatAg/bunias_orientalis","iNatAg/burkea_africana","iNatAg/bursera_simaruba","iNatAg/butea_monosperma","iNatAg/butomus_umbellatus","iNatAg/buxus_sempervirens","iNatAg/cacalia_atriplicifolia","iNatAg/caesalpinia_coriaria","iNatAg/caesalpinia_sappan","iNatAg/cajanus_cajan","iNatAg/calamagrostis_epigeios","iNatAg/calathea_allouia","iNatAg/calendula_arvensis","iNatAg/calendula_officinalis","iNatAg/calliandra_calothyrsus","iNatAg/calliandra_tweedii","iNatAg/callisia_angustifolia","iNatAg/callitriche_palustris","iNatAg/callitriche_stagnalis","iNatAg/callitriche_verna","iNatAg/callitris_columellaris","iNatAg/callitris_endlicheri","iNatAg/callitris_macleayana","iNatAg/calluna_vulgaris","iNatAg/calodendrum_capense","iNatAg/calophyllum_apetalum","iNatAg/calophyllum_brasiliense","iNatAg/calophyllum_inophyllum","iNatAg/calopogonium_caeruleum","iNatAg/calopogonium_mucunoides","iNatAg/calotropis_procera","iNatAg/caltha_palustris","iNatAg/calystegia_hederacea","iNatAg/calystegia_occidentalis","iNatAg/calystegia_pubescens","iNatAg/camelina_sativa","iNatAg/camellia_sinensis","iNatAg/campanula_americana","iNatAg/campanula_rapunculus","iNatAg/campanula_rotundifolia","iNatAg/cananga_odorata","iNatAg/canavalia_brasiliensis","iNatAg/canavalia_ensiformis","iNatAg/canavalia_gladiata","iNatAg/canna_indica","iNatAg/canthium_spinosum","iNatAg/capparis_decidua","iNatAg/capparis_spinosa","iNatAg/capparis_tomentosa","iNatAg/capsella_bursa-pastoris","iNatAg/capsicum_annuum","iNatAg/capsicum_chinense","iNatAg/capsicum_frutescens","iNatAg/capsicum_pubescens","iNatAg/caragana_arborescens","iNatAg/caragana_microphylla","iNatAg/carapa_guianensis","iNatAg/cardamine_flexuosa","iNatAg/cardamine_hirsuta","iNatAg/cardamine_impatiens","iNatAg/cardamine_oligosperma","iNatAg/cardamine_parviflora","iNatAg/cardamine_pratensis","iNatAg/cardiospermum_halicacabum","iNatAg/carduus_acanthoides","iNatAg/carduus_crispus","iNatAg/carduus_lanceolatus","iNatAg/carduus_pycnocephalus","iNatAg/carex_nebrascensis","iNatAg/carex_pallescens","iNatAg/carica_cauliflora","iNatAg/carica_papaya","iNatAg/carica_pubescens","iNatAg/cariniana_pyriformis","iNatAg/carissa_carandas","iNatAg/carissa_edulis","iNatAg/carissa_macrocarpa","iNatAg/carlina_acaulis","iNatAg/carludovica_palmata","iNatAg/caroxylon_aphyllum","iNatAg/carpinus_betulus","iNatAg/carthamus_creticus","iNatAg/carthamus_lanatus","iNatAg/carthamus_tinctorius","iNatAg/carum_carvi","iNatAg/carya_illinoensis","iNatAg/caryodendron_orinocense","iNatAg/caryota_urens","iNatAg/casimiroa_edulis","iNatAg/cassia_articulata","iNatAg/cassia_brewsteri","iNatAg/cassia_fistula","iNatAg/cassia_marilandica","iNatAg/cassia_nictitans","iNatAg/cassia_reticulata","iNatAg/cassia_senna","iNatAg/cassia_siamea","iNatAg/cassia_sieberiana","iNatAg/cassia_tomentosa","iNatAg/cassia_tora","iNatAg/castanea_crenata","iNatAg/castanea_dentata","iNatAg/castanea_mollissima","iNatAg/castanea_pumila","iNatAg/castanea_sativa","iNatAg/castanospermum_australe","iNatAg/castilla_elastica","iNatAg/castilleja_angustifolia","iNatAg/castilleja_occidentalis","iNatAg/casuarina_cristata","iNatAg/casuarina_cunninghamiana","iNatAg/casuarina_equisetifolia","iNatAg/casuarina_glauca","iNatAg/casuarina_junghuhniana","iNatAg/casuarina_obesa","iNatAg/catalpa_bignonioides","iNatAg/catha_edulis","iNatAg/catharanthus_roseus","iNatAg/ceanothus_americanus","iNatAg/ceanothus_prostratus","iNatAg/cedrela_odorata","iNatAg/cedrus_deodara","iNatAg/ceiba_pentandra","iNatAg/celastrus_orbiculatus","iNatAg/celastrus_scandens","iNatAg/celosia_argentea","iNatAg/celtis_australis","iNatAg/cenchrus_biflorus","iNatAg/cenchrus_ciliaris","iNatAg/cenchrus_echinatus","iNatAg/cenchrus_setigerus","iNatAg/cenchrus_spinifex","iNatAg/cenchrus_tribuloides","iNatAg/centaurea_biebersteinii","iNatAg/centaurea_calcitrapa","iNatAg/centaurea_cyanus","iNatAg/centaurea_diluta","iNatAg/centaurea_jacea","iNatAg/centaurea_melitensis","iNatAg/centaurea_nigra","iNatAg/centaurea_nigrescens","iNatAg/centaurea_solstitalis","iNatAg/centaurea_solstitialis","iNatAg/centaurea_stoebe","iNatAg/centaurea_virgata","iNatAg/centella_asiatica","iNatAg/centropodia_glauca","iNatAg/centrosema_brasilianum","iNatAg/centrosema_macrocarpum","iNatAg/centrosema_pascuorum","iNatAg/centrosema_plumieri","iNatAg/centrosema_pubescens","iNatAg/centrosema_virginianum","iNatAg/cephalanthus_occidentalis","iNatAg/cerastium_arvense","iNatAg/cerastium_nutans","iNatAg/cerastium_vulgatum","iNatAg/ceratonia_siliqua","iNatAg/ceratopetalum_apetalum","iNatAg/ceratophyllum_demersum","iNatAg/ceratophyllum_echinatum","iNatAg/ceriops_tagal","iNatAg/cestrum_diurnum","iNatAg/ceterach_officinarum","iNatAg/chaerophyllum_tainturieri","iNatAg/chamaebatia_foliolosa","iNatAg/chamaecrista_nictitans","iNatAg/chamaecrista_rotundifolia","iNatAg/chamaedorea_tepejilote","iNatAg/chamaerops_humilis","iNatAg/chara_intermedia","iNatAg/chelidonium_majus","iNatAg/chenopodium_album","iNatAg/chenopodium_ambrosioides","iNatAg/chenopodium_ambrosoides","iNatAg/chenopodium_berlandieri","iNatAg/chenopodium_bonus-henricus","iNatAg/chenopodium_botrys","iNatAg/chenopodium_ficifolium","iNatAg/chenopodium_gigantospermum","iNatAg/chenopodium_glaucum","iNatAg/chenopodium_missouriense","iNatAg/chenopodium_multifidum","iNatAg/chenopodium_murale","iNatAg/chenopodium_polyspermum","iNatAg/chenopodium_quinoa","iNatAg/chenopodium_rubrum","iNatAg/chenopodium_urbicum","iNatAg/chloris_ciliata","iNatAg/chloris_gayana","iNatAg/chloris_roxburghiana","iNatAg/chloris_verticillata","iNatAg/chloris_virgata","iNatAg/chlorogalum_pomeridianum","iNatAg/chlorophora_excelsa","iNatAg/chlorophytum_comosum","iNatAg/chloroxylon_swietenia","iNatAg/chromolaena_odorata","iNatAg/chrysanthemum_coronarium","iNatAg/chrysanthemum_leucanthemum","iNatAg/chrysophyllum_cainito","iNatAg/chrysopogon_aciculatus","iNatAg/chukrasia_velutina","iNatAg/cicer_arietinum","iNatAg/cichorium_endivia","iNatAg/cichorium_intybus","iNatAg/cicuta_bulbifera","iNatAg/cicuta_mackenzieana","iNatAg/cicuta_maculata","iNatAg/cicuta_virosa","iNatAg/cimicifuga_racemosa","iNatAg/cinchona_officinalis","iNatAg/cinchona_pubescens","iNatAg/cinnamomum_burmannii","iNatAg/cinnamomum_camphora","iNatAg/cinnamomum_cassia","iNatAg/cinnamomum_verum","iNatAg/cistus_creticus","iNatAg/citrofortunella_microcarpa","iNatAg/citrullus_colocynthis","iNatAg/citrullus_lanatus","iNatAg/citrus_aurantifolia","iNatAg/citrus_aurantium","iNatAg/citrus_deliciosa","iNatAg/citrus_latifolia","iNatAg/citrus_limon","iNatAg/citrus_madurensis","iNatAg/citrus_medica","iNatAg/citrus_paradisi","iNatAg/citrus_reticulata","iNatAg/citrus_sinensis","iNatAg/citrus_unshiu","iNatAg/clausena_lansium","iNatAg/claytonia_caroliniana","iNatAg/claytonia_virginica","iNatAg/cleistogenes_squarrosa","iNatAg/clematis_ligusticifolia","iNatAg/clematis_orientalis","iNatAg/clematis_virginiana","iNatAg/clematis_vitalba","iNatAg/cleome_gynandra","iNatAg/cleome_hassleriana","iNatAg/cleome_viscosa","iNatAg/clitoria_laurifolia","iNatAg/clitoria_ternatea","iNatAg/clusia_occidentalis","iNatAg/cnicus_benedictus","iNatAg/coccoloba_uvifera","iNatAg/cochlospermum_religiosum","iNatAg/cocos_nucifera","iNatAg/coffea_arabica","iNatAg/coffea_canephora","iNatAg/coffea_liberica","iNatAg/coix_lacryma-jobi","iNatAg/cola_acuminata","iNatAg/cola_nitida","iNatAg/colchicum_autumnale","iNatAg/coleus_amboinicus","iNatAg/colocasia_esculenta","iNatAg/colophospermum_mopane","iNatAg/combretum_aculeatum","iNatAg/combretum_micranthum","iNatAg/combretum_molle","iNatAg/commelina_bengalensis","iNatAg/commelina_benghalensis","iNatAg/commelina_communis","iNatAg/commelina_erecta","iNatAg/commiphora_africana","iNatAg/conium_maculatum","iNatAg/conocarpus_erectus","iNatAg/conocarpus_lancifolius","iNatAg/convallaria_majalis","iNatAg/convolvulus_althaeoides","iNatAg/convolvulus_arvensis","iNatAg/convolvulus_equitans","iNatAg/convolvulus_sepium","iNatAg/copaifera_langsdorffii","iNatAg/corchorus_aestuans","iNatAg/corchorus_capsularis","iNatAg/cordia_africana","iNatAg/cordia_alliodora","iNatAg/coreopsis_lanceolata","iNatAg/coreopsis_tinctoria","iNatAg/coreopsis_verticillata","iNatAg/coriandrum_sativum","iNatAg/corispermum_hyssopifolium","iNatAg/corispermum_villosum","iNatAg/cornus_canadensis","iNatAg/cornus_florida","iNatAg/cornus_mas","iNatAg/cornus_sanguinea","iNatAg/coronilla_varia","iNatAg/corylus_avellana","iNatAg/corylus_maxima","iNatAg/cotoneaster_franchetii","iNatAg/cotula_coronopifolia","iNatAg/crambe_cordifolia","iNatAg/crambe_maritima","iNatAg/crassula_sieberiana","iNatAg/crataegus_crus-galli","iNatAg/crataegus_crus-gallii","iNatAg/crataegus_marshallii","iNatAg/crataegus_monogyna","iNatAg/crataegus_oxyacantha","iNatAg/crataegus_rivularis","iNatAg/cratylia_argentea","iNatAg/crepis_biennis","iNatAg/crepis_occidentalis","iNatAg/crepis_vesicaria","iNatAg/cressa_truxillensis","iNatAg/crinum_americanum","iNatAg/crithmum_maritimum","iNatAg/crocus_sativus","iNatAg/crotalaria_juncea","iNatAg/crotalaria_lanceolata","iNatAg/crotalaria_pallida","iNatAg/crotalaria_podocarpa","iNatAg/crotalaria_retusa","iNatAg/crotalaria_sagittalis","iNatAg/crotalaria_spectabilis","iNatAg/croton_monanthogynus","iNatAg/crucianella_angustifolia","iNatAg/cryptocarya_erythroxylon","iNatAg/cryptomeria_japonica","iNatAg/cryptotaenia_japonica","iNatAg/ctenium_concinnum","iNatAg/cucumis_anguria","iNatAg/cucumis_melo","iNatAg/cucumis_sativus","iNatAg/cucurbita_argyrosperma","iNatAg/cucurbita_digitata","iNatAg/cucurbita_ficifolia","iNatAg/cucurbita_foetidissima","iNatAg/cucurbita_maxima","iNatAg/cucurbita_mixta","iNatAg/cucurbita_moschata","iNatAg/cucurbita_pepo","iNatAg/cunninghamia_lanceolata","iNatAg/cupania_auriculata","iNatAg/cuphea_viscosissima","iNatAg/cupressus_arizonica","iNatAg/cupressus_lusitanica","iNatAg/cupressus_macrocarpa","iNatAg/cupressus_sempervirens","iNatAg/cupressus_torulosa","iNatAg/curcuma_longa","iNatAg/curcuma_zedoaria","iNatAg/cuscuta_approximata","iNatAg/cuscuta_epithymum","iNatAg/cuscuta_obtusiflora","iNatAg/cuscuta_planiflora","iNatAg/cuscuta_sandwichiana","iNatAg/cydonia_oblonga","iNatAg/cymbalaria_muralis","iNatAg/cymbopogon_citratus","iNatAg/cynanchum_scoparium","iNatAg/cynara_cardunculus","iNatAg/cynara_scolymus","iNatAg/cynodon_dactylon","iNatAg/cynodon_nlemfuensis","iNatAg/cynoglossum_officinale","iNatAg/cynometra_cauliflora","iNatAg/cynosurus_cristatus","iNatAg/cyperus_alopecuroides","iNatAg/cyperus_articulatus","iNatAg/cyperus_compressus","iNatAg/cyperus_croceus","iNatAg/cyperus_cuspidatus","iNatAg/cyperus_difformis","iNatAg/cyperus_eragrostis","iNatAg/cyperus_erythrorhizos","iNatAg/cyperus_esculentus","iNatAg/cyperus_flavescens","iNatAg/cyperus_fuscus","iNatAg/cyperus_hyalinus","iNatAg/cyperus_involucratus","iNatAg/cyperus_iria","iNatAg/cyperus_lanceolatus","iNatAg/cyperus_longus","iNatAg/cyperus_odoratus","iNatAg/cyperus_pilosus","iNatAg/cyperus_prolifer","iNatAg/cyperus_pseudovegetus","iNatAg/cyperus_rotundus","iNatAg/cyperus_sanguinolentus","iNatAg/cyperus_squarrosus","iNatAg/cyperus_strigosus","iNatAg/cyperus_subsquarrosus","iNatAg/cyperus_surinamensis","iNatAg/cyphomandra_betacea","iNatAg/cytisus_albus","iNatAg/cytisus_proliferus","iNatAg/cytisus_supinus","iNatAg/dacrydium_franklinii","iNatAg/dactylis_glomerata","iNatAg/dactyloctenium_aegyptium","iNatAg/dactyloctenium_giganteum","iNatAg/dalbergia_latifolia","iNatAg/dalbergia_melanoxylon","iNatAg/dalbergia_sissoo","iNatAg/daphne_laureola","iNatAg/daphne_mezereum","iNatAg/datura_ferox","iNatAg/datura_quercifolia","iNatAg/datura_stramonium","iNatAg/daucus_carota","iNatAg/daucus_carrota","iNatAg/delairea_odorata","iNatAg/delonix_regia","iNatAg/delphinium_bicolor","iNatAg/delphinium_carolinianum","iNatAg/delphinium_menziesii","iNatAg/delphinium_trolliifolium","iNatAg/dendrocalamus_asper","iNatAg/dendrocalamus_giganteus","iNatAg/dendrocalamus_strictus","iNatAg/dendrolobium_umbellatum","iNatAg/derris_elliptica","iNatAg/deschampsia_caespitosa","iNatAg/deschampsia_flexuosa","iNatAg/desmanthus_leptophyllus","iNatAg/desmanthus_virgatus","iNatAg/desmodium_affine","iNatAg/desmodium_barbatum","iNatAg/desmodium_cuneatum","iNatAg/desmodium_cuspidatum","iNatAg/desmodium_distortum","iNatAg/desmodium_gyroides","iNatAg/desmodium_heterophyllum","iNatAg/desmodium_incanum","iNatAg/desmodium_intortum","iNatAg/desmodium_paniculatum","iNatAg/desmodium_psilocarpum","iNatAg/desmodium_reticulatum","iNatAg/desmodium_sandwicense","iNatAg/desmodium_scorpiurus","iNatAg/desmodium_tortuosum","iNatAg/desmodium_triflorum","iNatAg/desmodium_uncinatum","iNatAg/desmodium_velutinum","iNatAg/dialium_guineense","iNatAg/dianthus_armeria","iNatAg/dichanthium_annulatum","iNatAg/dichanthium_aristatum","iNatAg/dichanthium_caricosum","iNatAg/dichanthium_sericeum","iNatAg/dichondra_carolinensis","iNatAg/dichondra_micrantha","iNatAg/dichrostachys_cinerea","iNatAg/dictamnus_albus","iNatAg/didymopanax_morototoni","iNatAg/diervilla_lonicera","iNatAg/digitalis_lanata","iNatAg/digitalis_lutea","iNatAg/digitalis_purpurea","iNatAg/digitaria_argyrograpta","iNatAg/digitaria_ciliaris","iNatAg/digitaria_decumbens","iNatAg/digitaria_didactyla","iNatAg/digitaria_eriantha","iNatAg/digitaria_tricholaenoides","iNatAg/digitaria_violascens","iNatAg/dillenia_indica","iNatAg/dillenia_pentagyna","iNatAg/diodia_virginiana","iNatAg/dioscorea_alata","iNatAg/dioscorea_bulbifera","iNatAg/dioscorea_esculenta","iNatAg/dioscorea_opposita","iNatAg/dioscorea_oppositifolia","iNatAg/dioscorea_trifida","iNatAg/diospyros_digyna","iNatAg/diospyros_kaki","iNatAg/diospyros_malabarica","iNatAg/diospyros_melanoxylon","iNatAg/diospyros_mespiliformis","iNatAg/diospyros_virginiana","iNatAg/diplachne_fusca","iNatAg/diploglottis_cunninghamii","iNatAg/dipsacus_fullonum","iNatAg/dipsacus_laciniatus","iNatAg/dipsacus_sylvestris","iNatAg/dipterocarpus_alatus","iNatAg/dipterocarpus_indicus","iNatAg/dipterocarpus_turbinatus","iNatAg/dodonaea_viscosa","iNatAg/dovyalis_caffra","iNatAg/dovyalis_hebecarpa","iNatAg/draba_nemorosa","iNatAg/draba_verna","iNatAg/dracocephalum_parviflorum","iNatAg/dracocephalum_thymiflorum","iNatAg/drosera_rotundifolia","iNatAg/dryopteris_filix-mas","iNatAg/duboisia_myoporoides","iNatAg/durio_zibethinus","iNatAg/dysoxylum_fraserianum","iNatAg/ecballium_elaterium","iNatAg/echinacea_purpurea","iNatAg/echinochloa_colona","iNatAg/echinochloa_crus-galli","iNatAg/echinochloa_frumentacea","iNatAg/echinochloa_polystachya","iNatAg/echinochloa_pyramidalis","iNatAg/echinops_sphaerocephalus","iNatAg/echium_plantagineum","iNatAg/echium_vulgare","iNatAg/ehrharta_calycina","iNatAg/ehrharta_erecta","iNatAg/ehrharta_longiflora","iNatAg/ehrharta_villosa","iNatAg/eichhornia_crassipes","iNatAg/ekebergia_capensis","iNatAg/elaeagnus_angustifolia","iNatAg/elaeagnus_multiflora","iNatAg/elaeis_guineensis","iNatAg/elaeis_oleifera","iNatAg/elaeocarpus_grandis","iNatAg/eleagnus_angustifolia","iNatAg/elegia_cuspidata","iNatAg/eleocharis_cellulosa","iNatAg/eleocharis_dulcis","iNatAg/eleocharis_macrostachya","iNatAg/eleocharis_montevidensis","iNatAg/eleocharis_vivipara","iNatAg/elephantopus_mollis","iNatAg/elephantorrhiza_elephantina","iNatAg/elettaria_cardamomum","iNatAg/eleusine_indica","iNatAg/ellisia_nyctelea","iNatAg/elsholtzia_ciliata","iNatAg/elymus_canadensis","iNatAg/elymus_caput-medusae","iNatAg/elymus_cinereus","iNatAg/elymus_condensatus","iNatAg/elymus_dahuricus","iNatAg/elymus_glaucus","iNatAg/elymus_viginicus","iNatAg/elymus_virginicus","iNatAg/emilia_sonchifolia","iNatAg/encalypta_intermedia","iNatAg/enneapogon_scoparius","iNatAg/ensete_ventricosum","iNatAg/entada_abyssinica","iNatAg/entada_africana","iNatAg/enterolobium_cyclocarpum","iNatAg/epilobium_angustifolium","iNatAg/epilobium_ciliatum","iNatAg/equisetum_arvense","iNatAg/equisetum_hyemale","iNatAg/equisetum_palustre","iNatAg/equisetum_sylvaticum","iNatAg/equisetum_telmateia","iNatAg/eragrostis_amabilis","iNatAg/eragrostis_barrelieri","iNatAg/eragrostis_capillaris","iNatAg/eragrostis_chloromelas","iNatAg/eragrostis_cilianensis","iNatAg/eragrostis_curvula","iNatAg/eragrostis_interrupta","iNatAg/eragrostis_lehmanniana","iNatAg/eragrostis_minor","iNatAg/eragrostis_obtusa","iNatAg/eragrostis_pilosa","iNatAg/eragrostis_racemosa","iNatAg/eragrostis_superba","iNatAg/eragrostis_tef","iNatAg/eragrostis_tremula","iNatAg/eragrostis_trichodes","iNatAg/eragrostis_unioloides","iNatAg/eremochloa_ophiuroides","iNatAg/erigeron_canadensis","iNatAg/erigeron_cascadensis","iNatAg/erigeron_divaricatus","iNatAg/erigeron_philadelphicus","iNatAg/eriobotrya_japonica","iNatAg/eriochloa_punctata","iNatAg/eriogonum_deflexum","iNatAg/eriogonum_longifolium","iNatAg/eriosema_psoraleoides","iNatAg/eruca_sativa","iNatAg/eryngium_campestre","iNatAg/eryngium_yuccifolium","iNatAg/erysimum_cheiranthoides","iNatAg/erysimum_hieracifolium","iNatAg/erysimum_hieraciifolium","iNatAg/erysimum_repandum","iNatAg/erythrina_abyssinica","iNatAg/erythrina_caffra","iNatAg/erythrina_edulis","iNatAg/erythrina_fusca","iNatAg/erythrina_poeppigiana","iNatAg/erythrina_variegata","iNatAg/erythrina_vespertilio","iNatAg/erythrophleum_chlorostachys","iNatAg/erythroxylum_coca","iNatAg/eucalyptus_accedens","iNatAg/eucalyptus_agglomerata","iNatAg/eucalyptus_albens","iNatAg/eucalyptus_astringens","iNatAg/eucalyptus_bosistoana","iNatAg/eucalyptus_botryoides","iNatAg/eucalyptus_brockwayi","iNatAg/eucalyptus_calophylla","iNatAg/eucalyptus_camaldulensis","iNatAg/eucalyptus_cinerea","iNatAg/eucalyptus_citriodora","iNatAg/eucalyptus_cladocalyx","iNatAg/eucalyptus_cloeziana","iNatAg/eucalyptus_consideniana","iNatAg/eucalyptus_cornuta","iNatAg/eucalyptus_crebra","iNatAg/eucalyptus_cypellocarpa","iNatAg/eucalyptus_dalrympleana","iNatAg/eucalyptus_deglupta","iNatAg/eucalyptus_delegatensis","iNatAg/eucalyptus_diversicolor","iNatAg/eucalyptus_dumosa","iNatAg/eucalyptus_elata","iNatAg/eucalyptus_eremophila","iNatAg/eucalyptus_eugenioides","iNatAg/eucalyptus_exserta","iNatAg/eucalyptus_fastigata","iNatAg/eucalyptus_fraxinoides","iNatAg/eucalyptus_globoidea","iNatAg/eucalyptus_globulus","iNatAg/eucalyptus_gomphocephala","iNatAg/eucalyptus_gongylocarpa","iNatAg/eucalyptus_grandis","iNatAg/eucalyptus_guilfoylei","iNatAg/eucalyptus_gummifera","iNatAg/eucalyptus_intertexta","iNatAg/eucalyptus_jacksonii","iNatAg/eucalyptus_johnstonii","iNatAg/eucalyptus_kessellii","iNatAg/eucalyptus_laophila","iNatAg/eucalyptus_largiflorens","iNatAg/eucalyptus_leucoxylon","iNatAg/eucalyptus_longifolia","iNatAg/eucalyptus_loxophleba","iNatAg/eucalyptus_maculata","iNatAg/eucalyptus_marginata","iNatAg/eucalyptus_melliodora","iNatAg/eucalyptus_microcarpa","iNatAg/eucalyptus_microcorys","iNatAg/eucalyptus_microtheca","iNatAg/eucalyptus_mitchelliana","iNatAg/eucalyptus_moluccana","iNatAg/eucalyptus_muelleriana","iNatAg/eucalyptus_nigrifunda","iNatAg/eucalyptus_niphophila","iNatAg/eucalyptus_nitens","iNatAg/eucalyptus_obliqua","iNatAg/eucalyptus_occidentalis","iNatAg/eucalyptus_ochrophloia","iNatAg/eucalyptus_oreades","iNatAg/eucalyptus_paniculata","iNatAg/eucalyptus_papuana","iNatAg/eucalyptus_patens","iNatAg/eucalyptus_pauciflora","iNatAg/eucalyptus_pellita","iNatAg/eucalyptus_phoenicea","iNatAg/eucalyptus_pilularis","iNatAg/eucalyptus_piperita","iNatAg/eucalyptus_planchoniana","iNatAg/eucalyptus_pleurocarpa","iNatAg/eucalyptus_polyanthemos","iNatAg/eucalyptus_populnea","iNatAg/eucalyptus_propinqua","iNatAg/eucalyptus_pulchella","iNatAg/eucalyptus_punctata","iNatAg/eucalyptus_pyrocarpa","iNatAg/eucalyptus_quadrangulata","iNatAg/eucalyptus_regnans","iNatAg/eucalyptus_resinifera","iNatAg/eucalyptus_robusta","iNatAg/eucalyptus_rubida","iNatAg/eucalyptus_rudis","iNatAg/eucalyptus_saligna","iNatAg/eucalyptus_salmonophloia","iNatAg/eucalyptus_salubris","iNatAg/eucalyptus_sargentii","iNatAg/eucalyptus_scias","iNatAg/eucalyptus_sideroxylon","iNatAg/eucalyptus_sieberi","iNatAg/eucalyptus_socialis","iNatAg/eucalyptus_subcrenulata","iNatAg/eucalyptus_tereticornis","iNatAg/eucalyptus_thozetiana","iNatAg/eucalyptus_transcontinentalis","iNatAg/eucalyptus_trivalva","iNatAg/eucalyptus_urnigera","iNatAg/eucalyptus_urophylla","iNatAg/eucalyptus_utilis","iNatAg/eucalyptus_viminalis","iNatAg/eucalyptus_wandoo","iNatAg/eucalyptus_woollsiana","iNatAg/eucryphia_lucida","iNatAg/eugenia_aromatica","iNatAg/eugenia_stipitata","iNatAg/eugenia_uniflora","iNatAg/euonymus_atropurpureus","iNatAg/euonymus_europaeus","iNatAg/euonymus_japonicus","iNatAg/eupatorium_album","iNatAg/eupatorium_altissimum","iNatAg/eupatorium_cannabinum","iNatAg/eupatorium_compositifolium","iNatAg/eupatorium_hyssopifolium","iNatAg/eupatorium_maculatum","iNatAg/eupatorium_perfoliatum","iNatAg/eupatorium_purpureum","iNatAg/eupatorium_serotinum","iNatAg/euphorbia_cyathophora","iNatAg/euphorbia_cyparissias","iNatAg/euphorbia_dendroides","iNatAg/euphorbia_epicyparissias","iNatAg/euphorbia_esula","iNatAg/euphorbia_helioscopia","iNatAg/euphorbia_heterophylla","iNatAg/euphorbia_hirsuta","iNatAg/euphorbia_hirta","iNatAg/euphorbia_hyssopifolia","iNatAg/euphorbia_lathyris","iNatAg/euphorbia_lathyrus","iNatAg/euphorbia_maculata","iNatAg/euphorbia_marginata","iNatAg/euphorbia_nutans","iNatAg/euphorbia_peplis","iNatAg/euphorbia_peplus","iNatAg/euphorbia_platyphyllos","iNatAg/euphorbia_prostata","iNatAg/euphorbia_prostrata","iNatAg/euphorbia_serphyllifolia","iNatAg/euphorbia_serpyllifolia","iNatAg/euphorbia_serrata","iNatAg/euphorbia_serrulata","iNatAg/euphorbia_spathulata","iNatAg/euphorbia_terracina","iNatAg/euphorbia_tirucalli","iNatAg/euphorbia_vermiculata","iNatAg/eurycoma_longifolia","iNatAg/eusideroxylon_zwageri","iNatAg/eustachys_paspaloides","iNatAg/euterpe_edulis","iNatAg/euterpe_oleracea","iNatAg/euthamia_occidentalis","iNatAg/evax_multicaulis","iNatAg/evonymus_europaeus","iNatAg/excoecaria_agallocha","iNatAg/fagopyrum_esculentum","iNatAg/fagopyrum_tataricum","iNatAg/fagraea_fragrans","iNatAg/fagus_grandifolia","iNatAg/fagus_sylvatica","iNatAg/faidherbia_albida","iNatAg/faurea_saligna","iNatAg/feijoa_sellowiana","iNatAg/festuca_arundinacea","iNatAg/festuca_gigantea","iNatAg/festuca_idahoensis","iNatAg/festuca_microstachys","iNatAg/festuca_myuros","iNatAg/festuca_ovina","iNatAg/festuca_pratensis","iNatAg/festuca_rubra","iNatAg/festuca_scabra","iNatAg/fibraurea_tinctoria","iNatAg/ficus_abutilifolia","iNatAg/ficus_auriculata","iNatAg/ficus_benghalensis","iNatAg/ficus_carica","iNatAg/ficus_elastica","iNatAg/ficus_glumosa","iNatAg/ficus_macrophylla","iNatAg/ficus_sycomorus","iNatAg/ficus_thonningii","iNatAg/filago_gallica","iNatAg/filipendula_vulgaris","iNatAg/flacourtia_indica","iNatAg/flemingia_macrophylla","iNatAg/flindersia_bourjotiana","iNatAg/flindersia_brayleyana","iNatAg/flindersia_pimenteliana","iNatAg/foeniculum_vulgare","iNatAg/fortunella_hindsii","iNatAg/fortunella_japonica","iNatAg/fortunella_margarita","iNatAg/fragaria_ananassa","iNatAg/fragaria_chiloensis","iNatAg/fragaria_vesca","iNatAg/fragaria_virginiana","iNatAg/frangula_alnus","iNatAg/fraxinus_americana","iNatAg/fraxinus_excelsior","iNatAg/frithia_humilis","iNatAg/fuirena_simplex","iNatAg/fumaria_capreolata","iNatAg/fumaria_officinalis","iNatAg/fumaria_parviflora","iNatAg/gaillardia_pulchella","iNatAg/galactia_marginalis","iNatAg/galactia_striata","iNatAg/galega_officinalis","iNatAg/galega_orientalis","iNatAg/galeopsis_ladanum","iNatAg/galeopsis_tetrahit","iNatAg/galinsoga_quadriradiata","iNatAg/galium_aparine","iNatAg/galium_mollugo","iNatAg/galium_paniculatum","iNatAg/galium_parisiense","iNatAg/galium_saxatile","iNatAg/galium_spurium","iNatAg/galium_tricornutum","iNatAg/galium_verum","iNatAg/garcinia_dulcis","iNatAg/garcinia_mangostana","iNatAg/garcinia_multiflora","iNatAg/garcinia_xanthochymus","iNatAg/garuga_pinnata","iNatAg/gaultheria_procumbens","iNatAg/gaura_biennis","iNatAg/geissois_benthamii","iNatAg/genipa_americana","iNatAg/genista_canariensis","iNatAg/genista_tinctoria","iNatAg/gentiana_acaulis","iNatAg/gentiana_lutea","iNatAg/geranium_carolinianum","iNatAg/geranium_dissectum","iNatAg/geranium_molle","iNatAg/geranium_pratense","iNatAg/geranium_pusillum","iNatAg/geranium_robertianum","iNatAg/girardinia_diversifolia","iNatAg/glechoma_hederacea","iNatAg/glecoma_hederacea","iNatAg/gleditsia_triacanthos","iNatAg/gliricidia_sepium","iNatAg/globularia_vulgaris","iNatAg/glyceria_fluitans","iNatAg/glyceria_septentrionalis","iNatAg/glycine_max","iNatAg/glycyrrhiza_glabra","iNatAg/glycyrrhiza_lepidota","iNatAg/gmelina_arborea","iNatAg/gmelina_leichhardtii","iNatAg/gnaphalium_calviceps","iNatAg/gnaphalium_luteo-album","iNatAg/gnaphalium_luteoalbum","iNatAg/gnaphalium_palustre","iNatAg/gnaphalium_pensylvanicum","iNatAg/gnaphalium_purpureum","iNatAg/gnaphalium_uliginosum","iNatAg/gossypium_barbadense","iNatAg/gossypium_herbaceum","iNatAg/gossypium_hirsutum","iNatAg/grevillea_parallela","iNatAg/grevillea_robusta","iNatAg/grewia_asiatica","iNatAg/grewia_bicolor","iNatAg/grewia_tiliifolia","iNatAg/guaiacum_officinale","iNatAg/guaiacum_sanctum","iNatAg/guazuma_ulmifolia","iNatAg/guizotia_abyssinica","iNatAg/gunnera_tinctoria","iNatAg/gypsophila_paniculata","iNatAg/hagenia_abyssinica","iNatAg/hamamelis_virginiana","iNatAg/hardwickia_binata","iNatAg/harpagophytum_procumbens","iNatAg/harpochloa_falx","iNatAg/harungana_madagascariensis","iNatAg/hedera_helix","iNatAg/hedysarum_coronarium","iNatAg/hedysarum_pallidum","iNatAg/hedysarum_spinosissimum","iNatAg/helenium_autumnale","iNatAg/helenium_tenuifolium","iNatAg/helianthus_annus","iNatAg/helianthus_annuus","iNatAg/helianthus_ciliaris","iNatAg/helianthus_pauciflorus","iNatAg/helianthus_petiolaris","iNatAg/helianthus_tuberosus","iNatAg/helictotrichon_turgidulum","iNatAg/heliotropium_amplexicaule","iNatAg/heliotropium_curassavicum","iNatAg/heliotropium_europaeum","iNatAg/hemarthria_altissima","iNatAg/hemizonia_congesta","iNatAg/heracleum_sphondylium","iNatAg/heritiera_littoralis","iNatAg/heteropogon_contortus","iNatAg/heterotheca_grandiflora","iNatAg/heuchera_mexicana","iNatAg/hevea_brasiliensis","iNatAg/hibiscus_cannabinus","iNatAg/hibiscus_sabdariffa","iNatAg/hibiscus_syriacus","iNatAg/hibiscus_tiliaceus","iNatAg/hibiscus_tilliaceus","iNatAg/hieracium_aurantiacum","iNatAg/hieracium_gronovii","iNatAg/hieracium_lachenalii","iNatAg/hieracium_laevigatum","iNatAg/hieracium_murorum","iNatAg/hieracium_pilosella","iNatAg/hieracium_piloselloides","iNatAg/hieracium_umbellatum","iNatAg/hieracium_venosum","iNatAg/hieracium_vulgatum","iNatAg/hierochloe_odorata","iNatAg/hilaria_jamesii","iNatAg/hilaria_mutica","iNatAg/hippophae_rhamnoides","iNatAg/hippophae_salicifolia","iNatAg/hippuris_vulgaris","iNatAg/holcus_lanatus","iNatAg/holcus_mollis","iNatAg/hopea_odorata","iNatAg/hopea_parviflora","iNatAg/hopea_wightiana","iNatAg/hordeum_brachyantherum","iNatAg/hordeum_brevisubulatum","iNatAg/hordeum_bulbosum","iNatAg/hordeum_distichon","iNatAg/hordeum_geniculatum","iNatAg/hordeum_jubatum","iNatAg/hordeum_murinum","iNatAg/hordeum_vulgare","iNatAg/houstonia_caerulea","iNatAg/humulus_lupulus","iNatAg/hydnocarpus_alpina","iNatAg/hydrocotyle_americana","iNatAg/hydrocotyle_mexicana","iNatAg/hydrocotyle_ranunculoides","iNatAg/hydrocotyle_sibthorpioides","iNatAg/hydrocotyle_umbellata","iNatAg/hydrocotyle_verticillata","iNatAg/hydrolea_uniflora","iNatAg/hylocereus_undatus","iNatAg/hymenaea_courbaril","iNatAg/hymenopappus_scabiosaeus","iNatAg/hymenoxys_odorata","iNatAg/hyosciamus_niger","iNatAg/hyoscyamus_niger","iNatAg/hyparrhenia_dregeana","iNatAg/hyparrhenia_filipendula","iNatAg/hyparrhenia_hirta","iNatAg/hyparrhenia_rufa","iNatAg/hypericum_canadense","iNatAg/hypericum_canariense","iNatAg/hypericum_mutilum","iNatAg/hypericum_mutlium","iNatAg/hypericum_perforatum","iNatAg/hypericum_prolificum","iNatAg/hypericum_punctatum","iNatAg/hyperthelia_dissoluta","iNatAg/hyphaene_compressa","iNatAg/hyphaene_thebaica","iNatAg/hypochaeris_glabra","iNatAg/hypochaeris_radicata","iNatAg/hypoxis_hemerocallidea","iNatAg/hyssopus_officinalis","iNatAg/ilex_aquifolium","iNatAg/ilex_dipyrena","iNatAg/ilex_paraguariensis","iNatAg/impatiens_balsamina","iNatAg/impatiens_parviflora","iNatAg/imperata_brevifolia","iNatAg/imperata_cylindrica","iNatAg/indigofera_arrecta","iNatAg/indigofera_hirsuta","iNatAg/indigofera_oblongifolia","iNatAg/indigofera_schimperi","iNatAg/indigofera_spicata","iNatAg/indigofera_suffruticosa","iNatAg/indigofera_tinctoria","iNatAg/inga_edulis","iNatAg/inga_vera","iNatAg/intsia_bijuga","iNatAg/inula_britannica","iNatAg/inula_helenium","iNatAg/ipomoea_alba","iNatAg/ipomoea_aquatica","iNatAg/ipomoea_batatas","iNatAg/ipomoea_coccinea","iNatAg/ipomoea_hederifolia","iNatAg/ipomoea_lacunosa","iNatAg/ipomoea_quamoclit","iNatAg/ipomoea_tricolor","iNatAg/ipomoea_triloba","iNatAg/ipomoea_turbinata","iNatAg/iris_germanica","iNatAg/iris_missouriensis","iNatAg/iris_pseudacorus","iNatAg/iris_pseudoacorus","iNatAg/iris_virginica","iNatAg/isatis_tinctoria","iNatAg/ischaemum_ciliare","iNatAg/ischaemum_muticum","iNatAg/ischaemum_rugosum","iNatAg/iseilema_vaginiflorum","iNatAg/iva_angustifolia","iNatAg/iva_annua","iNatAg/jacaranda_copaia","iNatAg/jacaranda_mimosifolia","iNatAg/jatropha_curcas","iNatAg/jatropha_gossypifolia","iNatAg/jatropha_gossypiifolia","iNatAg/juglans_hindsii","iNatAg/juglans_nigra","iNatAg/juglans_regia","iNatAg/juncus_bufonius","iNatAg/juncus_effusus","iNatAg/juniperus_communis","iNatAg/juniperus_occidentalis","iNatAg/juniperus_pinchotii","iNatAg/juniperus_procera","iNatAg/juniperus_sabina","iNatAg/justicia_adhatoda","iNatAg/kalmia_angustifolia","iNatAg/khaya_anthotheca","iNatAg/khaya_senegalensis","iNatAg/kigelia_pinnata","iNatAg/kyllinga_gracillima","iNatAg/kyllinga_odorata","iNatAg/lablab_purpureus","iNatAg/lactuca_canadensis","iNatAg/lactuca_indica","iNatAg/lactuca_saligna","iNatAg/lactuca_serriola","iNatAg/lactuca_virosa","iNatAg/lagascea_mollis","iNatAg/lagenaria_siceraria","iNatAg/lagerstroemia_flos-reginae","iNatAg/lagerstroemia_lanceolata","iNatAg/lagerstroemia_parviflora","iNatAg/laguncularia_racemosa","iNatAg/lamium_album","iNatAg/lamium_amplexicaule","iNatAg/lamium_maculatum","iNatAg/lamium_purpureum","iNatAg/lannea_coromandelica","iNatAg/lannea_edulis","iNatAg/lansium_domesticum","iNatAg/lantana_camara","iNatAg/lapsana_communis","iNatAg/larix_decidua","iNatAg/larrea_divaricata","iNatAg/lathyrus_angulatus","iNatAg/lathyrus_cicera","iNatAg/lathyrus_hirsutus","iNatAg/lathyrus_latifolius","iNatAg/lathyrus_ochrus","iNatAg/lathyrus_odoratus","iNatAg/lathyrus_palustris","iNatAg/lathyrus_pratensis","iNatAg/lathyrus_pubescens","iNatAg/lathyrus_sativus","iNatAg/lathyrus_tingitanus","iNatAg/lathyrus_tuberosus","iNatAg/laurus_nobilis","iNatAg/lavandula_angustifolia","iNatAg/lavandula_dentata","iNatAg/lavandula_latifolia","iNatAg/lawsonia_inermis","iNatAg/ledum_groenlandicum","iNatAg/leersia_hexandra","iNatAg/leersia_lenticularis","iNatAg/lemna_aequinoctialis","iNatAg/lemna_gibba","iNatAg/lemna_minor","iNatAg/lemna_trisulca","iNatAg/lens_culinaris","iNatAg/leontodon_autumnale","iNatAg/leontodon_autumnalis","iNatAg/leontodon_hirtus","iNatAg/leontodon_saxatilis","iNatAg/leontopodium_alpinum","iNatAg/leonurus_cardiaca","iNatAg/leonurus_marrubiastrum","iNatAg/leonurus_sibericus","iNatAg/leonurus_sibiricus","iNatAg/lepidium_austrinum","iNatAg/lepidium_chalepense","iNatAg/lepidium_didymum","iNatAg/lepidium_draba","iNatAg/lepidium_lasiocarpum","iNatAg/lepidium_latifolium","iNatAg/lepidium_perfoliatum","iNatAg/lepidium_ruderale","iNatAg/lepidium_sativum","iNatAg/lepidium_virginicum","iNatAg/leptochloa_chinensis","iNatAg/leptochloa_fusca","iNatAg/leptochloa_nealleyi","iNatAg/lespedeza_cuneata","iNatAg/lespedeza_striata","iNatAg/lesquerella_fendleri","iNatAg/leucaena_diversifolia","iNatAg/leucaena_leucocephala","iNatAg/leucanthemum_vulgare","iNatAg/leucojum_aestivum","iNatAg/levisticum_officinale","iNatAg/liatris_mucronata","iNatAg/licuala_ramsayi","iNatAg/ligustrum_ovalifolium","iNatAg/ligustrum_vulgare","iNatAg/lilium_canadense","iNatAg/lilium_candidum","iNatAg/limnanthes_alba","iNatAg/limnophila_sessiliflora","iNatAg/linaria_vulgaris","iNatAg/lindernia_grandiflora","iNatAg/linum_usitatissimum","iNatAg/lippia_alba","iNatAg/liquidambar_styraciflua","iNatAg/liriodendron_tulipifera","iNatAg/litchi_chinensis","iNatAg/lithospermum_arvense","iNatAg/lithospermum_officinale","iNatAg/livistona_australis","iNatAg/lobelia_inflata","iNatAg/lobelia_siphilitica","iNatAg/lolium_multiflorum","iNatAg/lolium_perenne","iNatAg/lolium_rigidum","iNatAg/lolium_temulentum","iNatAg/lonchocarpus_laxiflorus","iNatAg/lonicera_caerulea","iNatAg/lonicera_caprifolium","iNatAg/lonicera_periclymenum","iNatAg/lonicera_sempervirens","iNatAg/lonicera_tartarica","iNatAg/lonicera_tatarica","iNatAg/lonicera_xylosteum","iNatAg/lophostemon_suaveolens","iNatAg/lotus_corniculatus","iNatAg/lotus_creticus","iNatAg/lotus_edulis","iNatAg/lotus_halophilus","iNatAg/lotus_parviflorus","iNatAg/lotus_tenuis","iNatAg/lotus_uliginosus","iNatAg/loudetia_simplex","iNatAg/ludwigia_adscendens","iNatAg/ludwigia_alternifolia","iNatAg/luffa_acutangula","iNatAg/luffa_cylindrica","iNatAg/lumnitzera_littorea","iNatAg/lumnitzera_racemosa","iNatAg/lunaria_annua","iNatAg/lupinus_albus","iNatAg/lupinus_angustifolius","iNatAg/lupinus_arboreus","iNatAg/lupinus_cosentinii","iNatAg/lupinus_luteus","iNatAg/lupinus_mutabilis","iNatAg/lupinus_pilosus","iNatAg/lychnis_chalcedonica","iNatAg/lychnis_flos-cuculi","iNatAg/lychnis_viscaria","iNatAg/lycium_barbarum","iNatAg/lycium_berlandieri","iNatAg/lycium_chinense","iNatAg/lycium_ferocissimum","iNatAg/lycium_halimifolium","iNatAg/lycopersicon_esculentum","iNatAg/lycopodium_clavatum","iNatAg/lycopus_europaeus","iNatAg/lysimachia_ciliata","iNatAg/lysimachia_nummularia","iNatAg/lysimachia_punctata","iNatAg/lysimachia_vulgaris","iNatAg/lythrum_hyssopifolia","iNatAg/lythrum_salicaria","iNatAg/lythrum_virgatum","iNatAg/macadamia_integrifolia","iNatAg/macadamia_tetraphylla","iNatAg/macaranga_tanarius","iNatAg/macroptilium_atropurpureum","iNatAg/macroptilium_erythroloma","iNatAg/macroptilium_gracile","iNatAg/macroptilium_lathyroides","iNatAg/macroptilium_longepedunculatum","iNatAg/macrotyloma_axillare","iNatAg/maesopsis_eminii","iNatAg/maianthemum_canadense","iNatAg/majorana_hortensis","iNatAg/malachra_alceifolia","iNatAg/mallotus_philippensis","iNatAg/malpighia_glabra","iNatAg/malus_domestica","iNatAg/malus_sylvestris","iNatAg/malva_alcea","iNatAg/malva_moschata","iNatAg/malva_nicaeensis","iNatAg/malva_parviflora","iNatAg/malva_pusilla","iNatAg/malva_rotundifolia","iNatAg/malva_silvestris","iNatAg/malva_sylvestris","iNatAg/mammea_americana","iNatAg/mangifera_indica","iNatAg/manihot_esculenta","iNatAg/manilkara_zapota","iNatAg/maranta_arundinacea","iNatAg/markhamia_lutea","iNatAg/marrubium_vulgare","iNatAg/marsilea_quadrifolia","iNatAg/matricaria_chamomila","iNatAg/matricaria_chamomilla","iNatAg/matricaria_discoidea","iNatAg/matricaria_perforata","iNatAg/matricaria_recutita","iNatAg/mauritia_flexuosa","iNatAg/mayaca_fluviatilis","iNatAg/medicago_arabica","iNatAg/medicago_falcata","iNatAg/medicago_intertexta","iNatAg/medicago_laciniata","iNatAg/medicago_littoralis","iNatAg/medicago_lupulina","iNatAg/medicago_marina","iNatAg/medicago_minima","iNatAg/medicago_orbicularis","iNatAg/medicago_polymorpha","iNatAg/medicago_rigidula","iNatAg/medicago_rugosa","iNatAg/medicago_sativa","iNatAg/medicago_scutellata","iNatAg/medicago_tornata","iNatAg/medicago_truncatula","iNatAg/medicago_turbinata","iNatAg/melaleuca_bracteata","iNatAg/melaleuca_cajuputi","iNatAg/melaleuca_dealbata","iNatAg/melaleuca_lanceolata","iNatAg/melaleuca_leucadendron","iNatAg/melaleuca_nervosa","iNatAg/melaleuca_quinquenervia","iNatAg/melaleuca_viridiflora","iNatAg/melampyrum_lineare","iNatAg/melastoma_malabathricum","iNatAg/melastoma_melabathricum","iNatAg/melia_azedarach","iNatAg/melica_decumbens","iNatAg/melicoccus_bijugatus","iNatAg/melilotus_albus","iNatAg/melilotus_indica","iNatAg/melilotus_officinalis","iNatAg/melilotus_suaveolens","iNatAg/melinis_minutiflora","iNatAg/melissa_officinalis","iNatAg/melochia_corchorifolia","iNatAg/melothria_pendula","iNatAg/mentha_arvensis","iNatAg/mentha_longifolia","iNatAg/mentha_piperita","iNatAg/mentha_pulegium","iNatAg/mentha_rotundifolia","iNatAg/mentha_spicata","iNatAg/menyanthes_trifoliata","iNatAg/mercurialis_annua","iNatAg/mesembryanthemum_cristallinum","iNatAg/mesembryanthemum_noctiflorum","iNatAg/mespilus_germanica","iNatAg/mesua_ferrea","iNatAg/metroxylon_sagu","iNatAg/michelia_champaca","iNatAg/microstegium_ciliatum","iNatAg/miliusa_velutina","iNatAg/mimosa_casta","iNatAg/mimosa_dutrae","iNatAg/mimosa_pigra","iNatAg/mimosa_pudica","iNatAg/mirabilis_jalapa","iNatAg/molinia_caerulea","iNatAg/mollugo_verticillata","iNatAg/momordica_charantia","iNatAg/momordica_cochinchinensis","iNatAg/monarda_fistulosa","iNatAg/monarda_punctata","iNatAg/monochoria_hastata","iNatAg/monochoria_vaginalis","iNatAg/monocymbium_ceresiiforme","iNatAg/monstera_deliciosa","iNatAg/montanoa_hibiscifolia","iNatAg/morinda_citrifolia","iNatAg/moringa_oleifera","iNatAg/morus_alba","iNatAg/morus_nigra","iNatAg/morus_rubra","iNatAg/mucuna_pruriens","iNatAg/muntingia_calabura","iNatAg/murraya_koenigii","iNatAg/musa_acuminata","iNatAg/musa_acuminata_×_balbisiana","iNatAg/musa_balbisiana","iNatAg/musa_sapientium","iNatAg/musanga_cecropioides","iNatAg/muscari_comosum","iNatAg/myosotis_alpestris","iNatAg/myosurus_minimus","iNatAg/myrica_cerifera","iNatAg/myriophyllum_heterophyllum","iNatAg/myriophyllum_implicatum","iNatAg/myriophyllum_sibiricum","iNatAg/myriophyllum_spicatum","iNatAg/myriophyllum_verticillatum","iNatAg/myristica_fragrans","iNatAg/myroxylon_balsamum","iNatAg/myrsine_africana","iNatAg/myrtus_communis","iNatAg/nardus_stricta","iNatAg/nasturtium_officinale","iNatAg/nauclea_orientalis","iNatAg/nelumbo_nucifera","iNatAg/neofabricia_myrtifolia","iNatAg/neoglaziovia_variegata","iNatAg/neonotonia_wightii","iNatAg/nepeta_cataria","iNatAg/nephelium_lappaceum","iNatAg/nephelium_mutabile","iNatAg/nerium_oleander","iNatAg/nicotiana_quadrivalvis","iNatAg/nicotiana_rustica","iNatAg/nicotiana_trigonophylla","iNatAg/nigella_sativa","iNatAg/nothofagus_cunninghamii","iNatAg/nothofagus_moorei","iNatAg/nothoscordum_borbonicum","iNatAg/nuphar_advena","iNatAg/nuphar_lutea","iNatAg/nymphaea_alba","iNatAg/nypa_fruticans","iNatAg/ochroma_pyramidale","iNatAg/ocimum_americanum","iNatAg/ocimum_basilicum","iNatAg/ocimum_tenuiflorum","iNatAg/octomeles_sumatrana","iNatAg/oenanthe_javanica","iNatAg/oenothera_albicaulis","iNatAg/oenothera_biennis","iNatAg/oenothera_parviflora","iNatAg/oenothera_perennis","iNatAg/oldenlandia_corymbosa","iNatAg/olea_africana","iNatAg/olea_capensis","iNatAg/olea_europaea","iNatAg/olea_europea","iNatAg/oncosperma_tigillarium","iNatAg/onobrychis_viciifolia","iNatAg/ononis_alopecuroides","iNatAg/ononis_spinosa","iNatAg/onopordum_acanthium","iNatAg/onopordum_illyricum","iNatAg/onosmodium_discolor","iNatAg/opuntia_ficus-indica","iNatAg/opuntia_leptocaulis","iNatAg/opuntia_polyacantha","iNatAg/opuntia_polycantha","iNatAg/origanum_majorana","iNatAg/origanum_onites","iNatAg/origanum_vulgare","iNatAg/ornithogalum_nutans","iNatAg/ornithogalum_umbellatum","iNatAg/ornithopus_compressus","iNatAg/ornithopus_sativus","iNatAg/orobanche_flava","iNatAg/orobanche_ludoviciana","iNatAg/orobanche_minor","iNatAg/orobanche_ramosa","iNatAg/orontium_aquaticum","iNatAg/orthosiphon_aristatus","iNatAg/oryza_sativa","iNatAg/oryzopsis_holciformis","iNatAg/oryzopsis_miliacea","iNatAg/osmorhiza_berteroi","iNatAg/osmunda_regalis","iNatAg/ottochloa_nodosa","iNatAg/oxalis_acetosella","iNatAg/oxalis_corniculata","iNatAg/oxalis_pes-caprae","iNatAg/oxalis_pescaprae","iNatAg/oxalis_stricta","iNatAg/oxalis_tuberosa","iNatAg/oxytropis_lambertii","iNatAg/pachyrhizus_erosus","iNatAg/paederia_cruddasiana","iNatAg/paederia_foetida","iNatAg/paeonia_officinalis","iNatAg/panax_ginseng","iNatAg/panax_quinquefolius","iNatAg/pangium_edule","iNatAg/panicum_antidotale","iNatAg/panicum_capillare","iNatAg/panicum_coloratum","iNatAg/panicum_ecklonii","iNatAg/panicum_gattingeri","iNatAg/panicum_maximum","iNatAg/panicum_miliaceum","iNatAg/panicum_natalense","iNatAg/panicum_obtusum","iNatAg/panicum_pilosum","iNatAg/panicum_racemosum","iNatAg/panicum_repens","iNatAg/panicum_sphaerocarpon","iNatAg/panicum_trichocladum","iNatAg/panicum_turgidum","iNatAg/panicum_virgatum","iNatAg/papaver_argemone","iNatAg/papaver_bracteatum","iNatAg/papaver_dubium","iNatAg/papaver_rhoeas","iNatAg/papaver_somniferum","iNatAg/parietaria_floridana","iNatAg/parietaria_officinalis","iNatAg/parinari_curatellifolia","iNatAg/parkia_biglobosa","iNatAg/parkia_speciosa","iNatAg/parkinsonia_aculeata","iNatAg/parnassia_palustris","iNatAg/parsonsia_latifolia","iNatAg/parthenium_argentatum","iNatAg/parthenium_hysterophorus","iNatAg/paspalum_conjugatum","iNatAg/paspalum_dilatatum","iNatAg/paspalum_distichum","iNatAg/paspalum_nicorae","iNatAg/paspalum_notatum","iNatAg/paspalum_plicatulum","iNatAg/paspalum_scrobiculatum","iNatAg/paspalum_separatum","iNatAg/paspalum_urvillei","iNatAg/paspalum_vaginatum","iNatAg/passiflora_bicornis","iNatAg/passiflora_edulis","iNatAg/passiflora_foetida","iNatAg/passiflora_incarnata","iNatAg/passiflora_laurifolia","iNatAg/passiflora_ligularis","iNatAg/passiflora_lutea","iNatAg/passiflora_mollissima","iNatAg/passiflora_quadrangularis","iNatAg/passiflora_suberosa","iNatAg/pastinaca_sativa","iNatAg/paullinia_cupana","iNatAg/paulownia_tomentosa","iNatAg/peganum_harmala","iNatAg/pelargonium_graveolens","iNatAg/peltandra_sagittifolia","iNatAg/peltandra_virginica","iNatAg/peltophorum_africanum","iNatAg/peltophorum_pterocarpum","iNatAg/pennisetum_clandestinum","iNatAg/pennisetum_glaucum","iNatAg/pennisetum_macrourum","iNatAg/pennisetum_pedicellatum","iNatAg/pennisetum_polystachyon","iNatAg/pennisetum_purpureum","iNatAg/pennisetum_setaceum","iNatAg/pennisetum_villosum","iNatAg/perilla_frutescens","iNatAg/persea_americana","iNatAg/persicaria_maculosa","iNatAg/persoonia_falcata","iNatAg/petalostigma_pubescens","iNatAg/petasites_albus","iNatAg/petasites_hybridus","iNatAg/petroselinum_crispum","iNatAg/petunia_parviflora","iNatAg/peucedanum_ostruthium","iNatAg/phalaris_aquatica","iNatAg/phalaris_arundinacea","iNatAg/phalaris_arundinaceae","iNatAg/phalaris_brachystachys","iNatAg/phalaris_canariensis","iNatAg/phalaris_caroliniana","iNatAg/phalaris_coerulescens","iNatAg/phalaris_paradoxa","iNatAg/phaseolus_acutifolius","iNatAg/phaseolus_coccineus","iNatAg/phaseolus_lunatus","iNatAg/phaseolus_vulgaris","iNatAg/phleum_alpinum","iNatAg/phleum_pratense","iNatAg/phoenix_dactylifera","iNatAg/phoenix_reclinata","iNatAg/phoenix_sylvestris","iNatAg/phormium_tenax","iNatAg/phragmites_australis","iNatAg/phragmites_communis","iNatAg/phragmites_karka","iNatAg/phyllanthus_niruri","iNatAg/phyllanthus_tenellus","iNatAg/phyllanthus_urinaria","iNatAg/phyllocladus_aspleniifolius","iNatAg/physalis_alkekengi","iNatAg/physalis_angulata","iNatAg/physalis_heterophylla","iNatAg/physalis_lancifolia","iNatAg/physalis_peruviana","iNatAg/physalis_philadelphica","iNatAg/physalis_pubescens","iNatAg/physalis_virginiana","iNatAg/physalis_viscosa","iNatAg/phytolacca_acinosa","iNatAg/phytolacca_americana","iNatAg/phytolacca_dioica","iNatAg/picea_abies","iNatAg/picea_omorica","iNatAg/picea_omorika","iNatAg/picris_echioides","iNatAg/picris_hieracioides","iNatAg/piliostigma_reticulatum","iNatAg/piliostigma_thonningii","iNatAg/pimenta_dioica","iNatAg/pimenta_racemosa","iNatAg/pimpinella_anisum","iNatAg/pimpinella_saxifraga","iNatAg/pinguicula_vulgaris","iNatAg/pinus_ayacahuite","iNatAg/pinus_brutia","iNatAg/pinus_canariensis","iNatAg/pinus_caribaea","iNatAg/pinus_chiapensis","iNatAg/pinus_douglasiana","iNatAg/pinus_durangensis","iNatAg/pinus_greggii","iNatAg/pinus_halepensis","iNatAg/pinus_hartwegii","iNatAg/pinus_kesiya","iNatAg/pinus_merkusii","iNatAg/pinus_montezumae","iNatAg/pinus_mugo","iNatAg/pinus_occidentalis","iNatAg/pinus_oocarpa","iNatAg/pinus_palustris","iNatAg/pinus_patula","iNatAg/pinus_pinaster","iNatAg/pinus_pinea","iNatAg/pinus_ponderosa","iNatAg/pinus_pseudostrobus","iNatAg/pinus_radiata","iNatAg/pinus_roxburghii","iNatAg/pinus_sylvestris","iNatAg/pinus_tabuliformis","iNatAg/pinus_taeda","iNatAg/pinus_teocote","iNatAg/piper_aduncum","iNatAg/piper_betle","iNatAg/piper_longum","iNatAg/piper_methysticum","iNatAg/piper_nigrum","iNatAg/pistacia_atlantica","iNatAg/pistacia_lentiscus","iNatAg/pistacia_vera","iNatAg/pistia_stratiotes","iNatAg/pisum_sativum","iNatAg/pithecellobium_dulce","iNatAg/pittosporum_resiniferum","iNatAg/pittosporum_undulatum","iNatAg/plagiobothrys_canescens","iNatAg/plantago_coronopus","iNatAg/plantago_heterophylla","iNatAg/plantago_indica","iNatAg/plantago_lanceolata","iNatAg/plantago_major","iNatAg/plantago_media","iNatAg/plantago_ovata","iNatAg/plantago_psyllium","iNatAg/plantago_virginica","iNatAg/platanus_orientalis","iNatAg/poa_alpina","iNatAg/poa_annua","iNatAg/poa_bulbosa","iNatAg/poa_compressa","iNatAg/poa_cuspidata","iNatAg/poa_fendleriana","iNatAg/poa_nemoralis","iNatAg/poa_pratensis","iNatAg/poa_trivialis","iNatAg/podocarpus_elatus","iNatAg/podocarpus_falcatus","iNatAg/poeciloneuron_indicum","iNatAg/pogostemon_cablin","iNatAg/polemonium_caeruleum","iNatAg/polemonium_micranthum","iNatAg/polyalthia_fragrans","iNatAg/polycarpon_tetraphyllum","iNatAg/polygonatum_orientale","iNatAg/polygonum_achoreum","iNatAg/polygonum_arenastrum","iNatAg/polygonum_aviculare","iNatAg/polygonum_bistorta","iNatAg/polygonum_convolvulus","iNatAg/polygonum_equisetiforme","iNatAg/polygonum_erectum","iNatAg/polygonum_hydropiper","iNatAg/polygonum_hydropiperoides","iNatAg/polygonum_lapathifolium","iNatAg/polygonum_orientale","iNatAg/polygonum_pensylvanicum","iNatAg/polygonum_perfoliatum","iNatAg/polygonum_persicaria","iNatAg/polygonum_punctatum","iNatAg/polygonum_ramosissimum","iNatAg/polygonum_scandens","iNatAg/polymnia_sonchifolia","iNatAg/polypodium_vulgare","iNatAg/polypogon_interruptus","iNatAg/polypremum_procumbens","iNatAg/polyscias_fulva","iNatAg/polytrichum_commune","iNatAg/pongamia_pinnata","iNatAg/pontederia_cordata","iNatAg/pontederia_rotundifolia","iNatAg/populus_balsamifera","iNatAg/populus_ciliata","iNatAg/populus_deltoides","iNatAg/populus_euphratica","iNatAg/populus_simonii","iNatAg/portulaca_oleracea","iNatAg/portulaca_pilosa","iNatAg/portulaca_pilosa_pilosa","iNatAg/portulaca_quadrifida","iNatAg/potamogeton_diversifolius","iNatAg/potamogeton_epihydrus","iNatAg/potamogeton_filiformis","iNatAg/potamogeton_foliosus","iNatAg/potamogeton_friesii","iNatAg/potamogeton_gramineus","iNatAg/potamogeton_illinoensis","iNatAg/potamogeton_natans","iNatAg/potamogeton_nodosus","iNatAg/potamogeton_pectinatus","iNatAg/potamogeton_praelongus","iNatAg/potamogeton_pusillus","iNatAg/potamogeton_zosteriformis","iNatAg/potentilla_anserina","iNatAg/potentilla_argentea","iNatAg/potentilla_erecta","iNatAg/potentilla_fruticosa","iNatAg/potentilla_intermedia","iNatAg/potentilla_norvegica","iNatAg/potentilla_norvegicae","iNatAg/potentilla_recta","iNatAg/potentilla_reptans","iNatAg/potentilla_tridentata","iNatAg/poterium_sanguisorba","iNatAg/pouteria_campechiana","iNatAg/pouteria_lucuma","iNatAg/pouteria_sapota","iNatAg/prasophyllum_elatum","iNatAg/primula_veris","iNatAg/proserpinaca_palustris","iNatAg/proserpinaca_pectinata","iNatAg/prosopis_affinis","iNatAg/prosopis_africana","iNatAg/prosopis_alba","iNatAg/prosopis_chilensis","iNatAg/prosopis_cineraria","iNatAg/prosopis_glandulosa","iNatAg/prosopis_juliflora","iNatAg/prosopis_nigra","iNatAg/prosopis_pallida","iNatAg/prosopis_tamarugo","iNatAg/prosopis_velutina","iNatAg/prunella_vulgaris","iNatAg/prunus_africana","iNatAg/prunus_amygdalus","iNatAg/prunus_armeniaca","iNatAg/prunus_avium","iNatAg/prunus_capuli","iNatAg/prunus_cerasus","iNatAg/prunus_domestica","iNatAg/prunus_laurocerasus","iNatAg/prunus_mahaleb","iNatAg/prunus_mume","iNatAg/prunus_padus","iNatAg/prunus_pensylvanica","iNatAg/prunus_persica","iNatAg/prunus_salicina","iNatAg/prunus_spinosa","iNatAg/prunus_virginiana","iNatAg/psathyrostachys_juncea","iNatAg/psidium_cattleianum","iNatAg/psidium_friedrichsthalianum","iNatAg/psidium_guajava","iNatAg/psophocarpus_tetragonolobus","iNatAg/psoralea_repens","iNatAg/ptelea_trifoliata","iNatAg/pterocarpus_angolensis","iNatAg/pterocarpus_dalbergioides","iNatAg/pterocarpus_erinaceus","iNatAg/pterocarpus_indicus","iNatAg/pterocarpus_lucens","iNatAg/pterocarpus_macrocarpus","iNatAg/pterocarpus_marsupium","iNatAg/pterocarpus_santalinoides","iNatAg/pterocarpus_santalinus","iNatAg/pueraria_lobata","iNatAg/pueraria_phaseoloides","iNatAg/pulmonaria_officinalis","iNatAg/punica_granatum","iNatAg/pycnanthus_angolensis","iNatAg/pyrola_rotundifolia","iNatAg/pyrus_communis","iNatAg/pyrus_pyrifolia","iNatAg/quercus_agrifolia","iNatAg/quercus_alba","iNatAg/quercus_bicolor","iNatAg/quercus_chrysolepis","iNatAg/quercus_dumosa","iNatAg/quercus_fusiformis","iNatAg/quercus_ilex","iNatAg/quercus_incana","iNatAg/quercus_lanata","iNatAg/quercus_nigra","iNatAg/quercus_phellos","iNatAg/quercus_robur","iNatAg/quercus_semecarpifolia","iNatAg/quercus_suber","iNatAg/quercus_virginiana","iNatAg/quisqualis_indica","iNatAg/ranunculus_abortivus","iNatAg/ranunculus_acris","iNatAg/ranunculus_arbortivus","iNatAg/ranunculus_arvensis","iNatAg/ranunculus_bulbosus","iNatAg/ranunculus_californicus","iNatAg/ranunculus_cymbalaria","iNatAg/ranunculus_ficaria","iNatAg/ranunculus_flabellaris","iNatAg/ranunculus_muricatulus","iNatAg/ranunculus_muricatus","iNatAg/ranunculus_occidentalis","iNatAg/ranunculus_orthorhynchus","iNatAg/ranunculus_parviflorus","iNatAg/ranunculus_sceleratus","iNatAg/ranunculus_testiculatus","iNatAg/ranunculus_trichophyllus","iNatAg/raphanus_raphanistrum","iNatAg/raphanus_sativus","iNatAg/rauvolfia_caffra","iNatAg/rauvolfia_serpentina","iNatAg/reseda_alba","iNatAg/reseda_lutea","iNatAg/retama_monosperma","iNatAg/rhamnus_cathartica","iNatAg/rhamnus_prinoides","iNatAg/rheum_palmatum","iNatAg/rheum_rhaponticum","iNatAg/rhigozum_trichotomum","iNatAg/rhinanthus_crista-galli","iNatAg/rhinanthus_minor","iNatAg/rhizophora_mangle","iNatAg/rhizophora_mucronata","iNatAg/rhizophora_stylosa","iNatAg/rhodiola_rosea","iNatAg/rhododendron_ferrugineum","iNatAg/rhus_copallinum","iNatAg/rhus_glabra","iNatAg/rhus_typhina","iNatAg/rhynchosia_minima","iNatAg/rhynchosia_senna","iNatAg/rhynchosia_sublobata","iNatAg/ribes_hirtellum","iNatAg/ribes_nigrum","iNatAg/ribes_rubrum","iNatAg/ribes_uva-crispa","iNatAg/ribes_viscosissimum","iNatAg/richardia_brasiliensis","iNatAg/richardia_scabra","iNatAg/ricinus_communis","iNatAg/ricinus_comunis","iNatAg/rivina_humilis","iNatAg/robinia_pseudoacacia","iNatAg/roemeria_refracta","iNatAg/rosa_canina","iNatAg/rosa_cinnamomea","iNatAg/rosa_eglanteria","iNatAg/rosa_pendulina","iNatAg/rosa_pimpinellifolia","iNatAg/rosa_rubiginosa","iNatAg/rosa_spinosissima","iNatAg/roseodendron_donnell-smithii","iNatAg/rosmarinus_officinalis","iNatAg/rubia_tinctorum","iNatAg/rubus_ellipticus","iNatAg/rubus_fructicosus","iNatAg/rubus_fruticosus","iNatAg/rubus_hispidus","iNatAg/rubus_idaeus","iNatAg/rubus_moluccanus","iNatAg/rubus_occidentalis","iNatAg/rubus_pensilvanicus","iNatAg/rudbeckia_amplexicaulis","iNatAg/rudbeckia_hirta","iNatAg/rudbeckia_laciniata","iNatAg/rudbeckia_triloba","iNatAg/rumex_acetosa","iNatAg/rumex_acetosella","iNatAg/rumex_aquaticus","iNatAg/rumex_crispus","iNatAg/rumex_dentatus","iNatAg/rumex_hymenosepalus","iNatAg/rumex_longifolius","iNatAg/rumex_maritimus","iNatAg/rumex_obtusifolius","iNatAg/rumex_patienta","iNatAg/rumex_patientia","iNatAg/rumex_pseudonatronatus","iNatAg/rumex_pulcher","iNatAg/rumex_verticillatus","iNatAg/ruppia_maritima","iNatAg/ruscus_aculeatus","iNatAg/ruta_graveolens","iNatAg/saccharum_officinarum","iNatAg/saccharum_sinense","iNatAg/saccharum_spontaneum","iNatAg/sacorstemma_cynanchoides","iNatAg/sagina_procumbens","iNatAg/sagittaria_kurziana","iNatAg/sagittaria_lancifolia","iNatAg/sagittaria_latifolia","iNatAg/sagittaria_sagittifolia","iNatAg/salacca_wallichiana","iNatAg/salacca_zalacca","iNatAg/salicornia_bigelovii","iNatAg/salix_alba","iNatAg/salix_caprea","iNatAg/salix_laevigata","iNatAg/salix_pentandra","iNatAg/salix_viminalis","iNatAg/salsola_kali","iNatAg/salsola_tragus","iNatAg/salsola_vermiculata","iNatAg/salvadora_persica","iNatAg/salvia_lyrata","iNatAg/salvia_officinalis","iNatAg/salvia_sclarea","iNatAg/salvia_verticillata","iNatAg/salvinia_auriculata","iNatAg/samanea_saman","iNatAg/sambucus_canadensis","iNatAg/sambucus_canadiensis","iNatAg/sambucus_cerulea","iNatAg/sambucus_ebulus","iNatAg/sambucus_nigra","iNatAg/sambucus_racemosa","iNatAg/samolus_parviflorus","iNatAg/samolus_valerandi","iNatAg/sanguisorba_minor","iNatAg/sanguisorba_officinalis","iNatAg/sanicula_europaea","iNatAg/santalum_acuminatum","iNatAg/santalum_album","iNatAg/santolina_chamaecyparissus","iNatAg/sapindus_emarginatus","iNatAg/sapindus_saponaria","iNatAg/sapium_sebiferum","iNatAg/saponaria_officinalis","iNatAg/sarcostemma_cynanchoides","iNatAg/satureja_hortensis","iNatAg/satureja_montana","iNatAg/sauropus_androgynus","iNatAg/saururus_cernuus","iNatAg/scandix_pecten-veneris","iNatAg/schima_wallichii","iNatAg/schinus_molle","iNatAg/schinus_terebinthifolia","iNatAg/schinus_terebinthifolius","iNatAg/schismus_arabicus","iNatAg/schizolobium_parahyba","iNatAg/schizomeria_ovata","iNatAg/schleichera_oleosa","iNatAg/scirpus_lacustris","iNatAg/scleranthus_annuus","iNatAg/sclerocarya_caffra","iNatAg/scoparia_dulcis","iNatAg/scorzonera_laciniata","iNatAg/scrophularia_lanceolata","iNatAg/searsia_angustifolia","iNatAg/secale_cereale","iNatAg/secale_montanum","iNatAg/sechium_edule","iNatAg/securidaca_longepedunculata","iNatAg/securidaca_longipedunculata","iNatAg/sedum_acre","iNatAg/sedum_telephium","iNatAg/sehima_nervosum","iNatAg/sempervivum_arachnoideum","iNatAg/sempervivum_tectorum","iNatAg/senecio_elegans","iNatAg/senecio_jacobaea","iNatAg/senecio_madagascariensis","iNatAg/senecio_plattensis","iNatAg/senecio_squalidus","iNatAg/senecio_sylvaticus","iNatAg/senecio_viscosus","iNatAg/senecio_vulgaris","iNatAg/senna_spectabilis","iNatAg/serenoa_repens","iNatAg/sesamum_indicum","iNatAg/sesbania_bispinosa","iNatAg/sesbania_cannabina","iNatAg/sesbania_exaltata","iNatAg/sesbania_formosa","iNatAg/sesbania_grandiflora","iNatAg/sesbania_pachycarpa","iNatAg/sesbania_sesban","iNatAg/setaria_incrassata","iNatAg/setaria_italica","iNatAg/setaria_lindenbergiana","iNatAg/setaria_pumila","iNatAg/seymeria_pectinata","iNatAg/shorea_robusta","iNatAg/shorea_talura","iNatAg/sicyos_angulatus","iNatAg/sida_angustifolia","iNatAg/sida_cordifolia","iNatAg/sida_spinosa","iNatAg/silene_antirrhina","iNatAg/silene_armeria","iNatAg/silene_conica","iNatAg/silene_conoidea","iNatAg/silene_gallica","iNatAg/silene_noctiflora","iNatAg/silene_pendula","iNatAg/silphium_asperrimum","iNatAg/silphium_integrifolium","iNatAg/silphium_laciniatum","iNatAg/silybum_marianum","iNatAg/simarouba_glauca","iNatAg/simmondsia_chinensis","iNatAg/simsia_auriculata","iNatAg/sinapis_alba","iNatAg/sinapis_arvensis","iNatAg/sinapis_incana","iNatAg/siphonochilus_aethiopicus","iNatAg/sisymbrium_altissimum","iNatAg/sisymbrium_erysimoides","iNatAg/sisymbrium_irio","iNatAg/sisymbrium_officinale","iNatAg/sisymbrium_orientale","iNatAg/sisymbrium_sophia","iNatAg/sisyrinchium_montanum","iNatAg/sloanea_woollsii","iNatAg/smilax_aspera","iNatAg/smilax_bona-nox","iNatAg/smilax_laurifolia","iNatAg/smilax_rotundifolia","iNatAg/solanum_aethiopicum","iNatAg/solanum_americanum","iNatAg/solanum_capsicoides","iNatAg/solanum_carolinense","iNatAg/solanum_coriaceum","iNatAg/solanum_dimidiatum","iNatAg/solanum_diphyllum","iNatAg/solanum_dulcamara","iNatAg/solanum_elaeagnifolium","iNatAg/solanum_eleagnifolium","iNatAg/solanum_ellipticum","iNatAg/solanum_ferox","iNatAg/solanum_heterodoxum","iNatAg/solanum_incanum","iNatAg/solanum_jamaicense","iNatAg/solanum_lanceolatum","iNatAg/solanum_macrocarpon","iNatAg/solanum_mammosum","iNatAg/solanum_marginatum","iNatAg/solanum_mauritianum","iNatAg/solanum_melongena","iNatAg/solanum_muricatum","iNatAg/solanum_nigrum","iNatAg/solanum_physalifolium","iNatAg/solanum_pseudo-capsicum","iNatAg/solanum_pseudocapsicum","iNatAg/solanum_quitoense","iNatAg/solanum_sisymbrifolium","iNatAg/solanum_sisymbriifolium","iNatAg/solanum_tampicense","iNatAg/solanum_torvum","iNatAg/solanum_tuberosum","iNatAg/solanum_violaceum","iNatAg/soldanella_alpina","iNatAg/solidago_californica","iNatAg/solidago_canadensis","iNatAg/solidago_fistulosa","iNatAg/solidago_missouriensis","iNatAg/solidago_nemoralis","iNatAg/solidago_rigida","iNatAg/solidago_sempervirens","iNatAg/solidago_virgaurea","iNatAg/sonchus_arvensis","iNatAg/sonchus_oleraceus","iNatAg/sonchus_palustris","iNatAg/sonneratia_apetala","iNatAg/sonneratia_caseolaris","iNatAg/sorbus_aucuparia","iNatAg/sorbus_domestica","iNatAg/sorghum_bicolor","iNatAg/sorghum_drummondii","iNatAg/sorghum_halepense","iNatAg/soymida_febrifuga","iNatAg/sparganium_americanum","iNatAg/sparganium_erectum","iNatAg/spartina_pectinata","iNatAg/spartium_junceum","iNatAg/spathodea_campanulata","iNatAg/spergula_arvensis","iNatAg/spermacoce_verticillata","iNatAg/spinacia_oleracea","iNatAg/spinifex_hirsutus","iNatAg/spirea_tomentosa","iNatAg/spodiopogon_sibiricus","iNatAg/spondias_cythera","iNatAg/spondias_mombin","iNatAg/spondias_purpurea","iNatAg/sporobolus_airoides","iNatAg/sporobolus_fimbriatus","iNatAg/sporobolus_maritimus","iNatAg/sporobolus_neglectus","iNatAg/sporobolus_spicatus","iNatAg/sporobolus_virginicus","iNatAg/stachys_affinis","iNatAg/stachys_palustris","iNatAg/stachytarpheta_incana","iNatAg/stachytarpheta_indica","iNatAg/stellaria_graminea","iNatAg/stellaria_holostea","iNatAg/stellaria_media","iNatAg/stenotaphrum_secundatum","iNatAg/sterculia_foetida","iNatAg/sterculia_urens","iNatAg/sterculia_villosa","iNatAg/stereospermum_kunthianum","iNatAg/stevia_rebaudiana","iNatAg/stipa_baicalensis","iNatAg/stipa_brachychaeta","iNatAg/stipa_capillata","iNatAg/stipa_glareosa","iNatAg/stipa_grandis","iNatAg/stipa_krylovii","iNatAg/stipa_lagascae","iNatAg/stipa_occidentalis","iNatAg/stipa_parviflora","iNatAg/stipa_tenacissima","iNatAg/stipa_trichotoma","iNatAg/stipagrostis_amabilis","iNatAg/stipagrostis_zeyheri","iNatAg/stratiotes_aloides","iNatAg/strychnos_cocculoides","iNatAg/strychnos_innocua","iNatAg/strychnos_spinosa","iNatAg/stylidium_desertorum","iNatAg/stylosanthes_capitata","iNatAg/stylosanthes_fruticosa","iNatAg/stylosanthes_hamata","iNatAg/stylosanthes_humilis","iNatAg/stylosanthes_scabra","iNatAg/stylosanthes_viscosa","iNatAg/succisa_pratensis","iNatAg/swertia_baicalensis","iNatAg/swietenia_macrophylla","iNatAg/swietenia_mahogani","iNatAg/symphoricarpos_mollis","iNatAg/symphoricarpos_occidentalis","iNatAg/symphoricarpos_orbiculatus","iNatAg/symphoricarpos_rotundifolius","iNatAg/symphytum_officinale","iNatAg/syncarpia_glomulifera","iNatAg/syncarpia_hillii","iNatAg/syzygium_cordatum","iNatAg/syzygium_cumini","iNatAg/syzygium_guineense","iNatAg/syzygium_malaccense","iNatAg/syzygium_taiwanicum","iNatAg/tabebuia_rosea","iNatAg/tabebuia_serratifolia","iNatAg/tagetes_minuta","iNatAg/talinum_triangulare","iNatAg/tamarindus_indica","iNatAg/tamarix_aphylla","iNatAg/tamarix_chinensis","iNatAg/tamarix_gallica","iNatAg/tamarix_parviflora","iNatAg/tanacetum_balsamita","iNatAg/tanacetum_vulgare","iNatAg/taraxacum_officinale","iNatAg/taraxia_breviflora","iNatAg/tarchonanthus_camphoratus","iNatAg/taxodium_distichum","iNatAg/taxus_baccata","iNatAg/tecoma_stans","iNatAg/tectona_grandis","iNatAg/tephrosia_candida","iNatAg/tephrosia_lupinifolia","iNatAg/tephrosia_obovata","iNatAg/tephrosia_purpurea","iNatAg/tephrosia_vogelii","iNatAg/teramnus_labialis","iNatAg/terminalia_arjuna","iNatAg/terminalia_bellirica","iNatAg/terminalia_brownii","iNatAg/terminalia_calamansanai","iNatAg/terminalia_catappa","iNatAg/terminalia_chebula","iNatAg/terminalia_ivorensis","iNatAg/terminalia_mantaly","iNatAg/terminalia_myriocarpa","iNatAg/terminalia_paniculata","iNatAg/terminalia_prunioides","iNatAg/terminalia_sericocarpa","iNatAg/terminalia_tomentosa","iNatAg/tetradymia_canescens","iNatAg/tetragonia_tetragonioides","iNatAg/teucrium_botrys","iNatAg/teucrium_canadense","iNatAg/teucrium_chamaedrys","iNatAg/teucrium_polium","iNatAg/thalia_geniculata","iNatAg/thalictrum_pubescens","iNatAg/thaumatococcus_daniellii","iNatAg/themeda_australis","iNatAg/themeda_quadrivalvis","iNatAg/themeda_triandra","iNatAg/theobroma_bicolor","iNatAg/theobroma_cacao","iNatAg/theobroma_grandiflorum","iNatAg/thermopsis_montana","iNatAg/thermopsis_rhombifolia","iNatAg/thespesia_populnea","iNatAg/thlaspi_arvense","iNatAg/thlaspi_perfoliatum","iNatAg/thuja_occidentalis","iNatAg/thymus_serphyllum","iNatAg/thymus_serpyllum","iNatAg/thymus_vulgaris","iNatAg/thyrsostachys_siamensis","iNatAg/thysanolaena_latifolia","iNatAg/tilia_cordata","iNatAg/tilia_platyphyllos","iNatAg/tipuana_tipu","iNatAg/tithonia_diversifolia","iNatAg/toona_ciliata","iNatAg/torenia_glabra","iNatAg/toxicodendron_pubescens","iNatAg/trachypogon_spicatus","iNatAg/tradescantia_bracteata","iNatAg/tradescantia_fluminensis","iNatAg/tradescantia_ohiensis","iNatAg/tradescantia_virginiana","iNatAg/tragia_betonicifolia","iNatAg/tragopogon_lamottei","iNatAg/tragopogon_porrifolius","iNatAg/tragopogon_pratensis","iNatAg/tragus_koelerioides","iNatAg/trapa_natans","iNatAg/trema_orientale","iNatAg/trianthema_portulacastrum","iNatAg/tribulus_cistoides","iNatAg/tribulus_terrestris","iNatAg/trichanthera_gigantea","iNatAg/trichoneura_grandiglumis","iNatAg/trichosanthes_cucumerina","iNatAg/trichostema_lanceolatum","iNatAg/tridax_procumbens","iNatAg/trifolium_africanum","iNatAg/trifolium_alexandrinum","iNatAg/trifolium_ambiguum","iNatAg/trifolium_angustifolium","iNatAg/trifolium_arvense","iNatAg/trifolium_burchellianum","iNatAg/trifolium_campestre","iNatAg/trifolium_carolinianum","iNatAg/trifolium_cherleri","iNatAg/trifolium_dubium","iNatAg/trifolium_fragiferum","iNatAg/trifolium_glanduliferum","iNatAg/trifolium_glomeratum","iNatAg/trifolium_hirtum","iNatAg/trifolium_hybridum","iNatAg/trifolium_incarnatum","iNatAg/trifolium_medium","iNatAg/trifolium_michelianum","iNatAg/trifolium_nigrescens","iNatAg/trifolium_patens","iNatAg/trifolium_pilulare","iNatAg/trifolium_polymorphum","iNatAg/trifolium_pratense","iNatAg/trifolium_reflexum","iNatAg/trifolium_repens","iNatAg/trifolium_resupinatum","iNatAg/trifolium_subterraneum","iNatAg/trifolium_tomentosum","iNatAg/trifolium_variegatum","iNatAg/trifolium_vesiculosum","iNatAg/trifolium_wormskioldii","iNatAg/triglochin_maritima","iNatAg/triglochin_maritimum","iNatAg/triglochin_palustre","iNatAg/trigonella_foenum-graecum","iNatAg/tripsacum_dactyloides","iNatAg/trisetum_flavescens","iNatAg/tristachya_leucothrix","iNatAg/triticum_aestivum","iNatAg/triticum_dicoccoides","iNatAg/triticum_durum","iNatAg/triticum_spelta","iNatAg/triumfetta_rhomboidea","iNatAg/triumfetta_semitriloba","iNatAg/trollius_europaeus","iNatAg/tropaeolum_majus","iNatAg/tropaeolum_tuberosum","iNatAg/tropidocarpum_gracile","iNatAg/turritis_glabra","iNatAg/tussilago_farfara","iNatAg/tylosema_esculentum","iNatAg/typha_angustifolia","iNatAg/typha_domingensis","iNatAg/typha_latifolia","iNatAg/uapaca_kirkiana","iNatAg/ulex_europaeus","iNatAg/ullucus_tuberosus","iNatAg/ulmus_procera","iNatAg/umbilicus_rupestris","iNatAg/uncaria_gambir","iNatAg/urelytrum_agropyroides","iNatAg/urena_lobata","iNatAg/urochloa_mosambicensis","iNatAg/urochloa_panicoides","iNatAg/urtica_chamaedryoides","iNatAg/urtica_dioica","iNatAg/urtica_urens","iNatAg/utricularia_floridana","iNatAg/utricularia_foliosa","iNatAg/utricularia_gibba","iNatAg/utricularia_purpurea","iNatAg/utricularia_radiata","iNatAg/utricularia_vulgaris","iNatAg/uvaria_littoralis","iNatAg/uvularia_sessilifolia","iNatAg/vaccinium_angustifolium","iNatAg/vaccinium_corymbosum","iNatAg/vaccinium_macrocarpon","iNatAg/vaccinium_myrtillus","iNatAg/vaccinium_uliginosum","iNatAg/vaccinium_vitis-idaea","iNatAg/valeriana_officinalis","iNatAg/valerianella_eriocarpa","iNatAg/vallisneria_americana","iNatAg/vangueria_infausta","iNatAg/vangueria_madagascariensis","iNatAg/vanilla_planifolia","iNatAg/vateria_indica","iNatAg/ventilago_viminalis","iNatAg/veratrum_album","iNatAg/veratrum_californicum","iNatAg/verbascum_blattaria","iNatAg/verbascum_lychnitis","iNatAg/verbascum_phlomoides","iNatAg/verbascum_thapsus","iNatAg/verbascum_thaspus","iNatAg/verbena_bonariensis","iNatAg/verbena_brasiliensis","iNatAg/verbena_hastata","iNatAg/verbena_officinalis","iNatAg/verbena_urticifolia","iNatAg/vernonia_altissima","iNatAg/vernonia_amygdalina","iNatAg/vernonia_baldwinii","iNatAg/vernonia_chamaedrys","iNatAg/vernonia_fasciculata","iNatAg/veronica_agrestis","iNatAg/veronica_anagallis-aquatica","iNatAg/veronica_arvensis","iNatAg/veronica_biloba","iNatAg/veronica_chamaedrys","iNatAg/veronica_filiformis","iNatAg/veronica_hederaefolia","iNatAg/veronica_hederifolia","iNatAg/veronica_longifolia","iNatAg/veronica_officinalis","iNatAg/veronica_peregrina","iNatAg/veronica_polita","iNatAg/veronica_serpyllifolia","iNatAg/vetiveria_zizanioides","iNatAg/viburnum_cassinoides","iNatAg/viburnum_lentago","iNatAg/viburnum_prunifolium","iNatAg/viccia_cracca","iNatAg/vicia_augustifolia","iNatAg/vicia_benghalensis","iNatAg/vicia_cracca","iNatAg/vicia_ervilia","iNatAg/vicia_faba","iNatAg/vicia_monantha","iNatAg/vicia_narbonensis","iNatAg/vicia_pannonica","iNatAg/vicia_sativa","iNatAg/vicia_sepium","iNatAg/vigna_adenantha","iNatAg/vigna_angularis","iNatAg/vigna_hosei","iNatAg/vigna_lanceolata","iNatAg/vigna_longifolia","iNatAg/vigna_luteola","iNatAg/vigna_parkeri","iNatAg/vigna_radiata","iNatAg/vigna_trilobata","iNatAg/vigna_umbellata","iNatAg/vigna_unguiculata","iNatAg/vigna_vexillata","iNatAg/vinca_major","iNatAg/vinca_minor","iNatAg/viola_lanceolata","iNatAg/viola_odorata","iNatAg/viola_tricolor","iNatAg/viscum_album","iNatAg/vitellaria_paradoxa","iNatAg/vitex_agnus-castus","iNatAg/vitex_doniana","iNatAg/vitex_negundo","iNatAg/vitis_labrusca","iNatAg/vitis_rotundifolia","iNatAg/vitis_vinifera","iNatAg/vitis_vulpina","iNatAg/waltheria_indica","iNatAg/warburgia_salutaris","iNatAg/warburgia_ugandensis","iNatAg/withania_somnifera","iNatAg/wrightia_tomentosa","iNatAg/xanthium_spinosum","iNatAg/xanthium_strumarium","iNatAg/xanthosoma_sagittifolium","iNatAg/ximenia_americana","iNatAg/xylia_xylocarpa","iNatAg/xylocarpus_granatum","iNatAg/xylocarpus_mekongensis","iNatAg/xylocarpus_moluccensis","iNatAg/xylorhiza_glabriuscula","iNatAg/yucca_elephantipes","iNatAg/zannichellia_palustris","iNatAg/zanthoxylum_americanum","iNatAg/zea_mays","iNatAg/zingiber_officinale","iNatAg/zizania_aquatica","iNatAg/zizania_latifolia","iNatAg/ziziphus_abyssinica","iNatAg/ziziphus_mauritiana","iNatAg/ziziphus_mucronata","iNatAg/zornia_diphylla","iNatAg/zornia_glochidiata","iNatAg/zornia_latifolia","iNatAg/zostera_marina","iNatAg/zoysia_matrella","iNatAg/zygophyllum_fabago","java_plum_leaf_disease_classification","jujube_bruise_classification","jute_disease_classification","leaf_counting_denmark","lemon_leaf_disease_classification","lemongrass_disease_classification","lentil_disease_classification","LSID_bean_segmentation","maize_disease_classification","maize_tomato_weed_classification","maize_weed_detection","malabar_spinach_disease_classification","mandarin_leaf_variety_classification","mangifera2012_variety_classification","mango_detection_australia","mango_growth_detection","mango_leaf_disease_classification","MangoClassify-12_variety_classification","MangoImageBD_classification","MangoLeafBD_disease_classification","Medjool_date_ripeness_detection","MedLeafX_disease_classification","merlot_mildew_segmentation","MH_SoyaHealthVision_disease_classification_leaf","MH_SoyaHealthVision_disease_classification_uav","MH_Weed16_weed_detection","MH_Weed16_weed_variety_classification","mint_leaf_classification","money_plant_disease_classification","MoringaLeafNet_disease_classification","mulberry_leaf_variety_classification","oil_palm_fruit_ripeness_classification","okra_maturity_classification","okra_thermal_maturity_classification","OkraDiseaseNet_disease_classification","olive_tree_crown_detection","onionfoliageset_detection","orange_leaf_disease_classification","oyster_mushroom_maturity_detection","paddy_disease_classification","PaddyVarietyBD_variety_classification","papaya_leaf_disease_classification","papaya_leaf_disease_classification_bangladesh","papaya_leaf_disease_detection","peachpear_flower_segmentation","PFSD_Musa_banana_disease_classification","PFSD_Musa_banana_variety_classification","plant_doc_classification","plant_doc_detection","plant_leaf_disease_classification","plant_seedlings_aarhus","plant_village_classification","plum_leaf_fruit_disease_classification","pomegranate_disease_classification","pomegranate_disease_classification_india","pomegranate_growth_detection","pomegranate_quality_classification","pomegranate_thermal_defect_classification","potato_leaf_blight_classification","potato_leaf_disease_classification","PriBel_betel_leaf_disease_classification","QuinceSet_detection","radish_leaf_disease_classification","rangeland_weeds_australia","red_grapes_and_leaves_segmentation","REMP_plant_classification","rice_disease_classification_bangladesh","rice_field_weed_classification","rice_grain_variety_classification","rice_leaf_disease_classification","rice_leaf_disease_classification_india","rice_panicle_detection","rice_seedling_classification","rice_seedling_segmentation","rice_variety_classification_bangladesh","riseholme_strawberry_classification_2021","RoCoLe_disease_detection","RoseLeafInsight_disease_classification","RoseNet_leaf_disease_classification","SapBark_64_variety_classification","sapota_fruit_size_classification","seasveg_classification_bd","SIMPDV1_plant_classification","sorghum_weed_classification","sorghum_weed_segmentation","soybean_damage_classification","soybean_harvest_damage_segmentation","soybean_insect_classification","soybean_leaf_disease_classification","soybean_leaf_disease_classification_brazil","soybean_variety_classification","soybean_weed_uav_brazil","SoyNet_leaf_health_classification","strawberry_detection_2022","strawberry_detection_2023","strawberry_growth_detection","Strawberry-DS_strawberry_detection","sugarbeet_weed_segmentation","sugarcane_damage_usa","sugarcane_leaf_disease_classification","sunflower_detection","sunflower_disease_classification","susnato_plant_disease_detection_processed","synthetic_cowpea_flower_detection","synthetic_cowpea_pod_detection","taro_blight_stage_classification","tea_leaf_disease_classification","tea_leaf_disease_classification_bangladesh","TealeafAgeQuality_detection","teaLeafBD_disease_classification_classification","three_plant_leaf_disease_classification","three_season_weed_detection","TOM2024_disease_classification","tomato_factory_detection","tomato_leaf_disease","tomato_maturity_classification","tomato_quality_classification","tomato_ripeness_detection","tropical_flower_variety_classification","turmeric_disease_classification","turmeric_leaf_disease_classification","vegann_multicrop_presence_segmentation","vegetable_classification_bangladesh_classification","vegetable_crop_early_detection","VegNet_cauliflower_disease_classification","VegNet_quality_classification","vine_virus_photo_dataset","vineyard_grape_segmentation","vineyard_pruning_segmentation","WaterHyacinth_variety_classification","watermelon_disease_classification","weed_crop_detection","wGrapeUNIPD-DL_white_grape_bunch_detection","wheat_head_counting","white_grapes_and_leaves_segmentation","WisWheat"]}
\ No newline at end of file
diff --git a/static/data/embeddings/vectors.bin b/static/data/embeddings/vectors.bin
index 9e41634..0d3cfe9 100644
Binary files a/static/data/embeddings/vectors.bin and b/static/data/embeddings/vectors.bin differ
diff --git a/static/data/hf_datasets.json b/static/data/hf_datasets.json
index ad78d00..e816b9e 100644
--- a/static/data/hf_datasets.json
+++ b/static/data/hf_datasets.json
@@ -11129,5 +11129,436 @@
"source": "huggingface",
"hf_link": "https://huggingface.co/datasets/Project-AgML/three_season_weed_detection",
"examples_image_url": "/img/agml/sample_images/three_season_weed_detection_sample.webp"
+ },
+ {
+ "name": "AgroMind",
+ "machine_learning_task": "image-text-to-text",
+ "qa_type": [
+ "judgement",
+ "counting",
+ "multiple_choice_text",
+ "multiple_choice_image",
+ "open_ended"
+ ],
+ "agricultural_task": null,
+ "task_dimensions": [
+ "Spatial Perception",
+ "Object Understanding",
+ "Scene Understanding",
+ "Scene Reasoning"
+ ],
+ "num_task_types": 13,
+ "location": "multinational",
+ "environment": "mixed",
+ "crop_types": [
+ "maize",
+ "oil palm",
+ "apple",
+ "almond",
+ "mango",
+ "rice",
+ "citrus",
+ "+multiple other crops"
+ ],
+ "sensor_modality": [
+ "rgb",
+ "nir multispectral"
+ ],
+ "real_or_synthetic": "real",
+ "platform": [
+ "uav",
+ "satellite",
+ "ground camera"
+ ],
+ "input_data_format": "",
+ "annotation_format": null,
+ "conversation_format": "single_turn_reasoning",
+ "num_images": 19615,
+ "augmented_num_images": null,
+ "num_rows": 27247,
+ "classes": [],
+ "language": [
+ "en"
+ ],
+ "documentation": "https://arxiv.org/abs/2505.12207",
+ "examples_image_url": null,
+ "license": "cc-by-nc-4.0",
+ "citation": "Li, Qingmei; Zhang, Yang; Mai, Zurong; Chen, Yuhang; Lou, Shuohong; Huang, Henglian; Zhang, Jiarui; Zhang, Zhiwei; Wen, Yibin; Li, Weijia; Fu, Haohuan; Huang, Jianxi; Zheng, Juepeng (2025), \"Can Large Multimodal Models Understand Agricultural Scenes? Benchmarking with AgroMind\", arXiv, arXiv:2505.12207",
+ "parent_dataset": "AgroMind/AgroMind",
+ "zip_size_bytes": 8220000000,
+ "augmented_zip_size_bytes": null,
+ "source": "huggingface",
+ "hf_link": "https://huggingface.co/datasets/Project-AgML/AgroMind",
+ "composition": {
+ "is_compiled": true,
+ "num_source_datasets": 9,
+ "source_datasets_named": true,
+ "source_datasets": [
+ "ACFR Orchard Fruit Dataset",
+ "2018 AI Challenge Dataset",
+ "IP102 Dataset",
+ "Agriculture Vision Challenge",
+ "OilPalmUAV Dataset",
+ "PhenoBench Dataset",
+ "OAM-TCD Dataset",
+ "Maize Tassel Identification",
+ "7-Provinces Ground Dataset"
+ ]
+ }
+ },
+ {
+ "name": "AgroBench",
+ "machine_learning_task": "image-text-to-text",
+ "qa_type": [
+ "multiple_choice_text"
+ ],
+ "agricultural_task": null,
+ "task_dimensions": [
+ "Disease Identification",
+ "Disease Management",
+ "Pest Identification",
+ "Weed Identification",
+ "Crop Management",
+ "Machine Usage QA",
+ "Traditional Management"
+ ],
+ "num_task_types": 7,
+ "location": "multinational",
+ "environment": "mixed",
+ "crop_types": [
+ "tomato",
+ "apple",
+ "maize",
+ "potato",
+ "rice",
+ "banana",
+ "grape",
+ "pepper",
+ "onion",
+ "wheat",
+ "+193 more"
+ ],
+ "sensor_modality": [
+ "rgb"
+ ],
+ "real_or_synthetic": "real",
+ "platform": [
+ "ground"
+ ],
+ "input_data_format": "",
+ "annotation_format": null,
+ "conversation_format": "single_turn_reasoning",
+ "num_images": 3745,
+ "augmented_num_images": null,
+ "num_rows": 4342,
+ "classes": [],
+ "language": [
+ "en"
+ ],
+ "documentation": "https://arxiv.org/abs/2507.20519",
+ "examples_image_url": null,
+ "license": "cc-by-nc-4.0",
+ "citation": "Shinoda, Risa; Inoue, Nakamasa; Kataoka, Hirokatsu; Onishi, Masaki; Ushiku, Yoshitaka (2025), \"AgroBench: Vision-Language Model Benchmark in Agriculture\", arXiv, arXiv:2507.20519",
+ "parent_dataset": "risashinoda/AgroBench",
+ "zip_size_bytes": 2118998617,
+ "augmented_zip_size_bytes": null,
+ "source": "huggingface",
+ "hf_link": "https://huggingface.co/datasets/Project-AgML/AgroBench",
+ "composition": {
+ "is_compiled": true,
+ "num_source_datasets": 4,
+ "source_datasets_named": true,
+ "source_datasets": [
+ "Perennial Plants Detection",
+ "CottonWeedDet3",
+ "Open Plant Phenotype Database of Common Weeds in Denmark",
+ "CropAndWeed Dataset"
+ ]
+ }
+ },
+ {
+ "name": "AgroCoT",
+ "machine_learning_task": "image-text-to-text",
+ "qa_type": [
+ "judgement",
+ "counting",
+ "multiple_choice_text",
+ "multiple_choice_image",
+ "open_ended",
+ "long_form_QA"
+ ],
+ "agricultural_task": null,
+ "task_dimensions": [
+ "Object Detection",
+ "Quantitative Analysis",
+ "Disease Monitoring",
+ "Spatial Understanding",
+ "Environmental Management"
+ ],
+ "num_task_types": 15,
+ "location": "multinational",
+ "environment": "mixed",
+ "crop_types": [
+ "mixed_multiple_sources"
+ ],
+ "sensor_modality": [
+ "rgb",
+ "multispectral"
+ ],
+ "real_or_synthetic": "real",
+ "platform": [
+ "uav",
+ "satellite",
+ "ground"
+ ],
+ "input_data_format": "",
+ "annotation_format": null,
+ "conversation_format": "single_turn_reasoning",
+ "num_images": 4628,
+ "augmented_num_images": null,
+ "num_rows": 4759,
+ "classes": [],
+ "language": [
+ "en"
+ ],
+ "documentation": "https://arxiv.org/abs/2511.23253",
+ "examples_image_url": null,
+ "license": "cc-by-nc-4.0",
+ "citation": "Wen, Yibin; Li, Qingmei; Ye, Zi; Zhang, Jiarui; Fan, Xiaoya; Mai, Zurong; Wu, Jing; Lou, Shuohong; Chen, Yuhang; Huang, Henglian; Zhang, Yang; Gu, Defeng; Zhao, Lingyuan; Lu, Yutong; Fu, Haohuan; Huang, Jianxi; Zheng, Juepeng (2025), \"AgroCoT: A Chain-of-Thought Benchmark for Evaluating Reasoning in Vision-Language Models for Agriculture\", arXiv, arXiv:2511.23253",
+ "parent_dataset": "AgroCoT/AgroCoT",
+ "zip_size_bytes": 5420000000,
+ "augmented_zip_size_bytes": null,
+ "source": "huggingface",
+ "hf_link": "https://huggingface.co/datasets/Project-AgML/AgroCoT",
+ "composition": {
+ "is_compiled": true,
+ "num_source_datasets": 9,
+ "source_datasets_named": true,
+ "source_datasets": [
+ "OilPalmUAV",
+ "PhenoBench",
+ "Agriculture-Vision Challenge (AVC)",
+ "IP102",
+ "CropHarvest",
+ "CDDM",
+ "AGMMU",
+ "AgroBench",
+ "Proprietary VQA dataset"
+ ]
+ }
+ },
+ {
+ "name": "WisWheat",
+ "machine_learning_task": "image-text-to-text",
+ "qa_type": [
+ "multiple_choice_text",
+ "counting",
+ "open_ended"
+ ],
+ "agricultural_task": null,
+ "task_dimensions": [
+ "Weed Detection",
+ "Yellow Rust",
+ "Stem Rust",
+ "Leaf Rust",
+ "Mildew",
+ "Septoria",
+ "Srought Abiotic Stress",
+ "Healthy Wheat",
+ "Growth Stage Diagnosis",
+ "Growth Stage Classification VQA",
+ "Organ Percentage Estimation",
+ "Rust Percentage Estimation",
+ "Spike Counting"
+ ],
+ "num_task_types": 13,
+ "location": "Australia",
+ "environment": "field",
+ "crop_types": [
+ "wheat"
+ ],
+ "sensor_modality": [
+ "rgb"
+ ],
+ "real_or_synthetic": "real",
+ "platform": [
+ "ground"
+ ],
+ "input_data_format": "",
+ "annotation_format": null,
+ "conversation_format": "single_turn_reasoning",
+ "num_images": null,
+ "augmented_num_images": null,
+ "num_rows": 11265,
+ "classes": [],
+ "language": [
+ "en"
+ ],
+ "documentation": "https://arxiv.org/abs/2506.06084",
+ "examples_image_url": null,
+ "license": "cc-by-nc-4.0",
+ "citation": "Yuan, Bowen; Song, Selena; Fernandez, Javier; Luo, Yadan; Baktashmotlagh, Mahsa; Wang, Zijian (2025), \"WisWheat: A Three-Tiered Vision-Language Dataset for Wheat Management\", arXiv, arXiv:2506.06084",
+ "parent_dataset": null,
+ "zip_size_bytes": 13300000000,
+ "augmented_zip_size_bytes": null,
+ "source": "huggingface",
+ "hf_link": "https://huggingface.co/datasets/Project-AgML/WisWheat",
+ "composition": {
+ "is_compiled": true,
+ "num_source_datasets": 7,
+ "source_datasets_named": true,
+ "source_datasets": [
+ "WFD",
+ "Minimal Dataset [Drought]",
+ "GWHD 2021",
+ "GWFSS",
+ "Radish Weed Dataset",
+ "Cobbity Wheat",
+ "Rust Segmentation Dataset"
+ ]
+ }
+ },
+ {
+ "name": "Agri-LLaVA",
+ "machine_learning_task": "image-text-to-text",
+ "qa_type": [
+ "open_ended"
+ ],
+ "agricultural_task": null,
+ "task_dimensions": [
+ "Feature Description",
+ "Category Identification",
+ "Symptom Identification"
+ ],
+ "num_task_types": 2,
+ "location": "multinational",
+ "environment": "mixed",
+ "crop_types": [
+ "tomato",
+ "orange",
+ "grape",
+ "apple",
+ "corn",
+ "vitis",
+ "rice",
+ "soybean",
+ "pepper",
+ "mango",
+ "+24 more"
+ ],
+ "sensor_modality": [
+ "rgb"
+ ],
+ "real_or_synthetic": "real",
+ "platform": [
+ "ground"
+ ],
+ "annotation_format": null,
+ "conversation_format": "mixed",
+ "num_images": 391785,
+ "augmented_num_images": null,
+ "num_rows": 391785,
+ "classes": [],
+ "language": [
+ "en"
+ ],
+ "documentation": "https://arxiv.org/abs/2412.02158",
+ "examples_image_url": null,
+ "license": "other",
+ "citation": "Wang, Liqiong; Jin, Teng; Yang, Jinyu; Leonardis, Ales; Wang, Fangyi; Zheng, Feng (2024), \"Agri-LLaVA: Knowledge-Infused Large Multimodal Assistant on Agricultural Pests and Diseases\", arXiv, arXiv:2412.02158",
+ "parent_dataset": "Agri-LLaVA-Anonymous/Agricultural_pests_and_diseases_feature_alignment_data",
+ "zip_size_bytes": 66500000000,
+ "augmented_zip_size_bytes": null,
+ "source": "huggingface",
+ "hf_link": "https://huggingface.co/datasets/Project-AgML/Agri-LLaVA_Agricultural_Pests_And_Diseases_Feature_Alignment_Dataset",
+ "composition": {
+ "is_compiled": true,
+ "num_source_datasets": 16,
+ "source_datasets_named": true,
+ "source_datasets": [
+ "AppleLeaf9",
+ "LWDCD",
+ "PlantVillage-Dataset-master",
+ "Rice Leaf Disease Image samples",
+ "Chinese Academy of Sciences Disease Sample Data",
+ "IP102",
+ "Images of Apple Diseases and Pests",
+ "Crop Pest and Disease Detection",
+ "IDADP-grape Disease Identification",
+ "OLID I",
+ "Plant Disease Expert",
+ "RiceLeafs",
+ "Cabbage",
+ "Pepper Pests and Diseases",
+ "Wheat Disease Classification",
+ "Wheat Leaf Dataset"
+ ]
+ }
+ },
+ {
+ "name": "CDDM",
+ "machine_learning_task": "image-text-to-text",
+ "qa_type": [
+ "open_ended"
+ ],
+ "agricultural_task": null,
+ "task_dimensions": [
+ "Disease Diagnosis",
+ "Disease Knowledge QA"
+ ],
+ "num_task_types": 2,
+ "location": "unspecified",
+ "environment": "mixed",
+ "crop_types": [
+ "tomato",
+ "grape",
+ "potato",
+ "apple",
+ "wheat",
+ "bell pepper",
+ "rice",
+ "corn",
+ "soybean",
+ "orange",
+ "cherry",
+ "blueberry",
+ "strawberry",
+ "pumpkin",
+ "peach"
+ ],
+ "sensor_modality": [
+ "rgb"
+ ],
+ "real_or_synthetic": "real",
+ "platform": [
+ "ground"
+ ],
+ "annotation_format": null,
+ "conversation_format": "mixed",
+ "num_images": null,
+ "augmented_num_images": null,
+ "num_rows": 145261,
+ "classes": [],
+ "language": [
+ "en"
+ ],
+ "documentation": "https://arxiv.org/abs/2503.06973",
+ "examples_image_url": null,
+ "license": "cc-by-nc-4.0",
+ "citation": "Liu, Xiang; Liu, Zhaoxiang; Hu, Huan; Chen, Zezhou; Wang, Kohou; Wang, Kai; Lian, Shiguo (2025), \"A Multimodal Benchmark Dataset and Model for Crop Disease Diagnosis\", arXiv, arXiv:2503.06973",
+ "parent_dataset": "https://github.com/UnicomAI/UnicomBenchmark/tree/main/CDDMBench",
+ "zip_size_bytes": 3070000000,
+ "augmented_zip_size_bytes": null,
+ "source": "huggingface",
+ "hf_link": "https://huggingface.co/datasets/Project-AgML/CDDM",
+ "composition": {
+ "is_compiled": true,
+ "num_source_datasets": 2,
+ "source_datasets_named": true,
+ "source_datasets": [
+ "Web Data (Kaggle + web-crawled)",
+ "Private Data (field surveys)"
+ ]
+ }
}
-]
+]
\ No newline at end of file
diff --git a/tests/semantic-search-index.test.ts b/tests/semantic-search-index.test.ts
index 5f215b8..bbd7c8b 100644
--- a/tests/semantic-search-index.test.ts
+++ b/tests/semantic-search-index.test.ts
@@ -30,7 +30,7 @@ describe('buildIndexRow', () => {
crop_types: ['corn', 'soybean'],
sensor_modality: 'rgb',
real_or_synthetic: 'real',
- platform: 'drone',
+ platform: ['drone'],
input_data_format: null,
annotation_format: null,
num_images: 100,
@@ -43,6 +43,13 @@ describe('buildIndexRow', () => {
examples_image_url: null,
license: null,
citation: null,
+ dataset_type: 'vision',
+ qa_type: null,
+ task_dimensions: null,
+ num_task_types: null,
+ conversation_format: null,
+ num_rows: null,
+ source_datasets: null,
};
test('keeps `name` exact but humanizes `nameText` for BM25 recall', () => {