aub-workspace 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +23 -0
  3. package/bin/aub-workspace.mjs +246 -0
  4. package/package.json +32 -0
  5. package/vendor/aub/apps/editor/dist/assets/_commonjs-dynamic-modules-TDtrdbi3.js +1 -0
  6. package/vendor/aub/apps/editor/dist/assets/angular-importer.lib-dB_jK4mR.js +32 -0
  7. package/vendor/aub/apps/editor/dist/assets/canvas-tools-CuYC7cA2.js +364 -0
  8. package/vendor/aub/apps/editor/dist/assets/design-bridge.lib-DJvaK6AX.js +1 -0
  9. package/vendor/aub/apps/editor/dist/assets/export-agent-prompt.lib-BsP0KNqo.js +2 -0
  10. package/vendor/aub/apps/editor/dist/assets/export-md.lib-DdmdeWgO.js +3 -0
  11. package/vendor/aub/apps/editor/dist/assets/handoff-package.lib-DDYpcEma.js +20 -0
  12. package/vendor/aub/apps/editor/dist/assets/implementation-report.lib-CmsSB_8s.js +1 -0
  13. package/vendor/aub/apps/editor/dist/assets/index-BCH-ek3h.js +2 -0
  14. package/vendor/aub/apps/editor/dist/assets/index-lAnc928Q.css +1 -0
  15. package/vendor/aub/apps/editor/dist/assets/index-vt1nM1M4.js +507 -0
  16. package/vendor/aub/apps/editor/dist/assets/jszip.min-CRfXyL92.js +12 -0
  17. package/vendor/aub/apps/editor/dist/assets/react-vendor-ByX9Pqse.js +40 -0
  18. package/vendor/aub/apps/editor/dist/brand/android-chrome-192x192.png +0 -0
  19. package/vendor/aub/apps/editor/dist/brand/android-chrome-512x512.png +0 -0
  20. package/vendor/aub/apps/editor/dist/brand/app-icon-1024.png +0 -0
  21. package/vendor/aub/apps/editor/dist/brand/app-icon-192.png +0 -0
  22. package/vendor/aub/apps/editor/dist/brand/app-icon-512.png +0 -0
  23. package/vendor/aub/apps/editor/dist/brand/apple-touch-icon.png +0 -0
  24. package/vendor/aub/apps/editor/dist/brand/aub-logo-mark.svg +28 -0
  25. package/vendor/aub/apps/editor/dist/brand/favicon-16x16.png +0 -0
  26. package/vendor/aub/apps/editor/dist/brand/favicon-32x32.png +0 -0
  27. package/vendor/aub/apps/editor/dist/brand/favicon-48x48.png +0 -0
  28. package/vendor/aub/apps/editor/dist/brand/favicon.ico +0 -0
  29. package/vendor/aub/apps/editor/dist/brand/favicon.svg +9 -0
  30. package/vendor/aub/apps/editor/dist/brand/maskable-icon-512.png +0 -0
  31. package/vendor/aub/apps/editor/dist/brand/mstile-150x150.png +0 -0
  32. package/vendor/aub/apps/editor/dist/brand/safari-pinned-tab.svg +8 -0
  33. package/vendor/aub/apps/editor/dist/browserconfig.xml +9 -0
  34. package/vendor/aub/apps/editor/dist/index.html +22 -0
  35. package/vendor/aub/apps/editor/dist/manifest.webmanifest +28 -0
  36. package/vendor/aub/apps/editor/dist/template-previews/admin-table.png +0 -0
  37. package/vendor/aub/apps/editor/dist/template-previews/booking.png +0 -0
  38. package/vendor/aub/apps/editor/dist/template-previews/calendar.png +0 -0
  39. package/vendor/aub/apps/editor/dist/template-previews/catalog.png +0 -0
  40. package/vendor/aub/apps/editor/dist/template-previews/chat.png +0 -0
  41. package/vendor/aub/apps/editor/dist/template-previews/checkout.png +0 -0
  42. package/vendor/aub/apps/editor/dist/template-previews/crm.png +0 -0
  43. package/vendor/aub/apps/editor/dist/template-previews/dashboard.png +0 -0
  44. package/vendor/aub/apps/editor/dist/template-previews/feed.png +0 -0
  45. package/vendor/aub/apps/editor/dist/template-previews/files.png +0 -0
  46. package/vendor/aub/apps/editor/dist/template-previews/kanban.png +0 -0
  47. package/vendor/aub/apps/editor/dist/template-previews/landing.png +0 -0
  48. package/vendor/aub/apps/editor/dist/template-previews/mail.png +0 -0
  49. package/vendor/aub/apps/editor/dist/template-previews/onboarding.png +0 -0
  50. package/vendor/aub/apps/editor/dist/template-previews/pricing.png +0 -0
  51. package/vendor/aub/apps/editor/dist/template-previews/product-detail.png +0 -0
  52. package/vendor/aub/apps/editor/dist/template-previews/settings.png +0 -0
  53. package/vendor/aub/apps/editor/dist/template-previews/wiki.png +0 -0
  54. package/vendor/aub/apps/mcp-server/dist/aub.js +15 -0
  55. package/vendor/aub/apps/mcp-server/dist/context.js +1 -0
  56. package/vendor/aub/apps/mcp-server/dist/http.js +123 -0
  57. package/vendor/aub/apps/mcp-server/dist/index.js +23 -0
  58. package/vendor/aub/apps/mcp-server/dist/repo.js +17 -0
  59. package/vendor/aub/apps/mcp-server/dist/schema.js +42 -0
  60. package/vendor/aub/apps/mcp-server/dist/server.js +80 -0
  61. package/vendor/aub/apps/mcp-server/dist/tools/approve-component-candidate.js +27 -0
  62. package/vendor/aub/apps/mcp-server/dist/tools/diff-blueprints.js +27 -0
  63. package/vendor/aub/apps/mcp-server/dist/tools/export-handoff.js +87 -0
  64. package/vendor/aub/apps/mcp-server/dist/tools/export-prompt.js +35 -0
  65. package/vendor/aub/apps/mcp-server/dist/tools/export-template-authoring-prompt.js +13 -0
  66. package/vendor/aub/apps/mcp-server/dist/tools/generate-template-from-source.js +25 -0
  67. package/vendor/aub/apps/mcp-server/dist/tools/get-aub-session.js +13 -0
  68. package/vendor/aub/apps/mcp-server/dist/tools/get-blueprint.js +28 -0
  69. package/vendor/aub/apps/mcp-server/dist/tools/get-project.js +45 -0
  70. package/vendor/aub/apps/mcp-server/dist/tools/get-workspace-status.js +10 -0
  71. package/vendor/aub/apps/mcp-server/dist/tools/import-design-bridge.js +62 -0
  72. package/vendor/aub/apps/mcp-server/dist/tools/list-blueprints.js +11 -0
  73. package/vendor/aub/apps/mcp-server/dist/tools/list-projects.js +11 -0
  74. package/vendor/aub/apps/mcp-server/dist/tools/lock-blueprint.js +33 -0
  75. package/vendor/aub/apps/mcp-server/dist/tools/migrate-blueprint.js +38 -0
  76. package/vendor/aub/apps/mcp-server/dist/tools/resolve-component.js +51 -0
  77. package/vendor/aub/apps/mcp-server/dist/tools/scaffold-blueprint.js +53 -0
  78. package/vendor/aub/apps/mcp-server/dist/tools/scan-project-ui.js +18 -0
  79. package/vendor/aub/apps/mcp-server/dist/tools/submit-report.js +48 -0
  80. package/vendor/aub/apps/mcp-server/dist/tools/update-aub-session.js +14 -0
  81. package/vendor/aub/apps/mcp-server/dist/tools/validate-blueprint.js +67 -0
  82. package/vendor/aub/apps/mcp-server/dist/tools/validate-project.js +74 -0
  83. package/vendor/aub/apps/mcp-server/dist/tools/write-blueprint.js +72 -0
  84. package/vendor/aub/apps/mcp-server/dist/workspace.js +138 -0
  85. package/vendor/aub/docs/agent-handoff.md +85 -0
  86. package/vendor/aub/docs/agent-handoff.zh-Hant.md +85 -0
  87. package/vendor/aub/docs/template-authoring-agent.md +86 -0
  88. package/vendor/aub/schema/aub-ci.schema.json +34 -0
  89. package/vendor/aub/schema/aub.registry.schema.json +118 -0
  90. package/vendor/aub/schema/design-bridge.schema.json +44 -0
  91. package/vendor/aub/schema/implementation-report.schema.json +93 -0
  92. package/vendor/aub/schema/project-types.ts +72 -0
  93. package/vendor/aub/schema/registry/components.json +118 -0
  94. package/vendor/aub/schema/types.js +13 -0
  95. package/vendor/aub/schema/types.ts +348 -0
  96. package/vendor/aub/schema/ui-blueprint-lock.schema.json +61 -0
  97. package/vendor/aub/schema/ui-blueprint.schema.json +1339 -0
  98. package/vendor/aub/schema/ui-project.schema.json +139 -0
  99. package/vendor/aub/scripts/agent-implementation-benchmark.lib.mjs +125 -0
  100. package/vendor/aub/scripts/angular-importer.lib.mjs +982 -0
  101. package/vendor/aub/scripts/check-editor-bundle-budget.mjs +36 -0
  102. package/vendor/aub/scripts/ci-verify.lib.mjs +256 -0
  103. package/vendor/aub/scripts/ci-verify.mjs +45 -0
  104. package/vendor/aub/scripts/create-authoring-kit.mjs +84 -0
  105. package/vendor/aub/scripts/create-implementation-report.mjs +24 -0
  106. package/vendor/aub/scripts/design-bridge.lib.d.mts +32 -0
  107. package/vendor/aub/scripts/design-bridge.lib.mjs +69 -0
  108. package/vendor/aub/scripts/diff-blueprint.lib.d.mts +18 -0
  109. package/vendor/aub/scripts/diff-blueprint.lib.mjs +148 -0
  110. package/vendor/aub/scripts/diff-blueprint.mjs +25 -0
  111. package/vendor/aub/scripts/export-agent-prompt.lib.d.mts +10 -0
  112. package/vendor/aub/scripts/export-agent-prompt.lib.mjs +160 -0
  113. package/vendor/aub/scripts/export-agent-prompt.mjs +79 -0
  114. package/vendor/aub/scripts/export-md.lib.d.mts +3 -0
  115. package/vendor/aub/scripts/export-md.lib.mjs +302 -0
  116. package/vendor/aub/scripts/export-md.mjs +43 -0
  117. package/vendor/aub/scripts/generate-registry-artifacts.lib.mjs +118 -0
  118. package/vendor/aub/scripts/generate-registry-artifacts.mjs +65 -0
  119. package/vendor/aub/scripts/generate-site-locales.mjs +545 -0
  120. package/vendor/aub/scripts/handoff-package.lib.d.mts +20 -0
  121. package/vendor/aub/scripts/handoff-package.lib.mjs +111 -0
  122. package/vendor/aub/scripts/implementation-report.lib.d.mts +21 -0
  123. package/vendor/aub/scripts/implementation-report.lib.mjs +97 -0
  124. package/vendor/aub/scripts/import-angular-component.mjs +72 -0
  125. package/vendor/aub/scripts/import-design-bridge.mjs +59 -0
  126. package/vendor/aub/scripts/lock-blueprint.lib.d.mts +23 -0
  127. package/vendor/aub/scripts/lock-blueprint.lib.mjs +58 -0
  128. package/vendor/aub/scripts/lock-blueprint.mjs +36 -0
  129. package/vendor/aub/scripts/migrate-blueprint-cli.mjs +28 -0
  130. package/vendor/aub/scripts/migrate-blueprint.d.mts +5 -0
  131. package/vendor/aub/scripts/migrate-blueprint.mjs +95 -0
  132. package/vendor/aub/scripts/package-workspace-cli.mjs +34 -0
  133. package/vendor/aub/scripts/project.lib.d.mts +44 -0
  134. package/vendor/aub/scripts/project.lib.mjs +175 -0
  135. package/vendor/aub/scripts/project.mjs +332 -0
  136. package/vendor/aub/scripts/registry.lib.d.mts +52 -0
  137. package/vendor/aub/scripts/registry.lib.mjs +222 -0
  138. package/vendor/aub/scripts/run-agent-implementation.mjs +423 -0
  139. package/vendor/aub/scripts/run-agent-readability.mjs +145 -0
  140. package/vendor/aub/scripts/run-ollama-prompt.mjs +30 -0
  141. package/vendor/aub/scripts/scaffold-blueprint.lib.d.mts +38 -0
  142. package/vendor/aub/scripts/scaffold-blueprint.lib.mjs +316 -0
  143. package/vendor/aub/scripts/scaffold-blueprint.mjs +86 -0
  144. package/vendor/aub/scripts/score-agent-implementation.mjs +27 -0
  145. package/vendor/aub/scripts/score-agent-readability.mjs +54 -0
  146. package/vendor/aub/scripts/sync-brand-assets.mjs +33 -0
  147. package/vendor/aub/scripts/validate-blueprint.lib.d.mts +14 -0
  148. package/vendor/aub/scripts/validate-blueprint.lib.mjs +136 -0
  149. package/vendor/aub/scripts/validate.mjs +128 -0
  150. package/vendor/aub/scripts/verify-implementation-report.mjs +36 -0
  151. package/vendor/aub/scripts/workspace-loop.lib.d.mts +17 -0
  152. package/vendor/aub/scripts/workspace-loop.lib.mjs +674 -0
@@ -0,0 +1 @@
1
+ const c="1.0.0";function l(e){var u;if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Design Bridge input must be an object.");if(e.format!=="aub-design-bridge"||e.version!==c)throw new Error(`Design Bridge must declare format "aub-design-bridge" and version "${c}".`);if(!["figma","penpot"].includes((u=e.source)==null?void 0:u.kind))throw new Error('Design Bridge source.kind must be "figma" or "penpot".');if(!e.blueprint||typeof e.blueprint!="object"||Array.isArray(e.blueprint))throw new Error("Design Bridge must contain a complete blueprint object.");if(!e.node_map||typeof e.node_map!="object"||Array.isArray(e.node_map))throw new Error("Design Bridge must contain a node_map object.");const s=structuredClone(e.blueprint),t=Array.isArray(s.nodes)?s.nodes:[],d=new Set(t.map(r=>r==null?void 0:r.id).filter(Boolean)),a=new Set(Object.keys(e.node_map)),n=[...d].filter(r=>!a.has(r)),i=[...a].filter(r=>!d.has(r));if(n.length>0||i.length>0){const r=[n.length>0?`missing node mappings: ${n.join(", ")}`:"",i.length>0?`unknown mapped nodes: ${i.join(", ")}`:""].filter(Boolean);throw new Error(`Design Bridge node_map must exactly cover blueprint nodes (${r.join("; ")}).`)}const m=e.source.url??`${e.source.kind}://${e.source.document_id}/${e.source.page_id??"page"}/${e.source.frame_id}`,g={};return s.nodes=t.map(r=>{const o=e.node_map[r.id];if(!(o!=null&&o.source_id))throw new Error(`Design Bridge node_map.${r.id}.source_id is required.`);return g[r.id]={source_id:o.source_id,...o.source_name?{source_name:o.source_name}:{},...o.component_key?{component_key:o.component_key}:{}},{...r,source:{file:m,selector:o.source_id}}}),s.provenance={source_kind:e.source.kind,framework:e.source.kind==="figma"?"Figma":"Penpot",importer_version:c,entry_file:e.source.frame_id,source_files:[m]},{blueprint:s,source:structuredClone(e.source),sourceMap:g}}export{c as DESIGN_BRIDGE_VERSION,l as importDesignBridge};
@@ -0,0 +1,2 @@
1
+ import{exportMarkdown as l}from"./export-md.lib-DdmdeWgO.js";import{createImplementationReportTemplate as u}from"./implementation-report.lib-CmsSB_8s.js";const a={generic:{label:"Generic coding agent",repositoryInstructions:["Inspect the repository instructions and existing implementation patterns before changing files.","Use the repository-native package manager, components, tokens, and test commands."]},codex:{label:"Codex",repositoryInstructions:["Read every applicable AGENTS.md before editing files.","Inspect the existing codebase first and preserve local architecture and design-system conventions.","Run the repository checks that cover every changed surface and report their exact result."]},"claude-code":{label:"Claude Code",repositoryInstructions:["Read CLAUDE.md and other repository instructions before editing files.","Inspect related components and tests before choosing an implementation approach.","Run the repository checks that cover every changed surface and report their exact result."]},copilot:{label:"GitHub Copilot",repositoryInstructions:["Read .github/copilot-instructions.md and any applicable AGENTS.md before editing files.","Inspect the existing codebase first and reuse the repository-native components, tokens, and patterns.","Run the repository checks that cover every changed surface and report their exact result."]}},c={author:{title:"Author a UI Blueprint",outcome:"Produce a schema-valid UI Blueprint JSON document from the supplied product and screen requirements.",steps:["Inspect the component registry, schema, canonical example, and supplied source material.","Model one semantic node tree with explicit layout, bindings, interactions, responsive rules, and acceptance criteria.","Validate the generated JSON and report every unresolved product decision instead of guessing."]},implement:{title:"Implement this UI Blueprint",outcome:"Modify the target repository so the implementation satisfies the Blueprint and every acceptance criterion.",steps:["Map every Blueprint node to an existing or new implementation component.","Implement the declared hierarchy, layout mode, viewport geometry, interactions, and responsive behavior.","Verify every acceptance item and attach concrete evidence."]},plan:{title:"Plan this UI Blueprint implementation",outcome:"Produce an implementation plan grounded in the target repository without changing files.",steps:["Map Blueprint nodes to likely files, routes, and components in the repository.","Identify reusable components, missing capabilities, dependencies, and risks.","Return ordered implementation steps tied to node ids and acceptance ids."]},review:{title:"Review an implementation against this UI Blueprint",outcome:"Inspect the current implementation and report contract mismatches without silently relaxing the Blueprint.",steps:["Compare the implementation against node hierarchy, layout, geometry, interactions, and responsive rules.","Evaluate every acceptance item as pass, fail, or needs-review.","Report mismatches with file references and evidence, ordered by severity."]}};function g(t,o={}){const s=o.adapter??"generic",e=o.task??"implement",r=a[s],n=c[e],p=u(t);if(!r)throw new Error(`Unknown agent adapter: ${s}`);if(!n)throw new Error(`Unknown agent task: ${e}`);return[`# ${n.title}`,"",`Adapter: **${r.label}**`,`Screen: **${t.screen.name}** (\`${t.screen.id}\`)`,"","## Required outcome","",n.outcome,"","## Repository execution rules","",...r.repositoryInstructions.map(i=>`- ${i}`),e==="author"?"- Treat the supplied requirements as evidence. Use only registered component types and do not invent missing behavior.":"- Treat the embedded UI Blueprint as the source of truth. Do not redesign, infer missing behavior, or weaken acceptance criteria.","- If the Blueprint conflicts with repository constraints, stop and report the conflict with a concrete proposed resolution.","","## Required workflow","","- Start by replying in the user's language. Explain what AUB is, list the supplied Blueprint evidence, name the task you will perform, and identify any unresolved product decisions.",...n.steps.map((i,d)=>`${d+1}. ${i}`),"","## Final response contract","",...e==="author"?["- Return one complete Blueprint JSON object and no prose or Markdown fence.","- Use children only on registered container types; every leaf must use `children: []`.","- Use only `px`, `%`, `rem`, or `vw` in size objects; use `grid_columns` for fractional tracks.","- Validate unique ids, bidirectional parent/children references, interactions, responsive rules, and acceptance coverage.","- Put unresolved product decisions in `screen.notes` instead of guessing.",""]:["- Summarize changed or inspected files.","- List validation commands and results.","- Report each acceptance id as `pass`, `fail`, or `needs-review` with evidence.","- Call out every unresolved blocker explicitly.","","## Machine-readable implementation report","","Fill this template and return it with the implementation. Every node must map to a file and every acceptance result must include evidence.","","```json",JSON.stringify(p,null,2),"```",""],...e==="author"?["## Authoring reference","","Use the embedded Blueprint as a canonical shape reference. Replace its product-specific content with the requested screen.",""]:[],"<aub_blueprint_context>","",l(t),"","</aub_blueprint_context>",""].join(`
2
+ `)}function f(){return Object.keys(a)}function v(){return Object.keys(c)}export{g as exportAgentPrompt,f as supportedAgentAdapters,v as supportedAgentTasks};
@@ -0,0 +1,3 @@
1
+ function $(s){const e=[];e.push(`# ${s.screen.name} — Implementation Brief`),e.push(""),e.push(`> **Version:** ${s.version}`),e.push("> **Source:** this brief was generated by `scripts/export-md.mjs` from a UI Blueprint."),e.push("> **Target framework:** any (this brief is framework-agnostic)"),e.push(""),e.push("This document is the Agent context export of a UI Blueprint. Read it top-to-bottom before implementing. The acceptance checklist at the bottom is the contract — every item must pass before this implementation is considered done."),e.push(""),e.push("---"),e.push(""),e.push("## 1. Screen Summary"),e.push(""),e.push("| Field | Value |"),e.push("|---|---|"),e.push(`| **id** | \`${s.screen.id}\` |`),e.push(`| **name** | ${s.screen.name} |`),e.push(`| **type** | \`${s.screen.type}\` |`),e.push(`| **platform** | \`${s.screen.platform}\` |`),e.push(`| **primary_user_goal** | ${s.screen.primary_user_goal} |`),s.screen.notes&&e.push(`| **notes** | ${s.screen.notes} |`),e.push(""),e.push("## 2. Component Hierarchy"),e.push(""),e.push("```"),e.push(d(s)),e.push("```"),e.push(""),e.push("Every node in the tree is a **registered semantic component type** (not a generic rectangle). When you implement, you MUST use components that map to the stated type — not visual stand-ins."),e.push(""),e.push("---"),e.push(""),e.push("## 3. Layout Contract"),e.push("");const n=s.nodes.filter(t=>t.layout);if(n.length>0)for(const t of n){const r=f(t);r&&e.push(`- **${t.name}** (\`${t.id}\`): ${r}`)}else e.push("_No layout rules declared._");e.push("");const p=s.nodes.filter(t=>t.placements&&Object.keys(t.placements).length>0);if(p.length>0){e.push("### Exact Viewport Geometry"),e.push(""),e.push("For children of a `freeform` container, these pixel values are authoritative at the declared viewport size. Preserve relative composition when interpolating between declared viewports."),e.push(""),e.push("| Node | Viewport | x | y | width | height | z-index |"),e.push("|---|---:|---:|---:|---:|---:|---:|");for(const t of p)for(const r of s.viewports){const i=m(t,r.id);i&&e.push(`| \`${t.id}\` | \`${r.id}\` | ${i.x} | ${i.y} | ${i.width} | ${i.height} | ${i.z_index??1} |`)}e.push("")}if(e.push("Use each container according to its declared mode: `auto` means flex/grid flow is the contract; `freeform` means child `placements` are the contract. Do not replace one mode with the other unless an acceptance item explicitly permits it."),e.push(""),e.push("### Design System Tokens"),e.push(""),g(e,s.design_system),e.push(""),e.push("---"),e.push(""),e.push("## 4. Interaction Rules"),e.push(""),s.interactions.length>0){e.push("| Source | Trigger | Action | Target | Result |"),e.push("|---|---|---|---|---|");for(const t of s.interactions)e.push(`| \`${t.source_node_id}\` | \`${t.trigger}\` | \`${t.action}\` | ${t.target?`\`${t.target}\``:"—"} | ${t.result_state} |`)}else e.push("_No interactions declared._");if(e.push(""),e.push("Every interaction declares its **trigger**, **action verb-noun**, and **observable result state**. Do not invent interactions not listed here."),e.push(""),e.push("---"),e.push(""),e.push("## 5. Responsive Rules"),e.push(""),s.responsive.length>0){e.push("| Viewport | Target | Rule | Effect |"),e.push("|---|---|---|---|");for(const t of s.responsive){const r=Object.keys(t.changes||{}).length>0?Object.entries(t.changes).map(([i,h])=>`${i}: ${JSON.stringify(h)}`).join(", "):"_no change_";e.push(`| \`${t.viewport}\` | \`${t.target_node_id}\` | \`${t.rule}\` | ${r} |`)}}else e.push("_No responsive rules declared._");e.push(""),e.push("Every responsive decision is declared explicitly. The agent MUST NOT collapse the sidebar silently, hide the metric row, or change table to horizontal scroll without a declared rule."),e.push(""),e.push("---"),e.push(""),e.push("## 6. Non-Violable Conditions"),e.push("");const o=s.acceptance.filter(t=>t.priority==="blocker");if(o.length>0?o.forEach((t,r)=>{e.push(`${r+1}. **${t.statement}** _(target: \`${t.target}\`)_`)}):e.push("_No blocker-level acceptance items declared._"),e.push(""),e.push("---"),e.push(""),e.push("## 7. Acceptance Checklist"),e.push(""),e.push("This checklist is the contract. Every item must be verifiable. Mark each `[x]` only after manual or automated verification."),e.push(""),s.acceptance.length>0){const t=y(s.acceptance,i=>i.type),r=["layout","interaction","responsive","a11y","content","performance"];for(const i of r){if(!t[i]||t[i].length===0)continue;const h={layout:"Layout",interaction:"Interaction",responsive:"Responsive",a11y:"Accessibility",content:"Content",performance:"Performance"};e.push(`### ${h[i]??i} (${t[i].length})`),e.push("");for(const a of t[i])e.push(`- [ ] **${a.id}** (${a.priority}) — ${a.statement} _[verify: \`${a.verification_method}\`]_`);e.push("")}e.push(`**Total: ${s.acceptance.length} verifiable items** (≥5 required by spec).`)}else e.push("_No acceptance items declared._");return e.push(""),e.push("---"),e.push(""),e.push("## 8. Agent Task"),e.push(""),e.push(`You are implementing the ${s.screen.name} described above. Your deliverable is:`),e.push(""),e.push("1. A new file or route matching the component hierarchy in §2."),e.push("2. Implementation that respects the layout contract in §3."),e.push("3. Wiring of all interactions in §4."),e.push("4. Responsive behavior per §5."),e.push("5. A passing run of the acceptance checklist in §7 — every item verifiable, not vibes."),e.push(""),e.push("### Implementation order (suggested, not strict)"),e.push(""),e.push("1. App shell + main containers (skeleton, no data)"),e.push("2. Children nodes with hardcoded content"),e.push("3. Wire primary interactions"),e.push("4. Wire secondary interactions and edge cases"),e.push("5. Add responsive rules"),e.push("6. Add empty/loading/error states"),e.push("7. Run accessibility audit, fix any issues"),e.push("8. Run acceptance checklist, mark all items"),e.push(""),e.push("### Stop conditions"),e.push(""),e.push('- **Blocker found:** stop and report. Do not "fix forward" by relaxing the spec.'),e.push("- **Acceptance item impossible as specified:** stop and report. Do not silently weaken the criterion."),e.push("- **Component type does not exist in your framework:** stop and report. Do not substitute a generic `<div>`."),e.push(""),e.push("### Output format (when done)"),e.push(""),e.push("Report per acceptance item:"),e.push(""),e.push("```"),e.push("[ ] acc_id — pass | fail | needs-review"),e.push(" evidence: <screenshot path | file:line | dom query | interaction log>"),e.push(" notes: <if any>"),e.push("```"),e.push(""),e.push("If any item is `fail` or `needs-review`, the implementation is not done."),e.push(""),e.join(`
2
+ `)}function d(s){const e=new Map(s.nodes.map(t=>[t.id,t])),n=s.nodes.find(t=>t.parent_id===null)||s.nodes[0];if(!n)return"(empty)";const p=[];return o(n,0),p.join(`
3
+ `);function o(t,r){var c;const i=" ".repeat(r),h=`${t.id} (${t.type})`,a=((c=t.children)==null?void 0:c.length)??0;if(p.push(`${i}${h}${a>0?"":" [leaf]"}`),Array.isArray(t.children))for(const l of t.children){const u=e.get(l);u&&o(u,r+1)}}}function f(s){var p;const e=s.layout,n=[];if(e.mode&&n.push(`mode: ${e.mode}`),e.display&&n.push(`display: ${e.display}`),e.direction&&n.push(`direction: ${e.direction}`),(p=e.grid)!=null&&p.columns&&n.push(`grid: ${e.grid.columns} cols${e.grid.template?` (${e.grid.template})`:""}`),e.gap&&(e.gap.x!=null&&e.gap.y!=null?n.push(`gap: ${e.gap.x}/${e.gap.y}px`):e.gap.x!=null?n.push(`gap-x: ${e.gap.x}px`):e.gap.y!=null&&n.push(`gap-y: ${e.gap.y}px`)),e.padding){const o=e.padding;(o.top!=null||o.bottom!=null||o.left!=null||o.right!=null)&&n.push(`padding: ${o.top??"-"}/${o.right??"-"}/${o.bottom??"-"}/${o.left??"-"}`)}return e.width&&n.push(`width: ${e.width.value}${e.width.unit}`),e.height&&n.push(`height: ${e.height.value}${e.height.unit}`),n.length>0?n.join(", "):null}function m(s,e){const n=s.placements;return n?n[e]??n.desktop??n.tablet??n.mobile??n.wide??null:null}function g(s,e){if(!e){s.push("_No design system tokens declared._");return}s.push(`Token set: **${e.name}**`),s.push(""),s.push("| Group | Token | Value |"),s.push("|---|---|---|");for(const n of["colors","typography","spacing","radii","shadows"])for(const[p,o]of Object.entries(e[n]??{}))s.push(`| ${n} | \`${p}\` | \`${String(o).replaceAll("|","\\|")}\` |`)}function y(s,e){const n={};for(const p of s){const o=e(p);(n[o]??(n[o]=[])).push(p)}return n}export{$ as exportMarkdown};
@@ -0,0 +1,20 @@
1
+ import{c as wt,g as Tt}from"./react-vendor-ByX9Pqse.js";import{c as kt}from"./_commonjs-dynamic-modules-TDtrdbi3.js";var St={exports:{}};/*!
2
+
3
+ JSZip v3.10.1 - A JavaScript class for generating and reading zip files
4
+ <http://stuartk.com/jszip>
5
+
6
+ (c) 2009-2016 Stuart Knightley <stuart [at] stuartk.com>
7
+ Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip/main/LICENSE.markdown.
8
+
9
+ JSZip uses the library pako released under the MIT license :
10
+ https://github.com/nodeca/pako/blob/main/LICENSE
11
+ */var At;function Rt(){return At||(At=1,(function(ot,ct){(function(b){ot.exports=b()})(function(){return(function b(N,k,l){function o(g,y){if(!k[g]){if(!N[g]){var p=typeof kt=="function"&&kt;if(!y&&p)return p(g,!0);if(n)return n(g,!0);var _=new Error("Cannot find module '"+g+"'");throw _.code="MODULE_NOT_FOUND",_}var i=k[g]={exports:{}};N[g][0].call(i.exports,function(d){var r=N[g][1][d];return o(r||d)},i,i.exports,b,N,k,l)}return k[g].exports}for(var n=typeof kt=="function"&&kt,u=0;u<l.length;u++)o(l[u]);return o})({1:[function(b,N,k){var l=b("./utils"),o=b("./support"),n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";k.encode=function(u){for(var g,y,p,_,i,d,r,h=[],a=0,c=u.length,v=c,S=l.getTypeOf(u)!=="string";a<u.length;)v=c-a,p=S?(g=u[a++],y=a<c?u[a++]:0,a<c?u[a++]:0):(g=u.charCodeAt(a++),y=a<c?u.charCodeAt(a++):0,a<c?u.charCodeAt(a++):0),_=g>>2,i=(3&g)<<4|y>>4,d=1<v?(15&y)<<2|p>>6:64,r=2<v?63&p:64,h.push(n.charAt(_)+n.charAt(i)+n.charAt(d)+n.charAt(r));return h.join("")},k.decode=function(u){var g,y,p,_,i,d,r=0,h=0,a="data:";if(u.substr(0,a.length)===a)throw new Error("Invalid base64 input, it looks like a data url.");var c,v=3*(u=u.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(u.charAt(u.length-1)===n.charAt(64)&&v--,u.charAt(u.length-2)===n.charAt(64)&&v--,v%1!=0)throw new Error("Invalid base64 input, bad content length.");for(c=o.uint8array?new Uint8Array(0|v):new Array(0|v);r<u.length;)g=n.indexOf(u.charAt(r++))<<2|(_=n.indexOf(u.charAt(r++)))>>4,y=(15&_)<<4|(i=n.indexOf(u.charAt(r++)))>>2,p=(3&i)<<6|(d=n.indexOf(u.charAt(r++))),c[h++]=g,i!==64&&(c[h++]=y),d!==64&&(c[h++]=p);return c}},{"./support":30,"./utils":32}],2:[function(b,N,k){var l=b("./external"),o=b("./stream/DataWorker"),n=b("./stream/Crc32Probe"),u=b("./stream/DataLengthProbe");function g(y,p,_,i,d){this.compressedSize=y,this.uncompressedSize=p,this.crc32=_,this.compression=i,this.compressedContent=d}g.prototype={getContentWorker:function(){var y=new o(l.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new u("data_length")),p=this;return y.on("end",function(){if(this.streamInfo.data_length!==p.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),y},getCompressedWorker:function(){return new o(l.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},g.createWorkerFrom=function(y,p,_){return y.pipe(new n).pipe(new u("uncompressedSize")).pipe(p.compressWorker(_)).pipe(new u("compressedSize")).withStreamInfo("compression",p)},N.exports=g},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(b,N,k){var l=b("./stream/GenericWorker");k.STORE={magic:"\0\0",compressWorker:function(){return new l("STORE compression")},uncompressWorker:function(){return new l("STORE decompression")}},k.DEFLATE=b("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(b,N,k){var l=b("./utils"),o=(function(){for(var n,u=[],g=0;g<256;g++){n=g;for(var y=0;y<8;y++)n=1&n?3988292384^n>>>1:n>>>1;u[g]=n}return u})();N.exports=function(n,u){return n!==void 0&&n.length?l.getTypeOf(n)!=="string"?(function(g,y,p,_){var i=o,d=_+p;g^=-1;for(var r=_;r<d;r++)g=g>>>8^i[255&(g^y[r])];return-1^g})(0|u,n,n.length,0):(function(g,y,p,_){var i=o,d=_+p;g^=-1;for(var r=_;r<d;r++)g=g>>>8^i[255&(g^y.charCodeAt(r))];return-1^g})(0|u,n,n.length,0):0}},{"./utils":32}],5:[function(b,N,k){k.base64=!1,k.binary=!1,k.dir=!1,k.createFolders=!0,k.date=null,k.compression=null,k.compressionOptions=null,k.comment=null,k.unixPermissions=null,k.dosPermissions=null},{}],6:[function(b,N,k){var l=null;l=typeof Promise<"u"?Promise:b("lie"),N.exports={Promise:l}},{lie:37}],7:[function(b,N,k){var l=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",o=b("pako"),n=b("./utils"),u=b("./stream/GenericWorker"),g=l?"uint8array":"array";function y(p,_){u.call(this,"FlateWorker/"+p),this._pako=null,this._pakoAction=p,this._pakoOptions=_,this.meta={}}k.magic="\b\0",n.inherits(y,u),y.prototype.processChunk=function(p){this.meta=p.meta,this._pako===null&&this._createPako(),this._pako.push(n.transformTo(g,p.data),!1)},y.prototype.flush=function(){u.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},y.prototype.cleanUp=function(){u.prototype.cleanUp.call(this),this._pako=null},y.prototype._createPako=function(){this._pako=new o[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var p=this;this._pako.onData=function(_){p.push({data:_,meta:p.meta})}},k.compressWorker=function(p){return new y("Deflate",p)},k.uncompressWorker=function(){return new y("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(b,N,k){function l(i,d){var r,h="";for(r=0;r<d;r++)h+=String.fromCharCode(255&i),i>>>=8;return h}function o(i,d,r,h,a,c){var v,S,x=i.file,D=i.compression,O=c!==g.utf8encode,j=n.transformTo("string",c(x.name)),I=n.transformTo("string",g.utf8encode(x.name)),W=x.comment,J=n.transformTo("string",c(W)),m=n.transformTo("string",g.utf8encode(W)),B=I.length!==x.name.length,e=m.length!==W.length,R="",$="",P="",q=x.dir,L=x.date,V={crc32:0,compressedSize:0,uncompressedSize:0};d&&!r||(V.crc32=i.crc32,V.compressedSize=i.compressedSize,V.uncompressedSize=i.uncompressedSize);var A=0;d&&(A|=8),O||!B&&!e||(A|=2048);var E=0,X=0;q&&(E|=16),a==="UNIX"?(X=798,E|=(function(H,nt){var ht=H;return H||(ht=nt?16893:33204),(65535&ht)<<16})(x.unixPermissions,q)):(X=20,E|=(function(H){return 63&(H||0)})(x.dosPermissions)),v=L.getUTCHours(),v<<=6,v|=L.getUTCMinutes(),v<<=5,v|=L.getUTCSeconds()/2,S=L.getUTCFullYear()-1980,S<<=4,S|=L.getUTCMonth()+1,S<<=5,S|=L.getUTCDate(),B&&($=l(1,1)+l(y(j),4)+I,R+="up"+l($.length,2)+$),e&&(P=l(1,1)+l(y(J),4)+m,R+="uc"+l(P.length,2)+P);var G="";return G+=`
12
+ \0`,G+=l(A,2),G+=D.magic,G+=l(v,2),G+=l(S,2),G+=l(V.crc32,4),G+=l(V.compressedSize,4),G+=l(V.uncompressedSize,4),G+=l(j.length,2),G+=l(R.length,2),{fileRecord:p.LOCAL_FILE_HEADER+G+j+R,dirRecord:p.CENTRAL_FILE_HEADER+l(X,2)+G+l(J.length,2)+"\0\0\0\0"+l(E,4)+l(h,4)+j+R+J}}var n=b("../utils"),u=b("../stream/GenericWorker"),g=b("../utf8"),y=b("../crc32"),p=b("../signature");function _(i,d,r,h){u.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=d,this.zipPlatform=r,this.encodeFileName=h,this.streamFiles=i,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}n.inherits(_,u),_.prototype.push=function(i){var d=i.meta.percent||0,r=this.entriesCount,h=this._sources.length;this.accumulate?this.contentBuffer.push(i):(this.bytesWritten+=i.data.length,u.prototype.push.call(this,{data:i.data,meta:{currentFile:this.currentFile,percent:r?(d+100*(r-h-1))/r:100}}))},_.prototype.openedSource=function(i){this.currentSourceOffset=this.bytesWritten,this.currentFile=i.file.name;var d=this.streamFiles&&!i.file.dir;if(d){var r=o(i,d,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},_.prototype.closedSource=function(i){this.accumulate=!1;var d=this.streamFiles&&!i.file.dir,r=o(i,d,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),d)this.push({data:(function(h){return p.DATA_DESCRIPTOR+l(h.crc32,4)+l(h.compressedSize,4)+l(h.uncompressedSize,4)})(i),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},_.prototype.flush=function(){for(var i=this.bytesWritten,d=0;d<this.dirRecords.length;d++)this.push({data:this.dirRecords[d],meta:{percent:100}});var r=this.bytesWritten-i,h=(function(a,c,v,S,x){var D=n.transformTo("string",x(S));return p.CENTRAL_DIRECTORY_END+"\0\0\0\0"+l(a,2)+l(a,2)+l(c,4)+l(v,4)+l(D.length,2)+D})(this.dirRecords.length,r,i,this.zipComment,this.encodeFileName);this.push({data:h,meta:{percent:100}})},_.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},_.prototype.registerPrevious=function(i){this._sources.push(i);var d=this;return i.on("data",function(r){d.processChunk(r)}),i.on("end",function(){d.closedSource(d.previous.streamInfo),d._sources.length?d.prepareNextSource():d.end()}),i.on("error",function(r){d.error(r)}),this},_.prototype.resume=function(){return!!u.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},_.prototype.error=function(i){var d=this._sources;if(!u.prototype.error.call(this,i))return!1;for(var r=0;r<d.length;r++)try{d[r].error(i)}catch{}return!0},_.prototype.lock=function(){u.prototype.lock.call(this);for(var i=this._sources,d=0;d<i.length;d++)i[d].lock()},N.exports=_},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(b,N,k){var l=b("../compressions"),o=b("./ZipFileWorker");k.generateWorker=function(n,u,g){var y=new o(u.streamFiles,g,u.platform,u.encodeFileName),p=0;try{n.forEach(function(_,i){p++;var d=(function(c,v){var S=c||v,x=l[S];if(!x)throw new Error(S+" is not a valid compression method !");return x})(i.options.compression,u.compression),r=i.options.compressionOptions||u.compressionOptions||{},h=i.dir,a=i.date;i._compressWorker(d,r).withStreamInfo("file",{name:_,dir:h,date:a,comment:i.comment||"",unixPermissions:i.unixPermissions,dosPermissions:i.dosPermissions}).pipe(y)}),y.entriesCount=p}catch(_){y.error(_)}return y}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(b,N,k){function l(){if(!(this instanceof l))return new l;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var o=new l;for(var n in this)typeof this[n]!="function"&&(o[n]=this[n]);return o}}(l.prototype=b("./object")).loadAsync=b("./load"),l.support=b("./support"),l.defaults=b("./defaults"),l.version="3.10.1",l.loadAsync=function(o,n){return new l().loadAsync(o,n)},l.external=b("./external"),N.exports=l},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(b,N,k){var l=b("./utils"),o=b("./external"),n=b("./utf8"),u=b("./zipEntries"),g=b("./stream/Crc32Probe"),y=b("./nodejsUtils");function p(_){return new o.Promise(function(i,d){var r=_.decompressed.getContentWorker().pipe(new g);r.on("error",function(h){d(h)}).on("end",function(){r.streamInfo.crc32!==_.decompressed.crc32?d(new Error("Corrupted zip : CRC32 mismatch")):i()}).resume()})}N.exports=function(_,i){var d=this;return i=l.extend(i||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:n.utf8decode}),y.isNode&&y.isStream(_)?o.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):l.prepareContent("the loaded zip file",_,!0,i.optimizedBinaryString,i.base64).then(function(r){var h=new u(i);return h.load(r),h}).then(function(r){var h=[o.Promise.resolve(r)],a=r.files;if(i.checkCRC32)for(var c=0;c<a.length;c++)h.push(p(a[c]));return o.Promise.all(h)}).then(function(r){for(var h=r.shift(),a=h.files,c=0;c<a.length;c++){var v=a[c],S=v.fileNameStr,x=l.resolve(v.fileNameStr);d.file(x,v.decompressed,{binary:!0,optimizedBinaryString:!0,date:v.date,dir:v.dir,comment:v.fileCommentStr.length?v.fileCommentStr:null,unixPermissions:v.unixPermissions,dosPermissions:v.dosPermissions,createFolders:i.createFolders}),v.dir||(d.file(x).unsafeOriginalName=S)}return h.zipComment.length&&(d.comment=h.zipComment),d})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(b,N,k){var l=b("../utils"),o=b("../stream/GenericWorker");function n(u,g){o.call(this,"Nodejs stream input adapter for "+u),this._upstreamEnded=!1,this._bindStream(g)}l.inherits(n,o),n.prototype._bindStream=function(u){var g=this;(this._stream=u).pause(),u.on("data",function(y){g.push({data:y,meta:{percent:0}})}).on("error",function(y){g.isPaused?this.generatedError=y:g.error(y)}).on("end",function(){g.isPaused?g._upstreamEnded=!0:g.end()})},n.prototype.pause=function(){return!!o.prototype.pause.call(this)&&(this._stream.pause(),!0)},n.prototype.resume=function(){return!!o.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},N.exports=n},{"../stream/GenericWorker":28,"../utils":32}],13:[function(b,N,k){var l=b("readable-stream").Readable;function o(n,u,g){l.call(this,u),this._helper=n;var y=this;n.on("data",function(p,_){y.push(p)||y._helper.pause(),g&&g(_)}).on("error",function(p){y.emit("error",p)}).on("end",function(){y.push(null)})}b("../utils").inherits(o,l),o.prototype._read=function(){this._helper.resume()},N.exports=o},{"../utils":32,"readable-stream":16}],14:[function(b,N,k){N.exports={isNode:typeof Buffer<"u",newBufferFrom:function(l,o){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(l,o);if(typeof l=="number")throw new Error('The "data" argument must not be a number');return new Buffer(l,o)},allocBuffer:function(l){if(Buffer.alloc)return Buffer.alloc(l);var o=new Buffer(l);return o.fill(0),o},isBuffer:function(l){return Buffer.isBuffer(l)},isStream:function(l){return l&&typeof l.on=="function"&&typeof l.pause=="function"&&typeof l.resume=="function"}}},{}],15:[function(b,N,k){function l(x,D,O){var j,I=n.getTypeOf(D),W=n.extend(O||{},y);W.date=W.date||new Date,W.compression!==null&&(W.compression=W.compression.toUpperCase()),typeof W.unixPermissions=="string"&&(W.unixPermissions=parseInt(W.unixPermissions,8)),W.unixPermissions&&16384&W.unixPermissions&&(W.dir=!0),W.dosPermissions&&16&W.dosPermissions&&(W.dir=!0),W.dir&&(x=a(x)),W.createFolders&&(j=h(x))&&c.call(this,j,!0);var J=I==="string"&&W.binary===!1&&W.base64===!1;O&&O.binary!==void 0||(W.binary=!J),(D instanceof p&&D.uncompressedSize===0||W.dir||!D||D.length===0)&&(W.base64=!1,W.binary=!0,D="",W.compression="STORE",I="string");var m=null;m=D instanceof p||D instanceof u?D:d.isNode&&d.isStream(D)?new r(x,D):n.prepareContent(x,D,W.binary,W.optimizedBinaryString,W.base64);var B=new _(x,m,W);this.files[x]=B}var o=b("./utf8"),n=b("./utils"),u=b("./stream/GenericWorker"),g=b("./stream/StreamHelper"),y=b("./defaults"),p=b("./compressedObject"),_=b("./zipObject"),i=b("./generate"),d=b("./nodejsUtils"),r=b("./nodejs/NodejsStreamInputAdapter"),h=function(x){x.slice(-1)==="/"&&(x=x.substring(0,x.length-1));var D=x.lastIndexOf("/");return 0<D?x.substring(0,D):""},a=function(x){return x.slice(-1)!=="/"&&(x+="/"),x},c=function(x,D){return D=D!==void 0?D:y.createFolders,x=a(x),this.files[x]||l.call(this,x,null,{dir:!0,createFolders:D}),this.files[x]};function v(x){return Object.prototype.toString.call(x)==="[object RegExp]"}var S={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(x){var D,O,j;for(D in this.files)j=this.files[D],(O=D.slice(this.root.length,D.length))&&D.slice(0,this.root.length)===this.root&&x(O,j)},filter:function(x){var D=[];return this.forEach(function(O,j){x(O,j)&&D.push(j)}),D},file:function(x,D,O){if(arguments.length!==1)return x=this.root+x,l.call(this,x,D,O),this;if(v(x)){var j=x;return this.filter(function(W,J){return!J.dir&&j.test(W)})}var I=this.files[this.root+x];return I&&!I.dir?I:null},folder:function(x){if(!x)return this;if(v(x))return this.filter(function(I,W){return W.dir&&x.test(I)});var D=this.root+x,O=c.call(this,D),j=this.clone();return j.root=O.name,j},remove:function(x){x=this.root+x;var D=this.files[x];if(D||(x.slice(-1)!=="/"&&(x+="/"),D=this.files[x]),D&&!D.dir)delete this.files[x];else for(var O=this.filter(function(I,W){return W.name.slice(0,x.length)===x}),j=0;j<O.length;j++)delete this.files[O[j].name];return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(x){var D,O={};try{if((O=n.extend(x||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:o.utf8encode})).type=O.type.toLowerCase(),O.compression=O.compression.toUpperCase(),O.type==="binarystring"&&(O.type="string"),!O.type)throw new Error("No output type specified.");n.checkSupport(O.type),O.platform!=="darwin"&&O.platform!=="freebsd"&&O.platform!=="linux"&&O.platform!=="sunos"||(O.platform="UNIX"),O.platform==="win32"&&(O.platform="DOS");var j=O.comment||this.comment||"";D=i.generateWorker(this,O,j)}catch(I){(D=new u("error")).error(I)}return new g(D,O.type||"string",O.mimeType)},generateAsync:function(x,D){return this.generateInternalStream(x).accumulate(D)},generateNodeStream:function(x,D){return(x=x||{}).type||(x.type="nodebuffer"),this.generateInternalStream(x).toNodejsStream(D)}};N.exports=S},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(b,N,k){N.exports=b("stream")},{stream:void 0}],17:[function(b,N,k){var l=b("./DataReader");function o(n){l.call(this,n);for(var u=0;u<this.data.length;u++)n[u]=255&n[u]}b("../utils").inherits(o,l),o.prototype.byteAt=function(n){return this.data[this.zero+n]},o.prototype.lastIndexOfSignature=function(n){for(var u=n.charCodeAt(0),g=n.charCodeAt(1),y=n.charCodeAt(2),p=n.charCodeAt(3),_=this.length-4;0<=_;--_)if(this.data[_]===u&&this.data[_+1]===g&&this.data[_+2]===y&&this.data[_+3]===p)return _-this.zero;return-1},o.prototype.readAndCheckSignature=function(n){var u=n.charCodeAt(0),g=n.charCodeAt(1),y=n.charCodeAt(2),p=n.charCodeAt(3),_=this.readData(4);return u===_[0]&&g===_[1]&&y===_[2]&&p===_[3]},o.prototype.readData=function(n){if(this.checkOffset(n),n===0)return[];var u=this.data.slice(this.zero+this.index,this.zero+this.index+n);return this.index+=n,u},N.exports=o},{"../utils":32,"./DataReader":18}],18:[function(b,N,k){var l=b("../utils");function o(n){this.data=n,this.length=n.length,this.index=0,this.zero=0}o.prototype={checkOffset:function(n){this.checkIndex(this.index+n)},checkIndex:function(n){if(this.length<this.zero+n||n<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+n+"). Corrupted zip ?")},setIndex:function(n){this.checkIndex(n),this.index=n},skip:function(n){this.setIndex(this.index+n)},byteAt:function(){},readInt:function(n){var u,g=0;for(this.checkOffset(n),u=this.index+n-1;u>=this.index;u--)g=(g<<8)+this.byteAt(u);return this.index+=n,g},readString:function(n){return l.transformTo("string",this.readData(n))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var n=this.readInt(4);return new Date(Date.UTC(1980+(n>>25&127),(n>>21&15)-1,n>>16&31,n>>11&31,n>>5&63,(31&n)<<1))}},N.exports=o},{"../utils":32}],19:[function(b,N,k){var l=b("./Uint8ArrayReader");function o(n){l.call(this,n)}b("../utils").inherits(o,l),o.prototype.readData=function(n){this.checkOffset(n);var u=this.data.slice(this.zero+this.index,this.zero+this.index+n);return this.index+=n,u},N.exports=o},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(b,N,k){var l=b("./DataReader");function o(n){l.call(this,n)}b("../utils").inherits(o,l),o.prototype.byteAt=function(n){return this.data.charCodeAt(this.zero+n)},o.prototype.lastIndexOfSignature=function(n){return this.data.lastIndexOf(n)-this.zero},o.prototype.readAndCheckSignature=function(n){return n===this.readData(4)},o.prototype.readData=function(n){this.checkOffset(n);var u=this.data.slice(this.zero+this.index,this.zero+this.index+n);return this.index+=n,u},N.exports=o},{"../utils":32,"./DataReader":18}],21:[function(b,N,k){var l=b("./ArrayReader");function o(n){l.call(this,n)}b("../utils").inherits(o,l),o.prototype.readData=function(n){if(this.checkOffset(n),n===0)return new Uint8Array(0);var u=this.data.subarray(this.zero+this.index,this.zero+this.index+n);return this.index+=n,u},N.exports=o},{"../utils":32,"./ArrayReader":17}],22:[function(b,N,k){var l=b("../utils"),o=b("../support"),n=b("./ArrayReader"),u=b("./StringReader"),g=b("./NodeBufferReader"),y=b("./Uint8ArrayReader");N.exports=function(p){var _=l.getTypeOf(p);return l.checkSupport(_),_!=="string"||o.uint8array?_==="nodebuffer"?new g(p):o.uint8array?new y(l.transformTo("uint8array",p)):new n(l.transformTo("array",p)):new u(p)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(b,N,k){k.LOCAL_FILE_HEADER="PK",k.CENTRAL_FILE_HEADER="PK",k.CENTRAL_DIRECTORY_END="PK",k.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",k.ZIP64_CENTRAL_DIRECTORY_END="PK",k.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(b,N,k){var l=b("./GenericWorker"),o=b("../utils");function n(u){l.call(this,"ConvertWorker to "+u),this.destType=u}o.inherits(n,l),n.prototype.processChunk=function(u){this.push({data:o.transformTo(this.destType,u.data),meta:u.meta})},N.exports=n},{"../utils":32,"./GenericWorker":28}],25:[function(b,N,k){var l=b("./GenericWorker"),o=b("../crc32");function n(){l.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}b("../utils").inherits(n,l),n.prototype.processChunk=function(u){this.streamInfo.crc32=o(u.data,this.streamInfo.crc32||0),this.push(u)},N.exports=n},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(b,N,k){var l=b("../utils"),o=b("./GenericWorker");function n(u){o.call(this,"DataLengthProbe for "+u),this.propName=u,this.withStreamInfo(u,0)}l.inherits(n,o),n.prototype.processChunk=function(u){if(u){var g=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=g+u.data.length}o.prototype.processChunk.call(this,u)},N.exports=n},{"../utils":32,"./GenericWorker":28}],27:[function(b,N,k){var l=b("../utils"),o=b("./GenericWorker");function n(u){o.call(this,"DataWorker");var g=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,u.then(function(y){g.dataIsReady=!0,g.data=y,g.max=y&&y.length||0,g.type=l.getTypeOf(y),g.isPaused||g._tickAndRepeat()},function(y){g.error(y)})}l.inherits(n,o),n.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this.data=null},n.prototype.resume=function(){return!!o.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,l.delay(this._tickAndRepeat,[],this)),!0)},n.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(l.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},n.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var u=null,g=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":u=this.data.substring(this.index,g);break;case"uint8array":u=this.data.subarray(this.index,g);break;case"array":case"nodebuffer":u=this.data.slice(this.index,g)}return this.index=g,this.push({data:u,meta:{percent:this.max?this.index/this.max*100:0}})},N.exports=n},{"../utils":32,"./GenericWorker":28}],28:[function(b,N,k){function l(o){this.name=o||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}l.prototype={push:function(o){this.emit("data",o)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(o){this.emit("error",o)}return!0},error:function(o){return!this.isFinished&&(this.isPaused?this.generatedError=o:(this.isFinished=!0,this.emit("error",o),this.previous&&this.previous.error(o),this.cleanUp()),!0)},on:function(o,n){return this._listeners[o].push(n),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(o,n){if(this._listeners[o])for(var u=0;u<this._listeners[o].length;u++)this._listeners[o][u].call(this,n)},pipe:function(o){return o.registerPrevious(this)},registerPrevious:function(o){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=o.streamInfo,this.mergeStreamInfo(),this.previous=o;var n=this;return o.on("data",function(u){n.processChunk(u)}),o.on("end",function(){n.end()}),o.on("error",function(u){n.error(u)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var o=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),o=!0),this.previous&&this.previous.resume(),!o},flush:function(){},processChunk:function(o){this.push(o)},withStreamInfo:function(o,n){return this.extraStreamInfo[o]=n,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var o in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,o)&&(this.streamInfo[o]=this.extraStreamInfo[o])},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var o="Worker "+this.name;return this.previous?this.previous+" -> "+o:o}},N.exports=l},{}],29:[function(b,N,k){var l=b("../utils"),o=b("./ConvertWorker"),n=b("./GenericWorker"),u=b("../base64"),g=b("../support"),y=b("../external"),p=null;if(g.nodestream)try{p=b("../nodejs/NodejsStreamOutputAdapter")}catch{}function _(d,r){return new y.Promise(function(h,a){var c=[],v=d._internalType,S=d._outputType,x=d._mimeType;d.on("data",function(D,O){c.push(D),r&&r(O)}).on("error",function(D){c=[],a(D)}).on("end",function(){try{var D=(function(O,j,I){switch(O){case"blob":return l.newBlob(l.transformTo("arraybuffer",j),I);case"base64":return u.encode(j);default:return l.transformTo(O,j)}})(S,(function(O,j){var I,W=0,J=null,m=0;for(I=0;I<j.length;I++)m+=j[I].length;switch(O){case"string":return j.join("");case"array":return Array.prototype.concat.apply([],j);case"uint8array":for(J=new Uint8Array(m),I=0;I<j.length;I++)J.set(j[I],W),W+=j[I].length;return J;case"nodebuffer":return Buffer.concat(j);default:throw new Error("concat : unsupported type '"+O+"'")}})(v,c),x);h(D)}catch(O){a(O)}c=[]}).resume()})}function i(d,r,h){var a=r;switch(r){case"blob":case"arraybuffer":a="uint8array";break;case"base64":a="string"}try{this._internalType=a,this._outputType=r,this._mimeType=h,l.checkSupport(a),this._worker=d.pipe(new o(a)),d.lock()}catch(c){this._worker=new n("error"),this._worker.error(c)}}i.prototype={accumulate:function(d){return _(this,d)},on:function(d,r){var h=this;return d==="data"?this._worker.on(d,function(a){r.call(h,a.data,a.meta)}):this._worker.on(d,function(){l.delay(r,arguments,h)}),this},resume:function(){return l.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(d){if(l.checkSupport("nodestream"),this._outputType!=="nodebuffer")throw new Error(this._outputType+" is not supported by this method");return new p(this,{objectMode:this._outputType!=="nodebuffer"},d)}},N.exports=i},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(b,N,k){if(k.base64=!0,k.array=!0,k.string=!0,k.arraybuffer=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u",k.nodebuffer=typeof Buffer<"u",k.uint8array=typeof Uint8Array<"u",typeof ArrayBuffer>"u")k.blob=!1;else{var l=new ArrayBuffer(0);try{k.blob=new Blob([l],{type:"application/zip"}).size===0}catch{try{var o=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);o.append(l),k.blob=o.getBlob("application/zip").size===0}catch{k.blob=!1}}}try{k.nodestream=!!b("readable-stream").Readable}catch{k.nodestream=!1}},{"readable-stream":16}],31:[function(b,N,k){for(var l=b("./utils"),o=b("./support"),n=b("./nodejsUtils"),u=b("./stream/GenericWorker"),g=new Array(256),y=0;y<256;y++)g[y]=252<=y?6:248<=y?5:240<=y?4:224<=y?3:192<=y?2:1;g[254]=g[254]=1;function p(){u.call(this,"utf-8 decode"),this.leftOver=null}function _(){u.call(this,"utf-8 encode")}k.utf8encode=function(i){return o.nodebuffer?n.newBufferFrom(i,"utf-8"):(function(d){var r,h,a,c,v,S=d.length,x=0;for(c=0;c<S;c++)(64512&(h=d.charCodeAt(c)))==55296&&c+1<S&&(64512&(a=d.charCodeAt(c+1)))==56320&&(h=65536+(h-55296<<10)+(a-56320),c++),x+=h<128?1:h<2048?2:h<65536?3:4;for(r=o.uint8array?new Uint8Array(x):new Array(x),c=v=0;v<x;c++)(64512&(h=d.charCodeAt(c)))==55296&&c+1<S&&(64512&(a=d.charCodeAt(c+1)))==56320&&(h=65536+(h-55296<<10)+(a-56320),c++),h<128?r[v++]=h:(h<2048?r[v++]=192|h>>>6:(h<65536?r[v++]=224|h>>>12:(r[v++]=240|h>>>18,r[v++]=128|h>>>12&63),r[v++]=128|h>>>6&63),r[v++]=128|63&h);return r})(i)},k.utf8decode=function(i){return o.nodebuffer?l.transformTo("nodebuffer",i).toString("utf-8"):(function(d){var r,h,a,c,v=d.length,S=new Array(2*v);for(r=h=0;r<v;)if((a=d[r++])<128)S[h++]=a;else if(4<(c=g[a]))S[h++]=65533,r+=c-1;else{for(a&=c===2?31:c===3?15:7;1<c&&r<v;)a=a<<6|63&d[r++],c--;1<c?S[h++]=65533:a<65536?S[h++]=a:(a-=65536,S[h++]=55296|a>>10&1023,S[h++]=56320|1023&a)}return S.length!==h&&(S.subarray?S=S.subarray(0,h):S.length=h),l.applyFromCharCode(S)})(i=l.transformTo(o.uint8array?"uint8array":"array",i))},l.inherits(p,u),p.prototype.processChunk=function(i){var d=l.transformTo(o.uint8array?"uint8array":"array",i.data);if(this.leftOver&&this.leftOver.length){if(o.uint8array){var r=d;(d=new Uint8Array(r.length+this.leftOver.length)).set(this.leftOver,0),d.set(r,this.leftOver.length)}else d=this.leftOver.concat(d);this.leftOver=null}var h=(function(c,v){var S;for((v=v||c.length)>c.length&&(v=c.length),S=v-1;0<=S&&(192&c[S])==128;)S--;return S<0||S===0?v:S+g[c[S]]>v?S:v})(d),a=d;h!==d.length&&(o.uint8array?(a=d.subarray(0,h),this.leftOver=d.subarray(h,d.length)):(a=d.slice(0,h),this.leftOver=d.slice(h,d.length))),this.push({data:k.utf8decode(a),meta:i.meta})},p.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:k.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},k.Utf8DecodeWorker=p,l.inherits(_,u),_.prototype.processChunk=function(i){this.push({data:k.utf8encode(i.data),meta:i.meta})},k.Utf8EncodeWorker=_},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(b,N,k){var l=b("./support"),o=b("./base64"),n=b("./nodejsUtils"),u=b("./external");function g(r){return r}function y(r,h){for(var a=0;a<r.length;++a)h[a]=255&r.charCodeAt(a);return h}b("setimmediate"),k.newBlob=function(r,h){k.checkSupport("blob");try{return new Blob([r],{type:h})}catch{try{var a=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return a.append(r),a.getBlob(h)}catch{throw new Error("Bug : can't construct the Blob.")}}};var p={stringifyByChunk:function(r,h,a){var c=[],v=0,S=r.length;if(S<=a)return String.fromCharCode.apply(null,r);for(;v<S;)h==="array"||h==="nodebuffer"?c.push(String.fromCharCode.apply(null,r.slice(v,Math.min(v+a,S)))):c.push(String.fromCharCode.apply(null,r.subarray(v,Math.min(v+a,S)))),v+=a;return c.join("")},stringifyByChar:function(r){for(var h="",a=0;a<r.length;a++)h+=String.fromCharCode(r[a]);return h},applyCanBeUsed:{uint8array:(function(){try{return l.uint8array&&String.fromCharCode.apply(null,new Uint8Array(1)).length===1}catch{return!1}})(),nodebuffer:(function(){try{return l.nodebuffer&&String.fromCharCode.apply(null,n.allocBuffer(1)).length===1}catch{return!1}})()}};function _(r){var h=65536,a=k.getTypeOf(r),c=!0;if(a==="uint8array"?c=p.applyCanBeUsed.uint8array:a==="nodebuffer"&&(c=p.applyCanBeUsed.nodebuffer),c)for(;1<h;)try{return p.stringifyByChunk(r,a,h)}catch{h=Math.floor(h/2)}return p.stringifyByChar(r)}function i(r,h){for(var a=0;a<r.length;a++)h[a]=r[a];return h}k.applyFromCharCode=_;var d={};d.string={string:g,array:function(r){return y(r,new Array(r.length))},arraybuffer:function(r){return d.string.uint8array(r).buffer},uint8array:function(r){return y(r,new Uint8Array(r.length))},nodebuffer:function(r){return y(r,n.allocBuffer(r.length))}},d.array={string:_,array:g,arraybuffer:function(r){return new Uint8Array(r).buffer},uint8array:function(r){return new Uint8Array(r)},nodebuffer:function(r){return n.newBufferFrom(r)}},d.arraybuffer={string:function(r){return _(new Uint8Array(r))},array:function(r){return i(new Uint8Array(r),new Array(r.byteLength))},arraybuffer:g,uint8array:function(r){return new Uint8Array(r)},nodebuffer:function(r){return n.newBufferFrom(new Uint8Array(r))}},d.uint8array={string:_,array:function(r){return i(r,new Array(r.length))},arraybuffer:function(r){return r.buffer},uint8array:g,nodebuffer:function(r){return n.newBufferFrom(r)}},d.nodebuffer={string:_,array:function(r){return i(r,new Array(r.length))},arraybuffer:function(r){return d.nodebuffer.uint8array(r).buffer},uint8array:function(r){return i(r,new Uint8Array(r.length))},nodebuffer:g},k.transformTo=function(r,h){if(h=h||"",!r)return h;k.checkSupport(r);var a=k.getTypeOf(h);return d[a][r](h)},k.resolve=function(r){for(var h=r.split("/"),a=[],c=0;c<h.length;c++){var v=h[c];v==="."||v===""&&c!==0&&c!==h.length-1||(v===".."?a.pop():a.push(v))}return a.join("/")},k.getTypeOf=function(r){return typeof r=="string"?"string":Object.prototype.toString.call(r)==="[object Array]"?"array":l.nodebuffer&&n.isBuffer(r)?"nodebuffer":l.uint8array&&r instanceof Uint8Array?"uint8array":l.arraybuffer&&r instanceof ArrayBuffer?"arraybuffer":void 0},k.checkSupport=function(r){if(!l[r.toLowerCase()])throw new Error(r+" is not supported by this platform")},k.MAX_VALUE_16BITS=65535,k.MAX_VALUE_32BITS=-1,k.pretty=function(r){var h,a,c="";for(a=0;a<(r||"").length;a++)c+="\\x"+((h=r.charCodeAt(a))<16?"0":"")+h.toString(16).toUpperCase();return c},k.delay=function(r,h,a){setImmediate(function(){r.apply(a||null,h||[])})},k.inherits=function(r,h){function a(){}a.prototype=h.prototype,r.prototype=new a},k.extend=function(){var r,h,a={};for(r=0;r<arguments.length;r++)for(h in arguments[r])Object.prototype.hasOwnProperty.call(arguments[r],h)&&a[h]===void 0&&(a[h]=arguments[r][h]);return a},k.prepareContent=function(r,h,a,c,v){return u.Promise.resolve(h).then(function(S){return l.blob&&(S instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(S))!==-1)&&typeof FileReader<"u"?new u.Promise(function(x,D){var O=new FileReader;O.onload=function(j){x(j.target.result)},O.onerror=function(j){D(j.target.error)},O.readAsArrayBuffer(S)}):S}).then(function(S){var x=k.getTypeOf(S);return x?(x==="arraybuffer"?S=k.transformTo("uint8array",S):x==="string"&&(v?S=o.decode(S):a&&c!==!0&&(S=(function(D){return y(D,l.uint8array?new Uint8Array(D.length):new Array(D.length))})(S))),S):u.Promise.reject(new Error("Can't read the data of '"+r+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,setimmediate:54}],33:[function(b,N,k){var l=b("./reader/readerFor"),o=b("./utils"),n=b("./signature"),u=b("./zipEntry"),g=b("./support");function y(p){this.files=[],this.loadOptions=p}y.prototype={checkSignature:function(p){if(!this.reader.readAndCheckSignature(p)){this.reader.index-=4;var _=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+o.pretty(_)+", expected "+o.pretty(p)+")")}},isSignature:function(p,_){var i=this.reader.index;this.reader.setIndex(p);var d=this.reader.readString(4)===_;return this.reader.setIndex(i),d},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var p=this.reader.readData(this.zipCommentLength),_=g.uint8array?"uint8array":"array",i=o.transformTo(_,p);this.zipComment=this.loadOptions.decodeFileName(i)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var p,_,i,d=this.zip64EndOfCentralSize-44;0<d;)p=this.reader.readInt(2),_=this.reader.readInt(4),i=this.reader.readData(_),this.zip64ExtensibleData[p]={id:p,length:_,value:i}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var p,_;for(p=0;p<this.files.length;p++)_=this.files[p],this.reader.setIndex(_.localHeaderOffset),this.checkSignature(n.LOCAL_FILE_HEADER),_.readLocalPart(this.reader),_.handleUTF8(),_.processAttributes()},readCentralDir:function(){var p;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(n.CENTRAL_FILE_HEADER);)(p=new u({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(p);if(this.centralDirRecords!==this.files.length&&this.centralDirRecords!==0&&this.files.length===0)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var p=this.reader.lastIndexOfSignature(n.CENTRAL_DIRECTORY_END);if(p<0)throw this.isSignature(0,n.LOCAL_FILE_HEADER)?new Error("Corrupted zip: can't find end of central directory"):new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(p);var _=p;if(this.checkSignature(n.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===o.MAX_VALUE_16BITS||this.diskWithCentralDirStart===o.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===o.MAX_VALUE_16BITS||this.centralDirRecords===o.MAX_VALUE_16BITS||this.centralDirSize===o.MAX_VALUE_32BITS||this.centralDirOffset===o.MAX_VALUE_32BITS){if(this.zip64=!0,(p=this.reader.lastIndexOfSignature(n.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(p),this.checkSignature(n.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,n.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(n.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(n.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var i=this.centralDirOffset+this.centralDirSize;this.zip64&&(i+=20,i+=12+this.zip64EndOfCentralSize);var d=_-i;if(0<d)this.isSignature(_,n.CENTRAL_FILE_HEADER)||(this.reader.zero=d);else if(d<0)throw new Error("Corrupted zip: missing "+Math.abs(d)+" bytes.")},prepareReader:function(p){this.reader=l(p)},load:function(p){this.prepareReader(p),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},N.exports=y},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(b,N,k){var l=b("./reader/readerFor"),o=b("./utils"),n=b("./compressedObject"),u=b("./crc32"),g=b("./utf8"),y=b("./compressions"),p=b("./support");function _(i,d){this.options=i,this.loadOptions=d}_.prototype={isEncrypted:function(){return(1&this.bitFlag)==1},useUTF8:function(){return(2048&this.bitFlag)==2048},readLocalPart:function(i){var d,r;if(i.skip(22),this.fileNameLength=i.readInt(2),r=i.readInt(2),this.fileName=i.readData(this.fileNameLength),i.skip(r),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if((d=(function(h){for(var a in y)if(Object.prototype.hasOwnProperty.call(y,a)&&y[a].magic===h)return y[a];return null})(this.compressionMethod))===null)throw new Error("Corrupted zip : compression "+o.pretty(this.compressionMethod)+" unknown (inner file : "+o.transformTo("string",this.fileName)+")");this.decompressed=new n(this.compressedSize,this.uncompressedSize,this.crc32,d,i.readData(this.compressedSize))},readCentralPart:function(i){this.versionMadeBy=i.readInt(2),i.skip(2),this.bitFlag=i.readInt(2),this.compressionMethod=i.readString(2),this.date=i.readDate(),this.crc32=i.readInt(4),this.compressedSize=i.readInt(4),this.uncompressedSize=i.readInt(4);var d=i.readInt(2);if(this.extraFieldsLength=i.readInt(2),this.fileCommentLength=i.readInt(2),this.diskNumberStart=i.readInt(2),this.internalFileAttributes=i.readInt(2),this.externalFileAttributes=i.readInt(4),this.localHeaderOffset=i.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");i.skip(d),this.readExtraFields(i),this.parseZIP64ExtraField(i),this.fileComment=i.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var i=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),i==0&&(this.dosPermissions=63&this.externalFileAttributes),i==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var i=l(this.extraFields[1].value);this.uncompressedSize===o.MAX_VALUE_32BITS&&(this.uncompressedSize=i.readInt(8)),this.compressedSize===o.MAX_VALUE_32BITS&&(this.compressedSize=i.readInt(8)),this.localHeaderOffset===o.MAX_VALUE_32BITS&&(this.localHeaderOffset=i.readInt(8)),this.diskNumberStart===o.MAX_VALUE_32BITS&&(this.diskNumberStart=i.readInt(4))}},readExtraFields:function(i){var d,r,h,a=i.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});i.index+4<a;)d=i.readInt(2),r=i.readInt(2),h=i.readData(r),this.extraFields[d]={id:d,length:r,value:h};i.setIndex(a)},handleUTF8:function(){var i=p.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=g.utf8decode(this.fileName),this.fileCommentStr=g.utf8decode(this.fileComment);else{var d=this.findExtraFieldUnicodePath();if(d!==null)this.fileNameStr=d;else{var r=o.transformTo(i,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(r)}var h=this.findExtraFieldUnicodeComment();if(h!==null)this.fileCommentStr=h;else{var a=o.transformTo(i,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(a)}}},findExtraFieldUnicodePath:function(){var i=this.extraFields[28789];if(i){var d=l(i.value);return d.readInt(1)!==1||u(this.fileName)!==d.readInt(4)?null:g.utf8decode(d.readData(i.length-5))}return null},findExtraFieldUnicodeComment:function(){var i=this.extraFields[25461];if(i){var d=l(i.value);return d.readInt(1)!==1||u(this.fileComment)!==d.readInt(4)?null:g.utf8decode(d.readData(i.length-5))}return null}},N.exports=_},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(b,N,k){function l(d,r,h){this.name=d,this.dir=h.dir,this.date=h.date,this.comment=h.comment,this.unixPermissions=h.unixPermissions,this.dosPermissions=h.dosPermissions,this._data=r,this._dataBinary=h.binary,this.options={compression:h.compression,compressionOptions:h.compressionOptions}}var o=b("./stream/StreamHelper"),n=b("./stream/DataWorker"),u=b("./utf8"),g=b("./compressedObject"),y=b("./stream/GenericWorker");l.prototype={internalStream:function(d){var r=null,h="string";try{if(!d)throw new Error("No output type specified.");var a=(h=d.toLowerCase())==="string"||h==="text";h!=="binarystring"&&h!=="text"||(h="string"),r=this._decompressWorker();var c=!this._dataBinary;c&&!a&&(r=r.pipe(new u.Utf8EncodeWorker)),!c&&a&&(r=r.pipe(new u.Utf8DecodeWorker))}catch(v){(r=new y("error")).error(v)}return new o(r,h,"")},async:function(d,r){return this.internalStream(d).accumulate(r)},nodeStream:function(d,r){return this.internalStream(d||"nodebuffer").toNodejsStream(r)},_compressWorker:function(d,r){if(this._data instanceof g&&this._data.compression.magic===d.magic)return this._data.getCompressedWorker();var h=this._decompressWorker();return this._dataBinary||(h=h.pipe(new u.Utf8EncodeWorker)),g.createWorkerFrom(h,d,r)},_decompressWorker:function(){return this._data instanceof g?this._data.getContentWorker():this._data instanceof y?this._data:new n(this._data)}};for(var p=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],_=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},i=0;i<p.length;i++)l.prototype[p[i]]=_;N.exports=l},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(b,N,k){(function(l){var o,n,u=l.MutationObserver||l.WebKitMutationObserver;if(u){var g=0,y=new u(d),p=l.document.createTextNode("");y.observe(p,{characterData:!0}),o=function(){p.data=g=++g%2}}else if(l.setImmediate||l.MessageChannel===void 0)o="document"in l&&"onreadystatechange"in l.document.createElement("script")?function(){var r=l.document.createElement("script");r.onreadystatechange=function(){d(),r.onreadystatechange=null,r.parentNode.removeChild(r),r=null},l.document.documentElement.appendChild(r)}:function(){setTimeout(d,0)};else{var _=new l.MessageChannel;_.port1.onmessage=d,o=function(){_.port2.postMessage(0)}}var i=[];function d(){var r,h;n=!0;for(var a=i.length;a;){for(h=i,i=[],r=-1;++r<a;)h[r]();a=i.length}n=!1}N.exports=function(r){i.push(r)!==1||n||o()}}).call(this,typeof wt<"u"?wt:typeof self<"u"?self:typeof window<"u"?window:{})},{}],37:[function(b,N,k){var l=b("immediate");function o(){}var n={},u=["REJECTED"],g=["FULFILLED"],y=["PENDING"];function p(a){if(typeof a!="function")throw new TypeError("resolver must be a function");this.state=y,this.queue=[],this.outcome=void 0,a!==o&&r(this,a)}function _(a,c,v){this.promise=a,typeof c=="function"&&(this.onFulfilled=c,this.callFulfilled=this.otherCallFulfilled),typeof v=="function"&&(this.onRejected=v,this.callRejected=this.otherCallRejected)}function i(a,c,v){l(function(){var S;try{S=c(v)}catch(x){return n.reject(a,x)}S===a?n.reject(a,new TypeError("Cannot resolve promise with itself")):n.resolve(a,S)})}function d(a){var c=a&&a.then;if(a&&(typeof a=="object"||typeof a=="function")&&typeof c=="function")return function(){c.apply(a,arguments)}}function r(a,c){var v=!1;function S(O){v||(v=!0,n.reject(a,O))}function x(O){v||(v=!0,n.resolve(a,O))}var D=h(function(){c(x,S)});D.status==="error"&&S(D.value)}function h(a,c){var v={};try{v.value=a(c),v.status="success"}catch(S){v.status="error",v.value=S}return v}(N.exports=p).prototype.finally=function(a){if(typeof a!="function")return this;var c=this.constructor;return this.then(function(v){return c.resolve(a()).then(function(){return v})},function(v){return c.resolve(a()).then(function(){throw v})})},p.prototype.catch=function(a){return this.then(null,a)},p.prototype.then=function(a,c){if(typeof a!="function"&&this.state===g||typeof c!="function"&&this.state===u)return this;var v=new this.constructor(o);return this.state!==y?i(v,this.state===g?a:c,this.outcome):this.queue.push(new _(v,a,c)),v},_.prototype.callFulfilled=function(a){n.resolve(this.promise,a)},_.prototype.otherCallFulfilled=function(a){i(this.promise,this.onFulfilled,a)},_.prototype.callRejected=function(a){n.reject(this.promise,a)},_.prototype.otherCallRejected=function(a){i(this.promise,this.onRejected,a)},n.resolve=function(a,c){var v=h(d,c);if(v.status==="error")return n.reject(a,v.value);var S=v.value;if(S)r(a,S);else{a.state=g,a.outcome=c;for(var x=-1,D=a.queue.length;++x<D;)a.queue[x].callFulfilled(c)}return a},n.reject=function(a,c){a.state=u,a.outcome=c;for(var v=-1,S=a.queue.length;++v<S;)a.queue[v].callRejected(c);return a},p.resolve=function(a){return a instanceof this?a:n.resolve(new this(o),a)},p.reject=function(a){var c=new this(o);return n.reject(c,a)},p.all=function(a){var c=this;if(Object.prototype.toString.call(a)!=="[object Array]")return this.reject(new TypeError("must be an array"));var v=a.length,S=!1;if(!v)return this.resolve([]);for(var x=new Array(v),D=0,O=-1,j=new this(o);++O<v;)I(a[O],O);return j;function I(W,J){c.resolve(W).then(function(m){x[J]=m,++D!==v||S||(S=!0,n.resolve(j,x))},function(m){S||(S=!0,n.reject(j,m))})}},p.race=function(a){var c=this;if(Object.prototype.toString.call(a)!=="[object Array]")return this.reject(new TypeError("must be an array"));var v=a.length,S=!1;if(!v)return this.resolve([]);for(var x=-1,D=new this(o);++x<v;)O=a[x],c.resolve(O).then(function(j){S||(S=!0,n.resolve(D,j))},function(j){S||(S=!0,n.reject(D,j))});var O;return D}},{immediate:36}],38:[function(b,N,k){var l={};(0,b("./lib/utils/common").assign)(l,b("./lib/deflate"),b("./lib/inflate"),b("./lib/zlib/constants")),N.exports=l},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(b,N,k){var l=b("./zlib/deflate"),o=b("./utils/common"),n=b("./utils/strings"),u=b("./zlib/messages"),g=b("./zlib/zstream"),y=Object.prototype.toString,p=0,_=-1,i=0,d=8;function r(a){if(!(this instanceof r))return new r(a);this.options=o.assign({level:_,method:d,chunkSize:16384,windowBits:15,memLevel:8,strategy:i,to:""},a||{});var c=this.options;c.raw&&0<c.windowBits?c.windowBits=-c.windowBits:c.gzip&&0<c.windowBits&&c.windowBits<16&&(c.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new g,this.strm.avail_out=0;var v=l.deflateInit2(this.strm,c.level,c.method,c.windowBits,c.memLevel,c.strategy);if(v!==p)throw new Error(u[v]);if(c.header&&l.deflateSetHeader(this.strm,c.header),c.dictionary){var S;if(S=typeof c.dictionary=="string"?n.string2buf(c.dictionary):y.call(c.dictionary)==="[object ArrayBuffer]"?new Uint8Array(c.dictionary):c.dictionary,(v=l.deflateSetDictionary(this.strm,S))!==p)throw new Error(u[v]);this._dict_set=!0}}function h(a,c){var v=new r(c);if(v.push(a,!0),v.err)throw v.msg||u[v.err];return v.result}r.prototype.push=function(a,c){var v,S,x=this.strm,D=this.options.chunkSize;if(this.ended)return!1;S=c===~~c?c:c===!0?4:0,typeof a=="string"?x.input=n.string2buf(a):y.call(a)==="[object ArrayBuffer]"?x.input=new Uint8Array(a):x.input=a,x.next_in=0,x.avail_in=x.input.length;do{if(x.avail_out===0&&(x.output=new o.Buf8(D),x.next_out=0,x.avail_out=D),(v=l.deflate(x,S))!==1&&v!==p)return this.onEnd(v),!(this.ended=!0);x.avail_out!==0&&(x.avail_in!==0||S!==4&&S!==2)||(this.options.to==="string"?this.onData(n.buf2binstring(o.shrinkBuf(x.output,x.next_out))):this.onData(o.shrinkBuf(x.output,x.next_out)))}while((0<x.avail_in||x.avail_out===0)&&v!==1);return S===4?(v=l.deflateEnd(this.strm),this.onEnd(v),this.ended=!0,v===p):S!==2||(this.onEnd(p),!(x.avail_out=0))},r.prototype.onData=function(a){this.chunks.push(a)},r.prototype.onEnd=function(a){a===p&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=a,this.msg=this.strm.msg},k.Deflate=r,k.deflate=h,k.deflateRaw=function(a,c){return(c=c||{}).raw=!0,h(a,c)},k.gzip=function(a,c){return(c=c||{}).gzip=!0,h(a,c)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(b,N,k){var l=b("./zlib/inflate"),o=b("./utils/common"),n=b("./utils/strings"),u=b("./zlib/constants"),g=b("./zlib/messages"),y=b("./zlib/zstream"),p=b("./zlib/gzheader"),_=Object.prototype.toString;function i(r){if(!(this instanceof i))return new i(r);this.options=o.assign({chunkSize:16384,windowBits:0,to:""},r||{});var h=this.options;h.raw&&0<=h.windowBits&&h.windowBits<16&&(h.windowBits=-h.windowBits,h.windowBits===0&&(h.windowBits=-15)),!(0<=h.windowBits&&h.windowBits<16)||r&&r.windowBits||(h.windowBits+=32),15<h.windowBits&&h.windowBits<48&&(15&h.windowBits)==0&&(h.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new y,this.strm.avail_out=0;var a=l.inflateInit2(this.strm,h.windowBits);if(a!==u.Z_OK)throw new Error(g[a]);this.header=new p,l.inflateGetHeader(this.strm,this.header)}function d(r,h){var a=new i(h);if(a.push(r,!0),a.err)throw a.msg||g[a.err];return a.result}i.prototype.push=function(r,h){var a,c,v,S,x,D,O=this.strm,j=this.options.chunkSize,I=this.options.dictionary,W=!1;if(this.ended)return!1;c=h===~~h?h:h===!0?u.Z_FINISH:u.Z_NO_FLUSH,typeof r=="string"?O.input=n.binstring2buf(r):_.call(r)==="[object ArrayBuffer]"?O.input=new Uint8Array(r):O.input=r,O.next_in=0,O.avail_in=O.input.length;do{if(O.avail_out===0&&(O.output=new o.Buf8(j),O.next_out=0,O.avail_out=j),(a=l.inflate(O,u.Z_NO_FLUSH))===u.Z_NEED_DICT&&I&&(D=typeof I=="string"?n.string2buf(I):_.call(I)==="[object ArrayBuffer]"?new Uint8Array(I):I,a=l.inflateSetDictionary(this.strm,D)),a===u.Z_BUF_ERROR&&W===!0&&(a=u.Z_OK,W=!1),a!==u.Z_STREAM_END&&a!==u.Z_OK)return this.onEnd(a),!(this.ended=!0);O.next_out&&(O.avail_out!==0&&a!==u.Z_STREAM_END&&(O.avail_in!==0||c!==u.Z_FINISH&&c!==u.Z_SYNC_FLUSH)||(this.options.to==="string"?(v=n.utf8border(O.output,O.next_out),S=O.next_out-v,x=n.buf2string(O.output,v),O.next_out=S,O.avail_out=j-S,S&&o.arraySet(O.output,O.output,v,S,0),this.onData(x)):this.onData(o.shrinkBuf(O.output,O.next_out)))),O.avail_in===0&&O.avail_out===0&&(W=!0)}while((0<O.avail_in||O.avail_out===0)&&a!==u.Z_STREAM_END);return a===u.Z_STREAM_END&&(c=u.Z_FINISH),c===u.Z_FINISH?(a=l.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===u.Z_OK):c!==u.Z_SYNC_FLUSH||(this.onEnd(u.Z_OK),!(O.avail_out=0))},i.prototype.onData=function(r){this.chunks.push(r)},i.prototype.onEnd=function(r){r===u.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=r,this.msg=this.strm.msg},k.Inflate=i,k.inflate=d,k.inflateRaw=function(r,h){return(h=h||{}).raw=!0,d(r,h)},k.ungzip=d},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(b,N,k){var l=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";k.assign=function(u){for(var g=Array.prototype.slice.call(arguments,1);g.length;){var y=g.shift();if(y){if(typeof y!="object")throw new TypeError(y+"must be non-object");for(var p in y)y.hasOwnProperty(p)&&(u[p]=y[p])}}return u},k.shrinkBuf=function(u,g){return u.length===g?u:u.subarray?u.subarray(0,g):(u.length=g,u)};var o={arraySet:function(u,g,y,p,_){if(g.subarray&&u.subarray)u.set(g.subarray(y,y+p),_);else for(var i=0;i<p;i++)u[_+i]=g[y+i]},flattenChunks:function(u){var g,y,p,_,i,d;for(g=p=0,y=u.length;g<y;g++)p+=u[g].length;for(d=new Uint8Array(p),g=_=0,y=u.length;g<y;g++)i=u[g],d.set(i,_),_+=i.length;return d}},n={arraySet:function(u,g,y,p,_){for(var i=0;i<p;i++)u[_+i]=g[y+i]},flattenChunks:function(u){return[].concat.apply([],u)}};k.setTyped=function(u){u?(k.Buf8=Uint8Array,k.Buf16=Uint16Array,k.Buf32=Int32Array,k.assign(k,o)):(k.Buf8=Array,k.Buf16=Array,k.Buf32=Array,k.assign(k,n))},k.setTyped(l)},{}],42:[function(b,N,k){var l=b("./common"),o=!0,n=!0;try{String.fromCharCode.apply(null,[0])}catch{o=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{n=!1}for(var u=new l.Buf8(256),g=0;g<256;g++)u[g]=252<=g?6:248<=g?5:240<=g?4:224<=g?3:192<=g?2:1;function y(p,_){if(_<65537&&(p.subarray&&n||!p.subarray&&o))return String.fromCharCode.apply(null,l.shrinkBuf(p,_));for(var i="",d=0;d<_;d++)i+=String.fromCharCode(p[d]);return i}u[254]=u[254]=1,k.string2buf=function(p){var _,i,d,r,h,a=p.length,c=0;for(r=0;r<a;r++)(64512&(i=p.charCodeAt(r)))==55296&&r+1<a&&(64512&(d=p.charCodeAt(r+1)))==56320&&(i=65536+(i-55296<<10)+(d-56320),r++),c+=i<128?1:i<2048?2:i<65536?3:4;for(_=new l.Buf8(c),r=h=0;h<c;r++)(64512&(i=p.charCodeAt(r)))==55296&&r+1<a&&(64512&(d=p.charCodeAt(r+1)))==56320&&(i=65536+(i-55296<<10)+(d-56320),r++),i<128?_[h++]=i:(i<2048?_[h++]=192|i>>>6:(i<65536?_[h++]=224|i>>>12:(_[h++]=240|i>>>18,_[h++]=128|i>>>12&63),_[h++]=128|i>>>6&63),_[h++]=128|63&i);return _},k.buf2binstring=function(p){return y(p,p.length)},k.binstring2buf=function(p){for(var _=new l.Buf8(p.length),i=0,d=_.length;i<d;i++)_[i]=p.charCodeAt(i);return _},k.buf2string=function(p,_){var i,d,r,h,a=_||p.length,c=new Array(2*a);for(i=d=0;i<a;)if((r=p[i++])<128)c[d++]=r;else if(4<(h=u[r]))c[d++]=65533,i+=h-1;else{for(r&=h===2?31:h===3?15:7;1<h&&i<a;)r=r<<6|63&p[i++],h--;1<h?c[d++]=65533:r<65536?c[d++]=r:(r-=65536,c[d++]=55296|r>>10&1023,c[d++]=56320|1023&r)}return y(c,d)},k.utf8border=function(p,_){var i;for((_=_||p.length)>p.length&&(_=p.length),i=_-1;0<=i&&(192&p[i])==128;)i--;return i<0||i===0?_:i+u[p[i]]>_?i:_}},{"./common":41}],43:[function(b,N,k){N.exports=function(l,o,n,u){for(var g=65535&l|0,y=l>>>16&65535|0,p=0;n!==0;){for(n-=p=2e3<n?2e3:n;y=y+(g=g+o[u++]|0)|0,--p;);g%=65521,y%=65521}return g|y<<16|0}},{}],44:[function(b,N,k){N.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(b,N,k){var l=(function(){for(var o,n=[],u=0;u<256;u++){o=u;for(var g=0;g<8;g++)o=1&o?3988292384^o>>>1:o>>>1;n[u]=o}return n})();N.exports=function(o,n,u,g){var y=l,p=g+u;o^=-1;for(var _=g;_<p;_++)o=o>>>8^y[255&(o^n[_])];return-1^o}},{}],46:[function(b,N,k){var l,o=b("../utils/common"),n=b("./trees"),u=b("./adler32"),g=b("./crc32"),y=b("./messages"),p=0,_=4,i=0,d=-2,r=-1,h=4,a=2,c=8,v=9,S=286,x=30,D=19,O=2*S+1,j=15,I=3,W=258,J=W+I+1,m=42,B=113,e=1,R=2,$=3,P=4;function q(t,T){return t.msg=y[T],T}function L(t){return(t<<1)-(4<t?9:0)}function V(t){for(var T=t.length;0<=--T;)t[T]=0}function A(t){var T=t.state,C=T.pending;C>t.avail_out&&(C=t.avail_out),C!==0&&(o.arraySet(t.output,T.pending_buf,T.pending_out,C,t.next_out),t.next_out+=C,T.pending_out+=C,t.total_out+=C,t.avail_out-=C,T.pending-=C,T.pending===0&&(T.pending_out=0))}function E(t,T){n._tr_flush_block(t,0<=t.block_start?t.block_start:-1,t.strstart-t.block_start,T),t.block_start=t.strstart,A(t.strm)}function X(t,T){t.pending_buf[t.pending++]=T}function G(t,T){t.pending_buf[t.pending++]=T>>>8&255,t.pending_buf[t.pending++]=255&T}function H(t,T){var C,f,s=t.max_chain_length,w=t.strstart,F=t.prev_length,U=t.nice_match,z=t.strstart>t.w_size-J?t.strstart-(t.w_size-J):0,Z=t.window,K=t.w_mask,M=t.prev,Y=t.strstart+W,rt=Z[w+F-1],tt=Z[w+F];t.prev_length>=t.good_match&&(s>>=2),U>t.lookahead&&(U=t.lookahead);do if(Z[(C=T)+F]===tt&&Z[C+F-1]===rt&&Z[C]===Z[w]&&Z[++C]===Z[w+1]){w+=2,C++;do;while(Z[++w]===Z[++C]&&Z[++w]===Z[++C]&&Z[++w]===Z[++C]&&Z[++w]===Z[++C]&&Z[++w]===Z[++C]&&Z[++w]===Z[++C]&&Z[++w]===Z[++C]&&Z[++w]===Z[++C]&&w<Y);if(f=W-(Y-w),w=Y-W,F<f){if(t.match_start=T,U<=(F=f))break;rt=Z[w+F-1],tt=Z[w+F]}}while((T=M[T&K])>z&&--s!=0);return F<=t.lookahead?F:t.lookahead}function nt(t){var T,C,f,s,w,F,U,z,Z,K,M=t.w_size;do{if(s=t.window_size-t.lookahead-t.strstart,t.strstart>=M+(M-J)){for(o.arraySet(t.window,t.window,M,M,0),t.match_start-=M,t.strstart-=M,t.block_start-=M,T=C=t.hash_size;f=t.head[--T],t.head[T]=M<=f?f-M:0,--C;);for(T=C=M;f=t.prev[--T],t.prev[T]=M<=f?f-M:0,--C;);s+=M}if(t.strm.avail_in===0)break;if(F=t.strm,U=t.window,z=t.strstart+t.lookahead,Z=s,K=void 0,K=F.avail_in,Z<K&&(K=Z),C=K===0?0:(F.avail_in-=K,o.arraySet(U,F.input,F.next_in,K,z),F.state.wrap===1?F.adler=u(F.adler,U,K,z):F.state.wrap===2&&(F.adler=g(F.adler,U,K,z)),F.next_in+=K,F.total_in+=K,K),t.lookahead+=C,t.lookahead+t.insert>=I)for(w=t.strstart-t.insert,t.ins_h=t.window[w],t.ins_h=(t.ins_h<<t.hash_shift^t.window[w+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[w+I-1])&t.hash_mask,t.prev[w&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=w,w++,t.insert--,!(t.lookahead+t.insert<I)););}while(t.lookahead<J&&t.strm.avail_in!==0)}function ht(t,T){for(var C,f;;){if(t.lookahead<J){if(nt(t),t.lookahead<J&&T===p)return e;if(t.lookahead===0)break}if(C=0,t.lookahead>=I&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+I-1])&t.hash_mask,C=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),C!==0&&t.strstart-C<=t.w_size-J&&(t.match_length=H(t,C)),t.match_length>=I)if(f=n._tr_tally(t,t.strstart-t.match_start,t.match_length-I),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=I){for(t.match_length--;t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+I-1])&t.hash_mask,C=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart,--t.match_length!=0;);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else f=n._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(f&&(E(t,!1),t.strm.avail_out===0))return e}return t.insert=t.strstart<I-1?t.strstart:I-1,T===_?(E(t,!0),t.strm.avail_out===0?$:P):t.last_lit&&(E(t,!1),t.strm.avail_out===0)?e:R}function Q(t,T){for(var C,f,s;;){if(t.lookahead<J){if(nt(t),t.lookahead<J&&T===p)return e;if(t.lookahead===0)break}if(C=0,t.lookahead>=I&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+I-1])&t.hash_mask,C=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=I-1,C!==0&&t.prev_length<t.max_lazy_match&&t.strstart-C<=t.w_size-J&&(t.match_length=H(t,C),t.match_length<=5&&(t.strategy===1||t.match_length===I&&4096<t.strstart-t.match_start)&&(t.match_length=I-1)),t.prev_length>=I&&t.match_length<=t.prev_length){for(s=t.strstart+t.lookahead-I,f=n._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-I),t.lookahead-=t.prev_length-1,t.prev_length-=2;++t.strstart<=s&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+I-1])&t.hash_mask,C=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),--t.prev_length!=0;);if(t.match_available=0,t.match_length=I-1,t.strstart++,f&&(E(t,!1),t.strm.avail_out===0))return e}else if(t.match_available){if((f=n._tr_tally(t,0,t.window[t.strstart-1]))&&E(t,!1),t.strstart++,t.lookahead--,t.strm.avail_out===0)return e}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(f=n._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<I-1?t.strstart:I-1,T===_?(E(t,!0),t.strm.avail_out===0?$:P):t.last_lit&&(E(t,!1),t.strm.avail_out===0)?e:R}function et(t,T,C,f,s){this.good_length=t,this.max_lazy=T,this.nice_length=C,this.max_chain=f,this.func=s}function st(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=c,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new o.Buf16(2*O),this.dyn_dtree=new o.Buf16(2*(2*x+1)),this.bl_tree=new o.Buf16(2*(2*D+1)),V(this.dyn_ltree),V(this.dyn_dtree),V(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new o.Buf16(j+1),this.heap=new o.Buf16(2*S+1),V(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new o.Buf16(2*S+1),V(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function it(t){var T;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=a,(T=t.state).pending=0,T.pending_out=0,T.wrap<0&&(T.wrap=-T.wrap),T.status=T.wrap?m:B,t.adler=T.wrap===2?0:1,T.last_flush=p,n._tr_init(T),i):q(t,d)}function ft(t){var T=it(t);return T===i&&(function(C){C.window_size=2*C.w_size,V(C.head),C.max_lazy_match=l[C.level].max_lazy,C.good_match=l[C.level].good_length,C.nice_match=l[C.level].nice_length,C.max_chain_length=l[C.level].max_chain,C.strstart=0,C.block_start=0,C.lookahead=0,C.insert=0,C.match_length=C.prev_length=I-1,C.match_available=0,C.ins_h=0})(t.state),T}function lt(t,T,C,f,s,w){if(!t)return d;var F=1;if(T===r&&(T=6),f<0?(F=0,f=-f):15<f&&(F=2,f-=16),s<1||v<s||C!==c||f<8||15<f||T<0||9<T||w<0||h<w)return q(t,d);f===8&&(f=9);var U=new st;return(t.state=U).strm=t,U.wrap=F,U.gzhead=null,U.w_bits=f,U.w_size=1<<U.w_bits,U.w_mask=U.w_size-1,U.hash_bits=s+7,U.hash_size=1<<U.hash_bits,U.hash_mask=U.hash_size-1,U.hash_shift=~~((U.hash_bits+I-1)/I),U.window=new o.Buf8(2*U.w_size),U.head=new o.Buf16(U.hash_size),U.prev=new o.Buf16(U.w_size),U.lit_bufsize=1<<s+6,U.pending_buf_size=4*U.lit_bufsize,U.pending_buf=new o.Buf8(U.pending_buf_size),U.d_buf=1*U.lit_bufsize,U.l_buf=3*U.lit_bufsize,U.level=T,U.strategy=w,U.method=C,ft(t)}l=[new et(0,0,0,0,function(t,T){var C=65535;for(C>t.pending_buf_size-5&&(C=t.pending_buf_size-5);;){if(t.lookahead<=1){if(nt(t),t.lookahead===0&&T===p)return e;if(t.lookahead===0)break}t.strstart+=t.lookahead,t.lookahead=0;var f=t.block_start+C;if((t.strstart===0||t.strstart>=f)&&(t.lookahead=t.strstart-f,t.strstart=f,E(t,!1),t.strm.avail_out===0)||t.strstart-t.block_start>=t.w_size-J&&(E(t,!1),t.strm.avail_out===0))return e}return t.insert=0,T===_?(E(t,!0),t.strm.avail_out===0?$:P):(t.strstart>t.block_start&&(E(t,!1),t.strm.avail_out),e)}),new et(4,4,8,4,ht),new et(4,5,16,8,ht),new et(4,6,32,32,ht),new et(4,4,16,16,Q),new et(8,16,32,32,Q),new et(8,16,128,128,Q),new et(8,32,128,256,Q),new et(32,128,258,1024,Q),new et(32,258,258,4096,Q)],k.deflateInit=function(t,T){return lt(t,T,c,15,8,0)},k.deflateInit2=lt,k.deflateReset=ft,k.deflateResetKeep=it,k.deflateSetHeader=function(t,T){return t&&t.state?t.state.wrap!==2?d:(t.state.gzhead=T,i):d},k.deflate=function(t,T){var C,f,s,w;if(!t||!t.state||5<T||T<0)return t?q(t,d):d;if(f=t.state,!t.output||!t.input&&t.avail_in!==0||f.status===666&&T!==_)return q(t,t.avail_out===0?-5:d);if(f.strm=t,C=f.last_flush,f.last_flush=T,f.status===m)if(f.wrap===2)t.adler=0,X(f,31),X(f,139),X(f,8),f.gzhead?(X(f,(f.gzhead.text?1:0)+(f.gzhead.hcrc?2:0)+(f.gzhead.extra?4:0)+(f.gzhead.name?8:0)+(f.gzhead.comment?16:0)),X(f,255&f.gzhead.time),X(f,f.gzhead.time>>8&255),X(f,f.gzhead.time>>16&255),X(f,f.gzhead.time>>24&255),X(f,f.level===9?2:2<=f.strategy||f.level<2?4:0),X(f,255&f.gzhead.os),f.gzhead.extra&&f.gzhead.extra.length&&(X(f,255&f.gzhead.extra.length),X(f,f.gzhead.extra.length>>8&255)),f.gzhead.hcrc&&(t.adler=g(t.adler,f.pending_buf,f.pending,0)),f.gzindex=0,f.status=69):(X(f,0),X(f,0),X(f,0),X(f,0),X(f,0),X(f,f.level===9?2:2<=f.strategy||f.level<2?4:0),X(f,3),f.status=B);else{var F=c+(f.w_bits-8<<4)<<8;F|=(2<=f.strategy||f.level<2?0:f.level<6?1:f.level===6?2:3)<<6,f.strstart!==0&&(F|=32),F+=31-F%31,f.status=B,G(f,F),f.strstart!==0&&(G(f,t.adler>>>16),G(f,65535&t.adler)),t.adler=1}if(f.status===69)if(f.gzhead.extra){for(s=f.pending;f.gzindex<(65535&f.gzhead.extra.length)&&(f.pending!==f.pending_buf_size||(f.gzhead.hcrc&&f.pending>s&&(t.adler=g(t.adler,f.pending_buf,f.pending-s,s)),A(t),s=f.pending,f.pending!==f.pending_buf_size));)X(f,255&f.gzhead.extra[f.gzindex]),f.gzindex++;f.gzhead.hcrc&&f.pending>s&&(t.adler=g(t.adler,f.pending_buf,f.pending-s,s)),f.gzindex===f.gzhead.extra.length&&(f.gzindex=0,f.status=73)}else f.status=73;if(f.status===73)if(f.gzhead.name){s=f.pending;do{if(f.pending===f.pending_buf_size&&(f.gzhead.hcrc&&f.pending>s&&(t.adler=g(t.adler,f.pending_buf,f.pending-s,s)),A(t),s=f.pending,f.pending===f.pending_buf_size)){w=1;break}w=f.gzindex<f.gzhead.name.length?255&f.gzhead.name.charCodeAt(f.gzindex++):0,X(f,w)}while(w!==0);f.gzhead.hcrc&&f.pending>s&&(t.adler=g(t.adler,f.pending_buf,f.pending-s,s)),w===0&&(f.gzindex=0,f.status=91)}else f.status=91;if(f.status===91)if(f.gzhead.comment){s=f.pending;do{if(f.pending===f.pending_buf_size&&(f.gzhead.hcrc&&f.pending>s&&(t.adler=g(t.adler,f.pending_buf,f.pending-s,s)),A(t),s=f.pending,f.pending===f.pending_buf_size)){w=1;break}w=f.gzindex<f.gzhead.comment.length?255&f.gzhead.comment.charCodeAt(f.gzindex++):0,X(f,w)}while(w!==0);f.gzhead.hcrc&&f.pending>s&&(t.adler=g(t.adler,f.pending_buf,f.pending-s,s)),w===0&&(f.status=103)}else f.status=103;if(f.status===103&&(f.gzhead.hcrc?(f.pending+2>f.pending_buf_size&&A(t),f.pending+2<=f.pending_buf_size&&(X(f,255&t.adler),X(f,t.adler>>8&255),t.adler=0,f.status=B)):f.status=B),f.pending!==0){if(A(t),t.avail_out===0)return f.last_flush=-1,i}else if(t.avail_in===0&&L(T)<=L(C)&&T!==_)return q(t,-5);if(f.status===666&&t.avail_in!==0)return q(t,-5);if(t.avail_in!==0||f.lookahead!==0||T!==p&&f.status!==666){var U=f.strategy===2?(function(z,Z){for(var K;;){if(z.lookahead===0&&(nt(z),z.lookahead===0)){if(Z===p)return e;break}if(z.match_length=0,K=n._tr_tally(z,0,z.window[z.strstart]),z.lookahead--,z.strstart++,K&&(E(z,!1),z.strm.avail_out===0))return e}return z.insert=0,Z===_?(E(z,!0),z.strm.avail_out===0?$:P):z.last_lit&&(E(z,!1),z.strm.avail_out===0)?e:R})(f,T):f.strategy===3?(function(z,Z){for(var K,M,Y,rt,tt=z.window;;){if(z.lookahead<=W){if(nt(z),z.lookahead<=W&&Z===p)return e;if(z.lookahead===0)break}if(z.match_length=0,z.lookahead>=I&&0<z.strstart&&(M=tt[Y=z.strstart-1])===tt[++Y]&&M===tt[++Y]&&M===tt[++Y]){rt=z.strstart+W;do;while(M===tt[++Y]&&M===tt[++Y]&&M===tt[++Y]&&M===tt[++Y]&&M===tt[++Y]&&M===tt[++Y]&&M===tt[++Y]&&M===tt[++Y]&&Y<rt);z.match_length=W-(rt-Y),z.match_length>z.lookahead&&(z.match_length=z.lookahead)}if(z.match_length>=I?(K=n._tr_tally(z,1,z.match_length-I),z.lookahead-=z.match_length,z.strstart+=z.match_length,z.match_length=0):(K=n._tr_tally(z,0,z.window[z.strstart]),z.lookahead--,z.strstart++),K&&(E(z,!1),z.strm.avail_out===0))return e}return z.insert=0,Z===_?(E(z,!0),z.strm.avail_out===0?$:P):z.last_lit&&(E(z,!1),z.strm.avail_out===0)?e:R})(f,T):l[f.level].func(f,T);if(U!==$&&U!==P||(f.status=666),U===e||U===$)return t.avail_out===0&&(f.last_flush=-1),i;if(U===R&&(T===1?n._tr_align(f):T!==5&&(n._tr_stored_block(f,0,0,!1),T===3&&(V(f.head),f.lookahead===0&&(f.strstart=0,f.block_start=0,f.insert=0))),A(t),t.avail_out===0))return f.last_flush=-1,i}return T!==_?i:f.wrap<=0?1:(f.wrap===2?(X(f,255&t.adler),X(f,t.adler>>8&255),X(f,t.adler>>16&255),X(f,t.adler>>24&255),X(f,255&t.total_in),X(f,t.total_in>>8&255),X(f,t.total_in>>16&255),X(f,t.total_in>>24&255)):(G(f,t.adler>>>16),G(f,65535&t.adler)),A(t),0<f.wrap&&(f.wrap=-f.wrap),f.pending!==0?i:1)},k.deflateEnd=function(t){var T;return t&&t.state?(T=t.state.status)!==m&&T!==69&&T!==73&&T!==91&&T!==103&&T!==B&&T!==666?q(t,d):(t.state=null,T===B?q(t,-3):i):d},k.deflateSetDictionary=function(t,T){var C,f,s,w,F,U,z,Z,K=T.length;if(!t||!t.state||(w=(C=t.state).wrap)===2||w===1&&C.status!==m||C.lookahead)return d;for(w===1&&(t.adler=u(t.adler,T,K,0)),C.wrap=0,K>=C.w_size&&(w===0&&(V(C.head),C.strstart=0,C.block_start=0,C.insert=0),Z=new o.Buf8(C.w_size),o.arraySet(Z,T,K-C.w_size,C.w_size,0),T=Z,K=C.w_size),F=t.avail_in,U=t.next_in,z=t.input,t.avail_in=K,t.next_in=0,t.input=T,nt(C);C.lookahead>=I;){for(f=C.strstart,s=C.lookahead-(I-1);C.ins_h=(C.ins_h<<C.hash_shift^C.window[f+I-1])&C.hash_mask,C.prev[f&C.w_mask]=C.head[C.ins_h],C.head[C.ins_h]=f,f++,--s;);C.strstart=f,C.lookahead=I-1,nt(C)}return C.strstart+=C.lookahead,C.block_start=C.strstart,C.insert=C.lookahead,C.lookahead=0,C.match_length=C.prev_length=I-1,C.match_available=0,t.next_in=U,t.input=z,t.avail_in=F,C.wrap=w,i},k.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(b,N,k){N.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(b,N,k){N.exports=function(l,o){var n,u,g,y,p,_,i,d,r,h,a,c,v,S,x,D,O,j,I,W,J,m,B,e,R;n=l.state,u=l.next_in,e=l.input,g=u+(l.avail_in-5),y=l.next_out,R=l.output,p=y-(o-l.avail_out),_=y+(l.avail_out-257),i=n.dmax,d=n.wsize,r=n.whave,h=n.wnext,a=n.window,c=n.hold,v=n.bits,S=n.lencode,x=n.distcode,D=(1<<n.lenbits)-1,O=(1<<n.distbits)-1;t:do{v<15&&(c+=e[u++]<<v,v+=8,c+=e[u++]<<v,v+=8),j=S[c&D];e:for(;;){if(c>>>=I=j>>>24,v-=I,(I=j>>>16&255)===0)R[y++]=65535&j;else{if(!(16&I)){if((64&I)==0){j=S[(65535&j)+(c&(1<<I)-1)];continue e}if(32&I){n.mode=12;break t}l.msg="invalid literal/length code",n.mode=30;break t}W=65535&j,(I&=15)&&(v<I&&(c+=e[u++]<<v,v+=8),W+=c&(1<<I)-1,c>>>=I,v-=I),v<15&&(c+=e[u++]<<v,v+=8,c+=e[u++]<<v,v+=8),j=x[c&O];r:for(;;){if(c>>>=I=j>>>24,v-=I,!(16&(I=j>>>16&255))){if((64&I)==0){j=x[(65535&j)+(c&(1<<I)-1)];continue r}l.msg="invalid distance code",n.mode=30;break t}if(J=65535&j,v<(I&=15)&&(c+=e[u++]<<v,(v+=8)<I&&(c+=e[u++]<<v,v+=8)),i<(J+=c&(1<<I)-1)){l.msg="invalid distance too far back",n.mode=30;break t}if(c>>>=I,v-=I,(I=y-p)<J){if(r<(I=J-I)&&n.sane){l.msg="invalid distance too far back",n.mode=30;break t}if(B=a,(m=0)===h){if(m+=d-I,I<W){for(W-=I;R[y++]=a[m++],--I;);m=y-J,B=R}}else if(h<I){if(m+=d+h-I,(I-=h)<W){for(W-=I;R[y++]=a[m++],--I;);if(m=0,h<W){for(W-=I=h;R[y++]=a[m++],--I;);m=y-J,B=R}}}else if(m+=h-I,I<W){for(W-=I;R[y++]=a[m++],--I;);m=y-J,B=R}for(;2<W;)R[y++]=B[m++],R[y++]=B[m++],R[y++]=B[m++],W-=3;W&&(R[y++]=B[m++],1<W&&(R[y++]=B[m++]))}else{for(m=y-J;R[y++]=R[m++],R[y++]=R[m++],R[y++]=R[m++],2<(W-=3););W&&(R[y++]=R[m++],1<W&&(R[y++]=R[m++]))}break}}break}}while(u<g&&y<_);u-=W=v>>3,c&=(1<<(v-=W<<3))-1,l.next_in=u,l.next_out=y,l.avail_in=u<g?g-u+5:5-(u-g),l.avail_out=y<_?_-y+257:257-(y-_),n.hold=c,n.bits=v}},{}],49:[function(b,N,k){var l=b("../utils/common"),o=b("./adler32"),n=b("./crc32"),u=b("./inffast"),g=b("./inftrees"),y=1,p=2,_=0,i=-2,d=1,r=852,h=592;function a(m){return(m>>>24&255)+(m>>>8&65280)+((65280&m)<<8)+((255&m)<<24)}function c(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new l.Buf16(320),this.work=new l.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function v(m){var B;return m&&m.state?(B=m.state,m.total_in=m.total_out=B.total=0,m.msg="",B.wrap&&(m.adler=1&B.wrap),B.mode=d,B.last=0,B.havedict=0,B.dmax=32768,B.head=null,B.hold=0,B.bits=0,B.lencode=B.lendyn=new l.Buf32(r),B.distcode=B.distdyn=new l.Buf32(h),B.sane=1,B.back=-1,_):i}function S(m){var B;return m&&m.state?((B=m.state).wsize=0,B.whave=0,B.wnext=0,v(m)):i}function x(m,B){var e,R;return m&&m.state?(R=m.state,B<0?(e=0,B=-B):(e=1+(B>>4),B<48&&(B&=15)),B&&(B<8||15<B)?i:(R.window!==null&&R.wbits!==B&&(R.window=null),R.wrap=e,R.wbits=B,S(m))):i}function D(m,B){var e,R;return m?(R=new c,(m.state=R).window=null,(e=x(m,B))!==_&&(m.state=null),e):i}var O,j,I=!0;function W(m){if(I){var B;for(O=new l.Buf32(512),j=new l.Buf32(32),B=0;B<144;)m.lens[B++]=8;for(;B<256;)m.lens[B++]=9;for(;B<280;)m.lens[B++]=7;for(;B<288;)m.lens[B++]=8;for(g(y,m.lens,0,288,O,0,m.work,{bits:9}),B=0;B<32;)m.lens[B++]=5;g(p,m.lens,0,32,j,0,m.work,{bits:5}),I=!1}m.lencode=O,m.lenbits=9,m.distcode=j,m.distbits=5}function J(m,B,e,R){var $,P=m.state;return P.window===null&&(P.wsize=1<<P.wbits,P.wnext=0,P.whave=0,P.window=new l.Buf8(P.wsize)),R>=P.wsize?(l.arraySet(P.window,B,e-P.wsize,P.wsize,0),P.wnext=0,P.whave=P.wsize):(R<($=P.wsize-P.wnext)&&($=R),l.arraySet(P.window,B,e-R,$,P.wnext),(R-=$)?(l.arraySet(P.window,B,e-R,R,0),P.wnext=R,P.whave=P.wsize):(P.wnext+=$,P.wnext===P.wsize&&(P.wnext=0),P.whave<P.wsize&&(P.whave+=$))),0}k.inflateReset=S,k.inflateReset2=x,k.inflateResetKeep=v,k.inflateInit=function(m){return D(m,15)},k.inflateInit2=D,k.inflate=function(m,B){var e,R,$,P,q,L,V,A,E,X,G,H,nt,ht,Q,et,st,it,ft,lt,t,T,C,f,s=0,w=new l.Buf8(4),F=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!m||!m.state||!m.output||!m.input&&m.avail_in!==0)return i;(e=m.state).mode===12&&(e.mode=13),q=m.next_out,$=m.output,V=m.avail_out,P=m.next_in,R=m.input,L=m.avail_in,A=e.hold,E=e.bits,X=L,G=V,T=_;t:for(;;)switch(e.mode){case d:if(e.wrap===0){e.mode=13;break}for(;E<16;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}if(2&e.wrap&&A===35615){w[e.check=0]=255&A,w[1]=A>>>8&255,e.check=n(e.check,w,2,0),E=A=0,e.mode=2;break}if(e.flags=0,e.head&&(e.head.done=!1),!(1&e.wrap)||(((255&A)<<8)+(A>>8))%31){m.msg="incorrect header check",e.mode=30;break}if((15&A)!=8){m.msg="unknown compression method",e.mode=30;break}if(E-=4,t=8+(15&(A>>>=4)),e.wbits===0)e.wbits=t;else if(t>e.wbits){m.msg="invalid window size",e.mode=30;break}e.dmax=1<<t,m.adler=e.check=1,e.mode=512&A?10:12,E=A=0;break;case 2:for(;E<16;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}if(e.flags=A,(255&e.flags)!=8){m.msg="unknown compression method",e.mode=30;break}if(57344&e.flags){m.msg="unknown header flags set",e.mode=30;break}e.head&&(e.head.text=A>>8&1),512&e.flags&&(w[0]=255&A,w[1]=A>>>8&255,e.check=n(e.check,w,2,0)),E=A=0,e.mode=3;case 3:for(;E<32;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}e.head&&(e.head.time=A),512&e.flags&&(w[0]=255&A,w[1]=A>>>8&255,w[2]=A>>>16&255,w[3]=A>>>24&255,e.check=n(e.check,w,4,0)),E=A=0,e.mode=4;case 4:for(;E<16;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}e.head&&(e.head.xflags=255&A,e.head.os=A>>8),512&e.flags&&(w[0]=255&A,w[1]=A>>>8&255,e.check=n(e.check,w,2,0)),E=A=0,e.mode=5;case 5:if(1024&e.flags){for(;E<16;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}e.length=A,e.head&&(e.head.extra_len=A),512&e.flags&&(w[0]=255&A,w[1]=A>>>8&255,e.check=n(e.check,w,2,0)),E=A=0}else e.head&&(e.head.extra=null);e.mode=6;case 6:if(1024&e.flags&&(L<(H=e.length)&&(H=L),H&&(e.head&&(t=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),l.arraySet(e.head.extra,R,P,H,t)),512&e.flags&&(e.check=n(e.check,R,H,P)),L-=H,P+=H,e.length-=H),e.length))break t;e.length=0,e.mode=7;case 7:if(2048&e.flags){if(L===0)break t;for(H=0;t=R[P+H++],e.head&&t&&e.length<65536&&(e.head.name+=String.fromCharCode(t)),t&&H<L;);if(512&e.flags&&(e.check=n(e.check,R,H,P)),L-=H,P+=H,t)break t}else e.head&&(e.head.name=null);e.length=0,e.mode=8;case 8:if(4096&e.flags){if(L===0)break t;for(H=0;t=R[P+H++],e.head&&t&&e.length<65536&&(e.head.comment+=String.fromCharCode(t)),t&&H<L;);if(512&e.flags&&(e.check=n(e.check,R,H,P)),L-=H,P+=H,t)break t}else e.head&&(e.head.comment=null);e.mode=9;case 9:if(512&e.flags){for(;E<16;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}if(A!==(65535&e.check)){m.msg="header crc mismatch",e.mode=30;break}E=A=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),m.adler=e.check=0,e.mode=12;break;case 10:for(;E<32;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}m.adler=e.check=a(A),E=A=0,e.mode=11;case 11:if(e.havedict===0)return m.next_out=q,m.avail_out=V,m.next_in=P,m.avail_in=L,e.hold=A,e.bits=E,2;m.adler=e.check=1,e.mode=12;case 12:if(B===5||B===6)break t;case 13:if(e.last){A>>>=7&E,E-=7&E,e.mode=27;break}for(;E<3;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}switch(e.last=1&A,E-=1,3&(A>>>=1)){case 0:e.mode=14;break;case 1:if(W(e),e.mode=20,B!==6)break;A>>>=2,E-=2;break t;case 2:e.mode=17;break;case 3:m.msg="invalid block type",e.mode=30}A>>>=2,E-=2;break;case 14:for(A>>>=7&E,E-=7&E;E<32;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}if((65535&A)!=(A>>>16^65535)){m.msg="invalid stored block lengths",e.mode=30;break}if(e.length=65535&A,E=A=0,e.mode=15,B===6)break t;case 15:e.mode=16;case 16:if(H=e.length){if(L<H&&(H=L),V<H&&(H=V),H===0)break t;l.arraySet($,R,P,H,q),L-=H,P+=H,V-=H,q+=H,e.length-=H;break}e.mode=12;break;case 17:for(;E<14;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}if(e.nlen=257+(31&A),A>>>=5,E-=5,e.ndist=1+(31&A),A>>>=5,E-=5,e.ncode=4+(15&A),A>>>=4,E-=4,286<e.nlen||30<e.ndist){m.msg="too many length or distance symbols",e.mode=30;break}e.have=0,e.mode=18;case 18:for(;e.have<e.ncode;){for(;E<3;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}e.lens[F[e.have++]]=7&A,A>>>=3,E-=3}for(;e.have<19;)e.lens[F[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,C={bits:e.lenbits},T=g(0,e.lens,0,19,e.lencode,0,e.work,C),e.lenbits=C.bits,T){m.msg="invalid code lengths set",e.mode=30;break}e.have=0,e.mode=19;case 19:for(;e.have<e.nlen+e.ndist;){for(;et=(s=e.lencode[A&(1<<e.lenbits)-1])>>>16&255,st=65535&s,!((Q=s>>>24)<=E);){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}if(st<16)A>>>=Q,E-=Q,e.lens[e.have++]=st;else{if(st===16){for(f=Q+2;E<f;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}if(A>>>=Q,E-=Q,e.have===0){m.msg="invalid bit length repeat",e.mode=30;break}t=e.lens[e.have-1],H=3+(3&A),A>>>=2,E-=2}else if(st===17){for(f=Q+3;E<f;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}E-=Q,t=0,H=3+(7&(A>>>=Q)),A>>>=3,E-=3}else{for(f=Q+7;E<f;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}E-=Q,t=0,H=11+(127&(A>>>=Q)),A>>>=7,E-=7}if(e.have+H>e.nlen+e.ndist){m.msg="invalid bit length repeat",e.mode=30;break}for(;H--;)e.lens[e.have++]=t}}if(e.mode===30)break;if(e.lens[256]===0){m.msg="invalid code -- missing end-of-block",e.mode=30;break}if(e.lenbits=9,C={bits:e.lenbits},T=g(y,e.lens,0,e.nlen,e.lencode,0,e.work,C),e.lenbits=C.bits,T){m.msg="invalid literal/lengths set",e.mode=30;break}if(e.distbits=6,e.distcode=e.distdyn,C={bits:e.distbits},T=g(p,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,C),e.distbits=C.bits,T){m.msg="invalid distances set",e.mode=30;break}if(e.mode=20,B===6)break t;case 20:e.mode=21;case 21:if(6<=L&&258<=V){m.next_out=q,m.avail_out=V,m.next_in=P,m.avail_in=L,e.hold=A,e.bits=E,u(m,G),q=m.next_out,$=m.output,V=m.avail_out,P=m.next_in,R=m.input,L=m.avail_in,A=e.hold,E=e.bits,e.mode===12&&(e.back=-1);break}for(e.back=0;et=(s=e.lencode[A&(1<<e.lenbits)-1])>>>16&255,st=65535&s,!((Q=s>>>24)<=E);){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}if(et&&(240&et)==0){for(it=Q,ft=et,lt=st;et=(s=e.lencode[lt+((A&(1<<it+ft)-1)>>it)])>>>16&255,st=65535&s,!(it+(Q=s>>>24)<=E);){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}A>>>=it,E-=it,e.back+=it}if(A>>>=Q,E-=Q,e.back+=Q,e.length=st,et===0){e.mode=26;break}if(32&et){e.back=-1,e.mode=12;break}if(64&et){m.msg="invalid literal/length code",e.mode=30;break}e.extra=15&et,e.mode=22;case 22:if(e.extra){for(f=e.extra;E<f;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}e.length+=A&(1<<e.extra)-1,A>>>=e.extra,E-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=23;case 23:for(;et=(s=e.distcode[A&(1<<e.distbits)-1])>>>16&255,st=65535&s,!((Q=s>>>24)<=E);){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}if((240&et)==0){for(it=Q,ft=et,lt=st;et=(s=e.distcode[lt+((A&(1<<it+ft)-1)>>it)])>>>16&255,st=65535&s,!(it+(Q=s>>>24)<=E);){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}A>>>=it,E-=it,e.back+=it}if(A>>>=Q,E-=Q,e.back+=Q,64&et){m.msg="invalid distance code",e.mode=30;break}e.offset=st,e.extra=15&et,e.mode=24;case 24:if(e.extra){for(f=e.extra;E<f;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}e.offset+=A&(1<<e.extra)-1,A>>>=e.extra,E-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){m.msg="invalid distance too far back",e.mode=30;break}e.mode=25;case 25:if(V===0)break t;if(H=G-V,e.offset>H){if((H=e.offset-H)>e.whave&&e.sane){m.msg="invalid distance too far back",e.mode=30;break}nt=H>e.wnext?(H-=e.wnext,e.wsize-H):e.wnext-H,H>e.length&&(H=e.length),ht=e.window}else ht=$,nt=q-e.offset,H=e.length;for(V<H&&(H=V),V-=H,e.length-=H;$[q++]=ht[nt++],--H;);e.length===0&&(e.mode=21);break;case 26:if(V===0)break t;$[q++]=e.length,V--,e.mode=21;break;case 27:if(e.wrap){for(;E<32;){if(L===0)break t;L--,A|=R[P++]<<E,E+=8}if(G-=V,m.total_out+=G,e.total+=G,G&&(m.adler=e.check=e.flags?n(e.check,$,G,q-G):o(e.check,$,G,q-G)),G=V,(e.flags?A:a(A))!==e.check){m.msg="incorrect data check",e.mode=30;break}E=A=0}e.mode=28;case 28:if(e.wrap&&e.flags){for(;E<32;){if(L===0)break t;L--,A+=R[P++]<<E,E+=8}if(A!==(4294967295&e.total)){m.msg="incorrect length check",e.mode=30;break}E=A=0}e.mode=29;case 29:T=1;break t;case 30:T=-3;break t;case 31:return-4;case 32:default:return i}return m.next_out=q,m.avail_out=V,m.next_in=P,m.avail_in=L,e.hold=A,e.bits=E,(e.wsize||G!==m.avail_out&&e.mode<30&&(e.mode<27||B!==4))&&J(m,m.output,m.next_out,G-m.avail_out)?(e.mode=31,-4):(X-=m.avail_in,G-=m.avail_out,m.total_in+=X,m.total_out+=G,e.total+=G,e.wrap&&G&&(m.adler=e.check=e.flags?n(e.check,$,G,m.next_out-G):o(e.check,$,G,m.next_out-G)),m.data_type=e.bits+(e.last?64:0)+(e.mode===12?128:0)+(e.mode===20||e.mode===15?256:0),(X==0&&G===0||B===4)&&T===_&&(T=-5),T)},k.inflateEnd=function(m){if(!m||!m.state)return i;var B=m.state;return B.window&&(B.window=null),m.state=null,_},k.inflateGetHeader=function(m,B){var e;return m&&m.state?(2&(e=m.state).wrap)==0?i:((e.head=B).done=!1,_):i},k.inflateSetDictionary=function(m,B){var e,R=B.length;return m&&m.state?(e=m.state).wrap!==0&&e.mode!==11?i:e.mode===11&&o(1,B,R,0)!==e.check?-3:J(m,B,R,R)?(e.mode=31,-4):(e.havedict=1,_):i},k.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(b,N,k){var l=b("../utils/common"),o=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],n=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],u=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],g=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];N.exports=function(y,p,_,i,d,r,h,a){var c,v,S,x,D,O,j,I,W,J=a.bits,m=0,B=0,e=0,R=0,$=0,P=0,q=0,L=0,V=0,A=0,E=null,X=0,G=new l.Buf16(16),H=new l.Buf16(16),nt=null,ht=0;for(m=0;m<=15;m++)G[m]=0;for(B=0;B<i;B++)G[p[_+B]]++;for($=J,R=15;1<=R&&G[R]===0;R--);if(R<$&&($=R),R===0)return d[r++]=20971520,d[r++]=20971520,a.bits=1,0;for(e=1;e<R&&G[e]===0;e++);for($<e&&($=e),m=L=1;m<=15;m++)if(L<<=1,(L-=G[m])<0)return-1;if(0<L&&(y===0||R!==1))return-1;for(H[1]=0,m=1;m<15;m++)H[m+1]=H[m]+G[m];for(B=0;B<i;B++)p[_+B]!==0&&(h[H[p[_+B]]++]=B);if(O=y===0?(E=nt=h,19):y===1?(E=o,X-=257,nt=n,ht-=257,256):(E=u,nt=g,-1),m=e,D=r,q=B=A=0,S=-1,x=(V=1<<(P=$))-1,y===1&&852<V||y===2&&592<V)return 1;for(;;){for(j=m-q,W=h[B]<O?(I=0,h[B]):h[B]>O?(I=nt[ht+h[B]],E[X+h[B]]):(I=96,0),c=1<<m-q,e=v=1<<P;d[D+(A>>q)+(v-=c)]=j<<24|I<<16|W|0,v!==0;);for(c=1<<m-1;A&c;)c>>=1;if(c!==0?(A&=c-1,A+=c):A=0,B++,--G[m]==0){if(m===R)break;m=p[_+h[B]]}if($<m&&(A&x)!==S){for(q===0&&(q=$),D+=e,L=1<<(P=m-q);P+q<R&&!((L-=G[P+q])<=0);)P++,L<<=1;if(V+=1<<P,y===1&&852<V||y===2&&592<V)return 1;d[S=A&x]=$<<24|P<<16|D-r|0}}return A!==0&&(d[D+A]=m-q<<24|64<<16|0),a.bits=$,0}},{"../utils/common":41}],51:[function(b,N,k){N.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(b,N,k){var l=b("../utils/common"),o=0,n=1;function u(s){for(var w=s.length;0<=--w;)s[w]=0}var g=0,y=29,p=256,_=p+1+y,i=30,d=19,r=2*_+1,h=15,a=16,c=7,v=256,S=16,x=17,D=18,O=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],j=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],I=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],W=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],J=new Array(2*(_+2));u(J);var m=new Array(2*i);u(m);var B=new Array(512);u(B);var e=new Array(256);u(e);var R=new Array(y);u(R);var $,P,q,L=new Array(i);function V(s,w,F,U,z){this.static_tree=s,this.extra_bits=w,this.extra_base=F,this.elems=U,this.max_length=z,this.has_stree=s&&s.length}function A(s,w){this.dyn_tree=s,this.max_code=0,this.stat_desc=w}function E(s){return s<256?B[s]:B[256+(s>>>7)]}function X(s,w){s.pending_buf[s.pending++]=255&w,s.pending_buf[s.pending++]=w>>>8&255}function G(s,w,F){s.bi_valid>a-F?(s.bi_buf|=w<<s.bi_valid&65535,X(s,s.bi_buf),s.bi_buf=w>>a-s.bi_valid,s.bi_valid+=F-a):(s.bi_buf|=w<<s.bi_valid&65535,s.bi_valid+=F)}function H(s,w,F){G(s,F[2*w],F[2*w+1])}function nt(s,w){for(var F=0;F|=1&s,s>>>=1,F<<=1,0<--w;);return F>>>1}function ht(s,w,F){var U,z,Z=new Array(h+1),K=0;for(U=1;U<=h;U++)Z[U]=K=K+F[U-1]<<1;for(z=0;z<=w;z++){var M=s[2*z+1];M!==0&&(s[2*z]=nt(Z[M]++,M))}}function Q(s){var w;for(w=0;w<_;w++)s.dyn_ltree[2*w]=0;for(w=0;w<i;w++)s.dyn_dtree[2*w]=0;for(w=0;w<d;w++)s.bl_tree[2*w]=0;s.dyn_ltree[2*v]=1,s.opt_len=s.static_len=0,s.last_lit=s.matches=0}function et(s){8<s.bi_valid?X(s,s.bi_buf):0<s.bi_valid&&(s.pending_buf[s.pending++]=s.bi_buf),s.bi_buf=0,s.bi_valid=0}function st(s,w,F,U){var z=2*w,Z=2*F;return s[z]<s[Z]||s[z]===s[Z]&&U[w]<=U[F]}function it(s,w,F){for(var U=s.heap[F],z=F<<1;z<=s.heap_len&&(z<s.heap_len&&st(w,s.heap[z+1],s.heap[z],s.depth)&&z++,!st(w,U,s.heap[z],s.depth));)s.heap[F]=s.heap[z],F=z,z<<=1;s.heap[F]=U}function ft(s,w,F){var U,z,Z,K,M=0;if(s.last_lit!==0)for(;U=s.pending_buf[s.d_buf+2*M]<<8|s.pending_buf[s.d_buf+2*M+1],z=s.pending_buf[s.l_buf+M],M++,U===0?H(s,z,w):(H(s,(Z=e[z])+p+1,w),(K=O[Z])!==0&&G(s,z-=R[Z],K),H(s,Z=E(--U),F),(K=j[Z])!==0&&G(s,U-=L[Z],K)),M<s.last_lit;);H(s,v,w)}function lt(s,w){var F,U,z,Z=w.dyn_tree,K=w.stat_desc.static_tree,M=w.stat_desc.has_stree,Y=w.stat_desc.elems,rt=-1;for(s.heap_len=0,s.heap_max=r,F=0;F<Y;F++)Z[2*F]!==0?(s.heap[++s.heap_len]=rt=F,s.depth[F]=0):Z[2*F+1]=0;for(;s.heap_len<2;)Z[2*(z=s.heap[++s.heap_len]=rt<2?++rt:0)]=1,s.depth[z]=0,s.opt_len--,M&&(s.static_len-=K[2*z+1]);for(w.max_code=rt,F=s.heap_len>>1;1<=F;F--)it(s,Z,F);for(z=Y;F=s.heap[1],s.heap[1]=s.heap[s.heap_len--],it(s,Z,1),U=s.heap[1],s.heap[--s.heap_max]=F,s.heap[--s.heap_max]=U,Z[2*z]=Z[2*F]+Z[2*U],s.depth[z]=(s.depth[F]>=s.depth[U]?s.depth[F]:s.depth[U])+1,Z[2*F+1]=Z[2*U+1]=z,s.heap[1]=z++,it(s,Z,1),2<=s.heap_len;);s.heap[--s.heap_max]=s.heap[1],(function(tt,ut){var _t,dt,gt,at,vt,xt,pt=ut.dyn_tree,zt=ut.max_code,It=ut.stat_desc.static_tree,Ot=ut.stat_desc.has_stree,Bt=ut.stat_desc.extra_bits,Et=ut.stat_desc.extra_base,bt=ut.stat_desc.max_length,yt=0;for(at=0;at<=h;at++)tt.bl_count[at]=0;for(pt[2*tt.heap[tt.heap_max]+1]=0,_t=tt.heap_max+1;_t<r;_t++)bt<(at=pt[2*pt[2*(dt=tt.heap[_t])+1]+1]+1)&&(at=bt,yt++),pt[2*dt+1]=at,zt<dt||(tt.bl_count[at]++,vt=0,Et<=dt&&(vt=Bt[dt-Et]),xt=pt[2*dt],tt.opt_len+=xt*(at+vt),Ot&&(tt.static_len+=xt*(It[2*dt+1]+vt)));if(yt!==0){do{for(at=bt-1;tt.bl_count[at]===0;)at--;tt.bl_count[at]--,tt.bl_count[at+1]+=2,tt.bl_count[bt]--,yt-=2}while(0<yt);for(at=bt;at!==0;at--)for(dt=tt.bl_count[at];dt!==0;)zt<(gt=tt.heap[--_t])||(pt[2*gt+1]!==at&&(tt.opt_len+=(at-pt[2*gt+1])*pt[2*gt],pt[2*gt+1]=at),dt--)}})(s,w),ht(Z,rt,s.bl_count)}function t(s,w,F){var U,z,Z=-1,K=w[1],M=0,Y=7,rt=4;for(K===0&&(Y=138,rt=3),w[2*(F+1)+1]=65535,U=0;U<=F;U++)z=K,K=w[2*(U+1)+1],++M<Y&&z===K||(M<rt?s.bl_tree[2*z]+=M:z!==0?(z!==Z&&s.bl_tree[2*z]++,s.bl_tree[2*S]++):M<=10?s.bl_tree[2*x]++:s.bl_tree[2*D]++,Z=z,rt=(M=0)===K?(Y=138,3):z===K?(Y=6,3):(Y=7,4))}function T(s,w,F){var U,z,Z=-1,K=w[1],M=0,Y=7,rt=4;for(K===0&&(Y=138,rt=3),U=0;U<=F;U++)if(z=K,K=w[2*(U+1)+1],!(++M<Y&&z===K)){if(M<rt)for(;H(s,z,s.bl_tree),--M!=0;);else z!==0?(z!==Z&&(H(s,z,s.bl_tree),M--),H(s,S,s.bl_tree),G(s,M-3,2)):M<=10?(H(s,x,s.bl_tree),G(s,M-3,3)):(H(s,D,s.bl_tree),G(s,M-11,7));Z=z,rt=(M=0)===K?(Y=138,3):z===K?(Y=6,3):(Y=7,4)}}u(L);var C=!1;function f(s,w,F,U){G(s,(g<<1)+(U?1:0),3),(function(z,Z,K,M){et(z),X(z,K),X(z,~K),l.arraySet(z.pending_buf,z.window,Z,K,z.pending),z.pending+=K})(s,w,F)}k._tr_init=function(s){C||((function(){var w,F,U,z,Z,K=new Array(h+1);for(z=U=0;z<y-1;z++)for(R[z]=U,w=0;w<1<<O[z];w++)e[U++]=z;for(e[U-1]=z,z=Z=0;z<16;z++)for(L[z]=Z,w=0;w<1<<j[z];w++)B[Z++]=z;for(Z>>=7;z<i;z++)for(L[z]=Z<<7,w=0;w<1<<j[z]-7;w++)B[256+Z++]=z;for(F=0;F<=h;F++)K[F]=0;for(w=0;w<=143;)J[2*w+1]=8,w++,K[8]++;for(;w<=255;)J[2*w+1]=9,w++,K[9]++;for(;w<=279;)J[2*w+1]=7,w++,K[7]++;for(;w<=287;)J[2*w+1]=8,w++,K[8]++;for(ht(J,_+1,K),w=0;w<i;w++)m[2*w+1]=5,m[2*w]=nt(w,5);$=new V(J,O,p+1,_,h),P=new V(m,j,0,i,h),q=new V(new Array(0),I,0,d,c)})(),C=!0),s.l_desc=new A(s.dyn_ltree,$),s.d_desc=new A(s.dyn_dtree,P),s.bl_desc=new A(s.bl_tree,q),s.bi_buf=0,s.bi_valid=0,Q(s)},k._tr_stored_block=f,k._tr_flush_block=function(s,w,F,U){var z,Z,K=0;0<s.level?(s.strm.data_type===2&&(s.strm.data_type=(function(M){var Y,rt=4093624447;for(Y=0;Y<=31;Y++,rt>>>=1)if(1&rt&&M.dyn_ltree[2*Y]!==0)return o;if(M.dyn_ltree[18]!==0||M.dyn_ltree[20]!==0||M.dyn_ltree[26]!==0)return n;for(Y=32;Y<p;Y++)if(M.dyn_ltree[2*Y]!==0)return n;return o})(s)),lt(s,s.l_desc),lt(s,s.d_desc),K=(function(M){var Y;for(t(M,M.dyn_ltree,M.l_desc.max_code),t(M,M.dyn_dtree,M.d_desc.max_code),lt(M,M.bl_desc),Y=d-1;3<=Y&&M.bl_tree[2*W[Y]+1]===0;Y--);return M.opt_len+=3*(Y+1)+5+5+4,Y})(s),z=s.opt_len+3+7>>>3,(Z=s.static_len+3+7>>>3)<=z&&(z=Z)):z=Z=F+5,F+4<=z&&w!==-1?f(s,w,F,U):s.strategy===4||Z===z?(G(s,2+(U?1:0),3),ft(s,J,m)):(G(s,4+(U?1:0),3),(function(M,Y,rt,tt){var ut;for(G(M,Y-257,5),G(M,rt-1,5),G(M,tt-4,4),ut=0;ut<tt;ut++)G(M,M.bl_tree[2*W[ut]+1],3);T(M,M.dyn_ltree,Y-1),T(M,M.dyn_dtree,rt-1)})(s,s.l_desc.max_code+1,s.d_desc.max_code+1,K+1),ft(s,s.dyn_ltree,s.dyn_dtree)),Q(s),U&&et(s)},k._tr_tally=function(s,w,F){return s.pending_buf[s.d_buf+2*s.last_lit]=w>>>8&255,s.pending_buf[s.d_buf+2*s.last_lit+1]=255&w,s.pending_buf[s.l_buf+s.last_lit]=255&F,s.last_lit++,w===0?s.dyn_ltree[2*F]++:(s.matches++,w--,s.dyn_ltree[2*(e[F]+p+1)]++,s.dyn_dtree[2*E(w)]++),s.last_lit===s.lit_bufsize-1},k._tr_align=function(s){G(s,2,3),H(s,v,J),(function(w){w.bi_valid===16?(X(w,w.bi_buf),w.bi_buf=0,w.bi_valid=0):8<=w.bi_valid&&(w.pending_buf[w.pending++]=255&w.bi_buf,w.bi_buf>>=8,w.bi_valid-=8)})(s)}},{"../utils/common":41}],53:[function(b,N,k){N.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(b,N,k){(function(l){(function(o,n){if(!o.setImmediate){var u,g,y,p,_=1,i={},d=!1,r=o.document,h=Object.getPrototypeOf&&Object.getPrototypeOf(o);h=h&&h.setTimeout?h:o,u={}.toString.call(o.process)==="[object process]"?function(S){process.nextTick(function(){c(S)})}:(function(){if(o.postMessage&&!o.importScripts){var S=!0,x=o.onmessage;return o.onmessage=function(){S=!1},o.postMessage("","*"),o.onmessage=x,S}})()?(p="setImmediate$"+Math.random()+"$",o.addEventListener?o.addEventListener("message",v,!1):o.attachEvent("onmessage",v),function(S){o.postMessage(p+S,"*")}):o.MessageChannel?((y=new MessageChannel).port1.onmessage=function(S){c(S.data)},function(S){y.port2.postMessage(S)}):r&&"onreadystatechange"in r.createElement("script")?(g=r.documentElement,function(S){var x=r.createElement("script");x.onreadystatechange=function(){c(S),x.onreadystatechange=null,g.removeChild(x),x=null},g.appendChild(x)}):function(S){setTimeout(c,0,S)},h.setImmediate=function(S){typeof S!="function"&&(S=new Function(""+S));for(var x=new Array(arguments.length-1),D=0;D<x.length;D++)x[D]=arguments[D+1];var O={callback:S,args:x};return i[_]=O,u(_),_++},h.clearImmediate=a}function a(S){delete i[S]}function c(S){if(d)setTimeout(c,0,S);else{var x=i[S];if(x){d=!0;try{(function(D){var O=D.callback,j=D.args;switch(j.length){case 0:O();break;case 1:O(j[0]);break;case 2:O(j[0],j[1]);break;case 3:O(j[0],j[1],j[2]);break;default:O.apply(n,j)}})(x)}finally{a(S),d=!1}}}}function v(S){S.source===o&&typeof S.data=="string"&&S.data.indexOf(p)===0&&c(+S.data.slice(p.length))}})(typeof self>"u"?l===void 0?this:l:self)}).call(this,typeof wt<"u"?wt:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})})(St)),St.exports}var Dt=Rt();const Ft=Tt(Dt),Nt="1.2.0",Ct="AGENT-README.md";async function Wt({blueprint:ot,markdown:ct,genericPrompt:b,codexPrompt:N,agentGuide:k,agentGuideZhHant:l,reportTemplate:o,reportSchema:n,viewportImages:u,extensionRegistry:g,generatedAt:y=new Date().toISOString()}){const p=new Ft,_=ot.screen.id,i=typeof g=="string"&&g.trim().length>0,d=k.replace("./agent-handoff.zh-Hant.md","./AGENT-README.zh-Hant.md"),r={[Ct]:mt(i?Ut(d):d),"AGENT-README.zh-Hant.md":mt(l.replace("./agent-handoff.md","./AGENT-README.md")),[`${_}.ui.json`]:`${JSON.stringify(ot,null,2)}
13
+ `,[`${_}.ui.md`]:mt(ct),[`${_}.agent.md`]:mt(b),[`${_}.codex.md`]:mt(N),"implementation-report.template.json":`${JSON.stringify(o,null,2)}
14
+ `,"implementation-report.schema.json":`${JSON.stringify(n,null,2)}
15
+ `};i&&(r["aub.registry.json"]=mt(g));for(const[c,v]of Object.entries(u))r[`screenshots/${c}.png`]=Pt(v);const h={};for(const[c,v]of Object.entries(r)){const S=typeof v=="string"?new TextEncoder().encode(v):v;h[c]={sha256:await jt(S),bytes:S.byteLength},p.file(c,v)}const a={format:"aub-handoff",format_version:Nt,blueprint_version:ot.version,screen_id:_,generated_at:y,agent_entrypoint:Ct,extension_registry:i?"aub.registry.json":null,viewports:ot.viewports,files:h};return p.file("manifest.json",`${JSON.stringify(a,null,2)}
16
+ `),{bytes:await p.generateAsync({type:"uint8array",compression:"DEFLATE",compressionOptions:{level:6}}),manifest:a}}function Ut(ot){const ct=["","## Custom component types","","This handoff includes `aub.registry.json`, which declares namespaced extension","component types (`team:component`) used by this blueprint. Treat every node `type`","that contains a colon as a project-defined component: resolve its meaning and","container/leaf behavior from `aub.registry.json` — never guess. When an entry","declares `implementations`, reuse the matching production component, import path,","and prop mappings instead of recreating it. Validate with","`aub validate <file> --registry ./aub.registry.json`.",""].join(`
17
+ `);return`${ot.replace(/\n+$/,"")}
18
+ ${ct}`}function mt(ot){return ot.endsWith(`
19
+ `)?ot:`${ot}
20
+ `}function Pt(ot){const ct=ot.split(",")[1]??"",b=atob(ct);return Uint8Array.from(b,N=>N.charCodeAt(0))}async function jt(ot){const ct=new Uint8Array(ot.byteLength);ct.set(ot);const b=await crypto.subtle.digest("SHA-256",ct);return Array.from(new Uint8Array(b),N=>N.toString(16).padStart(2,"0")).join("")}export{Ct as HANDOFF_AGENT_ENTRYPOINT,Nt as HANDOFF_FORMAT_VERSION,Wt as createHandoffArchive};
@@ -0,0 +1 @@
1
+ function g(t){return{format:"aub-implementation-report",format_version:"1.0.0",blueprint:{screen_id:t.screen.id,version:t.version},implementation:{framework:"",route:"",files:[]},node_mappings:t.nodes.map(n=>({node_id:n.id,status:"unmapped",component:n.type,file:"",selector:`[data-aub-node="${n.id}"]`,notes:""})),acceptance_results:t.acceptance.map(n=>({acceptance_id:n.id,status:"needs-review",evidence:[],notes:""})),unresolved:[]}}function _(t,n){var r,u,l,f,m,h;const s=[];((r=n.blueprint)==null?void 0:r.screen_id)!==t.screen.id&&s.push(`Report screen_id "${((u=n.blueprint)==null?void 0:u.screen_id)??""}" does not match "${t.screen.id}".`),((l=n.blueprint)==null?void 0:l.version)!==t.version&&s.push(`Report Blueprint version "${((f=n.blueprint)==null?void 0:f.version)??""}" does not match "${t.version}".`);const o=new Set(t.nodes.map(e=>e.id)),a=v(n.node_mappings??[],"node_id",s);for(const e of o){const c=a.get(e);c?(c.status!=="mapped"||!((m=c.file)!=null&&m.trim()))&&s.push(`Node is not mapped to a file: ${e}`):s.push(`Missing node mapping: ${e}`)}for(const e of a.keys())o.has(e)||s.push(`Unknown node mapping: ${e}`);const i=new Map(t.acceptance.map(e=>[e.id,e])),d=v(n.acceptance_results??[],"acceptance_id",s);for(const[e,c]of i){const p=d.get(e);if(!p){s.push(`Missing acceptance result: ${e}`);continue}p.status!=="pass"&&s.push(`${c.priority} acceptance is not passing: ${e} (${p.status})`),(!Array.isArray(p.evidence)||p.evidence.length===0)&&s.push(`Acceptance result has no evidence: ${e}`)}for(const e of d.keys())i.has(e)||s.push(`Unknown acceptance result: ${e}`);return(n.unresolved??[]).length>0&&s.push(`Report has ${n.unresolved.length} unresolved item(s).`),{ready:s.length===0,errors:s,summary:{nodes_total:t.nodes.length,nodes_mapped:[...a.values()].filter(e=>{var c;return e.status==="mapped"&&((c=e.file)==null?void 0:c.trim())}).length,acceptance_total:t.acceptance.length,acceptance_passed:[...d.values()].filter(e=>e.status==="pass").length,unresolved:((h=n.unresolved)==null?void 0:h.length)??0}}}function v(t,n,s){const o=new Map;for(const a of t){const i=a==null?void 0:a[n];o.has(i)?s.push(`Duplicate ${n}: ${i}`):o.set(i,a)}return o}export{g as createImplementationReportTemplate,_ as verifyImplementationReport};
@@ -0,0 +1,2 @@
1
+ function W(t,e){if(t.match(/^[a-z]+:\/\//i))return t;if(t.match(/^\/\//))return window.location.protocol+t;if(t.match(/^[a-z]+:/i))return t;const n=document.implementation.createHTMLDocument(),r=n.createElement("base"),i=n.createElement("a");return n.head.appendChild(r),n.body.appendChild(i),e&&(r.href=e),i.href=t,i.href}const j=(()=>{let t=0;const e=()=>`0000${(Math.random()*36**4<<0).toString(36)}`.slice(-4);return()=>(t+=1,`u${e()}${t}`)})();function m(t){const e=[];for(let n=0,r=t.length;n<r;n++)e.push(t[n]);return e}let g=null;function A(t={}){return g||(t.includeStyleProperties?(g=t.includeStyleProperties,g):(g=m(window.getComputedStyle(document.documentElement)),g))}function y(t,e){const r=(t.ownerDocument.defaultView||window).getComputedStyle(t).getPropertyValue(e);return r?parseFloat(r.replace("px","")):0}function q(t){const e=y(t,"border-left-width"),n=y(t,"border-right-width");return t.clientWidth+e+n}function z(t){const e=y(t,"border-top-width"),n=y(t,"border-bottom-width");return t.clientHeight+e+n}function k(t,e={}){const n=e.width||q(t),r=e.height||z(t);return{width:n,height:r}}function B(){let t,e;try{e=process}catch{}const n=e&&e.env?e.env.devicePixelRatio:null;return n&&(t=parseInt(n,10),Number.isNaN(t)&&(t=1)),t||window.devicePixelRatio||1}const u=16384;function G(t){(t.width>u||t.height>u)&&(t.width>u&&t.height>u?t.width>t.height?(t.height*=u/t.width,t.width=u):(t.width*=u/t.height,t.height=u):t.width>u?(t.height*=u/t.width,t.width=u):(t.width*=u/t.height,t.height=u))}function w(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>{r.decode().then(()=>{requestAnimationFrame(()=>e(r))})},r.onerror=n,r.crossOrigin="anonymous",r.decoding="async",r.src=t})}async function X(t){return Promise.resolve().then(()=>new XMLSerializer().serializeToString(t)).then(encodeURIComponent).then(e=>`data:image/svg+xml;charset=utf-8,${e}`)}async function K(t,e,n){const r="http://www.w3.org/2000/svg",i=document.createElementNS(r,"svg"),s=document.createElementNS(r,"foreignObject");return i.setAttribute("width",`${e}`),i.setAttribute("height",`${n}`),i.setAttribute("viewBox",`0 0 ${e} ${n}`),s.setAttribute("width","100%"),s.setAttribute("height","100%"),s.setAttribute("x","0"),s.setAttribute("y","0"),s.setAttribute("externalResourcesRequired","true"),i.appendChild(s),s.appendChild(t),X(i)}const l=(t,e)=>{if(t instanceof e)return!0;const n=Object.getPrototypeOf(t);return n===null?!1:n.constructor.name===e.name||l(n,e)};function J(t){const e=t.getPropertyValue("content");return`${t.cssText} content: '${e.replace(/'|"/g,"")}';`}function Q(t,e){return A(e).map(n=>{const r=t.getPropertyValue(n),i=t.getPropertyPriority(n);return`${n}: ${r}${i?" !important":""};`}).join(" ")}function Y(t,e,n,r){const i=`.${t}:${e}`,s=n.cssText?J(n):Q(n,r);return document.createTextNode(`${i}{${s}}`)}function C(t,e,n,r){const i=window.getComputedStyle(t,n),s=i.getPropertyValue("content");if(s===""||s==="none")return;const c=j();try{e.className=`${e.className} ${c}`}catch{return}const a=document.createElement("style");a.appendChild(Y(c,n,i,r)),e.appendChild(a)}function Z(t,e,n){C(t,e,":before",n),C(t,e,":after",n)}const P="application/font-woff",$="image/jpeg",N={woff:P,woff2:P,ttf:"application/font-truetype",eot:"application/vnd.ms-fontobject",png:"image/png",jpg:$,jpeg:$,gif:"image/gif",tiff:"image/tiff",svg:"image/svg+xml",webp:"image/webp"};function tt(t){const e=/\.([^./]*?)$/g.exec(t);return e?e[1]:""}function x(t){const e=tt(t).toLowerCase();return N[e]||""}function et(t){return t.split(/,/)[1]}function E(t){return t.search(/^(data:)/)!==-1}function nt(t,e){return`data:${e};base64,${t}`}async function D(t,e,n){const r=await fetch(t,e);if(r.status===404)throw new Error(`Resource "${r.url}" not found`);const i=await r.blob();return new Promise((s,c)=>{const a=new FileReader;a.onerror=c,a.onloadend=()=>{try{s(n({res:r,result:a.result}))}catch(o){c(o)}},a.readAsDataURL(i)})}const b={};function rt(t,e,n){let r=t.replace(/\?.*/,"");return n&&(r=t),/ttf|otf|eot|woff2?/i.test(r)&&(r=r.replace(/.*\//,"")),e?`[${e}]${r}`:r}async function R(t,e,n){const r=rt(t,e,n.includeQueryParams);if(b[r]!=null)return b[r];n.cacheBust&&(t+=(/\?/.test(t)?"&":"?")+new Date().getTime());let i;try{const s=await D(t,n.fetchRequestInit,({res:c,result:a})=>(e||(e=c.headers.get("Content-Type")||""),et(a)));i=nt(s,e)}catch(s){i=n.imagePlaceholder||"";let c=`Failed to fetch resource: ${t}`;s&&(c=typeof s=="string"?s:s.message),c&&console.warn(c)}return b[r]=i,i}async function st(t){const e=t.toDataURL();return e==="data:,"?t.cloneNode(!1):w(e)}async function it(t,e){if(t.currentSrc){const s=document.createElement("canvas"),c=s.getContext("2d");s.width=t.clientWidth,s.height=t.clientHeight,c==null||c.drawImage(t,0,0,s.width,s.height);const a=s.toDataURL();return w(a)}const n=t.poster,r=x(n),i=await R(n,r,e);return w(i)}async function ct(t,e){var n;try{if(!((n=t==null?void 0:t.contentDocument)===null||n===void 0)&&n.body)return await p(t.contentDocument.body,e,!0)}catch{}return t.cloneNode(!1)}async function at(t,e){return l(t,HTMLCanvasElement)?st(t):l(t,HTMLVideoElement)?it(t,e):l(t,HTMLIFrameElement)?ct(t,e):t.cloneNode(v(t))}const ot=t=>t.tagName!=null&&t.tagName.toUpperCase()==="SLOT",v=t=>t.tagName!=null&&t.tagName.toUpperCase()==="SVG";async function lt(t,e,n){var r,i;if(v(e))return e;let s=[];return ot(t)&&t.assignedNodes?s=m(t.assignedNodes()):l(t,HTMLIFrameElement)&&(!((r=t.contentDocument)===null||r===void 0)&&r.body)?s=m(t.contentDocument.body.childNodes):s=m(((i=t.shadowRoot)!==null&&i!==void 0?i:t).childNodes),s.length===0||l(t,HTMLVideoElement)||await s.reduce((c,a)=>c.then(()=>p(a,n)).then(o=>{o&&e.appendChild(o)}),Promise.resolve()),e}function ut(t,e,n){const r=e.style;if(!r)return;const i=window.getComputedStyle(t);i.cssText?(r.cssText=i.cssText,r.transformOrigin=i.transformOrigin):A(n).forEach(s=>{let c=i.getPropertyValue(s);s==="font-size"&&c.endsWith("px")&&(c=`${Math.floor(parseFloat(c.substring(0,c.length-2)))-.1}px`),l(t,HTMLIFrameElement)&&s==="display"&&c==="inline"&&(c="block"),s==="d"&&e.getAttribute("d")&&(c=`path(${e.getAttribute("d")})`),r.setProperty(s,c,i.getPropertyPriority(s))})}function ft(t,e){l(t,HTMLTextAreaElement)&&(e.innerHTML=t.value),l(t,HTMLInputElement)&&e.setAttribute("value",t.value)}function ht(t,e){if(l(t,HTMLSelectElement)){const r=Array.from(e.children).find(i=>t.value===i.getAttribute("value"));r&&r.setAttribute("selected","")}}function mt(t,e,n){return l(e,Element)&&(ut(t,e,n),Z(t,e,n),ft(t,e),ht(t,e)),e}async function gt(t,e){const n=t.querySelectorAll?t.querySelectorAll("use"):[];if(n.length===0)return t;const r={};for(let s=0;s<n.length;s++){const a=n[s].getAttribute("xlink:href");if(a){const o=t.querySelector(a),f=document.querySelector(a);!o&&f&&!r[a]&&(r[a]=await p(f,e,!0))}}const i=Object.values(r);if(i.length){const s="http://www.w3.org/1999/xhtml",c=document.createElementNS(s,"svg");c.setAttribute("xmlns",s),c.style.position="absolute",c.style.width="0",c.style.height="0",c.style.overflow="hidden",c.style.display="none";const a=document.createElementNS(s,"defs");c.appendChild(a);for(let o=0;o<i.length;o++)a.appendChild(i[o]);t.appendChild(c)}return t}async function p(t,e,n){return!n&&e.filter&&!e.filter(t)?null:Promise.resolve(t).then(r=>at(r,e)).then(r=>lt(t,r,e)).then(r=>mt(t,r,e)).then(r=>gt(r,e))}const U=/url\((['"]?)([^'"]+?)\1\)/g,dt=/url\([^)]+\)\s*format\((["']?)([^"']+)\1\)/g,yt=/src:\s*(?:url\([^)]+\)\s*format\([^)]+\)[,;]\s*)+/g;function wt(t){const e=t.replace(/([.*+?^${}()|\[\]\/\\])/g,"\\$1");return new RegExp(`(url\\(['"]?)(${e})(['"]?\\))`,"g")}function pt(t){const e=[];return t.replace(U,(n,r,i)=>(e.push(i),n)),e.filter(n=>!E(n))}async function St(t,e,n,r,i){try{const s=n?W(e,n):e,c=x(e);let a;return i||(a=await R(s,c,r)),t.replace(wt(e),`$1${a}$3`)}catch{}return t}function bt(t,{preferredFontFormat:e}){return e?t.replace(yt,n=>{for(;;){const[r,,i]=dt.exec(n)||[];if(!i)return"";if(i===e)return`src: ${r};`}}):t}function H(t){return t.search(U)!==-1}async function V(t,e,n){if(!H(t))return t;const r=bt(t,n);return pt(r).reduce((s,c)=>s.then(a=>St(a,c,e,n)),Promise.resolve(r))}async function d(t,e,n){var r;const i=(r=e.style)===null||r===void 0?void 0:r.getPropertyValue(t);if(i){const s=await V(i,null,n);return e.style.setProperty(t,s,e.style.getPropertyPriority(t)),!0}return!1}async function Et(t,e){await d("background",t,e)||await d("background-image",t,e),await d("mask",t,e)||await d("-webkit-mask",t,e)||await d("mask-image",t,e)||await d("-webkit-mask-image",t,e)}async function xt(t,e){const n=l(t,HTMLImageElement);if(!(n&&!E(t.src))&&!(l(t,SVGImageElement)&&!E(t.href.baseVal)))return;const r=n?t.src:t.href.baseVal,i=await R(r,x(r),e);await new Promise((s,c)=>{t.onload=s,t.onerror=e.onImageErrorHandler?(...o)=>{try{s(e.onImageErrorHandler(...o))}catch(f){c(f)}}:c;const a=t;a.decode&&(a.decode=s),a.loading==="lazy"&&(a.loading="eager"),n?(t.srcset="",t.src=i):t.href.baseVal=i})}async function Rt(t,e){const r=m(t.childNodes).map(i=>M(i,e));await Promise.all(r).then(()=>t)}async function M(t,e){l(t,Element)&&(await Et(t,e),await xt(t,e),await Rt(t,e))}function Ct(t,e){const{style:n}=t;e.backgroundColor&&(n.backgroundColor=e.backgroundColor),e.width&&(n.width=`${e.width}px`),e.height&&(n.height=`${e.height}px`);const r=e.style;return r!=null&&Object.keys(r).forEach(i=>{n[i]=r[i]}),t}const T={};async function F(t){let e=T[t];if(e!=null)return e;const r=await(await fetch(t)).text();return e={url:t,cssText:r},T[t]=e,e}async function L(t,e){let n=t.cssText;const r=/url\(["']?([^"')]+)["']?\)/g,s=(n.match(/url\([^)]+\)/g)||[]).map(async c=>{let a=c.replace(r,"$1");return a.startsWith("https://")||(a=new URL(a,t.url).href),D(a,e.fetchRequestInit,({result:o})=>(n=n.replace(c,`url(${o})`),[c,o]))});return Promise.all(s).then(()=>n)}function I(t){if(t==null)return[];const e=[],n=/(\/\*[\s\S]*?\*\/)/gi;let r=t.replace(n,"");const i=new RegExp("((@.*?keyframes [\\s\\S]*?){([\\s\\S]*?}\\s*?)})","gi");for(;;){const o=i.exec(r);if(o===null)break;e.push(o[0])}r=r.replace(i,"");const s=/@import[\s\S]*?url\([^)]*\)[\s\S]*?;/gi,c="((\\s*?(?:\\/\\*[\\s\\S]*?\\*\\/)?\\s*?@media[\\s\\S]*?){([\\s\\S]*?)}\\s*?})|(([\\s\\S]*?){([\\s\\S]*?)})",a=new RegExp(c,"gi");for(;;){let o=s.exec(r);if(o===null){if(o=a.exec(r),o===null)break;s.lastIndex=a.lastIndex}else a.lastIndex=s.lastIndex;e.push(o[0])}return e}async function Pt(t,e){const n=[],r=[];return t.forEach(i=>{if("cssRules"in i)try{m(i.cssRules||[]).forEach((s,c)=>{if(s.type===CSSRule.IMPORT_RULE){let a=c+1;const o=s.href,f=F(o).then(h=>L(h,e)).then(h=>I(h).forEach(S=>{try{i.insertRule(S,S.startsWith("@import")?a+=1:i.cssRules.length)}catch(_){console.error("Error inserting rule from remote css",{rule:S,error:_})}})).catch(h=>{console.error("Error loading remote css",h.toString())});r.push(f)}})}catch(s){const c=t.find(a=>a.href==null)||document.styleSheets[0];i.href!=null&&r.push(F(i.href).then(a=>L(a,e)).then(a=>I(a).forEach(o=>{c.insertRule(o,c.cssRules.length)})).catch(a=>{console.error("Error loading remote stylesheet",a)})),console.error("Error inlining remote css file",s)}}),Promise.all(r).then(()=>(t.forEach(i=>{if("cssRules"in i)try{m(i.cssRules||[]).forEach(s=>{n.push(s)})}catch(s){console.error(`Error while reading CSS rules from ${i.href}`,s)}}),n))}function $t(t){return t.filter(e=>e.type===CSSRule.FONT_FACE_RULE).filter(e=>H(e.style.getPropertyValue("src")))}async function Tt(t,e){if(t.ownerDocument==null)throw new Error("Provided element is not within a Document");const n=m(t.ownerDocument.styleSheets),r=await Pt(n,e);return $t(r)}function O(t){return t.trim().replace(/["']/g,"")}function Ft(t){const e=new Set;function n(r){(r.style.fontFamily||getComputedStyle(r).fontFamily).split(",").forEach(s=>{e.add(O(s))}),Array.from(r.children).forEach(s=>{s instanceof HTMLElement&&n(s)})}return n(t),e}async function Lt(t,e){const n=await Tt(t,e),r=Ft(t);return(await Promise.all(n.filter(s=>r.has(O(s.style.fontFamily))).map(s=>{const c=s.parentStyleSheet?s.parentStyleSheet.href:null;return V(s.cssText,c,e)}))).join(`
2
+ `)}async function It(t,e){const n=e.fontEmbedCSS!=null?e.fontEmbedCSS:e.skipFonts?null:await Lt(t,e);if(n){const r=document.createElement("style"),i=document.createTextNode(n);r.appendChild(i),t.firstChild?t.insertBefore(r,t.firstChild):t.appendChild(r)}}async function At(t,e={}){const{width:n,height:r}=k(t,e),i=await p(t,e,!0);return await It(i,e),await M(i,e),Ct(i,e),await K(i,n,r)}async function kt(t,e={}){const{width:n,height:r}=k(t,e),i=await At(t,e),s=await w(i),c=document.createElement("canvas"),a=c.getContext("2d"),o=e.pixelRatio||B(),f=e.canvasWidth||n,h=e.canvasHeight||r;return c.width=f*o,c.height=h*o,e.skipAutoScale||G(c),c.style.width=`${f}`,c.style.height=`${h}`,e.backgroundColor&&(a.fillStyle=e.backgroundColor,a.fillRect(0,0,c.width,c.height)),a.drawImage(s,0,0,c.width,c.height),c}async function Dt(t,e={}){return(await kt(t,e)).toDataURL()}export{kt as toCanvas,Dt as toPng,At as toSvg};
@@ -0,0 +1 @@
1
+ :root{--bg: #0f172a;--bg-2: #1e293b;--bg-3: #334155;--fg: #e2e8f0;--fg-2: #94a3b8;--accent: #38bdf8;--border: #334155;--danger: #f87171;--ok: #4ade80}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--fg);font-size:13px;line-height:1.5}.app{display:grid;grid-template-rows:48px 42px 1fr 24px;height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:var(--bg-2);border-bottom:1px solid var(--border)}.topbar h1{font-size:14px;font-weight:600}.topbar .actions{display:flex;align-items:center;gap:8px}.language-select,.template-select{display:flex;align-items:center;gap:6px;color:var(--fg-2);font-size:11px}.language-select select,.template-select select{height:28px;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:4px;padding:0 8px;font-family:inherit;font-size:12px}.language-select select{min-width:112px}.template-select select{min-width:156px}button{background:var(--bg-3);color:var(--fg);border:1px solid var(--border);border-radius:4px;padding:4px 10px;font-size:12px;cursor:pointer;font-family:inherit}button:hover{background:var(--accent);color:var(--bg)}button.primary{background:var(--accent);color:var(--bg);border-color:var(--accent)}.statusbar{display:flex;align-items:center;padding:0 16px;background:var(--bg-2);border-top:1px solid var(--border);font-size:11px;color:var(--fg-2)}.statusbar .ok{color:var(--ok)}.statusbar .err{color:var(--danger)}.toast-notice{position:fixed;left:50%;bottom:38px;z-index:30;transform:translate(-50%);max-width:min(520px,calc(100vw - 32px));padding:9px 14px;border:1px solid #0f766e;border-radius:6px;background:#ecfdf5;color:#064e3b;box-shadow:0 14px 36px #0f172a38;font-size:12px;font-weight:650}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:#0f172aad}.import-dialog{width:min(920px,100%);max-height:min(820px,calc(100vh - 48px));display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;border:1px solid #475569;border-radius:8px;background:#f8fafc;color:#0f172a;box-shadow:0 28px 80px #0f172a6b}.import-dialog>header,.import-dialog>footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 18px;background:#fff}.import-dialog>header{border-bottom:1px solid #cbd5e1}.import-dialog>header>div,.import-dialog>header>div>div{display:flex;align-items:center}.import-dialog>header>div{gap:10px}.import-dialog>header>div>div{align-items:flex-start;flex-direction:column}.import-dialog h2{font-size:16px}.import-dialog header p{color:#64748b;font-size:11px}.import-dialog>footer{justify-content:flex-end;border-top:1px solid #cbd5e1}.import-dialog-body{overflow-y:auto;padding:18px}.import-entry-field,.import-ai-config label{display:grid;gap:5px;color:#475569;font-size:11px;font-weight:650}.import-entry-field select,.import-ai-config input{width:100%;height:34px;border:1px solid #cbd5e1;border-radius:4px;background:#fff;color:#0f172a;padding:0 9px;font:inherit}.import-loading,.import-error{min-height:88px;display:flex;align-items:center;justify-content:center;gap:9px;margin-top:14px;border:1px dashed #94a3b8;border-radius:6px;color:#475569}.import-error{border-color:#fca5a5;background:#fef2f2;color:#991b1b}.spin{animation:aub-spin .9s linear infinite}@keyframes aub-spin{to{transform:rotate(360deg)}}.import-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:16px 0}.import-summary>div{min-height:64px;display:flex;flex-direction:column;justify-content:center;padding:10px;border:1px solid #cbd5e1;border-radius:6px;background:#fff}.import-summary strong{font-size:20px}.import-summary span{color:#64748b;font-size:11px}.import-summary .warn strong{color:#b45309}.import-diagnostics,.import-ai{margin-top:16px;padding-top:14px;border-top:1px solid #cbd5e1}.import-diagnostics h3{margin-bottom:8px;font-size:12px}.diagnostic-row{width:100%;min-height:52px;display:flex;align-items:flex-start;gap:9px;margin-bottom:6px;padding:9px;border-color:#cbd5e1;background:#fff;color:#0f172a;text-align:left}.diagnostic-row:hover{border-color:#94a3b8;background:#f8fafc;color:#0f172a}.diagnostic-row.warning svg{color:#b45309}.diagnostic-row.error svg{color:#b91c1c}.diagnostic-row span{min-width:0;display:flex;flex-direction:column}.diagnostic-row strong{font-size:11px}.diagnostic-row small{color:#64748b;font-size:10px}.import-clean{display:flex;align-items:center;gap:7px;color:#047857}.import-ai-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.import-ai-heading>div,.import-ai-heading>button{display:flex;align-items:center;gap:7px}.import-ai-heading button svg,.import-dialog button svg{width:15px;height:15px}.import-ai-config{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:10px;margin-top:10px}.import-ai-error{margin-top:8px;color:#b91c1c;font-size:11px}.ai-suggestion{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:8px;padding:10px;border:1px solid #bae6fd;border-radius:6px;background:#f0f9ff}.ai-suggestion p,.ai-suggestion small{color:#475569;font-size:10px}.personal-template-section{padding-bottom:14px;border-bottom:1px solid var(--border)}.personal-template-save{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;margin-bottom:8px}.personal-template-save input{min-width:0;height:30px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--fg);padding:0 7px;font:inherit}.personal-template-save button,.personal-template-actions button{display:flex;align-items:center;justify-content:center;gap:5px}.personal-template-save svg,.personal-template-actions svg,.template-preview-empty svg{width:14px;height:14px}.personal-template-item{display:grid;grid-template-columns:minmax(0,1fr) auto;margin-bottom:7px;border:1px solid var(--border);border-radius:6px;overflow:hidden}.personal-template-load{min-width:0;display:grid;grid-template-columns:64px minmax(0,1fr);gap:8px;padding:0;border:0;border-radius:0;background:var(--bg);text-align:left}.personal-template-load:hover{background:var(--bg-3);color:var(--fg)}.personal-template-load img,.template-preview-empty{width:64px;height:52px;object-fit:cover;background:#f8fafc}.template-preview-empty{display:flex;align-items:center;justify-content:center;color:#64748b}.personal-template-load>span{min-width:0;display:flex;justify-content:center;flex-direction:column}.personal-template-load strong,.personal-template-load small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.personal-template-load small{color:var(--fg-2);font-size:9px}.personal-template-actions{display:flex;flex-direction:column;border-left:1px solid var(--border)}.personal-template-actions button{flex:1;width:30px;padding:0;border:0;border-radius:0}@media(max-width:720px){.modal-backdrop{padding:8px}.import-dialog{max-height:calc(100vh - 16px)}.import-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.import-ai-config{grid-template-columns:1fr}}.body{display:grid;grid-template-columns:240px 1fr 360px;overflow:hidden;position:relative}.body.properties-collapsed{grid-template-columns:240px minmax(0,1fr)}.panel{background:var(--bg-2);border-right:1px solid var(--border);overflow-y:auto;padding:12px}.panel.canvas{overflow:hidden;padding:0;position:relative;background:#e5e7eb}.panel.canvas-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;background:#e5e7eb}.palette-hint{font-size:10px;color:var(--fg-2);margin:-4px 0 12px;line-height:1.4}.palette-item.dragging{border-color:var(--accent);background:#38bdf829;opacity:.72}.panel:last-child{border-right:none;border-left:1px solid var(--border)}.panel h2{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--fg-2);margin-bottom:8px;font-weight:600}.palette-category{margin-bottom:16px}.palette-category h3{font-size:11px;font-weight:500;color:var(--fg-2);margin-bottom:4px}.palette-item{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border-radius:3px;cursor:grab;font-size:12px;-webkit-user-select:none;user-select:none;border-left:3px solid transparent}.palette-item:hover{background:var(--bg-3)}.palette-item:active{cursor:grabbing}.palette-item .kind{font-size:9px;color:var(--fg-2);text-transform:uppercase;letter-spacing:.04em}.palette-category h3{border-left:3px solid transparent;padding-left:6px;margin-left:-6px}.tree{font-size:12px}.tree-node{display:flex;align-items:center;gap:6px;padding:3px 6px;border-radius:3px;cursor:pointer;-webkit-user-select:none;user-select:none}.tree-node:hover{background:var(--bg-3)}.tree-node.selected{background:var(--accent);color:var(--bg)}.tree-children{margin-left:16px;border-left:1px solid var(--border);padding-left:4px}.tree-icon{font-size:10px;color:var(--fg-2);width:10px;display:inline-block}.tree-node.selected .tree-icon{color:var(--bg)}.properties textarea{width:100%;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:3px;padding:8px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;min-height:320px;resize:vertical}.properties .field{margin-bottom:8px}.properties-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.properties-header h2{margin:0}.properties-header-actions{display:flex;align-items:center;gap:5px}.properties-header-actions button{padding:5px 7px}.properties-reopen-button{position:absolute;right:14px;top:14px;z-index:12;border-color:#94a3b8;background:#fff;color:#334155}.properties-toolbar-button{flex:0 0 auto;height:28px;border-color:#cbd5e1;background:#fff;color:#334155}.panel.canvas.drag-active{box-shadow:inset 0 0 0 3px #0891b2}.canvas-drop-hint{position:absolute;left:50%;top:58px;z-index:20;transform:translate(-50%);padding:8px 12px;border:1px solid #0e7490;border-radius:6px;background:#ecfeff;color:#155e75;box-shadow:0 10px 28px #0f172a33;font-size:12px;font-weight:700;pointer-events:none}.canvas-empty .canvas-drop-hint{top:18px}.danger-button{border-color:#f8717173;background:#7f1d1d59;color:#fecaca}.danger-button:hover:not(:disabled){border-color:var(--danger);background:var(--danger);color:#0f172a}.danger-button:disabled{cursor:not-allowed;opacity:.45}.properties label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--fg-2);margin-bottom:2px}.properties input{width:100%;background:var(--bg);color:var(--fg);border:1px solid var(--border);border-radius:3px;padding:4px 6px;font-family:inherit;font-size:12px}.layout-controls{margin:12px 0;padding:10px;border:1px solid var(--border);border-radius:6px}.layout-fixed-note{margin:12px 0;padding:10px;border:1px solid var(--border);border-radius:6px;background:var(--bg-2)}.layout-fixed-note strong{font-size:11px}.layout-fixed-note p{margin:5px 0 0;color:var(--fg-2);font-size:10px;line-height:1.4}.layout-controls legend{padding:0 5px;color:var(--fg);font-size:11px;font-weight:650}.layout-mode-buttons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;margin-bottom:10px}.layout-mode-buttons button{min-width:0;padding:5px 4px;white-space:normal}.layout-mode-buttons button.active{border-color:var(--accent);background:var(--accent);color:var(--bg)}.layout-control-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.layout-control-grid label{margin:0}.layout-control-grid label>span{display:block;min-height:24px;line-height:1.2}.layout-control-grid select,.layout-control-grid input[type=number]{width:100%;height:30px;border:1px solid var(--border);border-radius:3px;background:var(--bg);color:var(--fg);font:inherit}.layout-control-grid select{padding:0 5px}.layout-control-grid input[type=number]{padding:0 6px}.layout-control-grid .layout-checkbox{display:flex;align-items:center;gap:7px;min-height:30px;align-self:end}.layout-control-grid .layout-checkbox input{width:15px;height:15px;margin:0}.layout-control-grid .layout-checkbox span{min-height:0;margin:0}.layout-controls p{margin:9px 0 0;color:var(--fg-2);font-size:10px;line-height:1.4}.empty{color:var(--fg-2);font-size:11px;font-style:italic;padding:12px 0}.error-list{background:#f871711a;border:1px solid var(--danger);border-radius:3px;padding:8px;margin-top:8px;font-size:11px;font-family:ui-monospace,SF Mono,Menlo,monospace;color:var(--danger);max-height:160px;overflow-y:auto}.empty-artboard{width:min(680px,calc(100% - 48px));min-height:360px;border:1px dashed #94a3b8;border-radius:8px;background:#f8fafc;color:#0f172a;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}.empty-artboard h2{color:#334155;margin:0}.start-artboard{align-items:stretch;justify-content:flex-start;gap:18px;padding:28px}.start-heading{text-align:center}.start-heading p{margin:7px 0 0;color:#64748b;font-size:12px}.start-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.start-option{min-height:112px;padding:18px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#0f172a;text-align:left}.start-option:hover{border-color:#2563eb;background:#eff6ff}.start-option strong,.start-option span{display:block}.start-option strong{margin-bottom:9px;font-size:15px}.start-option span{color:#475569;font-size:11px;line-height:1.5}.start-templates{padding-top:14px;border-top:1px solid #e2e8f0;text-align:center}.start-templates>span{display:block;margin-bottom:9px;color:#64748b;font-size:11px}.start-templates>div{display:flex;justify-content:center;flex-wrap:wrap;gap:6px}.start-templates button{border-color:#cbd5e1;background:#fff;color:#334155}@media(max-width:720px){.start-options{grid-template-columns:1fr}}.canvas-toolbar{height:44px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 14px;background:#f8fafc;border-bottom:1px solid #cbd5e1;color:#0f172a}.canvas-toolbar strong{display:block;font-size:12px;font-weight:650;line-height:1.1}.canvas-toolbar span{display:block;font-size:10px;color:#64748b}.viewport-tabs{display:flex;gap:4px;margin-left:auto}.viewport-tabs button{height:28px;min-width:64px;border-color:#cbd5e1;background:#fff;color:#334155}.viewport-tabs button.active,.viewport-tabs button:hover{background:#0f172a;color:#fff;border-color:#0f172a}.resolution-control{display:flex;align-items:center;gap:4px}.resolution-control select{height:28px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#334155;font-size:12px;padding:0 4px}.resolution-control .resolution-input{width:60px;height:28px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#334155;font-size:12px;text-align:center;padding:0 4px}.resolution-control .resolution-times{color:#94a3b8;font-size:12px}.zoom-controls{display:flex;align-items:center;gap:6px;color:#334155;font-size:11px}.zoom-controls button{width:28px;height:28px;padding:0;border-color:#cbd5e1;background:#fff;color:#334155;font-size:15px;font-weight:700;line-height:1}.zoom-controls button:disabled{cursor:not-allowed;opacity:.45}.zoom-controls input{width:92px;accent-color:#0f172a}.zoom-label{width:auto;color:#64748b;font-size:11px}.zoom-controls>span:last-child{width:38px;color:#334155;font-size:11px;text-align:right}.artboard-stage{height:calc(100% - 44px);padding:28px;overflow:auto}.artboard-zoom-shell{position:relative;margin:0 auto}.artboard{background:#fff;border:1px solid #cbd5e1;border-radius:6px;box-shadow:0 18px 50px #0f172a2e;color:#111827;overflow:hidden;transform-origin:top left}.artboard-mobile{border-radius:28px}.preview-node{position:relative;min-width:0;color:inherit;outline:1px dashed rgba(100,116,139,.62);outline-offset:-1px;transition:outline-color .12s ease,box-shadow .12s ease,background-color .12s ease}.preview-node:hover{outline-color:#2563eb94}.preview-node.selected{outline:2px solid #2563eb;outline-offset:-2px;box-shadow:inset 0 0 0 1px #ffffffe6;z-index:2}.preview-node.drop-target{outline:2px solid #0891b2;outline-offset:-2px;background-image:linear-gradient(135deg,rgba(8,145,178,.08) 25%,transparent 25%,transparent 50%,rgba(8,145,178,.08) 50%,rgba(8,145,178,.08) 75%,transparent 75%,transparent);background-size:18px 18px}.preview-node:after{content:attr(data-name);position:absolute;left:8px;top:6px;max-width:calc(100% - 16px);padding:2px 6px;border-radius:4px;background:#0f172ac7;color:#fff;font-size:10px;line-height:1.25;opacity:0;pointer-events:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;z-index:5}.preview-node:hover:after,.preview-node.selected:after{opacity:1}.preview-node.is-root{width:100%;height:100%;min-height:inherit;background:#f8fafc;outline:none}.preview-node.is-root:after{top:8px;left:8px}.artboard.capture-clean .preview-node{outline:none!important;box-shadow:none!important}.artboard.capture-clean .preview-node:after,.artboard.capture-clean .preview-delete-button,.artboard.capture-clean .preview-drag-handle{display:none!important}.preview-delete-button{position:absolute;right:8px;top:8px;z-index:6;height:26px;padding:0 8px;border:1px solid #fecaca;border-radius:4px;background:#fee2e2;color:#991b1b;font-size:11px;font-weight:650;box-shadow:0 8px 20px #0f172a2e;opacity:0;pointer-events:none;transition:opacity .12s ease}.preview-node:hover>.preview-delete-button,.preview-node:focus-within>.preview-delete-button,.preview-node.selected>.preview-delete-button{opacity:1;pointer-events:auto}.preview-delete-button:hover{border-color:#ef4444;background:#ef4444;color:#fff}.preview-drag-handle{position:absolute;left:50%;top:0;z-index:45;width:30px;height:20px;padding:0;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;border:1px solid #94a3b8;border-radius:4px;background:#fff;color:#475569;box-shadow:0 3px 10px #0f172a29;cursor:grab;opacity:.38;touch-action:none;transition:opacity .12s ease,border-color .12s ease,color .12s ease}.preview-drag-handle svg{width:16px;height:16px;pointer-events:none}.preview-node:hover>.preview-drag-handle,.preview-node:focus-within>.preview-drag-handle,.preview-node.selected>.preview-drag-handle{border-color:#2563eb;color:#1d4ed8;opacity:1}.preview-drag-handle:active,.preview-node.is-handle-dragging>.preview-drag-handle{cursor:grabbing}.preview-node.is-handle-dragging{opacity:.82;box-shadow:0 12px 28px #0f172a38}.preview-children{min-width:0;min-height:48px}.preview-container-title{font-size:14px;font-weight:650;color:#111827;margin-bottom:12px}.preview-sidebar-title{display:flex;flex-direction:column;gap:2px}.preview-sidebar-title small{color:#94a3b8;font-size:10px;font-weight:500}.preview-children.layout-row>.preview-sidebar{flex:0 0 240px;width:240px}.preview-children.layout-row>:not(.preview-sidebar){flex:1 1 0;min-width:0}.preview-empty-slot{min-height:64px;border:1px dashed #cbd5e1;border-radius:6px;color:#94a3b8;display:flex;align-items:center;justify-content:center;font-size:12px;background:#f8fafc}.preview-page{min-height:100%;background:#f8fafc;overflow:auto}.preview-page>.preview-children{min-height:min-content;padding:24px;display:flex;flex-direction:column;gap:18px}.preview-app_shell>.preview-children{height:100%;min-height:0;display:grid;grid-template-columns:minmax(180px,240px) minmax(0,1fr);grid-template-rows:64px minmax(0,1fr)}.preview-app_shell>.preview-children>.preview-sidebar{grid-column:1;grid-row:1 / span 2}.preview-app_shell>.preview-children>.preview-top_bar,.preview-app_shell>.preview-children>.preview-header{grid-column:2;grid-row:1}.preview-app_shell>.preview-children>.preview-page,.preview-app_shell>.preview-children>.preview-section,.preview-app_shell>.preview-children>.preview-scroll_area{grid-column:2;grid-row:2;min-height:0;height:100%;overflow:auto}.preview-app_shell>.preview-children>.preview-bottom_nav{grid-column:2;grid-row:2;align-self:end;z-index:4}.preview-app-main-fallback{grid-column:2;grid-row:2;align-self:stretch;min-height:0;margin:24px;border:1px dashed #0891b2;border-radius:8px;background:#f0fdfaeb;padding:14px;overflow:auto;z-index:3}.preview-app-main-fallback.has-main-slot{align-self:start;max-height:min(360px,calc(100% - 48px));box-shadow:0 16px 44px #0f172a33}.preview-app-main-label{margin-bottom:10px;color:#0f766e;font-size:12px;font-weight:700}.preview-app-main-items{display:flex;flex-direction:column;gap:12px}.preview-sidebar{background:#111827;color:#f9fafb;padding:22px 14px}.preview-sidebar .preview-container-title{color:#f9fafb;margin-bottom:18px}.preview-sidebar>.preview-children{display:flex;flex-direction:column;gap:6px}.preview-sidebar.page-sidebar{border:1px solid #cbd5e1;border-radius:6px;background:#f8fafc;color:#0f172a;padding:14px}.preview-sidebar.page-sidebar .preview-container-title{color:#0f172a;margin-bottom:12px}.preview-sidebar.page-sidebar .preview-empty-slot{background:#fff;color:#64748b}.preview-sidebar.page-sidebar .mock.nav-item{color:#475569}.preview-sidebar.page-sidebar .mock.nav-item:hover,.preview-sidebar.page-sidebar .preview-nav_item.selected .mock.nav-item{background:#e2e8f0;color:#0f172a}.preview-sidebar.page-sidebar>.preview-children>.preview-node,.preview-sidebar.page-sidebar .mock.input{width:100%;min-width:0}.artboard-mobile .preview-sidebar.app-sidebar{padding:7px 8px}.artboard-mobile .preview-sidebar.app-sidebar>.preview-container-title{display:none}.artboard-mobile .preview-sidebar.app-sidebar>.preview-children{height:100%;min-height:0;flex-direction:row!important;align-items:stretch;gap:4px}.artboard-mobile .preview-sidebar.app-sidebar>.preview-children>.preview-nav_item{flex:1 1 0;min-width:0}.artboard-mobile .preview-sidebar.app-sidebar .mock.nav-item{height:100%;min-height:0;justify-content:center;padding:0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px}.artboard-mobile .preview-kanban_board>.preview-children{flex:1;min-height:0;flex-direction:column!important;align-items:stretch!important;overflow-y:auto}.artboard-mobile .preview-kanban_board>.preview-children>.preview-kanban_column{width:100%;min-width:0;flex:0 0 auto}.artboard-mobile .preview-toolbar>.preview-children{flex-direction:column!important;align-items:stretch!important}.preview-toolbar>.preview-container-title{display:none}.preview-toolbar{overflow:hidden}.preview-toolbar>.preview-children{height:100%;min-height:0}.preview-kanban_board{display:flex;flex-direction:column;overflow:hidden}.preview-top_bar,.preview-header{background:#fff;border-bottom:1px solid #e5e7eb;padding:12px 20px;display:flex;align-items:center;gap:16px}.preview-top_bar>.preview-container-title,.preview-header>.preview-container-title{margin:0 auto 0 0;white-space:nowrap}.preview-top_bar>.preview-children,.preview-header>.preview-children{min-height:0;display:flex;flex:1;align-items:center;justify-content:flex-end;gap:12px;overflow:hidden}.preview-top_bar>.preview-children>.preview-text_input,.preview-header>.preview-children>.preview-text_input{flex:1;max-width:360px}.preview-top_bar>.preview-children>.preview-menu,.preview-header>.preview-children>.preview-menu{flex:0 0 auto}.preview-section,.preview-detail_panel,.preview-form,.preview-field_group,.preview-list,.preview-tabs,.preview-timeline,.preview-activity_feed{border:1px solid #e5e7eb;border-radius:8px;background:#fff;padding:16px}.preview-section>.preview-children,.preview-detail_panel>.preview-children,.preview-form>.preview-children,.preview-field_group>.preview-children,.preview-list>.preview-children,.preview-tabs>.preview-children,.preview-timeline>.preview-children,.preview-activity_feed>.preview-children{display:flex;flex-direction:column;gap:12px}.preview-grid>.preview-children{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.preview-stack>.preview-children{display:flex;flex-direction:column;gap:12px}.preview-toolbar>.preview-children,.preview-button_group>.preview-children,.preview-bottom_nav>.preview-children,.preview-menu>.preview-children{display:flex;align-items:center;gap:8px}.preview-bottom_nav{border-top:1px solid #e5e7eb;background:#fff;padding:8px}.mock{min-width:0}.mock.metric-card{min-height:112px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;padding:14px;display:flex;flex-direction:column;justify-content:space-between}.mock.metric-card span,.mock.chart span,.mock.input span,.table-title{color:#64748b;font-size:12px;font-weight:650}.mock.metric-card strong{display:block;color:#111827;font-size:24px;line-height:1.1;text-transform:capitalize}.mock.metric-card small{color:#047857;font-size:12px}.mock.chart{min-height:220px;border:1px solid #e5e7eb;border-radius:8px;padding:14px;background:#fff;display:flex;flex-direction:column;gap:18px}.chart-bars{min-height:140px;display:flex;align-items:flex-end;gap:8px}.chart-bars i{flex:1;min-width:8px;border-radius:4px 4px 0 0;background:#0f766e}.mock.data-table{border:1px solid #e5e7eb;border-radius:8px;background:#fff;overflow:hidden}.table-title{padding:12px 14px;border-bottom:1px solid #e5e7eb}.table-grid{display:grid;overflow-x:auto}.table-grid strong,.table-grid span{min-width:0;padding:10px 12px;border-right:1px solid #e5e7eb;border-bottom:1px solid #e5e7eb;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.table-grid strong{background:#f8fafc;color:#334155;font-size:12px}.table-grid span{color:#64748b;font-size:12px}.mock.input{min-width:180px;display:flex;flex-direction:column;gap:6px}.preview-top_bar .mock.input,.preview-header .mock.input,.preview-toolbar .mock.input{min-width:160px;height:38px;flex-direction:row;align-items:center;gap:8px}.preview-top_bar .mock.input span,.preview-header .mock.input span,.preview-toolbar .mock.input span{flex:0 0 auto}.mock.input em{min-height:38px;border:1px solid #cbd5e1;border-radius:6px;padding:9px 11px;color:#94a3b8;font-style:normal;background:#fff}.preview-top_bar .mock.input em,.preview-header .mock.input em{min-height:34px;flex:1;min-width:0;padding:7px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mock.input.select em:after{content:"v";float:right;color:#64748b}.mock.button{min-height:38px;min-width:96px;border-radius:6px;background:#2563eb;color:#fff;display:inline-flex;align-items:center;justify-content:center;padding:8px 14px;font-weight:650}.mock.menu-button{min-height:36px;min-width:82px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#334155;display:inline-flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 11px;font-weight:650}.mock.menu-button span{color:#64748b;font-size:10px}.mock.nav-item{min-height:36px;border-radius:6px;color:#d1d5db;display:flex;align-items:center;padding:0 10px}.mock.nav-item:hover,.preview-nav_item.selected .mock.nav-item{background:#1f2937;color:#fff}.mock.choice{display:flex;align-items:center;gap:10px;min-height:36px;color:#334155}.mock.choice i{width:18px;height:18px;border:2px solid #64748b;border-radius:4px}.mock.choice.toggle i{width:36px;border-radius:999px;background:#2563eb;border-color:#2563eb}.mock.choice.radio_group i{border-radius:999px}.mock.breadcrumb,.mock.pagination,.mock.generic,.mock.state{min-height:40px;border:1px solid #e5e7eb;border-radius:8px;background:#fff;color:#334155;padding:10px 12px}.mock.pagination{display:inline-flex;gap:6px}.mock.pagination span{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #cbd5e1;border-radius:4px}.mock.state.alert,.mock.state.error_state{border-color:#fecaca;background:#fef2f2;color:#991b1b}.mock.state.toast,.mock.state.loading_state{border-color:#bae6fd;background:#f0f9ff;color:#075985}@media(max-width:980px){.body,.body.properties-collapsed{grid-template-columns:220px minmax(0,1fr)}.properties{position:absolute;top:0;right:0;bottom:0;z-index:25;display:block;width:min(360px,calc(100% - 36px));border-left:1px solid var(--border);box-shadow:-16px 0 40px #0f172a47}.artboard-stage{padding:18px}}.app{grid-template-rows:58px 42px minmax(0,1fr) 24px}.topbar{min-width:0;gap:18px;padding:0 12px 0 16px}.brand-block{min-width:150px;display:flex;flex-direction:column;line-height:1.2}.brand-title{display:flex;align-items:center;gap:7px}.brand-title img{width:24px;height:24px;flex:0 0 24px}.brand-block strong{font-size:13px}.brand-block span{padding-left:31px;max-width:220px;color:var(--fg-2);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-actions{min-width:0;display:flex;align-items:center;justify-content:flex-end;gap:7px}.topbar-icon-group,.export-menu{display:flex;align-items:center;gap:3px;padding-left:7px;border-left:1px solid var(--border)}.export-menu>svg{width:14px;height:14px;margin-right:2px;color:var(--fg-2)}.icon-button{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 30px;padding:0}.tooltip-anchor{display:inline-flex;flex:0 0 auto}.floating-tooltip{position:fixed;z-index:1000;width:max-content;max-width:min(240px,calc(100vw - 24px));padding:6px 8px;border:1px solid #334155;border-radius:4px;background:#020617;color:#f8fafc;box-shadow:0 8px 24px #02061747;font-size:11px;font-weight:500;line-height:1.35;letter-spacing:0;text-align:left;white-space:normal;pointer-events:none;transform:translate(-50%);animation:tooltip-in .12s ease-out}.floating-tooltip.end{transform:translate(-100%)}@keyframes tooltip-in{0%{opacity:0;margin-top:-3px}to{opacity:1;margin-top:0}}.icon-button svg{width:15px;height:15px;stroke-width:1.8}.icon-button:disabled,.layout-mode-toggle:disabled{cursor:not-allowed;opacity:.38}.validation-pill{min-width:58px;padding:4px 8px;border:1px solid rgba(74,222,128,.35);border-radius:999px;color:#86efac;font-size:10px;text-align:center;white-space:nowrap}.validation-pill.invalid{border-color:#f8717166;color:#fca5a5}.body{grid-template-columns:252px minmax(0,1fr) 320px}.body.properties-collapsed{grid-template-columns:252px minmax(0,1fr)}.body.workflow-spec{grid-template-columns:minmax(0,1fr) minmax(340px,390px)}.workflow-bar{min-width:0;display:flex;align-items:stretch;justify-content:space-between;gap:12px;padding:0 12px;border-bottom:1px solid var(--border);background:#111c31;overflow:hidden}.workflow-steps{min-width:0;display:flex;align-items:stretch;gap:2px;overflow-x:auto;scrollbar-width:none}.workflow-steps::-webkit-scrollbar{display:none}.workflow-steps button{min-width:max-content;height:41px;display:inline-flex;align-items:center;gap:6px;padding:0 9px;border:0;border-bottom:2px solid transparent;border-radius:0;background:transparent;color:var(--fg-2)}.workflow-steps button:hover,.workflow-steps button.active{background:#38bdf814;color:var(--fg)}.workflow-steps button.active{border-bottom-color:var(--accent)}.workflow-steps button:disabled{cursor:not-allowed;opacity:.35}.workflow-steps button svg{width:14px;height:14px}.workflow-index{width:17px;height:17px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 17px;border:1px solid #475569;border-radius:50%;font-size:9px;font-weight:700}.workflow-steps button.complete .workflow-index{border-color:#16a34a;background:#16a34a;color:#fff}.autosave-status{display:flex;align-items:center;gap:7px;flex:0 0 auto;color:var(--fg-2);font-size:10px;white-space:nowrap}.autosave-dot{width:6px;height:6px;border-radius:50%;background:var(--ok)}.autosave-status.has-errors{color:#fca5a5}.autosave-status.has-errors .autosave-dot{background:var(--danger)}.blueprint-panel{min-width:0;display:grid;grid-template-rows:auto minmax(0,1fr);border-left:1px solid var(--border);background:var(--bg-2);overflow:hidden}.blueprint-panel>header{padding:14px 16px;border-bottom:1px solid var(--border)}.blueprint-panel>header>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.blueprint-panel>header span{color:var(--accent);font-size:10px;font-weight:700;text-transform:uppercase}.blueprint-panel>header h2{font-size:15px}.blueprint-panel>header small{display:block;margin-top:4px;color:var(--fg-2);font-size:10px;line-height:1.45}.blueprint-panel-content{overflow-y:auto;padding:14px}.spec-form,.collection-editor,.handoff-panel,.responsive-editor{display:grid;gap:12px}.viewport-quality-summary{display:grid;gap:4px;padding:10px 11px;border:1px solid #475569;border-radius:6px;background:#111c31}.viewport-quality-summary strong{font-size:11px}.viewport-quality-summary span,.viewport-quality-summary small,.viewport-quality-summary li{color:var(--fg-2);font-size:9px;line-height:1.45}.viewport-quality-summary.pass{border-color:#166534;background:#1665342e}.viewport-quality-summary.fail{border-color:#991b1b;background:#7f1d1d2e}.viewport-quality-summary.pending{border-color:#0369a1;background:#0369a129}.viewport-quality-summary ul{margin:4px 0 0;padding-left:16px}.viewport-quality-summary li>span{margin-right:5px;color:#7dd3fc;font-weight:700}.spec-two-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.spec-field{min-width:0;display:grid;gap:5px;color:var(--fg-2);font-size:10px;font-weight:650}.spec-field input,.spec-field select,.spec-field textarea{width:100%;min-width:0;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--fg);padding:7px 8px;font:inherit;font-size:12px;font-weight:400}.spec-field textarea{min-height:76px;resize:vertical}.spec-field .spec-json{min-height:104px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11px}.spec-field .spec-json.invalid{border-color:var(--danger)}.spec-field small{color:var(--fg-2);font-size:9px;font-weight:400}.spec-field .spec-error{color:#fca5a5}.collection-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px}.collection-toolbar>div{min-width:0;display:flex;flex-direction:column}.collection-toolbar strong{font-size:12px}.collection-toolbar span{color:var(--fg-2);font-size:9px}.collection-toolbar button{display:inline-flex;align-items:center;gap:5px;flex:0 0 auto}.collection-toolbar button svg{width:13px;height:13px}.collection-actions{display:flex!important;flex-direction:row!important;align-items:center;gap:6px;flex:0 0 auto}.collection-actions .suggest-button{color:var(--accent, #6d28d9)}.spec-empty{padding:20px 14px;border:1px dashed #475569;color:var(--fg-2);font-size:11px;text-align:center}.spec-card{border:1px solid var(--border);border-radius:6px;background:#162136;overflow:hidden}.spec-card>header{min-height:34px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 8px 5px 10px;border-bottom:1px solid var(--border)}.spec-card>header strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.spec-card>header button{width:25px;height:25px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 25px;padding:0;color:#fca5a5}.spec-card>header button svg{width:13px;height:13px}.spec-card>div{display:grid;gap:10px;padding:10px}.handoff-summary{display:grid;gap:4px;padding:12px;border:1px solid #7f1d1d;border-radius:6px;background:#7f1d1d2e}.handoff-summary.ready{border-color:#166534;background:#1665342e}.handoff-summary span{color:var(--fg-2);font-size:10px}.handoff-checklist{display:grid;gap:6px}.handoff-checklist>div{display:flex;align-items:center;gap:8px;min-height:34px;padding:7px 9px;border:1px solid var(--border);background:var(--bg)}.handoff-checklist>div>span{width:18px;height:18px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:#7f1d1d;color:#fff;font-size:10px;font-weight:800}.handoff-checklist>div.complete>span{background:#15803d}.handoff-checklist strong{font-size:11px}.handoff-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;border:1px solid var(--border);background:var(--border)}.handoff-stats>div{min-width:0;display:grid;gap:2px;padding:9px 5px;background:var(--bg);text-align:center}.handoff-stats strong{font-size:15px}.handoff-stats span{color:var(--fg-2);font-size:8px;overflow-wrap:anywhere}.handoff-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.handoff-actions .primary{grid-column:1 / -1}.handoff-actions button:disabled{cursor:not-allowed;opacity:.45}.panel.palette,.panel.properties{padding:10px}.side-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;margin-bottom:10px}.side-tabs button{min-width:0;height:48px;padding:4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-color:transparent;background:transparent;color:var(--fg-2)}.side-tabs button svg{width:16px;height:16px}.side-tabs button span{max-width:100%;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side-tabs button.active{border-color:var(--border);background:var(--bg-3);color:var(--fg)}.palette-search,.properties input,.properties select{width:100%;min-height:32px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--fg);padding:5px 7px;font:inherit}.palette-search{margin-bottom:8px}.palette-item{min-height:34px;margin-bottom:3px;border:1px solid transparent;border-left-width:3px}.palette-item:hover{border-color:#475569}.template-browser{display:flex;flex-direction:column;gap:14px}.template-browser section>h3{margin:0 0 5px;color:var(--fg-2);font-size:10px;font-weight:650}.template-browser section>button{width:100%;margin-bottom:5px;display:flex;flex-direction:column;align-items:stretch;gap:7px;padding:6px;border-color:#475569;background:transparent;text-align:left}.template-browser section>button img{width:100%;aspect-ratio:16 / 10;display:block;border:1px solid #475569;border-radius:4px;background:#fff;object-fit:cover;object-position:top left}.template-browser-copy{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:0 3px 3px}.template-browser section>button strong{color:var(--fg);font-size:11px}.template-browser section>button span{color:var(--fg-2);font-size:10px;line-height:1.35}.template-browser section>button:hover strong,.template-browser section>button:hover span{color:#0f172a}.layer-tree{margin:0 -4px}.layer-row{width:100%;height:34px;display:grid;grid-template-columns:12px minmax(0,1fr) auto;align-items:center;gap:5px;border:0;border-radius:3px;background:transparent;color:var(--fg);text-align:left}.layer-row>span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layer-row small{color:var(--fg-2);font-size:9px}.layer-row.selected{background:#0369a1;color:#fff}.selected-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:54px;padding:8px 9px;border:1px solid var(--border);border-radius:5px;background:var(--bg)}.selected-summary>div{min-width:0;display:flex;flex-direction:column}.selected-summary strong,.selected-summary span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selected-summary span{color:var(--fg-2);font-size:10px}.danger-icon{width:30px;height:30px;flex:0 0 30px;display:inline-flex;align-items:center;justify-content:center;padding:0;border-color:#f8717173;background:transparent;color:#fca5a5}.danger-icon svg{width:15px}.property-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:10px -10px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.property-tabs button{min-width:0;height:36px;padding:0 3px;border:0;border-radius:0;background:transparent;color:var(--fg-2);font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.property-tabs button.active{box-shadow:inset 0 -2px 0 var(--accent);color:var(--fg)}.property-section{padding-top:12px}.property-section .field{margin-bottom:10px}.property-section textarea{min-height:84px}.properties label>span,.property-section>.field>span{display:block;margin-bottom:3px}.viewport-property-tabs{display:flex;gap:3px;margin:12px 0 8px}.viewport-property-tabs button{flex:1;min-width:0;padding:5px 3px;font-size:10px}.viewport-property-tabs button.active{border-color:var(--accent);background:var(--accent);color:var(--bg)}.geometry-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 8px}.select-parent-button{width:100%;margin-bottom:10px}.state-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}.state-options label{min-width:0;display:flex;align-items:center;gap:6px;padding:5px 6px;border:1px solid var(--border);border-radius:4px;color:var(--fg);font-size:10px;text-transform:none}.state-options input{width:14px;min-height:14px}.interaction-list{margin-top:12px;padding-top:10px;border-top:1px solid var(--border)}.interaction-list>strong{font-size:11px}.interaction-list>div{display:grid;gap:2px;margin-top:7px;padding:7px;border-radius:4px;background:var(--bg)}.interaction-list code{color:#7dd3fc;font-size:10px;word-break:break-word}.interaction-list small{color:var(--fg-2)}.advanced-json{margin-top:12px;border-top:1px solid var(--border);padding-top:8px}.advanced-json summary{cursor:pointer;color:var(--fg-2);font-size:10px}.advanced-json textarea{min-height:220px;margin-top:8px}.json-error{display:block;margin-top:4px;color:var(--danger)}.canvas-toolbar{height:52px;justify-content:flex-start;gap:8px;padding:0 10px;overflow-x:auto;overflow-y:hidden}.canvas-title{min-width:118px;max-width:170px;flex:0 0 auto}.canvas-title strong,.canvas-title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewport-tabs{margin-left:0;flex:0 0 auto}.canvas-tool-group{display:flex;align-items:center;gap:3px;padding-left:7px;border-left:1px solid #cbd5e1}.canvas-toolbar .icon-button{border-color:#cbd5e1;background:#fff;color:#334155}.canvas-toolbar .icon-button:hover:not(:disabled){background:#0f172a;color:#fff}.layout-mode-toggle{height:30px;display:inline-flex;align-items:center;gap:5px;flex:0 0 auto;border-color:#cbd5e1;background:#fff;color:#334155;white-space:nowrap}.layout-mode-toggle svg{width:14px;height:14px}.layout-mode-toggle span{color:inherit}.layout-mode-toggle.active{border-color:#0369a1;background:#0369a1;color:#fff}.zoom-controls{flex:0 0 auto;margin-left:auto}.zoom-controls .icon-button{width:28px;height:28px;flex-basis:28px}.artboard-stage{height:calc(100% - 52px);background-color:#dde3e8;background-image:linear-gradient(rgba(100,116,139,.13) 1px,transparent 1px),linear-gradient(90deg,rgba(100,116,139,.13) 1px,transparent 1px);background-size:16px 16px}.artboard{border-radius:3px}.freeform-surface{position:relative;min-width:100%;min-height:100%;overflow:visible}.preview-app_shell>.preview-children.freeform-surface{display:block;grid-template-columns:none;grid-template-rows:none}.preview-app_shell>.preview-children.freeform-surface>.preview-sidebar,.preview-app_shell>.preview-children.freeform-surface>.preview-top_bar,.preview-app_shell>.preview-children.freeform-surface>.preview-header,.preview-app_shell>.preview-children.freeform-surface>.preview-page,.preview-app_shell>.preview-children.freeform-surface>.preview-section,.preview-app_shell>.preview-children.freeform-surface>.preview-scroll_area,.preview-app_shell>.preview-children.freeform-surface>.preview-bottom_nav{grid-column:auto;grid-row:auto;align-self:auto}.freeform-node{overflow:visible}.preview-node.is-leaf{display:flex;min-width:24px;min-height:24px}.preview-node.is-leaf>.mock{width:100%;height:100%}.preview-node.is-leaf>.mock.button,.preview-node.is-leaf>.mock.menu-button,.preview-node.is-leaf>.mock.nav-item,.preview-node.is-leaf>.mock.choice{display:flex}.preview-node.is-leaf>.mock.heading,.preview-node.is-leaf>.mock.text{overflow:hidden}.mock.heading{margin:0;color:#111827;font-size:24px;line-height:1.2}.mock.text{color:#475569;line-height:1.5}.mock.image,.mock.image-placeholder{object-fit:cover;border-radius:6px}.mock.image-placeholder{display:flex;align-items:center;justify-content:center;border:1px dashed #94a3b8;background:#e2e8f0;color:#64748b}.mock.avatar{display:flex;align-items:center;justify-content:center;border-radius:50%;background:#0f766e;color:#fff;font-weight:700}.mock.icon{display:flex;align-items:center;justify-content:center;color:#334155;font-size:20px}.mock.badge,.mock.tag{display:inline-flex;align-items:center;justify-content:center;border:1px solid #bfdbfe;border-radius:999px;background:#eff6ff;color:#1d4ed8;padding:4px 9px;font-size:11px}.mock.divider{width:100%;height:1px!important;align-self:center;border:0;background:#cbd5e1}.mock.link{color:#0369a1;text-decoration:underline}.mock.calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border:1px solid #e2e8f0;border-radius:6px;overflow:hidden;background:#fff}.mock.calendar>strong,.mock.calendar>span{min-width:0;display:flex;align-items:center;justify-content:center;border-right:1px solid #e2e8f0;border-bottom:1px solid #e2e8f0;color:#475569;font-size:10px}.mock.calendar>strong{background:#f8fafc;color:#334155}.mock.textarea em{min-height:72px}.selecto-selection{z-index:40!important}.moveable-control-box{z-index:40!important;pointer-events:none!important}.moveable-control{pointer-events:auto!important}.selecto-selection{border:1px solid #0284c7!important;background:#0ea5e91f!important}.moveable-line{background:#0284c7!important}.moveable-control{width:9px!important;height:9px!important;margin-top:-4px!important;margin-left:-4px!important;border:1px solid #fff!important;background:#0284c7!important}.import-review-panel{position:absolute;right:16px;bottom:18px;z-index:70;width:min(380px,calc(100% - 32px));max-height:min(420px,calc(100% - 48px));display:flex;flex-direction:column;border:1px solid #94a3b8;border-radius:8px;background:#fff;color:#0f172a;box-shadow:0 18px 44px #0f172a3d;overflow:hidden}.import-review-panel>header{min-height:44px;display:flex;align-items:center;justify-content:space-between;padding:6px 8px 6px 12px;border-bottom:1px solid #e2e8f0}.import-review-panel>header>div{display:flex;align-items:center;gap:8px}.import-review-panel>header span{min-width:22px;padding:2px 6px;border-radius:999px;background:#e2e8f0;color:#475569;font-size:11px;text-align:center}.import-review-panel .icon-button{color:#475569}.import-review-list{overflow-y:auto;padding:6px}.import-review-item{width:100%;display:grid;gap:4px;padding:9px 10px;border:0;border-left:3px solid #94a3b8;border-radius:4px;background:transparent;color:inherit;text-align:left}.import-review-item+.import-review-item{margin-top:4px}.import-review-item:hover:not(:disabled){background:#f1f5f9}.import-review-item.warning{border-left-color:#d97706}.import-review-item.error{border-left-color:#dc2626}.import-review-item:disabled{cursor:default;opacity:.72}.import-review-item span{font-size:12px;font-weight:600}.import-review-item small{color:#64748b;font-size:10px}@media(max-width:1260px){.language-select>span,.template-select>span,.export-menu>svg,.validation-pill{display:none}.language-select select{min-width:96px}.template-select select{min-width:132px}}@media(max-width:900px){.brand-block{display:none}.body,.body.properties-collapsed{grid-template-columns:210px minmax(0,1fr)}.body.workflow-spec{grid-template-columns:minmax(0,1fr)}.body.workflow-spec .blueprint-panel{position:absolute;top:0;right:0;bottom:0;z-index:60;width:min(390px,calc(100% - 48px));box-shadow:-16px 0 40px #0f172a59}.align-tools{display:none}.canvas-toolbar{height:92px;display:grid;grid-template-columns:minmax(112px,1fr) auto auto;grid-template-areas:"title viewport layout" "selection zoom properties";align-content:center;gap:6px 8px;overflow:hidden}.canvas-title{grid-area:title;min-width:0}.viewport-tabs{grid-area:viewport}.selection-tools{grid-area:selection;padding-left:0;border-left:0}.layout-mode-toggle{grid-area:layout;justify-self:end}.zoom-controls{grid-area:zoom;justify-self:end;margin-left:0}.properties-toolbar-button{grid-area:properties;justify-self:end}.artboard-stage{height:calc(100% - 92px)}}@media(max-width:640px){.body,.body.properties-collapsed{grid-template-columns:176px minmax(0,1fr)}.panel.palette{padding:8px}.side-tabs button{padding-inline:4px}.palette-item{padding-inline:8px}.workflow-bar{padding-right:6px}.workflow-steps button{padding-inline:7px}.workflow-steps button>span:last-child,.autosave-status{display:none}.spec-two-columns{grid-template-columns:minmax(0,1fr)}.canvas-toolbar{grid-template-columns:minmax(104px,1fr) auto auto}.zoom-controls input{display:none}}.project-bar{display:flex;flex-direction:column;gap:8px;padding:8px 14px;background:#f1f5f9;border-bottom:1px solid #cbd5e1;color:#0f172a}.project-bar-meta{display:flex;gap:8px;align-items:center}.project-name-input,.project-description-input{height:28px;border:1px solid #cbd5e1;border-radius:6px;padding:0 8px;font-size:12px;background:#fff;color:#0f172a}.project-name-input{font-weight:650;min-width:160px}.project-description-input{flex:1;min-width:160px;color:#475569}.project-screens{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.project-tab{display:flex;align-items:center;gap:2px;height:28px;padding:0 4px 0 8px;border:1px solid #cbd5e1;border-radius:6px;background:#fff}.project-tab.active{border-color:#0f172a;background:#0f172a;color:#fff}.project-tab-label{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 4px;border:none;background:transparent;color:inherit;font-size:12px;cursor:pointer}.project-tab-entry{width:12px;height:12px;fill:#f59e0b;color:#f59e0b}.project-tab-rename{height:24px;width:120px;border:1px solid #cbd5e1;border-radius:4px;padding:0 6px;font-size:12px}.project-tab-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;border-radius:4px;background:transparent;color:inherit;cursor:pointer}.project-tab-icon svg{width:13px;height:13px}.project-tab-icon:disabled{opacity:.35;cursor:default}.project-tab-icon:not(:disabled):hover{background:#94a3b859}.project-add-screen{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px dashed #94a3b8;border-radius:6px;background:#fff;color:#334155;cursor:pointer}.project-add-screen svg{width:14px;height:14px}.project-nav-toggle{display:inline-flex;align-items:center;gap:4px;height:28px;margin-left:auto;padding:0 10px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#334155;font-size:12px;cursor:pointer}.project-nav-toggle svg{width:14px;height:14px}.project-nav-editor{border:1px solid #cbd5e1;border-radius:6px;background:#fff;padding:8px}.project-nav-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.project-nav-toolbar strong{font-size:12px}.project-nav-toolbar button{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 10px;border:1px solid #cbd5e1;border-radius:6px;background:#f8fafc;color:#0f172a;font-size:12px;cursor:pointer}.project-nav-toolbar button svg{width:13px;height:13px}.project-nav-empty{margin:0;font-size:12px;color:#64748b}.project-nav-rows{display:flex;flex-direction:column;gap:6px}.project-nav-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px}.project-nav-row label{display:flex;flex-direction:column;gap:2px;font-size:10px;color:#64748b}.project-nav-row select,.project-nav-row input{height:28px;border:1px solid #cbd5e1;border-radius:6px;padding:0 6px;font-size:12px;background:#fff;color:#0f172a}.project-nav-label-field{flex:1;min-width:120px}.project-nav-label-field input{width:100%}.project-nav-remove{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid #cbd5e1;border-radius:6px;background:#fff;color:#b91c1c;cursor:pointer}.project-nav-remove svg{width:14px;height:14px}.workspace-panel{border-bottom:1px solid var(--line);background:#f8fafc;color:#0f172a;padding:10px 16px;display:grid;gap:10px}.workspace-panel>header{display:grid;grid-template-columns:minmax(220px,1fr) minmax(320px,520px);gap:12px;align-items:center}.workspace-panel>header>div:first-child{display:grid;gap:2px}.workspace-panel>header strong{font-size:13px}.workspace-panel>header span,.workspace-panel small{color:#64748b;font-size:12px}.workspace-connect-row,.workspace-save-row,.workspace-candidate-actions{display:flex;gap:8px;align-items:center}.workspace-panel input,.workspace-panel select{min-width:0;border:1px solid #cbd5e1;border-radius:8px;padding:7px 9px;font:inherit;background:#fff}.workspace-connect-row input,.workspace-save-row input{flex:1}.workspace-panel button{border:1px solid #cbd5e1;border-radius:8px;background:#fff;color:#0f172a;padding:7px 10px;font:inherit;display:inline-flex;gap:6px;align-items:center;cursor:pointer}.workspace-panel button:hover:not(:disabled){border-color:#0284c7;color:#0369a1}.workspace-panel button:disabled{opacity:.5;cursor:not-allowed}.workspace-panel svg{width:14px;height:14px}.workspace-error{margin:0;color:#b91c1c;font-size:12px}.workspace-grid{display:grid;grid-template-columns:minmax(220px,1fr) minmax(240px,1fr) minmax(260px,1.2fr);gap:12px}.workspace-grid>section{border:1px solid #e2e8f0;border-radius:12px;padding:10px;background:#fff;display:grid;gap:8px;align-content:start}.workspace-grid h3{margin:0;font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:#475569}.workspace-grid iframe{width:100%;height:180px;border:1px solid #e2e8f0;border-radius:10px;background:#fff}.workspace-candidates{display:grid;gap:8px;max-height:220px;overflow:auto}.workspace-candidate{border:1px solid #e2e8f0;border-radius:10px;padding:8px;display:grid;gap:5px}.workspace-candidate.approved{border-color:#86efac;background:#f0fdf4}.workspace-candidate.ignored{opacity:.7}.workspace-candidate>span{justify-self:start;border-radius:999px;background:#e0f2fe;color:#0369a1;padding:2px 8px;font-size:11px}.workspace-candidate-actions{flex-wrap:wrap}.workspace-candidate-actions select{max-width:150px}.workspace-template-section .template-preview-empty{min-height:54px}@media(max-width:1100px){.workspace-panel>header,.workspace-grid{grid-template-columns:1fr}}