m0saic 0.2.2 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/LICENSE +22 -7
  2. package/README.md +23 -5
  3. package/dist/browseE2e.js +1 -1
  4. package/dist/connectionsFromEnv.js +1 -1
  5. package/dist/e2eTemplateVariants.js +1 -1
  6. package/dist/frontDoor.js +1 -1
  7. package/dist/index.js +1 -1
  8. package/dist/inlineDsl.js +1 -1
  9. package/dist/mcp/bridgeClient.js +1 -0
  10. package/dist/mcp/server.js +1 -0
  11. package/dist/mcp/tools.js +1 -0
  12. package/dist/mosaicxRunner.js +1 -1
  13. package/dist/outputPattern.js +1 -1
  14. package/dist/showcaseFeed.js +1 -1
  15. package/dist/templateDoctor.js +1 -1
  16. package/dist/utils/checkFeasibility.js +1 -1
  17. package/dist/utils/collectRenderErrors.js +1 -1
  18. package/dist/utils/enrichImageAlphaFromDoc.js +1 -1
  19. package/dist/utils/ensureFfmpeg.js +1 -1
  20. package/dist/utils/extractLayoutMeta.js +1 -1
  21. package/dist/utils/failureHints.js +1 -1
  22. package/dist/utils/ffmpegProbe.js +1 -1
  23. package/dist/utils/formatM0saicForCli.js +1 -1
  24. package/dist/utils/hashFile.js +1 -1
  25. package/dist/utils/helpGroups.js +1 -1
  26. package/dist/utils/installContext.js +1 -0
  27. package/dist/utils/invocation.js +1 -1
  28. package/dist/utils/licenseActivation.js +1 -0
  29. package/dist/utils/licenseActivationWorker.js +1 -0
  30. package/dist/utils/mosaicSpinner.js +1 -1
  31. package/dist/utils/parseDimensions.js +1 -1
  32. package/dist/utils/pathInfo.js +1 -1
  33. package/dist/utils/readJsonArg.js +1 -1
  34. package/dist/utils/renderOutcome.js +1 -1
  35. package/dist/utils/renderReport.js +1 -1
  36. package/dist/utils/renderSignals.js +1 -1
  37. package/dist/utils/renderWorkspace.js +1 -1
  38. package/dist/utils/reportOutputFormat.js +1 -0
  39. package/dist/utils/setupFfmpeg.js +1 -1
  40. package/dist/utils/telemetry.js +1 -1
  41. package/dist/utils/telemetryFlushWorker.js +1 -1
  42. package/dist/utils/telemetryUpstream.js +1 -1
  43. package/dist/utils/telemetryUsage.js +1 -1
  44. package/dist/utils/toolchainConfig.js +1 -1
  45. package/dist/utils/tutorialDuration.js +1 -1
  46. package/dist/utils/updateCheck.js +1 -1
  47. package/dist/utils/updateCheckWorker.js +1 -1
  48. package/dist/utils/validateSourceCounts.js +1 -1
  49. package/dist/utils/versions.js +1 -1
  50. package/dist/webCustomizeLink.js +1 -1
  51. package/node_modules/@m0saic/community-m/NOTICE +9 -0
  52. package/node_modules/@m0saic/community-m/release.json +2 -2
  53. package/node_modules/@m0saic/core/dist/core/buildChildMosaicSource.js +1 -1
  54. package/node_modules/@m0saic/core/dist/core/buildChunkCommands.js +1 -1
  55. package/node_modules/@m0saic/core/dist/core/buildEncodeCommands.js +1 -1
  56. package/node_modules/@m0saic/core/dist/core/buildLavfiSource.js +1 -1
  57. package/node_modules/@m0saic/core/dist/core/buildMediaSource.js +1 -1
  58. package/node_modules/@m0saic/core/dist/core/buildMosaicNode.js +1 -1
  59. package/node_modules/@m0saic/core/dist/core/buildMosaicPlanFromFile.js +1 -1
  60. package/node_modules/@m0saic/core/dist/core/buildSvgTextSource.js +1 -1
  61. package/node_modules/@m0saic/core/dist/core/buildTextRenderCommand.js +1 -1
  62. package/node_modules/@m0saic/core/dist/core/collectRefTargets.js +1 -1
  63. package/node_modules/@m0saic/core/dist/core/index.js +1 -1
  64. package/node_modules/@m0saic/core/dist/core/maskCacheDir.js +1 -1
  65. package/node_modules/@m0saic/core/dist/core/maskWorkerBridge.js +1 -1
  66. package/node_modules/@m0saic/core/dist/core/playbackPlaySpeed.js +1 -1
  67. package/node_modules/@m0saic/core/dist/core/prepareProps.js +1 -1
  68. package/node_modules/@m0saic/core/dist/core/primaryOutput.js +1 -1
  69. package/node_modules/@m0saic/core/dist/core/rasterizeMaskPng.js +1 -1
  70. package/node_modules/@m0saic/core/dist/core/rasterizeSvgMediaPng.js +1 -1
  71. package/node_modules/@m0saic/core/dist/core/refTargetTap.js +1 -1
  72. package/node_modules/@m0saic/core/dist/core/resolveMasks.js +1 -1
  73. package/node_modules/@m0saic/core/dist/core/resolveMasksSync.js +1 -1
  74. package/node_modules/@m0saic/core/dist/core/resolveStrokeRingsSync.js +1 -1
  75. package/node_modules/@m0saic/core/dist/core/roundedRectMask.js +1 -1
  76. package/node_modules/@m0saic/core/dist/core/strokeRing.js +1 -1
  77. package/node_modules/@m0saic/core/dist/core/svgRaster.js +1 -1
  78. package/node_modules/@m0saic/core/dist/defaults.js +1 -1
  79. package/node_modules/@m0saic/core/dist/ffmpeg/backgroundImageInput.js +1 -1
  80. package/node_modules/@m0saic/core/dist/ffmpeg/bufferGuard.js +1 -1
  81. package/node_modules/@m0saic/core/dist/ffmpeg/ffmpegCommands.js +1 -1
  82. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBackdropBlur.js +1 -1
  83. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBlur.js +1 -1
  84. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyBorderRadius.js +1 -1
  85. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyCamera.js +1 -1
  86. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyChromaKey.js +1 -1
  87. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyFade.js +1 -1
  88. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyGrade.js +1 -1
  89. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyMask.js +1 -1
  90. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyNoise.js +1 -1
  91. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyPixelize.js +1 -1
  92. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyRotate.js +1 -1
  93. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyStroke.js +1 -1
  94. package/node_modules/@m0saic/core/dist/ffmpeg/filters/applyTileEffects.js +1 -1
  95. package/node_modules/@m0saic/core/dist/ffmpeg/filters/coverCrop.js +1 -1
  96. package/node_modules/@m0saic/core/dist/ffmpeg/filters/index.js +1 -1
  97. package/node_modules/@m0saic/core/dist/ffmpeg/filters/sourceRectCrop.js +1 -1
  98. package/node_modules/@m0saic/core/dist/ffmpeg/gridLowering.js +1 -1
  99. package/node_modules/@m0saic/core/dist/ffmpeg/index.js +1 -1
  100. package/node_modules/@m0saic/core/dist/ffmpeg/splitAvMux.js +1 -1
  101. package/node_modules/@m0saic/core/dist/ffmpeg/threadGuard.js +1 -1
  102. package/node_modules/@m0saic/core/dist/flatten/index.js +1 -1
  103. package/node_modules/@m0saic/core/dist/fs/index.js +1 -1
  104. package/node_modules/@m0saic/core/dist/fs/tempWorkspace.js +1 -1
  105. package/node_modules/@m0saic/core/dist/index.js +1 -1
  106. package/node_modules/@m0saic/core/dist/media/buildAssetManifestFromInputs.js +1 -1
  107. package/node_modules/@m0saic/core/dist/media/buildMediaRegistryFromInput.js +1 -1
  108. package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromInvocationProps.js +1 -1
  109. package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromMosaicRenderableFile.js +1 -1
  110. package/node_modules/@m0saic/core/dist/media/collectMediaInputsFromProps.js +1 -1
  111. package/node_modules/@m0saic/core/dist/media/index.js +1 -1
  112. package/node_modules/@m0saic/core/dist/media/internalMintAsset.js +1 -1
  113. package/node_modules/@m0saic/core/dist/media/remoteUrl.js +1 -1
  114. package/node_modules/@m0saic/core/dist/media/stageUnsafeFilenames.js +1 -1
  115. package/node_modules/@m0saic/core/dist/media/types.js +1 -1
  116. package/node_modules/@m0saic/core/dist/output/index.js +1 -1
  117. package/node_modules/@m0saic/core/dist/output/resolveOutputFormat.js +1 -1
  118. package/node_modules/@m0saic/core/dist/output/types.js +1 -1
  119. package/node_modules/@m0saic/core/dist/probe/cellLuminanceProbe.js +1 -1
  120. package/node_modules/@m0saic/core/dist/probe/extractSubtitleCues.js +1 -1
  121. package/node_modules/@m0saic/core/dist/probe/helpers.js +1 -1
  122. package/node_modules/@m0saic/core/dist/probe/index.js +1 -1
  123. package/node_modules/@m0saic/core/dist/probe/luminanceProbe.js +1 -1
  124. package/node_modules/@m0saic/core/dist/probe/probeMedia.js +1 -1
  125. package/node_modules/@m0saic/core/dist/probe/runFFprobe.js +1 -1
  126. package/node_modules/@m0saic/core/dist/probe/types.js +1 -1
  127. package/node_modules/@m0saic/core/dist/runtime/engineRedaction.js +1 -1
  128. package/node_modules/@m0saic/core/dist/runtime/ffmpegFailure.js +1 -1
  129. package/node_modules/@m0saic/core/dist/runtime/filterPreflight.js +1 -1
  130. package/node_modules/@m0saic/core/dist/runtime/hashFile.js +1 -1
  131. package/node_modules/@m0saic/core/dist/runtime/index.js +1 -1
  132. package/node_modules/@m0saic/core/dist/runtime/pathInfo.js +1 -1
  133. package/node_modules/@m0saic/core/dist/runtime/perfHeatmap.js +1 -1
  134. package/node_modules/@m0saic/core/dist/runtime/perfReport.js +1 -1
  135. package/node_modules/@m0saic/core/dist/runtime/pipelineM0p.js +1 -1
  136. package/node_modules/@m0saic/core/dist/runtime/renderCostModel.constants.js +1 -1
  137. package/node_modules/@m0saic/core/dist/runtime/renderCostModel.js +1 -1
  138. package/node_modules/@m0saic/core/dist/runtime/renderReport.js +1 -1
  139. package/node_modules/@m0saic/core/dist/runtime/renderSidecars.js +1 -1
  140. package/node_modules/@m0saic/core/dist/runtime/resolveMosaicx.js +1 -1
  141. package/node_modules/@m0saic/core/dist/runtime/runPlan.js +1 -1
  142. package/node_modules/@m0saic/core/dist/runtime/types.js +1 -1
  143. package/node_modules/@m0saic/core/dist/runtime/upstream.js +1 -1
  144. package/node_modules/@m0saic/core/dist/runtime/writeSidecars.js +1 -1
  145. package/node_modules/@m0saic/core/dist/types/chunk.js +1 -1
  146. package/node_modules/@m0saic/core/dist/types/index.js +1 -1
  147. package/node_modules/@m0saic/core/dist/types/mosaic-plan.js +1 -1
  148. package/node_modules/@m0saic/core/dist/utils/assertTiming.js +1 -1
  149. package/node_modules/@m0saic/core/dist/utils/command.js +1 -1
  150. package/node_modules/@m0saic/core/dist/utils/createEngineContext.js +1 -1
  151. package/node_modules/@m0saic/core/dist/utils/createTemplateRenderCache.js +1 -1
  152. package/node_modules/@m0saic/core/dist/utils/ffmpegColor.js +1 -1
  153. package/node_modules/@m0saic/core/dist/utils/formatDuration.js +1 -1
  154. package/node_modules/@m0saic/core/dist/utils/fsSafeId.js +1 -1
  155. package/node_modules/@m0saic/core/dist/utils/index.js +1 -1
  156. package/node_modules/@m0saic/core/dist/utils/lowerRenderableToMosaicDocument.js +1 -1
  157. package/node_modules/@m0saic/core/dist/utils/movSafeCodec.js +1 -1
  158. package/node_modules/@m0saic/core/dist/utils/resolveBoxFrac.js +1 -1
  159. package/node_modules/@m0saic/core/dist/validate/index.js +1 -1
  160. package/node_modules/@m0saic/core/scripts/mask-rasterize-core.js +1 -1
  161. package/node_modules/@m0saic/core/scripts/mask-rasterize-worker.js +1 -1
  162. package/node_modules/@m0saic/core/scripts/mask-worker-thread.js +1 -1
  163. package/node_modules/@m0saic/dictionary/NOTICE +9 -0
  164. package/node_modules/@m0saic/dictionary/README.md +315 -0
  165. package/node_modules/@m0saic/dictionary/package.json +1 -1
  166. package/node_modules/@m0saic/dsl/package.json +1 -1
  167. package/node_modules/@m0saic/dsl-file-formats/dist/cjs/agent.js +6 -0
  168. package/node_modules/@m0saic/dsl-file-formats/dist/cjs/m0/parseM0File.js +1 -1
  169. package/node_modules/@m0saic/dsl-file-formats/dist/cjs/m0/serializeM0File.js +2 -2
  170. package/node_modules/@m0saic/dsl-file-formats/dist/cjs/m0c/m0cFile.js +3 -3
  171. package/node_modules/@m0saic/dsl-file-formats/dist/cjs/types.js +1 -1
  172. package/node_modules/@m0saic/dsl-file-formats/package.json +1 -1
  173. package/node_modules/@m0saic/dsl-stdlib/dist/cjs/builders/bakeM0cInsets.js +1 -0
  174. package/node_modules/@m0saic/dsl-stdlib/dist/cjs/builders/index.js +1 -1
  175. package/node_modules/@m0saic/dsl-stdlib/package.json +1 -1
  176. package/node_modules/@m0saic/knowledge/LICENSE +21 -0
  177. package/node_modules/@m0saic/knowledge/README.md +71 -0
  178. package/node_modules/@m0saic/knowledge/dist/index.js +1 -0
  179. package/node_modules/@m0saic/knowledge/docs/README.md +60 -0
  180. package/node_modules/@m0saic/knowledge/docs/file-formats/m0-iteration-protocol.md +120 -0
  181. package/node_modules/@m0saic/knowledge/docs/file-formats/m0p-and-custom-field.md +195 -0
  182. package/node_modules/@m0saic/knowledge/docs/handbook/README.md +27 -0
  183. package/node_modules/@m0saic/knowledge/docs/handbook/composition-arithmetic.md +278 -0
  184. package/node_modules/@m0saic/knowledge/docs/handbook/dsl-complexity.md +75 -0
  185. package/node_modules/@m0saic/knowledge/docs/handbook/dsl-rules.md +367 -0
  186. package/node_modules/@m0saic/knowledge/docs/handbook/feasibility-precision-quantization.md +591 -0
  187. package/node_modules/@m0saic/knowledge/docs/handbook/m0-construction-methods.md +201 -0
  188. package/node_modules/@m0saic/knowledge/docs/handbook/precision-tiers.md +84 -0
  189. package/node_modules/@m0saic/knowledge/docs/m0saic-thesis.md +95 -0
  190. package/node_modules/@m0saic/knowledge/docs/runtime/README.md +24 -0
  191. package/node_modules/@m0saic/knowledge/docs/runtime/agent-at-the-canvas.md +108 -0
  192. package/node_modules/@m0saic/knowledge/docs/runtime/cli-usage.md +475 -0
  193. package/node_modules/@m0saic/knowledge/docs/runtime/ffmpeg-expression-limits.md +117 -0
  194. package/node_modules/@m0saic/knowledge/docs/runtime/reduce-to-one.md +96 -0
  195. package/node_modules/@m0saic/knowledge/docs/skills/README.md +40 -0
  196. package/node_modules/@m0saic/knowledge/docs/skills/axis-and-geometry.md +103 -0
  197. package/node_modules/@m0saic/knowledge/docs/skills/dsl-stdlib-method-catalog.md +7 -0
  198. package/node_modules/@m0saic/knowledge/docs/skills/identity.md +123 -0
  199. package/node_modules/@m0saic/knowledge/docs/skills/labels-and-masks.md +170 -0
  200. package/node_modules/@m0saic/knowledge/docs/skills/m0saic-string-generation.md +251 -0
  201. package/node_modules/@m0saic/knowledge/docs/skills/more-atoms-not-bigger-atoms.md +77 -0
  202. package/node_modules/@m0saic/knowledge/docs/skills/overlay-semantics.md +194 -0
  203. package/node_modules/@m0saic/knowledge/docs/skills/parse-apis.md +79 -0
  204. package/node_modules/@m0saic/knowledge/docs/skills/passthrough-semantics.md +136 -0
  205. package/node_modules/@m0saic/knowledge/docs/skills/structural-construction.md +86 -0
  206. package/node_modules/@m0saic/knowledge/docs/skills/text-in-templates.md +126 -0
  207. package/node_modules/@m0saic/knowledge/docs/skills/zero-overlay-analysis.md +87 -0
  208. package/node_modules/@m0saic/knowledge/docs/templates/README.md +65 -0
  209. package/node_modules/@m0saic/knowledge/docs/templates/capability-templates.md +72 -0
  210. package/node_modules/@m0saic/knowledge/docs/templates/construction-strategy.md +329 -0
  211. package/node_modules/@m0saic/knowledge/docs/templates/data-pipeline.md +324 -0
  212. package/node_modules/@m0saic/knowledge/docs/templates/emission-patterns.md +130 -0
  213. package/node_modules/@m0saic/knowledge/docs/templates/geometry-recipes.md +248 -0
  214. package/node_modules/@m0saic/knowledge/docs/templates/layout-contract.md +168 -0
  215. package/node_modules/@m0saic/knowledge/docs/templates/output-resolution-tree.md +210 -0
  216. package/node_modules/@m0saic/knowledge/docs/templates/patterns/case-study-lessons.md +69 -0
  217. package/node_modules/@m0saic/knowledge/docs/templates/patterns/perf-authoring-rules.md +100 -0
  218. package/node_modules/@m0saic/knowledge/docs/templates/patterns/primitive-extraction-pattern.md +103 -0
  219. package/node_modules/@m0saic/knowledge/docs/templates/philosophy-and-contract.md +310 -0
  220. package/node_modules/@m0saic/knowledge/docs/templates/recursion-nested-rendering.md +154 -0
  221. package/node_modules/@m0saic/knowledge/docs/templates/reference/grid.md +104 -0
  222. package/node_modules/@m0saic/knowledge/docs/templates/reference/json-prop-type.md +169 -0
  223. package/node_modules/@m0saic/knowledge/docs/templates/reference/mosaic-color.md +81 -0
  224. package/node_modules/@m0saic/knowledge/docs/templates/reference/mosaic-placement-props.md +103 -0
  225. package/node_modules/@m0saic/knowledge/docs/templates/reference/prop-bindings.md +338 -0
  226. package/node_modules/@m0saic/knowledge/docs/templates/reference/template-flags.md +236 -0
  227. package/node_modules/@m0saic/knowledge/docs/templates/render-lifecycle.md +117 -0
  228. package/node_modules/@m0saic/knowledge/docs/templates/rendering-model-contract.md +392 -0
  229. package/node_modules/@m0saic/knowledge/docs/templates/standalone-pack-authoring.md +309 -0
  230. package/node_modules/@m0saic/knowledge/docs/templates/theming.md +81 -0
  231. package/node_modules/@m0saic/knowledge/docs/templates/ui-controls.md +150 -0
  232. package/node_modules/@m0saic/knowledge/package.json +6 -0
  233. package/node_modules/@m0saic/momo-types/README.md +109 -0
  234. package/node_modules/@m0saic/momo-types/dist/agent.js +1 -6
  235. package/node_modules/@m0saic/momo-types/dist/context.js +1 -1
  236. package/node_modules/@m0saic/momo-types/package.json +1 -1
  237. package/node_modules/@m0saic/platform/README.md +3 -0
  238. package/node_modules/@m0saic/platform/dist/cjs/index.js +1 -1
  239. package/node_modules/@m0saic/platform/dist/cjs/mosaic/outputKind/outputKind.js +1 -1
  240. package/node_modules/@m0saic/platform/dist/cjs/mosaic/propBindings/index.js +1 -1
  241. package/node_modules/@m0saic/platform/dist/cjs/mosaic/propBindings/propBindings.js +1 -1
  242. package/node_modules/@m0saic/platform/dist/cjs/mosaic/validate/validateSources.js +1 -1
  243. package/node_modules/@m0saic/platform/dist/cjs/packages/mosaicPackages.js +1 -0
  244. package/node_modules/@m0saic/platform/dist/cjs/paths/m0saicRoot.js +1 -1
  245. package/node_modules/@m0saic/platform/dist/cjs/telemetry/lifecycle.js +1 -1
  246. package/node_modules/@m0saic/platform/dist/cjs/telemetry/preview.js +1 -1
  247. package/node_modules/@m0saic/platform/dist/cjs/telemetry/sender.js +1 -1
  248. package/node_modules/@m0saic/platform/dist/cjs/telemetry/usageRecorder.js +1 -1
  249. package/node_modules/@m0saic/platform/dist/cjs/telemetry/usageStore.js +3 -3
  250. package/node_modules/@m0saic/platform/dist/cjs/template-repos/index.js +1 -1
  251. package/node_modules/@m0saic/platform/dist/cjs/template-repos/loadTemplateRepoFromPath.js +4 -4
  252. package/node_modules/@m0saic/platform/dist/cjs/template-repos/templateCatalogSidecars.js +2 -0
  253. package/node_modules/@m0saic/platform/dist/cjs/templateCatalog/index.js +1 -0
  254. package/node_modules/@m0saic/platform/dist/cjs/templateCatalog/templateCatalog.js +1 -0
  255. package/node_modules/@m0saic/platform/dist/cjs/toolchain/ffmpeg/baseline.json +25 -97
  256. package/node_modules/@m0saic/platform/dist/cjs/toolchain/ffmpeg/index.js +1 -1
  257. package/node_modules/@m0saic/platform/dist/cjs/toolchain/ffmpeg/install.js +2 -2
  258. package/node_modules/@m0saic/platform/dist/cjs/toolchain/goldenFfmpeg.js +6 -6
  259. package/node_modules/@m0saic/platform/package.json +1 -1
  260. package/node_modules/@m0saic/product/dist/communityRelease.js +1 -1
  261. package/node_modules/@m0saic/product/dist/freeTierLicense.js +1 -1
  262. package/node_modules/@m0saic/product/dist/index.js +1 -1
  263. package/node_modules/@m0saic/product/dist/licenseActivationNotice.js +1 -0
  264. package/node_modules/@m0saic/product/dist/licenseFile.js +1 -0
  265. package/node_modules/@m0saic/product/dist/licenseToken.js +1 -1
  266. package/node_modules/@m0saic/product/dist/makeScratchPath.js +1 -0
  267. package/node_modules/@m0saic/product/dist/postRenderWrapper.js +1 -1
  268. package/node_modules/@m0saic/product/dist/publicKeys.js +1 -1
  269. package/node_modules/@m0saic/product/dist/revokedKeys.js +1 -1
  270. package/node_modules/@m0saic/product/dist/upstreamDefaults.js +1 -1
  271. package/node_modules/@m0saic/product/dist/workspaceScaffold.js +1 -0
  272. package/node_modules/@m0saic/template-utils/dist/brand/hello-world/helloWorld.js +1 -1
  273. package/node_modules/@m0saic/template-utils/dist/geometry-contract/frameResolution.js +1 -1
  274. package/node_modules/@m0saic/template-utils/dist/geometry-contract/index.js +1 -1
  275. package/node_modules/@m0saic/template-utils/dist/geometry-contract/layoutConstraint.js +2 -2
  276. package/node_modules/@m0saic/template-utils/dist/m0saic/loadSession.js +1 -1
  277. package/node_modules/@m0saic/template-utils/dist/render/createDesignContext.js +1 -1
  278. package/node_modules/@m0saic/template-utils/dist/sources/makeErrorMosaic.js +2 -2
  279. package/node_modules/@m0saic/template-utils/dist/sources/svgTextSource.js +1 -1
  280. package/node_modules/@m0saic/template-utils/dist/template/auditRenderedTemplate.js +5 -5
  281. package/node_modules/@m0saic/template-utils/dist/template/auditSchemaConventions.js +1 -1
  282. package/node_modules/@m0saic/template-utils/dist/template/defineMosaicTemplate.js +1 -1
  283. package/node_modules/@m0saic/template-utils/dist/template/resolveTemplateOutputHints.js +1 -1
  284. package/node_modules/@m0saic/template-utils/dist/template/templateCatalogStore.js +1 -0
  285. package/node_modules/@m0saic/template-utils/dist/template/templateConventions.js +4 -4
  286. package/node_modules/@m0saic/template-utils/dist/template/templateRegistry.js +3 -3
  287. package/node_modules/@m0saic/template-utils/dist/template/validateTemplateProps.js +1 -1
  288. package/node_modules/@m0saic/template-utils/dist/text/fitText.js +6 -6
  289. package/node_modules/@m0saic/template-utils/package.json +1 -1
  290. package/node_modules/@m0saic/templates/NOTICE +9 -0
  291. package/node_modules/@m0saic/templates/dist/catalog.js +1 -0
  292. package/node_modules/@m0saic/templates/dist/freeze.js +8 -8
  293. package/node_modules/@m0saic/templates/dist/index.js +1 -1
  294. package/node_modules/@m0saic/templates/dist/m0saic/_shared/canvas-handles.js +1 -0
  295. package/node_modules/@m0saic/templates/dist/m0saic/_shared/stand-in.js +1 -0
  296. package/node_modules/@m0saic/templates/dist/m0saic/agents/commit-feed/index.js +1 -1
  297. package/node_modules/@m0saic/templates/dist/m0saic/agents/commit-feed/v2/commit-feed.js +1 -0
  298. package/node_modules/@m0saic/templates/dist/m0saic/agents/commit-feed/v2/index.js +1 -0
  299. package/node_modules/@m0saic/templates/dist/m0saic/agents/trace-timeline/index.js +1 -1
  300. package/node_modules/@m0saic/templates/dist/m0saic/agents/trace-timeline/v2/index.js +1 -0
  301. package/node_modules/@m0saic/templates/dist/m0saic/agents/trace-timeline/v2/trace-timeline.js +1 -0
  302. package/node_modules/@m0saic/templates/dist/m0saic/alpine/_shared/alpine-conventions.js +1 -0
  303. package/node_modules/@m0saic/templates/dist/m0saic/alpine/bar-graph/v2/bar-graph.js +1 -0
  304. package/node_modules/@m0saic/templates/dist/m0saic/alpine/bar-graph/v2/index.js +1 -0
  305. package/node_modules/@m0saic/templates/dist/m0saic/alpine/commit-feed/v3/commit-feed.js +1 -0
  306. package/node_modules/@m0saic/templates/dist/m0saic/alpine/commit-feed/v3/index.js +1 -0
  307. package/node_modules/@m0saic/templates/dist/m0saic/alpine/contributor-table/v2/contributor-table.js +1 -0
  308. package/node_modules/@m0saic/templates/dist/m0saic/alpine/contributor-table/v2/index.js +1 -0
  309. package/node_modules/@m0saic/templates/dist/m0saic/alpine/donut/v4/donut.js +1 -0
  310. package/node_modules/@m0saic/templates/dist/m0saic/alpine/donut/v4/index.js +1 -0
  311. package/node_modules/@m0saic/templates/dist/m0saic/alpine/heatmap/v3/heatmap.js +1 -0
  312. package/node_modules/@m0saic/templates/dist/m0saic/alpine/heatmap/v3/index.js +1 -0
  313. package/node_modules/@m0saic/templates/dist/m0saic/alpine/index.js +1 -1
  314. package/node_modules/@m0saic/templates/dist/m0saic/alpine/kpi-card/v3/index.js +1 -0
  315. package/node_modules/@m0saic/templates/dist/m0saic/alpine/kpi-card/v3/kpi-card.js +1 -0
  316. package/node_modules/@m0saic/templates/dist/m0saic/alpine/leaderboard/v2/index.js +1 -0
  317. package/node_modules/@m0saic/templates/dist/m0saic/alpine/leaderboard/v2/leaderboard.js +1 -0
  318. package/node_modules/@m0saic/templates/dist/m0saic/alpine/line-chart/v3/index.js +1 -0
  319. package/node_modules/@m0saic/templates/dist/m0saic/alpine/line-chart/v3/line-chart.js +1 -0
  320. package/node_modules/@m0saic/templates/dist/m0saic/alpine/progress-card/v2/index.js +1 -0
  321. package/node_modules/@m0saic/templates/dist/m0saic/alpine/progress-card/v2/progress-card.js +1 -0
  322. package/node_modules/@m0saic/templates/dist/m0saic/alpine/stat-card/v2/index.js +1 -0
  323. package/node_modules/@m0saic/templates/dist/m0saic/alpine/stat-card/v2/stat-card.js +1 -0
  324. package/node_modules/@m0saic/templates/dist/m0saic/alpine/timeline/v3/index.js +1 -0
  325. package/node_modules/@m0saic/templates/dist/m0saic/alpine/timeline/v3/timeline.js +4 -0
  326. package/node_modules/@m0saic/templates/dist/m0saic/alpine/treemap/v3/index.js +1 -0
  327. package/node_modules/@m0saic/templates/dist/m0saic/alpine/treemap/v3/treemap.js +1 -0
  328. package/node_modules/@m0saic/templates/dist/m0saic/benchmark/index.js +1 -1
  329. package/node_modules/@m0saic/templates/dist/m0saic/benchmark/report/v2/index.js +1 -0
  330. package/node_modules/@m0saic/templates/dist/m0saic/benchmark/report/v2/report.js +1 -0
  331. package/node_modules/@m0saic/templates/dist/m0saic/brand/business-card/v2/business-card.js +1 -0
  332. package/node_modules/@m0saic/templates/dist/m0saic/brand/business-card/v2/index.js +1 -0
  333. package/node_modules/@m0saic/templates/dist/m0saic/brand/index.js +1 -1
  334. package/node_modules/@m0saic/templates/dist/m0saic/brand/logo/v4/index.js +1 -0
  335. package/node_modules/@m0saic/templates/dist/m0saic/brand/logo/v4/logo_runner.js +1 -0
  336. package/node_modules/@m0saic/templates/dist/m0saic/charts/bar-graph/v3/bar-graph.js +1 -0
  337. package/node_modules/@m0saic/templates/dist/m0saic/charts/bar-graph/v3/index.js +1 -0
  338. package/node_modules/@m0saic/templates/dist/m0saic/charts/donut/v5/donut.js +1 -0
  339. package/node_modules/@m0saic/templates/dist/m0saic/charts/donut/v5/index.js +1 -0
  340. package/node_modules/@m0saic/templates/dist/m0saic/charts/index.js +1 -1
  341. package/node_modules/@m0saic/templates/dist/m0saic/charts/line-chart/v2/index.js +1 -0
  342. package/node_modules/@m0saic/templates/dist/m0saic/charts/line-chart/v2/line-chart.js +1 -0
  343. package/node_modules/@m0saic/templates/dist/m0saic/charts/stat-card/v2/index.js +1 -0
  344. package/node_modules/@m0saic/templates/dist/m0saic/charts/stat-card/v2/stat-card.js +1 -0
  345. package/node_modules/@m0saic/templates/dist/m0saic/code/index.js +1 -1
  346. package/node_modules/@m0saic/templates/dist/m0saic/code/snippet-morph/v2/snippet-morph.js +3 -0
  347. package/node_modules/@m0saic/templates/dist/m0saic/collage/image-collage/v2/image-collage.js +1 -0
  348. package/node_modules/@m0saic/templates/dist/m0saic/collage/image-collage/v2/index.js +1 -0
  349. package/node_modules/@m0saic/templates/dist/m0saic/collage/index.js +1 -1
  350. package/node_modules/@m0saic/templates/dist/m0saic/dsl-tutorial/index.js +1 -1
  351. package/node_modules/@m0saic/templates/dist/m0saic/dsl-tutorial/v2/dsl-tutorial.js +1 -0
  352. package/node_modules/@m0saic/templates/dist/m0saic/dsl-tutorial/v2/index.js +1 -0
  353. package/node_modules/@m0saic/templates/dist/m0saic/github/year-card/index.js +1 -1
  354. package/node_modules/@m0saic/templates/dist/m0saic/github/year-card/v2/index.js +1 -0
  355. package/node_modules/@m0saic/templates/dist/m0saic/github/year-card/v2/year-card.js +1 -0
  356. package/node_modules/@m0saic/templates/dist/m0saic/hero/ffmpeg-pulse/index.js +1 -1
  357. package/node_modules/@m0saic/templates/dist/m0saic/hero/ffmpeg-pulse/runner/v2/index.js +1 -0
  358. package/node_modules/@m0saic/templates/dist/m0saic/hero/ffmpeg-pulse/runner/v2/runner.js +1 -0
  359. package/node_modules/@m0saic/templates/dist/m0saic/media/barcode/v2/barcode.js +1 -0
  360. package/node_modules/@m0saic/templates/dist/m0saic/media/barcode/v2/index.js +1 -0
  361. package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/index.js +1 -1
  362. package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/v1/tutorial.js +1 -1
  363. package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/v2/blur-regions.js +1 -0
  364. package/node_modules/@m0saic/templates/dist/m0saic/media/blur-regions/v2/index.js +1 -0
  365. package/node_modules/@m0saic/templates/dist/m0saic/media/highlights/index.js +1 -1
  366. package/node_modules/@m0saic/templates/dist/m0saic/media/highlights/v2/highlights.js +1 -0
  367. package/node_modules/@m0saic/templates/dist/m0saic/media/highlights/v2/index.js +1 -0
  368. package/node_modules/@m0saic/templates/dist/m0saic/media/index.js +1 -1
  369. package/node_modules/@m0saic/templates/dist/m0saic/media/logo-animate/index.js +1 -1
  370. package/node_modules/@m0saic/templates/dist/m0saic/media/logo-animate/v2/index.js +1 -0
  371. package/node_modules/@m0saic/templates/dist/m0saic/media/logo-animate/v2/logo-animate.js +1 -0
  372. package/node_modules/@m0saic/templates/dist/m0saic/media/metadata-stamp/index.js +1 -1
  373. package/node_modules/@m0saic/templates/dist/m0saic/media/metadata-stamp/v2/index.js +1 -0
  374. package/node_modules/@m0saic/templates/dist/m0saic/media/metadata-stamp/v2/metadata-stamp.js +1 -0
  375. package/node_modules/@m0saic/templates/dist/m0saic/media/qr/code/v2/index.js +1 -0
  376. package/node_modules/@m0saic/templates/dist/m0saic/media/qr/code/v2/qr-code.js +1 -0
  377. package/node_modules/@m0saic/templates/dist/m0saic/media/qr/index.js +1 -1
  378. package/node_modules/@m0saic/templates/dist/m0saic/media/qr/stamp/v2/qr-stamp-custom.js +1 -0
  379. package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid/index.js +1 -1
  380. package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid/v3/index.js +1 -0
  381. package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid/v3/screencap-grid.js +4 -0
  382. package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid_aspect_safe/index.js +1 -1
  383. package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid_aspect_safe/v2/index.js +1 -0
  384. package/node_modules/@m0saic/templates/dist/m0saic/media/screencap_grid_aspect_safe/v2/screencap-grid-aspect-safe.js +3 -0
  385. package/node_modules/@m0saic/templates/dist/m0saic/media/scroll_wall/index.js +1 -1
  386. package/node_modules/@m0saic/templates/dist/m0saic/media/scroll_wall/v2/index.js +1 -0
  387. package/node_modules/@m0saic/templates/dist/m0saic/media/scroll_wall/v2/scroll-wall.js +1 -0
  388. package/node_modules/@m0saic/templates/dist/m0saic/media/subtitle-burn/index.js +1 -1
  389. package/node_modules/@m0saic/templates/dist/m0saic/media/subtitle-burn/v2/index.js +1 -0
  390. package/node_modules/@m0saic/templates/dist/m0saic/media/subtitle-burn/v2/subtitle-burn.js +4 -0
  391. package/node_modules/@m0saic/templates/dist/m0saic/media/trickplay/index.js +1 -1
  392. package/node_modules/@m0saic/templates/dist/m0saic/media/trickplay/v2/index.js +1 -0
  393. package/node_modules/@m0saic/templates/dist/m0saic/media/trickplay/v2/trickplay.js +1 -0
  394. package/node_modules/@m0saic/templates/dist/m0saic/media/video_to_png_sequence/index.js +1 -1
  395. package/node_modules/@m0saic/templates/dist/m0saic/media/video_to_png_sequence/v2/index.js +1 -0
  396. package/node_modules/@m0saic/templates/dist/m0saic/media/video_to_png_sequence/v2/video-to-png-sequence.js +1 -0
  397. package/node_modules/@m0saic/templates/dist/m0saic/media/watermark/index.js +1 -1
  398. package/node_modules/@m0saic/templates/dist/m0saic/media/watermark/v2/index.js +1 -0
  399. package/node_modules/@m0saic/templates/dist/m0saic/media/watermark/v2/watermark.js +1 -0
  400. package/node_modules/@m0saic/templates/dist/m0saic/primitives/grid/index.js +1 -1
  401. package/node_modules/@m0saic/templates/dist/m0saic/primitives/grid/v3/grid.js +1 -0
  402. package/node_modules/@m0saic/templates/dist/m0saic/social/quote-card/index.js +1 -1
  403. package/node_modules/@m0saic/templates/dist/m0saic/social/quote-card/v2/index.js +1 -0
  404. package/node_modules/@m0saic/templates/dist/m0saic/social/quote-card/v2/quote-card.js +1 -0
  405. package/node_modules/@m0saic/templates/dist/m0saic/story/index.js +1 -1
  406. package/node_modules/@m0saic/templates/dist/m0saic/story/narrated-chapters/index.js +1 -1
  407. package/node_modules/@m0saic/templates/dist/m0saic/story/narrated-chapters/v2/index.js +1 -0
  408. package/node_modules/@m0saic/templates/dist/m0saic/story/narrated-chapters/v2/narrated-chapters.js +4 -0
  409. package/node_modules/@m0saic/templates/dist/m0saic/story/scrapbook/v2/index.js +1 -0
  410. package/node_modules/@m0saic/templates/dist/m0saic/story/scrapbook/v2/props.js +1 -0
  411. package/node_modules/@m0saic/templates/dist/m0saic/story/scrapbook/v2/scrapbook.js +1 -0
  412. package/node_modules/@m0saic/templates/dist/m0saic/theming/index.js +1 -1
  413. package/node_modules/@m0saic/templates/dist/m0saic/theming/v2/index.js +1 -0
  414. package/node_modules/@m0saic/templates/dist/m0saic/theming/v2/theming.js +1 -0
  415. package/node_modules/@m0saic/templates/dist/m0saic/web/index.js +1 -1
  416. package/node_modules/@m0saic/templates/dist/m0saic/web/page-skeleton/v2/index.js +1 -0
  417. package/node_modules/@m0saic/templates/dist/m0saic/web/page-skeleton/v2/page-skeleton.js +1 -0
  418. package/node_modules/@m0saic/templates/dist/m0saic/wireframe/base/v3/index.js +1 -0
  419. package/node_modules/@m0saic/templates/dist/m0saic/wireframe/base/v3/wireframe.js +1 -0
  420. package/node_modules/@m0saic/templates/dist/m0saic/wireframe/index.js +1 -1
  421. package/node_modules/@m0saic/templates/dist/repo.js +1 -1
  422. package/node_modules/@m0saic/templates/dist/template-catalog.json +5429 -0
  423. package/node_modules/@m0saic/templates/dist/template-registry.js +1 -1
  424. package/node_modules/@m0saic/templates/dist/web.js +1 -1
  425. package/node_modules/@m0saic/templates/package.json +1 -1
  426. package/node_modules/@m0saic/templates/template-catalog.json +5429 -0
  427. package/node_modules/@m0saic/templates/template-manifest.json +1030 -286
  428. package/node_modules/@m0saic/templates/web-template-ids.json +38 -0
  429. package/node_modules/@m0saic/templates-advanced/NOTICE +9 -0
  430. package/node_modules/@m0saic/text/package.json +1 -1
  431. package/node_modules/@m0saic/types/dist/analytics/consent.js +1 -1
  432. package/node_modules/@m0saic/types/dist/analytics/event.js +1 -1
  433. package/node_modules/@m0saic/types/dist/analytics/usageMetrics.js +1 -1
  434. package/node_modules/@m0saic/types/dist/identifiers/identifiers.js +1 -1
  435. package/node_modules/@m0saic/types/dist/telemetry/ffmpegFailure.js +1 -1
  436. package/node_modules/@m0saic/types/dist/template/template.js +1 -1
  437. package/node_modules/@m0saic/types/package.json +1 -1
  438. package/node_modules/@m0saic/types-internal/dist/analytics/featureKeys.js +1 -1
  439. package/package.json +13 -11
  440. package/resources/starter-base/starter-base.json +10 -0
  441. package/resources/starter-base/starter-base.tgz +0 -0
@@ -1,6 +1,6 @@
1
- "use strict";var I=Object.defineProperty;var m=(t,e)=>I(t,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,r,i){i===void 0&&(i=r);var n=Object.getOwnPropertyDescriptor(e,r);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:m(function(){return e[r]},"get")}),Object.defineProperty(t,i,n)}):(function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),__importStar=this&&this.__importStar||(function(){var t=m(function(e){return t=Object.getOwnPropertyNames||function(r){var i=[];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(i[i.length]=n);return i},t(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i=t(e),n=0;n<i.length;n++)i[n]!=="default"&&__createBinding(r,e,i[n]);return __setModuleDefault(r,e),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveTemplateRepoEntry=resolveTemplateRepoEntry,exports.loadTemplateRepoFromPath=loadTemplateRepoFromPath;const fs=__importStar(require("node:fs")),path=__importStar(require("node:path")),node_url_1=require("node:url"),types_1=require("@m0saic/types"),validateTemplateRoles_1=require("./validateTemplateRoles"),hostFirstResolution_1=require("./hostFirstResolution"),parseTemplateId_1=require("../templateId/parseTemplateId"),nativeImport=new Function("specifier","return import(specifier)"),STAMP_SKIP_DIRS=new Set(["node_modules",".git",".cache"]);function newestMtimeMs(t,e=5e3){let r=null,i=0;const n=[t];for(;n.length>0&&i<e;){const a=n.pop();let o;try{o=fs.readdirSync(a,{withFileTypes:!0})}catch{continue}for(const s of o){if(i>=e)break;if(s.isDirectory()){STAMP_SKIP_DIRS.has(s.name)||n.push(path.join(a,s.name));continue}i+=1;try{const d=fs.statSync(path.join(a,s.name)).mtimeMs;(r===null||d>r)&&(r=d)}catch{}}}return r}m(newestMtimeMs,"newestMtimeMs");function isEsmEntry(t){const e=path.extname(t).toLowerCase();if(e===".mjs")return!0;if(e===".cjs")return!1;let r=path.dirname(t);for(let i=0;i<10;i+=1){const n=path.join(r,"package.json");if(fileExists(n))try{return JSON.parse(fs.readFileSync(n,"utf-8")).type==="module"}catch{return!1}const a=path.dirname(r);if(a===r)break;r=a}return!1}m(isEsmEntry,"isEsmEntry");function hostRequire(){const t=globalThis.require;return typeof t=="function"?t:typeof require<"u"?require:null}m(hostRequire,"hostRequire");function evictRequireCacheSubtree(t){var e;const r=(e=hostRequire())===null||e===void 0?void 0:e.cache;if(!r)return 0;const i=new Set([t+path.sep]);try{i.add(fs.realpathSync(t)+path.sep)}catch{}let n=0;for(const a of Object.keys(r))for(const o of i)if(a.startsWith(o)){delete r[a],n+=1;break}return n}m(evictRequireCacheSubtree,"evictRequireCacheSubtree");function diag(t,e,r="error"){return{code:(0,types_1.asDiagnosticCode)(t),message:e,severity:r}}m(diag,"diag");function fileExists(t){try{return fs.statSync(t).isFile()}catch{return!1}}m(fileExists,"fileExists");function isDirectory(t){try{return fs.statSync(t).isDirectory()}catch{return!1}}m(isDirectory,"isDirectory");function resolveTemplateRepoEntry(t,e){const r=[];if(e?.entryOverridePath){const o=path.resolve(t,e.entryOverridePath);if(r.push(o),fileExists(o))return{entryPath:o,candidates:r}}if(e?.manifestEntry){const o=path.resolve(t,e.manifestEntry);if(r.push(o),fileExists(o))return{entryPath:o,candidates:r}}const i=path.resolve(t,"dist","index.js");if(r.push(i),fileExists(i))return{entryPath:i,candidates:r};const n=path.resolve(t,"dist","index.mjs");if(r.push(n),fileExists(n))return{entryPath:n,candidates:r};const a=path.resolve(t,"package.json");if(fileExists(a))try{const o=JSON.parse(fs.readFileSync(a,"utf-8")),s=(typeof o.exports=="string"?o.exports:typeof o.exports=="object"&&o.exports["."]?typeof o.exports["."]=="string"?o.exports["."]:o.exports["."].import||o.exports["."].default:void 0)||o.main;if(s){const d=path.resolve(t,s);if(r.push(d),fileExists(d))return{entryPath:d,candidates:r}}}catch{}return{entryPath:void 0,candidates:r}}m(resolveTemplateRepoEntry,"resolveTemplateRepoEntry");async function loadTemplateRepoFromPath(t,e){var r,i,n;const a=[],o=(r=e?.cwd)!==null&&r!==void 0?r:process.cwd(),s=path.resolve(o,t),d=isDirectory(s),_=!d&&fileExists(s),E=d?"folder":"file";if(!d&&!_)return a.push(diag("TEMPLATE_REPO_NOT_FOUND",`Template repo path does not exist: ${s}`)),{repo:{repoId:(0,types_1.asRepoId)(""),displayName:"",schemaVersion:0},templates:[],resolved:{inputPath:t,kind:E},diagnostics:a};if(_)return importAndValidate({inputPath:t,kind:"file",entryPath:s,repoRoot:path.dirname(s),diagnostics:a,reload:e?.reload===!0,selection:e?.selection});let h,u;const p=path.resolve(s,"template-manifest.json");if(fileExists(p)){u=p;try{const f=JSON.parse(fs.readFileSync(p,"utf-8"));if(f.schemaVersion!==1)return a.push(diag("TEMPLATE_REPO_UNSUPPORTED_SCHEMA",`template-manifest.json has unsupported schemaVersion ${f.schemaVersion} (expected 1)`)),{repo:(i=f.repo)!==null&&i!==void 0?i:{repoId:(0,types_1.asRepoId)(""),displayName:"",schemaVersion:f.schemaVersion},templates:[],manifest:f,resolved:{inputPath:t,kind:"folder",manifestPath:u},diagnostics:a};h=f}catch(f){a.push(diag("TEMPLATE_REPO_MANIFEST_PARSE_ERROR",`Failed to parse template-manifest.json: ${f.message}`))}}const y=resolveTemplateRepoEntry(s,{entryOverridePath:e?.entryOverridePath,manifestEntry:h?.entryModule});return y.entryPath?await importAndValidate({inputPath:t,kind:"folder",entryPath:y.entryPath,repoRoot:s,manifestPath:u,manifest:h,diagnostics:a,reload:e?.reload===!0,selection:e?.selection}):(a.push(diag("TEMPLATE_REPO_MISSING_BUILD",`Could not find entry module for template repo at ${s}.
1
+ "use strict";var g=Object.defineProperty;var m=(t,e)=>g(t,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,r,i){i===void 0&&(i=r);var n=Object.getOwnPropertyDescriptor(e,r);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:m(function(){return e[r]},"get")}),Object.defineProperty(t,i,n)}):(function(t,e,r,i){i===void 0&&(i=r),t[i]=e[r]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),__importStar=this&&this.__importStar||(function(){var t=m(function(e){return t=Object.getOwnPropertyNames||function(r){var i=[];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(i[i.length]=n);return i},t(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var i=t(e),n=0;n<i.length;n++)i[n]!=="default"&&__createBinding(r,e,i[n]);return __setModuleDefault(r,e),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveTemplateRepoEntry=resolveTemplateRepoEntry,exports.loadTemplateRepoFromPath=loadTemplateRepoFromPath;const fs=__importStar(require("node:fs")),path=__importStar(require("node:path")),node_url_1=require("node:url"),types_1=require("@m0saic/types"),validateTemplateRoles_1=require("./validateTemplateRoles"),hostFirstResolution_1=require("./hostFirstResolution"),parseTemplateId_1=require("../templateId/parseTemplateId"),templateCatalog_1=require("../templateCatalog/templateCatalog"),nativeImport=new Function("specifier","return import(specifier)"),STAMP_SKIP_DIRS=new Set(["node_modules",".git",".cache"]);function newestMtimeMs(t,e=5e3){let r=null,i=0;const n=[t];for(;n.length>0&&i<e;){const a=n.pop();let o;try{o=fs.readdirSync(a,{withFileTypes:!0})}catch{continue}for(const s of o){if(i>=e)break;if(s.isDirectory()){STAMP_SKIP_DIRS.has(s.name)||n.push(path.join(a,s.name));continue}i+=1;try{const p=fs.statSync(path.join(a,s.name)).mtimeMs;(r===null||p>r)&&(r=p)}catch{}}}return r}m(newestMtimeMs,"newestMtimeMs");function isEsmEntry(t){const e=path.extname(t).toLowerCase();if(e===".mjs")return!0;if(e===".cjs")return!1;let r=path.dirname(t);for(let i=0;i<10;i+=1){const n=path.join(r,"package.json");if(fileExists(n))try{return JSON.parse(fs.readFileSync(n,"utf-8")).type==="module"}catch{return!1}const a=path.dirname(r);if(a===r)break;r=a}return!1}m(isEsmEntry,"isEsmEntry");function hostRequire(){const t=globalThis.require;return typeof t=="function"?t:typeof require<"u"?require:null}m(hostRequire,"hostRequire");function evictRequireCacheSubtree(t){var e;const r=(e=hostRequire())===null||e===void 0?void 0:e.cache;if(!r)return 0;const i=new Set([t+path.sep]);try{i.add(fs.realpathSync(t)+path.sep)}catch{}let n=0;for(const a of Object.keys(r))for(const o of i)if(a.startsWith(o)){delete r[a],n+=1;break}return n}m(evictRequireCacheSubtree,"evictRequireCacheSubtree");function diag(t,e,r="error"){return{code:(0,types_1.asDiagnosticCode)(t),message:e,severity:r}}m(diag,"diag");function fileExists(t){try{return fs.statSync(t).isFile()}catch{return!1}}m(fileExists,"fileExists");function isDirectory(t){try{return fs.statSync(t).isDirectory()}catch{return!1}}m(isDirectory,"isDirectory");function resolveTemplateRepoEntry(t,e){const r=[];if(e?.entryOverridePath){const o=path.resolve(t,e.entryOverridePath);if(r.push(o),fileExists(o))return{entryPath:o,candidates:r}}if(e?.manifestEntry){const o=path.resolve(t,e.manifestEntry);if(r.push(o),fileExists(o))return{entryPath:o,candidates:r}}const i=path.resolve(t,"dist","index.js");if(r.push(i),fileExists(i))return{entryPath:i,candidates:r};const n=path.resolve(t,"dist","index.mjs");if(r.push(n),fileExists(n))return{entryPath:n,candidates:r};const a=path.resolve(t,"package.json");if(fileExists(a))try{const o=JSON.parse(fs.readFileSync(a,"utf-8")),s=(typeof o.exports=="string"?o.exports:typeof o.exports=="object"&&o.exports["."]?typeof o.exports["."]=="string"?o.exports["."]:o.exports["."].import||o.exports["."].default:void 0)||o.main;if(s){const p=path.resolve(t,s);if(r.push(p),fileExists(p))return{entryPath:p,candidates:r}}}catch{}return{entryPath:void 0,candidates:r}}m(resolveTemplateRepoEntry,"resolveTemplateRepoEntry");async function loadTemplateRepoFromPath(t,e){var r,i,n;const a=[],o=(r=e?.cwd)!==null&&r!==void 0?r:process.cwd(),s=path.resolve(o,t),p=isDirectory(s),v=!p&&fileExists(s),P=p?"folder":"file";if(!p&&!v)return a.push(diag("TEMPLATE_REPO_NOT_FOUND",`Template repo path does not exist: ${s}`)),{repo:{repoId:(0,types_1.asRepoId)(""),displayName:"",schemaVersion:0},templates:[],resolved:{inputPath:t,kind:P},diagnostics:a};if(v)return importAndValidate({inputPath:t,kind:"file",entryPath:s,repoRoot:path.dirname(s),diagnostics:a,reload:e?.reload===!0,selection:e?.selection});let h,c;const d=path.resolve(s,"template-manifest.json");if(fileExists(d)){c=d;try{const f=JSON.parse(fs.readFileSync(d,"utf-8"));if(f.schemaVersion!==1)return a.push(diag("TEMPLATE_REPO_UNSUPPORTED_SCHEMA",`template-manifest.json has unsupported schemaVersion ${f.schemaVersion} (expected 1)`)),{repo:(i=f.repo)!==null&&i!==void 0?i:{repoId:(0,types_1.asRepoId)(""),displayName:"",schemaVersion:f.schemaVersion},templates:[],manifest:f,resolved:{inputPath:t,kind:"folder",manifestPath:c},diagnostics:a};h=f}catch(f){a.push(diag("TEMPLATE_REPO_MANIFEST_PARSE_ERROR",`Failed to parse template-manifest.json: ${f.message}`))}}const E=resolveTemplateRepoEntry(s,{entryOverridePath:e?.entryOverridePath,manifestEntry:h?.entryModule});return E.entryPath?await importAndValidate({inputPath:t,kind:"folder",entryPath:E.entryPath,repoRoot:s,manifestPath:c,manifest:h,diagnostics:a,reload:e?.reload===!0,selection:e?.selection}):(a.push(diag("TEMPLATE_REPO_MISSING_BUILD",`Could not find entry module for template repo at ${s}.
2
2
  Checked:
3
- ${y.candidates.map(f=>` - ${f}`).join(`
3
+ ${E.candidates.map(f=>` - ${f}`).join(`
4
4
  `)}
5
- Hint: Run the repo's build step, or provide --template-repo-entry.`)),{repo:(n=h?.repo)!==null&&n!==void 0?n:{repoId:(0,types_1.asRepoId)(""),displayName:"",schemaVersion:0},templates:[],manifest:h,resolved:{inputPath:t,kind:"folder",manifestPath:u},diagnostics:a})}m(loadTemplateRepoFromPath,"loadTemplateRepoFromPath");function templateMatchesSelection(t,e){var r,i;let n,a;try{const d=(0,parseTemplateId_1.parseTemplateId)((0,types_1.asTemplateId)(t));n=String(d.publisher).replace(/^@/,""),a=d.pack}catch{return!1}const o=((r=e.publishers)!==null&&r!==void 0?r:[]).map(d=>d.replace(/^@/,"")),s=((i=e.packs)!==null&&i!==void 0?i:[]).map(d=>d.replace(/^@/,""));return o.includes(n)?!0:a!==void 0&&s.includes(`${n}/${a}`)}m(templateMatchesSelection,"templateMatchesSelection");function hasSelectionCriteria(t){var e,r;return!!(!((e=t.publishers)===null||e===void 0)&&e.length||!((r=t.packs)===null||r===void 0)&&r.length)}m(hasSelectionCriteria,"hasSelectionCriteria");async function importAndValidate(t){var e;const{inputPath:r,kind:i,entryPath:n,manifestPath:a,manifest:o,diagnostics:s}=t,d=(0,node_url_1.pathToFileURL)(n).href;(0,hostFirstResolution_1.registerHostFirstRepoRoot)(t.repoRoot);const _=path.dirname(n);_.startsWith(path.resolve(t.repoRoot)+path.sep)||(0,hostFirstResolution_1.registerHostFirstRepoRoot)(_);let E=d,h=null;if(t.reload){const l=path.dirname(n);evictRequireCacheSubtree(l);const v=isEsmEntry(n),P=hostRequire();if(!v&&P)h=P;else{const R=newestMtimeMs(l);R!==null&&(E=`${d}?m0saicBuild=${Math.round(R)}`),v&&s.push(diag("TEMPLATE_REPO_ESM_RELOAD_PARTIAL",`Repo entry ${path.basename(n)} loads as ESM. Node cannot invalidate an already-imported ESM module, so only the ENTRY file re-reads on refresh \u2014 changes in files it imports keep serving the previously-loaded code until the app restarts. Build the repo as CommonJS (tsc's default "module": "commonjs") or bundle to a single entry file for a reliable rebuild \u2192 refresh loop.`,"warning"))}}let u;try{u=h?h(n):await nativeImport(E)}catch(l){return s.push(diag("TEMPLATE_REPO_IMPORT_FAILED",`Failed to import template repo entry ${n}:
6
- ${l.message}`)),{repo:(e=o?.repo)!==null&&e!==void 0?e:{repoId:(0,types_1.asRepoId)(""),displayName:"",schemaVersion:0},templates:[],manifest:o,resolved:{inputPath:r,kind:i,manifestPath:a,entryPath:n,entryUrl:d},diagnostics:s}}let p=u.repo;if(!p&&o?.repo&&(p=o.repo),!p)return s.push(diag("TEMPLATE_REPO_MISSING_EXPORT",`Template repo module at ${n} does not export "repo" (MosaicTemplateRepoDescriptor), and no template-manifest.json with repo descriptor was found.`)),{repo:{repoId:(0,types_1.asRepoId)(""),displayName:"",schemaVersion:0},templates:[],manifest:o,resolved:{inputPath:r,kind:i,manifestPath:a,entryPath:n,entryUrl:d},diagnostics:s};(!p.repoId||typeof p.repoId!="string")&&s.push(diag("TEMPLATE_REPO_INVALID_DESCRIPTOR","repo.repoId is missing or empty")),(!p.displayName||typeof p.displayName!="string")&&s.push(diag("TEMPLATE_REPO_INVALID_DESCRIPTOR","repo.displayName is missing or empty")),p.schemaVersion!==1&&s.push(diag("TEMPLATE_REPO_UNSUPPORTED_SCHEMA",`repo.schemaVersion is ${p.schemaVersion}, expected 1`)),o?.repo&&u.repo&&o.repo.repoId!==u.repo.repoId&&s.push(diag("TEMPLATE_REPO_ID_MISMATCH",`Manifest repoId "${o.repo.repoId}" does not match module repoId "${u.repo.repoId}". Using module value.`,"warning"));const y=t.selection&&hasSelectionCriteria(t.selection)?t.selection:void 0;let c=[];if(y&&typeof u.getTemplates=="function")try{c=u.getTemplates(y)}catch(l){s.push(diag("TEMPLATE_REPO_INVALID_TEMPLATES",`getTemplates() threw: ${l.message}`))}else if(Array.isArray(u.templates))c=u.templates;else if(typeof u.getTemplates=="function")try{c=u.getTemplates()}catch(l){s.push(diag("TEMPLATE_REPO_INVALID_TEMPLATES",`getTemplates() threw: ${l.message}`))}else s.push(diag("TEMPLATE_REPO_MISSING_EXPORT",'Template repo module does not export "templates" array or "getTemplates()" function.'));Array.isArray(c)||(s.push(diag("TEMPLATE_REPO_INVALID_TEMPLATES",'"templates" export is not an array')),c=[]),y&&(c=c.filter(l=>{var v;return l!=null&&templateMatchesSelection(String((v=l?.id)!==null&&v!==void 0?v:""),y)}));const f=c.filter(l=>l==null).length;f>0&&(s.push(diag("TEMPLATE_REPO_INVALID_TEMPLATES",`${f} entr${f===1?"y":"ies"} in repo "${p.repoId}"'s templates[] ${f===1?"is":"are"} undefined. The entry module exported the array but not the values \u2014 usually a barrel file whose imports didn't resolve. Check that every template in templates[] is actually imported and exported.`)),c=c.filter(l=>l!=null));for(const l of c)(!l.id||typeof l.id!="string")&&s.push(diag("TEMPLATE_REPO_INVALID_TEMPLATES",`A template in repo "${p.repoId}" is missing a valid "id" field`,"warning"));const T=new Set;for(const l of c)l.id&&T.has(l.id)&&s.push(diag("TEMPLATE_REPO_DUPLICATE_ID",`Duplicate template id "${l.id}" in repo "${p.repoId}"`,"warning")),l.id&&T.add(l.id);return s.push(...(0,validateTemplateRoles_1.validateTemplateRoles)(c)),{repo:p,templates:c,manifest:o,resolved:{inputPath:r,kind:i,manifestPath:a,entryPath:n,entryUrl:d},diagnostics:s}}m(importAndValidate,"importAndValidate");
5
+ Hint: Run the repo's build step, or provide --template-repo-entry.`)),{repo:(n=h?.repo)!==null&&n!==void 0?n:{repoId:(0,types_1.asRepoId)(""),displayName:"",schemaVersion:0},templates:[],manifest:h,resolved:{inputPath:t,kind:"folder",manifestPath:c},diagnostics:a})}m(loadTemplateRepoFromPath,"loadTemplateRepoFromPath");function templateMatchesSelection(t,e){var r,i;let n,a;try{const p=(0,parseTemplateId_1.parseTemplateId)((0,types_1.asTemplateId)(t));n=String(p.publisher).replace(/^@/,""),a=p.pack}catch{return!1}const o=((r=e.publishers)!==null&&r!==void 0?r:[]).map(p=>p.replace(/^@/,"")),s=((i=e.packs)!==null&&i!==void 0?i:[]).map(p=>p.replace(/^@/,""));return o.includes(n)?!0:a!==void 0&&s.includes(`${n}/${a}`)}m(templateMatchesSelection,"templateMatchesSelection");function hasSelectionCriteria(t){var e,r;return!!(!((e=t.publishers)===null||e===void 0)&&e.length||!((r=t.packs)===null||r===void 0)&&r.length)}m(hasSelectionCriteria,"hasSelectionCriteria");async function importAndValidate(t){var e;const{inputPath:r,kind:i,entryPath:n,manifestPath:a,manifest:o,diagnostics:s}=t,p=(0,node_url_1.pathToFileURL)(n).href;(0,hostFirstResolution_1.registerHostFirstRepoRoot)(t.repoRoot);const v=path.dirname(n);v.startsWith(path.resolve(t.repoRoot)+path.sep)||(0,hostFirstResolution_1.registerHostFirstRepoRoot)(v);let P=p,h=null;if(t.reload){const l=path.dirname(n);evictRequireCacheSubtree(l);const _=isEsmEntry(n),T=hostRequire();if(!_&&T)h=T;else{const y=newestMtimeMs(l);y!==null&&(P=`${p}?m0saicBuild=${Math.round(y)}`),_&&s.push(diag("TEMPLATE_REPO_ESM_RELOAD_PARTIAL",`Repo entry ${path.basename(n)} loads as ESM. Node cannot invalidate an already-imported ESM module, so only the ENTRY file re-reads on refresh \u2014 changes in files it imports keep serving the previously-loaded code until the app restarts. Build the repo as CommonJS (tsc's default "module": "commonjs") or bundle to a single entry file for a reliable rebuild \u2192 refresh loop.`,"warning"))}}let c;try{c=h?h(n):await nativeImport(P)}catch(l){return s.push(diag("TEMPLATE_REPO_IMPORT_FAILED",`Failed to import template repo entry ${n}:
6
+ ${l.message}`)),{repo:(e=o?.repo)!==null&&e!==void 0?e:{repoId:(0,types_1.asRepoId)(""),displayName:"",schemaVersion:0},templates:[],manifest:o,resolved:{inputPath:r,kind:i,manifestPath:a,entryPath:n,entryUrl:p},diagnostics:s}}let d=c.repo;if(!d&&o?.repo&&(d=o.repo),!d)return s.push(diag("TEMPLATE_REPO_MISSING_EXPORT",`Template repo module at ${n} does not export "repo" (MosaicTemplateRepoDescriptor), and no template-manifest.json with repo descriptor was found.`)),{repo:{repoId:(0,types_1.asRepoId)(""),displayName:"",schemaVersion:0},templates:[],manifest:o,resolved:{inputPath:r,kind:i,manifestPath:a,entryPath:n,entryUrl:p},diagnostics:s};(!d.repoId||typeof d.repoId!="string")&&s.push(diag("TEMPLATE_REPO_INVALID_DESCRIPTOR","repo.repoId is missing or empty")),(!d.displayName||typeof d.displayName!="string")&&s.push(diag("TEMPLATE_REPO_INVALID_DESCRIPTOR","repo.displayName is missing or empty")),d.schemaVersion!==1&&s.push(diag("TEMPLATE_REPO_UNSUPPORTED_SCHEMA",`repo.schemaVersion is ${d.schemaVersion}, expected 1`)),o?.repo&&c.repo&&o.repo.repoId!==c.repo.repoId&&s.push(diag("TEMPLATE_REPO_ID_MISMATCH",`Manifest repoId "${o.repo.repoId}" does not match module repoId "${c.repo.repoId}". Using module value.`,"warning"));const E=t.selection&&hasSelectionCriteria(t.selection)?t.selection:void 0;let u=[];if(E&&typeof c.getTemplates=="function")try{u=c.getTemplates(E)}catch(l){s.push(diag("TEMPLATE_REPO_INVALID_TEMPLATES",`getTemplates() threw: ${l.message}`))}else if(Array.isArray(c.templates))u=c.templates;else if(typeof c.getTemplates=="function")try{u=c.getTemplates()}catch(l){s.push(diag("TEMPLATE_REPO_INVALID_TEMPLATES",`getTemplates() threw: ${l.message}`))}else s.push(diag("TEMPLATE_REPO_MISSING_EXPORT",'Template repo module does not export "templates" array or "getTemplates()" function.'));Array.isArray(u)||(s.push(diag("TEMPLATE_REPO_INVALID_TEMPLATES",'"templates" export is not an array')),u=[]),E&&(u=u.filter(l=>{var _;return l!=null&&templateMatchesSelection(String((_=l?.id)!==null&&_!==void 0?_:""),E)}));const f=u.filter(l=>l==null).length;f>0&&(s.push(diag("TEMPLATE_REPO_INVALID_TEMPLATES",`${f} entr${f===1?"y":"ies"} in repo "${d.repoId}"'s templates[] ${f===1?"is":"are"} undefined. The entry module exported the array but not the values \u2014 usually a barrel file whose imports didn't resolve. Check that every template in templates[] is actually imported and exported.`)),u=u.filter(l=>l!=null));for(const l of u)(!l.id||typeof l.id!="string")&&s.push(diag("TEMPLATE_REPO_INVALID_TEMPLATES",`A template in repo "${d.repoId}" is missing a valid "id" field`,"warning"));const R=new Set;for(const l of u)l.id&&R.has(l.id)&&s.push(diag("TEMPLATE_REPO_DUPLICATE_ID",`Duplicate template id "${l.id}" in repo "${d.repoId}"`,"warning")),l.id&&R.add(l.id);s.push(...(0,validateTemplateRoles_1.validateTemplateRoles)(u));let I;const A=path.resolve(t.repoRoot,templateCatalog_1.TEMPLATE_CATALOG_FILE);if(fileExists(A)){let l;try{l=JSON.parse(fs.readFileSync(A,"utf-8"))}catch(_){s.push(diag("TEMPLATE_REPO_CATALOG_INVALID",`Failed to parse ${templateCatalog_1.TEMPLATE_CATALOG_FILE}: ${_.message}`,"warning"))}if(l!==void 0){const _=(0,templateCatalog_1.parseTemplateCatalogFile)(l);for(const y of _.problems)s.push(diag("TEMPLATE_REPO_CATALOG_INVALID",`${templateCatalog_1.TEMPLATE_CATALOG_FILE}: ${y}`,"warning"));const T=(0,templateCatalog_1.withTemplateCatalog)(u,_.file.templates);u=T.templates;for(const y of T.unknown)s.push(diag("TEMPLATE_REPO_CATALOG_UNKNOWN_ID",`${templateCatalog_1.TEMPLATE_CATALOG_FILE} describes "${y}", which repo "${d.repoId}" does not export`,"warning"));I={path:A,applied:T.applied,unknown:T.unknown}}}return{repo:d,templates:u,manifest:o,resolved:{inputPath:r,kind:i,manifestPath:a,entryPath:n,entryUrl:p},diagnostics:s,...I?{catalog:I}:{}}}m(importAndValidate,"importAndValidate");
@@ -0,0 +1,2 @@
1
+ "use strict";var h=Object.defineProperty;var u=(r,e)=>h(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,a){a===void 0&&(a=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:u(function(){return e[t]},"get")}),Object.defineProperty(r,a,n)}):(function(r,e,t,a){a===void 0&&(a=t),r[a]=e[t]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(r,e){Object.defineProperty(r,"default",{enumerable:!0,value:e})}):function(r,e){r.default=e}),__importStar=this&&this.__importStar||(function(){var r=u(function(e){return r=Object.getOwnPropertyNames||function(t){var a=[];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(a[a.length]=n);return a},r(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var a=r(e),n=0;n<a.length;n++)a[n]!=="default"&&__createBinding(t,e,a[n]);return __setModuleDefault(t,e),t}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.collectTemplateCatalog=collectTemplateCatalog,exports.serializeTemplateCatalog=serializeTemplateCatalog,exports.writeTemplateCatalog=writeTemplateCatalog;const fs=__importStar(require("node:fs")),path=__importStar(require("node:path")),templateCatalog_1=require("../templateCatalog/templateCatalog"),SKIP_DIRS=new Set(["node_modules","dist",".git","coverage"]);function collectTemplateCatalog(r,e={}){var t;const a=path.join(r,(t=e.srcDir)!==null&&t!==void 0?t:"src"),n=[],d=u(s=>{let o;try{o=fs.readdirSync(s,{withFileTypes:!0})}catch{return}for(const i of o){if(i.isDirectory()){SKIP_DIRS.has(i.name)||d(path.join(s,i.name));continue}i.isFile()&&i.name.endsWith(templateCatalog_1.TEMPLATE_CATALOG_SIDECAR_SUFFIX)&&n.push(path.join(s,i.name))}},"walk");d(a),n.sort();const p=[],m=[],f=new Map;for(const s of n){const o=path.relative(r,s).split(path.sep).join("/");let i;try{i=JSON.parse(fs.readFileSync(s,"utf8"))}catch(c){p.push(`${o}: not valid JSON (${c instanceof Error?c.message:String(c)})`);continue}const l=(0,templateCatalog_1.parseTemplateCatalogSidecar)(i,o);if(p.push(...l.problems.map(c=>c.startsWith(o)?c:`${o}: ${c}`)),!l.templateId)continue;const g=f.get(l.templateId);if(g){p.push(`${o}: ${l.templateId} is already described by ${g.rel} \u2014 one sidecar per template`);continue}f.set(l.templateId,{rel:o,entry:l.entry}),m.push({path:o,templateId:l.templateId})}const _={};for(const s of[...f.keys()].sort())_[s]=f.get(s).entry;return{file:{schemaVersion:1,templates:_},sidecars:m,problems:p}}u(collectTemplateCatalog,"collectTemplateCatalog");function serializeTemplateCatalog(r){const e={};for(const t of Object.keys(r.templates).sort())e[t]=r.templates[t];return JSON.stringify({schemaVersion:1,templates:e},null,2)+`
2
+ `}u(serializeTemplateCatalog,"serializeTemplateCatalog");function writeTemplateCatalog(r,e){const t=path.join(r,templateCatalog_1.TEMPLATE_CATALOG_FILE);return fs.writeFileSync(t,serializeTemplateCatalog(e),"utf8"),t}u(writeTemplateCatalog,"writeTemplateCatalog");
@@ -0,0 +1 @@
1
+ "use strict";var o=Object.defineProperty;var a=(r,e)=>o(r,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(r,e,t,i){i===void 0&&(i=t);var n=Object.getOwnPropertyDescriptor(e,t);(!n||("get"in n?!e.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:a(function(){return e[t]},"get")}),Object.defineProperty(r,i,n)}):(function(r,e,t,i){i===void 0&&(i=t),r[i]=e[t]})),__exportStar=this&&this.__exportStar||function(r,e){for(var t in r)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,r,t)};Object.defineProperty(exports,"__esModule",{value:!0}),__exportStar(require("./templateCatalog"),exports);
@@ -0,0 +1 @@
1
+ "use strict";var A=Object.defineProperty;var p=(e,t)=>A(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.TEMPLATE_CATALOG_AUTHORED_KEY=exports.TEMPLATE_CATALOG_SIDECAR_SUFFIX=exports.TEMPLATE_CATALOG_FILE=void 0,exports.parseTemplateCatalogEntry=parseTemplateCatalogEntry,exports.parseTemplateCatalogFile=parseTemplateCatalogFile,exports.parseTemplateCatalogSidecar=parseTemplateCatalogSidecar,exports.sameTemplateDeprecation=sameTemplateDeprecation,exports.authoredCatalogFields=authoredCatalogFields,exports.authoredPropsSchema=authoredPropsSchema,exports.authoredPropCopy=authoredPropCopy,exports.unknownCatalogProps=unknownCatalogProps,exports.splitPropPresentation=splitPropPresentation,exports.stripPropPresentation=stripPropPresentation,exports.applyTemplateCatalogEntry=applyTemplateCatalogEntry,exports.withTemplateCatalog=withTemplateCatalog;const types_1=require("@m0saic/types");exports.TEMPLATE_CATALOG_FILE="template-catalog.json",exports.TEMPLATE_CATALOG_SIDECAR_SUFFIX=".catalog.json",exports.TEMPLATE_CATALOG_AUTHORED_KEY=Symbol.for("m0saic.templateCatalogAuthored");const CATALOG_FIELDS=new Set([...types_1.MOSAIC_TEMPLATE_CATALOG_FIELDS,"props"]),PROP_FIELDS=new Set(types_1.MOSAIC_TEMPLATE_PROP_CATALOG_FIELDS),DEPRECATION_KEYS=new Set(["reason","replacement","since"]),ISO_DAY=/^\d{4}-\d{2}-\d{2}$/,isRecord=p(e=>e!==null&&typeof e=="object"&&!Array.isArray(e),"isRecord"),isStringList=p(e=>Array.isArray(e)&&e.every(t=>typeof t=="string"&&t.trim().length>0),"isStringList"),nonEmpty=p(e=>typeof e=="string"&&e.trim().length>0,"nonEmpty");function parseDeprecation(e,t,s){if(!isRecord(t))return s.push(`${e}: "deprecated" must be an object ({ reason, replacement?, since }) \u2014 dropped`),null;const n={};for(const r of Object.keys(t))DEPRECATION_KEYS.has(r)||s.push(`${e}: deprecated has an unknown key "${r}" \u2014 it carries reason, replacement and since only`);return nonEmpty(t.reason)?n.reason=t.reason:s.push(`${e}: deprecated.reason must say why the template is superseded`),t.replacement!==void 0&&(nonEmpty(t.replacement)?n.replacement=(0,types_1.asTemplateId)(t.replacement):s.push(`${e}: deprecated.replacement must be a template id \u2014 dropped`)),typeof t.since=="string"&&ISO_DAY.test(t.since)?n.since=t.since:s.push(`${e}: deprecated.since must be the day it was declared (YYYY-MM-DD)`),n}p(parseDeprecation,"parseDeprecation");function parsePropCatalog(e,t,s){if(!isRecord(t))return s.push(`${e}: a prop entry must be an object of presentation fields \u2014 dropped`),null;const n={};for(const[r,o]of Object.entries(t)){if(!PROP_FIELDS.has(r)){s.push(`${e}: "${r}" is not a prop presentation field (${types_1.MOSAIC_TEMPLATE_PROP_CATALOG_FIELDS.join(", ")}) \u2014 what a value IS stays in the template`);continue}switch(r){case"label":case"description":case"placeholder":nonEmpty(o)?n[r]=o:s.push(`${e}.${r} must be a non-empty string \u2014 dropped`);break;case"order":typeof o=="number"&&Number.isFinite(o)?n.order=o:s.push(`${e}.order must be a number \u2014 dropped`);break;case"primary":case"collapsedByDefault":typeof o=="boolean"?n[r]=o:s.push(`${e}.${r} must be true or false \u2014 dropped`);break}}return n}p(parsePropCatalog,"parsePropCatalog");function parseTemplateCatalogEntry(e,t,s){if(!isRecord(t))return s.push(`${e}: the entry must be an object of catalog fields \u2014 dropped`),null;const n={};for(const[r,o]of Object.entries(t)){if(!CATALOG_FIELDS.has(r)){s.push(`${e}: "${r}" is not a catalog field (${[...types_1.MOSAIC_TEMPLATE_CATALOG_FIELDS,"props"].join(", ")}) \u2014 a catalog describes a template, it never changes what it renders`);continue}switch(r){case"label":case"description":nonEmpty(o)?n[r]=o:s.push(`${e}: "${r}" must be a non-empty string \u2014 dropped`);break;case"tags":case"platforms":case"channels":isStringList(o)?n[r]=[...o]:s.push(`${e}: "${r}" must be a list of non-empty strings \u2014 dropped`);break;case"internal":case"primitive":typeof o=="boolean"?n[r]=o:s.push(`${e}: "${r}" must be true or false \u2014 dropped`);break;case"preview":isRecord(o)?n.preview={...o}:s.push(`${e}: "preview" must be an object \u2014 dropped`);break;case"deprecated":{const a=parseDeprecation(e,o,s);a&&(n.deprecated=a);break}case"props":{if(!isRecord(o)){s.push(`${e}: "props" must map prop keys (dotted, as propsSchema nests them) to presentation \u2014 dropped`);break}const a={};for(const[i,c]of Object.entries(o)){const l=parsePropCatalog(`${e}: props.${i}`,c,s);l&&(a[i]=l)}n.props=a;break}}}return n}p(parseTemplateCatalogEntry,"parseTemplateCatalogEntry");function parseTemplateCatalogFile(e){const t=[],s={schemaVersion:1,templates:{}};if(!isRecord(e))return t.push(`${exports.TEMPLATE_CATALOG_FILE} must be a JSON object`),{file:s,problems:t};if(e.schemaVersion!==1)return t.push(`${exports.TEMPLATE_CATALOG_FILE} has unsupported schemaVersion ${JSON.stringify(e.schemaVersion)} (expected 1) \u2014 no entries read`),{file:s,problems:t};if(!isRecord(e.templates))return t.push(`${exports.TEMPLATE_CATALOG_FILE}: "templates" must map template ids to entries`),{file:s,problems:t};for(const[n,r]of Object.entries(e.templates)){const o=parseTemplateCatalogEntry(n,r,t);o&&(s.templates[n]=o)}return{file:s,problems:t}}p(parseTemplateCatalogFile,"parseTemplateCatalogFile");function parseTemplateCatalogSidecar(e,t="catalog sidecar"){var s;const n=[];if(!isRecord(e))return{templateId:null,entry:{},problems:[`${t} must be a JSON object`]};if(e.schemaVersion!==1)return{templateId:null,entry:{},problems:[`${t} has unsupported schemaVersion ${JSON.stringify(e.schemaVersion)} (expected 1) \u2014 not read`]};const r=nonEmpty(e.templateId)?e.templateId:null;r||n.push(`${t}: "templateId" must name the template this sidecar describes`);const{schemaVersion:o,templateId:a,...i}=e,c=(s=parseTemplateCatalogEntry(r??t,i,n))!==null&&s!==void 0?s:{};return{templateId:r,entry:c,problems:n}}p(parseTemplateCatalogSidecar,"parseTemplateCatalogSidecar");function sameTemplateDeprecation(e,t){var s,n;return!e||!t?e===t:e.reason===t.reason&&String((s=e.replacement)!==null&&s!==void 0?s:"")===String((n=t.replacement)!==null&&n!==void 0?n:"")&&e.since===t.since}p(sameTemplateDeprecation,"sameTemplateDeprecation");function carried(e){const t=e[exports.TEMPLATE_CATALOG_AUTHORED_KEY];return isRecord(t)&&isRecord(t.fields)?t:null}p(carried,"carried");function authoredCatalogFields(e){const t=carried(e);if(t)return{...t.fields};const s={};for(const n of types_1.MOSAIC_TEMPLATE_CATALOG_FIELDS)Object.prototype.hasOwnProperty.call(e,n)&&e[n]!==void 0&&(s[n]=e[n]);return s}p(authoredCatalogFields,"authoredCatalogFields");function authoredPropsSchema(e){const t=carried(e);return t?t.propsSchema:e.propsSchema}p(authoredPropsSchema,"authoredPropsSchema");const PROP_FIELD_PATH={label:["meta","ui","label"],description:["description"],placeholder:["meta","control","placeholder"],order:["meta","ui","order"],primary:["meta","ui","primary"],collapsedByDefault:["meta","ui","collapsedByDefault"]},readPath=p((e,t)=>t.reduce((s,n)=>isRecord(s)?s[n]:void 0,e),"readPath");function authoredPropCopy(e){const t=[],s=p((n,r)=>{if(isRecord(n))for(const[o,a]of Object.entries(n)){if(!isRecord(a))continue;const i=r?`${r}.${o}`:o;for(const c of types_1.MOSAIC_TEMPLATE_PROP_CATALOG_FIELDS)readPath(a,PROP_FIELD_PATH[c])!==void 0&&t.push(`${i}.${c}`);isRecord(a.fields)&&s(a.fields,i)}},"walk");return s(authoredPropsSchema(e),""),t.sort()}p(authoredPropCopy,"authoredPropCopy");function unknownCatalogProps(e,t){var s;const n=authoredPropsSchema(e);return Object.keys((s=t.props)!==null&&s!==void 0?s:{}).filter(r=>{let o=n;const a=r.split(".");for(let i=0;i<a.length;i++){const c=isRecord(o)?o[a[i]]:void 0;if(!isRecord(c))return!0;o=c.fields}return!1}).sort()}p(unknownCatalogProps,"unknownCatalogProps");function splitPropPresentation(e){const t={},s=p((n,r)=>{const o={};if(!isRecord(n))return o;for(const[a,i]of Object.entries(n)){if(!isRecord(i)){o[a]=i;continue}const c=r?`${r}.${a}`:a,l={...i},f={};for(const u of types_1.MOSAIC_TEMPLATE_PROP_CATALOG_FIELDS){const d=readPath(l,PROP_FIELD_PATH[u]);d!==void 0&&(f[u]=d)}if("description"in l&&delete l.description,isRecord(l.meta)){const u={...l.meta};if(isRecord(u.ui)){const d={...u.ui};for(const m of["label","order","primary","collapsedByDefault"])delete d[m];Object.keys(d).length?u.ui=d:delete u.ui}if(isRecord(u.control)){const d={...u.control};delete d.placeholder,Object.keys(d).length?u.control=d:delete u.control}Object.keys(u).length?l.meta=u:delete l.meta}isRecord(l.fields)&&(l.fields=s(l.fields,c)),Object.keys(f).length&&(t[c]=f),o[a]=l}return o},"strip");return{schema:s(e,""),props:t}}p(splitPropPresentation,"splitPropPresentation");function stripPropPresentation(e){return splitPropPresentation(e).schema}p(stripPropPresentation,"stripPropPresentation");function applyPropCatalog(e,t){if(!isRecord(e))return e;const s={...e};for(const[n,r]of Object.entries(t)){const o=n.split(".");let a=s,i=null;for(let c=0;c<o.length;c++){const l=a[o[c]];if(!isRecord(l)){i=null;break}if(i={...l},a[o[c]]=i,c<o.length-1){if(!isRecord(i.fields)){i=null;break}i.fields={...i.fields},a=i.fields}}if(i)for(const c of types_1.MOSAIC_TEMPLATE_PROP_CATALOG_FIELDS){const l=r[c];if(l===void 0)continue;const f=PROP_FIELD_PATH[c];let u=i;for(let d=0;d<f.length-1;d++){const m=isRecord(u[f[d]])?{...u[f[d]]}:{};u[f[d]]=m,u=m}u[f[f.length-1]]=l}}return s}p(applyPropCatalog,"applyPropCatalog");function applyTemplateCatalogEntry(e,t){const s={fields:authoredCatalogFields(e),propsSchema:authoredPropsSchema(e)},n=Object.getOwnPropertyDescriptors(e);for(const r of types_1.MOSAIC_TEMPLATE_CATALOG_FIELDS){const o=t[r];if(o===void 0)continue;const a=Array.isArray(o)?[...o]:isRecord(o)?{...o}:o;n[r]={value:a,enumerable:!0,writable:!0,configurable:!0}}if(t.props&&Object.keys(t.props).length>0){const r=e.propsSchema;n.propsSchema={value:applyPropCatalog(r,t.props),enumerable:!0,writable:!0,configurable:!0}}return n[exports.TEMPLATE_CATALOG_AUTHORED_KEY]={value:s,enumerable:!1,writable:!1,configurable:!0},Object.create(Object.getPrototypeOf(e),n)}p(applyTemplateCatalogEntry,"applyTemplateCatalogEntry");function withTemplateCatalog(e,t){var s;const n={templates:[],applied:[],unknown:[]},r=new Set;for(const o of e){const a=String((s=o?.id)!==null&&s!==void 0?s:"");r.add(a);const i=t[a];if(!i){n.templates.push(o);continue}n.templates.push(applyTemplateCatalogEntry(o,i)),n.applied.push(a)}for(const o of Object.keys(t))r.has(o)||n.unknown.push(o);return n.applied.sort(),n.unknown.sort(),n}p(withTemplateCatalog,"withTemplateCatalog");
@@ -1,23 +1,5 @@
1
1
  {
2
2
  "m0saicVersion": "1.0.0",
3
- "ffmpeg": {
4
- "snapshot": "N-124278-gcc3ca17127-20260430",
5
- "date": "2026-04-30",
6
- "source": "BtbN",
7
- "binarySource": "BtbN FFmpeg-Builds (win64 lgpl)",
8
- "profile": "lgpl",
9
- "gplEnabled": false,
10
- "libx264": false,
11
- "libx265": false,
12
- "btbnReleaseTag": "autobuild-2026-04-30-13-44",
13
- "btbnReleaseUrl": "https://github.com/BtbN/FFmpeg-Builds/releases/tag/autobuild-2026-04-30-13-44",
14
- "retentionNote": "Pinned to BtbN's last-of-month autobuild — retained by GitHub through ~2028-04-30 per BtbN's release retention policy.",
15
- "features": {
16
- "av1": true,
17
- "nvenc": true,
18
- "vaapi": true
19
- }
20
- },
21
3
  "ffmpegGpl": {
22
4
  "snapshot": "N-124278-gcc3ca17127-20260430",
23
5
  "date": "2026-04-30",
@@ -29,7 +11,7 @@
29
11
  "libx265": true,
30
12
  "btbnReleaseTag": "autobuild-2026-04-30-13-44",
31
13
  "btbnReleaseUrl": "https://github.com/BtbN/FFmpeg-Builds/releases/tag/autobuild-2026-04-30-13-44",
32
- "retentionNote": "Pinned to BtbN's last-of-month autobuild — retained by GitHub through ~2028-04-30 per BtbN's release retention policy.",
14
+ "retentionNote": "Pinned to BtbN's last-of-month autobuild \u2014 retained by GitHub through ~2028-04-30 per BtbN's release retention policy.",
33
15
  "features": {
34
16
  "av1": true,
35
17
  "nvenc": true,
@@ -40,29 +22,10 @@
40
22
  "name": "m0saic-ffmpeg-base",
41
23
  "url": "https://github.com/m0saic-project/m0saic-ffmpeg-base",
42
24
  "releaseTag": "ffmpeg-N-124278",
43
- "note": "Standalone vendor package that routes m0saic's pinned baseline ffmpeg. Mirror currently INACTIVE: LGPL binaries are fetched directly from BtbN and GPL from origin (BtbN / martin-riedl) at the user's request. When activated, its releases redistribute the LGPL binaries plus the exact-corresponding FFmpeg source (LGPL-2.1 compliance), with BtbN as the fallback; GPL is always origin-fetched, never redistributed."
25
+ "note": "Standalone vendor package that documents m0saic's pinned baseline ffmpeg. m0saic redistributes no ffmpeg binaries: the one pinned build is GPL and is always fetched from its origin (BtbN / martin-riedl) on the user's machine at the user's request. The former LGPL rail (a vendored, redistributable build) was removed 2026-09-22 \u2014 with nothing redistributed there is no reason to offer a second, degraded baseline."
44
26
  },
45
27
  "platforms": {
46
28
  "win32-x64": {
47
- "lgpl": {
48
- "available": true,
49
- "snapshot": "N-124278-gcc3ca17127-20260430",
50
- "date": "2026-04-30",
51
- "profile": "lgpl",
52
- "source": "BtbN FFmpeg-Builds (win64 lgpl)",
53
- "vendored": false,
54
- "redistributable": false,
55
- "infoUrl": "https://github.com/BtbN/FFmpeg-Builds/releases/tag/autobuild-2026-04-30-13-44",
56
- "licenseNote": "LGPL-2.1 build from BtbN. Fetched from BtbN at setup time; not redistributed by m0saic while the mirror is inactive.",
57
- "artifacts": [
58
- {
59
- "tools": ["ffmpeg", "ffprobe"],
60
- "archive": "zip",
61
- "url": "https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-04-30-13-44/ffmpeg-N-124278-gcc3ca17127-win64-lgpl.zip",
62
- "sha256": "bb2af8d24de9dd52bccfe2e48538a586c05d157b4498bffe67f09d7c3f168c98"
63
- }
64
- ]
65
- },
66
29
  "gpl": {
67
30
  "available": true,
68
31
  "snapshot": "N-124278-gcc3ca17127-20260430",
@@ -72,10 +35,13 @@
72
35
  "vendored": false,
73
36
  "redistributable": false,
74
37
  "infoUrl": "https://github.com/BtbN/FFmpeg-Builds/releases/tag/autobuild-2026-04-30-13-44",
75
- "licenseNote": "GPL-3.0 build (libx264/x265). Not redistributed by m0saic — fetched from BtbN at the user's request.",
38
+ "licenseNote": "GPL-3.0 build (libx264/x265). Not redistributed by m0saic \u2014 fetched from BtbN at the user's request.",
76
39
  "artifacts": [
77
40
  {
78
- "tools": ["ffmpeg", "ffprobe"],
41
+ "tools": [
42
+ "ffmpeg",
43
+ "ffprobe"
44
+ ],
79
45
  "archive": "zip",
80
46
  "url": "https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-04-30-13-44/ffmpeg-N-124278-gcc3ca17127-win64-gpl.zip",
81
47
  "sha256": "78545d113869d92a5423385c4793fe19fa91707c087535f79b24daad2d2bb3b0"
@@ -84,11 +50,6 @@
84
50
  }
85
51
  },
86
52
  "darwin-arm64": {
87
- "lgpl": {
88
- "available": false,
89
- "reason": "No LGPL macOS ffmpeg exists from any third-party source (martin-riedl / evermeet / OSXExperts / Homebrew are all GPL). Own-built LGPL binaries at the pin commit are planned via m0saic-ffmpeg-base CI.",
90
- "trackingUrl": "https://github.com/m0saic-project/m0saic-ffmpeg-base"
91
- },
92
53
  "gpl": {
93
54
  "available": true,
94
55
  "snapshot": "N-124279-g0f6ba39122",
@@ -98,16 +59,20 @@
98
59
  "vendored": false,
99
60
  "redistributable": false,
100
61
  "infoUrl": "https://ffmpeg.martin-riedl.de/info/detail/macos/arm64/1777624525_N-124279-g0f6ba39122",
101
- "licenseNote": "GPL-3.0 build (libx264/x265, full drawtext stack), one commit after the Windows pin. Signed binaries. Not redistributed by m0saic — fetched from martin-riedl.de at the user's request.",
62
+ "licenseNote": "GPL-3.0 build (libx264/x265, full drawtext stack), one commit after the Windows pin. Signed binaries. Not redistributed by m0saic \u2014 fetched from martin-riedl.de at the user's request.",
102
63
  "artifacts": [
103
64
  {
104
- "tools": ["ffmpeg"],
65
+ "tools": [
66
+ "ffmpeg"
67
+ ],
105
68
  "archive": "zip",
106
69
  "url": "https://ffmpeg.martin-riedl.de/download/macos/arm64/1777624525_N-124279-g0f6ba39122/ffmpeg.zip",
107
70
  "sha256": "f89b897fe521bb2688214ef7371d3a3495e2075f1a76b39e73c8d0ac90226c3a"
108
71
  },
109
72
  {
110
- "tools": ["ffprobe"],
73
+ "tools": [
74
+ "ffprobe"
75
+ ],
111
76
  "archive": "zip",
112
77
  "url": "https://ffmpeg.martin-riedl.de/download/macos/arm64/1777624525_N-124279-g0f6ba39122/ffprobe.zip",
113
78
  "sha256": "4d5f595818bd47d1234247e58e4070f2dc07251a0d159fa3dbed0c0a727b7839"
@@ -116,37 +81,13 @@
116
81
  }
117
82
  },
118
83
  "darwin-x64": {
119
- "lgpl": {
120
- "available": false,
121
- "reason": "Same macOS LGPL gap as arm64, plus upstream Intel sunset (martin-riedl stopped Intel snapshots 2026-01; releases end 2027-01). Own-built x86_64 cross-compile planned with the arm64 pipeline.",
122
- "trackingUrl": "https://github.com/m0saic-project/m0saic-ffmpeg-base"
123
- },
124
84
  "gpl": {
125
85
  "available": false,
126
- "reason": "martin-riedl Intel snapshots froze at N-122320 (2026-01-01) — pre-baseline. Intel Macs currently fall back to Homebrew/PATH detection.",
86
+ "reason": "martin-riedl Intel snapshots froze at N-122320 (2026-01-01) \u2014 pre-baseline. Intel Macs currently fall back to Homebrew/PATH detection.",
127
87
  "trackingUrl": "https://ffmpeg.martin-riedl.de/"
128
88
  }
129
89
  },
130
90
  "linux-x64": {
131
- "lgpl": {
132
- "available": true,
133
- "snapshot": "N-124278-gcc3ca17127-20260430",
134
- "date": "2026-04-30",
135
- "profile": "lgpl",
136
- "source": "BtbN FFmpeg-Builds (linux64 lgpl)",
137
- "vendored": false,
138
- "redistributable": false,
139
- "infoUrl": "https://github.com/BtbN/FFmpeg-Builds/releases/tag/autobuild-2026-04-30-13-44",
140
- "licenseNote": "LGPL-2.1 build from BtbN. glibc >= 2.28. Fetched from BtbN at setup time; not redistributed by m0saic while the mirror is inactive.",
141
- "artifacts": [
142
- {
143
- "tools": ["ffmpeg", "ffprobe"],
144
- "archive": "tar.xz",
145
- "url": "https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-04-30-13-44/ffmpeg-N-124278-gcc3ca17127-linux64-lgpl.tar.xz",
146
- "sha256": "b59a92139fc9678a9905ad62659047a2a0cd7e971387dd0857ebab8a663c9c86"
147
- }
148
- ]
149
- },
150
91
  "gpl": {
151
92
  "available": true,
152
93
  "snapshot": "N-124278-gcc3ca17127-20260430",
@@ -156,10 +97,13 @@
156
97
  "vendored": false,
157
98
  "redistributable": false,
158
99
  "infoUrl": "https://github.com/BtbN/FFmpeg-Builds/releases/tag/autobuild-2026-04-30-13-44",
159
- "licenseNote": "GPL-3.0 build (libx264/x265). Not redistributed by m0saic — fetched from BtbN at the user's request.",
100
+ "licenseNote": "GPL-3.0 build (libx264/x265). Not redistributed by m0saic \u2014 fetched from BtbN at the user's request.",
160
101
  "artifacts": [
161
102
  {
162
- "tools": ["ffmpeg", "ffprobe"],
103
+ "tools": [
104
+ "ffmpeg",
105
+ "ffprobe"
106
+ ],
163
107
  "archive": "tar.xz",
164
108
  "url": "https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-04-30-13-44/ffmpeg-N-124278-gcc3ca17127-linux64-gpl.tar.xz",
165
109
  "sha256": "cd50a631135f90fecd0166c5134e32326825bc6bd11da4bf4ea24d5cb2f79f1f"
@@ -168,25 +112,6 @@
168
112
  }
169
113
  },
170
114
  "linux-arm64": {
171
- "lgpl": {
172
- "available": true,
173
- "snapshot": "N-124278-gcc3ca17127-20260430",
174
- "date": "2026-04-30",
175
- "profile": "lgpl",
176
- "source": "BtbN FFmpeg-Builds (linuxarm64 lgpl)",
177
- "vendored": false,
178
- "redistributable": false,
179
- "infoUrl": "https://github.com/BtbN/FFmpeg-Builds/releases/tag/autobuild-2026-04-30-13-44",
180
- "licenseNote": "LGPL-2.1 build from BtbN. glibc >= 2.28. Fetched from BtbN at setup time; not redistributed by m0saic while the mirror is inactive.",
181
- "artifacts": [
182
- {
183
- "tools": ["ffmpeg", "ffprobe"],
184
- "archive": "tar.xz",
185
- "url": "https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-04-30-13-44/ffmpeg-N-124278-gcc3ca17127-linuxarm64-lgpl.tar.xz",
186
- "sha256": "3f3a158d6c0a65d124f428da8b6be59bd34343bdb9dffa9e5c2998bac1848e6b"
187
- }
188
- ]
189
- },
190
115
  "gpl": {
191
116
  "available": true,
192
117
  "snapshot": "N-124278-gcc3ca17127-20260430",
@@ -196,10 +121,13 @@
196
121
  "vendored": false,
197
122
  "redistributable": false,
198
123
  "infoUrl": "https://github.com/BtbN/FFmpeg-Builds/releases/tag/autobuild-2026-04-30-13-44",
199
- "licenseNote": "GPL-3.0 build (libx264/x265). Not redistributed by m0saic — fetched from BtbN at the user's request.",
124
+ "licenseNote": "GPL-3.0 build (libx264/x265). Not redistributed by m0saic \u2014 fetched from BtbN at the user's request.",
200
125
  "artifacts": [
201
126
  {
202
- "tools": ["ffmpeg", "ffprobe"],
127
+ "tools": [
128
+ "ffmpeg",
129
+ "ffprobe"
130
+ ],
203
131
  "archive": "tar.xz",
204
132
  "url": "https://github.com/BtbN/FFmpeg-Builds/releases/download/autobuild-2026-04-30-13-44/ffmpeg-N-124278-gcc3ca17127-linuxarm64-gpl.tar.xz",
205
133
  "sha256": "841fc5ecaf06b0170791bdf4d0974f254c1c9f8b225c19d72f4174e22b0fc8e3"
@@ -1 +1 @@
1
- "use strict";var o=Object.defineProperty;var r=(e,t)=>o(e,"name",{value:t,configurable:!0});var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ffmpegReleaseDatesMeta=exports.ffmpegReleaseDates=exports.ffmpegBaseline=void 0,exports.getFfmpegBaseline=getFfmpegBaseline,exports.getPlatformKey=getPlatformKey,exports.getFfmpegPlatformEntry=getFfmpegPlatformEntry,exports.resolveFfmpegBaseline=resolveFfmpegBaseline;const baseline_json_1=__importDefault(require("./baseline.json")),release_dates_json_1=__importDefault(require("./release-dates.json"));exports.ffmpegBaseline=baseline_json_1.default;function getFfmpegBaseline(){return exports.ffmpegBaseline}r(getFfmpegBaseline,"getFfmpegBaseline");function getPlatformKey(e=process.platform,t=process.arch){return`${e}-${t}`}r(getPlatformKey,"getPlatformKey");function getFfmpegPlatformEntry(e,t=getPlatformKey()){const a=exports.ffmpegBaseline.platforms[t];return a?a[e]:{available:!1,reason:`No pinned ffmpeg target for platform "${t}".`,trackingUrl:exports.ffmpegBaseline.vendorRepo.url}}r(getFfmpegPlatformEntry,"getFfmpegPlatformEntry");function resolveFfmpegBaseline(e=getPlatformKey()){for(const a of["gpl","lgpl"]){const s=getFfmpegPlatformEntry(a,e);if(s.available)return{snapshot:s.snapshot,profile:s.profile,libx264:s.profile==="gpl",source:s.source}}const t=exports.ffmpegBaseline.ffmpeg;return{snapshot:t.snapshot,profile:t.profile==="gpl"?"gpl":"lgpl",libx264:t.libx264,source:t.source}}r(resolveFfmpegBaseline,"resolveFfmpegBaseline"),exports.ffmpegReleaseDates=release_dates_json_1.default.releases,exports.ffmpegReleaseDatesMeta={generatedAt:release_dates_json_1.default._generatedAt,source:release_dates_json_1.default._source,releases:exports.ffmpegReleaseDates};
1
+ "use strict";var a=Object.defineProperty;var s=(e,t)=>a(e,"name",{value:t,configurable:!0});var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ffmpegReleaseDatesMeta=exports.ffmpegReleaseDates=exports.ffmpegBaseline=void 0,exports.getFfmpegBaseline=getFfmpegBaseline,exports.getPlatformKey=getPlatformKey,exports.getFfmpegPlatformEntry=getFfmpegPlatformEntry,exports.resolveFfmpegBaseline=resolveFfmpegBaseline;const baseline_json_1=__importDefault(require("./baseline.json")),release_dates_json_1=__importDefault(require("./release-dates.json"));exports.ffmpegBaseline=baseline_json_1.default;function getFfmpegBaseline(){return exports.ffmpegBaseline}s(getFfmpegBaseline,"getFfmpegBaseline");function getPlatformKey(e=process.platform,t=process.arch){return`${e}-${t}`}s(getPlatformKey,"getPlatformKey");function getFfmpegPlatformEntry(e=getPlatformKey()){const t=exports.ffmpegBaseline.platforms[e];return t?t.gpl:{available:!1,reason:`No pinned ffmpeg target for platform "${e}".`,trackingUrl:exports.ffmpegBaseline.vendorRepo.url}}s(getFfmpegPlatformEntry,"getFfmpegPlatformEntry");function resolveFfmpegBaseline(e=getPlatformKey()){const t=getFfmpegPlatformEntry(e);if(t.available)return{snapshot:t.snapshot,profile:"gpl",libx264:!0,source:t.source};const r=exports.ffmpegBaseline.ffmpegGpl;return{snapshot:r.snapshot,profile:"gpl",libx264:r.libx264,source:r.source}}s(resolveFfmpegBaseline,"resolveFfmpegBaseline"),exports.ffmpegReleaseDates=release_dates_json_1.default.releases,exports.ffmpegReleaseDatesMeta={generatedAt:release_dates_json_1.default._generatedAt,source:release_dates_json_1.default._source,releases:exports.ffmpegReleaseDates};
@@ -1,2 +1,2 @@
1
- "use strict";var I=Object.defineProperty;var u=(o,e)=>I(o,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(o,e,n,r){r===void 0&&(r=n);var t=Object.getOwnPropertyDescriptor(e,n);(!t||("get"in t?!e.__esModule:t.writable||t.configurable))&&(t={enumerable:!0,get:u(function(){return e[n]},"get")}),Object.defineProperty(o,r,t)}):(function(o,e,n,r){r===void 0&&(r=n),o[r]=e[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(o,e){Object.defineProperty(o,"default",{enumerable:!0,value:e})}):function(o,e){o.default=e}),__importStar=this&&this.__importStar||(function(){var o=u(function(e){return o=Object.getOwnPropertyNames||function(n){var r=[];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(r[r.length]=t);return r},o(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=o(e),t=0;t<r.length;t++)r[t]!=="default"&&__createBinding(n,e,r[t]);return __setModuleDefault(n,e),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveTarBinary=resolveTarBinary,exports.installFfmpegToolchain=installFfmpegToolchain;const fs=__importStar(require("fs")),path=__importStar(require("path")),crypto=__importStar(require("crypto")),child_process_1=require("child_process"),paths_1=require("../../paths"),probe_1=require("../probe"),index_1=require("./index"),DOWNLOAD_USER_AGENT="Mozilla/5.0 (compatible; m0saic-toolchain-fetch) AppleWebKit/537.36",PROGRESS_THROTTLE_MS=100;function binName(o){return process.platform==="win32"?`${o}.exe`:o}u(binName,"binName");function findBinary(o,e){const n=binName(e),r=[o];for(;r.length>0;){const t=r.shift();for(const a of fs.readdirSync(t,{withFileTypes:!0})){const s=path.join(t,a.name);if(a.isDirectory())r.push(s);else if(a.name===n)return s}}return null}u(findBinary,"findBinary");async function downloadToFile(o,e,n){var r;const t=await n.fetchImpl(o,{signal:n.signal,headers:{"User-Agent":DOWNLOAD_USER_AGENT},redirect:"follow"});if(!t.ok)throw new Error(`HTTP ${t.status} ${t.statusText}`);if(!t.body)throw new Error("Response has no body stream");const a=Number((r=t.headers.get("content-length"))!==null&&r!==void 0?r:0)||0,s=crypto.createHash("sha256"),d=fs.createWriteStream(e);let _=0,j=0;try{const m=t.body.getReader();for(;;){const{done:l,value:h}=await m.read();if(l)break;s.update(h),_+=h.byteLength,await new Promise((v,y)=>{d.write(Buffer.from(h),b=>b?y(b):v())});const i=Date.now();i-j>=PROGRESS_THROTTLE_MS&&(j=i,n.onProgress(_,a))}n.onProgress(_,a)}finally{await new Promise(m=>d.end(()=>m()))}return{sha256:s.digest("hex")}}u(downloadToFile,"downloadToFile");function resolveTarBinary(o=process.platform,e=process.env,n=fs.existsSync){var r,t;if(o!=="win32")return"tar";const a=(t=(r=e.SystemRoot)!==null&&r!==void 0?r:e.SYSTEMROOT)!==null&&t!==void 0?t:"C:\\Windows",s=path.win32.join(a,"System32","tar.exe");return n(s)?s:"tar"}u(resolveTarBinary,"resolveTarBinary");function extractArchive(o,e){var n,r;(0,paths_1.ensureDir)(e);const t=resolveTarBinary(),a=(0,child_process_1.spawnSync)(t,["-xf",o,"-C",e],{stdio:["ignore","ignore","pipe"],timeout:12e4});if(a.error)throw new Error(`${t} failed to start: ${a.error.message}`);if(a.status!==0){const s=(r=(n=a.stderr)===null||n===void 0?void 0:n.toString().slice(0,400))!==null&&r!==void 0?r:"";throw new Error(`${t} exited ${a.status}: ${s}`)}}u(extractArchive,"extractArchive");async function installFfmpegToolchain(o){var e,n,r,t,a;const{variant:s,signal:d}=o,_=(e=o.onEvent)!==null&&e!==void 0?e:(()=>{}),j=(n=o.fetchImpl)!==null&&n!==void 0?n:globalThis.fetch,m=(r=o.platformKey)!==null&&r!==void 0?r:(0,index_1.getPlatformKey)(),l=u(p=>(_(p),p),"emit"),h=(0,index_1.getFfmpegPlatformEntry)(s,m);if(!h.available)return l({kind:"error",reason:`No ${s.toUpperCase()} build is pinned for ${m}: ${h.reason}`+(h.trackingUrl?` (tracking: ${h.trackingUrl})`:"")});const i=h,v=(0,paths_1.getGoldenFfmpegSlotDir)(index_1.ffmpegBaseline.m0saicVersion,s),y=path.join(v,"bin");(0,paths_1.ensureDir)((0,paths_1.getFfmpegToolchainsRoot)());const b=fs.mkdtempSync(path.join((0,paths_1.getFfmpegToolchainsRoot)(),`.staging-${s}-`)),w=u(()=>{try{fs.rmSync(b,{recursive:!0,force:!0})}catch{}},"cleanupStaging");l({kind:"started",variant:s,platformKey:m,snapshot:i.snapshot,slotDir:v,artifactCount:i.artifacts.length});try{const p=[],D=[];for(let c=0;c<i.artifacts.length;c++){const f=i.artifacts[c],g=path.join(b,`artifact-${c}.${f.archive}`),E=[f.url,f.upstreamUrl].filter(x=>!!x);let S=null,O="",T=null;for(const x of E){l({kind:"downloading",artifactIndex:c,artifactCount:i.artifacts.length,url:x,tools:f.tools});try{const $=await downloadToFile(x,g,{fetchImpl:j,signal:d,onProgress:u((N,B)=>l({kind:"progress",artifactIndex:c,artifactCount:i.artifacts.length,bytesReceived:N,totalBytes:B}),"onProgress")});S=x,O=$.sha256;break}catch($){if(d?.aborted)return w(),l({kind:"cancelled"});T=$ instanceof Error?$:new Error(String($))}}if(!S)return w(),l({kind:"error",reason:`Download failed for ${f.tools.join("+")}: ${(t=T?.message)!==null&&t!==void 0?t:"unknown"}`,failedUrl:E[E.length-1]});if(l({kind:"verifying",artifactIndex:c,artifactCount:i.artifacts.length}),O!==f.sha256)return w(),l({kind:"error",reason:`sha256 mismatch for ${S}: expected ${f.sha256}, got ${O}. Nothing was installed \u2014 the download may be corrupt or tampered with.`,failedUrl:S});l({kind:"extracting",artifactIndex:c,artifactCount:i.artifacts.length});const F=path.join(b,`extracted-${c}`);extractArchive(g,F),p.push(F),D.push({url:S,sha256:O,tools:f.tools})}const P=new Map;for(const c of["ffmpeg","ffprobe"])if(i.artifacts.some(f=>f.tools.includes(c))){for(const f of p){const g=findBinary(f,c);if(g){P.set(c,g);break}}if(!P.has(c))return w(),l({kind:"error",reason:`Archive extracted but no ${binName(c)} binary was found inside.`})}(0,paths_1.ensureDir)(y);for(const[c,f]of P){const g=path.join(y,binName(c));fs.rmSync(g,{force:!0}),fs.copyFileSync(f,g),process.platform!=="win32"&&fs.chmodSync(g,493)}const U={variant:s,platformKey:m,snapshot:i.snapshot,profile:i.profile,source:i.source,vendored:i.vendored,redistributable:i.redistributable,licenseNote:i.licenseNote,infoUrl:i.infoUrl,artifacts:D,installedAtIso:new Date().toISOString()};fs.writeFileSync(path.join(v,"install-manifest.json"),JSON.stringify(U,null,2)+`
2
- `,"utf8"),w();const R=path.join(y,binName("ffmpeg")),M=P.has("ffprobe")?path.join(y,binName("ffprobe")):null,k=(0,probe_1.probeFfmpegRuntime)(R);return l({kind:"done",variant:s,slotDir:v,ffmpegPath:R,ffprobePath:M,version:k.found&&(a=k.version)!==null&&a!==void 0?a:null})}catch(p){return w(),d?.aborted?l({kind:"cancelled"}):l({kind:"error",reason:p instanceof Error?p.message:String(p)})}}u(installFfmpegToolchain,"installFfmpegToolchain");
1
+ "use strict";var B=Object.defineProperty;var u=(o,e)=>B(o,"name",{value:e,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(o,e,n,r){r===void 0&&(r=n);var t=Object.getOwnPropertyDescriptor(e,n);(!t||("get"in t?!e.__esModule:t.writable||t.configurable))&&(t={enumerable:!0,get:u(function(){return e[n]},"get")}),Object.defineProperty(o,r,t)}):(function(o,e,n,r){r===void 0&&(r=n),o[r]=e[n]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(o,e){Object.defineProperty(o,"default",{enumerable:!0,value:e})}):function(o,e){o.default=e}),__importStar=this&&this.__importStar||(function(){var o=u(function(e){return o=Object.getOwnPropertyNames||function(n){var r=[];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(r[r.length]=t);return r},o(e)},"ownKeys");return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=o(e),t=0;t<r.length;t++)r[t]!=="default"&&__createBinding(n,e,r[t]);return __setModuleDefault(n,e),n}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolveTarBinary=resolveTarBinary,exports.installFfmpegToolchain=installFfmpegToolchain;const fs=__importStar(require("fs")),path=__importStar(require("path")),crypto=__importStar(require("crypto")),child_process_1=require("child_process"),paths_1=require("../../paths"),probe_1=require("../probe"),index_1=require("./index"),DOWNLOAD_USER_AGENT="Mozilla/5.0 (compatible; m0saic-toolchain-fetch) AppleWebKit/537.36",PROGRESS_THROTTLE_MS=100;function binName(o){return process.platform==="win32"?`${o}.exe`:o}u(binName,"binName");function findBinary(o,e){const n=binName(e),r=[o];for(;r.length>0;){const t=r.shift();for(const a of fs.readdirSync(t,{withFileTypes:!0})){const s=path.join(t,a.name);if(a.isDirectory())r.push(s);else if(a.name===n)return s}}return null}u(findBinary,"findBinary");async function downloadToFile(o,e,n){var r;const t=await n.fetchImpl(o,{signal:n.signal,headers:{"User-Agent":DOWNLOAD_USER_AGENT},redirect:"follow"});if(!t.ok)throw new Error(`HTTP ${t.status} ${t.statusText}`);if(!t.body)throw new Error("Response has no body stream");const a=Number((r=t.headers.get("content-length"))!==null&&r!==void 0?r:0)||0,s=crypto.createHash("sha256"),j=fs.createWriteStream(e);let b=0,g=0;try{const c=t.body.getReader();for(;;){const{done:m,value:i}=await c.read();if(m)break;s.update(i),b+=i.byteLength,await new Promise((y,w)=>{j.write(Buffer.from(i),d=>d?w(d):y())});const v=Date.now();v-g>=PROGRESS_THROTTLE_MS&&(g=v,n.onProgress(b,a))}n.onProgress(b,a)}finally{await new Promise(c=>j.end(()=>c()))}return{sha256:s.digest("hex")}}u(downloadToFile,"downloadToFile");function resolveTarBinary(o=process.platform,e=process.env,n=fs.existsSync){var r,t;if(o!=="win32")return"tar";const a=(t=(r=e.SystemRoot)!==null&&r!==void 0?r:e.SYSTEMROOT)!==null&&t!==void 0?t:"C:\\Windows",s=path.win32.join(a,"System32","tar.exe");return n(s)?s:"tar"}u(resolveTarBinary,"resolveTarBinary");function extractArchive(o,e){var n,r;(0,paths_1.ensureDir)(e);const t=resolveTarBinary(),a=(0,child_process_1.spawnSync)(t,["-xf",o,"-C",e],{stdio:["ignore","ignore","pipe"],timeout:12e4});if(a.error)throw new Error(`${t} failed to start: ${a.error.message}`);if(a.status!==0){const s=(r=(n=a.stderr)===null||n===void 0?void 0:n.toString().slice(0,400))!==null&&r!==void 0?r:"";throw new Error(`${t} exited ${a.status}: ${s}`)}}u(extractArchive,"extractArchive");async function installFfmpegToolchain(o){var e,n,r,t,a;const{signal:s}=o,j=(e=o.onEvent)!==null&&e!==void 0?e:(()=>{}),b=(n=o.fetchImpl)!==null&&n!==void 0?n:globalThis.fetch,g=(r=o.platformKey)!==null&&r!==void 0?r:(0,index_1.getPlatformKey)(),c=u(h=>(j(h),h),"emit"),m=(0,index_1.getFfmpegPlatformEntry)(g);if(!m.available)return c({kind:"error",reason:`No ffmpeg build is pinned for ${g}: ${m.reason}`+(m.trackingUrl?` (tracking: ${m.trackingUrl})`:"")});const i=m,v=(0,paths_1.getGoldenFfmpegSlotDir)(index_1.ffmpegBaseline.m0saicVersion),y=path.join(v,"bin");(0,paths_1.ensureDir)((0,paths_1.getFfmpegToolchainsRoot)());const w=fs.mkdtempSync(path.join((0,paths_1.getFfmpegToolchainsRoot)(),".staging-gpl-")),d=u(()=>{try{fs.rmSync(w,{recursive:!0,force:!0})}catch{}},"cleanupStaging");c({kind:"started",platformKey:g,snapshot:i.snapshot,slotDir:v,artifactCount:i.artifacts.length});try{const h=[],E=[];for(let l=0;l<i.artifacts.length;l++){const f=i.artifacts[l],p=path.join(w,`artifact-${l}.${f.archive}`),T=[f.url,f.upstreamUrl].filter(S=>!!S);let _=null,$="",O=null;for(const S of T){c({kind:"downloading",artifactIndex:l,artifactCount:i.artifacts.length,url:S,tools:f.tools});try{const x=await downloadToFile(S,p,{fetchImpl:b,signal:s,onProgress:u((N,U)=>c({kind:"progress",artifactIndex:l,artifactCount:i.artifacts.length,bytesReceived:N,totalBytes:U}),"onProgress")});_=S,$=x.sha256;break}catch(x){if(s?.aborted)return d(),c({kind:"cancelled"});O=x instanceof Error?x:new Error(String(x))}}if(!_)return d(),c({kind:"error",reason:`Download failed for ${f.tools.join("+")}: ${(t=O?.message)!==null&&t!==void 0?t:"unknown"}`,failedUrl:T[T.length-1]});if(c({kind:"verifying",artifactIndex:l,artifactCount:i.artifacts.length}),$!==f.sha256)return d(),c({kind:"error",reason:`sha256 mismatch for ${_}: expected ${f.sha256}, got ${$}. Nothing was installed \u2014 the download may be corrupt or tampered with.`,failedUrl:_});c({kind:"extracting",artifactIndex:l,artifactCount:i.artifacts.length});const k=path.join(w,`extracted-${l}`);extractArchive(p,k),h.push(k),E.push({url:_,sha256:$,tools:f.tools})}const P=new Map;for(const l of["ffmpeg","ffprobe"])if(i.artifacts.some(f=>f.tools.includes(l))){for(const f of h){const p=findBinary(f,l);if(p){P.set(l,p);break}}if(!P.has(l))return d(),c({kind:"error",reason:`Archive extracted but no ${binName(l)} binary was found inside.`})}(0,paths_1.ensureDir)(y);for(const[l,f]of P){const p=path.join(y,binName(l));fs.rmSync(p,{force:!0}),fs.copyFileSync(f,p),process.platform!=="win32"&&fs.chmodSync(p,493)}const F={variant:"gpl",platformKey:g,snapshot:i.snapshot,profile:i.profile,source:i.source,vendored:i.vendored,redistributable:i.redistributable,licenseNote:i.licenseNote,infoUrl:i.infoUrl,artifacts:E,installedAtIso:new Date().toISOString()};fs.writeFileSync(path.join(v,"install-manifest.json"),JSON.stringify(F,null,2)+`
2
+ `,"utf8"),d();const D=path.join(y,binName("ffmpeg")),M=P.has("ffprobe")?path.join(y,binName("ffprobe")):null,R=(0,probe_1.probeFfmpegRuntime)(D);return c({kind:"done",slotDir:v,ffmpegPath:D,ffprobePath:M,version:R.found&&(a=R.version)!==null&&a!==void 0?a:null})}catch(h){return d(),s?.aborted?c({kind:"cancelled"}):c({kind:"error",reason:h instanceof Error?h.message:String(h)})}}u(installFfmpegToolchain,"installFfmpegToolchain");
@@ -1,7 +1,7 @@
1
- "use strict";var u=Object.defineProperty;var a=(e,t)=>u(e,"name",{value:t,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(e,t,o,n){n===void 0&&(n=o);var r=Object.getOwnPropertyDescriptor(t,o);(!r||("get"in r?!t.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:a(function(){return t[o]},"get")}),Object.defineProperty(e,n,r)}):(function(e,t,o,n){n===void 0&&(n=o),e[n]=t[o]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}):function(e,t){e.default=t}),__importStar=this&&this.__importStar||(function(){var e=a(function(t){return e=Object.getOwnPropertyNames||function(o){var n=[];for(var r in o)Object.prototype.hasOwnProperty.call(o,r)&&(n[n.length]=r);return n},e(t)},"ownKeys");return function(t){if(t&&t.__esModule)return t;var o={};if(t!=null)for(var n=e(t),r=0;r<n.length;r++)n[r]!=="default"&&__createBinding(o,t,n[r]);return __setModuleDefault(o,t),o}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.goldenPlatformSlot=goldenPlatformSlot,exports.resolveGoldenFfmpeg=resolveGoldenFfmpeg;const fs=__importStar(require("fs")),paths_1=require("../paths"),ffmpeg_1=require("./ffmpeg"),probe_1=require("./probe");function goldenPlatformSlot(){const e=process.platform;if(e==="win32"||e==="darwin")return e;throw new Error(`Unsupported golden platform "${e}" \u2014 pixel goldens exist for win32 and darwin only.`)}a(goldenPlatformSlot,"goldenPlatformSlot");function resolveGoldenFfmpeg(e){var t,o;const n=(0,ffmpeg_1.resolveFfmpegBaseline)(e?.platformKey),r=n.profile,l=ffmpeg_1.ffmpegBaseline.m0saicVersion,i=(0,paths_1.getGoldenFfmpegBinaryPath)(l,r),f=(0,paths_1.getGoldenFfprobeBinaryPath)(l,r);if(!((t=e?.exists)!==null&&t!==void 0?t:fs.existsSync)(i))return{ok:!1,reason:"slot-missing",baseline:n,ffmpegPath:i,message:`Golden ffmpeg slot not installed: ${i}
2
- Expected the pinned ${r.toUpperCase()} toolchain (${n.snapshot}, ${n.source}).
3
- Install it with: m0saic setup (variant "${r}"). Golden tests never fall back to PATH ffmpeg.`};const s=((o=e?.probe)!==null&&o!==void 0?o:probe_1.probeFfmpegRuntime)(i);return s.found?s.version.includes(n.snapshot)?{ok:!0,ffmpegPath:i,ffprobePath:f,baseline:n,runtime:s}:{ok:!1,reason:"snapshot-mismatch",baseline:n,ffmpegPath:i,runtime:s,message:`Golden ffmpeg at ${i} is not the pinned baseline build.
4
- expected snapshot: ${n.snapshot} (${n.source})
1
+ "use strict";var f=Object.defineProperty;var a=(e,n)=>f(e,"name",{value:n,configurable:!0});var __createBinding=this&&this.__createBinding||(Object.create?(function(e,n,r,t){t===void 0&&(t=r);var o=Object.getOwnPropertyDescriptor(n,r);(!o||("get"in o?!n.__esModule:o.writable||o.configurable))&&(o={enumerable:!0,get:a(function(){return n[r]},"get")}),Object.defineProperty(e,t,o)}):(function(e,n,r,t){t===void 0&&(t=r),e[t]=n[r]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(e,n){Object.defineProperty(e,"default",{enumerable:!0,value:n})}):function(e,n){e.default=n}),__importStar=this&&this.__importStar||(function(){var e=a(function(n){return e=Object.getOwnPropertyNames||function(r){var t=[];for(var o in r)Object.prototype.hasOwnProperty.call(r,o)&&(t[t.length]=o);return t},e(n)},"ownKeys");return function(n){if(n&&n.__esModule)return n;var r={};if(n!=null)for(var t=e(n),o=0;o<t.length;o++)t[o]!=="default"&&__createBinding(r,n,t[o]);return __setModuleDefault(r,n),r}})();Object.defineProperty(exports,"__esModule",{value:!0}),exports.goldenPlatformSlot=goldenPlatformSlot,exports.resolveGoldenFfmpeg=resolveGoldenFfmpeg;const fs=__importStar(require("fs")),paths_1=require("../paths"),ffmpeg_1=require("./ffmpeg"),probe_1=require("./probe");function goldenPlatformSlot(){const e=process.platform;if(e==="win32"||e==="darwin")return e;throw new Error(`Unsupported golden platform "${e}" \u2014 pixel goldens exist for win32 and darwin only.`)}a(goldenPlatformSlot,"goldenPlatformSlot");function resolveGoldenFfmpeg(e){var n,r;const t=(0,ffmpeg_1.resolveFfmpegBaseline)(e?.platformKey),o=ffmpeg_1.ffmpegBaseline.m0saicVersion,i=(0,paths_1.getGoldenFfmpegBinaryPath)(o),l=(0,paths_1.getGoldenFfprobeBinaryPath)(o);if(!((n=e?.exists)!==null&&n!==void 0?n:fs.existsSync)(i))return{ok:!1,reason:"slot-missing",baseline:t,ffmpegPath:i,message:`Golden ffmpeg slot not installed: ${i}
2
+ Expected the pinned GPL toolchain (${t.snapshot}, ${t.source}).
3
+ Install it with: m0saic setup. Golden tests never fall back to PATH ffmpeg.`};const s=((r=e?.probe)!==null&&r!==void 0?r:probe_1.probeFfmpegRuntime)(i);return s.found?s.version.includes(t.snapshot)?{ok:!0,ffmpegPath:i,ffprobePath:l,baseline:t,runtime:s}:{ok:!1,reason:"snapshot-mismatch",baseline:t,ffmpegPath:i,runtime:s,message:`Golden ffmpeg at ${i} is not the pinned baseline build.
4
+ expected snapshot: ${t.snapshot} (${t.source})
5
5
  probed version: ${s.version}
6
- Reinstall the pinned toolchain with: m0saic setup (variant "${r}").`}:{ok:!1,reason:"probe-failed",baseline:n,ffmpegPath:i,runtime:s,message:`Golden ffmpeg exists but failed to run: ${i}
7
- Reinstall the pinned toolchain with: m0saic setup (variant "${r}").`}}a(resolveGoldenFfmpeg,"resolveGoldenFfmpeg");
6
+ Reinstall the pinned toolchain with: m0saic setup.`}:{ok:!1,reason:"probe-failed",baseline:t,ffmpegPath:i,runtime:s,message:`Golden ffmpeg exists but failed to run: ${i}
7
+ Reinstall the pinned toolchain with: m0saic setup.`}}a(resolveGoldenFfmpeg,"resolveGoldenFfmpeg");
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m0saic/platform",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "main": "dist/cjs/index.js",
5
5
  "exports": {
6
6
  ".": {
@@ -1 +1 @@
1
- 'use strict';const _0x2add0d=_0x2901;(function(_0x326dfe,_0x27ef0c){const _0xa3f9f6=_0x2901,_0xdf0d07=_0x326dfe();while(!![]){try{const _0x4cd7a3=parseInt(_0xa3f9f6(0x1f8))/0x1+parseInt(_0xa3f9f6(0x24b))/0x2*(parseInt(_0xa3f9f6(0x250))/0x3)+parseInt(_0xa3f9f6(0x232))/0x4*(-parseInt(_0xa3f9f6(0x1e8))/0x5)+-parseInt(_0xa3f9f6(0x247))/0x6*(-parseInt(_0xa3f9f6(0x1f7))/0x7)+-parseInt(_0xa3f9f6(0x1db))/0x8*(-parseInt(_0xa3f9f6(0x1d1))/0x9)+-parseInt(_0xa3f9f6(0x1ef))/0xa+parseInt(_0xa3f9f6(0x1d0))/0xb*(-parseInt(_0xa3f9f6(0x1f9))/0xc);if(_0x4cd7a3===_0x27ef0c)break;else _0xdf0d07['push'](_0xdf0d07['shift']());}catch(_0xb49756){_0xdf0d07['push'](_0xdf0d07['shift']());}}}(_0xc1c7,0xe5c7b));var _0x53f962=this&&this[_0x2add0d(0x230)]||(Object[_0x2add0d(0x1fa)]?function(_0x30a16d,_0x4a4006,_0x4108e5,_0x4ff259){const _0xf345ce=_0x2add0d;_0x4ff259===void 0x0&&(_0x4ff259=_0x4108e5);var _0x2e08d2=Object[_0xf345ce(0x249)](_0x4a4006,_0x4108e5);(!_0x2e08d2||(_0xf345ce(0x242)in _0x2e08d2?!_0x4a4006[_0xf345ce(0x24f)]:_0x2e08d2[_0xf345ce(0x211)]||_0x2e08d2[_0xf345ce(0x229)]))&&(_0x2e08d2={'enumerable':!0x0,'get':function(){return _0x4a4006[_0x4108e5];}}),Object[_0xf345ce(0x1d4)](_0x30a16d,_0x4ff259,_0x2e08d2);}:function(_0x2263ad,_0x6a2fb8,_0x28edb4,_0x322c77){_0x322c77===void 0x0&&(_0x322c77=_0x28edb4),_0x2263ad[_0x322c77]=_0x6a2fb8[_0x28edb4];}),_0xbf32ae=this&&this[_0x2add0d(0x1f6)]||(Object[_0x2add0d(0x1fa)]?function(_0x42ce1d,_0x1772f2){const _0xaade37=_0x2add0d;Object[_0xaade37(0x1d4)](_0x42ce1d,_0xaade37(0x223),{'enumerable':!0x0,'value':_0x1772f2});}:function(_0x45f6f1,_0x2a30f4){const _0x130753=_0x2add0d;_0x45f6f1[_0x130753(0x223)]=_0x2a30f4;}),_0x32fc92=this&&this[_0x2add0d(0x22d)]||(function(){var _0x3bc09c=function(_0x4fb8ad){const _0xe53175=_0x2901;return _0x3bc09c=Object[_0xe53175(0x224)]||function(_0xb04ac9){const _0x30c958=_0xe53175;var _0x3f559a=[];for(var _0x5edfe7 in _0xb04ac9)Object[_0x30c958(0x1ff)][_0x30c958(0x235)][_0x30c958(0x213)](_0xb04ac9,_0x5edfe7)&&(_0x3f559a[_0x3f559a[_0x30c958(0x21c)]]=_0x5edfe7);return _0x3f559a;},_0x3bc09c(_0x4fb8ad);};return function(_0x2495fd){const _0x20f12c=_0x2901;if(_0x2495fd&&_0x2495fd[_0x20f12c(0x24f)])return _0x2495fd;var _0x3880ed={};if(_0x2495fd!=null){for(var _0x56ee28=_0x3bc09c(_0x2495fd),_0x89e966=0x0;_0x89e966<_0x56ee28[_0x20f12c(0x21c)];_0x89e966++)_0x56ee28[_0x89e966]!==_0x20f12c(0x223)&&_0x53f962(_0x3880ed,_0x2495fd,_0x56ee28[_0x89e966]);}return _0xbf32ae(_0x3880ed,_0x2495fd),_0x3880ed;};}());Object[_0x2add0d(0x1d4)](exports,_0x2add0d(0x24f),{'value':!0x0}),exports[_0x2add0d(0x24a)]=exports[_0x2add0d(0x208)]=exports[_0x2add0d(0x23f)]=exports[_0x2add0d(0x24e)]=exports[_0x2add0d(0x1e2)]=exports[_0x2add0d(0x1c4)]=void 0x0,exports[_0x2add0d(0x1ea)]=_0xd8b75,exports[_0x2add0d(0x240)]=_0x396637,exports[_0x2add0d(0x1c9)]=_0x1a7f53,exports[_0x2add0d(0x21b)]=_0x339930,exports[_0x2add0d(0x1d6)]=_0x2025eb,exports[_0x2add0d(0x241)]=_0x3caef4,exports[_0x2add0d(0x225)]=_0x4c1bd7,exports[_0x2add0d(0x205)]=_0x3d26ae,exports[_0x2add0d(0x207)]=_0x2debfc;const _0x5c05ae=_0x32fc92(require(_0x2add0d(0x21e))),_0x2ce450=_0x32fc92(require('fs')),_0x3b5278=_0x32fc92(require(_0x2add0d(0x20f))),_0x2799e8=require(_0x2add0d(0x1bf));function _0x2901(_0x1307a8,_0x3a48c8){_0x1307a8=_0x1307a8-0x1bf;const _0xc1c72b=_0xc1c7();let _0x29014e=_0xc1c72b[_0x1307a8];if(_0x2901['QfEegX']===undefined){var _0x245a11=function(_0x3a056b){const _0x4f951c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x53f962='',_0xbf32ae='';for(let _0x32fc92=0x0,_0x5c05ae,_0x2ce450,_0x3b5278=0x0;_0x2ce450=_0x3a056b['charAt'](_0x3b5278++);~_0x2ce450&&(_0x5c05ae=_0x32fc92%0x4?_0x5c05ae*0x40+_0x2ce450:_0x2ce450,_0x32fc92++%0x4)?_0x53f962+=String['fromCharCode'](0xff&_0x5c05ae>>(-0x2*_0x32fc92&0x6)):0x0){_0x2ce450=_0x4f951c['indexOf'](_0x2ce450);}for(let _0x2799e8=0x0,_0x5eeb1c=_0x53f962['length'];_0x2799e8<_0x5eeb1c;_0x2799e8++){_0xbf32ae+='%'+('00'+_0x53f962['charCodeAt'](_0x2799e8)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0xbf32ae);};_0x2901['VCuoUJ']=_0x245a11,_0x2901['cRzcUi']={},_0x2901['QfEegX']=!![];}const _0x1be78f=_0xc1c72b[0x0],_0xdfd5a7=_0x1307a8+_0x1be78f,_0x265f83=_0x2901['cRzcUi'][_0xdfd5a7];return!_0x265f83?(_0x29014e=_0x2901['VCuoUJ'](_0x29014e),_0x2901['cRzcUi'][_0xdfd5a7]=_0x29014e):_0x29014e=_0x265f83,_0x29014e;}exports[_0x2add0d(0x1c4)]=0x1,exports[_0x2add0d(0x1e2)]=_0x2add0d(0x1d5),exports[_0x2add0d(0x24e)]=_0x2add0d(0x1cf),exports[_0x2add0d(0x23f)]=_0x2add0d(0x24c),exports[_0x2add0d(0x208)]=[_0x2add0d(0x1f1),_0x2add0d(0x233)];class _0x5eeb1c extends Error{constructor(_0x2bcc91){const _0x1e0c0b=_0x2add0d;super(_0x1e0c0b(0x251)+_0x2bcc91[_0x1e0c0b(0x22e)]+':\x20'+_0x2bcc91[_0x1e0c0b(0x1d9)]+')'),this[_0x1e0c0b(0x209)]=_0x1e0c0b(0x24a),this[_0x1e0c0b(0x1f5)]=_0x2bcc91;}}exports[_0x2add0d(0x24a)]=_0x5eeb1c;const _0x2e1bd4=/^[0-9a-f]{64}$/,_0x524bfc=/^[A-Za-z0-9][\w.-]*$/,_0x55ad72=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/,_0x82c8d9=_0x2add0d(0x1ca);function _0x3068dc(_0xa5766a){const _0x379cc8=_0x2add0d;return _0xa5766a[_0x379cc8(0x214)]()===_0x82c8d9;}function _0x41e8b7(_0xe32e53){const _0x146c2c=_0x2add0d;return _0x5c05ae[_0x146c2c(0x1e5)](_0x146c2c(0x22a))[_0x146c2c(0x1c7)](_0xe32e53)[_0x146c2c(0x22c)](_0x146c2c(0x20a));}function _0xd8b75(_0x3269ba){const _0x316809=_0x2add0d,_0x49a009=_0x2ce450[_0x316809(0x248)](_0x3269ba);if(_0x3269ba[_0x316809(0x214)]()[_0x316809(0x1fe)](_0x316809(0x1fc)))try{const _0x58450f=_0x49a009[_0x316809(0x220)](_0x316809(0x203))[_0x316809(0x237)](/^/,'');return _0x41e8b7(JSON[_0x316809(0x22b)](JSON[_0x316809(0x1d8)](_0x58450f)));}catch{}return _0x41e8b7(_0x49a009);}function _0x355796(_0x36b7ac){const _0x4a1211=_0x2add0d;try{const _0x13024a=_0x2ce450[_0x4a1211(0x1f2)](_0x36b7ac,{'withFileTypes':!0x0});return _0x13024a[_0x4a1211(0x23e)]((_0x2357cf,_0x3c367d)=>_0x2357cf[_0x4a1211(0x209)]<_0x3c367d[_0x4a1211(0x209)]?-0x1:_0x2357cf[_0x4a1211(0x209)]>_0x3c367d[_0x4a1211(0x209)]?0x1:0x0),_0x13024a;}catch{return null;}}function _0x2b0b0a(_0x5265e6){const _0x2372f3=_0x2add0d;return _0x5265e6[_0x2372f3(0x1d2)]()?_0x2372f3(0x1d7):_0x5265e6[_0x2372f3(0x221)]()?_0x2372f3(0x1dd):_0x5265e6[_0x2372f3(0x1d3)]()?_0x2372f3(0x239):_0x2372f3(0x1f4);}function _0x13e740(_0x3887dc){const _0x4bbee6=_0x2add0d;try{const _0x19b547=_0x2ce450[_0x4bbee6(0x204)](_0x3887dc);return _0x19b547[_0x4bbee6(0x1d2)]()?_0x4bbee6(0x1d7):_0x19b547[_0x4bbee6(0x221)]()?_0x4bbee6(0x1dd):_0x19b547[_0x4bbee6(0x1d3)]()?_0x4bbee6(0x239):_0x4bbee6(0x1f4);}catch{return _0x4bbee6(0x1eb);}}function _0x4ce681(_0x111756,_0x4d6c0d,_0x31a896){const _0x4edc85=_0x2add0d,_0x5dd93a=_0x355796(_0x111756);if(_0x5dd93a)for(const _0x59f6ca of _0x5dd93a){const _0x419766=_0x4d6c0d?_0x4d6c0d+'/'+_0x59f6ca[_0x4edc85(0x209)]:_0x59f6ca[_0x4edc85(0x209)];switch(_0x2b0b0a(_0x59f6ca)){case _0x4edc85(0x1d7):break;case _0x4edc85(0x1dd):_0x4ce681(_0x3b5278[_0x4edc85(0x20b)](_0x111756,_0x59f6ca[_0x4edc85(0x209)]),_0x419766,_0x31a896);break;case _0x4edc85(0x239):_0x31a896[_0x4edc85(0x1ee)](_0x419766);break;case _0x4edc85(0x1f4):throw new _0x5eeb1c({'reason':_0x4edc85(0x246),'detail':_0x419766});}}}function _0x448032(_0x51d3b1,_0x1ae302){const _0x31326d=_0x2add0d,_0x436fa2=_0x355796(_0x51d3b1);if(!_0x436fa2)return null;for(const _0x546917 of _0x436fa2){const _0x22bd7c=_0x1ae302+'/'+_0x546917[_0x31326d(0x209)];switch(_0x2b0b0a(_0x546917)){case _0x31326d(0x1d7):return{'reason':_0x31326d(0x234),'detail':_0x22bd7c};case _0x31326d(0x1f4):return{'reason':_0x31326d(0x246),'detail':_0x22bd7c};case _0x31326d(0x239):break;case _0x31326d(0x1dd):{if(_0x3068dc(_0x546917[_0x31326d(0x209)]))return{'reason':_0x31326d(0x215),'detail':_0x22bd7c};const _0x2591b6=_0x448032(_0x3b5278[_0x31326d(0x20b)](_0x51d3b1,_0x546917[_0x31326d(0x209)]),_0x22bd7c);if(_0x2591b6)return _0x2591b6;}}}return null;}function _0x396637(_0x5a1e14){const _0x432102=_0x2add0d,_0x442c10=_0x355796(_0x5a1e14);if(_0x442c10)for(const _0x2c7ba3 of _0x442c10){const _0x3fe299=_0x2b0b0a(_0x2c7ba3);if(_0x3fe299===_0x432102(0x1d7))return{'reason':_0x432102(0x234),'detail':_0x2c7ba3[_0x432102(0x209)]};if(_0x3fe299===_0x432102(0x1f4))return{'reason':_0x432102(0x246),'detail':_0x2c7ba3[_0x432102(0x209)]};if(_0x3fe299===_0x432102(0x1dd)&&_0x3068dc(_0x2c7ba3[_0x432102(0x209)]))return{'reason':_0x432102(0x215),'detail':_0x2c7ba3[_0x432102(0x209)]};}const _0x4c0430=_0x13e740(_0x3b5278[_0x432102(0x20b)](_0x5a1e14,exports[_0x432102(0x23f)]));if(_0x4c0430===_0x432102(0x1d7))return{'reason':_0x432102(0x234),'detail':exports[_0x432102(0x23f)]};if(_0x4c0430===_0x432102(0x1f4))return{'reason':_0x432102(0x246),'detail':exports[_0x432102(0x23f)]};if(_0x4c0430===_0x432102(0x1dd)){const _0x37570f=_0x448032(_0x3b5278[_0x432102(0x20b)](_0x5a1e14,exports[_0x432102(0x23f)]),exports[_0x432102(0x23f)]);if(_0x37570f)return _0x37570f;}for(const _0x7a342c of exports[_0x432102(0x208)]){const _0x5b2a15=_0x13e740(_0x3b5278[_0x432102(0x20b)](_0x5a1e14,_0x7a342c));if(_0x5b2a15===_0x432102(0x1d7))return{'reason':_0x432102(0x234),'detail':_0x7a342c};if(_0x5b2a15===_0x432102(0x1f4))return{'reason':_0x432102(0x246),'detail':_0x7a342c};}return null;}function _0x1a7f53(_0xe18647){const _0x49c089=_0x2add0d,_0x41c6c5=[],_0xcf5b2a=_0x3b5278[_0x49c089(0x20b)](_0xe18647,exports[_0x49c089(0x23f)]),_0x2e860e=_0x13e740(_0xcf5b2a);if(_0x2e860e===_0x49c089(0x1f4))throw new _0x5eeb1c({'reason':_0x49c089(0x246),'detail':exports[_0x49c089(0x23f)]});_0x2e860e===_0x49c089(0x1dd)&&_0x4ce681(_0xcf5b2a,exports[_0x49c089(0x23f)],_0x41c6c5);for(const _0x3085ae of exports[_0x49c089(0x208)]){const _0x276b6d=_0x13e740(_0x3b5278[_0x49c089(0x20b)](_0xe18647,_0x3085ae));if(_0x276b6d===_0x49c089(0x1f4))throw new _0x5eeb1c({'reason':_0x49c089(0x246),'detail':_0x3085ae});_0x276b6d===_0x49c089(0x239)&&_0x41c6c5[_0x49c089(0x1ee)](_0x3085ae);}return _0x41c6c5[_0x49c089(0x23e)]((_0x1f1921,_0x45307d)=>_0x1f1921<_0x45307d?-0x1:_0x1f1921>_0x45307d?0x1:0x0),_0x41c6c5[_0x49c089(0x1ed)](_0x728d41=>({'path':_0x728d41,'sha256':_0xd8b75(_0x3b5278[_0x49c089(0x20b)](_0xe18647,..._0x728d41[_0x49c089(0x1e0)]('/')))}));}function _0x339930(_0x635a23){const _0x1b55d8=_0x2add0d;return _0x1a7f53(_0x635a23)[_0x1b55d8(0x1ed)](_0x4839bb=>_0x4839bb[_0x1b55d8(0x20f)]+'\x00'+_0x4839bb[_0x1b55d8(0x22a)]+'\x0a')[_0x1b55d8(0x20b)]('');}function _0xc1c7(){const _0x57a7b3=['Dg9tDhjPBMC','AxneAxjLy3rVCNK','DgfN','zgvMyxvSDa','z2v0t3DUuhjVCgvYDhLoyw1LCW','C2LNBKnVBw11BML0EvjLBgvHC2u','CMvSzwfZzsbZy2HLBwfwzxjZAw9Uia','ChjPDMf0zuTLEvbLBq','Dw5RBM93BI1RAwq','y29UzMLNDxjHyMXL','C2HHmJu2','C3rYAw5NAwz5','zgLNzxn0','x19PBxbVCNrtDgfY','CMvHC29U','ignHCNjPzxmGBM8GC2LNBMf0DxjLicH1BNnPz25LzcbZBMfWC2HVDcK','x19JCMvHDgvcAw5KAw5N','A2LK','mJa0Ae9xue5v','CgfJA2fNzs5QC29U','C3LTBgLUAY1PBI10CMvL','AgfZt3DUuhjVCgvYDhK','y3jLyxrLuhvIBgLJs2v5','CMvWBgfJzq','CMvSzwfZzsb0ywCGBwLZC2LUzYbVCIbPBNzHBgLK','zMLSzq','Dg9ju09tDhjPBMC','AxnbCNjHEq','BwLZC2LUzY1YzwXLyxnL','teLdru5trv9qvujmsunFs0vzuW','C29YDa','q09ntvvosvrzx1jftevbu0vFu0LhtKvex0rjuG','Aw5ZCgvJDfjLBgvHC2vuCMvL','yNvPBgrszwXLyxnLugf5Bg9Hza','z2v0','C2LNBG','ChvIBgLJs2v5CW','C2LNBMf0DxjLlNnPzYbPCYbUB3qGyMfZzty0DxjS','C3bLy2LHBc1MAwXLlwLUlxrYzwu','mtC5nZeYnLf2yvvezq','CMvHzezPBgvtEw5J','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','uMvSzwfZzvrYzwvfCNjVCG','mtC5ndmZmfrLCKTXyq','zgLZDa','BM93','q09ntvvosvrzx1jftevbu0vFrKLmrq','x19LC01VzhvSzq','nNLSrLzotW','CMvSzwfZzsb0CMvLihDVDwXKig5VDcb2zxjPzNKGka','lI9WDwjSAwnlzxLZ','iIbPCYbUB3qGzwqYntuXoq','C3rYAw5N','B2jQzwn0','Dw5RBM93BIbZAwDUAw5NigTLEsaI','q09ntvvosvrzx1jftevbu0vFu0niru1bx1zfuLnjt04','yMfKlxnPz25HDhvYzq','DgvZDa','DxbKyxrL','DhjLzvnOyti1nIbTAxnZAw5Nig9Yig5VDcbHigHLEcbZAgeYnty','BgLZDfjLBgvHC2vuCMvL','BM9Kzv9TB2r1BgvZ','zw1WDhK','y3jLyxrLuhjPDMf0zuTLEq','ChvIBgLZAgvKqxq','lcbLEhbLy3rLzcbLzdi1nte5','CMvSzwfZzs5QC29U','mtfqzgXmt0O','nJncA1jPq0q','AxntEw1IB2XPy0XPBMS','AxngAwXL','zgvMAw5LuhjVCgvYDhK','BtbZywLJlwnVBw11BML0Es1YzwXLyxnLl3yX','y29TChv0zvjLBgvHC2vuCMvLu2HHmJu2','C3LTBgLUAW','CgfYC2u','zgv0ywLS','DMvYAwz5','mtu5nZiZmMTeyNLlzG','Aw52ywXPzcbYzwXLyxnLihrHzYaI','zgLY','C2LNBMf0DxjLignOzwnRigzHAwXLzcbMB3iGDgfNia','igLZig5VDcbHBIbVyMPLy3q','C3bSAxq','BwLZC2LUzYbZAwDUAw5NigTPza','q09ntvvosvrzx1jftevbu0vFuefzte9brf9quKvgsvG','ice9psa','C2nOzw1HvMvYC2LVBG','y3jLyxrLsgfZAa','C2LNBMf0DxjLigLZig5VDcbHBIbVyMPLy3q','C2LNBMf0DxjLlNnPzYbTAxnZAw5N','mtC5mJa1EgvvAxfZ','iIdIGjqGDxbKyxrLig0WC2fPyYbVCIbYzs1JAgvJAYb0AguGy2HLy2TVDxq','AgfZAfjLBgvHC2vgAwXL','BwLZC2LUzW','igLUignOzwnRB3v0','BwfW','ChvZAa','mtm1ota1nZbMrwjLy0q','ChvIBgLZAgvKqxqGBwLZC2LUzYbVCIbUB3qGyw4GsvnpidG2mdeGDgLTzxn0yw1W','DgvTCgXHDguTBwfUAwzLC3qUANnVBG','CMvHzgrPCLn5BMm','CMvWB0rPCG','C3bLy2LHBa','ChjVyMXLBq','x19ZzxrnB2r1BgvezwzHDwX0','mJfZvw5gthe','otuYnJCZBe92sMDU','mta5odaYmdrUEMn6wge','y3jLyxrL','zNjVBq','lMPZB24','y291BgqGBM90igHHC2GGDgHLignOzwnRB3v0oIa','zw5KC1DPDgG','ChjVDg90ExbL','CMvSzwfZzsb0CMvLigrPzMzLCNmGzNjVBsb0AguGC2LNBMvKig9UzsaOzgLZDc8SihrLBxbSyxrLlw1HBMLMzxn0lMPZB24GB3iGCgfJA2fNzs5QC29Uig1VzgLMAwvKkq','C2LNBMf0DxjL','BwvZC2fNzq','DxrMoa','Bhn0yxrtEw5J','yNvPBgrvBNnPz25LzenVBw11BML0EvjLBgvHC2u','yxn5Bw1LDhjPy0TLEvr5Cgu','DMvYAwz5q29TBxvUAxr5uMvSzwfZzq','q09ntvvosvrzx1jftevbu0vFu0LhtKvex0zjtevt','BMfTzq','Agv4','AM9PBG','DhjLzvnOyti1nG','zwqYntuXoq','BwLZC2LUzY1ZAwDUyxr1CMu','Cgf0Aa','BM8G','D3jPDgfIBgu','BwfSzM9YBwvK','y2fSBa','Dg9mB3DLCKnHC2u','zM9YzwLNBI1TB2r1BgvZ','C2LNBMf0DxjLlMTPzcbTAxnZAw5N','yMfZzty0DxjS','Dw5RBM93BG','igLZig5VDcb2ywXPzcbku09o','C2LNBMLUzYbRzxKGAxmG','yNvPBgrszwXLyxnLvhjLzuXPC3rPBMC','BgvUz3rO','DhjLzs1TAxnTyxrJAa','y3j5ChrV','C2LNBMf0DxjLlMfSzYaI'];_0xc1c7=function(){return _0x57a7b3;};return _0xc1c7();}function _0x2025eb(_0x1312e2){return _0x41e8b7(_0x339930(_0x1312e2));}function _0x3caef4(_0x5c8112,_0x43f32f,_0x5822bf){const _0x544417=_0x2add0d;return Buffer[_0x544417(0x1fb)](exports[_0x544417(0x1e2)]+'\x0a'+_0x5c8112+'\x0a'+_0x43f32f+'\x0a'+_0x5822bf+'\x0a',_0x544417(0x203));}function _0x4c1bd7(_0x574d34){const _0x172b30=_0x2add0d;var _0x5a2dd3,_0x31d720;if(!_0x524bfc[_0x172b30(0x1c6)](_0x574d34[_0x172b30(0x222)]))throw new Error(_0x172b30(0x1dc)+_0x574d34[_0x172b30(0x222)]+'\x22');if(!_0x574d34[_0x172b30(0x231)]||typeof _0x574d34[_0x172b30(0x231)]!=_0x172b30(0x1c1))throw new Error(_0x172b30(0x1e1));const _0x572a1b=_0x396637(_0x574d34[_0x172b30(0x1f3)]);if(_0x572a1b)throw new _0x5eeb1c(_0x572a1b);const _0x22aa61=((_0x5a2dd3=_0x574d34[_0x172b30(0x24d)])!==null&&_0x5a2dd3!==void 0x0?_0x5a2dd3:new Date())[_0x172b30(0x23a)](),_0x2de2c7=_0x2025eb(_0x574d34[_0x172b30(0x1f3)]),_0x57e4b9=_0x5c05ae[_0x172b30(0x1cc)](_0x574d34[_0x172b30(0x227)]);if(_0x57e4b9[_0x172b30(0x206)]!==_0x172b30(0x20d))throw new Error(_0x172b30(0x21a)+((_0x31d720=_0x57e4b9[_0x172b30(0x206)])!==null&&_0x31d720!==void 0x0?_0x31d720:_0x172b30(0x218))+_0x172b30(0x1ce));const _0x7da659=_0x5c05ae[_0x172b30(0x243)](null,_0x3caef4(_0x574d34[_0x172b30(0x222)],_0x22aa61,_0x2de2c7),_0x57e4b9);return{'schemaVersion':exports[_0x172b30(0x1c4)],'tag':_0x574d34[_0x172b30(0x222)],'publishedAt':_0x22aa61,'treeSha256':_0x2de2c7,'signature':{'kid':_0x574d34[_0x172b30(0x231)],'alg':_0x172b30(0x20d),'sig':_0x7da659[_0x172b30(0x220)](_0x172b30(0x217))}};}function _0x3d26ae(_0x2f8fef,_0x1bf6e1,_0x57f709){const _0x19eec3=_0x2add0d;if(!_0x524bfc[_0x19eec3(0x1c6)](_0x1bf6e1))throw new Error(_0x19eec3(0x1dc)+_0x1bf6e1+'\x22');return{'schemaVersion':exports[_0x19eec3(0x1c4)],'tag':_0x1bf6e1,'publishedAt':(_0x57f709??new Date())[_0x19eec3(0x23a)](),'treeSha256':_0x2025eb(_0x2f8fef)};}function _0x2debfc(_0x565ff3){const _0x4acc53=_0x2add0d;var _0x9dc981;const _0x5bdf76=(_0x9dc981=_0x565ff3[_0x4acc53(0x244)])!==null&&_0x9dc981!==void 0x0?_0x9dc981:_0x2799e8[_0x4acc53(0x23d)],_0xdd4bf=_0x3b5278[_0x4acc53(0x20b)](_0x565ff3[_0x4acc53(0x1f3)],exports[_0x4acc53(0x24e)]),_0x3e931d=_0x13e740(_0xdd4bf);if(_0x3e931d===_0x4acc53(0x1d7))return{'ok':!0x1,'reason':_0x4acc53(0x234),'detail':exports[_0x4acc53(0x24e)]};if(_0x3e931d===_0x4acc53(0x1f4))return{'ok':!0x1,'reason':_0x4acc53(0x246),'detail':exports[_0x4acc53(0x24e)]};let _0x58e2c2;try{_0x58e2c2=_0x2ce450[_0x4acc53(0x248)](_0xdd4bf,_0x4acc53(0x203));}catch{return{'ok':!0x1,'reason':_0x4acc53(0x23c),'detail':_0x4acc53(0x210)+exports[_0x4acc53(0x24e)]+_0x4acc53(0x1ec)};}let _0xd71b62;try{_0xd71b62=JSON[_0x4acc53(0x1d8)](_0x58e2c2[_0x4acc53(0x237)](/^/,''));}catch{return{'ok':!0x1,'reason':_0x4acc53(0x212),'detail':exports[_0x4acc53(0x24e)]+_0x4acc53(0x219)};}if(!_0xd71b62||typeof _0xd71b62!=_0x4acc53(0x1c2)||Array[_0x4acc53(0x23b)](_0xd71b62))return{'ok':!0x1,'reason':_0x4acc53(0x212),'detail':exports[_0x4acc53(0x24e)]+_0x4acc53(0x1df)};const _0x4cddf2=_0xd71b62;if(typeof _0x4cddf2[_0x4acc53(0x222)]!=_0x4acc53(0x1c1)||!_0x524bfc[_0x4acc53(0x1c6)](_0x4cddf2[_0x4acc53(0x222)]))return{'ok':!0x1,'reason':_0x4acc53(0x212),'detail':_0x4acc53(0x238)};const _0x33a46c=_0x4cddf2[_0x4acc53(0x222)];if(_0x4cddf2[_0x4acc53(0x201)]===void 0x0||_0x4cddf2[_0x4acc53(0x201)]===null)return{'ok':!0x1,'reason':_0x4acc53(0x20e),'detail':exports[_0x4acc53(0x24e)]+_0x4acc53(0x22f)};if(_0x4cddf2[_0x4acc53(0x1e4)]!==exports[_0x4acc53(0x1c4)])return{'ok':!0x1,'reason':_0x4acc53(0x212),'detail':_0x4acc53(0x226)+String(_0x4cddf2[_0x4acc53(0x1e4)])+_0x4acc53(0x1e3)+exports[_0x4acc53(0x1c4)]};if(typeof _0x4cddf2[_0x4acc53(0x20c)]!=_0x4acc53(0x1c1)||!_0x2e1bd4[_0x4acc53(0x1c6)](_0x4cddf2[_0x4acc53(0x20c)]))return{'ok':!0x1,'reason':_0x4acc53(0x212),'detail':_0x4acc53(0x1c8)};if(typeof _0x4cddf2[_0x4acc53(0x1cd)]!=_0x4acc53(0x1c1)||!_0x55ad72[_0x4acc53(0x1c6)](_0x4cddf2[_0x4acc53(0x1cd)]))return{'ok':!0x1,'reason':_0x4acc53(0x212),'detail':_0x4acc53(0x1f0)};const _0x4f6048=_0x4cddf2[_0x4acc53(0x1cd)],_0x4e49d8=_0x4cddf2[_0x4acc53(0x201)];if(!_0x4e49d8||typeof _0x4e49d8!=_0x4acc53(0x1c2)||Array[_0x4acc53(0x23b)](_0x4e49d8))return{'ok':!0x1,'reason':_0x4acc53(0x212),'detail':_0x4acc53(0x1e6)};const {kid:_0x479f39,alg:_0x18c589,sig:_0x1662fc}=_0x4e49d8;if(typeof _0x479f39!=_0x4acc53(0x1c1)||!_0x479f39)return{'ok':!0x1,'reason':_0x4acc53(0x212),'detail':_0x4acc53(0x216)};if(_0x18c589!==_0x4acc53(0x20d))return{'ok':!0x1,'reason':_0x4acc53(0x212),'detail':_0x4acc53(0x21f)+String(_0x18c589)+_0x4acc53(0x1c0)};if(typeof _0x1662fc!=_0x4acc53(0x1c1)||!_0x1662fc)return{'ok':!0x1,'reason':_0x4acc53(0x212),'detail':_0x4acc53(0x1e7)};const _0x48a70c=_0x5bdf76[_0x479f39];if(!_0x48a70c)return{'ok':!0x1,'reason':_0x4acc53(0x228),'detail':_0x4acc53(0x1c3)+_0x479f39+_0x4acc53(0x1e9)};let _0x557f42;try{if(_0x557f42=Buffer[_0x4acc53(0x1fb)](_0x1662fc,_0x4acc53(0x217)),_0x557f42[_0x4acc53(0x21c)]===0x0)throw new Error(_0x4acc53(0x1cb));}catch{return{'ok':!0x1,'reason':_0x4acc53(0x212),'detail':_0x4acc53(0x245)};}let _0x642903=!0x1;try{_0x642903=_0x5c05ae[_0x4acc53(0x1da)](null,_0x3caef4(_0x33a46c,_0x4f6048,_0x4cddf2[_0x4acc53(0x20c)]),_0x5c05ae[_0x4acc53(0x236)](_0x48a70c),_0x557f42);}catch{_0x642903=!0x1;}if(!_0x642903)return{'ok':!0x1,'reason':_0x4acc53(0x1c5),'detail':_0x4acc53(0x1de)+_0x33a46c+'\x20('+_0x479f39+')'};const _0x3012da=_0x396637(_0x565ff3[_0x4acc53(0x1f3)]);if(_0x3012da)return{'ok':!0x1,'reason':_0x3012da[_0x4acc53(0x22e)],'detail':_0x3012da[_0x4acc53(0x1d9)]};let _0x1c6134;try{_0x1c6134=_0x2025eb(_0x565ff3[_0x4acc53(0x1f3)]);}catch(_0x7db18e){return _0x7db18e instanceof _0x5eeb1c?{'ok':!0x1,'reason':_0x7db18e[_0x4acc53(0x1f5)][_0x4acc53(0x22e)],'detail':_0x7db18e[_0x4acc53(0x1f5)][_0x4acc53(0x1d9)]}:{'ok':!0x1,'reason':_0x4acc53(0x21d),'detail':_0x4acc53(0x1fd)+(_0x7db18e instanceof Error?_0x7db18e[_0x4acc53(0x202)]:String(_0x7db18e))};}return _0x1c6134!==_0x4cddf2[_0x4acc53(0x20c)]?{'ok':!0x1,'reason':_0x4acc53(0x21d),'detail':_0x4acc53(0x200)}:{'ok':!0x0,'tag':_0x33a46c,'kid':_0x479f39,'treeSha256':_0x4cddf2[_0x4acc53(0x20c)]};}
1
+ 'use strict';const _0x108a79=_0x4b6a;(function(_0x248eaf,_0x6f2934){const _0x3dd28d=_0x4b6a,_0x186548=_0x248eaf();while(!![]){try{const _0x596434=-parseInt(_0x3dd28d(0x15b))/0x1+parseInt(_0x3dd28d(0x1ca))/0x2*(-parseInt(_0x3dd28d(0x1d8))/0x3)+-parseInt(_0x3dd28d(0x1bd))/0x4*(parseInt(_0x3dd28d(0x17d))/0x5)+-parseInt(_0x3dd28d(0x1ae))/0x6+parseInt(_0x3dd28d(0x19b))/0x7*(-parseInt(_0x3dd28d(0x1da))/0x8)+parseInt(_0x3dd28d(0x1a1))/0x9*(-parseInt(_0x3dd28d(0x16f))/0xa)+parseInt(_0x3dd28d(0x184))/0xb*(parseInt(_0x3dd28d(0x167))/0xc);if(_0x596434===_0x6f2934)break;else _0x186548['push'](_0x186548['shift']());}catch(_0x245bfc){_0x186548['push'](_0x186548['shift']());}}}(_0x5520,0x405f3));var _0x46d884=this&&this[_0x108a79(0x1cd)]||(Object[_0x108a79(0x1ad)]?function(_0x261b2e,_0x3ed519,_0x2f0812,_0x275dfb){const _0x2f6b7c=_0x108a79;_0x275dfb===void 0x0&&(_0x275dfb=_0x2f0812);var _0x40f7a7=Object[_0x2f6b7c(0x1a4)](_0x3ed519,_0x2f0812);(!_0x40f7a7||(_0x2f6b7c(0x1be)in _0x40f7a7?!_0x3ed519[_0x2f6b7c(0x1d4)]:_0x40f7a7[_0x2f6b7c(0x155)]||_0x40f7a7[_0x2f6b7c(0x19a)]))&&(_0x40f7a7={'enumerable':!0x0,'get':function(){return _0x3ed519[_0x2f0812];}}),Object[_0x2f6b7c(0x165)](_0x261b2e,_0x275dfb,_0x40f7a7);}:function(_0x4161c0,_0x11133b,_0x10866a,_0x562b35){_0x562b35===void 0x0&&(_0x562b35=_0x10866a),_0x4161c0[_0x562b35]=_0x11133b[_0x10866a];}),_0x31d423=this&&this[_0x108a79(0x1ac)]||(Object[_0x108a79(0x1ad)]?function(_0x1d92f2,_0x253576){const _0xf4a11a=_0x108a79;Object[_0xf4a11a(0x165)](_0x1d92f2,_0xf4a11a(0x17f),{'enumerable':!0x0,'value':_0x253576});}:function(_0x4882d1,_0x3fb643){const _0x3d0f01=_0x108a79;_0x4882d1[_0x3d0f01(0x17f)]=_0x3fb643;}),_0x38a382=this&&this[_0x108a79(0x16b)]||(function(){var _0x28f953=function(_0x490a5f){const _0x2aba6c=_0x4b6a;return _0x28f953=Object[_0x2aba6c(0x14f)]||function(_0x3c7b76){const _0x25d2c3=_0x2aba6c;var _0x4dee8e=[];for(var _0x149854 in _0x3c7b76)Object[_0x25d2c3(0x190)][_0x25d2c3(0x1d9)][_0x25d2c3(0x159)](_0x3c7b76,_0x149854)&&(_0x4dee8e[_0x4dee8e[_0x25d2c3(0x164)]]=_0x149854);return _0x4dee8e;},_0x28f953(_0x490a5f);};return function(_0x350157){const _0x1e6b24=_0x4b6a;if(_0x350157&&_0x350157[_0x1e6b24(0x1d4)])return _0x350157;var _0xefe502={};if(_0x350157!=null){for(var _0x3a5b81=_0x28f953(_0x350157),_0x497d52=0x0;_0x497d52<_0x3a5b81[_0x1e6b24(0x164)];_0x497d52++)_0x3a5b81[_0x497d52]!==_0x1e6b24(0x17f)&&_0x46d884(_0xefe502,_0x350157,_0x3a5b81[_0x497d52]);}return _0x31d423(_0xefe502,_0x350157),_0xefe502;};}());Object[_0x108a79(0x165)](exports,_0x108a79(0x1d4),{'value':!0x0}),exports[_0x108a79(0x16c)]=exports[_0x108a79(0x1c7)]=exports[_0x108a79(0x158)]=exports[_0x108a79(0x1aa)]=exports[_0x108a79(0x194)]=exports[_0x108a79(0x186)]=void 0x0,exports[_0x108a79(0x192)]=_0x2e4f0f,exports[_0x108a79(0x180)]=_0x4153f3,exports[_0x108a79(0x173)]=_0x4c1e54,exports[_0x108a79(0x1d0)]=_0x2ec25f,exports[_0x108a79(0x1d3)]=_0x4021cf,exports[_0x108a79(0x1d5)]=_0x230763,exports[_0x108a79(0x1b3)]=_0x56371e,exports[_0x108a79(0x1a0)]=_0x24d851,exports[_0x108a79(0x174)]=_0x4ea10d;const _0x3cb014=_0x38a382(require(_0x108a79(0x17b))),_0x17ad2b=_0x38a382(require('fs')),_0x2d6d61=_0x38a382(require(_0x108a79(0x17a))),_0x373d0c=require(_0x108a79(0x1dd));exports[_0x108a79(0x186)]=0x1,exports[_0x108a79(0x194)]=_0x108a79(0x1b6),exports[_0x108a79(0x1aa)]=_0x108a79(0x188),exports[_0x108a79(0x158)]=_0x108a79(0x196),exports[_0x108a79(0x1c7)]=[_0x108a79(0x16e),_0x108a79(0x18c),_0x108a79(0x15d)];class _0x21ed27 extends Error{constructor(_0x4b44f5){const _0x476613=_0x108a79;super(_0x476613(0x157)+_0x4b44f5[_0x476613(0x150)]+':\x20'+_0x4b44f5[_0x476613(0x1b0)]+')'),this[_0x476613(0x1db)]=_0x476613(0x16c),this[_0x476613(0x177)]=_0x4b44f5;}}exports[_0x108a79(0x16c)]=_0x21ed27;function _0x5520(){const _0x47f455=['BwfSzM9YBwvK','q09ntvvosvrzx1jftevbu0vFu0LhtKvex0zjtevt','zM9YzwLNBI1TB2r1BgvZ','Agv4','ndeZogHkEfLZrG','Aw52ywXPzcbYzwXLyxnLihrHzYaI','lMPZB24','x19JCMvHDgvcAw5KAw5N','lcbLEhbLy3rLzcbLzdi1nte5','Dg9ju09tDhjPBMC','yNvPBgrszwXLyxnLvhjLzuXPC3rPBMC','ChvIBgLZAgvKqxq','C3LTBgLUAY1PBI10CMvL','y29TChv0zvjLBgvHC2vuCMvLu2HHmJu2','x19LC01VzhvSzq','yNvPBgrszwXLyxnLugf5Bg9Hza','AxntEw1IB2XPy0XPBMS','y3jLyxrLsgfZAa','m0DZreHSwG','AgfZt3DUuhjVCgvYDhK','ofjLCKD6sa','BMfTzq','y3jLyxrLuhvIBgLJs2v5','lI9WDwjSAwnlzxLZ','Dw5RBM93BG','BwLZC2LUzYbZAwDUAw5NigTPza','C2LNBMLUzYbRzxKGAxmG','teLdru5trv9qvujmsunFs0vzuW','Dg9mB3DLCKnHC2u','z2v0t3DUuhjVCgvYDhLoyw1LCW','CMvHC29U','C2nOzw1HvMvYC2LVBG','AxneAxjLy3rVCNK','DhjLzs1TAxnTyxrJAa','C2LNBMf0DxjLlNnPzYbTAxnZAw5N','D3jPDgfIBgu','ChvIBgLZAgvKqxqGBwLZC2LUzYbVCIbUB3qGyw4GsvnpidG2mdeGDgLTzxn0yw1W','CMvSzwfZzsb0CMvLihDVDwXKig5VDcb2zxjPzNKGka','q09ntvvosvrzx1jftevbu0vFu0LhtKvex0rjuG','y2fSBa','C2LNBG','nde4ndDpwgXTrNO','Dg9tDhjPBMC','DgvTCgXHDguTy2f0ywXVzY5QC29U','C2LNBMf0DxjLlMTPzcbTAxnZAw5N','C3LTBgLUAW','B2jQzwn0','DgvZDa','ChjPDMf0zuTLEvbLBq','BM9Kzv9TB2r1BgvZ','BgvUz3rO','zgvMAw5LuhjVCgvYDhK','AxnbCNjHEq','mtKYtgnJC0Hx','ignHCNjPzxmGBM8GC2LNBMf0DxjLicH1BNnPz25LzcbZBMfWC2HVDcK','igLZig5VDcb2ywXPzcbku09o','y291BgqGBM90igHHC2GGDgHLignOzwnRB3v0oIa','x19PBxbVCNrtDgfY','uMvSzwfZzvrYzwvfCNjVCG','AxngAwXL','DgvTCgXHDguTBwfUAwzLC3qUANnVBG','mJyWDwzvquHJ','y3jLyxrLuhjPDMf0zuTLEq','DMvYAwz5','DxbKyxrL','BgLZDfjLBgvHC2vuCMvL','DMvYAwz5q29TBxvUAxr5uMvSzwfZzq','BwLZC2LUzW','DxrMoa','ChjVyMXLBq','Dw5RBM93BIbZAwDUAw5NigTLEsaI','C3rYAw5NAwz5','Cgf0Aa','y3j5ChrV','BwLZC2LUzY1ZAwDUyxr1CMu','ntuWnZq1ENDly09f','BM93','zgvMyxvSDa','Aw5ZCgvJDfjLBgvHC2vuCMvL','DhjLzvnOyti1nG','zMLSzq','yMfZzty0DxjS','nJK2odGZBNn2tKXx','Dw5RBM93BI1RAwq','q09ntvvosvrzx1jftevbu0vFu0niru1bx1zfuLnjt04','ChvZAa','CMvSzwfZzs5QC29U','Bhn0yxrtEw5J','igLUignOzwnRB3v0','DhjLzvnOyti1nIbTAxnZAw5Nig9Yig5VDcbHigHLEcbZAgeYnty','CgfJA2fNzs5QC29U','CMvSzwfZzsb0ywCGBwLZC2LUzYbVCIbPBNzHBgLK','zw5KC1DPDgG','zgLY','ChjVDg90ExbL','C2LNBMf0DxjLlNnPzYbPCYbUB3qGyMfZzty0DxjS','AgfZAfjLBgvHC2vgAwXL','yMfKlxnPz25HDhvYzq','q09ntvvosvrzx1jftevbu0vFuefzte9brf9quKvgsvG','C2LNBMf0DxjL','zgLZDa','CMvHzezPBgvtEw5J','zNjVBq','ChvIBgLJs2v5CW','y29UzMLNDxjHyMXL','ndG0odLXrxfSCuy','C3rYAw5N','igLZig5VDcbHBIbVyMPLy3q','C2LNBMf0DxjLlMfSzYaI','CgfYC2u','yNvPBgrvBNnPz25LzenVBw11BML0EvjLBgvHC2u','mti4mJa1DKjIrwTA','CMvSzwfZzsb0CMvLigrPzMzLCNmGzNjVBsb0AguGC2LNBMvKig9UzsaOzgLZDc8SihrLBxbSyxrLlw1HBMLMzxn0lMPZB24GB3iGCgfJA2fNzs5QC29Uig1VzgLMAwvKkq','yxn5Bw1LDhjPy0TLEvr5Cgu','z2v0t3DUuhjVCgvYDhLezxnJCMLWDg9Y','BwLZC2LUzY1YzwXLyxnL','C29YDa','iIbPCYbUB3qGzwqYntuXoq','BM8G','BwfW','q09ntvvosvrzx1jftevbu0vFrKLmrq','C3bLy2LHBa','x19ZzxrnB2r1BgvezwzHDwX0','y3jLyxrL','nJuWodiWrLnJt0PH','CMvWBgfJzq','zgv0ywLS','BwvZC2fNzq','ice9psa','C2LNBKnVBw11BML0EvjLBgvHC2u','A2LK','CMvWB0rPCG','BtbZywLJlwnVBw11BML0Es1YzwXLyxnLl3yX','DgfN','zgLNzxn0','iIdIGjqGDxbKyxrLig0WC2fPyYbVCIbYzs1JAgvJAYb0AguGy2HLy2TVDxq','zwqYntuXoq','CMvHzgrPCLn5BMm','C2LNBMf0DxjLigLZig5VDcbHBIbVyMPLy3q','oeTlAKviuq','z2v0','C3bSAxq','C2HHmJu2','C2LNBMf0DxjLignOzwnRigzHAwXLzcbMB3iGDgfNia','AM9PBG','zw1WDhK','C3bLy2LHBc1MAwXLlwLUlxrYzwu','CMvSzwfZzsbZy2HLBwfwzxjZAw9Uia'];_0x5520=function(){return _0x47f455;};return _0x5520();}const _0xf31ee8=/^[0-9a-f]{64}$/,_0x52b394=/^[A-Za-z0-9][\w.-]*$/,_0x1c24c3=/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?(?:Z|[+-]\d{2}:\d{2})$/,_0x3baf9e=_0x108a79(0x163);function _0x2cd203(_0x3839f5){const _0x4663df=_0x108a79;return _0x3839f5[_0x4663df(0x1e2)]()===_0x3baf9e;}function _0x58ea99(_0x1eaf09){const _0x14335d=_0x108a79;return _0x3cb014[_0x14335d(0x1d7)](_0x14335d(0x1c0))[_0x14335d(0x172)](_0x1eaf09)[_0x14335d(0x1b8)](_0x14335d(0x1c9));}function _0x2e4f0f(_0x12851a){const _0xfbb146=_0x108a79,_0x342957=_0x17ad2b[_0xfbb146(0x197)](_0x12851a);if(_0x12851a[_0xfbb146(0x1e2)]()[_0xfbb146(0x18e)](_0xfbb146(0x1cc)))try{const _0x41e3f8=_0x342957[_0xfbb146(0x15c)](_0xfbb146(0x176))[_0xfbb146(0x1af)](/^/,'');return _0x58ea99(JSON[_0xfbb146(0x179)](JSON[_0xfbb146(0x19f)](_0x41e3f8)));}catch{}return _0x58ea99(_0x342957);}function _0x29543e(_0xf99a43){const _0x269376=_0x108a79;try{const _0x4ad45e=_0x17ad2b[_0x269376(0x1bb)](_0xf99a43,{'withFileTypes':!0x0});return _0x4ad45e[_0x269376(0x1a6)]((_0x3f58f2,_0x2ddbd3)=>_0x3f58f2[_0x269376(0x1db)]<_0x2ddbd3[_0x269376(0x1db)]?-0x1:_0x3f58f2[_0x269376(0x1db)]>_0x2ddbd3[_0x269376(0x1db)]?0x1:0x0),_0x4ad45e;}catch{return null;}}function _0x4a23b3(_0x4716df){const _0x57ff8f=_0x108a79;return _0x4716df[_0x57ff8f(0x1d6)]()?_0x57ff8f(0x15f):_0x4716df[_0x57ff8f(0x152)]()?_0x57ff8f(0x18f):_0x4716df[_0x57ff8f(0x16d)]()?_0x57ff8f(0x182):_0x57ff8f(0x1ab);}function _0x390279(_0x17b252){const _0x2fc5e8=_0x108a79;try{const _0x1480a1=_0x17ad2b[_0x2fc5e8(0x189)](_0x17b252);return _0x1480a1[_0x2fc5e8(0x1d6)]()?_0x2fc5e8(0x15f):_0x1480a1[_0x2fc5e8(0x152)]()?_0x2fc5e8(0x18f):_0x1480a1[_0x2fc5e8(0x16d)]()?_0x2fc5e8(0x182):_0x2fc5e8(0x1ab);}catch{return _0x2fc5e8(0x175);}}function _0x31a8fd(_0x5d1bb1,_0x58bb08,_0x5be9ba){const _0x184d2f=_0x108a79,_0x435798=_0x29543e(_0x5d1bb1);if(_0x435798)for(const _0x289920 of _0x435798){const _0x3cc126=_0x58bb08?_0x58bb08+'/'+_0x289920[_0x184d2f(0x1db)]:_0x289920[_0x184d2f(0x1db)];switch(_0x4a23b3(_0x289920)){case _0x184d2f(0x15f):break;case _0x184d2f(0x18f):_0x31a8fd(_0x2d6d61[_0x184d2f(0x1c2)](_0x5d1bb1,_0x289920[_0x184d2f(0x1db)]),_0x3cc126,_0x5be9ba);break;case _0x184d2f(0x182):_0x5be9ba[_0x184d2f(0x187)](_0x3cc126);break;case _0x184d2f(0x1ab):throw new _0x21ed27({'reason':_0x184d2f(0x1c4),'detail':_0x3cc126});}}}function _0x24bb07(_0x172c68,_0x3a6ab7){const _0x2049a6=_0x108a79,_0x3516e8=_0x29543e(_0x172c68);if(!_0x3516e8)return null;for(const _0x8a40ba of _0x3516e8){const _0x1676d9=_0x3a6ab7+'/'+_0x8a40ba[_0x2049a6(0x1db)];switch(_0x4a23b3(_0x8a40ba)){case _0x2049a6(0x15f):return{'reason':_0x2049a6(0x1d2),'detail':_0x1676d9};case _0x2049a6(0x1ab):return{'reason':_0x2049a6(0x1c4),'detail':_0x1676d9};case _0x2049a6(0x182):break;case _0x2049a6(0x18f):{if(_0x2cd203(_0x8a40ba[_0x2049a6(0x1db)]))return{'reason':_0x2049a6(0x1c8),'detail':_0x1676d9};const _0x2236e0=_0x24bb07(_0x2d6d61[_0x2049a6(0x1c2)](_0x172c68,_0x8a40ba[_0x2049a6(0x1db)]),_0x1676d9);if(_0x2236e0)return _0x2236e0;}}}return null;}function _0x4b6a(_0x11d259,_0x11c1d2){_0x11d259=_0x11d259-0x14f;const _0x5520c3=_0x5520();let _0x4b6a69=_0x5520c3[_0x11d259];if(_0x4b6a['WMLuDW']===undefined){var _0x801bbc=function(_0x1fb46c){const _0x408740='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x46d884='',_0x31d423='';for(let _0x38a382=0x0,_0x3cb014,_0x17ad2b,_0x2d6d61=0x0;_0x17ad2b=_0x1fb46c['charAt'](_0x2d6d61++);~_0x17ad2b&&(_0x3cb014=_0x38a382%0x4?_0x3cb014*0x40+_0x17ad2b:_0x17ad2b,_0x38a382++%0x4)?_0x46d884+=String['fromCharCode'](0xff&_0x3cb014>>(-0x2*_0x38a382&0x6)):0x0){_0x17ad2b=_0x408740['indexOf'](_0x17ad2b);}for(let _0x373d0c=0x0,_0x21ed27=_0x46d884['length'];_0x373d0c<_0x21ed27;_0x373d0c++){_0x31d423+='%'+('00'+_0x46d884['charCodeAt'](_0x373d0c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x31d423);};_0x4b6a['fxyHuf']=_0x801bbc,_0x4b6a['XuBdns']={},_0x4b6a['WMLuDW']=!![];}const _0x2db82b=_0x5520c3[0x0],_0x1ad3d4=_0x11d259+_0x2db82b,_0x15f14c=_0x4b6a['XuBdns'][_0x1ad3d4];return!_0x15f14c?(_0x4b6a69=_0x4b6a['fxyHuf'](_0x4b6a69),_0x4b6a['XuBdns'][_0x1ad3d4]=_0x4b6a69):_0x4b6a69=_0x15f14c,_0x4b6a69;}function _0x4153f3(_0x82e786){const _0xba3d78=_0x108a79,_0x4c011d=_0x29543e(_0x82e786);if(_0x4c011d)for(const _0x5320ce of _0x4c011d){const _0x896140=_0x4a23b3(_0x5320ce);if(_0x896140===_0xba3d78(0x15f))return{'reason':_0xba3d78(0x1d2),'detail':_0x5320ce[_0xba3d78(0x1db)]};if(_0x896140===_0xba3d78(0x1ab))return{'reason':_0xba3d78(0x1c4),'detail':_0x5320ce[_0xba3d78(0x1db)]};if(_0x896140===_0xba3d78(0x18f)&&_0x2cd203(_0x5320ce[_0xba3d78(0x1db)]))return{'reason':_0xba3d78(0x1c8),'detail':_0x5320ce[_0xba3d78(0x1db)]};}const _0x51ce20=_0x390279(_0x2d6d61[_0xba3d78(0x1c2)](_0x82e786,exports[_0xba3d78(0x158)]));if(_0x51ce20===_0xba3d78(0x15f))return{'reason':_0xba3d78(0x1d2),'detail':exports[_0xba3d78(0x158)]};if(_0x51ce20===_0xba3d78(0x1ab))return{'reason':_0xba3d78(0x1c4),'detail':exports[_0xba3d78(0x158)]};if(_0x51ce20===_0xba3d78(0x18f)){const _0x251bc2=_0x24bb07(_0x2d6d61[_0xba3d78(0x1c2)](_0x82e786,exports[_0xba3d78(0x158)]),exports[_0xba3d78(0x158)]);if(_0x251bc2)return _0x251bc2;}for(const _0x3dad60 of exports[_0xba3d78(0x1c7)]){const _0x1604f0=_0x390279(_0x2d6d61[_0xba3d78(0x1c2)](_0x82e786,_0x3dad60));if(_0x1604f0===_0xba3d78(0x15f))return{'reason':_0xba3d78(0x1d2),'detail':_0x3dad60};if(_0x1604f0===_0xba3d78(0x1ab))return{'reason':_0xba3d78(0x1c4),'detail':_0x3dad60};}return null;}function _0x4c1e54(_0x21991b){const _0x1868d9=_0x108a79,_0x2b7dd7=[],_0x38a82d=_0x2d6d61[_0x1868d9(0x1c2)](_0x21991b,exports[_0x1868d9(0x158)]),_0x495574=_0x390279(_0x38a82d);if(_0x495574===_0x1868d9(0x1ab))throw new _0x21ed27({'reason':_0x1868d9(0x1c4),'detail':exports[_0x1868d9(0x158)]});_0x495574===_0x1868d9(0x18f)&&_0x31a8fd(_0x38a82d,exports[_0x1868d9(0x158)],_0x2b7dd7);for(const _0x1174ed of exports[_0x1868d9(0x1c7)]){const _0x539868=_0x390279(_0x2d6d61[_0x1868d9(0x1c2)](_0x21991b,_0x1174ed));if(_0x539868===_0x1868d9(0x1ab))throw new _0x21ed27({'reason':_0x1868d9(0x1c4),'detail':_0x1174ed});_0x539868===_0x1868d9(0x182)&&_0x2b7dd7[_0x1868d9(0x187)](_0x1174ed);}return _0x2b7dd7[_0x1868d9(0x1a6)]((_0xee20ed,_0x413d5d)=>_0xee20ed<_0x413d5d?-0x1:_0xee20ed>_0x413d5d?0x1:0x0),_0x2b7dd7[_0x1868d9(0x1a9)](_0x4f4bb8=>({'path':_0x4f4bb8,'sha256':_0x2e4f0f(_0x2d6d61[_0x1868d9(0x1c2)](_0x21991b,..._0x4f4bb8[_0x1868d9(0x1bf)]('/')))}));}function _0x2ec25f(_0x26de9b){const _0x3003cd=_0x108a79;return _0x4c1e54(_0x26de9b)[_0x3003cd(0x1a9)](_0x276894=>_0x276894[_0x3003cd(0x17a)]+'\x00'+_0x276894[_0x3003cd(0x1c0)]+'\x0a')[_0x3003cd(0x1c2)]('');}function _0x4021cf(_0x200b97){return _0x58ea99(_0x2ec25f(_0x200b97));}function _0x230763(_0x45e717,_0x5a6e67,_0x269d05){const _0x424269=_0x108a79;return Buffer[_0x424269(0x198)](exports[_0x424269(0x194)]+'\x0a'+_0x45e717+'\x0a'+_0x5a6e67+'\x0a'+_0x269d05+'\x0a',_0x424269(0x176));}function _0x56371e(_0x54e75f){const _0xb23ec6=_0x108a79;var _0x1fc0f9,_0x5ea6f5;if(!_0x52b394[_0xb23ec6(0x161)](_0x54e75f[_0xb23ec6(0x1b7)]))throw new Error(_0xb23ec6(0x1cb)+_0x54e75f[_0xb23ec6(0x1b7)]+'\x22');if(!_0x54e75f[_0xb23ec6(0x1b4)]||typeof _0x54e75f[_0xb23ec6(0x1b4)]!=_0xb23ec6(0x19c))throw new Error(_0xb23ec6(0x1df));const _0x94ffc8=_0x4153f3(_0x54e75f[_0xb23ec6(0x1b5)]);if(_0x94ffc8)throw new _0x21ed27(_0x94ffc8);const _0x18b978=((_0x1fc0f9=_0x54e75f[_0xb23ec6(0x17e)])!==null&&_0x1fc0f9!==void 0x0?_0x1fc0f9:new Date())[_0xb23ec6(0x1cf)](),_0x182d03=_0x4021cf(_0x54e75f[_0xb23ec6(0x1b5)]),_0x5224f8=_0x3cb014[_0xb23ec6(0x170)](_0x54e75f[_0xb23ec6(0x162)]);if(_0x5224f8[_0xb23ec6(0x1a3)]!==_0xb23ec6(0x1ba))throw new Error(_0xb23ec6(0x1e0)+((_0x5ea6f5=_0x5224f8[_0xb23ec6(0x1a3)])!==null&&_0x5ea6f5!==void 0x0?_0x5ea6f5:_0xb23ec6(0x1de))+_0xb23ec6(0x1ce));const _0x534e13=_0x3cb014[_0xb23ec6(0x15a)](null,_0x230763(_0x54e75f[_0xb23ec6(0x1b7)],_0x18b978,_0x182d03),_0x5224f8);return{'schemaVersion':exports[_0xb23ec6(0x186)],'tag':_0x54e75f[_0xb23ec6(0x1b7)],'publishedAt':_0x18b978,'treeSha256':_0x182d03,'signature':{'kid':_0x54e75f[_0xb23ec6(0x1b4)],'alg':_0xb23ec6(0x1ba),'sig':_0x534e13[_0xb23ec6(0x15c)](_0xb23ec6(0x183))}};}function _0x24d851(_0x48cd63,_0x88c062,_0x15d56d){const _0x52f07c=_0x108a79;if(!_0x52b394[_0x52f07c(0x161)](_0x88c062))throw new Error(_0x52f07c(0x1cb)+_0x88c062+'\x22');return{'schemaVersion':exports[_0x52f07c(0x186)],'tag':_0x88c062,'publishedAt':(_0x15d56d??new Date())[_0x52f07c(0x1cf)](),'treeSha256':_0x4021cf(_0x48cd63)};}function _0x4ea10d(_0x1c2850){const _0x54b325=_0x108a79;var _0x5d6806;const _0x3d4bd3=(_0x5d6806=_0x1c2850[_0x54b325(0x199)])!==null&&_0x5d6806!==void 0x0?_0x5d6806:_0x373d0c[_0x54b325(0x1e1)],_0x3e47b2=_0x2d6d61[_0x54b325(0x1c2)](_0x1c2850[_0x54b325(0x1b5)],exports[_0x54b325(0x1aa)]),_0x57da8b=_0x390279(_0x3e47b2);if(_0x57da8b===_0x54b325(0x15f))return{'ok':!0x1,'reason':_0x54b325(0x1d2),'detail':exports[_0x54b325(0x1aa)]};if(_0x57da8b===_0x54b325(0x1ab))return{'ok':!0x1,'reason':_0x54b325(0x1c4),'detail':exports[_0x54b325(0x1aa)]};let _0x891348;try{_0x891348=_0x17ad2b[_0x54b325(0x197)](_0x3e47b2,_0x54b325(0x176));}catch{return{'ok':!0x1,'reason':_0x54b325(0x1a5),'detail':_0x54b325(0x1a8)+exports[_0x54b325(0x1aa)]+_0x54b325(0x18a)};}let _0xca4f0;try{_0xca4f0=JSON[_0x54b325(0x19f)](_0x891348[_0x54b325(0x1af)](/^/,''));}catch{return{'ok':!0x1,'reason':_0x54b325(0x1c6),'detail':exports[_0x54b325(0x1aa)]+_0x54b325(0x169)};}if(!_0xca4f0||typeof _0xca4f0!=_0x54b325(0x160)||Array[_0x54b325(0x166)](_0xca4f0))return{'ok':!0x1,'reason':_0x54b325(0x1c6),'detail':exports[_0x54b325(0x1aa)]+_0x54b325(0x19d)};const _0x30ba7a=_0xca4f0;if(typeof _0x30ba7a[_0x54b325(0x1b7)]!=_0x54b325(0x19c)||!_0x52b394[_0x54b325(0x161)](_0x30ba7a[_0x54b325(0x1b7)]))return{'ok':!0x1,'reason':_0x54b325(0x1c6),'detail':_0x54b325(0x18d)};const _0x454050=_0x30ba7a[_0x54b325(0x1b7)];if(_0x30ba7a[_0x54b325(0x195)]===void 0x0||_0x30ba7a[_0x54b325(0x195)]===null)return{'ok':!0x1,'reason':_0x54b325(0x17c),'detail':exports[_0x54b325(0x1aa)]+_0x54b325(0x168)};if(_0x30ba7a[_0x54b325(0x151)]!==exports[_0x54b325(0x186)])return{'ok':!0x1,'reason':_0x54b325(0x1c6),'detail':_0x54b325(0x1c5)+String(_0x30ba7a[_0x54b325(0x151)])+_0x54b325(0x1b2)+exports[_0x54b325(0x186)]};if(typeof _0x30ba7a[_0x54b325(0x181)]!=_0x54b325(0x19c)||!_0xf31ee8[_0x54b325(0x161)](_0x30ba7a[_0x54b325(0x181)]))return{'ok':!0x1,'reason':_0x54b325(0x1c6),'detail':_0x54b325(0x18b)};if(typeof _0x30ba7a[_0x54b325(0x1d1)]!=_0x54b325(0x19c)||!_0x1c24c3[_0x54b325(0x161)](_0x30ba7a[_0x54b325(0x1d1)]))return{'ok':!0x1,'reason':_0x54b325(0x1c6),'detail':_0x54b325(0x156)};const _0x52dcdc=_0x30ba7a[_0x54b325(0x1d1)],_0x5abf0d=_0x30ba7a[_0x54b325(0x195)];if(!_0x5abf0d||typeof _0x5abf0d!=_0x54b325(0x160)||Array[_0x54b325(0x166)](_0x5abf0d))return{'ok':!0x1,'reason':_0x54b325(0x1c6),'detail':_0x54b325(0x1bc)};const {kid:_0x43e7fa,alg:_0x51a908,sig:_0x22e194}=_0x5abf0d;if(typeof _0x43e7fa!=_0x54b325(0x19c)||!_0x43e7fa)return{'ok':!0x1,'reason':_0x54b325(0x1c6),'detail':_0x54b325(0x15e)};if(_0x51a908!==_0x54b325(0x1ba))return{'ok':!0x1,'reason':_0x54b325(0x1c6),'detail':_0x54b325(0x19e)+String(_0x51a908)+_0x54b325(0x1a7)};if(typeof _0x22e194!=_0x54b325(0x19c)||!_0x22e194)return{'ok':!0x1,'reason':_0x54b325(0x1c6),'detail':_0x54b325(0x154)};const _0x528fec=_0x3d4bd3[_0x43e7fa];if(!_0x528fec)return{'ok':!0x1,'reason':_0x54b325(0x185),'detail':_0x54b325(0x178)+_0x43e7fa+_0x54b325(0x1b9)};let _0x590493;try{if(_0x590493=Buffer[_0x54b325(0x198)](_0x22e194,_0x54b325(0x183)),_0x590493[_0x54b325(0x164)]===0x0)throw new Error(_0x54b325(0x1c3));}catch{return{'ok':!0x1,'reason':_0x54b325(0x1c6),'detail':_0x54b325(0x191)};}let _0x56d818=!0x1;try{_0x56d818=_0x3cb014[_0x54b325(0x171)](null,_0x230763(_0x454050,_0x52dcdc,_0x30ba7a[_0x54b325(0x181)]),_0x3cb014[_0x54b325(0x1dc)](_0x528fec),_0x590493);}catch{_0x56d818=!0x1;}if(!_0x56d818)return{'ok':!0x1,'reason':_0x54b325(0x193),'detail':_0x54b325(0x1c1)+_0x454050+'\x20('+_0x43e7fa+')'};const _0x35d225=_0x4153f3(_0x1c2850[_0x54b325(0x1b5)]);if(_0x35d225)return{'ok':!0x1,'reason':_0x35d225[_0x54b325(0x150)],'detail':_0x35d225[_0x54b325(0x1b0)]};let _0x321275;try{_0x321275=_0x4021cf(_0x1c2850[_0x54b325(0x1b5)]);}catch(_0x2b7dab){return _0x2b7dab instanceof _0x21ed27?{'ok':!0x1,'reason':_0x2b7dab[_0x54b325(0x177)][_0x54b325(0x150)],'detail':_0x2b7dab[_0x54b325(0x177)][_0x54b325(0x1b0)]}:{'ok':!0x1,'reason':_0x54b325(0x153),'detail':_0x54b325(0x16a)+(_0x2b7dab instanceof Error?_0x2b7dab[_0x54b325(0x1b1)]:String(_0x2b7dab))};}return _0x321275!==_0x30ba7a[_0x54b325(0x181)]?{'ok':!0x1,'reason':_0x54b325(0x153),'detail':_0x54b325(0x1a2)}:{'ok':!0x0,'tag':_0x454050,'kid':_0x43e7fa,'treeSha256':_0x30ba7a[_0x54b325(0x181)]};}