jbrowse-plugin-graphgenomeviewer 8.0.2 → 8.1.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 (84) hide show
  1. package/dist/chunks/GbzBaseSyntenyAdapter-OHJ4QDMX.js +2 -0
  2. package/dist/chunks/GbzBaseSyntenyAdapter-OHJ4QDMX.js.map +7 -0
  3. package/dist/chunks/{GraphGenomeView-667ZUNDI.js → GraphGenomeView-RWQUR473.js} +2 -2
  4. package/dist/chunks/{GraphTrackSettingsDialog-7M3Q635V.js → GraphTrackSettingsDialog-IQZGEFCA.js} +2 -2
  5. package/dist/chunks/{HighlightColorDialog-4F34Q4PY.js → HighlightColorDialog-LCBGD2ZA.js} +2 -2
  6. package/dist/chunks/{LinearGraphDisplay-BAEMS5WG.js → LinearGraphDisplay-YDUG4J53.js} +2 -2
  7. package/dist/chunks/{MinigraphBubbleAdapter-G25V6MZL.js → MinigraphBubbleAdapter-EVYS6XUZ.js} +2 -2
  8. package/dist/chunks/{RgfaTabixAdapter-JPTUWO2Z.js → RgfaTabixAdapter-QD2AJSBK.js} +2 -2
  9. package/dist/chunks/{WalkFormsAdapter-PBN7BJZW.js → WalkFormsAdapter-SG4LLHHS.js} +2 -2
  10. package/dist/chunks/{WalkTabixSyntenyAdapter-27WDE5JF.js → WalkTabixSyntenyAdapter-NEZMRCRO.js} +2 -2
  11. package/dist/chunks/{chunk-JOYKGTDE.js → chunk-5EWKB2JM.js} +2 -2
  12. package/dist/chunks/{chunk-2PNGGCQJ.js → chunk-6ZZJCKX5.js} +2 -2
  13. package/dist/chunks/{chunk-2PNGGCQJ.js.map → chunk-6ZZJCKX5.js.map} +1 -1
  14. package/dist/chunks/{chunk-O5FDMVL3.js → chunk-B7MGDESF.js} +2 -2
  15. package/dist/chunks/{chunk-CJAV55QB.js → chunk-BJHWGRMP.js} +1 -1
  16. package/dist/chunks/{chunk-CJAV55QB.js.map → chunk-BJHWGRMP.js.map} +1 -1
  17. package/dist/chunks/{chunk-IAXUZMOX.js → chunk-CNCYMJ5E.js} +2 -2
  18. package/dist/chunks/{chunk-IAXUZMOX.js.map → chunk-CNCYMJ5E.js.map} +2 -2
  19. package/dist/chunks/{chunk-2V75YPTT.js → chunk-CVHKXFVS.js} +2 -2
  20. package/dist/chunks/{chunk-2V75YPTT.js.map → chunk-CVHKXFVS.js.map} +2 -2
  21. package/dist/chunks/chunk-CZI7IP5S.js +2 -0
  22. package/dist/chunks/chunk-CZI7IP5S.js.map +7 -0
  23. package/dist/chunks/chunk-HAAABGE7.js +2 -0
  24. package/dist/chunks/{chunk-JMRW3IGK.js → chunk-IK3MQ4ZJ.js} +2 -2
  25. package/dist/chunks/chunk-IK3MQ4ZJ.js.map +7 -0
  26. package/dist/chunks/chunk-IL5HOUFN.js +2 -0
  27. package/dist/chunks/chunk-IL5HOUFN.js.map +7 -0
  28. package/dist/chunks/chunk-MJS65EKE.js +3 -0
  29. package/dist/chunks/chunk-MJS65EKE.js.map +7 -0
  30. package/dist/chunks/chunk-MK3U4D2U.js +2 -0
  31. package/dist/chunks/chunk-MK3U4D2U.js.map +7 -0
  32. package/dist/chunks/{chunk-3EQNVA3F.js → chunk-OG7MODXE.js} +2 -2
  33. package/dist/chunks/{chunk-3EQNVA3F.js.map → chunk-OG7MODXE.js.map} +2 -2
  34. package/dist/chunks/{chunk-FY7X6253.js → chunk-OGXVDZPS.js} +2 -2
  35. package/dist/chunks/{chunk-FY7X6253.js.map → chunk-OGXVDZPS.js.map} +2 -2
  36. package/dist/chunks/{chunk-NLS74JSZ.js → chunk-PDLKFVVK.js} +1 -1
  37. package/dist/chunks/{chunk-NLS74JSZ.js.map → chunk-PDLKFVVK.js.map} +1 -1
  38. package/dist/chunks/{chunk-I6F25EXY.js → chunk-PKMASUMB.js} +2 -2
  39. package/dist/chunks/{chunk-XB5KC2EZ.js → chunk-T2VC3EEL.js} +1 -1
  40. package/dist/chunks/{chunk-XB5KC2EZ.js.map → chunk-T2VC3EEL.js.map} +1 -1
  41. package/dist/chunks/chunk-TBNAAP6E.js +3 -0
  42. package/dist/chunks/chunk-TBNAAP6E.js.map +7 -0
  43. package/dist/chunks/{chunk-5RHNR3TH.js → chunk-VKZALU57.js} +1 -1
  44. package/dist/chunks/{chunk-5RHNR3TH.js.map → chunk-VKZALU57.js.map} +1 -1
  45. package/dist/chunks/chunk-W7IHIVSE.js +2 -0
  46. package/dist/chunks/{chunk-XWCLYB5C.js.map → chunk-W7IHIVSE.js.map} +4 -4
  47. package/dist/chunks/{renderSvg-YNA5VK6A.js → renderSvg-APVNMW6O.js} +2 -2
  48. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +2 -2
  49. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +2 -2
  50. package/package.json +4 -4
  51. package/src/GraphGenomeView/components/HoverTooltip.tsx +8 -0
  52. package/src/RgfaTabixAdapter/test_data/walks5_skip.GRCh38.walks.bed.gz +0 -0
  53. package/src/RgfaTabixAdapter/test_data/walks5_skip.GRCh38.walks.bed.gz.tbi +0 -0
  54. package/src/RgfaTabixAdapter/walkFiles.test.ts +21 -0
  55. package/src/RgfaTabixAdapter/walkReader.ts +20 -15
  56. package/src/version.ts +1 -1
  57. package/dist/chunks/GbzBaseSyntenyAdapter-EGNUOKB2.js +0 -2
  58. package/dist/chunks/GbzBaseSyntenyAdapter-EGNUOKB2.js.map +0 -7
  59. package/dist/chunks/chunk-DG3E6BSX.js +0 -3
  60. package/dist/chunks/chunk-DG3E6BSX.js.map +0 -7
  61. package/dist/chunks/chunk-HLAQQI6G.js +0 -2
  62. package/dist/chunks/chunk-HLAQQI6G.js.map +0 -7
  63. package/dist/chunks/chunk-JMRW3IGK.js.map +0 -7
  64. package/dist/chunks/chunk-Q7QC2EQU.js +0 -2
  65. package/dist/chunks/chunk-RHYBJCA4.js +0 -2
  66. package/dist/chunks/chunk-RHYBJCA4.js.map +0 -7
  67. package/dist/chunks/chunk-X7YIGIYW.js +0 -2
  68. package/dist/chunks/chunk-X7YIGIYW.js.map +0 -7
  69. package/dist/chunks/chunk-XWCLYB5C.js +0 -2
  70. package/dist/chunks/chunk-ZGTG74GE.js +0 -3
  71. package/dist/chunks/chunk-ZGTG74GE.js.map +0 -7
  72. /package/dist/chunks/{GraphGenomeView-667ZUNDI.js.map → GraphGenomeView-RWQUR473.js.map} +0 -0
  73. /package/dist/chunks/{GraphTrackSettingsDialog-7M3Q635V.js.map → GraphTrackSettingsDialog-IQZGEFCA.js.map} +0 -0
  74. /package/dist/chunks/{HighlightColorDialog-4F34Q4PY.js.map → HighlightColorDialog-LCBGD2ZA.js.map} +0 -0
  75. /package/dist/chunks/{LinearGraphDisplay-BAEMS5WG.js.map → LinearGraphDisplay-YDUG4J53.js.map} +0 -0
  76. /package/dist/chunks/{MinigraphBubbleAdapter-G25V6MZL.js.map → MinigraphBubbleAdapter-EVYS6XUZ.js.map} +0 -0
  77. /package/dist/chunks/{RgfaTabixAdapter-JPTUWO2Z.js.map → RgfaTabixAdapter-QD2AJSBK.js.map} +0 -0
  78. /package/dist/chunks/{WalkFormsAdapter-PBN7BJZW.js.map → WalkFormsAdapter-SG4LLHHS.js.map} +0 -0
  79. /package/dist/chunks/{WalkTabixSyntenyAdapter-27WDE5JF.js.map → WalkTabixSyntenyAdapter-NEZMRCRO.js.map} +0 -0
  80. /package/dist/chunks/{chunk-JOYKGTDE.js.map → chunk-5EWKB2JM.js.map} +0 -0
  81. /package/dist/chunks/{chunk-O5FDMVL3.js.map → chunk-B7MGDESF.js.map} +0 -0
  82. /package/dist/chunks/{chunk-Q7QC2EQU.js.map → chunk-HAAABGE7.js.map} +0 -0
  83. /package/dist/chunks/{chunk-I6F25EXY.js.map → chunk-PKMASUMB.js.map} +0 -0
  84. /package/dist/chunks/{renderSvg-YNA5VK6A.js.map → renderSvg-APVNMW6O.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-VA5U4F23.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-4FPEQQFT.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BIYQIWDO.js"],
4
+ "sourcesContent": ["// src/gfa/walkStops.ts\nvar START_STOP_TAG = \"ws\";\nvar END_STOP_TAG = \"we\";\nvar STOP_KINDS = [\"elsewhere\", \"break\", \"end\"];\nvar GAP_CAUSE_TEXT = {\n missing: \"not in the graph\",\n elsewhere: \"on nodes filed elsewhere\",\n unknown: \"gap, cause unknown\",\n abridged: \"abridged: steps not loaded\",\n // a walk file's skip row: the haplotype jumps over the window\n deleted: \"deleted in this haplotype\"\n};\nvar OUTSIDE_TEXT = \"outside the extracted subgraph\";\nfunction gapParts(bp, after, before) {\n if (!after && !before) {\n return [{ bp }];\n }\n const left = Math.min(after?.trimmed ?? 0, bp);\n const right = Math.min(before?.trimmed ?? 0, bp - left);\n let rest = bp - left - right;\n const lead = after?.kind === \"break\" ? Math.min(after.bp, rest) : 0;\n rest -= lead;\n const trail = before?.kind === \"break\" ? Math.min(before.bp, rest) : 0;\n rest -= trail;\n const elsewhere = [after, before].find((s) => s?.kind === \"elsewhere\");\n const parts = [\n { bp: left },\n { bp: lead, cause: \"missing\" },\n elsewhere?.kind === \"elsewhere\" ? { bp: rest, cause: \"elsewhere\", chunk: elsewhere.chunk } : { bp: rest, cause: \"unknown\" },\n { bp: trail, cause: \"missing\" },\n { bp: right }\n ];\n return parts.filter((part) => part.bp > 0);\n}\nfunction stopAt(table, i) {\n const bp = table.bp[i];\n const ref = table.chunkRefs[i];\n return stopOf(\n table.kindNames[table.kinds[i]],\n Number.isNaN(bp) ? void 0 : bp,\n table.trimmed[i],\n ref < 0 ? void 0 : { refName: table.chunkRefNames[ref], start: table.chunkStarts[i] }\n );\n}\nfunction stopOf(kind, bp, trimmed, chunk) {\n const cut = trimmed > 0 ? { trimmed } : {};\n if (kind === \"elsewhere\" && chunk) {\n return { kind, chunk, ...bp === void 0 ? {} : { bp }, ...cut };\n }\n if (kind === \"break\" && bp !== void 0) {\n return { kind, bp, ...chunk ? { chunk } : {}, ...cut };\n }\n return kind === \"end\" ? { kind, ...cut } : void 0;\n}\nfunction stopTag(stop) {\n const parts = [stop.kind];\n if (\"bp\" in stop && stop.bp !== void 0) {\n parts.push(`bp=${stop.bp}`);\n }\n if (stop.trimmed) {\n parts.push(`trimmed=${stop.trimmed}`);\n }\n if (\"chunk\" in stop && stop.chunk) {\n parts.push(`chunk=${stop.chunk.refName}:${stop.chunk.start}`);\n }\n return parts.join(\",\");\n}\nfunction parseStopTag(value) {\n const [kind, ...fields] = value.split(\",\");\n let bp;\n let trimmed = 0;\n let chunk;\n for (const field of fields) {\n if (field.startsWith(\"bp=\")) {\n bp = +field.slice(3);\n } else if (field.startsWith(\"trimmed=\")) {\n trimmed = +field.slice(8);\n } else if (field.startsWith(\"chunk=\")) {\n const at = field.lastIndexOf(\":\");\n chunk = { refName: field.slice(6, at), start: +field.slice(at + 1) };\n }\n }\n return stopOf(kind, bp, trimmed, chunk);\n}\nfunction stopFields(before, after) {\n return {\n ...before ? { before } : {},\n ...after ? { after } : {}\n };\n}\nfunction walkStopFields(tags) {\n const before = tags[START_STOP_TAG];\n const after = tags[END_STOP_TAG];\n return stopFields(\n typeof before === \"string\" ? parseStopTag(before) : void 0,\n typeof after === \"string\" ? parseStopTag(after) : void 0\n );\n}\nfunction walkStopTags(walks, p) {\n const tags = [];\n for (const [tag, table] of [\n [START_STOP_TAG, walks.before],\n [END_STOP_TAG, walks.after]\n ]) {\n const stop = table && stopAt(table, p);\n if (stop) {\n tags.push(`\t${tag}:Z:${stopTag(stop)}`);\n }\n }\n return tags.join(\"\");\n}\nvar StopColumns = class {\n constructor() {\n this.kinds = [];\n this.bp = [];\n this.trimmed = [];\n this.chunkRefs = [];\n this.chunkStarts = [];\n this.chunkRefNames = [];\n this.refIndex = /* @__PURE__ */ new Map();\n }\n push(stop) {\n this.kinds.push(STOP_KINDS.indexOf(stop.kind));\n this.bp.push(\"bp\" in stop && stop.bp !== void 0 ? stop.bp : NaN);\n this.trimmed.push(stop.trimmed ?? 0);\n const chunk = \"chunk\" in stop ? stop.chunk : void 0;\n if (chunk) {\n let ref = this.refIndex.get(chunk.refName);\n if (ref === void 0) {\n ref = this.chunkRefNames.length;\n this.refIndex.set(chunk.refName, ref);\n this.chunkRefNames.push(chunk.refName);\n }\n this.chunkRefs.push(ref);\n this.chunkStarts.push(chunk.start);\n } else {\n this.chunkRefs.push(-1);\n this.chunkStarts.push(NaN);\n }\n }\n table() {\n return {\n kinds: Uint8Array.from(this.kinds),\n kindNames: [...STOP_KINDS],\n bp: Float64Array.from(this.bp),\n trimmed: Float64Array.from(this.trimmed),\n chunkRefs: Int32Array.from(this.chunkRefs),\n chunkStarts: Float64Array.from(this.chunkStarts),\n chunkRefNames: this.chunkRefNames\n };\n }\n};\n\nexport {\n START_STOP_TAG,\n END_STOP_TAG,\n GAP_CAUSE_TEXT,\n OUTSIDE_TEXT,\n gapParts,\n stopAt,\n stopTag,\n parseStopTag,\n stopFields,\n walkStopFields,\n walkStopTags,\n StopColumns\n};\n", "import {\n stopAt,\n stopFields,\n walkStopTags\n} from \"./chunk-VA5U4F23.js\";\nimport {\n PathVisits\n} from \"./chunk-BEUTROKU.js\";\nimport {\n panSNFields,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/gfa/graphTables.ts\nfunction pLineName(name, start, end) {\n return start === 0 ? name : `${name}:${start}-${end}`;\n}\nfunction tablePath(w, p) {\n const walkName = w.names[p];\n const fields = panSNFields(walkName);\n const start = w.starts[p];\n const steps = w.abridgedSteps?.[p] ?? Number.NaN;\n const abridged = Number.isNaN(steps) ? {} : { abridged: { steps, bp: w.abridgedBp?.[p] ?? 0 } };\n return fields ? {\n name: `${fields.sample}#${fields.haplotype}#${fields.contig}`,\n start,\n ...fields,\n ...stopFields(\n w.before && stopAt(w.before, p),\n w.after && stopAt(w.after, p)\n ),\n ...abridged\n } : { name: pLineName(walkName, start, w.ends[p]), start };\n}\nfunction namesByList(lists, names, listCount, pathNames) {\n const starts = new Int32Array(listCount + 1);\n for (const list of lists) {\n starts[list + 1]++;\n }\n for (let i = 0; i < listCount; i++) {\n starts[i + 1] += starts[i];\n }\n const fill = starts.slice(0, listCount);\n const grouped = new Int32Array(lists.length);\n lists.forEach((list, i) => {\n grouped[fill[list]++] = names[i];\n });\n const listed = new Int32Array(pathNames.length).fill(-1);\n return Array.from({ length: listCount }, (_, list) => {\n const out = [];\n for (let i = starts[list]; i < starts[list + 1]; i++) {\n const k = grouped[i];\n if (listed[k] !== list) {\n listed[k] = list;\n out.push(pathNames[k]);\n }\n }\n return out;\n });\n}\nfunction tableNodeIds({ nodes: n, links: l, walks: w }, traversals) {\n const canonical = new Uint8Array(n.names.length);\n const claim = (node, reversed) => {\n if (canonical[node] === 0) {\n canonical[node] = reversed ? 2 : 1;\n }\n };\n for (let i = 0; i < l.from.length; i++) {\n claim(l.from[i], l.strands[i] & 1);\n claim(l.to[i], l.strands[i] & 2);\n }\n const stepCount = w.offsets[w.names.length] ?? 0;\n for (let s = 0; s < stepCount; s++) {\n const node = w.steps[s];\n claim(node, w.reversed[s]);\n if (traversals) {\n traversals[node]++;\n }\n }\n return n.names.map(\n (segment, i) => `${segment}${canonical[i] === 2 ? \"-\" : \"+\"}`\n );\n}\nfunction graphFromTables({ nodes: n, links: l, walks: w }, name = \"Imported GFA\") {\n const count = n.names.length;\n const declared = n.lengths.length;\n const drawnWalks = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n drawnWalks.push(p);\n }\n }\n const traversals = new Int32Array(count);\n const ids = tableNodeIds({ nodes: n, links: l, walks: w }, traversals);\n const nodes = [];\n for (let i = 0; i < declared; i++) {\n const ref = n.refs[i];\n nodes.push({\n id: ids[i],\n name: n.names[i],\n length: n.lengths[i],\n depth: Math.max(traversals[i], 1),\n stable: ref < 0 ? void 0 : {\n refName: n.refNames[ref],\n start: n.starts[i],\n rank: n.ranks[i]\n },\n samples: void 0\n });\n }\n const edges = [];\n const neighbours = new Array(count);\n const pairList = (a, b) => {\n const near = neighbours[a];\n if (near) {\n for (let j = 0; j < near.length; j += 2) {\n if (near[j] === b) {\n return near[j + 1];\n }\n }\n }\n return void 0;\n };\n const addPair = (a, b, list) => {\n const near = neighbours[a];\n if (near) {\n near.push(b, list);\n } else {\n neighbours[a] = [b, list];\n }\n };\n const edgeLists = [];\n let lists = 0;\n for (let i = 0; i < l.from.length; i++) {\n const a = l.from[i];\n const b = l.to[i];\n edges.push({\n from: ids[a],\n to: ids[b],\n fromStrand: l.strands[i] & 1 ? \"-\" : \"+\",\n toStrand: l.strands[i] & 2 ? \"-\" : \"+\"\n });\n let list = pairList(a, b);\n if (list === void 0) {\n list = lists++;\n addPair(a, b, list);\n addPair(b, a, list);\n }\n edgeLists.push(list);\n }\n const adjacency = new Int32Array(count + 1);\n for (let a = 0; a < count; a++) {\n adjacency[a + 1] = adjacency[a] + (neighbours[a]?.length ?? 0) / 2;\n }\n const adjacentNode = new Int32Array(adjacency[count]);\n const adjacentList = new Int32Array(adjacency[count]);\n neighbours.forEach((near, a) => {\n for (let j = 0; j < near.length; j += 2) {\n adjacentNode[adjacency[a] + j / 2] = near[j];\n adjacentList[adjacency[a] + j / 2] = near[j + 1];\n }\n });\n const listOf = (a, b) => {\n for (let j = adjacency[a]; j < adjacency[a + 1]; j++) {\n if (adjacentNode[j] === b) {\n return adjacentList[j];\n }\n }\n return -1;\n };\n const nameIndex = /* @__PURE__ */ new Map();\n const pathNames = [];\n const crossedList = new Int32Array(w.offsets[w.names.length] ?? 0);\n const crossedName = new Int32Array(crossedList.length);\n let crossings = 0;\n const lastWalk = new Int32Array(lists).fill(-1);\n const paths = [];\n const anchorPaths = [];\n const totalSteps = w.offsets[w.names.length] ?? 0;\n const visitPath = new Int32Array(totalSteps);\n const visitStart = new Float64Array(totalSteps);\n const visitReversed = new Uint8Array(totalSteps);\n const fill = new Int32Array(count).fill(-1);\n const visitOrder = [];\n const blocks = [0];\n const pathSamples = [];\n const edgeNameIndex = /* @__PURE__ */ new Map();\n const edgeNames = [];\n for (const p of drawnWalks) {\n const head = tablePath(w, p);\n const { start, name: pathName } = head;\n const visitName = head.sample === void 0 ? w.names[p] : pathName;\n let named = nameIndex.get(visitName);\n if (named === void 0) {\n named = pathNames.length;\n nameIndex.set(visitName, named);\n pathNames.push(visitName);\n pathSamples.push(panSNSample(visitName));\n }\n let edgeNamed = edgeNameIndex.get(pathName);\n if (edgeNamed === void 0) {\n edgeNamed = edgeNames.length;\n edgeNameIndex.set(pathName, edgeNamed);\n edgeNames.push(pathName);\n }\n const visitSample = pathSamples[named];\n const first = w.offsets[p];\n const nodeIds = new Array(w.offsets[p + 1] - first);\n let pos = start;\n let prev = -1;\n for (let s = first; s < w.offsets[p + 1]; s++) {\n const node = w.steps[s];\n nodeIds[s - first] = ids[node];\n if (fill[node] === -1) {\n fill[node] = blocks.at(-1);\n blocks.push(fill[node] + traversals[node]);\n visitOrder.push(node);\n }\n const at = fill[node]++;\n visitPath[at] = named;\n visitStart[at] = pos;\n visitReversed[at] = w.reversed[s];\n pos += node < declared ? n.lengths[node] : 0;\n if (prev >= 0) {\n const list = listOf(prev, node);\n if (list >= 0 && lastWalk[list] !== p) {\n lastWalk[list] = p;\n crossedList[crossings] = list;\n crossedName[crossings++] = edgeNamed;\n }\n }\n prev = node;\n }\n paths.push({ ...head, nodeIds });\n anchorPaths.push({\n name: visitName,\n sample: visitSample,\n start,\n length: pos - start\n });\n }\n const listNames = namesByList(\n crossedList.subarray(0, crossings),\n crossedName,\n lists,\n edgeNames\n );\n edges.forEach((edge, i) => {\n const names = listNames[edgeLists[i]];\n if (names.length > 0) {\n edge.pathIds = names;\n }\n });\n const walked = drawnWalks.length > 0;\n return {\n name,\n nodes,\n edges,\n paths: walked ? paths : void 0,\n anchorPaths: walked ? anchorPaths : void 0,\n pathVisits: walked ? new PathVisits({\n segments: visitOrder.map((node) => n.names[node]),\n offsets: Int32Array.from(blocks),\n path: visitPath.subarray(0, blocks.at(-1)),\n start: visitStart.subarray(0, blocks.at(-1)),\n reversed: visitReversed.subarray(0, blocks.at(-1)),\n paths: pathNames,\n samples: pathSamples\n }) : void 0,\n anchoredBy: nodes.some((node) => node.stable) ? \"tags\" : void 0\n };\n}\nfunction graphTablesGFA({ nodes, links, walks }) {\n const { names } = nodes;\n const lines = [\"H\tVN:Z:1.1\"];\n for (let i = 0; i < nodes.lengths.length; i++) {\n const ref = nodes.refs[i];\n const stable = ref < 0 ? \"\" : `\tSN:Z:${nodes.refNames[ref]}\tSO:i:${nodes.starts[i]}\tSR:i:${nodes.ranks[i]}`;\n lines.push(`S\t${names[i]}\t*\tLN:i:${nodes.lengths[i]}${stable}`);\n }\n for (let i = 0; i < links.from.length; i++) {\n const strands = links.strands[i];\n lines.push(\n `L\t${names[links.from[i]]}\t${strands & 1 ? \"-\" : \"+\"}\t${names[links.to[i]]}\t${strands & 2 ? \"-\" : \"+\"}\t0M`\n );\n }\n for (let p = 0; p < walks.names.length; p++) {\n const name = walks.names[p];\n const fields = panSNFields(name);\n const start = walks.starts[p];\n const end = walks.ends[p];\n const steps = [];\n for (let s = walks.offsets[p]; s < walks.offsets[p + 1]; s++) {\n steps.push([names[walks.steps[s]], walks.reversed[s]]);\n }\n lines.push(\n fields ? `W\t${fields.sample}\t${fields.haplotype}\t${fields.contig}\t${start}\t${end}\t${steps.map(([id, rev]) => (rev ? \"<\" : \">\") + id).join(\"\")}${walkStopTags(walks, p)}` : `P\t${pLineName(name, start, end)}\t${steps.map(([id, rev]) => id + (rev ? \"-\" : \"+\")).join(\",\")}\t*`\n );\n }\n return lines.join(\"\\n\");\n}\n\nexport {\n tablePath,\n tableNodeIds,\n graphFromTables,\n graphTablesGFA\n};\n", "import {\n tableNodeIds,\n tablePath\n} from \"./chunk-4FPEQQFT.js\";\nimport {\n gapParts\n} from \"./chunk-VA5U4F23.js\";\nimport {\n pathOrigin\n} from \"./chunk-BRH73RCH.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n panSNContig,\n panSNFields,\n panSNHaplotype,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/layout/walkRowRuns.ts\nvar RUN_ON_REFERENCE = 1;\nvar RUN_REVERSED = 2;\nvar RUN_GAP = 4;\nvar GAP_CAUSES = [\n void 0,\n \"missing\",\n \"elsewhere\",\n \"unknown\",\n \"abridged\",\n \"deleted\"\n];\nvar CAUSE_SHIFT = 3;\nvar causeFlags = (cause) => GAP_CAUSES.indexOf(cause) << CAUSE_SHIFT;\nfunction referenceOf(names, referencePath, rankZero) {\n return referencePath !== void 0 && names.includes(referencePath) ? referencePath : names.find((n) => rankZero.has(n)) ?? names[0];\n}\nfunction referenceWalkName(graph) {\n return referenceOf(\n (graph.paths ?? []).map((p) => pathOrigin(p.name).name),\n graph.referencePath,\n new Set(\n graph.nodes.flatMap(\n (n) => n.stable?.rank === 0 ? [n.stable.refName] : []\n )\n )\n );\n}\nfunction graphPieces(graph) {\n const index = /* @__PURE__ */ new Map();\n const names = [];\n const lengths = [];\n const indexOf = (id) => {\n let i = index.get(id);\n if (i === void 0) {\n i = names.length;\n index.set(id, i);\n names.push(id);\n lengths.push(0);\n }\n return i;\n };\n for (const node of graph.nodes) {\n lengths[indexOf(node.id)] = node.length;\n }\n const heads = graph.paths ?? [];\n const from = new Int32Array(heads.length);\n const to = new Int32Array(heads.length);\n const steps = [];\n heads.forEach((path, p) => {\n from[p] = steps.length;\n for (const id of path.nodeIds) {\n steps.push(indexOf(id));\n }\n to[p] = steps.length;\n });\n return {\n heads,\n from,\n to,\n steps: Int32Array.from(steps),\n lengths: Int32Array.from(lengths),\n names,\n reference: referenceWalkName(graph)\n };\n}\nfunction tablePieces(tables, referencePath, visits) {\n const { nodes: n, walks: w } = tables;\n const kept = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n kept.push(p);\n }\n }\n const heads = kept.map((p) => tablePath(w, p));\n const rankZero = /* @__PURE__ */ new Set();\n for (let i = 0; i < n.lengths.length; i++) {\n if (n.refs[i] >= 0 && n.ranks[i] === 0) {\n rankZero.add(n.refNames[n.refs[i]]);\n }\n }\n return {\n heads,\n from: Int32Array.from(kept, (p) => w.offsets[p]),\n to: Int32Array.from(kept, (p) => w.offsets[p + 1]),\n steps: w.steps,\n lengths: n.lengths,\n // a visit names its node as the Graph does, which costs a pass over the\n // steps\n names: visits ? tableNodeIds(tables) : n.names,\n reference: referenceOf(\n heads.map((h) => pathOrigin(h.name).name),\n referencePath,\n rankZero\n )\n };\n}\nfunction sampleOf(path) {\n return path.sample ?? panSNSample(path.name);\n}\nfunction labelOf(path) {\n return path.haplotype !== void 0 && path.sample !== void 0 ? `${path.sample}#${path.haplotype}` : sampleOf(path);\n}\nvar Columns = class {\n constructor(width) {\n this.offsets = [0];\n this.values = Array.from({ length: width }, () => []);\n }\n get length() {\n return this.values[0].length;\n }\n push(a, b, c, d, e) {\n const v = this.values;\n v[0].push(a);\n v[1].push(b);\n v[2].push(c);\n v[3].push(d);\n if (e !== void 0) {\n v[4].push(e);\n }\n }\n endRow() {\n this.offsets.push(this.length);\n }\n // the rows in `order`, column i in the array `make[i]` makes\n reorder(order, make) {\n const offsets = new Uint32Array(order.length + 1);\n order.forEach((row, i) => {\n offsets[i + 1] = offsets[i] + this.offsets[row + 1] - this.offsets[row];\n });\n const columns = make.map((m, c) => {\n const from = this.values[c];\n const out = m(this.length);\n let at = 0;\n for (const row of order) {\n for (let k = this.offsets[row]; k < this.offsets[row + 1]; k++) {\n out[at++] = from[k];\n }\n }\n return out;\n });\n return { offsets, columns };\n }\n};\nvar float64 = (n) => new Float64Array(n);\nfunction walkRowRuns(source, region, o = {}) {\n const {\n heads,\n from,\n to,\n steps: all,\n lengths,\n names,\n reference\n } = \"walks\" in source ? tablePieces(source, o.referencePath, o.visits) : graphPieces(source);\n const declared = lengths.length;\n const lengthOf = (node) => node < declared ? lengths[node] : 0;\n const nameOf = (p) => pathOrigin(heads[p].name).name;\n const startOf = (p) => heads[p].start;\n const byStart = (a, b) => (startOf(a) ?? 0) - (startOf(b) ?? 0);\n const pieceIds = heads.map((_, p) => p);\n const referencePieces = pieceIds.filter((p) => nameOf(p) === reference).sort(byStart);\n const first = referencePieces[0];\n const others = pieceIds.filter((p) => nameOf(p) !== reference);\n const skips = \"walks\" in source ? source.skips : void 0;\n if (first === void 0 || others.length === 0 && !skips?.names.length) {\n return void 0;\n }\n const walks = groupBy(others, nameOf);\n const spanStart = new Float64Array(names.length).fill(Number.NaN);\n const spanEnd = new Float64Array(names.length);\n const revisits = /* @__PURE__ */ new Map();\n let flankEnd = -Infinity;\n let flankStart = Infinity;\n const cut = region && region.end > region.start ? region : void 0;\n for (const piece of referencePieces) {\n let pos = startOf(piece) ?? 0;\n for (let s = from[piece], stop = to[piece]; s < stop; s++) {\n const node = all[s];\n const len = lengthOf(node);\n if (!Number.isNaN(spanStart[node])) {\n const starts = revisits.get(node);\n if (starts) {\n starts.push(pos);\n } else {\n revisits.set(node, [spanStart[node], pos]);\n }\n } else {\n spanStart[node] = pos;\n spanEnd[node] = pos + len;\n if (cut) {\n if (pos + len <= cut.start) {\n flankEnd = Math.max(flankEnd, pos + len);\n }\n if (pos >= cut.end) {\n flankStart = Math.min(flankStart, pos);\n }\n }\n }\n pos += len;\n }\n }\n const flanked = cut === void 0 || flankEnd > -Infinity && flankStart < Infinity;\n const runs = new Columns(5);\n const chunks = [];\n const chunkIndex = /* @__PURE__ */ new Map();\n const chunkOf = (chunk2) => {\n if (!chunk2) {\n return -1;\n }\n const key = `${chunk2.refName}:${chunk2.start}`;\n let i = chunkIndex.get(key);\n if (i === void 0) {\n i = chunks.length;\n chunkIndex.set(key, i);\n chunks.push(chunk2);\n }\n return i;\n };\n const visits = o.visits ? new Columns(4) : void 0;\n let steps = new Int32Array(0);\n let stepStart = new Float64Array(0);\n const rowOf = (pieces) => {\n const head = heads[pieces[0]];\n const ordered = [...pieces].sort(byStart);\n let count = ordered.length - 1;\n let abridgedSteps = 0;\n for (const piece of ordered) {\n count += to[piece] - from[piece] + (heads[piece].abridged ? 1 : 0);\n abridgedSteps += heads[piece].abridged?.steps ?? 0;\n }\n if (count > steps.length) {\n steps = new Int32Array(count * 2);\n stepStart = new Float64Array(count * 2);\n }\n let length = 0;\n let unplaced = false;\n let end;\n let previous;\n const partsAt = /* @__PURE__ */ new Map();\n let owed = 0;\n for (const piece of ordered) {\n const start2 = startOf(piece);\n const jump = start2 === void 0 || end === void 0 ? 0 : start2 - end;\n if (start2 === void 0 || jump < 0) {\n unplaced = true;\n }\n if (jump < 0 && heads[previous].abridged) {\n owed -= jump;\n }\n const covered = Math.min(owed, Math.max(jump, 0));\n owed -= covered;\n const gap = jump - covered;\n if (gap > 0) {\n partsAt.set(\n length,\n gapParts(\n gap,\n previous === void 0 ? void 0 : heads[previous].after,\n heads[piece].before\n )\n );\n steps[length] = -gap;\n stepStart[length++] = end;\n }\n let pos = start2 ?? 0;\n const abridged = heads[piece].abridged;\n for (let s = from[piece], stop2 = to[piece]; s < stop2; s++) {\n const node = all[s];\n const bp3 = abridged ? abridged.bp - (pos - (start2 ?? 0)) - lengthOf(node) : 0;\n if (bp3 > 0 && s === stop2 - 1 && s > from[piece]) {\n partsAt.set(length, [{ bp: bp3, cause: \"abridged\" }]);\n steps[length] = -bp3;\n stepStart[length++] = pos;\n pos += bp3;\n }\n steps[length] = node;\n stepStart[length++] = pos;\n pos += lengthOf(node);\n }\n end = start2 === void 0 ? void 0 : pos;\n previous = piece;\n }\n const onReference = (i) => i >= 0 && i < length && steps[i] >= 0 && !Number.isNaN(spanStart[steps[i]]);\n const stepEnd = (i) => {\n const id = steps[i];\n return stepStart[i] + (id < 0 ? -id : lengthOf(id));\n };\n const partialSide = (i0, i1) => {\n const flank = i0 >= 0 ? i0 : i1;\n let near = -1;\n for (let d = 1; near < 0 && d < length; d++) {\n near = [flank - d, flank + d].find(onReference) ?? -1;\n }\n if (near < 0) {\n return void 0;\n }\n const forward = near > flank === spanStart[steps[near]] > spanStart[steps[flank]];\n const after = forward === (flank === i0);\n const last2 = after ? length - 1 : 0;\n const contigEnds = onReference(last2);\n const stop2 = {\n contigEnds,\n shortBp: contigEnds ? Math.max(\n 0,\n cut.start - spanEnd[steps[last2]],\n spanStart[steps[last2]] - cut.end\n ) : 0\n };\n return {\n stop: stop2,\n lo: after ? flank + 1 : 0,\n hi: after ? length : flank,\n backward: !forward,\n axisStart: forward ? after ? stepEnd(flank) : stepStart[0] : after ? stepEnd(length - 1) : stepStart[flank]\n };\n };\n let lo = 0;\n let hi = length;\n let backward = false;\n let complete = true;\n let flankFrom = -1;\n let flankTo = -1;\n let axisStart;\n let stop;\n const trimAbridged = (inner, bp3) => {\n const parts = partsAt.get(inner);\n const gap = parts?.[0];\n if (bp3 <= 0 || gap?.cause !== \"abridged\") {\n return 0;\n }\n const trimmed = Math.min(bp3, gap.bp);\n partsAt.set(\n inner,\n gap.bp > trimmed ? [{ ...gap, bp: gap.bp - trimmed }] : []\n );\n steps[inner] += trimmed;\n return trimmed;\n };\n let leftTrim = 0;\n let rightTrim = 0;\n if (cut && flanked) {\n let i0 = -1;\n let i1 = -1;\n let bestEnd = -Infinity;\n let bestStart = Infinity;\n for (let i = 0; i < length; i++) {\n const id = steps[i];\n if (id >= 0 && !Number.isNaN(spanStart[id])) {\n if (spanEnd[id] <= cut.start && spanEnd[id] > bestEnd) {\n bestEnd = spanEnd[id];\n i0 = i;\n }\n if (spanStart[id] >= cut.end && spanStart[id] < bestStart) {\n bestStart = spanStart[id];\n i1 = i;\n }\n }\n }\n if (i0 < 0 || i1 < 0) {\n complete = false;\n const inside = i0 >= 0 || i1 >= 0 ? partialSide(i0, i1) : void 0;\n if (inside) {\n ;\n ({ lo, hi, backward, axisStart, stop } = inside);\n }\n } else {\n lo = Math.min(i0, i1) + 1;\n hi = Math.max(i0, i1);\n backward = i0 > i1;\n flankFrom = i0;\n flankTo = i1;\n const inward = backward ? -1 : 1;\n leftTrim = trimAbridged(i0 + inward, flankEnd - spanEnd[steps[i0]]);\n rightTrim = trimAbridged(\n i1 - inward,\n spanStart[steps[i1]] - flankStart\n );\n }\n }\n const contig = head.contig ?? panSNContig(pathOrigin(head.name).name);\n const axis = unplaced || length === 0 ? void 0 : axisStart !== void 0 ? { contig, start: axisStart, reversed: backward } : flankFrom < 0 ? { contig, start: stepStart[0], reversed: false } : flankFrom < flankTo ? {\n contig,\n start: stepEnd(flankFrom) + leftTrim,\n reversed: false\n } : {\n contig,\n start: stepStart[flankFrom] - leftTrim,\n reversed: true\n };\n let bp2 = 0;\n let offReferenceBp = 0;\n let gapBp = 0;\n let step = 0;\n let last = -1;\n let lastFlags = 0;\n let lastRef = Number.NaN;\n let cursor = Number.NaN;\n const placeOf = (id) => {\n const starts = revisits.get(id);\n if (!starts || Number.isNaN(cursor)) {\n return spanStart[id];\n }\n const len = lengthOf(id);\n let best = starts[0];\n let bestGap = Infinity;\n for (const start2 of starts) {\n const gap = Math.min(\n Math.abs(start2 - cursor),\n Math.abs(start2 + len - cursor)\n );\n if (gap < bestGap) {\n best = start2;\n bestGap = gap;\n }\n }\n return best;\n };\n const [, runBp, runRef, runFlags] = runs.values;\n for (let k = lo; k < hi; k++) {\n const index = backward ? hi - 1 - (k - lo) : k;\n const id = steps[index];\n const parts = partsAt.get(index);\n if (parts) {\n for (const part of backward ? [...parts].reverse() : parts) {\n runs.push(\n bp2,\n part.bp,\n Number.NaN,\n RUN_GAP | causeFlags(part.cause),\n chunkOf(part.chunk)\n );\n bp2 += part.bp;\n }\n last = runs.length - 1;\n lastFlags = RUN_GAP;\n lastRef = Number.NaN;\n gapBp += -id;\n step = 0;\n continue;\n }\n const len = lengthOf(id);\n const at = placeOf(id);\n const on = !Number.isNaN(at);\n visits?.push(id, bp2, len, on ? 1 : 0);\n const placed = last >= 0 && !Number.isNaN(lastRef);\n const forward = on && placed && step >= 0 && lastRef + (runBp[last] ?? 0) === at;\n const back = on && placed && step <= 0 && at + len === lastRef;\n if (!on && last >= 0 && !(lastFlags & (RUN_ON_REFERENCE | RUN_GAP))) {\n runBp[last] += len;\n } else if (forward || back) {\n runBp[last] += len;\n if (!forward) {\n lastRef = at;\n runRef[last] = at;\n lastFlags |= RUN_REVERSED;\n runFlags[last] = lastFlags;\n }\n step = forward ? 1 : -1;\n } else {\n lastFlags = on ? RUN_ON_REFERENCE : 0;\n lastRef = on ? at : Number.NaN;\n runs.push(bp2, len, lastRef, lastFlags, -1);\n last = runs.length - 1;\n step = 0;\n }\n bp2 += len;\n if (on) {\n cursor = step < 0 ? at : at + len;\n } else {\n offReferenceBp += len;\n }\n }\n runs.endRow();\n visits?.endRow();\n return {\n name: head.name,\n label: labelOf(head),\n sample: sampleOf(head),\n haplotype: head.haplotype,\n bp: bp2,\n offReferenceBp,\n gapBp,\n complete,\n stop,\n axis,\n ...abridgedSteps > 0 ? { abridgedSteps } : {},\n ...leftTrim + rightTrim > 0 ? { estimated: true } : {}\n };\n };\n const skipRowOf = (name, start2, end) => {\n const from2 = cut ? Math.max(start2, cut.start) : start2;\n const bp2 = (cut ? Math.min(end, cut.end) : end) - from2;\n runs.push(\n from2 - (cut ? cut.start : start2),\n bp2,\n Number.NaN,\n RUN_GAP | causeFlags(\"deleted\"),\n -1\n );\n runs.endRow();\n visits?.endRow();\n const head = { name, ...panSNFields(name) };\n return {\n name,\n label: labelOf(head),\n sample: sampleOf(head),\n haplotype: head.haplotype,\n bp: 0,\n offReferenceBp: 0,\n gapBp: bp2,\n complete: true,\n stop: void 0,\n axis: void 0\n };\n };\n const referenceRow = rowOf(referencePieces);\n const rows = [...walks.values()].map((pieces, i) => ({\n meta: rowOf(pieces),\n row: i + 1\n }));\n const drawn = new Set(walks.keys());\n skips?.names.forEach((name, k) => {\n const contig = pathOrigin(name).name;\n if (!drawn.has(contig)) {\n drawn.add(contig);\n rows.push({\n meta: skipRowOf(contig, skips.starts[k], skips.ends[k]),\n row: rows.length + 1\n });\n }\n });\n const metas = [referenceRow, ...rows.map((r) => r.meta)];\n if (new Set(metas.map((m) => m.label)).size < metas.length) {\n for (const meta of metas) {\n meta.label = panSNHaplotype(meta.name) ?? meta.label;\n }\n }\n rows.sort(\n (a, b) => Number(b.meta.complete) - Number(a.meta.complete) || b.meta.bp - a.meta.bp || a.meta.label.localeCompare(b.meta.label)\n );\n const order = [0, ...rows.map((r) => r.row)];\n const { offsets, columns } = runs.reorder(order, [\n float64,\n float64,\n float64,\n (n) => new Uint8Array(n),\n (n) => new Int32Array(n)\n ]);\n const [start, bp, referenceStart, flags, chunk] = columns;\n return {\n origin: cut ? cut.start : startOf(first) ?? 0,\n rows: [referenceRow, ...rows.map((r) => r.meta)],\n offsets,\n start,\n bp,\n referenceStart,\n flags,\n chunk,\n chunks,\n visits: visits && visitColumns(visits, order, names)\n };\n}\nfunction visitColumns(visits, order, names) {\n const { offsets, columns } = visits.reorder(order, [\n (n) => new Int32Array(n),\n float64,\n float64,\n (n) => new Uint8Array(n)\n ]);\n const [node, start, bp, onReference] = columns;\n return { offsets, node, start, bp, onReference, names };\n}\nfunction runAt(t, k) {\n const f = t.flags[k];\n const run = {\n start: t.start[k],\n bp: t.bp[k],\n onReference: (f & RUN_ON_REFERENCE) !== 0\n };\n if (f & RUN_GAP) {\n run.gap = true;\n const cause = GAP_CAUSES[f >> CAUSE_SHIFT & 7];\n if (cause) {\n run.cause = cause;\n }\n const chunk = t.chunks[t.chunk[k]];\n if (chunk) {\n run.chunk = chunk;\n }\n } else {\n run.referenceStart = Number.isNaN(t.referenceStart[k]) ? void 0 : t.referenceStart[k];\n }\n if (f & RUN_REVERSED) {\n run.reversed = true;\n }\n return run;\n}\nfunction visitsOf(v, row) {\n const out = [];\n for (let k = v.offsets[row]; k < v.offsets[row + 1]; k++) {\n out.push({\n node: v.names[v.node[k]],\n start: v.start[k],\n bp: v.bp[k],\n onReference: v.onReference[k] === 1\n });\n }\n return out;\n}\nfunction walkRowsOf(t, unit) {\n const rows = t.rows.map((meta, i) => {\n const runs = [];\n for (let k = t.offsets[i]; k < t.offsets[i + 1]; k++) {\n runs.push(runAt(t, k));\n }\n return {\n ...meta,\n runs,\n visits: t.visits && visitsOf(t.visits, i)\n };\n });\n return { origin: t.origin, unit, reference: rows[0], rows: rows.slice(1) };\n}\n\nexport {\n referenceWalkName,\n walkRowRuns,\n runAt,\n walkRowsOf\n};\n"],
5
+ "mappings": "0HACA,IAAIA,GAAiB,KACjBC,GAAe,KACfC,GAAa,CAAC,YAAa,QAAS,KAAK,EACzCC,GAAiB,CACnB,QAAS,mBACT,UAAW,2BACX,QAAS,qBACT,SAAU,6BAEV,QAAS,2BACX,EACIC,GAAe,iCACnB,SAASC,GAASC,EAAIC,EAAOC,EAAQ,CACnC,GAAI,CAACD,GAAS,CAACC,EACb,MAAO,CAAC,CAAE,GAAAF,CAAG,CAAC,EAEhB,IAAMG,EAAO,KAAK,IAAIF,GAAO,SAAW,EAAGD,CAAE,EACvCI,EAAQ,KAAK,IAAIF,GAAQ,SAAW,EAAGF,EAAKG,CAAI,EAClDE,EAAOL,EAAKG,EAAOC,EACjBE,EAAOL,GAAO,OAAS,QAAU,KAAK,IAAIA,EAAM,GAAII,CAAI,EAAI,EAClEA,GAAQC,EACR,IAAMC,EAAQL,GAAQ,OAAS,QAAU,KAAK,IAAIA,EAAO,GAAIG,CAAI,EAAI,EACrEA,GAAQE,EACR,IAAMC,EAAY,CAACP,EAAOC,CAAM,EAAE,KAAMO,GAAMA,GAAG,OAAS,WAAW,EAQrE,MAPc,CACZ,CAAE,GAAIN,CAAK,EACX,CAAE,GAAIG,EAAM,MAAO,SAAU,EAC7BE,GAAW,OAAS,YAAc,CAAE,GAAIH,EAAM,MAAO,YAAa,MAAOG,EAAU,KAAM,EAAI,CAAE,GAAIH,EAAM,MAAO,SAAU,EAC1H,CAAE,GAAIE,EAAO,MAAO,SAAU,EAC9B,CAAE,GAAIH,CAAM,CACd,EACa,OAAQM,GAASA,EAAK,GAAK,CAAC,CAC3C,CACA,SAASC,GAAOC,EAAOC,EAAG,CACxB,IAAMb,EAAKY,EAAM,GAAGC,CAAC,EACfC,EAAMF,EAAM,UAAUC,CAAC,EAC7B,OAAOE,GACLH,EAAM,UAAUA,EAAM,MAAMC,CAAC,CAAC,EAC9B,OAAO,MAAMb,CAAE,EAAI,OAASA,EAC5BY,EAAM,QAAQC,CAAC,EACfC,EAAM,EAAI,OAAS,CAAE,QAASF,EAAM,cAAcE,CAAG,EAAG,MAAOF,EAAM,YAAYC,CAAC,CAAE,CACtF,CACF,CACA,SAASE,GAAOC,EAAMhB,EAAIiB,EAASC,EAAO,CACxC,IAAMC,EAAMF,EAAU,EAAI,CAAE,QAAAA,CAAQ,EAAI,CAAC,EACzC,OAAID,IAAS,aAAeE,EACnB,CAAE,KAAAF,EAAM,MAAAE,EAAO,GAAGlB,IAAO,OAAS,CAAC,EAAI,CAAE,GAAAA,CAAG,EAAG,GAAGmB,CAAI,EAE3DH,IAAS,SAAWhB,IAAO,OACtB,CAAE,KAAAgB,EAAM,GAAAhB,EAAI,GAAGkB,EAAQ,CAAE,MAAAA,CAAM,EAAI,CAAC,EAAG,GAAGC,CAAI,EAEhDH,IAAS,MAAQ,CAAE,KAAAA,EAAM,GAAGG,CAAI,EAAI,MAC7C,CAcA,SAASC,GAAaC,EAAO,CAC3B,GAAM,CAACC,EAAM,GAAGC,CAAM,EAAIF,EAAM,MAAM,GAAG,EACrCG,EACAC,EAAU,EACVC,EACJ,QAAWC,KAASJ,EAClB,GAAII,EAAM,WAAW,KAAK,EACxBH,EAAK,CAACG,EAAM,MAAM,CAAC,UACVA,EAAM,WAAW,UAAU,EACpCF,EAAU,CAACE,EAAM,MAAM,CAAC,UACfA,EAAM,WAAW,QAAQ,EAAG,CACrC,IAAMC,EAAKD,EAAM,YAAY,GAAG,EAChCD,EAAQ,CAAE,QAASC,EAAM,MAAM,EAAGC,CAAE,EAAG,MAAO,CAACD,EAAM,MAAMC,EAAK,CAAC,CAAE,CACrE,CAEF,OAAOC,GAAOP,EAAME,EAAIC,EAASC,CAAK,CACxC,CACA,SAASI,GAAWC,EAAQC,EAAO,CACjC,MAAO,CACL,GAAGD,EAAS,CAAE,OAAAA,CAAO,EAAI,CAAC,EAC1B,GAAGC,EAAQ,CAAE,MAAAA,CAAM,EAAI,CAAC,CAC1B,CACF,CACA,SAASC,GAAeC,EAAM,CAC5B,IAAMH,EAASG,EAAKC,EAAc,EAC5BH,EAAQE,EAAKE,EAAY,EAC/B,OAAON,GACL,OAAOC,GAAW,SAAWX,GAAaW,CAAM,EAAI,OACpD,OAAOC,GAAU,SAAWZ,GAAaY,CAAK,EAAI,MACpD,CACF,CAcA,IAAIK,GAAc,KAAM,CACtB,aAAc,CACZ,KAAK,MAAQ,CAAC,EACd,KAAK,GAAK,CAAC,EACX,KAAK,QAAU,CAAC,EAChB,KAAK,UAAY,CAAC,EAClB,KAAK,YAAc,CAAC,EACpB,KAAK,cAAgB,CAAC,EACtB,KAAK,SAA2B,IAAI,GACtC,CACA,KAAKC,EAAM,CACT,KAAK,MAAM,KAAKC,GAAW,QAAQD,EAAK,IAAI,CAAC,EAC7C,KAAK,GAAG,KAAK,OAAQA,GAAQA,EAAK,KAAO,OAASA,EAAK,GAAK,GAAG,EAC/D,KAAK,QAAQ,KAAKA,EAAK,SAAW,CAAC,EACnC,IAAME,EAAQ,UAAWF,EAAOA,EAAK,MAAQ,OAC7C,GAAIE,EAAO,CACT,IAAIC,EAAM,KAAK,SAAS,IAAID,EAAM,OAAO,EACrCC,IAAQ,SACVA,EAAM,KAAK,cAAc,OACzB,KAAK,SAAS,IAAID,EAAM,QAASC,CAAG,EACpC,KAAK,cAAc,KAAKD,EAAM,OAAO,GAEvC,KAAK,UAAU,KAAKC,CAAG,EACvB,KAAK,YAAY,KAAKD,EAAM,KAAK,CACnC,MACE,KAAK,UAAU,KAAK,EAAE,EACtB,KAAK,YAAY,KAAK,GAAG,CAE7B,CACA,OAAQ,CACN,MAAO,CACL,MAAO,WAAW,KAAK,KAAK,KAAK,EACjC,UAAW,CAAC,GAAGD,EAAU,EACzB,GAAI,aAAa,KAAK,KAAK,EAAE,EAC7B,QAAS,aAAa,KAAK,KAAK,OAAO,EACvC,UAAW,WAAW,KAAK,KAAK,SAAS,EACzC,YAAa,aAAa,KAAK,KAAK,WAAW,EAC/C,cAAe,KAAK,aACtB,CACF,CACF,ECzIA,SAASG,GAAUC,EAAMC,EAAOC,EAAK,CACnC,OAAOD,IAAU,EAAID,EAAO,GAAGA,CAAI,IAAIC,CAAK,IAAIC,CAAG,EACrD,CACA,SAASC,GAAUC,EAAGC,EAAG,CACvB,IAAMC,EAAWF,EAAE,MAAMC,CAAC,EACpBE,EAASC,GAAYF,CAAQ,EAC7BL,EAAQG,EAAE,OAAOC,CAAC,EAClBI,EAAQL,EAAE,gBAAgBC,CAAC,GAAK,OAAO,IACvCK,EAAW,OAAO,MAAMD,CAAK,EAAI,CAAC,EAAI,CAAE,SAAU,CAAE,MAAAA,EAAO,GAAIL,EAAE,aAAaC,CAAC,GAAK,CAAE,CAAE,EAC9F,OAAOE,EAAS,CACd,KAAM,GAAGA,EAAO,MAAM,IAAIA,EAAO,SAAS,IAAIA,EAAO,MAAM,GAC3D,MAAAN,EACA,GAAGM,EACH,GAAGI,GACDP,EAAE,QAAUQ,GAAOR,EAAE,OAAQC,CAAC,EAC9BD,EAAE,OAASQ,GAAOR,EAAE,MAAOC,CAAC,CAC9B,EACA,GAAGK,CACL,EAAI,CAAE,KAAMX,GAAUO,EAAUL,EAAOG,EAAE,KAAKC,CAAC,CAAC,EAAG,MAAAJ,CAAM,CAC3D,CACA,SAASY,GAAYC,EAAOC,EAAOC,EAAWC,EAAW,CACvD,IAAMC,EAAS,IAAI,WAAWF,EAAY,CAAC,EAC3C,QAAWG,KAAQL,EACjBI,EAAOC,EAAO,CAAC,IAEjB,QAASC,EAAI,EAAGA,EAAIJ,EAAWI,IAC7BF,EAAOE,EAAI,CAAC,GAAKF,EAAOE,CAAC,EAE3B,IAAMC,EAAOH,EAAO,MAAM,EAAGF,CAAS,EAChCM,EAAU,IAAI,WAAWR,EAAM,MAAM,EAC3CA,EAAM,QAAQ,CAACK,EAAMC,IAAM,CACzBE,EAAQD,EAAKF,CAAI,GAAG,EAAIJ,EAAMK,CAAC,CACjC,CAAC,EACD,IAAMG,EAAS,IAAI,WAAWN,EAAU,MAAM,EAAE,KAAK,EAAE,EACvD,OAAO,MAAM,KAAK,CAAE,OAAQD,CAAU,EAAG,CAACQ,EAAGL,IAAS,CACpD,IAAMM,EAAM,CAAC,EACb,QAASL,EAAIF,EAAOC,CAAI,EAAGC,EAAIF,EAAOC,EAAO,CAAC,EAAGC,IAAK,CACpD,IAAMM,EAAIJ,EAAQF,CAAC,EACfG,EAAOG,CAAC,IAAMP,IAChBI,EAAOG,CAAC,EAAIP,EACZM,EAAI,KAAKR,EAAUS,CAAC,CAAC,EAEzB,CACA,OAAOD,CACT,CAAC,CACH,CACA,SAASE,GAAa,CAAE,MAAOC,EAAG,MAAOC,EAAG,MAAOzB,CAAE,EAAG0B,EAAY,CAClE,IAAMC,EAAY,IAAI,WAAWH,EAAE,MAAM,MAAM,EACzCI,EAAQ,CAACC,EAAMC,IAAa,CAC5BH,EAAUE,CAAI,IAAM,IACtBF,EAAUE,CAAI,EAAIC,EAAW,EAAI,EAErC,EACA,QAASd,EAAI,EAAGA,EAAIS,EAAE,KAAK,OAAQT,IACjCY,EAAMH,EAAE,KAAKT,CAAC,EAAGS,EAAE,QAAQT,CAAC,EAAI,CAAC,EACjCY,EAAMH,EAAE,GAAGT,CAAC,EAAGS,EAAE,QAAQT,CAAC,EAAI,CAAC,EAEjC,IAAMe,EAAY/B,EAAE,QAAQA,EAAE,MAAM,MAAM,GAAK,EAC/C,QAASgC,EAAI,EAAGA,EAAID,EAAWC,IAAK,CAClC,IAAMH,EAAO7B,EAAE,MAAMgC,CAAC,EACtBJ,EAAMC,EAAM7B,EAAE,SAASgC,CAAC,CAAC,EACrBN,GACFA,EAAWG,CAAI,GAEnB,CACA,OAAOL,EAAE,MAAM,IACb,CAACS,EAASjB,IAAM,GAAGiB,CAAO,GAAGN,EAAUX,CAAC,IAAM,EAAI,IAAM,GAAG,EAC7D,CACF,CACA,SAASkB,GAAgB,CAAE,MAAOV,EAAG,MAAOC,EAAG,MAAOzB,CAAE,EAAGJ,EAAO,eAAgB,CAChF,IAAMuC,EAAQX,EAAE,MAAM,OAChBY,EAAWZ,EAAE,QAAQ,OACrBa,EAAa,CAAC,EACpB,QAASpC,EAAI,EAAGA,EAAID,EAAE,MAAM,OAAQC,IAC9BD,EAAE,QAAQC,EAAI,CAAC,EAAID,EAAE,QAAQC,CAAC,GAChCoC,EAAW,KAAKpC,CAAC,EAGrB,IAAMyB,EAAa,IAAI,WAAWS,CAAK,EACjCG,EAAMf,GAAa,CAAE,MAAOC,EAAG,MAAOC,EAAG,MAAOzB,CAAE,EAAG0B,CAAU,EAC/Da,EAAQ,CAAC,EACf,QAASvB,EAAI,EAAGA,EAAIoB,EAAUpB,IAAK,CACjC,IAAMwB,EAAMhB,EAAE,KAAKR,CAAC,EACpBuB,EAAM,KAAK,CACT,GAAID,EAAItB,CAAC,EACT,KAAMQ,EAAE,MAAMR,CAAC,EACf,OAAQQ,EAAE,QAAQR,CAAC,EACnB,MAAO,KAAK,IAAIU,EAAWV,CAAC,EAAG,CAAC,EAChC,OAAQwB,EAAM,EAAI,OAAS,CACzB,QAAShB,EAAE,SAASgB,CAAG,EACvB,MAAOhB,EAAE,OAAOR,CAAC,EACjB,KAAMQ,EAAE,MAAMR,CAAC,CACjB,EACA,QAAS,MACX,CAAC,CACH,CACA,IAAMyB,EAAQ,CAAC,EACTC,EAAa,IAAI,MAAMP,CAAK,EAC5BQ,EAAW,CAACC,EAAGC,IAAM,CACzB,IAAMC,EAAOJ,EAAWE,CAAC,EACzB,GAAIE,GACF,QAASC,EAAI,EAAGA,EAAID,EAAK,OAAQC,GAAK,EACpC,GAAID,EAAKC,CAAC,IAAMF,EACd,OAAOC,EAAKC,EAAI,CAAC,EAKzB,EACMC,EAAU,CAACJ,EAAGC,EAAG9B,IAAS,CAC9B,IAAM+B,EAAOJ,EAAWE,CAAC,EACrBE,EACFA,EAAK,KAAKD,EAAG9B,CAAI,EAEjB2B,EAAWE,CAAC,EAAI,CAACC,EAAG9B,CAAI,CAE5B,EACMkC,GAAY,CAAC,EACfvC,EAAQ,EACZ,QAASM,EAAI,EAAGA,EAAIS,EAAE,KAAK,OAAQT,IAAK,CACtC,IAAM4B,EAAInB,EAAE,KAAKT,CAAC,EACZ6B,EAAIpB,EAAE,GAAGT,CAAC,EAChByB,EAAM,KAAK,CACT,KAAMH,EAAIM,CAAC,EACX,GAAIN,EAAIO,CAAC,EACT,WAAYpB,EAAE,QAAQT,CAAC,EAAI,EAAI,IAAM,IACrC,SAAUS,EAAE,QAAQT,CAAC,EAAI,EAAI,IAAM,GACrC,CAAC,EACD,IAAID,EAAO4B,EAASC,EAAGC,CAAC,EACpB9B,IAAS,SACXA,EAAOL,IACPsC,EAAQJ,EAAGC,EAAG9B,CAAI,EAClBiC,EAAQH,EAAGD,EAAG7B,CAAI,GAEpBkC,GAAU,KAAKlC,CAAI,CACrB,CACA,IAAMmC,EAAY,IAAI,WAAWf,EAAQ,CAAC,EAC1C,QAASS,EAAI,EAAGA,EAAIT,EAAOS,IACzBM,EAAUN,EAAI,CAAC,EAAIM,EAAUN,CAAC,GAAKF,EAAWE,CAAC,GAAG,QAAU,GAAK,EAEnE,IAAMO,GAAe,IAAI,WAAWD,EAAUf,CAAK,CAAC,EAC9CiB,GAAe,IAAI,WAAWF,EAAUf,CAAK,CAAC,EACpDO,EAAW,QAAQ,CAACI,EAAMF,IAAM,CAC9B,QAASG,EAAI,EAAGA,EAAID,EAAK,OAAQC,GAAK,EACpCI,GAAaD,EAAUN,CAAC,EAAIG,EAAI,CAAC,EAAID,EAAKC,CAAC,EAC3CK,GAAaF,EAAUN,CAAC,EAAIG,EAAI,CAAC,EAAID,EAAKC,EAAI,CAAC,CAEnD,CAAC,EACD,IAAMM,EAAS,CAACT,EAAGC,IAAM,CACvB,QAASE,EAAIG,EAAUN,CAAC,EAAGG,EAAIG,EAAUN,EAAI,CAAC,EAAGG,IAC/C,GAAII,GAAaJ,CAAC,IAAMF,EACtB,OAAOO,GAAaL,CAAC,EAGzB,MAAO,EACT,EACMO,GAA4B,IAAI,IAChCzC,EAAY,CAAC,EACb0C,EAAc,IAAI,WAAWvD,EAAE,QAAQA,EAAE,MAAM,MAAM,GAAK,CAAC,EAC3DwD,EAAc,IAAI,WAAWD,EAAY,MAAM,EACjDE,EAAY,EACVC,EAAW,IAAI,WAAWhD,CAAK,EAAE,KAAK,EAAE,EACxCiD,EAAQ,CAAC,EACTC,GAAc,CAAC,EACfC,EAAa7D,EAAE,QAAQA,EAAE,MAAM,MAAM,GAAK,EAC1C8D,GAAY,IAAI,WAAWD,CAAU,EACrCE,GAAa,IAAI,aAAaF,CAAU,EACxCG,GAAgB,IAAI,WAAWH,CAAU,EACzC5C,EAAO,IAAI,WAAWkB,CAAK,EAAE,KAAK,EAAE,EACpC8B,EAAa,CAAC,EACdC,EAAS,CAAC,CAAC,EACXC,GAAc,CAAC,EACfC,GAAgC,IAAI,IACpCC,GAAY,CAAC,EACnB,QAAWpE,KAAKoC,EAAY,CAC1B,IAAMiC,EAAOvE,GAAUC,EAAGC,CAAC,EACrB,CAAE,MAAAJ,EAAO,KAAM0E,CAAS,EAAID,EAC5BE,EAAYF,EAAK,SAAW,OAAStE,EAAE,MAAMC,CAAC,EAAIsE,EACpDE,EAAQnB,GAAU,IAAIkB,CAAS,EAC/BC,IAAU,SACZA,EAAQ5D,EAAU,OAClByC,GAAU,IAAIkB,EAAWC,CAAK,EAC9B5D,EAAU,KAAK2D,CAAS,EACxBL,GAAY,KAAKO,GAAYF,CAAS,CAAC,GAEzC,IAAIG,GAAYP,GAAc,IAAIG,CAAQ,EACtCI,KAAc,SAChBA,GAAYN,GAAU,OACtBD,GAAc,IAAIG,EAAUI,EAAS,EACrCN,GAAU,KAAKE,CAAQ,GAEzB,IAAMK,GAAcT,GAAYM,CAAK,EAC/BI,GAAQ7E,EAAE,QAAQC,CAAC,EACnB6E,EAAU,IAAI,MAAM9E,EAAE,QAAQC,EAAI,CAAC,EAAI4E,EAAK,EAC9CE,EAAMlF,EACNmF,EAAO,GACX,QAAShD,EAAI6C,GAAO7C,EAAIhC,EAAE,QAAQC,EAAI,CAAC,EAAG+B,IAAK,CAC7C,IAAMH,EAAO7B,EAAE,MAAMgC,CAAC,EACtB8C,EAAQ9C,EAAI6C,EAAK,EAAIvC,EAAIT,CAAI,EACzBZ,EAAKY,CAAI,IAAM,KACjBZ,EAAKY,CAAI,EAAIqC,EAAO,GAAG,EAAE,EACzBA,EAAO,KAAKjD,EAAKY,CAAI,EAAIH,EAAWG,CAAI,CAAC,EACzCoC,EAAW,KAAKpC,CAAI,GAEtB,IAAMoD,EAAKhE,EAAKY,CAAI,IAKpB,GAJAiC,GAAUmB,CAAE,EAAIR,EAChBV,GAAWkB,CAAE,EAAIF,EACjBf,GAAciB,CAAE,EAAIjF,EAAE,SAASgC,CAAC,EAChC+C,GAAOlD,EAAOO,EAAWZ,EAAE,QAAQK,CAAI,EAAI,EACvCmD,GAAQ,EAAG,CACb,IAAMjE,EAAOsC,EAAO2B,EAAMnD,CAAI,EAC1Bd,GAAQ,GAAK2C,EAAS3C,CAAI,IAAMd,IAClCyD,EAAS3C,CAAI,EAAId,EACjBsD,EAAYE,CAAS,EAAI1C,EACzByC,EAAYC,GAAW,EAAIkB,GAE/B,CACAK,EAAOnD,CACT,CACA8B,EAAM,KAAK,CAAE,GAAGW,EAAM,QAAAQ,CAAQ,CAAC,EAC/BlB,GAAY,KAAK,CACf,KAAMY,EACN,OAAQI,GACR,MAAA/E,EACA,OAAQkF,EAAMlF,CAChB,CAAC,CACH,CACA,IAAMqF,EAAYzE,GAChB8C,EAAY,SAAS,EAAGE,CAAS,EACjCD,EACA9C,EACA2D,EACF,EACA5B,EAAM,QAAQ,CAAC0C,EAAMnE,IAAM,CACzB,IAAML,EAAQuE,EAAUjC,GAAUjC,CAAC,CAAC,EAChCL,EAAM,OAAS,IACjBwE,EAAK,QAAUxE,EAEnB,CAAC,EACD,IAAMyE,GAAS/C,EAAW,OAAS,EACnC,MAAO,CACL,KAAAzC,EACA,MAAA2C,EACA,MAAAE,EACA,MAAO2C,GAASzB,EAAQ,OACxB,YAAayB,GAASxB,GAAc,OACpC,WAAYwB,GAAS,IAAIC,GAAW,CAClC,SAAUpB,EAAW,IAAKpC,GAASL,EAAE,MAAMK,CAAI,CAAC,EAChD,QAAS,WAAW,KAAKqC,CAAM,EAC/B,KAAMJ,GAAU,SAAS,EAAGI,EAAO,GAAG,EAAE,CAAC,EACzC,MAAOH,GAAW,SAAS,EAAGG,EAAO,GAAG,EAAE,CAAC,EAC3C,SAAUF,GAAc,SAAS,EAAGE,EAAO,GAAG,EAAE,CAAC,EACjD,MAAOrD,EACP,QAASsD,EACX,CAAC,EAAI,OACL,WAAY5B,EAAM,KAAMV,GAASA,EAAK,MAAM,EAAI,OAAS,MAC3D,CACF,CC1PA,IAAIyD,GAAmB,EACnBC,GAAe,EACfC,GAAU,EACVC,GAAa,CACf,OACA,UACA,YACA,UACA,WACA,SACF,EACIC,GAAc,EACdC,GAAcC,GAAUH,GAAW,QAAQG,CAAK,GAAKF,GACzD,SAASG,GAAYC,EAAOC,EAAeC,EAAU,CACnD,OAAOD,IAAkB,QAAUD,EAAM,SAASC,CAAa,EAAIA,EAAgBD,EAAM,KAAM,GAAME,EAAS,IAAI,CAAC,CAAC,GAAKF,EAAM,CAAC,CAClI,CACA,SAASG,GAAkBC,EAAO,CAChC,OAAOL,IACJK,EAAM,OAAS,CAAC,GAAG,IAAKC,GAAMC,GAAWD,EAAE,IAAI,EAAE,IAAI,EACtDD,EAAM,cACN,IAAI,IACFA,EAAM,MAAM,QACTG,GAAMA,EAAE,QAAQ,OAAS,EAAI,CAACA,EAAE,OAAO,OAAO,EAAI,CAAC,CACtD,CACF,CACF,CACF,CACA,SAASC,GAAYJ,EAAO,CAC1B,IAAMK,EAAwB,IAAI,IAC5BT,EAAQ,CAAC,EACTU,EAAU,CAAC,EACXC,EAAWC,GAAO,CACtB,IAAIC,EAAIJ,EAAM,IAAIG,CAAE,EACpB,OAAIC,IAAM,SACRA,EAAIb,EAAM,OACVS,EAAM,IAAIG,EAAIC,CAAC,EACfb,EAAM,KAAKY,CAAE,EACbF,EAAQ,KAAK,CAAC,GAETG,CACT,EACA,QAAWC,KAAQV,EAAM,MACvBM,EAAQC,EAAQG,EAAK,EAAE,CAAC,EAAIA,EAAK,OAEnC,IAAMC,EAAQX,EAAM,OAAS,CAAC,EACxBY,EAAO,IAAI,WAAWD,EAAM,MAAM,EAClCE,EAAK,IAAI,WAAWF,EAAM,MAAM,EAChCG,EAAQ,CAAC,EACf,OAAAH,EAAM,QAAQ,CAACI,EAAMd,IAAM,CACzBW,EAAKX,CAAC,EAAIa,EAAM,OAChB,QAAWN,KAAMO,EAAK,QACpBD,EAAM,KAAKP,EAAQC,CAAE,CAAC,EAExBK,EAAGZ,CAAC,EAAIa,EAAM,MAChB,CAAC,EACM,CACL,MAAAH,EACA,KAAAC,EACA,GAAAC,EACA,MAAO,WAAW,KAAKC,CAAK,EAC5B,QAAS,WAAW,KAAKR,CAAO,EAChC,MAAAV,EACA,UAAWG,GAAkBC,CAAK,CACpC,CACF,CACA,SAASgB,GAAYC,EAAQpB,EAAeqB,EAAQ,CAClD,GAAM,CAAE,MAAO,EAAG,MAAOC,CAAE,EAAIF,EACzBG,EAAO,CAAC,EACd,QAASnB,EAAI,EAAGA,EAAIkB,EAAE,MAAM,OAAQlB,IAC9BkB,EAAE,QAAQlB,EAAI,CAAC,EAAIkB,EAAE,QAAQlB,CAAC,GAChCmB,EAAK,KAAKnB,CAAC,EAGf,IAAMU,EAAQS,EAAK,IAAKnB,GAAMoB,GAAUF,EAAGlB,CAAC,CAAC,EACvCH,EAA2B,IAAI,IACrC,QAASW,EAAI,EAAGA,EAAI,EAAE,QAAQ,OAAQA,IAChC,EAAE,KAAKA,CAAC,GAAK,GAAK,EAAE,MAAMA,CAAC,IAAM,GACnCX,EAAS,IAAI,EAAE,SAAS,EAAE,KAAKW,CAAC,CAAC,CAAC,EAGtC,MAAO,CACL,MAAAE,EACA,KAAM,WAAW,KAAKS,EAAOnB,GAAMkB,EAAE,QAAQlB,CAAC,CAAC,EAC/C,GAAI,WAAW,KAAKmB,EAAOnB,GAAMkB,EAAE,QAAQlB,EAAI,CAAC,CAAC,EACjD,MAAOkB,EAAE,MACT,QAAS,EAAE,QAGX,MAAOD,EAASI,GAAaL,CAAM,EAAI,EAAE,MACzC,UAAWtB,GACTgB,EAAM,IAAKY,GAAMrB,GAAWqB,EAAE,IAAI,EAAE,IAAI,EACxC1B,EACAC,CACF,CACF,CACF,CACA,SAAS0B,GAAST,EAAM,CACtB,OAAOA,EAAK,QAAUU,GAAYV,EAAK,IAAI,CAC7C,CACA,SAASW,GAAQX,EAAM,CACrB,OAAOA,EAAK,YAAc,QAAUA,EAAK,SAAW,OAAS,GAAGA,EAAK,MAAM,IAAIA,EAAK,SAAS,GAAKS,GAAST,CAAI,CACjH,CACA,IAAIY,GAAU,KAAM,CAClB,YAAYC,EAAO,CACjB,KAAK,QAAU,CAAC,CAAC,EACjB,KAAK,OAAS,MAAM,KAAK,CAAE,OAAQA,CAAM,EAAG,IAAM,CAAC,CAAC,CACtD,CACA,IAAI,QAAS,CACX,OAAO,KAAK,OAAO,CAAC,EAAE,MACxB,CACA,KAAKC,EAAGC,EAAGC,EAAGC,EAAGC,EAAG,CAClB,IAAMC,EAAI,KAAK,OACfA,EAAE,CAAC,EAAE,KAAKL,CAAC,EACXK,EAAE,CAAC,EAAE,KAAKJ,CAAC,EACXI,EAAE,CAAC,EAAE,KAAKH,CAAC,EACXG,EAAE,CAAC,EAAE,KAAKF,CAAC,EACPC,IAAM,QACRC,EAAE,CAAC,EAAE,KAAKD,CAAC,CAEf,CACA,QAAS,CACP,KAAK,QAAQ,KAAK,KAAK,MAAM,CAC/B,CAEA,QAAQE,EAAOC,EAAM,CACnB,IAAMC,EAAU,IAAI,YAAYF,EAAM,OAAS,CAAC,EAChDA,EAAM,QAAQ,CAACG,EAAK7B,IAAM,CACxB4B,EAAQ5B,EAAI,CAAC,EAAI4B,EAAQ5B,CAAC,EAAI,KAAK,QAAQ6B,EAAM,CAAC,EAAI,KAAK,QAAQA,CAAG,CACxE,CAAC,EACD,IAAMC,EAAUH,EAAK,IAAI,CAACI,EAAG,IAAM,CACjC,IAAM5B,EAAO,KAAK,OAAO,CAAC,EACpB6B,EAAMD,EAAE,KAAK,MAAM,EACrBE,EAAK,EACT,QAAWJ,KAAOH,EAChB,QAASQ,EAAI,KAAK,QAAQL,CAAG,EAAGK,EAAI,KAAK,QAAQL,EAAM,CAAC,EAAGK,IACzDF,EAAIC,GAAI,EAAI9B,EAAK+B,CAAC,EAGtB,OAAOF,CACT,CAAC,EACD,MAAO,CAAE,QAAAJ,EAAS,QAAAE,CAAQ,CAC5B,CACF,EACIK,GAAWzC,GAAM,IAAI,aAAaA,CAAC,EACvC,SAAS0C,GAAYC,EAAQC,EAAQC,EAAI,CAAC,EAAG,CAC3C,GAAM,CACJ,MAAArC,EACA,KAAAC,EACA,GAAAC,EACA,MAAOoC,EACP,QAAA3C,EACA,MAAAV,EACA,UAAAsD,CACF,EAAI,UAAWJ,EAAS9B,GAAY8B,EAAQE,EAAE,cAAeA,EAAE,MAAM,EAAI5C,GAAY0C,CAAM,EACrFK,EAAW7C,EAAQ,OACnB8C,EAAY1C,GAASA,EAAOyC,EAAW7C,EAAQI,CAAI,EAAI,EACvD2C,EAAUpD,GAAMC,GAAWS,EAAMV,CAAC,EAAE,IAAI,EAAE,KAC1CqD,EAAWrD,GAAMU,EAAMV,CAAC,EAAE,MAC1BsD,GAAU,CAAC1B,EAAGC,KAAOwB,EAAQzB,CAAC,GAAK,IAAMyB,EAAQxB,CAAC,GAAK,GACvD0B,EAAW7C,EAAM,IAAI,CAAC8C,EAAGxD,IAAMA,CAAC,EAChCyD,EAAkBF,EAAS,OAAQvD,GAAMoD,EAAOpD,CAAC,IAAMiD,CAAS,EAAE,KAAKK,EAAO,EAC9EI,GAAQD,EAAgB,CAAC,EACzBE,GAASJ,EAAS,OAAQvD,GAAMoD,EAAOpD,CAAC,IAAMiD,CAAS,EACvDW,EAAQ,UAAWf,EAASA,EAAO,MAAQ,OACjD,GAAIa,KAAU,QAAUC,GAAO,SAAW,GAAK,CAACC,GAAO,MAAM,OAC3D,OAEF,IAAMC,GAAQC,GAAQH,GAAQP,CAAM,EAC9BW,EAAY,IAAI,aAAapE,EAAM,MAAM,EAAE,KAAK,OAAO,GAAG,EAC1DqE,EAAU,IAAI,aAAarE,EAAM,MAAM,EACvCsE,EAA2B,IAAI,IACjCC,EAAW,KACXC,EAAa,IACXC,EAAMtB,GAAUA,EAAO,IAAMA,EAAO,MAAQA,EAAS,OAC3D,QAAWuB,KAASZ,EAAiB,CACnC,IAAIa,EAAMjB,EAAQgB,CAAK,GAAK,EAC5B,QAASE,EAAI5D,EAAK0D,CAAK,EAAGG,EAAO5D,EAAGyD,CAAK,EAAGE,EAAIC,EAAMD,IAAK,CACzD,IAAM9D,EAAOuC,EAAIuB,CAAC,EACZE,EAAMtB,EAAS1C,CAAI,EACzB,GAAK,OAAO,MAAMsD,EAAUtD,CAAI,CAAC,EAQ/BsD,EAAUtD,CAAI,EAAI6D,EAClBN,EAAQvD,CAAI,EAAI6D,EAAMG,EAClBL,IACEE,EAAMG,GAAOL,EAAI,QACnBF,EAAW,KAAK,IAAIA,EAAUI,EAAMG,CAAG,GAErCH,GAAOF,EAAI,MACbD,EAAa,KAAK,IAAIA,EAAYG,CAAG,QAfP,CAClC,IAAMI,EAAST,EAAS,IAAIxD,CAAI,EAC5BiE,EACFA,EAAO,KAAKJ,CAAG,EAEfL,EAAS,IAAIxD,EAAM,CAACsD,EAAUtD,CAAI,EAAG6D,CAAG,CAAC,CAE7C,CAYAA,GAAOG,CACT,CACF,CACA,IAAME,GAAUP,IAAQ,QAAUF,EAAW,MAAaC,EAAa,IACjES,EAAO,IAAIlD,GAAQ,CAAC,EACpBmD,GAAS,CAAC,EACVC,GAA6B,IAAI,IACjCC,GAAWC,GAAW,CAC1B,GAAI,CAACA,EACH,MAAO,GAET,IAAMC,EAAM,GAAGD,EAAO,OAAO,IAAIA,EAAO,KAAK,GACzCxE,EAAIsE,GAAW,IAAIG,CAAG,EAC1B,OAAIzE,IAAM,SACRA,EAAIqE,GAAO,OACXC,GAAW,IAAIG,EAAKzE,CAAC,EACrBqE,GAAO,KAAKG,CAAM,GAEbxE,CACT,EACMS,EAAS8B,EAAE,OAAS,IAAIrB,GAAQ,CAAC,EAAI,OACvCb,EAAQ,IAAI,WAAW,CAAC,EACxBqE,EAAY,IAAI,aAAa,CAAC,EAC5BC,GAASC,GAAW,CACxB,IAAMC,EAAO3E,EAAM0E,EAAO,CAAC,CAAC,EACtBE,EAAU,CAAC,GAAGF,CAAM,EAAE,KAAK9B,EAAO,EACpCiC,EAAQD,EAAQ,OAAS,EACzBE,EAAgB,EACpB,QAAWnB,KAASiB,EAClBC,GAAS3E,EAAGyD,CAAK,EAAI1D,EAAK0D,CAAK,GAAK3D,EAAM2D,CAAK,EAAE,SAAW,EAAI,GAChEmB,GAAiB9E,EAAM2D,CAAK,EAAE,UAAU,OAAS,EAE/CkB,EAAQ1E,EAAM,SAChBA,EAAQ,IAAI,WAAW0E,EAAQ,CAAC,EAChCL,EAAY,IAAI,aAAaK,EAAQ,CAAC,GAExC,IAAIE,EAAS,EACTC,EAAW,GACXC,GACAC,GACEC,GAA0B,IAAI,IAChCC,GAAO,EACX,QAAWzB,KAASiB,EAAS,CAC3B,IAAMS,EAAS1C,EAAQgB,CAAK,EACtB2B,EAAOD,IAAW,QAAUJ,KAAQ,OAAS,EAAII,EAASJ,IAC5DI,IAAW,QAAUC,EAAO,KAC9BN,EAAW,IAETM,EAAO,GAAKtF,EAAMkF,EAAQ,EAAE,WAC9BE,IAAQE,GAEV,IAAMC,EAAU,KAAK,IAAIH,GAAM,KAAK,IAAIE,EAAM,CAAC,CAAC,EAChDF,IAAQG,EACR,IAAMC,EAAMF,EAAOC,EACfC,EAAM,IACRL,GAAQ,IACNJ,EACAU,GACED,EACAN,KAAa,OAAS,OAASlF,EAAMkF,EAAQ,EAAE,MAC/ClF,EAAM2D,CAAK,EAAE,MACf,CACF,EACAxD,EAAM4E,CAAM,EAAI,CAACS,EACjBhB,EAAUO,GAAQ,EAAIE,IAExB,IAAIrB,EAAMyB,GAAU,EACdK,EAAW1F,EAAM2D,CAAK,EAAE,SAC9B,QAASE,EAAI5D,EAAK0D,CAAK,EAAGgC,EAAQzF,EAAGyD,CAAK,EAAGE,EAAI8B,EAAO9B,IAAK,CAC3D,IAAM9D,EAAOuC,EAAIuB,CAAC,EACZ+B,EAAMF,EAAWA,EAAS,IAAM9B,GAAOyB,GAAU,IAAM5C,EAAS1C,CAAI,EAAI,EAC1E6F,EAAM,GAAK/B,IAAM8B,EAAQ,GAAK9B,EAAI5D,EAAK0D,CAAK,IAC9CwB,GAAQ,IAAIJ,EAAQ,CAAC,CAAE,GAAIa,EAAK,MAAO,UAAW,CAAC,CAAC,EACpDzF,EAAM4E,CAAM,EAAI,CAACa,EACjBpB,EAAUO,GAAQ,EAAInB,EACtBA,GAAOgC,GAETzF,EAAM4E,CAAM,EAAIhF,EAChByE,EAAUO,GAAQ,EAAInB,EACtBA,GAAOnB,EAAS1C,CAAI,CACtB,CACAkF,GAAMI,IAAW,OAAS,OAASzB,EACnCsB,GAAWvB,CACb,CACA,IAAMkC,GAAe/F,GAAMA,GAAK,GAAKA,EAAIiF,GAAU5E,EAAML,CAAC,GAAK,GAAK,CAAC,OAAO,MAAMuD,EAAUlD,EAAML,CAAC,CAAC,CAAC,EAC/FgG,GAAWhG,GAAM,CACrB,IAAMD,EAAKM,EAAML,CAAC,EAClB,OAAO0E,EAAU1E,CAAC,GAAKD,EAAK,EAAI,CAACA,EAAK4C,EAAS5C,CAAE,EACnD,EACMkG,GAAc,CAACC,EAAIC,IAAO,CAC9B,IAAMC,EAAQF,GAAM,EAAIA,EAAKC,EACzBE,EAAO,GACX,QAAS9E,EAAI,EAAG8E,EAAO,GAAK9E,EAAI0D,EAAQ1D,IACtC8E,EAAO,CAACD,EAAQ7E,EAAG6E,EAAQ7E,CAAC,EAAE,KAAKwE,EAAW,GAAK,GAErD,GAAIM,EAAO,EACT,OAEF,IAAMC,EAAUD,EAAOD,GAAU7C,EAAUlD,EAAMgG,CAAI,CAAC,EAAI9C,EAAUlD,EAAM+F,CAAK,CAAC,EAC1EG,EAAQD,KAAaF,IAAUF,GAC/BM,EAAQD,EAAQtB,EAAS,EAAI,EAC7BwB,EAAaV,GAAYS,CAAK,EASpC,MAAO,CACL,KATY,CACZ,WAAAC,EACA,QAASA,EAAa,KAAK,IACzB,EACA7C,EAAI,MAAQJ,EAAQnD,EAAMmG,CAAK,CAAC,EAChCjD,EAAUlD,EAAMmG,CAAK,CAAC,EAAI5C,EAAI,GAChC,EAAI,CACN,EAGE,GAAI2C,EAAQH,EAAQ,EAAI,EACxB,GAAIG,EAAQtB,EAASmB,EACrB,SAAU,CAACE,EACX,UAAWA,EAAUC,EAAQP,GAAQI,CAAK,EAAI1B,EAAU,CAAC,EAAI6B,EAAQP,GAAQf,EAAS,CAAC,EAAIP,EAAU0B,CAAK,CAC5G,CACF,EACIM,GAAK,EACLC,GAAK1B,EACL2B,GAAW,GACXC,GAAW,GACXC,GAAY,GACZC,GAAU,GACVC,GACAhD,GACEiD,GAAe,CAACC,EAAOpB,IAAQ,CAEnC,IAAMJ,EADQL,GAAQ,IAAI6B,CAAK,IACX,CAAC,EACrB,GAAIpB,GAAO,GAAKJ,GAAK,QAAU,WAC7B,MAAO,GAET,IAAMyB,EAAU,KAAK,IAAIrB,EAAKJ,EAAI,EAAE,EACpC,OAAAL,GAAQ,IACN6B,EACAxB,EAAI,GAAKyB,EAAU,CAAC,CAAE,GAAGzB,EAAK,GAAIA,EAAI,GAAKyB,CAAQ,CAAC,EAAI,CAAC,CAC3D,EACA9G,EAAM6G,CAAK,GAAKC,EACTA,CACT,EACIC,GAAW,EACXC,GAAY,EAChB,GAAIzD,GAAOO,GAAS,CAClB,IAAI+B,EAAK,GACLC,EAAK,GACLmB,EAAU,KACVC,EAAY,IAChB,QAASvH,EAAI,EAAGA,EAAIiF,EAAQjF,IAAK,CAC/B,IAAMD,EAAKM,EAAML,CAAC,EACdD,GAAM,GAAK,CAAC,OAAO,MAAMwD,EAAUxD,CAAE,CAAC,IACpCyD,EAAQzD,CAAE,GAAK6D,EAAI,OAASJ,EAAQzD,CAAE,EAAIuH,IAC5CA,EAAU9D,EAAQzD,CAAE,EACpBmG,EAAKlG,GAEHuD,EAAUxD,CAAE,GAAK6D,EAAI,KAAOL,EAAUxD,CAAE,EAAIwH,IAC9CA,EAAYhE,EAAUxD,CAAE,EACxBoG,EAAKnG,GAGX,CACA,GAAIkG,EAAK,GAAKC,EAAK,EAAG,CACpBU,GAAW,GACX,IAAMW,EAAStB,GAAM,GAAKC,GAAM,EAAIF,GAAYC,EAAIC,CAAE,EAAI,OACtDqB,IAED,CAAE,GAAAd,GAAI,GAAAC,GAAI,SAAAC,GAAU,UAAAI,GAAW,KAAAhD,EAAK,EAAIwD,EAE7C,KAAO,CACLd,GAAK,KAAK,IAAIR,EAAIC,CAAE,EAAI,EACxBQ,GAAK,KAAK,IAAIT,EAAIC,CAAE,EACpBS,GAAWV,EAAKC,EAChBW,GAAYZ,EACZa,GAAUZ,EACV,IAAMsB,EAASb,GAAW,GAAK,EAC/BQ,GAAWH,GAAaf,EAAKuB,EAAQ/D,EAAWF,EAAQnD,EAAM6F,CAAE,CAAC,CAAC,EAClEmB,GAAYJ,GACVd,EAAKsB,EACLlE,EAAUlD,EAAM8F,CAAE,CAAC,EAAIxC,CACzB,CACF,CACF,CACA,IAAM+D,GAAS7C,EAAK,QAAU8C,GAAYlI,GAAWoF,EAAK,IAAI,EAAE,IAAI,EAC9D+C,GAAO1C,GAAYD,IAAW,EAAI,OAAS+B,KAAc,OAAS,CAAE,OAAAU,GAAQ,MAAOV,GAAW,SAAUJ,EAAS,EAAIE,GAAY,EAAI,CAAE,OAAAY,GAAQ,MAAOhD,EAAU,CAAC,EAAG,SAAU,EAAM,EAAIoC,GAAYC,GAAU,CAClN,OAAAW,GACA,MAAO1B,GAAQc,EAAS,EAAIM,GAC5B,SAAU,EACZ,EAAI,CACF,OAAAM,GACA,MAAOhD,EAAUoC,EAAS,EAAIM,GAC9B,SAAU,EACZ,EACIS,GAAM,EACNC,GAAiB,EACjBC,GAAQ,EACRC,GAAO,EACPC,EAAO,GACPC,GAAY,EACZC,EAAU,OAAO,IACjBC,GAAS,OAAO,IACdC,GAAWtI,GAAO,CACtB,IAAMmE,EAAST,EAAS,IAAI1D,CAAE,EAC9B,GAAI,CAACmE,GAAU,OAAO,MAAMkE,EAAM,EAChC,OAAO7E,EAAUxD,CAAE,EAErB,IAAMkE,EAAMtB,EAAS5C,CAAE,EACnBuI,EAAOpE,EAAO,CAAC,EACfqE,EAAU,IACd,QAAWhD,KAAUrB,EAAQ,CAC3B,IAAMwB,EAAM,KAAK,IACf,KAAK,IAAIH,EAAS6C,EAAM,EACxB,KAAK,IAAI7C,EAAStB,EAAMmE,EAAM,CAChC,EACI1C,EAAM6C,IACRD,EAAO/C,EACPgD,EAAU7C,EAEd,CACA,OAAO4C,CACT,EACM,CAAC,CAAEE,GAAOC,GAAQC,EAAQ,EAAItE,EAAK,OACzC,QAASlC,EAAIwE,GAAIxE,EAAIyE,GAAIzE,IAAK,CAC5B,IAAMtC,EAAQgH,GAAWD,GAAK,GAAKzE,EAAIwE,IAAMxE,EACvCnC,EAAKM,EAAMT,CAAK,EAChB+I,EAAQtD,GAAQ,IAAIzF,CAAK,EAC/B,GAAI+I,EAAO,CACT,QAAWC,KAAQhC,GAAW,CAAC,GAAG+B,CAAK,EAAE,QAAQ,EAAIA,EACnDvE,EAAK,KACHyD,GACAe,EAAK,GACL,OAAO,IACP/J,GAAUG,GAAW4J,EAAK,KAAK,EAC/BrE,GAAQqE,EAAK,KAAK,CACpB,EACAf,IAAOe,EAAK,GAEdX,EAAO7D,EAAK,OAAS,EACrB8D,GAAYrJ,GACZsJ,EAAU,OAAO,IACjBJ,IAAS,CAAChI,EACViI,GAAO,EACP,QACF,CACA,IAAM/D,EAAMtB,EAAS5C,CAAE,EACjBkC,EAAKoG,GAAQtI,CAAE,EACf8I,EAAK,CAAC,OAAO,MAAM5G,CAAE,EAC3BxB,GAAQ,KAAKV,EAAI8H,GAAK5D,EAAK4E,EAAK,EAAI,CAAC,EACrC,IAAMC,EAASb,GAAQ,GAAK,CAAC,OAAO,MAAME,CAAO,EAC3C7B,EAAUuC,GAAMC,GAAUd,IAAQ,GAAKG,GAAWK,GAAMP,CAAI,GAAK,KAAOhG,EACxE8G,EAAOF,GAAMC,GAAUd,IAAQ,GAAK/F,EAAKgC,IAAQkE,EACnD,CAACU,GAAMZ,GAAQ,GAAK,EAAEC,IAAavJ,GAAmBE,KACxD2J,GAAMP,CAAI,GAAKhE,EACNqC,GAAWyC,GACpBP,GAAMP,CAAI,GAAKhE,EACVqC,IACH6B,EAAUlG,EACVwG,GAAOR,CAAI,EAAIhG,EACfiG,IAAatJ,GACb8J,GAAST,CAAI,EAAIC,IAEnBF,GAAO1B,EAAU,EAAI,KAErB4B,GAAYW,EAAKlK,GAAmB,EACpCwJ,EAAUU,EAAK5G,EAAK,OAAO,IAC3BmC,EAAK,KAAKyD,GAAK5D,EAAKkE,EAASD,GAAW,EAAE,EAC1CD,EAAO7D,EAAK,OAAS,EACrB4D,GAAO,GAETH,IAAO5D,EACH4E,EACFT,GAASJ,GAAO,EAAI/F,EAAKA,EAAKgC,EAE9B6D,IAAkB7D,CAEtB,CACA,OAAAG,EAAK,OAAO,EACZ3D,GAAQ,OAAO,EACR,CACL,KAAMoE,EAAK,KACX,MAAO5D,GAAQ4D,CAAI,EACnB,OAAQ9D,GAAS8D,CAAI,EACrB,UAAWA,EAAK,UAChB,GAAIgD,GACJ,eAAAC,GACA,MAAAC,GACA,SAAAlB,GACA,KAAA7C,GACA,KAAA4D,GACA,GAAG5C,EAAgB,EAAI,CAAE,cAAAA,CAAc,EAAI,CAAC,EAC5C,GAAGoC,GAAWC,GAAY,EAAI,CAAE,UAAW,EAAK,EAAI,CAAC,CACvD,CACF,EACM2B,GAAY,CAACC,EAAM1D,EAAQJ,IAAQ,CACvC,IAAM+D,EAAQtF,EAAM,KAAK,IAAI2B,EAAQ3B,EAAI,KAAK,EAAI2B,EAC5CsC,GAAOjE,EAAM,KAAK,IAAIuB,EAAKvB,EAAI,GAAG,EAAIuB,GAAO+D,EACnD9E,EAAK,KACH8E,GAAStF,EAAMA,EAAI,MAAQ2B,GAC3BsC,EACA,OAAO,IACPhJ,GAAUG,GAAW,SAAS,EAC9B,EACF,EACAoF,EAAK,OAAO,EACZ3D,GAAQ,OAAO,EACf,IAAMoE,EAAO,CAAE,KAAAoE,EAAM,GAAGE,GAAYF,CAAI,CAAE,EAC1C,MAAO,CACL,KAAAA,EACA,MAAOhI,GAAQ4D,CAAI,EACnB,OAAQ9D,GAAS8D,CAAI,EACrB,UAAWA,EAAK,UAChB,GAAI,EACJ,eAAgB,EAChB,MAAOgD,EACP,SAAU,GACV,KAAM,OACN,KAAM,MACR,CACF,EACMuB,GAAezE,GAAM1B,CAAe,EACpCoG,EAAO,CAAC,GAAGhG,GAAM,OAAO,CAAC,EAAE,IAAI,CAACuB,EAAQ5E,KAAO,CACnD,KAAM2E,GAAMC,CAAM,EAClB,IAAK5E,EAAI,CACX,EAAE,EACIsJ,GAAQ,IAAI,IAAIjG,GAAM,KAAK,CAAC,EAClCD,GAAO,MAAM,QAAQ,CAAC6F,EAAM/G,IAAM,CAChC,IAAMwF,EAASjI,GAAWwJ,CAAI,EAAE,KAC3BK,GAAM,IAAI5B,CAAM,IACnB4B,GAAM,IAAI5B,CAAM,EAChB2B,EAAK,KAAK,CACR,KAAML,GAAUtB,EAAQtE,EAAM,OAAOlB,CAAC,EAAGkB,EAAM,KAAKlB,CAAC,CAAC,EACtD,IAAKmH,EAAK,OAAS,CACrB,CAAC,EAEL,CAAC,EACD,IAAME,EAAQ,CAACH,GAAc,GAAGC,EAAK,IAAKG,GAAMA,EAAE,IAAI,CAAC,EACvD,GAAI,IAAI,IAAID,EAAM,IAAKxH,GAAMA,EAAE,KAAK,CAAC,EAAE,KAAOwH,EAAM,OAClD,QAAWE,KAAQF,EACjBE,EAAK,MAAQC,GAAeD,EAAK,IAAI,GAAKA,EAAK,MAGnDJ,EAAK,KACH,CAACjI,EAAGC,IAAM,OAAOA,EAAE,KAAK,QAAQ,EAAI,OAAOD,EAAE,KAAK,QAAQ,GAAKC,EAAE,KAAK,GAAKD,EAAE,KAAK,IAAMA,EAAE,KAAK,MAAM,cAAcC,EAAE,KAAK,KAAK,CACjI,EACA,IAAMK,EAAQ,CAAC,EAAG,GAAG2H,EAAK,IAAKG,GAAMA,EAAE,GAAG,CAAC,EACrC,CAAE,QAAA5H,EAAS,QAAAE,CAAQ,EAAIsC,EAAK,QAAQ1C,EAAO,CAC/CS,GACAA,GACAA,GACCzC,GAAM,IAAI,WAAWA,CAAC,EACtBA,GAAM,IAAI,WAAWA,CAAC,CACzB,CAAC,EACK,CAACiK,EAAOC,EAAIC,GAAgBC,GAAOC,EAAK,EAAIjI,EAClD,MAAO,CACL,OAAQ8B,EAAMA,EAAI,MAAQf,EAAQK,EAAK,GAAK,EAC5C,KAAM,CAACkG,GAAc,GAAGC,EAAK,IAAKG,GAAMA,EAAE,IAAI,CAAC,EAC/C,QAAA5H,EACA,MAAA+H,EACA,GAAAC,EACA,eAAAC,GACA,MAAAC,GACA,MAAAC,GACA,OAAA1F,GACA,OAAQ5D,GAAUuJ,GAAavJ,EAAQiB,EAAOvC,CAAK,CACrD,CACF,CACA,SAAS6K,GAAavJ,EAAQiB,EAAOvC,EAAO,CAC1C,GAAM,CAAE,QAAAyC,EAAS,QAAAE,CAAQ,EAAIrB,EAAO,QAAQiB,EAAO,CAChDhC,GAAM,IAAI,WAAWA,CAAC,EACvByC,GACAA,GACCzC,GAAM,IAAI,WAAWA,CAAC,CACzB,CAAC,EACK,CAACO,EAAM0J,EAAOC,EAAI7D,CAAW,EAAIjE,EACvC,MAAO,CAAE,QAAAF,EAAS,KAAA3B,EAAM,MAAA0J,EAAO,GAAAC,EAAI,YAAA7D,EAAa,MAAA5G,CAAM,CACxD,CACA,SAAS8K,GAAM,EAAG/H,EAAG,CACnB,IAAMgI,EAAI,EAAE,MAAMhI,CAAC,EACbiI,EAAM,CACV,MAAO,EAAE,MAAMjI,CAAC,EAChB,GAAI,EAAE,GAAGA,CAAC,EACV,aAAcgI,EAAIvL,MAAsB,CAC1C,EACA,GAAIuL,EAAIrL,GAAS,CACfsL,EAAI,IAAM,GACV,IAAMlL,EAAQH,GAAWoL,GAAKnL,GAAc,CAAC,EACzCE,IACFkL,EAAI,MAAQlL,GAEd,IAAM8K,EAAQ,EAAE,OAAO,EAAE,MAAM7H,CAAC,CAAC,EAC7B6H,IACFI,EAAI,MAAQJ,EAEhB,MACEI,EAAI,eAAiB,OAAO,MAAM,EAAE,eAAejI,CAAC,CAAC,EAAI,OAAS,EAAE,eAAeA,CAAC,EAEtF,OAAIgI,EAAItL,KACNuL,EAAI,SAAW,IAEVA,CACT,CACA,SAASC,GAAS3I,EAAGI,EAAK,CACxB,IAAMG,EAAM,CAAC,EACb,QAASE,EAAIT,EAAE,QAAQI,CAAG,EAAGK,EAAIT,EAAE,QAAQI,EAAM,CAAC,EAAGK,IACnDF,EAAI,KAAK,CACP,KAAMP,EAAE,MAAMA,EAAE,KAAKS,CAAC,CAAC,EACvB,MAAOT,EAAE,MAAMS,CAAC,EAChB,GAAIT,EAAE,GAAGS,CAAC,EACV,YAAaT,EAAE,YAAYS,CAAC,IAAM,CACpC,CAAC,EAEH,OAAOF,CACT,CACA,SAASqI,GAAW,EAAGC,EAAM,CAC3B,IAAMjB,EAAO,EAAE,KAAK,IAAI,CAACI,EAAMzJ,IAAM,CACnC,IAAMoE,EAAO,CAAC,EACd,QAASlC,EAAI,EAAE,QAAQlC,CAAC,EAAGkC,EAAI,EAAE,QAAQlC,EAAI,CAAC,EAAGkC,IAC/CkC,EAAK,KAAK6F,GAAM,EAAG/H,CAAC,CAAC,EAEvB,MAAO,CACL,GAAGuH,EACH,KAAArF,EACA,OAAQ,EAAE,QAAUgG,GAAS,EAAE,OAAQpK,CAAC,CAC1C,CACF,CAAC,EACD,MAAO,CAAE,OAAQ,EAAE,OAAQ,KAAAsK,EAAM,UAAWjB,EAAK,CAAC,EAAG,KAAMA,EAAK,MAAM,CAAC,CAAE,CAC3E",
6
+ "names": ["START_STOP_TAG", "END_STOP_TAG", "STOP_KINDS", "GAP_CAUSE_TEXT", "OUTSIDE_TEXT", "gapParts", "bp", "after", "before", "left", "right", "rest", "lead", "trail", "elsewhere", "s", "part", "stopAt", "table", "i", "ref", "stopOf", "kind", "trimmed", "chunk", "cut", "parseStopTag", "value", "kind", "fields", "bp", "trimmed", "chunk", "field", "at", "stopOf", "stopFields", "before", "after", "walkStopFields", "tags", "START_STOP_TAG", "END_STOP_TAG", "StopColumns", "stop", "STOP_KINDS", "chunk", "ref", "pLineName", "name", "start", "end", "tablePath", "w", "p", "walkName", "fields", "panSNFields", "steps", "abridged", "stopFields", "stopAt", "namesByList", "lists", "names", "listCount", "pathNames", "starts", "list", "i", "fill", "grouped", "listed", "_", "out", "k", "tableNodeIds", "n", "l", "traversals", "canonical", "claim", "node", "reversed", "stepCount", "s", "segment", "graphFromTables", "count", "declared", "drawnWalks", "ids", "nodes", "ref", "edges", "neighbours", "pairList", "a", "b", "near", "j", "addPair", "edgeLists", "adjacency", "adjacentNode", "adjacentList", "listOf", "nameIndex", "crossedList", "crossedName", "crossings", "lastWalk", "paths", "anchorPaths", "totalSteps", "visitPath", "visitStart", "visitReversed", "visitOrder", "blocks", "pathSamples", "edgeNameIndex", "edgeNames", "head", "pathName", "visitName", "named", "panSNSample", "edgeNamed", "visitSample", "first", "nodeIds", "pos", "prev", "at", "listNames", "edge", "walked", "PathVisits", "RUN_ON_REFERENCE", "RUN_REVERSED", "RUN_GAP", "GAP_CAUSES", "CAUSE_SHIFT", "causeFlags", "cause", "referenceOf", "names", "referencePath", "rankZero", "referenceWalkName", "graph", "p", "pathOrigin", "n", "graphPieces", "index", "lengths", "indexOf", "id", "i", "node", "heads", "from", "to", "steps", "path", "tablePieces", "tables", "visits", "w", "kept", "tablePath", "tableNodeIds", "h", "sampleOf", "panSNSample", "labelOf", "Columns", "width", "a", "b", "c", "d", "e", "v", "order", "make", "offsets", "row", "columns", "m", "out", "at", "k", "float64", "walkRowRuns", "source", "region", "o", "all", "reference", "declared", "lengthOf", "nameOf", "startOf", "byStart", "pieceIds", "_", "referencePieces", "first", "others", "skips", "walks", "groupBy", "spanStart", "spanEnd", "revisits", "flankEnd", "flankStart", "cut", "piece", "pos", "s", "stop", "len", "starts", "flanked", "runs", "chunks", "chunkIndex", "chunkOf", "chunk2", "key", "stepStart", "rowOf", "pieces", "head", "ordered", "count", "abridgedSteps", "length", "unplaced", "end", "previous", "partsAt", "owed", "start2", "jump", "covered", "gap", "gapParts", "abridged", "stop2", "bp3", "onReference", "stepEnd", "partialSide", "i0", "i1", "flank", "near", "forward", "after", "last2", "contigEnds", "lo", "hi", "backward", "complete", "flankFrom", "flankTo", "axisStart", "trimAbridged", "inner", "trimmed", "leftTrim", "rightTrim", "bestEnd", "bestStart", "inside", "inward", "contig", "panSNContig", "axis", "bp2", "offReferenceBp", "gapBp", "step", "last", "lastFlags", "lastRef", "cursor", "placeOf", "best", "bestGap", "runBp", "runRef", "runFlags", "parts", "part", "on", "placed", "back", "skipRowOf", "name", "from2", "panSNFields", "referenceRow", "rows", "drawn", "metas", "r", "meta", "panSNHaplotype", "start", "bp", "referenceStart", "flags", "chunk", "visitColumns", "runAt", "f", "run", "visitsOf", "walkRowsOf", "unit"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{l as o}from"./chunk-CZI7IP5S.js";function u(a,r,e){return e?{...a,walkRowRuns:o(a,r)}:a}export{u as a};
2
+ //# sourceMappingURL=chunk-HAAABGE7.js.map
@@ -1,2 +1,2 @@
1
- import{a as p}from"./chunk-5RHNR3TH.js";function b(t,s,e){let n=t.get(s);n?n.push(e):t.set(s,[e])}function F(t,s,e){let n=t.get(s);n?n.add(e):t.set(s,new Set([e]))}function m(t,s){let e=new Map;for(let n of t)b(e,s(n),n);return e}function g(t,s){let e=0,n=t;for(;e<n;){let r=e+n>>1;s(r)?e=r+1:n=r}return e}var l=0;function _(t){return t.stable!==void 0}function w(t){return t.stable?.rank===l}function G(t){return t.stable!==void 0&&t.stable.rank>l}function U(t){return t.nodes.filter(w)}function C(t,s){return t.stable.start<s.end&&t.stable.start+t.length>s.start}function K(t){let s={};for(let e of t)s[e.id]=[{x:e.stable.start,y:0},{x:e.stable.start+e.length,y:0}];return s}function T(t,s){return g(t.length,e=>t[e].stable.start<s)}function y(t){let s=1/0,e=-1/0;for(let n of t)s=Math.min(s,n.stable.start),e=Math.max(e,n.stable.start+n.length);return e-s}function $(t,s){return s&&s.end>s.start?s.end-s.start:y(t)}var A=class{constructor(t){this.segments=t.segments,this.offsets=t.offsets,this.path=t.path,this.start=t.start,this.reversed=t.reversed,this.paths=t.paths,this.samples=t.samples,this.slots=new Map(this.segments.map((s,e)=>[s,e]))}static from(t){let s=new u;for(let[e,n]of t){s.declare(e);for(let r of n)s.add(e,r.path,r.sample,r.start,r.strand==="-")}return s.build()}get size(){return this.segments.length}slot(t){return this.slots.get(t)??-1}pathIndex(t){return this.paths.indexOf(t)}firstBy(t,s){for(let e=this.offsets[t];e<this.offsets[t+1];e++)if(this.path[e]===s)return e;return-1}replay(){let t=new Map;return(s,e)=>{if(s<0||e<0)return-1;let n=s*this.paths.length+e,r=this.offsets[s+1],a=t.get(n)??this.offsets[s];for(;a<r&&this.path[a]!==e;)a++;return t.set(n,a+1),a<r?a:-1}}filter(t,s=()=>!0){let e=this.paths.map(t),n=new u;return this.segments.forEach((r,a)=>{if(!s(r))return;let h=n.declare(r);for(let o=this.offsets[a];o<this.offsets[a+1];o++){let i=this.path[o];e[i]&&n.addAt(h,n.pathOf(this.paths[i],this.samples[i]),this.start[o],this.reversed[o]===1)}}),n.build()}strand(t){return this.reversed[t]?"-":"+"}visit(t){let s=this.path[t];return{path:this.paths[s],sample:this.samples[s],start:this.start[t],strand:this.strand(t)}}visitsAt(t){let s=[];for(let e=this.offsets[t];e<this.offsets[t+1];e++)s.push(this.visit(e));return s}get(t){let s=this.slot(t);return s<0?void 0:this.visitsAt(s)}has(t){return this.slots.has(t)}keys(){return this.segments[Symbol.iterator]()}*values(){for(let t=0;t<this.segments.length;t++)yield this.visitsAt(t)}*entries(){for(let t=0;t<this.segments.length;t++)yield[this.segments[t],this.visitsAt(t)]}[Symbol.iterator](){return this.entries()}},d=class{constructor(t){this.data=t,this.length=0}push(t){if(this.length===this.data.length){let s=new this.data.constructor(this.data.length*2);s.set(this.data),this.data=s}this.data[this.length++]=t}},u=class{constructor(){this.segments=[],this.slots=new Map,this.paths=[],this.samples=[],this.pathIndex=new Map,this.slot=new d(new Int32Array(1024)),this.path=new d(new Int32Array(1024)),this.start=new d(new Float64Array(1024)),this.reversed=new d(new Uint8Array(1024))}declare(t){let s=this.slots.get(t);return s===void 0&&(s=this.segments.length,this.slots.set(t,s),this.segments.push(t)),s}pathOf(t,s){let e=this.pathIndex.get(t);return e===void 0&&(e=this.paths.length,this.pathIndex.set(t,e),this.paths.push(t),this.samples.push(s)),e}add(t,s,e,n,r){this.addAt(this.declare(t),this.pathOf(s,e),n,r)}addAt(t,s,e,n){this.slot.push(t),this.path.push(s),this.start.push(e),this.reversed.push(n?1:0)}build(){let t=this.slot.length,s=this.segments.length,e=new Int32Array(s+1),n=this.slot.data;for(let i=0;i<t;i++)e[n[i]+1]++;for(let i=0;i<s;i++)e[i+1]+=e[i];let r=e.slice(0,s),a=new Int32Array(t),h=new Float64Array(t),o=new Uint8Array(t);for(let i=0;i<t;i++){let f=r[n[i]]++;a[f]=this.path.data[i],h[f]=this.start.data[i],o[f]=this.reversed.data[i]}return new A({segments:this.segments,offsets:e,path:a,start:h,reversed:o,paths:this.paths,samples:this.samples})}};var v=/:(\d+)-\d+$/,x=/^([^#]*#[^#]*#[^#[]*)#(\d+)(?:\[(\d+)-\d+\])?$/,I=/\[(\d+)-\d+\]$/;function E(t){let s=x.exec(t);if(s)return{name:s[1],start:+s[2]+ +(s[3]??0)};let e=v.exec(t)??I.exec(t);return e?{name:t.slice(0,e.index),start:+e[1]}:{name:t,start:0}}function Q(t,s){let e=[],n=new u;for(let r of t){let a=p(r.name),h=n.pathOf(r.name,a),o=r.start;for(let i of r.steps)n.addAt(n.declare(i.id),h,o,i.strand==="-"),o+=s(i.id);e.push({name:r.name,sample:a,start:r.start,length:o-r.start})}return{anchorPaths:e,pathVisits:n.build()}}function P(t,s){return t.find(n=>n.sample===s||n.name===s)??t[0]}var R=1;function N(t,s,e,n){let r=s.slot(t.name);if(r<0||s.offsets[r]===s.offsets[r+1])return t;let a=s.firstBy(r,e),h=a>=0?a:s.offsets[r];return{...t,stable:{refName:s.paths[s.path[h]],start:s.start[h],rank:a>=0?l:R,strand:s.strand(h)},samples:n(r)}}function O(t){let s=[...new Set(t.samples)].sort(),e=new Map(s.map((h,o)=>[h,o])),n=Int32Array.from(t.samples,h=>e.get(h)),r=new Uint8Array(s.length),a=new Int32Array(s.length);return h=>{let o=0;for(let f=t.offsets[h];f<t.offsets[h+1];f++){let c=n[t.path[f]];r[c]===0&&(r[c]=1,a[o++]=c)}let i;if(o===s.length)i=s,r.fill(0);else if(o*8<s.length){let f=a.subarray(0,o);f.forEach(c=>r[c]=0),i=Array.from(f.sort(),c=>s[c])}else{i=[];for(let f=0;f<s.length;f++)r[f]===1&&(r[f]=0,i.push(s[f]))}return i}}function k(t,s){let{anchorPaths:e,pathVisits:n}=t,r=e&&n?P(e,s):void 0;if(!r||!e||!n)return t;let a=O(n),h=n.pathIndex(r.name);return{...t,nodes:t.nodes.map(o=>N(o,n,h,a)),anchoredBy:"paths",referencePath:r.name}}function Y(t,s){if(t.anchoredBy!=="tags")return k(t,s);let e=S(t);return e?{...t,referencePath:e}:t}function S(t){let s=t.nodes.find(e=>e.stable?.rank===0)?.stable?.refName;return s!==void 0&&t.anchorPaths?.some(e=>e.name===s)?s:void 0}function Z(t,s){if(!t.anchorPaths)return;let e=new Map(t.nodes.map(a=>[a.id,a.length])),n=(a,h=a.length)=>{let o=0;for(let i=0;i<h;i++)o+=e.get(a[i])??0;return o},r=m(t.paths??[],a=>E(a.name).name);return t.anchorPaths.map(a=>{let h=r.get(a.name),o=h?.length===1?h[0]:void 0,i=o&&s.get(o.name);return o&&i?{...a,start:a.start+n(o.nodeIds,i.first),length:n(i.nodeIds)}:a})}function tt(t){let{pathVisits:s}=t,e=new Map;return n=>{let r=e.get(n.id);if(!r){r=[];let a=s?s.slot(n.name):-1,h=a>=0?s.pathIndex(n.stable.refName):-1;if(h>=0)for(let o=s.offsets[a];o<s.offsets[a+1];o++)s.path[o]===h&&r.push(s.start[o]);r.length<2&&(r=[n.stable.start]),e.set(n.id,r)}return r}}export{b as a,F as b,m as c,g as d,l as e,_ as f,w as g,G as h,U as i,C as j,K as k,T as l,y as m,$ as n,A as o,d as p,u as q,E as r,Q as s,P as t,k as u,Y as v,Z as w,tt as x};
2
- //# sourceMappingURL=chunk-JMRW3IGK.js.map
1
+ import{a as u}from"./chunk-VKZALU57.js";function b(t,s,e){let n=t.get(s);n?n.push(e):t.set(s,[e])}function S(t,s,e){let n=t.get(s);n?n.add(e):t.set(s,new Set([e]))}function m(t,s){let e=new Map;for(let n of t)b(e,s(n),n);return e}function g(t,s){let e=0,n=t;for(;e<n;){let r=e+n>>1;s(r)?e=r+1:n=r}return e}var l=0;function _(t){return t.stable!==void 0}function w(t){return t.stable?.rank===l}function G(t){return t.stable!==void 0&&t.stable.rank>l}function U(t){return t.nodes.filter(w)}function C(t,s){return t.stable.start<s.end&&t.stable.start+t.length>s.start}function K(t){let s={};for(let e of t)s[e.id]=[{x:e.stable.start,y:0},{x:e.stable.start+e.length,y:0}];return s}function T(t,s){return g(t.length,e=>t[e].stable.start<s)}function y(t){let s=1/0,e=-1/0;for(let n of t)s=Math.min(s,n.stable.start),e=Math.max(e,n.stable.start+n.length);return e-s}function $(t,s){return s&&s.end>s.start?s.end-s.start:y(t)}var A=class{constructor(t){this.segments=t.segments,this.offsets=t.offsets,this.path=t.path,this.start=t.start,this.reversed=t.reversed,this.paths=t.paths,this.samples=t.samples,this.slots=new Map(this.segments.map((s,e)=>[s,e]))}static from(t){let s=new d;for(let[e,n]of t){s.declare(e);for(let r of n)s.add(e,r.path,r.sample,r.start,r.strand==="-")}return s.build()}get size(){return this.segments.length}slot(t){return this.slots.get(t)??-1}pathIndex(t){return this.paths.indexOf(t)}firstBy(t,s){for(let e=this.offsets[t];e<this.offsets[t+1];e++)if(this.path[e]===s)return e;return-1}firstByName(t){let s=this.offsets[t];for(let e=s+1;e<this.offsets[t+1];e++){let n=this.paths[this.path[e]],r=this.paths[this.path[s]];(n<r||n===r&&this.start[e]<this.start[s])&&(s=e)}return s}replay(){let t=new Map;return(s,e)=>{if(s<0||e<0)return-1;let n=s*this.paths.length+e,r=this.offsets[s+1],a=t.get(n)??this.offsets[s];for(;a<r&&this.path[a]!==e;)a++;return t.set(n,a+1),a<r?a:-1}}filter(t,s=()=>!0){let e=this.paths.map(t),n=new d;return this.segments.forEach((r,a)=>{if(!s(r))return;let h=n.declare(r);for(let o=this.offsets[a];o<this.offsets[a+1];o++){let i=this.path[o];e[i]&&n.addAt(h,n.pathOf(this.paths[i],this.samples[i]),this.start[o],this.reversed[o]===1)}}),n.build()}strand(t){return this.reversed[t]?"-":"+"}visit(t){let s=this.path[t];return{path:this.paths[s],sample:this.samples[s],start:this.start[t],strand:this.strand(t)}}visitsAt(t){let s=[];for(let e=this.offsets[t];e<this.offsets[t+1];e++)s.push(this.visit(e));return s}get(t){let s=this.slot(t);return s<0?void 0:this.visitsAt(s)}has(t){return this.slots.has(t)}keys(){return this.segments[Symbol.iterator]()}*values(){for(let t=0;t<this.segments.length;t++)yield this.visitsAt(t)}*entries(){for(let t=0;t<this.segments.length;t++)yield[this.segments[t],this.visitsAt(t)]}[Symbol.iterator](){return this.entries()}},p=class{constructor(t){this.data=t,this.length=0}push(t){if(this.length===this.data.length){let s=new this.data.constructor(this.data.length*2);s.set(this.data),this.data=s}this.data[this.length++]=t}},d=class{constructor(){this.segments=[],this.slots=new Map,this.paths=[],this.samples=[],this.pathIndex=new Map,this.slot=new p(new Int32Array(1024)),this.path=new p(new Int32Array(1024)),this.start=new p(new Float64Array(1024)),this.reversed=new p(new Uint8Array(1024))}declare(t){let s=this.slots.get(t);return s===void 0&&(s=this.segments.length,this.slots.set(t,s),this.segments.push(t)),s}pathOf(t,s){let e=this.pathIndex.get(t);return e===void 0&&(e=this.paths.length,this.pathIndex.set(t,e),this.paths.push(t),this.samples.push(s)),e}add(t,s,e,n,r){this.addAt(this.declare(t),this.pathOf(s,e),n,r)}addAt(t,s,e,n){this.slot.push(t),this.path.push(s),this.start.push(e),this.reversed.push(n?1:0)}build(){let t=this.slot.length,s=this.segments.length,e=new Int32Array(s+1),n=this.slot.data;for(let i=0;i<t;i++)e[n[i]+1]++;for(let i=0;i<s;i++)e[i+1]+=e[i];let r=e.slice(0,s),a=new Int32Array(t),h=new Float64Array(t),o=new Uint8Array(t);for(let i=0;i<t;i++){let f=r[n[i]]++;a[f]=this.path.data[i],h[f]=this.start.data[i],o[f]=this.reversed.data[i]}return new A({segments:this.segments,offsets:e,path:a,start:h,reversed:o,paths:this.paths,samples:this.samples})}};var v=/:(\d+)-\d+$/,x=/^([^#]*#[^#]*#[^#[]*)#(\d+)(?:\[(\d+)-\d+\])?$/,I=/\[(\d+)-\d+\]$/;function E(t){let s=x.exec(t);if(s)return{name:s[1],start:+s[2]+ +(s[3]??0)};let e=v.exec(t)??I.exec(t);return e?{name:t.slice(0,e.index),start:+e[1]}:{name:t,start:0}}function Q(t,s){let e=[],n=new d;for(let r of t){let a=u(r.name),h=n.pathOf(r.name,a),o=r.start;for(let i of r.steps)n.addAt(n.declare(i.id),h,o,i.strand==="-"),o+=s(i.id);e.push({name:r.name,sample:a,start:r.start,length:o-r.start})}return{anchorPaths:e,pathVisits:n.build()}}function P(t,s){return t.find(n=>n.sample===s||n.name===s)??t[0]}var R=1;function N(t,s,e,n){let r=s.slot(t.name);if(r<0||s.offsets[r]===s.offsets[r+1])return t;let a=s.firstBy(r,e),h=a>=0?a:s.firstByName(r);return{...t,stable:{refName:s.paths[s.path[h]],start:s.start[h],rank:a>=0?l:R,strand:s.strand(h)},samples:n(r)}}function O(t){let s=[...new Set(t.samples)].sort(),e=new Map(s.map((h,o)=>[h,o])),n=Int32Array.from(t.samples,h=>e.get(h)),r=new Uint8Array(s.length),a=new Int32Array(s.length);return h=>{let o=0;for(let f=t.offsets[h];f<t.offsets[h+1];f++){let c=n[t.path[f]];r[c]===0&&(r[c]=1,a[o++]=c)}let i;if(o===s.length)i=s,r.fill(0);else if(o*8<s.length){let f=a.subarray(0,o);f.forEach(c=>r[c]=0),i=Array.from(f.sort(),c=>s[c])}else{i=[];for(let f=0;f<s.length;f++)r[f]===1&&(r[f]=0,i.push(s[f]))}return i}}function k(t,s){let{anchorPaths:e,pathVisits:n}=t,r=e&&n?P(e,s):void 0;if(!r||!e||!n)return t;let a=O(n),h=n.pathIndex(r.name);return{...t,nodes:t.nodes.map(o=>N(o,n,h,a)),anchoredBy:"paths",referencePath:r.name}}function Y(t,s){if(t.anchoredBy!=="tags")return k(t,s);let e=B(t);return e?{...t,referencePath:e}:t}function B(t){let s=t.nodes.find(e=>e.stable?.rank===0)?.stable?.refName;return s!==void 0&&t.anchorPaths?.some(e=>e.name===s)?s:void 0}function Z(t,s){if(!t.anchorPaths)return;let e=new Map(t.nodes.map(a=>[a.id,a.length])),n=(a,h=a.length)=>{let o=0;for(let i=0;i<h;i++)o+=e.get(a[i])??0;return o},r=m(t.paths??[],a=>E(a.name).name);return t.anchorPaths.map(a=>{let h=r.get(a.name),o=h?.length===1?h[0]:void 0,i=o&&s.get(o.name);return o&&i?{...a,start:a.start+n(o.nodeIds,i.first),length:n(i.nodeIds)}:a})}function tt(t){let{pathVisits:s}=t,e=new Map;return n=>{let r=e.get(n.id);if(!r){r=[];let a=s?s.slot(n.name):-1,h=a>=0?s.pathIndex(n.stable.refName):-1;if(h>=0)for(let o=s.offsets[a];o<s.offsets[a+1];o++)s.path[o]===h&&r.push(s.start[o]);r.length<2&&(r=[n.stable.start]),e.set(n.id,r)}return r}}export{b as a,S as b,m as c,g as d,l as e,_ as f,w as g,G as h,U as i,C as j,K as k,T as l,y as m,$ as n,A as o,p,d as q,E as r,Q as s,P as t,k as u,Y as v,Z as w,tt as x};
2
+ //# sourceMappingURL=chunk-IK3MQ4ZJ.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BSOZW3FC.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-HOAIOEI7.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-RJWPJCIB.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BEUTROKU.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@12.1.1/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-BRH73RCH.js"],
4
+ "sourcesContent": ["// src/util/groups.ts\nfunction pushTo(map, key, value) {\n const list = map.get(key);\n if (list) {\n list.push(value);\n } else {\n map.set(key, [value]);\n }\n}\nfunction addTo(map, key, value) {\n const set = map.get(key);\n if (set) {\n set.add(value);\n } else {\n map.set(key, /* @__PURE__ */ new Set([value]));\n }\n}\nfunction groupBy(items, keyOf) {\n const groups = /* @__PURE__ */ new Map();\n for (const item of items) {\n pushTo(groups, keyOf(item), item);\n }\n return groups;\n}\n\nexport {\n pushTo,\n addTo,\n groupBy\n};\n", "// src/util/partitionPoint.ts\nfunction partitionPoint(n, pred) {\n let lo = 0;\n let hi = n;\n while (lo < hi) {\n const mid = lo + hi >> 1;\n if (pred(mid)) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n return lo;\n}\n\nexport {\n partitionPoint\n};\n", "import {\n partitionPoint\n} from \"./chunk-HOAIOEI7.js\";\n\n// src/anchoredNodes.ts\nvar REFERENCE_RANK = 0;\nfunction isAnchored(node) {\n return node.stable !== void 0;\n}\nfunction isBackbone(node) {\n return node.stable?.rank === REFERENCE_RANK;\n}\nfunction isOffReference(node) {\n return node.stable !== void 0 && node.stable.rank > REFERENCE_RANK;\n}\nfunction backboneNodes(graph) {\n return graph.nodes.filter(isBackbone);\n}\nfunction overlapsWindow(node, window) {\n return node.stable.start < window.end && node.stable.start + node.length > window.start;\n}\nfunction backbonePositions(backbone) {\n const positions = {};\n for (const node of backbone) {\n positions[node.id] = [\n { x: node.stable.start, y: 0 },\n { x: node.stable.start + node.length, y: 0 }\n ];\n }\n return positions;\n}\nfunction firstNodeAtOrAfter(nodes, bp) {\n return partitionPoint(nodes.length, (i) => nodes[i].stable.start < bp);\n}\nfunction backboneSpan(backbone) {\n let min = Infinity;\n let max = -Infinity;\n for (const node of backbone) {\n min = Math.min(min, node.stable.start);\n max = Math.max(max, node.stable.start + node.length);\n }\n return max - min;\n}\nfunction referenceSpan(backbone, region) {\n return region && region.end > region.start ? region.end - region.start : backboneSpan(backbone);\n}\n\nexport {\n REFERENCE_RANK,\n isAnchored,\n isBackbone,\n isOffReference,\n backboneNodes,\n overlapsWindow,\n backbonePositions,\n firstNodeAtOrAfter,\n backboneSpan,\n referenceSpan\n};\n", "// src/pathVisits.ts\nvar PathVisits = class {\n constructor(columns) {\n this.segments = columns.segments;\n this.offsets = columns.offsets;\n this.path = columns.path;\n this.start = columns.start;\n this.reversed = columns.reversed;\n this.paths = columns.paths;\n this.samples = columns.samples;\n this.slots = new Map(this.segments.map((s, i) => [s, i]));\n }\n static from(entries) {\n const builder = new PathVisitsBuilder();\n for (const [segment, visits] of entries) {\n builder.declare(segment);\n for (const v of visits) {\n builder.add(segment, v.path, v.sample, v.start, v.strand === \"-\");\n }\n }\n return builder.build();\n }\n get size() {\n return this.segments.length;\n }\n // the segment's index into `segments` and `offsets`, -1 when unvisited\n slot(segment) {\n return this.slots.get(segment) ?? -1;\n }\n pathIndex(path) {\n return this.paths.indexOf(path);\n }\n // the first of `slot`'s visits by path `p`, -1 for none\n firstBy(slot, p) {\n for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {\n if (this.path[i] === p) {\n return i;\n }\n }\n return -1;\n }\n // the visit of `slot` on the path first in name order, at its lowest offset\n // there: where gfa-to-tabix places a segment the reference doesn't visit, so\n // both place it alike whatever order the file lists its paths in\n firstByName(slot) {\n let best = this.offsets[slot];\n for (let i = best + 1; i < this.offsets[slot + 1]; i++) {\n const a = this.paths[this.path[i]];\n const b = this.paths[this.path[best]];\n if (a < b || a === b && this.start[i] < this.start[best]) {\n best = i;\n }\n }\n return best;\n }\n // Paths' steps replayed in walk order against their visits: the k-th call\n // for one path and segment answers that path's k-th visit there, -1 past\n // its last. A walk in pieces lists its pieces in path order, so replaying\n // the pieces in order reads each step's own visit.\n replay() {\n const cursor = /* @__PURE__ */ new Map();\n return (slot, p) => {\n if (slot < 0 || p < 0) {\n return -1;\n }\n const key = slot * this.paths.length + p;\n const end = this.offsets[slot + 1];\n let at = cursor.get(key) ?? this.offsets[slot];\n while (at < end && this.path[at] !== p) {\n at++;\n }\n cursor.set(key, at + 1);\n return at < end ? at : -1;\n };\n }\n // the visits of paths `keepPath` accepts, at segments `keepSegment` does\n filter(keepPath, keepSegment = () => true) {\n const kept = this.paths.map(keepPath);\n const builder = new PathVisitsBuilder();\n this.segments.forEach((segment, s) => {\n if (!keepSegment(segment)) {\n return;\n }\n const slot = builder.declare(segment);\n for (let i = this.offsets[s]; i < this.offsets[s + 1]; i++) {\n const p = this.path[i];\n if (kept[p]) {\n builder.addAt(\n slot,\n builder.pathOf(this.paths[p], this.samples[p]),\n this.start[i],\n this.reversed[i] === 1\n );\n }\n }\n });\n return builder.build();\n }\n strand(i) {\n return this.reversed[i] ? \"-\" : \"+\";\n }\n visit(i) {\n const p = this.path[i];\n return {\n path: this.paths[p],\n sample: this.samples[p],\n start: this.start[i],\n strand: this.strand(i)\n };\n }\n visitsAt(slot) {\n const out = [];\n for (let i = this.offsets[slot]; i < this.offsets[slot + 1]; i++) {\n out.push(this.visit(i));\n }\n return out;\n }\n get(segment) {\n const slot = this.slot(segment);\n return slot < 0 ? void 0 : this.visitsAt(slot);\n }\n has(segment) {\n return this.slots.has(segment);\n }\n keys() {\n return this.segments[Symbol.iterator]();\n }\n *values() {\n for (let s = 0; s < this.segments.length; s++) {\n yield this.visitsAt(s);\n }\n }\n *entries() {\n for (let s = 0; s < this.segments.length; s++) {\n yield [this.segments[s], this.visitsAt(s)];\n }\n }\n [Symbol.iterator]() {\n return this.entries();\n }\n};\nvar Column = class {\n constructor(data) {\n this.data = data;\n this.length = 0;\n }\n push(value) {\n if (this.length === this.data.length) {\n const grown = new this.data.constructor(\n this.data.length * 2\n );\n grown.set(this.data);\n this.data = grown;\n }\n this.data[this.length++] = value;\n }\n};\nvar PathVisitsBuilder = class {\n constructor() {\n this.segments = [];\n this.slots = /* @__PURE__ */ new Map();\n this.paths = [];\n this.samples = [];\n this.pathIndex = /* @__PURE__ */ new Map();\n this.slot = new Column(new Int32Array(1024));\n this.path = new Column(new Int32Array(1024));\n this.start = new Column(new Float64Array(1024));\n this.reversed = new Column(new Uint8Array(1024));\n }\n // a segment's place in iteration order, though it has no visits yet\n declare(segment) {\n let s = this.slots.get(segment);\n if (s === void 0) {\n s = this.segments.length;\n this.slots.set(segment, s);\n this.segments.push(segment);\n }\n return s;\n }\n // a path's index, so a caller adding many of its visits names it once\n pathOf(path, sample) {\n let p = this.pathIndex.get(path);\n if (p === void 0) {\n p = this.paths.length;\n this.pathIndex.set(path, p);\n this.paths.push(path);\n this.samples.push(sample);\n }\n return p;\n }\n add(segment, path, sample, start, reversed) {\n this.addAt(\n this.declare(segment),\n this.pathOf(path, sample),\n start,\n reversed\n );\n }\n addAt(slot, path, start, reversed) {\n this.slot.push(slot);\n this.path.push(path);\n this.start.push(start);\n this.reversed.push(reversed ? 1 : 0);\n }\n build() {\n const n = this.slot.length;\n const segments = this.segments.length;\n const offsets = new Int32Array(segments + 1);\n const slot = this.slot.data;\n for (let i = 0; i < n; i++) {\n offsets[slot[i] + 1]++;\n }\n for (let s = 0; s < segments; s++) {\n offsets[s + 1] += offsets[s];\n }\n const fill = offsets.slice(0, segments);\n const path = new Int32Array(n);\n const start = new Float64Array(n);\n const reversed = new Uint8Array(n);\n for (let i = 0; i < n; i++) {\n const at = fill[slot[i]]++;\n path[at] = this.path.data[i];\n start[at] = this.start.data[i];\n reversed[at] = this.reversed.data[i];\n }\n return new PathVisits({\n segments: this.segments,\n offsets,\n path,\n start,\n reversed,\n paths: this.paths,\n samples: this.samples\n });\n }\n};\n\nexport {\n PathVisits,\n Column,\n PathVisitsBuilder\n};\n", "import {\n PathVisitsBuilder\n} from \"./chunk-BEUTROKU.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n REFERENCE_RANK\n} from \"./chunk-RJWPJCIB.js\";\nimport {\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/pathAnchoring.ts\nvar RANGE_SUFFIX = /:(\\d+)-\\d+$/;\nvar VG_FRAGMENT = /^([^#]*#[^#]*#[^#[]*)#(\\d+)(?:\\[(\\d+)-\\d+\\])?$/;\nvar VG_SUBRANGE = /\\[(\\d+)-\\d+\\]$/;\nfunction pathOrigin(pathName) {\n const fragment = VG_FRAGMENT.exec(pathName);\n if (fragment) {\n return { name: fragment[1], start: +fragment[2] + +(fragment[3] ?? 0) };\n }\n const match = RANGE_SUFFIX.exec(pathName) ?? VG_SUBRANGE.exec(pathName);\n return match ? { name: pathName.slice(0, match.index), start: +match[1] } : { name: pathName, start: 0 };\n}\nfunction surveyPaths(paths, lengthOf) {\n const anchorPaths = [];\n const visits = new PathVisitsBuilder();\n for (const path of paths) {\n const sample = panSNSample(path.name);\n const p = visits.pathOf(path.name, sample);\n let pos = path.start;\n for (const step of path.steps) {\n visits.addAt(visits.declare(step.id), p, pos, step.strand === \"-\");\n pos += lengthOf(step.id);\n }\n anchorPaths.push({\n name: path.name,\n sample,\n start: path.start,\n length: pos - path.start\n });\n }\n return { anchorPaths, pathVisits: visits.build() };\n}\nfunction chooseReferencePath(anchorPaths, preferred) {\n const named = anchorPaths.find(\n (p) => p.sample === preferred || p.name === preferred\n );\n return named ?? anchorPaths[0];\n}\nvar OFF_REFERENCE_RANK = 1;\nfunction anchorNode(node, visits, reference, samplesOf) {\n const slot = visits.slot(node.name);\n if (slot < 0 || visits.offsets[slot] === visits.offsets[slot + 1]) {\n return node;\n }\n const own = visits.firstBy(slot, reference);\n const anchor = own >= 0 ? own : visits.firstByName(slot);\n return {\n ...node,\n stable: {\n refName: visits.paths[visits.path[anchor]],\n start: visits.start[anchor],\n rank: own >= 0 ? REFERENCE_RANK : OFF_REFERENCE_RANK,\n strand: visits.strand(anchor)\n },\n samples: samplesOf(slot)\n };\n}\nfunction sampleSorter(visits) {\n const sorted = [...new Set(visits.samples)].sort();\n const rank = new Map(sorted.map((sample, i) => [sample, i]));\n const pathRank = Int32Array.from(visits.samples, (s) => rank.get(s));\n const seen = new Uint8Array(sorted.length);\n const ranks = new Int32Array(sorted.length);\n return (slot) => {\n let n = 0;\n for (let i = visits.offsets[slot]; i < visits.offsets[slot + 1]; i++) {\n const r = pathRank[visits.path[i]];\n if (seen[r] === 0) {\n seen[r] = 1;\n ranks[n++] = r;\n }\n }\n let out;\n if (n === sorted.length) {\n out = sorted;\n seen.fill(0);\n } else if (n * 8 < sorted.length) {\n const found = ranks.subarray(0, n);\n found.forEach((r) => seen[r] = 0);\n out = Array.from(found.sort(), (r) => sorted[r]);\n } else {\n out = [];\n for (let r = 0; r < sorted.length; r++) {\n if (seen[r] === 1) {\n seen[r] = 0;\n out.push(sorted[r]);\n }\n }\n }\n return out;\n };\n}\nfunction anchorFromPaths(graph, preferred) {\n const { anchorPaths, pathVisits } = graph;\n const reference = anchorPaths && pathVisits ? chooseReferencePath(anchorPaths, preferred) : void 0;\n if (!reference || !anchorPaths || !pathVisits) {\n return graph;\n }\n const samplesOf = sampleSorter(pathVisits);\n const referenceIndex = pathVisits.pathIndex(reference.name);\n return {\n ...graph,\n nodes: graph.nodes.map(\n (node) => anchorNode(node, pathVisits, referenceIndex, samplesOf)\n ),\n anchoredBy: \"paths\",\n referencePath: reference.name\n };\n}\nfunction anchorGraph(graph, preferred) {\n if (graph.anchoredBy !== \"tags\") {\n return anchorFromPaths(graph, preferred);\n }\n const referencePath = taggedReferencePath(graph);\n return referencePath ? { ...graph, referencePath } : graph;\n}\nfunction taggedReferencePath(graph) {\n const refName = graph.nodes.find((n) => n.stable?.rank === 0)?.stable?.refName;\n return refName !== void 0 && graph.anchorPaths?.some((p) => p.name === refName) ? refName : void 0;\n}\nfunction trimOrigins(graph, kept) {\n if (!graph.anchorPaths) {\n return void 0;\n }\n const lengthOf = new Map(graph.nodes.map((n) => [n.id, n.length]));\n const bp = (ids, end = ids.length) => {\n let sum = 0;\n for (let i = 0; i < end; i++) {\n sum += lengthOf.get(ids[i]) ?? 0;\n }\n return sum;\n };\n const byOrigin = groupBy(graph.paths ?? [], (p) => pathOrigin(p.name).name);\n return graph.anchorPaths.map((o) => {\n const pieces = byOrigin.get(o.name);\n const path = pieces?.length === 1 ? pieces[0] : void 0;\n const stretch = path && kept.get(path.name);\n return path && stretch ? {\n ...o,\n start: o.start + bp(path.nodeIds, stretch.first),\n length: bp(stretch.nodeIds)\n } : o;\n });\n}\nfunction referenceVisitStarts(graph) {\n const { pathVisits } = graph;\n const cache = /* @__PURE__ */ new Map();\n return (node) => {\n let starts = cache.get(node.id);\n if (!starts) {\n starts = [];\n const slot = pathVisits ? pathVisits.slot(node.name) : -1;\n const p = slot >= 0 ? pathVisits.pathIndex(node.stable.refName) : -1;\n if (p >= 0) {\n for (let i = pathVisits.offsets[slot]; i < pathVisits.offsets[slot + 1]; i++) {\n if (pathVisits.path[i] === p) {\n starts.push(pathVisits.start[i]);\n }\n }\n }\n if (starts.length < 2) {\n starts = [node.stable.start];\n }\n cache.set(node.id, starts);\n }\n return starts;\n };\n}\n\nexport {\n pathOrigin,\n surveyPaths,\n chooseReferencePath,\n anchorFromPaths,\n anchorGraph,\n trimOrigins,\n referenceVisitStarts\n};\n"],
5
+ "mappings": "wCACA,SAASA,EAAOC,EAAKC,EAAKC,EAAO,CAC/B,IAAMC,EAAOH,EAAI,IAAIC,CAAG,EACpBE,EACFA,EAAK,KAAKD,CAAK,EAEfF,EAAI,IAAIC,EAAK,CAACC,CAAK,CAAC,CAExB,CACA,SAASE,EAAMJ,EAAKC,EAAKC,EAAO,CAC9B,IAAMG,EAAML,EAAI,IAAIC,CAAG,EACnBI,EACFA,EAAI,IAAIH,CAAK,EAEbF,EAAI,IAAIC,EAAqB,IAAI,IAAI,CAACC,CAAK,CAAC,CAAC,CAEjD,CACA,SAASI,EAAQC,EAAOC,EAAO,CAC7B,IAAMC,EAAyB,IAAI,IACnC,QAAWC,KAAQH,EACjBR,EAAOU,EAAQD,EAAME,CAAI,EAAGA,CAAI,EAElC,OAAOD,CACT,CCtBA,SAASE,EAAeC,EAAGC,EAAM,CAC/B,IAAIC,EAAK,EACLC,EAAKH,EACT,KAAOE,EAAKC,GAAI,CACd,IAAMC,EAAMF,EAAKC,GAAM,EACnBF,EAAKG,CAAG,EACVF,EAAKE,EAAM,EAEXD,EAAKC,CAET,CACA,OAAOF,CACT,CCRA,IAAIG,EAAiB,EACrB,SAASC,EAAWC,EAAM,CACxB,OAAOA,EAAK,SAAW,MACzB,CACA,SAASC,EAAWD,EAAM,CACxB,OAAOA,EAAK,QAAQ,OAASF,CAC/B,CACA,SAASI,EAAeF,EAAM,CAC5B,OAAOA,EAAK,SAAW,QAAUA,EAAK,OAAO,KAAOF,CACtD,CACA,SAASK,EAAcC,EAAO,CAC5B,OAAOA,EAAM,MAAM,OAAOH,CAAU,CACtC,CACA,SAASI,EAAeL,EAAMM,EAAQ,CACpC,OAAON,EAAK,OAAO,MAAQM,EAAO,KAAON,EAAK,OAAO,MAAQA,EAAK,OAASM,EAAO,KACpF,CACA,SAASC,EAAkBC,EAAU,CACnC,IAAMC,EAAY,CAAC,EACnB,QAAWT,KAAQQ,EACjBC,EAAUT,EAAK,EAAE,EAAI,CACnB,CAAE,EAAGA,EAAK,OAAO,MAAO,EAAG,CAAE,EAC7B,CAAE,EAAGA,EAAK,OAAO,MAAQA,EAAK,OAAQ,EAAG,CAAE,CAC7C,EAEF,OAAOS,CACT,CACA,SAASC,EAAmBC,EAAOC,EAAI,CACrC,OAAOC,EAAeF,EAAM,OAASG,GAAMH,EAAMG,CAAC,EAAE,OAAO,MAAQF,CAAE,CACvE,CACA,SAASG,EAAaP,EAAU,CAC9B,IAAIQ,EAAM,IACNC,EAAM,KACV,QAAWjB,KAAQQ,EACjBQ,EAAM,KAAK,IAAIA,EAAKhB,EAAK,OAAO,KAAK,EACrCiB,EAAM,KAAK,IAAIA,EAAKjB,EAAK,OAAO,MAAQA,EAAK,MAAM,EAErD,OAAOiB,EAAMD,CACf,CACA,SAASE,EAAcV,EAAUW,EAAQ,CACvC,OAAOA,GAAUA,EAAO,IAAMA,EAAO,MAAQA,EAAO,IAAMA,EAAO,MAAQJ,EAAaP,CAAQ,CAChG,CC5CA,IAAIY,EAAa,KAAM,CACrB,YAAYC,EAAS,CACnB,KAAK,SAAWA,EAAQ,SACxB,KAAK,QAAUA,EAAQ,QACvB,KAAK,KAAOA,EAAQ,KACpB,KAAK,MAAQA,EAAQ,MACrB,KAAK,SAAWA,EAAQ,SACxB,KAAK,MAAQA,EAAQ,MACrB,KAAK,QAAUA,EAAQ,QACvB,KAAK,MAAQ,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,EAAGC,IAAM,CAAC,EAAGA,CAAC,CAAC,CAAC,CAC1D,CACA,OAAO,KAAKC,EAAS,CACnB,IAAMC,EAAU,IAAIC,EACpB,OAAW,CAACC,EAASC,CAAM,IAAKJ,EAAS,CACvCC,EAAQ,QAAQE,CAAO,EACvB,QAAWE,KAAKD,EACdH,EAAQ,IAAIE,EAASE,EAAE,KAAMA,EAAE,OAAQA,EAAE,MAAOA,EAAE,SAAW,GAAG,CAEpE,CACA,OAAOJ,EAAQ,MAAM,CACvB,CACA,IAAI,MAAO,CACT,OAAO,KAAK,SAAS,MACvB,CAEA,KAAKE,EAAS,CACZ,OAAO,KAAK,MAAM,IAAIA,CAAO,GAAK,EACpC,CACA,UAAUG,EAAM,CACd,OAAO,KAAK,MAAM,QAAQA,CAAI,CAChC,CAEA,QAAQC,EAAMC,EAAG,CACf,QAAST,EAAI,KAAK,QAAQQ,CAAI,EAAGR,EAAI,KAAK,QAAQQ,EAAO,CAAC,EAAGR,IAC3D,GAAI,KAAK,KAAKA,CAAC,IAAMS,EACnB,OAAOT,EAGX,MAAO,EACT,CAIA,YAAYQ,EAAM,CAChB,IAAIE,EAAO,KAAK,QAAQF,CAAI,EAC5B,QAASR,EAAIU,EAAO,EAAGV,EAAI,KAAK,QAAQQ,EAAO,CAAC,EAAGR,IAAK,CACtD,IAAMW,EAAI,KAAK,MAAM,KAAK,KAAKX,CAAC,CAAC,EAC3BY,EAAI,KAAK,MAAM,KAAK,KAAKF,CAAI,CAAC,GAChCC,EAAIC,GAAKD,IAAMC,GAAK,KAAK,MAAMZ,CAAC,EAAI,KAAK,MAAMU,CAAI,KACrDA,EAAOV,EAEX,CACA,OAAOU,CACT,CAKA,QAAS,CACP,IAAMG,EAAyB,IAAI,IACnC,MAAO,CAACL,EAAMC,IAAM,CAClB,GAAID,EAAO,GAAKC,EAAI,EAClB,MAAO,GAET,IAAMK,EAAMN,EAAO,KAAK,MAAM,OAASC,EACjCM,EAAM,KAAK,QAAQP,EAAO,CAAC,EAC7BQ,EAAKH,EAAO,IAAIC,CAAG,GAAK,KAAK,QAAQN,CAAI,EAC7C,KAAOQ,EAAKD,GAAO,KAAK,KAAKC,CAAE,IAAMP,GACnCO,IAEF,OAAAH,EAAO,IAAIC,EAAKE,EAAK,CAAC,EACfA,EAAKD,EAAMC,EAAK,EACzB,CACF,CAEA,OAAOC,EAAUC,EAAc,IAAM,GAAM,CACzC,IAAMC,EAAO,KAAK,MAAM,IAAIF,CAAQ,EAC9Bf,EAAU,IAAIC,EACpB,YAAK,SAAS,QAAQ,CAACC,EAASgB,IAAM,CACpC,GAAI,CAACF,EAAYd,CAAO,EACtB,OAEF,IAAMI,EAAON,EAAQ,QAAQE,CAAO,EACpC,QAASJ,EAAI,KAAK,QAAQoB,CAAC,EAAGpB,EAAI,KAAK,QAAQoB,EAAI,CAAC,EAAGpB,IAAK,CAC1D,IAAMS,EAAI,KAAK,KAAKT,CAAC,EACjBmB,EAAKV,CAAC,GACRP,EAAQ,MACNM,EACAN,EAAQ,OAAO,KAAK,MAAMO,CAAC,EAAG,KAAK,QAAQA,CAAC,CAAC,EAC7C,KAAK,MAAMT,CAAC,EACZ,KAAK,SAASA,CAAC,IAAM,CACvB,CAEJ,CACF,CAAC,EACME,EAAQ,MAAM,CACvB,CACA,OAAOF,EAAG,CACR,OAAO,KAAK,SAASA,CAAC,EAAI,IAAM,GAClC,CACA,MAAMA,EAAG,CACP,IAAMS,EAAI,KAAK,KAAKT,CAAC,EACrB,MAAO,CACL,KAAM,KAAK,MAAMS,CAAC,EAClB,OAAQ,KAAK,QAAQA,CAAC,EACtB,MAAO,KAAK,MAAMT,CAAC,EACnB,OAAQ,KAAK,OAAOA,CAAC,CACvB,CACF,CACA,SAASQ,EAAM,CACb,IAAMa,EAAM,CAAC,EACb,QAASrB,EAAI,KAAK,QAAQQ,CAAI,EAAGR,EAAI,KAAK,QAAQQ,EAAO,CAAC,EAAGR,IAC3DqB,EAAI,KAAK,KAAK,MAAMrB,CAAC,CAAC,EAExB,OAAOqB,CACT,CACA,IAAIjB,EAAS,CACX,IAAMI,EAAO,KAAK,KAAKJ,CAAO,EAC9B,OAAOI,EAAO,EAAI,OAAS,KAAK,SAASA,CAAI,CAC/C,CACA,IAAIJ,EAAS,CACX,OAAO,KAAK,MAAM,IAAIA,CAAO,CAC/B,CACA,MAAO,CACL,OAAO,KAAK,SAAS,OAAO,QAAQ,EAAE,CACxC,CACA,CAAC,QAAS,CACR,QAASgB,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IACxC,MAAM,KAAK,SAASA,CAAC,CAEzB,CACA,CAAC,SAAU,CACT,QAASA,EAAI,EAAGA,EAAI,KAAK,SAAS,OAAQA,IACxC,KAAM,CAAC,KAAK,SAASA,CAAC,EAAG,KAAK,SAASA,CAAC,CAAC,CAE7C,CACA,CAAC,OAAO,QAAQ,GAAI,CAClB,OAAO,KAAK,QAAQ,CACtB,CACF,EACIE,EAAS,KAAM,CACjB,YAAYC,EAAM,CAChB,KAAK,KAAOA,EACZ,KAAK,OAAS,CAChB,CACA,KAAKC,EAAO,CACV,GAAI,KAAK,SAAW,KAAK,KAAK,OAAQ,CACpC,IAAMC,EAAQ,IAAI,KAAK,KAAK,YAC1B,KAAK,KAAK,OAAS,CACrB,EACAA,EAAM,IAAI,KAAK,IAAI,EACnB,KAAK,KAAOA,CACd,CACA,KAAK,KAAK,KAAK,QAAQ,EAAID,CAC7B,CACF,EACIrB,EAAoB,KAAM,CAC5B,aAAc,CACZ,KAAK,SAAW,CAAC,EACjB,KAAK,MAAwB,IAAI,IACjC,KAAK,MAAQ,CAAC,EACd,KAAK,QAAU,CAAC,EAChB,KAAK,UAA4B,IAAI,IACrC,KAAK,KAAO,IAAImB,EAAO,IAAI,WAAW,IAAI,CAAC,EAC3C,KAAK,KAAO,IAAIA,EAAO,IAAI,WAAW,IAAI,CAAC,EAC3C,KAAK,MAAQ,IAAIA,EAAO,IAAI,aAAa,IAAI,CAAC,EAC9C,KAAK,SAAW,IAAIA,EAAO,IAAI,WAAW,IAAI,CAAC,CACjD,CAEA,QAAQlB,EAAS,CACf,IAAI,EAAI,KAAK,MAAM,IAAIA,CAAO,EAC9B,OAAI,IAAM,SACR,EAAI,KAAK,SAAS,OAClB,KAAK,MAAM,IAAIA,EAAS,CAAC,EACzB,KAAK,SAAS,KAAKA,CAAO,GAErB,CACT,CAEA,OAAOG,EAAMmB,EAAQ,CACnB,IAAIjB,EAAI,KAAK,UAAU,IAAIF,CAAI,EAC/B,OAAIE,IAAM,SACRA,EAAI,KAAK,MAAM,OACf,KAAK,UAAU,IAAIF,EAAME,CAAC,EAC1B,KAAK,MAAM,KAAKF,CAAI,EACpB,KAAK,QAAQ,KAAKmB,CAAM,GAEnBjB,CACT,CACA,IAAIL,EAASG,EAAMmB,EAAQC,EAAOC,EAAU,CAC1C,KAAK,MACH,KAAK,QAAQxB,CAAO,EACpB,KAAK,OAAOG,EAAMmB,CAAM,EACxBC,EACAC,CACF,CACF,CACA,MAAMpB,EAAMD,EAAMoB,EAAOC,EAAU,CACjC,KAAK,KAAK,KAAKpB,CAAI,EACnB,KAAK,KAAK,KAAKD,CAAI,EACnB,KAAK,MAAM,KAAKoB,CAAK,EACrB,KAAK,SAAS,KAAKC,EAAW,EAAI,CAAC,CACrC,CACA,OAAQ,CACN,IAAMC,EAAI,KAAK,KAAK,OACdC,EAAW,KAAK,SAAS,OACzBC,EAAU,IAAI,WAAWD,EAAW,CAAC,EACrCtB,EAAO,KAAK,KAAK,KACvB,QAAS,EAAI,EAAG,EAAIqB,EAAG,IACrBE,EAAQvB,EAAK,CAAC,EAAI,CAAC,IAErB,QAASY,EAAI,EAAGA,EAAIU,EAAUV,IAC5BW,EAAQX,EAAI,CAAC,GAAKW,EAAQX,CAAC,EAE7B,IAAMY,EAAOD,EAAQ,MAAM,EAAGD,CAAQ,EAChCvB,EAAO,IAAI,WAAWsB,CAAC,EACvBF,EAAQ,IAAI,aAAaE,CAAC,EAC1BD,EAAW,IAAI,WAAWC,CAAC,EACjC,QAAS,EAAI,EAAG,EAAIA,EAAG,IAAK,CAC1B,IAAMb,EAAKgB,EAAKxB,EAAK,CAAC,CAAC,IACvBD,EAAKS,CAAE,EAAI,KAAK,KAAK,KAAK,CAAC,EAC3BW,EAAMX,CAAE,EAAI,KAAK,MAAM,KAAK,CAAC,EAC7BY,EAASZ,CAAE,EAAI,KAAK,SAAS,KAAK,CAAC,CACrC,CACA,OAAO,IAAIlB,EAAW,CACpB,SAAU,KAAK,SACf,QAAAiC,EACA,KAAAxB,EACA,MAAAoB,EACA,SAAAC,EACA,MAAO,KAAK,MACZ,QAAS,KAAK,OAChB,CAAC,CACH,CACF,EC7NA,IAAIK,EAAe,cACfC,EAAc,iDACdC,EAAc,iBAClB,SAASC,EAAWC,EAAU,CAC5B,IAAMC,EAAWJ,EAAY,KAAKG,CAAQ,EAC1C,GAAIC,EACF,MAAO,CAAE,KAAMA,EAAS,CAAC,EAAG,MAAO,CAACA,EAAS,CAAC,GAAI,EAAEA,EAAS,CAAC,GAAK,EAAG,EAExE,IAAMC,EAAQN,EAAa,KAAKI,CAAQ,GAAKF,EAAY,KAAKE,CAAQ,EACtE,OAAOE,EAAQ,CAAE,KAAMF,EAAS,MAAM,EAAGE,EAAM,KAAK,EAAG,MAAO,CAACA,EAAM,CAAC,CAAE,EAAI,CAAE,KAAMF,EAAU,MAAO,CAAE,CACzG,CACA,SAASG,EAAYC,EAAOC,EAAU,CACpC,IAAMC,EAAc,CAAC,EACfC,EAAS,IAAIC,EACnB,QAAWC,KAAQL,EAAO,CACxB,IAAMM,EAASC,EAAYF,EAAK,IAAI,EAC9BG,EAAIL,EAAO,OAAOE,EAAK,KAAMC,CAAM,EACrCG,EAAMJ,EAAK,MACf,QAAWK,KAAQL,EAAK,MACtBF,EAAO,MAAMA,EAAO,QAAQO,EAAK,EAAE,EAAGF,EAAGC,EAAKC,EAAK,SAAW,GAAG,EACjED,GAAOR,EAASS,EAAK,EAAE,EAEzBR,EAAY,KAAK,CACf,KAAMG,EAAK,KACX,OAAAC,EACA,MAAOD,EAAK,MACZ,OAAQI,EAAMJ,EAAK,KACrB,CAAC,CACH,CACA,MAAO,CAAE,YAAAH,EAAa,WAAYC,EAAO,MAAM,CAAE,CACnD,CACA,SAASQ,EAAoBT,EAAaU,EAAW,CAInD,OAHcV,EAAY,KACvBM,GAAMA,EAAE,SAAWI,GAAaJ,EAAE,OAASI,CAC9C,GACgBV,EAAY,CAAC,CAC/B,CACA,IAAIW,EAAqB,EACzB,SAASC,EAAWC,EAAMZ,EAAQa,EAAWC,EAAW,CACtD,IAAMC,EAAOf,EAAO,KAAKY,EAAK,IAAI,EAClC,GAAIG,EAAO,GAAKf,EAAO,QAAQe,CAAI,IAAMf,EAAO,QAAQe,EAAO,CAAC,EAC9D,OAAOH,EAET,IAAMI,EAAMhB,EAAO,QAAQe,EAAMF,CAAS,EACpCI,EAASD,GAAO,EAAIA,EAAMhB,EAAO,YAAYe,CAAI,EACvD,MAAO,CACL,GAAGH,EACH,OAAQ,CACN,QAASZ,EAAO,MAAMA,EAAO,KAAKiB,CAAM,CAAC,EACzC,MAAOjB,EAAO,MAAMiB,CAAM,EAC1B,KAAMD,GAAO,EAAIE,EAAiBR,EAClC,OAAQV,EAAO,OAAOiB,CAAM,CAC9B,EACA,QAASH,EAAUC,CAAI,CACzB,CACF,CACA,SAASI,EAAanB,EAAQ,CAC5B,IAAMoB,EAAS,CAAC,GAAG,IAAI,IAAIpB,EAAO,OAAO,CAAC,EAAE,KAAK,EAC3CqB,EAAO,IAAI,IAAID,EAAO,IAAI,CAACjB,EAAQmB,IAAM,CAACnB,EAAQmB,CAAC,CAAC,CAAC,EACrDC,EAAW,WAAW,KAAKvB,EAAO,QAAUwB,GAAMH,EAAK,IAAIG,CAAC,CAAC,EAC7DC,EAAO,IAAI,WAAWL,EAAO,MAAM,EACnCM,EAAQ,IAAI,WAAWN,EAAO,MAAM,EAC1C,OAAQL,GAAS,CACf,IAAIY,EAAI,EACR,QAASL,EAAItB,EAAO,QAAQe,CAAI,EAAGO,EAAItB,EAAO,QAAQe,EAAO,CAAC,EAAGO,IAAK,CACpE,IAAMM,EAAIL,EAASvB,EAAO,KAAKsB,CAAC,CAAC,EAC7BG,EAAKG,CAAC,IAAM,IACdH,EAAKG,CAAC,EAAI,EACVF,EAAMC,GAAG,EAAIC,EAEjB,CACA,IAAIC,EACJ,GAAIF,IAAMP,EAAO,OACfS,EAAMT,EACNK,EAAK,KAAK,CAAC,UACFE,EAAI,EAAIP,EAAO,OAAQ,CAChC,IAAMU,EAAQJ,EAAM,SAAS,EAAGC,CAAC,EACjCG,EAAM,QAASF,GAAMH,EAAKG,CAAC,EAAI,CAAC,EAChCC,EAAM,MAAM,KAAKC,EAAM,KAAK,EAAIF,GAAMR,EAAOQ,CAAC,CAAC,CACjD,KAAO,CACLC,EAAM,CAAC,EACP,QAASD,EAAI,EAAGA,EAAIR,EAAO,OAAQQ,IAC7BH,EAAKG,CAAC,IAAM,IACdH,EAAKG,CAAC,EAAI,EACVC,EAAI,KAAKT,EAAOQ,CAAC,CAAC,EAGxB,CACA,OAAOC,CACT,CACF,CACA,SAASE,EAAgBC,EAAOvB,EAAW,CACzC,GAAM,CAAE,YAAAV,EAAa,WAAAkC,CAAW,EAAID,EAC9BnB,EAAYd,GAAekC,EAAazB,EAAoBT,EAAaU,CAAS,EAAI,OAC5F,GAAI,CAACI,GAAa,CAACd,GAAe,CAACkC,EACjC,OAAOD,EAET,IAAMlB,EAAYK,EAAac,CAAU,EACnCC,EAAiBD,EAAW,UAAUpB,EAAU,IAAI,EAC1D,MAAO,CACL,GAAGmB,EACH,MAAOA,EAAM,MAAM,IAChBpB,GAASD,EAAWC,EAAMqB,EAAYC,EAAgBpB,CAAS,CAClE,EACA,WAAY,QACZ,cAAeD,EAAU,IAC3B,CACF,CACA,SAASsB,EAAYH,EAAOvB,EAAW,CACrC,GAAIuB,EAAM,aAAe,OACvB,OAAOD,EAAgBC,EAAOvB,CAAS,EAEzC,IAAM2B,EAAgBC,EAAoBL,CAAK,EAC/C,OAAOI,EAAgB,CAAE,GAAGJ,EAAO,cAAAI,CAAc,EAAIJ,CACvD,CACA,SAASK,EAAoBL,EAAO,CAClC,IAAMM,EAAUN,EAAM,MAAM,KAAML,GAAMA,EAAE,QAAQ,OAAS,CAAC,GAAG,QAAQ,QACvE,OAAOW,IAAY,QAAUN,EAAM,aAAa,KAAM3B,GAAMA,EAAE,OAASiC,CAAO,EAAIA,EAAU,MAC9F,CACA,SAASC,EAAYP,EAAOQ,EAAM,CAChC,GAAI,CAACR,EAAM,YACT,OAEF,IAAMlC,EAAW,IAAI,IAAIkC,EAAM,MAAM,IAAKL,GAAM,CAACA,EAAE,GAAIA,EAAE,MAAM,CAAC,CAAC,EAC3Dc,EAAK,CAACC,EAAKC,EAAMD,EAAI,SAAW,CACpC,IAAIE,EAAM,EACV,QAAS,EAAI,EAAG,EAAID,EAAK,IACvBC,GAAO9C,EAAS,IAAI4C,EAAI,CAAC,CAAC,GAAK,EAEjC,OAAOE,CACT,EACMC,EAAWC,EAAQd,EAAM,OAAS,CAAC,EAAI3B,GAAMb,EAAWa,EAAE,IAAI,EAAE,IAAI,EAC1E,OAAO2B,EAAM,YAAY,IAAKe,GAAM,CAClC,IAAMC,EAASH,EAAS,IAAIE,EAAE,IAAI,EAC5B7C,EAAO8C,GAAQ,SAAW,EAAIA,EAAO,CAAC,EAAI,OAC1CC,EAAU/C,GAAQsC,EAAK,IAAItC,EAAK,IAAI,EAC1C,OAAOA,GAAQ+C,EAAU,CACvB,GAAGF,EACH,MAAOA,EAAE,MAAQN,EAAGvC,EAAK,QAAS+C,EAAQ,KAAK,EAC/C,OAAQR,EAAGQ,EAAQ,OAAO,CAC5B,EAAIF,CACN,CAAC,CACH,CACA,SAASG,GAAqBlB,EAAO,CACnC,GAAM,CAAE,WAAAC,CAAW,EAAID,EACjBmB,EAAwB,IAAI,IAClC,OAAQvC,GAAS,CACf,IAAIwC,EAASD,EAAM,IAAIvC,EAAK,EAAE,EAC9B,GAAI,CAACwC,EAAQ,CACXA,EAAS,CAAC,EACV,IAAMrC,EAAOkB,EAAaA,EAAW,KAAKrB,EAAK,IAAI,EAAI,GACjDP,EAAIU,GAAQ,EAAIkB,EAAW,UAAUrB,EAAK,OAAO,OAAO,EAAI,GAClE,GAAIP,GAAK,EACP,QAASiB,EAAIW,EAAW,QAAQlB,CAAI,EAAGO,EAAIW,EAAW,QAAQlB,EAAO,CAAC,EAAGO,IACnEW,EAAW,KAAKX,CAAC,IAAMjB,GACzB+C,EAAO,KAAKnB,EAAW,MAAMX,CAAC,CAAC,EAIjC8B,EAAO,OAAS,IAClBA,EAAS,CAACxC,EAAK,OAAO,KAAK,GAE7BuC,EAAM,IAAIvC,EAAK,GAAIwC,CAAM,CAC3B,CACA,OAAOA,CACT,CACF",
6
+ "names": ["pushTo", "map", "key", "value", "list", "addTo", "set", "groupBy", "items", "keyOf", "groups", "item", "partitionPoint", "n", "pred", "lo", "hi", "mid", "REFERENCE_RANK", "isAnchored", "node", "isBackbone", "isOffReference", "backboneNodes", "graph", "overlapsWindow", "window", "backbonePositions", "backbone", "positions", "firstNodeAtOrAfter", "nodes", "bp", "partitionPoint", "i", "backboneSpan", "min", "max", "referenceSpan", "region", "PathVisits", "columns", "i", "entries", "builder", "PathVisitsBuilder", "segment", "visits", "v", "path", "slot", "p", "best", "a", "b", "cursor", "key", "end", "at", "keepPath", "keepSegment", "kept", "s", "out", "Column", "data", "value", "grown", "sample", "start", "reversed", "n", "segments", "offsets", "fill", "RANGE_SUFFIX", "VG_FRAGMENT", "VG_SUBRANGE", "pathOrigin", "pathName", "fragment", "match", "surveyPaths", "paths", "lengthOf", "anchorPaths", "visits", "PathVisitsBuilder", "path", "sample", "panSNSample", "p", "pos", "step", "chooseReferencePath", "preferred", "OFF_REFERENCE_RANK", "anchorNode", "node", "reference", "samplesOf", "slot", "own", "anchor", "REFERENCE_RANK", "sampleSorter", "sorted", "rank", "i", "pathRank", "s", "seen", "ranks", "n", "r", "out", "found", "anchorFromPaths", "graph", "pathVisits", "referenceIndex", "anchorGraph", "referencePath", "taggedReferencePath", "refName", "trimOrigins", "kept", "bp", "ids", "end", "sum", "byOrigin", "groupBy", "o", "pieces", "stretch", "referenceVisitStarts", "cache", "starts"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{a as f}from"./chunk-HAAABGE7.js";import{h as l,i as c,k as m,x as b}from"./chunk-TBNAAP6E.js";import{h as g}from"./chunk-VKZALU57.js";var S={steps:"walkStepBudget",bytes:"walkByteBudget"},x=64,h=class{constructor(t,e){this.file=t;this.adapter=e;this.reader=new m(t)}async haplotypeNames(t={}){let{haplotypes:e}=await this.reader.header(t);return e.length>0?e:void 0}budgets(){return{stepBudget:this.adapter.getConf("walkStepBudget"),byteBudget:this.adapter.getConf("walkByteBudget"),budgetNames:S}}async subgraph(t,e,{signal:i,haplotypes:n,walkRows:a,expand:r}){let d=this.budgets(),p=c(n?.map(s=>g(this.adapter,s)),t),u=a&&p&&(n?.length??0)<=x?p:void 0,o=r?.length?s=>r.includes(s):void 0,{graph:B,kept:y,fragments:k,skips:w}=await this.reader.cut(t,e,{...d,stepBudget:a?1/0:d.stepBudget,signal:i,keep:p,...u||o?{expand:s=>!!u?.(s)||!!o?.(s)}:{}});return f(B.tables(y,k,w),e,a)}async referenceNodes(t,e,i){let n=[];await b(this.file,t,await this.reader.queryStart(e.start,{...i,refName:t,end:e.end}),e.end,{signal:i.signal,lineCallback:r=>{let d=r.split(" ");d[3]==="ref"&&n.push(d)}});let a=new Set;return l(n).filter(r=>r.refName!==t||r.end<=e.start||r.start>=e.end||a.has(r.id)?!1:(a.add(r.id),!0))}};export{h as a};
2
+ //# sourceMappingURL=chunk-IL5HOUFN.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/RgfaTabixAdapter/walkReader.ts"],
4
+ "sourcesContent": ["import { resolvePanSNPrefix } from '@jbrowse/bandage-core/pansn'\nimport { WalkReader, referenceNodes, walksKept } from '@jbrowse/graph-walks'\n\nimport { getLines } from '../tabixRange.ts'\nimport { walkCutFor } from './walkCut.ts'\n\nimport type { SubgraphAdapterOptions } from '../GetSubgraph.ts'\nimport type { TabixIndexedFile } from '@gmod/tabix'\nimport type {\n BaseFeatureDataAdapter,\n BaseOptions,\n} from '@jbrowse/core/data_adapters/BaseAdapter'\n\n// The zoom-in notices name the config slots that set the budgets\nexport const BUDGET_SLOTS = {\n steps: 'walkStepBudget',\n bytes: 'walkByteBudget',\n}\n\n// Walk rows read a list this long or shorter in full where format 5 abridged\n// it; a longer list, or every haplotype, keeps the abridged rows\nexport const EXPAND_NAMED_MAX = 64\n\n/**\n * A walk file and the answers both walk-indexed adapters give from it,\n * RgfaTabixAdapter and WalkTabixSyntenyAdapter, whose schemas declare the\n * budget slots. @jbrowse/graph-walks reads and cuts the file.\n */\nexport class WalkIndex {\n readonly reader: WalkReader\n\n constructor(\n readonly file: TabixIndexedFile,\n private adapter: BaseFeatureDataAdapter,\n ) {\n this.reader = new WalkReader(file)\n }\n\n /**\n * The haplotypes the header names, `sample#haplotype` in byte order, or\n * undefined when it names none\n */\n async haplotypeNames(opts: BaseOptions = {}) {\n const { haplotypes } = await this.reader.header(opts)\n return haplotypes.length > 0 ? haplotypes : undefined\n }\n\n budgets() {\n return {\n stepBudget: this.adapter.getConf('walkStepBudget') as number,\n byteBudget: this.adapter.getConf('walkByteBudget') as number,\n budgetNames: BUDGET_SLOTS,\n }\n }\n\n /**\n * The graph display's cut of a window: the reference walk, the walks of\n * `haplotypes` (every walk when unset), and the nodes and links they visit,\n * with the haplotypes whose deletion spans the window as `skips`, which walk\n * rows draw. Walk rows draw runs, so the step budget spares them, and read a\n * short list of named walks in full where format 5 abridged them.\n */\n async subgraph(\n refName: string,\n region: { start: number; end: number },\n { signal, haplotypes, walkRows, expand }: SubgraphAdapterOptions,\n ) {\n const budgets = this.budgets()\n const keep = walksKept(\n haplotypes?.map(lane => resolvePanSNPrefix(this.adapter, lane)),\n refName,\n )\n const named =\n walkRows && keep && (haplotypes?.length ?? 0) <= EXPAND_NAMED_MAX\n ? keep\n : undefined\n const asked = expand?.length\n ? (name: string) => expand.includes(name)\n : undefined\n const { graph, kept, fragments, skips } = await this.reader.cut(\n refName,\n region,\n {\n ...budgets,\n stepBudget: walkRows ? Infinity : budgets.stepBudget,\n signal,\n keep,\n ...(named || asked\n ? {\n expand: (name: string) => !!named?.(name) || !!asked?.(name),\n }\n : {}),\n },\n )\n return walkCutFor(graph.tables(kept, fragments, skips), region, walkRows)\n }\n\n /**\n * The reference nodes overlapping a window, from the ref rows of its\n * chunks. A row's tabix interval is its chunk's first base, and gfa-to-tabix\n * files a node crossing in from a chunk before under that chunk, so the read\n * starts at queryStart.\n */\n async referenceNodes(\n refName: string,\n region: { start: number; end: number },\n opts: BaseOptions,\n ) {\n const refRows: string[][] = []\n await getLines(\n this.file,\n refName,\n await this.reader.queryStart(region.start, {\n ...opts,\n refName,\n end: region.end,\n }),\n region.end,\n {\n signal: opts.signal,\n lineCallback: line => {\n const cols = line.split('\\t')\n if (cols[3] === 'ref') {\n refRows.push(cols)\n }\n },\n },\n )\n const seen = new Set<number>()\n return referenceNodes(refRows).filter(node => {\n if (\n node.refName !== refName ||\n node.end <= region.start ||\n node.start >= region.end ||\n seen.has(node.id)\n ) {\n return false\n }\n seen.add(node.id)\n return true\n })\n }\n}\n"],
5
+ "mappings": "6IAcO,IAAMA,EAAe,CAC1B,MAAO,iBACP,MAAO,gBACT,EAIaC,EAAmB,GAOnBC,EAAN,KAAgB,CAGrB,YACWC,EACDC,EACR,CAFS,UAAAD,EACD,aAAAC,EAER,KAAK,OAAS,IAAIC,EAAWF,CAAI,CACnC,CAMA,MAAM,eAAeG,EAAoB,CAAC,EAAG,CAC3C,GAAM,CAAE,WAAAC,CAAW,EAAI,MAAM,KAAK,OAAO,OAAOD,CAAI,EACpD,OAAOC,EAAW,OAAS,EAAIA,EAAa,MAC9C,CAEA,SAAU,CACR,MAAO,CACL,WAAY,KAAK,QAAQ,QAAQ,gBAAgB,EACjD,WAAY,KAAK,QAAQ,QAAQ,gBAAgB,EACjD,YAAaP,CACf,CACF,CASA,MAAM,SACJQ,EACAC,EACA,CAAE,OAAAC,EAAQ,WAAAH,EAAY,SAAAI,EAAU,OAAAC,CAAO,EACvC,CACA,IAAMC,EAAU,KAAK,QAAQ,EACvBC,EAAOC,EACXR,GAAY,IAAIS,GAAQC,EAAmB,KAAK,QAASD,CAAI,CAAC,EAC9DR,CACF,EACMU,EACJP,GAAYG,IAASP,GAAY,QAAU,IAAMN,EAC7Ca,EACA,OACAK,EAAQP,GAAQ,OACjBQ,GAAiBR,EAAO,SAASQ,CAAI,EACtC,OACE,CAAE,MAAAC,EAAO,KAAAC,EAAM,UAAAC,EAAW,MAAAC,CAAM,EAAI,MAAM,KAAK,OAAO,IAC1DhB,EACAC,EACA,CACE,GAAGI,EACH,WAAYF,EAAW,IAAWE,EAAQ,WAC1C,OAAAH,EACA,KAAAI,EACA,GAAII,GAASC,EACT,CACE,OAASC,GAAiB,CAAC,CAACF,IAAQE,CAAI,GAAK,CAAC,CAACD,IAAQC,CAAI,CAC7D,EACA,CAAC,CACP,CACF,EACA,OAAOK,EAAWJ,EAAM,OAAOC,EAAMC,EAAWC,CAAK,EAAGf,EAAQE,CAAQ,CAC1E,CAQA,MAAM,eACJH,EACAC,EACAH,EACA,CACA,IAAMoB,EAAsB,CAAC,EAC7B,MAAMC,EACJ,KAAK,KACLnB,EACA,MAAM,KAAK,OAAO,WAAWC,EAAO,MAAO,CACzC,GAAGH,EACH,QAAAE,EACA,IAAKC,EAAO,GACd,CAAC,EACDA,EAAO,IACP,CACE,OAAQH,EAAK,OACb,aAAcsB,GAAQ,CACpB,IAAMC,EAAOD,EAAK,MAAM,GAAI,EACxBC,EAAK,CAAC,IAAM,OACdH,EAAQ,KAAKG,CAAI,CAErB,CACF,CACF,EACA,IAAMC,EAAO,IAAI,IACjB,OAAOC,EAAeL,CAAO,EAAE,OAAOM,GAElCA,EAAK,UAAYxB,GACjBwB,EAAK,KAAOvB,EAAO,OACnBuB,EAAK,OAASvB,EAAO,KACrBqB,EAAK,IAAIE,EAAK,EAAE,EAET,IAETF,EAAK,IAAIE,EAAK,EAAE,EACT,GACR,CACH,CACF",
6
+ "names": ["BUDGET_SLOTS", "EXPAND_NAMED_MAX", "WalkIndex", "file", "adapter", "WalkReader", "opts", "haplotypes", "refName", "region", "signal", "walkRows", "expand", "budgets", "keep", "walksKept", "lane", "resolvePanSNPrefix", "named", "asked", "name", "graph", "kept", "fragments", "skips", "walkCutFor", "refRows", "getLines", "line", "cols", "seen", "referenceNodes", "node"]
7
+ }