@superdoc/mcp 1.3.0-next.9 → 1.3.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.
Files changed (2) hide show
  1. package/dist/index.js +900 -404
  2. package/package.json +4 -4
package/dist/index.js CHANGED
@@ -31318,7 +31318,7 @@ var init_host = __esm(() => {
31318
31318
  });
31319
31319
 
31320
31320
  // ../../packages/sdk/langs/node/src/runtime/sdk-version.generated.ts
31321
- var SDK_VERSION = "2.16.0-next.9";
31321
+ var SDK_VERSION = "2.16.0";
31322
31322
 
31323
31323
  // ../../packages/sdk/langs/node/src/runtime/embedded-platform.ts
31324
31324
  import { chmodSync, existsSync } from "node:fs";
@@ -122430,7 +122430,7 @@ var init_paragraph_signal_index = __esm(() => {
122430
122430
  RETAINED_PARAGRAPH_SIGNALS = Symbol("retained-paragraph-signals");
122431
122431
  });
122432
122432
 
122433
- // ../../../v2/node_modules/.pnpm/xmlchars@2.2.0/node_modules/xmlchars/xml/1.0/ed5.js
122433
+ // ../../node_modules/.pnpm/xmlchars@2.2.0/node_modules/xmlchars/xml/1.0/ed5.js
122434
122434
  var require_ed5 = __commonJS((exports) => {
122435
122435
  Object.defineProperty(exports, "__esModule", { value: true });
122436
122436
  exports.CHAR = `
@@ -122468,7 +122468,7 @@ var require_ed5 = __commonJS((exports) => {
122468
122468
  exports.isNameChar = isNameChar;
122469
122469
  });
122470
122470
 
122471
- // ../../../v2/node_modules/.pnpm/xmlchars@2.2.0/node_modules/xmlchars/xml/1.1/ed2.js
122471
+ // ../../node_modules/.pnpm/xmlchars@2.2.0/node_modules/xmlchars/xml/1.1/ed2.js
122472
122472
  var require_ed2 = __commonJS((exports) => {
122473
122473
  Object.defineProperty(exports, "__esModule", { value: true });
122474
122474
  exports.CHAR = "\x01-퟿-�\uD800\uDC00-\uDBFF\uDFFF";
@@ -122515,7 +122515,7 @@ var require_ed2 = __commonJS((exports) => {
122515
122515
  exports.isNameChar = isNameChar;
122516
122516
  });
122517
122517
 
122518
- // ../../../v2/node_modules/.pnpm/xmlchars@2.2.0/node_modules/xmlchars/xmlns/1.0/ed3.js
122518
+ // ../../node_modules/.pnpm/xmlchars@2.2.0/node_modules/xmlchars/xmlns/1.0/ed3.js
122519
122519
  var require_ed3 = __commonJS((exports) => {
122520
122520
  Object.defineProperty(exports, "__esModule", { value: true });
122521
122521
  exports.NC_NAME_START_CHAR = "A-Z_a-zÀ-ÖØ-öø-˿Ͱ-ͽͿ-῿‌-‍⁰-↏Ⰰ-⿯、-퟿豈-﷏ﷰ-�\uD800\uDC00-\uDB7F\uDFFF";
@@ -122533,7 +122533,7 @@ var require_ed3 = __commonJS((exports) => {
122533
122533
  exports.isNCNameChar = isNCNameChar;
122534
122534
  });
122535
122535
 
122536
- // ../../../v2/node_modules/.pnpm/saxes@6.0.0/node_modules/saxes/saxes.js
122536
+ // ../../node_modules/.pnpm/saxes@6.0.0/node_modules/saxes/saxes.js
122537
122537
  var require_saxes = __commonJS((exports) => {
122538
122538
  Object.defineProperty(exports, "__esModule", { value: true });
122539
122539
  exports.SaxesParser = exports.EVENTS = undefined;
@@ -134761,6 +134761,20 @@ function isValidRevisionDate(value) {
134761
134761
  const daysInMonth = [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
134762
134762
  return day <= daysInMonth[month - 1];
134763
134763
  }
134764
+ function parseRevisionMarkerAttributes(attributes) {
134765
+ const idAttributes = attributes.filter((attribute) => attribute.local === "id");
134766
+ const authorAttributes = attributes.filter((attribute) => attribute.local === "author");
134767
+ const dateAttributes = attributes.filter((attribute) => attribute.local === "date");
134768
+ const hasValidIdAttribute = idAttributes.length === 1 && idAttributes[0].uri === W_NS;
134769
+ const id = hasValidIdAttribute ? parseRevisionWId(idAttributes[0].value) : null;
134770
+ const hasValidAuthorAttribute = authorAttributes.length === 1 && authorAttributes[0].uri === W_NS;
134771
+ const author = hasValidAuthorAttribute ? authorAttributes[0].value : "";
134772
+ const hasValidDateAttributes = dateAttributes.every((attribute) => attribute.uri === W_NS && isValidRevisionDate(attribute.value));
134773
+ if (!hasValidIdAttribute || !hasValidAuthorAttribute || id === null || !author || !hasValidDateAttributes) {
134774
+ return null;
134775
+ }
134776
+ return { id, author, date: dateAttributes[0]?.value };
134777
+ }
134764
134778
  function parseDirectRunSequence(xml, allowRevisions) {
134765
134779
  const revisions = [];
134766
134780
  const stack = [];
@@ -134815,21 +134829,13 @@ function parseDirectRunSequence(xml, allowRevisions) {
134815
134829
  return;
134816
134830
  }
134817
134831
  if (allowRevisions && tag.uri === W_NS && (tag.local === "ins" || tag.local === "del") && !tag.isSelfClosing) {
134818
- const attributes = Object.values(tag.attributes);
134819
- const idAttributes = attributes.filter((attribute) => attribute.local === "id");
134820
- const authorAttributes = attributes.filter((attribute) => attribute.local === "author");
134821
- const dateAttributes = attributes.filter((attribute) => attribute.local === "date");
134822
- const hasValidIdAttribute = idAttributes.length === 1 && idAttributes[0].uri === W_NS;
134823
- const idValue = hasValidIdAttribute ? idAttributes[0].value : "";
134824
- const id = parseRevisionWId(idValue);
134825
- const hasValidAuthorAttribute = authorAttributes.length === 1 && authorAttributes[0].uri === W_NS;
134826
- const author = hasValidAuthorAttribute ? authorAttributes[0].value : "";
134827
- if (!hasValidIdAttribute || !hasValidAuthorAttribute || id === null || !author || dateAttributes.some((attribute) => attribute.uri !== W_NS || !isValidRevisionDate(attribute.value)))
134832
+ const marker = parseRevisionMarkerAttributes(Object.values(tag.attributes));
134833
+ if (!marker)
134828
134834
  valid = false;
134829
134835
  activeRevision = tag.local;
134830
134836
  activeRevisionRunCount = 0;
134831
- if (id !== null)
134832
- revisions.push({ kind: tag.local, wId: id, author });
134837
+ if (marker)
134838
+ revisions.push({ kind: tag.local, wId: marker.id, author: marker.author });
134833
134839
  stack.push("revision");
134834
134840
  return;
134835
134841
  }
@@ -134922,9 +134928,171 @@ function parseDirectRunSequence(xml, allowRevisions) {
134922
134928
  return null;
134923
134929
  return { currentText, originalText, revisions };
134924
134930
  }
134931
+ function splitLeadingNoteMarkerRun(xml, family) {
134932
+ const firstRun = /^\s*<((?:[A-Za-z_][\w.-]*:)?r)\b(?:"[^"]*"|'[^']*'|[^>"'])*>[\s\S]*?<\/\1>/.exec(xml);
134933
+ if (!firstRun)
134934
+ return null;
134935
+ const markerRunXml = firstRun[0];
134936
+ const localName2 = family === "footnotes" ? "footnoteRef" : "endnoteRef";
134937
+ const markerTag = new RegExp(`<((?:[A-Za-z_][\\w.-]*:)?)${localName2}\\s*\\/>`, "g");
134938
+ const markers = [...markerRunXml.matchAll(markerTag)];
134939
+ if (markers.length !== 1)
134940
+ return null;
134941
+ let valid = true;
134942
+ let depth = 0;
134943
+ let markerCount = 0;
134944
+ const parser = new import_saxes3.SaxesParser({
134945
+ xmlns: true,
134946
+ additionalNamespaces: replayAdditionalNamespaces(markerRunXml)
134947
+ });
134948
+ parser.on("error", () => {
134949
+ valid = false;
134950
+ });
134951
+ parser.on("opentag", (tag) => {
134952
+ depth += 1;
134953
+ if (depth === 1 && tag.local === "replay")
134954
+ return;
134955
+ if (depth === 2 && tag.uri === W_NS && tag.local === "r")
134956
+ return;
134957
+ if (depth === 3 && tag.uri === W_NS && tag.local === "rPr")
134958
+ return;
134959
+ if (depth === 3 && tag.uri === W_NS && tag.local === localName2 && tag.isSelfClosing && Object.keys(tag.attributes).length === 0) {
134960
+ markerCount += 1;
134961
+ return;
134962
+ }
134963
+ if (depth === 3 || (tag.local === "footnoteRef" || tag.local === "endnoteRef"))
134964
+ valid = false;
134965
+ });
134966
+ parser.on("closetag", () => {
134967
+ depth -= 1;
134968
+ });
134969
+ try {
134970
+ parser.write(`<replay>${markerRunXml}</replay>`).close();
134971
+ } catch {
134972
+ valid = false;
134973
+ }
134974
+ const withoutMarker = markerRunXml.replace(markerTag, "<w:t/>");
134975
+ if (!valid || depth !== 0 || markerCount !== 1 || parseDirectRunSequence(withoutMarker, false)?.currentText !== "")
134976
+ return null;
134977
+ return { markerRunXml, remainingRunXml: xml.slice(markerRunXml.length) };
134978
+ }
134979
+ function sameNoteMarkerRunXml(base2, target) {
134980
+ const withoutRedundantWordNamespace = (xml) => xml.split(` xmlns:w="${W_NS}"`).join("").split(` xmlns:w='${W_NS}'`).join("");
134981
+ return withoutRedundantWordNamespace(base2) === withoutRedundantWordNamespace(target);
134982
+ }
134925
134983
  function inspectDirectParagraphRevisionRuns(xml) {
134926
134984
  return parseDirectRunSequence(xml, true);
134927
134985
  }
134986
+ function inspectDirectRunSequence(xml) {
134987
+ return parseDirectRunSequence(xml, false);
134988
+ }
134989
+ function parseParagraphMarkRevisionMarker(pPrXml) {
134990
+ if (pPrXml === "")
134991
+ return null;
134992
+ let valid = true;
134993
+ const stack = [];
134994
+ let hasSectPr = false;
134995
+ let markerCount = 0;
134996
+ let marker = null;
134997
+ const parser = new import_saxes3.SaxesParser({
134998
+ xmlns: true,
134999
+ additionalNamespaces: replayAdditionalNamespaces(pPrXml)
135000
+ });
135001
+ parser.on("error", () => {
135002
+ valid = false;
135003
+ });
135004
+ parser.on("opentag", (tag) => {
135005
+ const parent = stack.at(-1);
135006
+ const grandparent = stack.at(-2);
135007
+ if (parent === undefined && (tag.local !== "pPr" || tag.uri !== W_NS))
135008
+ valid = false;
135009
+ if (tag.uri === W_NS && tag.local === "sectPr")
135010
+ hasSectPr = true;
135011
+ const parentIsLiveRPr = stack.length === 2 && parent !== undefined && parent.uri === W_NS && parent.local === "rPr" && grandparent !== undefined && grandparent.uri === W_NS && grandparent.local === "pPr";
135012
+ if (parentIsLiveRPr && tag.uri === W_NS && (tag.local === "ins" || tag.local === "del")) {
135013
+ markerCount += 1;
135014
+ if (!tag.isSelfClosing) {
135015
+ valid = false;
135016
+ } else {
135017
+ const attrs = parseRevisionMarkerAttributes(Object.values(tag.attributes));
135018
+ if (!attrs || marker !== null) {
135019
+ valid = false;
135020
+ } else {
135021
+ marker = { kind: tag.local, wId: attrs.id, author: attrs.author, date: attrs.date };
135022
+ }
135023
+ }
135024
+ } else if (parentIsLiveRPr && tag.uri === W_NS && (tag.local === "moveFrom" || tag.local === "moveTo")) {
135025
+ valid = false;
135026
+ }
135027
+ stack.push({ uri: tag.uri ?? "", local: tag.local ?? "" });
135028
+ });
135029
+ parser.on("closetag", () => {
135030
+ stack.pop();
135031
+ });
135032
+ try {
135033
+ parser.write(pPrXml).close();
135034
+ } catch {
135035
+ valid = false;
135036
+ }
135037
+ if (!valid || stack.length !== 0 || hasSectPr || markerCount !== 1 || marker === null)
135038
+ return null;
135039
+ return marker;
135040
+ }
135041
+ function removeProvenParagraphMarkMarker(xml, marker) {
135042
+ const baseBindings = new Map([["w", W_NS]]);
135043
+ const stack = [];
135044
+ let removal = null;
135045
+ let position = 0;
135046
+ while (position < xml.length) {
135047
+ const start = xml.indexOf("<", position);
135048
+ if (start < 0)
135049
+ break;
135050
+ if (xml.startsWith("<!--", start) || xml.startsWith("<![CDATA[", start) || xml.startsWith("<?", start)) {
135051
+ return null;
135052
+ }
135053
+ const end = findXmlTagEnd2(xml, start);
135054
+ if (end < 0)
135055
+ return null;
135056
+ const rawTag = xml.slice(start, end + 1);
135057
+ if (rawTag.startsWith("</")) {
135058
+ const close = /^<\/\s*([A-Za-z_][\w.-]*(?::[A-Za-z_][\w.-]*)?)\s*>$/.exec(rawTag);
135059
+ if (!close || stack.pop()?.qname !== close[1])
135060
+ return null;
135061
+ position = end + 1;
135062
+ continue;
135063
+ }
135064
+ const parsed = parseXmlStartTag(rawTag);
135065
+ if (!parsed)
135066
+ return null;
135067
+ const bindings = new Map(stack.at(-1)?.bindings ?? baseBindings);
135068
+ for (const attribute of parsed.attributes) {
135069
+ if (attribute.qname === "xmlns")
135070
+ bindings.set("", attribute.value);
135071
+ else if (attribute.prefix === "xmlns")
135072
+ bindings.set(attribute.localName, attribute.value);
135073
+ }
135074
+ const namespaceUri = bindings.get(parsed.prefix) ?? "";
135075
+ const parentEntry = stack.at(-1);
135076
+ const grandparentEntry = stack.at(-2);
135077
+ const isLiveRPrChild = stack.length === 2 && parentEntry?.localName === "rPr" && grandparentEntry?.localName === "pPr";
135078
+ if (isLiveRPrChild && namespaceUri === W_NS && parsed.localName === marker.kind && parsed.selfClosing) {
135079
+ const idValue = parsed.attributes.find((attribute) => attribute.localName === "id" && (bindings.get(attribute.prefix) ?? "") === W_NS)?.value;
135080
+ const authorValue = parsed.attributes.find((attribute) => attribute.localName === "author" && (bindings.get(attribute.prefix) ?? "") === W_NS)?.value;
135081
+ const dateValue = parsed.attributes.find((attribute) => attribute.localName === "date" && (bindings.get(attribute.prefix) ?? "") === W_NS)?.value;
135082
+ if (parseRevisionWId(idValue ?? "") === marker.wId && authorValue === marker.author && dateValue === marker.date) {
135083
+ if (removal !== null)
135084
+ return null;
135085
+ removal = { start, end: end + 1 };
135086
+ }
135087
+ }
135088
+ if (!parsed.selfClosing)
135089
+ stack.push({ qname: parsed.qname, localName: parsed.localName, bindings });
135090
+ position = end + 1;
135091
+ }
135092
+ if (stack.length > 0 || removal === null)
135093
+ return null;
135094
+ return xml.slice(0, removal.start) + xml.slice(removal.end);
135095
+ }
134928
135096
  function trackedAnnotationEntries(annotations) {
134929
135097
  return annotations?.find((capture) => capture.family === "tracked-changes")?.entries ?? [];
134930
135098
  }
@@ -135265,9 +135433,21 @@ function parseXmlStartTag(rawTag) {
135265
135433
  return null;
135266
135434
  }
135267
135435
  function validateRunContents(xml, options) {
135268
- if (xml === "")
135436
+ const baseHasNoteMarker = options.baseRunXml !== undefined && /<(?:[A-Za-z_][\w.-]*:)?(?:footnoteRef|endnoteRef)\b/.test(options.baseRunXml);
135437
+ const targetHasNoteMarker = /<(?:[A-Za-z_][\w.-]*:)?(?:footnoteRef|endnoteRef)\b/.test(xml);
135438
+ let runs = xml;
135439
+ if (baseHasNoteMarker || targetHasNoteMarker) {
135440
+ const family = options.noteMarkerFamily;
135441
+ const target = family && splitLeadingNoteMarkerRun(xml, family);
135442
+ const base2 = family && options.baseRunXml !== undefined ? splitLeadingNoteMarkerRun(options.baseRunXml, family) : undefined;
135443
+ if (!target || options.baseRunXml !== undefined && (!base2 || !sameNoteMarkerRunXml(base2.markerRunXml, target.markerRunXml))) {
135444
+ return { ok: false, reason: "target runs change or misplace the note marker" };
135445
+ }
135446
+ runs = target.remainingRunXml;
135447
+ }
135448
+ if (runs === "")
135269
135449
  return { ok: true };
135270
- const replayXml = stripAllowedNoteReferences(xml, options);
135450
+ const replayXml = stripAllowedNoteReferences(runs, options);
135271
135451
  const withoutCarriers = replayXml !== null && options.baseRunXml ? stripRetainedCarrier(replayXml, options.baseRunXml, options.allowNamespaceDeclarationDifference === true) : replayXml;
135272
135452
  const withoutBookmarks = withoutCarriers !== null && /<(?:[\w.-]+:)?bookmark(?:Start|End)\b/.test(withoutCarriers) ? preservedBookmarkRunTokens(withoutCarriers)?.strippedXml ?? null : withoutCarriers;
135273
135453
  if (withoutBookmarks === null || UNSUPPORTED_XML.test(withoutBookmarks) || RELATIONSHIP_REFERENCE.test(withoutBookmarks)) {
@@ -135303,9 +135483,27 @@ function validateCompareReplayPayload(payload, options = {}) {
135303
135483
  if (!dependencyResult.ok)
135304
135484
  return dependencyResult;
135305
135485
  if (payload.targetParagraphPropertiesXml !== undefined) {
135306
- const result = validateParagraphProperties(payload.targetParagraphPropertiesXml);
135307
- if (!result.ok)
135308
- return result;
135486
+ if (payload.targetParagraphMarkRevisionReplay !== undefined) {
135487
+ const proof = payload.targetParagraphMarkRevisionReplay;
135488
+ if (proof.policy !== "preserve-target-paragraph-mark-revision") {
135489
+ return { ok: false, reason: "target paragraph mark revision replay policy is incomplete" };
135490
+ }
135491
+ const marker = parseParagraphMarkRevisionMarker(payload.targetParagraphPropertiesXml);
135492
+ if (!marker || marker.kind !== proof.kind || marker.wId !== proof.wId || marker.author !== proof.author || marker.date !== proof.date) {
135493
+ return { ok: false, reason: "target paragraph mark revision replay proof does not match the target paragraph properties" };
135494
+ }
135495
+ const strippedXml = removeProvenParagraphMarkMarker(payload.targetParagraphPropertiesXml, marker);
135496
+ if (strippedXml === null) {
135497
+ return { ok: false, reason: "target paragraph mark revision replay proof could not be isolated from the target paragraph properties" };
135498
+ }
135499
+ const result = validateParagraphProperties(strippedXml);
135500
+ if (!result.ok)
135501
+ return result;
135502
+ } else {
135503
+ const result = validateParagraphProperties(payload.targetParagraphPropertiesXml);
135504
+ if (!result.ok)
135505
+ return result;
135506
+ }
135309
135507
  }
135310
135508
  if (payload.targetRevisionReplay !== undefined) {
135311
135509
  if (payload.targetRevisionReplay.policy !== "preserve-target-revision-set" || payload.targetRunXml === undefined) {
@@ -136103,14 +136301,27 @@ function validateBodyOperation(operation, label, problems, replayOptions = {}) {
136103
136301
  }
136104
136302
  }
136105
136303
  }
136106
- const carriesReplayPayload = operation.targetParagraphPropertiesXml !== undefined || operation.targetRunXml !== undefined || operation.replayDependencies !== undefined || operation.replayDependencyProofFailed !== undefined;
136107
- if (carriesReplayPayload && hasValidReplayPayloadShape && hasValidReplayShape) {
136304
+ let hasValidParagraphMarkReplayShape = operation.targetParagraphMarkRevisionReplay === undefined;
136305
+ if (operation.targetParagraphMarkRevisionReplay !== undefined) {
136306
+ const replay = operation.targetParagraphMarkRevisionReplay;
136307
+ const hasValidShape = isRecord9(replay) && replay.policy === "preserve-target-paragraph-mark-revision" && (replay.kind === "ins" || replay.kind === "del") && typeof replay.wId === "number" && Number.isSafeInteger(replay.wId) && isNonEmptyString2(replay.author) && (replay.date === undefined || typeof replay.date === "string");
136308
+ hasValidParagraphMarkReplayShape = hasValidShape;
136309
+ if (!hasValidShape) {
136310
+ problems.push(`${label}.targetParagraphMarkRevisionReplay: invalid target paragraph mark revision replay`);
136311
+ }
136312
+ if (operation.kind === "edit" || operation.kind === "formatEdit") {
136313
+ problems.push(`${label}.targetParagraphMarkRevisionReplay: ${operation.kind} does not support paragraph mark revision replay`);
136314
+ hasValidParagraphMarkReplayShape = false;
136315
+ }
136316
+ }
136317
+ const carriesReplayPayload = operation.kind !== "delete" && (operation.targetParagraphPropertiesXml !== undefined || operation.targetRunXml !== undefined || operation.replayDependencies !== undefined || operation.replayDependencyProofFailed !== undefined || operation.targetParagraphMarkRevisionReplay !== undefined);
136318
+ if (carriesReplayPayload && hasValidReplayPayloadShape && hasValidReplayShape && hasValidParagraphMarkReplayShape) {
136108
136319
  const proof = validateCompareReplayPayload(operation, {
136109
136320
  ...replayOptions,
136110
136321
  expectedCurrentText: operation.kind !== "delete" && typeof operation.text === "string" ? operation.text : undefined
136111
136322
  });
136112
136323
  if (!proof.ok) {
136113
- const field = operation.targetRevisionReplay === undefined ? "replayPayload" : "targetRevisionReplay";
136324
+ const field = operation.targetRevisionReplay === undefined ? operation.targetParagraphMarkRevisionReplay === undefined ? "replayPayload" : "targetParagraphMarkRevisionReplay" : "targetRevisionReplay";
136114
136325
  problems.push(`${label}.${field}: ${proof.reason}`);
136115
136326
  }
136116
136327
  }
@@ -136876,8 +137087,8 @@ function validatePlanDispositions(value, steps, problems) {
136876
137087
  }
136877
137088
  });
136878
137089
  }
136879
- const bodyHasTargetRevisionReplay = Array.isArray(value.bodyOperations) && value.bodyOperations.some((operation) => isRecord9(operation) && operation.targetRevisionReplay !== undefined);
136880
- const storyHasTargetRevisionReplay = Array.isArray(value.storyOperations) && value.storyOperations.some((group) => isRecord9(group) && Array.isArray(group.operations) && group.operations.some((operation) => isRecord9(operation) && operation.targetRevisionReplay !== undefined));
137090
+ const bodyHasTargetRevisionReplay = Array.isArray(value.bodyOperations) && value.bodyOperations.some((operation) => isRecord9(operation) && (operation.targetRevisionReplay !== undefined || operation.targetParagraphMarkRevisionReplay !== undefined));
137091
+ const storyHasTargetRevisionReplay = Array.isArray(value.storyOperations) && value.storyOperations.some((group) => isRecord9(group) && Array.isArray(group.operations) && group.operations.some((operation) => isRecord9(operation) && (operation.targetRevisionReplay !== undefined || operation.targetParagraphMarkRevisionReplay !== undefined)));
136881
137092
  if ((bodyHasTargetRevisionReplay || storyHasTargetRevisionReplay) && dispositions.get("tracked-changes") !== "supported") {
136882
137093
  problems.push("target revision replay requires a supported tracked-changes step");
136883
137094
  }
@@ -136990,7 +137201,8 @@ function validateCompareApplyPlan(value, baseBody = []) {
136990
137201
  if (!isRecord9(group) || !Array.isArray(group.operations))
136991
137202
  return;
136992
137203
  group.operations.forEach((operation, operationIndex) => {
136993
- validateBodyOperation(operation, `storyOperations[${index}].operations[${operationIndex}]`, problems);
137204
+ const noteMarkerFamily = (group.family === "footnotes" || group.family === "endnotes") && isRecord9(operation) && (operation.kind === "edit" || operation.kind === "formatEdit") ? group.family : undefined;
137205
+ validateBodyOperation(operation, `storyOperations[${index}].operations[${operationIndex}]`, problems, { noteMarkerFamily });
136994
137206
  });
136995
137207
  });
136996
137208
  }
@@ -138970,6 +139182,33 @@ function matchingRevisionAnnotationKeys(annotations, revisions, partUri, paragra
138970
139182
  }
138971
139183
  return keys;
138972
139184
  }
139185
+ function matchingParagraphMarkAnnotationKey(annotations, marker, structuralKind, paragraphStructuralAnnotationKeys) {
139186
+ const entries = annotations?.find((capture) => capture.family === "tracked-changes")?.entries ?? [];
139187
+ const exactKeys = paragraphStructuralAnnotationKeys === undefined ? null : new Set(paragraphStructuralAnnotationKeys);
139188
+ const matches = entries.filter((entry) => entry.label === `structural revision ${structuralKind}` && (entry.semanticKey?.startsWith(`structural:${structuralKind}|`) ?? false) && entry.key.includes(`|${marker.wId}|`) && (exactKeys === null || exactKeys.has(entry.key)));
139189
+ return matches.length === 1 ? matches[0].key : null;
139190
+ }
139191
+ function paragraphMarkTargetRevisionReplay(entry, annotations) {
139192
+ if (!entry)
139193
+ return null;
139194
+ const marker = parseParagraphMarkRevisionMarker(entry.paragraphPropertiesXml ?? "");
139195
+ if (!marker)
139196
+ return null;
139197
+ const structuralKind = marker.kind === "ins" ? "paragraph-mark-insertion" : "paragraph-mark-deletion";
139198
+ const key2 = matchingParagraphMarkAnnotationKey(annotations, marker, structuralKind, entry.structuralChangeAnnotationKeys);
139199
+ if (!key2)
139200
+ return null;
139201
+ return {
139202
+ key: key2,
139203
+ replay: {
139204
+ policy: "preserve-target-paragraph-mark-revision",
139205
+ kind: marker.kind,
139206
+ wId: marker.wId,
139207
+ author: marker.author,
139208
+ date: marker.date
139209
+ }
139210
+ };
139211
+ }
138973
139212
  function attachExactTargetRevisionReplay(operations, baseEntries, targetEntries, entityMatch, baseAnnotations, targetAnnotations, basePartUri, targetPartUri, entityId = (blockId) => blockId) {
138974
139213
  if (!entityMatch) {
138975
139214
  return {
@@ -138988,51 +139227,69 @@ function attachExactTargetRevisionReplay(operations, baseEntries, targetEntries,
138988
139227
  const replayOperations = operations.map((operation) => {
138989
139228
  if (operation.kind === "insert" || operation.kind === "insertAtStart") {
138990
139229
  const targetEntry2 = targetById.get(entityId(operation.blockId));
138991
- if (!targetEntry2)
138992
- return operation;
138993
- const targetInspection2 = inspectDirectParagraphRevisionRuns(targetEntry2.runXml ?? "");
138994
- if (!targetInspection2 || targetInspection2.revisions.length === 0 || targetInspection2.currentText !== targetEntry2.text) {
138995
- return operation;
139230
+ let targetRevisionReplayPatch;
139231
+ let targetParagraphMarkRevisionReplayPatch;
139232
+ if (targetEntry2) {
139233
+ const targetInspection2 = inspectDirectParagraphRevisionRuns(targetEntry2.runXml ?? "");
139234
+ if (targetInspection2 && targetInspection2.revisions.length > 0 && targetInspection2.currentText === targetEntry2.text) {
139235
+ const targetAnnotationKeys2 = matchingRevisionAnnotationKeys(targetAnnotations, targetInspection2.revisions, targetPartUri, targetEntry2.trackedChangeAnnotationKeys);
139236
+ if (targetAnnotationKeys2) {
139237
+ for (const key2 of targetAnnotationKeys2)
139238
+ coveredTargetAnnotations.add(key2);
139239
+ changedTrackedXmlReplayed = true;
139240
+ targetRevisionReplayPatch = {
139241
+ targetRevisionReplay: {
139242
+ policy: "preserve-target-revision-set",
139243
+ structuralAction: "insert",
139244
+ originalText: targetInspection2.originalText,
139245
+ revisionWIds: targetInspection2.revisions.map((revision) => revision.wId)
139246
+ }
139247
+ };
139248
+ }
139249
+ }
139250
+ const markResult = paragraphMarkTargetRevisionReplay(targetEntry2, targetAnnotations);
139251
+ if (markResult) {
139252
+ coveredTargetAnnotations.add(markResult.key);
139253
+ changedTrackedXmlReplayed = true;
139254
+ targetParagraphMarkRevisionReplayPatch = { targetParagraphMarkRevisionReplay: markResult.replay };
139255
+ }
138996
139256
  }
138997
- const targetAnnotationKeys2 = matchingRevisionAnnotationKeys(targetAnnotations, targetInspection2.revisions, targetPartUri, targetEntry2.trackedChangeAnnotationKeys);
138998
- if (!targetAnnotationKeys2)
139257
+ if (!targetRevisionReplayPatch && !targetParagraphMarkRevisionReplayPatch)
138999
139258
  return operation;
139000
- for (const key2 of targetAnnotationKeys2)
139001
- coveredTargetAnnotations.add(key2);
139002
- changedTrackedXmlReplayed = true;
139003
- return {
139004
- ...operation,
139005
- targetRevisionReplay: {
139006
- policy: "preserve-target-revision-set",
139007
- structuralAction: "insert",
139008
- originalText: targetInspection2.originalText,
139009
- revisionWIds: targetInspection2.revisions.map((revision) => revision.wId)
139010
- }
139011
- };
139259
+ return { ...operation, ...targetRevisionReplayPatch, ...targetParagraphMarkRevisionReplayPatch };
139012
139260
  }
139013
139261
  if (operation.kind === "delete") {
139014
139262
  const baseEntry2 = baseById.get(entityId(operation.blockId));
139015
- if (!baseEntry2)
139016
- return operation;
139017
- const baseInspection2 = inspectDirectParagraphRevisionRuns(baseEntry2.runXml ?? "");
139018
- if (!baseInspection2 || baseInspection2.revisions.length === 0 || baseInspection2.currentText !== baseEntry2.text) {
139019
- return operation;
139263
+ let targetRevisionReplayPatch;
139264
+ let targetParagraphMarkRevisionReplayPatch;
139265
+ if (baseEntry2) {
139266
+ const baseInspection2 = inspectDirectParagraphRevisionRuns(baseEntry2.runXml ?? "");
139267
+ if (baseInspection2 && baseInspection2.revisions.length > 0 && baseInspection2.currentText === baseEntry2.text) {
139268
+ const baseAnnotationKeys2 = matchingRevisionAnnotationKeys(baseAnnotations, baseInspection2.revisions, basePartUri, baseEntry2.trackedChangeAnnotationKeys);
139269
+ if (baseAnnotationKeys2) {
139270
+ for (const key2 of baseAnnotationKeys2)
139271
+ coveredBaseAnnotations.add(key2);
139272
+ changedTrackedXmlReplayed = true;
139273
+ targetRevisionReplayPatch = {
139274
+ targetRevisionReplay: {
139275
+ policy: "preserve-target-revision-set",
139276
+ structuralAction: "delete",
139277
+ originalText: baseInspection2.originalText,
139278
+ revisionWIds: baseInspection2.revisions.map((revision) => revision.wId)
139279
+ }
139280
+ };
139281
+ }
139282
+ }
139283
+ const markResult = paragraphMarkTargetRevisionReplay(baseEntry2, baseAnnotations);
139284
+ if (markResult) {
139285
+ coveredBaseAnnotations.add(markResult.key);
139286
+ changedTrackedXmlReplayed = true;
139287
+ targetParagraphMarkRevisionReplayPatch = { targetParagraphMarkRevisionReplay: markResult.replay };
139288
+ }
139020
139289
  }
139021
- const baseAnnotationKeys2 = matchingRevisionAnnotationKeys(baseAnnotations, baseInspection2.revisions, basePartUri, baseEntry2.trackedChangeAnnotationKeys);
139022
- if (!baseAnnotationKeys2)
139290
+ if (!targetRevisionReplayPatch && !targetParagraphMarkRevisionReplayPatch)
139023
139291
  return operation;
139024
- for (const key2 of baseAnnotationKeys2)
139025
- coveredBaseAnnotations.add(key2);
139026
- changedTrackedXmlReplayed = true;
139027
- return {
139028
- ...operation,
139029
- targetRevisionReplay: {
139030
- policy: "preserve-target-revision-set",
139031
- structuralAction: "delete",
139032
- originalText: baseInspection2.originalText,
139033
- revisionWIds: baseInspection2.revisions.map((revision) => revision.wId)
139034
- }
139035
- };
139292
+ return { ...operation, ...targetRevisionReplayPatch, ...targetParagraphMarkRevisionReplayPatch };
139036
139293
  }
139037
139294
  const baseEntryId = entityId(operation.blockId);
139038
139295
  const baseEntry = baseById.get(baseEntryId);
@@ -139106,7 +139363,7 @@ function attachExactTargetRevisionReplayToStories(groups, base2, target, matchRe
139106
139363
  });
139107
139364
  return { groups: replayGroups, coveredBaseAnnotations, coveredTargetAnnotations, changedTrackedXmlReplayed };
139108
139365
  }
139109
- function firstUnsafeReplayReason(operations, noteLifecycle = [], targetStories = [], baseBody = []) {
139366
+ function firstUnsafeReplayReason(operations, noteLifecycle = [], targetStories = [], baseBody = [], noteMarkerFamily) {
139110
139367
  const createdNoteReferences = noteLifecycle.filter((operation) => operation.kind === "create-note-definition" || operation.kind === "create-note-story").map((operation) => ({ family: operation.family, noteId: operation.noteId }));
139111
139368
  const retainedNoteReferences = targetStories.flatMap((story) => (story.family === "footnotes" || story.family === "endnotes") && story.noteId ? [{ family: story.family, noteId: story.noteId }] : []);
139112
139369
  const allowedNoteReferences = [...createdNoteReferences, ...retainedNoteReferences];
@@ -139116,7 +139373,7 @@ function firstUnsafeReplayReason(operations, noteLifecycle = [], targetStories =
139116
139373
  continue;
139117
139374
  const result = validateCompareReplayPayload(operation, {
139118
139375
  allowedNoteReferences,
139119
- ...operation.kind === "edit" || operation.kind === "formatEdit" ? { baseRunXml: baseRunByBlockId.get(operation.blockId) } : {}
139376
+ ...operation.kind === "edit" || operation.kind === "formatEdit" ? { baseRunXml: baseRunByBlockId.get(operation.blockId), noteMarkerFamily } : {}
139120
139377
  });
139121
139378
  if (!result.ok)
139122
139379
  return result.reason;
@@ -139310,7 +139567,9 @@ function planCompare(base2, target) {
139310
139567
  for (const group of storyOperations) {
139311
139568
  if (!replayableStoryFamilies.has(group.family))
139312
139569
  continue;
139313
- const unsafeStoryReason = firstUnsafeReplayReason(group.operations);
139570
+ const noteMarkerFamily = group.family === "footnotes" || group.family === "endnotes" ? group.family : undefined;
139571
+ const baseStory = noteMarkerFamily ? base2.stories?.find((story) => story.storyId === group.storyId && story.family === group.family && story.noteId === group.noteId) : undefined;
139572
+ const unsafeStoryReason = firstUnsafeReplayReason(group.operations, [], [], baseStory?.entries ?? [], noteMarkerFamily);
139314
139573
  if (!unsafeStoryReason || unsafeStoryFamilies.has(group.family))
139315
139574
  continue;
139316
139575
  unsafeStoryFamilies.add(group.family);
@@ -151132,7 +151391,7 @@ var init_history_text_replay = __esm(() => {
151132
151391
  MAX_HISTORY_OWNER_BYTES = 512 * 1024;
151133
151392
  });
151134
151393
 
151135
- // ../../../v2/node_modules/.pnpm/fflate@0.8.2/node_modules/fflate/esm/index.mjs
151394
+ // ../../node_modules/.pnpm/fflate@0.8.2/node_modules/fflate/esm/index.mjs
151136
151395
  import { createRequire as createRequire3 } from "module";
151137
151396
  function deflateSync(data, opts) {
151138
151397
  return dopt(data, opts || {}, 0, 0);
@@ -221816,7 +222075,7 @@ function runCompareApplyCommit(input) {
221816
222075
  if (input.options.expectedPackageRevision && input.options.expectedPackageRevision !== state.packageRevision) {
221817
222076
  return rejected14(txId, "base-revision-drift");
221818
222077
  }
221819
- if (input.readCurrentPackageBinding() !== op.planBinding) {
222078
+ if (input.readCurrentComparePlanBinding() !== op.planBinding) {
221820
222079
  return rejected14(txId, "base-revision-drift");
221821
222080
  }
221822
222081
  const changeMode = op.changeMode;
@@ -222476,7 +222735,7 @@ function hasTerminalTrackedParagraphDeletion(state, groups, storyPackageOperatio
222476
222735
  if (!index)
222477
222736
  return false;
222478
222737
  return group.bodySteps.some((step2, stepIndex) => {
222479
- if (step2.kind !== "delete" || step2.targetRevisionReplay !== undefined)
222738
+ if (step2.kind !== "delete" || step2.targetRevisionReplay !== undefined || step2.targetParagraphMarkRevisionReplay !== undefined)
222480
222739
  return false;
222481
222740
  if (isBodyReplayNoteReferenceRemoval(state, group.storyId, step2, storyPackageOperations))
222482
222741
  return false;
@@ -222582,7 +222841,10 @@ function normalizeCompareBodyStep(step2, sectionSteps, referenceSteps, allowedNo
222582
222841
  return step2.targetRevisionReplay === undefined || step2.targetRevisionReplay.structuralAction === "delete" ? step2 : null;
222583
222842
  }
222584
222843
  const baseRunXml = step2.kind === "edit" || step2.kind === "formatEdit" ? liveCompareBodyRunXml(state, storyId, step2.blockId) : undefined;
222585
- if (!validateCompareBodyReplayPayload(step2, sectionSteps, referenceSteps, allowedNoteReferences, step2.text, baseRunXml))
222844
+ const noteMarkerFamily = step2.kind === "edit" || step2.kind === "formatEdit" ? storyId.startsWith("footnotes:") ? "footnotes" : storyId.startsWith("endnotes:") ? "endnotes" : undefined : undefined;
222845
+ if (noteMarkerFamily && baseRunXml && /<(?:[A-Za-z_][\w.-]*:)?(?:footnoteRef|endnoteRef)\b/.test(baseRunXml) && step2.targetRunXml === undefined)
222846
+ return null;
222847
+ if (!validateCompareBodyReplayPayload(step2, sectionSteps, referenceSteps, allowedNoteReferences, step2.text, baseRunXml, noteMarkerFamily))
222586
222848
  return null;
222587
222849
  const targetParagraphPropertiesXml = step2.targetParagraphPropertiesXml === undefined ? undefined : canonicalizeCompareBodyParagraphPropertiesXml(step2.targetParagraphPropertiesXml, sectionSteps);
222588
222850
  const targetRunXml = step2.targetRunXml === undefined ? undefined : (step2.targetRunXml.includes("<w:drawing") || step2.targetRunXml.includes("<w:fldSimple")) && baseRunXml && referenceSteps.length === 0 ? step2.targetRunXml : canonicalizeCompareBodyRunXml(step2.targetRunXml, referenceSteps);
@@ -222597,8 +222859,9 @@ function normalizeCompareBodyStep(step2, sectionSteps, referenceSteps, allowedNo
222597
222859
  targetParagraphPropertiesXml,
222598
222860
  targetRunXml,
222599
222861
  replayDependencies: "replayDependencies" in step2 ? step2.replayDependencies : undefined,
222600
- targetRevisionReplay: "targetRevisionReplay" in step2 ? step2.targetRevisionReplay : undefined
222601
- }, sectionSteps, referenceSteps, allowedNoteReferences, step2.text, baseRunXml) ? normalized : null;
222862
+ targetRevisionReplay: "targetRevisionReplay" in step2 ? step2.targetRevisionReplay : undefined,
222863
+ targetParagraphMarkRevisionReplay: "targetParagraphMarkRevisionReplay" in step2 ? step2.targetParagraphMarkRevisionReplay : undefined
222864
+ }, sectionSteps, referenceSteps, allowedNoteReferences, step2.text, baseRunXml, noteMarkerFamily) ? normalized : null;
222602
222865
  }
222603
222866
  function liveCompareBodyRunXml(state, storyId, blockId) {
222604
222867
  const entry = getStoryParagraphIndexFromState(state, storyId)?.byParaId(blockId);
@@ -222731,7 +222994,7 @@ function sourceProofBindsReference(proof, family) {
222731
222994
  const childXml = wrappedSource.slice(child.start, child.end);
222732
222995
  return isValidNoteReferenceReplayRunXml(childXml, family, proof.noteId, child.namespaceBindings) && replayCarrierXmlEquals(childXml, proof.referenceRunXml);
222733
222996
  }
222734
- function validateCompareBodyReplayPayload(payload, sectionSteps, referenceSteps, allowedNoteReferences, expectedCurrentText, baseRunXml) {
222997
+ function validateCompareBodyReplayPayload(payload, sectionSteps, referenceSteps, allowedNoteReferences, expectedCurrentText, baseRunXml, noteMarkerFamily) {
222735
222998
  if (payload.targetRunXml !== undefined && expectedCurrentText !== undefined && projectCompareReplayCurrentText(payload.targetRunXml) !== expectedCurrentText.replace(/\uFFFC/g, "")) {
222736
222999
  return false;
222737
223000
  }
@@ -222739,7 +223002,12 @@ function validateCompareBodyReplayPayload(payload, sectionSteps, referenceSteps,
222739
223002
  if (targetParagraphPropertiesXml === null)
222740
223003
  return false;
222741
223004
  const targetRunXml = payload.targetRunXml === undefined ? undefined : stripProtectedReferenceTokens(payload.targetRunXml, referenceSteps);
222742
- return targetRunXml !== null && validateCompareReplayPayload({ ...payload, targetParagraphPropertiesXml, targetRunXml }, { allowedNoteReferences, baseRunXml, allowNamespaceDeclarationDifference: baseRunXml !== undefined }).ok;
223005
+ return targetRunXml !== null && validateCompareReplayPayload({ ...payload, targetParagraphPropertiesXml, targetRunXml }, {
223006
+ allowedNoteReferences,
223007
+ baseRunXml,
223008
+ noteMarkerFamily,
223009
+ allowNamespaceDeclarationDifference: baseRunXml !== undefined
223010
+ }).ok;
222743
223011
  }
222744
223012
  function stripProtectedSectionTokens(xml, sectionSteps) {
222745
223013
  const tokens = collectProtectedSectionTokens(xml, sectionSteps);
@@ -223090,8 +223358,8 @@ function runBodyStep(input, storyId, noteId, step2, changeMode, options, pushHis
223090
223358
  if (!hasSuccessor)
223091
223359
  return rejected14(txId, "unsupported-context");
223092
223360
  }
223093
- if (step2.targetRevisionReplay !== undefined) {
223094
- if (step2.targetRevisionReplay.structuralAction !== "delete") {
223361
+ if (step2.targetRevisionReplay !== undefined || step2.targetParagraphMarkRevisionReplay !== undefined) {
223362
+ if (step2.targetRevisionReplay !== undefined && step2.targetRevisionReplay.structuralAction !== "delete") {
223095
223363
  return rejected14(txId, "unsupported-context");
223096
223364
  }
223097
223365
  const entry = getStoryParagraphIndexFromState(state, storyId)?.byParaId(step2.blockId);
@@ -223230,7 +223498,10 @@ function prepareTrackedTerminalParagraphDeleteAtState(input) {
223230
223498
  }
223231
223499
  function resolveExactStructuralRevisionDeletion(state, storyId, step2) {
223232
223500
  const replay = step2.targetRevisionReplay;
223233
- if (!replay || replay.structuralAction !== "delete")
223501
+ const markReplay = step2.targetParagraphMarkRevisionReplay;
223502
+ if (replay !== undefined && replay.structuralAction !== "delete")
223503
+ return null;
223504
+ if (replay === undefined && markReplay === undefined)
223234
223505
  return null;
223235
223506
  const entry = getStoryParagraphIndexFromState(state, storyId)?.byParaId(step2.blockId);
223236
223507
  const bytes = entry ? state.packageBytes.get(entry.partUri) : undefined;
@@ -223238,9 +223509,22 @@ function resolveExactStructuralRevisionDeletion(state, storyId, step2) {
223238
223509
  return null;
223239
223510
  const paraXml = TD59.decode(bytes.subarray(entry.byteStart, entry.byteEnd));
223240
223511
  const wrapper = readParagraphWrapper(paraXml, step2.blockId, bytes, entry.byteStart);
223241
- const inspection = inspectDirectParagraphRevisionRuns(stripElements(paraXml.slice(wrapper.contentStart, paraXml.lastIndexOf("</")), "pPr"));
223242
- if (!inspection || inspection.originalText !== replay.originalText || JSON.stringify(inspection.revisions.map((revision) => revision.wId)) !== JSON.stringify(replay.revisionWIds))
223243
- return null;
223512
+ const runContent = stripElements(paraXml.slice(wrapper.contentStart, paraXml.lastIndexOf("</")), "pPr");
223513
+ if (replay !== undefined && replay.structuralAction === "delete") {
223514
+ const inspection = inspectDirectParagraphRevisionRuns(runContent);
223515
+ if (!inspection || inspection.originalText !== replay.originalText || JSON.stringify(inspection.revisions.map((revision) => revision.wId)) !== JSON.stringify(replay.revisionWIds))
223516
+ return null;
223517
+ } else {
223518
+ const inspection = inspectDirectRunSequence(runContent);
223519
+ if (!inspection || inspection.revisions.length > 0)
223520
+ return null;
223521
+ }
223522
+ if (markReplay !== undefined) {
223523
+ const pPrXml = findFirstElement(paraXml, "pPr")?.xml ?? "";
223524
+ const marker = parseParagraphMarkRevisionMarker(pPrXml);
223525
+ if (!marker || marker.kind !== markReplay.kind || marker.wId !== markReplay.wId || marker.author !== markReplay.author || marker.date !== markReplay.date)
223526
+ return null;
223527
+ }
223244
223528
  const parsedPart = collectXmlElementRanges(TD59.decode(bytes));
223245
223529
  const paragraphCharStart = TD59.decode(bytes.subarray(0, entry.byteStart)).length;
223246
223530
  const paragraphRange = parsedPart.ranges.find((range) => range.start === paragraphCharStart && range.tag.namespaceUri === NS_W && range.tag.localName === "p");
@@ -223255,7 +223539,7 @@ function resolveExactStructuralRevisionDeletion(state, storyId, step2) {
223255
223539
  byteEnd: entry.byteEnd,
223256
223540
  charStart: paragraphRange.start,
223257
223541
  charEnd: paragraphRange.end,
223258
- revisionWIds: replay.revisionWIds
223542
+ revisionWIds: [...replay?.revisionWIds ?? [], ...markReplay ? [markReplay.wId] : []]
223259
223543
  };
223260
223544
  }
223261
223545
  function runTargetRevisionReplayCommit(input, storyId, step2, options, pushHistory) {
@@ -223383,7 +223667,7 @@ function incomingRevisionIdsCollide(input, targetPartUri, targetStart, targetEnd
223383
223667
  return true;
223384
223668
  if (liveTargetRunXml) {
223385
223669
  const previousOwner = parseTargetRevisionReplayOwner(transferFrom);
223386
- const previousInspection = previousOwner ? inspectDirectParagraphRevisionRuns(previousOwner.targetRunXml) : null;
223670
+ const previousInspection = previousOwner?.targetRunXml !== undefined ? inspectDirectParagraphRevisionRuns(previousOwner.targetRunXml) : null;
223387
223671
  if (!previousInspection)
223388
223672
  return true;
223389
223673
  for (const { wId } of previousInspection.revisions) {
@@ -223425,7 +223709,7 @@ function transferableInPlaceRevisionReplayOwner(input) {
223425
223709
  return null;
223426
223710
  const previousKey = parseTargetRevisionReplayOwner(previousOwner);
223427
223711
  const nextKey = parseTargetRevisionReplayOwner(input.replayOwner);
223428
- if (!previousKey || !nextKey || previousKey.partUri !== input.targetPartUri || nextKey.partUri !== input.targetPartUri || previousKey.blockId !== nextKey.blockId || previousKey.targetParagraphPropertiesXml !== nextKey.targetParagraphPropertiesXml || !sameTargetRevisionReplayProvenance(previousKey.targetRevisionReplay, nextKey.targetRevisionReplay))
223712
+ if (!previousKey || !nextKey || previousKey.partUri !== input.targetPartUri || nextKey.partUri !== input.targetPartUri || previousKey.blockId !== nextKey.blockId || previousKey.targetParagraphPropertiesXml !== nextKey.targetParagraphPropertiesXml || !sameTargetRevisionReplayProvenance(previousKey.targetRevisionReplay, nextKey.targetRevisionReplay) || !sameTargetParagraphMarkRevisionReplay(previousKey.targetParagraphMarkRevisionReplay, nextKey.targetParagraphMarkRevisionReplay) || previousKey.targetRunXml === undefined || nextKey.targetRunXml === undefined)
223429
223713
  return null;
223430
223714
  const previousInspection = inspectDirectParagraphRevisionRuns(previousKey.targetRunXml);
223431
223715
  if (!previousInspection || !liveInspection || JSON.stringify(previousInspection) !== JSON.stringify(liveInspection)) {
@@ -223459,7 +223743,7 @@ function transferableRevisionReplayOwner(input) {
223459
223743
  const nextKey = parseTargetRevisionReplayOwner(input.replayOwner);
223460
223744
  if (!previousKey || !nextKey || previousKey.blockId !== nextKey.blockId)
223461
223745
  return null;
223462
- if (previousKey.targetParagraphPropertiesXml !== nextKey.targetParagraphPropertiesXml || previousKey.targetRunXml !== nextKey.targetRunXml || !sameTargetRevisionReplaySet(previousKey.targetRevisionReplay, nextKey.targetRevisionReplay))
223746
+ if (previousKey.targetParagraphPropertiesXml !== nextKey.targetParagraphPropertiesXml || previousKey.targetRunXml !== nextKey.targetRunXml || !sameTargetRevisionReplaySet(previousKey.targetRevisionReplay, nextKey.targetRevisionReplay) || !sameTargetParagraphMarkRevisionReplay(previousKey.targetParagraphMarkRevisionReplay, nextKey.targetParagraphMarkRevisionReplay))
223463
223747
  return null;
223464
223748
  const previousDeletion = input.scheduledDeletions.find((deletion) => deletion.partUri === previousKey.partUri && deletion.blockId === previousKey.blockId && JSON.stringify(deletion.revisionWIds) === JSON.stringify(input.revisionWIds));
223465
223749
  return previousDeletion && input.revisionWIds.every((id) => previousDeletion.completeLiveCarrierWIds?.includes(id)) ? previousOwner : null;
@@ -223467,21 +223751,24 @@ function transferableRevisionReplayOwner(input) {
223467
223751
  function parseTargetRevisionReplayOwner(owner) {
223468
223752
  try {
223469
223753
  const key2 = JSON.parse(owner);
223470
- if (!Array.isArray(key2) || key2.length !== 5 || typeof key2[0] !== "string" || typeof key2[1] !== "string" || typeof key2[3] !== "string") {
223754
+ if (!Array.isArray(key2) || key2.length !== 6 || typeof key2[0] !== "string" || typeof key2[1] !== "string" || key2[3] !== null && typeof key2[3] !== "string") {
223471
223755
  return null;
223472
223756
  }
223473
223757
  return {
223474
223758
  partUri: key2[0],
223475
223759
  blockId: key2[1],
223476
223760
  targetParagraphPropertiesXml: key2[2],
223477
- targetRunXml: key2[3],
223478
- targetRevisionReplay: key2[4]
223761
+ targetRunXml: key2[3] === null ? undefined : key2[3],
223762
+ targetRevisionReplay: key2[4] === null ? undefined : key2[4],
223763
+ targetParagraphMarkRevisionReplay: key2[5] === null ? undefined : key2[5]
223479
223764
  };
223480
223765
  } catch {
223481
223766
  return null;
223482
223767
  }
223483
223768
  }
223484
223769
  function sameTargetRevisionReplayProvenance(left, right) {
223770
+ if (left === undefined && right === undefined)
223771
+ return true;
223485
223772
  if (!left || typeof left !== "object" || !right || typeof right !== "object")
223486
223773
  return false;
223487
223774
  const leftReplay = left;
@@ -223489,12 +223776,23 @@ function sameTargetRevisionReplayProvenance(left, right) {
223489
223776
  return leftReplay.policy === "preserve-target-revision-set" && rightReplay.policy === "preserve-target-revision-set" && leftReplay.originalText === rightReplay.originalText;
223490
223777
  }
223491
223778
  function sameTargetRevisionReplaySet(left, right) {
223779
+ if (left === undefined && right === undefined)
223780
+ return true;
223492
223781
  if (!sameTargetRevisionReplayProvenance(left, right))
223493
223782
  return false;
223494
223783
  const leftReplay = left;
223495
223784
  const rightReplay = right;
223496
223785
  return Array.isArray(leftReplay.revisionWIds) && Array.isArray(rightReplay.revisionWIds) && JSON.stringify(leftReplay.revisionWIds) === JSON.stringify(rightReplay.revisionWIds);
223497
223786
  }
223787
+ function sameTargetParagraphMarkRevisionReplay(left, right) {
223788
+ if (left === undefined && right === undefined)
223789
+ return true;
223790
+ if (!left || typeof left !== "object" || !right || typeof right !== "object")
223791
+ return false;
223792
+ const leftReplay = left;
223793
+ const rightReplay = right;
223794
+ return leftReplay.policy === "preserve-target-paragraph-mark-revision" && rightReplay.policy === "preserve-target-paragraph-mark-revision" && leftReplay.kind === rightReplay.kind && leftReplay.wId === rightReplay.wId && leftReplay.author === rightReplay.author && leftReplay.date === rightReplay.date;
223795
+ }
223498
223796
  function applyRevisionReplayOwnershipTransfers(state, transfers) {
223499
223797
  const reservations = state.idReservations.revisionWIds.replayOwners;
223500
223798
  for (const transfer of transfers) {
@@ -223580,22 +223878,36 @@ function targetRevisionReplayOwner(partUri, step2, fallbackParagraphPropertiesXm
223580
223878
  step2.blockId,
223581
223879
  step2.targetParagraphPropertiesXml ?? fallbackParagraphPropertiesXml ?? null,
223582
223880
  step2.targetRunXml,
223583
- step2.targetRevisionReplay
223881
+ step2.targetRevisionReplay,
223882
+ "targetParagraphMarkRevisionReplay" in step2 ? step2.targetParagraphMarkRevisionReplay : undefined
223584
223883
  ]);
223585
223884
  }
223586
223885
  function prepareExactTargetRevisionInsert(input, partUri, insertByte, step2) {
223587
223886
  const replay = step2.targetRevisionReplay;
223588
- if (!replay)
223887
+ const markReplay = step2.targetParagraphMarkRevisionReplay;
223888
+ if (!replay && !markReplay)
223589
223889
  return null;
223590
- if (replay.structuralAction !== "insert" || !step2.targetRunXml)
223591
- return false;
223890
+ const revisionWIds = [];
223891
+ if (replay !== undefined) {
223892
+ if (replay.structuralAction !== "insert" || !step2.targetRunXml)
223893
+ return false;
223894
+ const inspection = inspectDirectParagraphRevisionRuns(step2.targetRunXml);
223895
+ if (!inspection || inspection.currentText !== step2.text || inspection.originalText !== replay.originalText || JSON.stringify(inspection.revisions.map((revision) => revision.wId)) !== JSON.stringify(replay.revisionWIds))
223896
+ return false;
223897
+ revisionWIds.push(...replay.revisionWIds);
223898
+ }
223899
+ if (markReplay !== undefined) {
223900
+ const marker = parseParagraphMarkRevisionMarker(step2.targetParagraphPropertiesXml ?? "");
223901
+ if (!marker || marker.kind !== markReplay.kind || marker.wId !== markReplay.wId || marker.author !== markReplay.author || marker.date !== markReplay.date)
223902
+ return false;
223903
+ revisionWIds.push(markReplay.wId);
223904
+ }
223592
223905
  const replayOwner = targetRevisionReplayOwner(partUri, step2);
223593
223906
  const ownershipTransfers = [];
223594
- const inspection = inspectDirectParagraphRevisionRuns(step2.targetRunXml);
223595
- if (!inspection || inspection.currentText !== step2.text || inspection.originalText !== replay.originalText || JSON.stringify(inspection.revisions.map((revision) => revision.wId)) !== JSON.stringify(replay.revisionWIds) || incomingRevisionIdsCollide(input, partUri, insertByte, insertByte, replay.revisionWIds, replayOwner, ownershipTransfers))
223907
+ if (incomingRevisionIdsCollide(input, partUri, insertByte, insertByte, revisionWIds, replayOwner, ownershipTransfers))
223596
223908
  return false;
223597
223909
  applyRevisionReplayOwnershipTransfers(input.state, ownershipTransfers);
223598
- for (const wId of replay.revisionWIds)
223910
+ for (const wId of revisionWIds)
223599
223911
  reserveRevisionWIdForReplay(input.state, wId, replayOwner);
223600
223912
  return true;
223601
223913
  }
@@ -223717,6 +224029,24 @@ function unchangedBookmarkReferenceSteps(oldRuns, targetRuns) {
223717
224029
  afterNamespaceBindings: bookmarkBindings
223718
224030
  }];
223719
224031
  }
224032
+ function retainedNoteMarkerRuns(oldRuns, targetRuns, storyId) {
224033
+ const markerPattern = /<(?:[A-Za-z_][\w.-]*:)?(?:footnoteRef|endnoteRef)\b/;
224034
+ if (!markerPattern.test(oldRuns) && !markerPattern.test(targetRuns)) {
224035
+ return { markerRunXml: "", oldRuns, targetRuns };
224036
+ }
224037
+ const family = storyId.startsWith("footnotes:") ? "footnotes" : storyId.startsWith("endnotes:") ? "endnotes" : null;
224038
+ if (!family)
224039
+ return null;
224040
+ const oldMarker = splitLeadingNoteMarkerRun(oldRuns, family);
224041
+ const targetMarker = splitLeadingNoteMarkerRun(targetRuns, family);
224042
+ if (!oldMarker || !targetMarker || !sameNoteMarkerRunXml(oldMarker.markerRunXml, targetMarker.markerRunXml))
224043
+ return null;
224044
+ return {
224045
+ markerRunXml: oldMarker.markerRunXml,
224046
+ oldRuns: oldMarker.remainingRunXml,
224047
+ targetRuns: targetMarker.remainingRunXml
224048
+ };
224049
+ }
223720
224050
  function runCompareBodyEditCommit(input, storyId, step2, changeMode, options, pushHistory, referenceSteps) {
223721
224051
  const { state, txId } = input;
223722
224052
  const partUri = storyPartUriFromStoryId2(storyId);
@@ -223738,6 +224068,9 @@ function runCompareBodyEditCommit(input, storyId, step2, changeMode, options, pu
223738
224068
  const closeStart = paraXml.lastIndexOf("</");
223739
224069
  const innerXml = closeStart > openEnd ? paraXml.slice(openEnd, closeStart) : "";
223740
224070
  const oldRunsRaw = stripElements(innerXml, "pPr");
224071
+ const retainedMarker = retainedNoteMarkerRuns(oldRunsRaw, newRuns, storyId);
224072
+ if (!retainedMarker)
224073
+ return rejected14(txId, "unsupported-context");
223741
224074
  const stableBookmarkSteps = unchangedBookmarkReferenceSteps(oldRunsRaw, newRuns);
223742
224075
  if (stableBookmarkSteps === null && referenceSteps.length === 0)
223743
224076
  return rejected14(txId, "unsupported-context");
@@ -223756,10 +224089,10 @@ function runCompareBodyEditCommit(input, storyId, step2, changeMode, options, pu
223756
224089
  storyId
223757
224090
  });
223758
224091
  }
223759
- const oldRunsDel = oldRunsRaw.replace(/<((?:[\w.-]+:)?)t(\b[^>]*)>/g, "<$1delText$2>").replace(/<\/((?:[\w.-]+:)?)t>/g, "</$1delText>");
224092
+ const oldRunsDel = retainedMarker.oldRuns.replace(/<((?:[\w.-]+:)?)t(\b[^>]*)>/g, "<$1delText$2>").replace(/<\/((?:[\w.-]+:)?)t>/g, "</$1delText>");
223760
224093
  const hunkStamps = makeCompareHunkStampSource(stamps, input);
223761
- const retainedCarrier = newRuns.includes("<w:drawing") || newRuns.includes("<w:fldSimple") && protectedReferenceSteps.length === 0;
223762
- const protectedRuns = retainedCarrier ? protectedReferenceSteps.length === 0 ? renderTrackedRunsWithRetainedCarrier(oldRunsRaw, newRuns, hunkStamps.next, paragraphWrapper.wordprocessingPrefix, bytes, entry.byteStart, entry.byteEnd) : null : renderTrackedRunsWithProtectedReferences(oldRunsRaw, newRuns, protectedReferenceSteps, hunkStamps.next, paragraphWrapper.wordprocessingPrefix);
224094
+ const retainedCarrier = retainedMarker.targetRuns.includes("<w:drawing") || retainedMarker.targetRuns.includes("<w:fldSimple") && protectedReferenceSteps.length === 0;
224095
+ const protectedRuns = retainedCarrier ? protectedReferenceSteps.length === 0 ? renderTrackedRunsWithRetainedCarrier(retainedMarker.oldRuns, retainedMarker.targetRuns, hunkStamps.next, paragraphWrapper.wordprocessingPrefix, bytes, entry.byteStart, entry.byteEnd) : null : renderTrackedRunsWithProtectedReferences(retainedMarker.oldRuns, retainedMarker.targetRuns, protectedReferenceSteps, hunkStamps.next, paragraphWrapper.wordprocessingPrefix);
223763
224096
  if (retainedCarrier && !protectedRuns)
223764
224097
  return rejected14(txId, "unsupported-context");
223765
224098
  if (!protectedRuns && stableBookmarkSteps?.length)
@@ -223772,10 +224105,10 @@ function runCompareBodyEditCommit(input, storyId, step2, changeMode, options, pu
223772
224105
  } else {
223773
224106
  const fallbackPair = hunkStamps.next();
223774
224107
  delXml = oldRunsDel ? wrapTracked("del", oldRunsDel, fallbackPair.del, "rsidDel", paragraphWrapper.wordprocessingPrefix) : "";
223775
- insXml = newRuns ? wrapTracked("ins", newRuns, fallbackPair.ins, "rsidR", paragraphWrapper.wordprocessingPrefix) : "";
224108
+ insXml = retainedMarker.targetRuns ? wrapTracked("ins", retainedMarker.targetRuns, fallbackPair.ins, "rsidR", paragraphWrapper.wordprocessingPrefix) : "";
223776
224109
  }
223777
224110
  const trackedPPrXml = buildTrackedParagraphProperties(targetParagraphPropertiesXml, pPrXml, stamps.paragraphProperties ?? stamps.ins, paragraphWrapper.wordprocessingPrefix);
223778
- const assembledParaXml = `${paragraphWrapper.openTag}${trackedPPrXml}${delXml}${insXml}${paragraphWrapper.closeTag}`;
224111
+ const assembledParaXml = `${paragraphWrapper.openTag}${trackedPPrXml}` + `${retainedMarker.markerRunXml}${delXml}${insXml}${paragraphWrapper.closeTag}`;
223779
224112
  if (hunkStamps.usedPairs.length === 0) {
223780
224113
  newParaXml = assembledParaXml;
223781
224114
  } else {
@@ -224068,6 +224401,9 @@ function runCompareBodyFormatEditCommit(input, storyId, step2, changeMode, optio
224068
224401
  const closeStart = paraXml.lastIndexOf("</");
224069
224402
  const innerXml = closeStart > openEnd ? paraXml.slice(openEnd, closeStart) : "";
224070
224403
  const oldRunsRaw = stripElements(innerXml, "pPr");
224404
+ const retainedMarker = retainedNoteMarkerRuns(oldRunsRaw, targetRunXml, storyId);
224405
+ if (!retainedMarker)
224406
+ return rejected14(txId, "unsupported-context");
224071
224407
  const paragraphPropertiesChanged = !equivalentParagraphProperties(targetPPrXml, pPrXml);
224072
224408
  const stableBookmarkSteps = unchangedBookmarkReferenceSteps(oldRunsRaw, targetRunXml);
224073
224409
  if (stableBookmarkSteps === null && referenceSteps.length === 0)
@@ -224135,12 +224471,12 @@ function runCompareBodyFormatEditCommit(input, storyId, step2, changeMode, optio
224135
224471
  const stamps = compareTrackedStampPair(input, paragraphPropertiesChanged);
224136
224472
  if (!stamps)
224137
224473
  return rejected14(txId, "no-author-configured");
224138
- const oldRunsDel = oldRunsRaw.replace(/<((?:[\w.-]+:)?)t(\b[^>]*)>/g, "<$1delText$2>").replace(/<\/((?:[\w.-]+:)?)t>/g, "</$1delText>");
224139
- const protectedRuns = renderTrackedRunsWithProtectedReferences(oldRunsRaw, targetRunXml, protectedReferenceSteps, () => stamps, paragraphWrapper.wordprocessingPrefix);
224474
+ const oldRunsDel = retainedMarker.oldRuns.replace(/<((?:[\w.-]+:)?)t(\b[^>]*)>/g, "<$1delText$2>").replace(/<\/((?:[\w.-]+:)?)t>/g, "</$1delText>");
224475
+ const protectedRuns = renderTrackedRunsWithProtectedReferences(retainedMarker.oldRuns, retainedMarker.targetRuns, protectedReferenceSteps, () => stamps, paragraphWrapper.wordprocessingPrefix);
224140
224476
  if (!protectedRuns && stableBookmarkSteps?.length)
224141
224477
  return rejected14(txId, "unsupported-context");
224142
224478
  const delXml = protectedRuns?.xml ?? (oldRunsDel ? wrapTracked("del", oldRunsDel, stamps.del, "rsidDel", paragraphWrapper.wordprocessingPrefix) : "");
224143
- const insXml = protectedRuns ? "" : targetRunXml ? wrapTracked("ins", targetRunXml, stamps.ins, "rsidR", paragraphWrapper.wordprocessingPrefix) : "";
224479
+ const insXml = protectedRuns ? "" : retainedMarker.targetRuns ? wrapTracked("ins", retainedMarker.targetRuns, stamps.ins, "rsidR", paragraphWrapper.wordprocessingPrefix) : "";
224144
224480
  if (delXml || insXml) {
224145
224481
  createdRefs.push({ kind: "trackedChange", entityId: stamps.ins.rsid, storyId });
224146
224482
  }
@@ -224152,7 +224488,7 @@ function runCompareBodyFormatEditCommit(input, storyId, step2, changeMode, optio
224152
224488
  });
224153
224489
  }
224154
224490
  const trackedPPrXml = buildTrackedParagraphProperties(targetParagraphPropertiesXml, pPrXml, stamps.paragraphProperties ?? stamps.ins, paragraphWrapper.wordprocessingPrefix);
224155
- newParaXml = `${paragraphWrapper.openTag}${trackedPPrXml}${delXml}${insXml}${paragraphWrapper.closeTag}`;
224491
+ newParaXml = `${paragraphWrapper.openTag}${trackedPPrXml}` + `${retainedMarker.markerRunXml}${delXml}${insXml}${paragraphWrapper.closeTag}`;
224156
224492
  }
224157
224493
  } else {
224158
224494
  newParaXml = `${paragraphWrapper.openTag}${targetPPrXml}${targetRunXml}${paragraphWrapper.closeTag}`;
@@ -228689,13 +229025,14 @@ function changeIlvl(input, delta) {
228689
229025
  const trackedFormatting = buildTrackedListFormattingMetadata(input, op.target.storyId);
228690
229026
  if (trackedFormatting && "reason" in trackedFormatting)
228691
229027
  return rejected15(input.txId, trackedFormatting.reason);
228692
- const { target, bytes, paraXml, plan } = prepared;
229028
+ const { target, bytes, paraXml, plan, paragraphStyleId } = prepared;
228693
229029
  return commitParagraphNumPrRewrite({
228694
229030
  input,
228695
229031
  target,
228696
229032
  bytes,
228697
229033
  paraXml,
228698
229034
  numPr: { numId: plan.numId, ilvl: plan.ilvl },
229035
+ paragraphStyleId,
228699
229036
  trackedFormatting
228700
229037
  });
228701
229038
  }
@@ -228716,10 +229053,30 @@ function prepareListLevelChange(state, op, delta, author) {
228716
229053
  });
228717
229054
  if (!structural.ok)
228718
229055
  return structural;
228719
- const plan = decideListLevelChange(resolveEffectiveListReferenceForState(state, paraXml), delta);
229056
+ const effective = resolveEffectiveListReferenceForState(state, paraXml);
229057
+ const plan = decideListLevelChange(effective, delta);
228720
229058
  if (plan.kind === "reject")
228721
229059
  return { ok: false, reason: plan.reason };
228722
- return { ok: true, target, bytes, paraXml, plan };
229060
+ const targetStyle = resolveTargetLevelParagraphStyle(state, effective, plan.ilvl);
229061
+ if (!targetStyle.ok)
229062
+ return targetStyle;
229063
+ return { ok: true, target, bytes, paraXml, plan, paragraphStyleId: targetStyle.paragraphStyleId };
229064
+ }
229065
+ function resolveTargetLevelParagraphStyle(state, effective, ilvl) {
229066
+ if (effective.definition.status !== "resolved")
229067
+ return { ok: false, reason: effectiveListRejectionReason(effective) };
229068
+ const level = resolveNumberingLevel(effective.definition, ilvl);
229069
+ if (!level)
229070
+ return { ok: false, reason: "list-numbering-level-missing" };
229071
+ const paragraphStyleId = level.level.paragraphStyleId;
229072
+ if (paragraphStyleId === null)
229073
+ return { ok: true, paragraphStyleId: null };
229074
+ const styles = getEffectiveListResolverContextForState(state);
229075
+ const record3 = styles.styleIndex.get(paragraphStyleId);
229076
+ if (styles.stylesStatus !== "available" || !record3 || !isParagraphStyleRecord(record3) || record3.listCarrierStatus === "malformed") {
229077
+ return { ok: false, reason: "list-numbering-link-invalid" };
229078
+ }
229079
+ return { ok: true, paragraphStyleId };
228723
229080
  }
228724
229081
  function validateListLevelChange(state, op, author) {
228725
229082
  const prepared = prepareListLevelChange(state, op, op.kind === "listIndent" ? 1 : -1, author);
@@ -228839,8 +229196,11 @@ function changeIlvlRange(input, delta) {
228839
229196
  });
228840
229197
  continue;
228841
229198
  }
229199
+ const targetStyle = resolveTargetLevelParagraphStyle(input.state, ref3, nextIlvl);
229200
+ if (!targetStyle.ok)
229201
+ return rejected15(input.txId, targetStyle.reason);
228842
229202
  const trackedFormatting = trackedAllocator && !("reason" in trackedAllocator) ? trackedAllocator.mint() : undefined;
228843
- const rewrite = trackedFormatting ? rewriteParagraphNumPrTracked(paraXml, { numId: ref3.authoredNumId, ilvl: nextIlvl }, trackedFormatting) : rewriteParagraphNumPr(paraXml, { numId: ref3.authoredNumId, ilvl: nextIlvl });
229203
+ const rewrite = trackedFormatting ? rewriteParagraphNumPrTracked(paraXml, { numId: ref3.authoredNumId, ilvl: nextIlvl }, trackedFormatting, targetStyle.paragraphStyleId) : rewriteParagraphNumPr(paraXml, { numId: ref3.authoredNumId, ilvl: nextIlvl }, targetStyle.paragraphStyleId);
228844
229204
  if (!rewrite.ok)
228845
229205
  return rejected15(input.txId, rewrite.reason);
228846
229206
  items.push({
@@ -229097,13 +229457,13 @@ function decodeByteRange2(bytes, startByte, endByte) {
229097
229457
  return "";
229098
229458
  return TD60.decode(bytes.subarray(startByte, endByte));
229099
229459
  }
229100
- function rewriteParagraphNumPr(paraXml, numPr) {
229460
+ function rewriteParagraphNumPr(paraXml, numPr, paragraphStyleId) {
229101
229461
  const selfClosingParaMatch = paraXml.match(/^<((?:[\w.-]+:)?p)\b([^>]*)\/>$/);
229102
229462
  if (selfClosingParaMatch) {
229103
229463
  const paragraphQName = selfClosingParaMatch[1];
229104
229464
  const attrs = selfClosingParaMatch[2] ?? "";
229105
229465
  const names2 = wordNamesForQName(paragraphQName);
229106
- const listParagraphStyleXml = renderParagraphStyle(names2, "ListParagraph");
229466
+ const listParagraphStyleXml = renderParagraphStyle(names2, paragraphStyleId ?? "ListParagraph");
229107
229467
  const numPrXml2 = renderParagraphNumPr(names2, numPr);
229108
229468
  return {
229109
229469
  ok: true,
@@ -229121,7 +229481,7 @@ function rewriteParagraphNumPr(paraXml, numPr) {
229121
229481
  const pPrName = names2.element("pPr");
229122
229482
  return {
229123
229483
  ok: true,
229124
- xml: `${openTag}<${pPrName}>${renderParagraphStyle(names2, "ListParagraph")}` + `${renderParagraphNumPr(names2, numPr)}</${pPrName}>${inner}`
229484
+ xml: `${openTag}<${pPrName}>${renderParagraphStyle(names2, paragraphStyleId ?? "ListParagraph")}` + `${renderParagraphNumPr(names2, numPr)}</${pPrName}>${inner}`
229125
229485
  };
229126
229486
  }
229127
229487
  const pPrQName = /^<((?:[\w.-]+:)?pPr)\b/.exec(split.pPr)?.[1];
@@ -229131,7 +229491,7 @@ function rewriteParagraphNumPr(paraXml, numPr) {
229131
229491
  const children = readLivePPrChildren(split.pPr);
229132
229492
  if (!children)
229133
229493
  return { ok: false, reason: "list-target-not-found" };
229134
- const withStyle = children.some((child) => child.localName === "pStyle") ? split.pPr : rewriteLivePPrChild(split.pPr, "pStyle", renderParagraphStyle(names, "ListParagraph"), { ordered: true });
229494
+ const withStyle = paragraphStyleId === null || paragraphStyleId === undefined ? children.some((child) => child.localName === "pStyle") ? split.pPr : rewriteLivePPrChild(split.pPr, "pStyle", renderParagraphStyle(names, "ListParagraph"), { ordered: true }) : rewriteLivePPrChild(split.pPr, "pStyle", renderParagraphStyle(names, paragraphStyleId), { ordered: true });
229135
229495
  if (withStyle === null)
229136
229496
  return { ok: false, reason: "list-target-not-found" };
229137
229497
  const numPrXml = renderParagraphNumPr(names, numPr);
@@ -229229,7 +229589,7 @@ function readLivePPrChildren(pPrXml) {
229229
229589
  return children;
229230
229590
  }
229231
229591
  function commitParagraphNumPrRewrite(args) {
229232
- const rewrite = args.trackedFormatting ? rewriteParagraphNumPrTracked(args.paraXml, args.numPr, args.trackedFormatting) : rewriteParagraphNumPr(args.paraXml, args.numPr);
229592
+ const rewrite = args.trackedFormatting ? rewriteParagraphNumPrTracked(args.paraXml, args.numPr, args.trackedFormatting, args.paragraphStyleId) : rewriteParagraphNumPr(args.paraXml, args.numPr, args.paragraphStyleId);
229233
229593
  if (!rewrite.ok)
229234
229594
  return rejected15(args.input.txId, rewrite.reason);
229235
229595
  return commitParagraphRewrite({
@@ -229330,8 +229690,8 @@ function buildTrackedListFormattingAllocator(input, storyId) {
229330
229690
  }
229331
229691
  };
229332
229692
  }
229333
- function rewriteParagraphNumPrTracked(paraXml, numPr, tracked) {
229334
- const direct = rewriteParagraphNumPr(paraXml, numPr);
229693
+ function rewriteParagraphNumPrTracked(paraXml, numPr, tracked, paragraphStyleId) {
229694
+ const direct = rewriteParagraphNumPr(paraXml, numPr, paragraphStyleId);
229335
229695
  if (!direct.ok)
229336
229696
  return direct;
229337
229697
  return wrapParagraphTrackedChange(direct.xml, paraXml, tracked);
@@ -239497,13 +239857,13 @@ function allocateTransactionId() {
239497
239857
  return `tx-${time3}-${nextTx.toString(36)}-${random}`;
239498
239858
  }
239499
239859
  function createSDTransactionContext(input) {
239500
- return new TxContext(input.state, input.author, input.readCurrentPackageBinding, input.options, input.onCommitted);
239860
+ return new TxContext(input.state, input.author, input.readCurrentComparePlanBinding, input.options, input.onCommitted);
239501
239861
  }
239502
239862
 
239503
239863
  class TxContext {
239504
- constructor(state, author, readCurrentPackageBinding, options = {}, onCommitted) {
239864
+ constructor(state, author, readCurrentComparePlanBinding, options = {}, onCommitted) {
239505
239865
  this.state = state;
239506
- this.readCurrentPackageBinding = readCurrentPackageBinding;
239866
+ this.readCurrentComparePlanBinding = readCurrentComparePlanBinding;
239507
239867
  this.options = options;
239508
239868
  this.onCommitted = onCommitted;
239509
239869
  this.txId = allocateTransactionId();
@@ -240102,7 +240462,7 @@ class TxContext {
240102
240462
  author: this.author,
240103
240463
  authorOverride: this.authorOverride,
240104
240464
  txTimestamp: this.txTimestamp,
240105
- readCurrentPackageBinding: this.readCurrentPackageBinding,
240465
+ readCurrentComparePlanBinding: this.readCurrentComparePlanBinding,
240106
240466
  options: this.options,
240107
240467
  op,
240108
240468
  pushHistory: (entry) => this.pushHistoryEntry(entry),
@@ -247981,7 +248341,12 @@ var init_comment_export_normalization = __esm(() => {
247981
248341
 
247982
248342
  // ../../../v2/editor-core/dist/document/transactions/note-export-hygiene.js
247983
248343
  function planNoteExportHygiene(state) {
247984
- const noteFree = isNoteFreePackage(state);
248344
+ return buildNoteExportHygienePlan(state, isNoteFreePackage(state));
248345
+ }
248346
+ function planNoteExportHygieneForFingerprint(state) {
248347
+ return buildNoteExportHygienePlan(state, isNoteFreePackageForFingerprint(state));
248348
+ }
248349
+ function buildNoteExportHygienePlan(state, noteFree) {
247985
248350
  const removals = new Set;
247986
248351
  if (noteFree) {
247987
248352
  for (const partUri of [FOOTNOTES_PART_URI2, ENDNOTES_PART_URI2]) {
@@ -248011,6 +248376,12 @@ function transformXmlBytes(bytes, transform2) {
248011
248376
  return next === xml ? bytes : TE41.encode(next);
248012
248377
  }
248013
248378
  function isNoteFreePackage(state) {
248379
+ return isNoteFreePackageCore(state, { pruneUnconfiguredOrphanSidecar: state.renderCommitSequence !== 0 });
248380
+ }
248381
+ function isNoteFreePackageForFingerprint(state) {
248382
+ return isNoteFreePackageCore(state, { pruneUnconfiguredOrphanSidecar: true });
248383
+ }
248384
+ function isNoteFreePackageCore(state, options) {
248014
248385
  for (const partUri of listStoryPartUris2(state)) {
248015
248386
  const bytes = state.packageBytes.get(partUri);
248016
248387
  if (!bytes)
@@ -248032,7 +248403,7 @@ function isNoteFreePackage(state) {
248032
248403
  if (hasConfiguredNoteSettings(settingsXml))
248033
248404
  return false;
248034
248405
  const hasNoteSidecar = state.packageBytes.has(FOOTNOTES_PART_URI2) || state.packageBytes.has(ENDNOTES_PART_URI2);
248035
- if (state.renderCommitSequence === 0 && hasNoteSidecar && !/<w:(?:footnotePr|endnotePr)\b/.test(settingsXml))
248406
+ if (!options.pruneUnconfiguredOrphanSidecar && hasNoteSidecar && !/<w:(?:footnotePr|endnotePr)\b/.test(settingsXml))
248036
248407
  return false;
248037
248408
  return true;
248038
248409
  }
@@ -249150,6 +249521,45 @@ function computeSDDocumentSessionInternalPackageBinding(session) {
249150
249521
  const payload = PACKAGE_BINDING_TEXT_ENCODER.encode(JSON.stringify({ version: "sd-package-binding/v1", parts }));
249151
249522
  return `sha256:${sha256HexSync(payload)}`;
249152
249523
  }
249524
+ function computeSDDocumentSessionInternalSemanticPackageBinding(session) {
249525
+ const internal = INTERNALS.get(session);
249526
+ if (!internal)
249527
+ throw new Error("internal: unknown SDDocumentSession instance");
249528
+ const noteHygienePlan = planNoteExportHygieneForFingerprint(internal.state);
249529
+ const partUris = new Set([
249530
+ ...internal.state.parts.keys(),
249531
+ ...internal.state.packageBytes.keys()
249532
+ ]);
249533
+ const parts = [...partUris].filter((partUri) => !noteHygienePlan.removals.has(partUri)).map((partUri) => {
249534
+ const descriptor = internal.state.parts.get(partUri)?.descriptor ?? null;
249535
+ const sourcePartSize = internal.openResult.packageOpen.pkg.parts.get(partUri)?.uncompressedSize;
249536
+ const unchangedFromSource = descriptor?.revision === internal.state.sourcePartRevisions.get(partUri);
249537
+ const oversizedUnchangedSource = unchangedFromSource && sourcePartSize !== undefined && sourcePartSize > 64 * 1024 * 1024;
249538
+ const rawBytes = oversizedUnchangedSource ? null : descriptor ? getSDDocumentSessionInternalCapturePartBytes(session, partUri, unchangedFromSource ? 64 * 1024 * 1024 : Number.MAX_SAFE_INTEGER) : internal.state.packageBytes.get(partUri) ?? null;
249539
+ const bytes = rawBytes ? canonicalizePartBytesForSemanticBinding(partUri, rawBytes, noteHygienePlan) : null;
249540
+ return {
249541
+ partUri,
249542
+ contentType: descriptor?.contentType ?? null,
249543
+ kind: descriptor?.kind ?? null,
249544
+ byteLength: bytes?.length ?? null,
249545
+ bytesSha256: bytes ? sha256HexSync(bytes) : null
249546
+ };
249547
+ }).sort((a, b) => a.partUri.localeCompare(b.partUri));
249548
+ const payload = PACKAGE_BINDING_TEXT_ENCODER.encode(JSON.stringify({ version: "sd-package-binding-semantic/v1", parts }));
249549
+ return `sha256-semantic:${sha256HexSync(payload)}`;
249550
+ }
249551
+ function canonicalizePartBytesForSemanticBinding(partUri, bytes, noteHygienePlan) {
249552
+ const noteProjected = noteHygienePlan.transformPartBytes(partUri, bytes);
249553
+ const wordXmlNormalized = normalizeWordXmlForSave(partUri, noteProjected);
249554
+ if (!WORD_XML_PART_RE.test(partUri))
249555
+ return wordXmlNormalized;
249556
+ const xml = SAVE_XML_DECODER.decode(wordXmlNormalized);
249557
+ const stripped = stripSessionIssuedTrackedChangeIdsForFingerprint(xml);
249558
+ return stripped === xml ? wordXmlNormalized : SAVE_XML_ENCODER.encode(stripped);
249559
+ }
249560
+ function stripSessionIssuedTrackedChangeIdsForFingerprint(xml) {
249561
+ return xml.replace(RSID_ATTR_FOR_FINGERPRINT_RE, "").replace(SIMPLE_TRACKED_CHANGE_WRAPPER_OPEN_RE, (tag) => tag.replace(WRAPPER_ID_ATTR_FOR_FINGERPRINT_RE, ""));
249562
+ }
249153
249563
  function markSDDocumentSessionInternalExactPackageSave(session, binding) {
249154
249564
  var _a3;
249155
249565
  const internal = INTERNALS.get(session);
@@ -250169,7 +250579,7 @@ function beginSDDocumentSessionInternalTransaction(session, options) {
250169
250579
  return createSDTransactionContext({
250170
250580
  state: internal.state,
250171
250581
  author: internal.author,
250172
- readCurrentPackageBinding: () => computeSDDocumentSessionInternalPackageBinding(session),
250582
+ readCurrentComparePlanBinding: () => computeSDDocumentSessionInternalSemanticPackageBinding(session),
250173
250583
  options: mergedOptions,
250174
250584
  onCommitted: internal.onMutationCommitted
250175
250585
  });
@@ -252948,7 +253358,7 @@ async function waitForQueuedPreScan(controller, cancel) {
252948
253358
  }
252949
253359
  return outcome.value;
252950
253360
  }
252951
- var SAVE_XML_DECODER, SAVE_XML_ENCODER, PACKAGE_BINDING_TEXT_ENCODER, WORD_XML_PART_RE, REVIEW_SOURCE_COPY_CHUNK_BYTES, INTERNALS, LIVE_MAIN_STORY_SCAN_MEMO, RELS_DECODER, DEFAULT_SAVE_COMPRESSION_LEVEL = 6, SAVE_ZIP_ENTRY_MTIME, EMPTY_PART_URI_SET, ALREADY_COMPRESSED_PART_RE, RAW_FONT_PART_RE, SDSourceBackedSaveUnsupportedError, REMOTE_PROJECTION_GENERATIONS, COLLABORATION_ATTACHMENTS, FIELD_STABLE_ID_ALLOCATORS;
253361
+ var SAVE_XML_DECODER, SAVE_XML_ENCODER, PACKAGE_BINDING_TEXT_ENCODER, WORD_XML_PART_RE, REVIEW_SOURCE_COPY_CHUNK_BYTES, INTERNALS, LIVE_MAIN_STORY_SCAN_MEMO, RELS_DECODER, DEFAULT_SAVE_COMPRESSION_LEVEL = 6, SAVE_ZIP_ENTRY_MTIME, EMPTY_PART_URI_SET, ALREADY_COMPRESSED_PART_RE, RAW_FONT_PART_RE, RSID_ATTR_FOR_FINGERPRINT_RE, SIMPLE_TRACKED_CHANGE_WRAPPER_OPEN_RE, WRAPPER_ID_ATTR_FOR_FINGERPRINT_RE, SDSourceBackedSaveUnsupportedError, REMOTE_PROJECTION_GENERATIONS, COLLABORATION_ATTACHMENTS, FIELD_STABLE_ID_ALLOCATORS;
252952
253362
  var init_sd_document_session = __esm(() => {
252953
253363
  init_textbox_atom_replacement();
252954
253364
  init_paragraph_signal_index();
@@ -253025,6 +253435,9 @@ var init_sd_document_session = __esm(() => {
253025
253435
  EMPTY_PART_URI_SET = new Set;
253026
253436
  ALREADY_COMPRESSED_PART_RE = /\.(png|jpe?g|gif|webp|bmp|ico|tiff?|emf|wmf|mp3|mp4|m4a|mov|avi|wmv|ogg|zip|gz|woff2?|eot)$/i;
253027
253437
  RAW_FONT_PART_RE = /\.(ttf|otf|odttf)$/i;
253438
+ RSID_ATTR_FOR_FINGERPRINT_RE = /\s+w:rsid\w*="[^"]*"/g;
253439
+ SIMPLE_TRACKED_CHANGE_WRAPPER_OPEN_RE = /<w:(?:ins|del|rPrChange|pPrChange)\b[^>]*>/g;
253440
+ WRAPPER_ID_ATTR_FOR_FINGERPRINT_RE = /\s+w:id="[^"]*"/g;
253028
253441
  SDSourceBackedSaveUnsupportedError = class SDSourceBackedSaveUnsupportedError extends Error {
253029
253442
  constructor(code, partUri, message) {
253030
253443
  super(message);
@@ -275384,7 +275797,7 @@ var init_word_bibliography = __esm(() => {
275384
275797
  ];
275385
275798
  });
275386
275799
 
275387
- // ../../../v2/node_modules/.pnpm/@superdoc+style-engine@file+..+public+packages+layout-engine+style-engine/node_modules/@superdoc/style-engine/src/cascade.ts
275800
+ // ../../packages/layout-engine/style-engine/src/cascade.ts
275388
275801
  function combineProperties(propertiesArray, options = {}) {
275389
275802
  const { fullOverrideProps = [], specialHandling = {} } = options;
275390
275803
  if (!propertiesArray || propertiesArray.length === 0) {
@@ -275484,14 +275897,14 @@ var init_cascade = __esm(() => {
275484
275897
  ];
275485
275898
  });
275486
275899
 
275487
- // ../../../v2/node_modules/.pnpm/@superdoc+style-engine@file+..+public+packages+layout-engine+style-engine/node_modules/@superdoc/style-engine/src/index.ts
275900
+ // ../../packages/layout-engine/style-engine/src/index.ts
275488
275901
  var sdtMetadataCache;
275489
275902
  var init_src4 = __esm(() => {
275490
275903
  init_cascade();
275491
275904
  sdtMetadataCache = new Map;
275492
275905
  });
275493
275906
 
275494
- // ../../../v2/node_modules/.pnpm/@superdoc+style-engine@file+..+public+packages+layout-engine+style-engine/node_modules/@superdoc/style-engine/src/ooxml/table-style-selection.ts
275907
+ // ../../packages/layout-engine/style-engine/src/ooxml/table-style-selection.ts
275495
275908
  function isKnownTableStyleId(styleId, translatedLinkedStyles) {
275496
275909
  if (!styleId || !translatedLinkedStyles?.styles)
275497
275910
  return false;
@@ -275546,7 +275959,7 @@ var init_table_style_selection = __esm(() => {
275546
275959
  };
275547
275960
  });
275548
275961
 
275549
- // ../../../v2/node_modules/.pnpm/@superdoc+style-engine@file+..+public+packages+layout-engine+style-engine/node_modules/@superdoc/style-engine/src/ooxml/index.ts
275962
+ // ../../packages/layout-engine/style-engine/src/ooxml/index.ts
275550
275963
  function resolveRunProperties(params, inlineRpr, resolvedPpr, tableInfo = null, isListNumber = false, numberingDefinedInline = false) {
275551
275964
  if (!params.translatedLinkedStyles?.styles) {
275552
275965
  return inlineRpr ?? {};
@@ -276129,7 +276542,7 @@ var init_default_floors = __esm(() => {
276129
276542
  };
276130
276543
  });
276131
276544
 
276132
- // ../../../v2/node_modules/.pnpm/sax@1.6.0/node_modules/sax/lib/sax.js
276545
+ // ../../node_modules/.pnpm/sax@1.6.0/node_modules/sax/lib/sax.js
276133
276546
  var require_sax = __commonJS((exports) => {
276134
276547
  (function(sax) {
276135
276548
  sax.parser = function(strict, opt) {
@@ -277663,7 +278076,7 @@ Char: ` + parser.c;
277663
278076
  })(typeof exports === "undefined" ? exports.sax = {} : exports);
277664
278077
  });
277665
278078
 
277666
- // ../../../v2/node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/array-helper.js
278079
+ // ../../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/array-helper.js
277667
278080
  var require_array_helper = __commonJS((exports, module) => {
277668
278081
  module.exports = {
277669
278082
  isArray: function(value) {
@@ -277675,7 +278088,7 @@ var require_array_helper = __commonJS((exports, module) => {
277675
278088
  };
277676
278089
  });
277677
278090
 
277678
- // ../../../v2/node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/options-helper.js
278091
+ // ../../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/options-helper.js
277679
278092
  var require_options_helper = __commonJS((exports, module) => {
277680
278093
  var isArray = require_array_helper().isArray;
277681
278094
  module.exports = {
@@ -277714,7 +278127,7 @@ var require_options_helper = __commonJS((exports, module) => {
277714
278127
  };
277715
278128
  });
277716
278129
 
277717
- // ../../../v2/node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/xml2js.js
278130
+ // ../../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/xml2js.js
277718
278131
  var require_xml2js = __commonJS((exports, module) => {
277719
278132
  var sax = require_sax();
277720
278133
  var expat = { on: function() {}, parse: function() {} };
@@ -278052,7 +278465,7 @@ var require_xml2js = __commonJS((exports, module) => {
278052
278465
  };
278053
278466
  });
278054
278467
 
278055
- // ../../../v2/node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/xml2json.js
278468
+ // ../../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/xml2json.js
278056
278469
  var require_xml2json = __commonJS((exports, module) => {
278057
278470
  var helper = require_options_helper();
278058
278471
  var xml2js = require_xml2js();
@@ -278077,7 +278490,7 @@ var require_xml2json = __commonJS((exports, module) => {
278077
278490
  };
278078
278491
  });
278079
278492
 
278080
- // ../../../v2/node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/js2xml.js
278493
+ // ../../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/js2xml.js
278081
278494
  var require_js2xml = __commonJS((exports, module) => {
278082
278495
  var helper = require_options_helper();
278083
278496
  var isArray = require_array_helper().isArray;
@@ -278409,7 +278822,7 @@ var require_js2xml = __commonJS((exports, module) => {
278409
278822
  };
278410
278823
  });
278411
278824
 
278412
- // ../../../v2/node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/json2xml.js
278825
+ // ../../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/json2xml.js
278413
278826
  var require_json2xml = __commonJS((exports, module) => {
278414
278827
  var js2xml = require_js2xml();
278415
278828
  module.exports = function(json2, options) {
@@ -278430,7 +278843,7 @@ var require_json2xml = __commonJS((exports, module) => {
278430
278843
  };
278431
278844
  });
278432
278845
 
278433
- // ../../../v2/node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/index.js
278846
+ // ../../node_modules/.pnpm/xml-js@1.6.11/node_modules/xml-js/lib/index.js
278434
278847
  var require_lib = __commonJS((exports, module) => {
278435
278848
  var xml2js = require_xml2js();
278436
278849
  var xml2json = require_xml2json();
@@ -278444,7 +278857,7 @@ var require_lib = __commonJS((exports, module) => {
278444
278857
  };
278445
278858
  });
278446
278859
 
278447
- // ../../../v2/node_modules/.pnpm/@superdoc+style-engine@file+..+public+packages+layout-engine+style-engine/node_modules/@superdoc/style-engine/src/ooxml/word-style-model/parse-xml.ts
278860
+ // ../../packages/layout-engine/style-engine/src/ooxml/word-style-model/parse-xml.ts
278448
278861
  function bytesToString(input) {
278449
278862
  if (typeof input === "string")
278450
278863
  return input;
@@ -278511,7 +278924,7 @@ var init_parse_xml = __esm(() => {
278511
278924
  ST_OFF = new Set(["0", "false", "off"]);
278512
278925
  });
278513
278926
 
278514
- // ../../../v2/node_modules/.pnpm/@superdoc+style-engine@file+..+public+packages+layout-engine+style-engine/node_modules/@superdoc/style-engine/src/ooxml/word-style-model/parse-theme.ts
278927
+ // ../../packages/layout-engine/style-engine/src/ooxml/word-style-model/parse-theme.ts
278515
278928
  function parseColorPalette(theme) {
278516
278929
  if (!theme)
278517
278930
  return;
@@ -281078,7 +281491,7 @@ var init_word_style_model = __esm(() => {
281078
281491
  init_project_style_catalogue();
281079
281492
  });
281080
281493
 
281081
- // ../../../v2/node_modules/.pnpm/@superdoc+style-engine@file+..+public+packages+layout-engine+style-engine/node_modules/@superdoc/style-engine/src/normalize/units.ts
281494
+ // ../../packages/layout-engine/style-engine/src/normalize/units.ts
281082
281495
  function twipsToPx(value) {
281083
281496
  return value * PX_PER_TWIP;
281084
281497
  }
@@ -281092,7 +281505,7 @@ var init_units = __esm(() => {
281092
281505
  PX_PER_EIGHTH_POINT = PX_PER_POINT / 8;
281093
281506
  });
281094
281507
 
281095
- // ../../../v2/node_modules/.pnpm/@superdoc+style-engine@file+..+public+packages+layout-engine+style-engine/node_modules/@superdoc/style-engine/src/normalize/colors.ts
281508
+ // ../../packages/layout-engine/style-engine/src/normalize/colors.ts
281096
281509
  function normalizeHexColor(value) {
281097
281510
  if (value == null)
281098
281511
  return;
@@ -281169,12 +281582,12 @@ var init_colors = __esm(() => {
281169
281582
  };
281170
281583
  });
281171
281584
 
281172
- // ../../../v2/node_modules/.pnpm/@superdoc+style-engine@file+..+public+packages+layout-engine+style-engine/node_modules/@superdoc/style-engine/src/normalize/paragraph-attrs.ts
281585
+ // ../../packages/layout-engine/style-engine/src/normalize/paragraph-attrs.ts
281173
281586
  var init_paragraph_attrs = __esm(() => {
281174
281587
  init_units();
281175
281588
  init_colors();
281176
281589
  });
281177
- // ../../../v2/node_modules/.pnpm/@superdoc+contracts@file+..+public+packages+layout-engine+contracts/node_modules/@superdoc/contracts/src/header-footer-resolution.ts
281590
+ // ../../packages/layout-engine/contracts/src/header-footer-resolution.ts
281178
281591
  function createResolutionCache() {
281179
281592
  const createVariantCache = () => ({ values: new Map, sectionIndices: [] });
281180
281593
  const createKindCache = () => ({
@@ -281352,12 +281765,12 @@ var HEADER_FOOTER_VARIANTS3;
281352
281765
  var init_header_footer_resolution = __esm(() => {
281353
281766
  HEADER_FOOTER_VARIANTS3 = ["default", "first", "even", "odd"];
281354
281767
  });
281355
- // ../../../v2/node_modules/.pnpm/@superdoc+contracts@file+..+public+packages+layout-engine+contracts/node_modules/@superdoc/contracts/src/justify-utils.ts
281768
+ // ../../packages/layout-engine/contracts/src/justify-utils.ts
281356
281769
  var SPACE_CHARS;
281357
281770
  var init_justify_utils = __esm(() => {
281358
281771
  SPACE_CHARS = new Set([" ", " "]);
281359
281772
  });
281360
- // ../../../v2/node_modules/.pnpm/@superdoc+contracts@file+..+public+packages+layout-engine+contracts/node_modules/@superdoc/contracts/src/vertical-text.ts
281773
+ // ../../packages/layout-engine/contracts/src/vertical-text.ts
281361
281774
  function normalizeBaselineShift(baselineShift) {
281362
281775
  if (!Number.isFinite(baselineShift)) {
281363
281776
  return;
@@ -281366,14 +281779,14 @@ function normalizeBaselineShift(baselineShift) {
281366
281779
  return Math.abs(normalizedShift) <= BASELINE_SHIFT_EPSILON ? undefined : normalizedShift;
281367
281780
  }
281368
281781
  var BASELINE_SHIFT_EPSILON = 0.000001;
281369
- // ../../../v2/node_modules/.pnpm/@superdoc+contracts@file+..+public+packages+layout-engine+contracts/node_modules/@superdoc/contracts/src/pm-range.ts
281782
+ // ../../packages/layout-engine/contracts/src/pm-range.ts
281370
281783
  var init_pm_range = () => {};
281371
- // ../../../v2/node_modules/.pnpm/@superdoc+contracts@file+..+public+packages+layout-engine+contracts/node_modules/@superdoc/contracts/src/graphic-placement.ts
281784
+ // ../../packages/layout-engine/contracts/src/graphic-placement.ts
281372
281785
  var init_graphic_placement = () => {};
281373
- // ../../../v2/node_modules/.pnpm/@superdoc+contracts@file+..+public+packages+layout-engine+contracts/node_modules/@superdoc/contracts/src/author-colors.ts
281786
+ // ../../packages/layout-engine/contracts/src/author-colors.ts
281374
281787
  var init_author_colors = () => {};
281375
281788
 
281376
- // ../../../v2/node_modules/.pnpm/@superdoc+contracts@file+..+public+packages+layout-engine+contracts/node_modules/@superdoc/contracts/src/semantic-colors.ts
281789
+ // ../../packages/layout-engine/contracts/src/semantic-colors.ts
281377
281790
  var TRACKED_CHANGE_CONFIGURABLE_SEMANTIC_COLOR_KEYS, CONFIGURABLE_SEMANTIC_COLOR_KEY_SET, TRACKED_CHANGE_AFFECTED_RANGE_KEYS;
281378
281791
  var init_semantic_colors = __esm(() => {
281379
281792
  init_author_colors();
@@ -281399,20 +281812,20 @@ var init_semantic_colors = __esm(() => {
281399
281812
  ]);
281400
281813
  });
281401
281814
 
281402
- // ../../../v2/node_modules/.pnpm/@superdoc+contracts@file+..+public+packages+layout-engine+contracts/node_modules/@superdoc/contracts/src/sdt-container.ts
281815
+ // ../../packages/layout-engine/contracts/src/sdt-container.ts
281403
281816
  var idlessSdtContainerKeys;
281404
281817
  var init_sdt_container = __esm(() => {
281405
281818
  idlessSdtContainerKeys = new WeakMap;
281406
281819
  });
281407
- // ../../../v2/node_modules/.pnpm/@superdoc+contracts@file+..+public+packages+layout-engine+contracts/node_modules/@superdoc/contracts/src/page-number-formatting.ts
281820
+ // ../../packages/layout-engine/contracts/src/page-number-formatting.ts
281408
281821
  var init_page_number_formatting = () => {};
281409
281822
 
281410
- // ../../../v2/node_modules/.pnpm/@superdoc+contracts@file+..+public+packages+layout-engine+contracts/node_modules/@superdoc/contracts/src/page-ref-anchor.ts
281823
+ // ../../packages/layout-engine/contracts/src/page-ref-anchor.ts
281411
281824
  var init_page_ref_anchor = __esm(() => {
281412
281825
  init_pm_range();
281413
281826
  });
281414
281827
 
281415
- // ../../../v2/node_modules/.pnpm/@superdoc+contracts@file+..+public+packages+layout-engine+contracts/node_modules/@superdoc/contracts/src/drawing-taxonomy.ts
281828
+ // ../../packages/layout-engine/contracts/src/drawing-taxonomy.ts
281416
281829
  var DRAWING_DIAGNOSTIC_CODES, DRAWING_DIAGNOSTIC_CODE_ALIASES, DRAWING_SUPPORT_TAXONOMY, DRAWING_FAMILIES;
281417
281830
  var init_drawing_taxonomy = __esm(() => {
281418
281831
  DRAWING_DIAGNOSTIC_CODES = {
@@ -281641,7 +282054,7 @@ var init_drawing_taxonomy = __esm(() => {
281641
282054
  };
281642
282055
  DRAWING_FAMILIES = Object.keys(DRAWING_SUPPORT_TAXONOMY);
281643
282056
  });
281644
- // ../../../v2/node_modules/.pnpm/@superdoc+contracts@file+..+public+packages+layout-engine+contracts/node_modules/@superdoc/contracts/src/incremental-dependency.ts
282057
+ // ../../packages/layout-engine/contracts/src/incremental-dependency.ts
281645
282058
  var PAGE_CHECKPOINT_DEPENDENCY_CLASSES, INCREMENTAL_DEPENDENCY_CERTIFICATE_CLASSES, DRAWING_KINDS, CERTIFICATE_CLASSES;
281646
282059
  var init_incremental_dependency = __esm(() => {
281647
282060
  PAGE_CHECKPOINT_DEPENDENCY_CLASSES = Object.freeze([
@@ -281671,10 +282084,10 @@ var init_incremental_dependency = __esm(() => {
281671
282084
  DRAWING_KINDS = new Set(["image", "vectorShape", "textboxShape", "shapeGroup", "chart"]);
281672
282085
  CERTIFICATE_CLASSES = new Set(INCREMENTAL_DEPENDENCY_CERTIFICATE_CLASSES);
281673
282086
  });
281674
- // ../../../v2/node_modules/.pnpm/@superdoc+contracts@file+..+public+packages+layout-engine+contracts/node_modules/@superdoc/contracts/src/engines/index.ts
282087
+ // ../../packages/layout-engine/contracts/src/engines/index.ts
281675
282088
  var init_engines = () => {};
281676
282089
 
281677
- // ../../../v2/node_modules/.pnpm/@superdoc+contracts@file+..+public+packages+layout-engine+contracts/node_modules/@superdoc/contracts/src/index.ts
282090
+ // ../../packages/layout-engine/contracts/src/index.ts
281678
282091
  var SHAPE_TEXT_BASELINE_WARP_PRESETS, SHAPE_TEXT_SINGLE_BAND_ENVELOPE_WARP_PRESETS;
281679
282092
  var init_src5 = __esm(() => {
281680
282093
  init_header_footer_resolution();
@@ -281697,7 +282110,7 @@ var init_src5 = __esm(() => {
281697
282110
  SHAPE_TEXT_SINGLE_BAND_ENVELOPE_WARP_PRESETS = new Set(["textButton"]);
281698
282111
  });
281699
282112
 
281700
- // ../../../v2/node_modules/.pnpm/@superdoc+font-utils@file+..+public+shared+font-utils/node_modules/@superdoc/font-utils/index.js
282113
+ // ../../shared/font-utils/index.js
281701
282114
  function mapWordFamilyFallback(wordFamily) {
281702
282115
  if (!wordFamily)
281703
282116
  return DEFAULT_GENERIC_FALLBACK;
@@ -281791,7 +282204,7 @@ var init_font_utils = __esm(() => {
281791
282204
  ]);
281792
282205
  });
281793
282206
 
281794
- // ../../../v2/node_modules/.pnpm/@superdoc+style-engine@file+..+public+packages+layout-engine+style-engine/node_modules/@superdoc/style-engine/src/normalize/run-attrs.ts
282207
+ // ../../packages/layout-engine/style-engine/src/normalize/run-attrs.ts
281795
282208
  function normalizeRunAttrsFromOoxml(props, context = {}) {
281796
282209
  const out = {};
281797
282210
  if (!props)
@@ -282058,7 +282471,7 @@ var init_run_attrs = __esm(() => {
282058
282471
  };
282059
282472
  });
282060
282473
 
282061
- // ../../../v2/node_modules/.pnpm/@superdoc+style-engine@file+..+public+packages+layout-engine+style-engine/node_modules/@superdoc/style-engine/src/normalize/index.ts
282474
+ // ../../packages/layout-engine/style-engine/src/normalize/index.ts
282062
282475
  var init_normalize = __esm(() => {
282063
282476
  init_paragraph_attrs();
282064
282477
  init_run_attrs();
@@ -305804,14 +306217,14 @@ var init_formatting = __esm(() => {
305804
306217
  ];
305805
306218
  PROJECTION_FONT_TABLE_PART_INDEX = STYLE_SIDECAR_PART_URIS.length;
305806
306219
  });
305807
- // ../../../v2/node_modules/.pnpm/@superdoc+word-layout@file+..+public+packages+word-layout/node_modules/@superdoc/word-layout/src/unit-conversions.ts
306220
+ // ../../packages/word-layout/src/unit-conversions.ts
305808
306221
  var TWIPS_PER_INCH = 1440, PIXELS_PER_INCH = 96, TWIPS_PER_POINT2 = 20, POINTS_PER_TWIP, TWIPS_PER_PIXEL, PIXELS_PER_TWIP;
305809
306222
  var init_unit_conversions = __esm(() => {
305810
306223
  POINTS_PER_TWIP = 1 / TWIPS_PER_POINT2;
305811
306224
  TWIPS_PER_PIXEL = Math.round(TWIPS_PER_INCH / PIXELS_PER_INCH);
305812
306225
  PIXELS_PER_TWIP = 1 / TWIPS_PER_PIXEL;
305813
306226
  });
305814
- // ../../../v2/node_modules/.pnpm/@superdoc+word-layout@file+..+public+packages+word-layout/node_modules/@superdoc/word-layout/src/numbering-manager.ts
306227
+ // ../../packages/word-layout/src/numbering-manager.ts
305815
306228
  function persistentTrieHash(key2) {
305816
306229
  let hash2 = 2166136261;
305817
306230
  for (let index = 0;index < key2.length; index += 1) {
@@ -306439,7 +306852,7 @@ var init_numbering_manager = __esm(() => {
306439
306852
  });
306440
306853
  });
306441
306854
 
306442
- // ../../../v2/node_modules/.pnpm/@superdoc+common@file+..+public+shared+common/node_modules/@superdoc/common/list-numbering/index.ts
306855
+ // ../../shared/common/list-numbering/index.ts
306443
306856
  var handleDecimal = (path6, lvlText) => generateNumbering(path6, lvlText, numberToStringFormatter), handleRoman = (path6, lvlText) => generateNumbering(path6, lvlText, intToRoman), handleLowerRoman = (path6, lvlText) => {
306444
306857
  const result = handleRoman(path6, lvlText);
306445
306858
  return result ? result.toLowerCase() : null;
@@ -306741,7 +307154,7 @@ var init_list_numbering = __esm(() => {
306741
307154
  normalizeChars = new Set(["", "", "○", "o", "■", "□"]);
306742
307155
  });
306743
307156
 
306744
- // ../../../v2/node_modules/.pnpm/@superdoc+word-layout@file+..+public+packages+word-layout/node_modules/@superdoc/word-layout/src/list-marker.ts
307157
+ // ../../packages/word-layout/src/list-marker.ts
306745
307158
  function computeWordListMarker(input) {
306746
307159
  const { definition, manager, paragraphOrdinal } = input;
306747
307160
  if (definition.ancestorStartSettings) {
@@ -306818,7 +307231,7 @@ var init_list_marker = __esm(() => {
306818
307231
  init_list_numbering();
306819
307232
  });
306820
307233
 
306821
- // ../../../v2/node_modules/.pnpm/@superdoc+word-layout@file+..+public+packages+word-layout/node_modules/@superdoc/word-layout/src/review-aware-numbering.ts
307234
+ // ../../packages/word-layout/src/review-aware-numbering.ts
306822
307235
  function createReviewAwareWordNumberingSequence(options = {}) {
306823
307236
  const stateMode = options.stateMode ?? "snapshot";
306824
307237
  let live = createManager(stateMode);
@@ -306915,7 +307328,7 @@ var init_review_aware_numbering = __esm(() => {
306915
307328
  init_numbering_manager();
306916
307329
  });
306917
307330
 
306918
- // ../../../v2/node_modules/.pnpm/@superdoc+word-layout@file+..+public+packages+word-layout/node_modules/@superdoc/word-layout/src/index.ts
307331
+ // ../../packages/word-layout/src/index.ts
306919
307332
  var init_src7 = __esm(() => {
306920
307333
  init_unit_conversions();
306921
307334
  init_unit_conversions();
@@ -309653,7 +310066,7 @@ var init_adapter12 = __esm(() => {
309653
310066
  init_document_reader();
309654
310067
  });
309655
310068
 
309656
- // ../../../v2/node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/unicode.js
310069
+ // ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/unicode.js
309657
310070
  function isSurrogate(cp) {
309658
310071
  return cp >= 55296 && cp <= 57343;
309659
310072
  }
@@ -309745,7 +310158,7 @@ var init_unicode = __esm(() => {
309745
310158
  };
309746
310159
  });
309747
310160
 
309748
- // ../../../v2/node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/error-codes.js
310161
+ // ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/error-codes.js
309749
310162
  var ERR;
309750
310163
  var init_error_codes = __esm(() => {
309751
310164
  (function(ERR2) {
@@ -309812,7 +310225,7 @@ var init_error_codes = __esm(() => {
309812
310225
  })(ERR || (ERR = {}));
309813
310226
  });
309814
310227
 
309815
- // ../../../v2/node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/tokenizer/preprocessor.js
310228
+ // ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/tokenizer/preprocessor.js
309816
310229
  class Preprocessor {
309817
310230
  constructor(handler) {
309818
310231
  this.handler = handler;
@@ -309985,7 +310398,7 @@ var init_preprocessor = __esm(() => {
309985
310398
  DEFAULT_BUFFER_WATERLINE = 1 << 16;
309986
310399
  });
309987
310400
 
309988
- // ../../../v2/node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/token.js
310401
+ // ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/token.js
309989
310402
  function getTokenAttr(token, attrName) {
309990
310403
  for (let i2 = token.attrs.length - 1;i2 >= 0; i2--) {
309991
310404
  if (token.attrs[i2].name === attrName) {
@@ -310009,7 +310422,7 @@ var init_token = __esm(() => {
310009
310422
  })(TokenType || (TokenType = {}));
310010
310423
  });
310011
310424
 
310012
- // ../../../v2/node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode-codepoint.js
310425
+ // ../../node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode-codepoint.js
310013
310426
  function replaceCodePoint(codePoint) {
310014
310427
  if (codePoint >= 55296 && codePoint <= 57343 || codePoint > 1114111) {
310015
310428
  return 65533;
@@ -310050,7 +310463,7 @@ var init_decode_codepoint = __esm(() => {
310050
310463
  ]);
310051
310464
  });
310052
310465
 
310053
- // ../../../v2/node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/decode-shared.js
310466
+ // ../../node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/decode-shared.js
310054
310467
  function decodeBase64(input) {
310055
310468
  const binary = atob(input);
310056
310469
  const evenLength = binary.length & ~1;
@@ -310063,13 +310476,13 @@ function decodeBase64(input) {
310063
310476
  return out;
310064
310477
  }
310065
310478
 
310066
- // ../../../v2/node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/generated/decode-data-html.js
310479
+ // ../../node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/generated/decode-data-html.js
310067
310480
  var htmlDecodeTree;
310068
310481
  var init_decode_data_html = __esm(() => {
310069
310482
  htmlDecodeTree = /* @__PURE__ */ decodeBase64("QR08ALkAAgH6AYsDNQR2BO0EPgXZBQEGLAbdBxMISQrvCmQLfQurDKQNLw4fD4YPpA+6D/IPAAAAAAAAAAAAAAAAKhBMEY8TmxUWF2EYLBkxGuAa3RsJHDscWR8YIC8jSCSIJcMl6ie3Ku8rEC0CLjoupS7kLgAIRU1hYmNmZ2xtbm9wcnN0dVQAWgBeAGUAaQBzAHcAfgCBAIQAhwCSAJoAoACsALMAbABpAGcAO4DGAMZAUAA7gCYAJkBjAHUAdABlADuAwQDBQHIiZXZlAAJhAAFpeW0AcgByAGMAO4DCAMJAEGRyAADgNdgE3XIAYQB2AGUAO4DAAMBA8CFoYZFj4SFjcgBhZAAAoFMqAAFncIsAjgBvAG4ABGFmAADgNdg43fAlbHlGdW5jdGlvbgCgYSBpAG4AZwA7gMUAxUAAAWNzpACoAHIAAOA12Jzc6SFnbgCgVCJpAGwAZABlADuAwwDDQG0AbAA7gMQAxEAABGFjZWZvcnN1xQDYANoA7QDxAPYA+QD8AAABY3LJAM8AayNzbGFzaAAAoBYidgHTANUAAKDnKmUAZAAAoAYjeQARZIABY3J0AOAA5QDrAGEidXNlAACgNSLuI291bGxpcwCgLCFhAJJjcgAA4DXYBd1wAGYAAOA12Dnd5SF2ZdhiYwDyAOoAbSJwZXEAAKBOIgAHSE9hY2RlZmhpbG9yc3UXARoBHwE6AVIBVQFiAWQBZgGCAakB6QHtAfIBYwB5ACdkUABZADuAqQCpQIABY3B5ACUBKAE1AfUhdGUGYWmg0iJ0KGFsRGlmZmVyZW50aWFsRAAAoEUhbCJleXMAAKAtIQACYWVpb0EBRAFKAU0B8iFvbgxhZABpAGwAO4DHAMdAcgBjAAhhbiJpbnQAAKAwIm8AdAAKYQABZG5ZAV0BaSJsbGEAuGB0I2VyRG90ALdg8gA5AWkAp2NyImNsZQAAAkRNUFRwAXQBeQF9AW8AdAAAoJkiaSJudXMAAKCWIuwhdXMAoJUiaSJtZXMAAKCXIm8AAAFjc4cBlAFrKndpc2VDb250b3VySW50ZWdyYWwAAKAyImUjQ3VybHkAAAFEUZwBpAFvJXVibGVRdW90ZQAAoB0gdSJvdGUAAKAZIAACbG5wdbABtgHNAdgBbwBuAGWgNyIAoHQqgAFnaXQAvAHBAcUB8iJ1ZW50AKBhIm4AdAAAoC8i7yV1ckludGVncmFsAKAuIgABZnLRAdMBAKACIe8iZHVjdACgECJuLnRlckNsb2Nrd2lzZUNvbnRvdXJJbnRlZ3JhbAAAoDMi7yFzcwCgLypjAHIAAOA12J7ccABDoNMiYQBwAACgTSKABURKU1phY2VmaW9zAAsCEgIVAhgCGwIsAjQCOQI9AnMCfwNvoEUh9CJyYWhkAKARKWMAeQACZGMAeQAFZGMAeQAPZIABZ3JzACECJQIoAuchZXIAoCEgcgAAoKEhaAB2AACg5CoAAWF5MAIzAvIhb24OYRRkbAB0oAciYQCUY3IAAOA12AfdAAFhZkECawIAAWNtRQJnAvIjaXRpY2FsAAJBREdUUAJUAl8CYwJjInV0ZQC0YG8AdAFZAloC2WJiJGxlQWN1dGUA3WJyImF2ZQBgYGkibGRlANxi7yFuZACgxCJmJWVyZW50aWFsRAAAoEYhcAR9AgAAAAAAAIECjgIAABoDZgAA4DXYO91EoagAhQKJAm8AdAAAoNwgcSJ1YWwAAKBQIuIhbGUAA0NETFJVVpkCqAK1Au8C/wIRA28AbgB0AG8AdQByAEkAbgB0AGUAZwByAGEA7ADEAW8AdAKvAgAAAACwAqhgbiNBcnJvdwAAoNMhAAFlb7kC0AJmAHQAgAFBUlQAwQLGAs0CciJyb3cAAKDQIekkZ2h0QXJyb3cAoNQhZQDlACsCbgBnAAABTFLWAugC5SFmdAABQVLcAuECciJyb3cAAKD4J+kkZ2h0QXJyb3cAoPon6SRnaHRBcnJvdwCg+SdpImdodAAAAUFU9gL7AnIicm93AACg0iFlAGUAAKCoInAAQQIGAwAAAAALA3Iicm93AACg0SFvJHduQXJyb3cAAKDVIWUlcnRpY2FsQmFyAACgJSJuAAADQUJMUlRhJAM2AzoDWgNxA3oDciJyb3cAAKGTIUJVLAMwA2EAcgAAoBMpcCNBcnJvdwAAoPUhciJldmUAEWPlIWZ00gJDAwAASwMAAFIDaSVnaHRWZWN0b3IAAKBQKWUkZVZlY3RvcgAAoF4p5SJjdG9yQqC9IWEAcgAAoFYpaSJnaHQA1AFiAwAAaQNlJGVWZWN0b3IAAKBfKeUiY3RvckKgwSFhAHIAAKBXKWUAZQBBoKQiciJyb3cAAKCnIXIAcgBvAPcAtAIAAWN0gwOHA3IA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YwAAoN8i4SFycnCgtiEAoD0pgKIqImJjZG9zACsVMBU6FT4VQRVyImNhcAAAoEgqAAFhdTQVNxVwAACgRipwAACgSipvAHQAAKCNInIAAKBFKgDgKiIA/gACYWxydksVURVuFXMVcgByAG2gtyEAoDwpeQCAAWV2dwBYFWUVaRVxAHACXxUAAAAAYxVyAGUA4wAXFXUA4wAZFWUAZQAAoM4iZSJkZ2UAAKDPImUAbgA7gKQApEBlI2Fycm93AAABbHJ7FX8V5SFmdACgtiFpImdodAAAoLchZQDkAG0VAAFjaYsVkRVvAG4AaQBuAPQAkwFuAHQAAKAxImwiY3R5AACgLSOACUFIYWJjZGVmaGlqbG9yc3R1d3oAuBW7Fb8V1RXgFegV+RUKFhUWHxZUFlcWZRbFFtsW7xb7FgUXChdyAPIAtAJhAHIAAKBlKQACZ2xyc8YVyhXOFdAV5yFlcgCgICDlIXRoAKA4IfIA9QxoAHagECAAoKMiawHZFd4VYSJyb3cAAKAPKWEA4wBfAgABYXnkFecV8iFvbg9hNGQAoUYhYW/tFfQVAAFnciEC8RVyAACgyiF0InNlcQAAoHcqgAFnbG0A/xUCFgUWO4CwALBAdABhALRjcCJ0eXYAAKCxKQABaXIOFhIW8yFodACgfykA4DXYId1hAHIAAAFschsWHRYAoMMhAKDCIYACYWVnc3YAKBauAjYWOhY+Fm0AAKHEIm9zLhY0Fm4AZABzoMQi9SFpdACgZiZhIm1tYQDdY2kAbgAAoPIiAKH3AGlvQxZRFmQAZQAAgfcAO29KFksW90BuI3RpbWVzAACgxyJuAPgAUBZjAHkAUmRjAG8CXhYAAAAAYhZyAG4AAKAeI28AcAAAoA0jgAJscHR1dwBuFnEWdRaSFp4W7CFhciRgZgAA4DXYVd0AotkCZW1wc30WhBaJFo0WcQBkoFAibwB0AACgUSJpIm51cwAAoDgi7CF1cwCgFCLxInVhcmUAoKEiYgBsAGUAYgBhAHIAdwBlAGQAZwDlANcAbgCAAWFkaAClFqoWtBZyAHIAbwD3APUMbwB3AG4AYQByAHIAbwB3APMA8xVhI3Jwb29uAAABbHK8FsAWZQBmAPQAHBZpAGcAaAD0AB4WYgHJFs8WawBhAHIAbwD3AJILbwLUFgAAAADYFnIAbgAAoB8jbwBwAACgDCOAAWNvdADhFukW7BYAAXJ55RboFgDgNdi53FVkbAAAoPYp8iFvaxFhAAFkcvMW9xZvAHQAAKDxImkA5qC/JVsSAAFhaP8WAhdyAPIANQNhAPIA1wvhIm5nbGUAoKYpAAFjaQ4XEBd5AF9k5yJyYXJyAKD/JwAJRGFjZGVmZ2xtbm9wcXJzdHV4MRc4F0YXWxcyBF4XaRd5F40XrBe0F78X2RcVGCEYLRg1GEAYAAFEbzUXgRZvAPQA+BUAAWNzPBdCF3UAdABlADuA6QDpQPQhZXIAoG4qAAJhaW95TRdQF1YXWhfyIW9uG2FyAGOgViI7gOoA6kDsIW9uAKBVIk1kbwB0ABdhAAFEcmIXZhdvAHQAAKBSIgDgNdgi3XKhmipuF3QXYQB2AGUAO4DoAOhAZKCWKm8AdAAAoJgqgKGZKmlscwCAF4UXhxfuInRlcnMAoOcjAKATIWSglSpvAHQAAKCXKoABYXBzAJMXlheiF2MAcgATYXQAeQBzogUinxcAAAAAoRdlAHQAAKAFInAAMaADIDMBqRerFwCgBCAAoAUgAAFnc7AXsRdLYXAAAKACIAABZ3C4F7sXbwBuABlhZgAA4DXYVt2AAWFscwDFF8sXzxdyAHOg1SJsAACg4yl1AHMAAKBxKmkAAKG1A2x21RfYF28AbgC1Y/VjAAJjc3V24BfoF/0XEBgAAWlv5BdWF3IAYwAAoFYiaQLuFwAAAADwF+0ADQThIW50AAFnbPUX+Rd0AHIAAKCWKuUhc3MAoJUqgAFhZWkAAxgGGAoYbABzAD1gcwB0AACgXyJ2AESgYSJEAACgeCrwImFyc2wAoOUpAAFEYRkYHRhvAHQAAKBTInIAcgAAoHEpgAFjZGkAJxgqGO0XcgAAoC8hbwD0AIwCAAFhaDEYMhi3YzuA8ADwQAABbXI5GD0YbAA7gOsA60BvAACgrCCAAWNpcABGGEgYSxhsACFgcwD0ACwEAAFlb08YVxhjAHQAYQB0AGkAbwDuABoEbgBlAG4AdABpAGEAbADlADME4Ql1GAAAgRgAAIMYiBgAAAAAoRilGAAAqhgAALsYvhjRGAAA1xgnGWwAbABpAG4AZwBkAG8AdABzAGUA8QBlF3kARGRtImFsZQAAoEAmgAFpbHIAjRiRGJ0Y7CFpZwCgA/tpApcYAAAAAJoYZwAAoAD7aQBnAACgBPsA4DXYI93sIWlnAKAB++whaWcA4GYAagCAAWFsdACvGLIYthh0AACgbSZpAGcAAKAC+24AcwAAoLElbwBmAJJh8AHCGAAAxhhmAADgNdhX3QABYWvJGMwYbADsAGsEdqDUIgCg2SphI3J0aW50AACgDSoAAWFv2hgiGQABY3PeGB8ZsQPnGP0YBRkSGRUZAAAdGbID7xjyGPQY9xj5GAAA+xg7gL0AvUAAoFMhO4C8ALxAAKBVIQCgWSEAoFshswEBGQAAAxkAoFQhAKBWIbQCCxkOGQAAAAAQGTuAvgC+QACgVyEAoFwhNQAAoFghtgEZGQAAGxkAoFohAKBdITgAAKBeIWwAAKBEIHcAbgAAoCIjYwByAADgNdi73IAIRWFiY2RlZmdpamxub3JzdHYARhlKGVoZXhlmGWkZkhmWGZkZnRmgGa0ZxhnLGc8Z4BkjGmygZyIAoIwqgAFjbXAAUBlTGVgZ9SF0ZfVhbQBhAOSgswM6FgCghipyImV2ZQAfYQABaXliGWUZcgBjAB1hM2RvAHQAIWGAoWUibHFzAMYEcBl6GfGhZSLOBAAAdhlsAGEAbgD0AN8EgKF+KmNkbACBGYQZjBljAACgqSpvAHQAb6CAKmyggioAoIQqZeDbIgD+cwAAoJQqcgAA4DXYJN3noGsirATtIWVsAKA3IWMAeQBTZIChdyJFYWoApxmpGasZAKCSKgCgpSoAoKQqAAJFYWVztBm2Gb0ZwhkAoGkicABwoIoq8iFveACgiipxoIgq8aCIKrUZaQBtAACg5yJwAGYAAOA12FjdYQB2AOUAYwIAAWNp0xnWGXIAAKAKIW0AAKFzImVs3BneGQCgjioAoJAqAIM+ADtjZGxxco0E6xn0GfgZ/BkBGgABY2nvGfEZAKCnKnIAAKB6Km8AdAAAoNci0CFhcgCglSl1ImVzdAAAoHwqgAJhZGVscwAKGvQZFhrVBCAa8AEPGgAAFBpwAHIAbwD4AFkZcgAAoHgpcQAAAWxxxAQbGmwAZQBzAPMASRlpAO0A5AQAAWVuJxouGnIjdG5lcXEAAOBpIgD+xQAsGgAFQWFiY2Vma29zeUAaQxpmGmoabRqDGocalhrCGtMacgDyAMwCAAJpbG1yShpOGlAaVBpyAHMA8ABxD2YAvWBpAGwA9AASBQABZHJYGlsaYwB5AEpkAKGUIWN3YBpkGmkAcgAAoEgpAKCtIWEAcgAAoA8h6SFyYyVhgAFhbHIAcxp7Gn8a8iF0c3WgZSZpAHQAAKBlJuwhaXAAoCYg4yFvbgCguSJyAADgNdgl3XMAAAFld4wakRphInJvdwAAoCUpYSJyb3cAAKAmKYACYW1vcHIAnxqjGqcauhq+GnIAcgAAoP8h9CFodACgOyJrAAABbHKsGrMaZSRmdGFycm93AACgqSHpJGdodGFycm93AKCqIWYAAOA12Fnd4iFhcgCgFSCAAWNsdADIGswa0BpyAADgNdi93GEAcwDoAGka8iFvaydhAAFicNca2xr1IWxsAKBDIOghZW4AoBAg4Qr2GgAA/RoAAAgbExsaGwAAIRs7GwAAAAA+G2IbmRuVG6sbAACyG80b0htjAHUAdABlADuA7QDtQAChYyBpeQEbBhtyAGMAO4DuAO5AOGQAAWN4CxsNG3kANWRjAGwAO4ChAKFAAAFmcssCFhsA4DXYJt1yAGEAdgBlADuA7ADsQIChSCFpbm8AJxsyGzYbAAFpbisbLxtuAHQAAKAMKnQAAKAtIuYhaW4AoNwpdABhAACgKSHsIWlnM2GAAWFvcABDG1sbXhuAAWNndABJG0sbWRtyACthgAFlbHAAcQVRG1UbaQBuAOUAyAVhAHIA9AByBWgAMWFmAACgtyJlAGQAtWEAoggiY2ZvdGkbbRt1G3kb4SFyZQCgBSFpAG4AdKAeImkAZQAAoN0pZABvAPQAWxsAoisiY2VscIEbhRuPG5QbYQBsAACguiIAAWdyiRuNG2UAcgDzACMQ4wCCG2EicmhrAACgFyryIW9kAKA8KgACY2dwdJ8boRukG6gbeQBRZG8AbgAvYWYAAOA12FrdYQC5Y3UAZQBzAHQAO4C/AL9AAAFjabUbuRtyAADgNdi+3G4AAKIIIkVkc3bCG8QbyBvQAwCg+SJvAHQAAKD1Inag9CIAoPMiaaBiIOwhZGUpYesB1hsAANkbYwB5AFZkbAA7gO8A70AAA2NmbW9zdeYb7hvyG/Ub+hsFHAABaXnqG+0bcgBjADVhOWRyAADgNdgn3eEhdGg3YnAAZgAA4DXYW93jAf8bAAADHHIAAOA12L/c8iFjeVhk6yFjeVRkAARhY2ZnaGpvcxUcGhwiHCYcKhwtHDAcNRzwIXBhdqC6A/BjAAFleR4cIRzkIWls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ZmdobG1vcHJzdHV3CiwNLBEsHSwnLDEsQCxLLFIsYix6LIQsjyzLLOgs7Sz/LAotcgDyAAkDYQByAACgYykAAWNyFSwbLHUAdABlADuA+gD6QPIACQ1yAOMBIywAACUseQBeZHYAZQBtYQABaXkrLDAscgBjADuA+wD7QENkgAFhYmgANyw6LD0scgDyANEO7CFhY3FhYQDyAOAOAAFpckQsSCzzIWh0AKB+KQDgNdgy3XIAYQB2AGUAO4D5APlAYQFWLF8scgAAAWxyWixcLACgvyEAoL4hbABrAACggCUAAWN0Zix2LG8CbCwAAAAAcyxyAG4AZaAcI3IAAKAcI28AcAAAoA8jcgBpAACg+CUAAWFsfiyBLGMAcgBrYTuAqACoQAABZ3CILIssbwBuAHNhZgAA4DXYZt0AA2FkaGxzdZksniynLLgsuyzFLHIAcgBvAPcACQ1vAHcAbgBhAHIAcgBvAPcA2A5hI3Jwb29uAAABbHKvLLMsZQBmAPQAWyxpAGcAaAD0AF0sdQDzAKYOaQAAocUDaGzBLMIs0mNvAG4AxWPwI2Fycm93cwCgyCGAAWNpdADRLOEs5CxvAtcsAAAAAN4scgBuAGWgHSNyAACgHSNvAHAAAKAOI24AZwBvYXIAaQAAoPklYwByAADgNdjK3IABZGlyAPMs9yz6LG8AdAAAoPAi7CFkZWlhaQBmoLUlAKC0JQABYW0DLQYtcgDyAMosbAA7gPwA/EDhIm5nbGUAoKcpgAdBQkRhY2RlZmxub3Byc3oAJy0qLTAtNC2bLZ0toS2/LcMtxy3TLdgt3C3gLfwtcgDyABADYQByAHag6CoAoOkqYQBzAOgA/gIAAW5yOC08LechcnQAoJwpgANla25wcnN0AJkpSC1NLVQtXi1iLYItYQBwAHAA4QAaHG8AdABoAGkAbgDnAKEXgAFoaXIAoSmzJFotbwBwAPQAdCVooJUh7wD4JgABaXVmLWotZwBtAOEAuygAAWJwbi14LXMjZXRuZXEAceCKIgD+AODLKgD+cyNldG5lcQBx4IsiAP4A4MwqAP4AAWhyhi2KLWUAdADhABIraSNhbmdsZQAAAWxyki2WLeUhZnQAoLIiaSJnaHQAAKCzInkAMmThIXNoAKCiIoABZWxyAKcttC24LWKiKCKuLQAAAACyLWEAcgAAoLsicQAAoFoi7CFpcACg7iIAAWJ0vC1eD2EA8gBfD3IAAOA12DPddAByAOkAlS1zAHUAAAFicM0t0C0A4IIi0iAA4IMi0iBwAGYAAOA12GfdcgBvAPAAWQt0AHIA6QCaLQABY3XkLegtcgAA4DXYy9wAAWJw7C30LW4AAAFFZXUt8S0A4IoiAP5uAAABRWV/LfktAOCLIgD+6SJnemFnAKCaKYADY2Vmb3BycwANLhAuJS4pLiMuLi40LukhcmN1YQABZGkULiEuAAFiZxguHC5hAHIAAKBfKmUAcaAnIgCgWSLlIXJwAKAYIXIAAOA12DTdcABmAADgNdho3WWgQCJhAHQA6ABqD2MAcgAA4DXYzNzjCuQRUC4AAFQuAABYLmIuAAAAAGMubS5wLnQuAAAAAIguki4AAJouJxIqEnQAcgDpAB0ScgAA4DXYNd0AAUFhWy5eLnIA8gDnAnIA8gCTB75jAAFBYWYuaS5yAPIA4AJyAPIAjAdhAPAAeh5pAHMAAKD7IoABZHB0APgReS6DLgABZmx9LoAuAOA12GnddQDzAP8RaQBtAOUABBIAAUFhiy6OLnIA8gDuAnIA8gCaBwABY3GVLgoScgAA4DXYzdwAAXB0nS6hLmwAdQDzACUScgDpACASAARhY2VmaW9zdbEuvC7ELsguzC7PLtQu2S5jAAABdXm2LrsudABlADuA/QD9QE9kAAFpecAuwy5yAGMAd2FLZG4AO4ClAKVAcgAA4DXYNt1jAHkAV2RwAGYAAOA12GrdYwByAADgNdjO3AABY23dLt8ueQBOZGwAO4D/AP9AAAVhY2RlZmhpb3N38y73Lv8uAi8MLxAvEy8YLx0vIi9jInV0ZQB6YQABYXn7Lv4u8iFvbn5hN2RvAHQAfGEAAWV0Bi8KL3QAcgDmAB8QYQC2Y3IAAOA12DfdYwB5ADZk5yJyYXJyAKDdIXAAZgAA4DXYa91jAHIAAOA12M/cAAFqbiYvKC8AoA0gagAAoAwg");
310070
310483
  });
310071
310484
 
310072
- // ../../../v2/node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/bin-trie-flags.js
310485
+ // ../../node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/internal/bin-trie-flags.js
310073
310486
  var BinTrieFlags;
310074
310487
  var init_bin_trie_flags = __esm(() => {
310075
310488
  (function(BinTrieFlags2) {
@@ -310080,7 +310493,7 @@ var init_bin_trie_flags = __esm(() => {
310080
310493
  })(BinTrieFlags || (BinTrieFlags = {}));
310081
310494
  });
310082
310495
 
310083
- // ../../../v2/node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode.js
310496
+ // ../../node_modules/.pnpm/entities@8.0.0/node_modules/entities/dist/decode.js
310084
310497
  function isNumber(code) {
310085
310498
  return code >= CharCodes.ZERO && code <= CharCodes.NINE;
310086
310499
  }
@@ -310362,7 +310775,7 @@ var init_decode = __esm(() => {
310362
310775
  })(DecodingMode || (DecodingMode = {}));
310363
310776
  });
310364
310777
 
310365
- // ../../../v2/node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/html.js
310778
+ // ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/html.js
310366
310779
  function getTagID(tagName) {
310367
310780
  var _a3;
310368
310781
  return (_a3 = TAG_NAME_TO_ID.get(tagName)) !== null && _a3 !== undefined ? _a3 : TAG_ID.UNKNOWN;
@@ -310871,7 +311284,7 @@ var init_html = __esm(() => {
310871
311284
  ]);
310872
311285
  });
310873
311286
 
310874
- // ../../../v2/node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/tokenizer/index.js
311287
+ // ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/tokenizer/index.js
310875
311288
  function isAsciiDigit(cp) {
310876
311289
  return cp >= CODE_POINTS.DIGIT_0 && cp <= CODE_POINTS.DIGIT_9;
310877
311290
  }
@@ -313328,7 +313741,7 @@ var init_tokenizer = __esm(() => {
313328
313741
  };
313329
313742
  });
313330
313743
 
313331
- // ../../../v2/node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/parser/open-element-stack.js
313744
+ // ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/parser/open-element-stack.js
313332
313745
  class OpenElementStack {
313333
313746
  get currentTmplContentOrNode() {
313334
313747
  return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;
@@ -313643,7 +314056,7 @@ var init_open_element_stack = __esm(() => {
313643
314056
  TABLE_CELLS = new Set([TAG_ID.TD, TAG_ID.TH]);
313644
314057
  });
313645
314058
 
313646
- // ../../../v2/node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/parser/formatting-element-list.js
314059
+ // ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/parser/formatting-element-list.js
313647
314060
  class FormattingElementList {
313648
314061
  constructor(treeAdapter) {
313649
314062
  this.treeAdapter = treeAdapter;
@@ -313739,7 +314152,7 @@ var init_formatting_element_list = __esm(() => {
313739
314152
  MARKER = { type: EntryType.Marker };
313740
314153
  });
313741
314154
 
313742
- // ../../../v2/node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/tree-adapters/default.js
314155
+ // ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/tree-adapters/default.js
313743
314156
  var defaultTreeAdapter;
313744
314157
  var init_default2 = __esm(() => {
313745
314158
  init_html();
@@ -313909,7 +314322,7 @@ var init_default2 = __esm(() => {
313909
314322
  };
313910
314323
  });
313911
314324
 
313912
- // ../../../v2/node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/doctype.js
314325
+ // ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/doctype.js
313913
314326
  function hasPrefix(publicId, prefixes) {
313914
314327
  return prefixes.some((prefix) => publicId.startsWith(prefix));
313915
314328
  }
@@ -314019,7 +314432,7 @@ var init_doctype = __esm(() => {
314019
314432
  ];
314020
314433
  });
314021
314434
 
314022
- // ../../../v2/node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/foreign-content.js
314435
+ // ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/common/foreign-content.js
314023
314436
  function causesExit(startTagToken) {
314024
314437
  const tn = startTagToken.tagID;
314025
314438
  const isFontWithAttrs = tn === TAG_ID.FONT && startTagToken.attrs.some(({ name }) => name === ATTRS2.COLOR || name === ATTRS2.SIZE || name === ATTRS2.FACE);
@@ -314241,7 +314654,7 @@ var init_foreign_content = __esm(() => {
314241
314654
  ]);
314242
314655
  });
314243
314656
 
314244
- // ../../../v2/node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/parser/index.js
314657
+ // ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/parser/index.js
314245
314658
  class Parser {
314246
314659
  constructor(options, document3, fragmentContext = null, scriptHandler = null) {
314247
314660
  this.fragmentContext = fragmentContext;
@@ -317198,7 +317611,7 @@ var init_parser = __esm(() => {
317198
317611
  TABLE_VOID_ELEMENTS = new Set([TAG_ID.CAPTION, TAG_ID.COL, TAG_ID.COLGROUP, TAG_ID.TBODY, TAG_ID.TD, TAG_ID.TFOOT, TAG_ID.TH, TAG_ID.THEAD, TAG_ID.TR]);
317199
317612
  });
317200
317613
 
317201
- // ../../../v2/node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/serializer/index.js
317614
+ // ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/serializer/index.js
317202
317615
  var VOID_ELEMENTS;
317203
317616
  var init_serializer = __esm(() => {
317204
317617
  init_html();
@@ -317225,7 +317638,7 @@ var init_serializer = __esm(() => {
317225
317638
  ]);
317226
317639
  });
317227
317640
 
317228
- // ../../../v2/node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/index.js
317641
+ // ../../node_modules/.pnpm/parse5@8.0.1/node_modules/parse5/dist/index.js
317229
317642
  function parseFragment(fragmentContext, html, options) {
317230
317643
  if (typeof fragmentContext === "string") {
317231
317644
  options = html;
@@ -319681,10 +320094,10 @@ var init_html2 = __esm(() => {
319681
320094
  init_converter();
319682
320095
  });
319683
320096
 
319684
- // ../../../v2/node_modules/.pnpm/dequal@2.0.3/node_modules/dequal/dist/index.mjs
320097
+ // ../../node_modules/.pnpm/dequal@2.0.3/node_modules/dequal/dist/index.mjs
319685
320098
  var init_dist4 = () => {};
319686
320099
 
319687
- // ../../../v2/node_modules/.pnpm/devlop@1.1.0/node_modules/devlop/lib/development.js
320100
+ // ../../node_modules/.pnpm/devlop@1.1.0/node_modules/devlop/lib/development.js
319688
320101
  function ok2(value2, message) {
319689
320102
  assert2(Boolean(value2), false, true, "ok", "Expected value to be truthy", message);
319690
320103
  }
@@ -319713,7 +320126,7 @@ var init_development = __esm(() => {
319713
320126
  };
319714
320127
  });
319715
320128
 
319716
- // ../../../v2/node_modules/.pnpm/mdast-util-to-string@4.0.0/node_modules/mdast-util-to-string/lib/index.js
320129
+ // ../../node_modules/.pnpm/mdast-util-to-string@4.0.0/node_modules/mdast-util-to-string/lib/index.js
319717
320130
  function toString(value2, options) {
319718
320131
  const settings = options || emptyOptions;
319719
320132
  const includeImageAlt = typeof settings.includeImageAlt === "boolean" ? settings.includeImageAlt : true;
@@ -319753,12 +320166,12 @@ var init_lib = __esm(() => {
319753
320166
  emptyOptions = {};
319754
320167
  });
319755
320168
 
319756
- // ../../../v2/node_modules/.pnpm/mdast-util-to-string@4.0.0/node_modules/mdast-util-to-string/index.js
320169
+ // ../../node_modules/.pnpm/mdast-util-to-string@4.0.0/node_modules/mdast-util-to-string/index.js
319757
320170
  var init_mdast_util_to_string = __esm(() => {
319758
320171
  init_lib();
319759
320172
  });
319760
320173
 
319761
- // ../../../v2/node_modules/.pnpm/character-entities@2.0.2/node_modules/character-entities/index.js
320174
+ // ../../node_modules/.pnpm/character-entities@2.0.2/node_modules/character-entities/index.js
319762
320175
  var characterEntities;
319763
320176
  var init_character_entities = __esm(() => {
319764
320177
  characterEntities = {
@@ -321891,7 +322304,7 @@ var init_character_entities = __esm(() => {
321891
322304
  };
321892
322305
  });
321893
322306
 
321894
- // ../../../v2/node_modules/.pnpm/decode-named-character-reference@1.3.0/node_modules/decode-named-character-reference/index.js
322307
+ // ../../node_modules/.pnpm/decode-named-character-reference@1.3.0/node_modules/decode-named-character-reference/index.js
321895
322308
  function decodeNamedCharacterReference(value2) {
321896
322309
  return own.call(characterEntities, value2) ? characterEntities[value2] : false;
321897
322310
  }
@@ -321901,7 +322314,7 @@ var init_decode_named_character_reference = __esm(() => {
321901
322314
  own = {}.hasOwnProperty;
321902
322315
  });
321903
322316
 
321904
- // ../../../v2/node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/codes.js
322317
+ // ../../node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/codes.js
321905
322318
  var codes;
321906
322319
  var init_codes = __esm(() => {
321907
322320
  codes = {
@@ -322044,7 +322457,7 @@ var init_codes = __esm(() => {
322044
322457
  };
322045
322458
  });
322046
322459
 
322047
- // ../../../v2/node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/constants.js
322460
+ // ../../node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/constants.js
322048
322461
  var constants;
322049
322462
  var init_constants = __esm(() => {
322050
322463
  constants = {
@@ -322085,7 +322498,7 @@ var init_constants = __esm(() => {
322085
322498
  };
322086
322499
  });
322087
322500
 
322088
- // ../../../v2/node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/types.js
322501
+ // ../../node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/types.js
322089
322502
  var types9;
322090
322503
  var init_types9 = __esm(() => {
322091
322504
  types9 = {
@@ -322195,7 +322608,7 @@ var init_types9 = __esm(() => {
322195
322608
  };
322196
322609
  });
322197
322610
 
322198
- // ../../../v2/node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/values.js
322611
+ // ../../node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/values.js
322199
322612
  var values;
322200
322613
  var init_values = __esm(() => {
322201
322614
  values = {
@@ -322302,7 +322715,7 @@ var init_values = __esm(() => {
322302
322715
  };
322303
322716
  });
322304
322717
 
322305
- // ../../../v2/node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/default.js
322718
+ // ../../node_modules/.pnpm/micromark-util-symbol@2.0.1/node_modules/micromark-util-symbol/lib/default.js
322306
322719
  var init_default3 = __esm(() => {
322307
322720
  init_codes();
322308
322721
  init_constants();
@@ -322310,7 +322723,7 @@ var init_default3 = __esm(() => {
322310
322723
  init_values();
322311
322724
  });
322312
322725
 
322313
- // ../../../v2/node_modules/.pnpm/micromark-util-chunked@2.0.1/node_modules/micromark-util-chunked/dev/index.js
322726
+ // ../../node_modules/.pnpm/micromark-util-chunked@2.0.1/node_modules/micromark-util-chunked/dev/index.js
322314
322727
  function splice(list, start, remove, items) {
322315
322728
  const end = list.length;
322316
322729
  let chunkStart = 0;
@@ -322348,7 +322761,7 @@ var init_dev = __esm(() => {
322348
322761
  init_default3();
322349
322762
  });
322350
322763
 
322351
- // ../../../v2/node_modules/.pnpm/micromark-util-combine-extensions@2.0.1/node_modules/micromark-util-combine-extensions/index.js
322764
+ // ../../node_modules/.pnpm/micromark-util-combine-extensions@2.0.1/node_modules/micromark-util-combine-extensions/index.js
322352
322765
  function combineExtensions(extensions) {
322353
322766
  const all2 = {};
322354
322767
  let index = -1;
@@ -322388,7 +322801,7 @@ var init_micromark_util_combine_extensions = __esm(() => {
322388
322801
  hasOwnProperty = {}.hasOwnProperty;
322389
322802
  });
322390
322803
 
322391
- // ../../../v2/node_modules/.pnpm/micromark-util-decode-numeric-character-reference@2.0.2/node_modules/micromark-util-decode-numeric-character-reference/dev/index.js
322804
+ // ../../node_modules/.pnpm/micromark-util-decode-numeric-character-reference@2.0.2/node_modules/micromark-util-decode-numeric-character-reference/dev/index.js
322392
322805
  function decodeNumericCharacterReference(value2, base3) {
322393
322806
  const code = Number.parseInt(value2, base3);
322394
322807
  if (code < codes.ht || code === codes.vt || code > codes.cr && code < codes.space || code > codes.tilde && code < 160 || code > 55295 && code < 57344 || code > 64975 && code < 65008 || (code & 65535) === 65535 || (code & 65535) === 65534 || code > 1114111) {
@@ -322400,7 +322813,7 @@ var init_dev2 = __esm(() => {
322400
322813
  init_default3();
322401
322814
  });
322402
322815
 
322403
- // ../../../v2/node_modules/.pnpm/micromark-util-normalize-identifier@2.0.1/node_modules/micromark-util-normalize-identifier/dev/index.js
322816
+ // ../../node_modules/.pnpm/micromark-util-normalize-identifier@2.0.1/node_modules/micromark-util-normalize-identifier/dev/index.js
322404
322817
  function normalizeIdentifier(value2) {
322405
322818
  return value2.replace(/[\t\n\r ]+/g, values.space).replace(/^ | $/g, "").toLowerCase().toUpperCase();
322406
322819
  }
@@ -322408,7 +322821,7 @@ var init_dev3 = __esm(() => {
322408
322821
  init_default3();
322409
322822
  });
322410
322823
 
322411
- // ../../../v2/node_modules/.pnpm/micromark-util-character@2.1.1/node_modules/micromark-util-character/dev/index.js
322824
+ // ../../node_modules/.pnpm/micromark-util-character@2.1.1/node_modules/micromark-util-character/dev/index.js
322412
322825
  function asciiControl(code) {
322413
322826
  return code !== null && (code < codes.space || code === codes.del);
322414
322827
  }
@@ -322440,7 +322853,7 @@ var init_dev4 = __esm(() => {
322440
322853
  unicodeWhitespace = regexCheck(/\s/);
322441
322854
  });
322442
322855
 
322443
- // ../../../v2/node_modules/.pnpm/micromark-factory-space@2.0.1/node_modules/micromark-factory-space/dev/index.js
322856
+ // ../../node_modules/.pnpm/micromark-factory-space@2.0.1/node_modules/micromark-factory-space/dev/index.js
322444
322857
  function factorySpace(effects2, ok3, type, max2) {
322445
322858
  const limit = max2 ? max2 - 1 : Number.POSITIVE_INFINITY;
322446
322859
  let size = 0;
@@ -322465,7 +322878,7 @@ var init_dev5 = __esm(() => {
322465
322878
  init_dev4();
322466
322879
  });
322467
322880
 
322468
- // ../../../v2/node_modules/.pnpm/micromark@4.0.2_supports-color@7.2.0/node_modules/micromark/dev/lib/initialize/content.js
322881
+ // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/initialize/content.js
322469
322882
  function initializeContent(effects2) {
322470
322883
  const contentStart = effects2.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);
322471
322884
  let previous;
@@ -322522,7 +322935,7 @@ var init_content = __esm(() => {
322522
322935
  content = { tokenize: initializeContent };
322523
322936
  });
322524
322937
 
322525
- // ../../../v2/node_modules/.pnpm/micromark@4.0.2_supports-color@7.2.0/node_modules/micromark/dev/lib/initialize/document.js
322938
+ // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/initialize/document.js
322526
322939
  function initializeDocument(effects2) {
322527
322940
  const self = this;
322528
322941
  const stack = [];
@@ -322714,7 +323127,7 @@ var init_document2 = __esm(() => {
322714
323127
  containerConstruct = { tokenize: tokenizeContainer };
322715
323128
  });
322716
323129
 
322717
- // ../../../v2/node_modules/.pnpm/micromark-util-classify-character@2.0.1/node_modules/micromark-util-classify-character/dev/index.js
323130
+ // ../../node_modules/.pnpm/micromark-util-classify-character@2.0.1/node_modules/micromark-util-classify-character/dev/index.js
322718
323131
  function classifyCharacter(code) {
322719
323132
  if (code === codes.eof || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {
322720
323133
  return constants.characterGroupWhitespace;
@@ -322728,7 +323141,7 @@ var init_dev6 = __esm(() => {
322728
323141
  init_default3();
322729
323142
  });
322730
323143
 
322731
- // ../../../v2/node_modules/.pnpm/micromark-util-resolve-all@2.0.1/node_modules/micromark-util-resolve-all/index.js
323144
+ // ../../node_modules/.pnpm/micromark-util-resolve-all@2.0.1/node_modules/micromark-util-resolve-all/index.js
322732
323145
  function resolveAll(constructs2, events, context) {
322733
323146
  const called = [];
322734
323147
  let index = -1;
@@ -322742,7 +323155,7 @@ function resolveAll(constructs2, events, context) {
322742
323155
  return events;
322743
323156
  }
322744
323157
 
322745
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/attention.js
323158
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/attention.js
322746
323159
  function resolveAllAttention(events, context) {
322747
323160
  let index = -1;
322748
323161
  let open;
@@ -322878,7 +323291,7 @@ var init_attention = __esm(() => {
322878
323291
  };
322879
323292
  });
322880
323293
 
322881
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/autolink.js
323294
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/autolink.js
322882
323295
  function tokenizeAutolink(effects2, ok3, nok) {
322883
323296
  let size = 0;
322884
323297
  return start;
@@ -322983,7 +323396,7 @@ var init_autolink = __esm(() => {
322983
323396
  autolink = { name: "autolink", tokenize: tokenizeAutolink };
322984
323397
  });
322985
323398
 
322986
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/blank-line.js
323399
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/blank-line.js
322987
323400
  function tokenizeBlankLine(effects2, ok3, nok) {
322988
323401
  return start;
322989
323402
  function start(code) {
@@ -323001,7 +323414,7 @@ var init_blank_line = __esm(() => {
323001
323414
  blankLine = { partial: true, tokenize: tokenizeBlankLine };
323002
323415
  });
323003
323416
 
323004
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/block-quote.js
323417
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/block-quote.js
323005
323418
  function tokenizeBlockQuoteStart(effects2, ok3, nok) {
323006
323419
  const self = this;
323007
323420
  return start;
@@ -323064,7 +323477,7 @@ var init_block_quote = __esm(() => {
323064
323477
  };
323065
323478
  });
323066
323479
 
323067
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/character-escape.js
323480
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/character-escape.js
323068
323481
  function tokenizeCharacterEscape(effects2, ok3, nok) {
323069
323482
  return start;
323070
323483
  function start(code) {
@@ -323097,7 +323510,7 @@ var init_character_escape = __esm(() => {
323097
323510
  };
323098
323511
  });
323099
323512
 
323100
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/character-reference.js
323513
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/character-reference.js
323101
323514
  function tokenizeCharacterReference(effects2, ok3, nok) {
323102
323515
  const self = this;
323103
323516
  let size = 0;
@@ -323170,7 +323583,7 @@ var init_character_reference = __esm(() => {
323170
323583
  };
323171
323584
  });
323172
323585
 
323173
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/code-fenced.js
323586
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/code-fenced.js
323174
323587
  function tokenizeCodeFenced(effects2, ok3, nok) {
323175
323588
  const self = this;
323176
323589
  const closeStart = { partial: true, tokenize: tokenizeCloseStart };
@@ -323359,7 +323772,7 @@ var init_code_fenced = __esm(() => {
323359
323772
  };
323360
323773
  });
323361
323774
 
323362
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/code-indented.js
323775
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/code-indented.js
323363
323776
  function tokenizeCodeIndented(effects2, ok3, nok) {
323364
323777
  const self = this;
323365
323778
  return start;
@@ -323428,7 +323841,7 @@ var init_code_indented = __esm(() => {
323428
323841
  furtherStart = { partial: true, tokenize: tokenizeFurtherStart };
323429
323842
  });
323430
323843
 
323431
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/code-text.js
323844
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/code-text.js
323432
323845
  function resolveCodeText(events) {
323433
323846
  let tailExitIndex = events.length - 4;
323434
323847
  let headEnterIndex = 3;
@@ -323551,7 +323964,7 @@ var init_code_text = __esm(() => {
323551
323964
  };
323552
323965
  });
323553
323966
 
323554
- // ../../../v2/node_modules/.pnpm/micromark-util-subtokenize@2.1.0/node_modules/micromark-util-subtokenize/dev/lib/splice-buffer.js
323967
+ // ../../node_modules/.pnpm/micromark-util-subtokenize@2.1.0/node_modules/micromark-util-subtokenize/dev/lib/splice-buffer.js
323555
323968
  class SpliceBuffer {
323556
323969
  constructor(initial) {
323557
323970
  this.left = initial ? [...initial] : [];
@@ -323637,7 +324050,7 @@ var init_splice_buffer = __esm(() => {
323637
324050
  init_default3();
323638
324051
  });
323639
324052
 
323640
- // ../../../v2/node_modules/.pnpm/micromark-util-subtokenize@2.1.0/node_modules/micromark-util-subtokenize/dev/index.js
324053
+ // ../../node_modules/.pnpm/micromark-util-subtokenize@2.1.0/node_modules/micromark-util-subtokenize/dev/index.js
323641
324054
  function subtokenize(eventsArray) {
323642
324055
  const jumps = {};
323643
324056
  let index = -1;
@@ -323796,7 +324209,7 @@ var init_dev7 = __esm(() => {
323796
324209
  init_splice_buffer();
323797
324210
  });
323798
324211
 
323799
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/content.js
324212
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/content.js
323800
324213
  function resolveContent(events) {
323801
324214
  subtokenize(events);
323802
324215
  return events;
@@ -323874,7 +324287,7 @@ var init_content2 = __esm(() => {
323874
324287
  continuationConstruct = { partial: true, tokenize: tokenizeContinuation };
323875
324288
  });
323876
324289
 
323877
- // ../../../v2/node_modules/.pnpm/micromark-factory-destination@2.0.1/node_modules/micromark-factory-destination/dev/index.js
324290
+ // ../../node_modules/.pnpm/micromark-factory-destination@2.0.1/node_modules/micromark-factory-destination/dev/index.js
323878
324291
  function factoryDestination(effects2, ok3, nok, type, literalType2, literalMarkerType, rawType, stringType2, max2) {
323879
324292
  const limit = max2 || Number.POSITIVE_INFINITY;
323880
324293
  let balance = 0;
@@ -323966,7 +324379,7 @@ var init_dev8 = __esm(() => {
323966
324379
  init_default3();
323967
324380
  });
323968
324381
 
323969
- // ../../../v2/node_modules/.pnpm/micromark-factory-label@2.0.1/node_modules/micromark-factory-label/dev/index.js
324382
+ // ../../node_modules/.pnpm/micromark-factory-label@2.0.1/node_modules/micromark-factory-label/dev/index.js
323970
324383
  function factoryLabel(effects2, ok3, nok, type, markerType, stringType2) {
323971
324384
  const self = this;
323972
324385
  let size = 0;
@@ -324027,7 +324440,7 @@ var init_dev9 = __esm(() => {
324027
324440
  init_default3();
324028
324441
  });
324029
324442
 
324030
- // ../../../v2/node_modules/.pnpm/micromark-factory-title@2.0.1/node_modules/micromark-factory-title/dev/index.js
324443
+ // ../../node_modules/.pnpm/micromark-factory-title@2.0.1/node_modules/micromark-factory-title/dev/index.js
324031
324444
  function factoryTitle(effects2, ok3, nok, type, markerType, stringType2) {
324032
324445
  let marker;
324033
324446
  return start;
@@ -324092,7 +324505,7 @@ var init_dev10 = __esm(() => {
324092
324505
  init_default3();
324093
324506
  });
324094
324507
 
324095
- // ../../../v2/node_modules/.pnpm/micromark-factory-whitespace@2.0.1/node_modules/micromark-factory-whitespace/dev/index.js
324508
+ // ../../node_modules/.pnpm/micromark-factory-whitespace@2.0.1/node_modules/micromark-factory-whitespace/dev/index.js
324096
324509
  function factoryWhitespace(effects2, ok3) {
324097
324510
  let seen;
324098
324511
  return start;
@@ -324116,7 +324529,7 @@ var init_dev11 = __esm(() => {
324116
324529
  init_default3();
324117
324530
  });
324118
324531
 
324119
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/definition.js
324532
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/definition.js
324120
324533
  function tokenizeDefinition(effects2, ok3, nok) {
324121
324534
  const self = this;
324122
324535
  let identifier;
@@ -324190,7 +324603,7 @@ var init_definition = __esm(() => {
324190
324603
  titleBefore = { partial: true, tokenize: tokenizeTitleBefore };
324191
324604
  });
324192
324605
 
324193
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js
324606
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/hard-break-escape.js
324194
324607
  function tokenizeHardBreakEscape(effects2, ok3, nok) {
324195
324608
  return start;
324196
324609
  function start(code) {
@@ -324218,7 +324631,7 @@ var init_hard_break_escape = __esm(() => {
324218
324631
  };
324219
324632
  });
324220
324633
 
324221
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/heading-atx.js
324634
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/heading-atx.js
324222
324635
  function resolveHeadingAtx(events, context) {
324223
324636
  let contentEnd = events.length - 2;
324224
324637
  let contentStart = 3;
@@ -324323,7 +324736,7 @@ var init_heading_atx = __esm(() => {
324323
324736
  };
324324
324737
  });
324325
324738
 
324326
- // ../../../v2/node_modules/.pnpm/micromark-util-html-tag-name@2.0.1/node_modules/micromark-util-html-tag-name/index.js
324739
+ // ../../node_modules/.pnpm/micromark-util-html-tag-name@2.0.1/node_modules/micromark-util-html-tag-name/index.js
324327
324740
  var htmlBlockNames, htmlRawNames;
324328
324741
  var init_micromark_util_html_tag_name = __esm(() => {
324329
324742
  htmlBlockNames = [
@@ -324393,7 +324806,7 @@ var init_micromark_util_html_tag_name = __esm(() => {
324393
324806
  htmlRawNames = ["pre", "script", "style", "textarea"];
324394
324807
  });
324395
324808
 
324396
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/html-flow.js
324809
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/html-flow.js
324397
324810
  function resolveToHtmlFlow(events) {
324398
324811
  let index = events.length;
324399
324812
  while (index--) {
@@ -324783,7 +325196,7 @@ var init_html_flow = __esm(() => {
324783
325196
  };
324784
325197
  });
324785
325198
 
324786
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/html-text.js
325199
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/html-text.js
324787
325200
  function tokenizeHtmlText(effects2, ok3, nok) {
324788
325201
  const self = this;
324789
325202
  let marker;
@@ -325097,7 +325510,7 @@ var init_html_text = __esm(() => {
325097
325510
  htmlText = { name: "htmlText", tokenize: tokenizeHtmlText };
325098
325511
  });
325099
325512
 
325100
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/label-end.js
325513
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/label-end.js
325101
325514
  function resolveAllLabelEnd(events) {
325102
325515
  let index = -1;
325103
325516
  const newEvents = [];
@@ -325329,7 +325742,7 @@ var init_label_end = __esm(() => {
325329
325742
  referenceCollapsedConstruct = { tokenize: tokenizeReferenceCollapsed };
325330
325743
  });
325331
325744
 
325332
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/label-start-image.js
325745
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/label-start-image.js
325333
325746
  function tokenizeLabelStartImage(effects2, ok3, nok) {
325334
325747
  const self = this;
325335
325748
  return start;
@@ -325367,7 +325780,7 @@ var init_label_start_image = __esm(() => {
325367
325780
  };
325368
325781
  });
325369
325782
 
325370
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/label-start-link.js
325783
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/label-start-link.js
325371
325784
  function tokenizeLabelStartLink(effects2, ok3, nok) {
325372
325785
  const self = this;
325373
325786
  return start;
@@ -325396,7 +325809,7 @@ var init_label_start_link = __esm(() => {
325396
325809
  };
325397
325810
  });
325398
325811
 
325399
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/line-ending.js
325812
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/line-ending.js
325400
325813
  function tokenizeLineEnding(effects2, ok3) {
325401
325814
  return start;
325402
325815
  function start(code) {
@@ -325416,7 +325829,7 @@ var init_line_ending = __esm(() => {
325416
325829
  lineEnding = { name: "lineEnding", tokenize: tokenizeLineEnding };
325417
325830
  });
325418
325831
 
325419
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/thematic-break.js
325832
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/thematic-break.js
325420
325833
  function tokenizeThematicBreak(effects2, ok3, nok) {
325421
325834
  let size = 0;
325422
325835
  let marker;
@@ -325463,7 +325876,7 @@ var init_thematic_break = __esm(() => {
325463
325876
  };
325464
325877
  });
325465
325878
 
325466
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/list.js
325879
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/list.js
325467
325880
  function tokenizeListStart(effects2, ok3, nok) {
325468
325881
  const self = this;
325469
325882
  const tail = self.events[self.events.length - 1];
@@ -325608,7 +326021,7 @@ var init_list = __esm(() => {
325608
326021
  indentConstruct = { partial: true, tokenize: tokenizeIndent };
325609
326022
  });
325610
326023
 
325611
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/setext-underline.js
326024
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/lib/setext-underline.js
325612
326025
  function resolveToSetextUnderline(events, context) {
325613
326026
  let index = events.length;
325614
326027
  let content3;
@@ -325706,7 +326119,7 @@ var init_setext_underline = __esm(() => {
325706
326119
  };
325707
326120
  });
325708
326121
 
325709
- // ../../../v2/node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/index.js
326122
+ // ../../node_modules/.pnpm/micromark-core-commonmark@2.0.3/node_modules/micromark-core-commonmark/dev/index.js
325710
326123
  var init_dev12 = __esm(() => {
325711
326124
  init_attention();
325712
326125
  init_autolink();
@@ -325732,7 +326145,7 @@ var init_dev12 = __esm(() => {
325732
326145
  init_thematic_break();
325733
326146
  });
325734
326147
 
325735
- // ../../../v2/node_modules/.pnpm/micromark@4.0.2_supports-color@7.2.0/node_modules/micromark/dev/lib/initialize/flow.js
326148
+ // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/initialize/flow.js
325736
326149
  function initializeFlow(effects2) {
325737
326150
  const self = this;
325738
326151
  const initial = effects2.attempt(blankLine, atBlankEnding, effects2.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects2, effects2.attempt(this.parser.constructs.flow, afterConstruct, effects2.attempt(content2, afterConstruct)), types9.linePrefix)));
@@ -325772,7 +326185,7 @@ var init_flow = __esm(() => {
325772
326185
  flow = { tokenize: initializeFlow };
325773
326186
  });
325774
326187
 
325775
- // ../../../v2/node_modules/.pnpm/micromark@4.0.2_supports-color@7.2.0/node_modules/micromark/dev/lib/initialize/text.js
326188
+ // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/initialize/text.js
325776
326189
  function initializeFactory(field) {
325777
326190
  return {
325778
326191
  resolveAll: createResolver(field === "text" ? resolveAllLineSuffixes : undefined),
@@ -325911,7 +326324,7 @@ var init_text = __esm(() => {
325911
326324
  text = initializeFactory("text");
325912
326325
  });
325913
326326
 
325914
- // ../../../v2/node_modules/.pnpm/micromark@4.0.2_supports-color@7.2.0/node_modules/micromark/dev/lib/constructs.js
326327
+ // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/constructs.js
325915
326328
  var exports_constructs = {};
325916
326329
  __export(exports_constructs, {
325917
326330
  text: () => text2,
@@ -325986,7 +326399,7 @@ var init_constructs = __esm(() => {
325986
326399
  disable = { null: [] };
325987
326400
  });
325988
326401
 
325989
- // ../../../v2/node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js
326402
+ // ../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js
325990
326403
  var require_ms = __commonJS((exports, module) => {
325991
326404
  var s = 1000;
325992
326405
  var m = s * 60;
@@ -326096,7 +326509,7 @@ var require_ms = __commonJS((exports, module) => {
326096
326509
  }
326097
326510
  });
326098
326511
 
326099
- // ../../../v2/node_modules/.pnpm/debug@4.4.3_supports-color@7.2.0/node_modules/debug/src/common.js
326512
+ // ../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/common.js
326100
326513
  var require_common = __commonJS((exports, module) => {
326101
326514
  function setup(env) {
326102
326515
  createDebug.debug = createDebug;
@@ -326271,7 +326684,7 @@ var require_common = __commonJS((exports, module) => {
326271
326684
  module.exports = setup;
326272
326685
  });
326273
326686
 
326274
- // ../../../v2/node_modules/.pnpm/debug@4.4.3_supports-color@7.2.0/node_modules/debug/src/browser.js
326687
+ // ../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/browser.js
326275
326688
  var require_browser = __commonJS((exports, module) => {
326276
326689
  exports.formatArgs = formatArgs;
326277
326690
  exports.save = save;
@@ -326431,36 +326844,30 @@ var require_browser = __commonJS((exports, module) => {
326431
326844
  };
326432
326845
  });
326433
326846
 
326434
- // ../../../v2/node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js
326847
+ // ../../node_modules/.pnpm/has-flag@3.0.0/node_modules/has-flag/index.js
326435
326848
  var require_has_flag = __commonJS((exports, module) => {
326436
- module.exports = (flag, argv = process.argv) => {
326849
+ module.exports = (flag, argv) => {
326850
+ argv = argv || process.argv;
326437
326851
  const prefix = flag.startsWith("-") ? "" : flag.length === 1 ? "-" : "--";
326438
- const position = argv.indexOf(prefix + flag);
326439
- const terminatorPosition = argv.indexOf("--");
326440
- return position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);
326852
+ const pos = argv.indexOf(prefix + flag);
326853
+ const terminatorPos = argv.indexOf("--");
326854
+ return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);
326441
326855
  };
326442
326856
  });
326443
326857
 
326444
- // ../../../v2/node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js
326858
+ // ../../node_modules/.pnpm/supports-color@5.5.0/node_modules/supports-color/index.js
326445
326859
  var require_supports_color = __commonJS((exports, module) => {
326446
326860
  var os = __require("os");
326447
- var tty = __require("tty");
326448
326861
  var hasFlag = require_has_flag();
326449
- var { env } = process;
326862
+ var env = process.env;
326450
326863
  var forceColor;
326451
- if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false") || hasFlag("color=never")) {
326452
- forceColor = 0;
326864
+ if (hasFlag("no-color") || hasFlag("no-colors") || hasFlag("color=false")) {
326865
+ forceColor = false;
326453
326866
  } else if (hasFlag("color") || hasFlag("colors") || hasFlag("color=true") || hasFlag("color=always")) {
326454
- forceColor = 1;
326867
+ forceColor = true;
326455
326868
  }
326456
326869
  if ("FORCE_COLOR" in env) {
326457
- if (env.FORCE_COLOR === "true") {
326458
- forceColor = 1;
326459
- } else if (env.FORCE_COLOR === "false") {
326460
- forceColor = 0;
326461
- } else {
326462
- forceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);
326463
- }
326870
+ forceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;
326464
326871
  }
326465
326872
  function translateLevel(level) {
326466
326873
  if (level === 0) {
@@ -326473,8 +326880,8 @@ var require_supports_color = __commonJS((exports, module) => {
326473
326880
  has16m: level >= 3
326474
326881
  };
326475
326882
  }
326476
- function supportsColor(haveStream, streamIsTTY) {
326477
- if (forceColor === 0) {
326883
+ function supportsColor(stream) {
326884
+ if (forceColor === false) {
326478
326885
  return 0;
326479
326886
  }
326480
326887
  if (hasFlag("color=16m") || hasFlag("color=full") || hasFlag("color=truecolor")) {
@@ -326483,22 +326890,19 @@ var require_supports_color = __commonJS((exports, module) => {
326483
326890
  if (hasFlag("color=256")) {
326484
326891
  return 2;
326485
326892
  }
326486
- if (haveStream && !streamIsTTY && forceColor === undefined) {
326893
+ if (stream && !stream.isTTY && forceColor !== true) {
326487
326894
  return 0;
326488
326895
  }
326489
- const min = forceColor || 0;
326490
- if (env.TERM === "dumb") {
326491
- return min;
326492
- }
326896
+ const min = forceColor ? 1 : 0;
326493
326897
  if (process.platform === "win32") {
326494
326898
  const osRelease = os.release().split(".");
326495
- if (Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
326899
+ if (Number(process.versions.node.split(".")[0]) >= 8 && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {
326496
326900
  return Number(osRelease[2]) >= 14931 ? 3 : 2;
326497
326901
  }
326498
326902
  return 1;
326499
326903
  }
326500
326904
  if ("CI" in env) {
326501
- if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI", "GITHUB_ACTIONS", "BUILDKITE"].some((sign) => (sign in env)) || env.CI_NAME === "codeship") {
326905
+ if (["TRAVIS", "CIRCLECI", "APPVEYOR", "GITLAB_CI"].some((sign) => (sign in env)) || env.CI_NAME === "codeship") {
326502
326906
  return 1;
326503
326907
  }
326504
326908
  return min;
@@ -326527,20 +326931,23 @@ var require_supports_color = __commonJS((exports, module) => {
326527
326931
  if ("COLORTERM" in env) {
326528
326932
  return 1;
326529
326933
  }
326934
+ if (env.TERM === "dumb") {
326935
+ return min;
326936
+ }
326530
326937
  return min;
326531
326938
  }
326532
326939
  function getSupportLevel(stream) {
326533
- const level = supportsColor(stream, stream && stream.isTTY);
326940
+ const level = supportsColor(stream);
326534
326941
  return translateLevel(level);
326535
326942
  }
326536
326943
  module.exports = {
326537
326944
  supportsColor: getSupportLevel,
326538
- stdout: translateLevel(supportsColor(true, tty.isatty(1))),
326539
- stderr: translateLevel(supportsColor(true, tty.isatty(2)))
326945
+ stdout: getSupportLevel(process.stdout),
326946
+ stderr: getSupportLevel(process.stderr)
326540
326947
  };
326541
326948
  });
326542
326949
 
326543
- // ../../../v2/node_modules/.pnpm/debug@4.4.3_supports-color@7.2.0/node_modules/debug/src/node.js
326950
+ // ../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/node.js
326544
326951
  var require_node = __commonJS((exports, module) => {
326545
326952
  var tty = __require("tty");
326546
326953
  var util3 = __require("util");
@@ -326711,7 +327118,7 @@ var require_node = __commonJS((exports, module) => {
326711
327118
  };
326712
327119
  });
326713
327120
 
326714
- // ../../../v2/node_modules/.pnpm/debug@4.4.3_supports-color@7.2.0/node_modules/debug/src/index.js
327121
+ // ../../node_modules/.pnpm/debug@4.4.3_supports-color@5.5.0/node_modules/debug/src/index.js
326715
327122
  var require_src = __commonJS((exports, module) => {
326716
327123
  if (typeof process === "undefined" || process.type === "renderer" || false || process.__nwjs) {
326717
327124
  module.exports = require_browser();
@@ -326720,7 +327127,7 @@ var require_src = __commonJS((exports, module) => {
326720
327127
  }
326721
327128
  });
326722
327129
 
326723
- // ../../../v2/node_modules/.pnpm/micromark@4.0.2_supports-color@7.2.0/node_modules/micromark/dev/lib/create-tokenizer.js
327130
+ // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/create-tokenizer.js
326724
327131
  function createTokenizer(parser, initialize, from) {
326725
327132
  let point = {
326726
327133
  _bufferIndex: -1,
@@ -327043,7 +327450,7 @@ var init_create_tokenizer = __esm(() => {
327043
327450
  debug = import_debug.default("micromark");
327044
327451
  });
327045
327452
 
327046
- // ../../../v2/node_modules/.pnpm/micromark@4.0.2_supports-color@7.2.0/node_modules/micromark/dev/lib/parse.js
327453
+ // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/parse.js
327047
327454
  function parse6(options) {
327048
327455
  const settings = options || {};
327049
327456
  const constructs2 = combineExtensions([exports_constructs, ...settings.extensions || []]);
@@ -327075,7 +327482,7 @@ var init_parse4 = __esm(() => {
327075
327482
  init_create_tokenizer();
327076
327483
  });
327077
327484
 
327078
- // ../../../v2/node_modules/.pnpm/micromark@4.0.2_supports-color@7.2.0/node_modules/micromark/dev/lib/postprocess.js
327485
+ // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/postprocess.js
327079
327486
  function postprocess(events) {
327080
327487
  while (!subtokenize(events)) {}
327081
327488
  return events;
@@ -327084,7 +327491,7 @@ var init_postprocess = __esm(() => {
327084
327491
  init_dev7();
327085
327492
  });
327086
327493
 
327087
- // ../../../v2/node_modules/.pnpm/micromark@4.0.2_supports-color@7.2.0/node_modules/micromark/dev/lib/preprocess.js
327494
+ // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/lib/preprocess.js
327088
327495
  function preprocess2() {
327089
327496
  let column = 1;
327090
327497
  let buffer = "";
@@ -327170,14 +327577,14 @@ var init_preprocess = __esm(() => {
327170
327577
  search = /[\0\t\n\r]/g;
327171
327578
  });
327172
327579
 
327173
- // ../../../v2/node_modules/.pnpm/micromark@4.0.2_supports-color@7.2.0/node_modules/micromark/dev/index.js
327580
+ // ../../node_modules/.pnpm/micromark@4.0.2/node_modules/micromark/dev/index.js
327174
327581
  var init_dev13 = __esm(() => {
327175
327582
  init_parse4();
327176
327583
  init_postprocess();
327177
327584
  init_preprocess();
327178
327585
  });
327179
327586
 
327180
- // ../../../v2/node_modules/.pnpm/micromark-util-decode-string@2.0.1/node_modules/micromark-util-decode-string/dev/index.js
327587
+ // ../../node_modules/.pnpm/micromark-util-decode-string@2.0.1/node_modules/micromark-util-decode-string/dev/index.js
327181
327588
  function decodeString(value2) {
327182
327589
  return value2.replace(characterEscapeOrReference, decode4);
327183
327590
  }
@@ -327201,7 +327608,7 @@ var init_dev14 = __esm(() => {
327201
327608
  characterEscapeOrReference = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;
327202
327609
  });
327203
327610
 
327204
- // ../../../v2/node_modules/.pnpm/unist-util-stringify-position@4.0.0/node_modules/unist-util-stringify-position/lib/index.js
327611
+ // ../../node_modules/.pnpm/unist-util-stringify-position@4.0.0/node_modules/unist-util-stringify-position/lib/index.js
327205
327612
  function stringifyPosition(value2) {
327206
327613
  if (!value2 || typeof value2 !== "object") {
327207
327614
  return "";
@@ -327227,10 +327634,10 @@ function index(value2) {
327227
327634
  return value2 && typeof value2 === "number" ? value2 : 1;
327228
327635
  }
327229
327636
 
327230
- // ../../../v2/node_modules/.pnpm/unist-util-stringify-position@4.0.0/node_modules/unist-util-stringify-position/index.js
327637
+ // ../../node_modules/.pnpm/unist-util-stringify-position@4.0.0/node_modules/unist-util-stringify-position/index.js
327231
327638
  var init_unist_util_stringify_position = () => {};
327232
327639
 
327233
- // ../../../v2/node_modules/.pnpm/mdast-util-from-markdown@2.0.3_supports-color@7.2.0/node_modules/mdast-util-from-markdown/dev/lib/index.js
327640
+ // ../../node_modules/.pnpm/mdast-util-from-markdown@2.0.3/node_modules/mdast-util-from-markdown/dev/lib/index.js
327234
327641
  function fromMarkdown(value2, encoding, options) {
327235
327642
  if (encoding && typeof encoding === "object") {
327236
327643
  options = encoding;
@@ -327945,12 +328352,12 @@ var init_lib2 = __esm(() => {
327945
328352
  own2 = {}.hasOwnProperty;
327946
328353
  });
327947
328354
 
327948
- // ../../../v2/node_modules/.pnpm/mdast-util-from-markdown@2.0.3_supports-color@7.2.0/node_modules/mdast-util-from-markdown/dev/index.js
328355
+ // ../../node_modules/.pnpm/mdast-util-from-markdown@2.0.3/node_modules/mdast-util-from-markdown/dev/index.js
327949
328356
  var init_dev15 = __esm(() => {
327950
328357
  init_lib2();
327951
328358
  });
327952
328359
 
327953
- // ../../../v2/node_modules/.pnpm/ccount@2.0.1/node_modules/ccount/index.js
328360
+ // ../../node_modules/.pnpm/ccount@2.0.1/node_modules/ccount/index.js
327954
328361
  function ccount(value2, character) {
327955
328362
  const source = String(value2);
327956
328363
  if (typeof character !== "string") {
@@ -327965,7 +328372,7 @@ function ccount(value2, character) {
327965
328372
  return count;
327966
328373
  }
327967
328374
 
327968
- // ../../../v2/node_modules/.pnpm/escape-string-regexp@5.0.0/node_modules/escape-string-regexp/index.js
328375
+ // ../../node_modules/.pnpm/escape-string-regexp@5.0.0/node_modules/escape-string-regexp/index.js
327969
328376
  function escapeStringRegexp(string7) {
327970
328377
  if (typeof string7 !== "string") {
327971
328378
  throw new TypeError("Expected a string");
@@ -327973,7 +328380,7 @@ function escapeStringRegexp(string7) {
327973
328380
  return string7.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
327974
328381
  }
327975
328382
 
327976
- // ../../../v2/node_modules/.pnpm/unist-util-is@6.0.1/node_modules/unist-util-is/lib/index.js
328383
+ // ../../node_modules/.pnpm/unist-util-is@6.0.1/node_modules/unist-util-is/lib/index.js
327977
328384
  function anyFactory(tests) {
327978
328385
  const checks4 = [];
327979
328386
  let index2 = -1;
@@ -328037,15 +328444,15 @@ var convert = function(test) {
328037
328444
  throw new Error("Expected function, string, or object as test");
328038
328445
  };
328039
328446
 
328040
- // ../../../v2/node_modules/.pnpm/unist-util-is@6.0.1/node_modules/unist-util-is/index.js
328447
+ // ../../node_modules/.pnpm/unist-util-is@6.0.1/node_modules/unist-util-is/index.js
328041
328448
  var init_unist_util_is = () => {};
328042
328449
 
328043
- // ../../../v2/node_modules/.pnpm/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/lib/color.node.js
328450
+ // ../../node_modules/.pnpm/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/lib/color.node.js
328044
328451
  function color(d) {
328045
328452
  return "\x1B[33m" + d + "\x1B[39m";
328046
328453
  }
328047
328454
 
328048
- // ../../../v2/node_modules/.pnpm/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/lib/index.js
328455
+ // ../../node_modules/.pnpm/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/lib/index.js
328049
328456
  function visitParents(tree, test, visitor, reverse) {
328050
328457
  let check2;
328051
328458
  if (typeof test === "function" && typeof visitor !== "function") {
@@ -328111,12 +328518,12 @@ var init_lib3 = __esm(() => {
328111
328518
  empty2 = [];
328112
328519
  });
328113
328520
 
328114
- // ../../../v2/node_modules/.pnpm/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/index.js
328521
+ // ../../node_modules/.pnpm/unist-util-visit-parents@6.0.2/node_modules/unist-util-visit-parents/index.js
328115
328522
  var init_unist_util_visit_parents = __esm(() => {
328116
328523
  init_lib3();
328117
328524
  });
328118
328525
 
328119
- // ../../../v2/node_modules/.pnpm/mdast-util-find-and-replace@3.0.2/node_modules/mdast-util-find-and-replace/lib/index.js
328526
+ // ../../node_modules/.pnpm/mdast-util-find-and-replace@3.0.2/node_modules/mdast-util-find-and-replace/lib/index.js
328120
328527
  function findAndReplace(tree, list2, options) {
328121
328528
  const settings = options || {};
328122
328529
  const ignored = convert(settings.ignore || []);
@@ -328221,12 +328628,12 @@ var init_lib4 = __esm(() => {
328221
328628
  init_unist_util_is();
328222
328629
  });
328223
328630
 
328224
- // ../../../v2/node_modules/.pnpm/mdast-util-find-and-replace@3.0.2/node_modules/mdast-util-find-and-replace/index.js
328631
+ // ../../node_modules/.pnpm/mdast-util-find-and-replace@3.0.2/node_modules/mdast-util-find-and-replace/index.js
328225
328632
  var init_mdast_util_find_and_replace = __esm(() => {
328226
328633
  init_lib4();
328227
328634
  });
328228
328635
 
328229
- // ../../../v2/node_modules/.pnpm/mdast-util-gfm-autolink-literal@2.0.1/node_modules/mdast-util-gfm-autolink-literal/lib/index.js
328636
+ // ../../node_modules/.pnpm/mdast-util-gfm-autolink-literal@2.0.1/node_modules/mdast-util-gfm-autolink-literal/lib/index.js
328230
328637
  function gfmAutolinkLiteralFromMarkdown() {
328231
328638
  return {
328232
328639
  transforms: [transformGfmAutolinkLiterals],
@@ -328344,12 +328751,12 @@ var init_lib5 = __esm(() => {
328344
328751
  init_mdast_util_find_and_replace();
328345
328752
  });
328346
328753
 
328347
- // ../../../v2/node_modules/.pnpm/mdast-util-gfm-autolink-literal@2.0.1/node_modules/mdast-util-gfm-autolink-literal/index.js
328754
+ // ../../node_modules/.pnpm/mdast-util-gfm-autolink-literal@2.0.1/node_modules/mdast-util-gfm-autolink-literal/index.js
328348
328755
  var init_mdast_util_gfm_autolink_literal = __esm(() => {
328349
328756
  init_lib5();
328350
328757
  });
328351
328758
 
328352
- // ../../../v2/node_modules/.pnpm/mdast-util-gfm-footnote@2.1.0_supports-color@7.2.0/node_modules/mdast-util-gfm-footnote/lib/index.js
328759
+ // ../../node_modules/.pnpm/mdast-util-gfm-footnote@2.1.0/node_modules/mdast-util-gfm-footnote/lib/index.js
328353
328760
  function enterFootnoteCallString() {
328354
328761
  this.buffer();
328355
328762
  }
@@ -328418,12 +328825,12 @@ var init_lib6 = __esm(() => {
328418
328825
  footnoteReference.peek = footnoteReferencePeek;
328419
328826
  });
328420
328827
 
328421
- // ../../../v2/node_modules/.pnpm/mdast-util-gfm-footnote@2.1.0_supports-color@7.2.0/node_modules/mdast-util-gfm-footnote/index.js
328828
+ // ../../node_modules/.pnpm/mdast-util-gfm-footnote@2.1.0/node_modules/mdast-util-gfm-footnote/index.js
328422
328829
  var init_mdast_util_gfm_footnote = __esm(() => {
328423
328830
  init_lib6();
328424
328831
  });
328425
328832
 
328426
- // ../../../v2/node_modules/.pnpm/mdast-util-gfm-strikethrough@2.0.0_supports-color@7.2.0/node_modules/mdast-util-gfm-strikethrough/lib/index.js
328833
+ // ../../node_modules/.pnpm/mdast-util-gfm-strikethrough@2.0.0/node_modules/mdast-util-gfm-strikethrough/lib/index.js
328427
328834
  function gfmStrikethroughFromMarkdown() {
328428
328835
  return {
328429
328836
  canContainEols: ["delete"],
@@ -328457,12 +328864,12 @@ var init_lib7 = __esm(() => {
328457
328864
  handleDelete.peek = peekDelete;
328458
328865
  });
328459
328866
 
328460
- // ../../../v2/node_modules/.pnpm/mdast-util-gfm-strikethrough@2.0.0_supports-color@7.2.0/node_modules/mdast-util-gfm-strikethrough/index.js
328867
+ // ../../node_modules/.pnpm/mdast-util-gfm-strikethrough@2.0.0/node_modules/mdast-util-gfm-strikethrough/index.js
328461
328868
  var init_mdast_util_gfm_strikethrough = __esm(() => {
328462
328869
  init_lib7();
328463
328870
  });
328464
328871
 
328465
- // ../../../v2/node_modules/.pnpm/mdast-util-gfm-table@2.0.0_supports-color@7.2.0/node_modules/mdast-util-gfm-table/lib/index.js
328872
+ // ../../node_modules/.pnpm/mdast-util-gfm-table@2.0.0/node_modules/mdast-util-gfm-table/lib/index.js
328466
328873
  function gfmTableFromMarkdown() {
328467
328874
  return {
328468
328875
  enter: {
@@ -328522,12 +328929,12 @@ var init_lib8 = __esm(() => {
328522
328929
  init_development();
328523
328930
  });
328524
328931
 
328525
- // ../../../v2/node_modules/.pnpm/mdast-util-gfm-table@2.0.0_supports-color@7.2.0/node_modules/mdast-util-gfm-table/index.js
328932
+ // ../../node_modules/.pnpm/mdast-util-gfm-table@2.0.0/node_modules/mdast-util-gfm-table/index.js
328526
328933
  var init_mdast_util_gfm_table = __esm(() => {
328527
328934
  init_lib8();
328528
328935
  });
328529
328936
 
328530
- // ../../../v2/node_modules/.pnpm/mdast-util-gfm-task-list-item@2.0.0_supports-color@7.2.0/node_modules/mdast-util-gfm-task-list-item/lib/index.js
328937
+ // ../../node_modules/.pnpm/mdast-util-gfm-task-list-item@2.0.0/node_modules/mdast-util-gfm-task-list-item/lib/index.js
328531
328938
  function gfmTaskListItemFromMarkdown() {
328532
328939
  return {
328533
328940
  exit: {
@@ -328577,12 +328984,12 @@ var init_lib9 = __esm(() => {
328577
328984
  init_development();
328578
328985
  });
328579
328986
 
328580
- // ../../../v2/node_modules/.pnpm/mdast-util-gfm-task-list-item@2.0.0_supports-color@7.2.0/node_modules/mdast-util-gfm-task-list-item/index.js
328987
+ // ../../node_modules/.pnpm/mdast-util-gfm-task-list-item@2.0.0/node_modules/mdast-util-gfm-task-list-item/index.js
328581
328988
  var init_mdast_util_gfm_task_list_item = __esm(() => {
328582
328989
  init_lib9();
328583
328990
  });
328584
328991
 
328585
- // ../../../v2/node_modules/.pnpm/mdast-util-gfm@3.1.0_supports-color@7.2.0/node_modules/mdast-util-gfm/lib/index.js
328992
+ // ../../node_modules/.pnpm/mdast-util-gfm@3.1.0/node_modules/mdast-util-gfm/lib/index.js
328586
328993
  function gfmFromMarkdown() {
328587
328994
  return [
328588
328995
  gfmAutolinkLiteralFromMarkdown(),
@@ -328600,12 +329007,12 @@ var init_lib10 = __esm(() => {
328600
329007
  init_mdast_util_gfm_task_list_item();
328601
329008
  });
328602
329009
 
328603
- // ../../../v2/node_modules/.pnpm/mdast-util-gfm@3.1.0_supports-color@7.2.0/node_modules/mdast-util-gfm/index.js
329010
+ // ../../node_modules/.pnpm/mdast-util-gfm@3.1.0/node_modules/mdast-util-gfm/index.js
328604
329011
  var init_mdast_util_gfm = __esm(() => {
328605
329012
  init_lib10();
328606
329013
  });
328607
329014
 
328608
- // ../../../v2/node_modules/.pnpm/micromark-extension-gfm-autolink-literal@2.1.0/node_modules/micromark-extension-gfm-autolink-literal/dev/lib/syntax.js
329015
+ // ../../node_modules/.pnpm/micromark-extension-gfm-autolink-literal@2.1.0/node_modules/micromark-extension-gfm-autolink-literal/dev/lib/syntax.js
328609
329016
  function gfmAutolinkLiteral() {
328610
329017
  return { text: text3 };
328611
329018
  }
@@ -328936,12 +329343,12 @@ var init_syntax = __esm(() => {
328936
329343
  text3[codes.lowercaseW] = [emailAutolink, wwwAutolink];
328937
329344
  });
328938
329345
 
328939
- // ../../../v2/node_modules/.pnpm/micromark-extension-gfm-autolink-literal@2.1.0/node_modules/micromark-extension-gfm-autolink-literal/dev/index.js
329346
+ // ../../node_modules/.pnpm/micromark-extension-gfm-autolink-literal@2.1.0/node_modules/micromark-extension-gfm-autolink-literal/dev/index.js
328940
329347
  var init_dev16 = __esm(() => {
328941
329348
  init_syntax();
328942
329349
  });
328943
329350
 
328944
- // ../../../v2/node_modules/.pnpm/micromark-extension-gfm-footnote@2.1.0/node_modules/micromark-extension-gfm-footnote/dev/lib/syntax.js
329351
+ // ../../node_modules/.pnpm/micromark-extension-gfm-footnote@2.1.0/node_modules/micromark-extension-gfm-footnote/dev/lib/syntax.js
328945
329352
  function gfmFootnote() {
328946
329353
  return {
328947
329354
  document: {
@@ -329205,12 +329612,12 @@ var init_syntax2 = __esm(() => {
329205
329612
  indent = { tokenize: tokenizeIndent2, partial: true };
329206
329613
  });
329207
329614
 
329208
- // ../../../v2/node_modules/.pnpm/micromark-extension-gfm-footnote@2.1.0/node_modules/micromark-extension-gfm-footnote/dev/index.js
329615
+ // ../../node_modules/.pnpm/micromark-extension-gfm-footnote@2.1.0/node_modules/micromark-extension-gfm-footnote/dev/index.js
329209
329616
  var init_dev17 = __esm(() => {
329210
329617
  init_syntax2();
329211
329618
  });
329212
329619
 
329213
- // ../../../v2/node_modules/.pnpm/micromark-extension-gfm-strikethrough@2.1.0/node_modules/micromark-extension-gfm-strikethrough/dev/lib/syntax.js
329620
+ // ../../node_modules/.pnpm/micromark-extension-gfm-strikethrough@2.1.0/node_modules/micromark-extension-gfm-strikethrough/dev/lib/syntax.js
329214
329621
  function gfmStrikethrough(options) {
329215
329622
  const options_ = options || {};
329216
329623
  let single = options_.singleTilde;
@@ -329316,12 +329723,12 @@ var init_syntax3 = __esm(() => {
329316
329723
  init_default3();
329317
329724
  });
329318
329725
 
329319
- // ../../../v2/node_modules/.pnpm/micromark-extension-gfm-strikethrough@2.1.0/node_modules/micromark-extension-gfm-strikethrough/dev/index.js
329726
+ // ../../node_modules/.pnpm/micromark-extension-gfm-strikethrough@2.1.0/node_modules/micromark-extension-gfm-strikethrough/dev/index.js
329320
329727
  var init_dev18 = __esm(() => {
329321
329728
  init_syntax3();
329322
329729
  });
329323
329730
 
329324
- // ../../../v2/node_modules/.pnpm/micromark-extension-gfm-table@2.1.1/node_modules/micromark-extension-gfm-table/dev/lib/edit-map.js
329731
+ // ../../node_modules/.pnpm/micromark-extension-gfm-table@2.1.1/node_modules/micromark-extension-gfm-table/dev/lib/edit-map.js
329325
329732
  class EditMap {
329326
329733
  constructor() {
329327
329734
  this.map = [];
@@ -329371,7 +329778,7 @@ function addImplementation(editMap, at, remove, add) {
329371
329778
  editMap.map.push([at, remove, add]);
329372
329779
  }
329373
329780
 
329374
- // ../../../v2/node_modules/.pnpm/micromark-extension-gfm-table@2.1.1/node_modules/micromark-extension-gfm-table/dev/lib/infer.js
329781
+ // ../../node_modules/.pnpm/micromark-extension-gfm-table@2.1.1/node_modules/micromark-extension-gfm-table/dev/lib/infer.js
329375
329782
  function gfmTableAlign(events, index2) {
329376
329783
  ok2(events[index2][1].type === "table", "expected table");
329377
329784
  let inDelimiterRow = false;
@@ -329402,7 +329809,7 @@ var init_infer = __esm(() => {
329402
329809
  init_development();
329403
329810
  });
329404
329811
 
329405
- // ../../../v2/node_modules/.pnpm/micromark-extension-gfm-table@2.1.1/node_modules/micromark-extension-gfm-table/dev/lib/syntax.js
329812
+ // ../../node_modules/.pnpm/micromark-extension-gfm-table@2.1.1/node_modules/micromark-extension-gfm-table/dev/lib/syntax.js
329406
329813
  function gfmTable() {
329407
329814
  return {
329408
329815
  flow: {
@@ -329794,12 +330201,12 @@ var init_syntax4 = __esm(() => {
329794
330201
  init_infer();
329795
330202
  });
329796
330203
 
329797
- // ../../../v2/node_modules/.pnpm/micromark-extension-gfm-table@2.1.1/node_modules/micromark-extension-gfm-table/dev/index.js
330204
+ // ../../node_modules/.pnpm/micromark-extension-gfm-table@2.1.1/node_modules/micromark-extension-gfm-table/dev/index.js
329798
330205
  var init_dev19 = __esm(() => {
329799
330206
  init_syntax4();
329800
330207
  });
329801
330208
 
329802
- // ../../../v2/node_modules/.pnpm/micromark-extension-gfm-task-list-item@2.1.0/node_modules/micromark-extension-gfm-task-list-item/dev/lib/syntax.js
330209
+ // ../../node_modules/.pnpm/micromark-extension-gfm-task-list-item@2.1.0/node_modules/micromark-extension-gfm-task-list-item/dev/lib/syntax.js
329803
330210
  function gfmTaskListItem() {
329804
330211
  return {
329805
330212
  text: { [codes.leftSquareBracket]: tasklistCheck }
@@ -329869,12 +330276,12 @@ var init_syntax5 = __esm(() => {
329869
330276
  tasklistCheck = { name: "tasklistCheck", tokenize: tokenizeTasklistCheck };
329870
330277
  });
329871
330278
 
329872
- // ../../../v2/node_modules/.pnpm/micromark-extension-gfm-task-list-item@2.1.0/node_modules/micromark-extension-gfm-task-list-item/dev/index.js
330279
+ // ../../node_modules/.pnpm/micromark-extension-gfm-task-list-item@2.1.0/node_modules/micromark-extension-gfm-task-list-item/dev/index.js
329873
330280
  var init_dev20 = __esm(() => {
329874
330281
  init_syntax5();
329875
330282
  });
329876
330283
 
329877
- // ../../../v2/node_modules/.pnpm/micromark-extension-gfm@3.0.0/node_modules/micromark-extension-gfm/index.js
330284
+ // ../../node_modules/.pnpm/micromark-extension-gfm@3.0.0/node_modules/micromark-extension-gfm/index.js
329878
330285
  function gfm(options) {
329879
330286
  return combineExtensions([
329880
330287
  gfmAutolinkLiteral(),
@@ -357887,6 +358294,16 @@ function collectCellScopes(tableCatalog) {
357887
358294
  function computeComparePackageFingerprint(context) {
357888
358295
  return computeSDDocumentSessionInternalPackageBinding(context.session);
357889
358296
  }
358297
+ function computeCompareSemanticPackageFingerprint(context) {
358298
+ return computeSDDocumentSessionInternalSemanticPackageBinding(context.session);
358299
+ }
358300
+ function resolveComparePlanBindingMatch(context, expectedBinding) {
358301
+ const liveSemanticBinding = computeCompareSemanticPackageFingerprint(context);
358302
+ if (liveSemanticBinding === expectedBinding)
358303
+ return { matched: true, liveSemanticBinding };
358304
+ const liveLegacyBinding = computeComparePackageFingerprint(context);
358305
+ return { matched: liveLegacyBinding === expectedBinding, liveSemanticBinding };
358306
+ }
357890
358307
  var init_fingerprint = __esm(() => {
357891
358308
  init_sd_document_session_internal();
357892
358309
  });
@@ -358699,6 +359116,10 @@ function trackedChangeAnnotationKeysForParagraph(context, paragraph4) {
358699
359116
  const fragments = getSDDocumentSessionInternalTrackedChangeCatalog(context.session).byPart.get(paragraph4.partUri) ?? [];
358700
359117
  return fragments.filter((fragment3) => fragment3.storyId === paragraph4.storyId && fragment3.sourceByteStart >= paragraph4.byteStart && fragment3.sourceByteEnd <= paragraph4.byteEnd).map(trackedChangeAnnotationKey);
358701
359118
  }
359119
+ function structuralChangeAnnotationKeysForParagraph(context, paragraph4) {
359120
+ const fragments = getSDDocumentSessionInternalTrackedChangeCatalog(context.session).structuralByPart.get(paragraph4.partUri) ?? [];
359121
+ return fragments.filter((fragment3) => fragment3.storyId === paragraph4.storyId && (fragment3.sourceByteStart ?? fragment3.byteStart) >= paragraph4.byteStart && (fragment3.sourceByteEnd ?? fragment3.byteEnd) <= paragraph4.byteEnd).map((fragment3) => fragment3.entityKey);
359122
+ }
358702
359123
  function projectFieldsReferences(context) {
358703
359124
  const entries = [];
358704
359125
  let ordinal = 0;
@@ -359644,6 +360065,7 @@ function projectStories(context, slots) {
359644
360065
  runSignature: runSignatureByOrdinal.get(p.ordinal),
359645
360066
  runXml,
359646
360067
  trackedChangeAnnotationKeys: trackedChangeAnnotationKeysForParagraph(context, p),
360068
+ structuralChangeAnnotationKeys: structuralChangeAnnotationKeysForParagraph(context, p),
359647
360069
  paragraphPropertiesXml,
359648
360070
  paragraphPropertiesSignature: computeParagraphPropertiesSignature2(paragraphPropertiesXml)
359649
360071
  };
@@ -359729,6 +360151,7 @@ function projectBody(context) {
359729
360151
  runSignature: runSignatures[ordinal],
359730
360152
  runXml,
359731
360153
  trackedChangeAnnotationKeys: trackedChangeAnnotationKeysForParagraph(context, p),
360154
+ structuralChangeAnnotationKeys: structuralChangeAnnotationKeysForParagraph(context, p),
359732
360155
  paragraphPropertiesXml,
359733
360156
  paragraphPropertiesSignature: computeParagraphPropertiesSignature2(paragraphPropertiesXml)
359734
360157
  };
@@ -359771,7 +360194,7 @@ function projectCompareSnapshot(context, posture, options) {
359771
360194
  return {
359772
360195
  version: "sd-compare-snapshot/v1",
359773
360196
  identity: {
359774
- fingerprint: computeComparePackageFingerprint(context),
360197
+ fingerprint: computeCompareSemanticPackageFingerprint(context),
359775
360198
  ...options.label !== undefined ? { label: options.label } : {}
359776
360199
  },
359777
360200
  sourcePosture: posture,
@@ -359837,10 +360260,11 @@ function compareOperationId(storyId, ordinal) {
359837
360260
  function applyComparePlan(context, plan, options = {}) {
359838
360261
  const reviewMarkup = options.reviewMarkup !== false;
359839
360262
  const changeMode = reviewMarkup ? "tracked" : "direct";
359840
- const liveBinding = computeComparePackageFingerprint(context);
359841
- if (liveBinding !== plan.planBinding) {
359842
- throw new SDCompareError("PRECONDITION_FAILED", `compare plan is stale: live document binding ${liveBinding} does not match plan binding ${plan.planBinding}.`);
360263
+ const bindingResolution = resolveComparePlanBindingMatch(context, plan.planBinding);
360264
+ if (!bindingResolution.matched) {
360265
+ throw new SDCompareError("PRECONDITION_FAILED", `compare plan is stale: live document binding ${bindingResolution.liveSemanticBinding} ` + `does not match plan binding ${plan.planBinding}.`);
359843
360266
  }
360267
+ const effectivePlanBinding = bindingResolution.liveSemanticBinding;
359844
360268
  let operationOrdinal = plan.bodyOperations.length;
359845
360269
  const storyGroups = (plan.storyOperations ?? []).filter((group) => group.operations.length > 0).map((group) => ({
359846
360270
  storyId: group.storyId,
@@ -359914,7 +360338,7 @@ function applyComparePlan(context, plan, options = {}) {
359914
360338
  tx.compareApply({
359915
360339
  operationId: "v2-compare-apply",
359916
360340
  storyId: mainStoryId,
359917
- planBinding: plan.planBinding,
360341
+ planBinding: effectivePlanBinding,
359918
360342
  changeMode,
359919
360343
  bodySteps,
359920
360344
  ...storyGroups.length > 0 ? {
@@ -359952,7 +360376,7 @@ function applyComparePlan(context, plan, options = {}) {
359952
360376
  const appliedFamilySet = new Set;
359953
360377
  if (plan.bodyOperations.length > 0)
359954
360378
  appliedFamilySet.add("body");
359955
- const appliedTargetRevisionReplay = plan.bodyOperations.some((operation) => ("targetRevisionReplay" in operation) && operation.targetRevisionReplay !== undefined) || storyGroups.some((group) => group.bodySteps.some((step3) => step3.targetRevisionReplay !== undefined));
360379
+ const appliedTargetRevisionReplay = plan.bodyOperations.some((operation) => ("targetRevisionReplay" in operation) && operation.targetRevisionReplay !== undefined || ("targetParagraphMarkRevisionReplay" in operation) && operation.targetParagraphMarkRevisionReplay !== undefined) || storyGroups.some((group) => group.bodySteps.some((step3) => step3.targetRevisionReplay !== undefined || ("targetParagraphMarkRevisionReplay" in step3) && step3.targetParagraphMarkRevisionReplay !== undefined));
359956
360380
  if (appliedTargetRevisionReplay)
359957
360381
  appliedFamilySet.add("tracked-changes");
359958
360382
  for (const group of storyGroups) {
@@ -363282,7 +363706,8 @@ function buildHeaderFooterLifecyclePlan(base3, target) {
363282
363706
  const after = targetParts.get(partUri);
363283
363707
  const kind = after?.kind ?? before.kind;
363284
363708
  const relationshipsChanged = !headerFooterPartRelationshipsEqual(before?.relationshipsBytes ?? null, after?.relationshipsBytes ?? null);
363285
- const changed = !before || !after || !numbersEqual(before.bytes, after.bytes) || relationshipsChanged;
363709
+ const contentChanged = Boolean(before && after && (before.bytes.length !== after.bytes.length || before.bytes.some((value2, index2) => value2 !== after.bytes[index2])));
363710
+ const changed = !before || !after || contentChanged || relationshipsChanged;
363286
363711
  if (!changed)
363287
363712
  continue;
363288
363713
  if (hasUnsafeRelationshipDependencyChange(before, after, relationshipsChanged)) {
@@ -363299,7 +363724,7 @@ function buildHeaderFooterLifecyclePlan(base3, target) {
363299
363724
  });
363300
363725
  } else if (before && !after) {
363301
363726
  rewrites.push({ family: "header-footer-parts", partUri, kind: "remove" });
363302
- } else if (before && after && !numbersEqual(before.bytes, after.bytes)) {
363727
+ } else if (before && after && contentChanged) {
363303
363728
  contentRewrites.push({
363304
363729
  family: "header-footer-parts",
363305
363730
  partUri,
@@ -364965,6 +365390,17 @@ function isCommentRelationshipSemanticKey(semanticKey) {
364965
365390
  const relType = semanticKey.slice(sep + 1);
364966
365391
  return /\/relationships\/(?:comments|commentsExtended|commentsIds|commentsExtensible|threadedComments|people)$/i.test(relType);
364967
365392
  }
365393
+ function isResolutionSidecarAddition(key2, targetEntry) {
365394
+ if (!targetEntry)
365395
+ return false;
365396
+ if (key2 === "ct:override:/word/commentsExtended.xml") {
365397
+ return targetEntry.semanticKey === key2 && targetEntry.contentSignature === sha256HexSync(TE62.encode("override:/word/commentsExtended.xml=" + "application/vnd.openxmlformats-officedocument.wordprocessingml.commentsExtended+xml"));
365398
+ }
365399
+ if (!key2.startsWith("rel:/word/document.xml|"))
365400
+ return false;
365401
+ const type = "http://schemas.microsoft.com/office/2011/relationships/commentsExtended";
365402
+ return targetEntry.semanticKey === `/word/document.xml|${type}` && targetEntry.contentSignature === sha256HexSync(TE62.encode(`type:${type}#mode:Internal#target:/word/commentsExtended.xml`));
365403
+ }
364968
365404
  function isCommentScopedPackageKey(context, key2, presentInBase, hasCommentCreate, targetEntry) {
364969
365405
  if (key2.startsWith("ct:")) {
364970
365406
  const uri = key2.slice(key2.indexOf(":", 3) + 1);
@@ -365000,10 +365436,15 @@ function packageGraphKeysNotCoveredByComments(context, base3, target, steps) {
365000
365436
  changedKeys.add(key2);
365001
365437
  const hasCommentCreate = steps.some((s) => s.kind === "create");
365002
365438
  const hasCommentDelete = steps.some((s) => s.kind === "delete");
365439
+ const hasRootResolution = steps.some((s) => s.kind === "set-resolved" && s.resolved && !s.targetIsReply && s.targetParentParaId === null);
365440
+ const addedResolutionSidecarKeys = [...changedKeys].filter((key2) => !baseSigs.has(key2) && targetSigs.has(key2) && isResolutionSidecarAddition(key2, targetEntries.get(key2)));
365441
+ const coversResolutionSidecar = hasRootResolution && addedResolutionSidecarKeys.length === 2 && addedResolutionSidecarKeys.includes("ct:override:/word/commentsExtended.xml");
365003
365442
  const notCovered = [];
365004
365443
  for (const key2 of changedKeys) {
365005
365444
  const presentInBase = baseSigs.has(key2);
365006
365445
  const presentInTarget = targetSigs.has(key2);
365446
+ if (coversResolutionSidecar && addedResolutionSidecarKeys.includes(key2))
365447
+ continue;
365007
365448
  let lifecycleCoversEntry = false;
365008
365449
  if (presentInBase !== presentInTarget) {
365009
365450
  lifecycleCoversEntry = presentInBase ? hasCommentDelete : hasCommentCreate;
@@ -368176,7 +368617,12 @@ class V2DiffAdapter {
368176
368617
  }
368177
368618
  const liveFingerprint = liveSnapshot.identity.fingerprint;
368178
368619
  const expectedBinding = payload.applyPlan.planBinding;
368179
- if (liveFingerprint !== payload.base.identity.fingerprint || liveFingerprint !== expectedBinding) {
368620
+ let bindingsMatch = liveFingerprint === payload.base.identity.fingerprint && liveFingerprint === expectedBinding;
368621
+ if (!bindingsMatch) {
368622
+ const liveLegacyFingerprint = computeComparePackageFingerprint(this.context);
368623
+ bindingsMatch = liveLegacyFingerprint === payload.base.identity.fingerprint && liveLegacyFingerprint === expectedBinding;
368624
+ }
368625
+ if (!bindingsMatch) {
368180
368626
  throw diffValidationError("PRECONDITION_FAILED", `diff.apply: package binding mismatch — current=${liveFingerprint} ` + `expectedBase=${payload.base.identity.fingerprint} planBinding=${expectedBinding}.`, { current: liveFingerprint, expectedBase: payload.base.identity.fingerprint, planBinding: expectedBinding });
368181
368627
  }
368182
368628
  const physicalSourceProblems = [
@@ -369608,16 +370054,19 @@ function validateFullDiffApplyConsistency(diff, payload, physicalPlan, canonical
369608
370054
  }
369609
370055
  return problems;
369610
370056
  }
370057
+ function hasAnyTargetRevisionReplay(operation) {
370058
+ return "targetRevisionReplay" in operation && operation.targetRevisionReplay !== undefined || "targetParagraphMarkRevisionReplay" in operation && operation.targetParagraphMarkRevisionReplay !== undefined;
370059
+ }
369611
370060
  function buildApplyOperationCounts(applyPlan) {
369612
370061
  const counts = new Map;
369613
370062
  let revisionReplayCount = 0;
369614
370063
  if (applyPlan.bodyOperations.length > 0) {
369615
370064
  counts.set("body", applyPlan.bodyOperations.length);
369616
- revisionReplayCount += applyPlan.bodyOperations.filter((operation) => ("targetRevisionReplay" in operation) && operation.targetRevisionReplay !== undefined).length;
370065
+ revisionReplayCount += applyPlan.bodyOperations.filter(hasAnyTargetRevisionReplay).length;
369617
370066
  }
369618
370067
  for (const group of applyPlan.storyOperations ?? []) {
369619
370068
  counts.set(group.family, (counts.get(group.family) ?? 0) + group.operations.length);
369620
- revisionReplayCount += group.operations.filter((operation) => ("targetRevisionReplay" in operation) && operation.targetRevisionReplay !== undefined).length;
370069
+ revisionReplayCount += group.operations.filter(hasAnyTargetRevisionReplay).length;
369621
370070
  }
369622
370071
  if (revisionReplayCount > 0)
369623
370072
  counts.set("tracked-changes", revisionReplayCount);
@@ -369628,8 +370077,8 @@ function buildApplyOperationCounts(applyPlan) {
369628
370077
  }
369629
370078
  function setRuntimeBodyOperationCounts(counts, applyPlan, bodyOperations) {
369630
370079
  counts.set("body", bodyOperations.length);
369631
- const storyRevisionReplayCount = (applyPlan.storyOperations ?? []).reduce((total, group) => total + group.operations.filter((operation) => operation.targetRevisionReplay !== undefined).length, 0);
369632
- const bodyRevisionReplayCount = bodyOperations.filter((operation) => operation.targetRevisionReplay !== undefined).length;
370080
+ const storyRevisionReplayCount = (applyPlan.storyOperations ?? []).reduce((total, group) => total + group.operations.filter(hasAnyTargetRevisionReplay).length, 0);
370081
+ const bodyRevisionReplayCount = bodyOperations.filter(hasAnyTargetRevisionReplay).length;
369633
370082
  const revisionReplayCount = storyRevisionReplayCount + bodyRevisionReplayCount;
369634
370083
  if (revisionReplayCount > 0)
369635
370084
  counts.set("tracked-changes", revisionReplayCount);
@@ -369677,16 +370126,27 @@ function throwLocalizedBodyCorrespondenceError(sectionSteps, referenceSteps) {
369677
370126
  unsupportedReason: "section-reference-replay-unsafe"
369678
370127
  });
369679
370128
  }
370129
+ function paragraphMarkReplayOf(operation) {
370130
+ return operation.kind === "insert" || operation.kind === "insertAtStart" || operation.kind === "delete" ? operation.targetParagraphMarkRevisionReplay : undefined;
370131
+ }
369680
370132
  function mergeCanonicalRevisionReplay(derivedOperations, canonicalOperations) {
369681
370133
  return derivedOperations.map((derived) => {
369682
- const candidates = canonicalOperations.filter((canonical) => sameBodyOperationIdentity(derived, canonical));
370134
+ const candidates = canonicalOperations.filter((canonical2) => sameBodyOperationIdentity(derived, canonical2));
369683
370135
  if (candidates.length !== 1)
369684
370136
  return derived;
369685
- const replay = candidates[0].targetRevisionReplay;
369686
- if (replay === undefined || derived.targetRevisionReplay !== undefined)
370137
+ const canonical = candidates[0];
370138
+ const replay = canonical.targetRevisionReplay;
370139
+ const markReplay = paragraphMarkReplayOf(canonical);
370140
+ const wantsReplay = replay !== undefined && derived.targetRevisionReplay === undefined;
370141
+ const wantsMarkReplay = markReplay !== undefined && paragraphMarkReplayOf(derived) === undefined;
370142
+ if (!wantsReplay && !wantsMarkReplay)
369687
370143
  return derived;
369688
- const merged = { ...derived, targetRevisionReplay: replay };
369689
- if (derived.kind === "delete" && replay.structuralAction === "delete")
370144
+ const merged = {
370145
+ ...derived,
370146
+ ...wantsReplay ? { targetRevisionReplay: replay } : {},
370147
+ ...wantsMarkReplay ? { targetParagraphMarkRevisionReplay: markReplay } : {}
370148
+ };
370149
+ if (derived.kind === "delete" && (merged.targetRevisionReplay === undefined || merged.targetRevisionReplay.structuralAction === "delete"))
369690
370150
  return merged;
369691
370151
  return validateCompareReplayPayload(merged).ok ? merged : derived;
369692
370152
  });
@@ -370011,8 +370471,9 @@ function findStructurallyUnsupportedOperationFamilies(context, runtimeApplyPlan,
370011
370471
  return bodyStructuralIds.editDelete.has(op.blockId.toUpperCase()) && !localizedReferenceEditIsProtected(op.targetRunXml, referenceSteps) && !(referenceSteps.length === 0 && localizedRetainedFieldEditIsProtected(op.targetRunXml));
370012
370472
  }
370013
370473
  if (op.kind === "delete") {
370014
- if (op.targetRevisionReplay?.structuralAction === "delete")
370474
+ if (op.targetRevisionReplay?.structuralAction === "delete" || op.targetParagraphMarkRevisionReplay !== undefined) {
370015
370475
  return false;
370476
+ }
370016
370477
  return bodyStructuralIds.editDelete.has(op.blockId.toUpperCase());
370017
370478
  }
370018
370479
  if (op.kind === "formatEdit")
@@ -370042,8 +370503,9 @@ function findStructurallyUnsupportedOperationFamilies(context, runtimeApplyPlan,
370042
370503
  return storyStructuralIds.editDelete.has(op.blockId.toUpperCase());
370043
370504
  }
370044
370505
  if (op.kind === "delete") {
370045
- if (op.targetRevisionReplay?.structuralAction === "delete")
370506
+ if (op.targetRevisionReplay?.structuralAction === "delete" || op.targetParagraphMarkRevisionReplay !== undefined) {
370046
370507
  return false;
370508
+ }
370047
370509
  return storyStructuralIds.editDelete.has(op.blockId.toUpperCase());
370048
370510
  }
370049
370511
  if (op.kind === "formatEdit")
@@ -370140,6 +370602,7 @@ var init_adapter24 = __esm(() => {
370140
370602
  init_compare();
370141
370603
  init_sd_document_session_internal();
370142
370604
  init_part_fingerprint();
370605
+ init_fingerprint();
370143
370606
  init_section_xml();
370144
370607
  init_adapter23();
370145
370608
  init_header_footer_lifecycle();
@@ -393612,7 +394075,7 @@ var init_capability_matrix = __esm(() => {
393612
394075
  });
393613
394076
  });
393614
394077
 
393615
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/map.js
394078
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/map.js
393616
394079
  var create = () => new Map, copy = (m) => {
393617
394080
  const r = create();
393618
394081
  m.forEach((v, k) => {
@@ -393634,10 +394097,10 @@ var create = () => new Map, copy = (m) => {
393634
394097
  return false;
393635
394098
  };
393636
394099
 
393637
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/set.js
394100
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/set.js
393638
394101
  var create2 = () => new Set;
393639
394102
 
393640
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/array.js
394103
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/array.js
393641
394104
  var last = (arr) => arr[arr.length - 1], appendTo = (dest, src) => {
393642
394105
  for (let i2 = 0;i2 < src.length; i2++) {
393643
394106
  dest.push(src[i2]);
@@ -393655,7 +394118,7 @@ var init_array2 = __esm(() => {
393655
394118
  isArray = Array.isArray;
393656
394119
  });
393657
394120
 
393658
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/observable.js
394121
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/observable.js
393659
394122
  class ObservableV2 {
393660
394123
  constructor() {
393661
394124
  this._observers = create();
@@ -393722,7 +394185,7 @@ var init_observable = __esm(() => {
393722
394185
  init_array2();
393723
394186
  });
393724
394187
 
393725
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/math.js
394188
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/math.js
393726
394189
  var floor, abs, min = (a, b) => a < b ? a : b, max2 = (a, b) => a > b ? a : b, pow, isNegativeZero = (n) => n !== 0 ? n < 0 : 1 / n < 0;
393727
394190
  var init_math = __esm(() => {
393728
394191
  floor = Math.floor;
@@ -393730,7 +394193,7 @@ var init_math = __esm(() => {
393730
394193
  pow = Math.pow;
393731
394194
  });
393732
394195
 
393733
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/binary.js
394196
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/binary.js
393734
394197
  var BIT1 = 1, BIT2 = 2, BIT3 = 4, BIT4 = 8, BIT6 = 32, BIT7 = 64, BIT8 = 128, BIT18, BIT19, BIT20, BIT21, BIT22, BIT23, BIT24, BIT25, BIT26, BIT27, BIT28, BIT29, BIT30, BIT31, BIT32, BITS5 = 31, BITS6 = 63, BITS7 = 127, BITS17, BITS18, BITS19, BITS20, BITS21, BITS22, BITS23, BITS24, BITS25, BITS26, BITS27, BITS28, BITS29, BITS30, BITS31 = 2147483647;
393735
394198
  var init_binary = __esm(() => {
393736
394199
  BIT18 = 1 << 17;
@@ -393764,7 +394227,7 @@ var init_binary = __esm(() => {
393764
394227
  BITS30 = BIT31 - 1;
393765
394228
  });
393766
394229
 
393767
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/number.js
394230
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/number.js
393768
394231
  var MAX_SAFE_INTEGER, MIN_SAFE_INTEGER, LOWEST_INT32, isInteger2;
393769
394232
  var init_number2 = __esm(() => {
393770
394233
  init_math();
@@ -393774,7 +394237,7 @@ var init_number2 = __esm(() => {
393774
394237
  isInteger2 = Number.isInteger || ((num) => typeof num === "number" && isFinite(num) && floor(num) === num);
393775
394238
  });
393776
394239
 
393777
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/string.js
394240
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/string.js
393778
394241
  var fromCharCode, fromCodePoint, MAX_UTF16_CHARACTER, toLowerCase = (s) => s.toLowerCase(), trimLeftRegex, trimLeft = (s) => s.replace(trimLeftRegex, ""), fromCamelCaseRegex, fromCamelCase = (s, separator) => trimLeft(s.replace(fromCamelCaseRegex, (match) => `${separator}${toLowerCase(match)}`)), _encodeUtf8Polyfill = (str) => {
393779
394242
  const encodedString = unescape(encodeURIComponent(str));
393780
394243
  const len = encodedString.length;
@@ -393798,7 +394261,7 @@ var init_string2 = __esm(() => {
393798
394261
  }
393799
394262
  });
393800
394263
 
393801
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/encoding.js
394264
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/encoding.js
393802
394265
  class Encoder {
393803
394266
  constructor() {
393804
394267
  this.cpos = 0;
@@ -394064,14 +394527,14 @@ var init_encoding = __esm(() => {
394064
394527
  };
394065
394528
  });
394066
394529
 
394067
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/error.js
394530
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/error.js
394068
394531
  var create3 = (s) => new Error(s), methodUnimplemented = () => {
394069
394532
  throw create3("Method unimplemented");
394070
394533
  }, unexpectedCase = () => {
394071
394534
  throw create3("Unexpected case");
394072
394535
  };
394073
394536
 
394074
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/decoding.js
394537
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/decoding.js
394075
394538
  class Decoder {
394076
394539
  constructor(uint8Array) {
394077
394540
  this.arr = uint8Array;
@@ -394262,7 +394725,7 @@ var init_decoding = __esm(() => {
394262
394725
  };
394263
394726
  });
394264
394727
 
394265
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/webcrypto.node.js
394728
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/webcrypto.node.js
394266
394729
  import { webcrypto } from "node:crypto";
394267
394730
  var subtle, getRandomValues;
394268
394731
  var init_webcrypto_node = __esm(() => {
@@ -394270,29 +394733,29 @@ var init_webcrypto_node = __esm(() => {
394270
394733
  getRandomValues = webcrypto.getRandomValues.bind(webcrypto);
394271
394734
  });
394272
394735
 
394273
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/random.js
394736
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/random.js
394274
394737
  var uint322 = () => getRandomValues(new Uint32Array(1))[0], uuidv4Template, uuidv42 = () => uuidv4Template.replace(/[018]/g, (c) => (c ^ uint322() & 15 >> c / 4).toString(16));
394275
394738
  var init_random = __esm(() => {
394276
394739
  init_webcrypto_node();
394277
394740
  uuidv4Template = [1e7] + -1000 + -4000 + -8000 + -100000000000;
394278
394741
  });
394279
394742
 
394280
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/time.js
394743
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/time.js
394281
394744
  var getUnixTime;
394282
394745
  var init_time = __esm(() => {
394283
394746
  getUnixTime = Date.now;
394284
394747
  });
394285
394748
 
394286
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/promise.js
394749
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/promise.js
394287
394750
  var create4 = (f) => new Promise(f), all2;
394288
394751
  var init_promise2 = __esm(() => {
394289
394752
  all2 = Promise.all.bind(Promise);
394290
394753
  });
394291
394754
 
394292
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/conditions.js
394755
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/conditions.js
394293
394756
  var undefinedToNull = (v) => v === undefined ? null : v;
394294
394757
 
394295
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/storage.js
394758
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/storage.js
394296
394759
  class VarStoragePolyfill {
394297
394760
  constructor() {
394298
394761
  this.map = new Map;
@@ -394316,13 +394779,13 @@ var init_storage = __esm(() => {
394316
394779
  varStorage = _localStorage;
394317
394780
  });
394318
394781
 
394319
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/trait/equality.js
394782
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/trait/equality.js
394320
394783
  var EqualityTraitSymbol, equals = (a, b) => a === b || !!a?.[EqualityTraitSymbol]?.(b) || false;
394321
394784
  var init_equality = __esm(() => {
394322
394785
  EqualityTraitSymbol = Symbol("Equality");
394323
394786
  });
394324
394787
 
394325
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/object.js
394788
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/object.js
394326
394789
  var assign, keys, forEach = (obj, f) => {
394327
394790
  for (const key2 in obj) {
394328
394791
  f(obj[key2], key2);
@@ -394361,7 +394824,7 @@ var init_object2 = __esm(() => {
394361
394824
  freeze = Object.freeze;
394362
394825
  });
394363
394826
 
394364
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/function.js
394827
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/function.js
394365
394828
  var callAll = (fs, args, i2 = 0) => {
394366
394829
  try {
394367
394830
  for (;i2 < fs.length; i2++) {
@@ -394450,7 +394913,7 @@ var init_function = __esm(() => {
394450
394913
  init_equality();
394451
394914
  });
394452
394915
 
394453
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/environment.js
394916
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/environment.js
394454
394917
  var isNode, isBrowser, isMac, params, args, computeParams = () => {
394455
394918
  if (params === undefined) {
394456
394919
  if (isNode) {
@@ -394504,7 +394967,7 @@ var init_environment = __esm(() => {
394504
394967
  supportsColor = forceColor || !hasParam2("--no-colors") && !hasConf("no-color") && (!isNode || process.stdout.isTTY) && (!isNode || hasParam2("--color") || getVariable("COLORTERM") !== null || (getVariable("TERM") || "").includes("color"));
394505
394968
  });
394506
394969
 
394507
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/buffer.js
394970
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/buffer.js
394508
394971
  var createUint8ArrayFromLen = (len) => new Uint8Array(len), createUint8ArrayViewFromArrayBuffer = (buffer, byteOffset, length2) => new Uint8Array(buffer, byteOffset, length2), createUint8ArrayFromArrayBuffer = (buffer) => new Uint8Array(buffer), toBase64Browser = (bytes) => {
394509
394972
  let s = "";
394510
394973
  for (let i2 = 0;i2 < bytes.byteLength; i2++) {
@@ -394533,13 +394996,13 @@ var init_buffer = __esm(() => {
394533
394996
  fromBase64 = isBrowser ? fromBase64Browser : fromBase64Node;
394534
394997
  });
394535
394998
 
394536
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/symbol.js
394999
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/symbol.js
394537
395000
  var create5;
394538
395001
  var init_symbol = __esm(() => {
394539
395002
  create5 = Symbol;
394540
395003
  });
394541
395004
 
394542
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/logging.common.js
395005
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/logging.common.js
394543
395006
  var BOLD, UNBOLD, BLUE, GREY, GREEN, RED, PURPLE, ORANGE, UNCOLOR, computeNoColorLoggingArgs = (args2) => {
394544
395007
  if (args2.length === 1 && args2[0]?.constructor === Function) {
394545
395008
  args2 = args2[0]();
@@ -394583,7 +395046,7 @@ var init_logging_common = __esm(() => {
394583
395046
  lastLoggingTime = getUnixTime();
394584
395047
  });
394585
395048
 
394586
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/logging.node.js
395049
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/logging.node.js
394587
395050
  var _nodeStyleMap, computeNodeLoggingArgs = (args2) => {
394588
395051
  if (args2.length === 1 && args2[0]?.constructor === Function) {
394589
395052
  args2 = args2[0]();
@@ -394640,7 +395103,7 @@ var init_logging_node = __esm(() => {
394640
395103
  computeLoggingArgs = supportsColor ? computeNodeLoggingArgs : computeNoColorLoggingArgs;
394641
395104
  });
394642
395105
 
394643
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/iterator.js
395106
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/iterator.js
394644
395107
  var createIterator = (next) => ({
394645
395108
  [Symbol.iterator]() {
394646
395109
  return this;
@@ -394657,7 +395120,7 @@ var createIterator = (next) => ({
394657
395120
  return { done, value: done ? undefined : fmap(value2) };
394658
395121
  });
394659
395122
 
394660
- // ../../../v2/node_modules/.pnpm/yjs@13.6.31/node_modules/yjs/dist/yjs.mjs
395123
+ // ../../node_modules/.pnpm/yjs@13.6.31/node_modules/yjs/dist/yjs.mjs
394661
395124
  class DeleteItem {
394662
395125
  constructor(clock, len) {
394663
395126
  this.clock = clock;
@@ -399400,7 +399863,7 @@ var init_yjs = __esm(() => {
399400
399863
  glo[importIdentifier] = true;
399401
399864
  });
399402
399865
 
399403
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/broadcastchannel.js
399866
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/broadcastchannel.js
399404
399867
  class LocalStoragePolyfill {
399405
399868
  constructor(room) {
399406
399869
  this.room = room;
@@ -399446,7 +399909,7 @@ var init_broadcastchannel = __esm(() => {
399446
399909
  BC = typeof BroadcastChannel === "undefined" ? LocalStoragePolyfill : BroadcastChannel;
399447
399910
  });
399448
399911
 
399449
- // ../../../v2/node_modules/.pnpm/y-protocols@1.0.7_yjs@13.6.31/node_modules/y-protocols/sync.js
399912
+ // ../../node_modules/.pnpm/y-protocols@1.0.7_yjs@13.6.31/node_modules/y-protocols/sync.js
399450
399913
  var messageYjsSyncStep1 = 0, messageYjsSyncStep2 = 1, messageYjsUpdate = 2, writeSyncStep1 = (encoder2, doc2) => {
399451
399914
  writeVarUint(encoder2, messageYjsSyncStep1);
399452
399915
  const sv = encodeStateVector(doc2);
@@ -399489,7 +399952,7 @@ var init_sync = __esm(() => {
399489
399952
  readUpdate = readSyncStep2;
399490
399953
  });
399491
399954
 
399492
- // ../../../v2/node_modules/.pnpm/y-protocols@1.0.7_yjs@13.6.31/node_modules/y-protocols/auth.js
399955
+ // ../../node_modules/.pnpm/y-protocols@1.0.7_yjs@13.6.31/node_modules/y-protocols/auth.js
399493
399956
  var messagePermissionDenied = 0, readAuthMessage = (decoder9, y, permissionDeniedHandler) => {
399494
399957
  switch (readVarUint(decoder9)) {
399495
399958
  case messagePermissionDenied:
@@ -399500,7 +399963,7 @@ var init_auth = __esm(() => {
399500
399963
  init_decoding();
399501
399964
  });
399502
399965
 
399503
- // ../../../v2/node_modules/.pnpm/y-protocols@1.0.7_yjs@13.6.31/node_modules/y-protocols/awareness.js
399966
+ // ../../node_modules/.pnpm/y-protocols@1.0.7_yjs@13.6.31/node_modules/y-protocols/awareness.js
399504
399967
  var outdatedTimeout = 30000, Awareness, removeAwarenessStates = (awareness, clients, origin) => {
399505
399968
  const removed = [];
399506
399969
  for (let i2 = 0;i2 < clients.length; i2++) {
@@ -399683,13 +400146,13 @@ var init_awareness = __esm(() => {
399683
400146
  };
399684
400147
  });
399685
400148
 
399686
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/url.js
400149
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/url.js
399687
400150
  var encodeQueryParams = (params2) => map3(params2, (val, key2) => `${encodeURIComponent(key2)}=${encodeURIComponent(val)}`).join("&");
399688
400151
  var init_url = __esm(() => {
399689
400152
  init_object2();
399690
400153
  });
399691
400154
 
399692
- // ../../../v2/node_modules/.pnpm/y-websocket@3.0.0_yjs@13.6.31/node_modules/y-websocket/src/y-websocket.js
400155
+ // ../../node_modules/.pnpm/y-websocket@3.0.0_yjs@13.6.31/node_modules/y-websocket/src/y-websocket.js
399693
400156
  var messageSync = 0, messageQueryAwareness = 3, messageAwareness = 1, messageAuth = 2, messageHandlers, messageReconnectTimeout = 30000, permissionDeniedHandler = (provider, reason) => console.warn(`Permission denied to access ${provider.url}.
399694
400157
  ${reason}`), readMessage = (provider, buf, emitSynced) => {
399695
400158
  const decoder9 = createDecoder(buf);
@@ -400482,7 +400945,7 @@ var init_y_websocket_single_doc = __esm(() => {
400482
400945
  init_runtime4();
400483
400946
  });
400484
400947
 
400485
- // ../../../v2/node_modules/.pnpm/@hocuspocus+common@2.15.3/node_modules/@hocuspocus/common/dist/hocuspocus-common.esm.js
400948
+ // ../../node_modules/.pnpm/@hocuspocus+common@2.15.3/node_modules/@hocuspocus/common/dist/hocuspocus-common.esm.js
400486
400949
  var floor2, min2 = (a, b) => a < b ? a : b, max3 = (a, b) => a > b ? a : b, BIT82 = 128, BITS72 = 127, MAX_SAFE_INTEGER2, _encodeUtf8Polyfill2 = (str) => {
400487
400950
  const encodedString = unescape(encodeURIComponent(str));
400488
400951
  const len = encodedString.length;
@@ -400641,7 +401104,7 @@ var init_hocuspocus_common_esm = __esm(() => {
400641
401104
  })(WsReadyStates || (WsReadyStates = {}));
400642
401105
  });
400643
401106
 
400644
- // ../../../v2/node_modules/.pnpm/@lifeomic+attempt@3.1.0/node_modules/@lifeomic/attempt/dist/src/index.js
401107
+ // ../../node_modules/.pnpm/@lifeomic+attempt@3.1.0/node_modules/@lifeomic/attempt/dist/src/index.js
400645
401108
  var require_src2 = __commonJS((exports) => {
400646
401109
  Object.defineProperty(exports, "__esModule", { value: true });
400647
401110
  exports.retry = exports.defaultCalculateDelay = exports.sleep = undefined;
@@ -400786,7 +401249,7 @@ var require_src2 = __commonJS((exports) => {
400786
401249
  exports.retry = retry;
400787
401250
  });
400788
401251
 
400789
- // ../../../v2/node_modules/.pnpm/@hocuspocus+provider@2.15.3_y-protocols@1.0.7_yjs@13.6.31__yjs@13.6.31/node_modules/@hocuspocus/provider/dist/hocuspocus-provider.esm.js
401252
+ // ../../node_modules/.pnpm/@hocuspocus+provider@2.15.3_y-protocols@1.0.7_yjs@13.6.31__yjs@13.6.31/node_modules/@hocuspocus/provider/dist/hocuspocus-provider.esm.js
400790
401253
  class VarStoragePolyfill2 {
400791
401254
  constructor() {
400792
401255
  this.map = new Map;
@@ -402536,7 +402999,7 @@ var init_hocuspocus_single_doc = __esm(() => {
402536
402999
  init_runtime4();
402537
403000
  });
402538
403001
 
402539
- // ../../../v2/node_modules/.pnpm/@liveblocks+core@3.15.5_@types+json-schema@7.0.15/node_modules/@liveblocks/core/dist/index.js
403002
+ // ../../node_modules/.pnpm/@liveblocks+core@3.15.5_@types+json-schema@7.0.15/node_modules/@liveblocks/core/dist/index.js
402540
403003
  function error48(msg) {
402541
403004
  if (false) {} else {
402542
403005
  throw new Error(msg);
@@ -411508,7 +411971,7 @@ var init_dist6 = __esm(() => {
411508
411971
  detectDupes(PKG_NAME, PKG_VERSION, PKG_FORMAT);
411509
411972
  });
411510
411973
 
411511
- // ../../../v2/node_modules/.pnpm/@liveblocks+client@3.15.5_@types+json-schema@7.0.15/node_modules/@liveblocks/client/dist/index.js
411974
+ // ../../node_modules/.pnpm/@liveblocks+client@3.15.5_@types+json-schema@7.0.15/node_modules/@liveblocks/client/dist/index.js
411512
411975
  var PKG_NAME2 = "@liveblocks/client", PKG_VERSION2 = "3.15.5", PKG_FORMAT2 = "esm";
411513
411976
  var init_dist7 = __esm(() => {
411514
411977
  init_dist6();
@@ -411516,7 +411979,7 @@ var init_dist7 = __esm(() => {
411516
411979
  detectDupes(PKG_NAME2, PKG_VERSION2, PKG_FORMAT2);
411517
411980
  });
411518
411981
 
411519
- // ../../../v2/node_modules/.pnpm/js-base64@3.7.8/node_modules/js-base64/base64.mjs
411982
+ // ../../node_modules/.pnpm/js-base64@3.7.8/node_modules/js-base64/base64.mjs
411520
411983
  var version2 = "3.7.8", VERSION2, _hasBuffer, _TD, _TE, b64ch = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", b64chs, b64tab, b64re, _fromCC, _U8Afrom, _mkUriSafe = (src) => src.replace(/=/g, "").replace(/[+\/]/g, (m0) => m0 == "+" ? "-" : "_"), _tidyB64 = (s) => s.replace(/[^A-Za-z0-9\+\/]/g, ""), btoaPolyfill = (bin) => {
411521
411984
  let u32, c0, c1, c2, asc = "";
411522
411985
  const pad = bin.length % 3;
@@ -411660,7 +412123,7 @@ var init_base64 = __esm(() => {
411660
412123
  };
411661
412124
  });
411662
412125
 
411663
- // ../../../v2/node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/indexeddb.js
412126
+ // ../../node_modules/.pnpm/lib0@0.2.117/node_modules/lib0/indexeddb.js
411664
412127
  var rtop = (request) => create4((resolve, reject2) => {
411665
412128
  request.onerror = (event) => reject2(new Error(event.target.error));
411666
412129
  request.onsuccess = (event) => resolve(event.target.result);
@@ -411698,7 +412161,7 @@ var init_indexeddb = __esm(() => {
411698
412161
  init_promise2();
411699
412162
  });
411700
412163
 
411701
- // ../../../v2/node_modules/.pnpm/y-indexeddb@9.0.12_yjs@13.6.31/node_modules/y-indexeddb/src/y-indexeddb.js
412164
+ // ../../node_modules/.pnpm/y-indexeddb@9.0.12_yjs@13.6.31/node_modules/y-indexeddb/src/y-indexeddb.js
411702
412165
  var customStoreName = "custom", updatesStoreName = "updates", PREFERRED_TRIM_SIZE = 500, fetchUpdates = (idbPersistence, beforeApplyUpdatesCallback = () => {}, afterApplyUpdatesCallback = () => {}) => {
411703
412166
  const [updatesStore] = transact2(idbPersistence.db, [updatesStoreName]);
411704
412167
  return getAll(updatesStore, createIDBKeyRangeLowerBound(idbPersistence._dbref, false)).then((updates) => {
@@ -411810,7 +412273,7 @@ var init_y_indexeddb = __esm(() => {
411810
412273
  };
411811
412274
  });
411812
412275
 
411813
- // ../../../v2/node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/utils.js
412276
+ // ../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/utils.js
411814
412277
  function isBytes(a) {
411815
412278
  return a instanceof Uint8Array || ArrayBuffer.isView(a) && a.constructor.name === "Uint8Array";
411816
412279
  }
@@ -411870,7 +412333,7 @@ var init_utils = __esm(() => {
411870
412333
  /*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
411871
412334
  });
411872
412335
 
411873
- // ../../../v2/node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/_md.js
412336
+ // ../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/_md.js
411874
412337
  function setBigUint64(view, byteOffset, value2, isLE) {
411875
412338
  if (typeof view.setBigUint64 === "function")
411876
412339
  return view.setBigUint64(byteOffset, value2, isLE);
@@ -411994,7 +412457,7 @@ var init__md = __esm(() => {
411994
412457
  ]);
411995
412458
  });
411996
412459
 
411997
- // ../../../v2/node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/sha2.js
412460
+ // ../../node_modules/.pnpm/@noble+hashes@1.8.0/node_modules/@noble/hashes/esm/sha2.js
411998
412461
  var SHA256_K, SHA256_W, SHA256, sha256;
411999
412462
  var init_sha2 = __esm(() => {
412000
412463
  init__md();
@@ -412138,7 +412601,7 @@ var init_sha2 = __esm(() => {
412138
412601
  sha256 = /* @__PURE__ */ createHasher(() => new SHA256);
412139
412602
  });
412140
412603
 
412141
- // ../../../v2/node_modules/.pnpm/@liveblocks+yjs@3.15.5_@types+json-schema@7.0.15_yjs@13.6.31/node_modules/@liveblocks/yjs/dist/index.js
412604
+ // ../../node_modules/.pnpm/@liveblocks+yjs@3.15.5_@types+json-schema@7.0.15_yjs@13.6.31/node_modules/@liveblocks/yjs/dist/index.js
412142
412605
  var PKG_NAME3 = "@liveblocks/yjs", PKG_VERSION3 = "3.15.5", PKG_FORMAT3 = "esm", create9 = () => /* @__PURE__ */ new Map, setIfUndefined3 = (map5, key2, createT) => {
412143
412606
  let set3 = map5.get(key2);
412144
412607
  if (set3 === undefined) {
@@ -432314,16 +432777,20 @@ function mirrorStoryBlocksFromSession(input) {
432314
432777
  if (!tailBlockId) {
432315
432778
  throw new Error("storyBlocks mirror could not resolve tail paragraph id for paragraphSplit");
432316
432779
  }
432780
+ const context = loadStorySyncContext(input.session, input.storyId);
432781
+ const headPayload = readSessionBlockPayload(context, source.target.paraId);
432782
+ const tailPayload = readSessionBlockPayload(context, tailBlockId);
432317
432783
  if (!findBlockMap(input.doc, tailBlockId)) {
432784
+ const offset = source.coordinateSpace === "tracked" ? parseParagraphXml(headPayload.xml, headPayload.namespaceBindings, trackedWrapperIdentityStateForPayload(headPayload)).visibleText.length : source.offset;
432318
432785
  splitBlock({
432319
432786
  doc: input.doc,
432320
432787
  blockId: source.target.paraId,
432321
- offset: source.offset,
432788
+ offset,
432322
432789
  tailBlockId,
432323
432790
  origin: STORY_SURFACE_BACKEND_ORIGIN
432324
432791
  });
432325
432792
  }
432326
- syncBlocksFromSession(input.session, input.storyId, input.doc, [source.target.paraId, tailBlockId]);
432793
+ syncBlockPayloads(input.doc, [headPayload, tailPayload]);
432327
432794
  writeParagraphMembershipTableOverlaysFromSession(input.session, input.prepared, input.storyId, input.doc, [source.target.paraId, tailBlockId], "paragraph.split");
432328
432795
  return;
432329
432796
  }
@@ -438696,7 +439163,7 @@ function createHeadlessCollabRoomCoordinator(options) {
438696
439163
  const bytes = readPartBytesForSync(prepared, partUri);
438697
439164
  if (!bytes)
438698
439165
  return;
438699
- syncRelationshipsPart(partUri, bytes);
439166
+ syncRelationshipsPart(prepared, partUri, bytes);
438700
439167
  return;
438701
439168
  }
438702
439169
  if (isOpaquePackagePartUri(partUri)) {
@@ -438825,7 +439292,7 @@ function createHeadlessCollabRoomCoordinator(options) {
438825
439292
  out.add(COMMENTS_PART_URI5);
438826
439293
  return Array.from(out).sort();
438827
439294
  }
438828
- function syncRelationshipsPart(partUri, bytes) {
439295
+ function syncRelationshipsPart(prepared, partUri, bytes) {
438829
439296
  const ownerPartUri2 = ownerPartUriForRels2(partUri);
438830
439297
  const rels = ensureRelationshipsShard(ownerPartUri2, { seedWhenMissing: true });
438831
439298
  if (!rels) {
@@ -438838,6 +439305,30 @@ function createHeadlessCollabRoomCoordinator(options) {
438838
439305
  return resolveTargetUri(ownerPartUri2, target, targetMode);
438839
439306
  }
438840
439307
  });
439308
+ const createdMediaPartUris = new Set(Object.entries(prepared.localApplyBundle.perPart).filter(([uri, entry]) => isMediaPartUri(uri) && entry.kind === "create").map(([uri]) => uri));
439309
+ if (prepared.source.kind === "imageInsertInline" && createdMediaPartUris.size > 0) {
439310
+ const inserted = parsed.relationships.filter((relationship2) => relationship2.type === IMAGE_REL_TYPE4 && createdMediaPartUris.has(relationship2.resolvedTarget));
439311
+ if (inserted.length !== 1) {
439312
+ throw new Error(`image insertion requires one new relationship in ${partUri}; found ${inserted.length}`);
439313
+ }
439314
+ const target = collabUnitTargetOrDoc(rels.handle);
439315
+ const relationship = inserted[0];
439316
+ const existing = listRelationships(target).find((record3) => record3.rId === relationship.id);
439317
+ if (existing && (existing.type !== relationship.type || existing.target !== relationship.target)) {
439318
+ throw new Error(`image relationship ${relationship.id} already targets another part`);
439319
+ }
439320
+ upsertRelationship({
439321
+ doc: target,
439322
+ rId: relationship.id,
439323
+ type: relationship.type,
439324
+ target: relationship.target,
439325
+ targetMode: relationship.targetMode,
439326
+ external: false
439327
+ });
439328
+ bumpWatermark(target, ALLOCATOR_NAMESPACE.rId, numericSuffix(relationship.id, "rId"));
439329
+ recordManifestPart(relationshipsPartDescriptor(partUri, bytes.byteLength));
439330
+ return;
439331
+ }
438841
439332
  resetPackagePartPayload(collabUnitTargetOrDoc(rels.handle));
438842
439333
  let maxRId = 0;
438843
439334
  for (const relationship of parsed.relationships) {
@@ -438967,16 +439458,19 @@ function createHeadlessCollabRoomCoordinator(options) {
438967
439458
  });
438968
439459
  }
438969
439460
  function reconcileMediaPackageState(prepared) {
438970
- const assets = buildActiveMediaAssetsFromSession(prepared).map((asset) => ({
438971
- ...asset,
438972
- payload: prepareBinaryPayload(asset.bytes, asset.sha256)
438973
- }));
439461
+ const createdMediaPartUris = new Set(Object.entries(prepared.localApplyBundle.perPart).filter(([uri, entry]) => isMediaPartUri(uri) && entry.kind === "create").map(([uri]) => uri));
439462
+ const additiveInsert = prepared.source.kind === "imageInsertInline" && createdMediaPartUris.size > 0;
439463
+ const assets = buildActiveMediaAssetsFromSession(prepared).filter((asset) => !additiveInsert || createdMediaPartUris.has(asset.partUri)).map((asset) => ({ ...asset, payload: prepareBinaryPayload(asset.bytes, asset.sha256) }));
439464
+ if (additiveInsert && assets.length !== createdMediaPartUris.size) {
439465
+ throw new Error("image insertion media bytes are unavailable for shared package sync");
439466
+ }
438974
439467
  const activePartUris = new Set(assets.map((asset) => asset.partUri));
438975
439468
  const mediaShardId = packageShardId(options.rootId, SHARD_KIND.mediaManifest, MEDIA_OWNER_URI);
438976
439469
  const existingHandle = options.graph.projectionHandles.get(mediaShardId);
438977
439470
  if (assets.length > 0 || existingHandle) {
438978
439471
  const mediaManifest = assets.length > 0 ? ensureMediaManifestShard().handle : existingHandle;
438979
- resetPackagePartPayload(collabUnitTargetOrDoc(mediaManifest));
439472
+ if (!additiveInsert)
439473
+ resetPackagePartPayload(collabUnitTargetOrDoc(mediaManifest));
438980
439474
  const mediaAssets = ensureChildMap(getPartRecordsMap(collabUnitTargetOrDoc(mediaManifest)), "assets");
438981
439475
  const mediaByPart = ensureChildMap(getPartIndexMap(collabUnitTargetOrDoc(mediaManifest)), "byPartKey");
438982
439476
  let maxMediaOrdinal = 0;
@@ -439032,19 +439526,21 @@ function createHeadlessCollabRoomCoordinator(options) {
439032
439526
  uncompressedSize: asset.byteLength
439033
439527
  });
439034
439528
  }
439035
- const stalePartUris = [];
439036
- for (const [partKey, rawValue] of getPackagePartsMap(options.rootDoc).entries()) {
439037
- const descriptor = toManifestPartDescriptor(partKey, rawValue);
439038
- if (!descriptor)
439039
- continue;
439040
- if (descriptor.partKind !== "image" && descriptor.partKind !== "media")
439041
- continue;
439042
- if (activePartUris.has(descriptor.partUri))
439043
- continue;
439044
- stalePartUris.push(descriptor.partUri);
439045
- }
439046
- for (const partUri of stalePartUris) {
439047
- retireBinaryPart(partUri);
439529
+ if (!additiveInsert) {
439530
+ const stalePartUris = [];
439531
+ for (const [partKey, rawValue] of getPackagePartsMap(options.rootDoc).entries()) {
439532
+ const descriptor = toManifestPartDescriptor(partKey, rawValue);
439533
+ if (!descriptor)
439534
+ continue;
439535
+ if (descriptor.partKind !== "image" && descriptor.partKind !== "media")
439536
+ continue;
439537
+ if (activePartUris.has(descriptor.partUri))
439538
+ continue;
439539
+ stalePartUris.push(descriptor.partUri);
439540
+ }
439541
+ for (const partUri of stalePartUris) {
439542
+ retireBinaryPart(partUri);
439543
+ }
439048
439544
  }
439049
439545
  }
439050
439546
  function buildActiveMediaAssetsFromSession(prepared) {