@mikeargento/bitgraph-player 0.12.0 → 0.13.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.
@@ -125,7 +125,7 @@ describe("check: real export fixture (disk)", () => {
125
125
  it("recognizes the enclave v5 measurement from PINS.md", () => {
126
126
  const enclave = report.recordings[0].lines.find((l) => l.name === "enclave");
127
127
  assert.match(enclave.detail, /enclave v5/);
128
- assert.equal(KNOWN_ENCLAVE_MEASUREMENTS.length, 5);
128
+ assert.equal(KNOWN_ENCLAVE_MEASUREMENTS.length, 6);
129
129
  });
130
130
  it("serializes deterministically: no timestamps, no machine paths", async () => {
131
131
  const again = await checkIngest(await ingestBundle(FIXTURE));
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}
package/dist/check.js CHANGED
@@ -36,7 +36,12 @@ export const KNOWN_ENCLAVE_MEASUREMENTS = [
36
36
  {
37
37
  pcr0: "cd8ba52d340fb1be78610b59953ded2ceca23be1cfcc7ab504a26b8fdcd7ba92090f49e28a32d008df046ec4212f77bf",
38
38
  label: "enclave v6 (reproducible)",
39
- period: "2026-09-05 onward",
39
+ period: "2026-09-05 to 2026-09-06",
40
+ },
41
+ {
42
+ pcr0: "394c3cf515651dc27187d85e4716c12dfeb99c1227f1fe0eacfaa427d80018e1a28ebba9469e99c7936601f901d74e1d",
43
+ label: "enclave v7 (reproducible, authenticated anchors)",
44
+ period: "2026-09-06 onward",
40
45
  },
41
46
  ];
42
47
  // ---------------------------------------------------------------------------
package/dist/check.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAAA,qFAAqF;AAiErF,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAChG,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAG/H,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,8EAA8E;AAC9E,qDAAqD;AACrD,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAmE;IACxG;QACE,IAAI,EAAE,kGAAkG;QACxG,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,0BAA0B;KACnC;IACD;QACE,IAAI,EAAE,kGAAkG;QACxG,KAAK,EAAE,2BAA2B;QAClC,MAAM,EAAE,0BAA0B;KACnC;IACD;QACE,IAAI,EAAE,kGAAkG;QACxG,KAAK,EAAE,2BAA2B;QAClC,MAAM,EAAE,0BAA0B;KACnC;IACD;QACE,IAAI,EAAE,kGAAkG;QACxG,KAAK,EAAE,2BAA2B;QAClC,MAAM,EAAE,0BAA0B;KACnC;IACD;QACE,IAAI,EAAE,kGAAkG;QACxG,KAAK,EAAE,2BAA2B;QAClC,MAAM,EAAE,mBAAmB;KAC5B;CACF,CAAC;AAgIF,8EAA8E;AAC9E,sCAAsC;AACtC,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC;IACxD,+BAA+B;IAC/B,qBAAqB;IACrB,4BAA4B;IAC5B,oBAAoB;CACrB,CAAC,CAAC;AAEH,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAoB,EAAE,OAAsB;IAC5E,IAAI,IAAI,GAAG,OAAO,CAAC;IACnB,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3D,IAAI,IAAI,EAAE,YAAY,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC;IAC/F,CAAC;IACD,OAAO,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,mBAAmB,CAChC,MAAoB;IAEpB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA4B,CAAC;IACrD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,MAAM,MAAM,GAA0F,EAAE,CAAC;IACzG,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS;QAC9B,MAAM,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpE,MAAM,WAAW,GAAG,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9E,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7F,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC;QAC/C,IAAI,WAAW,KAAK,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,SAAS,KAAK,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IAC1D,MAAM,UAAU,GAAG,IAAI,GAAG,EAAsB,CAAC;IACjD,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QAClE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9F,CAAC;IACD,mBAAmB,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAClF,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAChF,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI;gBAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACjF,MAAM,KAAK,GAAG,MAAM,IAAI,QAAQ,CAAC;YACjC,IAAI,KAAK,KAAK,SAAS;gBAAE,SAAS;YAClC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;YAAS,CAAC;QACT,mBAAmB,EAAE,CAAC;IACxB,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACnC,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,gBAAgB,CAAC,KAAkB,EAAE,OAAsB;IACzE,MAAM,SAAS,GAAG,OAAO,EAAE,kBAAkB,IAAI,IAAI,CAAC;IACtD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAuB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACvG,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAC/B,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CACxD,CAAC;IACF,MAAM,aAAa,GAAG,IAAI,GAAG,EAA2B,CAAC;IACzD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC9C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,iBAAiB;YAAE,aAAa,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;IACD,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAA2C,CAAC;IACnF,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS;YAAE,SAAS;QACpD,MAAM,IAAI,GAAG,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,uBAAuB,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtD,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QAC9C,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,kBAAkB,EAAE,CAAC;YAC/C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;gBACtE,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAqB,EAAE,CAAC;IACxC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,uBAAuB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/F,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CACb,cAAc,CACZ,KAAK,EACL,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EACtC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAClC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EACxC,SAAS,EACT,OAAO,EAAE,YAAY,EACrB,YAAY,CACb,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3B,cAAc,CAAC,OAAO,CAAC,CAAC;IACxB,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzD,MAAM,QAAQ,GAAkB;QAC9B,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAClC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/B,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;KACvC,CAAC;IACF,MAAM,MAAM,GAAgB,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAEzF,OAAO;QACL,KAAK,EAAE,kBAAkB;QACzB,MAAM;QACN,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,cAAc,CAAC;QAC/D,UAAU;QACV,OAAO;QACP,cAAc;QACd,KAAK;QACL,UAAU;QACV,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE;QACrF,OAAO,EAAE,MAAM;KAChB,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAmD,KAAU;IAClF,MAAM,GAAG,GAAG,CAAC,CAAI,EAAgC,EAAE,CAAC;QAClD,CAAC,CAAC,OAAO,IAAI,EAAE;QACf,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;KACtF,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAClB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;YAAE,OAAO,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,SAAS,cAAc,CACrB,KAAoB,EACpB,WAA+C,EAC/C,OAAoC,EACpC,QAA4B,EAC5B,SAAkB,EAClB,YAAoD,EACpD,YAAgD;IAEhD,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;IAC7B,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;IAEjD,uDAAuD;IACvD,IAAI,CAAC,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc;YAClF,MAAM,EACJ,CAAC,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ;gBAC9C,CAAC,CAAC,GAAG,QAAQ,IAAI,kBAAkB,kCAAkC,SAAS,EAAE;gBAChF,CAAC,CAAC,wDAAwD,SAAS,EAAE;SAC1E,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,wDAAwD,SAAS,kDAAkD;SAC5H,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IACzE,wEAAwE;IACxE,kEAAkE;IAClE,8CAA8C;IAC9C,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,4BAA4B,EAAE,CAAC,CAAC;IAClG,CAAC;SAAM,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,8BAA8B,CAAC,CAAC,MAAM,IAAI,qBAAqB,EAAE;SAC1E,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,8DAA8D,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;SACrG,CAAC,CAAC;IACL,CAAC;IAED,wEAAwE;IACxE,8DAA8D;IAC9D,MAAM,GAAG,GAAG,eAAe,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAErB,kEAAkE;IAClE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAG3D,wEAAwE;IACxE,uEAAuE;IACvE,sEAAsE;IACtE,6CAA6C;IAC7C,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,KAA6B,CAAC;IAClC,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAClF,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACjL,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAErD,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS;QACT,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,GAAG,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,KAAK;QACL,MAAM;QACN,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC;QAC1B,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,eAAe,CAAC;AAE9C,MAAM,UAAU,UAAU,CACxB,OAAoC,EACpC,YAA2D,EAC3D,WAA+B,EAC/B,UAAkB,cAAc;IAEhC,2EAA2E;IAC3E,mEAAmE;IACnE,IAAI,OAAO,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,OAAO,KAAK,SAAS,IAAI,YAAY,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IACnI,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IACjC,IAAI,IAA8B,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;YAAE,SAAS;QACtC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACnD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YAAE,SAAS;QACvG,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;YAAE,SAAS;QAC7C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAAC,IAAI,GAAG,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC/C,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrF,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9F,IAAI,EAAE,GAAG,EAAE;YAAE,IAAI,GAAG,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO;QACL,GAAG,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,QAAQ,EAAE,eAAe;KAC1B,CAAC;AACJ,CAAC;AAED,MAAM,kBAAkB,GAAG,+DAA+D,CAAC;AAE3F,SAAS,WAAW,CAAC,KAAiB;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;IAC1F,OAAO,kBAAkB,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC;AACvF,CAAC;AAED,SAAS,SAAS,CAChB,SAAwB,EACxB,aAA4B,EAC5B,EAAgC,EAChC,KAAwB,EACxB,KAAoB;IAEpB,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,IAAI,GAAG,CAAC;IACtC,MAAM,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,eAAe,SAAS,GAAG,CAAC,CAAC,CAAC,yBAAyB,CAAC;IAC3F,MAAM,WAAW,GAAG,KAAK,KAAK,IAAI;QAChC,CAAC,CAAC,mBAAmB,WAAW,CAAC,KAAK,CAAC,6CAA6C,IAAI,gBAAgB;QACxG,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,cAAc;YAChC,CAAC,CAAC,6CAA6C,KAAK,CAAC,OAAO,2BAA2B;YACvF,CAAC,CAAC,kBAAkB,CAAC;IACzB,MAAM,IAAI,GAAG,EAAE,EAAE,IAAI,KAAK,SAAS,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI;QACrD,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;QAC1G,CAAC,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;YAC9D,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,aAAa,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC7I,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,UAAU,GAAG,CAAC,EAAE,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAClD,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,IAAI,GAAG,EAAE,eAAe,IAAI,oBAAoB,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CACrH,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,QAAgC,EAAE,QAAgC,EAAc,EAAE,CAAC,CAAC;QAChG,QAAQ;QACR,SAAS,EAAE,EAAE,EAAE,SAAS,IAAI,SAAS;QACrC,eAAe,EAAE,EAAE,EAAE,eAAe,IAAI,aAAa;QACrD,QAAQ;QACR,UAAU;QACV,KAAK;QACL,WAAW;QACX,IAAI;KACL,CAAC,CAAC;IACH,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO;YACL,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,eAAe,KAAK,qCAAqC,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,iDAAiD,IAAI,oBAAoB,EAAE;YAClP,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;SACjC,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAA2B,EAAE,CAAC,QAAQ,KAAK,mBAAmB,IAAI,CAAC,EAAE,CAAC,aAAa,KAAK,EAAE,CAAC,iBAAiB,IAAI,EAAE,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC;IACvL,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,cAAc;YACjB,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,gDAAgD,IAAI,GAAG,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,EAAE,CAAC;QACtK,KAAK,mBAAmB;YACtB,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,kDAAkD,KAAK,uCAAuC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;QACzM,KAAK,yBAAyB;YAC5B,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,oEAAoE,IAAI,KAAK,EAAE,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;QAClM,KAAK,4BAA4B;YAC/B,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,sEAAsE,EAAE,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC3L,KAAK,yBAAyB;YAC5B,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,qFAAqF,EAAE,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;QAC5M,KAAK,wBAAwB;YAC3B,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,IAAI,iCAAiC,6CAA6C,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;QACzM,KAAK,0BAA0B;YAC7B,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,wEAAwE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;QACnL;YACE,OAAO,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;IAC/K,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,MAA0C,EAC1C,SAAkB;IAElB,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QACpD,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,cAAc;gBACtB,MAAM,EAAE,uCAAuC;aAChD;SACF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,cAAc;gBACtB,MAAM,EACJ,6JAA6J;aAChK;SACF,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC9B,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,2CAA2C,MAAM,CAAC,iBAAiB,IAAI,qBAAqB,EAAE;aACvG;SACF,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;QACzC,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,8GAA8G;aACvH;YACD,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,mBAAmB,KAAK,IAAI,EAAE,CAAC;QACxC,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,aAAa;gBACnB,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,4DAA4D,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,oDAAoD,QAAQ,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE;aAC5L;YACD,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE;YACJ,IAAI,EAAE,aAAa;YACnB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,yGAAyG,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;SACjJ;QACD,YAAY,EAAE,MAAM,CAAC,YAAY;KAClC,CAAC;AACJ,CAAC;AAGD,SAAS,WAAW,CAAC,YAAgC,EAAE,iBAA8B;IACnF,IAAI,iBAAiB,KAAK,MAAM,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/D,OAAO;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,4FAA4F;SACrG,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5F,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO;YACL,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,cAAc;YACtB,MAAM,EAAE,QAAQ,QAAQ,CAAC,YAAY,CAAC,+EAA+E,cAAc,qFAAqF;SACzN,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,QAAQ,QAAQ,CAAC,YAAY,CAAC,8BAA8B,KAAK,CAAC,KAAK,iBAAiB,KAAK,CAAC,MAAM,GAAG;KAChH,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,OAAoC;IACrD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,kEAAkE,EAAE,CAAC;IAC9G,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,SAAS,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClE,MAAM,MAAM,GACV,SAAS,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;QAC/C,CAAC,CAAC,qCAAqC;QACvC,CAAC,CAAC,SAAS,KAAK,SAAS;YACvB,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,QAAQ,KAAK,SAAS;gBACtB,CAAC,CAAC,eAAe;gBACjB,CAAC,CAAC,YAAY,CAAC;IACvB,MAAM,MAAM,GACV,MAAM,KAAK,YAAY;QACrB,CAAC,CAAC,kEAAkE;QACpE,CAAC,CAAC,YAAY,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;IAC9D,OAAO;QACL,MAAM;QACN,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CACnB,MAA6B,EAC7B,SAAiC,EACjC,QAAgC;IAEhC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,qCAAqC;YACxC,OAAO,CACL,wBAAwB,QAAQ,CAAC,SAAuB,CAAC,6EAA6E,QAAQ,CAAC,QAAsB,CAAC,+FAA+F;gBACrQ,YAAY,CAAE,SAAwB,CAAC,MAAM,IAAK,QAAuB,CAAC,MAAM,CAAC,CAClF,CAAC;QACJ,KAAK,eAAe;YAClB,OAAO,wBAAwB,QAAQ,CAAC,SAAuB,CAAC,iEAAiE,GAAG,YAAY,CAAE,SAAwB,CAAC,MAAM,CAAC,CAAC;QACrL,KAAK,eAAe;YAClB,OAAO,yBAAyB,QAAQ,CAAC,QAAsB,CAAC,iEAAiE,GAAG,YAAY,CAAE,QAAuB,CAAC,MAAM,CAAC,CAAC;QACpL;YACE,OAAO,gDAAgD,CAAC;IAC5D,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,MAAsB,EAAE,IAAgC;IACxE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACrD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrF,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACrF,IAAI,EAAE,KAAK,EAAE;YAAE,OAAO,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,OAAO,CAAC,CAAe;IAC9B,OAAO;QACL,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,eAAe,EAAE,CAAC,CAAC,eAAe;QAClC,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,MAAM,EAAE,CAAC,CAAC,MAAM;KACjB,CAAC;AACJ,CAAC;AAED,gGAAgG;AAChG,SAAS,iBAAiB,CAAC,CAAc;IACvC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,qCAAqC;YACxC,OAAO,wBAAwB,QAAQ,CAAC,CAAC,CAAC,SAAuB,CAAC,6BAA6B,QAAQ,CAAC,CAAC,CAAC,QAAsB,CAAC,EAAE,CAAC;QACtI,KAAK,eAAe;YAClB,OAAO,wBAAwB,QAAQ,CAAC,CAAC,CAAC,SAAuB,CAAC,EAAE,CAAC;QACvE,KAAK,eAAe;YAClB,OAAO,yBAAyB,QAAQ,CAAC,CAAC,CAAC,QAAsB,CAAC,EAAE,CAAC;QACvE;YACE,OAAO,uCAAuC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,CAAa;IAC7B,OAAO,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC;AAED,SAAS,YAAY,CAAC,MAAe;IACnC,OAAO,MAAM;QACX,CAAC,CAAC,qGAAqG;QACvG,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,WAAW,CAClB,KAAoB,EACpB,MAAoB,EACpB,QAAmH;IAEnH,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;IAC7B,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC,CAAC;IACzG,CAAC;SAAM,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,OAAO;YACf,MAAM,EAAE,qCAAqC,CAAC,CAAC,MAAM,IAAI,qBAAqB,EAAE;SACjF,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC;YACT,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,0CAA0C,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;SACjF,CAAC,CAAC;IACL,CAAC;IAED,uEAAuE;IACvE,uEAAuE;IACvE,IAAI,WAA+B,CAAC;IACpC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAClD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,gBAAgB,QAAQ,CAAC,WAAW,kDAAkD,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;aAC1K,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAA8D,CAAC;YACvF,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,OAAO;gBACf,MAAM,EAAE,gBAAgB,KAAK,CAAC,WAAW,6BAA6B,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,6BAA6B,EAAE;aACtI,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,KAAK;QACL,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;KAC9C,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,qCAAqC;AACrC,8EAA8E;AAE9E,SAAS,qBAAqB,CAAC,KAAkB;IAC/C,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,IAAI,GAAG,CAAC,MAAc,EAAQ,EAAE;QACpC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO;QAC7B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,SAA2B,EAAE,CAAC;QAClE,IAAI,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAS;QACrD,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QACrD,IAAI,CAAC,GAAG,UAAU,CAAC,IAAI,KAAK,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;QAClD,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,mEAAmE;IACnE,wEAAwE;IACxE,iCAAiC;IACjC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,IAAI,OAAO,CAAC,IAAI,KAAK,mBAAmB,IAAI,OAAO,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC3H,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,oEAAoE;IACpE,qEAAqE;IACrE,kBAAkB;IAClB,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YAC1C,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvG,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,YAAY,CAAC,KAAkB,EAAE,UAA4B,EAAE,OAAsB,EAAE,eAAqC;IACnI,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,oCAAoC;IACpC,IAAI,gBAAgB,GAAG,EAAE,CAAC;IAC1B,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAC3B,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,SAA2B,EAAE,CAAC;QAClE,IAAI,OAAO,CAAC,IAAI,KAAK,+BAA+B,EAAE,CAAC;YACrD,MAAM,KAAK,GAAI,OAAO,CAAC,OAA0C,EAAE,KAAK,CAAC;YACzE,IAAI,KAAK,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;gBAAE,gBAAgB,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QACvF,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAClD,kBAAkB,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC;QACnD,CAAC;IACH,CAAC;IACD,IAAI,gBAAgB,GAAG,EAAE,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,GAAG,gBAAgB,mBAAmB,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,mDAAmD,gBAAgB,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,6GAA6G,CAC/Q,CAAC;IACJ,CAAC;IACD,IAAI,kBAAkB,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CACR,GAAG,kBAAkB,aAAa,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,QAAQ,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,oEAAoE,CACrL,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,sCAAsC;IACtC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;IACxI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CACR,GAAG,SAAS,CAAC,MAAM,QAAQ,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,mBAAmB,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,uCAAuC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,6HAA6H,CACnY,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,CAAC;IACxI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,SAAS;aACrB,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,YAAY,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;aAChF,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,KAAK,CAAC,IAAI,CACR,GAAG,SAAS,CAAC,MAAM,QAAQ,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,wBAAwB,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,uBAAuB,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,2EAA2E,CACxT,CAAC;IACJ,CAAC;IAED,kEAAkE;IAClE,MAAM,qBAAqB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC;IACjF,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CACR,GAAG,qBAAqB,CAAC,MAAM,mBAAmB,qBAAqB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,qBAAqB,qBAAqB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,qCAAqC,qBAAqB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,cAAc,qBAAqB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,mDAAmD,qBAAqB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CACva,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,qCAAqC,GAAG,CAAC,OAAO,yCAAyC,CAAC,CAAC;IACnH,CAAC;IACD,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9B,IAAI,CAAC,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CACR,GAAG,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,kBAAkB,wBAAwB,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,kCAAkC,CAC/J,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACxC,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC5C,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7E,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,KAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAmB;IAC5C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,IAAI,UAAU,EAAE,CAAC;QACf,GAAG,CAAC,IAAI,CACN,oJAAoJ,CACrJ,CAAC;IACJ,CAAC;IACD,GAAG,CAAC,IAAI,CACN,kKAAkK,CACnK,CAAC;IACF,GAAG,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;IAC7F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,SAAS,SAAS,CAChB,MAAmB,EACnB,UAA4B,EAC5B,OAAsB,EACtB,cAA2B;IAE3B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,6DAA6D,CAAC;IACvE,CAAC;IACD,MAAM,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;IAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACnD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7J,OAAO,+BAA+B,KAAK,KAAK,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;QACrF,CAAC;QACD,OAAO,SAAS,IAAI,2FAA2F,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;IAC5M,CAAC;IACD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG;YACd,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9G,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3G,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;SACvC,CAAC;QACF,OAAO,sDAAsD,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACzF,CAAC;IACD,MAAM,IAAI,GAAG;QACX,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACrG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;KACnG,CAAC;IACF,OAAO,8CAA8C,IAAI,6CAA6C,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;AAC/H,CAAC;AAED,8EAA8E;AAC9E,sEAAsE;AACtE,+DAA+D;AAC/D,8EAA8E;AAE9E,MAAM,UAAU,eAAe,CAAC,MAAmB;IACjD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,IAAI,GAAG,CAAC,CAAc,EAAU,EAAE,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACtG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACnC,GAAG,CAAC,IAAI,CACN,aAAa,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,GAAG,CAC9F,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QACzC,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC9B,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrG,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACvG,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/C,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;YACnD,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI;gBAAE,GAAG,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,cAAc,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,aAAa,CAAC,CAAC;YAC5K,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU;gBAAE,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC9B,GAAG,CAAC,IAAI,CACN,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,GAAG,CACvK,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,KAAK;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACrG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,cAAc;YAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK;YAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IAC/D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU;QAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,uBAAuB,MAAM,CAAC,SAAS,CAAC,OAAO,oBAAoB,MAAM,CAAC,SAAS,CAAC,KAAK,kBAAkB,CAAC,CAAC;IAC9I,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAC/B,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,oBAAoB,CAAC,MAAmB;IACtD,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AAChD,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,SAAS,QAAQ,CAAC,CAAqB;IACrC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACrC,OAAO,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,QAAQ,CAAC,CAAqB;IACrC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACrC,OAAO,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS;IAC/B,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}
package/dist/verdict.d.ts CHANGED
@@ -26,7 +26,7 @@ import type { Resolution, Rule, Verdict } from "./types.js";
26
26
  * A unit test asserts this equals package.json's version, so the
27
27
  * constant cannot drift silently across releases.
28
28
  */
29
- export declare const PLAYER_VERSION = "0.10.0";
29
+ export declare const PLAYER_VERSION = "0.13.0";
30
30
  /** The player package's own version. */
31
31
  export declare function playerVersion(): string;
32
32
  export declare function buildVerdict(rule: Rule, ruleSha256Hex: string, resolutions: Map<string, Resolution>, evaluation: Evaluation, audit: AuditResult): Verdict;
package/dist/verdict.js CHANGED
@@ -9,7 +9,7 @@ import { normalizeDigest } from "./rule.js";
9
9
  * A unit test asserts this equals package.json's version, so the
10
10
  * constant cannot drift silently across releases.
11
11
  */
12
- export const PLAYER_VERSION = "0.10.0";
12
+ export const PLAYER_VERSION = "0.13.0";
13
13
  /** The player package's own version. */
14
14
  export function playerVersion() {
15
15
  return PLAYER_VERSION;
@@ -149,7 +149,7 @@ R+eWw5b6cp3PmanfS5YwDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2kAMGYC
149
149
  MQCjfy+Rocm9Xue4YnwWmNJVA44fA0P5W2OpYow9OYCVRaEevL8uO1XYru5xtMPW
150
150
  rfMCMQCi85sWBbJwKKXdS6BptQFuZbT73o/gBh1qUxl/nNr12UO8Yfwr6wPLb+6N
151
151
  IwLz3/Y=
152
- -----END CERTIFICATE-----`;function sh(){return nc.replace(/-----BEGIN CERTIFICATE-----/,"").replace(/-----END CERTIFICATE-----/,"").replace(/\s+/g,"")}function rc(){return new Uint8Array(B.Buffer.from(sh(),"base64"))}async function ic(t,e){let n=[],r={},o,i,s,a,c,f=()=>({documentValid:!1,checks:n,failure:[...n].reverse().find(u=>!u.pass)?.detail,...o!==void 0?{pcr0:o}:{},pcrs:r,...i!==void 0?{moduleId:i}:{},...s!==void 0?{timestamp:s}:{},...a!==void 0?{certChainLength:a}:{},...c!==void 0?{userDataB64:c}:{}});try{let u=fh(t);if(u===null)return n.push({name:"CBOR Decode",pass:!1,detail:"reportB64 is not valid base64"}),f();let d=Xe(u,0).value;if(!Array.isArray(d)||d.length<4)return n.push({name:"CBOR Decode",pass:!1,detail:"Not a valid COSE_Sign1 array"}),f();n.push({name:"CBOR Decode",pass:!0,detail:"COSE_Sign1 envelope parsed"});let h=d[0],l=d[2],m=d[3];if(!(h instanceof Uint8Array)||!(l instanceof Uint8Array)||!(m instanceof Uint8Array))return n.push({name:"COSE Structure",pass:!1,detail:"Missing protected/payload/signature"}),f();let p=Xe(l,0).value;if(!p||typeof p!="object"||Array.isArray(p))return n.push({name:"Payload Decode",pass:!1,detail:"Could not decode attestation payload"}),f();r=mh(p),o=r[0],i=typeof p.module_id=="string"?p.module_id:void 0,s=typeof p.timestamp=="number"?p.timestamp:void 0;let w=p.user_data;c=w instanceof Uint8Array&&w.length>0?B.Buffer.from(w).toString("base64"):void 0;let b=p.cabundle,k=p.certificate;if(!(k instanceof Uint8Array))return n.push({name:"Leaf Certificate",pass:!1,detail:"No leaf certificate in attestation"}),f();a=(Array.isArray(b)?b.length:0)+1;let v=Zo(k),O=hh(h,l),z=await Yo(m,O,v.publicKey);if(n.push({name:"ECDSA P-384 Signature",pass:z,detail:z?"Attestation signed by leaf certificate":"Signature verification failed against leaf certificate public key"}),!z)return f();if(!Array.isArray(b)||b.length===0||!b.every(A=>A instanceof Uint8Array))return n.push({name:"Certificate Chain",pass:!1,detail:"Empty cabundle"}),f();let S=[...b,k].map(Zo),_=!0,F="";for(let A=1;A<S.length;A++){let C=S[A],M=S[A-1];if(!await Yo(C.signature,C.tbsCertificate,M.publicKey)){_=!1,F=`Certificate ${A} signature invalid (parent: ${A-1})`;break}}if(n.push({name:"Certificate Chain",pass:_,detail:_?`${S.length} certificates, each signed by parent`:F}),!_)return f();let G=e?.trustedRootCaDer===void 0,q=Zo(e?.trustedRootCaDer??rc()),ge=S[0],D=await Yo(ge.signature,ge.tbsCertificate,q.publicKey);if(n.push({name:"AWS Nitro Root CA",pass:D,detail:D?G?"Chain anchored to AWS Nitro Root G1 (CN=aws.nitro-enclaves)":"Chain anchored to the supplied trust root (non-default trust material)":G?"Top of chain not signed by AWS Nitro Root CA":"Top of chain not signed by the supplied trust root"}),!D)return f();let ae=!0,re=`All ${S.length} certificate validity windows contain the document timestamp`;if(s===void 0)ae=!1,re="Attestation document carries no timestamp; certificate validity cannot be evaluated offline";else for(let A=0;A<S.length;A++){let C=S[A];if(s<C.notBeforeMs||s>C.notAfterMs){ae=!1,re=`Certificate ${A} validity window [${new Date(C.notBeforeMs).toISOString()}, ${new Date(C.notAfterMs).toISOString()}] does not contain the document timestamp ${new Date(s).toISOString()}`;break}}if(n.push({name:"Certificate Validity Window",pass:ae,detail:re}),!ae)return f();let L;e?.expectedPcr0!==void 0&&(L=o===e.expectedPcr0,n.push({name:"PCR0 Match",pass:L,detail:L?"PCR0 inside attestation matches declared measurement":`PCR0 mismatch: expected ${e.expectedPcr0.slice(0,16)}..., got ${(o??"").slice(0,16)}...`}));let E;return e?.expectedUserDataB64!==void 0&&(E=c!==void 0&&c===e.expectedUserDataB64,n.push({name:"Bound to this proof",pass:E,detail:E?"Attestation user_data matches this proof's canonical hash":c!==void 0?"Attestation user_data does not match this proof":"Attestation carries no user_data to bind"})),{documentValid:!0,checks:n,...o!==void 0?{pcr0:o}:{},pcrs:r,...i!==void 0?{moduleId:i}:{},...s!==void 0?{timestamp:s}:{},certChainLength:a,...c!==void 0?{userDataB64:c}:{},...L!==void 0?{pcr0Matches:L}:{},...E!==void 0?{userDataMatches:E}:{}}}catch(u){return n.push({name:"Verification Error",pass:!1,detail:u instanceof Error?u.message:String(u)}),f()}}async function Xo(t,e,n){let r=[],o=[],i={proofsWithDeclaredMeasurement:0,proofsWithDocument:0,documentsValidated:0,documentsFailed:0,pcr0Matches:0,pcr0Mismatches:0,userDataBound:0,userDataUnbound:0};for(let s of t.proofs){let a=s.measurement!==void 0&&s.measurement.length>0?s.measurement:void 0;a!==void 0&&i.proofsWithDeclaredMeasurement++;let c=ch(s),f={proofHash:s.proofHash,declaredMeasurementPresent:a!==void 0,...a!==void 0?{declaredMeasurement:a}:{},documentPresent:c!==void 0,...c?.format!==void 0?{attestationFormat:c.format}:{},documentValidated:!1,checks:[]};if(c!==void 0){i.proofsWithDocument++;let u=await ic(c.reportB64,{...a!==void 0?{expectedPcr0:a}:{},expectedUserDataB64:bo(s.proof),...n?.trustedRootCaDer!==void 0?{trustedRootCaDer:n.trustedRootCaDer}:{}});f.documentValidated=u.documentValid,f.checks=u.checks,u.pcr0!==void 0&&(f.attestedPcr0=u.pcr0),f.pcrs=u.pcrs,u.moduleId!==void 0&&(f.moduleId=u.moduleId),u.timestamp!==void 0&&(f.timestamp=u.timestamp),u.certChainLength!==void 0&&(f.certChainLength=u.certChainLength),u.userDataB64!==void 0&&(f.userDataB64=u.userDataB64),u.documentValid?(i.documentsValidated++,u.pcr0Matches!==void 0&&(f.pcr0MatchesDeclared=u.pcr0Matches,u.pcr0Matches?i.pcr0Matches++:(i.pcr0Mismatches++,o.push({code:"attestation-measurement-mismatch",...Go(s),message:"the validated attestation document's PCR0 does not equal the proof's declared environment.measurement. Declared and attested measurements are reported separately and disagree here.",details:{proofHash:s.proofHash,declared:a,...u.pcr0!==void 0?{attested:u.pcr0}:{}}}))),u.userDataMatches!==void 0&&(f.userDataBoundToProof=u.userDataMatches,u.userDataMatches?i.userDataBound++:(i.userDataUnbound++,o.push({code:"attestation-user-data-mismatch",...Go(s),message:"the validated attestation document's user_data is not bound to this proof's canonical hash. A genuine attestation lifted from another proof would look exactly like this.",details:{proofHash:s.proofHash,...u.userDataB64!==void 0?{userDataB64:u.userDataB64}:{}}})))):(i.documentsFailed++,u.failure!==void 0&&(f.validationFailure=u.failure),o.push({code:"attestation-invalid",...Go(s),message:`attestation document failed offline validation: ${u.failure??"unknown"}. Presence of a document is reported separately and proves nothing by itself.`,details:{proofHash:s.proofHash}}))}r.push(f)}return e!==void 0&&ah(e,r),{records:r,findings:o,counts:i}}function ah(t,e){let n=new Map(e.map(r=>[r.proofHash,r]));for(let r of t.groups){if(!r.attestationPresent)continue;let o=r.proofHashes.map(f=>n.get(f)).filter(f=>f!==void 0&&f.documentPresent);if(o.length===0)continue;let i=o.filter(f=>f.documentValidated),s=o.length-i.length,a=[...new Set(i.map(f=>f.attestedPcr0).filter(f=>f!==void 0))].sort(),c=a.length===1?a[0]:void 0;r.attested={status:s===0&&i.length>0?"validated":"validation-failed",...c!==void 0?{attestedMeasurement:c}:{},...c!==void 0&&r.measurement!==void 0?{matchesDeclared:c===r.measurement}:{},validatedProofCount:i.length,failedProofCount:s,...a.length>1?{attestedMeasurements:a}:{}}}}function ch(t){let e=t.proof.environment;if(e===null||typeof e!="object"||Array.isArray(e))return;let n=e.attestation;if(n===null||typeof n!="object"||Array.isArray(n))return;let r=n.reportB64;if(typeof r!="string"||r.length===0)return;let o=n.format;return{reportB64:r,...typeof o=="string"?{format:o}:{}}}function Go(t){let e=t.sources[0]?.path;return e!==void 0?{path:e}:{}}function fh(t){let e=t.replace(/-/g,"+").replace(/_/g,"/");for(;e.length%4!==0;)e+="=";let n=B.Buffer.from(e,"base64");return n.toString("base64")!==e?null:new Uint8Array(n)}function Jo(t){return t<24?new Uint8Array([t]):t<256?new Uint8Array([24,t]):t<65536?new Uint8Array([25,t>>8,t&255]):new Uint8Array([26,t>>>24&255,t>>>16&255,t>>>8&255,t&255])}function Wo(t){let e=Jo(t.length);e[0]=e[0]&31|64;let n=new Uint8Array(e.length+t.length);return n.set(e,0),n.set(t,e.length),n}function uh(t){let e=new TextEncoder().encode(t),n=Jo(e.length);n[0]=n[0]&31|96;let r=new Uint8Array(n.length+e.length);return r.set(n,0),r.set(e,n.length),r}function dh(t){let e=Jo(t.length);e[0]=e[0]&31|128;let n=e.length+t.reduce((i,s)=>i+s.length,0),r=new Uint8Array(n),o=0;r.set(e,o),o+=e.length;for(let i of t)r.set(i,o),o+=i.length;return r}function hh(t,e){return dh([uh("Signature1"),Wo(t),Wo(new Uint8Array(0)),Wo(e)])}function Xe(t,e=0){let n=t[e];if(n===void 0)throw new Error("CBOR: unexpected end of input");let r=n>>5,o=n&31;e++;let i=a=>{let c=t[a];if(c===void 0)throw new Error("CBOR: unexpected end of input");return c};function s(){if(o<24)return o;if(o===24){let a=i(e);return e+=1,a}if(o===25){let a=i(e)<<8|i(e+1);return e+=2,a}if(o===26){let a=(i(e)<<24|i(e+1)<<16|i(e+2)<<8|i(e+3))>>>0;return e+=4,a}if(o===27){let a=0;for(let c=0;c<8;c++)a=a*256+i(e+c);return e+=8,a}throw new Error(`Unsupported CBOR length info: ${o}`)}switch(r){case 0:return{value:s(),offset:e};case 1:return{value:-1-s(),offset:e};case 2:{let a=s();if(e+a>t.length)throw new Error("CBOR: byte string is truncated");return{value:t.slice(e,e+a),offset:e+a}}case 3:{let a=s();if(e+a>t.length)throw new Error("CBOR: text string is truncated");return{value:new TextDecoder().decode(t.slice(e,e+a)),offset:e+a}}case 4:{if(o===31){let f=[];for(;i(e)!==255;){let u=Xe(t,e);f.push(u.value),e=u.offset}return{value:f,offset:e+1}}let a=s(),c=[];for(let f=0;f<a;f++){let u=Xe(t,e);c.push(u.value),e=u.offset}return{value:c,offset:e}}case 5:{if(o===31){let f={};for(;i(e)!==255;){let u=Xe(t,e);e=u.offset;let d=Xe(t,e);e=d.offset,f[String(u.value)]=d.value}return{value:f,offset:e+1}}let a=s(),c={};for(let f=0;f<a;f++){let u=Xe(t,e);e=u.offset;let d=Xe(t,e);e=d.offset,c[String(u.value)]=d.value}return{value:c,offset:e}}case 6:return s(),Xe(t,e);case 7:{if(o===20)return{value:!1,offset:e};if(o===21)return{value:!0,offset:e};if(o===22)return{value:null,offset:e};if(o===23)return{value:void 0,offset:e};throw new Error(`Unsupported CBOR simple value: ${o}`)}default:throw new Error(`Unsupported CBOR major type: ${r}`)}}function Zo(t){let n=ln(t,0).contentStart,r=se(t,n),o=t.slice(n,r.end);n=r.end,n=se(t,n).end;let s=se(t,n),a=t.slice(s.contentStart+1,s.end),c=ph(a,48),{publicKey:f,notBeforeMs:u,notAfterMs:d}=lh(o);return{tbsCertificate:o,signature:c,publicKey:f,notBeforeMs:u,notAfterMs:d}}function se(t,e){let n=t[e];if(n===void 0)throw new Error("DER: unexpected end of input");let r=e+1,o=t[r++];if(o===void 0)throw new Error("DER: unexpected end of input");if(o&128){let s=o&127;o=0;for(let a=0;a<s;a++){let c=t[r++];if(c===void 0)throw new Error("DER: unexpected end of input");o=o*256+c}}let i=r+o;if(i>t.length)throw new Error("DER: element is truncated");return{tag:n,contentStart:r,contentEnd:i,end:i}}function ln(t,e){let n=se(t,e);if(n.tag!==48)throw new Error(`Expected SEQUENCE at offset ${e}, got tag 0x${n.tag.toString(16)}`);return n}function lh(t){let n=ln(t,0).contentStart;t[n]===160&&(n=se(t,n).end),n=se(t,n).end,n=se(t,n).end,n=se(t,n).end;let r=ln(t,n),o=r.contentStart,i=se(t,o);o=i.end;let s=se(t,o),a=oc(t,i),c=oc(t,s);n=r.end,n=se(t,n).end;let u=ln(t,n).contentStart;u=se(t,u).end;let h=se(t,u);return{publicKey:t.slice(h.contentStart+1,h.end),notBeforeMs:a,notAfterMs:c}}function oc(t,e){let n=String.fromCharCode(...t.slice(e.contentStart,e.contentEnd)),r,o;if(e.tag===23){if(!/^\d{12}Z$/.test(n))throw new Error(`DER: malformed UTCTime "${n}"`);let u=Number.parseInt(n.slice(0,2),10);r=u<50?2e3+u:1900+u,o=n.slice(2)}else if(e.tag===24){if(!/^\d{14}Z$/.test(n))throw new Error(`DER: malformed GeneralizedTime "${n}"`);r=Number.parseInt(n.slice(0,4),10),o=n.slice(4)}else throw new Error(`DER: expected a Time value, got tag 0x${e.tag.toString(16)}`);let i=Number.parseInt(o.slice(0,2),10),s=Number.parseInt(o.slice(2,4),10),a=Number.parseInt(o.slice(4,6),10),c=Number.parseInt(o.slice(6,8),10),f=Number.parseInt(o.slice(8,10),10);return Date.UTC(r,i-1,s,a,c,f)}function ph(t,e){let r=ln(t,0).contentStart,o=se(t,r);if(o.tag!==2)throw new Error("Expected INTEGER for r");let i=t.slice(o.contentStart,o.end);r=o.end;let s=se(t,r);if(s.tag!==2)throw new Error("Expected INTEGER for s");let a=t.slice(s.contentStart,s.end);if(i[0]===0&&i.length>e&&(i=i.slice(1)),a[0]===0&&a.length>e&&(a=a.slice(1)),i.length>e||a.length>e)throw new Error("ECDSA signature component longer than the curve coordinate size");let c=new Uint8Array(e*2);return c.set(i,e-i.length),c.set(a,e*2-a.length),c}async function Yo(t,e,n){if(n.length!==97||n[0]!==4||t.length!==96)return!1;try{let r=await fo.subtle.importKey("raw",n,{name:"ECDSA",namedCurve:"P-384"},!1,["verify"]);return await fo.subtle.verify({name:"ECDSA",hash:"SHA-384"},r,t,e)}catch{return!1}}function mh(t){let e={},n=t.pcrs;if(!n||typeof n!="object")return e;for(let[r,o]of Object.entries(n))if(o instanceof Uint8Array){let i=B.Buffer.from(o).toString("hex");i.replace(/0/g,"").length>0&&(e[Number(r)]=i)}return e}y();var cr="0.4.1";function sc(){return cr}async function Qo(t,e){let n=e?.startedAt??new Date().toISOString(),r=await Po(t,e?.trustAnchors!==void 0?{trustAnchors:e.trustAnchors}:void 0),o=await Do(t),i=await No(t,o),s=Oo(t),a=Uo(t),c=await zo(t,a),f=qo(t,o,a,c),u=await Xo(t,s,e?.trustedRootCaDer!==void 0?{trustedRootCaDer:e.trustedRootCaDer}:void 0);return{runMetadata:{toolVersion:sc(),startedAt:n,bundlePath:t.bundlePath,container:t.container},ingest:t,verification:r,reconstruction:o,anomalies:i,authorities:s,anchors:a,witnesses:c,temporal:f,attestations:u}}y();y();y();y();y();function fr(t){let e=!1;for(let n of t){if(n==="FALSE")return"FALSE";n==="UNDETERMINED"&&(e=!0)}return e?"UNDETERMINED":"TRUE"}y();y();var ei="0.10.0";var xh=[{pcr0:"8530a6399399c4f23d89f5a1faa2e8bf2e09a5959f117070fca08148377f92c902c695fc926c17f67f35f110327dca92",label:"genesis",period:"2026-05-15 to 2026-06-27"},{pcr0:"bb9dd158703603ec222fe565495ceaa7edc08f665da5c1cddad91442ac2211731390267036d79deb720d13fb704f648a",label:"enclave v2 (reproducible)",period:"2026-06-27 to 2026-07-05"},{pcr0:"e2fccbae77ee40aac4830e84f195e05d69eb4547bbd961f4d3459feba10807140424aca42ad03810354982598c86b9cb",label:"enclave v4 (reproducible)",period:"2026-07-05 to 2026-07-29"},{pcr0:"6483cedffed74680ffb287507744a398b288c3fb943eb3f2e4fe889f8b60b3d575ad8942350360b69a1bd7bf713df27f",label:"enclave v5 (reproducible)",period:"2026-07-29 to 2026-09-05"},{pcr0:"cd8ba52d340fb1be78610b59953ded2ceca23be1cfcc7ab504a26b8fdcd7ba92090f49e28a32d008df046ec4212f77bf",label:"enclave v6 (reproducible)",period:"2026-09-05 onward"}],Eh=new Set(["unexplained-counter-positions","chain-break-missing","epochlink-terminal-missing","epochlink-dangling"]);async function dc(t,e){let n=e,r=await Qo(t,{startedAt:""});if(n?.fuseEvidence===void 0){let o=await Bh(t);n={...n,fuseEvidence:o.evidence,fuseOriginHexes:o.originHexes}}return vh(r,n)}async function Bh(t){let e=new Map,n=new Set,r=[],o=new Set;for(let s of t.proofs){let a=kt(s.proof);if(a===null)continue;let c=qt(s.proof.artifact.digestB64),f=c!==null?we(c):null,u=a.originDigest!==void 0?we(a.originDigest):null;r.push({proof:s,artifactHex:f,originHex:u}),f!==null&&o.add(f),u!==null&&o.add(u)}if(r.length===0)return{evidence:e,originHexes:n};let i=new Map;for await(let s of Ro(t,o))i.has(s.sha256Hex)||i.set(s.sha256Hex,s.bytes);Ve();try{for(let s of r){let a=s.artifactHex!==null?i.get(s.artifactHex):void 0,c=s.originHex!==null?i.get(s.originHex):void 0;c!==void 0&&s.originHex!==null&&n.add(s.originHex);let f=a??c;f!==void 0&&e.set(s.proof.proofHash,await Io({proof:s.proof.proof,bytes:f}))}}finally{Ve()}return{evidence:e,originHexes:n}}function vh(t,e){let n=e?.webCryptoAvailable??!0,r=new Map(t.anchors.anchors.map(p=>[p.proofHash,p])),o=new Map(t.attestations.records.map(p=>[p.proofHash,p])),i=new Map;for(let p of t.temporal.segments)for(let w of p.memberProofHashes)i.set(w,p);let s=new Map;for(let p of t.witnesses.outcomes){if(p.anchorProofHash===void 0)continue;let w=s.get(p.anchorProofHash)??[];w.push(p),s.set(p.anchorProofHash,w)}let a=new Map;for(let p of t.ingest.artifacts)for(let w of p.matchedProofHashes)!a.has(w)&&p.paths[0]!==void 0&&a.set(w,p.paths[0]);let c=[],f=[];for(let p of t.ingest.proofs){let w=r.get(p.proofHash);w!==void 0?f.push(Ph(p,w,s.get(p.proofHash)??[])):c.push(Ah(p,o.get(p.proofHash),i.get(p.proofHash),a.get(p.proofHash),n,e?.fuseEvidence,r))}ac(c),ac(f);let u=Mh(t),d=Dh(t,c,f,e?.fuseOriginHexes),h=Nh(f.length>0),l=[...c.map(p=>p.result),...f.map(p=>p.result),...u.map(p=>p.result)],m=l.length===0?"UNDETERMINED":fr(l);return{check:"bitgraph-check/1",result:m,summary:Lh(m,c,f,u),recordings:c,anchors:f,contradictions:u,notes:d,notChecked:h,evaluator:{name:"bitgraph-player",version:ei,audit:cr},network:"none"}}function ac(t){let e=n=>[n.epochId??"",n.counter!==void 0&&/^[0-9]+$/.test(n.counter)?BigInt(n.counter):void 0];t.sort((n,r)=>{let[o,i]=e(n),[s,a]=e(r);return o!==s?o<s?-1:1:i===void 0||a===void 0?i===void 0?a===void 0?0:1:-1:i<a?-1:i>a?1:0})}function Ah(t,e,n,r,o,i,s){let a=[],c=t.verification,f=t.proof.artifact.digestB64;c?.tier==="full"?a.push({name:"file",result:c.status==="verified"||c.status==="failed"?"TRUE":"UNDETERMINED",detail:c.status==="verified"||c.status==="failed"?`${r??"the matched file"} hashes to the recorded digest ${f}`:`no file in this bundle hashes to the recorded digest ${f}`}):a.push({name:"file",result:"UNDETERMINED",detail:`no file in this bundle hashes to the recorded digest ${f}; the recording cannot be bound to bytes in hand`}),c===void 0?a.push({name:"signature",result:"UNDETERMINED",detail:"the proof was not verified"}):c.status==="failed"?a.push({name:"signature",result:"FALSE",detail:`the proof does not verify: ${c.reason??"unspecified failure"}`}):a.push({name:"signature",result:"TRUE",detail:`Ed25519 signature and slot binding verify under signer key ${ri(t.publicKeyB64)}`});let u=Th(e,o);a.push(u.line),a.push(Hh(u.attestedPcr0,u.line.result));let d=kt(t.proof),h;if(d!==null){let m=Ih(n,s,t.slotCounter,t.chainId),p=Sh(d.placement,d.originDigest!==void 0?t.proof.attribution?.message??null:null,i?.get(t.proofHash),m,t);a.push(p.line),h=p.fused}let l=fr(a.map(m=>m.result));return{proofHash:t.proofHash,digestB64:f,...t.epochId!==void 0?{epochId:t.epochId}:{},chainId:t.chainId,...t.counter!==void 0?{counter:t.counter}:{},...t.slotCounter!==void 0?{slotCounter:t.slotCounter}:{},...t.publicKeyB64!==void 0?{publicKeyB64:t.publicKeyB64}:{},...r!==void 0&&c?.tier==="full"?{filePath:r}:{},lines:a,result:l,bounds:Ch(n),...h!==void 0?{fused:h}:{}}}var ni="bitgraph:main";function Ih(t,e,n,r=ni){if(r!==ni||t===void 0||e===void 0||n===void 0||!/^[0-9]+$/.test(n))return null;let o=BigInt(n),i;for(let s of t.lowerBounds){if(s.kind!=="not-before")continue;let a=e.get(s.anchorProofHash);if(a===void 0||a.counter===void 0||!/^[0-9]+$/.test(a.counter)||BigInt(a.counter)>=o)continue;if(i===void 0){i=s;continue}let c=s.blockNumber!==void 0?BigInt(s.blockNumber):BigInt(s.timestamp),f=i.blockNumber!==void 0?BigInt(i.blockNumber):BigInt(i.timestamp);c>f&&(i=s)}return i===void 0?null:{...i.blockNumber!==void 0?{blockNumber:i.blockNumber}:{},blockHash:i.blockHash,timestamp:i.timestamp,anchorProofHash:i.anchorProofHash,evidence:"counter-order"}}var kh="floor undetermined: no anchor precedes this slot in its epoch";function cc(t){return`anchored block ${t.blockNumber!==void 0?`#${t.blockNumber}`:t.blockHash} (${new Date(t.timestamp*1e3).toISOString()})`}function Sh(t,e,n,r,o){let i=o.slotCounter??"?",s=t!==null?` (placement ${t})`:" (placement undeclared)",a=r!==null?`assembled after ${cc(r)}, the last verified anchor preceding slot ${i} in this epoch`:o.chainId!==ni?`floor undetermined: the slot is on chain "${o.chainId}", not the anchored chain`:kh,c=n?.span!==void 0&&n.span!==null?{slotCounter:n.span.slotCounter,commitCounter:n.span.commitCounter,positions:n.span.positions}:o.slotCounter!==void 0&&o.counter!==void 0?{slotCounter:o.slotCounter,commitCounter:o.counter,positions:(BigInt(o.counter)-BigInt(o.slotCounter)).toString()}:null,f=(n?.statements??[]).map(h=>r!==null?h.replace(`at position ${i},`,`at position ${i}, which followed ${cc(r)},`):h),u=(h,l)=>({category:h,placement:n?.placement??t,originDigestB64:n?.originDigestB64??e,evidence:l,statements:f,floor:r,floorDetail:a,span:c});if(n===void 0)return{line:{name:"fused",result:"UNDETERMINED",detail:`marked fused${s}, but neither the fused bytes nor ${e!==null?"the original":"an original"} is in this bundle, so the commitment to slot ${i} cannot be checked`},fused:u("NO_EVIDENCE",null)};let d=n.category==="FUSED_FROM_ORIGIN"||n.fileDigestB64!==n.artifactDigestB64&&n.category!=="NO_MATCH"?"original":"fused-bytes";switch(n.category){case"FUSED_DIRECT":return{line:{name:"fused",result:"TRUE",detail:`the fused bytes carry the commitment to slot ${i}${s}`},fused:u(n.category,"fused-bytes")};case"FUSED_FROM_ORIGIN":return{line:{name:"fused",result:"TRUE",detail:`the original rebuilds the committed fused bytes${s}; they carry the commitment to slot ${i}`},fused:u(n.category,"original")};case"INVALID_SLOT_COMMITMENT":return{line:{name:"fused",result:"FALSE",detail:`the fused bytes do not carry the commitment to this proof's slot ${i}: ${n.reason??""}`},fused:u(n.category,d)};case"INVALID_ORIGIN_ATTRIBUTION":return{line:{name:"fused",result:"FALSE",detail:`the declared origin contradicts the origin inside the fused bytes: ${n.reason??""}`},fused:u(n.category,d)};case"RECONSTRUCTION_MISMATCH":return{line:{name:"fused",result:"FALSE",detail:`the file matching the declared origin does not rebuild the committed fused bytes: ${n.reason??""}`},fused:u(n.category,"original")};case"UNDETERMINED_PLACEMENT":return{line:{name:"fused",result:"UNDETERMINED",detail:`${n.reason??"the placement is not registered"}; this verifier cannot check the commitment`},fused:u(n.category,d)};case"INVALID_UNDERLYING_PROOF":return{line:{name:"fused",result:"UNDETERMINED",detail:"not checked: the proof itself does not verify (see the signature line)"},fused:u(n.category,d)};default:return{line:{name:"fused",result:"UNDETERMINED",detail:`the commitment could not be checked: ${n.reason??n.category}`},fused:u(n.category,d)}}}function Th(t,e){return t===void 0||!t.documentPresent?{line:{name:"attestation",result:"UNDETERMINED",detail:"no attestation document in this proof"}}:e?t.documentValidated?t.userDataBoundToProof!==!0?{line:{name:"attestation",result:"FALSE",detail:"attestation document validates but its user_data is not this proof: the document belongs to some other proof"},attestedPcr0:t.attestedPcr0}:t.pcr0MatchesDeclared!==!0?{line:{name:"attestation",result:"FALSE",detail:`attestation validates and binds this proof, but its PCR0 ${pn(t.attestedPcr0)} is not the measurement the signed body declares ${pn(t.declaredMeasurement)}`},attestedPcr0:t.attestedPcr0}:{line:{name:"attestation",result:"TRUE",detail:`AWS Nitro attestation validates to the AWS root, binds this exact proof (user_data), and attests PCR0 ${pn(t.attestedPcr0)}`},attestedPcr0:t.attestedPcr0}:{line:{name:"attestation",result:"FALSE",detail:`attestation document does not validate: ${t.validationFailure??"unspecified failure"}`}}:{line:{name:"attestation",result:"UNDETERMINED",detail:"attestation not checked: this environment cannot verify ECDSA P-384 (no WebCrypto); open the verifier from a file or https page, or run bitgraph-play check"}}}function Hh(t,e){if(e!=="TRUE"||t===void 0)return{name:"enclave",result:"UNDETERMINED",detail:"enclave identity rests on a validated attestation, which this recording does not have here"};let n=xh.find(r=>r.pcr0===t.toLowerCase());return n===void 0?{name:"enclave",result:"UNDETERMINED",detail:`PCR0 ${pn(t)} is not among the BitGraph enclave measurements this verifier knows (player ${ei}); compare it against the measurements published at bitgraph.ing/docs/self-host-tee`}:{name:"enclave",result:"TRUE",detail:`PCR0 ${pn(t)} is the published BitGraph ${n.label} measurement (${n.period})`}}function Ch(t){if(t===void 0)return{status:"unanchored",detail:"no verified Ethereum anchor bounds this recording in this bundle"};let e=fc(t.lowerBounds,"not-before"),n=fc(t.upperBounds,"not-after"),r=e===void 0?void 0:uc(e),o=n===void 0?void 0:uc(n),i=r!==void 0&&o!==void 0?"lower-bounded-with-following-anchor":r!==void 0?"lower-bounded":o!==void 0?"upper-bounded":"unanchored",s=i==="unanchored"?"no verified Ethereum anchor bounds this recording in this bundle":`recorded ${Rh(i,r,o)}`;return{status:i,...r!==void 0?{notBefore:r}:{},...o!==void 0?{notAfter:o}:{},detail:s}}function Rh(t,e,n){switch(t){case"lower-bounded-with-following-anchor":return`after Ethereum block ${ht(e)} (header verified in this bundle); precedes an anchor that consumed block ${ht(n)} (header verified), an anchor-latency assumption rather than an upper bound on this recording`+ti(e.weaker||n.weaker);case"lower-bounded":return`after Ethereum block ${ht(e)} (header verified in this bundle); no verified upper bound here`+ti(e.weaker);case"upper-bounded":return`before Ethereum block ${ht(n)} (header verified in this bundle); no verified lower bound here`+ti(n.weaker);default:return"with no verified Ethereum bound in this bundle"}}function fc(t,e){let n=t.filter(o=>o.kind===e);return n.length===0?void 0:[...n].sort((o,i)=>{let s=o.blockNumber!==void 0?BigInt(o.blockNumber):BigInt(o.timestamp),a=i.blockNumber!==void 0?BigInt(i.blockNumber):BigInt(i.timestamp);return s!==a?e==="not-before"?s>a?-1:1:s<a?-1:1:o.weaker!==i.weaker?o.weaker?1:-1:0})[0]}function uc(t){return{...t.blockNumber!==void 0?{blockNumber:t.blockNumber}:{},blockHash:t.blockHash,timestamp:t.timestamp,anchorProofHash:t.anchorProofHash,evidence:t.evidence,weaker:t.weaker}}function $h(t){switch(t.status){case"lower-bounded-with-following-anchor":return`after Ethereum block ${ht(t.notBefore)}, then an anchor at block ${ht(t.notAfter)}`;case"lower-bounded":return`after Ethereum block ${ht(t.notBefore)}`;case"upper-bounded":return`before Ethereum block ${ht(t.notAfter)}`;default:return"with no Ethereum bound in this bundle"}}function ht(t){return t.blockNumber!==void 0?t.blockNumber:t.blockHash}function ti(t){return t?"; ordered by counter position within the epoch, since the recordings between are not in this bundle":""}function Ph(t,e,n){let r=[],o=t.verification;o===void 0?r.push({name:"signature",result:"UNDETERMINED",detail:"the anchor proof was not verified"}):o.status==="failed"?r.push({name:"signature",result:"FALSE",detail:`the anchor proof does not verify: ${o.reason??"unspecified failure"}`}):r.push({name:"signature",result:"TRUE",detail:`anchor proof verifies under signer key ${ri(t.publicKeyB64)}`});let i;if(n.length>0){let s=n.find(a=>a.verified);if(s!==void 0)i=s.witnessPath,r.push({name:"witness",result:"TRUE",detail:`block header ${s.witnessPath} hashes (keccak-256) to the anchored block hash${e.blockNumber!==void 0?` of block ${e.blockNumber}`:""}`});else{let a=n[0];i=a.witnessPath,r.push({name:"witness",result:"FALSE",detail:`block header ${a.witnessPath} contradicts this anchor: ${a.detail??a.reason??"witness verification failed"}`})}}return{proofHash:t.proofHash,...t.epochId!==void 0?{epochId:t.epochId}:{},chainId:t.chainId,...t.counter!==void 0?{counter:t.counter}:{},...e.blockNumber!==void 0?{blockNumber:e.blockNumber}:{},...e.blockHash!==void 0?{blockHash:e.blockHash}:{},...i!==void 0?{witnessPath:i}:{},lines:r,result:fr(r.map(s=>s.result))}}function Mh(t){let e=[],n=new Set,r=o=>{n.has(o)||(n.add(o),e.push({name:"contradiction",result:"FALSE",detail:o}))};for(let o of t.anomalies.anomalies)Eh.has(o.code)||r(`${o.code}: ${o.message}`);for(let o of t.anomalies.divergences)r(`${o.kind}: ${o.explanation}`);for(let o of t.authorities.anomalies)r(`${o.code}: ${o.message}`);for(let o of t.witnesses.findings)(o.code==="witness-unmatched"||o.code==="witness-malformed"||o.code==="witness-rlp-invalid")&&r(`${o.code}: ${o.message}`);for(let o of t.ingest.findings)o.code==="proofhash-mismatch"&&r(`${o.code}: ${o.message}${o.path!==void 0?` (${o.path})`:""}`);return e}function Dh(t,e,n,r){let o=[],i=0n,s=0;for(let d of t.anomalies.anomalies)if(d.code==="unexplained-counter-positions"){let h=d.details?.count;h!==void 0&&/^[0-9]+$/.test(h)&&(i+=BigInt(h))}else d.code==="chain-break-missing"&&(s+=d.proofHashes.length);i>0n&&o.push(`${i} causal position${i===1n?"":"s"} between the earliest and latest recording here ${i===1n?"is":"are"} not in this bundle: normal for an export, which is an excerpt of the chain; a full-epoch audit checks them`),s>0&&o.push(`${s} recording${s===1?"":"s"} link${s===1?"s":""} to a predecessor that is not in this bundle: normal for an export`);let a=t.ingest.artifacts.filter(d=>d.matchedProofHashes.length===0&&r?.has(d.sha256Hex)===!0);a.length>0&&o.push(`${a.length} file${a.length===1?"":"s"} in this bundle ${a.length===1?"is":"are"} the original of a fused recording: ${a.slice(0,5).map(d=>d.paths[0]??"(unnamed)").join(", ")}${a.length>5?", \u2026":""}. The original itself receives only the ceiling (it existed no later than the commit); the fused bytes receive the interval`);let c=t.ingest.artifacts.filter(d=>d.matchedProofHashes.length===0&&r?.has(d.sha256Hex)!==!0);if(c.length>0&&e.length>0){let d=c.slice(0,5).map(h=>`${h.paths[0]??"(unnamed)"} (sha256:${h.sha256Hex.slice(0,16)}\u2026)`).join(", ");o.push(`${c.length} file${c.length===1?"":"s"} in this bundle match${c.length===1?"es":""} no recording here: ${d}${c.length>5?", \u2026":""}. If ${c.length===1?"it":"one of them"} was meant to be a recorded file, its bytes differ from what was recorded`)}let f=n.filter(d=>d.witnessPath===void 0);f.length>0&&o.push(`${f.length} Ethereum anchor${f.length===1?"":"s"} in this bundle ha${f.length===1?"s":"ve"} no block-header witness file, so ${f.length===1?"its":"their"} block hash${f.length===1?" is":"es are"} not verified here and no bound is derived from ${f.length===1?"it":"them"}`);for(let d of t.ingest.unsupportedVersions)o.push(`${d.path} is proof-shaped but its version "${d.version}" is not bitgraph/1; it was not checked`);let u=t.ingest.counts;if((u.exactDuplicates>0||u.semanticDuplicates>0)&&o.push(`${u.exactDuplicates+u.semanticDuplicates} duplicate proof file${u.exactDuplicates+u.semanticDuplicates===1?"":"s"} collapsed to one recording each`),t.ingest.manifest!==void 0)for(let d of t.ingest.findings)typeof d.code=="string"&&d.code.startsWith("manifest-")&&o.push(`${d.code}: ${d.message}`);return e.length===0&&n.length===0&&o.push("no BitGraph proofs were found in this bundle"),o}function Nh(t){let e=[];return t&&e.push("whether the anchored Ethereum blocks are canonical: their headers are recomputed here, but canonicality needs an Ethereum node or a block explorer"),e.push("whether the public ledger holds these exact recordings at these positions: this is an offline check; drop the file on bitgraph.ing to compare against the ledger"),e.push("whether an epoch key was later quarantined: that is published outside any bundle"),e}function Lh(t,e,n,r){if(e.length===0&&n.length===0)return"UNDETERMINED: no BitGraph proofs were found in this bundle.";let o=e.length,i=`${o} recording${o===1?"":"s"}`;if(t==="TRUE"){let a=e[0];return o===1&&a!==void 0?`TRUE: this file was recorded${a.counter!==void 0?` at position ${a.counter}${a.epochId!==void 0?` of epoch ${ri(a.epochId)}`:""}`:""}, ${$h(a.bounds)}.`:`TRUE: ${i} verified: files match, signatures and attestations hold, enclave measurements published${n.length>0?", Ethereum bounds verified from block headers in the bundle":""}.`}if(t==="FALSE")return`FALSE: evidence in this bundle contradicts itself. ${[...e.flatMap(c=>c.lines.filter(f=>f.result==="FALSE").map(f=>`${f.name}: ${f.detail}`)),...n.flatMap(c=>c.lines.filter(f=>f.result==="FALSE").map(f=>`${f.name}: ${f.detail}`)),...r.map(c=>c.detail)][0]??""}`.trim();let s=[...e.flatMap(a=>a.lines.filter(c=>c.result==="UNDETERMINED").map(c=>c.detail)),...n.flatMap(a=>a.lines.filter(c=>c.result==="UNDETERMINED").map(c=>c.detail))];return`UNDETERMINED: nothing here contradicts the ${i}, but the evidence does not fully decide. ${s[0]??""}`.trim()}function ri(t){return t===void 0?"(none)":t.length>12?`${t.slice(0,12)}\u2026`:t}function pn(t){return t===void 0?"(none)":t.length>16?`${t.slice(0,16)}\u2026`:t}In.sha512Async=async(...t)=>Rn(In.concatBytes(...t));var bc=typeof globalThis.crypto<"u"&&globalThis.crypto.subtle!==void 0;function yc(t){return new Promise((e,n)=>{let r=[],o=()=>{t.readEntries(i=>{if(i.length===0){e(r);return}r.push(...i),o()},n)};o()})}function Oh(t){return new Promise((e,n)=>t.file(e,n))}async function ai(t,e,n){if(t.isFile){let r=await Oh(t);n.push({path:e+t.name,file:r});return}if(t.isDirectory){let r=t.createReader(),o=await yc(r);for(let i of o)i.name!==".DS_Store"&&await ai(i,`${e}${t.name}/`,n)}}async function Fh(t){let n=Array.from(t.items??[]).map(o=>typeof o.webkitGetAsEntry=="function"?o.webkitGetAsEntry():null).filter(o=>o!==null);if(n.length===0)return Array.from(t.files??[]).map(o=>({path:o.name,file:o}));let r=[];if(n.length===1&&n[0]!==void 0&&n[0].isDirectory){let o=n[0];for(let i of await yc(o.createReader()))i.name!==".DS_Store"&&await ai(i,"",r)}else for(let o of n)await ai(o,"",r);return r.length===0?Array.from(t.files??[]).map(o=>({path:o.name,file:o})):r}function hc(t){let e=Array.from(t.files??[]),n=e.map(s=>s.webkitRelativePath||s.name),r=n.map(s=>s.indexOf("/")),o=n.length>0&&r.every(s=>s>0)?n[0].slice(0,r[0]):void 0,i=o!==void 0&&n.every(s=>s.startsWith(`${o}/`));return e.map((s,a)=>({path:i?n[a].slice(o.length+1):n[a],file:s})).filter(s=>!s.path.endsWith("/.DS_Store")&&s.path!==".DS_Store")}function _h(t){return t.map(e=>({path:e.path,open:()=>e.file.arrayBuffer().then(n=>new Uint8Array(n))}))}function $(t,e={},n=[]){let r=document.createElement(t);for(let[o,i]of Object.entries(e))o==="class"?r.className=i:r.setAttribute(o,i);for(let o of n)r.append(typeof o=="string"?document.createTextNode(o):o);return r}function ci(t){return t==="TRUE"?null:$("span",{class:t==="FALSE"?"mark false":"mark undet"},[t])}function gn(t,e,n={}){let r=$("div",{class:"field-head"},[$("span",{class:"field-label"},[t])]),o=n.mark!==void 0?ci(n.mark):null;return o!==null&&r.append(o),$("div",{class:"field"},[r,$("span",{class:n.mono?"field-value mono":"field-value"},[e])])}function lt(t,e,n={}){let r=n.open===!0,o=$("span",{class:"chev","aria-hidden":"true"});o.innerHTML='<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="square" stroke-linejoin="miter"><path d="M9 6 L15 12 L9 18"/></svg>';let i=$("button",{class:`opener-head${n.tone==="danger"?" danger":""}`,type:"button","aria-expanded":String(r)},[$("span",{},[t]),o]),s=$("div",{class:"opener-body"},e),a=$("section",{class:"card"},[i,s]),c=()=>{i.classList.toggle("open",r),i.setAttribute("aria-expanded",String(r)),s.hidden=!r,o.classList.toggle("open",r)};return i.addEventListener("click",()=>{r=!r,c()}),c(),a}function Uh(t){return t==="TRUE"?"BitGraph Verified":t==="FALSE"?"Verification Failed":"Not Fully Verified"}function jh(t){return t===void 0?"":`#${Number(t).toLocaleString("en-US")}`}function Kh(t){return new Date(t*1e3).toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"})}function mn(t,e){return new Date(t*1e3).toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",second:"2-digit",...e?{timeZoneName:"short"}:{}})}function Vh(t){return new Date(t*1e3).toLocaleString("en-US",{month:"numeric",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",second:"2-digit",timeZoneName:"short"})}function lc(t){let e=t.bounds,n=i=>$("span",{class:"when-grey"},[i]),r=i=>$("span",{class:"when-dark"},[i]),o=$("div",{class:"when"});if(e.notBefore!==void 0||e.notAfter!==void 0){let i=e.notBefore??e.notAfter;o.append($("div",{class:"when-date"},[Kh(i.timestamp)]));let s=$("div",{class:"when-line"});e.notBefore!==void 0&&e.notAfter!==void 0?s.append(n("after "),r(mn(e.notBefore.timestamp,!0)),n(", then an anchor at "),r(mn(e.notAfter.timestamp,!1)),n(" (not an upper bound)")):e.notBefore!==void 0?s.append(n("after "),r(mn(e.notBefore.timestamp,!0))):e.notAfter!==void 0&&s.append(n("no lower bound in this bundle; an anchor followed at "),r(mn(e.notAfter.timestamp,!0)),n(" (not an upper bound)")),o.append(s)}else o.append($("div",{class:"when-line"},[n("no verified Ethereum bound in this bundle")]));return o}function oi(t){if(t.fused===void 0)return null;let e=i=>$("span",{class:"when-grey"},[i]),n=i=>$("span",{class:"when-dark"},[i]),r=$("div",{class:"when"}),o=$("div",{class:"when-line"});return t.fused.floor!==null?o.append(e("fused bytes assembled after "),n(mn(t.fused.floor.timestamp,!0)),e(`, the last anchor before slot ${t.fused.span?.slotCounter??"?"}`)):o.append(e(t.fused.floorDetail)),r.append(o),r}var zh=/\.(jpe?g|png|gif|webp|avif|bmp|svg)$/i,qh=/\.(mp4|m4v|mov|webm|ogv)$/i,Gh=/\.(mp3|wav|m4a|aac|flac|ogg|oga)$/i,Wh=/\.(txt|md|markdown|json|csv|tsv|log|xml|yaml|yml|html?|css|js|ts|py|sh|rtf)$/i;function Zh(t){let e=t.subarray(0,Math.min(2048,t.length));if(!e.length)return!1;let n=0;for(let r of e){if(r===0)return!1;(r===9||r===10||r===13||r>=32)&&n++}return n/e.length>.97}function Yh(t,e){let n=t.toLowerCase();return n.endsWith(".pdf")?"pdf":zh.test(n)?"image":qh.test(n)?"video":Gh.test(n)?"audio":Wh.test(n)||Zh(e)?"text":"other"}function Xh(t){return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(t<10*1024?1:0)} KB`:t<1024*1024*1024?`${(t/(1024*1024)).toFixed(1)} MB`:`${(t/(1024*1024*1024)).toFixed(2)} GB`}function Jh(t,e,n){if(n==="image"||n==="video"){let r=URL.createObjectURL(t),o=n==="image"?$("img",{src:r,alt:t.name,style:"display:block;max-width:100%;max-height:min(70vh,640px);width:auto;height:auto;object-fit:contain;border-radius:0"}):$("video",{src:r,controls:"",style:"display:block;max-width:100%;max-height:min(70vh,640px);border-radius:0"});return $("div",{style:"padding:20px;display:flex;align-items:center;justify-content:center"},[o])}if(n==="audio"){let r=URL.createObjectURL(t);return $("div",{style:"padding:20px 16px"},[$("audio",{src:r,controls:"",style:"display:block;width:100%"})])}if(n==="text")try{let r=new TextDecoder("utf-8",{fatal:!1}).decode(e.subarray(0,6e3)),o=r.split(`
152
+ -----END CERTIFICATE-----`;function sh(){return nc.replace(/-----BEGIN CERTIFICATE-----/,"").replace(/-----END CERTIFICATE-----/,"").replace(/\s+/g,"")}function rc(){return new Uint8Array(B.Buffer.from(sh(),"base64"))}async function ic(t,e){let n=[],r={},o,i,s,a,c,f=()=>({documentValid:!1,checks:n,failure:[...n].reverse().find(u=>!u.pass)?.detail,...o!==void 0?{pcr0:o}:{},pcrs:r,...i!==void 0?{moduleId:i}:{},...s!==void 0?{timestamp:s}:{},...a!==void 0?{certChainLength:a}:{},...c!==void 0?{userDataB64:c}:{}});try{let u=fh(t);if(u===null)return n.push({name:"CBOR Decode",pass:!1,detail:"reportB64 is not valid base64"}),f();let d=Xe(u,0).value;if(!Array.isArray(d)||d.length<4)return n.push({name:"CBOR Decode",pass:!1,detail:"Not a valid COSE_Sign1 array"}),f();n.push({name:"CBOR Decode",pass:!0,detail:"COSE_Sign1 envelope parsed"});let h=d[0],l=d[2],m=d[3];if(!(h instanceof Uint8Array)||!(l instanceof Uint8Array)||!(m instanceof Uint8Array))return n.push({name:"COSE Structure",pass:!1,detail:"Missing protected/payload/signature"}),f();let p=Xe(l,0).value;if(!p||typeof p!="object"||Array.isArray(p))return n.push({name:"Payload Decode",pass:!1,detail:"Could not decode attestation payload"}),f();r=mh(p),o=r[0],i=typeof p.module_id=="string"?p.module_id:void 0,s=typeof p.timestamp=="number"?p.timestamp:void 0;let w=p.user_data;c=w instanceof Uint8Array&&w.length>0?B.Buffer.from(w).toString("base64"):void 0;let b=p.cabundle,k=p.certificate;if(!(k instanceof Uint8Array))return n.push({name:"Leaf Certificate",pass:!1,detail:"No leaf certificate in attestation"}),f();a=(Array.isArray(b)?b.length:0)+1;let v=Zo(k),O=hh(h,l),z=await Yo(m,O,v.publicKey);if(n.push({name:"ECDSA P-384 Signature",pass:z,detail:z?"Attestation signed by leaf certificate":"Signature verification failed against leaf certificate public key"}),!z)return f();if(!Array.isArray(b)||b.length===0||!b.every(A=>A instanceof Uint8Array))return n.push({name:"Certificate Chain",pass:!1,detail:"Empty cabundle"}),f();let S=[...b,k].map(Zo),_=!0,F="";for(let A=1;A<S.length;A++){let C=S[A],M=S[A-1];if(!await Yo(C.signature,C.tbsCertificate,M.publicKey)){_=!1,F=`Certificate ${A} signature invalid (parent: ${A-1})`;break}}if(n.push({name:"Certificate Chain",pass:_,detail:_?`${S.length} certificates, each signed by parent`:F}),!_)return f();let G=e?.trustedRootCaDer===void 0,q=Zo(e?.trustedRootCaDer??rc()),ge=S[0],D=await Yo(ge.signature,ge.tbsCertificate,q.publicKey);if(n.push({name:"AWS Nitro Root CA",pass:D,detail:D?G?"Chain anchored to AWS Nitro Root G1 (CN=aws.nitro-enclaves)":"Chain anchored to the supplied trust root (non-default trust material)":G?"Top of chain not signed by AWS Nitro Root CA":"Top of chain not signed by the supplied trust root"}),!D)return f();let ae=!0,re=`All ${S.length} certificate validity windows contain the document timestamp`;if(s===void 0)ae=!1,re="Attestation document carries no timestamp; certificate validity cannot be evaluated offline";else for(let A=0;A<S.length;A++){let C=S[A];if(s<C.notBeforeMs||s>C.notAfterMs){ae=!1,re=`Certificate ${A} validity window [${new Date(C.notBeforeMs).toISOString()}, ${new Date(C.notAfterMs).toISOString()}] does not contain the document timestamp ${new Date(s).toISOString()}`;break}}if(n.push({name:"Certificate Validity Window",pass:ae,detail:re}),!ae)return f();let L;e?.expectedPcr0!==void 0&&(L=o===e.expectedPcr0,n.push({name:"PCR0 Match",pass:L,detail:L?"PCR0 inside attestation matches declared measurement":`PCR0 mismatch: expected ${e.expectedPcr0.slice(0,16)}..., got ${(o??"").slice(0,16)}...`}));let E;return e?.expectedUserDataB64!==void 0&&(E=c!==void 0&&c===e.expectedUserDataB64,n.push({name:"Bound to this proof",pass:E,detail:E?"Attestation user_data matches this proof's canonical hash":c!==void 0?"Attestation user_data does not match this proof":"Attestation carries no user_data to bind"})),{documentValid:!0,checks:n,...o!==void 0?{pcr0:o}:{},pcrs:r,...i!==void 0?{moduleId:i}:{},...s!==void 0?{timestamp:s}:{},certChainLength:a,...c!==void 0?{userDataB64:c}:{},...L!==void 0?{pcr0Matches:L}:{},...E!==void 0?{userDataMatches:E}:{}}}catch(u){return n.push({name:"Verification Error",pass:!1,detail:u instanceof Error?u.message:String(u)}),f()}}async function Xo(t,e,n){let r=[],o=[],i={proofsWithDeclaredMeasurement:0,proofsWithDocument:0,documentsValidated:0,documentsFailed:0,pcr0Matches:0,pcr0Mismatches:0,userDataBound:0,userDataUnbound:0};for(let s of t.proofs){let a=s.measurement!==void 0&&s.measurement.length>0?s.measurement:void 0;a!==void 0&&i.proofsWithDeclaredMeasurement++;let c=ch(s),f={proofHash:s.proofHash,declaredMeasurementPresent:a!==void 0,...a!==void 0?{declaredMeasurement:a}:{},documentPresent:c!==void 0,...c?.format!==void 0?{attestationFormat:c.format}:{},documentValidated:!1,checks:[]};if(c!==void 0){i.proofsWithDocument++;let u=await ic(c.reportB64,{...a!==void 0?{expectedPcr0:a}:{},expectedUserDataB64:bo(s.proof),...n?.trustedRootCaDer!==void 0?{trustedRootCaDer:n.trustedRootCaDer}:{}});f.documentValidated=u.documentValid,f.checks=u.checks,u.pcr0!==void 0&&(f.attestedPcr0=u.pcr0),f.pcrs=u.pcrs,u.moduleId!==void 0&&(f.moduleId=u.moduleId),u.timestamp!==void 0&&(f.timestamp=u.timestamp),u.certChainLength!==void 0&&(f.certChainLength=u.certChainLength),u.userDataB64!==void 0&&(f.userDataB64=u.userDataB64),u.documentValid?(i.documentsValidated++,u.pcr0Matches!==void 0&&(f.pcr0MatchesDeclared=u.pcr0Matches,u.pcr0Matches?i.pcr0Matches++:(i.pcr0Mismatches++,o.push({code:"attestation-measurement-mismatch",...Go(s),message:"the validated attestation document's PCR0 does not equal the proof's declared environment.measurement. Declared and attested measurements are reported separately and disagree here.",details:{proofHash:s.proofHash,declared:a,...u.pcr0!==void 0?{attested:u.pcr0}:{}}}))),u.userDataMatches!==void 0&&(f.userDataBoundToProof=u.userDataMatches,u.userDataMatches?i.userDataBound++:(i.userDataUnbound++,o.push({code:"attestation-user-data-mismatch",...Go(s),message:"the validated attestation document's user_data is not bound to this proof's canonical hash. A genuine attestation lifted from another proof would look exactly like this.",details:{proofHash:s.proofHash,...u.userDataB64!==void 0?{userDataB64:u.userDataB64}:{}}})))):(i.documentsFailed++,u.failure!==void 0&&(f.validationFailure=u.failure),o.push({code:"attestation-invalid",...Go(s),message:`attestation document failed offline validation: ${u.failure??"unknown"}. Presence of a document is reported separately and proves nothing by itself.`,details:{proofHash:s.proofHash}}))}r.push(f)}return e!==void 0&&ah(e,r),{records:r,findings:o,counts:i}}function ah(t,e){let n=new Map(e.map(r=>[r.proofHash,r]));for(let r of t.groups){if(!r.attestationPresent)continue;let o=r.proofHashes.map(f=>n.get(f)).filter(f=>f!==void 0&&f.documentPresent);if(o.length===0)continue;let i=o.filter(f=>f.documentValidated),s=o.length-i.length,a=[...new Set(i.map(f=>f.attestedPcr0).filter(f=>f!==void 0))].sort(),c=a.length===1?a[0]:void 0;r.attested={status:s===0&&i.length>0?"validated":"validation-failed",...c!==void 0?{attestedMeasurement:c}:{},...c!==void 0&&r.measurement!==void 0?{matchesDeclared:c===r.measurement}:{},validatedProofCount:i.length,failedProofCount:s,...a.length>1?{attestedMeasurements:a}:{}}}}function ch(t){let e=t.proof.environment;if(e===null||typeof e!="object"||Array.isArray(e))return;let n=e.attestation;if(n===null||typeof n!="object"||Array.isArray(n))return;let r=n.reportB64;if(typeof r!="string"||r.length===0)return;let o=n.format;return{reportB64:r,...typeof o=="string"?{format:o}:{}}}function Go(t){let e=t.sources[0]?.path;return e!==void 0?{path:e}:{}}function fh(t){let e=t.replace(/-/g,"+").replace(/_/g,"/");for(;e.length%4!==0;)e+="=";let n=B.Buffer.from(e,"base64");return n.toString("base64")!==e?null:new Uint8Array(n)}function Jo(t){return t<24?new Uint8Array([t]):t<256?new Uint8Array([24,t]):t<65536?new Uint8Array([25,t>>8,t&255]):new Uint8Array([26,t>>>24&255,t>>>16&255,t>>>8&255,t&255])}function Wo(t){let e=Jo(t.length);e[0]=e[0]&31|64;let n=new Uint8Array(e.length+t.length);return n.set(e,0),n.set(t,e.length),n}function uh(t){let e=new TextEncoder().encode(t),n=Jo(e.length);n[0]=n[0]&31|96;let r=new Uint8Array(n.length+e.length);return r.set(n,0),r.set(e,n.length),r}function dh(t){let e=Jo(t.length);e[0]=e[0]&31|128;let n=e.length+t.reduce((i,s)=>i+s.length,0),r=new Uint8Array(n),o=0;r.set(e,o),o+=e.length;for(let i of t)r.set(i,o),o+=i.length;return r}function hh(t,e){return dh([uh("Signature1"),Wo(t),Wo(new Uint8Array(0)),Wo(e)])}function Xe(t,e=0){let n=t[e];if(n===void 0)throw new Error("CBOR: unexpected end of input");let r=n>>5,o=n&31;e++;let i=a=>{let c=t[a];if(c===void 0)throw new Error("CBOR: unexpected end of input");return c};function s(){if(o<24)return o;if(o===24){let a=i(e);return e+=1,a}if(o===25){let a=i(e)<<8|i(e+1);return e+=2,a}if(o===26){let a=(i(e)<<24|i(e+1)<<16|i(e+2)<<8|i(e+3))>>>0;return e+=4,a}if(o===27){let a=0;for(let c=0;c<8;c++)a=a*256+i(e+c);return e+=8,a}throw new Error(`Unsupported CBOR length info: ${o}`)}switch(r){case 0:return{value:s(),offset:e};case 1:return{value:-1-s(),offset:e};case 2:{let a=s();if(e+a>t.length)throw new Error("CBOR: byte string is truncated");return{value:t.slice(e,e+a),offset:e+a}}case 3:{let a=s();if(e+a>t.length)throw new Error("CBOR: text string is truncated");return{value:new TextDecoder().decode(t.slice(e,e+a)),offset:e+a}}case 4:{if(o===31){let f=[];for(;i(e)!==255;){let u=Xe(t,e);f.push(u.value),e=u.offset}return{value:f,offset:e+1}}let a=s(),c=[];for(let f=0;f<a;f++){let u=Xe(t,e);c.push(u.value),e=u.offset}return{value:c,offset:e}}case 5:{if(o===31){let f={};for(;i(e)!==255;){let u=Xe(t,e);e=u.offset;let d=Xe(t,e);e=d.offset,f[String(u.value)]=d.value}return{value:f,offset:e+1}}let a=s(),c={};for(let f=0;f<a;f++){let u=Xe(t,e);e=u.offset;let d=Xe(t,e);e=d.offset,c[String(u.value)]=d.value}return{value:c,offset:e}}case 6:return s(),Xe(t,e);case 7:{if(o===20)return{value:!1,offset:e};if(o===21)return{value:!0,offset:e};if(o===22)return{value:null,offset:e};if(o===23)return{value:void 0,offset:e};throw new Error(`Unsupported CBOR simple value: ${o}`)}default:throw new Error(`Unsupported CBOR major type: ${r}`)}}function Zo(t){let n=ln(t,0).contentStart,r=se(t,n),o=t.slice(n,r.end);n=r.end,n=se(t,n).end;let s=se(t,n),a=t.slice(s.contentStart+1,s.end),c=ph(a,48),{publicKey:f,notBeforeMs:u,notAfterMs:d}=lh(o);return{tbsCertificate:o,signature:c,publicKey:f,notBeforeMs:u,notAfterMs:d}}function se(t,e){let n=t[e];if(n===void 0)throw new Error("DER: unexpected end of input");let r=e+1,o=t[r++];if(o===void 0)throw new Error("DER: unexpected end of input");if(o&128){let s=o&127;o=0;for(let a=0;a<s;a++){let c=t[r++];if(c===void 0)throw new Error("DER: unexpected end of input");o=o*256+c}}let i=r+o;if(i>t.length)throw new Error("DER: element is truncated");return{tag:n,contentStart:r,contentEnd:i,end:i}}function ln(t,e){let n=se(t,e);if(n.tag!==48)throw new Error(`Expected SEQUENCE at offset ${e}, got tag 0x${n.tag.toString(16)}`);return n}function lh(t){let n=ln(t,0).contentStart;t[n]===160&&(n=se(t,n).end),n=se(t,n).end,n=se(t,n).end,n=se(t,n).end;let r=ln(t,n),o=r.contentStart,i=se(t,o);o=i.end;let s=se(t,o),a=oc(t,i),c=oc(t,s);n=r.end,n=se(t,n).end;let u=ln(t,n).contentStart;u=se(t,u).end;let h=se(t,u);return{publicKey:t.slice(h.contentStart+1,h.end),notBeforeMs:a,notAfterMs:c}}function oc(t,e){let n=String.fromCharCode(...t.slice(e.contentStart,e.contentEnd)),r,o;if(e.tag===23){if(!/^\d{12}Z$/.test(n))throw new Error(`DER: malformed UTCTime "${n}"`);let u=Number.parseInt(n.slice(0,2),10);r=u<50?2e3+u:1900+u,o=n.slice(2)}else if(e.tag===24){if(!/^\d{14}Z$/.test(n))throw new Error(`DER: malformed GeneralizedTime "${n}"`);r=Number.parseInt(n.slice(0,4),10),o=n.slice(4)}else throw new Error(`DER: expected a Time value, got tag 0x${e.tag.toString(16)}`);let i=Number.parseInt(o.slice(0,2),10),s=Number.parseInt(o.slice(2,4),10),a=Number.parseInt(o.slice(4,6),10),c=Number.parseInt(o.slice(6,8),10),f=Number.parseInt(o.slice(8,10),10);return Date.UTC(r,i-1,s,a,c,f)}function ph(t,e){let r=ln(t,0).contentStart,o=se(t,r);if(o.tag!==2)throw new Error("Expected INTEGER for r");let i=t.slice(o.contentStart,o.end);r=o.end;let s=se(t,r);if(s.tag!==2)throw new Error("Expected INTEGER for s");let a=t.slice(s.contentStart,s.end);if(i[0]===0&&i.length>e&&(i=i.slice(1)),a[0]===0&&a.length>e&&(a=a.slice(1)),i.length>e||a.length>e)throw new Error("ECDSA signature component longer than the curve coordinate size");let c=new Uint8Array(e*2);return c.set(i,e-i.length),c.set(a,e*2-a.length),c}async function Yo(t,e,n){if(n.length!==97||n[0]!==4||t.length!==96)return!1;try{let r=await fo.subtle.importKey("raw",n,{name:"ECDSA",namedCurve:"P-384"},!1,["verify"]);return await fo.subtle.verify({name:"ECDSA",hash:"SHA-384"},r,t,e)}catch{return!1}}function mh(t){let e={},n=t.pcrs;if(!n||typeof n!="object")return e;for(let[r,o]of Object.entries(n))if(o instanceof Uint8Array){let i=B.Buffer.from(o).toString("hex");i.replace(/0/g,"").length>0&&(e[Number(r)]=i)}return e}y();var cr="0.4.1";function sc(){return cr}async function Qo(t,e){let n=e?.startedAt??new Date().toISOString(),r=await Po(t,e?.trustAnchors!==void 0?{trustAnchors:e.trustAnchors}:void 0),o=await Do(t),i=await No(t,o),s=Oo(t),a=Uo(t),c=await zo(t,a),f=qo(t,o,a,c),u=await Xo(t,s,e?.trustedRootCaDer!==void 0?{trustedRootCaDer:e.trustedRootCaDer}:void 0);return{runMetadata:{toolVersion:sc(),startedAt:n,bundlePath:t.bundlePath,container:t.container},ingest:t,verification:r,reconstruction:o,anomalies:i,authorities:s,anchors:a,witnesses:c,temporal:f,attestations:u}}y();y();y();y();y();function fr(t){let e=!1;for(let n of t){if(n==="FALSE")return"FALSE";n==="UNDETERMINED"&&(e=!0)}return e?"UNDETERMINED":"TRUE"}y();y();var ei="0.13.0";var xh=[{pcr0:"8530a6399399c4f23d89f5a1faa2e8bf2e09a5959f117070fca08148377f92c902c695fc926c17f67f35f110327dca92",label:"genesis",period:"2026-05-15 to 2026-06-27"},{pcr0:"bb9dd158703603ec222fe565495ceaa7edc08f665da5c1cddad91442ac2211731390267036d79deb720d13fb704f648a",label:"enclave v2 (reproducible)",period:"2026-06-27 to 2026-07-05"},{pcr0:"e2fccbae77ee40aac4830e84f195e05d69eb4547bbd961f4d3459feba10807140424aca42ad03810354982598c86b9cb",label:"enclave v4 (reproducible)",period:"2026-07-05 to 2026-07-29"},{pcr0:"6483cedffed74680ffb287507744a398b288c3fb943eb3f2e4fe889f8b60b3d575ad8942350360b69a1bd7bf713df27f",label:"enclave v5 (reproducible)",period:"2026-07-29 to 2026-09-05"},{pcr0:"cd8ba52d340fb1be78610b59953ded2ceca23be1cfcc7ab504a26b8fdcd7ba92090f49e28a32d008df046ec4212f77bf",label:"enclave v6 (reproducible)",period:"2026-09-05 to 2026-09-06"},{pcr0:"394c3cf515651dc27187d85e4716c12dfeb99c1227f1fe0eacfaa427d80018e1a28ebba9469e99c7936601f901d74e1d",label:"enclave v7 (reproducible, authenticated anchors)",period:"2026-09-06 onward"}],Eh=new Set(["unexplained-counter-positions","chain-break-missing","epochlink-terminal-missing","epochlink-dangling"]);async function dc(t,e){let n=e,r=await Qo(t,{startedAt:""});if(n?.fuseEvidence===void 0){let o=await Bh(t);n={...n,fuseEvidence:o.evidence,fuseOriginHexes:o.originHexes}}return vh(r,n)}async function Bh(t){let e=new Map,n=new Set,r=[],o=new Set;for(let s of t.proofs){let a=kt(s.proof);if(a===null)continue;let c=qt(s.proof.artifact.digestB64),f=c!==null?we(c):null,u=a.originDigest!==void 0?we(a.originDigest):null;r.push({proof:s,artifactHex:f,originHex:u}),f!==null&&o.add(f),u!==null&&o.add(u)}if(r.length===0)return{evidence:e,originHexes:n};let i=new Map;for await(let s of Ro(t,o))i.has(s.sha256Hex)||i.set(s.sha256Hex,s.bytes);Ve();try{for(let s of r){let a=s.artifactHex!==null?i.get(s.artifactHex):void 0,c=s.originHex!==null?i.get(s.originHex):void 0;c!==void 0&&s.originHex!==null&&n.add(s.originHex);let f=a??c;f!==void 0&&e.set(s.proof.proofHash,await Io({proof:s.proof.proof,bytes:f}))}}finally{Ve()}return{evidence:e,originHexes:n}}function vh(t,e){let n=e?.webCryptoAvailable??!0,r=new Map(t.anchors.anchors.map(p=>[p.proofHash,p])),o=new Map(t.attestations.records.map(p=>[p.proofHash,p])),i=new Map;for(let p of t.temporal.segments)for(let w of p.memberProofHashes)i.set(w,p);let s=new Map;for(let p of t.witnesses.outcomes){if(p.anchorProofHash===void 0)continue;let w=s.get(p.anchorProofHash)??[];w.push(p),s.set(p.anchorProofHash,w)}let a=new Map;for(let p of t.ingest.artifacts)for(let w of p.matchedProofHashes)!a.has(w)&&p.paths[0]!==void 0&&a.set(w,p.paths[0]);let c=[],f=[];for(let p of t.ingest.proofs){let w=r.get(p.proofHash);w!==void 0?f.push(Ph(p,w,s.get(p.proofHash)??[])):c.push(Ah(p,o.get(p.proofHash),i.get(p.proofHash),a.get(p.proofHash),n,e?.fuseEvidence,r))}ac(c),ac(f);let u=Mh(t),d=Dh(t,c,f,e?.fuseOriginHexes),h=Nh(f.length>0),l=[...c.map(p=>p.result),...f.map(p=>p.result),...u.map(p=>p.result)],m=l.length===0?"UNDETERMINED":fr(l);return{check:"bitgraph-check/1",result:m,summary:Lh(m,c,f,u),recordings:c,anchors:f,contradictions:u,notes:d,notChecked:h,evaluator:{name:"bitgraph-player",version:ei,audit:cr},network:"none"}}function ac(t){let e=n=>[n.epochId??"",n.counter!==void 0&&/^[0-9]+$/.test(n.counter)?BigInt(n.counter):void 0];t.sort((n,r)=>{let[o,i]=e(n),[s,a]=e(r);return o!==s?o<s?-1:1:i===void 0||a===void 0?i===void 0?a===void 0?0:1:-1:i<a?-1:i>a?1:0})}function Ah(t,e,n,r,o,i,s){let a=[],c=t.verification,f=t.proof.artifact.digestB64;c?.tier==="full"?a.push({name:"file",result:c.status==="verified"||c.status==="failed"?"TRUE":"UNDETERMINED",detail:c.status==="verified"||c.status==="failed"?`${r??"the matched file"} hashes to the recorded digest ${f}`:`no file in this bundle hashes to the recorded digest ${f}`}):a.push({name:"file",result:"UNDETERMINED",detail:`no file in this bundle hashes to the recorded digest ${f}; the recording cannot be bound to bytes in hand`}),c===void 0?a.push({name:"signature",result:"UNDETERMINED",detail:"the proof was not verified"}):c.status==="failed"?a.push({name:"signature",result:"FALSE",detail:`the proof does not verify: ${c.reason??"unspecified failure"}`}):a.push({name:"signature",result:"TRUE",detail:`Ed25519 signature and slot binding verify under signer key ${ri(t.publicKeyB64)}`});let u=Th(e,o);a.push(u.line),a.push(Hh(u.attestedPcr0,u.line.result));let d=kt(t.proof),h;if(d!==null){let m=Ih(n,s,t.slotCounter,t.chainId),p=Sh(d.placement,d.originDigest!==void 0?t.proof.attribution?.message??null:null,i?.get(t.proofHash),m,t);a.push(p.line),h=p.fused}let l=fr(a.map(m=>m.result));return{proofHash:t.proofHash,digestB64:f,...t.epochId!==void 0?{epochId:t.epochId}:{},chainId:t.chainId,...t.counter!==void 0?{counter:t.counter}:{},...t.slotCounter!==void 0?{slotCounter:t.slotCounter}:{},...t.publicKeyB64!==void 0?{publicKeyB64:t.publicKeyB64}:{},...r!==void 0&&c?.tier==="full"?{filePath:r}:{},lines:a,result:l,bounds:Ch(n),...h!==void 0?{fused:h}:{}}}var ni="bitgraph:main";function Ih(t,e,n,r=ni){if(r!==ni||t===void 0||e===void 0||n===void 0||!/^[0-9]+$/.test(n))return null;let o=BigInt(n),i;for(let s of t.lowerBounds){if(s.kind!=="not-before")continue;let a=e.get(s.anchorProofHash);if(a===void 0||a.counter===void 0||!/^[0-9]+$/.test(a.counter)||BigInt(a.counter)>=o)continue;if(i===void 0){i=s;continue}let c=s.blockNumber!==void 0?BigInt(s.blockNumber):BigInt(s.timestamp),f=i.blockNumber!==void 0?BigInt(i.blockNumber):BigInt(i.timestamp);c>f&&(i=s)}return i===void 0?null:{...i.blockNumber!==void 0?{blockNumber:i.blockNumber}:{},blockHash:i.blockHash,timestamp:i.timestamp,anchorProofHash:i.anchorProofHash,evidence:"counter-order"}}var kh="floor undetermined: no anchor precedes this slot in its epoch";function cc(t){return`anchored block ${t.blockNumber!==void 0?`#${t.blockNumber}`:t.blockHash} (${new Date(t.timestamp*1e3).toISOString()})`}function Sh(t,e,n,r,o){let i=o.slotCounter??"?",s=t!==null?` (placement ${t})`:" (placement undeclared)",a=r!==null?`assembled after ${cc(r)}, the last verified anchor preceding slot ${i} in this epoch`:o.chainId!==ni?`floor undetermined: the slot is on chain "${o.chainId}", not the anchored chain`:kh,c=n?.span!==void 0&&n.span!==null?{slotCounter:n.span.slotCounter,commitCounter:n.span.commitCounter,positions:n.span.positions}:o.slotCounter!==void 0&&o.counter!==void 0?{slotCounter:o.slotCounter,commitCounter:o.counter,positions:(BigInt(o.counter)-BigInt(o.slotCounter)).toString()}:null,f=(n?.statements??[]).map(h=>r!==null?h.replace(`at position ${i},`,`at position ${i}, which followed ${cc(r)},`):h),u=(h,l)=>({category:h,placement:n?.placement??t,originDigestB64:n?.originDigestB64??e,evidence:l,statements:f,floor:r,floorDetail:a,span:c});if(n===void 0)return{line:{name:"fused",result:"UNDETERMINED",detail:`marked fused${s}, but neither the fused bytes nor ${e!==null?"the original":"an original"} is in this bundle, so the commitment to slot ${i} cannot be checked`},fused:u("NO_EVIDENCE",null)};let d=n.category==="FUSED_FROM_ORIGIN"||n.fileDigestB64!==n.artifactDigestB64&&n.category!=="NO_MATCH"?"original":"fused-bytes";switch(n.category){case"FUSED_DIRECT":return{line:{name:"fused",result:"TRUE",detail:`the fused bytes carry the commitment to slot ${i}${s}`},fused:u(n.category,"fused-bytes")};case"FUSED_FROM_ORIGIN":return{line:{name:"fused",result:"TRUE",detail:`the original rebuilds the committed fused bytes${s}; they carry the commitment to slot ${i}`},fused:u(n.category,"original")};case"INVALID_SLOT_COMMITMENT":return{line:{name:"fused",result:"FALSE",detail:`the fused bytes do not carry the commitment to this proof's slot ${i}: ${n.reason??""}`},fused:u(n.category,d)};case"INVALID_ORIGIN_ATTRIBUTION":return{line:{name:"fused",result:"FALSE",detail:`the declared origin contradicts the origin inside the fused bytes: ${n.reason??""}`},fused:u(n.category,d)};case"RECONSTRUCTION_MISMATCH":return{line:{name:"fused",result:"FALSE",detail:`the file matching the declared origin does not rebuild the committed fused bytes: ${n.reason??""}`},fused:u(n.category,"original")};case"UNDETERMINED_PLACEMENT":return{line:{name:"fused",result:"UNDETERMINED",detail:`${n.reason??"the placement is not registered"}; this verifier cannot check the commitment`},fused:u(n.category,d)};case"INVALID_UNDERLYING_PROOF":return{line:{name:"fused",result:"UNDETERMINED",detail:"not checked: the proof itself does not verify (see the signature line)"},fused:u(n.category,d)};default:return{line:{name:"fused",result:"UNDETERMINED",detail:`the commitment could not be checked: ${n.reason??n.category}`},fused:u(n.category,d)}}}function Th(t,e){return t===void 0||!t.documentPresent?{line:{name:"attestation",result:"UNDETERMINED",detail:"no attestation document in this proof"}}:e?t.documentValidated?t.userDataBoundToProof!==!0?{line:{name:"attestation",result:"FALSE",detail:"attestation document validates but its user_data is not this proof: the document belongs to some other proof"},attestedPcr0:t.attestedPcr0}:t.pcr0MatchesDeclared!==!0?{line:{name:"attestation",result:"FALSE",detail:`attestation validates and binds this proof, but its PCR0 ${pn(t.attestedPcr0)} is not the measurement the signed body declares ${pn(t.declaredMeasurement)}`},attestedPcr0:t.attestedPcr0}:{line:{name:"attestation",result:"TRUE",detail:`AWS Nitro attestation validates to the AWS root, binds this exact proof (user_data), and attests PCR0 ${pn(t.attestedPcr0)}`},attestedPcr0:t.attestedPcr0}:{line:{name:"attestation",result:"FALSE",detail:`attestation document does not validate: ${t.validationFailure??"unspecified failure"}`}}:{line:{name:"attestation",result:"UNDETERMINED",detail:"attestation not checked: this environment cannot verify ECDSA P-384 (no WebCrypto); open the verifier from a file or https page, or run bitgraph-play check"}}}function Hh(t,e){if(e!=="TRUE"||t===void 0)return{name:"enclave",result:"UNDETERMINED",detail:"enclave identity rests on a validated attestation, which this recording does not have here"};let n=xh.find(r=>r.pcr0===t.toLowerCase());return n===void 0?{name:"enclave",result:"UNDETERMINED",detail:`PCR0 ${pn(t)} is not among the BitGraph enclave measurements this verifier knows (player ${ei}); compare it against the measurements published at bitgraph.ing/docs/self-host-tee`}:{name:"enclave",result:"TRUE",detail:`PCR0 ${pn(t)} is the published BitGraph ${n.label} measurement (${n.period})`}}function Ch(t){if(t===void 0)return{status:"unanchored",detail:"no verified Ethereum anchor bounds this recording in this bundle"};let e=fc(t.lowerBounds,"not-before"),n=fc(t.upperBounds,"not-after"),r=e===void 0?void 0:uc(e),o=n===void 0?void 0:uc(n),i=r!==void 0&&o!==void 0?"lower-bounded-with-following-anchor":r!==void 0?"lower-bounded":o!==void 0?"upper-bounded":"unanchored",s=i==="unanchored"?"no verified Ethereum anchor bounds this recording in this bundle":`recorded ${Rh(i,r,o)}`;return{status:i,...r!==void 0?{notBefore:r}:{},...o!==void 0?{notAfter:o}:{},detail:s}}function Rh(t,e,n){switch(t){case"lower-bounded-with-following-anchor":return`after Ethereum block ${ht(e)} (header verified in this bundle); precedes an anchor that consumed block ${ht(n)} (header verified), an anchor-latency assumption rather than an upper bound on this recording`+ti(e.weaker||n.weaker);case"lower-bounded":return`after Ethereum block ${ht(e)} (header verified in this bundle); no verified upper bound here`+ti(e.weaker);case"upper-bounded":return`before Ethereum block ${ht(n)} (header verified in this bundle); no verified lower bound here`+ti(n.weaker);default:return"with no verified Ethereum bound in this bundle"}}function fc(t,e){let n=t.filter(o=>o.kind===e);return n.length===0?void 0:[...n].sort((o,i)=>{let s=o.blockNumber!==void 0?BigInt(o.blockNumber):BigInt(o.timestamp),a=i.blockNumber!==void 0?BigInt(i.blockNumber):BigInt(i.timestamp);return s!==a?e==="not-before"?s>a?-1:1:s<a?-1:1:o.weaker!==i.weaker?o.weaker?1:-1:0})[0]}function uc(t){return{...t.blockNumber!==void 0?{blockNumber:t.blockNumber}:{},blockHash:t.blockHash,timestamp:t.timestamp,anchorProofHash:t.anchorProofHash,evidence:t.evidence,weaker:t.weaker}}function $h(t){switch(t.status){case"lower-bounded-with-following-anchor":return`after Ethereum block ${ht(t.notBefore)}, then an anchor at block ${ht(t.notAfter)}`;case"lower-bounded":return`after Ethereum block ${ht(t.notBefore)}`;case"upper-bounded":return`before Ethereum block ${ht(t.notAfter)}`;default:return"with no Ethereum bound in this bundle"}}function ht(t){return t.blockNumber!==void 0?t.blockNumber:t.blockHash}function ti(t){return t?"; ordered by counter position within the epoch, since the recordings between are not in this bundle":""}function Ph(t,e,n){let r=[],o=t.verification;o===void 0?r.push({name:"signature",result:"UNDETERMINED",detail:"the anchor proof was not verified"}):o.status==="failed"?r.push({name:"signature",result:"FALSE",detail:`the anchor proof does not verify: ${o.reason??"unspecified failure"}`}):r.push({name:"signature",result:"TRUE",detail:`anchor proof verifies under signer key ${ri(t.publicKeyB64)}`});let i;if(n.length>0){let s=n.find(a=>a.verified);if(s!==void 0)i=s.witnessPath,r.push({name:"witness",result:"TRUE",detail:`block header ${s.witnessPath} hashes (keccak-256) to the anchored block hash${e.blockNumber!==void 0?` of block ${e.blockNumber}`:""}`});else{let a=n[0];i=a.witnessPath,r.push({name:"witness",result:"FALSE",detail:`block header ${a.witnessPath} contradicts this anchor: ${a.detail??a.reason??"witness verification failed"}`})}}return{proofHash:t.proofHash,...t.epochId!==void 0?{epochId:t.epochId}:{},chainId:t.chainId,...t.counter!==void 0?{counter:t.counter}:{},...e.blockNumber!==void 0?{blockNumber:e.blockNumber}:{},...e.blockHash!==void 0?{blockHash:e.blockHash}:{},...i!==void 0?{witnessPath:i}:{},lines:r,result:fr(r.map(s=>s.result))}}function Mh(t){let e=[],n=new Set,r=o=>{n.has(o)||(n.add(o),e.push({name:"contradiction",result:"FALSE",detail:o}))};for(let o of t.anomalies.anomalies)Eh.has(o.code)||r(`${o.code}: ${o.message}`);for(let o of t.anomalies.divergences)r(`${o.kind}: ${o.explanation}`);for(let o of t.authorities.anomalies)r(`${o.code}: ${o.message}`);for(let o of t.witnesses.findings)(o.code==="witness-unmatched"||o.code==="witness-malformed"||o.code==="witness-rlp-invalid")&&r(`${o.code}: ${o.message}`);for(let o of t.ingest.findings)o.code==="proofhash-mismatch"&&r(`${o.code}: ${o.message}${o.path!==void 0?` (${o.path})`:""}`);return e}function Dh(t,e,n,r){let o=[],i=0n,s=0;for(let d of t.anomalies.anomalies)if(d.code==="unexplained-counter-positions"){let h=d.details?.count;h!==void 0&&/^[0-9]+$/.test(h)&&(i+=BigInt(h))}else d.code==="chain-break-missing"&&(s+=d.proofHashes.length);i>0n&&o.push(`${i} causal position${i===1n?"":"s"} between the earliest and latest recording here ${i===1n?"is":"are"} not in this bundle: normal for an export, which is an excerpt of the chain; a full-epoch audit checks them`),s>0&&o.push(`${s} recording${s===1?"":"s"} link${s===1?"s":""} to a predecessor that is not in this bundle: normal for an export`);let a=t.ingest.artifacts.filter(d=>d.matchedProofHashes.length===0&&r?.has(d.sha256Hex)===!0);a.length>0&&o.push(`${a.length} file${a.length===1?"":"s"} in this bundle ${a.length===1?"is":"are"} the original of a fused recording: ${a.slice(0,5).map(d=>d.paths[0]??"(unnamed)").join(", ")}${a.length>5?", \u2026":""}. The original itself receives only the ceiling (it existed no later than the commit); the fused bytes receive the interval`);let c=t.ingest.artifacts.filter(d=>d.matchedProofHashes.length===0&&r?.has(d.sha256Hex)!==!0);if(c.length>0&&e.length>0){let d=c.slice(0,5).map(h=>`${h.paths[0]??"(unnamed)"} (sha256:${h.sha256Hex.slice(0,16)}\u2026)`).join(", ");o.push(`${c.length} file${c.length===1?"":"s"} in this bundle match${c.length===1?"es":""} no recording here: ${d}${c.length>5?", \u2026":""}. If ${c.length===1?"it":"one of them"} was meant to be a recorded file, its bytes differ from what was recorded`)}let f=n.filter(d=>d.witnessPath===void 0);f.length>0&&o.push(`${f.length} Ethereum anchor${f.length===1?"":"s"} in this bundle ha${f.length===1?"s":"ve"} no block-header witness file, so ${f.length===1?"its":"their"} block hash${f.length===1?" is":"es are"} not verified here and no bound is derived from ${f.length===1?"it":"them"}`);for(let d of t.ingest.unsupportedVersions)o.push(`${d.path} is proof-shaped but its version "${d.version}" is not bitgraph/1; it was not checked`);let u=t.ingest.counts;if((u.exactDuplicates>0||u.semanticDuplicates>0)&&o.push(`${u.exactDuplicates+u.semanticDuplicates} duplicate proof file${u.exactDuplicates+u.semanticDuplicates===1?"":"s"} collapsed to one recording each`),t.ingest.manifest!==void 0)for(let d of t.ingest.findings)typeof d.code=="string"&&d.code.startsWith("manifest-")&&o.push(`${d.code}: ${d.message}`);return e.length===0&&n.length===0&&o.push("no BitGraph proofs were found in this bundle"),o}function Nh(t){let e=[];return t&&e.push("whether the anchored Ethereum blocks are canonical: their headers are recomputed here, but canonicality needs an Ethereum node or a block explorer"),e.push("whether the public ledger holds these exact recordings at these positions: this is an offline check; drop the file on bitgraph.ing to compare against the ledger"),e.push("whether an epoch key was later quarantined: that is published outside any bundle"),e}function Lh(t,e,n,r){if(e.length===0&&n.length===0)return"UNDETERMINED: no BitGraph proofs were found in this bundle.";let o=e.length,i=`${o} recording${o===1?"":"s"}`;if(t==="TRUE"){let a=e[0];return o===1&&a!==void 0?`TRUE: this file was recorded${a.counter!==void 0?` at position ${a.counter}${a.epochId!==void 0?` of epoch ${ri(a.epochId)}`:""}`:""}, ${$h(a.bounds)}.`:`TRUE: ${i} verified: files match, signatures and attestations hold, enclave measurements published${n.length>0?", Ethereum bounds verified from block headers in the bundle":""}.`}if(t==="FALSE")return`FALSE: evidence in this bundle contradicts itself. ${[...e.flatMap(c=>c.lines.filter(f=>f.result==="FALSE").map(f=>`${f.name}: ${f.detail}`)),...n.flatMap(c=>c.lines.filter(f=>f.result==="FALSE").map(f=>`${f.name}: ${f.detail}`)),...r.map(c=>c.detail)][0]??""}`.trim();let s=[...e.flatMap(a=>a.lines.filter(c=>c.result==="UNDETERMINED").map(c=>c.detail)),...n.flatMap(a=>a.lines.filter(c=>c.result==="UNDETERMINED").map(c=>c.detail))];return`UNDETERMINED: nothing here contradicts the ${i}, but the evidence does not fully decide. ${s[0]??""}`.trim()}function ri(t){return t===void 0?"(none)":t.length>12?`${t.slice(0,12)}\u2026`:t}function pn(t){return t===void 0?"(none)":t.length>16?`${t.slice(0,16)}\u2026`:t}In.sha512Async=async(...t)=>Rn(In.concatBytes(...t));var bc=typeof globalThis.crypto<"u"&&globalThis.crypto.subtle!==void 0;function yc(t){return new Promise((e,n)=>{let r=[],o=()=>{t.readEntries(i=>{if(i.length===0){e(r);return}r.push(...i),o()},n)};o()})}function Oh(t){return new Promise((e,n)=>t.file(e,n))}async function ai(t,e,n){if(t.isFile){let r=await Oh(t);n.push({path:e+t.name,file:r});return}if(t.isDirectory){let r=t.createReader(),o=await yc(r);for(let i of o)i.name!==".DS_Store"&&await ai(i,`${e}${t.name}/`,n)}}async function Fh(t){let n=Array.from(t.items??[]).map(o=>typeof o.webkitGetAsEntry=="function"?o.webkitGetAsEntry():null).filter(o=>o!==null);if(n.length===0)return Array.from(t.files??[]).map(o=>({path:o.name,file:o}));let r=[];if(n.length===1&&n[0]!==void 0&&n[0].isDirectory){let o=n[0];for(let i of await yc(o.createReader()))i.name!==".DS_Store"&&await ai(i,"",r)}else for(let o of n)await ai(o,"",r);return r.length===0?Array.from(t.files??[]).map(o=>({path:o.name,file:o})):r}function hc(t){let e=Array.from(t.files??[]),n=e.map(s=>s.webkitRelativePath||s.name),r=n.map(s=>s.indexOf("/")),o=n.length>0&&r.every(s=>s>0)?n[0].slice(0,r[0]):void 0,i=o!==void 0&&n.every(s=>s.startsWith(`${o}/`));return e.map((s,a)=>({path:i?n[a].slice(o.length+1):n[a],file:s})).filter(s=>!s.path.endsWith("/.DS_Store")&&s.path!==".DS_Store")}function _h(t){return t.map(e=>({path:e.path,open:()=>e.file.arrayBuffer().then(n=>new Uint8Array(n))}))}function $(t,e={},n=[]){let r=document.createElement(t);for(let[o,i]of Object.entries(e))o==="class"?r.className=i:r.setAttribute(o,i);for(let o of n)r.append(typeof o=="string"?document.createTextNode(o):o);return r}function ci(t){return t==="TRUE"?null:$("span",{class:t==="FALSE"?"mark false":"mark undet"},[t])}function gn(t,e,n={}){let r=$("div",{class:"field-head"},[$("span",{class:"field-label"},[t])]),o=n.mark!==void 0?ci(n.mark):null;return o!==null&&r.append(o),$("div",{class:"field"},[r,$("span",{class:n.mono?"field-value mono":"field-value"},[e])])}function lt(t,e,n={}){let r=n.open===!0,o=$("span",{class:"chev","aria-hidden":"true"});o.innerHTML='<svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.25" stroke-linecap="square" stroke-linejoin="miter"><path d="M9 6 L15 12 L9 18"/></svg>';let i=$("button",{class:`opener-head${n.tone==="danger"?" danger":""}`,type:"button","aria-expanded":String(r)},[$("span",{},[t]),o]),s=$("div",{class:"opener-body"},e),a=$("section",{class:"card"},[i,s]),c=()=>{i.classList.toggle("open",r),i.setAttribute("aria-expanded",String(r)),s.hidden=!r,o.classList.toggle("open",r)};return i.addEventListener("click",()=>{r=!r,c()}),c(),a}function Uh(t){return t==="TRUE"?"BitGraph Verified":t==="FALSE"?"Verification Failed":"Not Fully Verified"}function jh(t){return t===void 0?"":`#${Number(t).toLocaleString("en-US")}`}function Kh(t){return new Date(t*1e3).toLocaleDateString("en-US",{month:"long",day:"numeric",year:"numeric"})}function mn(t,e){return new Date(t*1e3).toLocaleTimeString("en-US",{hour:"numeric",minute:"2-digit",second:"2-digit",...e?{timeZoneName:"short"}:{}})}function Vh(t){return new Date(t*1e3).toLocaleString("en-US",{month:"numeric",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",second:"2-digit",timeZoneName:"short"})}function lc(t){let e=t.bounds,n=i=>$("span",{class:"when-grey"},[i]),r=i=>$("span",{class:"when-dark"},[i]),o=$("div",{class:"when"});if(e.notBefore!==void 0||e.notAfter!==void 0){let i=e.notBefore??e.notAfter;o.append($("div",{class:"when-date"},[Kh(i.timestamp)]));let s=$("div",{class:"when-line"});e.notBefore!==void 0&&e.notAfter!==void 0?s.append(n("after "),r(mn(e.notBefore.timestamp,!0)),n(", then an anchor at "),r(mn(e.notAfter.timestamp,!1)),n(" (not an upper bound)")):e.notBefore!==void 0?s.append(n("after "),r(mn(e.notBefore.timestamp,!0))):e.notAfter!==void 0&&s.append(n("no lower bound in this bundle; an anchor followed at "),r(mn(e.notAfter.timestamp,!0)),n(" (not an upper bound)")),o.append(s)}else o.append($("div",{class:"when-line"},[n("no verified Ethereum bound in this bundle")]));return o}function oi(t){if(t.fused===void 0)return null;let e=i=>$("span",{class:"when-grey"},[i]),n=i=>$("span",{class:"when-dark"},[i]),r=$("div",{class:"when"}),o=$("div",{class:"when-line"});return t.fused.floor!==null?o.append(e("fused bytes assembled after "),n(mn(t.fused.floor.timestamp,!0)),e(`, the last anchor before slot ${t.fused.span?.slotCounter??"?"}`)):o.append(e(t.fused.floorDetail)),r.append(o),r}var zh=/\.(jpe?g|png|gif|webp|avif|bmp|svg)$/i,qh=/\.(mp4|m4v|mov|webm|ogv)$/i,Gh=/\.(mp3|wav|m4a|aac|flac|ogg|oga)$/i,Wh=/\.(txt|md|markdown|json|csv|tsv|log|xml|yaml|yml|html?|css|js|ts|py|sh|rtf)$/i;function Zh(t){let e=t.subarray(0,Math.min(2048,t.length));if(!e.length)return!1;let n=0;for(let r of e){if(r===0)return!1;(r===9||r===10||r===13||r>=32)&&n++}return n/e.length>.97}function Yh(t,e){let n=t.toLowerCase();return n.endsWith(".pdf")?"pdf":zh.test(n)?"image":qh.test(n)?"video":Gh.test(n)?"audio":Wh.test(n)||Zh(e)?"text":"other"}function Xh(t){return t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(t<10*1024?1:0)} KB`:t<1024*1024*1024?`${(t/(1024*1024)).toFixed(1)} MB`:`${(t/(1024*1024*1024)).toFixed(2)} GB`}function Jh(t,e,n){if(n==="image"||n==="video"){let r=URL.createObjectURL(t),o=n==="image"?$("img",{src:r,alt:t.name,style:"display:block;max-width:100%;max-height:min(70vh,640px);width:auto;height:auto;object-fit:contain;border-radius:0"}):$("video",{src:r,controls:"",style:"display:block;max-width:100%;max-height:min(70vh,640px);border-radius:0"});return $("div",{style:"padding:20px;display:flex;align-items:center;justify-content:center"},[o])}if(n==="audio"){let r=URL.createObjectURL(t);return $("div",{style:"padding:20px 16px"},[$("audio",{src:r,controls:"",style:"display:block;width:100%"})])}if(n==="text")try{let r=new TextDecoder("utf-8",{fatal:!1}).decode(e.subarray(0,6e3)),o=r.split(`
153
153
  `),i=o.slice(0,24).join(`
154
154
  `).slice(0,3e3),s=o.length>24||r.length>i.length||e.byteLength>6e3;return $("pre",{class:"excerpt"},[i+(s?`
155
155
  \u2026`:"")])}catch{return null}return null}function pc(t,e,n,r){let o=t.lines.find(s=>s.name==="file"),i=$("div",{class:r?"file-row above":"file-row"});if(t.filePath!==void 0){let s=$("span",{class:"file-ident"},[$("span",{class:"file-name"},[t.filePath])]);e!==void 0&&s.append(document.createTextNode(` \xB7 ${Xh(e.size)}`)),i.append(s);let a=$("span",{class:"file-right"});e!==void 0&&n!==void 0&&(n==="image"||n==="text"||n==="pdf")&&a.append($("a",{class:"bg-arrow-link",href:URL.createObjectURL(e),target:"_blank",rel:"noopener"},["Open ",$("span",{class:"arrow","aria-hidden":"true"},["\u2192"])]));let c=o!==void 0?ci(o.result):null;c!==null&&a.append(c),a.childNodes.length>0&&i.append(a)}else{i.append($("span",{class:"file-missing"},["file not in this bundle"]));let s=o!==void 0?ci(o.result):null;s!==null&&i.append(s)}return i}function Je(t,e,n=!1){return gn(t,e,{mono:n})}function mc(t,e){let n=document.getElementById("title-action");if(n===null)return;let r=$("a",{class:"bg-arrow-link",href:"#"},[t+" ",$("span",{class:"arrow","aria-hidden":"true"},["\u2192"])]);r.addEventListener("click",o=>{o.preventDefault(),e()}),n.replaceChildren(r)}function gc(t){let e={file:"File",signature:"Signature",attestation:"Hardware Enclave attestation",enclave:"Enclave identity",witness:"Block header",contradiction:"Contradiction",fused:"Fused artifact"};return t.lines.map(n=>gn(e[n.name]??n.name,n.detail,{mark:n.result}))}function Qh(t,e,n,r){let o=e==="before"?"Recorded after this block":e==="after"?"An anchor followed this recording (not an upper bound)":`Ethereum anchor ${n+1}`,i=[];if(t.blockNumber!==void 0&&i.push(Je("Block",jh(t.blockNumber),!0)),r!==void 0&&i.push(Je("Block Time",Vh(r))),t.blockHash!==void 0&&i.push(Je("Block Hash",t.blockHash,!0)),t.counter!==void 0&&i.push(Je("Anchor position",`#${t.counter}`,!0)),t.blockNumber!==void 0){let s=$("a",{class:"field-link",href:`https://etherscan.io/block/${t.blockNumber}`,target:"_blank",rel:"noopener"},[`https://etherscan.io/block/${t.blockNumber}`]);i.push($("div",{class:"field"},[$("span",{class:"field-label"},["Etherscan"]),s]))}for(let s of t.lines)i.push(gn(s.name==="witness"?"Block header":"Anchor signature",s.detail,{mark:s.result}));return t.witnessPath===void 0&&i.push(gn("Block header","no block-header witness in this bundle, so this anchor's block hash is not verified here and it bounds nothing")),lt(t.result==="TRUE"?o:`${o} [${t.result}]`,i)}async function el(t,e,n,r){e.replaceChildren();let o=()=>location.reload();if(t.recordings.length===0&&t.anchors.length===0){n.textContent="No BitGraph Found",e.append($("section",{class:"card primary"},[$("div",{class:"notice"},["No BitGraph proof was found in what you chose. A recording is a folder named for the file it holds, like BitGraph (photo.jpg). Inside it are proof.json, the file itself, and an ethereum-anchors folder."])])),mc("Choose a recording folder",o),e.append(lt("Report JSON",[$("pre",{class:"json"},[JSON.stringify(t,null,2)])]));let f=document.getElementById("more");f.replaceChildren(),f.hidden=!0;return}n.textContent=Uh(t.result);let i=t.recordings.length===1?t.recordings[0]:void 0,s=$("section",{class:"card primary"});if(t.result!=="TRUE"&&s.append($("div",{class:`notice ${t.result.toLowerCase()}`},[t.summary])),i!==void 0){s.append(lc(i));let f=oi(i);f!==null&&s.append(f);let u=i.filePath!==void 0?r.get(i.filePath):void 0,d,h=null;if(u!==void 0){let l=new Uint8Array(await u.arrayBuffer());d=Yh(u.name,l),h=Jh(u,l,d)}h!==null&&s.append(h),s.append(pc(i,u,d,h!==null)),i.counter!==void 0&&s.append(Je("Position",`#${i.counter}${i.epochId!==void 0?` \xB7 epoch ${i.epochId}`:""}`,!0)),s.append(Je("File Hash",i.digestB64,!0))}else if(t.recordings.length>1)for(let f of t.recordings)s.append(pc(f,f.filePath!==void 0?r.get(f.filePath):void 0,void 0,!1));else s.append(Je("Recordings","no recordings in this bundle"));if(e.append(s),mc("Check another BitGraph",o),i!==void 0){let f=i.lines.filter(u=>u.result!=="TRUE").length;e.append(lt(f===0?"Recording checks":`Recording checks ${f} not verified`,gc(i),{open:t.result!=="TRUE"}))}else t.recordings.forEach((f,u)=>{e.append(lt(`Recording ${u+1}: ${f.filePath??f.digestB64.slice(0,16)+"\u2026"} [${f.result}]`,[lc(f),...oi(f)!==null?[oi(f)]:[],...f.counter!==void 0?[Je("Position",`#${f.counter}${f.epochId!==void 0?` \xB7 epoch ${f.epochId}`:""}`,!0)]:[],Je("File Hash",f.digestB64,!0),...gc(f)],{open:f.result!=="TRUE"}))});let a=new Map;for(let f of t.recordings)f.bounds.notBefore&&a.set(f.bounds.notBefore.anchorProofHash,f.bounds.notBefore.timestamp),f.bounds.notAfter&&a.set(f.bounds.notAfter.anchorProofHash,f.bounds.notAfter.timestamp);t.anchors.forEach((f,u)=>{let d="other";i!==void 0&&(i.bounds.notBefore?.anchorProofHash===f.proofHash?d="before":i.bounds.notAfter?.anchorProofHash===f.proofHash&&(d="after")),e.append(Qh(f,d,u,a.get(f.proofHash)))}),t.contradictions.length>0&&e.append(lt(`Contradictions ${t.contradictions.length}`,t.contradictions.map(f=>gn("Contradiction",f.detail,{mark:"FALSE"})),{open:!0,tone:"danger"})),t.notes.length>0&&e.append(lt(`Notes ${t.notes.length}`,[$("ul",{class:"list"},t.notes.map(f=>$("li",{},[f])))])),e.append(lt("Not checked",[$("ul",{class:"list"},t.notChecked.map(f=>$("li",{},[f])))])),e.append(lt("Report JSON",[$("pre",{class:"json"},[JSON.stringify(t,null,2)])]));let c=document.getElementById("more");c.replaceChildren(),c.hidden=!0}async function ii(t){let e=document.getElementById("drop"),n=document.getElementById("results"),r=document.getElementById("status");if(t.length===0){r.textContent="Nothing readable was dropped.";return}e.classList.add("busy"),r.textContent=`Checking ${t.length} file${t.length===1?"":"s"}\u2026`;try{let o=await Ho(_h(t),{label:"dropped"}),i=await dc(o,{webCryptoAvailable:bc});document.getElementById("camera").hidden=!0,document.getElementById("deck").hidden=!0,document.querySelector(".bitgraph-wrap")?.classList.add("bitgraph-results"),document.querySelector(".bitgraph-hero")?.classList.add("results"),r.textContent="",n.hidden=!1;let s=new Map(t.map(a=>[a.path,a.file]));await el(i,n,document.getElementById("title"),s),document.title=`${i.result} \xB7 BitGraph verify`}catch(o){r.textContent=`The check could not run: ${o.message}`}finally{e.classList.remove("busy")}}function si(){let t=document.querySelector(".bitgraph-wrap");t&&t.style.setProperty("--bg-wrap-min",`${Math.round(window.innerHeight)}px`)}function tl(){let t=document.getElementById("drop"),e=document.getElementById("status"),n=document.getElementById("pick-files"),r=document.getElementById("pick-folder");si(),window.addEventListener("resize",si),window.addEventListener("orientationchange",si),bc||(e.textContent="This browser context has no WebCrypto, so attestations will read UNDETERMINED here; open the file directly (file://) or over https, or run bitgraph-play check.");let o=!1,i=!1,s=!1,a=()=>{t.classList.toggle("hot",o||i||s),t.classList.toggle("over",s)};t.addEventListener("mouseenter",()=>{o=!0,a()}),t.addEventListener("mouseleave",()=>{o=!1,a()}),t.addEventListener("focusin",()=>{i=!0,a()}),t.addEventListener("focusout",()=>{i=!1,a()});let c=f=>{f.preventDefault(),f.stopPropagation()};for(let f of["dragenter","dragover"])t.addEventListener(f,u=>{c(u),s=!0,a()}),document.body.addEventListener(f,c);for(let f of["dragleave","drop"])t.addEventListener(f,u=>{c(u),s=!1,a()}),document.body.addEventListener(f,c);t.addEventListener("drop",f=>{let u=f.dataTransfer;u!==null&&(e.textContent="Reading the drop\u2026",Fh(u).then(d=>{if(d.length===0){e.textContent="Nothing readable was dropped. Click the box and choose the recording's folder instead.";return}return ii(d)},d=>{e.textContent=`The drop could not be read here: ${d.message}. Click the box and choose the recording's folder instead.`}))}),t.addEventListener("click",()=>r.click()),t.addEventListener("keydown",f=>{(f.key==="Enter"||f.key===" ")&&(f.preventDefault(),r.click())}),n.addEventListener("change",()=>void ii(hc(n))),r.addEventListener("change",()=>void ii(hc(r)))}document.addEventListener("DOMContentLoaded",tl);})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mikeargento/bitgraph-player",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "description": "Deterministic evaluation of causal rules over BitGraph proof bundles: a pure function from (rule, verified evidence) to a reproducible verdict.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -147,7 +147,7 @@ describe("check: real export fixture (disk)", () => {
147
147
  it("recognizes the enclave v5 measurement from PINS.md", () => {
148
148
  const enclave = report.recordings[0]!.lines.find((l) => l.name === "enclave")!;
149
149
  assert.match(enclave.detail, /enclave v5/);
150
- assert.equal(KNOWN_ENCLAVE_MEASUREMENTS.length, 5);
150
+ assert.equal(KNOWN_ENCLAVE_MEASUREMENTS.length, 6);
151
151
  });
152
152
 
153
153
  it("serializes deterministically: no timestamps, no machine paths", async () => {
package/src/check.ts CHANGED
@@ -104,7 +104,12 @@ export const KNOWN_ENCLAVE_MEASUREMENTS: ReadonlyArray<{ pcr0: string; label: st
104
104
  {
105
105
  pcr0: "cd8ba52d340fb1be78610b59953ded2ceca23be1cfcc7ab504a26b8fdcd7ba92090f49e28a32d008df046ec4212f77bf",
106
106
  label: "enclave v6 (reproducible)",
107
- period: "2026-09-05 onward",
107
+ period: "2026-09-05 to 2026-09-06",
108
+ },
109
+ {
110
+ pcr0: "394c3cf515651dc27187d85e4716c12dfeb99c1227f1fe0eacfaa427d80018e1a28ebba9469e99c7936601f901d74e1d",
111
+ label: "enclave v7 (reproducible, authenticated anchors)",
112
+ period: "2026-09-06 onward",
108
113
  },
109
114
  ];
110
115
 
package/src/verdict.ts CHANGED
@@ -31,7 +31,7 @@ import type { DeclaredEntry, Resolution, Rule, Verdict } from "./types.js";
31
31
  * A unit test asserts this equals package.json's version, so the
32
32
  * constant cannot drift silently across releases.
33
33
  */
34
- export const PLAYER_VERSION = "0.10.0";
34
+ export const PLAYER_VERSION = "0.13.0";
35
35
 
36
36
  /** The player package's own version. */
37
37
  export function playerVersion(): string {