@blamejs/exceptd-skills 0.13.121 → 0.13.123
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/data/_indexes/_meta.json +9 -9
- package/data/_indexes/activity-feed.json +2 -2
- package/data/_indexes/catalog-summaries.json +2 -2
- package/data/_indexes/chains.json +1503 -1
- package/data/atlas-ttps.json +9 -3
- package/data/attack-techniques.json +16 -5
- package/data/cve-catalog.json +427 -2
- package/data/cwe-catalog.json +9 -4
- package/data/framework-control-gaps.json +48 -13
- package/data/zeroday-lessons.json +200 -0
- package/manifest.json +44 -44
- package/package.json +1 -1
- package/sbom.cdx.json +24 -24
|
@@ -121,7 +121,11 @@
|
|
|
121
121
|
"CVE-2025-69286",
|
|
122
122
|
"CVE-2026-22218",
|
|
123
123
|
"CVE-2026-22219",
|
|
124
|
-
"CVE-2025-51480"
|
|
124
|
+
"CVE-2025-51480",
|
|
125
|
+
"CVE-2025-10164",
|
|
126
|
+
"CVE-2026-5760",
|
|
127
|
+
"CVE-2026-21858",
|
|
128
|
+
"CVE-2025-68668"
|
|
125
129
|
],
|
|
126
130
|
"atlas_refs": [
|
|
127
131
|
"AML.T0018",
|
|
@@ -1317,7 +1321,11 @@
|
|
|
1317
1321
|
"CVE-2026-31230",
|
|
1318
1322
|
"CVE-2026-33017",
|
|
1319
1323
|
"CVE-2026-22218",
|
|
1320
|
-
"CVE-2025-51480"
|
|
1324
|
+
"CVE-2025-51480",
|
|
1325
|
+
"CVE-2025-10164",
|
|
1326
|
+
"CVE-2026-5760",
|
|
1327
|
+
"CVE-2026-21858",
|
|
1328
|
+
"CVE-2025-68668"
|
|
1321
1329
|
],
|
|
1322
1330
|
"atlas_refs": [
|
|
1323
1331
|
"AML.T0051",
|
|
@@ -2266,7 +2274,8 @@
|
|
|
2266
2274
|
"evidence_cves": [
|
|
2267
2275
|
"CVE-2024-21626",
|
|
2268
2276
|
"CVE-2025-22224",
|
|
2269
|
-
"CVE-2025-22225"
|
|
2277
|
+
"CVE-2025-22225",
|
|
2278
|
+
"CVE-2025-68668"
|
|
2270
2279
|
],
|
|
2271
2280
|
"atlas_refs": [],
|
|
2272
2281
|
"attack_refs": [
|
|
@@ -2318,7 +2327,8 @@
|
|
|
2318
2327
|
"CVE-2026-34159",
|
|
2319
2328
|
"CVE-2026-42897",
|
|
2320
2329
|
"CVE-2024-12450",
|
|
2321
|
-
"CVE-2026-22219"
|
|
2330
|
+
"CVE-2026-22219",
|
|
2331
|
+
"CVE-2026-5760"
|
|
2322
2332
|
],
|
|
2323
2333
|
"atlas_refs": [
|
|
2324
2334
|
"AML.T0096",
|
|
@@ -2436,7 +2446,10 @@
|
|
|
2436
2446
|
"CVE-2024-12450",
|
|
2437
2447
|
"CVE-2026-22218",
|
|
2438
2448
|
"CVE-2026-22219",
|
|
2439
|
-
"CVE-2025-51480"
|
|
2449
|
+
"CVE-2025-51480",
|
|
2450
|
+
"CVE-2025-10164",
|
|
2451
|
+
"CVE-2026-5760",
|
|
2452
|
+
"CVE-2026-21858"
|
|
2440
2453
|
],
|
|
2441
2454
|
"atlas_refs": [
|
|
2442
2455
|
"AML.T0053"
|
|
@@ -2843,7 +2856,8 @@
|
|
|
2843
2856
|
"CVE-2026-46333",
|
|
2844
2857
|
"CVE-2026-5281",
|
|
2845
2858
|
"CVE-2026-6973",
|
|
2846
|
-
"CVE-2026-9082"
|
|
2859
|
+
"CVE-2026-9082",
|
|
2860
|
+
"CVE-2025-10164"
|
|
2847
2861
|
],
|
|
2848
2862
|
"atlas_refs": [],
|
|
2849
2863
|
"attack_refs": [
|
|
@@ -2888,7 +2902,8 @@
|
|
|
2888
2902
|
"CVE-2026-22778",
|
|
2889
2903
|
"CVE-2026-32202",
|
|
2890
2904
|
"CVE-2026-33017",
|
|
2891
|
-
"CVE-2026-33825"
|
|
2905
|
+
"CVE-2026-33825",
|
|
2906
|
+
"CVE-2025-68668"
|
|
2892
2907
|
],
|
|
2893
2908
|
"atlas_refs": [
|
|
2894
2909
|
"AML.T0017"
|
|
@@ -2927,7 +2942,9 @@
|
|
|
2927
2942
|
"CVE-2024-37052",
|
|
2928
2943
|
"CVE-2024-37060",
|
|
2929
2944
|
"MAL-2026-SHAI-HULUD-OSS",
|
|
2930
|
-
"CVE-2025-51480"
|
|
2945
|
+
"CVE-2025-51480",
|
|
2946
|
+
"CVE-2025-10164",
|
|
2947
|
+
"CVE-2026-5760"
|
|
2931
2948
|
],
|
|
2932
2949
|
"atlas_refs": [
|
|
2933
2950
|
"AML.T0010"
|
|
@@ -5222,7 +5239,11 @@
|
|
|
5222
5239
|
"CVE-2025-69286",
|
|
5223
5240
|
"CVE-2026-22218",
|
|
5224
5241
|
"CVE-2026-22219",
|
|
5225
|
-
"CVE-2025-51480"
|
|
5242
|
+
"CVE-2025-51480",
|
|
5243
|
+
"CVE-2025-10164",
|
|
5244
|
+
"CVE-2026-5760",
|
|
5245
|
+
"CVE-2026-21858",
|
|
5246
|
+
"CVE-2025-68668"
|
|
5226
5247
|
],
|
|
5227
5248
|
"atlas_refs": [],
|
|
5228
5249
|
"attack_refs": [
|
|
@@ -5274,7 +5295,9 @@
|
|
|
5274
5295
|
"CVE-2026-7482",
|
|
5275
5296
|
"CVE-2025-69286",
|
|
5276
5297
|
"CVE-2026-22218",
|
|
5277
|
-
"CVE-2026-22219"
|
|
5298
|
+
"CVE-2026-22219",
|
|
5299
|
+
"CVE-2026-21858",
|
|
5300
|
+
"CVE-2025-68668"
|
|
5278
5301
|
],
|
|
5279
5302
|
"atlas_refs": [
|
|
5280
5303
|
"AML.T0051"
|
|
@@ -5818,7 +5841,11 @@
|
|
|
5818
5841
|
"CVE-2024-12450",
|
|
5819
5842
|
"CVE-2026-22218",
|
|
5820
5843
|
"CVE-2026-22219",
|
|
5821
|
-
"CVE-2025-51480"
|
|
5844
|
+
"CVE-2025-51480",
|
|
5845
|
+
"CVE-2025-10164",
|
|
5846
|
+
"CVE-2026-5760",
|
|
5847
|
+
"CVE-2026-21858",
|
|
5848
|
+
"CVE-2025-68668"
|
|
5822
5849
|
],
|
|
5823
5850
|
"atlas_refs": [],
|
|
5824
5851
|
"attack_refs": [
|
|
@@ -5946,7 +5973,11 @@
|
|
|
5946
5973
|
"CVE-2025-69286",
|
|
5947
5974
|
"CVE-2026-22218",
|
|
5948
5975
|
"CVE-2026-22219",
|
|
5949
|
-
"CVE-2025-51480"
|
|
5976
|
+
"CVE-2025-51480",
|
|
5977
|
+
"CVE-2025-10164",
|
|
5978
|
+
"CVE-2026-5760",
|
|
5979
|
+
"CVE-2026-21858",
|
|
5980
|
+
"CVE-2025-68668"
|
|
5950
5981
|
],
|
|
5951
5982
|
"atlas_refs": [],
|
|
5952
5983
|
"attack_refs": [
|
|
@@ -6372,7 +6403,11 @@
|
|
|
6372
6403
|
"CVE-2024-12450",
|
|
6373
6404
|
"CVE-2026-22218",
|
|
6374
6405
|
"CVE-2026-22219",
|
|
6375
|
-
"CVE-2025-51480"
|
|
6406
|
+
"CVE-2025-51480",
|
|
6407
|
+
"CVE-2025-10164",
|
|
6408
|
+
"CVE-2026-5760",
|
|
6409
|
+
"CVE-2026-21858",
|
|
6410
|
+
"CVE-2025-68668"
|
|
6376
6411
|
],
|
|
6377
6412
|
"atlas_refs": [],
|
|
6378
6413
|
"attack_refs": [
|
|
@@ -17346,5 +17346,205 @@
|
|
|
17346
17346
|
],
|
|
17347
17347
|
"_auto_imported": false,
|
|
17348
17348
|
"_intake_method": "manual-verified-curation"
|
|
17349
|
+
},
|
|
17350
|
+
"CVE-2025-10164": {
|
|
17351
|
+
"name": "SGLang update_weights_from_tensor Unsafe Deserialization RCE",
|
|
17352
|
+
"lesson_date": "2026-05-26",
|
|
17353
|
+
"attack_vector": {
|
|
17354
|
+
"description": "SGLang's update_weights_from_tensor deserializes attacker-controllable serialized-object tensor data, so a deployment exposing the weight-update path to untrusted input executes arbitrary code.",
|
|
17355
|
+
"privileges_required": "none where the weight-update path accepts untrusted input",
|
|
17356
|
+
"complexity": "low",
|
|
17357
|
+
"ai_factor": "The abused surface is SGLang, an LLM serving framework. The lesson: model-weight tensors fed to a serving framework are untrusted code - never deserialize untrusted serialized objects; use a safe tensor format and restrict the weight-update path."
|
|
17358
|
+
},
|
|
17359
|
+
"framework_coverage": {
|
|
17360
|
+
"NIST-800-53-SI-10": {
|
|
17361
|
+
"covered": true,
|
|
17362
|
+
"adequate": false,
|
|
17363
|
+
"gap": "No input validation is applied to the serialized-object tensor data before deserialization."
|
|
17364
|
+
},
|
|
17365
|
+
"NIST-800-53-SR-3": {
|
|
17366
|
+
"covered": true,
|
|
17367
|
+
"adequate": false,
|
|
17368
|
+
"gap": "Supply-chain controls do not treat model-weight tensors as untrusted code."
|
|
17369
|
+
},
|
|
17370
|
+
"ALL-AI-PIPELINE-INTEGRITY": {
|
|
17371
|
+
"covered": false,
|
|
17372
|
+
"adequate": false,
|
|
17373
|
+
"gap": "No framework treats a serving framework's weight-update input as an integrity boundary requiring a safe (non-deserializing) format."
|
|
17374
|
+
}
|
|
17375
|
+
},
|
|
17376
|
+
"compliance_exposure_score": {
|
|
17377
|
+
"percent_audit_passing_orgs_still_exposed": 80,
|
|
17378
|
+
"basis": "LLM serving frameworks accept model weights over internal paths on trusted assumptions; unsafe object deserialization persists.",
|
|
17379
|
+
"theater_pattern": "ai_serving_unsafe_deserialization"
|
|
17380
|
+
},
|
|
17381
|
+
"ai_discovered_zeroday": false,
|
|
17382
|
+
"ai_discovery_source": "human_researcher",
|
|
17383
|
+
"ai_assist_factor": "none",
|
|
17384
|
+
"new_control_requirements": [
|
|
17385
|
+
{
|
|
17386
|
+
"id": "NEW-CTRL-091",
|
|
17387
|
+
"name": "UNTRUSTED-MODEL-ARTIFACT-LOADING",
|
|
17388
|
+
"description": "Treat ML model artifacts and model-weight tensors as untrusted code: never deserialize / load serialized-object artifacts from untrusted sources, prefer safe formats (e.g. safetensors), verify provenance, and restrict weight-update / model-load paths to trusted callers in a sandboxed, least-privilege environment. The distinguishing test: send a crafted serialized-object payload to the weight-update path on a sandboxed instance and confirm no code executes.",
|
|
17389
|
+
"evidence": "https://github.com/advisories/GHSA-9w53-xr52-mwgj",
|
|
17390
|
+
"gap_closes": [
|
|
17391
|
+
"NIST-800-53-SI-2",
|
|
17392
|
+
"NIST-800-53-SI-10",
|
|
17393
|
+
"ALL-AI-PIPELINE-INTEGRITY"
|
|
17394
|
+
]
|
|
17395
|
+
}
|
|
17396
|
+
],
|
|
17397
|
+
"_auto_imported": false,
|
|
17398
|
+
"_intake_method": "manual-verified-curation"
|
|
17399
|
+
},
|
|
17400
|
+
"CVE-2026-5760": {
|
|
17401
|
+
"name": "SGLang /v1/rerank Malicious-Model Jinja2 Template-Injection RCE",
|
|
17402
|
+
"lesson_date": "2026-05-26",
|
|
17403
|
+
"attack_vector": {
|
|
17404
|
+
"description": "SGLang renders a model-supplied tokenizer.chat_template with a non-sandboxed jinja2.Environment at the /v1/rerank endpoint, so a malicious model's template expression executes arbitrary code.",
|
|
17405
|
+
"privileges_required": "none (unauthenticated rerank request loading a malicious model)",
|
|
17406
|
+
"complexity": "low",
|
|
17407
|
+
"ai_factor": "The abused surface is SGLang, an LLM serving framework. The lesson: a model-supplied chat template is untrusted code - render it only in a sandboxed jinja2 environment (ImmutableSandboxedEnvironment), never the default Environment."
|
|
17408
|
+
},
|
|
17409
|
+
"framework_coverage": {
|
|
17410
|
+
"NIST-800-53-SI-10": {
|
|
17411
|
+
"covered": true,
|
|
17412
|
+
"adequate": false,
|
|
17413
|
+
"gap": "No sandboxing is applied to the model-supplied chat template before rendering."
|
|
17414
|
+
},
|
|
17415
|
+
"NIST-800-53-SC-7": {
|
|
17416
|
+
"covered": true,
|
|
17417
|
+
"adequate": false,
|
|
17418
|
+
"gap": "Boundary protection does not isolate the template-rendering path an unauthenticated request reaches."
|
|
17419
|
+
},
|
|
17420
|
+
"ALL-AI-PIPELINE-INTEGRITY": {
|
|
17421
|
+
"covered": false,
|
|
17422
|
+
"adequate": false,
|
|
17423
|
+
"gap": "No framework treats a model-supplied chat template as untrusted code requiring a sandboxed renderer."
|
|
17424
|
+
}
|
|
17425
|
+
},
|
|
17426
|
+
"compliance_exposure_score": {
|
|
17427
|
+
"percent_audit_passing_orgs_still_exposed": 82,
|
|
17428
|
+
"basis": "LLM serving frameworks render model-supplied chat templates with default (non-sandboxed) jinja2; template-injection via malicious models is rarely audited.",
|
|
17429
|
+
"theater_pattern": "ai_model_template_injection"
|
|
17430
|
+
},
|
|
17431
|
+
"ai_discovered_zeroday": false,
|
|
17432
|
+
"ai_discovery_source": "human_researcher",
|
|
17433
|
+
"ai_assist_factor": "none",
|
|
17434
|
+
"new_control_requirements": [
|
|
17435
|
+
{
|
|
17436
|
+
"id": "NEW-CTRL-110",
|
|
17437
|
+
"name": "AI-MODEL-TEMPLATE-RENDERING-SANDBOX",
|
|
17438
|
+
"description": "An LLM serving framework that renders model-supplied templates (jinja2 chat_template, prompt templates, tokenizer config) must render them in a sandboxed environment - jinja2's ImmutableSandboxedEnvironment, never the default jinja2.Environment() - and treat third-party model files (incl. GGUF) as untrusted. The distinguishing test: load a model whose chat_template embeds a Jinja2 expression that reaches builtins/os on a staging instance and confirm rendering is refused, not executed - a framework that renders model templates with the default environment is exploitable for server-side template-injection RCE.",
|
|
17439
|
+
"evidence": "https://kb.cert.org/vuls/id/915947",
|
|
17440
|
+
"gap_closes": [
|
|
17441
|
+
"NIST-800-53-SI-10",
|
|
17442
|
+
"NIST-800-53-SC-7",
|
|
17443
|
+
"ALL-AI-PIPELINE-INTEGRITY"
|
|
17444
|
+
]
|
|
17445
|
+
}
|
|
17446
|
+
],
|
|
17447
|
+
"_auto_imported": false,
|
|
17448
|
+
"_intake_method": "manual-verified-curation"
|
|
17449
|
+
},
|
|
17450
|
+
"CVE-2026-21858": {
|
|
17451
|
+
"name": "n8n Form-Based Unauthenticated Arbitrary File Access",
|
|
17452
|
+
"lesson_date": "2026-05-26",
|
|
17453
|
+
"attack_vector": {
|
|
17454
|
+
"description": "n8n exposes form-based actions that reach a server file-access path without authentication or path confinement, so an unauthenticated attacker reads arbitrary server files.",
|
|
17455
|
+
"privileges_required": "none (unauthenticated)",
|
|
17456
|
+
"complexity": "low",
|
|
17457
|
+
"ai_factor": "The abused surface is n8n, an AI-workflow / automation platform. The lesson: every form/automation action that can reach the filesystem must be authenticated and its path confined - workflow platforms are high-value because their workflows hold credentials."
|
|
17458
|
+
},
|
|
17459
|
+
"framework_coverage": {
|
|
17460
|
+
"NIST-800-53-SI-10": {
|
|
17461
|
+
"covered": true,
|
|
17462
|
+
"adequate": false,
|
|
17463
|
+
"gap": "No input validation confines the file path reached by the form-based action."
|
|
17464
|
+
},
|
|
17465
|
+
"NIST-800-53-AC-3": {
|
|
17466
|
+
"covered": true,
|
|
17467
|
+
"adequate": false,
|
|
17468
|
+
"gap": "Access enforcement does not require authentication on a path that reaches server files."
|
|
17469
|
+
},
|
|
17470
|
+
"ALL-AI-PIPELINE-INTEGRITY": {
|
|
17471
|
+
"covered": false,
|
|
17472
|
+
"adequate": false,
|
|
17473
|
+
"gap": "No framework treats a workflow platform's form-action file path as an integrity boundary requiring auth + confinement."
|
|
17474
|
+
}
|
|
17475
|
+
},
|
|
17476
|
+
"compliance_exposure_score": {
|
|
17477
|
+
"percent_audit_passing_orgs_still_exposed": 79,
|
|
17478
|
+
"basis": "Workflow-automation platforms expose form/automation actions on trusted-network assumptions; path confinement + auth on file-reaching actions are rarely audited.",
|
|
17479
|
+
"theater_pattern": "ai_workflow_unauth_file_access"
|
|
17480
|
+
},
|
|
17481
|
+
"ai_discovered_zeroday": false,
|
|
17482
|
+
"ai_discovery_source": "human_researcher",
|
|
17483
|
+
"ai_assist_factor": "none",
|
|
17484
|
+
"new_control_requirements": [
|
|
17485
|
+
{
|
|
17486
|
+
"id": "NEW-CTRL-094",
|
|
17487
|
+
"name": "AI-RUNTIME-API-PATH-TRAVERSAL-VALIDATION",
|
|
17488
|
+
"description": "An AI application or workflow platform's file/path-bearing inputs (upload filenames, model-embedded paths, element/document paths, form-action paths, API route parameters) must be authenticated, canonicalized, and confined to an allowlisted base directory before any filesystem access - including non-ASCII / encoding transforms. The distinguishing test: send an unauthenticated request whose path decodes to ../ traversal or an absolute path on a staging instance and confirm it is refused, not read or written outside the intended directory.",
|
|
17489
|
+
"evidence": "https://nvd.nist.gov/vuln/detail/CVE-2026-21858",
|
|
17490
|
+
"gap_closes": [
|
|
17491
|
+
"NIST-800-53-SI-2",
|
|
17492
|
+
"NIST-800-53-SI-10",
|
|
17493
|
+
"ALL-AI-PIPELINE-INTEGRITY"
|
|
17494
|
+
]
|
|
17495
|
+
}
|
|
17496
|
+
],
|
|
17497
|
+
"_auto_imported": false,
|
|
17498
|
+
"_intake_method": "manual-verified-curation"
|
|
17499
|
+
},
|
|
17500
|
+
"CVE-2025-68668": {
|
|
17501
|
+
"name": "n8n Python Code Node Pyodide Sandbox Bypass RCE",
|
|
17502
|
+
"lesson_date": "2026-05-26",
|
|
17503
|
+
"attack_vector": {
|
|
17504
|
+
"description": "n8n's Python Code Node runs user code in a Pyodide sandbox that is bypassable, so an authenticated workflow editor escapes it and executes code with host privileges.",
|
|
17505
|
+
"privileges_required": "low (authenticated user who can edit workflows)",
|
|
17506
|
+
"complexity": "low",
|
|
17507
|
+
"ai_factor": "The abused surface is n8n's code node, in an AI-workflow / automation builder. The lesson: a visual builder's code node is a code-execution sink - it must run in a non-bypassable, host-isolated sandbox, and workflow-edit permission must be tightly scoped."
|
|
17508
|
+
},
|
|
17509
|
+
"framework_coverage": {
|
|
17510
|
+
"NIST-800-53-AC-3": {
|
|
17511
|
+
"covered": true,
|
|
17512
|
+
"adequate": false,
|
|
17513
|
+
"gap": "Access enforcement does not contain the code node to its sandbox."
|
|
17514
|
+
},
|
|
17515
|
+
"NIST-800-53-SI-3": {
|
|
17516
|
+
"covered": true,
|
|
17517
|
+
"adequate": false,
|
|
17518
|
+
"gap": "Malicious-code protection does not stop a sandbox bypass in the code node."
|
|
17519
|
+
},
|
|
17520
|
+
"ALL-AI-PIPELINE-INTEGRITY": {
|
|
17521
|
+
"covered": false,
|
|
17522
|
+
"adequate": false,
|
|
17523
|
+
"gap": "No framework treats a workflow builder's code node as a code-execution sink requiring a non-bypassable sandbox."
|
|
17524
|
+
}
|
|
17525
|
+
},
|
|
17526
|
+
"compliance_exposure_score": {
|
|
17527
|
+
"percent_audit_passing_orgs_still_exposed": 81,
|
|
17528
|
+
"basis": "Visual workflow builders ship code nodes with in-process sandboxes (Pyodide/vm) that are bypassable; sandbox non-bypassability is rarely audited.",
|
|
17529
|
+
"theater_pattern": "ai_app_builder_code_node_sandbox_escape"
|
|
17530
|
+
},
|
|
17531
|
+
"ai_discovered_zeroday": false,
|
|
17532
|
+
"ai_discovery_source": "human_researcher",
|
|
17533
|
+
"ai_assist_factor": "none",
|
|
17534
|
+
"new_control_requirements": [
|
|
17535
|
+
{
|
|
17536
|
+
"id": "NEW-CTRL-103",
|
|
17537
|
+
"name": "AI-APP-BUILDER-EXECUTION-ENDPOINT-AUTH-AND-SANDBOX",
|
|
17538
|
+
"description": "A visual LLM app/agent/workflow builder (Langflow, Flowise, Dify, n8n, and similar) must authenticate every endpoint that can reach a code-execution path and must never run flow/workflow-supplied code through a dynamic-evaluation path with host privileges. Sandbox any code the platform executes on a user's behalf in a non-bypassable, host-isolated environment (no filesystem/network/process access beyond intent), and scope workflow-edit permission tightly. The distinguishing test: run a code node that attempts a host action (shell/network/filesystem) on a staging instance and confirm the sandbox refuses it - an in-process sandbox (Pyodide/vm) that is bypassable still permits RCE.",
|
|
17539
|
+
"evidence": "https://nvd.nist.gov/vuln/detail/CVE-2025-68668",
|
|
17540
|
+
"gap_closes": [
|
|
17541
|
+
"NIST-800-53-AC-3",
|
|
17542
|
+
"NIST-800-53-SI-3",
|
|
17543
|
+
"ALL-AI-PIPELINE-INTEGRITY"
|
|
17544
|
+
]
|
|
17545
|
+
}
|
|
17546
|
+
],
|
|
17547
|
+
"_auto_imported": false,
|
|
17548
|
+
"_intake_method": "manual-verified-curation"
|
|
17349
17549
|
}
|
|
17350
17550
|
}
|