verification-layer 0.26.0 → 0.27.1

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.
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "package": "verification-layer",
3
- "version": "0.26.0",
4
- "total": 129,
3
+ "version": "0.27.1",
4
+ "total": 143,
5
5
  "counts": {
6
6
  "phi-exposure": 29,
7
- "encryption": 6,
7
+ "encryption": 20,
8
8
  "audit-logging": 8,
9
9
  "access-control": 77,
10
10
  "data-retention": 9
@@ -1258,23 +1258,177 @@
1258
1258
  "scanner": "audit"
1259
1259
  },
1260
1260
  {
1261
- "id": "enc-weak",
1261
+ "id": "enc-md5",
1262
1262
  "category": "encryption",
1263
1263
  "severity": "high",
1264
- "title": "Weak cryptography",
1265
- "description": "Weak or deprecated cryptographic primitive (MD5, SHA1, DES, RC4, ECB mode, or a deprecated cipher method) used where PHI must be protected.",
1264
+ "title": "MD5 hash function",
1265
+ "description": "MD5 hash function is not suitable for protecting PHI.",
1266
1266
  "recommendation": "Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.",
1267
1267
  "hipaaReference": "§164.312(a)(2)(iv), §164.312(e)(2)(ii)",
1268
1268
  "source": "pattern",
1269
1269
  "scanner": "encryption"
1270
1270
  },
1271
1271
  {
1272
- "id": "enc-missing",
1272
+ "id": "enc-sha1",
1273
+ "category": "encryption",
1274
+ "severity": "medium",
1275
+ "title": "SHA1 hash function",
1276
+ "description": "SHA1 hash function is not suitable for protecting PHI.",
1277
+ "recommendation": "Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.",
1278
+ "hipaaReference": "§164.312(a)(2)(iv), §164.312(e)(2)(ii)",
1279
+ "source": "pattern",
1280
+ "scanner": "encryption"
1281
+ },
1282
+ {
1283
+ "id": "enc-des",
1284
+ "category": "encryption",
1285
+ "severity": "critical",
1286
+ "title": "DES encryption",
1287
+ "description": "DES encryption is not suitable for protecting PHI.",
1288
+ "recommendation": "Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.",
1289
+ "hipaaReference": "§164.312(a)(2)(iv), §164.312(e)(2)(ii)",
1290
+ "source": "pattern",
1291
+ "scanner": "encryption"
1292
+ },
1293
+ {
1294
+ "id": "enc-rc4",
1295
+ "category": "encryption",
1296
+ "severity": "critical",
1297
+ "title": "RC4 encryption",
1298
+ "description": "RC4 encryption is not suitable for protecting PHI.",
1299
+ "recommendation": "Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.",
1300
+ "hipaaReference": "§164.312(a)(2)(iv), §164.312(e)(2)(ii)",
1301
+ "source": "pattern",
1302
+ "scanner": "encryption"
1303
+ },
1304
+ {
1305
+ "id": "enc-deprecated-cipher",
1306
+ "category": "encryption",
1307
+ "severity": "high",
1308
+ "title": "Deprecated cipher method",
1309
+ "description": "Deprecated cipher method is not suitable for protecting PHI.",
1310
+ "recommendation": "Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.",
1311
+ "hipaaReference": "§164.312(a)(2)(iv), §164.312(e)(2)(ii)",
1312
+ "source": "pattern",
1313
+ "scanner": "encryption"
1314
+ },
1315
+ {
1316
+ "id": "enc-ecb-mode",
1317
+ "category": "encryption",
1318
+ "severity": "high",
1319
+ "title": "ECB mode encryption",
1320
+ "description": "ECB mode encryption is not suitable for protecting PHI.",
1321
+ "recommendation": "Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.",
1322
+ "hipaaReference": "§164.312(a)(2)(iv), §164.312(e)(2)(ii)",
1323
+ "source": "pattern",
1324
+ "scanner": "encryption"
1325
+ },
1326
+ {
1327
+ "id": "enc-http-url",
1273
1328
  "category": "encryption",
1274
1329
  "severity": "high",
1275
- "title": "Missing or disabled encryption",
1276
- "description": "Unencrypted transport (HTTP), disabled TLS/SSL verification, or unencrypted backups that may expose PHI in transit or at rest.",
1277
- "recommendation": "Enforce TLS 1.2+ for all PHI transmission and encrypt backups at rest.",
1330
+ "title": "Unencrypted HTTP URL",
1331
+ "description": "Unencrypted HTTP URL may expose PHI in transit or at rest.",
1332
+ "recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
1333
+ "hipaaReference": "§164.312(e)(1)",
1334
+ "source": "pattern",
1335
+ "scanner": "encryption"
1336
+ },
1337
+ {
1338
+ "id": "enc-ssl-disabled",
1339
+ "category": "encryption",
1340
+ "severity": "critical",
1341
+ "title": "SSL disabled",
1342
+ "description": "SSL disabled may expose PHI in transit or at rest.",
1343
+ "recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
1344
+ "hipaaReference": "§164.312(e)(1)",
1345
+ "source": "pattern",
1346
+ "scanner": "encryption"
1347
+ },
1348
+ {
1349
+ "id": "enc-ssl-verify-disabled",
1350
+ "category": "encryption",
1351
+ "severity": "critical",
1352
+ "title": "SSL verification disabled",
1353
+ "description": "SSL verification disabled may expose PHI in transit or at rest.",
1354
+ "recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
1355
+ "hipaaReference": "§164.312(e)(1)",
1356
+ "source": "pattern",
1357
+ "scanner": "encryption"
1358
+ },
1359
+ {
1360
+ "id": "enc-tls-cert-validation-disabled",
1361
+ "category": "encryption",
1362
+ "severity": "critical",
1363
+ "title": "TLS certificate validation disabled",
1364
+ "description": "TLS certificate validation disabled may expose PHI in transit or at rest.",
1365
+ "recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
1366
+ "hipaaReference": "§164.312(e)(1)",
1367
+ "source": "pattern",
1368
+ "scanner": "encryption"
1369
+ },
1370
+ {
1371
+ "id": "enc-backup-encryption-disabled",
1372
+ "category": "encryption",
1373
+ "severity": "critical",
1374
+ "title": "Backup encryption disabled",
1375
+ "description": "Backup encryption disabled may expose PHI in transit or at rest.",
1376
+ "recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
1377
+ "hipaaReference": "§164.312(e)(1)",
1378
+ "source": "pattern",
1379
+ "scanner": "encryption"
1380
+ },
1381
+ {
1382
+ "id": "enc-db-backup-no-ssl",
1383
+ "category": "encryption",
1384
+ "severity": "high",
1385
+ "title": "Database backup without SSL",
1386
+ "description": "Database backup without SSL may expose PHI in transit or at rest.",
1387
+ "recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
1388
+ "hipaaReference": "§164.312(e)(1)",
1389
+ "source": "pattern",
1390
+ "scanner": "encryption"
1391
+ },
1392
+ {
1393
+ "id": "enc-backup-file-unencrypted",
1394
+ "category": "encryption",
1395
+ "severity": "high",
1396
+ "title": "Unencrypted backup file format",
1397
+ "description": "Unencrypted backup file format may expose PHI in transit or at rest.",
1398
+ "recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
1399
+ "hipaaReference": "§164.312(e)(1)",
1400
+ "source": "pattern",
1401
+ "scanner": "encryption"
1402
+ },
1403
+ {
1404
+ "id": "enc-phi-backup-unencrypted",
1405
+ "category": "encryption",
1406
+ "severity": "critical",
1407
+ "title": "PHI backup without encryption",
1408
+ "description": "PHI backup without encryption may expose PHI in transit or at rest.",
1409
+ "recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
1410
+ "hipaaReference": "§164.312(e)(1)",
1411
+ "source": "pattern",
1412
+ "scanner": "encryption"
1413
+ },
1414
+ {
1415
+ "id": "enc-s3-backup-no-sse",
1416
+ "category": "encryption",
1417
+ "severity": "high",
1418
+ "title": "S3 backup without server-side encryption",
1419
+ "description": "S3 backup without server-side encryption may expose PHI in transit or at rest.",
1420
+ "recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
1421
+ "hipaaReference": "§164.312(e)(1)",
1422
+ "source": "pattern",
1423
+ "scanner": "encryption"
1424
+ },
1425
+ {
1426
+ "id": "enc-backup-storage-unencrypted",
1427
+ "category": "encryption",
1428
+ "severity": "medium",
1429
+ "title": "Backup storage without encryption specified",
1430
+ "description": "Backup storage without encryption specified may expose PHI in transit or at rest.",
1431
+ "recommendation": "Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.",
1278
1432
  "hipaaReference": "§164.312(e)(1)",
1279
1433
  "source": "pattern",
1280
1434
  "scanner": "encryption"
@@ -7,10 +7,12 @@
7
7
  * Three forms of built-in rules are folded in here:
8
8
  * 1. Exported pattern arrays (e.g. PHI_PATTERNS, ALL_*_PATTERNS).
9
9
  * 2. Inline rule arrays that live in a scanner's index.ts (ACCESS_CONTROL_ISSUES,
10
- * RETENTION_ISSUES, SECURITY_PATTERNS).
11
- * 3. Scanners that build findings inline with dynamic per-finding ids
12
- * (audit, encryption). These expose an explicit metadata array of their
13
- * STABLE rule families (AUDIT_RULES, ENCRYPTION_RULES) fixed ids only.
10
+ * RETENTION_ISSUES, SECURITY_PATTERNS, WEAK_CRYPTO_PATTERNS,
11
+ * MISSING_ENCRYPTION_PATTERNS).
12
+ * 3. Scanners that build findings inline with dynamic per-finding ids. The
13
+ * audit scanner exposes an explicit metadata array of its STABLE rule
14
+ * families (AUDIT_RULES) — fixed ids only. (Encryption now carries a stable
15
+ * `id` on every pattern, so each distinct check is listed individually.)
14
16
  *
15
17
  * The category of a rule is ALWAYS the owning scanner's canonical `.category`
16
18
  * (the AI rules are normalized from their short tokens). A module-load
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/rules/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AA0B1D,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;AAEzB,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9E,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAkID,mFAAmF;AACnF,eAAO,MAAM,YAAY,EAAE,WAAW,EAAmB,CAAC;AAE1D,iCAAiC;AACjC,wBAAgB,WAAW,IAAI,WAAW,EAAE,CAE3C;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,EAAE,CAEpE;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAQ5D"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/rules/catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAgB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AA0B1D,OAAO,EAAE,KAAK,QAAQ,EAAE,CAAC;AAEzB,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;AAE9E,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAwKD,mFAAmF;AACnF,eAAO,MAAM,YAAY,EAAE,WAAW,EAAmB,CAAC;AAE1D,iCAAiC;AACjC,wBAAgB,WAAW,IAAI,WAAW,EAAE,CAE3C;AAED,yEAAyE;AACzE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,EAAE,CAEpE;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAQ5D"}
@@ -7,10 +7,12 @@
7
7
  * Three forms of built-in rules are folded in here:
8
8
  * 1. Exported pattern arrays (e.g. PHI_PATTERNS, ALL_*_PATTERNS).
9
9
  * 2. Inline rule arrays that live in a scanner's index.ts (ACCESS_CONTROL_ISSUES,
10
- * RETENTION_ISSUES, SECURITY_PATTERNS).
11
- * 3. Scanners that build findings inline with dynamic per-finding ids
12
- * (audit, encryption). These expose an explicit metadata array of their
13
- * STABLE rule families (AUDIT_RULES, ENCRYPTION_RULES) fixed ids only.
10
+ * RETENTION_ISSUES, SECURITY_PATTERNS, WEAK_CRYPTO_PATTERNS,
11
+ * MISSING_ENCRYPTION_PATTERNS).
12
+ * 3. Scanners that build findings inline with dynamic per-finding ids. The
13
+ * audit scanner exposes an explicit metadata array of its STABLE rule
14
+ * families (AUDIT_RULES) — fixed ids only. (Encryption now carries a stable
15
+ * `id` on every pattern, so each distinct check is listed individually.)
14
16
  *
15
17
  * The category of a rule is ALWAYS the owning scanner's canonical `.category`
16
18
  * (the AI rules are normalized from their short tokens). A module-load
@@ -36,9 +38,9 @@ import { ALL_REVOCATION_PATTERNS } from '../scanners/revocation/patterns.js';
36
38
  import { ACCESS_CONTROL_ISSUES } from '../scanners/access/index.js';
37
39
  import { RETENTION_ISSUES } from '../scanners/retention/index.js';
38
40
  import { SECURITY_PATTERNS } from '../scanners/security/index.js';
41
+ import { WEAK_CRYPTO_PATTERNS, MISSING_ENCRYPTION_PATTERNS } from '../scanners/encryption/index.js';
39
42
  // Form 3 — stable families for scanners that emit dynamic per-finding ids
40
43
  import { AUDIT_RULES } from '../scanners/audit/index.js';
41
- import { ENCRYPTION_RULES } from '../scanners/encryption/index.js';
42
44
  const SEVERITIES = ['critical', 'high', 'medium', 'low', 'info'];
43
45
  function normalizeSeverity(severity) {
44
46
  const value = severity.toLowerCase();
@@ -85,6 +87,41 @@ function fromAiRules() {
85
87
  };
86
88
  });
87
89
  }
90
+ /**
91
+ * The encryption scanner builds findings inline (with `<id>-<line>` finding ids),
92
+ * so its checks are mapped to catalog entries directly from the two pattern
93
+ * arrays. Each pattern carries a stable `id` and an `issue` (its short title);
94
+ * we attach an accurate HIPAA-relevant description, fix recommendation, and the
95
+ * same HIPAA reference the scanner emits. Detection logic is unchanged — these
96
+ * are the same checks, now enumerated individually.
97
+ */
98
+ const WEAK_CRYPTO_HIPAA_REF = '§164.312(a)(2)(iv), §164.312(e)(2)(ii)';
99
+ const MISSING_ENCRYPTION_HIPAA_REF = '§164.312(e)(1)';
100
+ function encryptionRules() {
101
+ const weak = WEAK_CRYPTO_PATTERNS.map((pattern) => ({
102
+ id: pattern.id,
103
+ category: 'encryption',
104
+ severity: normalizeSeverity(pattern.severity),
105
+ title: pattern.issue,
106
+ description: `${pattern.issue} is not suitable for protecting PHI.`,
107
+ recommendation: 'Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.',
108
+ hipaaReference: WEAK_CRYPTO_HIPAA_REF,
109
+ source: 'pattern',
110
+ scanner: 'encryption',
111
+ }));
112
+ const missing = MISSING_ENCRYPTION_PATTERNS.map((pattern) => ({
113
+ id: pattern.id,
114
+ category: 'encryption',
115
+ severity: normalizeSeverity(pattern.severity),
116
+ title: pattern.issue,
117
+ description: `${pattern.issue} may expose PHI in transit or at rest.`,
118
+ recommendation: 'Enforce TLS 1.2+ for PHI in transit and encrypt PHI (including backups) at rest.',
119
+ hipaaReference: MISSING_ENCRYPTION_HIPAA_REF,
120
+ source: 'pattern',
121
+ scanner: 'encryption',
122
+ }));
123
+ return [...weak, ...missing];
124
+ }
88
125
  function buildCatalog() {
89
126
  const rules = [
90
127
  // Form 1 — exported pattern arrays (category = owning scanner's .category)
@@ -104,9 +141,10 @@ function buildCatalog() {
104
141
  ...fromScanner('access', 'access-control', ACCESS_CONTROL_ISSUES),
105
142
  ...fromScanner('retention', 'data-retention', RETENTION_ISSUES),
106
143
  ...fromScanner('security', 'access-control', SECURITY_PATTERNS),
107
- // Form 3 — stable families for dynamic-id scanners
144
+ // Form 3 — dynamic-id scanners
108
145
  ...fromScanner('audit', 'audit-logging', AUDIT_RULES),
109
- ...fromScanner('encryption', 'encryption', ENCRYPTION_RULES),
146
+ // Encryption: one catalog entry per distinct check (stable ids on patterns).
147
+ ...encryptionRules(),
110
148
  // AI rules (normalized categories)
111
149
  ...fromAiRules(),
112
150
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/rules/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/rules/catalog.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,31 @@ describe('built-in rule catalog', () => {
42
42
  expect(retentionIds).toContain(id);
43
43
  }
44
44
  });
45
+ it('lists every distinct encryption check with stable ids (no collapsed families)', () => {
46
+ const encryption = getRulesByCategory('encryption');
47
+ const ids = encryption.map((r) => r.id);
48
+ // 16 encryption-scanner patterns + 3 credentials + 1 AI (HIPAA-SEC-001)
49
+ expect(encryption.length).toBe(20);
50
+ // The collapsed families must be gone.
51
+ expect(ids).not.toContain('enc-weak');
52
+ expect(ids).not.toContain('enc-missing');
53
+ // Every distinct check is now individually enumerated.
54
+ const expectedEncryptionScannerIds = [
55
+ 'enc-md5', 'enc-sha1', 'enc-des', 'enc-rc4', 'enc-deprecated-cipher', 'enc-ecb-mode',
56
+ 'enc-http-url', 'enc-ssl-disabled', 'enc-ssl-verify-disabled',
57
+ 'enc-tls-cert-validation-disabled', 'enc-backup-encryption-disabled',
58
+ 'enc-db-backup-no-ssl', 'enc-backup-file-unencrypted', 'enc-phi-backup-unencrypted',
59
+ 'enc-s3-backup-no-sse', 'enc-backup-storage-unencrypted',
60
+ ];
61
+ for (const id of expectedEncryptionScannerIds) {
62
+ expect(ids).toContain(id);
63
+ }
64
+ // Severities are preserved from the patterns (not flattened to one value).
65
+ const desRule = encryption.find((r) => r.id === 'enc-des');
66
+ expect(desRule?.severity).toBe('critical');
67
+ const sha1Rule = encryption.find((r) => r.id === 'enc-sha1');
68
+ expect(sha1Rule?.severity).toBe('medium');
69
+ });
45
70
  it('normalizes severity to lowercase and marks AI rules as info', () => {
46
71
  const severities = new Set(['critical', 'high', 'medium', 'low', 'info']);
47
72
  for (const rule of RULE_CATALOG) {
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.test.js","sourceRoot":"","sources":["../../src/rules/catalog.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.test.js","sourceRoot":"","sources":["../../src/rules/catalog.test.ts"],"names":[],"mappings":"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"}
package/dist/scan.js CHANGED
@@ -194,7 +194,7 @@ export async function scan(options) {
194
194
  return finding;
195
195
  });
196
196
  // Apply AI triage if enabled and available
197
- if (config.ai?.enableTriage !== false && isAIAvailable()) {
197
+ if (options.enableAI !== false && config.ai?.enableTriage !== false && isAIAvailable()) {
198
198
  try {
199
199
  // Load file contents for triage (skip special/virtual files)
200
200
  const fileContents = new Map();
package/dist/scan.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../src/scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAElC,MAAM,cAAc,GAAyB;IAC3C,cAAc;IACd,YAAY;IACZ,eAAe;IACf,gBAAgB;IAChB,gBAAgB;CACjB,CAAC;AAEF,MAAM,QAAQ,GAAwC;IACpD,cAAc,EAAE,UAAU;IAC1B,YAAY,EAAE,iBAAiB;IAC/B,eAAe,EAAE,YAAY;IAC7B,gBAAgB,EAAE,aAAa;IAC/B,gBAAgB,EAAE,gBAAgB;CACnC,CAAC;AAEF,wDAAwD;AACxD,MAAM,kBAAkB,GAAmD;IACzE,gBAAgB,EAAE,CAAC,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,EAAE,kIAAkI;IACxS,YAAY,EAAE,CAAC,kBAAkB,CAAC,EAAE,2CAA2C;IAC/E,eAAe,EAAE,CAAC,aAAa,EAAE,oBAAoB,CAAC,EAAE,2DAA2D;IACnH,cAAc,EAAE,CAAC,aAAa,CAAC,EAAE,6CAA6C;IAC9E,gBAAgB,EAAE,CAAC,kBAAkB,CAAC,EAAE,+CAA+C;CACxF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAoB;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,qBAAqB;IACrB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IAClE,MAAM,iBAAiB,GAAG,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,CAAC;IAEjD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAI,cAAc,CAAC;IAE7E,wBAAwB;IACxB,MAAM,cAAc,GAAG;QACrB,oBAAoB;QACpB,YAAY;QACZ,aAAa;QACb,YAAY;QACZ,gBAAgB;KACjB,CAAC;IAEF,yEAAyE;IACzE,gEAAgE;IAChE,2EAA2E;IAC3E,MAAM,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,IAAI,MAAM,CAAC,mBAAmB,IAAI,KAAK,CAAC;IAC/F,MAAM,mBAAmB,GAAG,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,8BAA8B,CAAC,CAAC;IAE3F,MAAM,eAAe,GAAG;QACtB,GAAG,cAAc;QACjB,GAAG,mBAAmB;QACtB,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QAC1B,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;KAC1B,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE;QAC/B,GAAG,EAAE,OAAO,CAAC,IAAI;QACjB,KAAK,EAAE,IAAI;QACX,MAAM,EAAE,eAAe;QACvB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,uCAAuC;IACvC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAEnE,8DAA8D;IAC9D,MAAM,UAAU,GAAG,EAAE,CAAC;IACtB,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,MAAM;IAEvC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QAC5B,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACpF,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAC3D,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,qBAAqB,YAAY,0BAA0B,CAAC,CAAC;IAC7E,CAAC;IAED,2CAA2C;IAC3C,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,eAAe,CACtE,OAAO,CAAC,IAAI,EACZ,MAAM,CAAC,eAAe,CACvB,CAAC;IAEF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,qBAAqB,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;YACjE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAErE,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,EAAE,QAAQ,EAAE,EAAE,CAAC;QAC3D,MAAM,UAAU,GAAG,QAAQ,GAAG,UAAU,CAAC;QACzC,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC,CAAC;QAE1E,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,6BAA6B,QAAQ,GAAG,CAAC,IAAI,YAAY,KAAK,UAAU,CAAC,MAAM,YAAY,CAAC,CAAC;QAC7G,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;gBAC3E,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,CAAC;YACrC,CAAC;YAED,MAAM,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAChD,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,MAAM,YAAY,IAAI,UAAU,EAAE,CAAC;oBACtC,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAC;oBAC7E,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;gBAClC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,cAAc,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,iBAAiB,EAAE,WAAW,CAAC,CAAC;YAC7F,QAAQ,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;QACnC,CAAC;QAED,0BAA0B;QAC1B,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC;YAClB,UAAU,CAAC,EAAE,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED,4EAA4E;IAC5E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC;IACrF,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,MAAM,oBAAoB,GAAc,EAAE,CAAC;IAE3C,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAAE,SAAS;YACzC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;QACD,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IAED,6CAA6C;IAC7C,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,CAAC;IAEvC,4BAA4B;IAC5B,MAAM,aAAa,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC3E,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE/E,uBAAuB;IACvB,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;IAC7D,MAAM,oBAAoB,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;IAE5D,MAAM,KAAK,GAAc;QACvB,SAAS,EAAE,aAAa,CAAC,SAAS;QAClC,QAAQ,EAAE,aAAa,CAAC,QAAQ;QAChC,IAAI,EAAE,aAAa,CAAC,IAAI;QACxB,gBAAgB,EAAE,iBAAiB,CAAC,SAAS;QAC7C,eAAe,EAAE,iBAAiB,CAAC,QAAQ;QAC3C,WAAW,EAAE,iBAAiB,CAAC,IAAI;QACnC,eAAe,EAAE,oBAAoB;KACtC,CAAC;IAEF,2CAA2C;IAC3C,IAAI,iBAAiB,GAAG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE/D,4BAA4B;IAC5B,iBAAiB,GAAG,MAAM,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;IAErE,yDAAyD;IACzD,MAAM,gBAAgB,GAAG,MAAM,2BAA2B,CACxD,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAC5E,CAAC;IAEF,iBAAiB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAC3D,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAExC,wDAAwD;QACxD,MAAM,YAAY,GAAG,OAAO,CAAC,yBAAyB,KAAK,KAAK,CAAC,CAAC,kBAAkB;QAEpF,6EAA6E;QAC7E,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,YAAY,EAAE,CAAC;YACxC,OAAO;gBACL,GAAG,OAAO;gBACV,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,CAAC;QACJ,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,2CAA2C;IAC3C,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,IAAI,MAAM,CAAC,EAAE,EAAE,YAAY,KAAK,KAAK,IAAI,aAAa,EAAE,EAAE,CAAC;QACvF,IAAI,CAAC;YACH,6DAA6D;YAC7D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;YAC/C,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;iBACjE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAEvC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjC,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa;wBAAE,SAAS,CAAC,mBAAmB;oBAC5D,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBACjD,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAClC,CAAC;gBAAC,MAAM,CAAC;oBACP,gCAAgC;gBAClC,CAAC;YACH,CAAC;YAED,MAAM,eAAe,GAAG,MAAM,sBAAsB,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;YAEtF,yDAAyD;YACzD,IAAI,MAAM,CAAC,EAAE,EAAE,oBAAoB,KAAK,KAAK,EAAE,CAAC;gBAC9C,iBAAiB,GAAG,eAAe,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,KAAK,gBAAgB,CAC7C,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,+BAA+B;gBAC/B,iBAAiB,GAAG,eAAe,CAAC;YACtC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oDAAoD;YACpD,OAAO,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,QAAQ,EAAE,CAAC;YACb,iBAAiB,GAAG,aAAa,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAC1B,MAAM,eAAe,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACxD,iBAAiB,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC5C,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC;YACvD,iFAAiF;YACjF,IAAI,MAAM,GAAG,QAAQ,EAAE,CAAC;gBACtB,OAAO,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YACpC,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IACzE,6EAA6E;IAC7E,wEAAwE;IACxE,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAAC;IACjD,iBAAiB,GAAG,cAAc,CAAC,iBAAiB,CAAC,CAAC;IAEtD,uCAAuC;IACvC,MAAM,eAAe,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAEzD,6BAA6B;IAC7B,MAAM,MAAM,GAAG;QACb,QAAQ,EAAE,iBAAiB;QAC3B,eAAe;QACf,gBAAgB,EAAE,eAAe;QACjC,YAAY,EAAE,WAAW,CAAC,MAAM;QAChC,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;QACpC,KAAK;KACN,CAAC;IAEF,MAAM,eAAe,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAEzD,OAAO;QACL,GAAG,MAAM;QACT,eAAe;KAChB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAgB;IACxC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAChE,OAAO,OAAO,CAAC,OAAO;SACnB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;SAC7D,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,QAAmB;IAChD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAc,EAAE,CAAC;IAE7B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,IAAI,EAAE,KAAK,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,QAAmB;IAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IACjD,MAAM,aAAa,GAA2B,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAEnG,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,wDAAwD;QACxD,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1E,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;QAEhD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,gGAAgG;YAChG,uFAAuF;YACvF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;gBACd,EAAE,EAAE,OAAO;gBACX,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,cAAc,EAAE,CAAC,CAAC,cAAc;gBAChC,cAAc,EAAE,CAAC,CAAC,cAAc;gBAChC,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,eAAe,EAAE,CAAC;gBAClB,SAAS,EAAE,CAAC;gBACZ,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,EAAE;aAChB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAC/B,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,KAAK,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACnE,kEAAkE;QAClE,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACpC,IAAI,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YACtC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM;QACxC,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC9B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAC9E,CAAC;AACJ,CAAC"}
@@ -1,37 +1,27 @@
1
1
  import type { Scanner, FixType } from '../../types.js';
2
2
  export declare const WEAK_CRYPTO_PATTERNS: ({
3
+ id: string;
3
4
  regex: RegExp;
4
5
  issue: string;
5
6
  severity: "high";
6
7
  } | {
8
+ id: string;
7
9
  regex: RegExp;
8
10
  issue: string;
9
11
  severity: "medium";
10
12
  } | {
13
+ id: string;
11
14
  regex: RegExp;
12
15
  issue: string;
13
16
  severity: "critical";
14
17
  })[];
15
18
  export declare const MISSING_ENCRYPTION_PATTERNS: Array<{
19
+ id: string;
16
20
  regex: RegExp;
17
21
  issue: string;
18
22
  severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
19
23
  checkSafe?: boolean;
20
24
  fixType?: FixType;
21
25
  }>;
22
- /**
23
- * Stable rule families emitted by this scanner for the built-in rule catalog.
24
- * Findings carry dynamic ids (`enc-weak-<line>`, `enc-missing-<line>`) derived
25
- * from WEAK_CRYPTO_PATTERNS and MISSING_ENCRYPTION_PATTERNS; these are the FIXED
26
- * families only — never the per-finding suffix.
27
- */
28
- export declare const ENCRYPTION_RULES: {
29
- id: string;
30
- severity: "high";
31
- title: string;
32
- description: string;
33
- recommendation: string;
34
- hipaaReference: string;
35
- }[];
36
26
  export declare const encryptionScanner: Scanner;
37
27
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scanners/encryption/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAwB,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI7E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;IAOhC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAYA,CAAC;AAeF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;;;;GAiB5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,OA2E/B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scanners/encryption/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAwB,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI7E,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;IAOhC,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAC1D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAYA,CAAC;AAeF,eAAO,MAAM,iBAAiB,EAAE,OA2E/B,CAAC"}
@@ -2,25 +2,25 @@ import { readFile } from 'fs/promises';
2
2
  import { isSafeHttpUrl, DEFAULT_CONFIG } from '../../config.js';
3
3
  import { getContextLines } from '../../utils/context.js';
4
4
  export const WEAK_CRYPTO_PATTERNS = [
5
- { regex: /\bmd5\s*\(/i, issue: 'MD5 hash function', severity: 'high' },
6
- { regex: /\bsha1\s*\(/i, issue: 'SHA1 hash function', severity: 'medium' },
7
- { regex: /\bdes\b/i, issue: 'DES encryption', severity: 'critical' },
8
- { regex: /\b(rc4|arcfour)\b/i, issue: 'RC4 encryption', severity: 'critical' },
9
- { regex: /createCipher\s*\(/i, issue: 'Deprecated cipher method', severity: 'high' },
10
- { regex: /\bECB\b/, issue: 'ECB mode encryption', severity: 'high' },
5
+ { id: 'enc-md5', regex: /\bmd5\s*\(/i, issue: 'MD5 hash function', severity: 'high' },
6
+ { id: 'enc-sha1', regex: /\bsha1\s*\(/i, issue: 'SHA1 hash function', severity: 'medium' },
7
+ { id: 'enc-des', regex: /\bdes\b/i, issue: 'DES encryption', severity: 'critical' },
8
+ { id: 'enc-rc4', regex: /\b(rc4|arcfour)\b/i, issue: 'RC4 encryption', severity: 'critical' },
9
+ { id: 'enc-deprecated-cipher', regex: /createCipher\s*\(/i, issue: 'Deprecated cipher method', severity: 'high' },
10
+ { id: 'enc-ecb-mode', regex: /\bECB\b/, issue: 'ECB mode encryption', severity: 'high' },
11
11
  ];
12
12
  export const MISSING_ENCRYPTION_PATTERNS = [
13
- { regex: /http:\/\/(?!localhost|127\.0\.0\.1)/i, issue: 'Unencrypted HTTP URL', severity: 'high', checkSafe: true, fixType: 'http-url' },
14
- { regex: /ssl\s*[:=]\s*false/i, issue: 'SSL disabled', severity: 'critical' },
15
- { regex: /verify\s*[:=]\s*false.*ssl/i, issue: 'SSL verification disabled', severity: 'critical' },
16
- { regex: /rejectUnauthorized\s*:\s*false/i, issue: 'TLS certificate validation disabled', severity: 'critical' },
13
+ { id: 'enc-http-url', regex: /http:\/\/(?!localhost|127\.0\.0\.1)/i, issue: 'Unencrypted HTTP URL', severity: 'high', checkSafe: true, fixType: 'http-url' },
14
+ { id: 'enc-ssl-disabled', regex: /ssl\s*[:=]\s*false/i, issue: 'SSL disabled', severity: 'critical' },
15
+ { id: 'enc-ssl-verify-disabled', regex: /verify\s*[:=]\s*false.*ssl/i, issue: 'SSL verification disabled', severity: 'critical' },
16
+ { id: 'enc-tls-cert-validation-disabled', regex: /rejectUnauthorized\s*:\s*false/i, issue: 'TLS certificate validation disabled', severity: 'critical' },
17
17
  // Unencrypted backup patterns
18
- { regex: /backup.*encrypt\s*[:=]\s*false|encrypt\s*[:=]\s*false.*backup/i, issue: 'Backup encryption disabled', severity: 'critical', fixType: 'backup-unencrypted' },
19
- { regex: /mysqldump(?!.*--ssl).*password|pg_dump(?!.*--ssl)/i, issue: 'Database backup without SSL', severity: 'high' },
20
- { regex: /backup.*(\.sql|\.csv|\.json|\.txt)\b(?!.*encrypt|.*gpg|.*aes)/i, issue: 'Unencrypted backup file format', severity: 'high', fixType: 'backup-unencrypted' },
21
- { regex: /writeFile.*backup.*patient|patient.*backup.*writeFile/i, issue: 'PHI backup without encryption', severity: 'critical', fixType: 'backup-unencrypted' },
22
- { regex: /s3.*upload.*backup(?!.*encrypt|.*sse|.*kms)/i, issue: 'S3 backup without server-side encryption', severity: 'high' },
23
- { regex: /backup.*storage(?!.*encrypt)|storage.*backup(?!.*encrypt)/i, issue: 'Backup storage without encryption specified', severity: 'medium' },
18
+ { id: 'enc-backup-encryption-disabled', regex: /backup.*encrypt\s*[:=]\s*false|encrypt\s*[:=]\s*false.*backup/i, issue: 'Backup encryption disabled', severity: 'critical', fixType: 'backup-unencrypted' },
19
+ { id: 'enc-db-backup-no-ssl', regex: /mysqldump(?!.*--ssl).*password|pg_dump(?!.*--ssl)/i, issue: 'Database backup without SSL', severity: 'high' },
20
+ { id: 'enc-backup-file-unencrypted', regex: /backup.*(\.sql|\.csv|\.json|\.txt)\b(?!.*encrypt|.*gpg|.*aes)/i, issue: 'Unencrypted backup file format', severity: 'high', fixType: 'backup-unencrypted' },
21
+ { id: 'enc-phi-backup-unencrypted', regex: /writeFile.*backup.*patient|patient.*backup.*writeFile/i, issue: 'PHI backup without encryption', severity: 'critical', fixType: 'backup-unencrypted' },
22
+ { id: 'enc-s3-backup-no-sse', regex: /s3.*upload.*backup(?!.*encrypt|.*sse|.*kms)/i, issue: 'S3 backup without server-side encryption', severity: 'high' },
23
+ { id: 'enc-backup-storage-unencrypted', regex: /backup.*storage(?!.*encrypt)|storage.*backup(?!.*encrypt)/i, issue: 'Backup storage without encryption specified', severity: 'medium' },
24
24
  ];
25
25
  /** Detect test, fixture, example, doc, migration, and seed files */
26
26
  function isReducedConfidenceFile(filePath) {
@@ -35,30 +35,6 @@ function isCommentOrNonFunctional(line) {
35
35
  return true;
36
36
  return false;
37
37
  }
38
- /**
39
- * Stable rule families emitted by this scanner for the built-in rule catalog.
40
- * Findings carry dynamic ids (`enc-weak-<line>`, `enc-missing-<line>`) derived
41
- * from WEAK_CRYPTO_PATTERNS and MISSING_ENCRYPTION_PATTERNS; these are the FIXED
42
- * families only — never the per-finding suffix.
43
- */
44
- export const ENCRYPTION_RULES = [
45
- {
46
- id: 'enc-weak',
47
- severity: 'high',
48
- title: 'Weak cryptography',
49
- description: 'Weak or deprecated cryptographic primitive (MD5, SHA1, DES, RC4, ECB mode, or a deprecated cipher method) used where PHI must be protected.',
50
- recommendation: 'Use AES-256-GCM for encryption and SHA-256 or stronger for hashing.',
51
- hipaaReference: '§164.312(a)(2)(iv), §164.312(e)(2)(ii)',
52
- },
53
- {
54
- id: 'enc-missing',
55
- severity: 'high',
56
- title: 'Missing or disabled encryption',
57
- description: 'Unencrypted transport (HTTP), disabled TLS/SSL verification, or unencrypted backups that may expose PHI in transit or at rest.',
58
- recommendation: 'Enforce TLS 1.2+ for all PHI transmission and encrypt backups at rest.',
59
- hipaaReference: '§164.312(e)(1)',
60
- },
61
- ];
62
38
  export const encryptionScanner = {
63
39
  name: 'Encryption Scanner',
64
40
  category: 'encryption',
@@ -77,7 +53,7 @@ export const encryptionScanner = {
77
53
  for (const pattern of WEAK_CRYPTO_PATTERNS) {
78
54
  if (pattern.regex.test(line)) {
79
55
  findings.push({
80
- id: `enc-weak-${lineNum}`,
56
+ id: `${pattern.id}-${lineNum}`,
81
57
  category: 'encryption',
82
58
  severity: pattern.severity,
83
59
  title: `Weak cryptography: ${pattern.issue}`,
@@ -105,7 +81,7 @@ export const encryptionScanner = {
105
81
  continue;
106
82
  }
107
83
  findings.push({
108
- id: `enc-missing-${lineNum}`,
84
+ id: `${pattern.id}-${lineNum}`,
109
85
  category: 'encryption',
110
86
  severity: pattern.severity,
111
87
  title: `Encryption issue: ${pattern.issue}`,