dsh-motion-ui 0.8.6 → 0.8.8
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.
- package/CHANGELOG.md +15 -1
- package/DESIGN.zh-CN.md +2 -2
- package/README.md +18 -18
- package/VERIFICATION.md +10 -10
- package/client.js +79 -24
- package/lib/assets/katex.css +1 -1
- package/lib/assets/mermaid.js +2 -2
- package/lib/assets/standalone-runtime.js +35 -25
- package/lib/assets/visual.js +41 -31
- package/lib/build-info.js +1 -1
- package/lib/catalog.js +94 -94
- package/lib/mechanism-css.js +1 -1
- package/lib/mechanism-geometry.js +2 -2
- package/lib/mechanism-scenes.js +1 -1
- package/lib/protocol.js +352 -352
- package/lib/scene-entry.js +1 -1
- package/lib/third-party/anatomy-NOTICE.md +1 -1
- package/lib/third-party/dsh-genui-LICENSE.txt +21 -21
- package/lib/third-party/lucian-uxui-LICENSE.txt +21 -21
- package/lib/ui-skill.js +29 -29
- package/lib/visual.js +1 -1
- package/package.json +8 -7
- package/skills/motion-design/upstream.json +8 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# DSH Motion UI
|
|
2
2
|
|
|
3
|
+
## 0.8.7 — 2026-10-18
|
|
4
|
+
|
|
5
|
+
### 补齐原生组件的皮肤兼容
|
|
6
|
+
|
|
7
|
+
- 修复步骤卡片和提示块遗漏圆角防护的问题(Issue #4):明亮扁平的步骤卡片恢复 18px,提示块保留左侧直角、右侧圆角。
|
|
8
|
+
- 扩展防护至步骤编号、按钮、徽标、标签、进度、分段选择、步进控件、操作菜单与开关滑块等原生元素,避免相同皮肤补丁继续清除局部形状。
|
|
9
|
+
- 为文本/代码复制块的独立样式记录原始圆角,保留各风格和自由模式下的桌面/窄屏设计。
|
|
10
|
+
- 保留非对称圆角、有意使用的直角、设置预览及模型画布内部样式。
|
|
11
|
+
|
|
12
|
+
### 验证
|
|
13
|
+
|
|
14
|
+
- 扩展原有 2,304 个组合检查,逐个核对步骤、提示块及更多原生元素的四角几何,并检查开关伪元素。
|
|
15
|
+
- 执行完整回归及正式包安装验证。
|
|
16
|
+
|
|
3
17
|
## 0.8.6 — 2026-10-18
|
|
4
18
|
|
|
5
19
|
### 内部组件与皮肤兼容
|
|
@@ -104,7 +118,7 @@
|
|
|
104
118
|
|
|
105
119
|
### 验证
|
|
106
120
|
|
|
107
|
-
148 项单元/集成测试、24 组构建与浏览器回归,以及 18 项播放器检查。Desktop 原生通道额外验证了真实鼠标拖动、解码帧时间、画面像素变化、播放状态和离开页面后的资源释放,未仅以进度数字变化判定成功。
|
|
121
|
+
148 项单元/集成测试、24 组构建与浏览器回归,以及 18 项播放器检查。Desktop 原生通道额外验证了真实鼠标拖动、解码帧时间、画面像素变化、播放状态和离开页面后的资源释放,未仅以进度数字变化判定成功。
|
|
108
122
|
|
|
109
123
|
|
|
110
124
|
## 0.8.0 — 2026-10-17
|
package/DESIGN.zh-CN.md
CHANGED
|
@@ -37,13 +37,13 @@
|
|
|
37
37
|
|
|
38
38
|
## 实测范围
|
|
39
39
|
|
|
40
|
-
五组预览:原显存预算规划器、计算器、比较图表、条件预算示例、语义配色/负数/全零图表。分别检查浅色、深色、390px;浏览器无 pageerror,无整页横向溢出。真实 Web 聊天还要验证历史恢复和主题继承,不能只以独立预览代替。
|
|
40
|
+
五组预览:原显存预算规划器、计算器、比较图表、条件预算示例、语义配色/负数/全零图表。分别检查浅色、深色、390px;浏览器无 pageerror,无整页横向溢出。真实 Web 聊天还要验证历史恢复和主题继承,不能只以独立预览代替。
|
|
41
41
|
|
|
42
42
|
## 0.3 — 动态曲线与恢复操作
|
|
43
43
|
|
|
44
44
|
线图按数据范围自动设置纵轴,柱图始终包含零基线。数字横轴可声明 xScale:linear,按实际采样距离放置点;分类轴保持旧版等距行为。曲线端点数值向绘图区内对齐,避免与坐标刻度叠字。精确值始终保留在展开数据表中。
|
|
45
45
|
|
|
46
|
-
读取失败时控件保持禁用并提供重新读取;保存失败时保留本页参数并提供重试;冲突时明确提供“使用已保存参数”和“保留本页参数并重试”。恢复操作继承统一的次级按钮样式。无效数值草稿不会因失焦悄悄消失。
|
|
46
|
+
读取失败时控件保持禁用并提供重新读取;保存失败时保留本页参数并提供重试;冲突时明确提供“使用已保存参数”和“保留本页参数并重试”。恢复操作继承统一的次级按钮样式。无效数值草稿不会因失焦悄悄消失。
|
|
47
47
|
|
|
48
48
|
## 0.4 — 六种场景设计与生成预览
|
|
49
49
|
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
为 DeepSeek Harness Web / Desktop 提供可交互组件、自由 HTML/SVG 图解与动画。引导模式会主动注入设计技能、协议和示例;自由模式让模型自主设计。设置位于首页 → 插件 → dsh-motion-ui。
|
|
4
4
|
|
|
5
|
-
Interactive, declarative tool views for **DeepSeek Harness Web / Desktop 0.2.0-rc.2 / 0.2.1-rc.1 / 0.2.1-rc.2**.
|
|
5
|
+
Interactive, declarative tool views for **DeepSeek Harness Web / Desktop 0.2.0-rc.2 / 0.2.1-rc.1 / 0.2.1-rc.2 / 0.2.1-rc.3**.
|
|
6
6
|
|
|
7
7
|
The plugin adds `render_scene` (short flow/comparison/allocation/budget data), `render_text` (quick native typography), `render_ui` (validated components), `render_canvas` (HTML/SVG), `render_mechanism` (compact assembly/kinematics scenes), and `ui_catalog` (protocol + examples). It saves per-document input state on the Host and sends explicit follow-up requests with the current parameter snapshot.
|
|
8
8
|
|
|
@@ -205,13 +205,13 @@ Supported components: heading, text, card, row, column, metric, table, bar/line
|
|
|
205
205
|
|
|
206
206
|
The exact protocol and runnable examples are in `lib/catalog.js` and `examples/`. Component attribute definitions in `lib/components.js` drive both validation and capability discovery. `ui_catalog()` returns the protocol, component fields and two compact static examples; `ui_catalog({topic:"canvas"})` adds the full design guide and four distinct visual examples. Other topics are `quick` (four lightweight static layouts), `data`, `scenes`, and `all` (fourteen examples). This avoids sending every example on each request.
|
|
207
207
|
|
|
208
|
-
The tool card retains a text result. A state-only conversation extension replays standard successful tool results into the official `conversation.chat.turnTail` list slot, so the interactive UI stays visible when DSH folds work details. It does not modify DSH core or add custom persisted event types.
|
|
209
|
-
|
|
210
|
-
## Default visual design
|
|
211
|
-
|
|
208
|
+
The tool card retains a text result. A state-only conversation extension replays standard successful tool results into the official `conversation.chat.turnTail` list slot, so the interactive UI stays visible when DSH folds work details. It does not modify DSH core or add custom persisted event types.
|
|
209
|
+
|
|
210
|
+
## Default visual design
|
|
211
|
+
|
|
212
212
|
Standard components receive the same theme-aware design, built-in line icons, clear metric hierarchy, section cards, switches, colored charts, and responsive controls. Existing documents need no changes. Fixed optional `icon`/`tone` tokens are documented in `ui_catalog`; freeform SVG/CSS belongs in an isolated sandbox node. Tones are static semantics and never infer safety from a number. On narrow screens, chart plots and tables scroll internally to preserve readable labels.
|
|
213
|
-
|
|
214
|
-
Heading/text/card titles are included in the default-state text projection. Conditional text uses a derived `if` expression returning strings; `examples/conditional-budget.json` demonstrates it. Comparison aliases `gt`, `gte`, `neq` supplement the existing operators.
|
|
213
|
+
|
|
214
|
+
Heading/text/card titles are included in the default-state text projection. Conditional text uses a derived `if` expression returning strings; `examples/conditional-budget.json` demonstrates it. Comparison aliases `gt`, `gte`, `neq` supplement the existing operators.
|
|
215
215
|
|
|
216
216
|
## Scene designs
|
|
217
217
|
|
|
@@ -244,12 +244,12 @@ Follow-up buttons send the current selected parameters through `ctx.sessions.sco
|
|
|
244
244
|
|
|
245
245
|
State API requests use the authenticated DSH Connection `/api` bridge, including its Host/Origin fence. There is no unauthenticated plugin HTTP endpoint. The plugin assumes DSH's single operator model; it does not implement multi-user tenancy.
|
|
246
246
|
|
|
247
|
-
## Live chart and table data
|
|
248
|
-
|
|
249
|
-
A derived root can use `{map:{source:"data.samples",fields:{...}}}`. Each output field uses the same bounded expression interpreter; `item.key` reads the current static source row, and normal state/derived references use the current parameters. Chart/table `rows` can reference this derived array. See `examples/live-memory-curve.json` for a working context/KV calculator. The renderer validates current result types on every recomputation; invalid dynamic data shows an error and disables follow-up.
|
|
250
|
-
|
|
251
|
-
Line charts support `xScale:"linear"` for quantitative samples and place points at their actual numeric x coordinates. Default category spacing remains backward compatible. Line y axes adapt to the data extent; bar charts include zero. Both preserve exact values in their accessible data table.
|
|
252
|
-
|
|
247
|
+
## Live chart and table data
|
|
248
|
+
|
|
249
|
+
A derived root can use `{map:{source:"data.samples",fields:{...}}}`. Each output field uses the same bounded expression interpreter; `item.key` reads the current static source row, and normal state/derived references use the current parameters. Chart/table `rows` can reference this derived array. See `examples/live-memory-curve.json` for a working context/KV calculator. The renderer validates current result types on every recomputation; invalid dynamic data shows an error and disables follow-up.
|
|
250
|
+
|
|
251
|
+
Line charts support `xScale:"linear"` for quantitative samples and place points at their actual numeric x coordinates. Default category spacing remains backward compatible. Line y axes adapt to the data extent; bar charts include zero. Both preserve exact values in their accessible data table.
|
|
252
|
+
|
|
253
253
|
## Safety and limits
|
|
254
254
|
|
|
255
255
|
The Host validates JSON shape, registered fields/components, bindings, reference graphs, action keys, numeric ranges/steps and bounded expression operations. Standard components render text as text; expressions use a fixed interpreter. The explicit sandbox node accepts model-authored HTML/SVG, CSS and JavaScript in an opaque-origin iframe, never the host DOM. No direct tool-execution API is exposed.
|
|
@@ -314,11 +314,11 @@ Authored canvases can call `DSHUI.formatNumber(value, decimals=2)` to match nati
|
|
|
314
314
|
Source: `lib/protocol.js` (shared validation/calculation/fallback), `lib/store.js` (versioned Host state), `index.js` (DSH adapter), `src/view.js` (React renderer), `src/client.jsx` (slot adapter). `npm run build` generates `client.js` with React supplied by DSH's ModuleLoader.
|
|
315
315
|
|
|
316
316
|
Run `npm test`, `npm run build`, and `npm run check` before packing. Browser smoke scripts and verification notes are kept under `tests/` and `VERIFICATION.md` in the source checkout.
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
322
|
|
|
323
323
|
### 可复制的文本与代码
|
|
324
324
|
|
package/VERIFICATION.md
CHANGED
|
@@ -266,18 +266,18 @@ Rapidly changing an input back to the already-saved value now clears the pending
|
|
|
266
266
|
|
|
267
267
|
## Scope limits
|
|
268
268
|
|
|
269
|
-
Incremental UI streaming is not implemented. Direct native calls support the UI; PTC/composite presentation may fall back to text. State-only removal fallback is covered by standard text output and renderer tests; a live uninstall/reinstall test has not been performed. Model layout quality beyond the supplied component set is not claimed.
|
|
269
|
+
Incremental UI streaming is not implemented. Direct native calls support the UI; PTC/composite presentation may fall back to text. State-only removal fallback is covered by standard text output and renderer tests; a live uninstall/reinstall test has not been performed. Model layout quality beyond the supplied component set is not claimed.
|
|
270
270
|
|
|
271
|
-
Final installed-package check: Web restarted with plugin 0.1.2; both real-model-generated interfaces replayed from history, saved parameters restored, empty numeric draft disabled follow-up, invalid Origin received HTTP 403, and a second refresh preserved both interfaces. No page or conversation subscriber errors. Evidence: `test-output/installed-verification.json`, `final-calculator.png`, `final-comparison.png`.
|
|
271
|
+
Final installed-package check: Web restarted with plugin 0.1.2; both real-model-generated interfaces replayed from history, saved parameters restored, empty numeric draft disabled follow-up, invalid Origin received HTTP 403, and a second refresh preserved both interfaces. No page or conversation subscriber errors. Evidence: `test-output/installed-verification.json`, `final-calculator.png`, `final-comparison.png`.
|
|
272
272
|
|
|
273
273
|
## 0.1.3 — 汐可酱验收反馈修复
|
|
274
274
|
|
|
275
275
|
- Follow-up snapshots now carry all current `derived` values from the same bounded interpreter as the renderer, evaluated from complete current state. `stateKeys` continues to select submitted state fields. Values preserve calculation precision; the prompt explains display rounding and asks the model to use supplied results.
|
|
276
276
|
- Stateless documents omit the initial-parameters line in new tool text results. Their native explanation also omits the empty parameter block and uses the shorter explanation label. Existing persisted tool-result text is immutable.
|
|
277
277
|
- 19 tests pass, including nested derived dependencies (`round`, `if`, `lt`), current versus default state, selected-state filtering, and both text/renderer stateless fallback cases. Build/check/pack pass.
|
|
278
|
-
- 0.1.3 installed in the Web profile, composed configuration validates, installed client SHA256 matches source build.
|
|
278
|
+
- 0.1.3 installed in the Web profile, composed configuration validates, installed client SHA256 matches source build.
|
|
279
279
|
|
|
280
|
-
Installed browser feedback acceptance passed: actual calculator button produced a request with `state.bits=8` and `derived.weightGiB=25.14570951461792`, matching displayed 25.15 GiB. Session provenance retained. Stateless comparison explanation contains no empty parameter block. The request was intercepted before reaching the model, so this check created no extra conversation turn. Evidence: `test-output/feedback-verification.json`; no browser page errors.
|
|
280
|
+
Installed browser feedback acceptance passed: actual calculator button produced a request with `state.bits=8` and `derived.weightGiB=25.14570951461792`, matching displayed 25.15 GiB. Session provenance retained. Stateless comparison explanation contains no empty parameter block. The request was intercepted before reaching the model, so this check created no extra conversation turn. Evidence: `test-output/feedback-verification.json`; no browser page errors.
|
|
281
281
|
|
|
282
282
|
## 0.2.0 — unified default visual design
|
|
283
283
|
|
|
@@ -285,9 +285,9 @@ Installed browser feedback acceptance passed: actual calculator button produced
|
|
|
285
285
|
- Optional fixed icon/tone vocabulary; arbitrary CSS/SVG/color strings remain rejected. Static tones do not infer success from data. Decorative icons are hidden from accessible names.
|
|
286
286
|
- Complete initial text projection includes heading/text/card titles, including derived string explanations. Added gt/gte/neq and a third conditional-budget catalog example.
|
|
287
287
|
- 22 tests pass; build/check/pack pass. Isolated browser acceptance covers the original recorded planner and four additional fixtures in light/dark/390px, no document overflow, toggle/select operations, and a changing conditional verdict.
|
|
288
|
-
- Web profile installs 0.2.0; configuration validates; installed client SHA256 matches build. Visual specification: DESIGN.zh-CN.md. Incremental generation and derived-series charts remain outside this release.
|
|
288
|
+
- Web profile installs 0.2.0; configuration validates; installed client SHA256 matches build. Visual specification: DESIGN.zh-CN.md. Incremental generation and derived-series charts remain outside this release.
|
|
289
289
|
|
|
290
|
-
Installed Web visual acceptance passed: all three original UIs replay, the planner's saved inputs remain intact, icons/switch/select are present, native DSH light/dark tokens change metric colors, 390px bounds hold and charts scroll internally, refresh retains the planner. No page/subscriber errors. Evidence: `test-output/web-design-verification.json`, `web-design-calculator-light.png`, `web-design-results-light.png`, `web-design-results-dark.png`, `web-design-results-mobile.png`. Theme changes occurred only in an isolated test browser DOM, not the user's saved appearance setting.
|
|
290
|
+
Installed Web visual acceptance passed: all three original UIs replay, the planner's saved inputs remain intact, icons/switch/select are present, native DSH light/dark tokens change metric colors, 390px bounds hold and charts scroll internally, refresh retains the planner. No page/subscriber errors. Evidence: `test-output/web-design-verification.json`, `web-design-calculator-light.png`, `web-design-results-light.png`, `web-design-results-dark.png`, `web-design-results-mobile.png`. Theme changes occurred only in an isolated test browser DOM, not the user's saved appearance setting.
|
|
291
291
|
|
|
292
292
|
## 0.3.0 — live derived data and state recovery
|
|
293
293
|
|
|
@@ -296,11 +296,11 @@ Installed Web visual acceptance passed: all three original UIs replay, the plann
|
|
|
296
296
|
- Restore failures offer retry with inputs disabled; save failures retain drafts and offer retry. Conflicts offer explicit remote adoption or keep-local retry, both using the Host revision protocol. Ambiguous committed writes become conflicts rather than silent overwrites. Edits during in-flight saves are subsequently saved.
|
|
297
297
|
- Invalid numeric drafts remain visible on blur. Explicit remote adoption remounts input drafts and clears invalid markers. This also prevents blur-driven layout changes from losing recovery clicks.
|
|
298
298
|
- 27 unit/integration tests pass. Isolated React StrictMode + actual UiStore browser acceptance passes eight recovery/data scenarios, including two simultaneous pages, read/write faults, lost commit response, concurrent edits and generated-row followup snapshots. Evidence: `test-output/recovery-verification.json`.
|
|
299
|
-
- Build/check/pack pass. Web profile installed version 0.3.0; composed configuration validates; installed client SHA256 matches build. Incremental UI generation remains the next stage.
|
|
299
|
+
- Build/check/pack pass. Web profile installed version 0.3.0; composed configuration validates; installed client SHA256 matches build. Incremental UI generation remains the next stage.
|
|
300
300
|
|
|
301
301
|
Real configured-model Web acceptance passed on installed 0.3.0: the model used native render_ui to create the mapped curve. Changing maximum context from 32K to 64K updated the curve, table and theoretical weight-plus-KV metric from 14.86 to 16.36 GiB locally. Refresh restored 64K. The actual follow-up request included the current derived curve and matching total; the request was intercepted before model execution. The 390px layout stayed in bounds, with no browser errors. Evidence: test-output/web-curve-verification.json and test-output/web-live-curve.png.
|
|
302
302
|
|
|
303
|
-
Legacy Web regression on installed 0.3.0 also passed: all three existing UI documents replayed, saved planner inputs remained intact, icons and toggle/select controls rendered, native light/dark theme colors changed correctly, narrow charts scrolled internally, and refresh retained planner metrics. No page or subscriber errors. Evidence: test-output/web-design-verification.json. Desktop profile was untouched.
|
|
303
|
+
Legacy Web regression on installed 0.3.0 also passed: all three existing UI documents replayed, saved planner inputs remained intact, icons and toggle/select controls rendered, native light/dark theme colors changed correctly, narrow charts scrolled internally, and refresh retained planner metrics. No page or subscriber errors. Evidence: test-output/web-design-verification.json. Desktop profile was untouched.
|
|
304
304
|
|
|
305
305
|
## 0.4.1 — progressive preview and six scene designs
|
|
306
306
|
|
|
@@ -345,8 +345,8 @@ All selected High effort. These single-run wall times include provider response,
|
|
|
345
345
|
- Evidence: `test-output/model-matrix/summary.json`, per-model `results.json`, mobile/desktop screenshots and `observations.json`; final installed package hashes/replay are recorded separately in `installed-development-files.json` and `model-matrix/installed-replay.json`. Display reports include their observed revision; old revision snapshots do not certify the current UI. Desktop and external npm/GitHub publication are outside this batch.
|
|
346
346
|
- Separate MiMo display-repair acceptance passed: it inspected the real 390px report and patched its own canvas. The original 7px SVG label warnings disappeared at revision 2; animation, speed=2, paused state and refreshed parameters survived. This took about 242s including browser checks, showing a latency limitation rather than universal quick repair. Evidence: `model-matrix/mimo-v2-5/visual-repair.json`, `visual-repair-mobile.png`. The initial native 11px auxiliary warning is addressed by the final renderer font change, separately verified locally.
|
|
347
347
|
- Model selection also updates DSH's global default. The original entry observed before this user turn's tests (DeepSeek V4.1 Flash, Medium) is restored; each test conversation retains its own model. Original provider configurations were compared without exposing credentials. The named Step Chat test alias is retained. Evidence: `model-matrix/config-restoration.json`.
|
|
348
|
-
|
|
349
|
-
|
|
348
|
+
|
|
349
|
+
|
|
350
350
|
|
|
351
351
|
### 可复制文本与代码(0.5.6 未发布开发版)
|
|
352
352
|
原生 text(copyable/title) 与 code(lang/title/wrap),扩展 text/code 的字段校验和修复后保留均已验证。1920×1080 Edge 实测 Clipboard API 原文复制(Windows 原生换行规范化)、拒绝 API 后兼容复制、失败反馈、临时 textarea 清理、字面 HTML 不执行、长行内部滚动、明暗主题及只读预览禁用复制。证据:test-output/copy-verification.json、copy-light.png、copy-dark.png。
|
package/client.js
CHANGED
|
@@ -4260,7 +4260,7 @@ function Sandbox({ node, document: doc, state: state2, data, derived, disabled,
|
|
|
4260
4260
|
}
|
|
4261
4261
|
|
|
4262
4262
|
// lib/build-info.js
|
|
4263
|
-
var BUILD_INFO = Object.freeze({ "version": "0.8.
|
|
4263
|
+
var BUILD_INFO = Object.freeze({ "version": "0.8.8", "id": "0.8.8+39dcc34379b1", "sourceHash": "39dcc34379b1cf549d06f60ea6e9e692e8f58611e7b003dc0438a0d1b4ba5b23" });
|
|
4264
4264
|
|
|
4265
4265
|
// lib/refinement.js
|
|
4266
4266
|
var AUDIT_MESSAGES = Object.freeze({ overflow: "\u5185\u5BB9\u8D85\u51FA\u89C6\u53E3\u5BBD\u5EA6", smallText: "\u6587\u5B57\u5B9E\u9645\u663E\u793A\u5C3A\u5BF8\u5C0F\u4E8E 12px", contrast: "\u6587\u5B57\u4E0E\u80CC\u666F\u5BF9\u6BD4\u5EA6\u504F\u4F4E", missingLabel: "\u4EA4\u4E92\u63A7\u4EF6\u7F3A\u5C11\u53EF\u8BBF\u95EE\u540D\u79F0", runtimeError: "\u753B\u5E03\u62A5\u544A\u8FD0\u884C\u5F02\u5E38", clippedText: "\u6587\u5B57\u53EF\u80FD\u88AB\u9690\u85CF\u6216\u88C1\u5207", cardTextOverflow: "\u6587\u5B57\u8D85\u51FA\u5361\u7247\u5185\u5BB9\u8FB9\u754C\uFF1B\u8BF7\u4FDD\u7559\u9634\u5F71\u5E76\u8C03\u6574\u5BB9\u5668\u5C3A\u5BF8\u3001\u5185\u8FB9\u8DDD\u6216\u6587\u5B57\u6392\u7248", bottomWhitespace: "\u5185\u5BB9\u4E0B\u65B9\u5B58\u5728\u660E\u663E\u7A7A\u767D" });
|
|
@@ -5177,8 +5177,8 @@ function StreamSurface({ stream, sessionId, committedIds = [] }) {
|
|
|
5177
5177
|
clearTimeout(entry.timer);
|
|
5178
5178
|
entry.timer = null;
|
|
5179
5179
|
entry.finishing = () => {
|
|
5180
|
-
const
|
|
5181
|
-
if (!committedIds.length ||
|
|
5180
|
+
const surfaces2 = [...scroll.querySelectorAll("[data-dsh-generative-ui]")].filter((el) => committedIds.includes(el.dataset.dshGenerativeUi) && !el.hasAttribute("data-preview"));
|
|
5181
|
+
if (!committedIds.length || surfaces2.length === committedIds.length && surfaces2.every((el) => !el.querySelector("[data-canvas-phase=loading]"))) dispose(entry);
|
|
5182
5182
|
};
|
|
5183
5183
|
entry.finishing();
|
|
5184
5184
|
}
|
|
@@ -5392,6 +5392,80 @@ function resolveSourceFence(raw, { svg = false } = {}) {
|
|
|
5392
5392
|
|
|
5393
5393
|
// src/copy-block.js
|
|
5394
5394
|
var import_react16 = __toESM(require("react"), 1);
|
|
5395
|
+
|
|
5396
|
+
// src/host-boundary.js
|
|
5397
|
+
var surfaces = [
|
|
5398
|
+
".dgui-card",
|
|
5399
|
+
".dgui-metric",
|
|
5400
|
+
".dgui-control",
|
|
5401
|
+
".dgui-chart",
|
|
5402
|
+
".dgui-table-wrap",
|
|
5403
|
+
".dgui-steps li",
|
|
5404
|
+
".dgui-step-dot",
|
|
5405
|
+
".dgui-copy",
|
|
5406
|
+
".dgui-header",
|
|
5407
|
+
".dgui-heading-icon",
|
|
5408
|
+
".dgui-badge",
|
|
5409
|
+
".dgui-tag",
|
|
5410
|
+
".dgui-details",
|
|
5411
|
+
".dgui-progress",
|
|
5412
|
+
".dgui-progress progress",
|
|
5413
|
+
".dgui-button",
|
|
5414
|
+
".dgui-secondary",
|
|
5415
|
+
".dgui-toggle",
|
|
5416
|
+
".dgui-control output",
|
|
5417
|
+
".dgui-control input:not([type=range]):not([type=checkbox])",
|
|
5418
|
+
".dgui-control select",
|
|
5419
|
+
".dgui-root textarea",
|
|
5420
|
+
".dgui-root pre",
|
|
5421
|
+
".dgui-plot",
|
|
5422
|
+
".dgui-menu-trigger",
|
|
5423
|
+
".dgui-menu-content",
|
|
5424
|
+
".dgui-menu-content button",
|
|
5425
|
+
".dgui-canvas-loading",
|
|
5426
|
+
".dgui-canvas-spinner",
|
|
5427
|
+
".dgui-canvas-placeholder",
|
|
5428
|
+
".dgui-canvas-issue",
|
|
5429
|
+
".dgui-canvas-stage iframe",
|
|
5430
|
+
".dgui-version-preview",
|
|
5431
|
+
".dgui-segmented",
|
|
5432
|
+
".dgui-segment-indicator",
|
|
5433
|
+
".dgui-segmented button",
|
|
5434
|
+
".dgui-action-orb",
|
|
5435
|
+
".dgui-elastic",
|
|
5436
|
+
".dgui-stepper",
|
|
5437
|
+
".dgui-stepper>button",
|
|
5438
|
+
".dgui-card>.dgui-section-title",
|
|
5439
|
+
".dgui-row:has(>.dgui-metric)",
|
|
5440
|
+
".motion-copy-block",
|
|
5441
|
+
".motion-copy-button",
|
|
5442
|
+
"[data-motion-component=card]",
|
|
5443
|
+
"[data-motion-component=stat]"
|
|
5444
|
+
];
|
|
5445
|
+
var descendants = surfaces.map((s) => s.replace(/^\.dgui-root /, "")).join(",");
|
|
5446
|
+
function nativeGeometryCss(css) {
|
|
5447
|
+
const defaults = `:where(.dgui-root :is(${descendants})){--du-component-radius:0px}
|
|
5448
|
+
.dgui-toggle::before{--du-component-radius:0px}
|
|
5449
|
+
`;
|
|
5450
|
+
return defaults + recordNativeGeometry(css);
|
|
5451
|
+
}
|
|
5452
|
+
function recordNativeGeometry(css) {
|
|
5453
|
+
return css.replace(/border-radius\s*:\s*([^;}]+)/g, (rule, value) => rule + ";--du-component-radius:" + value.replaceAll("var(--du-radius-inner", "var(--du-owned-radius-inner").replaceAll("var(--du-radius", "var(--du-owned-radius"));
|
|
5454
|
+
}
|
|
5455
|
+
var root = ".dgui-root[data-preset]:not(.dgui-style-preview)";
|
|
5456
|
+
var INTERNAL_BOUNDARY_CSS = `
|
|
5457
|
+
${root} :is(${descendants}){border-radius:var(--du-component-radius,0px)!important;corner-shape:round}
|
|
5458
|
+
${root} .dgui-toggle::before{border-radius:var(--du-component-radius,50%)!important;corner-shape:round}
|
|
5459
|
+
`;
|
|
5460
|
+
var HOST_BOUNDARY_CSS = `
|
|
5461
|
+
${root}{--du-owned-radius:16px;--du-owned-radius-inner:12px;border-radius:var(--du-shell-radius,16px)!important;corner-shape:round}
|
|
5462
|
+
` + Object.entries(STYLE_SYSTEM).map(([id2, { native }]) => `${root}[data-visual-style=${id2}]{--du-shell-radius:${id2 === "editorial" ? 0 : id2 === "soft" ? 30 : native.radius}px;--du-owned-radius:${native.radius}px;--du-owned-radius-inner:${native.radius - 4}px}`).join("\n") + `
|
|
5463
|
+
` + INTERNAL_BOUNDARY_CSS + `
|
|
5464
|
+
${root}:is([data-preset=reading],[data-preset=minimal]){--du-shell-radius:0px}
|
|
5465
|
+
.dgui-marker[data-dgui-marker]{border:0!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;padding:0!important;min-width:0;box-sizing:border-box}
|
|
5466
|
+
`;
|
|
5467
|
+
|
|
5468
|
+
// src/copy-block.js
|
|
5395
5469
|
var h11 = import_react16.default.createElement;
|
|
5396
5470
|
async function copyContent(text3) {
|
|
5397
5471
|
try {
|
|
@@ -5424,7 +5498,7 @@ async function copyContent(text3) {
|
|
|
5424
5498
|
}
|
|
5425
5499
|
}
|
|
5426
5500
|
}
|
|
5427
|
-
var COPY_BLOCK_CSS = `
|
|
5501
|
+
var COPY_BLOCK_CSS = recordNativeGeometry(`
|
|
5428
5502
|
.motion-copy-block{position:relative;min-width:0;border:1px solid var(--du-line,var(--dsw-alias-border-default,#ddd));border-radius:24px;padding:18px 22px;color:var(--du-ink,var(--dsw-alias-label-primary,inherit));background:var(--du-bg,var(--dsw-alias-bg-layer-1,transparent));overflow:hidden;margin:8px 0}
|
|
5429
5503
|
.motion-copy-block[data-code]{background:var(--du-soft,var(--dsw-alias-bg-layer-2,#8881))}
|
|
5430
5504
|
.motion-copy-bar{display:flex;align-items:center;gap:10px;min-height:30px;margin-bottom:12px;color:var(--du-muted,var(--dsw-alias-label-secondary,#888));font-size:14px;line-height:1.4}
|
|
@@ -5434,7 +5508,7 @@ var COPY_BLOCK_CSS = `
|
|
|
5434
5508
|
.motion-copy-button[data-status=done] .dgui-icon{animation:motion-copy-confirm 420ms cubic-bezier(.34,1.45,.64,1)}.motion-copy-button[data-status=done] path{stroke-dasharray:28;animation:motion-check-draw 450ms ease-out}@keyframes motion-check-draw{from{stroke-dashoffset:28}to{stroke-dashoffset:0}}@keyframes motion-copy-confirm{from{opacity:.5;transform:scale(.8)}to{opacity:1;transform:none}}
|
|
5435
5509
|
@media(prefers-reduced-motion:reduce){.motion-copy-button .dgui-icon,.motion-copy-button path{animation:none!important;transition:none!important}}
|
|
5436
5510
|
@media(max-width:600px){.motion-copy-block{padding:14px 16px;border-radius:20px}}
|
|
5437
|
-
|
|
5511
|
+
`);
|
|
5438
5512
|
function CopyBlock({ text: text3, children, title, lang, code = false, wrap = false, disabled = false, style, nodeId, copyLabel, copiedLabel }) {
|
|
5439
5513
|
const [status, setStatus] = (0, import_react16.useState)("idle"), timer = (0, import_react16.useRef)();
|
|
5440
5514
|
(0, import_react16.useEffect)(() => () => clearTimeout(timer.current), []);
|
|
@@ -5874,25 +5948,6 @@ var streamUiDefinition = {
|
|
|
5874
5948
|
}
|
|
5875
5949
|
};
|
|
5876
5950
|
|
|
5877
|
-
// src/host-boundary.js
|
|
5878
|
-
function nativeGeometryCss(css) {
|
|
5879
|
-
const defaults = ":where(.dgui-root .dgui-card,.dgui-root .dgui-metric,.dgui-root .dgui-control,.dgui-root .dgui-chart,.dgui-root .dgui-table-wrap,.dgui-root .dgui-control input,.dgui-root .dgui-control select,.dgui-root .dgui-canvas-stage iframe){--du-component-radius:0px}\n";
|
|
5880
|
-
return defaults + css.replace(/border-radius\s*:\s*([^;}]+)/g, (rule, value) => rule + ";--du-component-radius:" + value.replaceAll("var(--du-radius-inner", "var(--du-owned-radius-inner").replaceAll("var(--du-radius", "var(--du-owned-radius"));
|
|
5881
|
-
}
|
|
5882
|
-
var root = ".dgui-root[data-preset]:not(.dgui-style-preview)";
|
|
5883
|
-
var INTERNAL_BOUNDARY_CSS = `
|
|
5884
|
-
${root} :is(.dgui-card,.dgui-metric,.dgui-control,.dgui-chart,.dgui-table-wrap){border-radius:var(--du-component-radius,16px)!important;corner-shape:round}
|
|
5885
|
-
${root} .dgui-control :is(input:not([type=range]):not([type=checkbox]),select){border-radius:var(--du-component-radius,12px)!important;corner-shape:round}
|
|
5886
|
-
${root} .dgui-canvas-stage iframe{border-radius:var(--du-component-radius,16px)!important;corner-shape:round}
|
|
5887
|
-
`;
|
|
5888
|
-
var HOST_BOUNDARY_CSS = `
|
|
5889
|
-
${root}{--du-owned-radius:16px;--du-owned-radius-inner:12px;border-radius:var(--du-shell-radius,16px)!important;corner-shape:round}
|
|
5890
|
-
` + Object.entries(STYLE_SYSTEM).map(([id2, { native }]) => `${root}[data-visual-style=${id2}]{--du-shell-radius:${id2 === "editorial" ? 0 : id2 === "soft" ? 30 : native.radius}px;--du-owned-radius:${native.radius}px;--du-owned-radius-inner:${native.radius - 4}px}`).join("\n") + `
|
|
5891
|
-
` + INTERNAL_BOUNDARY_CSS + `
|
|
5892
|
-
${root}:is([data-preset=reading],[data-preset=minimal]){--du-shell-radius:0px}
|
|
5893
|
-
.dgui-marker[data-dgui-marker]{border:0!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;padding:0!important;min-width:0;box-sizing:border-box}
|
|
5894
|
-
`;
|
|
5895
|
-
|
|
5896
5951
|
// src/native-style.js
|
|
5897
5952
|
var root2 = ".dgui-root[data-preset][data-visual-style]";
|
|
5898
5953
|
var grammar = (id2, css) => css.replaceAll("&", root2 + "[data-visual-style=" + id2 + "]");
|
package/lib/assets/katex.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_AMS-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(katex-fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(katex-fonts/KaTeX_Fraktur-Bold.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Fraktur-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(katex-fonts/KaTeX_Main-Bold.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(katex-fonts/KaTeX_Main-BoldItalic.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(katex-fonts/KaTeX_Main-Italic.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Main-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(katex-fonts/KaTeX_Math-BoldItalic.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(katex-fonts/KaTeX_Math-Italic.woff2) format("woff2")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(katex-fonts/KaTeX_SansSerif-Bold.woff2) format("woff2")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(katex-fonts/KaTeX_SansSerif-Italic.woff2) format("woff2")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_SansSerif-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Script-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Size1-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Size2-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Size3-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Size4-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Typewriter-Regular.woff2) format("woff2")}.katex{font:normal 1.21em KaTeX_Main,math,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.19.0"}.katex .katex-mathml{border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.katex-newline{display:block}.katex .katex-base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .katex-base,.katex .katex-strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .katex-vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .katex-thinbox{display:inline-flex;flex-direction:row;max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .katex-hdashline,.katex .katex-hline,.katex .katex-overline .overline-line,.katex .katex-rule,.katex .katex-underline .underline-line,.katex .mfrac .frac-line{min-height:1px}.katex .mspace{display:inline-block}.katex .katex-smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.katex-inner,.katex .llap>.katex-inner,.katex .rlap>.katex-inner{position:absolute}.katex .clap>.katex-fix,.katex .llap>.katex-fix,.katex .rlap>.katex-fix{display:inline-block}.katex .llap>.katex-inner{right:0}.katex .clap>.katex-inner,.katex .rlap>.katex-inner{left:0}.katex .clap>.katex-inner>span{margin-left:-50%;margin-right:50%}.katex .katex-rule{border:0 solid;display:inline-block;position:relative}.katex .katex-hline,.katex .katex-overline .overline-line,.katex .katex-underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .katex-hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.katex-root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .katex-sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .katex-sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .katex-sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .katex-sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .katex-sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .katex-sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .katex-sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .katex-sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .katex-sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .katex-sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .katex-sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .katex-sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .katex-sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .katex-sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .katex-sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .katex-sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .katex-sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .katex-sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .katex-sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .katex-sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .katex-sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .katex-sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .katex-sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .katex-sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .katex-sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .katex-sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .katex-sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .katex-sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .katex-sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .katex-sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .katex-sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .katex-sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .katex-sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .katex-sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .katex-sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .katex-sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .katex-sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .katex-sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .katex-sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .katex-sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .katex-sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .katex-sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .katex-sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .katex-sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .katex-sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .katex-sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .katex-sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .katex-sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .katex-sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .katex-sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .katex-sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .katex-sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .katex-sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .katex-sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .katex-sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .katex-sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .katex-sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .katex-sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .katex-sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .katex-sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .katex-sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .katex-sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .katex-sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .katex-sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .katex-sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .katex-sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .katex-sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .katex-sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .katex-sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .katex-sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .katex-sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .katex-sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .katex-sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .katex-sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .katex-sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .katex-sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .katex-sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .katex-sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .katex-sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .katex-sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .katex-sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .katex-sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .katex-sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .katex-sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .katex-sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .katex-sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .katex-sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .katex-sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .katex-sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .katex-sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .katex-sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .katex-sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .katex-sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .katex-sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .katex-sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .katex-sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .katex-sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .katex-sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .katex-sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .katex-sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .katex-sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .katex-sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .katex-sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .katex-sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .katex-sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .katex-sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .katex-sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .katex-sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .katex-sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .katex-sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .katex-sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .katex-sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .katex-sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .katex-sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .katex-sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .katex-sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .katex-sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .katex-sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .katex-sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .katex-sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .katex-sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .katex-accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .katex-accent .accent-body{position:relative}.katex .katex-accent .accent-body:not(.accent-full){width:0}.katex .katex-overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .katex-stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .katex-stretchy:after,.katex .katex-stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .katex-sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .reflectbox{display:inline-block;transform:scaleX(-1)}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.katex-tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.katex-tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}
|
|
1
|
+
@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_AMS-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(katex-fonts/KaTeX_Caligraphic-Bold.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Caligraphic-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(katex-fonts/KaTeX_Fraktur-Bold.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Fraktur-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(katex-fonts/KaTeX_Main-Bold.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(katex-fonts/KaTeX_Main-BoldItalic.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(katex-fonts/KaTeX_Main-Italic.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Main-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(katex-fonts/KaTeX_Math-BoldItalic.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(katex-fonts/KaTeX_Math-Italic.woff2) format("woff2")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:700;src:url(katex-fonts/KaTeX_SansSerif-Bold.woff2) format("woff2")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:italic;font-weight:400;src:url(katex-fonts/KaTeX_SansSerif-Italic.woff2) format("woff2")}@font-face{font-display:block;font-family:"KaTeX_SansSerif";font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_SansSerif-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Script-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Size1-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Size2-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Size3-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Size4-Regular.woff2) format("woff2")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(katex-fonts/KaTeX_Typewriter-Regular.woff2) format("woff2")}.katex{font:normal 1.21em KaTeX_Main,math,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.19.1"}.katex .katex-mathml{border:0;-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.katex-newline{display:block}.katex .katex-base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .katex-base,.katex .katex-strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .katex-vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .katex-thinbox{display:inline-flex;flex-direction:row;max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .katex-hdashline,.katex .katex-hline,.katex .katex-overline .overline-line,.katex .katex-rule,.katex .katex-underline .underline-line,.katex .mfrac .frac-line{min-height:1px}.katex .mspace{display:inline-block}.katex .katex-smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.katex-inner,.katex .llap>.katex-inner,.katex .rlap>.katex-inner{position:absolute}.katex .clap>.katex-fix,.katex .llap>.katex-fix,.katex .rlap>.katex-fix{display:inline-block}.katex .llap>.katex-inner{right:0}.katex .clap>.katex-inner,.katex .rlap>.katex-inner{left:0}.katex .clap>.katex-inner>span{margin-left:-50%;margin-right:50%}.katex .katex-rule{border:0 solid;display:inline-block;position:relative}.katex .katex-hline,.katex .katex-overline .overline-line,.katex .katex-underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .katex-hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.katex-root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .katex-sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .katex-sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .katex-sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .katex-sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .katex-sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .katex-sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .katex-sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .katex-sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .katex-sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .katex-sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .katex-sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .katex-sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .katex-sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .katex-sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .katex-sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .katex-sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .katex-sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .katex-sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .katex-sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .katex-sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .katex-sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .katex-sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .katex-sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .katex-sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .katex-sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .katex-sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .katex-sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .katex-sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .katex-sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .katex-sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .katex-sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .katex-sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .katex-sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .katex-sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .katex-sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .katex-sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .katex-sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .katex-sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .katex-sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .katex-sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .katex-sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .katex-sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .katex-sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .katex-sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .katex-sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .katex-sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .katex-sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .katex-sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .katex-sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .katex-sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .katex-sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .katex-sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .katex-sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .katex-sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .katex-sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .katex-sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .katex-sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .katex-sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .katex-sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .katex-sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .katex-sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .katex-sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .katex-sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .katex-sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .katex-sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .katex-sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .katex-sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .katex-sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .katex-sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .katex-sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .katex-sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .katex-sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .katex-sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .katex-sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .katex-sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .katex-sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .katex-sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .katex-sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .katex-sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .katex-sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .katex-sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .katex-sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .katex-sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .katex-sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .katex-sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .katex-sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .katex-sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .katex-sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .katex-sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .katex-sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .katex-sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .katex-sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .katex-sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .katex-sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .katex-sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .katex-sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .katex-sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .katex-sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .katex-sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .katex-sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .katex-sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .katex-sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .katex-sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .katex-sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .katex-sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .katex-sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .katex-sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .katex-sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .katex-sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .katex-sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .katex-sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .katex-sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .katex-sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .katex-sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .katex-sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .katex-sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .katex-sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .katex-sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .katex-sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .katex-sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .katex-sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .katex-accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .katex-accent .accent-body{position:relative}.katex .katex-accent .accent-body:not(.accent-full){width:0}.katex .katex-overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .katex-stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .katex-stretchy:after,.katex .katex-stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .katex-sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .reflectbox{display:inline-block;transform:scaleX(-1)}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.katex-tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.katex-tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}
|