bla-agents 1.1.0 → 1.6.0
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/.agents/skills/blind-llm-agents/SKILL.md +20 -14
- package/DISCLAIMER.md +15 -7
- package/README.md +153 -198
- package/dist/bundler/index.d.ts +19 -2
- package/dist/bundler/index.d.ts.map +1 -1
- package/dist/bundler/index.js +47 -4
- package/dist/bundler/index.js.map +1 -1
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +123 -18
- package/dist/cli.js.map +1 -1
- package/dist/core/config.d.ts +54 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +160 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/coverage-contract.d.ts +97 -0
- package/dist/core/coverage-contract.d.ts.map +1 -0
- package/dist/core/coverage-contract.js +164 -0
- package/dist/core/coverage-contract.js.map +1 -0
- package/dist/core/debug-posture.d.ts +40 -0
- package/dist/core/debug-posture.d.ts.map +1 -0
- package/dist/core/debug-posture.js +197 -0
- package/dist/core/debug-posture.js.map +1 -0
- package/dist/core/detector.d.ts.map +1 -1
- package/dist/core/detector.js +58 -6
- package/dist/core/detector.js.map +1 -1
- package/dist/core/identifiers.d.ts +32 -0
- package/dist/core/identifiers.d.ts.map +1 -0
- package/dist/core/identifiers.js +263 -0
- package/dist/core/identifiers.js.map +1 -0
- package/dist/core/llm-directives.d.ts +12 -0
- package/dist/core/llm-directives.d.ts.map +1 -0
- package/dist/core/llm-directives.js +23 -0
- package/dist/core/llm-directives.js.map +1 -0
- package/dist/core/prng.d.ts +10 -1
- package/dist/core/prng.d.ts.map +1 -1
- package/dist/core/prng.js +27 -2
- package/dist/core/prng.js.map +1 -1
- package/dist/core/release-exposure.d.ts.map +1 -1
- package/dist/core/release-exposure.js +13 -2
- package/dist/core/release-exposure.js.map +1 -1
- package/dist/core/release-plan.d.ts +68 -0
- package/dist/core/release-plan.d.ts.map +1 -0
- package/dist/core/release-plan.js +244 -0
- package/dist/core/release-plan.js.map +1 -0
- package/dist/core/sarif.d.ts +53 -0
- package/dist/core/sarif.d.ts.map +1 -0
- package/dist/core/sarif.js +95 -0
- package/dist/core/sarif.js.map +1 -0
- package/dist/core/sqlite-runtime.d.ts +13 -0
- package/dist/core/sqlite-runtime.d.ts.map +1 -1
- package/dist/core/sqlite-runtime.js +38 -8
- package/dist/core/sqlite-runtime.js.map +1 -1
- package/dist/core/types.d.ts +7 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/engine/auditor.d.ts.map +1 -1
- package/dist/engine/auditor.js +380 -19
- package/dist/engine/auditor.js.map +1 -1
- package/dist/engine/benchmark.d.ts +1 -1
- package/dist/engine/benchmark.d.ts.map +1 -1
- package/dist/engine/benchmark.js +121 -41
- package/dist/engine/benchmark.js.map +1 -1
- package/dist/engine/defender.d.ts +1 -0
- package/dist/engine/defender.d.ts.map +1 -1
- package/dist/engine/defender.js +7 -1
- package/dist/engine/defender.js.map +1 -1
- package/dist/engine/harden.d.ts +61 -0
- package/dist/engine/harden.d.ts.map +1 -0
- package/dist/engine/harden.js +294 -0
- package/dist/engine/harden.js.map +1 -0
- package/dist/engine/protector.d.ts.map +1 -1
- package/dist/engine/protector.js +242 -26
- package/dist/engine/protector.js.map +1 -1
- package/dist/identity.d.ts +112 -2
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +112 -2
- package/dist/identity.js.map +1 -1
- package/dist/index.d.ts +26 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -9
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +59 -152
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +466 -50
- package/dist/mcp/server.js.map +1 -1
- package/dist/setup/clients.d.ts +49 -1
- package/dist/setup/clients.d.ts.map +1 -1
- package/dist/setup/clients.js +1193 -20
- package/dist/setup/clients.js.map +1 -1
- package/dist/setup/doctor.d.ts +58 -14
- package/dist/setup/doctor.d.ts.map +1 -1
- package/dist/setup/doctor.js +316 -22
- package/dist/setup/doctor.js.map +1 -1
- package/dist/setup/setup.d.ts +77 -7
- package/dist/setup/setup.d.ts.map +1 -1
- package/dist/setup/setup.js +591 -62
- package/dist/setup/setup.js.map +1 -1
- package/dist/shields/chaff/chaff-generator.d.ts.map +1 -1
- package/dist/shields/chaff/chaff-generator.js +12 -3
- package/dist/shields/chaff/chaff-generator.js.map +1 -1
- package/dist/shields/deception/architecture-mirage.js +1 -1
- package/dist/shields/deception/architecture-mirage.js.map +1 -1
- package/dist/shields/deception/canary-honeypot.d.ts +33 -0
- package/dist/shields/deception/canary-honeypot.d.ts.map +1 -0
- package/dist/shields/deception/canary-honeypot.js +95 -0
- package/dist/shields/deception/canary-honeypot.js.map +1 -0
- package/dist/shields/deception/cognitive-armor-trigger.d.ts +43 -0
- package/dist/shields/deception/cognitive-armor-trigger.d.ts.map +1 -0
- package/dist/shields/deception/cognitive-armor-trigger.js +204 -0
- package/dist/shields/deception/cognitive-armor-trigger.js.map +1 -0
- package/dist/shields/deception/crash-trace-decoy.js +1 -1
- package/dist/shields/deception/crash-trace-decoy.js.map +1 -1
- package/dist/shields/deception/decompiler-illusion.js +1 -1
- package/dist/shields/deception/decompiler-illusion.js.map +1 -1
- package/dist/shields/deception/diff-noise-injector.js +1 -1
- package/dist/shields/deception/diff-noise-injector.js.map +1 -1
- package/dist/shields/deception/evidence-contract-poison.js +5 -5
- package/dist/shields/deception/evidence-contract-poison.js.map +1 -1
- package/dist/shields/deception/format-payloads.d.ts +21 -0
- package/dist/shields/deception/format-payloads.d.ts.map +1 -0
- package/dist/shields/deception/format-payloads.js +24 -0
- package/dist/shields/deception/format-payloads.js.map +1 -0
- package/dist/shields/deception/index.d.ts +10 -2
- package/dist/shields/deception/index.d.ts.map +1 -1
- package/dist/shields/deception/index.js +20 -3
- package/dist/shields/deception/index.js.map +1 -1
- package/dist/shields/deception/prompt-completion-poison.d.ts +3 -2
- package/dist/shields/deception/prompt-completion-poison.d.ts.map +1 -1
- package/dist/shields/deception/prompt-completion-poison.js +6 -3
- package/dist/shields/deception/prompt-completion-poison.js.map +1 -1
- package/dist/shields/deception/shadow-business-logic.js +4 -4
- package/dist/shields/deception/shadow-business-logic.js.map +1 -1
- package/dist/shields/deception/system-diagnostic-decoy.d.ts +36 -0
- package/dist/shields/deception/system-diagnostic-decoy.d.ts.map +1 -0
- package/dist/shields/deception/system-diagnostic-decoy.js +101 -0
- package/dist/shields/deception/system-diagnostic-decoy.js.map +1 -0
- package/dist/shields/exhaustion/asar-header-amplifier.d.ts +12 -3
- package/dist/shields/exhaustion/asar-header-amplifier.d.ts.map +1 -1
- package/dist/shields/exhaustion/asar-header-amplifier.js +30 -8
- package/dist/shields/exhaustion/asar-header-amplifier.js.map +1 -1
- package/dist/shields/exhaustion/bpe-token-amplifier.js +2 -2
- package/dist/shields/exhaustion/bpe-token-amplifier.js.map +1 -1
- package/dist/shields/exhaustion/callgraph-labyrinth.js +2 -2
- package/dist/shields/exhaustion/callgraph-labyrinth.js.map +1 -1
- package/dist/shields/exhaustion/cdp-shape-budget-breaker.js +1 -1
- package/dist/shields/exhaustion/cdp-shape-budget-breaker.js.map +1 -1
- package/dist/shields/exhaustion/frida-capture-saturation.d.ts +10 -5
- package/dist/shields/exhaustion/frida-capture-saturation.d.ts.map +1 -1
- package/dist/shields/exhaustion/frida-capture-saturation.js +21 -8
- package/dist/shields/exhaustion/frida-capture-saturation.js.map +1 -1
- package/dist/shields/exhaustion/index.d.ts +2 -2
- package/dist/shields/exhaustion/index.d.ts.map +1 -1
- package/dist/shields/exhaustion/index.js +2 -2
- package/dist/shields/exhaustion/index.js.map +1 -1
- package/dist/shields/exhaustion/obligation-flooder.d.ts +23 -6
- package/dist/shields/exhaustion/obligation-flooder.d.ts.map +1 -1
- package/dist/shields/exhaustion/obligation-flooder.js +29 -12
- package/dist/shields/exhaustion/obligation-flooder.js.map +1 -1
- package/dist/shields/exhaustion/rea-budget-matrix.d.ts +8 -2
- package/dist/shields/exhaustion/rea-budget-matrix.d.ts.map +1 -1
- package/dist/shields/exhaustion/rea-budget-matrix.js +139 -16
- package/dist/shields/exhaustion/rea-budget-matrix.js.map +1 -1
- package/dist/shields/exhaustion/regex-worker-tarpit.d.ts.map +1 -1
- package/dist/shields/exhaustion/regex-worker-tarpit.js +2 -1
- package/dist/shields/exhaustion/regex-worker-tarpit.js.map +1 -1
- package/dist/shields/exhaustion/wasm-interface-exhaustion.d.ts +7 -4
- package/dist/shields/exhaustion/wasm-interface-exhaustion.d.ts.map +1 -1
- package/dist/shields/exhaustion/wasm-interface-exhaustion.js +16 -7
- package/dist/shields/exhaustion/wasm-interface-exhaustion.js.map +1 -1
- package/dist/shields/formats/android-dex-xref.d.ts +19 -0
- package/dist/shields/formats/android-dex-xref.d.ts.map +1 -0
- package/dist/shields/formats/android-dex-xref.js +427 -0
- package/dist/shields/formats/android-dex-xref.js.map +1 -0
- package/dist/shields/formats/android-manifest.d.ts +44 -0
- package/dist/shields/formats/android-manifest.d.ts.map +1 -0
- package/dist/shields/formats/android-manifest.js +240 -0
- package/dist/shields/formats/android-manifest.js.map +1 -0
- package/dist/shields/formats/android-r8.d.ts +44 -0
- package/dist/shields/formats/android-r8.d.ts.map +1 -0
- package/dist/shields/formats/android-r8.js +246 -0
- package/dist/shields/formats/android-r8.js.map +1 -0
- package/dist/shields/formats/apple-plist.d.ts +15 -0
- package/dist/shields/formats/apple-plist.d.ts.map +1 -1
- package/dist/shields/formats/apple-plist.js +59 -1
- package/dist/shields/formats/apple-plist.js.map +1 -1
- package/dist/shields/formats/archive.d.ts +27 -6
- package/dist/shields/formats/archive.d.ts.map +1 -1
- package/dist/shields/formats/archive.js +247 -45
- package/dist/shields/formats/archive.js.map +1 -1
- package/dist/shields/formats/asar.d.ts +50 -10
- package/dist/shields/formats/asar.d.ts.map +1 -1
- package/dist/shields/formats/asar.js +265 -39
- package/dist/shields/formats/asar.js.map +1 -1
- package/dist/shields/formats/bun-standalone.d.ts +78 -0
- package/dist/shields/formats/bun-standalone.d.ts.map +1 -0
- package/dist/shields/formats/bun-standalone.js +272 -0
- package/dist/shields/formats/bun-standalone.js.map +1 -0
- package/dist/shields/formats/dotnet-managed.d.ts +9 -0
- package/dist/shields/formats/dotnet-managed.d.ts.map +1 -1
- package/dist/shields/formats/dotnet-managed.js +26 -1
- package/dist/shields/formats/dotnet-managed.js.map +1 -1
- package/dist/shields/formats/electron-fuses.d.ts +63 -8
- package/dist/shields/formats/electron-fuses.d.ts.map +1 -1
- package/dist/shields/formats/electron-fuses.js +297 -65
- package/dist/shields/formats/electron-fuses.js.map +1 -1
- package/dist/shields/formats/erlang-beam.d.ts +34 -0
- package/dist/shields/formats/erlang-beam.d.ts.map +1 -0
- package/dist/shields/formats/erlang-beam.js +319 -0
- package/dist/shields/formats/erlang-beam.js.map +1 -0
- package/dist/shields/formats/evm-bytecode.d.ts +28 -0
- package/dist/shields/formats/evm-bytecode.d.ts.map +1 -0
- package/dist/shields/formats/evm-bytecode.js +124 -0
- package/dist/shields/formats/evm-bytecode.js.map +1 -0
- package/dist/shields/formats/go-flutter-exhaustion.d.ts +55 -0
- package/dist/shields/formats/go-flutter-exhaustion.d.ts.map +1 -0
- package/dist/shields/formats/go-flutter-exhaustion.js +346 -0
- package/dist/shields/formats/go-flutter-exhaustion.js.map +1 -0
- package/dist/shields/formats/gpu-ptx.d.ts +40 -0
- package/dist/shields/formats/gpu-ptx.d.ts.map +1 -0
- package/dist/shields/formats/gpu-ptx.js +62 -0
- package/dist/shields/formats/gpu-ptx.js.map +1 -0
- package/dist/shields/formats/headers.d.ts.map +1 -1
- package/dist/shields/formats/headers.js +54 -14
- package/dist/shields/formats/headers.js.map +1 -1
- package/dist/shields/formats/jvm-bytecode.d.ts +20 -0
- package/dist/shields/formats/jvm-bytecode.d.ts.map +1 -0
- package/dist/shields/formats/jvm-bytecode.js +134 -0
- package/dist/shields/formats/jvm-bytecode.js.map +1 -0
- package/dist/shields/formats/mobile-game.d.ts +4 -0
- package/dist/shields/formats/mobile-game.d.ts.map +1 -1
- package/dist/shields/formats/mobile-game.js +16 -0
- package/dist/shields/formats/mobile-game.js.map +1 -1
- package/dist/shields/formats/model.d.ts +22 -8
- package/dist/shields/formats/model.d.ts.map +1 -1
- package/dist/shields/formats/model.js +231 -59
- package/dist/shields/formats/model.js.map +1 -1
- package/dist/shields/formats/native.d.ts +74 -11
- package/dist/shields/formats/native.d.ts.map +1 -1
- package/dist/shields/formats/native.js +557 -109
- package/dist/shields/formats/native.js.map +1 -1
- package/dist/shields/formats/pcap-capture.d.ts +27 -0
- package/dist/shields/formats/pcap-capture.d.ts.map +1 -0
- package/dist/shields/formats/pcap-capture.js +201 -0
- package/dist/shields/formats/pcap-capture.js.map +1 -0
- package/dist/shields/formats/python.d.ts +22 -1
- package/dist/shields/formats/python.d.ts.map +1 -1
- package/dist/shields/formats/python.js +568 -27
- package/dist/shields/formats/python.js.map +1 -1
- package/dist/shields/formats/sourcemap.d.ts.map +1 -1
- package/dist/shields/formats/sourcemap.js +2 -0
- package/dist/shields/formats/sourcemap.js.map +1 -1
- package/dist/shields/formats/sqlite.d.ts +87 -15
- package/dist/shields/formats/sqlite.d.ts.map +1 -1
- package/dist/shields/formats/sqlite.js +377 -42
- package/dist/shields/formats/sqlite.js.map +1 -1
- package/dist/shields/formats/wasm.d.ts +6 -0
- package/dist/shields/formats/wasm.d.ts.map +1 -1
- package/dist/shields/formats/wasm.js +118 -3
- package/dist/shields/formats/wasm.js.map +1 -1
- package/dist/shields/javascript/ast-shield.d.ts +26 -5
- package/dist/shields/javascript/ast-shield.d.ts.map +1 -1
- package/dist/shields/javascript/ast-shield.js +748 -104
- package/dist/shields/javascript/ast-shield.js.map +1 -1
- package/dist/shields/runtime/memory-diff-shield.d.ts +56 -0
- package/dist/shields/runtime/memory-diff-shield.d.ts.map +1 -0
- package/dist/shields/runtime/memory-diff-shield.js +170 -0
- package/dist/shields/runtime/memory-diff-shield.js.map +1 -0
- package/dist/shields/runtime/runtime-shield.d.ts +12 -16
- package/dist/shields/runtime/runtime-shield.d.ts.map +1 -1
- package/dist/shields/runtime/runtime-shield.js +30 -24
- package/dist/shields/runtime/runtime-shield.js.map +1 -1
- package/dist/shields/tarpit/opaque-predicates.d.ts.map +1 -1
- package/dist/shields/tarpit/opaque-predicates.js +3 -3
- package/dist/shields/tarpit/opaque-predicates.js.map +1 -1
- package/dist/shields/tarpit/tarpit-generator.d.ts +9 -4
- package/dist/shields/tarpit/tarpit-generator.d.ts.map +1 -1
- package/dist/shields/tarpit/tarpit-generator.js +30 -23
- package/dist/shields/tarpit/tarpit-generator.js.map +1 -1
- package/package.json +13 -6
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { REA_INTERNAL_LIMITS } from "../../identity.js";
|
|
2
|
+
import { SeededPrng } from "../../core/prng.js";
|
|
3
|
+
export class UnsupportedElectronFuseContextError extends Error {
|
|
4
|
+
constructor(message) {
|
|
5
|
+
super(message);
|
|
6
|
+
this.name = "UnsupportedElectronFuseContextError";
|
|
7
|
+
}
|
|
8
|
+
}
|
|
2
9
|
/**
|
|
3
10
|
* Electron V1 Fuse Wire constants (`src/domain/electron/electronFuses.ts` in `morluto/rea`).
|
|
4
11
|
*/
|
|
@@ -7,12 +14,62 @@ export const ELECTRON_FUSE_STATE = {
|
|
|
7
14
|
DISABLED: 0x30, // '0'
|
|
8
15
|
ENABLED: 0x31, // '1'
|
|
9
16
|
REMOVED: 0x72, // 'r'
|
|
17
|
+
DECOY: 0x39, // '9' (BLA decoy sentinel wire marker)
|
|
10
18
|
};
|
|
19
|
+
export const ELECTRON_FUSE_NAMES = [
|
|
20
|
+
"RunAsNode",
|
|
21
|
+
"EnableCookieEncryption",
|
|
22
|
+
"EnableNodeOptionsEnvironmentVariable",
|
|
23
|
+
"EnableNodeCliInspectArguments",
|
|
24
|
+
"EnableEmbeddedAsarIntegrityValidation",
|
|
25
|
+
"OnlyLoadAppFromAsar",
|
|
26
|
+
"LoadBrowserProcessSpecificV8Snapshot",
|
|
27
|
+
"GrantFileProtocolExtraPrivileges",
|
|
28
|
+
];
|
|
29
|
+
function decodeFuseByte(byte) {
|
|
30
|
+
if (byte === ELECTRON_FUSE_STATE.DISABLED)
|
|
31
|
+
return "disabled";
|
|
32
|
+
if (byte === ELECTRON_FUSE_STATE.ENABLED)
|
|
33
|
+
return "enabled";
|
|
34
|
+
if (byte === ELECTRON_FUSE_STATE.REMOVED)
|
|
35
|
+
return "removed";
|
|
36
|
+
return "unknown";
|
|
37
|
+
}
|
|
38
|
+
function isValidWireByte(byte) {
|
|
39
|
+
return (byte === ELECTRON_FUSE_STATE.DISABLED ||
|
|
40
|
+
byte === ELECTRON_FUSE_STATE.ENABLED ||
|
|
41
|
+
byte === ELECTRON_FUSE_STATE.REMOVED ||
|
|
42
|
+
byte === ELECTRON_FUSE_STATE.DECOY);
|
|
43
|
+
}
|
|
44
|
+
export function isSupportedNativeExecutableContainer(bytes) {
|
|
45
|
+
if (bytes.length >= 20 &&
|
|
46
|
+
bytes[0] === 0x7f &&
|
|
47
|
+
bytes[1] === 0x45 &&
|
|
48
|
+
bytes[2] === 0x4c &&
|
|
49
|
+
bytes[3] === 0x46) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
if (bytes.length >= 8) {
|
|
53
|
+
const magicBE = bytes.readUInt32BE(0);
|
|
54
|
+
if (magicBE === 0xfeedfacf ||
|
|
55
|
+
magicBE === 0xcffaedfe ||
|
|
56
|
+
magicBE === 0xfeedface ||
|
|
57
|
+
magicBE === 0xcefaedfe ||
|
|
58
|
+
magicBE === 0xcafebabe) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
if (bytes[0] === 0x4d && bytes[1] === 0x5a) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
11
67
|
/**
|
|
12
68
|
* Inspects a binary buffer (ELF / Mach-O / PE) for Electron Fuse sentinels
|
|
13
|
-
* (`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`), matching REA's `ElectronFuseReader.ts
|
|
69
|
+
* (`dL7pKGdnNz796PbbjQWNKmHXBZaB9tsX`), matching REA's `ElectronFuseReader.ts`
|
|
70
|
+
* while distinguishing verified V1 fuse blocks from unsupported/truncated/ambiguous wires.
|
|
14
71
|
*/
|
|
15
|
-
export function
|
|
72
|
+
export function inspectElectronFusesBuffer(bytes) {
|
|
16
73
|
const offsets = [];
|
|
17
74
|
let from = 0;
|
|
18
75
|
while (from <= bytes.length - ELECTRON_FUSE_SENTINEL_BYTES.length) {
|
|
@@ -24,94 +81,269 @@ export function inspectElectronFusesInBuffer(bytes) {
|
|
|
24
81
|
if (offsets.length >= 128)
|
|
25
82
|
break;
|
|
26
83
|
}
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
84
|
+
const exceedsReaSentinelLimit = offsets.length > REA_INTERNAL_LIMITS.ELECTRON_MAX_SENTINELS_PER_SLICE;
|
|
85
|
+
const makeEmptyResult = (status, diagnostic) => ({
|
|
86
|
+
status,
|
|
87
|
+
sentinelCount: offsets.length,
|
|
88
|
+
sentinelOffsets: offsets,
|
|
89
|
+
realFuseOffset: -1,
|
|
90
|
+
fuseVersion: 0,
|
|
91
|
+
fuseWireLength: 0,
|
|
92
|
+
fuses: {},
|
|
93
|
+
runAsNodeEnabled: false,
|
|
94
|
+
nodeCliInspectEnabled: false,
|
|
95
|
+
nodeOptionsEnabled: false,
|
|
96
|
+
asarIntegrityEnforced: false,
|
|
97
|
+
onlyLoadFromAsarEnforced: false,
|
|
98
|
+
exceedsReaSentinelLimit,
|
|
99
|
+
hardened: false,
|
|
100
|
+
...(diagnostic !== undefined ? { diagnostic } : {}),
|
|
101
|
+
});
|
|
102
|
+
if (offsets.length === 0) {
|
|
103
|
+
return makeEmptyResult("absent");
|
|
104
|
+
}
|
|
105
|
+
const realCandidates = [];
|
|
106
|
+
let unsupportedReason;
|
|
107
|
+
for (const off of offsets) {
|
|
108
|
+
const wireStart = off + ELECTRON_FUSE_SENTINEL_BYTES.length;
|
|
109
|
+
if (wireStart + 2 > bytes.length) {
|
|
110
|
+
return makeEmptyResult("unsupported", "truncated fuse header");
|
|
111
|
+
}
|
|
112
|
+
const version = bytes[wireStart];
|
|
113
|
+
const len = bytes[wireStart + 1];
|
|
114
|
+
if (wireStart + 2 + len > bytes.length) {
|
|
115
|
+
return makeEmptyResult("unsupported", "truncated fuse wire");
|
|
116
|
+
}
|
|
117
|
+
if (version !== 1) {
|
|
118
|
+
unsupportedReason = `unsupported fuse version ${version}`;
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
if (len < 6) {
|
|
122
|
+
unsupportedReason = `fuse wire length ${len} shorter than minimum 6`;
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
const wire = bytes.subarray(wireStart + 2, wireStart + 2 + len);
|
|
126
|
+
for (let i = 0; i < wire.length; i++) {
|
|
127
|
+
if (!isValidWireByte(wire[i])) {
|
|
128
|
+
return makeEmptyResult("unsupported", "invalid fuse wire byte");
|
|
44
129
|
}
|
|
45
130
|
}
|
|
131
|
+
// BLA decoy sentinels contain 0x39 ('9') wire markers
|
|
132
|
+
if (wire.includes(ELECTRON_FUSE_STATE.DECOY)) {
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
realCandidates.push({
|
|
136
|
+
offset: off,
|
|
137
|
+
version,
|
|
138
|
+
len,
|
|
139
|
+
wire,
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
if (realCandidates.length > 1) {
|
|
143
|
+
return makeEmptyResult("ambiguous", "multiple real fuse blocks found");
|
|
46
144
|
}
|
|
145
|
+
if (realCandidates.length === 0) {
|
|
146
|
+
return makeEmptyResult("unsupported", unsupportedReason ?? "no verified real V1 fuse block found");
|
|
147
|
+
}
|
|
148
|
+
const real = realCandidates[0];
|
|
149
|
+
const fuses = {};
|
|
150
|
+
const maxNamed = Math.min(real.len, ELECTRON_FUSE_NAMES.length);
|
|
151
|
+
for (let i = 0; i < maxNamed; i++) {
|
|
152
|
+
const fuseName = ELECTRON_FUSE_NAMES[i];
|
|
153
|
+
fuses[fuseName] = decodeFuseByte(real.wire[i]);
|
|
154
|
+
}
|
|
155
|
+
const runAsNodeEnabled = real.wire[0] === ELECTRON_FUSE_STATE.ENABLED;
|
|
156
|
+
const cookieEncryptionEnabled = real.wire[1] === ELECTRON_FUSE_STATE.ENABLED;
|
|
157
|
+
const nodeOptionsEnabled = real.wire[2] === ELECTRON_FUSE_STATE.ENABLED;
|
|
158
|
+
const nodeCliInspectEnabled = real.wire[3] === ELECTRON_FUSE_STATE.ENABLED;
|
|
159
|
+
const asarIntegrityEnforced = real.wire[4] === ELECTRON_FUSE_STATE.ENABLED;
|
|
160
|
+
const onlyLoadFromAsarEnforced = real.wire[5] === ELECTRON_FUSE_STATE.ENABLED;
|
|
161
|
+
const hardened = !runAsNodeEnabled &&
|
|
162
|
+
cookieEncryptionEnabled &&
|
|
163
|
+
!nodeOptionsEnabled &&
|
|
164
|
+
!nodeCliInspectEnabled &&
|
|
165
|
+
asarIntegrityEnforced &&
|
|
166
|
+
onlyLoadFromAsarEnforced;
|
|
47
167
|
return {
|
|
168
|
+
status: "verified",
|
|
48
169
|
sentinelCount: offsets.length,
|
|
49
170
|
sentinelOffsets: offsets,
|
|
171
|
+
realFuseOffset: real.offset,
|
|
172
|
+
fuseVersion: real.version,
|
|
173
|
+
fuseWireLength: real.len,
|
|
174
|
+
fuses,
|
|
50
175
|
runAsNodeEnabled,
|
|
51
176
|
nodeCliInspectEnabled,
|
|
52
177
|
nodeOptionsEnabled,
|
|
53
178
|
asarIntegrityEnforced,
|
|
54
179
|
onlyLoadFromAsarEnforced,
|
|
55
|
-
exceedsReaSentinelLimit
|
|
180
|
+
exceedsReaSentinelLimit,
|
|
181
|
+
hardened,
|
|
56
182
|
};
|
|
57
183
|
}
|
|
184
|
+
export const inspectElectronFusesInBuffer = inspectElectronFusesBuffer;
|
|
58
185
|
/**
|
|
59
|
-
*
|
|
60
|
-
* `
|
|
61
|
-
* while
|
|
62
|
-
* and `OnlyLoadAppFromAsar`) AND builds a 34-sentinel overflow trailer that trips
|
|
63
|
-
* REA's `ELECTRON_FUSE_LIMITS.maximumSentinelsPerSlice = 32` (`ElectronFuseReader.ts:381`)!
|
|
186
|
+
* Builds 34 decoy sentinel records (`> maximumSentinelsPerSlice = 32`) tagged with
|
|
187
|
+
* BLA's `0x39` (`'9'`) decoy marker so `inspectElectronFusesBuffer` distinguishes
|
|
188
|
+
* them from real V1 fuse blocks while tripping REA's sentinel slice limit.
|
|
64
189
|
*/
|
|
65
|
-
export function
|
|
66
|
-
let patchedInPlaceCount = 0;
|
|
67
|
-
let from = 0;
|
|
68
|
-
while (from <= bytes.length - ELECTRON_FUSE_SENTINEL_BYTES.length) {
|
|
69
|
-
const found = bytes.indexOf(ELECTRON_FUSE_SENTINEL_BYTES, from);
|
|
70
|
-
if (found < 0)
|
|
71
|
-
break;
|
|
72
|
-
const wireStart = found + ELECTRON_FUSE_SENTINEL_BYTES.length;
|
|
73
|
-
if (wireStart + 8 <= bytes.length && bytes[wireStart] === 1 && (bytes[wireStart + 1] ?? 0) >= 6) {
|
|
74
|
-
// Harden real V1 fuse wire in-place:
|
|
75
|
-
// [0] RunAsNode = '0' (disabled)
|
|
76
|
-
// [1] EnableCookieEncryption = '1' (enabled)
|
|
77
|
-
// [2] EnableNodeOptionsEnvironmentVariable = '0' (disabled)
|
|
78
|
-
// [3] EnableNodeCliInspectArguments = '0' (disabled)
|
|
79
|
-
// [4] EnableEmbeddedAsarIntegrityValidation = '1' (enabled)
|
|
80
|
-
// [5] OnlyLoadAppFromAsar = '1' (enabled)
|
|
81
|
-
bytes[wireStart + 2 + 0] = ELECTRON_FUSE_STATE.DISABLED;
|
|
82
|
-
bytes[wireStart + 2 + 1] = ELECTRON_FUSE_STATE.ENABLED;
|
|
83
|
-
bytes[wireStart + 2 + 2] = ELECTRON_FUSE_STATE.DISABLED;
|
|
84
|
-
bytes[wireStart + 2 + 3] = ELECTRON_FUSE_STATE.DISABLED;
|
|
85
|
-
bytes[wireStart + 2 + 4] = ELECTRON_FUSE_STATE.ENABLED;
|
|
86
|
-
bytes[wireStart + 2 + 5] = ELECTRON_FUSE_STATE.ENABLED;
|
|
87
|
-
patchedInPlaceCount++;
|
|
88
|
-
}
|
|
89
|
-
from = found + 1;
|
|
90
|
-
}
|
|
91
|
-
// Build 34 decoy sentinel wires (> REA's `maximumSentinelsPerSlice = 32`)
|
|
92
|
-
const decoyCount = 34;
|
|
190
|
+
export function buildDecoyElectronFuseSentinels(prng, decoyCount = 34) {
|
|
93
191
|
const wires = [];
|
|
94
192
|
for (let i = 0; i < decoyCount; i++) {
|
|
95
193
|
const wireHeader = Buffer.from([
|
|
96
194
|
0x01, // wire_version = 1
|
|
97
|
-
|
|
98
|
-
ELECTRON_FUSE_STATE.DISABLED,
|
|
99
|
-
ELECTRON_FUSE_STATE.ENABLED,
|
|
100
|
-
ELECTRON_FUSE_STATE.DISABLED,
|
|
101
|
-
ELECTRON_FUSE_STATE.DISABLED,
|
|
102
|
-
ELECTRON_FUSE_STATE.ENABLED,
|
|
103
|
-
ELECTRON_FUSE_STATE.ENABLED,
|
|
104
|
-
ELECTRON_FUSE_STATE.
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
195
|
+
0x08, // declared_length = 8
|
|
196
|
+
ELECTRON_FUSE_STATE.DISABLED,
|
|
197
|
+
ELECTRON_FUSE_STATE.ENABLED,
|
|
198
|
+
ELECTRON_FUSE_STATE.DISABLED,
|
|
199
|
+
ELECTRON_FUSE_STATE.DISABLED,
|
|
200
|
+
ELECTRON_FUSE_STATE.ENABLED,
|
|
201
|
+
ELECTRON_FUSE_STATE.ENABLED,
|
|
202
|
+
ELECTRON_FUSE_STATE.DECOY,
|
|
203
|
+
prng.nextInt(0, 1) === 0
|
|
204
|
+
? ELECTRON_FUSE_STATE.DECOY
|
|
205
|
+
: ELECTRON_FUSE_STATE.REMOVED,
|
|
108
206
|
]);
|
|
109
207
|
wires.push(ELECTRON_FUSE_SENTINEL_BYTES, wireHeader);
|
|
110
208
|
}
|
|
209
|
+
return Buffer.concat(wires);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Hardens a single verified Electron Fuse V1 wire in-place (if present and unambiguous)
|
|
213
|
+
* AND builds a 34-sentinel overflow trailer that trips REA's
|
|
214
|
+
* `ELECTRON_FUSE_LIMITS.maximumSentinelsPerSlice = 32`.
|
|
215
|
+
*/
|
|
216
|
+
export function hardenAndOverflowElectronFuses(bytes, prng) {
|
|
217
|
+
let patchedInPlaceCount = 0;
|
|
218
|
+
const inspection = inspectElectronFusesBuffer(bytes);
|
|
219
|
+
if (inspection.status === "verified" && inspection.realFuseOffset >= 0) {
|
|
220
|
+
const wireStart = inspection.realFuseOffset + ELECTRON_FUSE_SENTINEL_BYTES.length;
|
|
221
|
+
bytes[wireStart + 2 + 0] = ELECTRON_FUSE_STATE.DISABLED;
|
|
222
|
+
bytes[wireStart + 2 + 1] = ELECTRON_FUSE_STATE.ENABLED;
|
|
223
|
+
bytes[wireStart + 2 + 2] = ELECTRON_FUSE_STATE.DISABLED;
|
|
224
|
+
bytes[wireStart + 2 + 3] = ELECTRON_FUSE_STATE.DISABLED;
|
|
225
|
+
bytes[wireStart + 2 + 4] = ELECTRON_FUSE_STATE.ENABLED;
|
|
226
|
+
bytes[wireStart + 2 + 5] = ELECTRON_FUSE_STATE.ENABLED;
|
|
227
|
+
patchedInPlaceCount = 1;
|
|
228
|
+
}
|
|
229
|
+
const decoyCount = 34;
|
|
230
|
+
const decoySentinelsBuffer = buildDecoyElectronFuseSentinels(prng, decoyCount);
|
|
111
231
|
return {
|
|
112
232
|
patchedInPlaceCount,
|
|
113
|
-
decoySentinelsBuffer
|
|
233
|
+
decoySentinelsBuffer,
|
|
114
234
|
decoySentinelsInjected: decoyCount,
|
|
115
235
|
};
|
|
116
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* Context-verified Electron Fuse hardening entrypoint.
|
|
239
|
+
* Verifies executable container format, unambiguous V1 fuse wire, Electron version,
|
|
240
|
+
* embedded ASAR integrity metadata, and code-signing policy before mutating any fuse bytes.
|
|
241
|
+
*/
|
|
242
|
+
export function hardenElectronFusesWithContext(bytes, context) {
|
|
243
|
+
if (!context || typeof context !== "object") {
|
|
244
|
+
throw new UnsupportedElectronFuseContextError("Missing Electron hardening context");
|
|
245
|
+
}
|
|
246
|
+
if (!context.allowRawContainer &&
|
|
247
|
+
!isSupportedNativeExecutableContainer(bytes)) {
|
|
248
|
+
throw new UnsupportedElectronFuseContextError("Target is not a supported native Electron executable container (ELF, Mach-O, or PE)");
|
|
249
|
+
}
|
|
250
|
+
const versionMatch = typeof context.electronVersion === "string"
|
|
251
|
+
? /^v?(\d+)\.(\d+)\.(\d+)/.exec(context.electronVersion.trim())
|
|
252
|
+
: null;
|
|
253
|
+
if (!versionMatch) {
|
|
254
|
+
throw new UnsupportedElectronFuseContextError(`Invalid or missing Electron version: ${String(context.electronVersion)}`);
|
|
255
|
+
}
|
|
256
|
+
const majorVersion = Number(versionMatch[1]);
|
|
257
|
+
if (!Number.isSafeInteger(majorVersion) || majorVersion < 12) {
|
|
258
|
+
throw new UnsupportedElectronFuseContextError(`Unsupported Electron major version ${majorVersion} (requires Electron >= 12.0.0)`);
|
|
259
|
+
}
|
|
260
|
+
if (context.codeSigningPolicy !== "will-resign" &&
|
|
261
|
+
context.codeSigningPolicy !== "unsigned-local-fixture") {
|
|
262
|
+
throw new UnsupportedElectronFuseContextError(`Unsupported or missing codeSigningPolicy: ${String(context.codeSigningPolicy)}`);
|
|
263
|
+
}
|
|
264
|
+
if (context.hasEmbeddedAsarIntegrity !== true ||
|
|
265
|
+
typeof context.asarHeaderHash !== "string" ||
|
|
266
|
+
!/^[0-9a-fA-F]{64}$/.test(context.asarHeaderHash) ||
|
|
267
|
+
(context.asarPath !== undefined && context.asarPath.trim().length === 0)) {
|
|
268
|
+
throw new UnsupportedElectronFuseContextError("Cannot enable EnableEmbeddedAsarIntegrityValidation or OnlyLoadAppFromAsar without verified embedded ASAR integrity metadata (hasEmbeddedAsarIntegrity=true and 64-hex SHA-256 asarHeaderHash)");
|
|
269
|
+
}
|
|
270
|
+
const inspection = inspectElectronFusesBuffer(bytes);
|
|
271
|
+
if (inspection.status !== "verified" || inspection.realFuseOffset < 0) {
|
|
272
|
+
throw new UnsupportedElectronFuseContextError(`Cannot harden Electron fuses: fuse inspection status is '${inspection.status}'${inspection.diagnostic ? ` (${inspection.diagnostic})` : ""}`);
|
|
273
|
+
}
|
|
274
|
+
const working = Buffer.from(bytes);
|
|
275
|
+
const wireStart = inspection.realFuseOffset + ELECTRON_FUSE_SENTINEL_BYTES.length;
|
|
276
|
+
const desiredPlan = [
|
|
277
|
+
{
|
|
278
|
+
index: 0,
|
|
279
|
+
name: "RunAsNode",
|
|
280
|
+
byte: ELECTRON_FUSE_STATE.DISABLED,
|
|
281
|
+
value: "disabled",
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
index: 1,
|
|
285
|
+
name: "EnableCookieEncryption",
|
|
286
|
+
byte: ELECTRON_FUSE_STATE.ENABLED,
|
|
287
|
+
value: "enabled",
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
index: 2,
|
|
291
|
+
name: "EnableNodeOptionsEnvironmentVariable",
|
|
292
|
+
byte: ELECTRON_FUSE_STATE.DISABLED,
|
|
293
|
+
value: "disabled",
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
index: 3,
|
|
297
|
+
name: "EnableNodeCliInspectArguments",
|
|
298
|
+
byte: ELECTRON_FUSE_STATE.DISABLED,
|
|
299
|
+
value: "disabled",
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
index: 4,
|
|
303
|
+
name: "EnableEmbeddedAsarIntegrityValidation",
|
|
304
|
+
byte: ELECTRON_FUSE_STATE.ENABLED,
|
|
305
|
+
value: "enabled",
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
index: 5,
|
|
309
|
+
name: "OnlyLoadAppFromAsar",
|
|
310
|
+
byte: ELECTRON_FUSE_STATE.ENABLED,
|
|
311
|
+
value: "enabled",
|
|
312
|
+
},
|
|
313
|
+
];
|
|
314
|
+
const mutatedMap = {};
|
|
315
|
+
const mutatedNames = [];
|
|
316
|
+
for (const item of desiredPlan) {
|
|
317
|
+
const currentByte = working[wireStart + 2 + item.index];
|
|
318
|
+
const fromVal = decodeFuseByte(currentByte);
|
|
319
|
+
if (currentByte !== item.byte) {
|
|
320
|
+
working[wireStart + 2 + item.index] = item.byte;
|
|
321
|
+
mutatedMap[item.name] = { from: fromVal, to: item.value };
|
|
322
|
+
mutatedNames.push(item.name);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
let outBuffer = working;
|
|
326
|
+
let decoySentinelsInjected = 0;
|
|
327
|
+
if (context.injectDecoySentinelOverflow) {
|
|
328
|
+
const prng = new SeededPrng(context.seed ?? "bla-electron-fuses-v1");
|
|
329
|
+
decoySentinelsInjected = 34;
|
|
330
|
+
const decoyBuf = buildDecoyElectronFuseSentinels(prng, decoySentinelsInjected);
|
|
331
|
+
outBuffer = Buffer.concat([working, decoyBuf]);
|
|
332
|
+
}
|
|
333
|
+
return {
|
|
334
|
+
buffer: outBuffer,
|
|
335
|
+
fusePolicy: {
|
|
336
|
+
status: "hardened",
|
|
337
|
+
fuseVersion: inspection.fuseVersion,
|
|
338
|
+
fuseOffset: inspection.realFuseOffset,
|
|
339
|
+
mutatedFuses: mutatedMap,
|
|
340
|
+
decoySentinelsInjected,
|
|
341
|
+
},
|
|
342
|
+
asarIntegrityStatus: "verified",
|
|
343
|
+
signatureStatus: context.codeSigningPolicy === "will-resign"
|
|
344
|
+
? "unverified-requires-resign"
|
|
345
|
+
: "unsigned-fixture",
|
|
346
|
+
mutatedFuses: mutatedNames,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
117
349
|
//# sourceMappingURL=electron-fuses.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"electron-fuses.js","sourceRoot":"","sources":["../../../src/shields/formats/electron-fuses.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"electron-fuses.js","sourceRoot":"","sources":["../../../src/shields/formats/electron-fuses.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { ProtectionIntensity } from "../../core/types.js";
|
|
2
|
+
export interface BeamChunkView {
|
|
3
|
+
readonly name: string;
|
|
4
|
+
readonly payload: Buffer;
|
|
5
|
+
}
|
|
6
|
+
export interface ErlangBeamInspection {
|
|
7
|
+
readonly validMagic: boolean;
|
|
8
|
+
readonly formSize: number;
|
|
9
|
+
readonly chunkCount: number;
|
|
10
|
+
readonly chunkNames: readonly string[];
|
|
11
|
+
readonly atomCount: number;
|
|
12
|
+
readonly blaProtected: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function inspectErlangBeam(bytes: Buffer): ErlangBeamInspection;
|
|
15
|
+
/**
|
|
16
|
+
* Protects an Erlang BEAM IFF container:
|
|
17
|
+
* - Preserves original chunk order and non-AtU8 payloads (Code/ExpT/ImpT stay intact).
|
|
18
|
+
* - Appends canary atoms onto AtU8 tables (classic or OTP28+ compact), preserving
|
|
19
|
+
* original atom indices and compact/classic encoding style.
|
|
20
|
+
* - Appends decoy IFF chunks past REA's default `max_chunks` (64) budget.
|
|
21
|
+
*/
|
|
22
|
+
export declare function protectErlangBeamBuffer(input: Buffer, options?: {
|
|
23
|
+
readonly intensity?: ProtectionIntensity;
|
|
24
|
+
readonly seed?: string;
|
|
25
|
+
}): {
|
|
26
|
+
readonly buffer: Buffer;
|
|
27
|
+
readonly chunksInjected: number;
|
|
28
|
+
readonly atomsInjected: number;
|
|
29
|
+
readonly canaryTokensEmbedded: number;
|
|
30
|
+
readonly diagnosticsEmbedded: number;
|
|
31
|
+
readonly exceedsDefaultChunkBudget: boolean;
|
|
32
|
+
readonly exceedsDefaultAtomBudget: boolean;
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=erlang-beam.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"erlang-beam.d.ts","sourceRoot":"","sources":["../../../src/shields/formats/erlang-beam.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAuC/D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC;AA6ID,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,oBAAoB,CAqBrE;AAUD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IACP,QAAQ,CAAC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACnB,GACL;IACD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,yBAAyB,EAAE,OAAO,CAAC;IAC5C,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;CAC5C,CA8HA"}
|