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 +1 @@
1
- 'use strict';const _0x31198e=_0x4786;(function(_0x23bf46,_0x3d2dd8){const _0x1b8e6c=_0x4786,_0x11139b=_0x23bf46();while(!![]){try{const _0x39f73d=-parseInt(_0x1b8e6c(0x1a9))/0x1*(parseInt(_0x1b8e6c(0x1ac))/0x2)+-parseInt(_0x1b8e6c(0x1db))/0x3*(-parseInt(_0x1b8e6c(0x193))/0x4)+parseInt(_0x1b8e6c(0x1c4))/0x5*(parseInt(_0x1b8e6c(0x1e1))/0x6)+-parseInt(_0x1b8e6c(0x1ba))/0x7+parseInt(_0x1b8e6c(0x1b8))/0x8*(parseInt(_0x1b8e6c(0x1b5))/0x9)+-parseInt(_0x1b8e6c(0x190))/0xa*(-parseInt(_0x1b8e6c(0x1cb))/0xb)+-parseInt(_0x1b8e6c(0x1a1))/0xc*(-parseInt(_0x1b8e6c(0x1c1))/0xd);if(_0x39f73d===_0x3d2dd8)break;else _0x11139b['push'](_0x11139b['shift']());}catch(_0x49d0ed){_0x11139b['push'](_0x11139b['shift']());}}}(_0x4f0b,0xa93db));const _0x107534=require('fs'),_0x56835e=require(_0x31198e(0x1c3)),_0x2e159a=require(_0x31198e(0x1da));let _0x22601f=null,_0x3ba119=null;function _0x463cd6(_0x2cbbf6){const _0xb3c91d=_0x31198e;_0x22601f=typeof _0x2cbbf6==_0xb3c91d(0x199)&&_0x2cbbf6?_0x2cbbf6:null,_0x22601f&&_0x107534[_0xb3c91d(0x1b4)](_0x22601f,{'recursive':!0x0});}function _0x508546(){const _0x1cf0ea=_0x31198e;return _0x22601f?(_0x107534[_0x1cf0ea(0x1b4)](_0x22601f,{'recursive':!0x0}),_0x22601f):(_0x3ba119||(_0x3ba119=require(_0x1cf0ea(0x1ea))),_0x3ba119[_0x1cf0ea(0x1d1)]());}function _0x4786(_0x37286a,_0x4f7c50){_0x37286a=_0x37286a-0x184;const _0x4f0bd6=_0x4f0b();let _0x4786b1=_0x4f0bd6[_0x37286a];if(_0x4786['Zonyds']===undefined){var _0x2e7928=function(_0x5a8cf6){const _0x5c3638='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x107534='',_0x56835e='';for(let _0x2e159a=0x0,_0x22601f,_0x3ba119,_0x463cd6=0x0;_0x3ba119=_0x5a8cf6['charAt'](_0x463cd6++);~_0x3ba119&&(_0x22601f=_0x2e159a%0x4?_0x22601f*0x40+_0x3ba119:_0x3ba119,_0x2e159a++%0x4)?_0x107534+=String['fromCharCode'](0xff&_0x22601f>>(-0x2*_0x2e159a&0x6)):0x0){_0x3ba119=_0x5c3638['indexOf'](_0x3ba119);}for(let _0x508546=0x0,_0x568adc=_0x107534['length'];_0x508546<_0x568adc;_0x508546++){_0x56835e+='%'+('00'+_0x107534['charCodeAt'](_0x508546)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x56835e);};_0x4786['sZzPtk']=_0x2e7928,_0x4786['Icgiya']={},_0x4786['Zonyds']=!![];}const _0x300f0e=_0x4f0bd6[0x0],_0x3cd103=_0x37286a+_0x300f0e,_0x2234b9=_0x4786['Icgiya'][_0x3cd103];return!_0x2234b9?(_0x4786b1=_0x4786['sZzPtk'](_0x4786b1),_0x4786['Icgiya'][_0x3cd103]=_0x4786b1):_0x4786b1=_0x2234b9,_0x4786b1;}function _0x568adc(_0x1ae084){const _0x392957=_0x31198e;return Math[_0x392957(0x1ed)](Math[_0x392957(0x1b3)](0x0,Math[_0x392957(0x1b9)](0x1,_0x1ae084||0x0))*0xff);}function _0x2e2f2d(_0x23a769){const _0x309cdd=_0x31198e;return _0x23a769[_0x309cdd(0x186)](/&/g,_0x309cdd(0x1f1))[_0x309cdd(0x186)](/"/g,_0x309cdd(0x18e))[_0x309cdd(0x186)](/</g,_0x309cdd(0x192))[_0x309cdd(0x186)](/>/g,_0x309cdd(0x1eb));}let _0x3c4736=null;function _0x34bf08(){const _0x470873=_0x31198e;return _0x3c4736||(_0x3c4736=require(_0x470873(0x19b))),_0x3c4736;}const _0x35440f='r2';function _0x1fbbc8(_0x1c02e0){const _0x13c46f=_0x31198e,_0x5c69bb=_0x1c02e0[_0x13c46f(0x1c6)],_0x9e42cd=[_0x35440f,_0x1c02e0[_0x13c46f(0x1b7)],_0x5c69bb['x'],_0x5c69bb['y'],_0x5c69bb[_0x13c46f(0x1cd)],_0x5c69bb[_0x13c46f(0x1a5)],_0x1c02e0[_0x13c46f(0x191)],_0x1c02e0[_0x13c46f(0x18b)],_0x568adc(_0x1c02e0[_0x13c46f(0x1ee)])][_0x13c46f(0x1df)]('|'),_0x388e59=[];_0x1c02e0[_0x13c46f(0x1d2)]&&_0x1c02e0[_0x13c46f(0x1d2)][_0x13c46f(0x1a2)]&&_0x388e59[_0x13c46f(0x1be)]('s:'+JSON[_0x13c46f(0x19e)](_0x1c02e0[_0x13c46f(0x1d2)])),_0x1c02e0[_0x13c46f(0x1f0)]&&_0x1c02e0[_0x13c46f(0x1f0)][_0x13c46f(0x1a2)]&&_0x388e59[_0x13c46f(0x1be)]('p:'+JSON[_0x13c46f(0x19e)](_0x1c02e0[_0x13c46f(0x1f0)])),_0x1c02e0[_0x13c46f(0x19d)]&&_0x388e59[_0x13c46f(0x1be)]('f:'+_0x1c02e0[_0x13c46f(0x19d)]);const _0x261824=_0x388e59[_0x13c46f(0x1a2)]?_0x9e42cd+'|'+_0x388e59[_0x13c46f(0x1df)]('|'):_0x9e42cd;return _0x2e159a[_0x13c46f(0x1ca)](_0x13c46f(0x1bc))[_0x13c46f(0x1c9)](_0x261824)[_0x13c46f(0x18c)](_0x13c46f(0x1d5))[_0x13c46f(0x1bd)](0x0,0x10);}function _0x238724(_0x29098a){const _0x35fe8b=_0x31198e;return _0x56835e[_0x35fe8b(0x1df)](_0x508546(),_0x35fe8b(0x1d0)+_0x29098a+_0x35fe8b(0x1e9));}function _0x446038(_0x564fdd){const _0x4c3d71=_0x31198e;return!_0x564fdd||!_0x564fdd[_0x4c3d71(0x1a2)]?'':_0x564fdd[_0x4c3d71(0x1cc)](_0x5988d6=>_0x4c3d71(0x1c5)+_0x2e2f2d(_0x5988d6['d'])+_0x4c3d71(0x1ef)+_0x5988d6[_0x4c3d71(0x1cd)]+_0x4c3d71(0x194))[_0x4c3d71(0x1df)]('');}function _0x599322(_0x411f49){const _0x3dccfb=_0x31198e;if(!_0x411f49||!_0x411f49[_0x3dccfb(0x1a2)])return'';const _0x5c904d=_0x411f49[_0x3dccfb(0x1cc)]((_0x45d459,_0x2c5e98)=>_0x45d459[_0x3dccfb(0x1e5)]?_0x3dccfb(0x1ce)+_0x2c5e98+_0x3dccfb(0x198)+_0x45d459[_0x3dccfb(0x1e5)]['x']+_0x3dccfb(0x185)+_0x45d459[_0x3dccfb(0x1e5)]['y']+_0x3dccfb(0x1d6)+_0x45d459[_0x3dccfb(0x1e5)][_0x3dccfb(0x1cd)]+_0x3dccfb(0x1bb)+_0x45d459[_0x3dccfb(0x1e5)][_0x3dccfb(0x1a5)]+_0x3dccfb(0x1c7):'')[_0x3dccfb(0x1df)](''),_0x13f4ec=_0x411f49[_0x3dccfb(0x1cc)]((_0x59fbd7,_0x4c95d0)=>{const _0x1278e7=_0x3dccfb,_0x317abd=_0x59fbd7[_0x1278e7(0x1e3)]&&(_0x59fbd7[_0x1278e7(0x1e3)]['x']!==0x1||_0x59fbd7[_0x1278e7(0x1e3)]['y']!==0x1)?_0x1278e7(0x1bf)+_0x59fbd7[_0x1278e7(0x1e3)]['x']+'\x20'+_0x59fbd7[_0x1278e7(0x1e3)]['y']+')':'',_0x11f885=_0x59fbd7['d']?_0x1278e7(0x1c5)+_0x2e2f2d(_0x59fbd7['d'])+_0x1278e7(0x1b1):'',_0x11fd9f=_0x1278e7(0x19a)+_0x59fbd7[_0x1278e7(0x1d4)]['x']+'\x20'+_0x59fbd7[_0x1278e7(0x1d4)]['y']+')'+_0x317abd+'\x22>'+_0x11f885+_0x446038(_0x59fbd7[_0x1278e7(0x1d2)])+_0x1278e7(0x1dd);return _0x59fbd7[_0x1278e7(0x1e5)]?_0x1278e7(0x1a3)+_0x4c95d0+_0x1278e7(0x1c0)+_0x11fd9f+_0x1278e7(0x1dd):_0x11fd9f;})[_0x3dccfb(0x1df)]('');return(_0x5c904d?_0x3dccfb(0x1e8)+_0x5c904d+_0x3dccfb(0x1b0):'')+_0x13f4ec;}function _0x348698(_0x34b56a){const _0x206e29=_0x31198e,{bounds:_0x4f122f,localPath:_0x240a07,targetWidth:_0xb1d7a9,targetHeight:_0x21de3c}=_0x34b56a,_0x4bcb35=_0x568adc(_0x34b56a[_0x206e29(0x1ee)]),_0x577586=_0x4bcb35>0x0?_0x206e29(0x1ec)+_0x4bcb35+','+_0x4bcb35+','+_0x4bcb35+')':_0x206e29(0x18f);return[_0x206e29(0x1c2),_0x206e29(0x1c8)+_0xb1d7a9+_0x206e29(0x1bb)+_0x21de3c+'\x22',_0x206e29(0x197),_0x206e29(0x1cf)+_0x4f122f[_0x206e29(0x1cd)]+'\x20'+_0x4f122f[_0x206e29(0x1a5)]+'\x22>',_0x206e29(0x1ab)+_0x4f122f[_0x206e29(0x1cd)]+_0x206e29(0x1bb)+_0x4f122f[_0x206e29(0x1a5)]+_0x206e29(0x1af)+_0x577586+_0x206e29(0x196),_0x240a07?_0x206e29(0x1c5)+_0x2e2f2d(_0x240a07)+_0x206e29(0x1b1):'',_0x446038(_0x34b56a[_0x206e29(0x1d2)]),_0x599322(_0x34b56a[_0x206e29(0x1f0)]),_0x206e29(0x1d3)][_0x206e29(0x1df)]('');}function _0x45e811(_0x312e08){const _0x55944a=_0x31198e,_0x4d5a86=_0x312e08[_0x55944a(0x19d)]||0x0;if(!(_0x4d5a86>0x0))return 0x0;const _0x5698b8=_0x4d5a86*(_0x312e08[_0x55944a(0x191)]/_0x312e08[_0x55944a(0x1c6)][_0x55944a(0x1cd)]);return _0x5698b8>=0.3?_0x5698b8:0x0;}async function _0x4e7aac(_0x4fb089){const _0x1bb7ba=_0x31198e,_0x28ba22=_0x1fbbc8(_0x4fb089),_0x5a22e8=_0x238724(_0x28ba22);if(_0x107534[_0x1bb7ba(0x187)](_0x5a22e8))return _0x5a22e8;const _0x3803e8=_0x348698(_0x4fb089),_0x38f432=_0x45e811(_0x4fb089);return await _0x34bf08()[_0x1bb7ba(0x19f)](Buffer[_0x1bb7ba(0x1e2)](_0x3803e8),_0x5a22e8,{'mode':_0x1bb7ba(0x1e7)},_0x38f432),_0x5a22e8;}function _0x1ae38a(_0x1c1ed2){const _0x4131da=_0x31198e,_0x4ad830=[_0x4131da(0x18d),_0x1c1ed2[_0x4131da(0x1e6)],_0x1c1ed2[_0x4131da(0x1e0)],_0x1c1ed2[_0x4131da(0x1cd)],_0x1c1ed2[_0x4131da(0x1a5)]][_0x4131da(0x1df)]('|');return _0x2e159a[_0x4131da(0x1ca)](_0x4131da(0x1bc))[_0x4131da(0x1c9)](_0x4ad830)[_0x4131da(0x18c)](_0x4131da(0x1d5))[_0x4131da(0x1bd)](0x0,0x10);}function _0x243412(_0x3bf006){const _0x1ec634=_0x31198e;return _0x56835e[_0x1ec634(0x1df)](_0x508546(),_0x1ec634(0x1a0)+_0x3bf006+_0x1ec634(0x1e9));}function _0x2921f8(_0x324ebf){const _0x140a75=_0x31198e;return[_0x140a75(0x1c2),_0x140a75(0x1c8)+_0x324ebf[_0x140a75(0x1cd)]+_0x140a75(0x1bb)+_0x324ebf[_0x140a75(0x1a5)]+'\x22',_0x140a75(0x1cf)+_0x324ebf[_0x140a75(0x1cd)]+'\x20'+_0x324ebf[_0x140a75(0x1a5)]+'\x22>',_0x140a75(0x1c5)+_0x2e2f2d(_0x324ebf[_0x140a75(0x1e6)])+_0x140a75(0x1af)+_0x2e2f2d(_0x324ebf[_0x140a75(0x1e0)])+_0x140a75(0x19c),_0x140a75(0x1d3)][_0x140a75(0x1df)]('');}async function _0xfb987e(_0x1c40f8){const _0x590b1e=_0x31198e,_0x34727b=_0x1ae38a(_0x1c40f8),_0x4f8785=_0x243412(_0x34727b);if(_0x107534[_0x590b1e(0x187)](_0x4f8785))return _0x4f8785;const _0x1c5d65=_0x2921f8(_0x1c40f8);return await _0x34bf08()[_0x590b1e(0x19f)](Buffer[_0x590b1e(0x1e2)](_0x1c5d65),_0x4f8785,{'mode':_0x590b1e(0x1e7)}),_0x4f8785;}const _0x4fcf0d=0x48;function _0xe743fd(_0x3453ab){const _0x51f027=_0x31198e,_0x6bc3af=[_0x51f027(0x1e4),_0x2e159a[_0x51f027(0x1ca)](_0x51f027(0x1bc))[_0x51f027(0x1c9)](_0x3453ab[_0x51f027(0x1b6)])[_0x51f027(0x18c)](_0x51f027(0x1d5)),_0x3453ab[_0x51f027(0x1a6)],_0x3453ab[_0x51f027(0x195)]][_0x51f027(0x1df)]('|');return _0x2e159a[_0x51f027(0x1ca)](_0x51f027(0x1bc))[_0x51f027(0x1c9)](_0x6bc3af)[_0x51f027(0x18c)](_0x51f027(0x1d5))[_0x51f027(0x1bd)](0x0,0x10);}function _0x4cd38e(_0x43b9a5){const _0x8583d8=_0x31198e;return _0x56835e[_0x8583d8(0x1df)](_0x508546(),_0x8583d8(0x1a7)+_0x43b9a5+_0x8583d8(0x1e9));}async function _0x4d452f(_0x59ebc2){const _0x2d27f6=_0x31198e,_0x28b693=_0xe743fd(_0x59ebc2),_0x34c633=_0x4cd38e(_0x28b693);if(_0x107534[_0x2d27f6(0x187)](_0x34c633))return _0x34c633;const _0x4efddd=Buffer[_0x2d27f6(0x1e2)](_0x59ebc2[_0x2d27f6(0x1b6)],_0x2d27f6(0x1dc));let _0x3979ef=_0x4fcf0d;try{const _0x3438c9=await _0x34bf08()[_0x2d27f6(0x18a)](_0x4efddd),_0x50dd66=_0x3438c9[_0x2d27f6(0x1cd)]||0x0,_0x38085b=_0x3438c9[_0x2d27f6(0x1a5)]||0x0;if(_0x50dd66>0x0&&_0x38085b>0x0){const _0x24afaa=_0x4fcf0d*_0x59ebc2[_0x2d27f6(0x1a6)]/Math[_0x2d27f6(0x1b9)](_0x50dd66,_0x38085b),_0x3d5c5f=_0x4fcf0d*_0x59ebc2[_0x2d27f6(0x195)]/Math[_0x2d27f6(0x1b3)](_0x50dd66,_0x38085b);_0x3979ef=Math[_0x2d27f6(0x1b3)](_0x4fcf0d,Math[_0x2d27f6(0x1b9)](_0x24afaa,_0x3d5c5f));}}catch{}return await _0x34bf08()[_0x2d27f6(0x19f)](_0x4efddd,_0x34c633,{'mode':_0x2d27f6(0x1aa),'dpi':_0x3979ef}),_0x34c633;}function _0x543e01(_0x4db0b4){const _0x39e707=_0x31198e,_0x5bebbd=[_0x39e707(0x1ad),_0x2e159a[_0x39e707(0x1ca)](_0x39e707(0x1bc))[_0x39e707(0x1c9)](_0x4db0b4[_0x39e707(0x1b6)])[_0x39e707(0x18c)](_0x39e707(0x1d5)),_0x4db0b4[_0x39e707(0x1cd)],_0x4db0b4[_0x39e707(0x1a5)],_0x4db0b4[_0x39e707(0x1d8)]][_0x39e707(0x1df)]('|');return _0x2e159a[_0x39e707(0x1ca)](_0x39e707(0x1bc))[_0x39e707(0x1c9)](_0x5bebbd)[_0x39e707(0x18c)](_0x39e707(0x1d5))[_0x39e707(0x1bd)](0x0,0x10);}function _0x288ee9(_0x1451a4){const _0x3b4f59=_0x31198e;return _0x56835e[_0x3b4f59(0x1df)](_0x508546(),_0x3b4f59(0x1b2)+_0x1451a4+_0x3b4f59(0x1e9));}async function _0x40a6fe(_0x4a6cf3){const _0xe9672d=_0x31198e,_0x4312fc=_0x543e01(_0x4a6cf3),_0x394861=_0x288ee9(_0x4312fc);if(_0x107534[_0xe9672d(0x187)](_0x394861))return _0x394861;const _0x463900=Buffer[_0xe9672d(0x1e2)](_0x4a6cf3[_0xe9672d(0x1b6)],_0xe9672d(0x1dc));return await _0x34bf08()[_0xe9672d(0x19f)](_0x463900,_0x394861,{'mode':_0xe9672d(0x1cd),'value':_0x4a6cf3[_0xe9672d(0x1cd)]}),_0x394861;}async function _0x45d42a(_0x2723bb){const _0x8e7c3=_0x31198e;if(_0x2723bb[_0x8e7c3(0x1ae)]===_0x8e7c3(0x1a4))return{'i':_0x2723bb[_0x8e7c3(0x188)],'p':await _0x4e7aac(_0x2723bb[_0x8e7c3(0x1a8)])};if(_0x2723bb[_0x8e7c3(0x1ae)]===_0x8e7c3(0x184))return{'i':_0x2723bb[_0x8e7c3(0x188)],'p':await _0xfb987e(_0x2723bb[_0x8e7c3(0x1a8)])};if(_0x2723bb[_0x8e7c3(0x1ae)]===_0x8e7c3(0x1d9))return{'i':_0x2723bb[_0x8e7c3(0x188)],'p':await _0x4d452f(_0x2723bb[_0x8e7c3(0x1a8)])};if(_0x2723bb[_0x8e7c3(0x1ae)]===_0x8e7c3(0x1de))return{'i':_0x2723bb[_0x8e7c3(0x188)],'p':await _0x40a6fe(_0x2723bb[_0x8e7c3(0x1a8)])};throw new Error(_0x8e7c3(0x189)+_0x2723bb[_0x8e7c3(0x1ae)]+'\x22');}function _0x4f0b(){const _0x3ac663=['iIbMAwXSpsi','pc9KzwzZpG','iIbMAwXSpsj3AgL0zsiVpG','C3zNzxHHy3qT','Bwf4','BwTKAxjtEw5J','mtHsAxLltuy','C3zNqMfZzty0','Bg9JywXqyxrO','mtmZodeYogvIsgTysG','BwLU','mte5nZq5n1LJrLL2Aq','iIbOzwLNAhq9iG','C2HHmJu2','C2XPy2u','ChvZAa','ihnJywXLka','ksi+','nZiYmdmZsxzus2zf','phn2zYb4BwXUCZ0IAhr0CdOVl3D3DY53mY5VCMCVmJaWmc9ZDMCI','Cgf0Aa','mtK4mtvhEgH4AuO','phbHDgGGzd0I','yM91BMrZ','iI8+pc9JBgLWugf0Ad4','ihDPzhrOpsi','DxbKyxrL','y3jLyxrLsgfZAa','odu3nte2vvftsLLL','BwfW','D2LKDgG','pgnSAxbqyxrOigLKpsjWyW','ihzPzxDcB3G9iJaGmca','BwfZAY0','z2v0twfZA0nHy2HLrgLY','C3rYB2TLCW','pc9ZDMC+','DhjHBNnSyxrL','Agv4','iIb3Awr0Ad0I','zxHWB3j0CW','C3vWzxjZyw1WBgu','C3zNlw1LzgLH','y3j5ChrV','ndmYmJrhzM5pAMO','yMfZzty0','pc9NpG','C3zNlwv4ywn0','AM9PBG','zMLSBa','nduWC0zdA3bU','zNjVBq','C2nHBgu','C3zNBwvKAwe','y2XPCa','Cgf0Aeq','B3jPz2LUywW','pgrLzNm+','lNbUzW','lI4VzgLZDc9JB3jLl21HC2TdywnOzurPCI5QCW','jMD0oW','CMDIka','CM91BMq','Bwf0Dgu','iIbMAwXSpsjUB25LiIbZDhjVA2u9iNDOAxrLiIbZDhjVA2uTD2LKDgG9iG','CgfYDhm','jMfTCdS','Aw5SAw5LlxjPBMC','iIb5psi','CMvWBgfJzq','zxHPC3rZu3LUyW','CgfPBNrjBMrLEa','BwfZAY1Yyxn0zxjPEMuTy29YztOGDw5RBM93BIbPDgvTlMTPBMqGiG','C3zNsw50CMLUC2LJu2L6zq','DgfYz2v0sgvPz2H0','zgLNzxn0','CMLUzW','jNf1B3q7','yMXHy2S','mtbAwwPODNK','DgfYz2v0v2LKDgG','jMX0oW','mJeYrLLmrfrZ','iIbZDhjVA2uTBgLUzwnHCd0ICM91BMqIihn0CM9Rzs1SAw5LAM9PBJ0ICM91BMqIlZ4','Bwf4rgLT','iI8+','ihbYzxnLCNzLqxnWzwn0uMf0Aw89iM5VBMuI','iJ48CMvJDcb4psi','C3rYAw5N','pgCGDhjHBNnMB3jTpsj0CMfUC2XHDguO','lI4VzgLZDc9JB3jLl3n2z1jHC3rLCI5QCW','iIbMAwXSlxj1Bgu9iMv2zw5VzgqIlZ4','zMvHDgHLCLb4','C3rYAw5NAwz5','CMvUzgvYu3zNvg9qBMDgAwXL','CMLUzY0','mtjvDLrosgm','BgvUz3rO','pgCGy2XPCc1WyxrOpsj1CMWOi3bJ','Aw5SAw5Llw1HC2S','AgvPz2H0','BwLUrgLT','C3zNBwvKAweT','yxjNCW','mZzYwLPLBfG','zgvUC2L0Eq','phjLy3qGEd0ImciGEt0ImciGD2LKDgG9iG','mZy5mJjRy2DVs1e','C3zNzxHHy3q','A2LUza'];_0x4f0b=function(){return _0x3ac663;};return _0x4f0b();}module[_0x31198e(0x1d7)]={'cacheDir':_0x508546,'useCacheDir':_0x463cd6,'rasterizeItem':_0x45d42a,'rasterizeInline':_0x4e7aac,'rasterizeRing':_0xfb987e,'rasterizeSvgMedia':_0x4d452f,'rasterizeSvgExact':_0x40a6fe};
1
+ 'use strict';const _0x2a7afb=_0x47db;(function(_0x1dd284,_0x14c26b){const _0xc17287=_0x47db,_0x189e33=_0x1dd284();while(!![]){try{const _0x4832dc=parseInt(_0xc17287(0x1f6))/0x1*(parseInt(_0xc17287(0x1eb))/0x2)+-parseInt(_0xc17287(0x1ad))/0x3*(parseInt(_0xc17287(0x1b0))/0x4)+parseInt(_0xc17287(0x1d5))/0x5+-parseInt(_0xc17287(0x204))/0x6*(-parseInt(_0xc17287(0x1c0))/0x7)+-parseInt(_0xc17287(0x1b2))/0x8*(-parseInt(_0xc17287(0x202))/0x9)+parseInt(_0xc17287(0x1d2))/0xa*(-parseInt(_0xc17287(0x1bf))/0xb)+parseInt(_0xc17287(0x1b1))/0xc;if(_0x4832dc===_0x14c26b)break;else _0x189e33['push'](_0x189e33['shift']());}catch(_0xd6a5c0){_0x189e33['push'](_0x189e33['shift']());}}}(_0xd4f7,0xc1e87));const _0x14a7e9=require('fs'),_0x521377=require(_0x2a7afb(0x1b6)),_0x1b838f=require(_0x2a7afb(0x1dd));let _0x2a590a=null,_0x3ee203=null;function _0x1a600c(_0x48635b){const _0xc58ea5=_0x2a7afb;_0x2a590a=typeof _0x48635b==_0xc58ea5(0x20e)&&_0x48635b?_0x48635b:null,_0x2a590a&&_0x14a7e9[_0xc58ea5(0x1a5)](_0x2a590a,{'recursive':!0x0});}function _0x47db(_0x1e98a3,_0x39ba85){_0x1e98a3=_0x1e98a3-0x1a2;const _0xd4f763=_0xd4f7();let _0x47db7f=_0xd4f763[_0x1e98a3];if(_0x47db['bRiVGf']===undefined){var _0x5bb560=function(_0x6a1a7d){const _0xeec4c0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x14a7e9='',_0x521377='';for(let _0x1b838f=0x0,_0x2a590a,_0x3ee203,_0x1a600c=0x0;_0x3ee203=_0x6a1a7d['charAt'](_0x1a600c++);~_0x3ee203&&(_0x2a590a=_0x1b838f%0x4?_0x2a590a*0x40+_0x3ee203:_0x3ee203,_0x1b838f++%0x4)?_0x14a7e9+=String['fromCharCode'](0xff&_0x2a590a>>(-0x2*_0x1b838f&0x6)):0x0){_0x3ee203=_0xeec4c0['indexOf'](_0x3ee203);}for(let _0x9aa353=0x0,_0x98acb6=_0x14a7e9['length'];_0x9aa353<_0x98acb6;_0x9aa353++){_0x521377+='%'+('00'+_0x14a7e9['charCodeAt'](_0x9aa353)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x521377);};_0x47db['SIsVda']=_0x5bb560,_0x47db['jDxOdr']={},_0x47db['bRiVGf']=!![];}const _0x40634b=_0xd4f763[0x0],_0x1fa986=_0x1e98a3+_0x40634b,_0x27c1cd=_0x47db['jDxOdr'][_0x1fa986];return!_0x27c1cd?(_0x47db7f=_0x47db['SIsVda'](_0x47db7f),_0x47db['jDxOdr'][_0x1fa986]=_0x47db7f):_0x47db7f=_0x27c1cd,_0x47db7f;}function _0x9aa353(){const _0x159529=_0x2a7afb;return _0x2a590a?(_0x14a7e9[_0x159529(0x1a5)](_0x2a590a,{'recursive':!0x0}),_0x2a590a):(_0x3ee203||(_0x3ee203=require(_0x159529(0x1c9))),_0x3ee203[_0x159529(0x1c2)]());}function _0x98acb6(_0x44c751){const _0x516c3b=_0x2a7afb;return Math[_0x516c3b(0x201)](Math[_0x516c3b(0x1ce)](0x0,Math[_0x516c3b(0x1d4)](0x1,_0x44c751||0x0))*0xff);}function _0x45fa86(_0x592ebd){const _0x44bb97=_0x2a7afb;return _0x592ebd[_0x44bb97(0x1ea)](/&/g,_0x44bb97(0x1df))[_0x44bb97(0x1ea)](/"/g,_0x44bb97(0x205))[_0x44bb97(0x1ea)](/</g,_0x44bb97(0x1aa))[_0x44bb97(0x1ea)](/>/g,_0x44bb97(0x1c4));}let _0xbbf505=null;function _0x50962e(){const _0xe808ca=_0x2a7afb;return _0xbbf505||(_0xbbf505=require(_0xe808ca(0x1d7))),_0xbbf505;}const _0x5e4412='r2';function _0x2ff6d0(_0x23a5a4){const _0x2705b1=_0x2a7afb,_0x963657=_0x23a5a4[_0x2705b1(0x1cb)],_0x3a5834=[_0x5e4412,_0x23a5a4[_0x2705b1(0x1c6)],_0x963657['x'],_0x963657['y'],_0x963657[_0x2705b1(0x203)],_0x963657[_0x2705b1(0x1e7)],_0x23a5a4[_0x2705b1(0x1e4)],_0x23a5a4[_0x2705b1(0x1c7)],_0x98acb6(_0x23a5a4[_0x2705b1(0x1e0)])][_0x2705b1(0x1fd)]('|'),_0x48c3c0=[];_0x23a5a4[_0x2705b1(0x1a4)]&&_0x23a5a4[_0x2705b1(0x1a4)][_0x2705b1(0x1a7)]&&_0x48c3c0[_0x2705b1(0x1f8)]('s:'+JSON[_0x2705b1(0x1d1)](_0x23a5a4[_0x2705b1(0x1a4)])),_0x23a5a4[_0x2705b1(0x1be)]&&_0x23a5a4[_0x2705b1(0x1be)][_0x2705b1(0x1a7)]&&_0x48c3c0[_0x2705b1(0x1f8)]('p:'+JSON[_0x2705b1(0x1d1)](_0x23a5a4[_0x2705b1(0x1be)])),_0x23a5a4[_0x2705b1(0x1e6)]&&_0x48c3c0[_0x2705b1(0x1f8)]('f:'+_0x23a5a4[_0x2705b1(0x1e6)]);const _0x1fa40c=_0x48c3c0[_0x2705b1(0x1a7)]?_0x3a5834+'|'+_0x48c3c0[_0x2705b1(0x1fd)]('|'):_0x3a5834;return _0x1b838f[_0x2705b1(0x1de)](_0x2705b1(0x1b9))[_0x2705b1(0x1e1)](_0x1fa40c)[_0x2705b1(0x1ef)](_0x2705b1(0x1f5))[_0x2705b1(0x1a3)](0x0,0x10);}function _0x8d36e2(_0x26ff75){const _0x3d5420=_0x2a7afb;return _0x521377[_0x3d5420(0x1fd)](_0x9aa353(),_0x3d5420(0x20c)+_0x26ff75+_0x3d5420(0x20d));}function _0xd4f7(){const _0x50f8ef=['zNjVBq','zxHWB3j0CW','iIbMAwXSpsjUB25LiIbZDhjVA2u9iNDOAxrLiIbZDhjVA2uTD2LKDgG9iG','AM9PBG','iIb5psi','C3zNlw1LzgLH','iI8+pc9JBgLWugf0Ad4','CM91BMq','mJCXmZeZmwv5ue1brq','D2LKDgG','mZy0ntbguhrnDhO','jNf1B3q7','ihbYzxnLCNzLqxnWzwn0uMf0Aw89iM5VBMuI','pc9KzwzZpG','CMDIka','pgCGDhjHBNnMB3jTpsj0CMfUC2XHDguO','iIb3Awr0Ad0I','iIbOzwLNAhq9iG','BwfZAY0','lNbUzW','C3rYAw5N','pc9ZDMC+','C2XPy2u','C3rYB2TLCW','BwTKAxjtEw5J','iIbMAwXSlxj1Bgu9iMv2zw5VzgqIlZ4','BgvUz3rO','yxjNCW','ihnJywXLka','jMX0oW','iIbZDhjVA2uTBgLUzwnHCd0ICM91BMqIihn0CM9Rzs1SAw5LAM9PBJ0ICM91BMqIlZ4','y2XPCa','m2jjDNDcDa','yMfZzty0','BwfZAY1Yyxn0zxjPEMuTy29YztOGDw5RBM93BIbPDgvTlMTPBMqGiG','ntG1mJCYogvzsM5AsW','nJa2mtyWogv5EhnQEa','mJrQthbUCey','Aw5SAw5LlxjPBMC','iIbMAwXSpsi','B3jPz2LUywW','Cgf0Aa','iI8+','pgnSAxbqyxrOigLKpsjWyW','C2HHmJu2','zMLSBa','ksi+','zgvUC2L0Eq','pgrLzNm+','CgfYDhm','ntyWndvIvgrQyNK','nti1q2jJDffA','C3zNqMfZzty0','z2v0twfZA0nHy2HLrgLY','C3zNBwvKAweT','jMD0oW','Cgf0Aeq','Bg9JywXqyxrO','DgfYz2v0sgvPz2H0','C2nHBgu','lI4VzgLZDc9JB3jLl21HC2TdywnOzurPCI5QCW','Aw5SAw5Llw1HC2S','yM91BMrZ','Bwf4rgLT','pgCGy2XPCc1WyxrOpsj1CMWOi3bJ','Bwf4','C3zNzxHHy3q','pc9NpG','C3rYAw5NAwz5','mtmWmgThB3P0wG','BwLUrgLT','BwLU','mZmZnteWnuDxCwTPrW','yMXHy2S','lI4VzgLZDc9JB3jLl3n2z1jHC3rLCI5QCW','CgfPBNrjBMrLEa','phjLy3qGEd0ImciGEt0ImciGD2LKDgG9iG','zxHPC3rZu3LUyW','C3vWzxjZyw1WBgu','DhjHBNnSyxrL','y3j5ChrV','y3jLyxrLsgfZAa','jMfTCdS','Bwf0Dgu','DxbKyxrL','CMvUzgvYu3zNvg9qBMDgAwXL','ihDPzhrOpsi','DgfYz2v0v2LKDgG','iIbMAwXSpsj3AgL0zsiVpG','zMvHDgHLCLb4','AgvPz2H0','CMLUzW','C3zNzxHHy3qT','CMvWBgfJzq','nfLyrNrxBG','iJ48CMvJDcb4psi','BwfW','A2LUza','zgLNzxn0','phbHDgGGzd0I','C3zNBwvKAwe','CMLUzY0','C3zNsw50CMLUC2LJu2L6zq','C3zNlwv4ywn0','Agv4','mtKZodeXy3n4q2DH','phn2zYb4BwXUCZ0IAhr0CdOVl3D3DY53mY5VCMCVmJaWmc9ZDMCI','ChvZAa','ihzPzxDcB3G9iJaGmca'];_0xd4f7=function(){return _0x50f8ef;};return _0xd4f7();}function _0x75ca60(_0x59fb10){const _0xca38b5=_0x2a7afb;return!_0x59fb10||!_0x59fb10[_0xca38b5(0x1a7)]?'':_0x59fb10[_0xca38b5(0x1ed)](_0x465290=>_0xca38b5(0x1f0)+_0x45fa86(_0x465290['d'])+_0xca38b5(0x1fc)+_0x465290[_0xca38b5(0x203)]+_0xca38b5(0x1ab))[_0xca38b5(0x1fd)]('');}function _0x554efd(_0x127f89){const _0xa4958f=_0x2a7afb;if(!_0x127f89||!_0x127f89[_0xa4958f(0x1a7)])return'';const _0x38bfae=_0x127f89[_0xa4958f(0x1ed)]((_0x20a5cd,_0x19b24f)=>_0x20a5cd[_0xa4958f(0x1ac)]?_0xa4958f(0x1b8)+_0x19b24f+_0xa4958f(0x1ec)+_0x20a5cd[_0xa4958f(0x1ac)]['x']+_0xa4958f(0x1fe)+_0x20a5cd[_0xa4958f(0x1ac)]['y']+_0xa4958f(0x20a)+_0x20a5cd[_0xa4958f(0x1ac)][_0xa4958f(0x203)]+_0xa4958f(0x20b)+_0x20a5cd[_0xa4958f(0x1ac)][_0xa4958f(0x1e7)]+_0xa4958f(0x200):'')[_0xa4958f(0x1fd)](''),_0x10b2d6=_0x127f89[_0xa4958f(0x1ed)]((_0x51570a,_0x2aee77)=>{const _0x19039d=_0xa4958f,_0x3b2e51=_0x51570a[_0x19039d(0x1c8)]&&(_0x51570a[_0x19039d(0x1c8)]['x']!==0x1||_0x51570a[_0x19039d(0x1c8)]['y']!==0x1)?_0x19039d(0x1a9)+_0x51570a[_0x19039d(0x1c8)]['x']+'\x20'+_0x51570a[_0x19039d(0x1c8)]['y']+')':'',_0x1d2636=_0x51570a['d']?_0x19039d(0x1f0)+_0x45fa86(_0x51570a['d'])+_0x19039d(0x1e5):'',_0x370664=_0x19039d(0x209)+_0x51570a[_0x19039d(0x1dc)]['x']+'\x20'+_0x51570a[_0x19039d(0x1dc)]['y']+')'+_0x3b2e51+'\x22>'+_0x1d2636+_0x75ca60(_0x51570a[_0x19039d(0x1a4)])+_0x19039d(0x1d0);return _0x51570a[_0x19039d(0x1ac)]?_0x19039d(0x1cd)+_0x2aee77+_0x19039d(0x1bb)+_0x370664+_0x19039d(0x1d0):_0x370664;})[_0xa4958f(0x1fd)]('');return(_0x38bfae?_0xa4958f(0x1bd)+_0x38bfae+_0xa4958f(0x207):'')+_0x10b2d6;}function _0x3be1d2(_0x2c3b5e){const _0xc6d871=_0x2a7afb,{bounds:_0x37a93b,localPath:_0x5563ca,targetWidth:_0xcd4b2b,targetHeight:_0x480e55}=_0x2c3b5e,_0x2da314=_0x98acb6(_0x2c3b5e[_0xc6d871(0x1e0)]),_0x54eeac=_0x2da314>0x0?_0xc6d871(0x208)+_0x2da314+','+_0x2da314+','+_0x2da314+')':_0xc6d871(0x1d6);return[_0xc6d871(0x1f7),_0xc6d871(0x1e3)+_0xcd4b2b+_0xc6d871(0x20b)+_0x480e55+'\x22',_0xc6d871(0x206),_0xc6d871(0x1f9)+_0x37a93b[_0xc6d871(0x203)]+'\x20'+_0x37a93b[_0xc6d871(0x1e7)]+'\x22>',_0xc6d871(0x1d9)+_0x37a93b[_0xc6d871(0x203)]+_0xc6d871(0x20b)+_0x37a93b[_0xc6d871(0x1e7)]+_0xc6d871(0x1b4)+_0x54eeac+_0xc6d871(0x1b7),_0x5563ca?_0xc6d871(0x1f0)+_0x45fa86(_0x5563ca)+_0xc6d871(0x1e5):'',_0x75ca60(_0x2c3b5e[_0xc6d871(0x1a4)]),_0x554efd(_0x2c3b5e[_0xc6d871(0x1be)]),_0xc6d871(0x1a2)][_0xc6d871(0x1fd)]('');}function _0x4ea1d5(_0x1c2557){const _0x428a40=_0x2a7afb,_0x453c31=_0x1c2557[_0x428a40(0x1e6)]||0x0;if(!(_0x453c31>0x0))return 0x0;const _0x2017fb=_0x453c31*(_0x1c2557[_0x428a40(0x1e4)]/_0x1c2557[_0x428a40(0x1cb)][_0x428a40(0x203)]);return _0x2017fb>=0.3?_0x2017fb:0x0;}async function _0x214f89(_0x2b2cee){const _0x3d261=_0x2a7afb,_0x1f5aaf=_0x2ff6d0(_0x2b2cee),_0x2da44c=_0x8d36e2(_0x1f5aaf);if(_0x14a7e9[_0x3d261(0x1da)](_0x2da44c))return _0x2da44c;const _0x168937=_0x3be1d2(_0x2b2cee),_0x259518=_0x4ea1d5(_0x2b2cee);return await _0x50962e()[_0x3d261(0x1e2)](Buffer[_0x3d261(0x1fa)](_0x168937),_0x2da44c,{'mode':_0x3d261(0x1b5)},_0x259518),_0x2da44c;}function _0x46c760(_0x2ec837){const _0x50a50e=_0x2a7afb,_0x1b3681=[_0x50a50e(0x1e8),_0x2ec837[_0x50a50e(0x1c5)],_0x2ec837[_0x50a50e(0x1ba)],_0x2ec837[_0x50a50e(0x203)],_0x2ec837[_0x50a50e(0x1e7)]][_0x50a50e(0x1fd)]('|');return _0x1b838f[_0x50a50e(0x1de)](_0x50a50e(0x1b9))[_0x50a50e(0x1e1)](_0x1b3681)[_0x50a50e(0x1ef)](_0x50a50e(0x1f5))[_0x50a50e(0x1a3)](0x0,0x10);}function _0x1f1795(_0x54bb23){const _0x48ce58=_0x2a7afb;return _0x521377[_0x48ce58(0x1fd)](_0x9aa353(),_0x48ce58(0x1f2)+_0x54bb23+_0x48ce58(0x20d));}function _0xe2edc8(_0x2eb10c){const _0x5d0ec1=_0x2a7afb;return[_0x5d0ec1(0x1f7),_0x5d0ec1(0x1e3)+_0x2eb10c[_0x5d0ec1(0x203)]+_0x5d0ec1(0x20b)+_0x2eb10c[_0x5d0ec1(0x1e7)]+'\x22',_0x5d0ec1(0x1f9)+_0x2eb10c[_0x5d0ec1(0x203)]+'\x20'+_0x2eb10c[_0x5d0ec1(0x1e7)]+'\x22>',_0x5d0ec1(0x1f0)+_0x45fa86(_0x2eb10c[_0x5d0ec1(0x1c5)])+_0x5d0ec1(0x1b4)+_0x45fa86(_0x2eb10c[_0x5d0ec1(0x1ba)])+_0x5d0ec1(0x1a6),_0x5d0ec1(0x1a2)][_0x5d0ec1(0x1fd)]('');}async function _0x7c23ab(_0x1dcbc9){const _0x3193cd=_0x2a7afb,_0x4f6852=_0x46c760(_0x1dcbc9),_0x2dbc18=_0x1f1795(_0x4f6852);if(_0x14a7e9[_0x3193cd(0x1da)](_0x2dbc18))return _0x2dbc18;const _0x37279d=_0xe2edc8(_0x1dcbc9);return await _0x50962e()[_0x3193cd(0x1e2)](Buffer[_0x3193cd(0x1fa)](_0x37279d),_0x2dbc18,{'mode':_0x3193cd(0x1b5)}),_0x2dbc18;}const _0x50b6c7=0x48;function _0x65d1ef(_0x439ee4){const _0x2e2508=_0x2a7afb,_0x418305=[_0x2e2508(0x1f1),_0x1b838f[_0x2e2508(0x1de)](_0x2e2508(0x1b9))[_0x2e2508(0x1e1)](_0x439ee4[_0x2e2508(0x1c1)])[_0x2e2508(0x1ef)](_0x2e2508(0x1f5)),_0x439ee4[_0x2e2508(0x1d3)],_0x439ee4[_0x2e2508(0x1cc)]][_0x2e2508(0x1fd)]('|');return _0x1b838f[_0x2e2508(0x1de)](_0x2e2508(0x1b9))[_0x2e2508(0x1e1)](_0x418305)[_0x2e2508(0x1ef)](_0x2e2508(0x1f5))[_0x2e2508(0x1a3)](0x0,0x10);}function _0x12ab60(_0x2dcdf7){const _0x538934=_0x2a7afb;return _0x521377[_0x538934(0x1fd)](_0x9aa353(),_0x538934(0x1c3)+_0x2dcdf7+_0x538934(0x20d));}async function _0x186b77(_0x1d113f){const _0x4564ba=_0x2a7afb,_0x1eef9d=_0x65d1ef(_0x1d113f),_0x3a184e=_0x12ab60(_0x1eef9d);if(_0x14a7e9[_0x4564ba(0x1da)](_0x3a184e))return _0x3a184e;const _0xecf8c5=Buffer[_0x4564ba(0x1fa)](_0x1d113f[_0x4564ba(0x1c1)],_0x4564ba(0x1ae));let _0x33ae2f=_0x50b6c7;try{const _0x3c7720=await _0x50962e()[_0x4564ba(0x1f3)](_0xecf8c5),_0x3f75f0=_0x3c7720[_0x4564ba(0x203)]||0x0,_0x44de57=_0x3c7720[_0x4564ba(0x1e7)]||0x0;if(_0x3f75f0>0x0&&_0x44de57>0x0){const _0xc9a26b=_0x50b6c7*_0x1d113f[_0x4564ba(0x1d3)]/Math[_0x4564ba(0x1d4)](_0x3f75f0,_0x44de57),_0x16d8e8=_0x50b6c7*_0x1d113f[_0x4564ba(0x1cc)]/Math[_0x4564ba(0x1ce)](_0x3f75f0,_0x44de57);_0x33ae2f=Math[_0x4564ba(0x1ce)](_0x50b6c7,Math[_0x4564ba(0x1d4)](_0xc9a26b,_0x16d8e8));}}catch{}return await _0x50962e()[_0x4564ba(0x1e2)](_0xecf8c5,_0x3a184e,{'mode':_0x4564ba(0x1bc),'dpi':_0x33ae2f}),_0x3a184e;}function _0x1990a0(_0x3f8d11){const _0x1a52a1=_0x2a7afb,_0x4f4c10=[_0x1a52a1(0x1cf),_0x1b838f[_0x1a52a1(0x1de)](_0x1a52a1(0x1b9))[_0x1a52a1(0x1e1)](_0x3f8d11[_0x1a52a1(0x1c1)])[_0x1a52a1(0x1ef)](_0x1a52a1(0x1f5)),_0x3f8d11[_0x1a52a1(0x203)],_0x3f8d11[_0x1a52a1(0x1e7)],_0x3f8d11[_0x1a52a1(0x1db)]][_0x1a52a1(0x1fd)]('|');return _0x1b838f[_0x1a52a1(0x1de)](_0x1a52a1(0x1b9))[_0x1a52a1(0x1e1)](_0x4f4c10)[_0x1a52a1(0x1ef)](_0x1a52a1(0x1f5))[_0x1a52a1(0x1a3)](0x0,0x10);}function _0x553707(_0x2f29d4){const _0x2285aa=_0x2a7afb;return _0x521377[_0x2285aa(0x1fd)](_0x9aa353(),_0x2285aa(0x1e9)+_0x2f29d4+_0x2285aa(0x20d));}async function _0x19df36(_0x4c0a99){const _0x228c59=_0x2a7afb,_0x32897f=_0x1990a0(_0x4c0a99),_0x2bcf65=_0x553707(_0x32897f);if(_0x14a7e9[_0x228c59(0x1da)](_0x2bcf65))return _0x2bcf65;const _0x59cc90=Buffer[_0x228c59(0x1fa)](_0x4c0a99[_0x228c59(0x1c1)],_0x228c59(0x1ae));return await _0x50962e()[_0x228c59(0x1e2)](_0x59cc90,_0x2bcf65,{'mode':_0x228c59(0x203),'value':_0x4c0a99[_0x228c59(0x203)]}),_0x2bcf65;}async function _0x29cf67(_0x5c6b47){const _0x27415a=_0x2a7afb;if(_0x5c6b47[_0x27415a(0x1ee)]===_0x27415a(0x1ca))return{'i':_0x5c6b47[_0x27415a(0x1d8)],'p':await _0x214f89(_0x5c6b47[_0x27415a(0x1a8)])};if(_0x5c6b47[_0x27415a(0x1ee)]===_0x27415a(0x1b3))return{'i':_0x5c6b47[_0x27415a(0x1d8)],'p':await _0x7c23ab(_0x5c6b47[_0x27415a(0x1a8)])};if(_0x5c6b47[_0x27415a(0x1ee)]===_0x27415a(0x1ff))return{'i':_0x5c6b47[_0x27415a(0x1d8)],'p':await _0x186b77(_0x5c6b47[_0x27415a(0x1a8)])};if(_0x5c6b47[_0x27415a(0x1ee)]===_0x27415a(0x1f4))return{'i':_0x5c6b47[_0x27415a(0x1d8)],'p':await _0x19df36(_0x5c6b47[_0x27415a(0x1a8)])};throw new Error(_0x27415a(0x1af)+_0x5c6b47[_0x27415a(0x1ee)]+'\x22');}module[_0x2a7afb(0x1fb)]={'cacheDir':_0x9aa353,'useCacheDir':_0x1a600c,'rasterizeItem':_0x29cf67,'rasterizeInline':_0x214f89,'rasterizeRing':_0x7c23ab,'rasterizeSvgMedia':_0x186b77,'rasterizeSvgExact':_0x19df36};
@@ -1 +1 @@
1
- 'use strict';function _0x23b0(){const _0x37208a=['CgfYC2u','y2f0y2G','DhjPBq','y2fJAgveAxi','mtrmv3j4zvy','BwvZC2fNzq','AxnbCNjHEq','CMvHzezPBgvtEw5J','mta2mJG5neLAt2H3ua','C3rKzxjY','mtq1nJK4ndHWAffIz2K','D3jPDgu','nJm4mdq0zhruqufH','BwfZAY1Yyxn0zxjPEMuTD29YA2vYoIbLEhbLy3rLzcbHiePtt04GyxjYyxKGB3iGEYbPDgvTCYWGy2fJAgveAxiGFsbVBIbZDgrPBIaOB3iGyxjNDLSYxsK','mte0mZK4r0vWAe50','yxjNDG','C3rYAw5NAwz5','zxHPDa','ode0nJy0rLzrz2Dr','nduYntK2sfroyLb6','AxrLBxm','lI9TyxnRlxjHC3rLCML6zs1JB3jL','mtH1ze1oswC','DxrMoa','mtGWmdy4nvr3DgXwqG','C3rKB3v0'];_0x23b0=function(){return _0x37208a;};return _0x23b0();}function _0x55ea(_0x3bf385,_0xebd5e9){_0x3bf385=_0x3bf385-0x165;const _0x23b07d=_0x23b0();let _0x55eae1=_0x23b07d[_0x3bf385];if(_0x55ea['BefIwp']===undefined){var _0x1b9f29=function(_0x441ba9){const _0x116bb7='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xaf28b0='',_0x4b8643='';for(let _0x4ac30d=0x0,_0x4f3c4e,_0x323b46,_0x1fd4fe=0x0;_0x323b46=_0x441ba9['charAt'](_0x1fd4fe++);~_0x323b46&&(_0x4f3c4e=_0x4ac30d%0x4?_0x4f3c4e*0x40+_0x323b46:_0x323b46,_0x4ac30d++%0x4)?_0xaf28b0+=String['fromCharCode'](0xff&_0x4f3c4e>>(-0x2*_0x4ac30d&0x6)):0x0){_0x323b46=_0x116bb7['indexOf'](_0x323b46);}for(let _0x107958=0x0,_0x45fb97=_0xaf28b0['length'];_0x107958<_0x45fb97;_0x107958++){_0x4b8643+='%'+('00'+_0xaf28b0['charCodeAt'](_0x107958)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x4b8643);};_0x55ea['jomaXD']=_0x1b9f29,_0x55ea['ipvmsC']={},_0x55ea['BefIwp']=!![];}const _0x29ae5e=_0x23b07d[0x0],_0x3fd8da=_0x3bf385+_0x29ae5e,_0x43a4c9=_0x55ea['ipvmsC'][_0x3fd8da];return!_0x43a4c9?(_0x55eae1=_0x55ea['jomaXD'](_0x55eae1),_0x55ea['ipvmsC'][_0x3fd8da]=_0x55eae1):_0x55eae1=_0x43a4c9,_0x55eae1;}const _0x29f3e7=_0x55ea;(function(_0x54e55e,_0xb76662){const _0x1904b5=_0x55ea,_0x5a19eb=_0x54e55e();while(!![]){try{const _0x382b51=-parseInt(_0x1904b5(0x168))/0x1+parseInt(_0x1904b5(0x16a))/0x2*(-parseInt(_0x1904b5(0x172))/0x3)+parseInt(_0x1904b5(0x16f))/0x4+-parseInt(_0x1904b5(0x174))/0x5+parseInt(_0x1904b5(0x17e))/0x6+parseInt(_0x1904b5(0x17a))/0x7*(-parseInt(_0x1904b5(0x16e))/0x8)+parseInt(_0x1904b5(0x166))/0x9;if(_0x382b51===_0xb76662)break;else _0x5a19eb['push'](_0x5a19eb['shift']());}catch(_0x43a821){_0x5a19eb['push'](_0x5a19eb['shift']());}}}(_0x23b0,0x58e61));const _0xaf28b0=require('fs'),{rasterizeItem:_0x4b8643,useCacheDir:_0x4ac30d}=require(_0x29f3e7(0x171));function _0x4f3c4e(){const _0x1b47c5=_0x29f3e7;try{return _0xaf28b0[_0x1b47c5(0x17d)](0x0,_0x1b47c5(0x173));}catch{return'';}}async function _0x323b46(){const _0xed78c2=_0x29f3e7,_0x1fd4fe=process[_0xed78c2(0x16b)][0x2]||_0x4f3c4e()[_0xed78c2(0x178)]()||'[]',_0x107958=JSON[_0xed78c2(0x176)](_0x1fd4fe),_0x45fb97=Array[_0xed78c2(0x17c)](_0x107958)?_0x107958:_0x107958&&_0x107958[_0xed78c2(0x170)];if(!Array[_0xed78c2(0x17c)](_0x45fb97))throw new Error(_0xed78c2(0x169));_0x4ac30d(Array[_0xed78c2(0x17c)](_0x107958)?null:_0x107958[_0xed78c2(0x179)]);for(const _0x45fe11 of _0x45fb97){const {i:_0x5ced97,p:_0xcf8ff3}=await _0x4b8643(_0x45fe11);_0xcf8ff3&&process[_0xed78c2(0x175)][_0xed78c2(0x167)](JSON[_0xed78c2(0x16c)]({'i':_0x5ced97,'p':_0xcf8ff3})+'\x0a');}}_0x323b46()[_0x29f3e7(0x177)](_0x5b6ad6=>{const _0x5adcd4=_0x29f3e7;process[_0x5adcd4(0x165)][_0x5adcd4(0x167)](_0x5b6ad6&&_0x5b6ad6[_0x5adcd4(0x17b)]||String(_0x5b6ad6)),process[_0x5adcd4(0x16d)](0x1);});
1
+ 'use strict';const _0x3ced68=_0x3d6f;(function(_0x48a5fb,_0x331b30){const _0x3ca023=_0x3d6f,_0x3ecc1c=_0x48a5fb();while(!![]){try{const _0x3d536c=-parseInt(_0x3ca023(0x137))/0x1+parseInt(_0x3ca023(0x146))/0x2+-parseInt(_0x3ca023(0x142))/0x3+parseInt(_0x3ca023(0x13d))/0x4+-parseInt(_0x3ca023(0x132))/0x5+-parseInt(_0x3ca023(0x143))/0x6*(-parseInt(_0x3ca023(0x13e))/0x7)+parseInt(_0x3ca023(0x140))/0x8;if(_0x3d536c===_0x331b30)break;else _0x3ecc1c['push'](_0x3ecc1c['shift']());}catch(_0x3067a6){_0x3ecc1c['push'](_0x3ecc1c['shift']());}}}(_0x31ce,0x9b252));function _0x3d6f(_0x2afc97,_0x2877fb){_0x2afc97=_0x2afc97-0x131;const _0x31ce33=_0x31ce();let _0x3d6fed=_0x31ce33[_0x2afc97];if(_0x3d6f['HlmHlK']===undefined){var _0x300b2a=function(_0x1ea26c){const _0x10f6b6='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x57bdee='',_0x3a4d84='';for(let _0x1e087d=0x0,_0x191b85,_0x2d2915,_0x2e0bdd=0x0;_0x2d2915=_0x1ea26c['charAt'](_0x2e0bdd++);~_0x2d2915&&(_0x191b85=_0x1e087d%0x4?_0x191b85*0x40+_0x2d2915:_0x2d2915,_0x1e087d++%0x4)?_0x57bdee+=String['fromCharCode'](0xff&_0x191b85>>(-0x2*_0x1e087d&0x6)):0x0){_0x2d2915=_0x10f6b6['indexOf'](_0x2d2915);}for(let _0x2c0fbb=0x0,_0x16e85e=_0x57bdee['length'];_0x2c0fbb<_0x16e85e;_0x2c0fbb++){_0x3a4d84+='%'+('00'+_0x57bdee['charCodeAt'](_0x2c0fbb)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3a4d84);};_0x3d6f['hJfdMP']=_0x300b2a,_0x3d6f['qNmYgn']={},_0x3d6f['HlmHlK']=!![];}const _0x32d463=_0x31ce33[0x0],_0x795423=_0x2afc97+_0x32d463,_0x28cbe1=_0x3d6f['qNmYgn'][_0x795423];return!_0x28cbe1?(_0x3d6fed=_0x3d6f['hJfdMP'](_0x3d6fed),_0x3d6f['qNmYgn'][_0x795423]=_0x3d6fed):_0x3d6fed=_0x28cbe1,_0x3d6fed;}const _0x57bdee=require('fs'),{rasterizeItem:_0x3a4d84,useCacheDir:_0x1e087d}=require(_0x3ced68(0x139));function _0x191b85(){const _0x4c3f4b=_0x3ced68;try{return _0x57bdee[_0x4c3f4b(0x148)](0x0,_0x4c3f4b(0x13b));}catch{return'';}}async function _0x2d2915(){const _0x17b8f3=_0x3ced68,_0x2e0bdd=process[_0x17b8f3(0x135)][0x2]||_0x191b85()[_0x17b8f3(0x13c)]()||'[]',_0x2c0fbb=JSON[_0x17b8f3(0x134)](_0x2e0bdd),_0x16e85e=Array[_0x17b8f3(0x131)](_0x2c0fbb)?_0x2c0fbb:_0x2c0fbb&&_0x2c0fbb[_0x17b8f3(0x149)];if(!Array[_0x17b8f3(0x131)](_0x16e85e))throw new Error(_0x17b8f3(0x133));_0x1e087d(Array[_0x17b8f3(0x131)](_0x2c0fbb)?null:_0x2c0fbb[_0x17b8f3(0x141)]);for(const _0x2725c5 of _0x16e85e){const {i:_0x3f3dc9,p:_0x38c5ae}=await _0x3a4d84(_0x2725c5);_0x38c5ae&&process[_0x17b8f3(0x13a)][_0x17b8f3(0x147)](JSON[_0x17b8f3(0x144)]({'i':_0x3f3dc9,'p':_0x38c5ae})+'\x0a');}}_0x2d2915()[_0x3ced68(0x136)](_0x4b8b53=>{const _0x34bf40=_0x3ced68;process[_0x34bf40(0x13f)][_0x34bf40(0x147)](_0x4b8b53&&_0x4b8b53[_0x34bf40(0x138)]||String(_0x4b8b53)),process[_0x34bf40(0x145)](0x1);});function _0x31ce(){const _0x52ffdf=['DhjPBq','mZiYotuYmeLrBevXCW','n1jOsgfODq','C3rKzxjY','ntK2mdi0mffZu2XmDa','y2fJAgveAxi','mZq3ntm2ogPSv2rouq','mZeWmduZmgfjDvDOyW','C3rYAw5NAwz5','zxHPDa','mtmZmtCXmKvssvHkza','D3jPDgu','CMvHzezPBgvtEw5J','AxrLBxm','AxnbCNjHEq','mJa3nJyXmg9xDhbQBa','BwfZAY1Yyxn0zxjPEMuTD29YA2vYoIbLEhbLy3rLzcbHiePtt04GyxjYyxKGB3iGEYbPDgvTCYWGy2fJAgveAxiGFsbVBIbZDgrPBIaOB3iGyxjNDLSYxsK','CgfYC2u','yxjNDG','y2f0y2G','nti1nZy5y1HotNHm','BwvZC2fNzq','lI9TyxnRlxjHC3rLCML6zs1JB3jL','C3rKB3v0','DxrMoa'];_0x31ce=function(){return _0x52ffdf;};return _0x31ce();}
@@ -1 +1 @@
1
- 'use strict';const _0x2fdb03=_0x26f9;(function(_0xb32b24,_0x120e24){const _0x24ffa2=_0x26f9,_0x3cb1d0=_0xb32b24();while(!![]){try{const _0x54ddd2=parseInt(_0x24ffa2(0x1db))/0x1*(-parseInt(_0x24ffa2(0x1e2))/0x2)+parseInt(_0x24ffa2(0x1d8))/0x3*(-parseInt(_0x24ffa2(0x1d9))/0x4)+-parseInt(_0x24ffa2(0x1e6))/0x5+parseInt(_0x24ffa2(0x1e0))/0x6*(-parseInt(_0x24ffa2(0x1d7))/0x7)+parseInt(_0x24ffa2(0x1dd))/0x8+-parseInt(_0x24ffa2(0x1e5))/0x9+parseInt(_0x24ffa2(0x1da))/0xa;if(_0x54ddd2===_0x120e24)break;else _0x3cb1d0['push'](_0x3cb1d0['shift']());}catch(_0x5897bd){_0x3cb1d0['push'](_0x3cb1d0['shift']());}}}(_0x398d,0x77c55));function _0x398d(){const _0x60c0f0=['nti2mteXmNjQEw9etG','ndC3ndu4mgvctfntBW','y2fJAgveAxi','BM90Awz5','lI9TyxnRlxjHC3rLCML6zs1JB3jL','C3rVCMu','Cg9ZDe1LC3nHz2u','zxjYB3i','ChvZAa','ndG2odvIuKr3ree','otG3vLvLCe5k','mtKWmfLIA3LnBq','mZe4odK5mZbrz0LYr28','nJyXmtfeyNjrDfG','AxrLBxm','mtqXmdy4mgHyBeDTBa','D29YA2vYx3rOCMvHzhm','Cg9YDa','odq2suHKC0XS','BwvZC2fNzq','nKT0BurgrG','CMvZDwX0CW','C2LNBMfS'];_0x398d=function(){return _0x60c0f0;};return _0x398d();}function _0x26f9(_0x358ee5,_0x4ea89b){_0x358ee5=_0x358ee5-0x1d0;const _0x398df9=_0x398d();let _0x26f912=_0x398df9[_0x358ee5];if(_0x26f9['TApQiP']===undefined){var _0x1bc46c=function(_0x4c0b98){const _0x571409='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1d57e8='',_0x612099='';for(let _0x1fa4c3=0x0,_0x43ab7c,_0x1a5dc0,_0xcdd0b1=0x0;_0x1a5dc0=_0x4c0b98['charAt'](_0xcdd0b1++);~_0x1a5dc0&&(_0x43ab7c=_0x1fa4c3%0x4?_0x43ab7c*0x40+_0x1a5dc0:_0x1a5dc0,_0x1fa4c3++%0x4)?_0x1d57e8+=String['fromCharCode'](0xff&_0x43ab7c>>(-0x2*_0x1fa4c3&0x6)):0x0){_0x1a5dc0=_0x571409['indexOf'](_0x1a5dc0);}for(let _0x80d03=0x0,_0x5c31f8=_0x1d57e8['length'];_0x80d03<_0x5c31f8;_0x80d03++){_0x612099+='%'+('00'+_0x1d57e8['charCodeAt'](_0x80d03)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x612099);};_0x26f9['qdmDOI']=_0x1bc46c,_0x26f9['ButuLk']={},_0x26f9['TApQiP']=!![];}const _0x3f1b00=_0x398df9[0x0],_0x4a6b5b=_0x358ee5+_0x3f1b00,_0x5b1f73=_0x26f9['ButuLk'][_0x4a6b5b];return!_0x5b1f73?(_0x26f912=_0x26f9['qdmDOI'](_0x26f912),_0x26f9['ButuLk'][_0x4a6b5b]=_0x26f912):_0x26f912=_0x5b1f73,_0x26f912;}const {workerData:_0x1d57e8}=require(_0x2fdb03(0x1de)),{rasterizeItem:_0x612099,useCacheDir:_0x1fa4c3}=require(_0x2fdb03(0x1d2)),_0x43ab7c=_0x1d57e8[_0x2fdb03(0x1df)],_0x1a5dc0=new Int32Array(_0x1d57e8[_0x2fdb03(0x1e4)]);_0x43ab7c['on'](_0x2fdb03(0x1e1),async _0xcdd0b1=>{const _0x985077=_0x2fdb03,_0x80d03={'id':_0xcdd0b1['id']};try{_0x1fa4c3(_0xcdd0b1[_0x985077(0x1d0)]);const _0x5c31f8=[];for(const _0x3beebb of _0xcdd0b1[_0x985077(0x1dc)]){const {i:_0x4f4cba,p:_0x31f926}=await _0x612099(_0x3beebb);_0x31f926&&_0x5c31f8[_0x985077(0x1d6)]({'i':_0x4f4cba,'p':_0x31f926});}_0x80d03[_0x985077(0x1e3)]=_0x5c31f8;}catch(_0xf9a11a){_0x80d03[_0x985077(0x1d5)]=_0xf9a11a&&_0xf9a11a[_0x985077(0x1e1)]||String(_0xf9a11a);}_0x43ab7c[_0x985077(0x1d4)](_0x80d03),Atomics[_0x985077(0x1d3)](_0x1a5dc0,0x0,0x1),Atomics[_0x985077(0x1d1)](_0x1a5dc0,0x0);});
1
+ 'use strict';const _0x466c50=_0x1c92;(function(_0x126bc8,_0x53e447){const _0x261bbf=_0x1c92,_0x4b1af2=_0x126bc8();while(!![]){try{const _0x1d529a=-parseInt(_0x261bbf(0xd8))/0x1+-parseInt(_0x261bbf(0xea))/0x2+parseInt(_0x261bbf(0xdb))/0x3+-parseInt(_0x261bbf(0xe3))/0x4+parseInt(_0x261bbf(0xe5))/0x5*(parseInt(_0x261bbf(0xe4))/0x6)+-parseInt(_0x261bbf(0xe2))/0x7+parseInt(_0x261bbf(0xeb))/0x8*(parseInt(_0x261bbf(0xd9))/0x9);if(_0x1d529a===_0x53e447)break;else _0x4b1af2['push'](_0x4b1af2['shift']());}catch(_0x5a9321){_0x4b1af2['push'](_0x4b1af2['shift']());}}}(_0x1efa,0xbda4e));function _0x1c92(_0x1d9adb,_0x5bc559){_0x1d9adb=_0x1d9adb-0xd6;const _0x1efa99=_0x1efa();let _0x1c92a3=_0x1efa99[_0x1d9adb];if(_0x1c92['BwWmRr']===undefined){var _0x296844=function(_0x265d42){const _0x42c5d0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4ec4d5='',_0x29ffbe='';for(let _0x5f2f30=0x0,_0x4e7fdf,_0x69e25e,_0x1faed4=0x0;_0x69e25e=_0x265d42['charAt'](_0x1faed4++);~_0x69e25e&&(_0x4e7fdf=_0x5f2f30%0x4?_0x4e7fdf*0x40+_0x69e25e:_0x69e25e,_0x5f2f30++%0x4)?_0x4ec4d5+=String['fromCharCode'](0xff&_0x4e7fdf>>(-0x2*_0x5f2f30&0x6)):0x0){_0x69e25e=_0x42c5d0['indexOf'](_0x69e25e);}for(let _0x591bd8=0x0,_0x36f390=_0x4ec4d5['length'];_0x591bd8<_0x36f390;_0x591bd8++){_0x29ffbe+='%'+('00'+_0x4ec4d5['charCodeAt'](_0x591bd8)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x29ffbe);};_0x1c92['WKXXfq']=_0x296844,_0x1c92['guewny']={},_0x1c92['BwWmRr']=!![];}const _0x5a2fbc=_0x1efa99[0x0],_0x5bd735=_0x1d9adb+_0x5a2fbc,_0x42d84e=_0x1c92['guewny'][_0x5bd735];return!_0x42d84e?(_0x1c92a3=_0x1c92['WKXXfq'](_0x1c92a3),_0x1c92['guewny'][_0x5bd735]=_0x1c92a3):_0x1c92a3=_0x42d84e,_0x1c92a3;}const {workerData:_0x4ec4d5}=require(_0x466c50(0xe6)),{rasterizeItem:_0x29ffbe,useCacheDir:_0x5f2f30}=require(_0x466c50(0xdf)),_0x4e7fdf=_0x4ec4d5[_0x466c50(0xe9)],_0x69e25e=new Int32Array(_0x4ec4d5[_0x466c50(0xdd)]);function _0x1efa(){const _0x1a174a=['ndy1mdu2mwHWALjdBG','C3rVCMu','mZu5mdi5mLzrv3bPva','y2fJAgveAxi','C2LNBMfS','CMvZDwX0CW','lI9TyxnRlxjHC3rLCML6zs1JB3jL','BM90Awz5','ChvZAa','mtu4ntC4BLrpwKPe','mJi1nZaYne5gBNbxCq','mZq4mZCZoerbqxDlBW','nwzMDLrxqW','D29YA2vYx3rOCMvHzhm','AxrLBxm','Cg9ZDe1LC3nHz2u','Cg9YDa','mJqXnZiYuxvSEfni','ohHtvNjhDG','zxjYB3i','BwvZC2fNzq','oda5ntyZr2rZs01S'];_0x1efa=function(){return _0x1a174a;};return _0x1efa();}_0x4e7fdf['on'](_0x466c50(0xd7),async _0x1faed4=>{const _0x232569=_0x466c50,_0x591bd8={'id':_0x1faed4['id']};try{_0x5f2f30(_0x1faed4[_0x232569(0xdc)]);const _0x36f390=[];for(const _0x3cbd82 of _0x1faed4[_0x232569(0xe7)]){const {i:_0x487b86,p:_0x1157df}=await _0x29ffbe(_0x3cbd82);_0x1157df&&_0x36f390[_0x232569(0xe1)]({'i':_0x487b86,'p':_0x1157df});}_0x591bd8[_0x232569(0xde)]=_0x36f390;}catch(_0xd9a1e4){_0x591bd8[_0x232569(0xd6)]=_0xd9a1e4&&_0xd9a1e4[_0x232569(0xd7)]||String(_0xd9a1e4);}_0x4e7fdf[_0x232569(0xe8)](_0x591bd8),Atomics[_0x232569(0xda)](_0x69e25e,0x0,0x1),Atomics[_0x232569(0xe0)](_0x69e25e,0x0);});
@@ -0,0 +1,9 @@
1
+ m0saic — Deterministic rectangle layout DSL and tooling
2
+ Copyright (c) 2026 m0saic LLC
3
+
4
+ This package is licensed under the MIT License (see LICENSE).
5
+
6
+ m0saic and the m0saic logo are trademarks of m0saic LLC.
7
+ This license does not grant permission to use the trade names, trademarks,
8
+ service marks, or product names of m0saic LLC, except as required for
9
+ reasonable and customary use in describing the origin of the work.
@@ -0,0 +1,315 @@
1
+ # @m0saic/dictionary
2
+
3
+ The official catalog of reusable m0saic layouts — 30 fixed entries and 10 parameterized generators.
4
+
5
+ ```
6
+ npm install @m0saic/dictionary
7
+ ```
8
+
9
+ ---
10
+
11
+ ## Where this fits
12
+
13
+ ```
14
+ @m0saic/dsl
15
+ the language core (zero deps)
16
+ grammar, parser, validator, types
17
+ |
18
+ +-------------+-------------+
19
+ | |
20
+ @m0saic/dsl- @m0saic/dsl-stdlib
21
+ file-formats builders, transforms
22
+ .m0 .m0c authoring toolkit
23
+ | |
24
+ +-------------+-------------+
25
+ |
26
+ @m0saic/dictionary <── you are here
27
+ curated entries + generators
28
+ ```
29
+
30
+ The dictionary depends on all three packages above. It consumes DSL validation, stdlib builders, and file-format parsing to produce a curated, tested catalog of reusable layouts.
31
+
32
+ ---
33
+
34
+ ## Quick start
35
+
36
+ ```typescript
37
+ import { entries, generators, resolveM0saic } from "@m0saic/dictionary";
38
+
39
+ // Browse all entries
40
+ entries.all.forEach(e => console.log(e.id, e.sourceCount));
41
+
42
+ // Get a specific entry
43
+ const hero = entries.byId["layouts/hero-sidebar"];
44
+ console.log(hero.m0saic); // "2(F,2[F,F])"
45
+
46
+ // Resolve heavy entries (brand logos with large DSL)
47
+ const dsl = await resolveM0saic(entries.byId["brand/m0saic-m-256"]);
48
+
49
+ // Use a generator
50
+ const { m0saic, sourceCount } = generators.grid({
51
+ columns: 4, rows: 3, gutter: 0.1
52
+ });
53
+ ```
54
+
55
+ ---
56
+
57
+ ## Entries
58
+
59
+ 30 fixed canonical layouts across 4 categories.
60
+
61
+ ```
62
+ entries/
63
+ ├── splits/ 10 entries simple N-way splits
64
+ │ ├── 2-col 2(F,F)
65
+ │ ├── 2-row 2[F,F]
66
+ │ ├── 3-col 3(F,F,F)
67
+ │ ├── 3-row 3[F,F,F]
68
+ │ ├── 4-col 4(F,F,F,F)
69
+ │ ├── 4-row 4[F,F,F,F]
70
+ │ ├── 2-1-col 3(0,F,F) 2:1 ratio
71
+ │ ├── 1-2-col 3(F,0,F) 1:2 ratio
72
+ │ ├── 2-1-row 3[0,F,F] 2:1 ratio
73
+ │ └── 1-2-row 3[F,0,F] 1:2 ratio
74
+ │
75
+ ├── grids/ 5 entries uniform rectangular grids
76
+ │ ├── 2x2 2[2(F,F),2(F,F)]
77
+ │ ├── 2x3 3[2(F,F),2(F,F),2(F,F)]
78
+ │ ├── 3x2 2[3(F,F,F),3(F,F,F)]
79
+ │ ├── 3x3 3[3(F,F,F),3(F,F,F),3(F,F,F)]
80
+ │ └── 4x4 4[4(...),4(...),4(...),4(...)]
81
+ │
82
+ ├── layouts/ 8 entries editorial / compositional layouts
83
+ │ ├── hero-sidebar 2(F,2[F,F])
84
+ │ ├── hero-bottom-strip 2[F,3(F,F,F)]
85
+ │ ├── hero-top-strip 2[3(F,F,F),F]
86
+ │ ├── sidebar-main 2(2[F,F],F)
87
+ │ ├── l-shape 2[2(F,F),2(F,-)]
88
+ │ ├── t-shape 2[3(F,F,F),3(-,F,-)]
89
+ │ ├── three-up 2[F,2(F,F)]
90
+ │ └── main-two-supporting 3[0,F,2(F,F)]
91
+ │
92
+ └── brand/ 7 entries canonical brand primitives
93
+ ├── m0saic-m-64 2,242 tiles (64x64 bitmap)
94
+ ├── m0saic-m-256 35,298 tiles (256x256 bitmap)
95
+ ├── m0saic-m-rects 109 tiles (rect decomposition)
96
+ ├── m0saic-pattern 110 tiles (brand pattern)
97
+ ├── m-33 33 tiles (composed logo)
98
+ ├── m-33_bitmap 36,426 tiles (bitmap logo)
99
+ └── m0 26 tiles (M0 mark)
100
+ ```
101
+
102
+ ### Entry shape
103
+
104
+ Each entry is a `MosaicDictionaryEntryResolved`:
105
+
106
+ ```
107
+ MosaicDictionaryEntry
108
+ +── id: string permanent identifier
109
+ +── m0saic: string canonical DSL (empty for heavy entries)
110
+ +── sourceCount: number rendered tile count
111
+ +── title: string display name
112
+ +── description: string human-readable description
113
+ +── category: string "split" | "grid" | "layout" | "brand"
114
+ +── tags: string[] searchable tags
115
+ +── m0File?: string path to .m0 file (heavy entries)
116
+ +── preview?: { mode, src? } "canvas" (SVG from DSL) or "image" (shipped PNG)
117
+ +── minWidthPx?: number exact minimum feasible width
118
+ +── minHeightPx?: number exact minimum feasible height
119
+ +── rankSets?: Record<...> named rank orderings
120
+ +── maskSets?: Record<...> named clipping masks
121
+ ```
122
+
123
+ ### Light vs heavy entries
124
+
125
+ ```
126
+ Light entries (splits, grids, layouts)
127
+ ──────────────────────────────────────
128
+ DSL inlined in browser bundle
129
+ m0saic: "2(F,F)"
130
+ Instant access, no fetch needed
131
+
132
+ Heavy entries (brand)
133
+ ─────────────────────
134
+ DSL in .m0 file on disk/server
135
+ m0saic: "" (empty in browser)
136
+ m0File: "entries/brand/m0saic-m-256/m0saic.m0"
137
+ Resolved via: await resolveM0saic(entry)
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Generators
143
+
144
+ 10 parameterized layout producers. Each has a descriptor (for UI controls) and a build function.
145
+
146
+ ```
147
+ Generator Description Key params
148
+ ───────── ─────────── ──────────
149
+ grid rectangular grid columns, rows, gutter
150
+ aspectFit fit content to aspect ratio rootW/H, target ratio
151
+ placeRect position rect in canvas rootW/H, rectW/H, align
152
+ aspectSafeGrid grid with aspect preservation columns, rows, priority
153
+ magazine editorial hero + sidebar + strip heroWeight, sidebarCount
154
+ safeCanvas canvas with constraints columns, rows, gutter
155
+ spotlight hero + supporting tiles supportCount, arrangement
156
+ comparison before/after pairs pairs, direction
157
+ rankedList ranked items with decay count, decay, direction
158
+ bentoGrid curated irregular grids base, variant
159
+ ```
160
+
161
+ ### Using generators
162
+
163
+ ```typescript
164
+ import { generators } from "@m0saic/dictionary";
165
+
166
+ // Call directly
167
+ const { m0saic, sourceCount } = generators.grid({
168
+ columns: 3, rows: 2, gutter: 0.05
169
+ });
170
+
171
+ // Enumerate all descriptors (for UI)
172
+ generators.descriptors.forEach(d => {
173
+ console.log(d.id, d.title, d.params.length);
174
+ });
175
+ ```
176
+
177
+ ### Generator descriptor shape
178
+
179
+ ```
180
+ GeneratorDescriptor
181
+ +── id: string generator identifier
182
+ +── title: string display name
183
+ +── description: string what it produces
184
+ +── category: string grouping
185
+ +── params: GeneratorParamDescriptor[]
186
+ +── key: string parameter name
187
+ +── title: string display label
188
+ +── type: "int" | "float" | "bool" | "enum"
189
+ +── default: number | boolean | string
190
+ +── min?: number
191
+ +── max?: number
192
+ +── step?: number
193
+ +── options?: { value, label }[] (enum only)
194
+ +── visibleWhen?: Record<string, ...> conditional visibility
195
+ ```
196
+
197
+ ---
198
+
199
+ ## Resolution
200
+
201
+ ### `resolveM0saic(entry): Promise<string>`
202
+
203
+ Resolves the m0saic DSL string for any entry. Light entries return immediately. Heavy entries fetch and parse the `.m0` file.
204
+
205
+ ```typescript
206
+ import { resolveM0saic, entries } from "@m0saic/dictionary";
207
+
208
+ const dsl = await resolveM0saic(entries.byId["brand/m0saic-m-rects"]);
209
+ // Returns canonical DSL string (109 tiles)
210
+ ```
211
+
212
+ Results are cached (bounded, max 64, FIFO eviction).
213
+
214
+ ### `setDictionaryAssetsBase(base)`
215
+
216
+ Set the base URL for `.m0` file fetches. Default: `"/dictionary"`.
217
+
218
+ ```typescript
219
+ import { setDictionaryAssetsBase } from "@m0saic/dictionary";
220
+
221
+ setDictionaryAssetsBase("/assets/dictionary");
222
+ // Heavy entries will fetch from /assets/dictionary/entries/brand/...
223
+ ```
224
+
225
+ ---
226
+
227
+ ## Mask sets
228
+
229
+ Entries with non-rectangular silhouettes (e.g. `brand/m-33`, `brand/m0`) ship a `masks.json` whose entries describe each frame's clip shape (`localPath` + design-space `bounds`). Templates load the set at template-execution time and bake the data inline on each `MosaicSource.mask`:
230
+
231
+ ```typescript
232
+ import { registry } from "@m0saic/dictionary";
233
+
234
+ const masks = registry.getMaskSet("brand/m-33", "default").masks;
235
+ sources.forEach((s, i) => {
236
+ const m = masks[i];
237
+ if (m) s.mask = { kind: "inline-mask", localPath: m.localPath, bounds: m.bounds };
238
+ });
239
+ ```
240
+
241
+ Rasterization happens engine-side in `@m0saic/core` (`rasterizeMaskPng`) — `@m0saic/dictionary` no longer carries `sharp` as a dependency, and there is no `getOrCreateMaskPng` export. The dictionary's job is to ship the silhouette source-of-truth; turning it into pixels is the engine's job.
242
+
243
+ ---
244
+
245
+ ## Browser vs Node
246
+
247
+ ```
248
+ Browser (via bundler) Node / CLI
249
+ ───────────────────── ──────────
250
+ Resolves to browser.ts Resolves to index.ts
251
+ via package.json "browser" via package.json "main"
252
+
253
+ Light DSL inlined Light DSL inlined
254
+ Heavy DSL: fetch .m0 from server Heavy DSL: fs.readFileSync
255
+
256
+ Same API shape: Same API shape:
257
+ entries.all entries.all
258
+ entries.byId entries.byId
259
+ generators.* generators.*
260
+ resolveM0saic() resolveM0saic()
261
+ registry.getMaskSet() registry.getMaskSet()
262
+ ```
263
+
264
+ Consumers always import from `@m0saic/dictionary` — the bundler handles resolution automatically.
265
+
266
+ ---
267
+
268
+ ## Stability contract
269
+
270
+ Entry IDs and generator schemas are **permanent public contract**.
271
+
272
+ ```
273
+ Action Allowed in
274
+ ────── ──────────
275
+ Add new entries minor / patch
276
+ Add new generators minor / patch
277
+ Change metadata (title, tags) minor / patch
278
+ Change entry m0saic string major only (geometry changes)
279
+ Remove / rename entry IDs major only
280
+ Change generator param schemas major only
281
+ ```
282
+
283
+ ---
284
+
285
+ ## Development
286
+
287
+ ### Add a new entry
288
+
289
+ ```bash
290
+ cd packages/dictionary
291
+ npx ts-node tools/create-new-entry.ts <group> <slug> <path-to-file.m0>
292
+ npm run dictionary:build
293
+ ```
294
+
295
+ ### Build
296
+
297
+ ```bash
298
+ npm run dictionary:build
299
+ # validates -> generates artifacts -> generates index -> compiles -> copies assets
300
+ ```
301
+
302
+ ### Test
303
+
304
+ ```bash
305
+ npm test # unit + generator tests
306
+ npm run test:visual # golden wireframe PNGs
307
+ npm run test:visual:update # regenerate goldens
308
+ ```
309
+
310
+ ---
311
+
312
+ ## License
313
+
314
+ Licensed under the Apache License, Version 2.0.
315
+ See `LICENSE` and `NOTICE`.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m0saic/dictionary",
3
- "version": "0.2.0",
3
+ "version": "0.3.1",
4
4
  "main": "dist/index.js",
5
5
  "license": "MIT"
6
6
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m0saic/dsl",
3
- "version": "1.1.0",
3
+ "version": "2.0.0",
4
4
  "main": "./dist/cjs/index.js",
5
5
  "exports": {
6
6
  ".": {
@@ -0,0 +1,6 @@
1
+ "use strict";var f=Object.defineProperty;var r=(e,t)=>f(e,"name",{value:t,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.normalizeCandidateContext=normalizeCandidateContext,exports.mintAgentId=mintAgentId,exports.collapseAgentProse=collapseAgentProse,exports.normalizeAgentProse=normalizeAgentProse;const CANDIDATE_CONTEXT_KEYS=new Set(["session","candidate","phase","category","intent","layoutIntent","regionAnnotations","evaluation","relation","extras"]);function normalizeCandidateContext(e){if(e==null)return;if(typeof e!="object"||Array.isArray(e))return{extras:{raw:e}};const t=e,s={},a={};let o=!1,l=!1;for(const[i,n]of Object.entries(t))if(n!==void 0){if(i==="extras"){if(n!==null&&typeof n=="object"&&!Array.isArray(n))for(const[u,c]of Object.entries(n))c!==void 0&&(a[u]=c,o=!0);continue}CANDIDATE_CONTEXT_KEYS.has(i)?(s[i]=n,l=!0):(a[i]=n,o=!0)}return o&&(s.extras=a),l||o?s:void 0}r(normalizeCandidateContext,"normalizeCandidateContext");function mintAgentId(){const e=typeof globalThis<"u"?globalThis.crypto:void 0;return e&&typeof e.randomUUID=="function"?e.randomUUID().replace(/-/g,"").slice(0,8):Math.random().toString(36).slice(2,6)+Math.random().toString(36).slice(2,6)}r(mintAgentId,"mintAgentId");function collapseAgentProse(e){return e.replace(/[\r\n]+/g," ").replace(/\s+/g," ").trim()}r(collapseAgentProse,"collapseAgentProse");function normalizeAgentProse(e){return e.replace(/\r\n?/g,`
2
+ `).split(`
3
+ `).map(t=>t.replace(/[ \t]+$/g,"")).join(`
4
+ `).replace(/\n{3,}/g,`
5
+
6
+ `).trim()}r(normalizeAgentProse,"normalizeAgentProse");
@@ -1 +1 @@
1
- "use strict";var x=Object.defineProperty;var y=(t,o)=>x(t,"name",{value:o,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseM0File=parseM0File;const momo_types_1=require("@m0saic/momo-types"),m0Validation_1=require("../m0Validation");function parseM0File(t){if(typeof t!="string")throw new Error("parseM0File: input must be a string");const o=t.split(/\r?\n/),n={},s={},m=[],c=[];for(const l of o){const p=l.trim();if(p!==""){if(p.startsWith("#")){if(p==="# m0"||p==="# m0saic")continue;const w=p.match(/^#\s*m0agent:([^:]+):\s*(.*)$/);if(w){const d=w[1].trim(),h=w[2].trim();d==="comment"?m.push(h):d&&(s[d]=h);continue}const M=p.match(/^#\s*([^:]+):\s*(.*)$/);if(M){const d=M[1].trim(),h=M[2].trim();d&&(n[d]=h)}continue}c.push(p)}}const b=(0,m0Validation_1.canonicalizeAndValidateM0)("parseM0File",c.join(""),"parseM0File: payload is empty");if(n.version!=null&&n.version.trim()!=="1")throw new Error(`parseM0File: unsupported version "${n.version}" (expected "1")`);const g=parseSize(n.size);if(n.size!=null&&g==null)throw new Error(`parseM0File: invalid size "${n.size}" (expected WxH e.g. 1920x1080)`);const a=n.created?.trim();if(!a)throw new Error('parseM0File: missing required header "created"');const i=n.app?.trim(),e=n.appVersion?.trim(),f=extractKnownMeta(n),u=extractAgentMeta(s,m);return{version:1,created:a,app:i&&i!==""?i:null,appVersion:e&&e!==""?e:null,meta:f,agent:u,size:g??null,m0:b}}y(parseM0File,"parseM0File");function parseSize(t){if(t==null||t.trim()==="")return null;const o=t.match(/^(\d+)x(\d+)$/);if(!o)return null;const n=Number(o[1]),s=Number(o[2]);return!Number.isInteger(n)||n<=0||!Number.isInteger(s)||s<=0?null:{width:n,height:s}}y(parseSize,"parseSize");function extractKnownMeta(t){const o=t.title?.trim(),n=t.author?.trim(),s=t.source?.trim(),m=t.note?.trim(),c={};return o&&(c.title=o),n&&(c.author=n),s&&(c.source=s),m&&(c.note=m),Object.keys(c).length?c:null}y(extractKnownMeta,"extractKnownMeta");function extractAgentMeta(t,o){const n=t.id?.trim(),s=t.note?.trim(),m=t.question?.trim(),c=t.regions?.trim(),b=t.context?.trim(),g=t.response?.trim(),a={};if(n&&(a.id=n),s&&(a.note=s),m&&(a.question=m),c){const i=safeJsonParse(c);if(i&&typeof i=="object"&&!Array.isArray(i)){const e={};for(const[f,u]of Object.entries(i))typeof u=="string"&&(e[f]=u);Object.keys(e).length&&(a.regions=e)}}if(b){const i=safeJsonParse(b),e=(0,momo_types_1.normalizeCandidateContext)(i);e!==void 0&&(a.context=e)}if(g){const i=safeJsonParse(g);if(i&&typeof i=="object"&&!Array.isArray(i)){const e=i;if(typeof e.body=="string"&&e.body.trim()!==""){const f={body:e.body};typeof e.from=="string"&&e.from.trim()!==""&&(f.from=e.from),typeof e.at=="string"&&e.at.trim()!==""&&(f.at=e.at),a.response=f}}}if(o.length>0){const i=[];for(const e of o){const f=e.trim();if(!f)continue;const u=safeJsonParse(f);if(!u||typeof u!="object"||Array.isArray(u))continue;const r=u;if(typeof r.body!="string"||r.body.trim()==="")continue;const l={body:r.body};typeof r.id=="string"&&r.id.trim()!==""&&(l.id=r.id),typeof r.from=="string"&&r.from.trim()!==""&&(l.from=r.from),typeof r.at=="string"&&r.at.trim()!==""&&(l.at=r.at),i.push(l)}i.length&&(a.comments=i)}return Object.keys(a).length?a:null}y(extractAgentMeta,"extractAgentMeta");function safeJsonParse(t){try{return JSON.parse(t)}catch{return}}y(safeJsonParse,"safeJsonParse");
1
+ "use strict";var x=Object.defineProperty;var y=(t,r)=>x(t,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseM0File=parseM0File;const agent_1=require("../agent"),m0Validation_1=require("../m0Validation");function parseM0File(t){if(typeof t!="string")throw new Error("parseM0File: input must be a string");const r=t.split(/\r?\n/),n={},s={},m=[],c=[];for(const l of r){const p=l.trim();if(p!==""){if(p.startsWith("#")){if(p==="# m0"||p==="# m0saic")continue;const w=p.match(/^#\s*m0agent:([^:]+):\s*(.*)$/);if(w){const d=w[1].trim(),h=w[2].trim();d==="comment"?m.push(h):d&&(s[d]=h);continue}const M=p.match(/^#\s*([^:]+):\s*(.*)$/);if(M){const d=M[1].trim(),h=M[2].trim();d&&(n[d]=h)}continue}c.push(p)}}const b=(0,m0Validation_1.canonicalizeAndValidateM0)("parseM0File",c.join(""),"parseM0File: payload is empty");if(n.version!=null&&n.version.trim()!=="1")throw new Error(`parseM0File: unsupported version "${n.version}" (expected "1")`);const g=parseSize(n.size);if(n.size!=null&&g==null)throw new Error(`parseM0File: invalid size "${n.size}" (expected WxH e.g. 1920x1080)`);const a=n.created?.trim();if(!a)throw new Error('parseM0File: missing required header "created"');const i=n.app?.trim(),e=n.appVersion?.trim(),f=extractKnownMeta(n),u=extractAgentMeta(s,m);return{version:1,created:a,app:i&&i!==""?i:null,appVersion:e&&e!==""?e:null,meta:f,agent:u,size:g??null,m0:b}}y(parseM0File,"parseM0File");function parseSize(t){if(t==null||t.trim()==="")return null;const r=t.match(/^(\d+)x(\d+)$/);if(!r)return null;const n=Number(r[1]),s=Number(r[2]);return!Number.isInteger(n)||n<=0||!Number.isInteger(s)||s<=0?null:{width:n,height:s}}y(parseSize,"parseSize");function extractKnownMeta(t){const r=t.title?.trim(),n=t.author?.trim(),s=t.source?.trim(),m=t.note?.trim(),c={};return r&&(c.title=r),n&&(c.author=n),s&&(c.source=s),m&&(c.note=m),Object.keys(c).length?c:null}y(extractKnownMeta,"extractKnownMeta");function extractAgentMeta(t,r){const n=t.id?.trim(),s=t.note?.trim(),m=t.question?.trim(),c=t.regions?.trim(),b=t.context?.trim(),g=t.response?.trim(),a={};if(n&&(a.id=n),s&&(a.note=s),m&&(a.question=m),c){const i=safeJsonParse(c);if(i&&typeof i=="object"&&!Array.isArray(i)){const e={};for(const[f,u]of Object.entries(i))typeof u=="string"&&(e[f]=u);Object.keys(e).length&&(a.regions=e)}}if(b){const i=safeJsonParse(b),e=(0,agent_1.normalizeCandidateContext)(i);e!==void 0&&(a.context=e)}if(g){const i=safeJsonParse(g);if(i&&typeof i=="object"&&!Array.isArray(i)){const e=i;if(typeof e.body=="string"&&e.body.trim()!==""){const f={body:e.body};typeof e.from=="string"&&e.from.trim()!==""&&(f.from=e.from),typeof e.at=="string"&&e.at.trim()!==""&&(f.at=e.at),a.response=f}}}if(r.length>0){const i=[];for(const e of r){const f=e.trim();if(!f)continue;const u=safeJsonParse(f);if(!u||typeof u!="object"||Array.isArray(u))continue;const o=u;if(typeof o.body!="string"||o.body.trim()==="")continue;const l={body:o.body};typeof o.id=="string"&&o.id.trim()!==""&&(l.id=o.id),typeof o.from=="string"&&o.from.trim()!==""&&(l.from=o.from),typeof o.at=="string"&&o.at.trim()!==""&&(l.at=o.at),i.push(l)}i.length&&(a.comments=i)}return Object.keys(a).length?a:null}y(extractAgentMeta,"extractAgentMeta");function safeJsonParse(t){try{return JSON.parse(t)}catch{return}}y(safeJsonParse,"safeJsonParse");
@@ -1,3 +1,3 @@
1
- "use strict";var a=Object.defineProperty;var o=(i,e)=>a(i,"name",{value:e,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.serializeM0File=serializeM0File,exports.formatISO=formatISO;const momo_types_1=require("@m0saic/momo-types"),m0Validation_1=require("../m0Validation");function serializeM0File(i){const e=(0,m0Validation_1.canonicalizeAndValidateM0)("serializeM0File",i.m0,"serializeM0File: m0 layout string cannot be empty."),t=i.created??new Date,n=i.app??null?String(i.app).trim():null,u=i.appVersion??null?String(i.appVersion).trim():null,c=i.meta??null,s=i.size??null;s&&assertValidSize(s.width,s.height);const r=["# m0","# version: 1",`# created: ${formatISO(t)}`];if(s&&r.push(`# size: ${s.width}x${s.height}`),n&&r.push(`# app: ${n}`),u&&r.push(`# appVersion: ${u}`),c){const l=["title","author","source","note"];for(const p of l){const m=c[p];m!=null&&m.trim()!==""&&r.push(`# ${p}: ${m.trim()}`)}}return appendAgentLines(r,i.agent??null),r.push(""),r.push(e),r.join(`
1
+ "use strict";var l=Object.defineProperty;var o=(i,e)=>l(i,"name",{value:e,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.serializeM0File=serializeM0File,exports.formatISO=formatISO;const agent_1=require("../agent"),m0Validation_1=require("../m0Validation");function serializeM0File(i){const e=(0,m0Validation_1.canonicalizeAndValidateM0)("serializeM0File",i.m0,"serializeM0File: m0 layout string cannot be empty."),t=i.created??new Date,n=i.app??null?String(i.app).trim():null,u=i.appVersion??null?String(i.appVersion).trim():null,c=i.meta??null,s=i.size??null;s&&assertValidSize(s.width,s.height);const r=["# m0","# version: 1",`# created: ${formatISO(t)}`];if(s&&r.push(`# size: ${s.width}x${s.height}`),n&&r.push(`# app: ${n}`),u&&r.push(`# appVersion: ${u}`),c){const a=["title","author","source","note"];for(const p of a){const m=c[p];m!=null&&m.trim()!==""&&r.push(`# ${p}: ${m.trim()}`)}}return appendAgentLines(r,i.agent??null),r.push(""),r.push(e),r.join(`
2
2
  `)+`
3
- `}o(serializeM0File,"serializeM0File");function appendAgentLines(i,e){if(e){if(e.id&&e.id.trim()!==""&&i.push(`# m0agent:id: ${e.id.trim()}`),e.note&&e.note.trim()!==""&&i.push(`# m0agent:note: ${collapseToSingleLine(e.note)}`),e.question&&e.question.trim()!==""&&i.push(`# m0agent:question: ${collapseToSingleLine(e.question)}`),e.regions&&Object.keys(e.regions).length>0&&i.push(`# m0agent:regions: ${JSON.stringify(e.regions)}`),e.context!==void 0){const t=(0,momo_types_1.normalizeCandidateContext)(e.context);t!==void 0&&i.push(`# m0agent:context: ${JSON.stringify(t)}`)}if(e.response&&e.response.body.trim()!==""){const t={body:collapseToSingleLine(e.response.body),...e.response.from&&e.response.from.trim()!==""?{from:e.response.from.trim()}:{},...e.response.at&&e.response.at.trim()!==""?{at:e.response.at.trim()}:{}};i.push(`# m0agent:response: ${JSON.stringify(t)}`)}if(e.comments&&e.comments.length>0)for(const t of e.comments){if(!t||typeof t.body!="string"||t.body.trim()==="")continue;const n={...t.id&&t.id.trim()!==""?{id:t.id.trim()}:{},body:collapseToSingleLine(t.body),...t.from&&t.from.trim()!==""?{from:t.from.trim()}:{},...t.at&&t.at.trim()!==""?{at:t.at.trim()}:{}};i.push(`# m0agent:comment: ${JSON.stringify(n)}`)}}}o(appendAgentLines,"appendAgentLines");function collapseToSingleLine(i){return i.replace(/[\r\n]+/g," ").replace(/\s+/g," ").trim()}o(collapseToSingleLine,"collapseToSingleLine");function assertValidSize(i,e){if(!Number.isInteger(i)||i<=0)throw new Error("serializeM0File: width must be a positive integer.");if(!Number.isInteger(e)||e<=0)throw new Error("serializeM0File: height must be a positive integer.")}o(assertValidSize,"assertValidSize");function formatISO(i){const e=o((t,n=2)=>String(t).padStart(n,"0"),"pad");return`${i.getUTCFullYear()}-${e(i.getUTCMonth()+1)}-${e(i.getUTCDate())}T${e(i.getUTCHours())}:${e(i.getUTCMinutes())}:${e(i.getUTCSeconds())}.${e(i.getUTCMilliseconds(),3)}Z`}o(formatISO,"formatISO");
3
+ `}o(serializeM0File,"serializeM0File");function appendAgentLines(i,e){if(e){if(e.id&&e.id.trim()!==""&&i.push(`# m0agent:id: ${e.id.trim()}`),e.note&&e.note.trim()!==""&&i.push(`# m0agent:note: ${collapseToSingleLine(e.note)}`),e.question&&e.question.trim()!==""&&i.push(`# m0agent:question: ${collapseToSingleLine(e.question)}`),e.regions&&Object.keys(e.regions).length>0&&i.push(`# m0agent:regions: ${JSON.stringify(e.regions)}`),e.context!==void 0){const t=(0,agent_1.normalizeCandidateContext)(e.context);t!==void 0&&i.push(`# m0agent:context: ${JSON.stringify(t)}`)}if(e.response&&e.response.body.trim()!==""){const t={body:collapseToSingleLine(e.response.body),...e.response.from&&e.response.from.trim()!==""?{from:e.response.from.trim()}:{},...e.response.at&&e.response.at.trim()!==""?{at:e.response.at.trim()}:{}};i.push(`# m0agent:response: ${JSON.stringify(t)}`)}if(e.comments&&e.comments.length>0)for(const t of e.comments){if(!t||typeof t.body!="string"||t.body.trim()==="")continue;const n={...t.id&&t.id.trim()!==""?{id:t.id.trim()}:{},body:collapseToSingleLine(t.body),...t.from&&t.from.trim()!==""?{from:t.from.trim()}:{},...t.at&&t.at.trim()!==""?{at:t.at.trim()}:{}};i.push(`# m0agent:comment: ${JSON.stringify(n)}`)}}}o(appendAgentLines,"appendAgentLines");function collapseToSingleLine(i){return i.replace(/[\r\n]+/g," ").replace(/\s+/g," ").trim()}o(collapseToSingleLine,"collapseToSingleLine");function assertValidSize(i,e){if(!Number.isInteger(i)||i<=0)throw new Error("serializeM0File: width must be a positive integer.");if(!Number.isInteger(e)||e<=0)throw new Error("serializeM0File: height must be a positive integer.")}o(assertValidSize,"assertValidSize");function formatISO(i){const e=o((t,n=2)=>String(t).padStart(n,"0"),"pad");return`${i.getUTCFullYear()}-${e(i.getUTCMonth()+1)}-${e(i.getUTCDate())}T${e(i.getUTCHours())}:${e(i.getUTCMinutes())}:${e(i.getUTCSeconds())}.${e(i.getUTCMilliseconds(),3)}Z`}o(formatISO,"formatISO");
@@ -1,5 +1,5 @@
1
- "use strict";var w=Object.defineProperty;var u=(e,n)=>w(e,"name",{value:n,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.MOGGING_HEADER=void 0,exports.serializeM0cFile=serializeM0cFile,exports.serializeM0gFile=serializeM0gFile,exports.normalizeAgent=normalizeAgent,exports.parseM0cFile=parseM0cFile,exports.parseAgentOrNull=parseAgentOrNull;const serializeM0File_1=require("../m0/serializeM0File"),m0Validation_1=require("../m0Validation"),momo_types_1=require("@m0saic/momo-types"),derive_1=require("../derive");exports.MOGGING_HEADER="#mogging";function serializeM0cFile(e){const n=e.created??new Date,t=(0,m0Validation_1.canonicalizeAndValidateM0)("serializeM0cFile",e.m0,"serializeM0cFile: m0 layout string cannot be empty."),r=e.size??null;r&&assertValidSize(r.width,r.height);const i=e.app??null,s=e.appVersion??null,o=normalizeMeta(e.meta??null),c=normalizeAgent(e.agent??null),l=normalizeLabels(e.labels??null),a=normalizeDerive(e.background!==void 0?e.background:(0,derive_1.encodeBackgroundImage)(e.deriveImage??null)),f=normalizeMasks(e.masks??null),p=normalizeFill(e.fill??null),b=normalizeInsets(e.insets??null),y=normalizeRankSets(e.rankSets??null),d=e.gold??null,m=d!=null,g={format:m?"m0g":"m0c",version:1,created:(0,serializeM0File_1.formatISO)(n),app:i&&i.trim()!==""?i.trim():null,appVersion:s&&s.trim()!==""?s.trim():null,meta:o,agent:c,...m?{gold:d}:{},size:r,m0:t,labels:l,derive:a,masks:f,fill:p,insets:b,rankSets:y,custom:e.custom??null},h=JSON.stringify(g,null,2)+`
1
+ "use strict";var w=Object.defineProperty;var u=(e,n)=>w(e,"name",{value:n,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.MOGGING_HEADER=void 0,exports.serializeM0cFile=serializeM0cFile,exports.serializeM0gFile=serializeM0gFile,exports.normalizeAgent=normalizeAgent,exports.parseM0cFile=parseM0cFile,exports.parseAgentOrNull=parseAgentOrNull;const serializeM0File_1=require("../m0/serializeM0File"),m0Validation_1=require("../m0Validation"),agent_1=require("../agent"),derive_1=require("../derive");exports.MOGGING_HEADER="#mogging";function serializeM0cFile(e){const n=e.created??new Date,t=(0,m0Validation_1.canonicalizeAndValidateM0)("serializeM0cFile",e.m0,"serializeM0cFile: m0 layout string cannot be empty."),r=e.size??null;r&&assertValidSize(r.width,r.height);const i=e.app??null,s=e.appVersion??null,o=normalizeMeta(e.meta??null),c=normalizeAgent(e.agent??null),l=normalizeLabels(e.labels??null),a=normalizeDerive(e.background!==void 0?e.background:(0,derive_1.encodeBackgroundImage)(e.deriveImage??null)),f=normalizeMasks(e.masks??null),p=normalizeFill(e.fill??null),b=normalizeInsets(e.insets??null),y=normalizeRankSets(e.rankSets??null),d=e.gold??null,m=d!=null,g={format:m?"m0g":"m0c",version:1,created:(0,serializeM0File_1.formatISO)(n),app:i&&i.trim()!==""?i.trim():null,appVersion:s&&s.trim()!==""?s.trim():null,meta:o,agent:c,...m?{gold:d}:{},size:r,m0:t,labels:l,derive:a,masks:f,fill:p,insets:b,rankSets:y,custom:e.custom??null},h=JSON.stringify(g,null,2)+`
2
2
  `;return m?`${exports.MOGGING_HEADER}
3
- ${h}`:h}u(serializeM0cFile,"serializeM0cFile");function serializeM0gFile(e){return serializeM0cFile(e)}u(serializeM0gFile,"serializeM0gFile");function normalizeAgent(e){if(!e)return null;const n={};if(e.id&&e.id.trim()!==""&&(n.id=e.id.trim()),e.note&&e.note.trim()!==""&&(n.note=(0,momo_types_1.normalizeAgentProse)(e.note)),e.question&&e.question.trim()!==""&&(n.question=(0,momo_types_1.normalizeAgentProse)(e.question)),e.regions){const t={};for(const[r,i]of Object.entries(e.regions))typeof i=="string"&&i.trim()!==""&&(t[r]=i);Object.keys(t).length&&(n.regions=t)}if(e.context!==void 0){const t=(0,momo_types_1.normalizeCandidateContext)(e.context);t!==void 0&&(n.context=t)}if(e.response&&e.response.body&&e.response.body.trim()!==""){const t=e.response,r=Array.isArray(t.images)?t.images.filter(i=>typeof i=="string"&&i.length>0):[];n.response={body:(0,momo_types_1.normalizeAgentProse)(t.body),...t.from&&t.from.trim()!==""?{from:t.from.trim()}:{},...t.at&&t.at.trim()!==""?{at:t.at.trim()}:{},...t.src&&t.src.trim()!==""?{src:t.src.trim()}:{},...t.srcMosaic&&t.srcMosaic.trim()!==""?{srcMosaic:t.srcMosaic.trim()}:{},...r.length>0?{images:r}:{}}}if(e.comments&&Array.isArray(e.comments)&&e.comments.length>0){const t=[];for(const r of e.comments)!r||typeof r.body!="string"||r.body.trim()===""||t.push({...r.id&&r.id.trim()!==""?{id:r.id.trim()}:{},body:(0,momo_types_1.normalizeAgentProse)(r.body),...r.from&&r.from.trim()!==""?{from:r.from.trim()}:{},...r.at&&r.at.trim()!==""?{at:r.at.trim()}:{}});t.length&&(n.comments=t)}return Object.keys(n).length?n:null}u(normalizeAgent,"normalizeAgent");function normalizeMeta(e){if(!e)return null;const n={},t=["title","author","source","note"];for(const r of t){const i=e[r];if(i!=null){const s=i.trim();s!==""&&(n[r]=s)}}return Object.keys(n).length?n:null}u(normalizeMeta,"normalizeMeta");function normalizeLabels(e){if(!e)return null;const n={};for(const[t,r]of Object.entries(e).sort(([i],[s])=>i.localeCompare(s))){if(!t||!r)continue;const i=(r.text??"").trim();if(!i)continue;const s=r.color?.trim();n[t]=s?{text:i,color:s}:{text:i}}return Object.keys(n).length?n:null}u(normalizeLabels,"normalizeLabels");function normalizeDerive(e){if(typeof e!="string")return{background:null};const n=e.trim();return{background:n===""?null:n}}u(normalizeDerive,"normalizeDerive");function normalizeMasks(e){if(!e)return null;const n={};for(const[t,r]of Object.entries(e).sort(([i],[s])=>i.localeCompare(s))){if(!t)continue;if(r===null){n[t]=null;continue}if(!r||typeof r.localPath!="string"||r.localPath.trim()==="")continue;const i=r.bounds;!i||typeof i.x!="number"||typeof i.y!="number"||typeof i.width!="number"||typeof i.height!="number"||(n[t]={localPath:r.localPath,bounds:{x:i.x,y:i.y,width:i.width,height:i.height}})}return Object.keys(n).length?n:null}u(normalizeMasks,"normalizeMasks");function normalizeFill(e){if(!e)return null;const n={};for(const[t,r]of Object.entries(e).sort(([i],[s])=>i.localeCompare(s))){if(!t||!r)continue;const i=typeof r.color=="string"?r.color.trim():"",s=typeof r.mediaRef=="string"?r.mediaRef.trim():"";if(!i&&!s)continue;const o={};i&&(o.color=i),s&&(o.mediaRef=s),n[t]=o}return Object.keys(n).length?n:null}u(normalizeFill,"normalizeFill");const INSET_EDGES=["top","right","bottom","left"];function normalizeInsets(e){if(!e)return null;const n={};for(const[t,r]of Object.entries(e).sort(([i],[s])=>i.localeCompare(s)))t&&(!r||typeof r!="object"||INSET_EDGES.some(i=>typeof r[i]!="number"||!Number.isFinite(r[i]))||INSET_EDGES.every(i=>r[i]===0)||(n[t]={top:r.top,right:r.right,bottom:r.bottom,left:r.left}));return Object.keys(n).length?n:null}u(normalizeInsets,"normalizeInsets");function normalizeRankSets(e){if(!e)return null;const n={};for(const[t,r]of Object.entries(e).sort(([i],[s])=>i.localeCompare(s))){if(!t)continue;if(r===null){n[t]=null;continue}const i=normalizeRankSet(r);i!==null&&(n[t]=i)}return Object.keys(n).length?n:null}u(normalizeRankSets,"normalizeRankSets");function normalizeRankSet(e){if(!e||typeof e!="object")return null;const n=typeof e.mode=="string"&&e.mode.trim()!==""?e.mode.trim():void 0,t={},r=e.ranks;if(!r||typeof r!="object"||Array.isArray(r))return null;for(const[i,s]of Object.entries(r).sort(([o],[c])=>o.localeCompare(c)))if(i){if(s===null){t[i]=null;continue}typeof s!="number"||!Number.isFinite(s)||(t[i]=s)}return Object.keys(t).length===0&&n===void 0?null:n!==void 0?{mode:n,ranks:t}:{ranks:t}}u(normalizeRankSet,"normalizeRankSet");function assertValidSize(e,n){if(!Number.isInteger(e)||e<=0)throw new Error("serializeM0cFile: width must be a positive integer.");if(!Number.isInteger(n)||n<=0)throw new Error("serializeM0cFile: height must be a positive integer.")}u(assertValidSize,"assertValidSize");function stripLeadingHashComments(e){const n=e.split(`
3
+ ${h}`:h}u(serializeM0cFile,"serializeM0cFile");function serializeM0gFile(e){return serializeM0cFile(e)}u(serializeM0gFile,"serializeM0gFile");function normalizeAgent(e){if(!e)return null;const n={};if(e.id&&e.id.trim()!==""&&(n.id=e.id.trim()),e.note&&e.note.trim()!==""&&(n.note=(0,agent_1.normalizeAgentProse)(e.note)),e.question&&e.question.trim()!==""&&(n.question=(0,agent_1.normalizeAgentProse)(e.question)),e.regions){const t={};for(const[r,i]of Object.entries(e.regions))typeof i=="string"&&i.trim()!==""&&(t[r]=i);Object.keys(t).length&&(n.regions=t)}if(e.context!==void 0){const t=(0,agent_1.normalizeCandidateContext)(e.context);t!==void 0&&(n.context=t)}if(e.response&&e.response.body&&e.response.body.trim()!==""){const t=e.response,r=Array.isArray(t.images)?t.images.filter(i=>typeof i=="string"&&i.length>0):[];n.response={body:(0,agent_1.normalizeAgentProse)(t.body),...t.from&&t.from.trim()!==""?{from:t.from.trim()}:{},...t.at&&t.at.trim()!==""?{at:t.at.trim()}:{},...t.src&&t.src.trim()!==""?{src:t.src.trim()}:{},...t.srcMosaic&&t.srcMosaic.trim()!==""?{srcMosaic:t.srcMosaic.trim()}:{},...r.length>0?{images:r}:{}}}if(e.comments&&Array.isArray(e.comments)&&e.comments.length>0){const t=[];for(const r of e.comments)!r||typeof r.body!="string"||r.body.trim()===""||t.push({...r.id&&r.id.trim()!==""?{id:r.id.trim()}:{},body:(0,agent_1.normalizeAgentProse)(r.body),...r.from&&r.from.trim()!==""?{from:r.from.trim()}:{},...r.at&&r.at.trim()!==""?{at:r.at.trim()}:{}});t.length&&(n.comments=t)}return Object.keys(n).length?n:null}u(normalizeAgent,"normalizeAgent");function normalizeMeta(e){if(!e)return null;const n={},t=["title","author","source","note"];for(const r of t){const i=e[r];if(i!=null){const s=i.trim();s!==""&&(n[r]=s)}}return Object.keys(n).length?n:null}u(normalizeMeta,"normalizeMeta");function normalizeLabels(e){if(!e)return null;const n={};for(const[t,r]of Object.entries(e).sort(([i],[s])=>i.localeCompare(s))){if(!t||!r)continue;const i=(r.text??"").trim();if(!i)continue;const s=r.color?.trim();n[t]=s?{text:i,color:s}:{text:i}}return Object.keys(n).length?n:null}u(normalizeLabels,"normalizeLabels");function normalizeDerive(e){if(typeof e!="string")return{background:null};const n=e.trim();return{background:n===""?null:n}}u(normalizeDerive,"normalizeDerive");function normalizeMasks(e){if(!e)return null;const n={};for(const[t,r]of Object.entries(e).sort(([i],[s])=>i.localeCompare(s))){if(!t)continue;if(r===null){n[t]=null;continue}if(!r||typeof r.localPath!="string"||r.localPath.trim()==="")continue;const i=r.bounds;!i||typeof i.x!="number"||typeof i.y!="number"||typeof i.width!="number"||typeof i.height!="number"||(n[t]={localPath:r.localPath,bounds:{x:i.x,y:i.y,width:i.width,height:i.height}})}return Object.keys(n).length?n:null}u(normalizeMasks,"normalizeMasks");function normalizeFill(e){if(!e)return null;const n={};for(const[t,r]of Object.entries(e).sort(([i],[s])=>i.localeCompare(s))){if(!t||!r)continue;const i=typeof r.color=="string"?r.color.trim():"",s=typeof r.mediaRef=="string"?r.mediaRef.trim():"";if(!i&&!s)continue;const o={};i&&(o.color=i),s&&(o.mediaRef=s),n[t]=o}return Object.keys(n).length?n:null}u(normalizeFill,"normalizeFill");const INSET_EDGES=["top","right","bottom","left"];function normalizeInsets(e){if(!e)return null;const n={};for(const[t,r]of Object.entries(e).sort(([i],[s])=>i.localeCompare(s)))t&&(!r||typeof r!="object"||INSET_EDGES.some(i=>typeof r[i]!="number"||!Number.isFinite(r[i]))||INSET_EDGES.every(i=>r[i]===0)||(n[t]={top:r.top,right:r.right,bottom:r.bottom,left:r.left}));return Object.keys(n).length?n:null}u(normalizeInsets,"normalizeInsets");function normalizeRankSets(e){if(!e)return null;const n={};for(const[t,r]of Object.entries(e).sort(([i],[s])=>i.localeCompare(s))){if(!t)continue;if(r===null){n[t]=null;continue}const i=normalizeRankSet(r);i!==null&&(n[t]=i)}return Object.keys(n).length?n:null}u(normalizeRankSets,"normalizeRankSets");function normalizeRankSet(e){if(!e||typeof e!="object")return null;const n=typeof e.mode=="string"&&e.mode.trim()!==""?e.mode.trim():void 0,t={},r=e.ranks;if(!r||typeof r!="object"||Array.isArray(r))return null;for(const[i,s]of Object.entries(r).sort(([o],[c])=>o.localeCompare(c)))if(i){if(s===null){t[i]=null;continue}typeof s!="number"||!Number.isFinite(s)||(t[i]=s)}return Object.keys(t).length===0&&n===void 0?null:n!==void 0?{mode:n,ranks:t}:{ranks:t}}u(normalizeRankSet,"normalizeRankSet");function assertValidSize(e,n){if(!Number.isInteger(e)||e<=0)throw new Error("serializeM0cFile: width must be a positive integer.");if(!Number.isInteger(n)||n<=0)throw new Error("serializeM0cFile: height must be a positive integer.")}u(assertValidSize,"assertValidSize");function stripLeadingHashComments(e){const n=e.split(`
4
4
  `);let t=0;for(;t<n.length;){const r=n[t].trim();if(r===""||r.startsWith("#")){t++;continue}break}return n.slice(t).join(`
5
- `)}u(stripLeadingHashComments,"stripLeadingHashComments");function parseGoldOrNull(e){if(!isPlainObject(e))return null;const n=e,t={};return typeof n.promotedAt=="string"&&(t.promotedAt=n.promotedAt),typeof n.provenance=="string"&&(t.provenance=n.provenance),"criteria"in n&&(t.criteria=n.criteria),t}u(parseGoldOrNull,"parseGoldOrNull");function parseM0cFile(e){if(typeof e!="string")throw new Error("parseM0cFile: input must be a string");let n;try{n=JSON.parse(stripLeadingHashComments(e))}catch{throw new Error("parseM0cFile: invalid JSON")}if(!isPlainObject(n))throw new Error("parseM0cFile: expected JSON object");const t=n;if(t.format!=="m0c"&&t.format!=="m0g")throw new Error(`parseM0cFile: expected format "m0c" or "m0g", got "${String(t.format)}"`);if(t.version!==1)throw new Error(`parseM0cFile: expected version 1, got ${String(t.version)}`);const r=typeof t.created=="string"?t.created.trim():"";if(!r)throw new Error("parseM0cFile: missing created timestamp");const i=(0,m0Validation_1.canonicalizeAndValidateM0)("parseM0cFile",typeof t.m0=="string"?t.m0:"","parseM0cFile: missing m0 payload"),s=parseSizeOrNull(t.size),o=parseStringOrNull(t.app),c=parseStringOrNull(t.appVersion),l=parseMetaOrNull(t.meta),a=parseAgentOrNull(t.agent),f=parseGoldOrNull(t.gold),p=parseLabelsOrNull(t.labels),b=parseDerive(t.derive),y=parseMasksOrNull(t.masks),d=parseFillOrNull(t.fill),m=parseInsetsOrNull(t.insets),g=parseRankSetsOrNull(t.rankSets);return{format:t.format,version:1,created:r,app:o,appVersion:c,meta:l,agent:a,...f?{gold:f}:{},size:s,m0:i,labels:p,derive:b,masks:y,fill:d,insets:m,rankSets:g,custom:t.custom===void 0?null:t.custom}}u(parseM0cFile,"parseM0cFile");function parseAgentOrNull(e){if(e==null||!isPlainObject(e))return null;const n=e,t={},r=parseStringOrNull(n.id);r&&(t.id=r);const i=parseStringOrNull(n.note);i&&(t.note=i);const s=parseStringOrNull(n.question);if(s&&(t.question=s),isPlainObject(n.regions)){const o={};for(const[c,l]of Object.entries(n.regions))typeof l=="string"&&l.trim()!==""&&(o[c]=l);Object.keys(o).length&&(t.regions=o)}if("context"in n){const o=(0,momo_types_1.normalizeCandidateContext)(n.context);o!==void 0&&(t.context=o)}if(isPlainObject(n.response)){const o=n.response;if(typeof o.body=="string"&&o.body.trim()!==""){const c={body:o.body};if(typeof o.from=="string"&&o.from.trim()!==""&&(c.from=o.from),typeof o.at=="string"&&o.at.trim()!==""&&(c.at=o.at),typeof o.src=="string"&&o.src.trim()!==""&&(c.src=o.src),typeof o.srcMosaic=="string"&&o.srcMosaic.trim()!==""&&(c.srcMosaic=o.srcMosaic),Array.isArray(o.images)){const l=o.images.filter(a=>typeof a=="string"&&a.length>0);l.length>0&&(c.images=l)}t.response=c}}if(Array.isArray(n.comments)){const o=[];for(const c of n.comments){if(!isPlainObject(c))continue;const l=c;if(typeof l.body!="string"||l.body.trim()==="")continue;const a={body:l.body};typeof l.id=="string"&&l.id.trim()!==""&&(a.id=l.id),typeof l.from=="string"&&l.from.trim()!==""&&(a.from=l.from),typeof l.at=="string"&&l.at.trim()!==""&&(a.at=l.at),o.push(a)}o.length&&(t.comments=o)}return Object.keys(t).length?t:null}u(parseAgentOrNull,"parseAgentOrNull");function parseStringOrNull(e){if(e==null||typeof e!="string")return null;const n=e.trim();return n||null}u(parseStringOrNull,"parseStringOrNull");function parseSizeOrNull(e){if(e==null||!isPlainObject(e))return null;const n=e.width,t=e.height;if(typeof n!="number"||typeof t!="number"||!Number.isInteger(n)||!Number.isInteger(t)||n<=0||t<=0)throw new Error("parseM0cFile: invalid size (expected {width,height} positive ints or null)");return{width:n,height:t}}u(parseSizeOrNull,"parseSizeOrNull");function parseMetaOrNull(e){if(e==null)return null;if(!isPlainObject(e))throw new Error("parseM0cFile: invalid meta (expected object or null)");const n=e,t={};for(const r of["title","author","source","note"]){const i=n[r];if(typeof i=="string"){const s=i.trim();s&&(t[r]=s)}}return Object.keys(t).length?t:null}u(parseMetaOrNull,"parseMetaOrNull");function parseLabelsOrNull(e){if(e==null)return null;if(!isPlainObject(e)||Array.isArray(e))throw new Error("parseM0cFile: invalid labels (expected object map or null)");const n=e,t={};for(const[r,i]of Object.entries(n)){if(!r||!isPlainObject(i))continue;const s=i.text,o=typeof s=="string"?s.trim():"";if(!o)continue;const c=i.color,l=typeof c=="string"?c.trim():void 0;t[r]=l?{text:o,color:l}:{text:o}}return Object.keys(t).length?t:null}u(parseLabelsOrNull,"parseLabelsOrNull");function parseDerive(e){if(e==null)return{background:null};if(!isPlainObject(e))throw new Error("parseM0cFile: invalid derive (expected object or null)");const n=e.background;if(n==null)return{background:null};if(typeof n!="string")throw new Error("parseM0cFile: invalid derive.background (expected string or null)");const t=n.trim();return{background:t===""?null:t}}u(parseDerive,"parseDerive");function parseMasksOrNull(e){if(e==null)return null;if(!isPlainObject(e)||Array.isArray(e))throw new Error("parseM0cFile: invalid masks (expected object map or null)");const n=e,t={};for(const[r,i]of Object.entries(n)){if(!r)continue;if(i===null){t[r]=null;continue}if(!isPlainObject(i))throw new Error(`parseM0cFile: invalid masks["${r}"] (expected object or null)`);const s=i.localPath;if(typeof s!="string"||s.trim()==="")throw new Error(`parseM0cFile: invalid masks["${r}"].localPath (expected non-empty string)`);const o=i.bounds;if(!isPlainObject(o))throw new Error(`parseM0cFile: invalid masks["${r}"].bounds (expected object)`);const c=o.x,l=o.y,a=o.width,f=o.height;if(typeof c!="number"||typeof l!="number"||typeof a!="number"||typeof f!="number"||!Number.isFinite(c)||!Number.isFinite(l)||!Number.isFinite(a)||!Number.isFinite(f))throw new Error(`parseM0cFile: invalid masks["${r}"].bounds (x/y/width/height must be finite numbers)`);t[r]={localPath:s,bounds:{x:c,y:l,width:a,height:f}}}return Object.keys(t).length?t:null}u(parseMasksOrNull,"parseMasksOrNull");function parseFillOrNull(e){if(e==null)return null;if(!isPlainObject(e)||Array.isArray(e))throw new Error("parseM0cFile: invalid fill (expected object map or null)");const n=e,t={};for(const[r,i]of Object.entries(n)){if(!r)continue;if(!isPlainObject(i))throw new Error(`parseM0cFile: invalid fill["${r}"] (expected object)`);const s=i.color,o=i.mediaRef,c=typeof s=="string"?s.trim():"",l=typeof o=="string"?o.trim():"";if(!c&&!l)continue;const a={};c&&(a.color=c),l&&(a.mediaRef=l),t[r]=a}return Object.keys(t).length?t:null}u(parseFillOrNull,"parseFillOrNull");function parseInsetsOrNull(e){if(e==null)return null;if(!isPlainObject(e)||Array.isArray(e))throw new Error("parseM0cFile: invalid insets (expected object map or null)");const n=e,t={};for(const[r,i]of Object.entries(n)){if(!r)continue;if(!isPlainObject(i))throw new Error(`parseM0cFile: invalid insets["${r}"] (expected object)`);const s={};for(const o of INSET_EDGES){const c=i[o];if(typeof c!="number"||!Number.isFinite(c))throw new Error(`parseM0cFile: invalid insets["${r}"].${o} (expected finite number)`);s[o]=c}INSET_EDGES.every(o=>s[o]===0)||(t[r]={top:s.top,right:s.right,bottom:s.bottom,left:s.left})}return Object.keys(t).length?t:null}u(parseInsetsOrNull,"parseInsetsOrNull");function parseRankSetsOrNull(e){if(e==null)return null;if(!isPlainObject(e)||Array.isArray(e))throw new Error("parseM0cFile: invalid rankSets (expected object map or null)");const n=e,t={};for(const[r,i]of Object.entries(n)){if(!r)continue;if(i===null){t[r]=null;continue}if(!isPlainObject(i))throw new Error(`parseM0cFile: invalid rankSets["${r}"] (expected object or null)`);const s=i.mode,o=s===void 0?void 0:typeof s=="string"?s:(()=>{throw new Error(`parseM0cFile: invalid rankSets["${r}"].mode (expected string or absent)`)})(),c=i.ranks;if(!isPlainObject(c)||Array.isArray(c))throw new Error(`parseM0cFile: invalid rankSets["${r}"].ranks (expected object map keyed by stableKey)`);const l={};for(const[a,f]of Object.entries(c))if(a){if(f===null){l[a]=null;continue}if(typeof f!="number"||!Number.isFinite(f))throw new Error(`parseM0cFile: invalid rankSets["${r}"].ranks["${a}"] (expected finite number or null)`);l[a]=f}t[r]=o!==void 0?{mode:o,ranks:l}:{ranks:l}}return Object.keys(t).length?t:null}u(parseRankSetsOrNull,"parseRankSetsOrNull");function isPlainObject(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}u(isPlainObject,"isPlainObject");
5
+ `)}u(stripLeadingHashComments,"stripLeadingHashComments");function parseGoldOrNull(e){if(!isPlainObject(e))return null;const n=e,t={};return typeof n.promotedAt=="string"&&(t.promotedAt=n.promotedAt),typeof n.provenance=="string"&&(t.provenance=n.provenance),"criteria"in n&&(t.criteria=n.criteria),t}u(parseGoldOrNull,"parseGoldOrNull");function parseM0cFile(e){if(typeof e!="string")throw new Error("parseM0cFile: input must be a string");let n;try{n=JSON.parse(stripLeadingHashComments(e))}catch{throw new Error("parseM0cFile: invalid JSON")}if(!isPlainObject(n))throw new Error("parseM0cFile: expected JSON object");const t=n;if(t.format!=="m0c"&&t.format!=="m0g")throw new Error(`parseM0cFile: expected format "m0c" or "m0g", got "${String(t.format)}"`);if(t.version!==1)throw new Error(`parseM0cFile: expected version 1, got ${String(t.version)}`);const r=typeof t.created=="string"?t.created.trim():"";if(!r)throw new Error("parseM0cFile: missing created timestamp");const i=(0,m0Validation_1.canonicalizeAndValidateM0)("parseM0cFile",typeof t.m0=="string"?t.m0:"","parseM0cFile: missing m0 payload"),s=parseSizeOrNull(t.size),o=parseStringOrNull(t.app),c=parseStringOrNull(t.appVersion),l=parseMetaOrNull(t.meta),a=parseAgentOrNull(t.agent),f=parseGoldOrNull(t.gold),p=parseLabelsOrNull(t.labels),b=parseDerive(t.derive),y=parseMasksOrNull(t.masks),d=parseFillOrNull(t.fill),m=parseInsetsOrNull(t.insets),g=parseRankSetsOrNull(t.rankSets);return{format:t.format,version:1,created:r,app:o,appVersion:c,meta:l,agent:a,...f?{gold:f}:{},size:s,m0:i,labels:p,derive:b,masks:y,fill:d,insets:m,rankSets:g,custom:t.custom===void 0?null:t.custom}}u(parseM0cFile,"parseM0cFile");function parseAgentOrNull(e){if(e==null||!isPlainObject(e))return null;const n=e,t={},r=parseStringOrNull(n.id);r&&(t.id=r);const i=parseStringOrNull(n.note);i&&(t.note=i);const s=parseStringOrNull(n.question);if(s&&(t.question=s),isPlainObject(n.regions)){const o={};for(const[c,l]of Object.entries(n.regions))typeof l=="string"&&l.trim()!==""&&(o[c]=l);Object.keys(o).length&&(t.regions=o)}if("context"in n){const o=(0,agent_1.normalizeCandidateContext)(n.context);o!==void 0&&(t.context=o)}if(isPlainObject(n.response)){const o=n.response;if(typeof o.body=="string"&&o.body.trim()!==""){const c={body:o.body};if(typeof o.from=="string"&&o.from.trim()!==""&&(c.from=o.from),typeof o.at=="string"&&o.at.trim()!==""&&(c.at=o.at),typeof o.src=="string"&&o.src.trim()!==""&&(c.src=o.src),typeof o.srcMosaic=="string"&&o.srcMosaic.trim()!==""&&(c.srcMosaic=o.srcMosaic),Array.isArray(o.images)){const l=o.images.filter(a=>typeof a=="string"&&a.length>0);l.length>0&&(c.images=l)}t.response=c}}if(Array.isArray(n.comments)){const o=[];for(const c of n.comments){if(!isPlainObject(c))continue;const l=c;if(typeof l.body!="string"||l.body.trim()==="")continue;const a={body:l.body};typeof l.id=="string"&&l.id.trim()!==""&&(a.id=l.id),typeof l.from=="string"&&l.from.trim()!==""&&(a.from=l.from),typeof l.at=="string"&&l.at.trim()!==""&&(a.at=l.at),o.push(a)}o.length&&(t.comments=o)}return Object.keys(t).length?t:null}u(parseAgentOrNull,"parseAgentOrNull");function parseStringOrNull(e){if(e==null||typeof e!="string")return null;const n=e.trim();return n||null}u(parseStringOrNull,"parseStringOrNull");function parseSizeOrNull(e){if(e==null||!isPlainObject(e))return null;const n=e.width,t=e.height;if(typeof n!="number"||typeof t!="number"||!Number.isInteger(n)||!Number.isInteger(t)||n<=0||t<=0)throw new Error("parseM0cFile: invalid size (expected {width,height} positive ints or null)");return{width:n,height:t}}u(parseSizeOrNull,"parseSizeOrNull");function parseMetaOrNull(e){if(e==null)return null;if(!isPlainObject(e))throw new Error("parseM0cFile: invalid meta (expected object or null)");const n=e,t={};for(const r of["title","author","source","note"]){const i=n[r];if(typeof i=="string"){const s=i.trim();s&&(t[r]=s)}}return Object.keys(t).length?t:null}u(parseMetaOrNull,"parseMetaOrNull");function parseLabelsOrNull(e){if(e==null)return null;if(!isPlainObject(e)||Array.isArray(e))throw new Error("parseM0cFile: invalid labels (expected object map or null)");const n=e,t={};for(const[r,i]of Object.entries(n)){if(!r||!isPlainObject(i))continue;const s=i.text,o=typeof s=="string"?s.trim():"";if(!o)continue;const c=i.color,l=typeof c=="string"?c.trim():void 0;t[r]=l?{text:o,color:l}:{text:o}}return Object.keys(t).length?t:null}u(parseLabelsOrNull,"parseLabelsOrNull");function parseDerive(e){if(e==null)return{background:null};if(!isPlainObject(e))throw new Error("parseM0cFile: invalid derive (expected object or null)");const n=e.background;if(n==null)return{background:null};if(typeof n!="string")throw new Error("parseM0cFile: invalid derive.background (expected string or null)");const t=n.trim();return{background:t===""?null:t}}u(parseDerive,"parseDerive");function parseMasksOrNull(e){if(e==null)return null;if(!isPlainObject(e)||Array.isArray(e))throw new Error("parseM0cFile: invalid masks (expected object map or null)");const n=e,t={};for(const[r,i]of Object.entries(n)){if(!r)continue;if(i===null){t[r]=null;continue}if(!isPlainObject(i))throw new Error(`parseM0cFile: invalid masks["${r}"] (expected object or null)`);const s=i.localPath;if(typeof s!="string"||s.trim()==="")throw new Error(`parseM0cFile: invalid masks["${r}"].localPath (expected non-empty string)`);const o=i.bounds;if(!isPlainObject(o))throw new Error(`parseM0cFile: invalid masks["${r}"].bounds (expected object)`);const c=o.x,l=o.y,a=o.width,f=o.height;if(typeof c!="number"||typeof l!="number"||typeof a!="number"||typeof f!="number"||!Number.isFinite(c)||!Number.isFinite(l)||!Number.isFinite(a)||!Number.isFinite(f))throw new Error(`parseM0cFile: invalid masks["${r}"].bounds (x/y/width/height must be finite numbers)`);t[r]={localPath:s,bounds:{x:c,y:l,width:a,height:f}}}return Object.keys(t).length?t:null}u(parseMasksOrNull,"parseMasksOrNull");function parseFillOrNull(e){if(e==null)return null;if(!isPlainObject(e)||Array.isArray(e))throw new Error("parseM0cFile: invalid fill (expected object map or null)");const n=e,t={};for(const[r,i]of Object.entries(n)){if(!r)continue;if(!isPlainObject(i))throw new Error(`parseM0cFile: invalid fill["${r}"] (expected object)`);const s=i.color,o=i.mediaRef,c=typeof s=="string"?s.trim():"",l=typeof o=="string"?o.trim():"";if(!c&&!l)continue;const a={};c&&(a.color=c),l&&(a.mediaRef=l),t[r]=a}return Object.keys(t).length?t:null}u(parseFillOrNull,"parseFillOrNull");function parseInsetsOrNull(e){if(e==null)return null;if(!isPlainObject(e)||Array.isArray(e))throw new Error("parseM0cFile: invalid insets (expected object map or null)");const n=e,t={};for(const[r,i]of Object.entries(n)){if(!r)continue;if(!isPlainObject(i))throw new Error(`parseM0cFile: invalid insets["${r}"] (expected object)`);const s={};for(const o of INSET_EDGES){const c=i[o];if(typeof c!="number"||!Number.isFinite(c))throw new Error(`parseM0cFile: invalid insets["${r}"].${o} (expected finite number)`);s[o]=c}INSET_EDGES.every(o=>s[o]===0)||(t[r]={top:s.top,right:s.right,bottom:s.bottom,left:s.left})}return Object.keys(t).length?t:null}u(parseInsetsOrNull,"parseInsetsOrNull");function parseRankSetsOrNull(e){if(e==null)return null;if(!isPlainObject(e)||Array.isArray(e))throw new Error("parseM0cFile: invalid rankSets (expected object map or null)");const n=e,t={};for(const[r,i]of Object.entries(n)){if(!r)continue;if(i===null){t[r]=null;continue}if(!isPlainObject(i))throw new Error(`parseM0cFile: invalid rankSets["${r}"] (expected object or null)`);const s=i.mode,o=s===void 0?void 0:typeof s=="string"?s:(()=>{throw new Error(`parseM0cFile: invalid rankSets["${r}"].mode (expected string or absent)`)})(),c=i.ranks;if(!isPlainObject(c)||Array.isArray(c))throw new Error(`parseM0cFile: invalid rankSets["${r}"].ranks (expected object map keyed by stableKey)`);const l={};for(const[a,f]of Object.entries(c))if(a){if(f===null){l[a]=null;continue}if(typeof f!="number"||!Number.isFinite(f))throw new Error(`parseM0cFile: invalid rankSets["${r}"].ranks["${a}"] (expected finite number or null)`);l[a]=f}t[r]=o!==void 0?{mode:o,ranks:l}:{ranks:l}}return Object.keys(t).length?t:null}u(parseRankSetsOrNull,"parseRankSetsOrNull");function isPlainObject(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}u(isPlainObject,"isPlainObject");
@@ -1 +1 @@
1
- "use strict";var n=Object.defineProperty;var e=(t,r)=>n(t,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.mintAgentId=void 0;var momo_types_1=require("@m0saic/momo-types");Object.defineProperty(exports,"mintAgentId",{enumerable:!0,get:e(function(){return momo_types_1.mintAgentId},"get")});
1
+ "use strict";var n=Object.defineProperty;var e=(t,r)=>n(t,"name",{value:r,configurable:!0});Object.defineProperty(exports,"__esModule",{value:!0}),exports.normalizeCandidateContext=exports.normalizeAgentProse=exports.collapseAgentProse=exports.mintAgentId=void 0;var agent_1=require("./agent");Object.defineProperty(exports,"mintAgentId",{enumerable:!0,get:e(function(){return agent_1.mintAgentId},"get")}),Object.defineProperty(exports,"collapseAgentProse",{enumerable:!0,get:e(function(){return agent_1.collapseAgentProse},"get")}),Object.defineProperty(exports,"normalizeAgentProse",{enumerable:!0,get:e(function(){return agent_1.normalizeAgentProse},"get")}),Object.defineProperty(exports,"normalizeCandidateContext",{enumerable:!0,get:e(function(){return agent_1.normalizeCandidateContext},"get")});
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@m0saic/dsl-file-formats",
3
- "version": "1.1.0",
3
+ "version": "2.0.1",
4
4
  "main": "./dist/cjs/index.js",
5
5
  "exports": {
6
6
  ".": {