diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index 8c39527..3e641b4 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -1,5 +1,6 @@ [ "obsidian-ocr", "pdf-plus", - "obsidian-git" + "obsidian-git", + "mathlive-in-editor-mode" ] \ No newline at end of file diff --git a/.obsidian/hotkeys.json b/.obsidian/hotkeys.json new file mode 100644 index 0000000..1040682 --- /dev/null +++ b/.obsidian/hotkeys.json @@ -0,0 +1,10 @@ +{ + "mathlive-in-editor-mode:toggle-mathfield": [ + { + "modifiers": [ + "Mod" + ], + "key": "'" + } + ] +} \ No newline at end of file diff --git a/.obsidian/plugins/mathlive-in-editor-mode/data.json b/.obsidian/plugins/mathlive-in-editor-mode/data.json new file mode 100644 index 0000000..e92cf71 --- /dev/null +++ b/.obsidian/plugins/mathlive-in-editor-mode/data.json @@ -0,0 +1,9 @@ +{ + "display": true, + "blockDisplay": true, + "blockMenuIcon": true, + "blockKeyboardIcon": true, + "inlineDisplay": false, + "inlineMenuIcon": false, + "inlineKeyboardIcon": false +} \ No newline at end of file diff --git a/.obsidian/plugins/mathlive-in-editor-mode/main.js b/.obsidian/plugins/mathlive-in-editor-mode/main.js new file mode 100644 index 0000000..013b46f --- /dev/null +++ b/.obsidian/plugins/mathlive-in-editor-mode/main.js @@ -0,0 +1,16116 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to2, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to2, key) && key !== except) + __defProp(to2, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to2; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/main.ts +var main_exports = {}; +__export(main_exports, { + default: () => MathLiveInEditorMode +}); +module.exports = __toCommonJS(main_exports); +var import_obsidian2 = require("obsidian"); + +// src/mathlive-plugin.ts +var import_language = require("@codemirror/language"); +var import_state = require("@codemirror/state"); +var import_view2 = require("@codemirror/view"); + +// src/mathlive-widget.ts +var import_view = require("@codemirror/view"); +var MathLiveWidget = class extends import_view.WidgetType { + constructor(config, equation, settings, isInline) { + super(); + this.config = config; + this.equation = equation; + this.settings = settings; + this.isInline = isInline; + } + toDOM(view) { + const div = document.createElement("div"); + const mfe = document.createElement("math-field"); + div.appendChild(mfe); + div.addClass("obsidian-mathlive-codemirror-wrapper"); + mfe.addClass("obsidian-mathlive-codemirror-math-field"); + mfe.setValue(this.equation); + mfe.dataset.from = `${this.config.from}`; + mfe.dataset.to = `${this.config.to}`; + this.style(mfe, div); + mfe.addEventListener("input", (ev) => { + const target = ev.target; + if (this.equation !== target.value) { + if (mfe.dataset.from !== void 0 && mfe.dataset.to !== void 0) { + view.dispatch({ + changes: { + from: parseInt(mfe.dataset.from), + to: parseInt(mfe.dataset.to), + insert: mfe.value + } + }); + this.equation = mfe.value; + } + } + }); + return div; + } + updateDOM(dom, view) { + const mfe = dom.getElementsByTagName( + "math-field" + )[0]; + this.style(mfe, dom); + mfe.dataset.from = `${this.config.from}`; + mfe.dataset.to = `${this.config.to}`; + mfe.setValue(this.equation); + return true; + } + destroy(dom) { + } + style(mfe, div) { + if (this.settings.display) { + div.removeClass("hidden"); + if (this.isInline) { + div.addClass("inline"); + this.changeCSSClass(this.settings.inlineDisplay, div, "hidden"); + this.changeCSSClass( + this.settings.inlineKeyboardIcon, + mfe, + "hide-keyboard" + ); + this.changeCSSClass( + this.settings.inlineMenuIcon, + mfe, + "hide-menu" + ); + } else { + div.removeClass("inline"); + this.changeCSSClass(this.settings.blockDisplay, div, "hidden"); + this.changeCSSClass( + this.settings.blockKeyboardIcon, + mfe, + "hide-keyboard" + ); + this.changeCSSClass( + this.settings.blockMenuIcon, + mfe, + "hide-menu" + ); + } + } else { + div.addClass("hidden"); + } + } + changeCSSClass(c, elem, className) { + if (c) { + elem.removeClass(className); + } else { + elem.addClass(className); + } + } +}; + +// src/mathlive-plugin.ts +var mathliveListFieldWrapper = (settings) => { + const mathliveListField = import_state.StateField.define({ + create(state) { + return import_view2.Decoration.none; + }, + update(oldState, transaction) { + const builder = new import_state.RangeSetBuilder(); + let begin = -1, end = -1, isInline = false; + (0, import_language.syntaxTree)(transaction.state).iterate({ + enter(node) { + if (node.type.name.contains("formatting-math-begin")) { + if (node.type.name.contains("math-block")) + begin = node.from + 2; + else { + begin = node.from + 1; + isInline = true; + } + } + if (node.type.name.contains("formatting-math-end") && begin !== -1) { + end = node.from; + if (!isInline) { + builder.add( + end + 2, + end + 2, + import_view2.Decoration.widget({ + widget: new MathLiveWidget( + { from: begin, to: end }, + transaction.state.sliceDoc(begin, end), + settings, + isInline + ), + block: true, + side: 10 + }) + ); + } else { + if (settings.inlineDisplay) + builder.add( + end + 1, + end + 1, + import_view2.Decoration.replace({ + widget: new MathLiveWidget( + { from: begin, to: end }, + transaction.state.sliceDoc( + begin, + end + ), + settings, + isInline + ) + }) + ); + } + begin = end = -1; + isInline = false; + } + } + }); + return builder.finish(); + }, + provide(field) { + return import_view2.EditorView.decorations.from(field); + } + }); + return mathliveListField; +}; + +// node_modules/mathlive/dist/mathlive.min.mjs +var jp = Object.defineProperty; +var Xp = Object.defineProperties; +var Zp = Object.getOwnPropertyDescriptors; +var fo = Object.getOwnPropertySymbols; +var Mc = Object.prototype.hasOwnProperty; +var wc = Object.prototype.propertyIsEnumerable; +var _c = (t37, e, r) => e in t37 ? jp(t37, e, { enumerable: true, configurable: true, writable: true, value: r }) : t37[e] = r; +var p = (t37, e) => { + for (var r in e || (e = {})) + Mc.call(e, r) && _c(t37, r, e[r]); + if (fo) + for (var r of fo(e)) + wc.call(e, r) && _c(t37, r, e[r]); + return t37; +}; +var g = (t37, e) => Xp(t37, Zp(e)); +var bs = (t37) => typeof t37 == "symbol" ? t37 : t37 + ""; +var fi = (t37, e) => { + var r = {}; + for (var i in t37) + Mc.call(t37, i) && e.indexOf(i) < 0 && (r[i] = t37[i]); + if (t37 != null && fo) + for (var i of fo(t37)) + e.indexOf(i) < 0 && wc.call(t37, i) && (r[i] = t37[i]); + return r; +}; +function X(t37) { + return Array.isArray(t37); +} +var kc = { en: { "keyboard.tooltip.symbols": "Symbols", "keyboard.tooltip.greek": "Greek Letters", "keyboard.tooltip.numeric": "Numeric", "keyboard.tooltip.alphabetic": "Roman Letters", "tooltip.copy to clipboard": "Copy to Clipboard", "tooltip.cut to clipboard": "Cut to Clipboard", "tooltip.paste from clipboard": "Paste from Clipboard", "tooltip.redo": "Redo", "tooltip.toggle virtual keyboard": "Toggle Virtual Keyboard", "tooltip.menu": "Menu", "tooltip.undo": "Undo", "menu.borders": "Borders", "menu.insert matrix": "Insert Matrix", "menu.array.add row above": "Add Row Before", "menu.array.add row below": "Add Row After", "menu.array.add column after": "Add Column After", "menu.array.add column before": "Add Column Before", "menu.array.delete row": "Delete Row", "menu.array.delete rows": "Delete Selected Rows", "menu.array.delete column": "Delete Column", "menu.array.delete columns": "Delete Selected Columns", "menu.mode": "Mode", "menu.mode-math": "Math", "menu.mode-text": "Text", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "Blackboard", "tooltip.bold": "Bold", "tooltip.italic": "Italic", "tooltip.fraktur": "Fraktur", "tooltip.script": "Script", "tooltip.caligraphic": "Caligraphic", "tooltip.typewriter": "Typewriter", "tooltip.roman-upright": "Roman Upright", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "Font Style", "menu.accent": "Accent", "menu.decoration": "Decoration", "menu.color": "Color", "menu.background-color": "Background", "menu.evaluate": "Evaluate", "menu.simplify": "Simplify", "menu.solve": "Solve", "menu.solve-for": "Solve for %@", "menu.cut": "Cut", "menu.copy": "Copy", "menu.copy-as-latex": "Copy as LaTeX", "menu.copy-as-ascii-math": "Copy as ASCII Math", "menu.copy-as-mathml": "Copy as MathML", "menu.paste": "Paste", "menu.select-all": "Select All", "color.red": "Red", "color.orange": "Orange", "color.yellow": "Yellow", "color.lime": "Lime", "color.green": "Green", "color.teal": "Teal", "color.cyan": "Cyan", "color.blue": "Blue", "color.indigo": "Indigo", "color.purple": "Purple", "color.magenta": "Magenta", "color.black": "Black", "color.dark-grey": "Dark Grey", "color.grey": "Grey", "color.light-grey": "Light Grey", "color.white": "White" }, ar: { "keyboard.tooltip.symbols": "\u062D\u0631\u0641 \u0627\u0648 \u0631\u0645\u0632", "keyboard.tooltip.greek": "\u062D\u0631\u0648\u0641 \u064A\u0648\u0646\u0627\u0646\u064A\u0629", "keyboard.tooltip.numeric": "\u0627\u0644\u0631\u0642\u0645\u064A\u0629", "keyboard.tooltip.alphabetic": "\u0631\u0645\u0648\u0632 \u0627\u0644\u0627\u062D\u0631\u0641 \u0627\u0644\u0631\u0648\u0645\u0627\u0646\u064A\u0629", "tooltip.copy to clipboard": "\u0646\u0633\u062E \u0625\u0644\u0649 \u0627\u0644\u062D\u0627\u0641\u0638\u0629", "tooltip.cut to clipboard": "\u0642\u0635 \u0625\u0644\u0649 \u0627\u0644\u062D\u0627\u0641\u0638\u0629", "tooltip.paste from clipboard": "\u0644\u0635\u0642 \u0645\u0646 \u0627\u0644\u062D\u0627\u0641\u0638\u0629", "tooltip.redo": "\u0627\u0644\u0625\u0639\u0627\u062F\u0629", "tooltip.toggle virtual keyboard": "\u062A\u0628\u062F\u064A\u0644 \u0644\u0648\u062D\u0629 \u0627\u0644\u0645\u0641\u0627\u062A\u064A\u062D \u0627\u0644\u0625\u0641\u062A\u0631\u0627\u0636\u064A\u0629", "tooltip.undo": "\u0625\u0644\u063A\u0627\u0621", "menu.insert matrix": "\u0623\u062F\u062E\u0644 \u0627\u0644\u0645\u0635\u0641\u0648\u0641\u0629", "menu.borders": "\u0645\u062D\u062F\u062F\u0627\u062A \u0627\u0644\u0645\u0635\u0641\u0648\u0641\u0629", "menu.array.add row above": "\u0623\u0636\u0641 \u0635\u0641\u064B\u0627 \u0628\u0639\u062F \u0630\u0644\u0643", "menu.array.add row below": "\u0623\u0636\u0641 \u0627\u0644\u0635\u0641 \u0642\u0628\u0644", "menu.array.add column after": "\u0623\u0636\u0641 \u0627\u0644\u0639\u0645\u0648\u062F \u0628\u0639\u062F \u0630\u0644\u0643", "menu.array.add column before": "\u0623\u0636\u0641 \u0627\u0644\u0639\u0645\u0648\u062F \u0642\u0628\u0644", "menu.array.delete row": "\u0627\u062D\u0630\u0641 \u0635\u0641", "menu.array.delete rows": "\u062D\u0630\u0641 \u0627\u0644\u0635\u0641\u0648\u0641 \u0627\u0644\u0645\u062D\u062F\u062F\u0629", "menu.array.delete column": "\u062D\u0630\u0641 \u0627\u0644\u0639\u0645\u0648\u062F", "menu.array.delete columns": "\u062D\u0630\u0641 \u0627\u0644\u0623\u0639\u0645\u062F\u0629 \u0627\u0644\u0645\u062D\u062F\u062F\u0629", "menu.mode": "\u0648\u0636\u0639", "menu.mode-math": "\u0631\u064A\u0627\u0636\u064A\u0627\u062A", "menu.mode-text": "\u0646\u0635", "menu.mode-latex": "\u0644\u0627\u062A\u0643\u0633", "tooltip.blackboard": "\u0633\u0628\u0648\u0631\u0629", "tooltip.bold": "\u0639\u0631\u064A\u0636", "tooltip.italic": "\u0645\u0627\u0626\u0644", "tooltip.fraktur": "\u0641\u0631\u0627\u0643\u062A\u0648\u0631", "tooltip.script": "\u0633\u0643\u0631\u064A\u0628\u062A", "tooltip.caligraphic": "\u0643\u0627\u0644\u064A\u062C\u0631\u0627\u0641\u064A\u0643", "tooltip.typewriter": "\u0622\u0644\u0629 \u0643\u0627\u062A\u0628\u0629", "tooltip.roman-upright": "\u0631\u0648\u0645\u0627\u0646\u064A \u0645\u0633\u062A\u0642\u064A\u0645", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\u0646\u0645\u0637 \u0627\u0644\u062E\u0637", "menu.accent": "\u062A\u0634\u0643\u064A\u0644", "menu.decoration": "\u0632\u062E\u0631\u0641\u0629", "menu.color": "\u0644\u0648\u0646", "menu.background-color": "\u0627\u0644\u062E\u0644\u0641\u064A\u0629", "menu.evaluate": "\u062A\u0642\u064A\u064A\u0645", "menu.simplify": "\u062A\u0628\u0633\u064A\u0637", "menu.solve": "\u062D\u0644", "menu.solve-for": "\u062D\u0644 \u0644\u0640 %@", "menu.cut": "\u0642\u0635", "menu.copy": "\u0646\u0633\u062E", "menu.copy-as-latex": "\u0646\u0633\u062E \u0643\u0640 LaTeX", "menu.copy-as-ascii-math": "\u0646\u0633\u062E \u0643\u0640 ASCII Math", "menu.copy-as-mathml": "\u0646\u0633\u062E \u0643\u0640 MathML", "menu.paste": "\u0644\u0635\u0642", "menu.select-all": "\u062A\u062D\u062F\u064A\u062F \u0627\u0644\u0643\u0644", "color.red": "\u0623\u062D\u0645\u0631", "color.orange": "\u0628\u0631\u062A\u0642\u0627\u0644\u064A", "color.yellow": "\u0623\u0635\u0641\u0631", "color.lime": "\u0644\u064A\u0645\u0648\u0646\u064A", "color.green": "\u0623\u062E\u0636\u0631", "color.teal": "\u0633\u0645\u0627\u0648\u064A", "color.cyan": "\u0633\u0645\u0627\u0648\u064A \u0641\u0627\u062A\u062D", "color.blue": "\u0623\u0632\u0631\u0642", "color.indigo": "\u0646\u064A\u0644\u064A", "color.purple": "\u0628\u0646\u0641\u0633\u062C\u064A", "color.magenta": "\u0623\u0631\u062C\u0648\u0627\u0646\u064A", "color.black": "\u0623\u0633\u0648\u062F", "color.dark-grey": "\u0631\u0645\u0627\u062F\u064A \u063A\u0627\u0645\u0642", "color.grey": "\u0631\u0645\u0627\u062F\u064A", "color.light-grey": "\u0631\u0645\u0627\u062F\u064A \u0641\u0627\u062A\u062D", "color.white": "\u0623\u0628\u064A\u0636" }, de: { "keyboard.tooltip.symbols": "Symbole", "keyboard.tooltip.greek": "Griechische Buchstaben", "keyboard.tooltip.numeric": "Numerisch", "keyboard.tooltip.alphabetic": "R\xF6mische Buchstaben", "tooltip.copy to clipboard": "In die Zwischenablage kopieren", "tooltip.redo": "Wiederholen", "tooltip.toggle virtual keyboard": "Virtuelle Tastatur umschalten", "tooltip.undo": "Widerrufen", "menu.insert matrix": "Matrix einf\xFCgen", "menu.borders": "Matrixtrennzeichen", "menu.array.add row above": "Zeile hinzuf\xFCgen nach", "menu.array.add row below": "Zeile hinzuf\xFCgen vor", "menu.array.add column after": "Spalte hinzuf\xFCgen nach", "menu.array.add column before": "Spalte hinzuf\xFCgen vor", "menu.array.delete row": "Zeile l\xF6schen", "menu.array.delete rows": "Ausgew\xE4hlte Zeilen l\xF6schen", "menu.array.delete column": "Spalte l\xF6schen", "menu.array.delete columns": "Ausgew\xE4hlte Spalten l\xF6schen", "menu.mode": "Modus", "menu.mode-math": "Mathematik", "menu.mode-text": "Text", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "Tafel", "tooltip.bold": "Fett", "tooltip.italic": "Kursiv", "tooltip.fraktur": "Fraktur", "tooltip.script": "Skript", "tooltip.caligraphic": "Kalligraphie", "tooltip.typewriter": "Schreibmaschine", "tooltip.roman-upright": "R\xF6misch aufrecht", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "Schriftstil", "menu.accent": "Akzent", "menu.decoration": "Dekoration", "menu.color": "Farbe", "menu.background-color": "Hintergrund", "menu.evaluate": "Auswerten", "menu.simplify": "Vereinfachen", "menu.solve": "L\xF6sen", "menu.solve-for": "L\xF6sen f\xFCr %@", "menu.cut": "Ausschneiden", "menu.copy": "Kopieren", "menu.copy-as-latex": "Als LaTeX kopieren", "menu.copy-as-ascii-math": "Als ASCII Math kopieren", "menu.copy-as-mathml": "Als MathML kopieren", "menu.paste": "Einf\xFCgen", "menu.select-all": "Alles ausw\xE4hlen", "color.red": "Rot", "color.orange": "Orange", "color.yellow": "Gelb", "color.lime": "Limette", "color.green": "Gr\xFCn", "color.teal": "Blaugr\xFCn", "color.cyan": "Cyan", "color.blue": "Blau", "color.indigo": "Indigo", "color.purple": "Lila", "color.magenta": "Magenta", "color.black": "Schwarz", "color.dark-grey": "Dunkelgrau", "color.grey": "Grau", "color.light-grey": "Hellgrau", "color.white": "Wei\xDF" }, el: { "keyboard.tooltip.symbols": "\u03C3\u03CD\u03BC\u03B2\u03BF\u03BB\u03B1", "keyboard.tooltip.greek": "\u03B5\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC \u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03B1", "keyboard.tooltip.numeric": "\u0391\u03C1\u03B9\u03B8\u03BC\u03B7\u03C4\u03B9\u03BA\u03CC\u03C2", "keyboard.tooltip.alphabetic": "\u03A1\u03C9\u03BC\u03B1\u03CA\u03BA\u03AC \u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03B1", "tooltip.copy to clipboard": "\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C3\u03C4\u03BF \u03C0\u03C1\u03CC\u03C7\u03B5\u03B9\u03C1\u03BF", "tooltip.redo": "\u039E\u03B1\u03BD\u03B1\u03BA\u03AC\u03BD\u03C9", "tooltip.toggle virtual keyboard": "\u0395\u03BD\u03B1\u03BB\u03BB\u03B1\u03B3\u03AE \u03B5\u03B9\u03BA\u03BF\u03BD\u03B9\u03BA\u03BF\u03CD \u03C0\u03BB\u03B7\u03BA\u03C4\u03C1\u03BF\u03BB\u03BF\u03B3\u03AF\u03BF\u03C5", "tooltip.undo": "\u039E\u03B5\u03BA\u03AC\u03BD\u03C9", "menu.insert matrix": "\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE \u03BC\u03AE\u03C4\u03C1\u03B1", "menu.borders": "\u039F\u03C1\u03B9\u03BF\u03B8\u03AD\u03C4\u03B5\u03C2 \u03BC\u03AE\u03C4\u03C1\u03B1", "menu.array.add row above": "\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C3\u03B5\u03B9\u03C1\u03AC\u03C2 \u03BC\u03B5\u03C4\u03AC", "menu.array.add row below": "\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C3\u03B5\u03B9\u03C1\u03AC\u03C2 \u03C0\u03C1\u03B9\u03BD", "menu.array.add column after": "\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C3\u03C4\u03AE\u03BB\u03B7\u03C2 \u03BC\u03B5\u03C4\u03AC", "menu.array.add column before": "\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C3\u03C4\u03AE\u03BB\u03B7\u03C2 \u03C0\u03C1\u03B9\u03BD", "menu.array.delete row": "\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03C3\u03B5\u03B9\u03C1\u03AC\u03C2", "menu.array.delete rows": "\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03C9\u03BD \u03C3\u03B5\u03B9\u03C1\u03CE\u03BD", "menu.array.delete column": "\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03C3\u03C4\u03AE\u03BB\u03B7\u03C2", "menu.array.delete columns": "\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03C9\u03BD \u03C3\u03C4\u03B7\u03BB\u03CE\u03BD", "menu.mode": "\u039B\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1", "menu.mode-math": "\u039C\u03B1\u03B8\u03B7\u03BC\u03B1\u03C4\u03B9\u03BA\u03AC", "menu.mode-text": "\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "\u03A0\u03AF\u03BD\u03B1\u03BA\u03B1\u03C2", "tooltip.bold": "\u0388\u03BD\u03C4\u03BF\u03BD\u03B7", "tooltip.italic": "\u03A0\u03BB\u03AC\u03B3\u03B9\u03B1", "tooltip.fraktur": "\u03A6\u03C1\u03AC\u03BA\u03C4\u03BF\u03C5\u03C1", "tooltip.script": "\u03A3\u03B5\u03BD\u03AC\u03C1\u03B9\u03BF", "tooltip.caligraphic": "\u039A\u03B1\u03BB\u03BB\u03B9\u03B3\u03C1\u03B1\u03C6\u03B9\u03BA\u03AE", "tooltip.typewriter": "\u039C\u03B7\u03C7\u03B1\u03BD\u03AE \u03B3\u03C1\u03B1\u03C6\u03AE\u03C2", "tooltip.roman-upright": "\u03A1\u03C9\u03BC\u03B1\u03CA\u03BA\u03CC \u039A\u03B1\u03C4\u03B1\u03BA\u03CC\u03C1\u03C5\u03C6\u03BF", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\u03A3\u03C4\u03C5\u03BB \u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC\u03C2", "menu.accent": "\u03A4\u03CC\u03BD\u03BF\u03C2", "menu.decoration": "\u0394\u03B9\u03B1\u03BA\u03CC\u03C3\u03BC\u03B7\u03C3\u03B7", "menu.color": "\u03A7\u03C1\u03CE\u03BC\u03B1", "menu.background-color": "\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C6\u03CC\u03BD\u03C4\u03BF\u03C5", "menu.evaluate": "\u0391\u03BE\u03B9\u03BF\u03BB\u03CC\u03B3\u03B7\u03C3\u03B7", "menu.simplify": "\u0391\u03C0\u03BB\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7", "menu.solve": "\u039B\u03CD\u03C3\u03B7", "menu.solve-for": "\u039B\u03CD\u03C3\u03B7 \u03B3\u03B9\u03B1 %@", "menu.cut": "\u0391\u03C0\u03BF\u03BA\u03BF\u03C0\u03AE", "menu.copy": "\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE", "menu.copy-as-latex": "\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C9\u03C2 LaTeX", "menu.copy-as-ascii-math": "\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C9\u03C2 ASCII Math", "menu.copy-as-mathml": "\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C9\u03C2 MathML", "menu.paste": "\u0395\u03C0\u03B9\u03BA\u03CC\u03BB\u03BB\u03B7\u03C3\u03B7", "menu.select-all": "\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03CC\u03BB\u03C9\u03BD", "color.red": "\u039A\u03CC\u03BA\u03BA\u03B9\u03BD\u03BF", "color.orange": "\u03A0\u03BF\u03C1\u03C4\u03BF\u03BA\u03B1\u03BB\u03AF", "color.yellow": "\u039A\u03AF\u03C4\u03C1\u03B9\u03BD\u03BF", "color.lime": "\u039B\u03B1\u03C7\u03B1\u03BD\u03AF", "color.green": "\u03A0\u03C1\u03AC\u03C3\u03B9\u03BD\u03BF", "color.teal": "\u039A\u03C5\u03B1\u03BD\u03CC", "color.cyan": "\u0393\u03B1\u03BB\u03AC\u03B6\u03B9\u03BF", "color.blue": "\u039C\u03C0\u03BB\u03B5", "color.indigo": "\u0399\u03BD\u03B4\u03B9\u03BA\u03CC", "color.purple": "\u039C\u03C9\u03B2", "color.magenta": "\u039C\u03B1\u03C4\u03B6\u03AD\u03BD\u03C4\u03B1", "color.black": "\u039C\u03B1\u03CD\u03C1\u03BF", "color.dark-grey": "\u03A3\u03BA\u03BF\u03CD\u03C1\u03BF \u0393\u03BA\u03C1\u03B9", "color.grey": "\u0393\u03BA\u03C1\u03B9", "color.light-grey": "\u0391\u03BD\u03BF\u03B9\u03C7\u03C4\u03CC \u0393\u03BA\u03C1\u03B9", "color.white": "\u039B\u03B5\u03C5\u03BA\u03CC" }, es: { "keyboard.tooltip.symbols": "S\xEDmbolos", "keyboard.tooltip.greek": "Letras griegas", "keyboard.tooltip.numeric": "Num\xE9rico", "keyboard.tooltip.alphabetic": "Letras romanas", "tooltip.copy to clipboard": "Copiar al portapapeles", "tooltip.redo": "Rehacer", "tooltip.toggle virtual keyboard": "Alternar teclado virtual", "tooltip.undo": "Deshacer", "menu.insert matrix": "A\xF1adir Matriz", "menu.borders": "Delimitadores de Matriz", "menu.array.add row above": "A\xF1adir L\xEDnea Antes", "menu.array.add row below": "A\xF1adir L\xEDnea Despues", "menu.array.add column after": "A\xF1adir Columna Despues", "menu.array.add column before": "A\xF1adir Columna Antes", "menu.array.delete row": "Borrar L\xEDnea", "menu.array.delete rows": "Borrar L\xEDneas Seleccionadas", "menu.array.delete column": "Borrar Columna", "menu.array.delete columns": "Borrar Columnas Seleccionadas", "menu.mode": "Modo", "menu.mode-math": "Matem\xE1ticas", "menu.mode-text": "Texto", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "Pizarra", "tooltip.bold": "Negrita", "tooltip.italic": "Cursiva", "tooltip.fraktur": "Fraktur", "tooltip.script": "Script", "tooltip.caligraphic": "Caligr\xE1fico", "tooltip.typewriter": "M\xE1quina de escribir", "tooltip.roman-upright": "Romano Vertical", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "Estilo de fuente", "menu.accent": "Acento", "menu.decoration": "Decoraci\xF3n", "menu.color": "Color", "menu.background-color": "Fondo", "menu.evaluate": "Evaluar", "menu.simplify": "Simplificar", "menu.solve": "Resolver", "menu.solve-for": "Resolver para %@", "menu.cut": "Cortar", "menu.copy": "Copiar", "menu.copy-as-latex": "Copiar como LaTeX", "menu.copy-as-ascii-math": "Copiar como ASCII Math", "menu.copy-as-mathml": "Copiar como MathML", "menu.paste": "Pegar", "menu.select-all": "Seleccionar todo", "color.red": "Rojo", "color.orange": "Naranja", "color.yellow": "Amarillo", "color.lime": "Lima", "color.green": "Verde", "color.teal": "Verde azulado", "color.cyan": "Cian", "color.blue": "Azul", "color.indigo": "\xCDndigo", "color.purple": "Morado", "color.magenta": "Magenta", "color.black": "Negro", "color.dark-grey": "Gris oscuro", "color.grey": "Gris", "color.light-grey": "Gris claro", "color.white": "Blanco" }, fr: { "keyboard.tooltip.symbols": "Symboles", "keyboard.tooltip.greek": "Lettres grecques", "keyboard.tooltip.numeric": "Num\xE9rique", "keyboard.tooltip.alphabetic": "Lettres romaines", "tooltip.menu": "Menu", "tooltip.copy to clipboard": "Copier dans le presse-papiers", "tooltip.redo": "R\xE9tablir", "tooltip.toggle virtual keyboard": "Afficher/Masquer le clavier virtuel", "tooltip.undo": "Annuler", "menu.insert matrix": "Ins\xE9rer une Matrice", "menu.borders": "Bords", "menu.array.add row above": "Ajouter une Ligne Avant", "menu.array.add row below": "Ajouter une Ligne Apr\xE8s", "menu.array.add column before": "Ajouter une Colonne Avant", "menu.array.add column after": "Ajouter une Colonne Apr\xE8s", "menu.array.delete row": "Enlever une Ligne", "menu.array.delete rows": "Enlever les Lignes S\xE9lection\xE9es", "menu.array.delete column": "Enlever une Colone", "menu.array.delete columns": "Enlever les Colonnes S\xE9lection\xE9es", "menu.mode": "Mode", "menu.mode-math": "Math", "menu.mode-text": "Text", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "Tableau noir", "tooltip.bold": "Gras", "tooltip.italic": "Italique", "tooltip.fraktur": "Fraktur", "tooltip.script": "Script", "tooltip.caligraphic": "Calligraphique", "tooltip.typewriter": "Machine \xE0 \xE9crire", "tooltip.roman-upright": "Romain droit", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "Style de police", "menu.accent": "Accent", "menu.decoration": "D\xE9coration", "menu.color": "Couleur", "menu.background-color": "Arri\xE8re-plan", "menu.evaluate": "\xC9valuer", "menu.simplify": "Simplifier", "menu.solve": "R\xE9soudre", "menu.solve-for": "R\xE9soudre pour %@", "menu.cut": "Couper", "menu.copy": "Copier", "menu.copy-as-latex": "Copier en LaTeX", "menu.copy-as-ascii-math": "Copier en ASCII Math", "menu.copy-as-mathml": "Copier en MathML", "menu.paste": "Coller", "menu.select-all": "S\xE9lectionner tout", "color.red": "Rouge", "color.orange": "Orange", "color.yellow": "Jaune", "color.lime": "Citron vert", "color.green": "Vert", "color.teal": "Turquoise", "color.cyan": "Cyan", "color.blue": "Bleu", "color.indigo": "Indigo", "color.purple": "Violet", "color.magenta": "Magenta", "color.black": "Noir", "color.dark-grey": "Gris fonc\xE9", "color.grey": "Gris", "color.light-grey": "Gris clair", "color.white": "Blanc" }, he: { "keyboard.tooltip.symbols": "\u05E1\u05DE\u05DC\u05D9\u05DD", "keyboard.tooltip.greek": "\u05D0\u05D5\u05EA\u05D9\u05D5\u05EA \u05D9\u05D5\u05D5\u05E0\u05D9\u05D5\u05EA", "keyboard.tooltip.numeric": "\u05DE\u05E1\u05E4\u05E8\u05D9", "keyboard.tooltip.alphabetic": "\u05DE\u05DB\u05EA\u05D1\u05D9\u05DD \u05E8\u05D5\u05DE\u05D9\u05D9\u05DD", "tooltip.copy to clipboard": "\u05D4\u05E2\u05EA\u05E7 \u05DC\u05DC\u05D5\u05D7", "tooltip.redo": "\u05DC\u05B7\u05E2\u05B2\u05E9\u05C2\u05D5\u05B9\u05EA \u05E9\u05C1\u05D5\u05BC\u05D1", "tooltip.toggle virtual keyboard": "\u05D4\u05D7\u05DC\u05E3 \u05D0\u05EA \u05D4\u05DE\u05E7\u05DC\u05D3\u05EA \u05D4\u05D5\u05D5\u05D9\u05E8\u05D8\u05D5\u05D0\u05DC\u05D9\u05EA", "tooltip.undo": "\u05DC\u05D1\u05D8\u05DC", "menu.insert matrix": "\u05D4\u05DB\u05E0\u05E1 \u05DE\u05D8\u05E8\u05D9\u05E7\u05E1", "menu.borders": "\u05DE\u05E4\u05E8\u05D9\u05D3\u05D9 \u05DE\u05D8\u05E8\u05D9\u05E7\u05E1", "menu.array.add row above": "\u05D4\u05D5\u05E1\u05E3 \u05E9\u05D5\u05E8\u05D4 \u05D0\u05D7\u05E8\u05D9", "menu.array.add row below": "\u05D4\u05D5\u05E1\u05E3 \u05E9\u05D5\u05E8\u05D4 \u05DC\u05E4\u05E0\u05D9", "menu.array.add column after": "\u05D4\u05D5\u05E1\u05E3 \u05E2\u05DE\u05D5\u05D3\u05D4 \u05D0\u05D7\u05E8\u05D9", "menu.array.add column before": "\u05D4\u05D5\u05E1\u05E3 \u05E2\u05DE\u05D5\u05D3\u05D4 \u05DC\u05E4\u05E0\u05D9", "menu.array.delete row": "\u05DE\u05D7\u05E7 \u05E9\u05D5\u05E8\u05D4", "menu.array.delete rows": "\u05DE\u05D7\u05E7 \u05E9\u05D5\u05E8\u05D5\u05EA \u05E9\u05E0\u05D1\u05D7\u05E8\u05D5", "menu.array.delete column": "\u05DE\u05D7\u05E7 \u05E2\u05DE\u05D5\u05D3\u05D4", "menu.array.delete columns": "\u05DE\u05D7\u05E7 \u05E2\u05DE\u05D5\u05D3\u05D5\u05EA \u05E9\u05E0\u05D1\u05D7\u05E8\u05D5", "menu.mode": "\u05DE\u05E6\u05D1", "menu.mode-math": "\u05DE\u05EA\u05DE\u05D8\u05D9\u05E7\u05D4", "menu.mode-text": "\u05D8\u05E7\u05E1\u05D8", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "\u05DC\u05D5\u05D7 \u05E9\u05D7\u05D5\u05E8", "tooltip.bold": "\u05DE\u05D5\u05D3\u05D2\u05E9", "tooltip.italic": "\u05E0\u05D8\u05D5\u05D9", "tooltip.fraktur": "\u05E4\u05E8\u05E7\u05D8\u05D5\u05E8", "tooltip.script": "\u05DB\u05EA\u05D1", "tooltip.caligraphic": "\u05E7\u05DC\u05D9\u05D2\u05E8\u05E4\u05D9", "tooltip.typewriter": "\u05DE\u05DB\u05D5\u05E0\u05EA \u05DB\u05EA\u05D9\u05D1\u05D4", "tooltip.roman-upright": "\u05E8\u05D5\u05DE\u05D9 \u05D9\u05E9\u05E8", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\u05E1\u05D2\u05E0\u05D5\u05DF \u05D2\u05D5\u05E4\u05DF", "menu.accent": "\u05E6\u05DC\u05D9\u05DC", "menu.decoration": "\u05E7\u05D9\u05E9\u05D5\u05D8", "menu.color": "\u05E6\u05D1\u05E2", "menu.background-color": "\u05E8\u05E7\u05E2", "menu.evaluate": "\u05D7\u05E9\u05D1", "menu.simplify": "\u05E4\u05E9\u05D8", "menu.solve": "\u05E4\u05EA\u05D5\u05E8", "menu.solve-for": "\u05E4\u05EA\u05D5\u05E8 \u05E2\u05D1\u05D5\u05E8 %@", "menu.cut": "\u05D2\u05D6\u05D5\u05E8", "menu.copy": "\u05D4\u05E2\u05EA\u05E7", "menu.copy-as-latex": "\u05D4\u05E2\u05EA\u05E7 \u05DB\u05BELaTeX", "menu.copy-as-ascii-math": "\u05D4\u05E2\u05EA\u05E7 \u05DB\u05BEASCII Math", "menu.copy-as-mathml": "\u05D4\u05E2\u05EA\u05E7 \u05DB\u05BEMathML", "menu.paste": "\u05D4\u05D3\u05D1\u05E7", "menu.select-all": "\u05D1\u05D7\u05E8 \u05D4\u05DB\u05DC", "color.red": "\u05D0\u05D3\u05D5\u05DD", "color.orange": "\u05DB\u05EA\u05D5\u05DD", "color.yellow": "\u05E6\u05D4\u05D5\u05D1", "color.lime": "\u05D9\u05E8\u05D5\u05E7 \u05DC\u05D9\u05D9\u05DD", "color.green": "\u05D9\u05E8\u05D5\u05E7", "color.teal": "\u05D8\u05D9\u05DC", "color.cyan": "\u05E6\u05D9\u05D0\u05DF", "color.blue": "\u05DB\u05D7\u05D5\u05DC", "color.indigo": "\u05D0\u05D9\u05E0\u05D3\u05D9\u05D2\u05D5", "color.purple": "\u05E1\u05D2\u05D5\u05DC", "color.magenta": "\u05DE\u05D2\u05E0\u05D8\u05D4", "color.black": "\u05E9\u05D7\u05D5\u05E8", "color.dark-grey": "\u05D0\u05E4\u05D5\u05E8 \u05DB\u05D4\u05D4", "color.grey": "\u05D0\u05E4\u05D5\u05E8", "color.light-grey": "\u05D0\u05E4\u05D5\u05E8 \u05D1\u05D4\u05D9\u05E8", "color.white": "\u05DC\u05D1\u05DF" }, it: { "keyboard.tooltip.symbols": "Simboli", "keyboard.tooltip.greek": "Lettere greche", "keyboard.tooltip.numeric": "Numerico", "keyboard.tooltip.alphabetic": "Lettere romane", "tooltip.copy to clipboard": "Copia negli appunti", "tooltip.redo": "Rifare", "tooltip.toggle virtual keyboard": "Attiva / disattiva la tastiera virtuale", "tooltip.undo": "Disfare", "menu.insert matrix": "Inserisci una Matrice", "menu.borders": "Delimitatori di Matrice", "menu.array.add row above": "Aggiungi una Riga Prima", "menu.array.add row below": "Aggiungi una Riga Dopo", "menu.array.add column before": "Aggiungi una Colonna Prima", "menu.array.add column after": "Aggiungi una Colonna Dopo", "menu.array.delete row": "Rimuovi una Riga", "menu.array.delete rows": "Rimuovi le Righe Selezionate", "menu.array.delete column": "Rimuovi una Colonna", "menu.array.delete columns": "Rimuovi le Colonne Selezionate", "menu.mode": "Modalit\xE0", "menu.mode-math": "Matematica", "menu.mode-text": "Testo", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "Lavagna", "tooltip.bold": "Grassetto", "tooltip.italic": "Corsivo", "tooltip.fraktur": "Fraktur", "tooltip.script": "Script", "tooltip.caligraphic": "Caligrafico", "tooltip.typewriter": "Macchina da scrivere", "tooltip.roman-upright": "Romano dritto", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "Stile del carattere", "menu.accent": "Accento", "menu.decoration": "Decorazione", "menu.color": "Colore", "menu.background-color": "Sfondo", "menu.evaluate": "Valuta", "menu.simplify": "Semplifica", "menu.solve": "Risolvi", "menu.solve-for": "Risolvi per %@", "menu.cut": "Taglia", "menu.copy": "Copia", "menu.copy-as-latex": "Copia come LaTeX", "menu.copy-as-ascii-math": "Copia come ASCII Math", "menu.copy-as-mathml": "Copia come MathML", "menu.paste": "Incolla", "menu.select-all": "Seleziona tutto", "color.red": "Rosso", "color.orange": "Arancione", "color.yellow": "Giallo", "color.lime": "Lime", "color.green": "Verde", "color.teal": "Verde acqua", "color.cyan": "Ciano", "color.blue": "Blu", "color.indigo": "Indaco", "color.purple": "Viola", "color.magenta": "Magenta", "color.black": "Nero", "color.dark-grey": "Grigio scuro", "color.grey": "Grigio", "color.light-grey": "Grigio chiaro", "color.white": "Bianco" }, ja: { "keyboard.tooltip.symbols": "\u30B7\u30F3\u30DC\u30EB", "keyboard.tooltip.greek": "\u30AE\u30EA\u30B7\u30E3\u6587\u5B57", "keyboard.tooltip.numeric": "\u6570\u5024", "keyboard.tooltip.alphabetic": "\u30ED\u30FC\u30DE\u5B57", "tooltip.menu": "\u30E1\u30CB\u30E5\u30FC", "tooltip.copy to clipboard": "\u30AF\u30EA\u30C3\u30D7\u30DC\u30FC\u30C9\u306B\u30B3\u30D4\u30FC", "tooltip.redo": "\u3084\u308A\u76F4\u3057", "tooltip.toggle virtual keyboard": "\u4EEE\u60F3\u30AD\u30FC\u30DC\u30FC\u30C9\u306E\u5207\u308A\u66FF\u3048", "tooltip.undo": "\u5143\u306B\u623B\u3059", "menu.insert matrix": "\u30DE\u30C8\u30EA\u30C3\u30AF\u30B9\u3092\u633F\u5165", "menu.borders": "\u884C\u5217\u533A\u5207\u308A\u6587\u5B57", "menu.array.add row above": "\u5F8C\u306B\u884C\u3092\u8FFD\u52A0", "menu.array.add row below": "\u524D\u306B\u884C\u3092\u8FFD\u52A0", "menu.array.add column after": "\u5F8C\u306B\u5217\u3092\u8FFD\u52A0", "menu.array.add column before": "\u524D\u306B\u5217\u3092\u8FFD\u52A0", "menu.array.delete row": "\u884C\u3092\u524A\u9664", "menu.array.delete rows": "\u9078\u629E\u3057\u305F\u884C\u3092\u524A\u9664\u3059\u308B", "menu.array.delete column": "\u5217\u3092\u524A\u9664", "menu.array.delete columns": "\u9078\u629E\u3057\u305F\u5217\u3092\u524A\u9664\u3059\u308B", "menu.mode": "\u30E2\u30FC\u30C9", "menu.mode-math": "\u6570\u5F0F", "menu.mode-text": "\u30C6\u30AD\u30B9\u30C8", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "\u9ED2\u677F", "tooltip.bold": "\u592A\u5B57", "tooltip.italic": "\u30A4\u30BF\u30EA\u30C3\u30AF", "tooltip.fraktur": "\u30D5\u30E9\u30AF\u30C8\u30A5\u30FC\u30EB", "tooltip.script": "\u30B9\u30AF\u30EA\u30D7\u30C8", "tooltip.caligraphic": "\u30AB\u30EA\u30B0\u30E9\u30D5\u30A3\u30C3\u30AF", "tooltip.typewriter": "\u30BF\u30A4\u30D7\u30E9\u30A4\u30BF\u30FC", "tooltip.roman-upright": "\u30ED\u30FC\u30DE\u76F4\u7ACB", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\u30D5\u30A9\u30F3\u30C8\u30B9\u30BF\u30A4\u30EB", "menu.accent": "\u30A2\u30AF\u30BB\u30F3\u30C8", "menu.decoration": "\u88C5\u98FE", "menu.color": "\u8272", "menu.background-color": "\u80CC\u666F", "menu.evaluate": "\u8A55\u4FA1", "menu.simplify": "\u7C21\u7565\u5316", "menu.solve": "\u89E3\u304F", "menu.solve-for": "%@ \u3092\u89E3\u304F", "menu.cut": "\u5207\u308A\u53D6\u308A", "menu.copy": "\u30B3\u30D4\u30FC", "menu.copy-as-latex": "LaTeX\u3068\u3057\u3066\u30B3\u30D4\u30FC", "menu.copy-as-ascii-math": "ASCII Math\u3068\u3057\u3066\u30B3\u30D4\u30FC", "menu.copy-as-mathml": "MathML\u3068\u3057\u3066\u30B3\u30D4\u30FC", "menu.paste": "\u8CBC\u308A\u4ED8\u3051", "menu.select-all": "\u3059\u3079\u3066\u9078\u629E", "color.red": "\u8D64", "color.orange": "\u30AA\u30EC\u30F3\u30B8", "color.yellow": "\u9EC4\u8272", "color.lime": "\u30E9\u30A4\u30E0", "color.green": "\u7DD1", "color.teal": "\u30C6\u30A3\u30FC\u30EB", "color.cyan": "\u30B7\u30A2\u30F3", "color.blue": "\u9752", "color.indigo": "\u30A4\u30F3\u30C7\u30A3\u30B4", "color.purple": "\u7D2B", "color.magenta": "\u30DE\u30BC\u30F3\u30BF", "color.black": "\u9ED2", "color.dark-grey": "\u6FC3\u3044\u30B0\u30EC\u30FC", "color.grey": "\u30B0\u30EC\u30FC", "color.light-grey": "\u8584\u3044\u30B0\u30EC\u30FC", "color.white": "\u767D" }, ko: { "keyboard.tooltip.symbols": "\uAE30\uD638", "keyboard.tooltip.greek": "\uADF8\uB9AC\uC2A4 \uBB38\uC790", "keyboard.tooltip.numeric": "\uC22B\uC790", "keyboard.tooltip.alphabetic": "\uB85C\uB9C8 \uBB38\uC790", "tooltip.copy to clipboard": "\uD074\uB9BD \uBCF4\uB4DC\uC5D0 \uBCF5\uC0AC", "tooltip.redo": "\uB2E4\uC2DC \uD558\uB2E4", "tooltip.toggle virtual keyboard": "\uAC00\uC0C1 \uD0A4\uBCF4\uB4DC \uC804\uD658", "tooltip.undo": "\uC2E4\uD589 \uCDE8\uC18C", "menu.insert matrix": "\uB9E4\uD2B8\uB9AD\uC2A4 \uC0BD\uC785", "menu.borders": "\uD589\uB82C \uAD6C\uBD84 \uAE30\uD638", "menu.array.add row above": "\uB4A4\uC5D0 \uD589 \uCD94\uAC00", "menu.array.add row below": "\uC55E\uC5D0 \uD589 \uCD94\uAC00", "menu.array.add column after": "\uB4A4\uC5D0 \uC5F4 \uCD94\uAC00", "menu.array.add column before": "\uC55E\uC5D0 \uC5F4 \uCD94\uAC00", "menu.array.delete row": "\uD589 \uC0AD\uC81C", "menu.array.delete rows": "\uC120\uD0DD\uD55C \uD589 \uC0AD\uC81C", "menu.array.delete column": "\uC5F4 \uC0AD\uC81C", "menu.array.delete columns": "\uC120\uD0DD\uD55C \uC5F4 \uC0AD\uC81C", "menu.mode": "\u30E2\u30FC\u30C9", "menu.mode-math": "\u6570\u5F0F", "menu.mode-text": "\u30C6\u30AD\u30B9\u30C8", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "\uCE60\uD310", "tooltip.bold": "\uAD75\uAC8C", "tooltip.italic": "\uC774\uD0E4\uB9AD", "tooltip.fraktur": "\uD504\uB799\uD22C\uC5B4", "tooltip.script": "\uC2A4\uD06C\uB9BD\uD2B8", "tooltip.caligraphic": "\uCE98\uB9AC\uADF8\uB798\uD53D", "tooltip.typewriter": "\uD0C0\uC790\uAE30", "tooltip.roman-upright": "\uB85C\uB9C8 \uC9C1\uB9BD", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\uAE00\uAF34 \uC2A4\uD0C0\uC77C", "menu.accent": "\uC545\uC13C\uD2B8", "menu.decoration": "\uC7A5\uC2DD", "menu.color": "\uC0C9\uC0C1", "menu.background-color": "\uBC30\uACBD", "menu.evaluate": "\uD3C9\uAC00", "menu.simplify": "\uAC04\uC18C\uD654", "menu.solve": "\uD574\uACB0", "menu.solve-for": "%@\uC5D0 \uB300\uD574 \uD574\uACB0", "menu.cut": "\uC798\uB77C\uB0B4\uAE30", "menu.copy": "\uBCF5\uC0AC", "menu.copy-as-latex": "LaTeX\uB85C \uBCF5\uC0AC", "menu.copy-as-ascii-math": "ASCII Math\uB85C \uBCF5\uC0AC", "menu.copy-as-mathml": "MathML\uB85C \uBCF5\uC0AC", "menu.paste": "\uBD99\uC5EC\uB123\uAE30", "menu.select-all": "\uBAA8\uB450 \uC120\uD0DD", "color.red": "\uBE68\uAC15", "color.orange": "\uC8FC\uD669", "color.yellow": "\uB178\uB791", "color.lime": "\uB77C\uC784", "color.green": "\uCD08\uB85D", "color.teal": "\uCCAD\uB85D", "color.cyan": "\uCCAD\uC0C9", "color.blue": "\uD30C\uB791", "color.indigo": "\uB0A8\uC0C9", "color.purple": "\uBCF4\uB77C", "color.magenta": "\uC790\uD64D", "color.black": "\uAC80\uC815", "color.dark-grey": "\uC9C4\uD55C \uD68C\uC0C9", "color.grey": "\uD68C\uC0C9", "color.light-grey": "\uC5F0\uD55C \uD68C\uC0C9", "color.white": "\uD770\uC0C9" }, pl: { "keyboard.tooltip.symbols": "Symbolika", "keyboard.tooltip.greek": "Litery greckie", "keyboard.tooltip.numeric": "Numeryczne", "keyboard.tooltip.alphabetic": "Litery rzymskie", "tooltip.copy to clipboard": "Kopiuj do Schowka", "tooltip.redo": "Przywr\xF3\u0107", "tooltip.toggle virtual keyboard": "Prze\u0142\u0105cz wirtualn\u0105 klawiatur\u0119", "tooltip.undo": "Cofnij", "menu.insert matrix": "Wstaw macierz", "menu.borders": "Ograniczniki macierzy", "menu.array.add row above": "Dodaj wiersz po", "menu.array.add row below": "Dodaj wiersz przed", "menu.array.add column after": "Dodaj kolumn\u0119 po", "menu.array.add column before": "Dodaj kolumn\u0119 przed", "menu.array.delete row": "Usu\u0144 wiersz", "menu.array.delete rows": "Usu\u0144 wybrane wiersze", "menu.array.delete column": "Usu\u0144 kolumn\u0119", "menu.array.delete columns": "Usu\u0144 wybrane kolumny", "menu.mode": "Tryb", "menu.mode-math": "Formu\u0142a", "menu.mode-text": "Tekst", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "Tablica", "tooltip.bold": "Pogrubienie", "tooltip.italic": "Kursywa", "tooltip.fraktur": "Fraktura", "tooltip.script": "Skrypt", "tooltip.caligraphic": "Kaligraficzny", "tooltip.typewriter": "Maszynowy", "tooltip.roman-upright": "Rzymski prosto", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "Styl czcionki", "menu.accent": "Akcent", "menu.decoration": "Dekoracja", "menu.color": "Kolor", "menu.background-color": "T\u0142o", "menu.evaluate": "Oblicz", "menu.simplify": "Upro\u015B\u0107", "menu.solve": "Rozwi\u0105\u017C", "menu.solve-for": "Rozwi\u0105\u017C dla %@", "menu.cut": "Wytnij", "menu.copy": "Kopiuj", "menu.copy-as-latex": "Kopiuj jako LaTeX", "menu.copy-as-ascii-math": "Kopiuj jako ASCII Math", "menu.copy-as-mathml": "Kopiuj jako MathML", "menu.paste": "Wklej", "menu.select-all": "Zaznacz wszystko", "color.red": "Czerwony", "color.orange": "Pomara\u0144czowy", "color.yellow": "\u017B\xF3\u0142ty", "color.lime": "Limetkowy", "color.green": "Zielony", "color.teal": "Turkusowy", "color.cyan": "Cyjan", "color.blue": "Niebieski", "color.indigo": "Indygo", "color.purple": "Fioletowy", "color.magenta": "Magenta", "color.black": "Czarny", "color.dark-grey": "Ciemnoszary", "color.grey": "Szary", "color.light-grey": "Jasnoszary", "color.white": "Bia\u0142y" }, pt: { "keyboard.tooltip.symbols": "S\xEDmbolos", "keyboard.tooltip.greek": "Letras gregas", "keyboard.tooltip.numeric": "Num\xE9rico", "keyboard.tooltip.alphabetic": "Letras romanas", "tooltip.copy to clipboard": "Copiar para \xE1rea de transfer\xEAncia", "tooltip.redo": "Refazer", "tooltip.toggle virtual keyboard": "Alternar teclado virtual", "tooltip.undo": "Desfazer", "menu.insert matrix": "Inserir Matriz", "menu.borders": "Delimitadores de matriz", "menu.array.add row above": "Adicionar linha depois", "menu.array.add row below": "Adicionar linha antes", "menu.array.add column after": "Adicionar coluna depois", "menu.array.add column before": "Adicionar coluna antes", "menu.array.delete row": "Excluir linha", "menu.array.delete rows": "Excluir linhas selecionadas", "menu.array.delete column": "Apagar Coluna", "menu.array.delete columns": "Excluir Colunas Selecionadas", "menu.mode": "Modo", "menu.mode-math": "F\xF3rmula", "menu.mode-text": "Texto", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "Quadro Negro", "tooltip.bold": "Negrito", "tooltip.italic": "It\xE1lico", "tooltip.fraktur": "Fraktur", "tooltip.script": "Script", "tooltip.caligraphic": "Caligr\xE1fico", "tooltip.typewriter": "M\xE1quina de Escrever", "tooltip.roman-upright": "Romano Vertical", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "Estilo da Fonte", "menu.accent": "Acento", "menu.decoration": "Decora\xE7\xE3o", "menu.color": "Cor", "menu.background-color": "Cor de Fundo", "menu.evaluate": "Avaliar", "menu.simplify": "Simplificar", "menu.solve": "Resolver", "menu.solve-for": "Resolver para %@", "menu.cut": "Recortar", "menu.copy": "Copiar", "menu.copy-as-latex": "Copiar como LaTeX", "menu.copy-as-ascii-math": "Copiar como ASCII Math", "menu.copy-as-mathml": "Copiar como MathML", "menu.paste": "Colar", "menu.select-all": "Selecionar Tudo", "color.red": "Vermelho", "color.orange": "Laranja", "color.yellow": "Amarelo", "color.lime": "Verde Lima", "color.green": "Verde", "color.teal": "Verde-azulado", "color.cyan": "Ciano", "color.blue": "Azul", "color.indigo": "\xCDndigo", "color.purple": "Roxo", "color.magenta": "Magenta", "color.black": "Preto", "color.dark-grey": "Cinza Escuro", "color.grey": "Cinza", "color.light-grey": "Cinza Claro", "color.white": "Branco" }, uk: { "keyboard.tooltip.symbols": "\u0421\u0438\u043C\u0432\u043E\u043B\u0438", "keyboard.tooltip.greek": "\u0413\u0440\u0435\u0446\u044C\u043A\u0456 \u043B\u0456\u0442\u0435\u0440\u0438", "keyboard.tooltip.numeric": "\u0427\u0438\u0441\u043B\u043E\u0432\u0438\u0439", "keyboard.tooltip.alphabetic": "\u0420\u0438\u043C\u0441\u044C\u043A\u0456 \u043B\u0456\u0442\u0435\u0440\u0438", "tooltip.copy to clipboard": "\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0456\u043D\u0443", "tooltip.redo": "\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0438", "tooltip.toggle virtual keyboard": "\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0438\u0442\u0438 \u0432\u0456\u0440\u0442\u0443\u0430\u043B\u044C\u043D\u0443 \u043A\u043B\u0430\u0432\u0456\u0430\u0442\u0443\u0440\u0443", "tooltip.undo": "\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438", "menu.insert matrix": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043C\u0430\u0442\u0440\u0438\u0446\u044E", "menu.borders": "\u041C\u0430\u0442\u0440\u0438\u0447\u043D\u0456 \u0440\u043E\u0437\u0434\u0456\u043B\u044C\u043D\u0438\u043A\u0438", "menu.array.add row above": "\u0414\u043E\u0434\u0430\u0442\u0438 \u0440\u044F\u0434\u043E\u043A \u043F\u0456\u0441\u043B\u044F", "menu.array.add row below": "\u0414\u043E\u0434\u0430\u0442\u0438 \u0440\u044F\u0434\u043E\u043A \u0434\u043E", "menu.array.add column after": "\u0414\u043E\u0434\u0430\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0435\u0446\u044C \u043F\u0456\u0441\u043B\u044F", "menu.array.add column before": "\u0414\u043E\u0434\u0430\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0435\u0446\u044C \u043F\u0435\u0440\u0435\u0434", "menu.array.delete row": "\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0440\u044F\u0434\u043E\u043A", "menu.array.delete rows": "\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0456 \u0440\u044F\u0434\u043A\u0438", "menu.array.delete column": "\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0441\u0442\u043E\u0432\u043F\u0435\u0446\u044C", "menu.array.delete columns": "\u0412\u0438\u0434\u0430\u043B\u0438\u0442\u0438 \u0432\u0438\u0431\u0440\u0430\u043D\u0456 \u0441\u0442\u043E\u0432\u043F\u0446\u0456", "menu.mode": "\u0420\u0435\u0436\u0438\u043C", "menu.mode-math": "\u041C\u0430\u0442\u0435\u043C\u0430\u0442\u0438\u043A\u0430", "menu.mode-text": "\u0422\u0435\u043A\u0441\u0442", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "\u0427\u043E\u0440\u043D\u0430 \u0434\u043E\u0448\u043A\u0430", "tooltip.bold": "\u0416\u0438\u0440\u043D\u0438\u0439", "tooltip.italic": "\u041A\u0443\u0440\u0441\u0438\u0432", "tooltip.fraktur": "\u0424\u0440\u0430\u043A\u0442\u0443\u0440\u043D\u0438\u0439", "tooltip.script": "\u0421\u043A\u0440\u0438\u043F\u0442", "tooltip.caligraphic": "\u041A\u0430\u043B\u0456\u0433\u0440\u0430\u0444\u0456\u0447\u043D\u0438\u0439", "tooltip.typewriter": "\u041C\u0430\u0448\u0438\u043D\u043A\u0430 \u0434\u043B\u044F \u043F\u0438\u0441\u044C\u043C\u0430", "tooltip.roman-upright": "\u0420\u0438\u043C\u0441\u044C\u043A\u0438\u0439 \u043F\u0440\u044F\u043C\u0438\u0439", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\u0421\u0442\u0438\u043B\u044C \u0448\u0440\u0438\u0444\u0442\u0443", "menu.accent": "\u0410\u043A\u0446\u0435\u043D\u0442", "menu.decoration": "\u0414\u0435\u043A\u043E\u0440\u0430\u0446\u0456\u044F", "menu.color": "\u041A\u043E\u043B\u0456\u0440", "menu.background-color": "\u0424\u043E\u043D", "menu.evaluate": "\u041E\u0431\u0447\u0438\u0441\u043B\u0438\u0442\u0438", "menu.simplify": "\u0421\u043F\u0440\u043E\u0441\u0442\u0438\u0442\u0438", "menu.solve": "\u0412\u0438\u0440\u0456\u0448\u0438\u0442\u0438", "menu.solve-for": "\u0412\u0438\u0440\u0456\u0448\u0438\u0442\u0438 \u0434\u043B\u044F %@", "menu.cut": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438", "menu.copy": "\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438", "menu.copy-as-latex": "\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u044F\u043A LaTeX", "menu.copy-as-ascii-math": "\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u044F\u043A ASCII Math", "menu.copy-as-mathml": "\u041A\u043E\u043F\u0456\u044E\u0432\u0430\u0442\u0438 \u044F\u043A MathML", "menu.paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438", "menu.select-all": "\u0412\u0438\u0431\u0440\u0430\u0442\u0438 \u0432\u0441\u0435", "color.red": "\u0427\u0435\u0440\u0432\u043E\u043D\u0438\u0439", "color.orange": "\u041F\u043E\u043C\u0430\u0440\u0430\u043D\u0447\u0435\u0432\u0438\u0439", "color.yellow": "\u0416\u043E\u0432\u0442\u0438\u0439", "color.lime": "\u041B\u0430\u0439\u043C", "color.green": "\u0417\u0435\u043B\u0435\u043D\u0438\u0439", "color.teal": "\u0411\u0456\u0440\u044E\u0437\u043E\u0432\u0438\u0439", "color.cyan": "\u0421\u0438\u043D\u044C\u043E-\u0437\u0435\u043B\u0435\u043D\u0438\u0439", "color.blue": "\u0421\u0438\u043D\u0456\u0439", "color.indigo": "\u0406\u043D\u0434\u0438\u0433\u043E", "color.purple": "\u0424\u0456\u043E\u043B\u0435\u0442\u043E\u0432\u0438\u0439", "color.magenta": "\u041F\u0443\u0440\u043F\u0443\u0440\u043D\u0438\u0439", "color.black": "\u0427\u043E\u0440\u043D\u0438\u0439", "color.dark-grey": "\u0422\u0435\u043C\u043D\u043E-\u0441\u0456\u0440\u0438\u0439", "color.grey": "\u0421\u0456\u0440\u0438\u0439", "color.light-grey": "\u0421\u0432\u0456\u0442\u043B\u043E-\u0441\u0456\u0440\u0438\u0439", "color.white": "\u0411\u0456\u043B\u0438\u0439" }, "zh-cn": { "keyboard.tooltip.symbols": "\u7B26\u53F7", "keyboard.tooltip.greek": "\u5E0C\u814A\u5B57\u6BCD", "keyboard.tooltip.numeric": "\u6570\u5B57", "keyboard.tooltip.alphabetic": "\u7F57\u9A6C\u5B57\u6BCD", "tooltip.copy to clipboard": "\u590D\u5236\u5230\u526A\u8D34\u677F", "tooltip.redo": "\u91CD\u505A", "tooltip.toggle virtual keyboard": "\u5207\u6362\u865A\u62DF\u952E\u76D8", "tooltip.undo": "\u64A4\u6D88", "menu.insert matrix": "\u63D2\u5165\u77E9\u9635", "menu.borders": "\u77E9\u9635\u5206\u9694\u7B26", "menu.array.add row above": "\u5728\u540E\u9762\u6DFB\u52A0\u884C", "menu.array.add row below": "\u5728\u524D\u9762\u6DFB\u52A0\u884C", "menu.array.add column after": "\u5728\u540E\u9762\u6DFB\u52A0\u5217r", "menu.array.add column before": "\u5728\u524D\u9762\u6DFB\u52A0\u5217", "menu.array.delete row": "\u5220\u9664\u884C", "menu.array.delete rows": "\u5220\u9664\u9009\u5B9A\u884C", "menu.array.delete column": "\u5220\u9664\u5217", "menu.array.delete columns": "\u5220\u9664\u9009\u5B9A\u7684\u5217", "menu.mode": "\u6A21\u5F0F", "menu.mode-math": "\u6570\u5B66", "menu.mode-text": "\u6587\u672C", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "\u9ED1\u677F", "tooltip.bold": "\u7C97\u4F53", "tooltip.italic": "\u659C\u4F53", "tooltip.fraktur": "Fraktur", "tooltip.script": "\u811A\u672C", "tooltip.caligraphic": "\u8349\u4E66", "tooltip.typewriter": "\u6253\u5B57\u673A", "tooltip.roman-upright": "\u7F57\u9A6C\u76F4\u7ACB", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\u5B57\u4F53\u6837\u5F0F", "menu.accent": "\u91CD\u97F3", "menu.decoration": "\u88C5\u9970", "menu.color": "\u989C\u8272", "menu.background-color": "\u80CC\u666F", "menu.evaluate": "\u8BA1\u7B97", "menu.simplify": "\u7B80\u5316", "menu.solve": "\u6C42\u89E3", "menu.solve-for": "\u6C42\u89E3 %@", "menu.cut": "\u526A\u5207", "menu.copy": "\u590D\u5236", "menu.copy-as-latex": "\u590D\u5236\u4E3A LaTeX", "menu.copy-as-ascii-math": "\u590D\u5236\u4E3A ASCII Math", "menu.copy-as-mathml": "\u590D\u5236\u4E3A MathML", "menu.paste": "\u7C98\u8D34", "menu.select-all": "\u5168\u9009", "color.red": "\u7EA2\u8272", "color.orange": "\u6A59\u8272", "color.yellow": "\u9EC4\u8272", "color.lime": "\u7EFF\u9EC4\u8272", "color.green": "\u7EFF\u8272", "color.teal": "\u9752\u8272", "color.cyan": "\u84DD\u7EFF\u8272", "color.blue": "\u84DD\u8272", "color.indigo": "\u975B\u84DD\u8272", "color.purple": "\u7D2B\u8272", "color.magenta": "\u6D0B\u7EA2\u8272", "color.black": "\u9ED1\u8272", "color.dark-grey": "\u6DF1\u7070\u8272", "color.grey": "\u7070\u8272", "color.light-grey": "\u6D45\u7070\u8272", "color.white": "\u767D\u8272" }, "zh-tw": { "keyboard.tooltip.symbols": "\u7B26\u865F", "keyboard.tooltip.greek": "\u5E0C\u81D8\u5B57\u6BCD", "keyboard.tooltip.numeric": "\u6578\u5B57", "keyboard.tooltip.alphabetic": "\u7F85\u99AC\u5B57\u6BCD", "tooltip.copy to clipboard": "\u8907\u88FD\u5230\u526A\u8CBC\u677F", "tooltip.redo": "\u91CD\u505A", "tooltip.toggle virtual keyboard": "\u5207\u63DB\u865B\u64EC\u9375\u76E4", "tooltip.undo": "\u64A4\u6D88", "menu.insert matrix": "\u63D2\u5165\u77E9\u9663", "menu.borders": "\u77E9\u9663\u5206\u9694\u7B26", "menu.array.add row above": "\u5728\u5F8C\u9762\u6DFB\u52A0\u884C", "menu.array.add row below": "\u5728\u524D\u9762\u6DFB\u52A0\u884C", "menu.array.add column after": "\u5728\u5F8C\u9762\u6DFB\u52A0\u5217", "menu.array.add column before": "\u5728\u524D\u9762\u6DFB\u52A0\u5217", "menu.array.delete row": "\u522A\u9664\u884C", "menu.array.delete rows": "\u522A\u9664\u9078\u5B9A\u884C", "menu.array.delete column": "\u522A\u9664\u5217", "menu.array.delete columns": "\u522A\u9664\u9078\u5B9A\u7684\u5217", "menu.mode": "\u6A21\u5F0F", "menu.mode-math": "\u6578\u5B78", "menu.mode-text": "\u6587\u672C", "menu.mode-latex": "LaTeX", "tooltip.blackboard": "\u9ED1\u677F", "tooltip.bold": "\u7C97\u9AD4", "tooltip.italic": "\u659C\u9AD4", "tooltip.fraktur": "Fraktur", "tooltip.script": "\u8173\u672C", "tooltip.caligraphic": "\u8349\u66F8", "tooltip.typewriter": "\u6253\u5B57\u6A5F", "tooltip.roman-upright": "\u7F85\u99AC\u76F4\u7ACB", "tooltip.row-by-col": "%@ \xD7 %@", "menu.font-style": "\u5B57\u9AD4\u6A23\u5F0F", "menu.accent": "\u91CD\u97F3", "menu.decoration": "\u88DD\u98FE", "menu.color": "\u984F\u8272", "menu.background-color": "\u80CC\u666F", "menu.evaluate": "\u8A08\u7B97", "menu.simplify": "\u7C21\u5316", "menu.solve": "\u6C42\u89E3", "menu.solve-for": "\u6C42\u89E3 %@", "menu.cut": "\u526A\u4E0B", "menu.copy": "\u8907\u88FD", "menu.copy-as-latex": "\u8907\u88FD\u70BA LaTeX", "menu.copy-as-ascii-math": "\u8907\u88FD\u70BA ASCII Math", "menu.copy-as-mathml": "\u8907\u88FD\u70BA MathML", "menu.paste": "\u8CBC\u4E0A", "menu.select-all": "\u5168\u9078", "color.red": "\u7D05\u8272", "color.orange": "\u6A59\u8272", "color.yellow": "\u9EC3\u8272", "color.lime": "\u7DA0\u9EC3\u8272", "color.green": "\u7DA0\u8272", "color.teal": "\u9752\u8272", "color.cyan": "\u85CD\u7DA0\u8272", "color.blue": "\u85CD\u8272", "color.indigo": "\u975B\u85CD\u8272", "color.purple": "\u7D2B\u8272", "color.magenta": "\u6D0B\u7D05\u8272", "color.black": "\u9ED1\u8272", "color.dark-grey": "\u6DF1\u7070\u8272", "color.grey": "\u7070\u8272", "color.light-grey": "\u6DFA\u7070\u8272", "color.white": "\u767D\u8272" } }; +function fe() { + return "window" in globalThis && "document" in globalThis; +} +function go() { + return "matchMedia" in window ? window.matchMedia("(pointer: coarse)").matches : "ontouchstart" in window || navigator.maxTouchPoints > 0; +} +function Sc() { + try { + return window.self !== window.top; + } catch (t37) { + return true; + } +} +function yo() { + return typeof navigator.vibrate == "function"; +} +function yt() { + var e, r; + if (!fe()) + return "other"; + let t37 = (r = (e = navigator.userAgentData) == null ? void 0 : e.platform) != null ? r : navigator.platform; + return /^mac/i.test(t37) ? navigator.maxTouchPoints === 5 ? "ios" : "macos" : /^win/i.test(t37) ? "windows" : /android/i.test(navigator.userAgent) ? "android" : /iphone|ipod|ipad/i.test(navigator.userAgent) ? "ios" : /\bcros\b/i.test(navigator.userAgent) ? "chromeos" : "other"; +} +function Lc() { + if (!fe()) + return true; + if (/firefox/i.test(navigator.userAgent)) { + let t37 = navigator.userAgent.match(/firefox\/(\d+)/i); + return t37 ? parseInt(t37[1]) >= 78 : false; + } + if (/trident/i.test(navigator.userAgent)) + return false; + if (/edge/i.test(navigator.userAgent)) { + let t37 = navigator.userAgent.match(/edg\/(\d+)/i); + return t37 ? parseInt(t37[1]) >= 79 : false; + } + return true; +} +function xs() { + return HTMLElement.prototype.hasOwnProperty("popover"); +} +var O = { strings: kc, _locale: "", _dirty: false, _subscribers: [], _numberFormatter: void 0, get locale() { + return O._locale || (O._locale = fe() ? navigator.language.slice(0, 5) : "en-US"), O._locale; +}, set locale(t37) { + O._locale = t37, O._numberFormatter = void 0, O.dirty = true; +}, get numberFormatter() { + return O._numberFormatter || (O._numberFormatter = new Intl.NumberFormat(O.locale)), O._numberFormatter; +}, merge(t37, e) { + if (typeof t37 == "string" && e) + O.strings[t37] = p(p({}, O.strings[t37]), e), O.dirty = true; + else + for (let r of Object.keys(t37)) + O.merge(r, t37[r]); +}, get dirty() { + return O._dirty; +}, set dirty(t37) { + O._dirty || O._dirty === t37 || (O._dirty = true, setTimeout(() => { + O._dirty = false, this._subscribers.forEach((e) => e == null ? void 0 : e()); + }, 0)); +}, subscribe(t37) { + return O._subscribers.push(t37), O._subscribers.length - 1; +}, unsubscribe(t37) { + t37 < 0 || t37 >= O._subscribers.length || (O._subscribers[t37] = void 0); +}, update(t37) { + let e = t37.querySelectorAll("[data-l10n-tooltip]"); + for (let r of e) { + let i = r.getAttribute("data-l10n-tooltip"); + if (i) { + let n = P(i); + n && r.setAttribute("data-tooltip", n); + } + } + e = t37.querySelectorAll("[data-l10n-arial-label]"); + for (let r of e) { + let i = r.getAttribute("data-l10n-arial-label"); + if (i) { + let n = P(i); + n && r.setAttribute("aria-label", n); + } + } +} }; +function P(t37, ...e) { + if (t37 === void 0) + return; + let r = "", i = O.locale; + O.strings[i] && (r = O.strings[i][t37]); + let n = i.slice(0, 2); + if (!r && O.strings[n] && (r = O.strings[n][t37]), r || (r = O.strings.en[t37]), !r) + return; + let o = /(%@|%([0-9]+)\$@)/g, a = o.exec(r), s = 0; + for (; a; ) { + if (e[s++]) { + let c = a[2] ? parseInt(a[2], 10) - 1 : s - 1, u = e[c]; + typeof u == "number" && (u = O.numberFormatter.format(u)), r = r.replace(a[1], u); + } + a = o.exec(r); + } + return r = r.replace(/%%/g, "%"), r; +} +var Yp = { m0: "#3F3D99", m1: "#993D71", m2: "#998B3D", m3: "#3D9956", m4: "#3D5A99", m5: "#993D90", m6: "#996D3D", m7: "#43993D", m8: "#3D7999", m9: "#843D99" }; +var Qp = { blue: "#0072BD", orange: "#D95319", yellow: "#EDB120", purple: "#7E2F8E", green: "#77AC30", cyan: "#4DBEEE", red: "#A2142F" }; +var It = { red: "#fbbbb6", orange: "#ffe0c2", yellow: "#fff1c2", lime: "#d0e8b9", green: "#bceac4", teal: "#b9f1f1", cyan: "#b8e5c9", blue: "#b6d9fb", indigo: "#d1c2f0", purple: "#e3baf8", magenta: "#f9c8e0", black: "#353535", "dark-grey": "#8C8C8C", grey: "#D0D0D0", "light-grey": "#F0F0F0", white: "#ffffff" }; +var zt = { red: "#d7170b", orange: "#fe8a2b", yellow: "#ffc02b", lime: "#63b215", green: "#21ba3a", teal: "#17cfcf", cyan: "#13a7ec", blue: "#0d80f2", indigo: "#63c", purple: "#a219e6", magenta: "#eb4799", black: "#000", "dark-grey": "#666", grey: "#A6A6A6", "light-grey": "#d4d5d2", white: "#ffffff" }; +var Ac = { Red: "red", Orange: "orange", Yellow: "yellow", LimeGreen: "lime", Green: "green", TealBlue: "teal", Blue: "blue", Violet: "indigo", Purple: "purple", Magenta: "magenta", Black: "black", Gray: "grey", White: "white" }; +var eh = { Apricot: "#FBB982", Aquamarine: "#00B5BE", Bittersweet: "#C04F17", Black: "#221E1F", Blue: "#2D2F92", BlueGreen: "#00B3B8", BlueViolet: "#473992", BrickRed: "#B6321C", Brown: "#792500", BurntOrange: "#F7921D", CadetBlue: "#74729A", CarnationPink: "#F282B4", Cerulean: "#00A2E3", CornflowerBlue: "#41B0E4", Cyan: "#00AEEF", Dandelion: "#FDBC42", DarkOrchid: "#A4538A", Emerald: "#00A99D", ForestGreen: "#009B55", Fuchsia: "#8C368C", Goldenrod: "#FFDF42", Gray: "#949698", Green: "#00A64F", GreenYellow: "#DFE674", JungleGreen: "#00A99A", Lavender: "#F49EC4", Limegreen: "#8DC73E", Magenta: "#EC008C", Mahogany: "#A9341F", Maroon: "#AF3235", Melon: "#F89E7B", MidnightBlue: "#006795", Mulberry: "#A93C93", NavyBlue: "#006EB8", OliveGreen: "#3C8031", Orange: "#F58137", OrangeRed: "#ED135A", Orchid: "#AF72B0", Peach: "#F7965A", Periwinkle: "#7977B8", PineGreen: "#008B72", Plum: "#92268F", ProcessBlue: "#00B0F0", Purple: "#99479B", RawSienna: "#974006", Red: "#ED1B23", RedOrange: "#F26035", RedViolet: "#A1246B", Rhodamine: "#EF559F", RoyalBlue: "#0071BC", RoyalPurple: "#613F99", RubineRed: "#ED017D", Salmon: "#F69289", SeaGreen: "#3FBC9D", Sepia: "#671800", SkyBlue: "#46C5DD", SpringGreen: "#C6DC67", Tan: "#DA9D76", TealBlue: "#00AEB3", Thistle: "#D883B7", Turquoise: "#00B4CE", Violet: "#58429B", VioletRed: "#EF58A0", White: "#FFFFFF", WildStrawberry: "#EE2967", Yellow: "#FFF200", YellowGreen: "#98CC70", YellowOrange: "#FAA21A" }; +function Tr(t37) { + var u, d, m, h, f, b; + let e = t37.split("!"), r, i, n, o = 255, a = 255, s = 255, l = -1, c = e.length > 0 && e[0].startsWith("-"); + c && (e[0] = e[0].slice(1)); + for (let S = 0; S < e.length; S++) { + r = o, i = a, n = s; + let M = (u = e[S].trim().match(/^([A-Za-z\d-]+)/)) == null ? void 0 : u[1], x = M == null ? void 0 : M.toLowerCase(), v = M && (b = (f = (h = (m = (d = zt[x]) != null ? d : zt[Ac[M]]) != null ? m : Qp[M]) != null ? h : eh[M]) != null ? f : Yp[M]) != null ? b : e[S].trim(), k = v.match(/^#([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i); + if (k != null && k[1] && k[2] && k[3]) + o = Math.max(0, Math.min(255, Number.parseInt(k[1], 16))), a = Math.max(0, Math.min(255, Number.parseInt(k[2], 16))), s = Math.max(0, Math.min(255, Number.parseInt(k[3], 16))); + else if (k = v.match(/^#([\da-f]{3})$/i), k != null && k[1]) { + let C = Number.parseInt(k[1][0], 16), q = Number.parseInt(k[1][1], 16), B = Number.parseInt(k[1][2], 16); + o = Math.max(0, Math.min(255, C * 16 + C)), a = Math.max(0, Math.min(255, q * 16 + q)), s = Math.max(0, Math.min(255, B * 16 + B)); + } else if (k = v.match(/^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i), k != null && k[1] && k[2] && k[3]) + o = Math.max(0, Math.min(255, Number.parseInt(k[1]))), a = Math.max(0, Math.min(255, Number.parseInt(k[2]))), s = Math.max(0, Math.min(255, Number.parseInt(k[3]))); + else + return; + l >= 0 && (o = (1 - l) * o + l * r, a = (1 - l) * a + l * i, s = (1 - l) * s + l * n, l = -1), S + 1 < e.length && (l = Math.max(0, Math.min(100, Number.parseInt(e[++S]))) / 100); + } + return l >= 0 && (o = l * o + (1 - l) * r, a = l * a + (1 - l) * i, s = l * s + (1 - l) * n), c && (o = 255 - o, a = 255 - a, s = 255 - s), "#" + ("00" + Math.round(o).toString(16)).slice(-2) + ("00" + Math.round(a).toString(16)).slice(-2) + ("00" + Math.round(s).toString(16)).slice(-2); +} +function gi(t37) { + var e, r; + return t37 = t37.trim(), (r = (e = It[t37.toLowerCase()]) != null ? e : It[Ac[t37]]) != null ? r : Tr(t37); +} +function th(t37) { + if (!t37 || t37[0] !== "#") + return; + t37 = t37.slice(1); + let e; + return t37.length <= 4 ? (e = { r: parseInt(t37[0] + t37[0], 16), g: parseInt(t37[1] + t37[1], 16), b: parseInt(t37[2] + t37[2], 16) }, t37.length === 4 && (e.a = parseInt(t37[3] + t37[3], 16) / 255)) : (e = { r: parseInt(t37[0] + t37[1], 16), g: parseInt(t37[2] + t37[3], 16), b: parseInt(t37[4] + t37[5], 16) }, t37.length === 8 && (e.a = parseInt(t37[6] + t37[7], 16) / 255)), e && e.a === void 0 && (e.a = 1), e; +} +function vs(t37, e, r) { + return r < 0 && (r += 6), r >= 6 && (r -= 6), r < 1 ? (e - t37) * r + t37 : r < 3 ? e : r < 4 ? (e - t37) * (4 - r) + t37 : t37; +} +function rh(t37) { + let [e, r, i] = [t37.h, t37.s, t37.l]; + e = (e + 360) % 360 / 60, i = Math.max(0, Math.min(i, 1)), r = Math.max(0, Math.min(r, 1)); + let n = i <= 0.5 ? i * (r + 1) : i + r - i * r, o = i * 2 - n; + return { r: Math.round(255 * vs(o, n, e + 2)), g: Math.round(255 * vs(o, n, e)), b: Math.round(255 * vs(o, n, e - 2)) }; +} +function _s(t37) { + return t37 < 0 ? 0 : t37 > 255 ? 255 : Math.round(t37); +} +function ih(t37) { + let { r: e, g: r, b: i } = t37, n = ((1 << 24) + (_s(e) << 16) + (_s(r) << 8) + _s(i)).toString(16).slice(1); + return n[0] === n[1] && n[2] === n[3] && n[4] === n[5] && n[6] === n[7] && (n = n[0] + n[2] + n[4]), "#" + n; +} +function nh(t37) { + let { r: e, g: r, b: i } = t37; + e = e / 255, r = r / 255, i = i / 255; + let n = Math.min(e, r, i), o = Math.max(e, r, i), a = o - n, s, l; + o === n ? s = 0 : e === o ? s = (r - i) / a : r === o ? s = 2 + (i - e) / a : i === o && (s = 4 + (e - r) / a), s = Math.min(s * 60, 360), s < 0 && (s += 360); + let c = (n + o) / 2; + return o === n ? l = 0 : c <= 0.5 ? l = a / (o + n) : l = a / (2 - o - n), { h: s, s: l, l: c }; +} +function Cc(t37) { + let e = th(t37); + if (!e) + return t37; + let { h: r, s: i, l: n } = nh(e); + return i += 0.1, n -= 0.1, ih(rh({ h: r, s: i, l: n })); +} +var ws = { 60: "\\lt", 62: "\\gt", 111: "o", 38: "\\&", 123: "\\lbrace", 125: "\\rbrace", 91: "\\lbrack", 93: "\\rbrack", 58: "\\colon", 160: "~", 172: "\\neg", 183: "\\cdot", 188: "\\frac{1}{4}", 189: "\\frac{1}{2}", 190: "\\frac{3}{4}", 8304: "^{0}", 8305: "^{i}", 185: "^{1}", 178: "^{2}", 179: "^{3}", 8224: "\\dagger", 8225: "\\ddagger", 8230: "\\ldots", 8308: "^{4}", 8309: "^{5}", 8310: "^{6}", 8311: "^{7}", 8312: "^{8}", 8313: "^{9}", 8314: "^{+}", 8315: "^{-}", 8316: "^{=}", 8319: "^{n}", 8320: "_{0}", 8321: "_{1}", 8322: "_{2}", 8323: "_{3}", 8324: "_{4}", 8325: "_{5}", 8326: "_{6}", 8327: "_{7}", 8328: "_{8}", 8329: "_{9}", 8330: "_{+}", 8331: "_{-}", 8332: "_{=}", 8336: "_{a}", 8337: "_{e}", 8338: "_{o}", 8339: "_{x}", 8242: "\\prime", 39: "\\prime", 8592: "\\gets", 8594: "\\to", 9651: "\\triangle", 9661: "\\triangledown", 8715: "\\owns", 8727: "\\ast", 8739: "\\vert", 8741: "\\Vert", 8743: "\\land", 8744: "\\lor", 8901: "\\cdot", 8904: "\\bowtie", 8800: "\\ne", 8804: "\\le", 8805: "\\ge", 8869: "\\bot", 10231: "\\biconditional", 10232: "\\impliedby", 10233: "\\implies", 10234: "\\iff", 8450: "\\mathbb{C}", 8469: "\\mathbb{N}", 8473: "\\mathbb{P}", 8474: "\\mathbb{Q}", 8477: "\\mathbb{R}", 8484: "\\mathbb{Z}", 8461: "\\mathbb{H}", 8476: "\\Re", 8465: "\\Im", 42: "\\ast", 11036: "\\square", 9633: "\\square", 8720: "\\coprod", 8716: "\\not\\ni", 9671: "\\diamond", 8846: "\\uplus", 8851: "\\sqcap", 8852: "\\sqcup", 8768: "\\wr", 8750: "\\oint", 8226: "\\textbullet", 8722: "-", 978: "\\Upsilon" }; +var Ms = { 119893: 8462, 119965: 8492, 119968: 8496, 119969: 8497, 119971: 8459, 119972: 8464, 119975: 8466, 119976: 8499, 119981: 8475, 119994: 8495, 119996: 8458, 120004: 8500, 120070: 8493, 120075: 8460, 120076: 8465, 120085: 8476, 120093: 8488, 120122: 8450, 120127: 8461, 120133: 8469, 120135: 8473, 120136: 8474, 120137: 8477, 120145: 8484 }; +var Ec = [{ start: 119808, len: 26, offset: 65, style: "bold" }, { start: 119834, len: 26, offset: 97, style: "bold" }, { start: 120488, len: 25, offset: 913, style: "bold" }, { start: 120514, len: 25, offset: 945, style: "bold" }, { start: 119860, len: 26, offset: 65, style: "italic" }, { start: 119886, len: 26, offset: 97, style: "italic" }, { start: 120546, len: 25, offset: 913, style: "italic" }, { start: 120572, len: 25, offset: 945, style: "italic" }, { start: 119912, len: 26, offset: 65, style: "bolditalic" }, { start: 119938, len: 26, offset: 97, style: "bolditalic" }, { start: 120604, len: 25, offset: 913, style: "bolditalic" }, { start: 120630, len: 25, offset: 945, style: "bolditalic" }, { start: 120782, len: 10, offset: 48, variant: "main", style: "bold" }, { start: 119964, len: 26, offset: 65, variant: "script" }, { start: 119990, len: 26, offset: 97, variant: "script" }, { start: 120016, len: 26, offset: 65, variant: "script", style: "bold" }, { start: 120042, len: 26, offset: 97, variant: "script", style: "bold" }, { start: 120068, len: 26, offset: 65, variant: "fraktur" }, { start: 120094, len: 26, offset: 97, variant: "fraktur" }, { start: 120172, len: 26, offset: 65, variant: "fraktur", style: "bold" }, { start: 120198, len: 26, offset: 97, variant: "fraktur", style: "bold" }, { start: 120120, len: 26, offset: 65, variant: "double-struck" }, { start: 120146, len: 26, offset: 97, variant: "double-struck" }, { start: 120792, len: 10, offset: 48, variant: "double-struck" }, { start: 120432, len: 26, offset: 65, variant: "monospace" }, { start: 120458, len: 26, offset: 97, variant: "monospace" }, { start: 120822, len: 10, offset: 48, variant: "monospace" }, { start: 120224, len: 26, offset: 65, variant: "sans-serif" }, { start: 120250, len: 26, offset: 97, variant: "sans-serif" }, { start: 120276, len: 26, offset: 65, variant: "sans-serif", style: "bold" }, { start: 120302, len: 26, offset: 97, variant: "sans-serif", style: "bold" }, { start: 120328, len: 26, offset: 65, variant: "sans-serif", style: "italic" }, { start: 120354, len: 26, offset: 97, variant: "sans-serif", style: "italic" }, { start: 120380, len: 26, offset: 65, variant: "sans-serif", style: "bolditalic" }, { start: 120406, len: 26, offset: 97, variant: "sans-serif", style: "bolditalic" }, { start: 120662, len: 25, offset: 913, variant: "sans-serif", style: "bold" }, { start: 120688, len: 25, offset: 945, variant: "sans-serif", style: "bold" }, { start: 120720, len: 25, offset: 913, variant: "sans-serif", style: "bolditalic" }, { start: 120746, len: 25, offset: 945, variant: "sans-serif", style: "bolditalic" }, { start: 120803, len: 10, offset: 48, variant: "sans-serif" }, { start: 120812, len: 10, offset: 48, variant: "sans-serif", style: "bold" }]; +function gn(t37, e, r) { + if (!/[A-Za-z\d]/.test(t37) || (r === "up" && (r = void 0), !e && !r)) + return; + let i = t37.codePointAt(0); + if (i === void 0) + return t37; + for (let n of Ec) + if ((!e || n.variant === e) && (!r || n.style === r) && i >= n.offset && i < n.offset + n.len) { + let o = n.start + i - n.offset; + return String.fromCodePoint(Ms[o] || o); + } +} +function oh(t37) { + var e; + if ((t37 < 119808 || t37 > 120831) && (t37 < 8448 || t37 > 8527)) + return { char: String.fromCodePoint(t37) }; + for (let r in Ms) + if (Ms[r] === t37) { + t37 = (e = r.codePointAt(0)) != null ? e : 0; + break; + } + for (let r of Ec) + if (t37 >= r.start && t37 < r.start + r.len) + return { char: String.fromCodePoint(t37 - r.start + r.offset), variant: r.variant, style: r.style }; + return { char: String.fromCodePoint(t37) }; +} +function Tc(t37) { + var a; + if ("{}<>[]$&*#^_%:'\u02DC".includes(t37) || t37.length > 1) + return; + let e = (a = t37.codePointAt(0)) != null ? a : 0, r = ws[e]; + if (r) + return r; + let { char: i, variant: n, style: o } = oh(e); + if (!(!n && !o)) { + switch (r = i, n) { + case "double-struck": + r = `\\mathbb{${r}}`; + break; + case "fraktur": + r = `\\mathfrak{${r}}`; + break; + case "script": + r = `\\mathscr{${r}}`; + break; + case "sans-serif": + r = `\\mathsf{${r}}`; + break; + case "monospace": + r = `\\mathtt{${r}}`; + break; + case "calligraphic": + r = `\\mathcal{${r}}`; + break; + } + switch (o) { + case "bold": + r = `\\mathbf{${r}}`; + break; + case "italic": + r = `\\mathit{${r}}`; + break; + case "bolditalic": + r = `\\mathbfit{${r}}`; + break; + } + return r; + } +} +function A(t37) { + return t37 ? Array.isArray(t37) ? t37 : typeof t37 == "object" && "group" in t37 ? t37.group : [] : []; +} +var yn = {}; +var xo = p({}, ws); +var bi = {}; +var Ss = {}; +var ah = { darr: "\\downarrow", dArr: "\\Downarrow", Darr: "\\Downarrow", lang: "\\langle", rang: "\\rangle", uarr: "\\uparrow", uArr: "\\Uparrow", Uarr: "\\Uparrow", N: "\\mathbb{N}", R: "\\mathbb{R}", Z: "\\mathbb{Z}", alef: "\\aleph", alefsym: "\\aleph", Alpha: "\\mathrm{A}", Beta: "\\mathrm{B}", bull: "\\bullet", Chi: "\\mathrm{X}", clubs: "\\clubsuit", cnums: "\\mathbb{C}", Complex: "\\mathbb{C}", Dagger: "\\ddagger", diamonds: "\\diamondsuit", empty: "\\emptyset", Epsilon: "\\mathrm{E}", Eta: "\\mathrm{H}", exist: "\\exists", harr: "\\leftrightarrow", hArr: "\\Leftrightarrow", Harr: "\\Leftrightarrow", hearts: "\\heartsuit", image: "\\Im", infin: "\\infty", Iota: "\\mathrm{I}", isin: "\\in", Kappa: "\\mathrm{K}", larr: "\\leftarrow", lArr: "\\Leftarrow", Larr: "\\Leftarrow", lrarr: "\\leftrightarrow", lrArr: "\\Leftrightarrow", Lrarr: "\\Leftrightarrow", Mu: "\\mathrm{M}", natnums: "\\mathbb{N}", Nu: "\\mathrm{N}", Omicron: "\\mathrm{O}", plusmn: "\\pm", rarr: "\\rightarrow", rArr: "\\Rightarrow", Rarr: "\\Rightarrow", real: "\\Re", reals: "\\mathbb{R}", Reals: "\\mathbb{R}", Rho: "\\mathrm{P}", sdot: "\\cdot", sect: "\\S", spades: "\\spadesuit", sub: "\\subset", sube: "\\subseteq", supe: "\\supseteq", Tau: "\\mathrm{T}", thetasym: "\\vartheta", weierp: "\\wp", Zeta: "\\mathrm{Z}" }; +var sh = { varGamma: "\\mathit{\\Gamma}", varDelta: "\\mathit{\\Delta}", varTheta: "\\mathit{\\Theta}", varLambda: "\\mathit{\\Lambda}", varXi: "\\mathit{\\Xi}", varPi: "\\mathit{\\Pi}", varSigma: "\\mathit{\\Sigma}", varUpsilon: "\\mathit{\\Upsilon}", varPhi: "\\mathit{\\Phi}", varPsi: "\\mathit{\\Psi}", varOmega: "\\mathit{\\Omega}", pmod: { def: "\\quad(\\operatorname{mod}\\ #1)", args: 1, expand: false, captureSelection: false }, mod: { def: "\\quad\\operatorname{mod}\\,\\,#1", args: 1, expand: false }, bmod: { def: "\\;\\mathbin{\\operatorname{mod }}", expand: false } }; +var lh = { bra: { def: "\\mathinner{\\langle{#1}|}", args: 1, captureSelection: false }, ket: { def: "\\mathinner{|{#1}\\rangle}", args: 1, captureSelection: false }, braket: { def: "\\mathinner{\\langle{#1}\\rangle}", args: 1, captureSelection: false }, set: { def: "\\mathinner{\\lbrace #1 \\rbrace}", args: 1, captureSelection: false }, Bra: { def: "\\left\\langle #1\\right|", args: 1, captureSelection: false }, Ket: { def: "\\left|#1\\right\\rangle", args: 1, captureSelection: false }, Braket: { def: "\\left\\langle{#1}\\right\\rangle", args: 1, captureSelection: false }, Set: { def: "\\left\\lbrace #1 \\right\\rbrace", args: 1, captureSelection: false } }; +var ch = { iff: { primitive: true, captureSelection: true, def: '\\;\\char"27FA\\;' }, nicefrac: "^{#1}\\!\\!/\\!_{#2}", phase: { def: "\\enclose{phasorangle}{#1}", args: 1, captureSelection: false }, rd: "\\mathrm{d}", rD: "\\mathrm{D}", doubleStruckCapitalN: "\\mathbb{N}", doubleStruckCapitalR: "\\mathbb{R}", doubleStruckCapitalQ: "\\mathbb{Q}", doubleStruckCapitalZ: "\\mathbb{Z}", doubleStruckCapitalP: "\\mathbb{P}", scriptCapitalE: "\\mathscr{E}", scriptCapitalH: "\\mathscr{H}", scriptCapitalL: "\\mathscr{L}", gothicCapitalC: "\\mathfrak{C}", gothicCapitalH: "\\mathfrak{H}", gothicCapitalI: "\\mathfrak{I}", gothicCapitalR: "\\mathfrak{R}", imaginaryI: "\\mathrm{i}", imaginaryJ: "\\mathrm{j}", exponentialE: "\\mathrm{e}", differentialD: "\\mathrm{d}", capitalDifferentialD: "\\mathrm{D}", mathstrut: { def: "\\vphantom{(}", primitive: true }, angl: "\\enclose{actuarial}{#1}", angln: "\\enclose{actuarial}{n}", anglr: "\\enclose{actuarial}{r}", anglk: "\\enclose{actuarial}{k}", mathtools: { primitive: true, package: { ordinarycolon: ":", vcentcolon: "\\mathrel{\\mathop\\ordinarycolon}", dblcolon: '{\\mathop{\\char"2237}}', coloneqq: '{\\mathop{\\char"2254}}', Coloneqq: '{\\mathop{\\char"2237\\char"3D}}', coloneq: '{\\mathop{\\char"3A\\char"2212}}', Coloneq: '{\\mathop{\\char"2237\\char"2212}}', eqqcolon: '{\\mathop{\\char"2255}}', Eqqcolon: '{\\mathop{\\char"3D\\char"2237}}', eqcolon: '{\\mathop{\\char"2239}}', Eqcolon: '{\\mathop{\\char"2212\\char"2237}}', colonapprox: '{\\mathop{\\char"003A\\char"2248}}', Colonapprox: '{\\mathop{\\char"2237\\char"2248}}', colonsim: '{\\mathop{\\char"3A\\char"223C}}', Colonsim: '{\\mathop{\\char"2237\\char"223C}}', colondash: "\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}", Colondash: "\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}", dashcolon: "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}", Dashcolon: "\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}" } }, ratio: "\\vcentcolon", coloncolon: "\\dblcolon", colonequals: "\\coloneq", coloncolonequals: "\\Coloneq", equalscolon: "\\eqcolon", equalscoloncolon: "\\Eqcolon", colonminus: "\\colondash", coloncolonminus: "\\Colondash", minuscolon: "\\dashcolon", minuscoloncolon: "\\Dashcolon", coloncolonapprox: "\\Colonapprox", coloncolonsim: "\\Colonsim", simcolon: "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}", Simcolon: "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}", simcoloncolon: "\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}", approxcolon: "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}", Approxcolon: "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}", approxcoloncolon: "\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}", notni: "\\mathrel{\\char`\u220C}", limsup: "\\operatorname*{lim\\,sup}", liminf: "\\operatorname*{lim\\,inf}", injlim: "\\operatorname*{inj\\,lim}", projlim: "\\operatorname*{proj\\,lim}", varlimsup: "\\operatorname*{\\overline{lim}}", varliminf: "\\operatorname*{\\underline{lim}}", varinjlim: "\\operatorname*{\\underrightarrow{lim}}", varprojlim: "\\operatorname*{\\underleftarrow{lim}}", argmin: "\\operatorname*{arg\\,min}", argmax: "\\operatorname*{arg\\,max}", plim: "\\mathop{\\operatorname{plim}}\\limits", tripledash: { def: "\\vphantom{-}\\raise{4mu}{\\mkern1.5mu\\rule{2mu}{1.5mu}\\mkern{2.25mu}\\rule{2mu}{1.5mu}\\mkern{2.25mu}\\rule{2mu}{1.5mu}\\mkern{2mu}}", expand: true }, "braket.sty": { package: lh }, "amsmath.sty": { package: sh, primitive: true }, "texvc.sty": { package: ah, primitive: false } }; +var yi = { " ": 32, "\\!": 33, "\\#": 35, "\\$": 36, "\\%": 37, "\\&": 38, "\\_": 95, "-": 45, "\\textunderscore": 95, "\\euro": 8364, "\\maltese": 10016, "\\{": 123, "\\}": 125, "\\textbraceleft": 123, "\\textbraceright": 125, "\\lbrace": 123, "\\rbrace": 125, "\\lbrack": 91, "\\rbrack": 93, "\\nobreakspace": 160, "\\ldots": 8230, "\\textellipsis": 8230, "\\backslash": 92, "`": 8216, "'": 8217, "``": 8220, "''": 8221, "\\degree": 176, "\\textasciicircum": 94, "\\textasciitilde": 126, "\\textasteriskcentered": 42, "\\textbackslash": 92, "\\textbullet": 8226, "\\textdollar": 36, "\\textsterling": 163, "\\textdagger": 8224, "\\textdaggerdbl": 8225, "\u2013": 8211, "\u2014": 8212, "\u2018": 8216, "\u2019": 8217, "\u201C": 8220, "\u201D": 8221, '"': 8221, "\\ss": 223, "\\ae": 230, "\\oe": 339, "\\AE": 198, "\\OE": 338, "\\O": 216, "\\i": 305, "\\j": 567, "\\aa": 229, "\\AA": 197 }; +var Bc = /[\w!@*()-=+{}\[\]\\';:?/.,~<>`|$%#&^" ]/; +var vo; +var Dr; +Lc() ? (vo = new RegExp("\\p{Letter}", "u"), Dr = new RegExp("[0-9\\p{Letter}]", "u")) : (vo = /[a-zA-ZаАбБвВгГдДеЕёЁжЖзЗиИйЙкКлЛмМнНоОпПрРсСтТуУфФхХцЦчЧшШщЩъЪыЫьЬэЭюЮяĄąĆćĘꣳŃńÓ󌜏źŻżàâäôéèëêïîçùûüÿæœÀÂÄÔÉÈËÊÏΟÇÙÛÜÆŒößÖẞìíòúÌÍÒÚáñÁÑ]/, Dr = /[\da-zA-ZаАбБвВгГдДеЕёЁжЖзЗиИйЙкКлЛмМнНоОпПрРсСтТуУфФхХцЦчЧшШщЩъЪыЫьЬэЭюЮяĄąĆćĘꣳŃńÓ󌜏źŻżàâäôéèëêïîçùûüÿæœÀÂÄÔÉÈËÊÏΟÇÙÛÜÆŒößÖẞìíòúÌÍÒÚáñÁÑ]/); +function ks(t37, e, r = "mord", i) { + e !== void 0 && (yn[t37] = { definitionType: "symbol", type: r, variant: i, codepoint: e }, xo[e] || (xo[e] = t37)); +} +function me(t37, e, r) { + if (typeof t37 == "string") { + for (let i = 0; i < t37.length; i++) { + let n = t37.charAt(i); + ks(n, n.codePointAt(0)); + } + return; + } + for (let [i, n, o, a] of t37) + ks(i, n, o != null ? o : e, a != null ? a : r); +} +function Ls(t37, e) { + for (let r = t37; r <= e; r++) + ks(String.fromCodePoint(r), r); +} +function Oc(t37) { + var e; + return (e = Ss[t37]) != null ? e : null; +} +function Pc(t37, e) { + var n, o; + if (e.length === 0 || e === "\\" || !e.startsWith("\\")) + return []; + let r = []; + for (let a in bi) + a.startsWith(e) && !bi[a].infix && r.push({ match: a, frequency: (n = bi[a].frequency) != null ? n : 0 }); + for (let a in yn) + a.startsWith(e) && r.push({ match: a, frequency: (o = yn[a].frequency) != null ? o : 0 }); + let i = e.substring(1); + for (let a of Object.keys(t37.options.macros)) + a.startsWith(i) && r.push({ match: "\\" + a, frequency: 0 }); + return r.sort((a, s) => { + var l, c; + return a.frequency === s.frequency ? a.match.length === s.match.length ? a.match < s.match ? -1 : 1 : a.match.length - s.match.length : ((l = s.frequency) != null ? l : 0) - ((c = a.frequency) != null ? c : 0); + }), r.map((a) => a.match); +} +function Dc(t37) { + let e = "auto", r = t37.match(/:([^=]+)/); + return r && (e = r[1].trim()), e; +} +function _o(t37) { + if (!t37) + return []; + let e = [], r = t37.split("]"); + if (r[0].startsWith("[")) { + e.push({ isOptional: true, type: Dc(r[0].slice(1)) }); + for (let i = 1; i <= r.length; i++) + e.push(..._o(r[i])); + } else if (r = t37.split("}"), r[0].startsWith("{")) { + e.push({ isOptional: false, type: Dc(r[0].slice(1)) }); + for (let i = 1; i <= r.length; i++) + e.push(..._o(r[i])); + } + return e; +} +function As(t37) { + if (!t37) + return ""; + let e = "", r = true; + for (let i of t37) + typeof i.value == "string" ? e += i.value : r = false; + return r ? e : ""; +} +function Cs(t37, e) { + typeof t37 == "string" && (t37 = [t37]); + let r = { tabular: false, params: [], createAtom: e }; + for (let i of t37) + Ss[i] = r; +} +function bt(t37, e, r) { + typeof t37 == "string" && (t37 = [t37]); + let n = { tabular: true, params: _o(e), createAtom: r }; + for (let o of t37) + Ss[o] = n; +} +function _(t37, e, r) { + var n, o; + r || (r = {}); + let i = { definitionType: "function", params: _o(e), ifMode: r.ifMode, isFunction: (n = r.isFunction) != null ? n : false, applyMode: r.applyMode, infix: (o = r.infix) != null ? o : false, parse: r.parse, createAtom: r.createAtom, applyStyle: r.applyStyle, serialize: r.serialize, render: r.render }; + if (typeof t37 == "string") + bi["\\" + t37] = i; + else + for (let a of t37) + bi["\\" + a] = i; +} +var bo; +function xi(t37) { + return bo || (bo = Mo(ch)), t37 ? Mo(p(p({}, bo), t37)) : bo; +} +function Kc(t37, e) { + var r, i, n, o; + if (typeof t37 == "string") { + let a = 0, s = t37; + return /(^|[^\\])#1/.test(s) && (a = 1), /(^|[^\\])#2/.test(s) && (a = 2), /(^|[^\\])#3/.test(s) && (a = 3), /(^|[^\\])#4/.test(s) && (a = 4), /(^|[^\\])#5/.test(s) && (a = 5), /(^|[^\\])#6/.test(s) && (a = 6), /(^|[^\\])#7/.test(s) && (a = 7), /(^|[^\\])#8/.test(s) && (a = 8), /(^|[^\\])#9/.test(s) && (a = 9), { expand: (r = e == null ? void 0 : e.expand) != null ? r : true, captureSelection: (i = e == null ? void 0 : e.captureSelection) != null ? i : true, args: a, def: s }; + } + return p({ expand: (n = e == null ? void 0 : e.expand) != null ? n : true, captureSelection: (o = e == null ? void 0 : e.captureSelection) != null ? o : true, args: 0 }, t37); +} +function Mo(t37) { + if (!t37) + return {}; + let e = {}; + for (let r of Object.keys(t37)) { + let i = t37[r]; + if (i == null) + delete e[r]; + else if (typeof i == "object" && "package" in i) + for (let n of Object.keys(i.package)) + e[n] = Kc(i.package[n], { expand: !i.primitive, captureSelection: i.captureSelection }); + else + e[r] = Kc(i); + } + return e; +} +function ee(t37, e = "math") { + if (!t37 || t37.length === 0) + return null; + let r = null; + if (t37.startsWith("\\")) { + if (r = bi[t37], r) + return !r.ifMode || r.ifMode === e ? r : null; + e === "math" ? r = yn[t37] : yi[t37] && (r = { definitionType: "symbol", type: "mord", codepoint: yi[t37] }); + } else if (e === "math") { + if (r = yn[t37], !r && t37.length === 1) { + let i = Es("math", t37.codePointAt(0)); + return i.startsWith("\\") ? g(p({}, ee(i, "math")), { command: i }) : null; + } + } else + yi[t37] ? r = { definitionType: "symbol", type: "mord", codepoint: yi[t37] } : e === "text" && (r = { definitionType: "symbol", type: "mord", codepoint: t37.codePointAt(0) }); + return r != null ? r : null; +} +function wo(t37, e) { + if (!t37.startsWith("\\")) + return null; + let r = t37.slice(1); + return e[r]; +} +function Es(t37, e) { + if (e === void 0) + return ""; + if (t37 === "math" && xo[e]) + return xo[e]; + if (t37 === "text") { + let r = Object.keys(yi).find((i) => yi[i] === e); + return r || String.fromCodePoint(e); + } + return String.fromCodePoint(e); +} +var Ie = [0, 0.68889, 0, 0, 0.72222]; +var Kr = [0, 0.68889, 0, 0, 0.66667]; +var Ts = [0, 0.68889, 0, 0, 0.77778]; +var ko = [0, 0.68889, 0, 0, 0.61111]; +var Rc = [0.16667, 0.68889, 0, 0, 0.77778]; +var bn = [0, 0.68889, 0, 0, 0.55556]; +var $ = [0, 0, 0, 0, 0.25]; +var Ic = [0, 0.825, 0, 0, 2.33334]; +var zc = [0, 0.9, 0, 0, 2.33334]; +var So = [0, 0.68889, 0, 0, 0.54028]; +var Ds = [-0.03598, 0.46402, 0, 0, 0.5]; +var Me = [-0.13313, 0.36687, 0, 0, 1]; +var Lo = [0.01354, 0.52239, 0, 0, 1]; +var Nc = [0.01354, 0.52239, 0, 0, 1.11111]; +var Fc = [0, 0.54986, 0, 0, 1]; +var Ao = [0, 0.69224, 0, 0, 0.5]; +var Ks = [0, 0.43056, 0, 0, 1]; +var Yt = [0.08198, 0.58198, 0, 0, 0.77778]; +var Co = [0.19444, 0.69224, 0, 0, 0.41667]; +var Eo = [0.1808, 0.675, 0, 0, 1]; +var $c = [0.19444, 0.69224, 0, 0, 0.83334]; +var Vc = [0.13667, 0.63667, 0, 0, 1]; +var qc = [-0.064, 0.437, 0, 0, 1.334]; +var Qt = [0.08167, 0.58167, 0, 0, 0.77778]; +var xn = [0, 0.69224, 0, 0, 0.72222]; +var Bs = [0, 0.69224, 0, 0, 0.66667]; +var To = [-0.13313, 0.36687, 0, 0, 0.77778]; +var Hc = [0.06062, 0.54986, 0, 0, 0.77778]; +var Do = [0, 0.69224, 0, 0, 0.77778]; +var vi = [0.25583, 0.75583, 0, 0, 0.77778]; +var xt = [0.25142, 0.75726, 0, 0, 0.77778]; +var _i = [0.20576, 0.70576, 0, 0, 0.77778]; +var je = [0.30274, 0.79383, 0, 0, 0.77778]; +var vn = [0.22958, 0.72958, 0, 0, 0.77778]; +var Wc = [0.1808, 0.675, 0, 0, 0.77778]; +var vt = [0.13667, 0.63667, 0, 0, 0.77778]; +var De = [0.13597, 0.63597, 0, 0, 0.77778]; +var er = [0.03517, 0.54986, 0, 0, 0.77778]; +var Mi = [0, 0.675, 0, 0, 0.77778]; +var Uc = [0.19444, 0.69224, 0, 0, 0.61111]; +var Jc = [0, 0.54986, 0, 0, 0.76042]; +var Gc = [0, 0.54986, 0, 0, 0.66667]; +var tr = [0.0391, 0.5391, 0, 0, 0.77778]; +var jc = [0.03517, 0.54986, 0, 0, 1.33334]; +var Xc = [0.38569, 0.88569, 0, 0, 0.77778]; +var Ko = [0.23222, 0.74111, 0, 0, 0.77778]; +var Zc = [0.19444, 0.69224, 0, 0, 0.77778]; +var Yc = [0, 0.37788, 0, 0, 0.5]; +var Bo = [0, 0.54986, 0, 0, 0.72222]; +var Qc = [0, 0.69224, 0, 0, 0.83334]; +var eu = [0.11111, 0.69224, 0, 0, 0.66667]; +var wi = [0.26167, 0.75726, 0, 0, 0.77778]; +var tu = [0.48256, 0.98256, 0, 0, 0.77778]; +var ru = [0.28481, 0.79383, 0, 0, 0.77778]; +var iu = [0.08167, 0.58167, 0, 0, 0.22222]; +var nu = [0.08167, 0.58167, 0, 0, 0.38889]; +var ou = [0, 0.43056, 0.04028, 0, 0.66667]; +var au = [0.41951, 0.91951, 0, 0, 0.77778]; +var su = [0.24982, 0.74947, 0, 0, 0.38865]; +var lu = [0.08319, 0.58283, 0, 0, 0.75623]; +var cu = [0, 0.10803, 0, 0, 0.27764]; +var Os = [0, 0.47534, 0, 0, 0.50181]; +var _n = [0.18906, 0.47534, 0, 0, 0.50181]; +var uu = [0, 0.69141, 0, 0, 0.50181]; +var du = [0.24982, 0.74947, 0, 0, 0.27764]; +var Ps = [0, 0.69141, 0, 0, 0.21471]; +var Oo = [0.25, 0.75, 0, 0, 0.44722]; +var ze = [0, 0.64444, 0, 0, 0.575]; +var ki = [0.08556, 0.58556, 0, 0, 0.89444]; +var Po = [0, 0.69444, 0, 0, 0.89444]; +var Ro = [0, 0.68611, 0, 0, 0.9]; +var Rs = [0, 0.68611, 0, 0, 0.86944]; +var rr = [0.25, 0.75, 0, 0, 0.575]; +var Io = [0.25, 0.75, 0, 0, 0.31944]; +var Br = [0, 0.69444, 0, 0, 0.63889]; +var Si = [0, 0.69444, 0, 0, 0.31944]; +var mu = [0, 0.44444, 0, 0, 0.63889]; +var pu = [0, 0.44444, 0, 0, 0.51111]; +var ir = [0, 0.69444, 0, 0, 0.575]; +var Xe = [0.13333, 0.63333, 0, 0, 0.89444]; +var hu = [0, 0.44444, 0, 0, 0.31944]; +var fu = [0, 0.69444, 0, 0, 0.86944]; +var gu = [0, 0.68611, 0, 0, 0.69166]; +var zo = [0, 0.68611, 0, 0, 0.83055]; +var Is = [0, 0.68611, 0, 0, 0.89444]; +var zs = [0, 0.69444, 0, 0, 0.60278]; +var yu = [0.19444, 0.69444, 0, 0, 0.51111]; +var bu = [0, 0.69444, 0, 0, 0.83055]; +var _t = [-0.10889, 0.39111, 0, 0, 1.14999]; +var xu = [0.19444, 0.69444, 0, 0, 0.575]; +var Mn = [0.19444, 0.69444, 0, 0, 1.14999]; +var vu = [0.19444, 0.69444, 0, 0, 0.70277]; +var _u = [0.05556, 0.75, 0, 0, 0.575]; +var Ns = [0, 0.68611, 0, 0, 0.95833]; +var Mu = [0.08556, 0.58556, 0, 0, 0.76666]; +var Fs = [-0.02639, 0.47361, 0, 0, 0.575]; +var wu = [0, 0.44444, 0, 0, 0.89444]; +var Or = [0, 0.55556, 0, 0, 0.76666]; +var ku = [-0.10889, 0.39111, 0, 0, 0.89444]; +var $s = [222e-5, 0.50222, 0, 0, 0.89444]; +var nr = [0.19667, 0.69667, 0, 0, 0.89444]; +var Su = [0.08556, 0.58556, 0, 0, 1.14999]; +var Vs = [0, 0.69444, 0, 0, 0.70277]; +var No = [-0.02778, 0.47222, 0, 0, 0.575]; +var Fo = [0.25, 0.75, 0, 0, 0.51111]; +var Lu = [-0.13889, 0.36111, 0, 0, 1.14999]; +var Au = [0.19444, 0.69444, 0, 0, 1.02222]; +var $o = [0.12963, 0.69444, 0, 0, 0.89444]; +var Cu = [0.19444, 0.69444, 0, 0, 0.44722]; +var or = [0, 0.64444, 0.13167, 0, 0.59111]; +var Eu = [0.19444, 0.64444, 0.13167, 0, 0.59111]; +var qs = [0, 0.68611, 0.17208, 0, 0.8961]; +var Tu = [0.19444, 0.44444, 0.105, 0, 0.53222]; +var Du = [0, 0.44444, 0.085, 0, 0.82666]; +var Ku = [0, 0.69444, 0.06709, 0, 0.59111]; +var Vo = [0, 0.69444, 0.12945, 0, 0.35555]; +var Bu = [0, 0.69444, 0, 0, 0.94888]; +var Hs = [0, 0.69444, 0.11472, 0, 0.59111]; +var Ou = [0, 0.68611, 0.10778, 0, 0.88555]; +var Pu = [0, 0.69444, 0.07939, 0, 0.62055]; +var qo = [0, 0.69444, 0.12417, 0, 0.30667]; +var ar = [0, 0.64444, 0.13556, 0, 0.51111]; +var Ru = [0.19444, 0.64444, 0.13556, 0, 0.51111]; +var Ho = [0, 0.68333, 0.16389, 0, 0.74333]; +var Iu = [0.19444, 0.43056, 0.08847, 0, 0.46]; +var zu = [0, 0.43056, 0.07514, 0, 0.71555]; +var Nu = [0, 0.69444, 0.06646, 0, 0.51111]; +var Fu = [0, 0.69444, 0, 0, 0.83129]; +var $u = [0, 0.69444, 0.1225, 0, 0.51111]; +var Vu = [0, 0.68333, 0.09403, 0, 0.76666]; +var qu = [0, 0.68333, 0.11111, 0, 0.76666]; +var Hu = [0, 0.69444, 0.06961, 0, 0.51444]; +var Nt = [0, 0.69444, 0, 0, 0.27778]; +var Li = [0.25, 0.75, 0, 0, 0.38889]; +var Ne = [0, 0.64444, 0, 0, 0.5]; +var Pr = [0, 0.69444, 0, 0, 0.77778]; +var Rr = [0, 0.68333, 0, 0, 0.75]; +var wn = [0, 0.68333, 0, 0, 0.77778]; +var Wu = [0, 0.68333, 0, 0, 0.68056]; +var kn = [0, 0.68333, 0, 0, 0.72222]; +var Ft = [0.25, 0.75, 0, 0, 0.5]; +var Wo = [0.25, 0.75, 0, 0, 0.27778]; +var pe = [0, 0.69444, 0, 0, 0.5]; +var Ai = [0, 0.69444, 0, 0, 0.55556]; +var Ws = [0, 0.43056, 0, 0, 0.44445]; +var Sn = [0, 0.43056, 0, 0, 0.5]; +var Uu = [0.19444, 0.43056, 0, 0, 0.55556]; +var Ju = [0, 0.43056, 0, 0, 0.55556]; +var Fe = [0.08333, 0.58333, 0, 0, 0.77778]; +var Gu = [0, 0.43056, 0, 0, 0.27778]; +var ju = [0, 0.66786, 0, 0, 0.27778]; +var Xu = [0, 0.69444, 0, 0, 0.75]; +var Zu = [0, 0.66786, 0, 0, 0.5]; +var Yu = [0, 0.68333, 0, 0, 0.625]; +var Us = [0.19444, 0.69444, 0, 0, 0.44445]; +var Ln = [0, 0.69444, 0, 0, 0.72222]; +var Qu = [0.19444, 0.69444, 0, 0, 0.5]; +var An = [0.19444, 0.69444, 0, 0, 1]; +var ed = [0.011, 0.511, 0, 0, 1.126]; +var Js = [0.19444, 0.69444, 0, 0, 0.61111]; +var Gs = [0.05556, 0.75, 0, 0, 0.5]; +var td = [0, 0.68333, 0, 0, 0.83334]; +var rd = [0.0391, 0.5391, 0, 0, 0.66667]; +var js = [-0.05555, 0.44445, 0, 0, 0.5]; +var id = [0, 0.43056, 0, 0, 0.77778]; +var Ir = [0, 0.55556, 0, 0, 0.66667]; +var Uo = [-0.03625, 0.46375, 0, 0, 0.77778]; +var nd = [-0.01688, 0.48312, 0, 0, 0.77778]; +var od = [0.0391, 0.5391, 0, 0, 1]; +var sr = [0, 0.69444, 0, 0, 0.61111]; +var Jo = [-0.03472, 0.46528, 0, 0, 0.5]; +var Go = [0.25, 0.75, 0, 0, 0.44445]; +var ad = [-0.14236, 0.35764, 0, 0, 1]; +var jo = [0.244, 0.744, 0, 0, 0.412]; +var sd = [0.19444, 0.69444, 0, 0, 0.88889]; +var Xo = [0.12963, 0.69444, 0, 0, 0.77778]; +var ld = [0.19444, 0.69444, 0, 0, 0.38889]; +var cd = [0.011, 0.511, 0, 0, 1.638]; +var ud = [0.19444, 0.69444, 0, 0, 0]; +var Zo = [0, 0.44444, 0, 0, 0.575]; +var Cn = [0.19444, 0.44444, 0, 0, 0.575]; +var dd = [0, 0.68611, 0, 0, 0.75555]; +var md = [0, 0.69444, 0, 0, 0.66759]; +var pd = [0, 0.68611, 0, 0, 0.80555]; +var hd = [0, 0.68611, 0.08229, 0, 0.98229]; +var fd = [0, 0.68611, 0, 0, 0.76666]; +var gd = [0, 0.44444, 0, 0, 0.58472]; +var yd = [0.19444, 0.44444, 0, 0, 0.6118]; +var En = [0.19444, 0.43056, 0, 0, 0.5]; +var bd = [0, 0.68333, 0.02778, 0.08334, 0.76278]; +var xd = [0, 0.68333, 0.08125, 0.05556, 0.83125]; +var vd = [0, 0.43056, 0, 0.05556, 0.48472]; +var _d = [0.19444, 0.43056, 0, 0.08334, 0.51702]; +var Md = [0.25, 0.75, 0, 0, 0.42778]; +var xe = [0, 0.69444, 0, 0, 0.55]; +var $t = [0, 0.69444, 0, 0, 0.73334]; +var lr = [0, 0.69444, 0, 0, 0.79445]; +var wd = [0, 0.69444, 0, 0, 0.51945]; +var Xs = [0, 0.69444, 0, 0, 0.70278]; +var kd = [0, 0.69444, 0, 0, 0.76389]; +var Sd = [0.25, 0.75, 0, 0, 0.34306]; +var Zs = [0, 0.69444, 0, 0, 0.56111]; +var Ld = [0, 0.69444, 0, 0, 0.25556]; +var Ad = [0.19444, 0.45833, 0, 0, 0.56111]; +var Cd = [0, 0.45833, 0, 0, 0.56111]; +var Yo = [0, 0.69444, 0, 0, 0.30556]; +var Ed = [0, 0.69444, 0, 0, 0.58056]; +var Td = [0, 0.69444, 0, 0, 0.67223]; +var Ys = [0, 0.69444, 0, 0, 0.85556]; +var Qs = [0, 0.69444, 0, 0, 0.55834]; +var Mt = [0, 0.65556, 0.11156, 0, 0.5]; +var el = [0, 0.69444, 0.08094, 0, 0.70834]; +var tl = [0.17014, 0, 0, 0, 0.44445]; +var Dd = [0, 0.69444, 0.0799, 0, 0.5]; +var Kd = [0, 0.69444, 0, 0, 0.73752]; +var Bd = [0, 0.69444, 0.09205, 0, 0.5]; +var Od = [0, 0.69444, 0.09031, 0, 0.77778]; +var rl = [0, 0.69444, 0.07816, 0, 0.27778]; +var Pd = [0, 0.69444, 316e-5, 0, 0.5]; +var Rd = [0.19444, 0.69444, 0, 0, 0.83334]; +var Id = [0.05556, 0.75, 0, 0, 0.83334]; +var zd = [0, 0.75, 0, 0, 0.5]; +var Nd = [0.125, 0.08333, 0, 0, 0.27778]; +var Fd = [0, 0.08333, 0, 0, 0.27778]; +var wt = [0, 0.65556, 0, 0, 0.5]; +var il = [0, 0.69444, 0, 0, 0.47222]; +var Vt = [0, 0.69444, 0, 0, 0.66667]; +var $d = [0, 0.69444, 0, 0, 0.59722]; +var nl = [0, 0.69444, 0, 0, 0.54167]; +var ol = [0, 0.69444, 0, 0, 0.70834]; +var Vd = [0.25, 0.75, 0, 0, 0.28889]; +var al = [0, 0.69444, 0, 0, 0.51667]; +var qd = [0, 0.44444, 0, 0, 0.44445]; +var Hd = [0.19444, 0.44444, 0, 0, 0.51667]; +var Wd = [0, 0.44444, 0, 0, 0.38333]; +var Ud = [0, 0.44444, 0, 0, 0.51667]; +var Jd = [0, 0.69444, 0, 0, 0.83334]; +var Gd = [0.35001, 0.85, 0, 0, 0.45834]; +var jd = [0.35001, 0.85, 0, 0, 0.57778]; +var Xd = [0.35001, 0.85, 0, 0, 0.41667]; +var Zd = [0.35001, 0.85, 0, 0, 0.58334]; +var Qo = [0, 0.72222, 0, 0, 0.55556]; +var Yd = [1e-5, 0.6, 0, 0, 0.66667]; +var Qd = [1e-5, 0.6, 0, 0, 0.77778]; +var e0 = [0.25001, 0.75, 0, 0, 0.94445]; +var t0 = [0.306, 0.805, 0.19445, 0, 0.47222]; +var r0 = [0.30612, 0.805, 0.19445, 0, 0.47222]; +var Ci = [0.25001, 0.75, 0, 0, 0.83334]; +var Ei = [0.35001, 0.85, 0, 0, 0.47222]; +var sl = [0.25001, 0.75, 0, 0, 1.11111]; +var i0 = [0.65002, 1.15, 0, 0, 0.59722]; +var n0 = [0.65002, 1.15, 0, 0, 0.81111]; +var o0 = [0.65002, 1.15, 0, 0, 0.47222]; +var a0 = [0.65002, 1.15, 0, 0, 0.66667]; +var ea = [0, 0.75, 0, 0, 1]; +var s0 = [0.55001, 1.05, 0, 0, 1.27778]; +var l0 = [0.862, 1.36, 0.44445, 0, 0.55556]; +var c0 = [0.86225, 1.36, 0.44445, 0, 0.55556]; +var Ti = [0.55001, 1.05, 0, 0, 1.11111]; +var ta = [0.65002, 1.15, 0, 0, 0.52778]; +var u0 = [0.65002, 1.15, 0, 0, 0.61111]; +var ll = [0.55001, 1.05, 0, 0, 1.51112]; +var d0 = [0.95003, 1.45, 0, 0, 0.73611]; +var m0 = [0.95003, 1.45, 0, 0, 1.04445]; +var p0 = [0.95003, 1.45, 0, 0, 0.52778]; +var ra = [0.95003, 1.45, 0, 0, 0.75]; +var ia = [0, 0.75, 0, 0, 1.44445]; +var na = [0.95003, 1.45, 0, 0, 0.58334]; +var h0 = [1.25003, 1.75, 0, 0, 0.79167]; +var f0 = [1.25003, 1.75, 0, 0, 1.27778]; +var g0 = [1.25003, 1.75, 0, 0, 0.58334]; +var oa = [1.25003, 1.75, 0, 0, 0.80556]; +var aa = [0, 0.825, 0, 0, 1.8889]; +var sa = [1.25003, 1.75, 0, 0, 0.63889]; +var la = [0.64502, 1.155, 0, 0, 0.875]; +var y0 = [1e-5, 0.6, 0, 0, 0.875]; +var cl = [-99e-5, 0.601, 0, 0, 0.66667]; +var ca = [0.64502, 1.155, 0, 0, 0.66667]; +var b0 = [1e-5, 0.9, 0, 0, 0.88889]; +var x0 = [0.65002, 1.15, 0, 0, 0.88889]; +var v0 = [0.90001, 0, 0, 0, 0.88889]; +var _0 = [-499e-5, 0.605, 0, 0, 1.05556]; +var ua = [0, 0.12, 0, 0, 0.45]; +var E = [0, 0.61111, 0, 0, 0.525]; +var Ze = [0.08333, 0.69444, 0, 0, 0.525]; +var M0 = [-0.08056, 0.53055, 0, 0, 0.525]; +var w0 = [-0.05556, 0.55556, 0, 0, 0.525]; +var Le = [0, 0.43056, 0, 0, 0.525]; +var Tn = [0.22222, 0.43056, 0, 0, 0.525]; +var k0 = [0, 0, 0, 0, 0.525]; +var S0 = { "AMS-Regular": { 32: $, 65: Ie, 66: Kr, 67: Ie, 68: Ie, 69: Kr, 70: ko, 71: Ts, 72: Ts, 73: [0, 0.68889, 0, 0, 0.38889], 74: [0.16667, 0.68889, 0, 0, 0.5], 75: Ts, 76: Kr, 77: [0, 0.68889, 0, 0, 0.94445], 78: Ie, 79: Rc, 80: ko, 81: Rc, 82: Ie, 83: bn, 84: Kr, 85: Ie, 86: Ie, 87: [0, 0.68889, 0, 0, 1], 88: Ie, 89: Ie, 90: Kr, 107: bn, 160: $, 165: [0, 0.675, 0.025, 0, 0.75], 174: [0.15559, 0.69224, 0, 0, 0.94666], 240: bn, 295: So, 710: Ic, 732: zc, 770: Ic, 771: zc, 989: Qt, 1008: ou, 8245: [0, 0.54986, 0, 0, 0.275], 8463: So, 8487: Ie, 8498: bn, 8502: Kr, 8503: [0, 0.68889, 0, 0, 0.44445], 8504: Kr, 8513: [0, 0.68889, 0, 0, 0.63889], 8592: Ds, 8594: Ds, 8602: Me, 8603: Me, 8606: Lo, 8608: Lo, 8610: Nc, 8611: Nc, 8619: Fc, 8620: Fc, 8621: [-0.13313, 0.37788, 0, 0, 1.38889], 8622: Me, 8624: Ao, 8625: Ao, 8630: Ks, 8631: Ks, 8634: Yt, 8635: Yt, 8638: Co, 8639: Co, 8642: Co, 8643: Co, 8644: Eo, 8646: Eo, 8647: Eo, 8648: $c, 8649: Eo, 8650: $c, 8651: Lo, 8652: Lo, 8653: Me, 8654: Me, 8655: Me, 8666: Vc, 8667: Vc, 8669: [-0.13313, 0.37788, 0, 0, 1], 8672: qc, 8674: qc, 8705: [0, 0.825, 0, 0, 0.5], 8708: bn, 8709: Qt, 8717: [0, 0.43056, 0, 0, 0.42917], 8722: Ds, 8724: [0.08198, 0.69224, 0, 0, 0.77778], 8726: Qt, 8733: Do, 8736: xn, 8737: xn, 8738: [0.03517, 0.52239, 0, 0, 0.72222], 8739: iu, 8740: [0.25142, 0.74111, 0, 0, 0.27778], 8741: nu, 8742: [0.25142, 0.74111, 0, 0, 0.5], 8756: Bs, 8757: Bs, 8764: To, 8765: [-0.13313, 0.37788, 0, 0, 0.77778], 8769: To, 8770: Uo, 8774: je, 8776: nd, 8778: Qt, 8782: Hc, 8783: Hc, 8785: Yt, 8786: Yt, 8787: Yt, 8790: Do, 8791: vn, 8796: [0.08198, 0.91667, 0, 0, 0.77778], 8806: vi, 8807: vi, 8808: xt, 8809: xt, 8812: [0.25583, 0.75583, 0, 0, 0.5], 8814: _i, 8815: _i, 8816: je, 8817: je, 8818: vn, 8819: vn, 8822: Wc, 8823: Wc, 8828: vt, 8829: vt, 8830: vn, 8831: vn, 8832: _i, 8833: _i, 8840: je, 8841: je, 8842: De, 8843: De, 8847: er, 8848: er, 8858: Yt, 8859: Yt, 8861: Yt, 8862: Mi, 8863: Mi, 8864: Mi, 8865: Mi, 8872: [0, 0.69224, 0, 0, 0.61111], 8873: xn, 8874: [0, 0.69224, 0, 0, 0.88889], 8876: ko, 8877: ko, 8878: Ie, 8879: Ie, 8882: er, 8883: er, 8884: vt, 8885: vt, 8888: [0, 0.54986, 0, 0, 1.11111], 8890: Uu, 8891: Uc, 8892: Uc, 8901: [0, 0.54986, 0, 0, 0.27778], 8903: Qt, 8905: Qt, 8906: Qt, 8907: Do, 8908: Do, 8909: [-0.03598, 0.46402, 0, 0, 0.77778], 8910: Jc, 8911: Jc, 8912: er, 8913: er, 8914: Gc, 8915: Gc, 8916: Bs, 8918: tr, 8919: tr, 8920: jc, 8921: jc, 8922: Xc, 8923: Xc, 8926: vt, 8927: vt, 8928: je, 8929: je, 8934: Ko, 8935: Ko, 8936: Ko, 8937: Ko, 8938: _i, 8939: _i, 8940: je, 8941: je, 8994: Zc, 8995: Zc, 9416: [0.15559, 0.69224, 0, 0, 0.90222], 9484: Ao, 9488: Ao, 9492: Yc, 9496: Yc, 9585: [0.19444, 0.68889, 0, 0, 0.88889], 9586: [0.19444, 0.74111, 0, 0, 0.88889], 9632: Mi, 9633: Mi, 9650: Bo, 9651: Bo, 9654: er, 9660: Bo, 9661: Bo, 9664: er, 9674: eu, 9733: [0.19444, 0.69224, 0, 0, 0.94445], 10003: Qc, 10016: Qc, 10731: eu, 10846: [0.19444, 0.75583, 0, 0, 0.61111], 10877: vt, 10878: vt, 10885: vi, 10886: vi, 10887: De, 10888: De, 10889: wi, 10890: wi, 10891: tu, 10892: tu, 10901: vt, 10902: vt, 10933: xt, 10934: xt, 10935: wi, 10936: wi, 10937: wi, 10938: wi, 10949: vi, 10950: vi, 10955: ru, 10956: ru, 57350: iu, 57351: nu, 57352: Qt, 57353: ou, 57356: xt, 57357: xt, 57358: au, 57359: je, 57360: je, 57361: au, 57366: xt, 57367: xt, 57368: xt, 57369: xt, 57370: De, 57371: De }, "Caligraphic-Regular": { 32: $, 65: [0, 0.68333, 0, 0.19445, 0.79847], 66: [0, 0.68333, 0.03041, 0.13889, 0.65681], 67: [0, 0.68333, 0.05834, 0.13889, 0.52653], 68: [0, 0.68333, 0.02778, 0.08334, 0.77139], 69: [0, 0.68333, 0.08944, 0.11111, 0.52778], 70: [0, 0.68333, 0.09931, 0.11111, 0.71875], 71: [0.09722, 0.68333, 0.0593, 0.11111, 0.59487], 72: [0, 0.68333, 965e-5, 0.11111, 0.84452], 73: [0, 0.68333, 0.07382, 0, 0.54452], 74: [0.09722, 0.68333, 0.18472, 0.16667, 0.67778], 75: [0, 0.68333, 0.01445, 0.05556, 0.76195], 76: [0, 0.68333, 0, 0.13889, 0.68972], 77: [0, 0.68333, 0, 0.13889, 1.2009], 78: [0, 0.68333, 0.14736, 0.08334, 0.82049], 79: [0, 0.68333, 0.02778, 0.11111, 0.79611], 80: [0, 0.68333, 0.08222, 0.08334, 0.69556], 81: [0.09722, 0.68333, 0, 0.11111, 0.81667], 82: [0, 0.68333, 0, 0.08334, 0.8475], 83: [0, 0.68333, 0.075, 0.13889, 0.60556], 84: [0, 0.68333, 0.25417, 0, 0.54464], 85: [0, 0.68333, 0.09931, 0.08334, 0.62583], 86: [0, 0.68333, 0.08222, 0, 0.61278], 87: [0, 0.68333, 0.08222, 0.08334, 0.98778], 88: [0, 0.68333, 0.14643, 0.13889, 0.7133], 89: [0.09722, 0.68333, 0.08222, 0.08334, 0.66834], 90: [0, 0.68333, 0.07944, 0.13889, 0.72473], 160: $ }, "Fraktur-Regular": { 32: $, 33: [0, 0.69141, 0, 0, 0.29574], 34: Ps, 38: [0, 0.69141, 0, 0, 0.73786], 39: [0, 0.69141, 0, 0, 0.21201], 40: su, 41: su, 42: [0, 0.62119, 0, 0, 0.27764], 43: lu, 44: cu, 45: lu, 46: cu, 47: [0.24982, 0.74947, 0, 0, 0.50181], 48: Os, 49: Os, 50: Os, 51: _n, 52: _n, 53: _n, 54: uu, 55: _n, 56: uu, 57: _n, 58: [0, 0.47534, 0, 0, 0.21606], 59: [0.12604, 0.47534, 0, 0, 0.21606], 61: [-0.13099, 0.36866, 0, 0, 0.75623], 63: [0, 0.69141, 0, 0, 0.36245], 65: [0, 0.69141, 0, 0, 0.7176], 66: [0, 0.69141, 0, 0, 0.88397], 67: [0, 0.69141, 0, 0, 0.61254], 68: [0, 0.69141, 0, 0, 0.83158], 69: [0, 0.69141, 0, 0, 0.66278], 70: [0.12604, 0.69141, 0, 0, 0.61119], 71: [0, 0.69141, 0, 0, 0.78539], 72: [0.06302, 0.69141, 0, 0, 0.7203], 73: [0, 0.69141, 0, 0, 0.55448], 74: [0.12604, 0.69141, 0, 0, 0.55231], 75: [0, 0.69141, 0, 0, 0.66845], 76: [0, 0.69141, 0, 0, 0.66602], 77: [0, 0.69141, 0, 0, 1.04953], 78: [0, 0.69141, 0, 0, 0.83212], 79: [0, 0.69141, 0, 0, 0.82699], 80: [0.18906, 0.69141, 0, 0, 0.82753], 81: [0.03781, 0.69141, 0, 0, 0.82699], 82: [0, 0.69141, 0, 0, 0.82807], 83: [0, 0.69141, 0, 0, 0.82861], 84: [0, 0.69141, 0, 0, 0.66899], 85: [0, 0.69141, 0, 0, 0.64576], 86: [0, 0.69141, 0, 0, 0.83131], 87: [0, 0.69141, 0, 0, 1.04602], 88: [0, 0.69141, 0, 0, 0.71922], 89: [0.18906, 0.69141, 0, 0, 0.83293], 90: [0.12604, 0.69141, 0, 0, 0.60201], 91: du, 93: du, 94: [0, 0.69141, 0, 0, 0.49965], 97: [0, 0.47534, 0, 0, 0.50046], 98: [0, 0.69141, 0, 0, 0.51315], 99: [0, 0.47534, 0, 0, 0.38946], 100: [0, 0.62119, 0, 0, 0.49857], 101: [0, 0.47534, 0, 0, 0.40053], 102: [0.18906, 0.69141, 0, 0, 0.32626], 103: [0.18906, 0.47534, 0, 0, 0.5037], 104: [0.18906, 0.69141, 0, 0, 0.52126], 105: [0, 0.69141, 0, 0, 0.27899], 106: [0, 0.69141, 0, 0, 0.28088], 107: [0, 0.69141, 0, 0, 0.38946], 108: [0, 0.69141, 0, 0, 0.27953], 109: [0, 0.47534, 0, 0, 0.76676], 110: [0, 0.47534, 0, 0, 0.52666], 111: [0, 0.47534, 0, 0, 0.48885], 112: [0.18906, 0.52396, 0, 0, 0.50046], 113: [0.18906, 0.47534, 0, 0, 0.48912], 114: [0, 0.47534, 0, 0, 0.38919], 115: [0, 0.47534, 0, 0, 0.44266], 116: [0, 0.62119, 0, 0, 0.33301], 117: [0, 0.47534, 0, 0, 0.5172], 118: [0, 0.52396, 0, 0, 0.5118], 119: [0, 0.52396, 0, 0, 0.77351], 120: [0.18906, 0.47534, 0, 0, 0.38865], 121: [0.18906, 0.47534, 0, 0, 0.49884], 122: [0.18906, 0.47534, 0, 0, 0.39054], 160: $, 8216: Ps, 8217: Ps, 58112: [0, 0.62119, 0, 0, 0.49749], 58113: [0, 0.62119, 0, 0, 0.4983], 58114: [0.18906, 0.69141, 0, 0, 0.33328], 58115: [0.18906, 0.69141, 0, 0, 0.32923], 58116: [0.18906, 0.47534, 0, 0, 0.50343], 58117: [0, 0.69141, 0, 0, 0.33301], 58118: [0, 0.62119, 0, 0, 0.33409], 58119: [0, 0.47534, 0, 0, 0.50073] }, "Main-Bold": { 32: $, 33: [0, 0.69444, 0, 0, 0.35], 34: zs, 35: [0.19444, 0.69444, 0, 0, 0.95833], 36: _u, 37: [0.05556, 0.75, 0, 0, 0.95833], 38: Po, 39: Si, 40: Oo, 41: Oo, 42: [0, 0.75, 0, 0, 0.575], 43: Xe, 44: [0.19444, 0.15556, 0, 0, 0.31944], 45: Wd, 46: [0, 0.15556, 0, 0, 0.31944], 47: rr, 48: ze, 49: ze, 50: ze, 51: ze, 52: ze, 53: ze, 54: ze, 55: ze, 56: ze, 57: ze, 58: hu, 59: [0.19444, 0.44444, 0, 0, 0.31944], 60: ki, 61: ku, 62: ki, 63: [0, 0.69444, 0, 0, 0.54305], 64: Po, 65: Rs, 66: [0, 0.68611, 0, 0, 0.81805], 67: zo, 68: [0, 0.68611, 0, 0, 0.88194], 69: dd, 70: [0, 0.68611, 0, 0, 0.72361], 71: [0, 0.68611, 0, 0, 0.90416], 72: Ro, 73: [0, 0.68611, 0, 0, 0.43611], 74: [0, 0.68611, 0, 0, 0.59444], 75: [0, 0.68611, 0, 0, 0.90138], 76: gu, 77: [0, 0.68611, 0, 0, 1.09166], 78: Ro, 79: [0, 0.68611, 0, 0, 0.86388], 80: [0, 0.68611, 0, 0, 0.78611], 81: [0.19444, 0.68611, 0, 0, 0.86388], 82: [0, 0.68611, 0, 0, 0.8625], 83: [0, 0.68611, 0, 0, 0.63889], 84: [0, 0.68611, 0, 0, 0.8], 85: [0, 0.68611, 0, 0, 0.88472], 86: [0, 0.68611, 0.01597, 0, 0.86944], 87: [0, 0.68611, 0.01597, 0, 1.18888], 88: Rs, 89: [0, 0.68611, 0.02875, 0, 0.86944], 90: [0, 0.68611, 0, 0, 0.70277], 91: Io, 92: rr, 93: Io, 94: ir, 95: [0.31, 0.13444, 0.03194, 0, 0.575], 97: [0, 0.44444, 0, 0, 0.55902], 98: Br, 99: pu, 100: Br, 101: [0, 0.44444, 0, 0, 0.52708], 102: [0, 0.69444, 0.10903, 0, 0.35139], 103: [0.19444, 0.44444, 0.01597, 0, 0.575], 104: Br, 105: Si, 106: [0.19444, 0.69444, 0, 0, 0.35139], 107: [0, 0.69444, 0, 0, 0.60694], 108: Si, 109: [0, 0.44444, 0, 0, 0.95833], 110: mu, 111: Zo, 112: [0.19444, 0.44444, 0, 0, 0.63889], 113: [0.19444, 0.44444, 0, 0, 0.60694], 114: [0, 0.44444, 0, 0, 0.47361], 115: [0, 0.44444, 0, 0, 0.45361], 116: [0, 0.63492, 0, 0, 0.44722], 117: mu, 118: [0, 0.44444, 0.01597, 0, 0.60694], 119: [0, 0.44444, 0.01597, 0, 0.83055], 120: [0, 0.44444, 0, 0, 0.60694], 121: [0.19444, 0.44444, 0.01597, 0, 0.60694], 122: pu, 123: rr, 124: Io, 125: rr, 126: [0.35, 0.34444, 0, 0, 0.575], 160: $, 163: [0, 0.69444, 0, 0, 0.86853], 168: ir, 172: [0, 0.44444, 0, 0, 0.76666], 176: fu, 177: Xe, 184: [0.17014, 0, 0, 0, 0.51111], 198: [0, 0.68611, 0, 0, 1.04166], 215: Xe, 216: [0.04861, 0.73472, 0, 0, 0.89444], 223: $d, 230: [0, 0.44444, 0, 0, 0.83055], 247: Xe, 248: [0.09722, 0.54167, 0, 0, 0.575], 305: hu, 338: [0, 0.68611, 0, 0, 1.16944], 339: wu, 567: [0.19444, 0.44444, 0, 0, 0.35139], 710: ir, 711: [0, 0.63194, 0, 0, 0.575], 713: [0, 0.59611, 0, 0, 0.575], 714: ir, 715: ir, 728: ir, 729: Si, 730: fu, 732: ir, 733: ir, 915: gu, 916: Ns, 920: Is, 923: pd, 926: fd, 928: Ro, 931: zo, 933: Is, 934: zo, 936: Is, 937: zo, 8211: [0, 0.44444, 0.03194, 0, 0.575], 8212: [0, 0.44444, 0.03194, 0, 1.14999], 8216: Si, 8217: Si, 8220: zs, 8221: zs, 8224: yu, 8225: yu, 8242: [0, 0.55556, 0, 0, 0.34444], 8407: [0, 0.72444, 0.15486, 0, 0.575], 8463: md, 8465: bu, 8467: [0, 0.69444, 0, 0, 0.47361], 8472: [0.19444, 0.44444, 0, 0, 0.74027], 8476: bu, 8501: Vs, 8592: _t, 8593: xu, 8594: _t, 8595: xu, 8596: _t, 8597: rr, 8598: Mn, 8599: Mn, 8600: Mn, 8601: Mn, 8636: _t, 8637: _t, 8640: _t, 8641: _t, 8656: _t, 8657: vu, 8658: _t, 8659: vu, 8660: _t, 8661: [0.25, 0.75, 0, 0, 0.70277], 8704: Br, 8706: [0, 0.69444, 0.06389, 0, 0.62847], 8707: Br, 8709: _u, 8711: Ns, 8712: Mu, 8715: Mu, 8722: Xe, 8723: Xe, 8725: rr, 8726: rr, 8727: No, 8728: Fs, 8729: Fs, 8730: [0.18, 0.82, 0, 0, 0.95833], 8733: wu, 8734: [0, 0.44444, 0, 0, 1.14999], 8736: xn, 8739: Io, 8741: rr, 8743: Or, 8744: Or, 8745: Or, 8746: Or, 8747: [0.19444, 0.69444, 0.12778, 0, 0.56875], 8764: ku, 8768: [0.19444, 0.69444, 0, 0, 0.31944], 8771: $s, 8776: [0.02444, 0.52444, 0, 0, 0.89444], 8781: $s, 8801: $s, 8804: nr, 8805: nr, 8810: Su, 8811: Su, 8826: ki, 8827: ki, 8834: ki, 8835: ki, 8838: nr, 8839: nr, 8846: Or, 8849: nr, 8850: nr, 8851: Or, 8852: Or, 8853: Xe, 8854: Xe, 8855: Xe, 8856: Xe, 8857: Xe, 8866: Vs, 8867: Vs, 8868: Po, 8869: Po, 8900: Fs, 8901: [-0.02639, 0.47361, 0, 0, 0.31944], 8902: No, 8968: Fo, 8969: Fo, 8970: Fo, 8971: Fo, 8994: Lu, 8995: Lu, 9651: Au, 9657: No, 9661: Au, 9667: No, 9711: Mn, 9824: $o, 9825: $o, 9826: $o, 9827: $o, 9837: [0, 0.75, 0, 0, 0.44722], 9838: Cu, 9839: Cu, 10216: Oo, 10217: Oo, 10815: Ro, 10927: nr, 10928: nr, 57376: ud }, "Main-BoldItalic": { 32: $, 33: [0, 0.69444, 0.11417, 0, 0.38611], 34: Pu, 35: [0.19444, 0.69444, 0.06833, 0, 0.94444], 37: [0.05556, 0.75, 0.12861, 0, 0.94444], 38: [0, 0.69444, 0.08528, 0, 0.88555], 39: Vo, 40: [0.25, 0.75, 0.15806, 0, 0.47333], 41: [0.25, 0.75, 0.03306, 0, 0.47333], 42: [0, 0.75, 0.14333, 0, 0.59111], 43: [0.10333, 0.60333, 0.03306, 0, 0.88555], 44: [0.19444, 0.14722, 0, 0, 0.35555], 45: [0, 0.44444, 0.02611, 0, 0.41444], 46: [0, 0.14722, 0, 0, 0.35555], 47: [0.25, 0.75, 0.15806, 0, 0.59111], 48: or, 49: or, 50: or, 51: or, 52: Eu, 53: or, 54: or, 55: Eu, 56: or, 57: or, 58: [0, 0.44444, 0.06695, 0, 0.35555], 59: [0.19444, 0.44444, 0.06695, 0, 0.35555], 61: [-0.10889, 0.39111, 0.06833, 0, 0.88555], 63: Hs, 64: [0, 0.69444, 0.09208, 0, 0.88555], 65: [0, 0.68611, 0, 0, 0.86555], 66: [0, 0.68611, 0.0992, 0, 0.81666], 67: [0, 0.68611, 0.14208, 0, 0.82666], 68: [0, 0.68611, 0.09062, 0, 0.87555], 69: [0, 0.68611, 0.11431, 0, 0.75666], 70: [0, 0.68611, 0.12903, 0, 0.72722], 71: [0, 0.68611, 0.07347, 0, 0.89527], 72: qs, 73: [0, 0.68611, 0.15681, 0, 0.47166], 74: [0, 0.68611, 0.145, 0, 0.61055], 75: [0, 0.68611, 0.14208, 0, 0.89499], 76: [0, 0.68611, 0, 0, 0.69777], 77: [0, 0.68611, 0.17208, 0, 1.07277], 78: qs, 79: [0, 0.68611, 0.09062, 0, 0.85499], 80: [0, 0.68611, 0.0992, 0, 0.78721], 81: [0.19444, 0.68611, 0.09062, 0, 0.85499], 82: [0, 0.68611, 0.02559, 0, 0.85944], 83: [0, 0.68611, 0.11264, 0, 0.64999], 84: [0, 0.68611, 0.12903, 0, 0.7961], 85: [0, 0.68611, 0.17208, 0, 0.88083], 86: [0, 0.68611, 0.18625, 0, 0.86555], 87: [0, 0.68611, 0.18625, 0, 1.15999], 88: [0, 0.68611, 0.15681, 0, 0.86555], 89: [0, 0.68611, 0.19803, 0, 0.86555], 90: [0, 0.68611, 0.14208, 0, 0.70888], 91: [0.25, 0.75, 0.1875, 0, 0.35611], 93: [0.25, 0.75, 0.09972, 0, 0.35611], 94: Ku, 95: [0.31, 0.13444, 0.09811, 0, 0.59111], 97: [0, 0.44444, 0.09426, 0, 0.59111], 98: [0, 0.69444, 0.07861, 0, 0.53222], 99: [0, 0.44444, 0.05222, 0, 0.53222], 100: [0, 0.69444, 0.10861, 0, 0.59111], 101: [0, 0.44444, 0.085, 0, 0.53222], 102: [0.19444, 0.69444, 0.21778, 0, 0.4], 103: Tu, 104: [0, 0.69444, 0.09426, 0, 0.59111], 105: [0, 0.69326, 0.11387, 0, 0.35555], 106: [0.19444, 0.69326, 0.1672, 0, 0.35555], 107: [0, 0.69444, 0.11111, 0, 0.53222], 108: [0, 0.69444, 0.10861, 0, 0.29666], 109: [0, 0.44444, 0.09426, 0, 0.94444], 110: [0, 0.44444, 0.09426, 0, 0.64999], 111: [0, 0.44444, 0.07861, 0, 0.59111], 112: [0.19444, 0.44444, 0.07861, 0, 0.59111], 113: Tu, 114: [0, 0.44444, 0.11111, 0, 0.50167], 115: [0, 0.44444, 0.08167, 0, 0.48694], 116: [0, 0.63492, 0.09639, 0, 0.385], 117: [0, 0.44444, 0.09426, 0, 0.62055], 118: [0, 0.44444, 0.11111, 0, 0.53222], 119: [0, 0.44444, 0.11111, 0, 0.76777], 120: [0, 0.44444, 0.12583, 0, 0.56055], 121: [0.19444, 0.44444, 0.105, 0, 0.56166], 122: [0, 0.44444, 0.13889, 0, 0.49055], 126: [0.35, 0.34444, 0.11472, 0, 0.59111], 160: $, 168: [0, 0.69444, 0.11473, 0, 0.59111], 176: Bu, 184: [0.17014, 0, 0, 0, 0.53222], 198: [0, 0.68611, 0.11431, 0, 1.02277], 216: [0.04861, 0.73472, 0.09062, 0, 0.88555], 223: [0.19444, 0.69444, 0.09736, 0, 0.665], 230: Du, 248: [0.09722, 0.54167, 0.09458, 0, 0.59111], 305: [0, 0.44444, 0.09426, 0, 0.35555], 338: [0, 0.68611, 0.11431, 0, 1.14054], 339: Du, 567: [0.19444, 0.44444, 0.04611, 0, 0.385], 710: Ku, 711: [0, 0.63194, 0.08271, 0, 0.59111], 713: [0, 0.59444, 0.10444, 0, 0.59111], 714: [0, 0.69444, 0.08528, 0, 0.59111], 715: [0, 0.69444, 0, 0, 0.59111], 728: [0, 0.69444, 0.10333, 0, 0.59111], 729: Vo, 730: Bu, 732: Hs, 733: Hs, 915: [0, 0.68611, 0.12903, 0, 0.69777], 916: [0, 0.68611, 0, 0, 0.94444], 920: [0, 0.68611, 0.09062, 0, 0.88555], 923: [0, 0.68611, 0, 0, 0.80666], 926: [0, 0.68611, 0.15092, 0, 0.76777], 928: qs, 931: [0, 0.68611, 0.11431, 0, 0.82666], 933: Ou, 934: [0, 0.68611, 0.05632, 0, 0.82666], 936: Ou, 937: [0, 0.68611, 0.0992, 0, 0.82666], 8211: [0, 0.44444, 0.09811, 0, 0.59111], 8212: [0, 0.44444, 0.09811, 0, 1.18221], 8216: Vo, 8217: Vo, 8220: [0, 0.69444, 0.16772, 0, 0.62055], 8221: Pu }, "Main-Italic": { 32: $, 33: qo, 34: Hu, 35: [0.19444, 0.69444, 0.06616, 0, 0.81777], 37: [0.05556, 0.75, 0.13639, 0, 0.81777], 38: [0, 0.69444, 0.09694, 0, 0.76666], 39: qo, 40: [0.25, 0.75, 0.16194, 0, 0.40889], 41: [0.25, 0.75, 0.03694, 0, 0.40889], 42: [0, 0.75, 0.14917, 0, 0.51111], 43: [0.05667, 0.56167, 0.03694, 0, 0.76666], 44: [0.19444, 0.10556, 0, 0, 0.30667], 45: [0, 0.43056, 0.02826, 0, 0.35778], 46: [0, 0.10556, 0, 0, 0.30667], 47: [0.25, 0.75, 0.16194, 0, 0.51111], 48: ar, 49: ar, 50: ar, 51: ar, 52: Ru, 53: ar, 54: ar, 55: Ru, 56: ar, 57: ar, 58: [0, 0.43056, 0.0582, 0, 0.30667], 59: [0.19444, 0.43056, 0.0582, 0, 0.30667], 61: [-0.13313, 0.36687, 0.06616, 0, 0.76666], 63: $u, 64: [0, 0.69444, 0.09597, 0, 0.76666], 65: [0, 0.68333, 0, 0, 0.74333], 66: [0, 0.68333, 0.10257, 0, 0.70389], 67: [0, 0.68333, 0.14528, 0, 0.71555], 68: [0, 0.68333, 0.09403, 0, 0.755], 69: [0, 0.68333, 0.12028, 0, 0.67833], 70: [0, 0.68333, 0.13305, 0, 0.65277], 71: [0, 0.68333, 0.08722, 0, 0.77361], 72: Ho, 73: [0, 0.68333, 0.15806, 0, 0.38555], 74: [0, 0.68333, 0.14028, 0, 0.525], 75: [0, 0.68333, 0.14528, 0, 0.76888], 76: [0, 0.68333, 0, 0, 0.62722], 77: [0, 0.68333, 0.16389, 0, 0.89666], 78: Ho, 79: Vu, 80: [0, 0.68333, 0.10257, 0, 0.67833], 81: [0.19444, 0.68333, 0.09403, 0, 0.76666], 82: [0, 0.68333, 0.03868, 0, 0.72944], 83: [0, 0.68333, 0.11972, 0, 0.56222], 84: [0, 0.68333, 0.13305, 0, 0.71555], 85: Ho, 86: [0, 0.68333, 0.18361, 0, 0.74333], 87: [0, 0.68333, 0.18361, 0, 0.99888], 88: [0, 0.68333, 0.15806, 0, 0.74333], 89: [0, 0.68333, 0.19383, 0, 0.74333], 90: [0, 0.68333, 0.14528, 0, 0.61333], 91: [0.25, 0.75, 0.1875, 0, 0.30667], 93: [0.25, 0.75, 0.10528, 0, 0.30667], 94: Nu, 95: [0.31, 0.12056, 0.09208, 0, 0.51111], 97: [0, 0.43056, 0.07671, 0, 0.51111], 98: [0, 0.69444, 0.06312, 0, 0.46], 99: [0, 0.43056, 0.05653, 0, 0.46], 100: [0, 0.69444, 0.10333, 0, 0.51111], 101: [0, 0.43056, 0.07514, 0, 0.46], 102: [0.19444, 0.69444, 0.21194, 0, 0.30667], 103: Iu, 104: [0, 0.69444, 0.07671, 0, 0.51111], 105: [0, 0.65536, 0.1019, 0, 0.30667], 106: [0.19444, 0.65536, 0.14467, 0, 0.30667], 107: [0, 0.69444, 0.10764, 0, 0.46], 108: [0, 0.69444, 0.10333, 0, 0.25555], 109: [0, 0.43056, 0.07671, 0, 0.81777], 110: [0, 0.43056, 0.07671, 0, 0.56222], 111: [0, 0.43056, 0.06312, 0, 0.51111], 112: [0.19444, 0.43056, 0.06312, 0, 0.51111], 113: Iu, 114: [0, 0.43056, 0.10764, 0, 0.42166], 115: [0, 0.43056, 0.08208, 0, 0.40889], 116: [0, 0.61508, 0.09486, 0, 0.33222], 117: [0, 0.43056, 0.07671, 0, 0.53666], 118: [0, 0.43056, 0.10764, 0, 0.46], 119: [0, 0.43056, 0.10764, 0, 0.66444], 120: [0, 0.43056, 0.12042, 0, 0.46389], 121: [0.19444, 0.43056, 0.08847, 0, 0.48555], 122: [0, 0.43056, 0.12292, 0, 0.40889], 126: [0.35, 0.31786, 0.11585, 0, 0.51111], 160: $, 168: [0, 0.66786, 0.10474, 0, 0.51111], 176: Fu, 184: [0.17014, 0, 0, 0, 0.46], 198: [0, 0.68333, 0.12028, 0, 0.88277], 216: [0.04861, 0.73194, 0.09403, 0, 0.76666], 223: [0.19444, 0.69444, 0.10514, 0, 0.53666], 230: zu, 248: [0.09722, 0.52778, 0.09194, 0, 0.51111], 338: [0, 0.68333, 0.12028, 0, 0.98499], 339: zu, 710: Nu, 711: [0, 0.62847, 0.08295, 0, 0.51111], 713: [0, 0.56167, 0.10333, 0, 0.51111], 714: [0, 0.69444, 0.09694, 0, 0.51111], 715: [0, 0.69444, 0, 0, 0.51111], 728: [0, 0.69444, 0.10806, 0, 0.51111], 729: [0, 0.66786, 0.11752, 0, 0.30667], 730: Fu, 732: [0, 0.66786, 0.11585, 0, 0.51111], 733: $u, 915: [0, 0.68333, 0.13305, 0, 0.62722], 916: [0, 0.68333, 0, 0, 0.81777], 920: Vu, 923: [0, 0.68333, 0, 0, 0.69222], 926: [0, 0.68333, 0.15294, 0, 0.66444], 928: Ho, 931: [0, 0.68333, 0.12028, 0, 0.71555], 933: qu, 934: [0, 0.68333, 0.05986, 0, 0.71555], 936: qu, 937: [0, 0.68333, 0.10257, 0, 0.71555], 8211: [0, 0.43056, 0.09208, 0, 0.51111], 8212: [0, 0.43056, 0.09208, 0, 1.02222], 8216: qo, 8217: qo, 8220: [0, 0.69444, 0.1685, 0, 0.51444], 8221: Hu, 8463: So }, "Main-Regular": { 32: $, 33: Nt, 34: pe, 35: Rd, 36: Gs, 37: Id, 38: Pr, 39: Nt, 40: Li, 41: Li, 42: zd, 43: Fe, 44: [0.19444, 0.10556, 0, 0, 0.27778], 45: [0, 0.43056, 0, 0, 0.33333], 46: [0, 0.10556, 0, 0, 0.27778], 47: Ft, 48: Ne, 49: Ne, 50: Ne, 51: Ne, 52: Ne, 53: Ne, 54: Ne, 55: Ne, 56: Ne, 57: Ne, 58: Gu, 59: [0.19444, 0.43056, 0, 0, 0.27778], 60: tr, 61: To, 62: tr, 63: il, 64: Pr, 65: Rr, 66: [0, 0.68333, 0, 0, 0.70834], 67: kn, 68: [0, 0.68333, 0, 0, 0.76389], 69: Wu, 70: [0, 0.68333, 0, 0, 0.65278], 71: [0, 0.68333, 0, 0, 0.78472], 72: Rr, 73: [0, 0.68333, 0, 0, 0.36111], 74: [0, 0.68333, 0, 0, 0.51389], 75: wn, 76: Yu, 77: [0, 0.68333, 0, 0, 0.91667], 78: Rr, 79: wn, 80: Wu, 81: [0.19444, 0.68333, 0, 0, 0.77778], 82: [0, 0.68333, 0, 0, 0.73611], 83: [0, 0.68333, 0, 0, 0.55556], 84: kn, 85: Rr, 86: [0, 0.68333, 0.01389, 0, 0.75], 87: [0, 0.68333, 0.01389, 0, 1.02778], 88: Rr, 89: [0, 0.68333, 0.025, 0, 0.75], 90: [0, 0.68333, 0, 0, 0.61111], 91: Wo, 92: Ft, 93: Wo, 94: pe, 95: [0.31, 0.12056, 0.02778, 0, 0.5], 97: Sn, 98: Ai, 99: Ws, 100: Ai, 101: Ws, 102: [0, 0.69444, 0.07778, 0, 0.30556], 103: [0.19444, 0.43056, 0.01389, 0, 0.5], 104: Ai, 105: ju, 106: [0.19444, 0.66786, 0, 0, 0.30556], 107: [0, 0.69444, 0, 0, 0.52778], 108: Nt, 109: [0, 0.43056, 0, 0, 0.83334], 110: Ju, 111: Sn, 112: Uu, 113: [0.19444, 0.43056, 0, 0, 0.52778], 114: [0, 0.43056, 0, 0, 0.39167], 115: [0, 0.43056, 0, 0, 0.39445], 116: [0, 0.61508, 0, 0, 0.38889], 117: Ju, 118: [0, 0.43056, 0.01389, 0, 0.52778], 119: [0, 0.43056, 0.01389, 0, 0.72222], 120: [0, 0.43056, 0, 0, 0.52778], 121: [0.19444, 0.43056, 0.01389, 0, 0.52778], 122: Ws, 123: Ft, 124: Wo, 125: Ft, 126: [0.35, 0.31786, 0, 0, 0.5], 160: $, 163: [0, 0.69444, 0, 0, 0.76909], 167: Us, 168: Zu, 172: [0, 0.43056, 0, 0, 0.66667], 176: Xu, 177: Fe, 182: Js, 184: tl, 198: [0, 0.68333, 0, 0, 0.90278], 215: Fe, 216: [0.04861, 0.73194, 0, 0, 0.77778], 223: pe, 230: [0, 0.43056, 0, 0, 0.72222], 247: Fe, 248: [0.09722, 0.52778, 0, 0, 0.5], 305: Gu, 338: [0, 0.68333, 0, 0, 1.01389], 339: id, 567: [0.19444, 0.43056, 0, 0, 0.30556], 710: pe, 711: [0, 0.62847, 0, 0, 0.5], 713: [0, 0.56778, 0, 0, 0.5], 714: pe, 715: pe, 728: pe, 729: ju, 730: Xu, 732: Zu, 733: pe, 915: Yu, 916: td, 920: wn, 923: [0, 0.68333, 0, 0, 0.69445], 926: [0, 0.68333, 0, 0, 0.66667], 928: Rr, 931: kn, 933: wn, 934: kn, 936: wn, 937: kn, 8211: [0, 0.43056, 0.02778, 0, 0.5], 8212: [0, 0.43056, 0.02778, 0, 1], 8216: Nt, 8217: Nt, 8220: pe, 8221: pe, 8224: Us, 8225: Us, 8230: [0, 0.12, 0, 0, 1.172], 8242: [0, 0.55556, 0, 0, 0.275], 8407: [0, 0.71444, 0.15382, 0, 0.5], 8463: So, 8465: Ln, 8467: [0, 0.69444, 0, 0.11111, 0.41667], 8472: [0.19444, 0.43056, 0, 0.11111, 0.63646], 8476: Ln, 8501: sr, 8592: Me, 8593: Qu, 8594: Me, 8595: Qu, 8596: Me, 8597: Ft, 8598: An, 8599: An, 8600: An, 8601: An, 8614: [0.011, 0.511, 0, 0, 1], 8617: ed, 8618: ed, 8636: Me, 8637: Me, 8640: Me, 8641: Me, 8652: [0.011, 0.671, 0, 0, 1], 8656: Me, 8657: Js, 8658: Me, 8659: Js, 8660: Me, 8661: [0.25, 0.75, 0, 0, 0.61111], 8704: Ai, 8706: [0, 0.69444, 0.05556, 0.08334, 0.5309], 8707: Ai, 8709: Gs, 8711: td, 8712: rd, 8715: rd, 8722: Fe, 8723: Fe, 8725: Ft, 8726: Ft, 8727: Jo, 8728: js, 8729: js, 8730: [0.2, 0.8, 0, 0, 0.83334], 8733: id, 8734: Ks, 8736: xn, 8739: Wo, 8741: Ft, 8743: Ir, 8744: Ir, 8745: Ir, 8746: Ir, 8747: [0.19444, 0.69444, 0.11111, 0, 0.41667], 8764: To, 8768: [0.19444, 0.69444, 0, 0, 0.27778], 8771: Uo, 8773: [-0.022, 0.589, 0, 0, 1], 8776: nd, 8781: Uo, 8784: [-0.133, 0.67, 0, 0, 0.778], 8801: Uo, 8804: De, 8805: De, 8810: od, 8811: od, 8826: tr, 8827: tr, 8834: tr, 8835: tr, 8838: De, 8839: De, 8846: Ir, 8849: De, 8850: De, 8851: Ir, 8852: Ir, 8853: Fe, 8854: Fe, 8855: Fe, 8856: Fe, 8857: Fe, 8866: sr, 8867: sr, 8868: Pr, 8869: Pr, 8872: [0.249, 0.75, 0, 0, 0.867], 8900: js, 8901: [-0.05555, 0.44445, 0, 0, 0.27778], 8902: Jo, 8904: [5e-3, 0.505, 0, 0, 0.9], 8942: [0.03, 0.9, 0, 0, 0.278], 8943: [-0.19, 0.31, 0, 0, 1.172], 8945: [-0.1, 0.82, 0, 0, 1.282], 8968: Go, 8969: Go, 8970: Go, 8971: Go, 8994: ad, 8995: ad, 9136: jo, 9137: jo, 9651: sd, 9657: Jo, 9661: sd, 9667: Jo, 9711: An, 9824: Xo, 9825: Xo, 9826: Xo, 9827: Xo, 9837: [0, 0.75, 0, 0, 0.38889], 9838: ld, 9839: ld, 10216: Li, 10217: Li, 10222: jo, 10223: jo, 10229: [0.011, 0.511, 0, 0, 1.609], 10230: cd, 10231: [0.011, 0.511, 0, 0, 1.859], 10232: [0.024, 0.525, 0, 0, 1.609], 10233: [0.024, 0.525, 0, 0, 1.638], 10234: [0.024, 0.525, 0, 0, 1.858], 10236: cd, 10815: Rr, 10927: De, 10928: De, 57376: ud }, "Math-BoldItalic": { 32: $, 48: Zo, 49: Zo, 50: Zo, 51: Cn, 52: Cn, 53: Cn, 54: ze, 55: Cn, 56: ze, 57: Cn, 65: Rs, 66: [0, 0.68611, 0.04835, 0, 0.8664], 67: [0, 0.68611, 0.06979, 0, 0.81694], 68: [0, 0.68611, 0.03194, 0, 0.93812], 69: [0, 0.68611, 0.05451, 0, 0.81007], 70: [0, 0.68611, 0.15972, 0, 0.68889], 71: [0, 0.68611, 0, 0, 0.88673], 72: hd, 73: [0, 0.68611, 0.07778, 0, 0.51111], 74: [0, 0.68611, 0.10069, 0, 0.63125], 75: [0, 0.68611, 0.06979, 0, 0.97118], 76: dd, 77: [0, 0.68611, 0.11424, 0, 1.14201], 78: [0, 0.68611, 0.11424, 0, 0.95034], 79: [0, 0.68611, 0.03194, 0, 0.83666], 80: [0, 0.68611, 0.15972, 0, 0.72309], 81: [0.19444, 0.68611, 0, 0, 0.86861], 82: [0, 0.68611, 421e-5, 0, 0.87235], 83: [0, 0.68611, 0.05382, 0, 0.69271], 84: [0, 0.68611, 0.15972, 0, 0.63663], 85: [0, 0.68611, 0.11424, 0, 0.80027], 86: [0, 0.68611, 0.25555, 0, 0.67778], 87: [0, 0.68611, 0.15972, 0, 1.09305], 88: [0, 0.68611, 0.07778, 0, 0.94722], 89: [0, 0.68611, 0.25555, 0, 0.67458], 90: [0, 0.68611, 0.06979, 0, 0.77257], 97: [0, 0.44444, 0, 0, 0.63287], 98: [0, 0.69444, 0, 0, 0.52083], 99: [0, 0.44444, 0, 0, 0.51342], 100: [0, 0.69444, 0, 0, 0.60972], 101: [0, 0.44444, 0, 0, 0.55361], 102: [0.19444, 0.69444, 0.11042, 0, 0.56806], 103: [0.19444, 0.44444, 0.03704, 0, 0.5449], 104: md, 105: [0, 0.69326, 0, 0, 0.4048], 106: [0.19444, 0.69326, 0.0622, 0, 0.47083], 107: [0, 0.69444, 0.01852, 0, 0.6037], 108: [0, 0.69444, 88e-4, 0, 0.34815], 109: [0, 0.44444, 0, 0, 1.0324], 110: [0, 0.44444, 0, 0, 0.71296], 111: gd, 112: [0.19444, 0.44444, 0, 0, 0.60092], 113: [0.19444, 0.44444, 0.03704, 0, 0.54213], 114: [0, 0.44444, 0.03194, 0, 0.5287], 115: [0, 0.44444, 0, 0, 0.53125], 116: [0, 0.63492, 0, 0, 0.41528], 117: [0, 0.44444, 0, 0, 0.68102], 118: [0, 0.44444, 0.03704, 0, 0.56666], 119: [0, 0.44444, 0.02778, 0, 0.83148], 120: [0, 0.44444, 0, 0, 0.65903], 121: [0.19444, 0.44444, 0.03704, 0, 0.59028], 122: [0, 0.44444, 0.04213, 0, 0.55509], 160: $, 915: [0, 0.68611, 0.15972, 0, 0.65694], 916: Ns, 920: [0, 0.68611, 0.03194, 0, 0.86722], 923: pd, 926: [0, 0.68611, 0.07458, 0, 0.84125], 928: hd, 931: [0, 0.68611, 0.05451, 0, 0.88507], 933: [0, 0.68611, 0.15972, 0, 0.67083], 934: fd, 936: [0, 0.68611, 0.11653, 0, 0.71402], 937: [0, 0.68611, 0.04835, 0, 0.8789], 945: [0, 0.44444, 0, 0, 0.76064], 946: [0.19444, 0.69444, 0.03403, 0, 0.65972], 947: [0.19444, 0.44444, 0.06389, 0, 0.59003], 948: [0, 0.69444, 0.03819, 0, 0.52222], 949: [0, 0.44444, 0, 0, 0.52882], 950: [0.19444, 0.69444, 0.06215, 0, 0.50833], 951: [0.19444, 0.44444, 0.03704, 0, 0.6], 952: [0, 0.69444, 0.03194, 0, 0.5618], 953: [0, 0.44444, 0, 0, 0.41204], 954: [0, 0.44444, 0, 0, 0.66759], 955: [0, 0.69444, 0, 0, 0.67083], 956: [0.19444, 0.44444, 0, 0, 0.70787], 957: [0, 0.44444, 0.06898, 0, 0.57685], 958: [0.19444, 0.69444, 0.03021, 0, 0.50833], 959: gd, 960: [0, 0.44444, 0.03704, 0, 0.68241], 961: yd, 962: [0.09722, 0.44444, 0.07917, 0, 0.42361], 963: [0, 0.44444, 0.03704, 0, 0.68588], 964: [0, 0.44444, 0.13472, 0, 0.52083], 965: [0, 0.44444, 0.03704, 0, 0.63055], 966: [0.19444, 0.44444, 0, 0, 0.74722], 967: [0.19444, 0.44444, 0, 0, 0.71805], 968: [0.19444, 0.69444, 0.03704, 0, 0.75833], 969: [0, 0.44444, 0.03704, 0, 0.71782], 977: [0, 0.69444, 0, 0, 0.69155], 981: [0.19444, 0.69444, 0, 0, 0.7125], 982: [0, 0.44444, 0.03194, 0, 0.975], 1009: yd, 1013: [0, 0.44444, 0, 0, 0.48333], 57649: [0, 0.44444, 0, 0, 0.39352], 57911: [0.19444, 0.44444, 0, 0, 0.43889] }, "Math-Italic": { 32: $, 48: Sn, 49: Sn, 50: Sn, 51: En, 52: En, 53: En, 54: Ne, 55: En, 56: Ne, 57: En, 65: [0, 0.68333, 0, 0.13889, 0.75], 66: [0, 0.68333, 0.05017, 0.08334, 0.75851], 67: [0, 0.68333, 0.07153, 0.08334, 0.71472], 68: [0, 0.68333, 0.02778, 0.05556, 0.82792], 69: [0, 0.68333, 0.05764, 0.08334, 0.7382], 70: [0, 0.68333, 0.13889, 0.08334, 0.64306], 71: [0, 0.68333, 0, 0.08334, 0.78625], 72: xd, 73: [0, 0.68333, 0.07847, 0.11111, 0.43958], 74: [0, 0.68333, 0.09618, 0.16667, 0.55451], 75: [0, 0.68333, 0.07153, 0.05556, 0.84931], 76: [0, 0.68333, 0, 0.02778, 0.68056], 77: [0, 0.68333, 0.10903, 0.08334, 0.97014], 78: [0, 0.68333, 0.10903, 0.08334, 0.80347], 79: bd, 80: [0, 0.68333, 0.13889, 0.08334, 0.64201], 81: [0.19444, 0.68333, 0, 0.08334, 0.79056], 82: [0, 0.68333, 773e-5, 0.08334, 0.75929], 83: [0, 0.68333, 0.05764, 0.08334, 0.6132], 84: [0, 0.68333, 0.13889, 0.08334, 0.58438], 85: [0, 0.68333, 0.10903, 0.02778, 0.68278], 86: [0, 0.68333, 0.22222, 0, 0.58333], 87: [0, 0.68333, 0.13889, 0, 0.94445], 88: [0, 0.68333, 0.07847, 0.08334, 0.82847], 89: [0, 0.68333, 0.22222, 0, 0.58056], 90: [0, 0.68333, 0.07153, 0.08334, 0.68264], 97: [0, 0.43056, 0, 0, 0.52859], 98: [0, 0.69444, 0, 0, 0.42917], 99: [0, 0.43056, 0, 0.05556, 0.43276], 100: [0, 0.69444, 0, 0.16667, 0.52049], 101: [0, 0.43056, 0, 0.05556, 0.46563], 102: [0.19444, 0.69444, 0.10764, 0.16667, 0.48959], 103: [0.19444, 0.43056, 0.03588, 0.02778, 0.47697], 104: [0, 0.69444, 0, 0, 0.57616], 105: [0, 0.65952, 0, 0, 0.34451], 106: [0.19444, 0.65952, 0.05724, 0, 0.41181], 107: [0, 0.69444, 0.03148, 0, 0.5206], 108: [0, 0.69444, 0.01968, 0.08334, 0.29838], 109: [0, 0.43056, 0, 0, 0.87801], 110: [0, 0.43056, 0, 0, 0.60023], 111: vd, 112: [0.19444, 0.43056, 0, 0.08334, 0.50313], 113: [0.19444, 0.43056, 0.03588, 0.08334, 0.44641], 114: [0, 0.43056, 0.02778, 0.05556, 0.45116], 115: [0, 0.43056, 0, 0.05556, 0.46875], 116: [0, 0.61508, 0, 0.08334, 0.36111], 117: [0, 0.43056, 0, 0.02778, 0.57246], 118: [0, 0.43056, 0.03588, 0.02778, 0.48472], 119: [0, 0.43056, 0.02691, 0.08334, 0.71592], 120: [0, 0.43056, 0, 0.02778, 0.57153], 121: [0.19444, 0.43056, 0.03588, 0.05556, 0.49028], 122: [0, 0.43056, 0.04398, 0.05556, 0.46505], 160: $, 915: [0, 0.68333, 0.13889, 0.08334, 0.61528], 916: [0, 0.68333, 0, 0.16667, 0.83334], 920: bd, 923: [0, 0.68333, 0, 0.16667, 0.69445], 926: [0, 0.68333, 0.07569, 0.08334, 0.74236], 928: xd, 931: [0, 0.68333, 0.05764, 0.08334, 0.77986], 933: [0, 0.68333, 0.13889, 0.05556, 0.58333], 934: [0, 0.68333, 0, 0.08334, 0.66667], 936: [0, 0.68333, 0.11, 0.05556, 0.61222], 937: [0, 0.68333, 0.05017, 0.08334, 0.7724], 945: [0, 0.43056, 37e-4, 0.02778, 0.6397], 946: [0.19444, 0.69444, 0.05278, 0.08334, 0.56563], 947: [0.19444, 0.43056, 0.05556, 0, 0.51773], 948: [0, 0.69444, 0.03785, 0.05556, 0.44444], 949: [0, 0.43056, 0, 0.08334, 0.46632], 950: [0.19444, 0.69444, 0.07378, 0.08334, 0.4375], 951: [0.19444, 0.43056, 0.03588, 0.05556, 0.49653], 952: [0, 0.69444, 0.02778, 0.08334, 0.46944], 953: [0, 0.43056, 0, 0.05556, 0.35394], 954: [0, 0.43056, 0, 0, 0.57616], 955: [0, 0.69444, 0, 0, 0.58334], 956: [0.19444, 0.43056, 0, 0.02778, 0.60255], 957: [0, 0.43056, 0.06366, 0.02778, 0.49398], 958: [0.19444, 0.69444, 0.04601, 0.11111, 0.4375], 959: vd, 960: [0, 0.43056, 0.03588, 0, 0.57003], 961: _d, 962: [0.09722, 0.43056, 0.07986, 0.08334, 0.36285], 963: [0, 0.43056, 0.03588, 0, 0.57141], 964: [0, 0.43056, 0.1132, 0.02778, 0.43715], 965: [0, 0.43056, 0.03588, 0.02778, 0.54028], 966: [0.19444, 0.43056, 0, 0.08334, 0.65417], 967: [0.19444, 0.43056, 0, 0.05556, 0.62569], 968: [0.19444, 0.69444, 0.03588, 0.11111, 0.65139], 969: [0, 0.43056, 0.03588, 0, 0.62245], 977: [0, 0.69444, 0, 0.08334, 0.59144], 981: [0.19444, 0.69444, 0, 0.08334, 0.59583], 982: [0, 0.43056, 0.02778, 0, 0.82813], 1009: _d, 1013: [0, 0.43056, 0, 0.05556, 0.4059], 57649: [0, 0.43056, 0, 0.02778, 0.32246], 57911: [0.19444, 0.43056, 0, 0.08334, 0.38403] }, "SansSerif-Bold": { 32: $, 33: [0, 0.69444, 0, 0, 0.36667], 34: Qs, 35: [0.19444, 0.69444, 0, 0, 0.91667], 36: [0.05556, 0.75, 0, 0, 0.55], 37: [0.05556, 0.75, 0, 0, 1.02912], 38: [0, 0.69444, 0, 0, 0.83056], 39: Yo, 40: Md, 41: Md, 42: [0, 0.75, 0, 0, 0.55], 43: [0.11667, 0.61667, 0, 0, 0.85556], 44: [0.10556, 0.13056, 0, 0, 0.30556], 45: [0, 0.45833, 0, 0, 0.36667], 46: [0, 0.13056, 0, 0, 0.30556], 47: [0.25, 0.75, 0, 0, 0.55], 48: xe, 49: xe, 50: xe, 51: xe, 52: xe, 53: xe, 54: xe, 55: xe, 56: xe, 57: xe, 58: [0, 0.45833, 0, 0, 0.30556], 59: [0.10556, 0.45833, 0, 0, 0.30556], 61: [-0.09375, 0.40625, 0, 0, 0.85556], 63: wd, 64: $t, 65: $t, 66: $t, 67: Xs, 68: lr, 69: [0, 0.69444, 0, 0, 0.64167], 70: sr, 71: $t, 72: lr, 73: [0, 0.69444, 0, 0, 0.33056], 74: wd, 75: kd, 76: Ed, 77: [0, 0.69444, 0, 0, 0.97778], 78: lr, 79: lr, 80: Xs, 81: [0.10556, 0.69444, 0, 0, 0.79445], 82: Xs, 83: sr, 84: $t, 85: kd, 86: [0, 0.69444, 0.01528, 0, 0.73334], 87: [0, 0.69444, 0.01528, 0, 1.03889], 88: $t, 89: [0, 0.69444, 0.0275, 0, 0.73334], 90: Td, 91: Sd, 93: Sd, 94: xe, 95: [0.35, 0.10833, 0.03056, 0, 0.55], 97: [0, 0.45833, 0, 0, 0.525], 98: Zs, 99: [0, 0.45833, 0, 0, 0.48889], 100: Zs, 101: [0, 0.45833, 0, 0, 0.51111], 102: [0, 0.69444, 0.07639, 0, 0.33611], 103: [0.19444, 0.45833, 0.01528, 0, 0.55], 104: Zs, 105: Ld, 106: [0.19444, 0.69444, 0, 0, 0.28611], 107: [0, 0.69444, 0, 0, 0.53056], 108: Ld, 109: [0, 0.45833, 0, 0, 0.86667], 110: Cd, 111: [0, 0.45833, 0, 0, 0.55], 112: Ad, 113: Ad, 114: [0, 0.45833, 0.01528, 0, 0.37222], 115: [0, 0.45833, 0, 0, 0.42167], 116: [0, 0.58929, 0, 0, 0.40417], 117: Cd, 118: [0, 0.45833, 0.01528, 0, 0.5], 119: [0, 0.45833, 0.01528, 0, 0.74445], 120: [0, 0.45833, 0, 0, 0.5], 121: [0.19444, 0.45833, 0.01528, 0, 0.5], 122: [0, 0.45833, 0, 0, 0.47639], 126: [0.35, 0.34444, 0, 0, 0.55], 160: $, 168: xe, 176: $t, 180: xe, 184: [0.17014, 0, 0, 0, 0.48889], 305: [0, 0.45833, 0, 0, 0.25556], 567: [0.19444, 0.45833, 0, 0, 0.28611], 710: xe, 711: [0, 0.63542, 0, 0, 0.55], 713: [0, 0.63778, 0, 0, 0.55], 728: xe, 729: Yo, 730: $t, 732: xe, 733: xe, 915: Ed, 916: [0, 0.69444, 0, 0, 0.91667], 920: Ys, 923: Td, 926: $t, 928: lr, 931: lr, 933: Ys, 934: lr, 936: Ys, 937: lr, 8211: [0, 0.45833, 0.03056, 0, 0.55], 8212: [0, 0.45833, 0.03056, 0, 1.10001], 8216: Yo, 8217: Yo, 8220: Qs, 8221: Qs }, "SansSerif-Italic": { 32: $, 33: [0, 0.69444, 0.05733, 0, 0.31945], 34: Pd, 35: [0.19444, 0.69444, 0.05087, 0, 0.83334], 36: [0.05556, 0.75, 0.11156, 0, 0.5], 37: [0.05556, 0.75, 0.03126, 0, 0.83334], 38: [0, 0.69444, 0.03058, 0, 0.75834], 39: rl, 40: [0.25, 0.75, 0.13164, 0, 0.38889], 41: [0.25, 0.75, 0.02536, 0, 0.38889], 42: [0, 0.75, 0.11775, 0, 0.5], 43: [0.08333, 0.58333, 0.02536, 0, 0.77778], 44: Nd, 45: [0, 0.44444, 0.01946, 0, 0.33333], 46: Fd, 47: [0.25, 0.75, 0.13164, 0, 0.5], 48: Mt, 49: Mt, 50: Mt, 51: Mt, 52: Mt, 53: Mt, 54: Mt, 55: Mt, 56: Mt, 57: Mt, 58: [0, 0.44444, 0.02502, 0, 0.27778], 59: [0.125, 0.44444, 0.02502, 0, 0.27778], 61: [-0.13, 0.37, 0.05087, 0, 0.77778], 63: [0, 0.69444, 0.11809, 0, 0.47222], 64: [0, 0.69444, 0.07555, 0, 0.66667], 65: Vt, 66: [0, 0.69444, 0.08293, 0, 0.66667], 67: [0, 0.69444, 0.11983, 0, 0.63889], 68: [0, 0.69444, 0.07555, 0, 0.72223], 69: [0, 0.69444, 0.11983, 0, 0.59722], 70: [0, 0.69444, 0.13372, 0, 0.56945], 71: [0, 0.69444, 0.11983, 0, 0.66667], 72: el, 73: [0, 0.69444, 0.13372, 0, 0.27778], 74: [0, 0.69444, 0.08094, 0, 0.47222], 75: [0, 0.69444, 0.11983, 0, 0.69445], 76: nl, 77: [0, 0.69444, 0.08094, 0, 0.875], 78: el, 79: [0, 0.69444, 0.07555, 0, 0.73611], 80: [0, 0.69444, 0.08293, 0, 0.63889], 81: [0.125, 0.69444, 0.07555, 0, 0.73611], 82: [0, 0.69444, 0.08293, 0, 0.64584], 83: [0, 0.69444, 0.09205, 0, 0.55556], 84: [0, 0.69444, 0.13372, 0, 0.68056], 85: [0, 0.69444, 0.08094, 0, 0.6875], 86: [0, 0.69444, 0.1615, 0, 0.66667], 87: [0, 0.69444, 0.1615, 0, 0.94445], 88: [0, 0.69444, 0.13372, 0, 0.66667], 89: [0, 0.69444, 0.17261, 0, 0.66667], 90: [0, 0.69444, 0.11983, 0, 0.61111], 91: [0.25, 0.75, 0.15942, 0, 0.28889], 93: [0.25, 0.75, 0.08719, 0, 0.28889], 94: Dd, 95: [0.35, 0.09444, 0.08616, 0, 0.5], 97: [0, 0.44444, 981e-5, 0, 0.48056], 98: [0, 0.69444, 0.03057, 0, 0.51667], 99: [0, 0.44444, 0.08336, 0, 0.44445], 100: [0, 0.69444, 0.09483, 0, 0.51667], 101: [0, 0.44444, 0.06778, 0, 0.44445], 102: [0, 0.69444, 0.21705, 0, 0.30556], 103: [0.19444, 0.44444, 0.10836, 0, 0.5], 104: [0, 0.69444, 0.01778, 0, 0.51667], 105: [0, 0.67937, 0.09718, 0, 0.23889], 106: [0.19444, 0.67937, 0.09162, 0, 0.26667], 107: [0, 0.69444, 0.08336, 0, 0.48889], 108: [0, 0.69444, 0.09483, 0, 0.23889], 109: [0, 0.44444, 0.01778, 0, 0.79445], 110: [0, 0.44444, 0.01778, 0, 0.51667], 111: [0, 0.44444, 0.06613, 0, 0.5], 112: [0.19444, 0.44444, 0.0389, 0, 0.51667], 113: [0.19444, 0.44444, 0.04169, 0, 0.51667], 114: [0, 0.44444, 0.10836, 0, 0.34167], 115: [0, 0.44444, 0.0778, 0, 0.38333], 116: [0, 0.57143, 0.07225, 0, 0.36111], 117: [0, 0.44444, 0.04169, 0, 0.51667], 118: [0, 0.44444, 0.10836, 0, 0.46111], 119: [0, 0.44444, 0.10836, 0, 0.68334], 120: [0, 0.44444, 0.09169, 0, 0.46111], 121: [0.19444, 0.44444, 0.10836, 0, 0.46111], 122: [0, 0.44444, 0.08752, 0, 0.43472], 126: [0.35, 0.32659, 0.08826, 0, 0.5], 160: $, 168: [0, 0.67937, 0.06385, 0, 0.5], 176: Kd, 184: tl, 305: [0, 0.44444, 0.04169, 0, 0.23889], 567: [0.19444, 0.44444, 0.04169, 0, 0.26667], 710: Dd, 711: [0, 0.63194, 0.08432, 0, 0.5], 713: [0, 0.60889, 0.08776, 0, 0.5], 714: Bd, 715: pe, 728: [0, 0.69444, 0.09483, 0, 0.5], 729: [0, 0.67937, 0.07774, 0, 0.27778], 730: Kd, 732: [0, 0.67659, 0.08826, 0, 0.5], 733: Bd, 915: [0, 0.69444, 0.13372, 0, 0.54167], 916: Jd, 920: [0, 0.69444, 0.07555, 0, 0.77778], 923: sr, 926: [0, 0.69444, 0.12816, 0, 0.66667], 928: el, 931: [0, 0.69444, 0.11983, 0, 0.72222], 933: Od, 934: [0, 0.69444, 0.04603, 0, 0.72222], 936: Od, 937: [0, 0.69444, 0.08293, 0, 0.72222], 8211: [0, 0.44444, 0.08616, 0, 0.5], 8212: [0, 0.44444, 0.08616, 0, 1], 8216: rl, 8217: rl, 8220: [0, 0.69444, 0.14205, 0, 0.5], 8221: Pd }, "SansSerif-Regular": { 32: $, 33: [0, 0.69444, 0, 0, 0.31945], 34: pe, 35: Rd, 36: Gs, 37: Id, 38: [0, 0.69444, 0, 0, 0.75834], 39: Nt, 40: Li, 41: Li, 42: zd, 43: Fe, 44: Nd, 45: [0, 0.44444, 0, 0, 0.33333], 46: Fd, 47: Ft, 48: wt, 49: wt, 50: wt, 51: wt, 52: wt, 53: wt, 54: wt, 55: wt, 56: wt, 57: wt, 58: [0, 0.44444, 0, 0, 0.27778], 59: [0.125, 0.44444, 0, 0, 0.27778], 61: [-0.13, 0.37, 0, 0, 0.77778], 63: il, 64: Vt, 65: Vt, 66: Vt, 67: Br, 68: [0, 0.69444, 0, 0, 0.72223], 69: $d, 70: [0, 0.69444, 0, 0, 0.56945], 71: Vt, 72: ol, 73: Nt, 74: il, 75: [0, 0.69444, 0, 0, 0.69445], 76: nl, 77: [0, 0.69444, 0, 0, 0.875], 78: ol, 79: [0, 0.69444, 0, 0, 0.73611], 80: Br, 81: [0.125, 0.69444, 0, 0, 0.73611], 82: [0, 0.69444, 0, 0, 0.64584], 83: Ai, 84: [0, 0.69444, 0, 0, 0.68056], 85: [0, 0.69444, 0, 0, 0.6875], 86: [0, 0.69444, 0.01389, 0, 0.66667], 87: [0, 0.69444, 0.01389, 0, 0.94445], 88: Vt, 89: [0, 0.69444, 0.025, 0, 0.66667], 90: sr, 91: Vd, 93: Vd, 94: pe, 95: [0.35, 0.09444, 0.02778, 0, 0.5], 97: [0, 0.44444, 0, 0, 0.48056], 98: al, 99: qd, 100: al, 101: qd, 102: [0, 0.69444, 0.06944, 0, 0.30556], 103: [0.19444, 0.44444, 0.01389, 0, 0.5], 104: al, 105: [0, 0.67937, 0, 0, 0.23889], 106: [0.19444, 0.67937, 0, 0, 0.26667], 107: [0, 0.69444, 0, 0, 0.48889], 108: [0, 0.69444, 0, 0, 0.23889], 109: [0, 0.44444, 0, 0, 0.79445], 110: Ud, 111: [0, 0.44444, 0, 0, 0.5], 112: Hd, 113: Hd, 114: [0, 0.44444, 0.01389, 0, 0.34167], 115: Wd, 116: [0, 0.57143, 0, 0, 0.36111], 117: Ud, 118: [0, 0.44444, 0.01389, 0, 0.46111], 119: [0, 0.44444, 0.01389, 0, 0.68334], 120: [0, 0.44444, 0, 0, 0.46111], 121: [0.19444, 0.44444, 0.01389, 0, 0.46111], 122: [0, 0.44444, 0, 0, 0.43472], 126: [0.35, 0.32659, 0, 0, 0.5], 160: $, 168: [0, 0.67937, 0, 0, 0.5], 176: Vt, 184: tl, 305: [0, 0.44444, 0, 0, 0.23889], 567: [0.19444, 0.44444, 0, 0, 0.26667], 710: pe, 711: [0, 0.63194, 0, 0, 0.5], 713: [0, 0.60889, 0, 0, 0.5], 714: pe, 715: pe, 728: pe, 729: [0, 0.67937, 0, 0, 0.27778], 730: Vt, 732: [0, 0.67659, 0, 0, 0.5], 733: pe, 915: nl, 916: Jd, 920: Pr, 923: sr, 926: Vt, 928: ol, 931: Ln, 933: Pr, 934: Ln, 936: Pr, 937: Ln, 8211: [0, 0.44444, 0.02778, 0, 0.5], 8212: [0, 0.44444, 0.02778, 0, 1], 8216: Nt, 8217: Nt, 8220: pe, 8221: pe }, "Script-Regular": { 32: $, 65: [0, 0.7, 0.22925, 0, 0.80253], 66: [0, 0.7, 0.04087, 0, 0.90757], 67: [0, 0.7, 0.1689, 0, 0.66619], 68: [0, 0.7, 0.09371, 0, 0.77443], 69: [0, 0.7, 0.18583, 0, 0.56162], 70: [0, 0.7, 0.13634, 0, 0.89544], 71: [0, 0.7, 0.17322, 0, 0.60961], 72: [0, 0.7, 0.29694, 0, 0.96919], 73: [0, 0.7, 0.19189, 0, 0.80907], 74: [0.27778, 0.7, 0.19189, 0, 1.05159], 75: [0, 0.7, 0.31259, 0, 0.91364], 76: [0, 0.7, 0.19189, 0, 0.87373], 77: [0, 0.7, 0.15981, 0, 1.08031], 78: [0, 0.7, 0.3525, 0, 0.9015], 79: [0, 0.7, 0.08078, 0, 0.73787], 80: [0, 0.7, 0.08078, 0, 1.01262], 81: [0, 0.7, 0.03305, 0, 0.88282], 82: [0, 0.7, 0.06259, 0, 0.85], 83: [0, 0.7, 0.19189, 0, 0.86767], 84: [0, 0.7, 0.29087, 0, 0.74697], 85: [0, 0.7, 0.25815, 0, 0.79996], 86: [0, 0.7, 0.27523, 0, 0.62204], 87: [0, 0.7, 0.27523, 0, 0.80532], 88: [0, 0.7, 0.26006, 0, 0.94445], 89: [0, 0.7, 0.2939, 0, 0.70961], 90: [0, 0.7, 0.24037, 0, 0.8212], 160: $ }, "Size1-Regular": { 32: $, 40: Gd, 41: Gd, 47: jd, 91: Xd, 92: jd, 93: Xd, 123: Zd, 125: Zd, 160: $, 710: Qo, 732: Qo, 770: Qo, 771: Qo, 8214: [-99e-5, 0.601, 0, 0, 0.77778], 8593: Yd, 8595: Yd, 8657: Qd, 8659: Qd, 8719: e0, 8720: e0, 8721: [0.25001, 0.75, 0, 0, 1.05556], 8730: [0.35001, 0.85, 0, 0, 1], 8739: [-599e-5, 0.606, 0, 0, 0.33333], 8741: [-599e-5, 0.606, 0, 0, 0.55556], 8747: r0, 8748: t0, 8749: t0, 8750: r0, 8896: Ci, 8897: Ci, 8898: Ci, 8899: Ci, 8968: Ei, 8969: Ei, 8970: Ei, 8971: Ei, 9168: cl, 10216: Ei, 10217: Ei, 10752: sl, 10753: sl, 10754: sl, 10756: Ci, 10758: Ci }, "Size2-Regular": { 32: $, 40: i0, 41: i0, 47: n0, 91: o0, 92: n0, 93: o0, 123: a0, 125: a0, 160: $, 710: ea, 732: ea, 770: ea, 771: ea, 8719: s0, 8720: s0, 8721: [0.55001, 1.05, 0, 0, 1.44445], 8730: [0.65002, 1.15, 0, 0, 1], 8747: c0, 8748: l0, 8749: l0, 8750: c0, 8896: Ti, 8897: Ti, 8898: Ti, 8899: Ti, 8968: ta, 8969: ta, 8970: ta, 8971: ta, 10216: u0, 10217: u0, 10752: ll, 10753: ll, 10754: ll, 10756: Ti, 10758: Ti }, "Size3-Regular": { 32: $, 40: d0, 41: d0, 47: m0, 91: p0, 92: m0, 93: p0, 123: ra, 125: ra, 160: $, 710: ia, 732: ia, 770: ia, 771: ia, 8730: [0.95003, 1.45, 0, 0, 1], 8968: na, 8969: na, 8970: na, 8971: na, 10216: ra, 10217: ra }, "Size4-Regular": { 32: $, 40: h0, 41: h0, 47: f0, 91: g0, 92: f0, 93: g0, 123: oa, 125: oa, 160: $, 710: aa, 732: aa, 770: aa, 771: aa, 8730: [1.25003, 1.75, 0, 0, 1], 8968: sa, 8969: sa, 8970: sa, 8971: sa, 9115: la, 9116: y0, 9117: la, 9118: la, 9119: y0, 9120: la, 9121: ca, 9122: cl, 9123: ca, 9124: ca, 9125: cl, 9126: ca, 9127: b0, 9128: x0, 9129: v0, 9130: [0, 0.3, 0, 0, 0.88889], 9131: b0, 9132: x0, 9133: v0, 9143: [0.88502, 0.915, 0, 0, 1.05556], 10216: oa, 10217: oa, 57344: _0, 57345: _0, 57680: ua, 57681: ua, 57682: ua, 57683: ua }, "Typewriter-Regular": { 32: k0, 33: E, 34: E, 35: E, 36: Ze, 37: Ze, 38: E, 39: E, 40: Ze, 41: Ze, 42: [0, 0.52083, 0, 0, 0.525], 43: M0, 44: [0.13889, 0.125, 0, 0, 0.525], 45: M0, 46: [0, 0.125, 0, 0, 0.525], 47: Ze, 48: E, 49: E, 50: E, 51: E, 52: E, 53: E, 54: E, 55: E, 56: E, 57: E, 58: Le, 59: [0.13889, 0.43056, 0, 0, 0.525], 60: w0, 61: [-0.19549, 0.41562, 0, 0, 0.525], 62: w0, 63: E, 64: E, 65: E, 66: E, 67: E, 68: E, 69: E, 70: E, 71: E, 72: E, 73: E, 74: E, 75: E, 76: E, 77: E, 78: E, 79: E, 80: E, 81: [0.13889, 0.61111, 0, 0, 0.525], 82: E, 83: E, 84: E, 85: E, 86: E, 87: E, 88: E, 89: E, 90: E, 91: Ze, 92: Ze, 93: Ze, 94: E, 95: [0.09514, 0, 0, 0, 0.525], 96: E, 97: Le, 98: E, 99: Le, 100: E, 101: Le, 102: E, 103: Tn, 104: E, 105: E, 106: [0.22222, 0.61111, 0, 0, 0.525], 107: E, 108: E, 109: Le, 110: Le, 111: Le, 112: Tn, 113: Tn, 114: Le, 115: Le, 116: [0, 0.55358, 0, 0, 0.525], 117: Le, 118: Le, 119: Le, 120: Le, 121: Tn, 122: Le, 123: Ze, 124: Ze, 125: Ze, 126: E, 127: E, 160: k0, 176: E, 184: [0.19445, 0, 0, 0, 0.525], 305: Le, 567: Tn, 711: [0, 0.56597, 0, 0, 0.525], 713: [0, 0.56555, 0, 0, 0.525], 714: E, 715: E, 728: E, 730: E, 770: E, 771: E, 776: E, 915: E, 916: E, 920: E, 923: E, 926: E, 928: E, 931: E, 933: E, 934: E, 936: E, 937: E, 8216: E, 8217: E, 8242: E, 9251: [0.11111, 0.21944, 0, 0, 0.525] } }; +var uh = /[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FAF]|[\uAC00-\uD7AF]/; +var kt = 10; +var Ae = 0.25; +var A0 = 1.2; +var $e = 0.431; +var ul = { slant: [0.25, 0.25, 0.25], space: [0, 0, 0], stretch: [0, 0, 0], shrink: [0, 0, 0], xHeight: [$e, $e, $e], quad: [1, 1.171, 1.472], extraSpace: [0, 0, 0], num1: [0.5, 0.732, 0.925], num2: [0.394, 0.384, 0.5], num3: [0.444, 0.471, 0.504], denom1: [0.686, 0.752, 1.025], denom2: [0.345, 0.344, 0.532], sup1: [0.413, 0.503, 0.504], sup2: [0.363, 0.431, 0.404], sup3: [0.289, 0.286, 0.294], sub1: [0.15, 0.143, 0.2], sub2: [0.247, 0.286, 0.4], supDrop: [0.386, 0.353, 0.494], subDrop: [0.05, 0.071, 0.1], delim1: [2.39, 1.7, 1.98], delim2: [1.01, 1.157, 1.42], axisHeight: [Ae, Ae, Ae], defaultRuleThickness: [0.04, 0.049, 0.049], bigOpSpacing1: [0.111, 0.111, 0.111], bigOpSpacing2: [0.166, 0.166, 0.166], bigOpSpacing3: [0.2, 0.2, 0.2], bigOpSpacing4: [0.6, 0.611, 0.611], bigOpSpacing5: [0.1, 0.143, 0.143], sqrtRuleThickness: [0.04, 0.04, 0.04] }; +var Dn = [0, 0.5, 0.7, 0.8, 0.9, 1, 1.2, 1.44, 1.728, 2.074, 2.488]; +var Di = 5; +var L0 = { "\xA0": " ", "\u200B": " ", \u00C5: "A", \u00C7: "C", \u00D0: "D", \u00DE: "o", \u00E5: "a", \u00E7: "c", \u00F0: "d", \u00FE: "o", \u0410: "A", \u0411: "B", \u0412: "B", \u0413: "F", \u0414: "A", \u0415: "E", \u0416: "K", \u0417: "3", \u0418: "N", \u0419: "N", \u041A: "K", \u041B: "N", \u041C: "M", \u041D: "H", \u041E: "O", \u041F: "N", \u0420: "P", \u0421: "C", \u0422: "T", \u0423: "y", \u0424: "O", \u0425: "X", \u0426: "U", \u0427: "h", \u0428: "W", \u0429: "W", \u042A: "B", \u042B: "X", \u042C: "B", \u042D: "3", \u042E: "X", \u042F: "R", \u0430: "a", \u0431: "b", \u0432: "a", \u0433: "r", \u0434: "y", \u0435: "e", \u0436: "m", \u0437: "e", \u0438: "n", \u0439: "n", \u043A: "n", \u043B: "n", \u043C: "m", \u043D: "n", \u043E: "o", \u043F: "n", \u0440: "p", \u0441: "c", \u0442: "o", \u0443: "y", \u0444: "b", \u0445: "x", \u0446: "n", \u0447: "n", \u0448: "w", \u0449: "w", \u044A: "a", \u044B: "m", \u044C: "a", \u044D: "e", \u044E: "m", \u044F: "r" }; +function cr(t37, e) { + t37 === void 0 && (t37 = 77); + let r = S0[e][t37]; + if (r) + return { defaultMetrics: false, depth: r[0], height: r[1], italic: r[2], skew: r[3], width: r[4] }; + if (t37 === 11034) + return { defaultMetrics: true, depth: 0.2, height: 0.8, italic: 0, skew: 0, width: 0.8 }; + let i = String.fromCodePoint(t37); + if (i in L0) + t37 = L0[i].codePointAt(0); + else if (uh.test(i)) + return t37 = 77, { defaultMetrics: true, depth: 0.2, height: 0.9, italic: 0, skew: 0, width: 1 }; + return { defaultMetrics: true, depth: 0.2, height: 0.7, italic: 0, skew: 0, width: 0.8 }; +} +var dl = { overrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], overleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], underrightarrow: [["rightarrow"], 0.888, 522, "xMaxYMin"], underleftarrow: [["leftarrow"], 0.888, 522, "xMinYMin"], xrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"], longrightarrow: [["rightarrow"], 1.469, 522, "xMaxYMin"], xleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"], longleftarrow: [["leftarrow"], 1.469, 522, "xMinYMin"], Overrightarrow: [["doublerightarrow"], 0.888, 560, "xMaxYMin"], xRightarrow: [["doublerightarrow"], 1.526, 560, "xMaxYMin"], xLeftarrow: [["doubleleftarrow"], 1.526, 560, "xMinYMin"], overleftharpoon: [["leftharpoon"], 0.888, 522, "xMinYMin"], xleftharpoonup: [["leftharpoon"], 0.888, 522, "xMinYMin"], xleftharpoondown: [["leftharpoondown"], 0.888, 522, "xMinYMin"], overrightharpoon: [["rightharpoon"], 0.888, 522, "xMaxYMin"], xrightharpoonup: [["rightharpoon"], 0.888, 522, "xMaxYMin"], xrightharpoondown: [["rightharpoondown"], 0.888, 522, "xMaxYMin"], xlongequal: [["longequal"], 0.888, 334, "xMinYMin"], xtwoheadleftarrow: [["twoheadleftarrow"], 0.888, 334, "xMinYMin"], xtwoheadrightarrow: [["twoheadrightarrow"], 0.888, 334, "xMaxYMin"], overleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522], overbrace: [["leftbrace", "midbrace", "rightbrace"], 1.6, 548], underbrace: [["leftbraceunder", "midbraceunder", "rightbraceunder"], 1.6, 548], underleftrightarrow: [["leftarrow", "rightarrow"], 0.888, 522], xleftrightarrow: [["leftarrow", "rightarrow"], 1.75, 522], longleftrightarrow: [["leftarrow", "rightarrow"], 1.75, 522], xLeftrightarrow: [["doubleleftarrow", "doublerightarrow"], 1.75, 560], xrightleftharpoons: [["leftharpoondownplus", "rightharpoonplus"], 1.75, 716], longrightleftharpoons: [["leftharpoondownplus", "rightharpoonplus"], 1.75, 716], xleftrightharpoons: [["leftharpoonplus", "rightharpoondownplus"], 1.75, 716], longleftrightharpoons: [["leftharpoonplus", "rightharpoondownplus"], 1.75, 716], xhookleftarrow: [["leftarrow", "righthook"], 1.08, 522], xhookrightarrow: [["lefthook", "rightarrow"], 1.08, 522], overlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522], underlinesegment: [["leftlinesegment", "rightlinesegment"], 0.888, 522], overgroup: [["leftgroup", "rightgroup"], 0.888, 342], undergroup: [["leftgroupunder", "rightgroupunder"], 0.888, 342], xmapsto: [["leftmapsto", "rightarrow"], 1.5, 522], xtofrom: [["leftToFrom", "rightToFrom"], 1.75, 528], xleftrightarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 901], longleftrightarrows: [["baraboveleftarrow", "rightarrowabovebar"], 1.75, 901], xRightleftharpoons: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716], longRightleftharpoons: [["baraboveshortleftharpoon", "rightharpoonaboveshortbar"], 1.75, 716], xLeftrightharpoons: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716], longLeftrightharpoons: [["shortbaraboveleftharpoon", "shortrightharpoonabovebar"], 1.75, 716] }; +var ml = { widehat1: [1062, 239, 0.24], widehat2: [2364, 300, 0.3], widehat3: [2364, 360, 0.36], widehat4: [2364, 420, 0.42], widecheck1: [1062, 239, 0.24], widecheck2: [2364, 300, 0.3], widecheck3: [2364, 360, 0.36], widecheck4: [2364, 420, 0.42], widetilde1: [600, 260, 0.26], widetilde2: [1033, 286, 0.286], widetilde3: [2339, 306, 0.306], widetilde4: [2340, 312, 0.34], overarc: [1061, 159, 0.3], underarc: [1061, 159, 0.3] }; +var C0 = { doubleleftarrow: `M262 157 +l10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3 + 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28 + 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5 +c2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5 + 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87 +-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7 +-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z +m8 0v40h399730v-40zm0 194v40h399730v-40z`, doublerightarrow: `M399738 392l +-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5 + 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88 +-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68 +-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18 +-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782 +c-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3 +-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z`, leftarrow: `M400000 241H110l3-3c68.7-52.7 113.7-120 + 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8 +-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247 +c-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208 + 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3 + 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202 + l-3-3h399890zM100 241v40h399900v-40z`, leftbrace: `M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117 +-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7 + 5-6 9-10 13-.7 1-7.3 1-20 1H6z`, leftbraceunder: `M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13 + 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688 + 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7 +-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z`, overarc: "M529 0c179 0 524 115 524 115 5 1 9 5 9 10 0 1-1 2-1 3l-4 22c-1 5-5 9-11 9h-2s-338-93-512-92c-174 0-513 92-513 92h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13 0 0 342-115 520-115z", underarc: `m 529 160 + c -179 0 -524 -115 -524 -115 + c -5 -1 -9 -5 -9 -10 + c 0 -1 1 -2 1 -3 + l 4 -22 + c 1 -5 5 -9 11 -9 + h 2 + s 338 93 512 92 + c 174 0 513 -92 513 -92 + h 2 + c 5 0 9 4 11 9 + l 5 22 + c 1 6 -2 12 -8 13 + c 0 0 -342 115 -520 115 + z + `, leftgroup: `M400000 80 +H435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0 + 435 0h399565z`, leftgroupunder: `M400000 262 +H435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219 + 435 219h399565z`, leftharpoon: `M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3 +-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5 +-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7 +-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z`, leftharpoonplus: `M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5 + 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3 +-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7 +-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z +m0 0v40h400000v-40z`, leftharpoondown: `M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333 + 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5 + 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667 +-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z`, leftharpoondownplus: `M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12 + 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7 +-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0 +v40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z`, lefthook: `M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5 +-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3 +-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21 + 71.5 23h399859zM103 281v-40h399897v40z`, leftlinesegment: `M40 281 V428 H0 V94 H40 V241 H400000 v40z +M40 281 V428 H0 V94 H40 V241 H400000 v40z`, leftmapsto: `M40 281 V448H0V74H40V241H400000v40z +M40 281 V448H0V74H40V241H400000v40z`, leftToFrom: `M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23 +-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8 +c28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3 + 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z`, longequal: `M0 50 h400000 v40H0z m0 194h40000v40H0z +M0 50 h400000 v40H0z m0 194h40000v40H0z`, midbrace: `M200428 334 +c-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14 +-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7 + 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11 + 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z`, midbraceunder: `M199572 214 +c100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14 + 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3 + 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0 +-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z`, oiintSize1: `M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6 +-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z +m368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8 +60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z`, oiintSize2: `M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8 +-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z +m502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2 +c0 110 84 276 504 276s502.4-166 502.4-276z`, oiiintSize1: `M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6 +-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z +m525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0 +85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z`, oiiintSize2: `M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8 +-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z +m770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1 +c0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z`, rightarrow: `M0 241v40h399891c-47.3 35.3-84 78-110 128 +-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 + 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 + 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85 +-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 + 151.7 139 205zm0 0v40h399900v-40z`, rightbrace: `M400000 542l +-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5 +s-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1 +c124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z`, rightbraceunder: `M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3 + 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237 +-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z`, rightgroup: `M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0 + 3-1 3-3v-38c-76-158-257-219-435-219H0z`, rightgroupunder: `M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18 + 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z`, rightharpoon: `M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3 +-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2 +-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 + 69.2 92 94.5zm0 0v40h399900v-40z`, rightharpoonplus: `M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11 +-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7 + 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z +m0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z`, rightharpoondown: `M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8 + 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5 +-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95 +-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z`, rightharpoondownplus: `M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8 + 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 + 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3 +-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z +m0-194v40h400000v-40zm0 0v40h400000v-40z`, righthook: `M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3 + 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0 +-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21 + 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z`, rightlinesegment: `M399960 241 V94 h40 V428 h-40 V281 H0 v-40z +M399960 241 V94 h40 V428 h-40 V281 H0 v-40z`, rightToFrom: `M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23 + 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32 +-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142 +-167z M100 147v40h399900v-40zM0 341v40h399900v-40z`, twoheadleftarrow: `M0 167c68 40 + 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69 +-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3 +-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19 +-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101 + 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z`, twoheadrightarrow: `M400000 167 +c-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3 + 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42 + 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333 +-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70 + 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z`, widetilde1: `M200 55.538c-77 0-168 73.953-177 73.953-3 0-7 +-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0 + 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0 + 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128 +-68.267.847-113-73.952-191-73.952z`, widetilde2: `M344 55.266c-142 0-300.638 81.316-311.5 86.418 +-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9 + 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114 +c1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751 + 181.476 676 181.476c-149 0-189-126.21-332-126.21z`, widetilde3: `M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457 +-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0 + 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697 + 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696 + -338 0-409-156.573-744-156.573z`, widetilde4: `M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345 +-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409 + 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9 + 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409 + -175.236-744-175.236z`, vec: `M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5 +3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11 +10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63 +-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1 +-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59 +H213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359 +c-16-25.333-24-45-24-59z`, widehat1: `M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22 +c-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z`, widehat2: `M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`, widehat3: `M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`, widehat4: `M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10 +-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z`, widecheck1: `M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1, +-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z`, widecheck2: `M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`, widecheck3: `M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`, widecheck4: `M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10, +-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z`, baraboveleftarrow: `M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202 +c4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5 +c-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130 +s-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47 +121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6 +s2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11 +c0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z +M100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z`, rightarrowabovebar: `M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32 +-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0 +13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39 +-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5 +-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5 +-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67 +151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z`, baraboveshortleftharpoon: `M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17 +c2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21 +c-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40 +c-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z +M0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z`, rightharpoonaboveshortbar: `M0,241 l0,40c399126,0,399993,0,399993,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z`, shortbaraboveleftharpoon: `M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11 +c1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9, +1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7, +-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z +M93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z`, shortrightharpoonabovebar: `M53,241l0,40c398570,0,399437,0,399437,0 +c4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199, +-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6 +c-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z +M500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z` }; +function E0(t37) { + if (ml[t37]) { + let [c, u, d] = ml[t37], m = ``; + return `${m}`; + } + let [e, r, i, n] = dl[t37], o, a, s = i / 1e3; + e.length === 3 ? (o = ["slice-1-of-3", "slice-2-of-3", "slice-3-of-3"], a = ["xMinYMin", "xMidYMin", "xMaxYMin"]) : e.length === 2 ? (o = ["slice-1-of-2", "slice-2-of-2"], a = ["xMinYMin", "xMaxYMin"]) : (o = ["slice-1-of-1"], a = [n]); + let l = e.map((c, u) => ``).join(""); + return `${l}`; +} +function T0(t37) { + return dl[t37] ? dl[t37][2] / 1e3 : ml[t37][2]; +} +function dh(t37) { + let e = []; + for (let r = 0; r < t37.length; r++) { + let i = t37.charCodeAt(r); + if (i === 13 && t37.charCodeAt(r + 1) === 10 && (i = 10, r++), (i === 13 || i === 12) && (i = 10), i === 0 && (i = 65533), i >= 55296 && i <= 56319) { + let n = t37.charCodeAt(r + 1); + if (n >= 56320 && n <= 57343) { + let o = i - 55296, a = n - 56320; + i = 2 ** 16 + o * 2 ** 10 + a, r++; + } + } + e.push(i); + } + return e; +} +var ma = 8205; +var mh = [[ma, 1], [65038, 2], [127995, 5], [129456, 4], [917536, 96]]; +var da; +var D0 = [127462, 127487]; +function K0(t37) { + var e; + if (da === void 0) { + da = {}; + for (let r of mh) + for (let i = r[0]; i <= r[0] + r[1] - 1; i++) + da[i] = true; + } + return (e = da[t37]) != null ? e : false; +} +function ph(t37) { + return t37 >= D0[0] && t37 <= D0[1]; +} +function pa(t37) { + if (/^[\u0020-\u00FF]*$/.test(t37)) + return t37; + let e = [], r = dh(t37), i = 0; + for (; i < r.length; ) { + let n = r[i++], o = r[i]; + if (o === ma) { + let a = i - 1; + for (i += 2; r[i] === ma; ) + i += 2; + e.push(String.fromCodePoint(...r.slice(a, i - a + 1))); + } else if (K0(o)) { + let a = i - 1; + for (; K0(r[i]); ) + i += r[i] === ma ? 2 : 1; + e.push(String.fromCodePoint(...r.slice(a, 2 * i - a - 1))); + } else + ph(n) ? (i += 1, e.push(String.fromCodePoint(...r.slice(i - 2, 2)))) : e.push(String.fromCodePoint(n)); + } + return e; +} +var pl = class { + constructor(e) { + this.obeyspaces = false; + this.pos = 0; + this.s = pa(e); + } + end() { + return this.pos >= this.s.length; + } + get() { + return this.pos < this.s.length ? this.s[this.pos++] : ""; + } + peek() { + return this.s[this.pos]; + } + match(e) { + let r = typeof this.s == "string" ? e.exec(this.s.slice(this.pos)) : e.exec(this.s.slice(this.pos).join("")); + return r != null && r[0] ? (this.pos += r[0].length, r[0]) : ""; + } + next() { + if (this.end()) + return null; + if (!this.obeyspaces && this.match(/^[ \f\n\r\t\v\u00A0\u2028\u2029]+/) || this.obeyspaces && this.match(/^[ \f\n\r\t\v\u00A0\u2028\u2029]/)) + return ""; + let e = this.get(); + if (e === "\\") { + if (!this.end()) { + let r = this.match(/^[a-zA-Z\*]+/); + return r ? this.match(/^[ \f\n\r\t\v\u00A0\u2028\u2029]*/) : r = this.get(), "\\" + r; + } + } else { + if (e === "{") + return "<{>"; + if (e === "}") + return "<}>"; + if (e === "^") { + if (this.peek() === "^") { + this.get(); + let r = this.match(/^(\^(\^(\^(\^[\da-f])?[\da-f])?[\da-f])?[\da-f])?[\da-f]{2}/); + if (r) + return String.fromCodePoint(Number.parseInt(r.slice(r.lastIndexOf("^") + 1), 16)); + } + return e; + } else if (e === "#") { + if (!this.end()) { + let r = false; + if (/[\d?@]/.test(this.peek()) && (r = true, this.pos + 1 < this.s.length)) { + let i = this.s[this.pos + 1]; + r = /[^\dA-Za-z]/.test(i); + } + return r ? "#" + this.get() : "#"; + } + } else if (e === "$") + return this.peek() === "$" ? (this.get(), "<$$>") : "<$>"; + } + return e; + } +}; +function hh(t37, e) { + var n, o, a, s; + let r = [], i = t37.next(); + if (i && i !== "\\relax") { + if (i === "\\noexpand") + i = t37.next(), i && r.push(i); + else if (i === "\\obeyspaces") + t37.obeyspaces = true; + else if (i === "\\bgroup") + r.push("<{>"); + else if (i === "\\egroup") + r.push("<}>"); + else if (i === "\\string") { + if (i = t37.next(), i) + if (i.startsWith("\\")) + for (let l of i) + r.push(l === "\\" ? "\\backslash" : l); + else + i === "<{>" ? r.push("\\{") : i === "" ? r.push("~") : i === "<}>" && r.push("\\}"); + } else if (i === "\\csname") { + for (; t37.peek() === ""; ) + t37.next(); + let l = "", c = false, u = []; + do { + if (u.length === 0) + if (/^#[\d?@]$/.test(t37.peek())) { + let d = t37.get().slice(1); + u = Ki((o = (n = e == null ? void 0 : e(d)) != null ? n : e == null ? void 0 : e("?")) != null ? o : "\\placeholder{}", e), i = u[0]; + } else + i = t37.next(), u = i ? [i] : []; + c = u.length === 0, !c && i === "\\endcsname" && (c = true, u.shift()), c || (c = i === "<$>" || i === "<$$>" || i === "<{>" || i === "<}>" || typeof i == "string" && i.length > 1 && i.startsWith("\\")), c || (l += u.shift()); + } while (!c); + l && r.push("\\" + l), r.push(...u); + } else if (i !== "\\endcsname") + if (i.length > 1 && i.startsWith("#")) { + let l = i.slice(1); + r.push(...Ki((s = (a = e == null ? void 0 : e(l)) != null ? a : e == null ? void 0 : e("?")) != null ? s : "\\placeholder{}", e)); + } else + r.push(i); + } + return r; +} +function Ki(t37, e = null) { + let r = [], i = ""; + for (let a of t37.toString().split(/\r?\n/)) { + i && r.push(i), i = " "; + let s = a.match(/((?:\\%)|[^%])*/); + s !== null && r.push(s[0]); + } + let n = new pl(r.join("")), o = []; + do + o.push(...hh(n, e)); + while (!n.end()); + return o; +} +function K(t37) { + let e = "", r = []; + for (let i of t37) + i && (e && /^[a-zA-Z\*]/.test(i) && r.push(e), r.push(i), /^\\[a-zA-Z]+\*?[\"\'][^\ ]+$/.test(i) && r.push(" "), e = /\\[a-zA-Z]+\*?$/.test(i) ? " " : ""); + return r.join(""); +} +function I(t37, ...e) { + return t37.startsWith("\\"), e.length === 0 ? t37 : K([t37, ...e.map((r) => `{${r}}`)]); +} +function ur(t37) { + return K(t37.map((e) => { + var r; + return (r = { "": " ", "<$$>": "$$", "<$>": "$", "<{>": "{", "<}>": "}" }[e]) != null ? r : e; + })); +} +var zr = class zr2 { + constructor(e) { + zr2._registry[e] = this; + } + static createAtom(e, r, i) { + return zr2._registry[e].createAtom(r, ee(r, e), i); + } + static serialize(e, r) { + var i; + if (!e || e.length === 0) + return ""; + if ((i = r.skipStyles) != null && i) { + let n = []; + for (let o of O0(e)) { + let a = zr2._registry[o[0].mode]; + n.push(...a.serialize(o, r)); + } + return K(n); + } + return K(gh(e, r)); + } + static getFont(e, r, i) { + return zr2._registry[e].getFont(r, i); + } +}; +zr._registry = {}; +var ce = zr; +function O0(t37) { + let e = [], r = [], i = "NONE"; + for (let n of t37) + n.type !== "first" && (n.mode !== i ? (r.length > 0 && e.push(r), r = [n], i = n.mode) : r.push(n)); + return r.length > 0 && e.push(r), e; +} +function ha(t37) { + if (!t37 || t37.mode !== "math") + return ""; + let { style: e } = t37; + return !e || !e.variantStyle ? "" : e.variantStyle === "bold" || e.variantStyle === "bolditalic" ? "bold" : ""; +} +function fa(t37) { + if (!t37) + return ""; + let { style: e } = t37; + if (!e) + return ""; + let r = e.variant; + return r === void 0 ? "normal" : (!["calligraphic", "fraktur", "double-struck", "script", "monospace", "sans-serif"].includes(r) && e.variantStyle && (r += "-" + e.variantStyle), r); +} +function Ye(t37, e) { + let r = [], i = [], n; + for (let o of t37) { + if (o.type === "first") + continue; + let a; + e === "variant" ? a = fa(o) : e === "bold" ? a = ha(o) : a = o.style[e], a === n ? i.push(o) : (i.length > 0 && r.push(i), i = [o], n = a); + } + return i.length > 0 && r.push(i), r; +} +function B0(t37, e) { + var o; + let { parent: r } = t37[0], i = r == null ? void 0 : r.style.color, n = []; + for (let a of O0(t37)) { + let s = e.defaultMode; + for (let l of Ye(a, "color")) { + let c = l[0].style, u = ce._registry[l[0].mode].serialize(l, g(p({}, e), { defaultMode: s === "text" ? "text" : "math" })); + !e.skipStyles && c.color && c.color !== "none" && (!r || i !== c.color) ? n.push(I("\\textcolor", (o = c.verbatimColor) != null ? o : c.color, K(u))) : n.push(K(u)); + } + } + return n; +} +function fh(t37, e) { + let { parent: r } = t37[0], i = r == null ? void 0 : r.style.backgroundColor; + return Ye(t37, "backgroundColor").map((n) => { + var o; + if (n.length > 0 || n[0].type !== "box") { + let a = n[0].style; + if (a.backgroundColor && a.backgroundColor !== "none" && (!r || i !== a.backgroundColor)) + return I("\\colorbox", (o = a.verbatimBackgroundColor) != null ? o : a.backgroundColor, K(B0(n, g(p({}, e), { defaultMode: "text" })))); + } + return K(B0(n, e)); + }); +} +function gh(t37, e) { + if (t37.length === 0) + return []; + let { parent: r } = t37[0], i = r == null ? void 0 : r.style.fontSize, n = []; + for (let o of Ye(t37, "fontSize")) { + let a = o[0].style.fontSize, s = fh(o, e); + s && (a && a !== "auto" && (!r || i !== a) ? n.push(["", "\\tiny", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"][a], ...s) : n.push(...s)); + } + return n; +} +function ga(t37) { + return t37 ? { mord: "ord", mbin: "bin", mop: "op", mrel: "rel", mopen: "open", mclose: "close", mpunct: "punct", minner: "inner", spacing: "ignore", latex: "latex", composition: "inner", error: "inner", placeholder: "ord", supsub: "ignore" }[t37] : void 0; +} +function Nr(t37) { + if (t37.length === 0) + return "ord"; + let e = ga(t37[0].type), r = ga(t37[t37.length - 1].type); + return e && e === r ? e : "ord"; +} +function Kn(t37, e) { + if (typeof t37 == "string") + return t37; + if (typeof t37 == "number") { + Number.isFinite(t37); + let r = Math.ceil(100 * t37) / 100; + return r === 0 ? "0" : r.toString() + (e != null ? e : ""); + } + return ""; +} +var w = class t { + constructor(e, r) { + var n, o, a, s, l; + if (typeof e == "number" ? this.value = String.fromCodePoint(e) : typeof e == "string" ? this.value = e : X(e) ? this.children = e.filter((c) => c !== null) : e && e instanceof t && (this.children = [e]), this.children) + for (let c of this.children) + c.parent = this; + this.type = (n = r == null ? void 0 : r.type) != null ? n : "ignore", this.isSelected = (r == null ? void 0 : r.isSelected) === true, r != null && r.caret && (this.caret = r.caret), this.classes = (o = r == null ? void 0 : r.classes) != null ? o : "", this.isTight = (a = r == null ? void 0 : r.isTight) != null ? a : false, r != null && r.attributes && (this.attributes = r.attributes); + let i = r == null ? void 0 : r.fontFamily; + r != null && r.style && this.value && (i = (l = ce.getFont((s = r.mode) != null ? s : "math", this, g(p({ variant: "normal" }, r.style), { letterShapeStyle: r.letterShapeStyle }))) != null ? l : void 0), i || (i = "Main-Regular"), this._height = 0, this._depth = 0, this._width = 0, this.hasExplicitWidth = false, this.skew = 0, this.italic = 0, this.maxFontSize = 0, this.scale = 1, (r == null ? void 0 : r.maxFontSize) !== void 0 && (this.maxFontSize = r.maxFontSize), yh(this, i); + } + set atomID(e) { + e === void 0 || e.length === 0 || (this.id = e); + } + selected(e) { + if (this.isSelected !== e && (this.isSelected = e, this.children)) + for (let r of this.children) + r.selected(e); + } + setStyle(e, r, i) { + if (r === void 0) + return; + let n = Kn(r, i); + n.length > 0 && (this.cssProperties || (this.cssProperties = {}), this.cssProperties[e] = n); + } + setTop(e) { + Number.isFinite(e) && Math.abs(e) > 0.01 && (this.cssProperties || (this.cssProperties = {}), this.cssProperties.top = Kn(e, "em"), this.height -= e, this.depth += e); + } + get left() { + var e; + return (e = this.cssProperties) != null && e["margin-left"] ? Number.parseFloat(this.cssProperties["margin-left"]) : 0; + } + set left(e) { + Number.isFinite(e) && (e === 0 ? this.cssProperties && delete this.cssProperties["margin-left"] : (this.cssProperties || (this.cssProperties = {}), this.cssProperties["margin-left"] = Kn(e, "em"))); + } + set right(e) { + Number.isFinite(e) && (e === 0 ? this.cssProperties && delete this.cssProperties["margin-right"] : (this.cssProperties || (this.cssProperties = {}), this.cssProperties["margin-right"] = Kn(e, "em"))); + } + set bottom(e) { + Number.isFinite(e) && (e === 0 ? this.cssProperties && delete this.cssProperties["margin-bottom"] : (this.cssProperties || (this.cssProperties = {}), this.cssProperties["margin-bottom"] = Kn(e, "em"))); + } + get width() { + return this._width * this.scale; + } + set width(e) { + this._width = e, this.hasExplicitWidth = true; + } + set softWidth(e) { + } + get height() { + return this._height * this.scale; + } + set height(e) { + this._height = e; + } + get depth() { + return this._depth * this.scale; + } + set depth(e) { + this._depth = e; + } + wrap(e) { + let r = e.parent; + if (!r) + return this; + e.isPhantom && this.setStyle("opacity", 0); + let i = e.color; + i && i !== r.color && this.setStyle("color", i); + let n = e.backgroundColor; + this.isSelected && (n = Cc(n)), n && n !== r.backgroundColor && (this.setStyle("background-color", n), this.setStyle("display", "inline-block")); + let o = e.scalingFactor; + return this.scale = o, this.skew *= o, this.italic *= o, this; + } + toMarkup() { + var c, u, d, m; + let e = (c = this.value) != null ? c : ""; + if (this.children) + for (let h of this.children) + e += h.toMarkup(); + let r = ""; + if (this.svgBody) + r = E0(this.svgBody); + else if (this.svgOverlay) { + r = '${this.svgOverlay}`; + } + let i = "", n = this.classes.split(" "); + n.push((d = { latex: "ML__raw-latex", placeholder: "ML__placeholder", error: "ML__error" }[this.type]) != null ? d : ""), this.caret === "latex" && n.push("ML__latex-caret"), this.isSelected && n.push("ML__selected"); + let o = n.length === 1 ? n[0] : n.filter((h, f, b) => h.length > 0 && b.indexOf(h) === f).join(" "); + if (o.length > 0 && (i += ` class="${o}"`), this.id && (i += ` data-atom-id=${this.id}`), this.cssId && (i += ` id="${this.cssId.replace(/ /g, "-")}" `), this.attributes && (i += " " + Object.keys(this.attributes).map((h) => `${h}="${this.attributes[h]}"`).join(" ")), this.htmlData) { + let h = this.htmlData.split(","); + for (let f of h) { + let b = f.match(/([^=]+)=(.+$)/); + if (b) { + let S = b[1].trim().replace(/ /g, "-"); + S && (i += ` data-${S}="${b[2]}" `); + } else { + let S = f.trim().replace(/ /g, "-"); + S && (i += ` data-${S} `); + } + } + } + let a = (m = this.cssProperties) != null ? m : {}; + this.hasExplicitWidth && a.width === void 0 && (a.width = `${Math.ceil(this._width * 100) / 100}em`); + let s = Object.keys(a).map((h) => `${h}:${a[h]}`); + if (this.scale !== void 0 && this.scale !== 1 && (e.length > 0 || r.length > 0) && s.push(`font-size: ${Math.ceil(this.scale * 1e4) / 100}%`), this.htmlStyle) { + let h = this.htmlStyle.split(";"), f = ""; + for (let b of h) { + let S = b.match(/([^=]+):(.+$)/); + if (S) { + let M = S[1].trim().replace(/ /g, "-"); + M && (f += `${M}:${S[2]};`); + } + } + f && (i += ` style="${f}"`); + } + s.length > 0 && (i += ` style="${s.join(";")}"`); + let l = ""; + return i.length > 0 || r.length > 0 ? l = `${e}${r}` : l = e, this.caret === "text" ? l += '' : this.caret === "math" && (l += ''), l; + } + tryCoalesceWith(e) { + if (this.svgBody || !this.value || e.svgBody || !e.value) + return false; + let r = this.children && this.children.length > 0, i = e.children && e.children.length > 0; + if (r || i) + return false; + if (e.cssProperties || this.cssProperties) { + for (let l of ["border", "border-left", "border-right", "border-right-width", "left", "margin", "margin-left", "margin-right", "padding", "position", "width"]) + if (e.cssProperties && l in e.cssProperties || this.cssProperties && l in this.cssProperties) + return false; + } + let n = this.cssProperties ? Object.keys(this.cssProperties).length : 0, o = e.cssProperties ? Object.keys(e.cssProperties).length : 0; + if (n !== o) + return false; + if (n > 0) { + for (let l of Object.keys(this.cssProperties)) + if (this.cssProperties[l] !== e.cssProperties[l]) + return false; + } + let a = this.classes.trim().replace(/\s+/g, " ").split(" "), s = e.classes.trim().replace(/\s+/g, " ").split(" "); + if (a.length !== s.length) + return false; + a.sort(), s.sort(); + for (let [l, c] of a.entries()) + if (c === "ML__vertical-separator" || c !== s[l]) + return false; + return this.value += e.value, this.height = Math.max(this.height, e.height), this.depth = Math.max(this.depth, e.depth), this._width = this._width + e._width, this.maxFontSize = Math.max(this.maxFontSize, e.maxFontSize), this.italic = e.italic, true; + } +}; +function hl(t37) { + if (!t37 || t37.length === 0) + return []; + t37[0].children = hl(t37[0].children); + let e = [t37[0]]; + for (let r = 1; r < t37.length; r++) + e[e.length - 1].tryCoalesceWith(t37[r]) || (t37[r].children = hl(t37[r].children), e.push(t37[r])); + return e; +} +function dr(t37) { + return t37.children && (t37.children = hl(t37.children)), t37; +} +function mr(t37, e) { + if (!t37) + return new w(null, e); + let r = new w(null, { classes: "ML__strut", type: "ignore" }); + r.setStyle("height", Math.max(0, t37.height), "em"); + let i = [r]; + if (t37.depth !== 0) { + let n = new w(null, { classes: "ML__strut--bottom", type: "ignore" }); + n.setStyle("height", t37.height + t37.depth, "em"), n.setStyle("vertical-align", -t37.depth, "em"), i.push(n); + } + return i.push(t37), new w(i, g(p({}, e), { type: "lift" })); +} +function Bi(t37) { + let e = T0(t37) / 2, r = new w(null, { maxFontSize: 0 }); + return r.height = e + 0.166, r.depth = e - 0.166, r.svgBody = t37, r; +} +function yh(t37, e) { + var r; + if (t37.type === "latex") { + t37.height = 0.9, t37.depth = 0.2, t37._width = 1; + return; + } + if (t37.value) { + t37.height = -1 / 0, t37.depth = -1 / 0, t37._width = 0, t37.skew = -1 / 0, t37.italic = -1 / 0; + for (let i = 0; i < t37.value.length; i++) { + let n = cr(t37.value.codePointAt(i), e); + t37.height = Math.max(t37.height, n.height), t37.depth = Math.max(t37.depth, n.depth), t37._width += n.width, t37.skew = n.skew, t37.italic = n.italic; + } + return; + } + if (t37.children && t37.children.length > 0) { + let i = -1 / 0, n = -1 / 0, o = 0; + for (let a of t37.children) + a.height > i && (i = a.height), a.depth > n && (n = a.depth), o = Math.max(o, (r = a.maxFontSize) != null ? r : 0); + t37.height = i, t37.depth = n, t37._width = t37.children.reduce((a, s) => a + s.width, 0), t37.maxFontSize = o; + } +} +function bh(t37) { + if ("individualShift" in t37) { + let e = t37.individualShift, r = e[0]; + if (r == null) + return [null, 0]; + let i = [r], n = -r.shift - r.box.depth, o = n; + for (let a = 1; a < e.length; a++) { + let s = e[a], l = -s.shift - o - s.box.depth, c = l - (r.box.height + r.box.depth); + o = o + l, i.push(c), i.push(s), r = s; + } + return [i, n]; + } + if ("top" in t37) { + let e = t37.top; + for (let r of t37.children) + e -= typeof r == "number" ? r : r.box.height + r.box.depth; + return [t37.children, e]; + } else { + if ("bottom" in t37) + return [t37.children, -t37.bottom]; + if ("firstBaseline" in t37) { + let e = t37.firstBaseline[0]; + if (typeof e == "number") + throw new Error("First child must be an element."); + return [t37.firstBaseline, -e.box.depth]; + } else if ("shift" in t37) { + let e = t37.children[0]; + if (typeof e == "number") + throw new Error("First child must be an element."); + return [t37.children, -e.box.depth - t37.shift]; + } + } + return [null, 0]; +} +function xh(t37) { + var h; + let [e, r] = bh(t37); + if (!e) + return [[], 0, 0]; + let i = new w(null, { classes: "ML__pstrut" }), n = 0; + for (let f of e) + if (typeof f != "number") { + let b = f.box; + n = Math.max(n, b.maxFontSize, b.height); + } + n += 2, i.height = n, i.setStyle("height", n, "em"); + let o = [], a = r, s = r, l = r, c = 0; + for (let f of e) { + if (typeof f == "number") + l += f; + else { + let b = f.box, S = (h = f.classes) != null ? h : [], M = new w([i, b], { classes: S.join(" "), style: f.style }); + b.setStyle("height", b.height + b.depth, "em"), b.setStyle("display", "inline-block"), M.setStyle("top", -n - l - b.depth, "em"), f.marginLeft && M.setStyle("margin-left", f.marginLeft, "em"), f.marginRight && M.setStyle("margin-right", f.marginRight, "em"), o.push(M), l += b.height + b.depth, c = Math.max(c, M.width); + } + a = Math.min(a, l), s = Math.max(s, l); + } + o.forEach((f) => { + f.softWidth = c; + }); + let u = new w(o, { classes: "ML__vlist" }); + if (u.softWidth = c, u.height = s, u.setStyle("height", s, "em"), a >= 0) + return [[new w(u, { classes: "ML__vlist-r" })], s, -a]; + let d = new w(new w(null), { classes: "ML__vlist" }); + d.height = -a, d.setStyle("height", -a, "em"); + let m = new w(8203, { classes: "ML__vlist-s", maxFontSize: 0 }); + return m.softWidth = 0, m.height = 0, m.depth = 0, [[new w([u, m], { classes: "ML__vlist-r" }), new w(d, { classes: "ML__vlist-r" })], s, -a]; +} +var U = class extends w { + constructor(e, r) { + var a; + let [i, n, o] = xh(e); + super(i.length === 1 ? i[0] : i, { type: r == null ? void 0 : r.type, classes: ((a = r == null ? void 0 : r.classes) != null ? a : "") + " ML__vlist-t" + (i.length === 2 ? " ML__vlist-t2" : "") }), this.height = n, this.depth = o, this.softWidth = i.reduce((s, l) => Math.max(s, l.width), 0); + } +}; +function P0(t37, e) { + var c, u, d, m, h; + let r = t37.metrics, i = new w(e.base), n = (c = e.baseShift) != null ? c : 0, o = (u = e.slant) != null ? u : 0, a = 0, s = 0; + e.above && (a = (d = e.aboveShift) != null ? d : Math.max(r.bigOpSpacing1, r.bigOpSpacing3 - e.above.depth)), e.below && (s = (m = e.belowShift) != null ? m : Math.max(r.bigOpSpacing2, r.bigOpSpacing4 - e.below.height)); + let l = null; + if (e.below && e.above) { + let f = r.bigOpSpacing5 + e.below.height + e.below.depth + s + i.depth + n; + l = new U({ bottom: f, children: [r.bigOpSpacing5, { box: e.below, marginLeft: -o, classes: ["ML__center"] }, s, { box: i, classes: ["ML__center"] }, a, { box: e.above, marginLeft: o, classes: ["ML__center"] }, r.bigOpSpacing5] }).wrap(t37); + } else if (e.below && !e.above) + l = new U({ top: i.height - n, children: [r.bigOpSpacing5, { box: e.below, marginLeft: -o, classes: ["ML__center"] }, s, { box: i, classes: ["ML__center"] }] }).wrap(t37); + else if (!e.below && e.above) { + let f = i.depth + n; + l = new U({ bottom: f, children: [{ box: i, classes: ["ML__center"] }, a, { box: e.above, marginLeft: o, classes: ["ML__center"] }, r.bigOpSpacing5] }).wrap(t37); + } else { + let f = i.depth + n; + l = new U({ bottom: f, children: [{ box: i }, r.bigOpSpacing5] }).wrap(t37); + } + return new w(l, { type: (h = e.type) != null ? h : "op" }); +} +var ya = 7; +var On = 6; +var Pn = 5; +var pr = 4; +var Fr = 3; +var Ke = 2; +var hr = 1; +var ve = 0; +var St = class { + constructor(e, r, i) { + this.id = e, this.sizeDelta = r, this.cramped = i; + let n = { "-4": 2, "-3": 1, 0: 0 }[r]; + this.metrics = Object.keys(ul).reduce((o, a) => g(p({}, o), { [a]: ul[a][n] }), {}); + } + getFontSize(e) { + return Math.max(1, e + this.sizeDelta); + } + get sup() { + return Qe[[ve, hr, ve, hr, Ke, Fr, Ke, Fr][this.id]]; + } + get sub() { + return Qe[[ve, ve, ve, ve, Ke, Ke, Ke, Ke][this.id]]; + } + get fracNum() { + return Qe[[ve, hr, ve, hr, Ke, Fr, pr, Pn][this.id]]; + } + get fracDen() { + return Qe[[ve, ve, ve, ve, Ke, Ke, pr, pr][this.id]]; + } + get cramp() { + return Qe[[ve, ve, Ke, Ke, pr, pr, On, On][this.id]]; + } + get isTight() { + return this.sizeDelta < 0; + } +}; +var Bn = { 7: new St(ya, 0, false), 6: new St(On, 0, true), 5: new St(Pn, 0, false), 4: new St(pr, 0, true), 3: new St(Fr, -3, false), 2: new St(Ke, -3, true), 1: new St(hr, -4, false), 0: new St(ve, -4, true) }; +var Qe = g(p({}, Bn), { displaystyle: Bn[ya], textstyle: Bn[Pn], scriptstyle: Bn[Fr], scriptscriptstyle: Bn[hr] }); +function gl(t37, e) { + var i; + if (!t37) + return 0; + let r = { pt: 1, mm: 7227 / 2540, cm: 7227 / 254, ex: 35271 / 8192, px: 3 / 4, em: kt, bp: 803 / 800, dd: 1238 / 1157, pc: 12, in: 72.27, mu: 10 / 18 }[(i = t37.unit) != null ? i : "pt"]; + if (Number.isFinite(e)) { + let n = 10 ** e; + return Math.round(t37.dimension / kt * r * n) / n; + } + return t37.dimension * r; +} +function ba(t37, e) { + if (t37 === null) + return 0; + let r = gl(t37) / kt; + if (Number.isFinite(e)) { + let i = 10 ** e; + return Math.round(r * i) / i; + } + return r; +} +function fl(t37) { + var e; + return `${t37.dimension}${(e = t37.unit) != null ? e : "pt"}`; +} +function vh(t37) { + let e = fl(t37.glue); + return t37.grow && t37.grow.dimension !== 0 && (e += ` plus ${fl(t37.grow)}`), t37.shrink && t37.shrink.dimension !== 0 && (e += ` minus ${fl(t37.shrink)}`), e; +} +function ue(t37) { + var r, i; + if (t37 == null) + return null; + let e = ""; + if ("dimension" in t37 && (e = `${t37.dimension}${(r = t37.unit) != null ? r : "pt"}`), "glue" in t37 && (e = vh(t37)), "number" in t37) + if (!("base" in t37) || t37.base === "decimal") + e = Number(t37.number).toString(); + else if (t37.base === "alpha") + e = `\`${String.fromCodePoint(t37.number)}`; + else { + let n = Math.round(t37.number) >>> 0; + t37.base === "hexadecimal" ? (e = Number(n).toString(16).toUpperCase(), n <= 255 ? e = e.padStart(2, "0") : n <= 65535 ? e = e.padStart(4, "0") : n <= 16777215 ? e = e.padStart(6, "0") : e = e.padStart(8, "0"), e = `"${e}`) : t37.base === "octal" && (e = Number(n).toString(8), n <= 63 ? e = e.padStart(2, "0") : n <= 30583 ? e = e.padStart(4, "0") : e = e.padStart(8, "0"), e = `'${e}`); + } + return "register" in t37 && ("factor" in t37 && (t37.factor === -1 ? e = "-" : t37.factor !== 1 && (e = Number(t37.factor).toString())), "global" in t37 && t37.global && (e += "\\global"), e += `\\${t37.register}`), "string" in t37 && (e = t37.string), (i = t37.relax) != null && i && (e += "\\relax"), e; +} +function et(t37, e) { + return t37 == null ? null : "number" in t37 ? g(p({}, t37), { number: t37.number * e }) : "register" in t37 ? "factor" in t37 && t37.factor ? g(p({}, t37), { factor: t37.factor * e }) : g(p({}, t37), { factor: e }) : "dimension" in t37 ? g(p({}, t37), { dimension: t37.dimension * e }) : "glue" in t37 ? t37.shrink && t37.grow ? { glue: et(t37.glue, e), shrink: et(t37.shrink, e), grow: et(t37.grow, e) } : t37.shrink ? { glue: et(t37.glue, e), shrink: et(t37.shrink, e) } : t37.grow ? { glue: et(t37.glue, e), grow: et(t37.grow, e) } : { glue: et(t37.glue, e) } : null; +} +var _h = { "p@": { dimension: 1 }, "z@": { dimension: 0 }, maxdimen: { dimension: 16383.99999 }, hfuzz: { dimension: 0.1 }, vfuzz: { dimension: 0.1 }, overfullrule: { dimension: 5 }, hsize: { dimension: 6.5, unit: "in" }, vsize: { dimension: 8.9, unit: "in" }, parindent: { dimension: 20 }, maxdepth: { dimension: 4 }, splitmaxdepth: { register: "maxdimen" }, boxmaxdepth: { register: "maxdimen" }, delimitershortfall: { dimension: 5 }, nulldelimiterspace: { dimension: 1.2, unit: "pt" }, scriptspace: { dimension: 0.5 }, topskip: { dimension: 10 }, splittopskip: { dimension: 10 }, normalbaselineskip: { dimension: 12 }, normallineskip: { dimension: 1 }, normallineskiplimit: { dimension: 0 }, jot: { dimension: 3 }, doublerulesep: { dimension: 2 }, arrayrulewidth: { dimension: 0.4 }, arraycolsep: { dimension: 5 }, fboxsep: { dimension: 3 }, fboxrule: { dimension: 0.4 }, "z@skip": { glue: { dimension: 0 }, shrink: { dimension: 0 }, grow: { dimension: 0 } }, hideskip: { glue: { dimension: -1e3 }, grow: { dimension: 1, unit: "fill" } }, "@flushglue": { glue: { dimension: 0 }, grow: { dimension: 1, unit: "fill" } }, parskip: { glue: { dimension: 0 }, grow: { dimension: 1 } }, abovedisplayskip: { glue: { dimension: 12 }, grow: { dimension: 3 }, shrink: { dimension: 9 } }, abovedisplayshortskip: { glue: { dimension: 0 }, grow: { dimension: 3 } }, belowdisplayskip: { glue: { dimension: 12 }, grow: { dimension: 3 }, shrink: { dimension: 9 } }, belowdisplayshortskip: { glue: { dimension: 7 }, grow: { dimension: 3 }, shrink: { dimension: 4 } }, parfillskip: { glue: { dimension: 0 }, grow: { dimension: 1, unit: "fil" } }, thinmuskip: { glue: { dimension: 3, unit: "mu" } }, medmuskip: { glue: { dimension: 4, unit: "mu" }, grow: { dimension: 2, unit: "mu" }, shrink: { dimension: 4, unit: "mu" } }, thickmuskip: { glue: { dimension: 5, unit: "mu" }, grow: { dimension: 5, unit: "mu" } }, smallskipamount: { glue: { dimension: 3 }, grow: { dimension: 1 }, shrink: { dimension: 1 } }, medskipamount: { glue: { dimension: 6 }, grow: { dimension: 2 }, shrink: { dimension: 3 } }, bigskipamount: { glue: { dimension: 12 }, grow: { dimension: 2 }, shrink: { dimension: 4 } }, pretolerance: 100, tolerance: 200, hbadness: 1e3, vbadness: 1e3, linepenalty: 10, hyphenpenalty: 50, exhyphenpenalty: 50, binoppenalty: 700, relpenalty: 500, clubpenalty: 150, widowpenalty: 150, displaywidowpenalty: 50, brokenpenalty: 100, predisplaypenalty: 1e4, doublehyphendemerits: 1e4, finalhyphendemerits: 5e3, adjdemerits: 1e4, tracinglostchars: 1, uchyph: 1, delimiterfactor: 901, defaulthyphenchar: "\\-", defaultskewchar: -1, newlinechar: -1, showboxbreadth: 5, showboxdepth: 3, errorcontextlines: 5, interdisplaylinepenalty: 100, interfootnotelinepenalty: 100, baselineSkip: 1.2, arraystretch: 1, month: new Date().getMonth() + 1, day: new Date().getDate(), year: new Date().getFullYear() }; +function xa() { + return p({}, _h); +} +function Rn() { + return { registers: xa(), smartFence: false, renderPlaceholder: void 0, placeholderSymbol: "\u25A2", letterShapeStyle: O.locale.startsWith("fr") ? "french" : "tex", minFontScale: 0, maxMatrixCols: 10, colorMap: Tr, backgroundColorMap: gi, getMacro: (t37) => wo(t37, xi()) }; +} +var T = class t2 { + constructor(e, r) { + var o, a, s, l, c, u, d, m, h, f, b, S, M, x, v; + let i; + e != null && e.parent ? (this.parent = e.parent, i = e.parent, this.registers = {}) : (i = p(p({}, Rn()), (o = e == null ? void 0 : e.from) != null ? o : {}), this.registers = i.registers), i.atomIdsSettings && (this.atomIdsSettings = p({}, i.atomIdsSettings)), this.renderPlaceholder = i.renderPlaceholder, this.isPhantom = (l = (s = e == null ? void 0 : e.isPhantom) != null ? s : (a = this.parent) == null ? void 0 : a.isPhantom) != null ? l : false, this.letterShapeStyle = i.letterShapeStyle, this.minFontScale = i.minFontScale, this.maxMatrixCols = i.maxMatrixCols, r != null && r.color && r.color !== "none" ? this.color = r.color : this.color = (u = (c = this.parent) == null ? void 0 : c.color) != null ? u : "", r != null && r.backgroundColor && r.backgroundColor !== "none" ? this.backgroundColor = r.backgroundColor : this.backgroundColor = (m = (d = this.parent) == null ? void 0 : d.backgroundColor) != null ? m : "", r != null && r.fontSize && r.fontSize !== "auto" && r.fontSize !== ((h = this.parent) == null ? void 0 : h.size) ? this.size = r.fontSize : this.size = (b = (f = this.parent) == null ? void 0 : f.size) != null ? b : Di; + let n = (M = (S = this.parent) == null ? void 0 : S.mathstyle) != null ? M : Qe.displaystyle; + if (typeof (e == null ? void 0 : e.mathstyle) == "string") { + if (i instanceof t2) + switch (e.mathstyle) { + case "cramp": + n = n.cramp; + break; + case "superscript": + n = n.sup; + break; + case "subscript": + n = n.sub; + break; + case "numerator": + n = n.fracNum; + break; + case "denominator": + n = n.fracDen; + break; + } + switch (e.mathstyle) { + case "textstyle": + n = Qe.textstyle; + break; + case "displaystyle": + n = Qe.displaystyle; + break; + case "scriptstyle": + n = Qe.scriptstyle; + break; + case "scriptscriptstyle": + n = Qe.scriptscriptstyle; + break; + case "": + case "auto": + break; + } + } + this.mathstyle = n, this.smartFence = i.smartFence, this.placeholderSymbol = i.placeholderSymbol, this.colorMap = (x = i.colorMap) != null ? x : (k) => k, this.backgroundColorMap = (v = i.backgroundColorMap) != null ? v : (k) => k, this.getMacro = i.getMacro, this.parent !== void 0 || this.registers; + } + makeID() { + if (!this.atomIdsSettings) + return; + if (this.atomIdsSettings.overrideID) + return this.atomIdsSettings.overrideID; + if (typeof this.atomIdsSettings.seed != "number") + return `${Date.now().toString(36).slice(-2)}${Math.floor(Math.random() * 1e5).toString(36)}`; + let e = this.atomIdsSettings.seed.toString(36); + return this.atomIdsSettings.seed += 1, e; + } + scale(e) { + return e * this.effectiveFontSize; + } + get scalingFactor() { + return this.parent ? this.effectiveFontSize / this.parent.effectiveFontSize : 1; + } + get isDisplayStyle() { + return this.mathstyle.id === ya || this.mathstyle.id === On; + } + get isCramped() { + return this.mathstyle.cramped; + } + get isTight() { + return this.mathstyle.isTight; + } + get metrics() { + return this.mathstyle.metrics; + } + get effectiveFontSize() { + return Math.max(Dn[Math.max(1, this.size + this.mathstyle.sizeDelta)], this.minFontScale); + } + getRegister(e) { + var r; + if ((r = this.registers) != null && r[e]) + return this.registers[e]; + if (this.parent) + return this.parent.getRegister(e); + } + getRegisterAsNumber(e) { + let r = this.getRegister(e); + if (typeof r == "number") + return r; + if (typeof r == "string") + return Number(r); + } + getRegisterAsGlue(e) { + var r; + if ((r = this.registers) != null && r[e]) { + let i = this.registers[e]; + return typeof i == "object" && "glue" in i ? i : typeof i == "object" && "dimension" in i ? { glue: { dimension: i.dimension } } : typeof i == "number" ? { glue: { dimension: i } } : void 0; + } + if (this.parent) + return this.parent.getRegisterAsGlue(e); + } + getRegisterAsEm(e, r) { + return ba(this.getRegisterAsDimension(e), r); + } + getRegisterAsDimension(e) { + var r; + if ((r = this.registers) != null && r[e]) { + let i = this.registers[e]; + return typeof i == "object" && "glue" in i ? i.glue : typeof i == "object" && "dimension" in i ? i : typeof i == "number" ? { dimension: i } : void 0; + } + if (this.parent) + return this.parent.getRegisterAsDimension(e); + } + setRegister(e, r) { + if (r === void 0) { + delete this.registers[e]; + return; + } + this.registers[e] = r; + } + evaluate(e) { + if (!e || !("register" in e)) + return e; + let r = this; + if ("global" in e && e.global) + for (; r.parent; ) + r = r.parent; + let i = 1; + "factor" in e && e.factor !== 1 && e.factor !== void 0 && (i = e.factor); + let n = r.getRegister(e.register); + if (n === void 0) + return; + if (typeof n == "string") + return { string: Number(n).toString() + n }; + if (typeof n == "number") + return { number: i * n }; + let o = r.evaluate(n); + if (o !== void 0) + return "string" in o ? { string: Number(n).toString() + o.string } : "number" in o ? { number: i * o.number } : "dimension" in o ? g(p({}, o), { dimension: i * o.dimension }) : "glue" in o ? g(p({}, o), { glue: g(p({}, o.glue), { dimension: i * o.glue.dimension }), shrink: o.shrink ? g(p({}, o.shrink), { dimension: i * o.shrink.dimension }) : void 0, grow: o.grow ? g(p({}, o.grow), { dimension: i * o.grow.dimension }) : void 0 }) : e; + } + toDimension(e) { + let r = this.evaluate(e); + return r === void 0 ? null : "dimension" in r ? r : "glue" in r ? r.glue : "number" in r ? { dimension: r.number } : null; + } + toEm(e, r) { + if (e === null) + return 0; + let i = this.toDimension(e); + return i === null ? 0 : gl(i, r) / kt; + } + toNumber(e) { + if (e === null) + return null; + let r = this.evaluate(e); + return r === void 0 ? null : "number" in r ? r.number : "dimension" in r ? r.dimension : "glue" in r ? r.glue.dimension : "string" in r ? Number(r.string) : null; + } + toColor(e) { + var i, n; + if (e === null) + return null; + let r = this.evaluate(e); + return r === void 0 ? null : "string" in r ? (n = (i = this.colorMap) == null ? void 0 : i.call(this, r.string)) != null ? n : r.string : null; + } + toBackgroundColor(e) { + var i, n; + if (e === null) + return null; + let r = this.evaluate(e); + return r === void 0 ? null : "string" in r ? (n = (i = this.backgroundColorMap) == null ? void 0 : i.call(this, r.string)) != null ? n : r.string : null; + } +}; +var gr = ["body", "above", "below", "superscript", "subscript"]; +function fr(t37) { + return typeof t37 == "string" && gr.includes(t37); +} +function In(t37) { + return t37 !== void 0 && Array.isArray(t37) && t37.length === 2; +} +var y = class t3 { + constructor(e) { + var r, i, n, o, a, s, l; + this.type = e.type, typeof e.value == "string" && (this.value = e.value), this.command = (i = (r = e.command) != null ? r : this.value) != null ? i : "", this.mode = (n = e.mode) != null ? n : "math", e.isFunction && (this.isFunction = true), e.limits && (this.subsupPlacement = e.limits), this.style = p({}, (o = e.style) != null ? o : {}), this.displayContainsHighlight = (a = e.displayContainsHighlight) != null ? a : false, this.captureSelection = (s = e.captureSelection) != null ? s : false, this.skipBoundary = (l = e.skipBoundary) != null ? l : false, e.verbatimLatex !== void 0 && e.verbatimLatex !== null && (this.verbatimLatex = e.verbatimLatex), e.args && (this.args = e.args), e.body && (this.body = e.body), this._changeCounter = 0; + } + static createBox(e, r, i) { + var s; + if (!r) + return null; + let n = Mh(r), o = []; + for (let l of n) { + let c = l[0].style, u = wh(e, l, { style: { color: c.color, backgroundColor: c.backgroundColor, fontSize: c.fontSize } }); + u && o.push(u); + } + if (o.length === 0) + return null; + let a = ((s = i == null ? void 0 : i.classes) != null ? s : "").trim(); + return o.length === 1 && !a && !(i != null && i.type) ? o[0].wrap(e) : new w(o, { classes: a, type: i == null ? void 0 : i.type }).wrap(e); + } + static serialize(e, r) { + return ce.serialize(e, r); + } + static commonAncestor(e, r) { + if (e === r || e.parent === r.parent) + return e.parent; + let i = /* @__PURE__ */ new WeakSet(), { parent: n } = e; + for (; n; ) + i.add(n), n = n.parent; + for (n = r.parent; n; ) { + if (i.has(n)) + return n; + n = n.parent; + } + } + static fromJson(e) { + return typeof e == "string" ? new t3({ type: "mord", value: e, mode: "math" }) : new t3(e); + } + toJson() { + if (this._json) + return this._json; + let e = {}; + if (this.type && (e.type = this.type), this.mode !== "math" && (e.mode = this.mode), this.command && this.command !== this.value && (e.command = this.command), this.value !== void 0 && (e.value = this.value), this.style && Object.keys(this.style).length > 0 && (e.style = p({}, this.style)), this.verbatimLatex !== void 0 && (e.verbatimLatex = this.verbatimLatex), this.subsupPlacement && (e.subsupPlacement = this.subsupPlacement), this.explicitSubsupPlacement && (e.explicitSubsupPlacement = true), this.isFunction && (e.isFunction = true), this.displayContainsHighlight && (e.displayContainsHighlight = true), this.skipBoundary && (e.skipBoundary = true), this.captureSelection && (e.captureSelection = true), this.args && (e.args = kh(this.args)), this._branches) + for (let r of Object.keys(this._branches)) + this._branches[r] && (e[r] = this._branches[r].filter((i) => i.type !== "first").map((i) => i.toJson())); + return e.type === "mord" && Object.keys(e).length === 2 && "value" in e ? e.value : (this._json = e, e); + } + get changeCounter() { + return this.parent ? this.parent.changeCounter : this._changeCounter; + } + set isDirty(e) { + e && (this._json = void 0, this.parent || this._changeCounter++, "verbatimLatex" in this && (this.verbatimLatex = void 0), this._children = void 0, this.parent && (this.parent.isDirty = true)); + } + _serialize(e) { + if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") + return this.verbatimLatex; + let r = ee(this.command, this.mode); + return r != null && r.serialize ? r.serialize(this, e) : this.body && this.command ? K([I(this.command, this.bodyToLatex(e)), this.supsubToLatex(e)]) : this.body ? K([this.bodyToLatex(e), this.supsubToLatex(e)]) : !this.value || this.value === "\u200B" ? "" : this.command; + } + bodyToLatex(e) { + var i; + let r = (i = e.defaultMode) != null ? i : this.mode === "math" ? "math" : "text"; + return ce.serialize(this.body, g(p({}, e), { defaultMode: r })); + } + aboveToLatex(e) { + return ce.serialize(this.above, e); + } + belowToLatex(e) { + return ce.serialize(this.below, e); + } + supsubToLatex(e) { + let r = ""; + if (e = g(p({}, e), { defaultMode: "math" }), this.branch("subscript") !== void 0) { + let i = ce.serialize(this.subscript, e); + i.length === 0 ? r += "_{}" : i.length === 1 ? /^[0-9]$/.test(i) ? r += `_${i}` : r += `_{${i}}` : r += `_{${i}}`; + } + if (this.branch("superscript") !== void 0) { + let i = ce.serialize(this.superscript, e); + i.length === 0 ? r += "^{}" : i.length === 1 ? i === "\u2032" ? r += "^\\prime " : i === "\u2033" ? r += "^\\doubleprime " : /^[0-9]$/.test(i) ? r += `^${i}` : r += `^{${i}}` : r += `^{${i}}`; + } + return r; + } + get treeDepth() { + let e = 1, r = this.parent; + for (; r; ) + r = r.parent, e += 1; + return e; + } + get inCaptureSelection() { + let e = this; + for (; e; ) { + if (e.captureSelection) + return true; + e = e.parent; + } + return false; + } + get parentPrompt() { + let e = this.parent; + for (; e; ) { + if (e.type === "prompt" && !e.captureSelection) + return e; + e = e.parent; + } + return null; + } + branch(e) { + if (fr(e) && this._branches) + return this._branches[e]; + } + get branches() { + if (!this._branches) + return []; + let e = []; + for (let r of gr) + this._branches[r] && e.push(r); + return e; + } + createBranch(e) { + return fr(e), fr(e) ? (this._branches ? this._branches[e] || (this._branches[e] = [this.makeFirstAtom(e)]) : this._branches = { [e]: [this.makeFirstAtom(e)] }, this.isDirty = true, this._branches[e]) : []; + } + get row() { + return In(this.parentBranch) ? this.parentBranch[0] : -1; + } + get col() { + return In(this.parentBranch) ? this.parentBranch[1] : -1; + } + get body() { + var e; + return (e = this._branches) == null ? void 0 : e.body; + } + set body(e) { + this.setChildren(e, "body"); + } + get superscript() { + var e; + return (e = this._branches) == null ? void 0 : e.superscript; + } + set superscript(e) { + this.setChildren(e, "superscript"); + } + get subscript() { + var e; + return (e = this._branches) == null ? void 0 : e.subscript; + } + set subscript(e) { + this.setChildren(e, "subscript"); + } + get above() { + var e; + return (e = this._branches) == null ? void 0 : e.above; + } + set above(e) { + this.setChildren(e, "above"); + } + get below() { + var e; + return (e = this._branches) == null ? void 0 : e.below; + } + set below(e) { + this.setChildren(e, "below"); + } + applyStyle(e) { + this.isDirty = true, this.style = p(p({}, this.style), e), this.style.fontFamily === "none" && delete this.style.fontFamily, this.style.fontShape === "auto" && delete this.style.fontShape, this.style.fontSeries === "auto" && delete this.style.fontSeries, this.style.color === "none" && (delete this.style.color, delete this.style.verbatimColor), this.style.backgroundColor === "none" && (delete this.style.backgroundColor, delete this.style.verbatimBackgroundColor), this.style.fontSize === "auto" && delete this.style.fontSize; + for (let r of this.children) + r.applyStyle(e); + } + getInitialBaseElement() { + var e, r, i; + return this.hasEmptyBranch("body") ? this : ((e = this.body) == null || e[0].type, (i = (r = this.body[1]) == null ? void 0 : r.getInitialBaseElement()) != null ? i : this); + } + getFinalBaseElement() { + return this.hasEmptyBranch("body") ? this : this.body[this.body.length - 1].getFinalBaseElement(); + } + isCharacterBox() { + return this.type === "leftright" || this.type === "genfrac" || this.type === "subsup" || this.type === "delim" || this.type === "array" || this.type === "surd" ? false : this.getFinalBaseElement().type === "mord"; + } + hasEmptyBranch(e) { + let r = this.branch(e); + return r ? (r.length > 0, r[0].type, r.length === 1) : true; + } + setChildren(e, r) { + var n; + if (!e || (fr(r), !fr(r))) + return; + let i = ((n = e[0]) == null ? void 0 : n.type) === "first" ? [...e] : [this.makeFirstAtom(r), ...e]; + this._branches ? this._branches[r] = i : this._branches = { [r]: i }; + for (let o of e) + o.parent = this, o.parentBranch = r; + this.isDirty = true; + } + makeFirstAtom(e) { + let r = new t3({ type: "first", mode: this.mode }); + return r.parent = this, r.parentBranch = e, r; + } + addChild(e, r) { + e.type, this.createBranch(r).push(e), this.isDirty = true, e.parent = this, e.parentBranch = r; + } + addChildBefore(e, r) { + r.parentBranch; + let i = this.createBranch(r.parentBranch); + i.splice(i.indexOf(r), 0, e), this.isDirty = true, e.parent = this, e.parentBranch = r.parentBranch; + } + addChildAfter(e, r) { + r.parentBranch; + let i = this.createBranch(r.parentBranch); + i.splice(i.indexOf(r) + 1, 0, e), this.isDirty = true, e.parent = this, e.parentBranch = r.parentBranch; + } + addChildren(e, r) { + let i = this.createBranch(r); + for (let n of e) + n.parent = this, n.parentBranch = r, i.push(n); + this.isDirty = true; + } + addChildrenAfter(e, r) { + e.length === 0 || e[0].type, r.parentBranch; + let i = this.createBranch(r.parentBranch); + i.splice(i.indexOf(r) + 1, 0, ...e), this.isDirty = true; + for (let n of e) + n.parent = this, n.parentBranch = r.parentBranch; + return e[e.length - 1]; + } + removeBranch(e) { + let r = this.branch(e); + if (fr(e) && (this._branches[e] = void 0), !r) + return []; + for (let o of r) + o.parent = void 0, o.parentBranch = void 0; + r[0].type; + let [i, ...n] = r; + return this.isDirty = true, n; + } + removeChild(e) { + if (e.parent, e.type === "first") + return; + let r = this.branch(e.parentBranch), i = r.indexOf(e); + i >= 0, r.splice(i, 1), this.isDirty = true, e.parent = void 0, e.parentBranch = void 0; + } + get siblings() { + return this.parent ? this.parent.branch(this.parentBranch) : []; + } + get firstSibling() { + return this.siblings[0]; + } + get lastSibling() { + let { siblings: e } = this; + return e[e.length - 1]; + } + get isFirstSibling() { + return this === this.firstSibling; + } + get isLastSibling() { + return this === this.lastSibling; + } + get hasNoSiblings() { + return this.siblings.length === 1; + } + get leftSibling() { + this.parent; + let e = this.parent.branch(this.parentBranch); + return e[e.indexOf(this) - 1]; + } + get rightSibling() { + this.parent; + let e = this.parent.branch(this.parentBranch); + return e[e.indexOf(this) + 1]; + } + get hasChildren() { + return !!(this._branches && this.children.length > 0); + } + get firstChild() { + return this.hasChildren, this.children[0]; + } + get lastChild() { + this.hasChildren; + let { children: e } = this; + return e[e.length - 1]; + } + get children() { + if (this._children) + return this._children; + if (!this._branches) + return []; + let e = []; + for (let r of gr) + if (this._branches[r]) + for (let i of this._branches[r]) + e.push(...i.children), e.push(i); + return this._children = e, e; + } + render(e) { + if (this.type === "first" && !e.atomIdsSettings) + return null; + let r = ee(this.command, this.mode); + if (r != null && r.render) + return r.render(this, e); + let i = new T({ parent: e }, this.style), n = this.createBox(i, { classes: this.parent ? "" : "ML__base" }); + return n ? (!this.subsupPlacement && (this.superscript || this.subscript) && (n = this.attachSupsub(i, { base: n })), n.wrap(i)) : null; + } + attachSupsub(e, r) { + var f; + let i = r.base, n = this.superscript, o = this.subscript; + if (!n && !o) + return i; + let a = null, s = null, l = (f = r.isCharacterBox) != null ? f : this.isCharacterBox(), c = 0; + if (n) { + let b = new T({ parent: e, mathstyle: "superscript" }); + a = t3.createBox(b, n), l || (c = i.height - e.metrics.supDrop * b.scalingFactor); + } + let u = 0; + if (o) { + let b = new T({ parent: e, mathstyle: "subscript" }); + s = t3.createBox(b, o), l || (u = i.depth + e.metrics.subDrop * b.scalingFactor); + } + let d; + e.isDisplayStyle ? d = e.metrics.sup1 : e.isCramped ? d = e.metrics.sup3 : d = e.metrics.sup2; + let m = 0.5 / kt / e.scalingFactor, h = null; + if (s && a) { + c = Math.max(c, d, a.depth + 0.25 * e.metrics.xHeight), u = Math.max(u, e.metrics.sub2); + let b = e.metrics.defaultRuleThickness; + if (c - a.depth - (s.height - u) < 4 * b) { + u = 4 * b - (c - a.depth) + s.height; + let M = 0.8 * e.metrics.xHeight - (c - a.depth); + M > 0 && (c += M, u -= M); + } + let S = this.type === "extensible-symbol" && i.italic ? -i.italic : 0; + h = new U({ individualShift: [{ box: s, shift: u, marginLeft: S }, { box: a, shift: -c }] }).wrap(e); + } else + s && !a ? (u = Math.max(u, e.metrics.sub1, s.height - 0.8 * $e), h = new U({ shift: u, children: [{ box: s, marginRight: m, marginLeft: this.isCharacterBox() ? -i.italic : 0 }] })) : !s && a && (c = Math.max(c, d, a.depth + 0.25 * $e), h = new U({ shift: -c, children: [{ box: a, marginRight: m }] })); + return new w([i, new w(h, { caret: this.caret, isSelected: this.isSelected, classes: "ML__msubsup" })], { type: r.type }); + } + attachLimits(e, r) { + let i = this.superscript ? t3.createBox(new T({ parent: e, mathstyle: "superscript" }, this.style), this.superscript) : null, n = this.subscript ? t3.createBox(new T({ parent: e, mathstyle: "subscript" }, this.style), this.subscript) : null; + return !i && !n ? r.base.wrap(e) : P0(e, g(p({}, r), { above: i, below: n })); + } + bind(e, r) { + if (!r || e.isPhantom || this.value === "\u200B") + return r; + let i = this.parent; + for (; i && !i.captureSelection; ) + i = i.parent; + return i != null && i.captureSelection || (this.id || (this.id = e.makeID()), r.atomID = this.id), r; + } + createBox(e, r) { + var s, l, c, u; + let i = (s = this.value) != null ? s : this.body, n = (l = r == null ? void 0 : r.boxType) != null ? l : ga(this.type), o = (c = r == null ? void 0 : r.classes) != null ? c : ""; + this.mode === "text" && (o += " ML__text"); + let a = typeof i == "string" || i === void 0 ? new w(i != null ? i : null, { type: n, isSelected: this.isSelected, mode: this.mode, maxFontSize: e.scalingFactor, style: g(p({ variant: "normal" }, this.style), { fontSize: Math.max(1, e.size + e.mathstyle.sizeDelta) }), letterShapeStyle: e.letterShapeStyle, classes: o }) : (u = t3.createBox(e, i, { type: n, classes: o })) != null ? u : new w(null); + return e.isTight && (a.isTight = true), (this.mode !== "math" || this.style.variant === "main") && (a.italic = 0), a.right = a.italic, this.bind(e, a), this.caret && !this.superscript && !this.subscript && (a.caret = this.caret), a; + } + isDigit() { + var e; + return this.type === "mord" && this.value ? /^[\d,\.]$/.test(this.value) : this.type === "group" && ((e = this.body) == null ? void 0 : e.length) === 2 ? this.body[0].type === "first" && this.body[1].value === "," : false; + } + asDigit() { + var e; + return this.type === "mord" && this.value && /^[\d,\.]$/.test(this.value) ? this.value : this.type === "group" && ((e = this.body) == null ? void 0 : e.length) === 2 && this.body[0].type === "first" && this.body[1].value === "," ? "." : ""; + } +}; +function Mh(t37) { + let e, r = [], i = []; + for (let n of t37) + if (n.type === "first" && i.push(n), !e && !n.style) + i.push(n); + else { + let o = n.style; + e && o.color === e.color && o.backgroundColor === e.backgroundColor && o.fontSize === e.fontSize ? i.push(n) : (i.length > 0 && r.push(i), i = [n], e = o); + } + return i.length > 0 && r.push(i), r; +} +function wh(t37, e, r) { + var s, l, c, u, d; + if (!e || e.length === 0) + return null; + let i = new T({ parent: t37 }, r.style), n = !((s = i.atomIdsSettings) != null && s.groupNumbers), o = []; + if (e.length === 1) { + let m = e[0], h = m.render(i); + h && (n && m.isSelected && h.selected(true), o = [h]); + } else { + let m = "", h = true; + for (let f of e) { + (l = i.atomIdsSettings) != null && l.groupNumbers && m && (h && f.isDigit() || !h && yl(f)) && (i.atomIdsSettings.overrideID = m); + let b = f.render(i); + i.atomIdsSettings && (i.atomIdsSettings.overrideID = void 0), b && ((c = i.atomIdsSettings) != null && c.groupNumbers && ((f.isDigit() || yl(f)) && (!m || h !== f.isDigit()) && (h = f.isDigit(), m = (u = f.id) != null ? u : ""), m && (!(f.isDigit() || yl(f)) || !f.hasEmptyBranch("superscript") || !f.hasEmptyBranch("subscript")) && (m = "")), n && f.isSelected && b.selected(true), o.push(b)); + } + } + if (o.length === 0) + return null; + let a = new w(o, g(p({ isTight: i.isTight }, r), { type: (d = r.type) != null ? d : "lift" })); + return a.isSelected = o.every((m) => m.isSelected), a.wrap(i); +} +function yl(t37) { + return t37.mode === "text"; +} +function kh(t37) { + return t37.map((e) => e === null ? "" : Array.isArray(e) && e[0] instanceof y ? { atoms: e.map((r) => r.toJson()) } : typeof e == "object" && "group" in e ? { group: e.group.map((r) => r.toJson()) } : e); +} +var Be = class t4 extends y { + constructor(e, r, i) { + super({ type: "text", command: e, mode: "text", displayContainsHighlight: true }), this.value = r, this.verbatimLatex = r, this.applyStyle(i); + } + static fromJson(e) { + return new t4(e.command, e.value, e.style); + } + render(e) { + let r = this.createBox(e); + return this.caret && (r.caret = this.caret), r; + } + _serialize(e) { + var r; + return (r = this.verbatimLatex) != null ? r : Es("text", this.value.codePointAt(0)); + } +}; +function R0(t37, e) { + if (t37.direction === e.direction) { + let r = t37.ranges.length; + if (e.ranges.length === r) { + let i = 0; + for (; i < r && Sh(t37.ranges[i], e.ranges[i]) === "equal"; ) + i++; + return i === r ? "equal" : "different"; + } + } + return "different"; +} +function Sh(t37, e) { + return t37[0] === e[0] && t37[1] === e[1] ? "equal" : "different"; +} +function te(t37) { + let e = 1 / 0, r = -1 / 0; + for (let i of t37.ranges) + e = Math.min(e, i[0], i[1]), r = Math.max(r, i[0], i[1]); + return [e, r]; +} +function Lt(t37) { + return typeof t37 == "number" && !Number.isNaN(t37); +} +function $r(t37) { + return Array.isArray(t37) && t37.length === 2; +} +function Oi(t37) { + return t37 != null && typeof t37 == "object" && "ranges" in t37 && Array.isArray(t37.ranges); +} +function I0(t37, e) { + let r = t37.at(e), i; + if (r) { + i = r.mode; + let n = r.parent; + for (; !i && n; ) + n && (i = n.mode), n = n.parent; + } + return i; +} +function Lh(t37, e) { + if (!e) + return ""; + if (typeof e == "string") + return e; + if (!t37 || e.after === void 0) + return e.value; + let r = false, i = false, n = false, o = false, a = false, s = false, l = false, c = false, u = false, d = false, m = false, h = false, f = false, b = false, S = false, M = t37[0], x = 0; + for (; M != null && M.type && /^(subsup|placeholder)$/.test(M.type); ) + x += 1, M = t37[x]; + return r = !M || M.type === "first", M && (b = M.mode === "text", i = !b && M.type === "mord" && vo.test(M.value), n = !b && M.type === "mord" && /\d+$/.test(M.value), o = !b && M.isFunction, a = M.type === "genfrac", s = M.type === "surd", l = M.type === "mbin", c = M.type === "mrel", u = M.type === "mop" || M.type === "operator" || M.type === "extensible-symbol", d = M.type === "mpunct" || M.type === "minner", m = M.type === "array", h = M.type === "mopen", f = M.type === "mclose" || M.type === "leftright", S = M.type === "space"), e.after.includes("nothing") && r || e.after.includes("letter") && i || e.after.includes("digit") && n || e.after.includes("function") && o || e.after.includes("frac") && a || e.after.includes("surd") && s || e.after.includes("binop") && l || e.after.includes("relop") && c || e.after.includes("operator") && u || e.after.includes("punct") && d || e.after.includes("array") && m || e.after.includes("openfence") && h || e.after.includes("closefence") && f || e.after.includes("text") && b || e.after.includes("space") && S ? e.value : ""; +} +function zn(t37, e, r) { + return r ? Lh(t37, r[e]) : ""; +} +var va = { "&": "\\&", "%": "\\%", $: "\\$", "''": "^{\\doubleprime}", "'''": "^{\\prime\\prime\\prime}", "''''": "^{\\prime\\prime\\prime\\prime}", alpha: "\\alpha", delta: "\\delta", Delta: "\\Delta", pi: "\\pi", Pi: "\\Pi", theta: "\\theta", Theta: "\\Theta", ii: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\imaginaryI" }, jj: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\imaginaryJ" }, ee: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\exponentialE" }, nabla: "\\nabla", grad: "\\nabla", del: "\\partial", deg: { after: "digit+space", value: "\\degree" }, infty: "\\infty", "\u221E": "\\infty", oo: { after: "nothing+digit+frac+surd+binop+relop+punct+array+openfence+closefence+space", value: "\\infty" }, "\u2211": "\\sum", sum: "\\sum_{#?}^{#?}", int: "\\int_{#?}^{#?}", prod: "\\prod_{#?}^{#?}", sqrt: "\\sqrt{#?}", "\u2206": "\\differentialD", "\u2202": "\\differentialD", arcsin: "\\arcsin", arccos: "\\arccos", arctan: "\\arctan", arcsec: "\\arcsec", arccsc: "\\arccsc", arsinh: "\\arsinh", arcosh: "\\arcosh", artanh: "\\artanh", arcsech: "\\arcsech", arccsch: "\\arccsch", arg: "\\arg", ch: "\\ch", cosec: "\\cosec", cosh: "\\cosh", cot: "\\cot", cotg: "\\cotg", coth: "\\coth", csc: "\\csc", ctg: "\\ctg", cth: "\\cth", sec: "\\sec", sinh: "\\sinh", sh: "\\sh", tanh: "\\tanh", tg: "\\tg", th: "\\th", sin: "\\sin", cos: "\\cos", tan: "\\tan", lg: "\\lg", lb: "\\lb", log: "\\log", ln: "\\ln", exp: "\\exp", lim: "\\lim_{#?}", dx: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\differentialD x" }, dy: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\differentialD y" }, dt: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\differentialD t" }, AA: "\\forall", EE: "\\exists", "!EE": "\\nexists", "&&": "\\land", xin: { after: "nothing+text+relop+punct+openfence+space", value: "x \\in" }, sint: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\sin t" }, in: { after: "nothing+letter+closefence", value: "\\in" }, "!in": "\\notin", NN: "\\mathbb{N}", ZZ: "\\Z", QQ: "\\Q", RR: "\\R", CC: "\\C", xx: "\\times", "+-": "\\pm", "\u2260": "\\ne", "!=": "\\ne", "\u2265": "\\ge", ">=": "\\ge", "\u2264": "\\le", "<=": "\\le", "<<": "\\ll", ">>": "\\gg", "~~": "\\approx", "\u2248": "\\approx", "?=": "\\questeq", "\xF7": "\\div", "\xAC": "\\neg", ":=": "\\coloneq", "::": "\\Colon", "(:": "\\langle", ":)": "\\rangle", beta: "\\beta", chi: "\\chi", epsilon: "\\epsilon", varepsilon: "\\varepsilon", eta: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\eta" }, gamma: "\\gamma", Gamma: "\\Gamma", iota: "\\iota", kappa: "\\kappa", lambda: "\\lambda", Lambda: "\\Lambda", mu: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\mu" }, nu: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\nu" }, \u00B5: "\\mu", phi: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\phi" }, Phi: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\Phi" }, varphi: "\\varphi", psi: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\psi" }, Psi: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\Psi" }, rho: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\rho" }, sigma: "\\sigma", Sigma: "\\Sigma", tau: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\tau" }, vartheta: "\\vartheta", upsilon: "\\upsilon", xi: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space", value: "\\xi" }, Xi: { after: "nothing+digit+function+frac+surd+binop+relop+punct+array+openfence+closefence+space+text", value: "\\Xi" }, zeta: "\\zeta", omega: "\\omega", Omega: "\\Omega", \u03A9: "\\omega", forall: "\\forall", exists: "\\exists", "!exists": "\\nexists", ":.": "\\therefore", liminf: "\\liminf_{#?}", limsup: "\\limsup_{#?}", argmin: "\\operatorname*{arg~min}_{#?}", argmax: "\\operatorname*{arg~max}_{#?}", det: "\\det", mod: "\\bmod{#?}", "(mod": "\\pmod{#?}", max: "\\max", min: "\\min", erf: "\\operatorname{erf}", erfc: "\\operatorname{erfc}", bessel: "\\operatorname{bessel}", mean: "\\operatorname{mean}", median: "\\operatorname{median}", fft: "\\operatorname{fft}", lcm: "\\operatorname{lcm}", gcd: "\\operatorname{gcd}", randomReal: "\\operatorname{randomReal}", randomInteger: "\\operatorname{randomInteger}", Re: "\\operatorname{Re}", Im: "\\operatorname{Im}", mm: { after: "nothing+digit+operator", value: "\\operatorname{mm}" }, cm: { after: "nothing+digit+operator", value: "\\operatorname{cm}" }, km: { after: "nothing+digit+operator", value: "\\operatorname{km}" }, kg: { after: "nothing+digit+operator", value: "\\operatorname{kg}" }, "...": "\\ldots", "+...": "+\\cdots", "-...": "-\\cdots", "->...": "\\to\\cdots", "-->...": "\\longrightarrow\\cdots", "->": "\\to", "|->": "\\mapsto", "-->": "\\longrightarrow", "<--": "\\longleftarrow", "=>": "\\Rightarrow", "==>": "\\Longrightarrow", "<=>": "\\Leftrightarrow", "<->": "\\leftrightarrow", "(.)": "\\odot", "(+)": "\\oplus", "(/)": "\\oslash", "(*)": "\\otimes", "(-)": "\\ominus", "||": "\\Vert", "*": "\\cdot", "**": "\\star", "***": "\\ast", "//": "\\slash", "\\\\": "\\backslash", setminus: "\\backslash", "|><": "\\ltimes", "><|": "\\rtimes", "|><|": "\\bowtie", "-:": "\\div", divide: "\\div", "@": "\\circ", "^^": "\\wedge", "^^^": "\\bigwedge", vv: "\\vee", vvv: "\\bigvee", nn: "\\cap", nnn: "\\bigcap", uu: "\\cup", uuu: "\\bigcup", "-=": "\\equiv", "~=": "\\cong", lt: "<", "lt=": "\\leq", gt: ">", "gt=": "\\geq", "-<": "\\prec", "-lt": "\\prec", "-<=": "\\preceq", ">-=": "\\succeq", prop: "\\propto", diamond: "\\diamond", square: "\\square", iff: "\\iff", sub: "\\subset", sup: "\\supset", sube: "\\subseteq", supe: "\\supseteq", uarr: "\\uparrow", darr: "\\downarrow", rarr: "\\rightarrow", rArr: "\\Rightarrow", larr: "\\leftarrow", lArr: "\\Leftarrow", harr: "\\leftrightarrow", hArr: "\\Leftrightarrow", aleph: "\\aleph", and: "\\land", or: "\\lor", not: "\\neg", "_|_": "\\bot", TT: "\\top", "|--": "\\vdash", "|==": "\\models", "|__": "\\lfloor", "__|": "\\rfloor", "|~": "\\lceil", "~|": "\\rceil", ">->": "\\rightarrowtail", "->>": "\\twoheadrightarrow", ">->>": "\\twoheadrightarrowtail", frac: "\\frac{#?}{#?}", cbrt: "\\sqrt[3]{#?}", nthroot: "\\sqrt[#?]{#?}" }; +function qt(t37, e) { + var i; + let r = (i = e == null ? void 0 : e.format) != null ? i : "auto"; + return r === "auto" && ([r, t37] = Ah(t37)), r === "ascii-math" ? (t37 = t37.replace(/\u2061/gu, ""), t37 = t37.replace(/\u3016/gu, "{"), t37 = t37.replace(/\u3017/gu, "}"), t37 = t37.replace(/([^\\])sinx/g, "$1\\sin x"), t37 = t37.replace(/([^\\])cosx/g, "$1\\cos x "), t37 = t37.replace(/\u2013/g, "-"), ["ascii-math", Ce(t37, { inlineShortcuts: e == null ? void 0 : e.inlineShortcuts })]) : ["latex", t37]; +} +function Ce(t37, e) { + var a; + if (t37 = t37.trim(), !t37) + return ""; + let r = (a = e.inlineShortcuts) != null ? a : va; + if (t37.startsWith("^") || t37.startsWith("_")) { + let { match: s, rest: l } = Vr(t37.slice(1), { inlineShortcuts: r, noWrap: true }); + return `${t37[0]}{${s}}${Ce(l, e)}`; + } + let i = t37.match(/^(sqrt|\u221A)(.*)/); + if (i) { + let { match: s, rest: l } = Vr(i[2], { inlineShortcuts: r, noWrap: true }); + return `\\sqrt{${s != null ? s : "\\placeholder{}"}}${Ce(l, e)}`; + } + if (i = t37.match(/^(\\cbrt|\u221B)(.*)/), i) { + let { match: s, rest: l } = Vr(i[2], { inlineShortcuts: r, noWrap: true }); + return `\\sqrt[3]{${s != null ? s : "\\placeholder{}"}}${Ce(l, e)}`; + } + if (i = t37.match(/^abs(.*)/), i) { + let { match: s, rest: l } = Vr(i[1], { inlineShortcuts: r, noWrap: true }); + return `\\left|${s != null ? s : "\\placeholder{}"}\\right|${Ce(l, e)}`; + } + if (i = t37.match(/^["”“](.*?)["”“](.*)/), i) + return `\\text{${i[1]}}${Ce(i[2], e)}`; + if (i = t37.match(/^([^a-zA-Z\(\{\[\_\^\\\s"]+)(.*)/), i) + return `${z0(i[1], r)}${Ce(i[2], e)}`; + if (/^([fgh])[^a-zA-Z]/.test(t37)) { + let { rest: s, match: l } = Vr(t37.slice(1), { inlineShortcuts: r, noWrap: true }), c = ""; + return t37[1] === "(" ? c = `${t37[0]}\\left(${l}\\right)` : c = t37[0] + l, c + Ce(s, e); + } + if (i = t37.match(/^([a-zA-Z]+)(.*)/), i) + return z0(i[1], r) + Ce(i[2], e); + let { match: n, rest: o } = Vr(t37, { inlineShortcuts: r, noWrap: true }); + if (n && o[0] === "/") { + let s = Vr(o.slice(1), { inlineShortcuts: r, noWrap: true }); + if (s.match) + return `\\frac{${n}}{${s.match}}${Ce(s.rest, e)}`; + } else if (n) + return t37.startsWith("(") ? "\\left(" + n + "\\right)" + Ce(o, e) : n + Ce(o, e); + return i = t37.match(/^(\s+)(.*)$/), i ? " " + Ce(i[2], e) : t37; +} +function Vr(t37, e) { + let r = ""; + t37 = t37.trim(); + let i = t37, n = t37.charAt(0), o = { "(": ")", "{": "}", "[": "]" }[n]; + if (o) { + let a = 1, s = 1; + for (; s < t37.length && a > 0; ) + t37[s] === n && a++, t37[s] === o && a--, s++; + a === 0 ? (e.noWrap && n === "(" ? r = Ce(t37.substring(1, s - 1), e) : (n === "{" && o === "}" && (n = "\\{", o = "\\}"), r = "\\left" + n + Ce(t37.substring(1, s - 1), e) + "\\right" + o), i = t37.slice(Math.max(0, s))) : (r = t37.substring(1, s), i = ""); + } else { + let a = t37.match(/^([a-zA-Z]+)/); + if (a) { + let s = zn(null, t37, e.inlineShortcuts); + if (s) + return s = s.replace("_{#?}", ""), s = s.replace("^{#?}", ""), { match: s, rest: t37.slice(s.length) }; + } + if (a = t37.match(/^([a-zA-Z])/), a) + return { match: a[1], rest: t37.slice(1) }; + if (a = t37.match(/^(-)?\d+(\.\d*)?/), a) + return { match: a[0], rest: t37.slice(a[0].length) }; + /^\\(left|right)/.test(t37) || (a = t37.match(/^(\\[a-zA-Z]+)/), a && (i = t37.slice(a[1].length), r = a[1])); + } + return { match: r, rest: i }; +} +function z0(t37, e) { + let r = zn(null, t37, e); + return r ? (r = r.replace("_{#?}", ""), r = r.replace("^{#?}", ""), r += " ") : r = t37, r; +} +var bl = [["\\[", "\\]"], ["\\(", "\\)"], ["$$", "$$"], ["$", "$"], ["\\begin{math}", "\\end{math}"], ["\\begin{displaymath}", "\\end{displaymath}"], ["\\begin{equation}", "\\end{equation}"], ["\\begin{equation*}", "\\end{equation*}"]]; +function _a(t37) { + let e = t37.trim(); + for (let r of bl) + if (e.startsWith(r[0]) && e.endsWith(r[1])) + return [true, e.substring(r[0].length, e.length - r[1].length)]; + return [false, t37]; +} +function Ah(t37) { + if (t37 = t37.trim(), t37.length <= 1) + return ["latex", t37]; + let e; + return [e, t37] = _a(t37), e ? ["latex", t37] : t37.startsWith("`") && t37.endsWith("`") ? (t37 = t37.substring(1, t37.length - 1), ["ascii-math", t37]) : t37.includes("\\") ? ["latex", t37] : /\$.+\$/.test(t37) ? ["latex", `\\text{${t37}}`] : [void 0, t37]; +} +var Ch = "$$"; +var Eh = "$$"; +var N0 = (t37, e, r) => (bl.some((i) => e.startsWith(i[0]) && e.endsWith(i[1])) || (e = `${Ch} ${e} ${Eh}`), e); +var Pi = class Pi2 { + constructor(e) { + Pi2._modes[e] = this; + } + static onPaste(e, r, i) { + var o; + if (!r.contentEditable && r.userSelect === "none") + return r.model.announce("plonk"), false; + if (typeof i == "string") { + let a = new DataTransfer(); + a.setData("text/plain", i), i = a; + } + let n = new ClipboardEvent("paste", { clipboardData: i, cancelable: true }); + return (o = r.host) != null && o.dispatchEvent(n) ? Pi2._modes[e].onPaste(r, i) : false; + } + static copyToClipboard(e, r) { + if (!e.contentEditable && e.userSelect === "none") { + e.model.announce("plonk"); + return; + } + let i = e.model, n = i.selectionIsCollapsed ? [0, i.lastOffset] : te(i.selection), o = i.getValue(n, r); + navigator.clipboard.writeText(o).then(() => { + }, () => e.model.announce("plonk")); + } + static onCopy(e, r) { + var a; + if (!r.clipboardData) + return; + if (!e.contentEditable && e.userSelect === "none") { + e.model.announce("plonk"); + return; + } + let i = e.model, n = i.selectionIsCollapsed ? [0, i.lastOffset] : te(i.selection), o = i.getAtoms(n); + if (o.every((s) => s.mode === "text" || !s.mode)) + r.clipboardData.setData("text/plain", o.filter((s) => s instanceof Be).map((s) => s.value).join("")); + else if (o.every((s) => s.mode === "latex")) + r.clipboardData.setData("text/plain", i.getAtoms(n, { includeChildren: true }).map((s) => { + var l; + return (l = s.value) != null ? l : ""; + }).join("")); + else { + let s; + o.length === 1 && o[0].verbatimLatex !== void 0 ? s = o[0].verbatimLatex : s = i.getValue(n, "latex-expanded"), r.clipboardData.setData("application/x-latex", s); + try { + r.clipboardData.setData("text/plain", e.options.onExport(e, s, n)); + } catch (l) { + } + if (o.length === 1) { + let l = o[0]; + (l.type === "root" || l.type === "group") && (o = l.body.filter((c) => c.type !== "first")); + } + try { + r.clipboardData.setData("application/json+mathlive", JSON.stringify(o.map((l) => l.toJson()))); + } catch (l) { + } + if ((a = window[Symbol.for("io.cortexjs.compute-engine")]) != null && a.ComputeEngine) { + let l = globalThis.MathfieldElement.computeEngine; + if (l) + try { + let c = l.jsonSerializationOptions; + l.jsonSerializationOptions = { metadata: ["latex"] }; + let u = l.parse(i.getValue(n, "latex-unstyled")); + l.jsonSerializationOptions = c; + let d = JSON.stringify(u.json); + d && r.clipboardData.setData("application/json", d); + } catch (c) { + } + } + } + r.preventDefault(); + } + static insert(e, r, i = {}) { + var o; + let n = i.mode === "auto" ? e.mode : (o = i.mode) != null ? o : e.mode; + return Pi2._modes[n].insert(e, r, i); + } + onPaste(e, r) { + return false; + } + insert(e, r, i) { + return false; + } +}; +Pi._modes = {}; +var z = Pi; +var F0 = [{ key: "left", command: "moveToPreviousChar" }, { key: "right", command: "moveToNextChar" }, { key: "up", command: "moveUp" }, { key: "down", command: "moveDown" }, { key: "shift+[ArrowLeft]", command: "extendSelectionBackward" }, { key: "shift+[ArrowRight]", command: "extendSelectionForward" }, { key: "shift+[ArrowUp]", command: "extendSelectionUpward" }, { key: "shift+[ArrowDown]", command: "extendSelectionDownward" }, { key: "[Backspace]", command: "deleteBackward" }, { key: "alt+[Delete]", command: "deleteBackward" }, { key: "[Delete]", command: "deleteForward" }, { key: "alt+[Backspace]", command: "deleteForward" }, { key: "alt+[ArrowLeft]", command: "moveToPreviousWord" }, { key: "alt+[ArrowRight]", command: "moveToNextWord" }, { key: "shift+alt+[ArrowLeft]", command: "extendToPreviousWord" }, { key: "shift+alt+[ArrowRight]", command: "extendToNextWord" }, { key: "ctrl+[ArrowLeft]", command: "moveToGroupStart" }, { key: "ctrl+[ArrowRight]", command: "moveToGroupEnd" }, { key: "shift+ctrl+[ArrowLeft]", command: "extendToGroupStart" }, { key: "shift+ctrl+[ArrowRight]", command: "extendToGroupEnd" }, { key: "[Home]", command: "moveToMathfieldStart" }, { key: "cmd+[ArrowLeft]", command: "moveToMathfieldStart" }, { key: "shift+[Home]", command: "extendToMathFieldStart" }, { key: "shift+cmd+[ArrowLeft]", command: "extendToMathFieldStart" }, { key: "[End]", command: "moveToMathfieldEnd" }, { key: "cmd+[ArrowRight]", command: "moveToMathfieldEnd" }, { key: "shift+[End]", command: "extendToMathFieldEnd" }, { key: "shift+cmd+[ArrowRight]", command: "extendToMathFieldEnd" }, { key: "[Pageup]", command: "moveToGroupStart" }, { key: "[Pagedown]", command: "moveToGroupEnd" }, { key: "[Tab]", command: "moveToNextGroup" }, { key: "shift+[Tab]", command: "moveToPreviousGroup" }, { key: "[Escape]", ifMode: "math", command: ["switchMode", "latex"] }, { key: "[Escape]", ifMode: "text", command: ["switchMode", "latex"] }, { key: "[Escape]", ifMode: "latex", command: ["complete", "complete", { selectItem: "true" }] }, { key: "\\", ifMode: "math", command: ["switchMode", "latex", "", "\\"] }, { key: "[IntlBackslash]", ifMode: "math", command: ["switchMode", "latex", "", "\\"] }, { key: "[Tab]", ifMode: "latex", command: ["complete", "accept-suggestion"] }, { key: "[Return]", ifMode: "latex", command: "complete" }, { key: "[Enter]", ifMode: "latex", command: "complete" }, { key: "shift+[Escape]", ifMode: "latex", command: ["complete", "reject"] }, { key: "[ArrowDown]", ifMode: "latex", command: "nextSuggestion" }, { key: "[ArrowUp]", ifMode: "latex", command: "previousSuggestion" }, { key: "ctrl+a", ifPlatform: "!macos", command: "selectAll" }, { key: "cmd+a", command: "selectAll" }, { key: "[Cut]", command: "cutToClipboard" }, { key: "[Copy]", command: "copyToClipboard" }, { key: "[Paste]", command: "pasteFromClipboard" }, { key: "[Clear]", command: "deleteBackward" }, { key: "[Undo]", command: "undo" }, { key: "[Redo]", command: "redo" }, { key: "[EraseEof]", command: "deleteToGroupEnd" }, { key: "ctrl+x", ifPlatform: "ios", command: "cutToClipboard" }, { key: "cmd+x", ifPlatform: "ios", command: "cutToClipboard" }, { key: "ctrl+c", ifPlatform: "ios", command: "copyToClipboard" }, { key: "cmd+c", ifPlatform: "ios", command: "copyToClipboard" }, { key: "ctrl+v", ifPlatform: "ios", command: "pasteFromClipboard" }, { key: "cmd+v", ifPlatform: "ios", command: "pasteFromClipboard" }, { key: "ctrl+z", ifPlatform: "!macos", command: "undo" }, { key: "cmd+z", command: "undo" }, { key: "ctrl+y", ifPlatform: "!macos", command: "redo" }, { key: "shift+cmd+y", command: "redo" }, { key: "shift+ctrl+z", ifPlatform: "!macos", command: "redo" }, { key: "shift+cmd+z", command: "redo" }, { key: "ctrl+b", ifPlatform: "macos", command: "moveToPreviousChar" }, { key: "ctrl+f", ifPlatform: "macos", command: "moveToNextChar" }, { key: "ctrl+p", ifPlatform: "macos", command: "moveUp" }, { key: "ctrl+n", ifPlatform: "macos", command: "moveDown" }, { key: "ctrl+a", ifPlatform: "macos", command: "moveToMathfieldStart" }, { key: "ctrl+e", ifPlatform: "macos", command: "moveToMathfieldEnd" }, { key: "shift+ctrl+b", ifPlatform: "macos", command: "extendSelectionBackward" }, { key: "shift+ctrl+f", ifPlatform: "macos", command: "extendSelectionForward" }, { key: "shift+ctrl+p", ifPlatform: "macos", command: "extendSelectionUpward" }, { key: "shift+ctrl+n", ifPlatform: "macos", command: "extendSelectionDownward" }, { key: "shift+ctrl+a", ifPlatform: "macos", command: "extendToMathFieldStart" }, { key: "shift+ctrl+e", ifPlatform: "macos", command: "extendToMathFieldEnd" }, { key: "alt+ctrl+b", ifPlatform: "macos", command: "moveToPreviousWord" }, { key: "alt+ctrl+f", ifPlatform: "macos", command: "moveToNextWord" }, { key: "shift+alt+ctrl+b", ifPlatform: "macos", command: "extendToPreviousWord" }, { key: "shift+alt+ctrl+f", ifPlatform: "macos", command: "extendToNextWord" }, { key: "ctrl+h", ifPlatform: "macos", command: "deleteBackward" }, { key: "ctrl+d", ifPlatform: "macos", command: "deleteForward" }, { key: "ctrl+l", ifPlatform: "macos", command: "scrollIntoView" }, { key: "ctrl+[Digit2]", ifMode: "math", command: ["insert", "\\sqrt{#0}"] }, { key: "ctrl+[Digit5]", ifMode: "math", command: "moveToOpposite" }, { key: "ctrl+[Digit6]", ifMode: "math", command: "moveToSuperscript" }, { key: "ctrl+[Return]", ifMode: "math", command: "addRowAfter" }, { key: "ctrl+[Enter]", ifMode: "math", command: "addRowAfter" }, { key: "cmd+[Return]", ifMode: "math", command: "addRowAfter" }, { key: "cmd+[Enter]", ifMode: "math", command: "addRowAfter" }, { key: "alt+p", ifMode: "math", command: ["insert", "\\pi"] }, { key: "alt+v", ifMode: "math", command: ["insert", "\\sqrt{#0}"] }, { key: "alt+o", ifMode: "math", command: ["insert", "\\emptyset"] }, { key: "alt+d", ifMode: "math", command: ["insert", "\\differentialD"] }, { key: "shift+alt+o", ifMode: "math", command: ["insert", "\\varnothing"] }, { key: "shift+alt+d", ifMode: "math", command: ["insert", "\\partial"] }, { key: "alt+[Backslash]", ifMode: "math", command: ["insert", "\\backslash"] }, { key: "[NumpadDivide]", ifMode: "math", command: ["insert", "\\frac{#@}{#?}"] }, { key: "alt+[NumpadDivide]", ifMode: "math", command: ["insert", "\\frac{#?}{#@}"] }, { key: "shift+alt+k", command: "toggleKeystrokeCaption" }, { key: "alt+[Space]", command: "toggleContextMenu" }, { key: "alt+shift+[Space]", command: "toggleVirtualKeyboard" }, { key: "alt+ctrl+[ArrowUp]", command: ["speak", "all", { withHighlighting: false }] }, { key: "alt+ctrl+[ArrowDown]", command: ["speak", "selection", { withHighlighting: false }] }, { key: "shift+[Quote]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["switchMode", "text", "", ""] }, { key: "shift+[Quote]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "text", command: ["switchMode", "math", "", ""] }, { key: "shift+alt+[KeyT]", ifMode: "math", command: ["switchMode", "text"] }, { key: "shift+alt+[KeyT]", ifMode: "text", command: ["switchMode", "math"] }, { key: "/", ifMode: "math", command: ["insert", "\\frac{#@}{#?}"] }, { key: "alt+/", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "/"] }, { key: "alt+shift+/", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "/"] }, { key: "alt+[BracketLeft]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "\\left\\lbrack #0 \\right\\rbrack"] }, { key: "ctrl+[Minus]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: "moveToSubscript" }, { key: "shift+alt+[BracketLeft]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "\\left\\lbrace #0 \\right\\rbrace"] }, { key: "ctrl+;", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: "addRowAfter" }, { key: "cmd+;", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: "addRowAfter" }, { key: "shift+ctrl+;", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: "addRowBefore" }, { key: "shift+cmd+;", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: "addRowBefore" }, { key: "ctrl+[Backspace]", ifMode: "math", command: "removeRow" }, { key: "cmd+[Backspace]", ifMode: "math", command: "removeRow" }, { key: "alt+[Tab]", ifMode: "math", command: "addColumnAfter" }, { key: "shift+alt+[Tab]", ifMode: "math", command: "addColumnBefore" }, { key: "alt+[Enter]", ifMode: "math", command: "addRowAfter" }, { key: "shift+alt+[Enter]", ifMode: "math", command: "addRowBefore" }, { key: "alt+[Return]", ifMode: "math", command: "addRowAfter" }, { key: "shift+alt+[Return]", ifMode: "math", command: "addRowBefore" }, { key: "shift+[Backspace]", ifMode: "math", command: "removeColumn" }, { key: "alt+[Digit5]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "$\\infty"] }, { key: "alt+[Digit9]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "("] }, { key: "alt+[Digit0]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", ")"] }, { key: "alt+|", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "|"] }, { key: "shift+[Backquote]", ifLayout: ["apple.en-intl", "windows.en-intl", "linux.en"], ifMode: "math", command: ["insert", "\\~"] }, { key: "[Backquote]", ifLayout: ["windows.french", "linux.french"], ifMode: "math", command: ["insert", "^2"] }, { key: "[Backquote]", ifLayout: ["windows.german", "linux.german"], ifMode: "math", command: ["insert", "^"] }, { key: "[IntlBackslash]", ifLayout: ["apple.german"], ifMode: "math", command: ["insert", "^"] }]; +var $0 = { "\\sqrt": ["alt+v", "ctrl+[Digit2]"], "\\pi": "alt+p", "\\infty": "alt+[Digit5]", "\\differentialD": "alt+d", "\\partial": "shift+alt+d", "\\frac": "Slash", "\\emptyset": "alt+o", "\\varnothing": "shift+alt+o", "\\~": "~" }; +function tt(t37) { + var e; + return ((e = t37.element) == null ? void 0 : e.mathfield) === t37; +} +function Th(t37) { + var e, r; + return (r = (e = t37.querySelector(".ML__caret")) != null ? e : t37.querySelector(".ML__text-caret")) != null ? r : t37.querySelector(".ML__latex-caret"); +} +function Ri(t37) { + let e = Th(t37); + if (!e) + return null; + let r = e.getBoundingClientRect(); + return { x: r.right, y: r.bottom, height: r.height }; +} +function Dh(t37) { + var r; + if (!t37.parent) + return "root"; + let e = (r = t37.parent.id) != null ? r : ""; + return e += typeof t37.parentBranch == "string" ? "-" + t37.parentBranch : `-${t37.parentBranch[0]}/${t37.parentBranch[0]}`, e; +} +function xl(t37, e, r) { + if (!e) + return null; + let i = t37.field.getBoundingClientRect(), n = e.right - e.left, o = e.bottom - e.top, a = Math.ceil(e.left - i.left + t37.field.scrollLeft * r), s = Math.ceil(e.top - i.top); + return { left: a, right: a + n, top: s, bottom: s + o }; +} +function V0(t37) { + let e = t37.getBoundingClientRect(), r = parseInt(getComputedStyle(t37).marginRight), i = { top: e.top - 1, bottom: e.bottom, left: e.left, right: e.right - 1 + r }; + if (t37.children.length === 0 || t37.tagName.toUpperCase() === "SVG") + return i; + for (let n of t37.children) + if (n.nodeType === 1 && "atomId" in n.dataset && !n.classList.contains("ML__pstrut")) { + let o = V0(n); + i.left = Math.min(i.left, o.left), i.right = Math.max(i.right, o.right), i.top = Math.min(i.top, o.top), i.bottom = Math.max(i.bottom, o.bottom); + } + return i; +} +function qr(t37, e) { + var n, o; + if (!e.id) + return null; + let r = (o = (n = t37.atomBoundsCache) == null ? void 0 : n.get(e.id)) != null ? o : null; + if (r !== null) + return r; + let i = t37.field.querySelector(`[data-atom-id="${e.id}"]`); + return r = i ? V0(i) : null, t37.atomBoundsCache && (r ? t37.atomBoundsCache.set(e.id, r) : t37.atomBoundsCache.delete(e.id)), r != null ? r : null; +} +function Kh(t37, e, r) { + let i = /* @__PURE__ */ new Map(); + for (let n of t37.model.getAtoms(e, { includeChildren: true })) { + if (r != null && r.excludeAtomsWithBackground && n.style.backgroundColor) + continue; + let o = t37.field, a = o.offsetWidth, l = Math.floor(o.getBoundingClientRect().width) / a; + l = isNaN(l) ? 1 : l; + let c = xl(t37, qr(t37, n), l); + if (c) { + let u = Dh(n); + if (i.has(u)) { + let d = i.get(u); + i.set(u, { left: Math.min(d.left, c.left), right: Math.max(d.right, c.right), top: Math.min(d.top, c.top), bottom: Math.max(d.bottom, c.bottom) }); + } else + i.set(u, c); + } + } + return [...i.values()]; +} +function Ma(t37, e) { + return t37.model.selection.ranges.reduce((r, i) => r.concat(...Kh(t37, i, e)), []); +} +function Ii(t37, e) { + return t37 === "*" || e === "none" ? true : e === "same-origin" ? !window.origin || t37 === window.origin : typeof e == "function" ? e(t37) : false; +} +function vl(t37) { + let e = 0, r = 0, i = t37.offsetWidth, n = t37.offsetHeight; + for (; t37 instanceof HTMLElement; ) + e += t37.offsetTop, r += t37.offsetLeft, t37 = t37.offsetParent; + return new DOMRect(r, e, i, n); +} +function wa(t37, e) { + if (!t37) + return; + let r = t37.model.at(e); + if (!r) + return; + let i = {}, n = qr(t37, r); + n && (i.bounds = new DOMRect(n.left, n.top, n.right - n.left, n.bottom - n.top)), i.depth = r.treeDepth - 2, i.style = r.style; + let o = r; + for (; o; ) { + if (o.command === "\\htmlData" && o.args && typeof o.args[0] == "string") { + let a = o.args[0].split(","); + for (let s of a) { + let l = s.match(/([^=]+)=(.+$)/); + if (l) { + let c = l[1].trim().replace(/ /g, "-"); + c && (i.data || (i.data = {}), i.data[c] = l[2]); + } else { + let c = s.trim().replace(/ /g, "-"); + c && (i.data || (i.data = {}), i.data[c] = void 0); + } + } + } + (o.command === "\\htmlId" || o.command === "\\cssId") && !i.id && o.args && typeof o.args[0] == "string" && (i.id = o.args[0]), o = o.parent; + } + return (r.mode === "math" || r.mode === "text") && (i.latex = y.serialize([r], { defaultMode: "math" })), i; +} +function q0(t37, e) { + let r = t37.model.at(e); + for (; r; ) { + if (r.command === "\\href") { + let i = r.args[0]; + if (typeof i == "string") + return i; + } + r = r.parent; + } + return ""; +} +var H0 = `@keyframes ML__caret-blink { + 0%, + 100% { + opacity: 1; + } + 50% { + opacity: 0; + } +} +.ML__container { + display: inline-flex; + flex-flow: row; + justify-content: space-between; + align-items: flex-end; + min-height: 39px; + /* Need some room for the virtual keyboard toggle */ + width: 100%; + /* This attribute is necessary to work around a Firefox issue where + where clicking multiple times on the border leads to a focused mathfield that cannot be edited until focus is lost and regained (also fixes the multiple cursor issue on firefox that can occur with the same sequence of events). + */ + pointer-events: auto; + /* Prevent the browser from trying to interpret touch gestures in the field */ + /* "Disabling double-tap to zoom removes the need for browsers to + delay the generation of click events when the user taps the screen." */ + touch-action: none; + --_caret-color: var(--caret-color, hsl(var(--_hue), 40%, 49%)); + --_selection-color: var(--selection-color, #000); + --_selection-background-color: var(--selection-background-color, hsl(var(--_hue), 70%, 85%)); + --_text-highlight-background-color: var(--highlight-text, hsla(var(--_hue), 40%, 50%, 0.1)); + --_contains-highlight-background-color: var(--contains-highlight-background-color, hsl(var(--_hue), 40%, 95%)); + --_smart-fence-color: var(--smart-fence-color, currentColor); + --_smart-fence-opacity: var(--smart-fence-opacity, 0.5); + --_latex-color: var(--latex-color, hsl(var(--_hue), 80%, 40%)); + --_correct-color: var(--correct-color, #10a000); + --_incorrect-color: var(--incorrect-color, #a01b00); + --_composition-background-color: var(--composition-background-color, #fff1c2); + --_composition-text-color: var(--composition-text-color, black); + --_composition-underline-color: var(--composition-underline-color, transparent); + --_tooltip-border: var(--tooltip-border, 1px solid transparent); + --_tooltip-border-radius: var(--tooltip-border-radius, 8px); + --_tooltip-background-color: var(--tooltip-background-color, #616161); + --_tooltip-color: var(--tooltip-color, #fff); + --_tooltip-box-shadow: var(--tooltip-box-shadow, 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2)); +} +/* This is the actual field content (formula) */ +.ML__content { + display: flex; + align-items: center; + align-self: center; + position: relative; + overflow: hidden; + padding: 2px 3px 2px 1px; + width: 100%; + /* Encourage the browser to use the GPU to render the field. + Weirdly, this is required for prompts to be rendered correctly. + */ + isolation: isolate; +} +.ML__virtual-keyboard-toggle, +.ML__menu-toggle { + box-sizing: border-box; + display: flex; + align-self: center; + align-items: center; + flex-shrink: 0; + flex-direction: column; + justify-content: center; + width: 34px; + height: 34px; + padding: 0; + margin-right: 4px; + cursor: pointer; + /* Avoid some weird blinking with :hover */ + border-radius: 8px; + border: 1px solid transparent; + transition: background 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + color: hsl(var(--_hue), 40%, 50%); + fill: currentColor; + background: transparent; +} +.ML__virtual-keyboard-toggle:hover, +.ML__menu-toggle:hover { + background: hsla(0, 0%, 70%, 0.3); + color: #333; + fill: currentColor; +} +.ML__virtual-keyboard-toggle > span, +.ML__menu-toggle > span { + display: flex; + align-self: center; + align-items: center; +} +@media (pointer: coarse) { + .ML__virtual-keyboard-toggle, + .ML__menu-toggle { + min-width: 60px; + min-height: 60px; + } +} +/* The invisible element used to capture keyboard events. We're just trying + really hard to make sure it doesn't show. */ +.ML__keyboard-sink { + display: inline-block; + resize: none; + outline: none; + border: none; + /* Need these for Microsoft Edge */ + position: fixed; + clip: rect(0 0 0 0); + /* Need this to prevent iOS Safari from auto-zooming */ + font-size: 1em; + font-family: KaTeX_Main; + line-height: 0.5; + /* On Chromium, if this is 0, no keyboard events are received */ +} +[part='placeholder'] { + color: var(--neutral-400); +} +.ML__composition { + background: var(--_composition-background-color); + color: var(--_composition-text-color); + text-decoration: underline var(--_composition-underline-color); +} +.ML__caret::after { + content: ''; + visibility: hidden; + width: 0; + display: inline-block; + height: 0.76em; + --_caret-width: clamp(2px, 0.08em, 10px); + border: none; + border-radius: calc(var(--_caret-width) / 2); + border-right: var(--_caret-width) solid var(--_caret-color); + margin-right: calc(-1 * var(--_caret-width)); + position: relative; + left: -0.045em; + bottom: -0.05em; + animation: ML__caret-blink 1.05s step-end forwards infinite; +} +.ML__text-caret::after { + content: ''; + visibility: hidden; + width: 0; + display: inline-block; + height: 0.76em; + --_caret-width: clamp(2px, 0.08em, 10px); + border: none; + border-radius: calc(var(--_caret-width) / 2); + border-right: var(--_caret-width) solid var(--_caret-color); + margin-right: calc(-1 * var(--_caret-width)); + position: relative; + left: -0.045em; + bottom: -0.05em; + animation: ML__caret-blink 1.05s step-end forwards infinite; +} +.ML__latex-caret::after { + content: ''; + visibility: hidden; + --_caret-width: clamp(2px, 0.08em, 10px); + border: none; + border-radius: calc(var(--_caret-width) / 2); + border-right: var(--_caret-width) solid var(--_latex-color); + margin-right: calc(-1 * var(--_caret-width)); + position: relative; + left: -0.019em; + animation: ML__caret-blink 1.05s step-end forwards infinite; +} +.ML__focused .ML__latex-caret::after, +.ML__focused .ML__text-caret::after, +.ML__focused .ML__caret::after { + visibility: visible; +} +.ML__focused .ML__text { + background: var(--_text-highlight-background-color); +} +/* When using smartFence, the anticipated closing fence is displayed +with this style */ +.ML__smart-fence__close { + opacity: var(--_smart-fence-opacity); + color: var(--_smart-fence-color); +} +.ML__selected, +.ML__focused .ML__selected .ML__contains-caret, +.ML__focused .ML__selected .ML__smart-fence__close, +.ML__focused .ML__selected .ML__placeholder { + color: var(--_selection-color); + opacity: 1; +} +.ML__selection { + box-sizing: border-box; + background: transparent; +} +:host(:focus) .ML__selection { + background: var(--_selection-background-color) !important; +} +:host { + pointer-events: none; +} +.ML__contains-caret.ML__close, +.ML__contains-caret.ML__open, +.ML__contains-caret > .ML__close, +.ML__contains-caret > .ML__open, +.ML__contains-caret .ML__sqrt-sign, +.ML__contains-caret .ML__sqrt-line { + color: var(--_caret-color); +} +.ML__contains-highlight { + box-sizing: border-box; + background: transparent; +} +.ML__focused .ML__contains-highlight { + background: var(--_contains-highlight-background-color); +} +.ML__raw-latex { + font-family: 'Berkeley Mono', 'IBM Plex Mono', 'Source Code Pro', Consolas, 'Roboto Mono', Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Courier, monospace; + font-weight: 400; + font-size: 0.8em; + letter-spacing: -0.05em; + color: var(--_latex-color); +} +.ML__suggestion { + color: var(--neutral-500); +} +.ML__virtual-keyboard-toggle.is-visible.is-pressed:hover { + background: hsl(var(--_hue), 25%, 35%); + color: #fafafa; + fill: currentColor; +} +.ML__virtual-keyboard-toggle.is-pressed, +.ML__virtual-keyboard-toggle.is-active:hover, +.ML__virtual-keyboard-toggle.is-active { + background: hsl(var(--_hue), 25%, 35%); + color: #fafafa; + fill: currentColor; +} +/* Add an attribute 'data-tooltip' to automatically show a + tooltip over a element on hover. +*/ +[data-tooltip] { + position: relative; +} +[data-tooltip]::after { + content: attr(data-tooltip); + position: absolute; + display: block; + z-index: 2; + pointer-events: none; + right: auto; + top: calc(-100% - 4px); + width: max-content; + max-width: 200px; + padding: 8px 8px; + border-radius: 4px; + background: #616161; + color: #fff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); + text-align: center; + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + font-style: normal; + font-weight: 400; + font-size: 13px; + /* Phone */ + opacity: 0; + transform: scale(0.5); +} +@media only screen and (max-width: 767px) { + [data-tooltip]::after { + padding: 8px 16px; + font-size: 16px; + } +} +menu [data-tooltip]::after { + left: 100%; + top: 0%; +} +menu .ML__base { + cursor: default; +} +/** Don't display if we're tracking, i.e. have the pointer down */ +.tracking [data-tooltip]:hover::after { + /* Use visibility, not display. Display will remove the after from the DOM, and the override below will not work */ + visibility: hidden; +} +/** But do display if tracking and inside a menu */ +.tracking menu li[data-tooltip]:hover::after, +[data-tooltip]:hover::after { + visibility: visible; + opacity: 1; + transform: scale(1); + transition-property: opacity, scale; + transition-duration: 0.15s; + transition-delay: 1s; + transition-timing-function: cubic-bezier(0.4, 0, 1, 1); +} +.ML__prompt { + border-radius: 2px; +} +.ML__editablePromptBox { + outline: 1px solid #acacac; + border-radius: 2px; + z-index: -1; +} +.ML__focusedPromptBox { + outline: highlight auto 1px; +} +.ML__lockedPromptBox { + background-color: rgba(142, 142, 141, 0.4); + z-index: -1; +} +.ML__correctPromptBox { + outline: 1px solid var(--_correct-color); + box-shadow: 0 0 5px var(--_correct-color); +} +.ML__incorrectPromptBox { + outline: 1px solid var(--_incorrect-color); + box-shadow: 0 0 5px var(--_incorrect-color); +} +.variant-submenu { + display: flex; + flex-direction: column; + padding: 8px; +} +.variant-submenu [part='menu-item'].ML__xl { + font-size: 2rem; + text-align: center; + margin: 0; +} +.ML__center-menu .label { + text-align: center; +} +.insert-matrix-submenu { + /* Grid doesn't work on Safari */ + --_menu-item-size: 25px; + width: calc(5 * var(--_menu-item-size)); + display: flex; + flex-wrap: wrap; + padding: 8px; + align-content: center; + justify-content: center; +} +.insert-matrix-submenu [part='menu-item'] { + width: var(--_menu-item-size); + height: var(--_menu-item-size); + font-size: 21px; + border: none; + border-radius: 0; + line-height: 21px; + text-align: center; + padding: 0; + margin: 0; +} +.border-submenu [part='menu-item'] { + font-size: 2rem; + line-height: 1.2; + text-align: center; +} +.swatches-submenu { + --_swatch-size: 2rem; + --_columns: 4; + display: flex; + flex-flow: wrap; + padding: 8px; + max-width: calc(var(--_columns) * (var(--_swatch-size) + 18px) + 16px); + box-sizing: border-box; +} +.menu-swatch { + display: flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + width: fit-content; + height: fit-content; + margin: 2px; + padding: 0; + background: var(--neutral-200); +} +.menu-swatch > .label { + padding: 0; + margin: 0; + line-height: 0; +} +.menu-swatch > .label > span { + display: inline-block; + margin: 6px; + min-width: var(--_swatch-size); + min-height: var(--_swatch-size); + border-radius: 50%; +} +.menu-swatch.active { + background: var(--neutral-100); + scale: 1.4; +} +.menu-swatch.active > .label > span { + border-radius: 2px; +} +.menu-swatch .ui-checkmark, +.menu-swatch .ui-mixedmark { + position: absolute; + margin: 0; + padding: 0; + color: white; +} +.menu-swatch.dark-contrast .ui-checkmark, +.menu-swatch.dark-contrast .ui-mixedmark { + color: #000; +} +`; +var W0 = `.ML__container { + min-height: auto !important; + --_hue: var(--hue, 212); + --_placeholder-color: var(--placeholder-color, hsl(var(--_hue), 40%, 49%)); + --_placeholder-opacity: var(--placeholder-opacity, 0.4); + --_text-font-family: var(--text-font-family, system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif); +} +.ML__sr-only { + position: absolute; + width: 1px; + height: 1px; + margin: -1px; + padding: 0; + overflow: hidden; + clip: rect(0, 0, 0, 0); + clip-path: inset(50%); + white-space: nowrap; + border: 0; +} +.ML__is-inline { + display: inline-block; +} +.ML__base { + visibility: inherit; + display: inline-block; + position: relative; + cursor: text; + padding: 0; + margin: 0; + box-sizing: content-box; + border: 0; + outline: 0; + vertical-align: baseline; + font-weight: inherit; + font-family: inherit; + font-style: inherit; + text-decoration: none; + width: min-content; +} +.ML__strut, +.ML__strut--bottom { + display: inline-block; + min-height: 0.5em; +} +.ML__small-delim { + font-family: KaTeX_Main; +} +/* Text mode */ +.ML__text { + font-family: var(--_text-font-family); + white-space: pre; +} +/* Use cmr for 'math upright' */ +.ML__cmr { + font-family: KaTeX_Main; + font-style: normal; +} +.ML__mathit { + font-family: KaTeX_Math; + /* The KaTeX_Math font is italic by default, so the font-style below is only + useful when a fallback font is used + */ + font-style: italic; +} +.ML__mathbf { + font-family: KaTeX_Main; + font-weight: bold; +} +/* Lowercase greek symbols should stick to math font when \\mathbf is applied + to match TeX idiosyncratic behavior */ +.lcGreek.ML__mathbf { + font-family: KaTeX_Math; + font-weight: normal; +} +.ML__mathbfit { + font-family: KaTeX_Math; + font-weight: bold; + font-style: italic; +} +.ML__ams { + font-family: KaTeX_AMS; +} +/* Blackboard */ +.ML__bb { + font-family: KaTeX_AMS; +} +.ML__cal { + font-family: KaTeX_Caligraphic; +} +.ML__frak { + font-family: KaTeX_Fraktur; +} +.ML__tt { + font-family: KaTeX_Typewriter; +} +.ML__script { + font-family: KaTeX_Script; +} +.ML__sans { + font-family: KaTeX_SansSerif; +} +.ML__series_ul { + font-weight: 100; +} +.ML__series_el { + font-weight: 100; +} +.ML__series_l { + font-weight: 200; +} +.ML__series_sl { + font-weight: 300; +} +.ML__series_sb { + font-weight: 500; +} +.ML__bold { + font-weight: 700; +} +.ML__series_eb { + font-weight: 800; +} +.ML__series_ub { + font-weight: 900; +} +.ML__series_uc { + font-stretch: ultra-condensed; +} +.ML__series_ec { + font-stretch: extra-condensed; +} +.ML__series_c { + font-stretch: condensed; +} +.ML__series_sc { + font-stretch: semi-condensed; +} +.ML__series_sx { + font-stretch: semi-expanded; +} +.ML__series_x { + font-stretch: expanded; +} +.ML__series_ex { + font-stretch: extra-expanded; +} +.ML__series_ux { + font-stretch: ultra-expanded; +} +.ML__it { + font-style: italic; +} +.ML__shape_ol { + -webkit-text-stroke: 1px black; + text-stroke: 1px black; + color: transparent; +} +.ML__shape_sc { + font-variant: small-caps; +} +.ML__shape_sl { + font-style: oblique; +} +/* First level emphasis */ +.ML__emph { + color: #bc2612; +} +/* Second level emphasis */ +.ML__emph .ML__emph { + color: #0c7f99; +} +.ML__highlight { + color: #007cb2; + background: #edd1b0; +} +.ML__center { + text-align: center; +} +.ML__left { + text-align: left; +} +.ML__right { + text-align: right; +} +.ML__label_padding { + padding: 0 0.5em; +} +.ML__frac-line { + width: 100%; + min-height: 1px; +} +.ML__frac-line:after { + content: ''; + display: block; + margin-top: max(-1px, -0.04em); + min-height: max(1px, 0.04em); + /* Ensure the line is visible when printing even if "turn off background images" is on*/ + -webkit-print-color-adjust: exact; + print-color-adjust: exact; + /* There's a bug since Chrome 62 where + sub-pixel border lines don't draw at some zoom + levels (110%, 90%). + Setting the min-height used to work around it, but that workaround + broke in Chrome 84 or so. + Setting the background (and the min-height) seems to work for now. + */ + background: currentColor; + box-sizing: content-box; + /* Vuetify sets the box-sizing to inherit + causes the fraction line to not draw at all sizes (see #26) */ + /* On some versions of Firefox on Windows, the line fails to + draw at some zoom levels, but setting the transform triggers + the hardware accelerated path, which works */ + transform: translate(0, 0); +} +.ML__sqrt { + display: inline-block; +} +.ML__sqrt-sign { + display: inline-block; + position: relative; +} +.ML__sqrt-line { + display: inline-block; + height: max(1px, 0.04em); + width: 100%; +} +.ML__sqrt-line:before { + content: ''; + display: block; + margin-top: min(-1px, -0.04em); + min-height: max(1px, 0.04em); + /* Ensure the line is visible when printing even if "turn off background images" is on*/ + -webkit-print-color-adjust: exact; + print-color-adjust: exact; + background: currentColor; + /* On some versions of Firefox on Windows, the line fails to + draw at some zoom levels, but setting the transform triggers + the hardware accelerated path, which works */ + transform: translate(0, 0); +} +.ML__sqrt-line:after { + border-bottom-width: 1px; + content: ' '; + display: block; + margin-top: -0.1em; +} +.ML__sqrt-index { + margin-left: 0.27777778em; + margin-right: -0.55555556em; +} +.ML__delim-size1 { + font-family: KaTeX_Size1; +} +.ML__delim-size2 { + font-family: KaTeX_Size2; +} +.ML__delim-size3 { + font-family: KaTeX_Size3; +} +.ML__delim-size4 { + font-family: KaTeX_Size4; +} +.ML__delim-mult .delim-size1 > span { + font-family: KaTeX_Size1; +} +.ML__delim-mult .delim-size4 > span { + font-family: KaTeX_Size4; +} +.ML__accent-body > span { + font-family: KaTeX_Main; + width: 0; +} +.ML__accent-vec { + position: relative; + left: 0.24em; +} +/** The markup for a LaTeX formula, either in an editable mathfield or + in a static display. +*/ +.ML__latex { + display: inline-block; + direction: ltr; + text-align: left; + text-indent: 0; + text-rendering: auto; + font-family: KaTeX_Main, 'Times New Roman', serif; + font-style: normal; + font-size-adjust: none; + font-stretch: normal; + font-variant-caps: normal; + letter-spacing: normal; + line-height: 1.2; + word-wrap: normal; + word-spacing: normal; + white-space: nowrap; + text-shadow: none; + -webkit-user-select: none; + user-select: none; + width: min-content; +} +.ML__latex .style-wrap { + position: relative; +} +.ML__latex .ML__mfrac { + display: inline-block; +} +.ML__latex .ML__left-right { + display: inline-block; +} +.ML__latex .ML__vlist-t { + display: inline-table; + table-layout: fixed; + border-collapse: collapse; +} +.ML__latex .ML__vlist-r { + display: table-row; +} +.ML__latex .ML__vlist { + display: table-cell; + vertical-align: bottom; + position: relative; +} +.ML__latex .ML__vlist > span { + display: block; + height: 0; + position: relative; +} +.ML__latex .ML__vlist > span > span { + display: inline-block; +} +.ML__latex .ML__vlist > span > .ML__pstrut { + overflow: hidden; + width: 0; +} +.ML__latex .ML__vlist-t2 { + margin-right: -2px; +} +.ML__latex .ML__vlist-s { + display: table-cell; + vertical-align: bottom; + font-size: 1px; + width: 2px; + min-width: 2px; +} +.ML__latex .ML__msubsup { + text-align: left; +} +.ML__latex .ML__negativethinspace { + display: inline-block; + margin-left: -0.16667em; + height: 0.71em; +} +.ML__latex .ML__thinspace { + display: inline-block; + width: 0.16667em; + height: 0.71em; +} +.ML__latex .ML__mediumspace { + display: inline-block; + width: 0.22222em; + height: 0.71em; +} +.ML__latex .ML__thickspace { + display: inline-block; + width: 0.27778em; + height: 0.71em; +} +.ML__latex .ML__enspace { + display: inline-block; + width: 0.5em; + height: 0.71em; +} +.ML__latex .ML__quad { + display: inline-block; + width: 1em; + height: 0.71em; +} +.ML__latex .ML__qquad { + display: inline-block; + width: 2em; + height: 0.71em; +} +.ML__latex .ML__llap, +.ML__latex .ML__rlap { + width: 0; + position: relative; + display: inline-block; +} +.ML__latex .ML__llap > .ML__inner, +.ML__latex .ML__rlap > .ML__inner { + position: absolute; +} +.ML__latex .ML__llap > .ML__fix, +.ML__latex .ML__rlap > .ML__fix { + display: inline-block; +} +.ML__latex .ML__llap > .ML__inner { + right: 0; +} +.ML__latex .ML__rlap > .ML__inner { + left: 0; +} +.ML__latex .ML__rule { + display: inline-block; + border: solid 0; + position: relative; + box-sizing: border-box; +} +.ML__latex .overline .overline-line, +.ML__latex .underline .underline-line { + width: 100%; +} +.ML__latex .overline .overline-line:before, +.ML__latex .underline .underline-line:before { + content: ''; + border-bottom-style: solid; + border-bottom-width: max(1px, 0.04em); + -webkit-print-color-adjust: exact; + print-color-adjust: exact; + display: block; +} +.ML__latex .overline .overline-line:after, +.ML__latex .underline .underline-line:after { + border-bottom-style: solid; + border-bottom-width: max(1px, 0.04em); + -webkit-print-color-adjust: exact; + print-color-adjust: exact; + content: ''; + display: block; + margin-top: -1px; +} +.ML__latex .ML__stretchy { + display: block; + position: absolute; + width: 100%; + left: 0; + overflow: hidden; +} +.ML__latex .ML__stretchy:before, +.ML__latex .ML__stretchy:after { + content: ''; +} +.ML__latex .ML__stretchy svg { + display: block; + position: absolute; + width: 100%; + height: inherit; + fill: currentColor; + stroke: currentColor; + 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; +} +.ML__latex .slice-1-of-2 { + display: inline-flex; + position: absolute; + left: 0; + width: 50.2%; + overflow: hidden; +} +.ML__latex .slice-2-of-2 { + display: inline-flex; + position: absolute; + right: 0; + width: 50.2%; + overflow: hidden; +} +.ML__latex .slice-1-of-3 { + display: inline-flex; + position: absolute; + left: 0; + width: 25.1%; + overflow: hidden; +} +.ML__latex .slice-2-of-3 { + display: inline-flex; + position: absolute; + left: 25%; + width: 50%; + overflow: hidden; +} +.ML__latex .slice-3-of-3 { + display: inline-flex; + position: absolute; + right: 0; + width: 25.1%; + overflow: hidden; +} +.ML__latex .slice-1-of-1 { + display: inline-flex; + position: absolute; + width: 100%; + left: 0; + overflow: hidden; +} +.ML__latex .ML__nulldelimiter { + display: inline-block; +} +.ML__latex .ML__op-group { + display: inline-block; +} +.ML__latex .ML__op-symbol { + position: relative; +} +.ML__latex .ML__op-symbol.ML__small-op { + font-family: KaTeX_Size1; +} +.ML__latex .ML__op-symbol.ML__large-op { + font-family: KaTeX_Size2; +} +.ML__latex .ML__mtable .ML__vertical-separator { + display: inline-block; + min-width: 1px; + box-sizing: border-box; +} +.ML__latex .ML__mtable .ML__arraycolsep { + display: inline-block; +} +.ML__latex .ML__mtable .col-align-m > .ML__vlist-t { + text-align: center; +} +.ML__latex .ML__mtable .col-align-c > .ML__vlist-t { + text-align: center; +} +.ML__latex .ML__mtable .col-align-l > .ML__vlist-t { + text-align: left; +} +.ML__latex .ML__mtable .col-align-r > .ML__vlist-t { + text-align: right; +} +[data-href] { + cursor: pointer; +} +.ML__error { + display: inline-block; + background-image: radial-gradient(ellipse at center, hsl(341, 100%, 40%), rgba(0, 0, 0, 0) 70%); + background-color: hsla(341, 100%, 40%, 0.1); + background-repeat: repeat-x; + background-size: 3px 3px; + padding-bottom: 3px; + background-position: 0 100%; +} +.ML__error > .ML__error { + background: transparent; + padding: 0; +} +.ML__placeholder { + color: var(--_placeholder-color); + opacity: var(--_placeholder-opacity); + padding-left: 0.4ex; + padding-right: 0.4ex; + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; +} +.ML__notation { + position: absolute; + box-sizing: border-box; + line-height: 0; +} +/* This class is used to implement the \`\\mathtip\` and \`\\texttip\` commands + For UI elements, see \`[data-ML__tooltip]\` +*/ +.ML__tooltip-container { + position: relative; + transform: scale(0); +} +.ML__tooltip-container .ML__tooltip-content { + position: fixed; + display: inline-table; + visibility: hidden; + z-index: 2; + width: max-content; + max-width: 400px; + padding: 12px 12px; + border: var(--tooltip-border); + border-radius: var(--tooltip-border-radius); + background: var(--tooltip-background-color); + --_selection-color: var(--tooltip-color); + color: var(--tooltip-color); + box-shadow: var(--tooltip-box-shadow); + opacity: 0; + transition: opacity 0.15s cubic-bezier(0.4, 0, 1, 1); +} +.ML__tooltip-container .ML__tooltip-content .ML__text { + white-space: normal; +} +.ML__tooltip-container .ML__tooltip-content .ML__base { + display: contents; +} +.ML__tooltip-container:hover .ML__tooltip-content { + visibility: visible; + opacity: 1; + font-size: 0.75em; + transform: scale(1) translate(0, 3em); +} +`; +var U0 = `#mathlive-environment-popover.is-visible { + visibility: visible; +} +#mathlive-environment-popover { + --_environment-panel-height: var(--environment-panel-height, 70px); + --_accent-color: var(--accent-color, #aaa); + --_background: var(--environment-panel-background, #fff); + --_button-background: var(--environment-panel-button-background, white); + --_button-background-hover: var(--environment-panel-button-background-hover, #f5f5f7); + --_button-background-active: var(--environment-panel-button-background-active, #f5f5f7); + --_button-text: var(--environment-panel-button-text, #e3e4e8); + position: absolute; + width: calc(var(--_environment-panel-height) * 2); + height: var(--_environment-panel-height); + border-radius: 4px; + border: 1.5px solid var(--_accent-color); + background-color: var(--_background); + box-shadow: 0 0 30px 0 var(--environment-shadow, rgba(0, 0, 0, 0.4)); + pointer-events: all; + visibility: hidden; +} +#mathlive-environment-popover .MLEP__array-buttons { + height: calc(var(--_environment-panel-height) * 5/4); + width: calc(var(--_environment-panel-height) * 5/4); + margin-left: calc(0px - var(--_environment-panel-height) * 0.16); + margin-top: calc(0px - var(--_environment-panel-height) * 0.19); +} +#mathlive-environment-popover .MLEP__array-buttons .font { + fill: white; +} +#mathlive-environment-popover .MLEP__array-buttons circle { + fill: #7f7f7f; + transition: fill 300ms; +} +#mathlive-environment-popover .MLEP__array-buttons .MLEP__array-insert-background { + fill-opacity: 1; + fill: var(--_background); + stroke: var(--_accent-color); + stroke-width: 3px; +} +#mathlive-environment-popover .MLEP__array-buttons line { + stroke: var(--_accent-color); + stroke-opacity: 0; + stroke-width: 40; + pointer-events: none; + transition: stroke-opacity 300ms; + stroke-linecap: round; +} +#mathlive-environment-popover .MLEP__array-buttons g[data-command]:hover circle { + fill: var(--_accent-color); +} +#mathlive-environment-popover .MLEP__array-buttons g[data-command]:hover line { + stroke-opacity: 1; +} +#mathlive-environment-popover .MLEP__environment-delimiter-controls { + height: 100%; + width: 50%; +} +#mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options { + width: var(--_environment-panel-height); + height: var(--_environment-panel-height); + display: flex; + flex-wrap: wrap; + flex-direction: row; + justify-content: space-around; +} +#mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg { + pointer-events: all; + margin-top: 2px; + width: calc(var(--_environment-panel-height) / 3 * 28 / 24); + height: calc(var(--_environment-panel-height) / 3 - 2px); + border-radius: calc(var(--_environment-panel-height) / 25); + background-color: var(--_button-background); +} +#mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg:hover { + background-color: var(--_button-background-hover); +} +#mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg path, +#mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg line { + stroke: var(--_button-text); + stroke-width: 2; + stroke-linecap: round; +} +#mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg rect, +#mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg path { + fill-opacity: 0; +} +#mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg.active { + pointer-events: none; + background-color: var(--_button-background-active); +} +#mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg.active path, +#mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg.active line { + stroke: var(--_accent-color); +} +#mathlive-environment-popover .MLEP__environment-delimiter-controls .MLEP__array-delimiter-options svg.active circle { + fill: var(--_accent-color); +} +`; +var J0 = `/* The element that display info while in latex mode */ +#mathlive-suggestion-popover { + background-color: rgba(97, 97, 97); + color: #fff; + text-align: center; + border-radius: 8px; + position: fixed; + z-index: 1; + display: none; + flex-direction: column; + justify-content: center; + box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); +} +#mathlive-suggestion-popover.top-tip::after { + content: ''; + position: absolute; + top: -15px; + left: calc(50% - 15px); + width: 0; + height: 0; + border-left: 15px solid transparent; + border-right: 15px solid transparent; + border-bottom: 15px solid rgba(97, 97, 97); + font-size: 1rem; +} +#mathlive-suggestion-popover.bottom-tip::after { + content: ''; + position: absolute; + bottom: -15px; + left: calc(50% - 15px); + width: 0; + height: 0; + border-left: 15px solid transparent; + border-right: 15px solid transparent; + border-top: 15px solid rgba(97, 97, 97); + font-size: 1rem; +} +#mathlive-suggestion-popover.is-animated { + transition: all 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + animation: ML__fade-in cubic-bezier(0, 0, 0.2, 1) 0.15s; +} +#mathlive-suggestion-popover.is-visible { + display: flex; +} +@keyframes ML__fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +/* The wrapper class for the entire content of the popover panel */ +#mathlive-suggestion-popover ul { + display: flex; + flex-flow: column; + list-style: none; + margin: 0; + padding: 0; + align-items: flex-start; + max-height: 400px; + overflow-y: auto; +} +#mathlive-suggestion-popover li { + display: flex; + flex-direction: row; + justify-content: space-between; + margin: 8px; + padding: 8px; + width: calc(100% - 16px - 16px); + column-gap: 1em; + border-radius: 8px; + cursor: pointer; + /* Since the content can be clicked on, provide feedback on hover */ +} +#mathlive-suggestion-popover li a { + color: #5ea6fd; + padding-top: 0.3em; + margin-top: 0.4em; + display: block; +} +#mathlive-suggestion-popover li a:hover { + color: #5ea6fd; + text-decoration: underline; +} +#mathlive-suggestion-popover li:hover, +#mathlive-suggestion-popover li.is-pressed, +#mathlive-suggestion-popover li.is-active { + background: rgba(255, 255, 255, 0.1); +} +/* The command inside a popover (inside a #mathlive-suggestion-popover) */ +.ML__popover__command { + font-size: 1.6rem; + font-family: KaTeX_Main; +} +.ML__popover__current { + background: #5ea6fd; + color: #fff; +} +.ML__popover__latex { + font-family: 'IBM Plex Mono', 'Source Code Pro', Consolas, 'Roboto Mono', Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Courier, monospace; + align-self: center; +} +/* The keyboard shortcuts for a symbol as displayed in the popover */ +.ML__popover__keybinding { + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + font-size: 0.8em; + opacity: 0.7; +} +/* Style for the character that joins the modifiers of a keyboard shortcut +(usually a "+" sign)*/ +.ML__shortcut-join { + opacity: 0.5; +} +`; +var G0 = `/* The element that displays the keys as the user type them */ +#mathlive-keystroke-caption-panel { + visibility: hidden; + /*min-width: 160px;*/ + /*background-color: rgba(97, 97, 200, .95);*/ + background: var(--secondary, hsl(var(--_hue), 19%, 26%)); + border-color: var(--secondary-border, hsl(0, 0%, 91%)); + box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23); + text-align: center; + border-radius: 6px; + padding: 16px; + position: absolute; + z-index: 1; + display: flex; + flex-direction: row-reverse; + justify-content: center; + --keystroke: white; + --on-keystroke: #555; + --keystroke-border: #f7f7f7; +} +@media (prefers-color-scheme: dark) { + body:not([theme='light']) #mathlive-keystroke-caption-panel { + --keystroke: hsl(var(--_hue), 50%, 30%); + --on-keystroke: hsl(0, 0%, 98%); + --keystroke-border: hsl(var(--_hue), 50%, 25%); + } +} +body[theme='dark'] #mathlive-keystroke-caption-panel { + --keystroke: hsl(var(--_hue), 50%, 30%); + --on-keystroke: hsl(0, 0%, 98%); + --keystroke-border: hsl(var(--_hue), 50%, 25%); +} +#mathlive-keystroke-caption-panel > span { + min-width: 14px; + /*height: 8px;*/ + margin: 0 8px 0 0; + padding: 4px; + background-color: var(--keystroke); + color: var(--on-keystroke); + fill: currentColor; + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + font-size: 1em; + border-radius: 6px; + border: 2px solid var(--keystroke-border); + /*box-shadow: 0 7px 14px rgba(0,0,0,0.25), 0 5px 5px rgba(0,0,0,0.22);*/ +} +`; +var j0 = `.ML__keyboard { + --_keyboard-height: 0; + --_keyboard-zindex: var(--keyboard-zindex, 105); + --_accent-color: var(--keyboard-accent-color, #0c75d8); + --_background: var(--keyboard-background, #cacfd7); + --_border: var(--keyboard-border, #ddd); + --_padding-horizontal: var(--keyboard-padding-horizontal, 0px); + --_padding-top: var(--keyboard-padding-top, 5px); + --_padding-bottom: var(--keyboard-padding-bottom, 0px); + --_row-padding-left: var(--keyboard-row-padding-left, 0px); + --_row-padding-right: var(--keyboard-row-padding-right, 0px); + --_toolbar-text: var(--keyboard-toolbar-text, #2c2e2f); + --_toolbar-text-active: var(--keyboard-toolbar-text-active, var(--_accent-color)); + --_toolbar-background: var(--keyboard-toolbar-background, transparent); + --_toolbar-background-hover: var(--keyboard-toolbar-background-hover, #eee); + --_toolbar-background-selected: var(--keyboard-toolbar-background-selected, transparent); + --_toolbar-font-size: var(--keyboard-toolbar-font-size, '135%'); + --_horizontal-rule: var(--keyboard-horizontal-rule, 1px solid #fff); + --_keycap-background: var(--keycap-background, #f0f0f0); + --_keycap-background-hover: var(--keycap-background-hover, #f5f5f7); + --_keycap-background-active: var(--keycap-background-active, var(--_accent-color)); + --_keycap-background-pressed: var(--keycap-background-pressed, var(--_accent-color)); + --_keycap-border: var(--keycap-border, #e5e6e9); + --_keycap-border-bottom: var(--keycap-border-bottom, #8d8f92); + --_keycap-text: var(--keycap-text, #000); + --_keycap-text-active: var(--keycap-text-active, #fff); + --_keycap-text-hover: var(--keycap-text-hover, var(--_keycap-text)); + --_keycap-text-pressed: var(--keycap-text-pressed, #fff); + --_keycap-shift-text: var(--keycap-shift-text, var(--_accent-color)); + --_keycap-primary-background: var(--keycap-primary-background, var(--_accent-color)); + --_keycap-primary-text: var(--keycap-primary-text, #ddd); + --_keycap-primary-background-hover: var(--keycap-primary-background-hover, #0d80f2); + --_keycap-secondary-background: var(--keycap-secondary-background, #a0a9b8); + --_keycap-secondary-background-hover: var(--keycap-secondary-background-hover, #7d8795); + --_keycap-secondary-text: var(--keycap-secondary-text, #060707); + --_keycap-secondary-border: var(--keycap-secondary-border, #c5c9d0); + --_keycap-secondary-border-bottom: var(--keycap-secondary-border-bottom, #989da6); + --_keycap-height: var(--keycap-height, 60px); + /* Keycap width (incl. margin) */ + --_keycap-max-width: var(--keycap-max-width, 100px); + --_keycap-gap: var(--keycap-gap, 8px); + --_keycap-font-size: var(--keycap-font-size, clamp(16px, 4cqw, 24px)); + --_keycap-small-font-size: var(--keycap-small-font-size, calc(var(--keycap-font-size) * 0.8)); + --_keycap-extra-small-font-size: var(--keycap-extra-small-font-size, calc(var(--keycap-font-size) / 1.42)); + --_variant-panel-background: var(--variant-panel-background, f0f0f0); + --_variant-keycap-text: var(--variant-keycap-text, var(--_keycap-text)); + --_variant-keycap-text-active: var(--variant-keycap-text-active, var(--_keycap-text-active)); + --_variant-keycap-background-active: var(--variant-keycap-background-active, var(--_accent-color)); + --_variant-keycap-length: var(--variant-keycap-length, 70px); + --_variant-keycap-font-size: var(--variant-keycap-font-size, 30px); + --_variant-keycap-aside-font-size: var(--variant-keycap-aside-font-size, 12px); + --_keycap-shift-font-size: var(--keycap-shift-font-size, 16px); + --_keycap-shift-color: var(--keycap-shift-color, var(--_accent-color)); + --_box-placeholder-color: var(--box-placeholder-color, var(--_accent-color)); + --_box-placeholder-pressed-color: var(--box-placeholder-pressed-color, var(--keycap-text-pressed)); +} +.is-math-mode .MLK__rows .if-text-mode, +.is-text-mode .MLK__rows .if-math-mode { + display: none; +} +.if-can-undo, +.if-can-redo, +.if-can-copy, +.if-can-cut, +.if-can-paste { + opacity: 0.4; + pointer-events: none; +} +.can-undo .if-can-undo, +.can-redo .if-can-redo, +.can-copy .if-can-copy, +.can-cut .if-can-cut, +.can-paste .if-can-paste { + opacity: 1; + pointer-events: all; +} +body > .ML__keyboard { + position: fixed; + --_padding-bottom: calc(var(--keyboard-padding-bottom, 0px) + env(safe-area-inset-bottom, 0)); +} +body > .ML__keyboard.is-visible > .MLK__backdrop { + box-shadow: 0 -5px 6px rgba(0, 0, 0, 0.08); + border-top: 1px solid var(--_border); +} +body > .ML__keyboard.backdrop-is-transparent.is-visible > .MLK__backdrop { + box-shadow: none; + border: none; +} +body > .ML__keyboard.is-visible.animate > .MLK__backdrop { + transition: 0.28s cubic-bezier(0, 0, 0.2, 1); + transition-property: transform, opacity; + transition-timing-function: cubic-bezier(0.4, 0, 1, 1); +} +.ML__keyboard { + position: relative; + overflow: hidden; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: var(--_keyboard-zindex); + box-sizing: border-box; + outline: none; + border: none; + margin: 0; + padding: 0; + line-height: 1; + overflow-wrap: unset; + text-align: left; + vertical-align: baseline; + cursor: auto; + white-space: pre; + box-shadow: none; + opacity: 1; + transform: none; + pointer-events: none; +} +.ML__keyboard :where(div) { + box-sizing: border-box; + outline: none; + border: none; + margin: 0; + padding: 0; + line-height: 1; + overflow-wrap: unset; + text-align: left; + vertical-align: baseline; + cursor: auto; + white-space: pre; + box-shadow: none; + transform: none; +} +.MLK__backdrop { + position: absolute; + bottom: calc(-1 * var(--_keyboard-height)); + width: 100%; + height: var(--_keyboard-height); + box-sizing: border-box; + padding-top: var(--_padding-top); + padding-bottom: var(--_padding-bottom); + padding-left: var(--_padding-horizontal); + padding-right: var(--_padding-horizontal); + opacity: 0; + visibility: hidden; + transform: translate(0, 0); + background: var(--_background); +} +.backdrop-is-transparent .MLK__backdrop { + background: transparent; +} +/* If a custom layout has a custom container/backdrop + (backdrop-is-transparent), make sure to let pointer event go through. */ +.backdrop-is-transparent .MLK__plate { + background: transparent; + pointer-events: none; +} +/* If a custom layout has a custom container/backdrop, make sure to + allow pointer events on it. */ +.backdrop-is-transparent .MLK__layer > div > div { + pointer-events: all; +} +.ML__keyboard.is-visible > .MLK__backdrop { + transform: translate(0, calc(-1 * var(--_keyboard-height))); + opacity: 1; + visibility: visible; +} +.caps-lock-indicator { + display: none; + width: 8px; + height: 8px; + background: #0cbc0c; + box-shadow: inset 0 0 4px 0 #13ca13, 0 0 4px 0 #a9ef48; + border-radius: 8px; + right: 8px; + top: 8px; + position: absolute; +} +.ML__keyboard.is-caps-lock .caps-lock-indicator { + display: block; +} +.ML__keyboard.is-caps-lock .shift { + background: var(--_keycap-background-active); + color: var(--_keycap-text-active); +} +.MLK__plate { + position: absolute; + top: var(--_padding-top); + left: var(--_padding-horizontal); + width: calc(100% - 2 * var(--_padding-horizontal)); + margin: 0; + padding: 0; + box-sizing: border-box; + container-type: inline-size; + touch-action: none; + -webkit-user-select: none; + user-select: none; + pointer-events: all; + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + font-size: 16px; + /* Size of toolbar labels */ + font-weight: 400; + text-shadow: none; +} +.ML__box-placeholder { + color: var(--_box-placeholder-color); +} +.MLK__tex { + font-family: KaTeX_Main, KaTeX_Math, 'Cambria Math', 'Asana Math', OpenSymbol, Symbola, STIX, Times, serif !important; +} +.MLK__tex-math { + font-family: KaTeX_Math, KaTeX_Main, 'Cambria Math', 'Asana Math', OpenSymbol, Symbola, STIX, Times, serif !important; + font-style: italic; +} +.MLK__layer { + display: none; + outline: none; +} +.MLK__layer.is-visible { + display: flex; + flex-flow: column; +} +/* Keyboard layouts are made or rows of keys... */ +.MLK__rows { + --_keycap-width: var(--keycap-width, min(var(--_keycap-max-width), 10cqw)); + display: flex; + flex-flow: column; + align-items: center; + border-collapse: separate; + clear: both; + border: 0; + margin: 0; + margin-bottom: var(--_keycap-gap); + gap: var(--_keycap-gap); + /* If the styling include, e.g., some shadows, they will be + cut off by the overflow. In that case, set the padding to + compensate. */ + padding-left: var(--_row-padding-left); + padding-right: var(--_row-padding-right); + overflow: visible; + touch-action: none; +} +.MLK__rows > .MLK__row { + display: flex; + flex-flow: row; + justify-content: center; + width: 100%; + gap: var(--_keycap-gap); + margin: 0; + padding: 0; + /* For the alignment of the text on some modifiers (e.g. shift) */ + /* Extra spacing between two adjacent keys */ +} +.MLK__rows > .MLK__row .tex { + font-family: KaTeX_Math, KaTeX_Main, 'Cambria Math', 'Asana Math', OpenSymbol, Symbola, STIX, Times, serif !important; +} +.MLK__rows > .MLK__row .tex-math { + font-family: KaTeX_Math, 'Cambria Math', 'Asana Math', OpenSymbol, Symbola, STIX, Times, serif !important; +} +.MLK__rows > .MLK__row .big-op { + font-size: calc(1.25 * var(--_keycap-font-size)); +} +.MLK__rows > .MLK__row .small { + font-size: var(--_keycap-small-font-size); +} +.MLK__rows > .MLK__row .bottom { + justify-content: flex-end; +} +.MLK__rows > .MLK__row .left { + align-items: flex-start; + padding-left: 12px; +} +.MLK__rows > .MLK__row .right { + align-items: flex-end; + padding-right: 12px; +} +.MLK__rows > .MLK__row .w0 { + width: 0; +} +.MLK__rows > .MLK__row .w5 { + width: calc(0.5 * var(--_keycap-width) - var(--_keycap-gap)); +} +.MLK__rows > .MLK__row .w15 { + width: calc(1.5 * var(--_keycap-width) - var(--_keycap-gap)); +} +.MLK__rows > .MLK__row .w20 { + width: calc(2 * var(--_keycap-width) - var(--_keycap-gap)); +} +.MLK__rows > .MLK__row .w40 { + width: calc(4 * var(--_keycap-width) - var(--_keycap-gap)); +} +.MLK__rows > .MLK__row .w50 { + width: calc(5 * var(--_keycap-width) - var(--_keycap-gap)); +} +.MLK__rows > .MLK__row .MLK__keycap.w50 { + font-size: 80%; + padding-top: 10px; + font-weight: 100; +} +.MLK__rows > .MLK__row .separator { + background: transparent; + border: none; + pointer-events: none; +} +.MLK__rows > .MLK__row .horizontal-rule { + height: 6px; + margin-top: 3px; + margin-bottom: 0; + width: 100%; + border-radius: 0; + border-top: var(--_horizontal-rule); +} +.MLK__rows > .MLK__row .ghost { + background: var(--_toolbar-background); + border: none; + color: var(--_toolbar-text); +} +.MLK__rows > .MLK__row .ghost:hover { + background: var(--_toolbar-background-hover); +} +.MLK__rows > .MLK__row .bigfnbutton { + font-size: var(--_keycap-extra-small-font-size); +} +.MLK__rows > .MLK__row .shift, +.MLK__rows > .MLK__row .action { + color: var(--_keycap-secondary-text); + background: var(--_keycap-secondary-background); + border-color: var(--_keycap-secondary-border); + border-bottom-color: var(--_keycap-secondary-border-bottom); + line-height: 0.8; + font-size: min(1rem, var(--_keycap-small-font-size)); + font-weight: 600; + padding: 8px 12px 8px 12px; +} +.MLK__rows > .MLK__row .shift:hover, +.MLK__rows > .MLK__row .action:hover { + background: var(--_keycap-secondary-background-hover); +} +.MLK__rows > .MLK__row .action.primary { + background: var(--_keycap-primary-background); + color: var(--_keycap-primary-text); +} +.MLK__rows > .MLK__row .action.primary:hover { + background: var(--_keycap-primary-background-hover); + color: var(--_keycap-primary-text); +} +.MLK__rows > .MLK__row .shift.selected, +.MLK__rows > .MLK__row .action.selected { + color: var(--_toolbar-text-active); +} +.MLK__rows > .MLK__row .shift.selected.is-pressed, +.MLK__rows > .MLK__row .action.selected.is-pressed, +.MLK__rows > .MLK__row .shift.selected.is-active, +.MLK__rows > .MLK__row .action.selected.is-active { + color: white; +} +.MLK__rows > .MLK__row .warning { + background: #cd0030; + color: white; +} +.MLK__rows > .MLK__row .warning svg.svg-glyph { + width: 24px; + height: 24px; + min-height: 24px; +} +/** A regular keycap + * Use the :where() pseudo-class to give it a very low specifity, + * so that it can be overriden by custom style. + */ +:where(.MLK__rows > .MLK__row div) { + display: flex; + flex-flow: column; + align-items: center; + justify-content: space-evenly; + width: calc(var(--_keycap-width) - var(--_keycap-gap)); + height: var(--_keycap-height); + box-sizing: border-box; + padding: 0; + vertical-align: top; + text-align: center; + float: left; + color: var(--_keycap-text); + fill: currentColor; + font-size: var(--_keycap-font-size); + background: var(--_keycap-background); + border: 1px solid var(--_keycap-border); + border-bottom-color: var(--_keycap-border-bottom); + border-radius: 6px; + cursor: pointer; + touch-action: none; + /* Keys with a variants panel */ + position: relative; + overflow: hidden; + -webkit-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; +} +:where(.MLK__rows > .MLK__row div):hover { + overflow: visible; + background: var(--_keycap-background-hover); +} +:where(.MLK__rows > .MLK__row div) .ML__latex { + pointer-events: none; + touch-action: none; +} +:where(.MLK__rows > .MLK__row div) svg.svg-glyph { + margin: 8px 0; + width: 20px; + height: 20px; + min-height: 20px; +} +:where(.MLK__rows > .MLK__row div) svg.svg-glyph-lg { + margin: 8px 0; + width: 24px; + height: 24px; + min-height: 24px; +} +:where(.MLK__rows > .MLK__row div).MLK__tex-math { + font-size: 25px; +} +:where(.MLK__rows > .MLK__row div).is-pressed { + background: var(--_keycap-background-pressed); + color: var(--_keycap-text-pressed); + --_box-placeholder-color: var(--_box-placeholder-pressed-color); +} +:where(.MLK__rows > .MLK__row div).MLK__keycap.is-active, +:where(.MLK__rows > .MLK__row div).action.is-active, +:where(.MLK__rows > .MLK__row div).MLK__keycap.is-pressed, +:where(.MLK__rows > .MLK__row div).action.is-pressed { + z-index: calc(var(--_keyboard-zindex) - 5); +} +:where(.MLK__rows > .MLK__row div).MLK__keycap.is-active aside, +:where(.MLK__rows > .MLK__row div).action.is-active aside, +:where(.MLK__rows > .MLK__row div).MLK__keycap.is-pressed aside, +:where(.MLK__rows > .MLK__row div).action.is-pressed aside { + display: none; +} +:where(.MLK__rows > .MLK__row div).MLK__keycap.is-active .MLK__shift, +:where(.MLK__rows > .MLK__row div).action.is-active .MLK__shift, +:where(.MLK__rows > .MLK__row div).MLK__keycap.is-pressed .MLK__shift, +:where(.MLK__rows > .MLK__row div).action.is-pressed .MLK__shift { + display: none; +} +:where(.MLK__rows > .MLK__row div).shift.is-pressed, +:where(.MLK__rows > .MLK__row div).MLK__keycap.is-pressed, +:where(.MLK__rows > .MLK__row div).action.is-pressed { + background: var(--_keycap-background-pressed); + color: var(--_keycap-text-pressed); +} +:where(.MLK__rows > .MLK__row div).shift.is-active, +:where(.MLK__rows > .MLK__row div).MLK__keycap.is-active, +:where(.MLK__rows > .MLK__row div).action.is-active { + background: var(--_keycap-background-active); + color: var(--_keycap-text-active); + --_box-placeholder-color: var(--_box-placeholder-pressed-color); +} +:where(.MLK__rows > .MLK__row div) small { + color: var(--_keycap-secondary-text); +} +:where(.MLK__rows > .MLK__row div) aside { + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + font-size: 10px; + line-height: 10px; + color: var(--_keycap-secondary-text); +} +/* Add an attribute 'data-tooltip' to display a tooltip on hover. +Note there are a different set of tooltip rules for the keyboard toggle +(it's in a different CSS tree) */ +.ML__keyboard [data-tooltip] { + position: relative; +} +.ML__keyboard [data-tooltip]::after { + position: absolute; + display: inline-table; + content: attr(data-tooltip); + top: inherit; + bottom: 100%; + width: max-content; + max-width: 200px; + padding: 8px 8px; + background: #616161; + color: #fff; + text-align: center; + z-index: 2; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); + border-radius: 2px; + font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; + font-weight: 400; + font-size: 12px; + transition: all 0.15s cubic-bezier(0.4, 0, 1, 1) 1s; + opacity: 0; + transform: scale(0.5); +} +.ML__keyboard [data-tooltip]:hover { + position: relative; +} +.ML__keyboard [data-tooltip]:hover::after { + opacity: 1; + transform: scale(1); +} +.MLK__toolbar { + align-self: center; + display: flex; + flex-flow: row; + justify-content: space-between; + width: 100%; + max-width: 996px; + min-height: 32px; + /* Icons for undo/redo, etc. */ +} +.MLK__toolbar svg { + height: 20px; + width: 20px; +} +.MLK__toolbar > .left { + position: relative; + display: flex; + justify-content: flex-start; + flex-flow: row; +} +.MLK__toolbar > .right { + display: flex; + justify-content: flex-end; + flex-flow: row; +} +.MLK__toolbar > div > div { + /* "button" in the toolbar */ + display: flex; + align-items: center; + justify-content: center; + color: var(--_toolbar-text); + fill: currentColor; + background: var(--_toolbar-background); + font-size: var(--_toolbar-font-size); + padding: 4px 15px; + cursor: pointer; + width: max-content; + min-width: 42px; + min-height: 34px; + border: none; + padding-left: 10px; + padding-right: 10px; + padding-bottom: 8px; + padding-top: 8px; + margin-top: 0; + margin-bottom: 4px; + margin-left: 4px; + margin-right: 4px; + border-radius: 8px; + box-shadow: none; + border-bottom: 2px solid transparent; +} +.MLK__toolbar > div > div:not(.disabled):not(.selected):hover { + background: var(--_toolbar-background-hover); +} +.MLK__toolbar > div > div.disabled svg, +.MLK__toolbar > div > div.disabled:hover svg, +.MLK__toolbar > div > div.disabled.is-pressed svg { + color: var(--_toolbar-text); + opacity: 0.2; +} +.MLK__toolbar > div > div:hover, +.MLK__toolbar > div > div:active, +.MLK__toolbar > div > div.is-pressed, +.MLK__toolbar > div > div.is-active { + color: var(--_toolbar-text-active); +} +.MLK__toolbar > div > div.selected { + color: var(--_toolbar-text-active); + background: var(--_toolbar-background-selected); + border-radius: 0; + border-bottom-color: var(--_toolbar-text-active); + padding-bottom: 4px; + margin-bottom: 8px; +} +/* This is the element that displays variants on press+hold */ +.MLK__variant-panel { + visibility: hidden; + position: fixed; + display: flex; + flex-flow: row wrap-reverse; + justify-content: center; + align-content: center; + margin: 0; + padding: 0; + bottom: auto; + top: 0; + box-sizing: content-box; + transform: none; + z-index: calc(var(--_keyboard-zindex) + 1); + touch-action: none; + max-width: 350px; + background: var(--_variant-panel-background); + text-align: center; + border-radius: 6px; + padding: 6px; + box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22); + transition: none; +} +.MLK__variant-panel.is-visible { + visibility: visible; +} +.MLK__variant-panel.compact { + --_variant-keycap-length: var(--variant-keycap-length, 50px); + --_variant-keycap-font-size: var(--variant-keycap-font-size, 24px); + --_variant-keycap-aside-font-size: var(--variant-keycap-aside-font-size, 10px); +} +.MLK__variant-panel .item { + display: flex; + flex-flow: column; + align-items: center; + justify-content: center; + font-size: var(--_variant-keycap-font-size); + height: var(--_variant-keycap-length); + width: var(--_variant-keycap-length); + margin: 0; + box-sizing: border-box; + border-radius: 5px; + border: 1px solid transparent; + background: transparent; + pointer-events: all; + cursor: pointer; + color: var(--_variant-keycap-text); + fill: currentColor; +} +@media (max-height: 412px) { + .MLK__variant-panel .item { + --_variant-keycap-font-size: var(--variant-keycap-font-size, 24px); + --_variant-keycap-length: var(--variant-keycap-length, 50px); + } +} +.MLK__variant-panel .item .ML__latex { + pointer-events: none; +} +.MLK__variant-panel .item.is-active { + background: var(--_variant-keycap-background-active); + color: var(--_variant-keycap-text-active); +} +.MLK__variant-panel .item.is-pressed { + background: var(--_variant-keycap-background-pressed); + color: var(--_variant-keycap-text-pressed); +} +.MLK__variant-panel .item.small { + font-size: var(--_keycap-small-font-size); +} +.MLK__variant-panel .item.swatch-button { + box-sizing: border-box; + background: #fbfbfb; +} +.MLK__variant-panel .item.swatch-button > span { + display: inline-block; + margin: 6px; + width: calc(100% - 12px); + height: calc(100% - 12px); + border-radius: 50%; +} +.MLK__variant-panel .item.swatch-button:hover { + background: #f0f0f0; +} +.MLK__variant-panel .item.swatch-button:hover > span { + border-radius: 2px; +} +.MLK__variant-panel .item.box > div, +.MLK__variant-panel .item.box > span { + border: 1px dashed rgba(0, 0, 0, 0.24); +} +.MLK__variant-panel .item .warning { + min-height: 60px; + min-width: 60px; + background: #cd0030; + color: white; + padding: 5px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 5px; +} +.MLK__variant-panel .item .warning.is-pressed, +.MLK__variant-panel .item .warning.is-active { + background: red; +} +.MLK__variant-panel .item .warning svg.svg-glyph { + width: 50px; + height: 50px; +} +.MLK__variant-panel .item aside { + font-size: var(--_variant-keycap-aside-font-size); + line-height: 12px; + opacity: 0.78; + padding-top: 2px; +} +.MLK__keycap { + position: relative; +} +.MLK__shift { + display: block; + position: absolute; + right: 4px; + top: 4px; + font-size: var(--_keycap-shift-font-size); + color: var(--_keycap-shift-color); +} +.hide-shift .MLK__shift { + display: none; +} +@media (max-width: 414px) { + .MLK__variant-panel { + max-width: 350px; + --_variant-keycap-font-size: var(--variant-keycap-font-size, 24px); + --_variant-keycap-length: var(--variant-keycap-length, 50px); + } +} +/* @xs breakpoint: iPhone 5 */ +@container (max-width: 414px) { + .MLK__rows { + --_keycap-gap: max(var(--_keycap-gap, 2px), 2px); + --_keycap-height: max(var(--_keycap-height), 42px); + --_keycap-width: var(--keycap-width, min(min(var(--_keycap-max-width)), 10cqw), 62px)); + } + .MLK__toolbar > div > div { + font-size: 100%; + margin-left: 2px; + margin-right: 2px; + } + .MLK__rows .shift, + .MLK__rows .action { + font-size: 65%; + } + .MLK__rows .warning svg.svg-glyph { + width: 14px; + height: 14px; + min-height: 14px; + } +} +@container (max-width: 744px) { + .MLK__rows { + --_keycap-gap: max(var(--keycap-gap, 2px), 2px); + --_keycap-height: max(var(--keycap-height, 52px), 52px); + --_keycap-width: var(--keycap-width, min(min(var(--_keycap-max-width), 10cqw), 62px)); + } + .MLK__toolbar > div > div { + padding-left: 0; + padding-right: 0; + } + .MLK__tooltip::after { + padding: 8px 16px; + font-size: 16px; + } + .MLK__rows > .MLK__row > div.fnbutton { + font-size: 16px; + } + .MLK__rows > .MLK__row > div.bigfnbutton { + font-size: calc(var(--_keycap-extra-small-font-size) / 1.55); + } + .MLK__rows > .MLK__row > div.small { + font-size: 13px; + } + .MLK__rows > .MLK__row > div > aside { + display: none; + } + .MLK__shift { + display: none; + } +} +/* Medium breakpoint: larger phones */ +@container (max-width: 768px) { + .MLK__rows { + --_keycap-height: max(var(--keycap-height, 42px), 42px); + } + .MLK__rows > .MLK__row > div > small { + font-size: 14px; + } +} +@media (max-height: 768px) { + .MLK__rows { + --_keycap-height: max(var(--keycap-height, 42px), 42px); + } + .MLK__rows > .MLK__row > div > small { + font-size: 14px; + } +} +@container (max-width: 1444px) { + .MLK__rows .if-wide { + display: none; + } +} +@media (prefers-color-scheme: dark) { + .ML__keyboard { + --_accent-color: var(--keyboard-accent-color, #0b5c9c); + --_background: var(--keyboard-background, #151515); + --_border: var(--keyboard-border, transparent); + --_toolbar-text: var(--keyboard-toolbar-text, #e3e4e8); + --_toolbar-background-hover: var(--keyboard-toolbar-background-hover, #303030); + --keyboard-toolbar-background-hover: #303030; + --_horizontal-rule: var(--keyboard-horizontal-rule, 1px solid #303030); + --_keycap-background: var(--keycap-background, #1f2022); + --_keycap-background-hover: var(--keycap-background-hover, #2f3032); + --_keycap-border: var(--_keycap-border, transparent); + --_keycap-border-bottom: var(--_keycap-border-bottom, transparent); + --_keycap-text: var(--keycap-text, #e3e4e8); + --_keycap-secondary-background: var(--keycap-secondary-background, #3d4144); + --_keycap-secondary-background-hover: var(--keycap-secondary-background-hover, #4d5154); + --_keycap-secondary-text: var(--keycap-secondary-text, #e7ebee); + --keycap-secondary-border: transparent; + --keycap-secondary-border-bottom: transparent; + --_keycap-secondary-border: var(--keycap-secondary-border, transparent); + --_keycap-secondary-border-bottom: var(--keycap-secondary-border-bottom, transparent); + --_variant-panel-background: var(--variant-panel-background, #303030); + --_variant-keycap-text-active: var(--variant-keycap-text-active, #fff); + } +} +/* Same as the media query, but with a class */ +[theme='dark'] .ML__keyboard { + --_accent-color: var(--keyboard-accent-color, #0b5c9c); + --_background: var(--keyboard-background, #151515); + --_border: var(--keyboard-border, transparent); + --_toolbar-text: var(--keyboard-toolbar-text, #e3e4e8); + --_toolbar-background-hover: var(--keyboard-toolbar-background-hover, #303030); + --keyboard-toolbar-background-hover: #303030; + --_horizontal-rule: var(--keyboard-horizontal-rule, 1px solid #303030); + --_keycap-background: var(--keycap-background, #1f2022); + --_keycap-background-hover: var(--keycap-background-hover, #2f3032); + --_keycap-border: var(--_keycap-border, transparent); + --_keycap-border-bottom: var(--_keycap-border-bottom, transparent); + --_keycap-text: var(--keycap-text, #e3e4e8); + --_keycap-secondary-background: var(--keycap-secondary-background, #3d4144); + --_keycap-secondary-background-hover: var(--keycap-secondary-background-hover, #4d5154); + --_keycap-secondary-text: var(--keycap-secondary-text, #e7ebee); + --keycap-secondary-border: transparent; + --keycap-secondary-border-bottom: transparent; + --_keycap-secondary-border: var(--keycap-secondary-border, transparent); + --_keycap-secondary-border-bottom: var(--keycap-secondary-border-bottom, transparent); + --_variant-panel-background: var(--variant-panel-background, #303030); + --_variant-keycap-text-active: var(--variant-keycap-text-active, #fff); +} +[theme='light'] .ML__keyboard { + --_accent-color: var(--keyboard-accent-color, #0c75d8); + --_background: var(--keyboard-background, #cacfd7); + --_border: var(--keyboard-border, #ddd); + --_toolbar-text: var(--keyboard-toolbar-text, #2c2e2f); + --_toolbar-background: var(--keyboard-toolbar-background, transparent); + --_toolbar-background-hover: var(--keyboard-toolbar-background-hover, #eee); + --_toolbar-background-selected: var(--keyboard-toolbar-background-selected, transparent); + --_horizontal-rule: var(--keyboard-horizontal-rule, 1px solid #fff); + --_keycap-background: var(--keycap-background, white); + --_keycap-background-hover: var(--keycap-background-hover, #f5f5f7); + --_keycap-background-active: var(--keycap-background-active, var(--_accent-color)); + --_keycap-background-pressed: var(--keycap-background-pressed, var(--_accent-color)); + --_keycap-border: var(--_keycap-border, #e5e6e9); + --_keycap-border-bottom: var(--_keycap-border-bottom, #8d8f92); + --_keycap-text: var(--keycap-text, #000); + --_keycap-text-active: var(--keycap-text-active, #fff); + --_keycap-text-hover: var(--keycap-text-hover, var(--_keycap-text)); + --_keycap-text-pressed: var(--keycap-text-pressed, #fff); + --_keycap-shift-text: var(--keycap-shift-text, var(--_accent-color)); + --_keycap-secondary-background: var(--keycap-secondary-background, #a0a9b8); + --_keycap-secondary-background-hover: var(--keycap-secondary-background-hover, #7d8795); + --_keycap-secondary-text: var(--keycap-secondary-text, #060707); + --_keycap-secondary-border: var(--keycap-secondary-border, #c5c9d0); + --_keycap-secondary-border-bottom: var(--keycap-secondary-border-bottom, #989da6); + --_variant-panel-background: var(--variant-panel-background, #fff); + --_variant-keycap-text: var(--variant-keycap-textvar, var(--_keycap-text)); + --_variant-keycap-text-active: var(--variant-keycap-text-active, var(--_keycap-text-active)); + --_variant-keycap-background-active: var(--variant-keycap-background-active, var(--_accent-color)); +} +`; +var X0 = `:host { + --primary-color: #5898ff; + --primary-color-dimmed: #c0c0f0; + --primary-color-dark: var(--blue-500); + --primary-color-light: var(--blue-100); + --primary-color-reverse: #ffffff; + --secondary-color: #ff8a65; + --secondary-color-dimmed: #f0d5c5; + --secondary-color-dark: var(--orange-500); + --secondary-color-light: var(--orange-100); + --secondary-color-reverse: #ffffff; + --link-color: #5898ff; + --link-color-dimmed: #c5c5c5; + --link-color-dark: #121212; + --link-color-light: #e2e2e2; + --link-color-reverse: #ffffff; + --semantic-blue: var(--blue-700); + --semantic-red: var(--red-400); + --semantic-orange: var(--orange-400); + --semantic-green: var(--green-700); + --neutral-100: #f5f5f5; + --neutral-200: #eeeeee; + --neutral-300: #e0e0e0; + --neutral-400: #bdbdbd; + --neutral-500: #9e9e9e; + --neutral-600: #757575; + --neutral-700: #616161; + --neutral-800: #424242; + --neutral-900: #212121; + --red-25: #fff8f7; + --red-50: #fff1ef; + --red-100: #ffeae6; + --red-200: #ffcac1; + --red-300: #ffa495; + --red-400: #ff7865; + --red-500: #f21c0d; + --red-600: #e50018; + --red-700: #d30024; + --red-800: #bd002c; + --red-900: #a1002f; + --orange-25: #fffbf8; + --orange-50: #fff7f1; + --orange-100: #fff3ea; + --orange-200: #ffe1c9; + --orange-300: #ffcca2; + --orange-400: #ffb677; + --orange-500: #fe9310; + --orange-600: #f58700; + --orange-700: #ea7c00; + --orange-800: #dc6d00; + --orange-900: #ca5b00; + --brown-25: #fff8ef; + --brown-50: #fff1df; + --brown-100: #ffe9ce; + --brown-200: #ebcca6; + --brown-300: #cdaf8a; + --brown-400: #af936f; + --brown-500: #856a47; + --brown-600: #7f5e34; + --brown-700: #78511f; + --brown-800: #6e4200; + --brown-900: #593200; + --yellow-25: #fffdf9; + --yellow-50: #fffcf2; + --yellow-100: #fffaec; + --yellow-200: #fff2ce; + --yellow-300: #ffe8ab; + --yellow-400: #ffdf85; + --yellow-500: #ffcf33; + --yellow-600: #f1c000; + --yellow-700: #dfb200; + --yellow-800: #c9a000; + --yellow-900: #ad8a00; + --lime-25: #f4ffee; + --lime-50: #e9ffdd; + --lime-100: #ddffca; + --lime-200: #a8fb6f; + --lime-300: #94e659; + --lime-400: #80d142; + --lime-500: #63b215; + --lime-600: #45a000; + --lime-700: #268e00; + --lime-800: #007417; + --lime-900: #005321; + --green-25: #f5fff5; + --green-50: #ebffea; + --green-100: #e0ffdf; + --green-200: #a7ffa7; + --green-300: #5afa65; + --green-400: #45e953; + --green-500: #17cf36; + --green-600: #00b944; + --green-700: #00a34a; + --green-800: #008749; + --green-900: #00653e; + --teal-25: #f3ffff; + --teal-50: #e6fffe; + --teal-100: #d9fffe; + --teal-200: #8dfffe; + --teal-300: #57f4f4; + --teal-400: #43e5e5; + --teal-500: #17cfcf; + --teal-600: #00c2c0; + --teal-700: #00b5b1; + --teal-800: #00a49e; + --teal-900: #009087; + --cyan-25: #f7fcff; + --cyan-50: #eff8ff; + --cyan-100: #e7f5ff; + --cyan-200: #c2e6ff; + --cyan-300: #95d5ff; + --cyan-400: #61c4ff; + --cyan-500: #13a7ec; + --cyan-600: #069eda; + --cyan-700: #0095c9; + --cyan-800: #0088b2; + --cyan-900: #0a7897; + --blue-25: #f7faff; + --blue-50: #eef5ff; + --blue-100: #e5f1ff; + --blue-200: #bfdbff; + --blue-300: #92c2ff; + --blue-400: #63a8ff; + --blue-500: #0d80f2; + --blue-600: #0077db; + --blue-700: #006dc4; + --blue-800: #0060a7; + --blue-900: #005086; + --indigo-25: #f8f7ff; + --indigo-50: #f1efff; + --indigo-100: #eae7ff; + --indigo-200: #ccc3ff; + --indigo-300: #ac99ff; + --indigo-400: #916aff; + --indigo-500: #63c; + --indigo-600: #5a21b2; + --indigo-700: #4e0b99; + --indigo-800: #3b0071; + --indigo-900: #220040; + --purple-25: #fbf7ff; + --purple-50: #f8f0ff; + --purple-100: #f4e8ff; + --purple-200: #e4c4ff; + --purple-300: #d49aff; + --purple-400: #c36aff; + --purple-500: #a219e6; + --purple-600: #9000c4; + --purple-700: #7c009f; + --purple-800: #600073; + --purple-900: #3d0043; + --magenta-25: #fff8fb; + --magenta-50: #fff2f6; + --magenta-100: #ffebf2; + --magenta-200: #ffcddf; + --magenta-300: #ffa8cb; + --magenta-400: #ff7fb7; + --magenta-500: #eb4799; + --magenta-600: #da3689; + --magenta-700: #c82179; + --magenta-800: #b00065; + --magenta-900: #8a004c; +} +@media (prefers-color-scheme: dark) { + :host { + --semantic-blue: var(--blue-700); + --semantic-red: var(--red-400); + --semantic-orange: var(--orange-400); + --semantic-green: var(--green-700); + --semantic-bg-blue: var(--blue-25); + --semantic-bg-red: var(--red-25); + --semantic-bg-orange: var(--orange-25); + --semantic-bg-green: var(--green-25); + --neutral-100: #121212; + --neutral-200: #424242; + --neutral-300: #616161; + --neutral-400: #757575; + --neutral-500: #9e9e9e; + --neutral-600: #bdbdbd; + --neutral-700: #e0e0e0; + --neutral-800: #eeeeee; + --neutral-900: #f5f5f5; + } +} +:host([theme='dark']) { + --semantic-blue: var(--blue-700); + --semantic-red: var(--red-400); + --semantic-orange: var(--orange-400); + --semantic-green: var(--green-700); + --semantic-bg-blue: var(--blue-25); + --semantic-bg-red: var(--red-25); + --semantic-bg-orange: var(--orange-25); + --semantic-bg-green: var(--green-25); + --neutral-100: #121212; + --neutral-200: #424242; + --neutral-300: #616161; + --neutral-400: #757575; + --neutral-500: #9e9e9e; + --neutral-600: #bdbdbd; + --neutral-700: #e0e0e0; + --neutral-800: #eeeeee; + --neutral-900: #f5f5f5; +} +/* @media (prefers-color-scheme: dark) { + :host { + --label-color: #fff; + --active-label-color: #000; + --menu-bg: #525252; + --active-bg: #5898ff; + --active-bg-dimmed: #5c5c5c; + } +} */ +:host { + --ui-font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, + 'Segoe UI', Helvetica, Arial, sans-serif, 'Apple Color Emoji', + 'Segoe UI Emoji', 'Segoe UI Symbol'; + --ui-font-size: 14px; + --ui-line-height: 1.5; + --ui-letter-spacing: 0.007em; + --mono-font-family: 'Berkeley Mono', 'JetBrains Mono', 'IBM Plex Mono', + 'Source Code Pro', Menlo, Monaco, 'Courier New', monospace; + --ui-layer-1: var(--neutral-100); + --ui-layer-2: var(--neutral-200); + --ui-layer-3: var(--neutral-300); + --ui-layer-4: var(--neutral-400); + --ui-layer-5: var(--neutral-500); + --ui-layer-6: var(--neutral-600); + --ui-border-color: var(--primary-color); + --ui-border-radius: 4px; + --ui-text: var(--neutral-900); + --ui-text-secondary: var(--neutral-700); + --ui-text-placeholder: var(--neutral-500); + --ui-text-muted: var(--neutral-300); + /** A field is a UI element in which a user can type data, for + * example an input or textarea element. + */ + --ui-field-bg: var(--neutral-100); + --ui-field-bg-hover: var(--neutral-100); + --ui-field-bg-disabled: var(--neutral-300); + --ui-field-bg-invalid: var(--red-100); + --ui-field-bg-focus: var(--neutral-100); + --ui-field-border: 0.5px solid var(--border-color); + --ui-field-border-hover: 0.5px solid var(--border-color); + --ui-field-border-disabled: 0.5px solid var(--border-color); + --ui-field-border-invalid: 0.5px solid var(--border-color); + --ui-field-border-focus: 0.5px solid var(--border-color); + --ui-menu-bg: var(--neutral-100); + --ui-menu-text: var(--neutral-900); + --ui-menu-bg-hover: var(--neutral-200); + --ui-menu-text-hover: var(--neutral-900); + /** The \`active\` state is used for the state of menu items + * when they are selected. + */ + --ui-menu-bg-active: var(--primary-color); + --ui-menu-text-active: var(--primary-color-reverse); + /** The \`active-muted\` set is used for the state of + * submenus when they are open. + */ + --ui-menu-bg-active-muted: var(--neutral-300); + --ui-menu-text-active-muted: var(--neutral-900); + /* --ui-menu-shadow: 0 1px 2px 0 rgba(60, 64, 67, 0.302), +0 2px 6px 2px rgba(60, 64, 67, 0.149); */ + --ui-menu-shadow: 0 0 2px rgba(0, 0, 0, 0.5), 0 0 20px rgba(0, 0, 0, 0.2); + --ui-menu-divider: 0.5px solid #c7c7c7; + /* var(--neutral-300); */ + --ui-menu-z-index: 10000; + --page-bg: var(--neutral-100); + --content-bg: var(--neutral-200); +} +@media (prefers-color-scheme: dark) { + :host { + --ui-menu-bg: var(--neutral-200); + } +} +:host([theme='dark']) { + --ui-menu-bg: var(--neutral-200); +} +/* PingFang SC is a macOS font. Microsoft Yahei is a Windows font. + Noto is a Linux/Android font. +*/ +:lang(zh-cn), +:lang(zh-sg), +:lang(zh-my), +:lang(zh) { + --ui-font-family: -apple-system, system-ui, 'PingFang SC', 'Hiragino Sans GB', + 'Noto Sans CJK SC', 'Noto Sans SC', 'Noto Sans', 'Microsoft Yahei UI', + 'Microsoft YaHei New', 'Microsoft Yahei', '\u5FAE\u8F6F\u96C5\u9ED1', SimSun, '\u5B8B\u4F53', + STXihei, '\u534E\u6587\u7EC6\u9ED1', sans-serif; +} +:lang(zh-tw), +:lang(zh-hk), +:lang(zh-mo) { + --ui-font-family: -apple-system, system-ui, 'Noto Sans', + 'Microsoft JhengHei UI', 'Microsoft JhengHei', '\u5FAE\u8EDF\u6B63\u9ED1\u9AD4', '\u65B0\u7D30\u660E\u9AD4', + 'PMingLiU', '\u7D30\u660E\u9AD4', 'MingLiU', sans-serif; +} +:lang(ja), +:lang(ja-jp), +:lang(ja-jp-mac) { + --ui-font-family: -apple-system, system-ui, 'Hiragino Sans', + 'Hiragino Kaku Gothic ProN', 'Noto Sans CJK JP', 'Noto Sans JP', 'Noto Sans', + '\u6E38\u30B4\u30B7\u30C3\u30AF', '\u6E38\u30B4\u30B7\u30C3\u30AF\u4F53', YuGothic, 'Yu Gothic', '\u30E1\u30A4\u30EA\u30AA', Meiryo, + '\uFF2D\uFF33 \uFF30\u30B4\u30B7\u30C3\u30AF', 'MS PGothic', sans-serif; +} +:lang(ko), +:lang(ko-kr), +:lang(ko-kr-std) { + --ui-font-family: -apple-system, system-ui, 'Noto Sans CJK KR', 'Noto Sans KR', + 'Noto Sans', 'Malgun Gothic', '\uB9D1\uC740 \uACE0\uB515', 'Apple SD Gothic Neo', + '\uC560\uD50C SD \uC0B0\uB3CC\uACE0\uB515 Neo', 'Apple SD \uC0B0\uB3CC\uACE0\uB515 Neo', '\uB3CB\uC6C0', Dotum, sans-serif; +} +:lang(ko-kr-apple) { + --ui-font-family: -apple-system, system-ui, 'Noto Sans CJK KR', 'Noto Sans KR', + 'Noto Sans', 'Apple SD Gothic Neo', '\uC560\uD50C SD \uC0B0\uB3CC\uACE0\uB515 Neo', + 'Apple SD \uC0B0\uB3CC\uACE0\uB515 Neo', '\uB3CB\uC6C0', Dotum, sans-serif; +} +:lang(zh-cn), +:lang(zh-sg), +:lang(zh-my), +:lang(zh), +:lang(zh-tw), +:lang(zh-hk), +:lang(zh-mo), +:lang(ja), +:lang(ja-jp), +:lang(ja-jp-mac), +:lang(ko), +:lang(ko-kr), +:lang(ko-kr-std), +:lang(ko-kr-apple) { + --ui-font-size: 1rem; + --ui-line-height: 1.7; + --ui-letter-spacing: 0; +} +:dir(rtl) { + --ui-line-height: auto; + --ui-letter-spacing: 0; +} +`; +var Z0 = `.ui-menu *, +.ui-menu ::before, +.ui-menu ::after { + box-sizing: border-box; +} +.ui-menu { + display: none; + color-scheme: light dark; + -webkit-user-select: none; + /* Important: Safari iOS doesn't respect user-select */ + user-select: none; + cursor: default; + -webkit-touch-callout: none; + -webkit-tap-highlight-color: rgba(0 0 0 0); + --active-label-color: #fff; + /* ui-menu-text-active */ + --label-color: #121212; + /* ui-menu-text */ + --menu-bg: #e2e2e2; + /* ui-menu-background */ + --active-bg: #5898ff; + /* ui-menu-background-active */ + --active-bg-dimmed: #c5c5c5; + /* ui-menu-background-active-muted */ +} +/** Use the :where pseudo selector to make the specificity of the + * selector 0, so that it can be overridden by the user. + */ +:where(.ui-menu-container) { + position: absolute; + overflow: visible; + width: auto; + height: auto; + z-index: 10000; + border-radius: 8px; + background: var(--ui-menu-bg); + box-shadow: var(--ui-menu-shadow); + list-style: none; + padding: 6px 0 6px 0; + margin: 0; + user-select: none; + cursor: default; + color: var(--ui-menu-text); + font-weight: normal; + font-style: normal; + text-shadow: none; + text-transform: none; + letter-spacing: 0; + outline: none; + opacity: 1; + /* The [popover] elements have a 1px solid black border. Ugh. */ + border: none; + width: fit-content; + height: fit-content; +} +:where(.ui-menu-container > li) { + display: flex; + flex-flow: row; + align-items: center; + padding: 1px 7px 1px 7px; + margin-top: 0; + margin-left: 6px; + margin-right: 6px; + border-radius: 4px; + white-space: nowrap; + position: relative; + outline: none; + fill: currentColor; + user-select: none; + cursor: default; + text-align: left; + color: inherit; + font-family: var(--ui-font-family); + font-size: var(--ui-font-size); + line-height: var(--ui-line-height); + letter-spacing: var(--ui-letter-spacing); +} +:where(.ui-menu-container > li > .label) { + appearance: none; + background: none; + outline: none; + width: 100%; + margin: 0; + padding: 1px 2px 1px 1px; + overflow: visible; + border: 1px solid transparent; + white-space: nowrap; + text-align: start; +} +:where(.ui-menu-container > li:has(.heading)) { + margin-top: 0.5em; +} +:where(.ui-menu-container > li > .label.heading) { + font-weight: bold; + opacity: 0.4; +} +:where(.ui-menu-container > li.indent > .label) { + margin-inline-start: 12px; +} +:where(.ui-menu-container > li > .label.indent) { + margin-inline-start: 12px; +} +:where(.ui-menu-container > li[role='divider']) { + border-bottom: 1px solid var(--ui-menu-divider); + border-radius: 0; + padding: 0; + margin-left: 15px; + margin-right: 15px; + padding-top: 5px; + margin-bottom: 5px; + width: calc(100% - 30px); + /** 100% - (margin-left + margin-right) */ +} +:where(.ui-menu-container > li[aria-disabled='true']) { + opacity: 0.5; +} +:where(.ui-menu-container > li.active) { + background: var(--ui-menu-bg-active); + background: -apple-system-control-accent; + color: var(--ui-menu-text-active); +} +:where(.ui-menu-container > li.active.is-submenu-open) { + background: var(--ui-menu-bg-active-muted); + color: inherit; +} +:where(.ui-menu-container > li[aria-haspopup='true'] > .label) { + padding-inline-end: 0; +} +:where(.ui-menu-container > li[aria-haspopup='true'].active::after) { + color: var(--ui-menu-text-active); +} +/** Keyboard shortcut */ +:where(.ui-menu-container > li > kbd) { + font-family: var(--ui-font-family); + margin-inline-start: 12px; + opacity: 0.4; +} +:where(.ui-menu-container > li.active > kbd) { + opacity: 0.85; +} +.ui-trailing-chevron { + display: flex; + margin-inline-start: 24px; + width: 10px; + height: 10px; + margin-bottom: 4px; +} +.ui-trailing-chevron:dir(rtl) { + transform: scaleX(-1); +} +.ui-checkmark { + display: flex; + margin-inline-end: -11px; + margin-inline-start: -4px; + margin-top: 2px; + width: 16px; + height: 16px; +} +.ui-mixedmark { + display: flex; + margin-inline-end: -11px; + margin-inline-start: -4px; + margin-top: 2px; + width: 16px; + height: 16px; +} +`; +var yr; +function br(t37) { + let e = ""; + switch (t37) { + case "mathfield-element": + e = ` + :host { display: inline-block; background-color: field; color: fieldtext; border-width: 1px; border-style: solid; border-color: #acacac; border-radius: 2px; padding:4px;} + :host([hidden]) { display: none; } + :host([disabled]), :host([disabled]:focus), :host([disabled]:focus-within) { outline: none; opacity: .5; } + :host(:focus), :host(:focus-within) { + outline: Highlight auto 1px; /* For Firefox */ + outline: -webkit-focus-ring-color auto 1px; + } + :host([readonly]:focus), :host([readonly]:focus-within), + :host([read-only]:focus), :host([read-only]:focus-within) { + outline: none; + } + @media (hover: none) and (pointer: coarse) { + :host(:not(:focus)) :first-child { pointer-events: none !important; } + }`; + break; + case "core": + e = W0; + break; + case "mathfield": + e = H0; + break; + case "environment-popover": + e = U0; + break; + case "suggestion-popover": + e = J0; + break; + case "keystroke-caption": + e = G0; + break; + case "virtual-keyboard": + e = j0; + break; + case "ui": + e = X0; + break; + case "menu": + e = Z0; + break; + default: + } + return e; +} +function Hr(t37) { + return yr || (yr = {}), yr[t37] || (yr[t37] = new CSSStyleSheet(), yr[t37].replaceSync(br(t37))), yr[t37]; +} +var At; +function Oe(t37) { + var e; + if (!("adoptedStyleSheets" in document)) { + if (window.document.getElementById(`mathlive-style-${t37}`)) + return; + let r = window.document.createElement("style"); + r.id = `mathlive-style-${t37}`, r.append(window.document.createTextNode(br(t37))), window.document.head.appendChild(r); + return; + } + if (At || (At = {}), ((e = At[t37]) != null ? e : 0) !== 0) + At[t37] += 1; + else { + let r = Hr(t37); + document.adoptedStyleSheets = [...document.adoptedStyleSheets, r], At[t37] = 1; + } +} +function Ve(t37) { + if ("adoptedStyleSheets" in document && At != null && At[t37] && (At[t37] -= 1, At[t37] <= 0)) { + let e = yr[t37]; + document.adoptedStyleSheets = document.adoptedStyleSheets.filter((r) => r !== e); + } +} +var xr = class t5 extends y { + constructor(e) { + var r; + super(g(p({}, e), { type: "accent", body: (r = e.body) != null ? r : void 0 })), e.accentChar ? this.accent = e.accentChar : this.svgAccent = e == null ? void 0 : e.svgAccent, this.skipBoundary = true, this.captureSelection = true; + } + static fromJson(e) { + return new t5(e); + } + toJson() { + return g(p({}, super.toJson()), { accentChar: this.accent, svgAccent: this.svgAccent }); + } + render(e) { + var l; + let r = new T({ parent: e, mathstyle: "cramp" }, this.style), i = (l = y.createBox(r, this.body)) != null ? l : new w("\u25A2", { style: this.style }), n = 0; + !this.hasEmptyBranch("body") && this.body.length === 2 && this.body[1].isCharacterBox() && (n = i.skew); + let o = Math.min(i.height, $e), a; + if (this.svgAccent) + a = Bi(this.svgAccent), o = r.metrics.bigOpSpacing1 - o; + else if (this.accent) { + let c = new w(this.accent, { fontFamily: "Main-Regular" }); + c.italic = 0; + let u = this.accent === 8407 ? " ML__accent-vec" : ""; + a = new w(new w(c), { classes: "ML__accent-body" + u }); + } + a = new U({ shift: 0, children: [{ box: new w(i) }, -o, { box: a, marginLeft: i.left + 2 * n, classes: ["ML__center"] }] }); + let s = new w(a, { type: "lift" }); + return this.caret && (s.caret = this.caret), this.bind(r, s.wrap(r)), this.attachSupsub(r, { base: s }); + } +}; +var zi = { "(": ")", "{": "}", "[": "]", "|": "|", "\\lbrace": "\\rbrace", "\\lparen": "\\rparen", "\\{": "\\}", "\\langle": "\\rangle", "\\lfloor": "\\rfloor", "\\lceil": "\\rceil", "\\vert": "\\vert", "\\lvert": "\\rvert", "\\Vert": "\\Vert", "\\lVert": "\\rVert", "\\lbrack": "\\rbrack", "\\ulcorner": "\\urcorner", "\\llcorner": "\\lrcorner", "\\lgroup": "\\rgroup", "\\lmoustache": "\\rmoustache" }; +var Ni = Object.fromEntries(Object.entries(zi).map(([t37, e]) => [e, t37])); +function ka(t37) { + var e; + return (e = { "[": 91, "]": 93, "(": 40, ")": 41, "\\mid": 8739, "|": 8739, "\u2223": 8739, "\u2225": 8741, "\\|": 8739, "\\{": 123, "\\}": 125, "\\lbrace": 123, "\\rbrace": 125, "\\lparen": 40, "\\rparen": 41, "\\lbrack": 91, "\\rbrack": 93, "\\vert": 8739, "\\lvert": 8739, "\\mvert": 8739, "\\rvert": 8739, "\\Vert": 8741, "\\lVert": 8741, "\\mVert": 8741, "\\rVert": 8741, "\\parallel": 8741, "\\shortparallel": 8741, "\\langle": 10216, "\\rangle": 10217, "\\lfloor": 8970, "\\rfloor": 8971, "\\lceil": 8968, "\\rceil": 8969, "\\ulcorner": 9484, "\\urcorner": 9488, "\\llcorner": 9492, "\\lrcorner": 9496, "\\lgroup": 10222, "\\rgroup": 10223, "\\lmoustache": 9136, "\\rmoustache": 9137, "\\surd": 8730 }[t37]) != null ? e : t37.codePointAt(0); +} +function $h(t37, e, r, i) { + var a; + let o = new w(ka(t37), { fontFamily: "Main-Regular", isSelected: i.isSelected, classes: "ML__small-delim " + ((a = i.classes) != null ? a : "") }).wrap(e); + return r && o.setTop((1 - e.scalingFactor) * Ae), o; +} +function Y0(t37, e, r, i, n) { + var s, l; + let o = new T({ parent: i, mathstyle: "textstyle" }, n == null ? void 0 : n.style), a = new w(ka(t37), { fontFamily: `Size${e}-Regular`, isSelected: n.isSelected, classes: ((s = n.classes) != null ? s : "") + ` ML__delim-size${e}`, type: (l = n.type) != null ? l : "ignore" }).wrap(o); + return r && a.setTop((1 - o.scalingFactor) * Ae), a; +} +function Q0(t37, e, r, i, n) { + var pt; + let o, a, s, l; + o = s = l = ka(t37), a = null; + let c = "Size1-Regular"; + t37 === "\\vert" || t37 === "\\lvert" || t37 === "\\rvert" || t37 === "\\mvert" || t37 === "\\mid" ? s = o = l = 8739 : t37 === "\\Vert" || t37 === "\\lVert" || t37 === "\\rVert" || t37 === "\\mVert" || t37 === "\\|" ? s = o = l = 8741 : t37 === "\\uparrow" ? s = l = 9168 : t37 === "\\Uparrow" ? s = l = 8214 : t37 === "\\downarrow" ? o = s = 9168 : t37 === "\\Downarrow" ? o = s = 8214 : t37 === "\\updownarrow" ? (o = 8593, s = 9168, l = 8595) : t37 === "\\Updownarrow" ? (o = 8657, s = 8214, l = 8659) : t37 === "[" || t37 === "\\lbrack" ? (o = 9121, s = 9122, l = 9123, c = "Size4-Regular") : t37 === "]" || t37 === "\\rbrack" ? (o = 9124, s = 9125, l = 9126, c = "Size4-Regular") : t37 === "\\lfloor" || t37 === "\u230A" ? (s = o = 9122, l = 9123, c = "Size4-Regular") : t37 === "\\lceil" || t37 === "\u2308" ? (o = 9121, s = l = 9122, c = "Size4-Regular") : t37 === "\\rfloor" || t37 === "\u230B" ? (s = o = 9125, l = 9126, c = "Size4-Regular") : t37 === "\\rceil" || t37 === "\u2309" ? (o = 9124, s = l = 9125, c = "Size4-Regular") : t37 === "(" || t37 === "\\lparen" ? (o = 9115, s = 9116, l = 9117, c = "Size4-Regular") : t37 === ")" || t37 === "\\rparen" ? (o = 9118, s = 9119, l = 9120, c = "Size4-Regular") : t37 === "\\{" || t37 === "\\lbrace" ? (o = 9127, a = 9128, l = 9129, s = 9130, c = "Size4-Regular") : t37 === "\\}" || t37 === "\\rbrace" ? (o = 9131, a = 9132, l = 9133, s = 9130, c = "Size4-Regular") : t37 === "\\lgroup" || t37 === "\u27EE" ? (o = 9127, l = 9129, s = 9130, c = "Size4-Regular") : t37 === "\\rgroup" || t37 === "\u27EF" ? (o = 9131, l = 9133, s = 9130, c = "Size4-Regular") : t37 === "\\lmoustache" || t37 === "\u23B0" ? (o = 9127, l = 9133, s = 9130, c = "Size4-Regular") : t37 === "\\rmoustache" || t37 === "\u23B1" ? (o = 9131, l = 9129, s = 9130, c = "Size4-Regular") : t37 === "\\surd" ? (o = 57345, l = 9143, s = 57344, c = "Size4-Regular") : t37 === "\\ulcorner" ? (o = 9484, s = l = 32) : t37 === "\\urcorner" ? (o = 9488, s = l = 32) : t37 === "\\llcorner" ? (l = 9492, s = o = 32) : t37 === "\\lrcorner" && (o = 9496, s = o = 32); + let u = cr(o, c), d = u.height + u.depth, m = cr(s, c), h = m.height + m.depth, f = cr(l, c), b = f.height + f.depth, S = 0, M = 1; + if (a !== null) { + let be = cr(a, c); + S = be.height + be.depth, M = 2; + } + let x = d + b + S, v = Math.max(0, Math.ceil((e - x) / (M * h))), k = x + v * M * h, C = Ae; + r && (C = C * i.scalingFactor); + let q = k / 2 - C, B = 8e-3, D = []; + D.push({ box: new w(l, { fontFamily: c }) }), D.push(-B); + let J = new w(s, { fontFamily: c }); + if (a === null) + for (let be = 0; be < v; be++) + D.push({ box: J }); + else { + for (let be = 0; be < v; be++) + D.push({ box: J }); + D.push(-B), D.push({ box: new w(a, { fontFamily: c }) }), D.push(-B); + for (let be = 0; be < v; be++) + D.push({ box: J }); + } + D.push(-B), D.push({ box: new w(o, { fontFamily: c }) }); + let de = ""; + c === "Size1-Regular" ? de = " delim-size1" : c === "Size4-Regular" && (de = " delim-size4"); + let Rt = new U({ bottom: q, children: D }, { classes: de }); + return new w(Rt, g(p({}, n != null ? n : {}), { classes: ((pt = n == null ? void 0 : n.classes) != null ? pt : "") + " ML__delim-mult" })); +} +var em = /* @__PURE__ */ new Set(["(", ")", "\\lparen", "\\rparen", "[", "]", "\\lbrack", "\\rbrack", "\\{", "\\}", "\\lbrace", "\\rbrace", "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", "\\surd", "\u230A", "\u230B", "\u2308", "\u2309"]); +var Vh = /* @__PURE__ */ new Set(["\\uparrow", "\\downarrow", "\\updownarrow", "\\Uparrow", "\\Downarrow", "\\Updownarrow", "|", "\\|", "\\vert", "\\Vert", "\\lvert", "\\rvert", "\\lVert", "\\rVert", "\\mvert", "\\mid", "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache", "\u27EE", "\u27EF", "\u23B0", "\u23B1"]); +var tm = /* @__PURE__ */ new Set(["<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt"]); +var qh = [0, 1.2, 1.8, 2.4, 3]; +function rm(t37, e, r, i) { + return t37 === void 0 || t37 === "." ? Ht(r, i.classes) : (t37 === "<" || t37 === "\\lt" || t37 === "\u27E8" ? t37 = "\\langle" : (t37 === ">" || t37 === "\\gt" || t37 === "\u27E9") && (t37 = "\\rangle"), em.has(t37) || tm.has(t37) ? Y0(t37, e, false, r, i) : Vh.has(t37) ? Q0(t37, qh[e], false, r, i) : ("" + t37, null)); +} +var Hh = [{ type: "small", mathstyle: "scriptscriptstyle" }, { type: "small", mathstyle: "scriptstyle" }, { type: "small", mathstyle: "textstyle" }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }]; +var Wh = [{ type: "small", mathstyle: "scriptscriptstyle" }, { type: "small", mathstyle: "scriptscriptstyle" }, { type: "small", mathstyle: "textstyle" }, { type: "stack" }]; +var Uh = [{ type: "small", mathstyle: "scriptscriptstyle" }, { type: "small", mathstyle: "scriptstyle" }, { type: "small", mathstyle: "textstyle" }, { type: "large", size: 1 }, { type: "large", size: 2 }, { type: "large", size: 3 }, { type: "large", size: 4 }, { type: "stack" }]; +function Jh(t37) { + return t37.type === "small" ? "Main-Regular" : t37.type === "large" ? "Size" + t37.size + "-Regular" : (t37.type, "Size4-Regular"); +} +function Gh(t37, e, r, i) { + let n = { "-4": 0, "-3": 1, 0: 2 }[i.mathstyle.sizeDelta]; + for (let o = n; o < r.length && r[o].type !== "stack"; o++) { + let a = cr(t37, Jh(r[o])); + if (a.defaultMetrics) + return { type: "small", mathstyle: "scriptstyle" }; + let s = a.height + a.depth; + if (r[o].type === "small" && (r[o].mathstyle === "scriptscriptstyle" ? s *= Math.max(Dn[Math.max(1, i.size - 2)], i.minFontScale) : r[o].mathstyle === "scriptstyle" && (s *= Math.max(Dn[Math.max(1, i.size - 1)], i.minFontScale))), s > e) + return r[o]; + } + return r[r.length - 1]; +} +function Fi(t37, e, r, i, n, o) { + if (!e || e.length === 0 || e === ".") + return Ht(n); + e === "<" || e === "\\lt" ? e = "\\langle" : (e === ">" || e === "\\gt") && (e = "\\rangle"); + let a; + tm.has(e) ? a = Hh : em.has(e) ? a = Uh : a = Wh; + let s = Gh(ka(e), r, a, n), l = new T({ parent: n, mathstyle: s.mathstyle }, o == null ? void 0 : o.style); + return s.type === "small" ? $h(e, l, i, g(p({}, o), { type: t37 })) : s.type === "large" ? Y0(e, s.size, i, l, g(p({}, o), { type: t37 })) : (s.type, Q0(e, r, i, l, g(p({}, o), { type: t37 }))); +} +function Wr(t37, e, r, i, n, o) { + if (e === ".") + return Ht(n, o == null ? void 0 : o.classes); + let a = Ae * n.scalingFactor, s = 901, l = 5 / kt, c = Math.max(r - a, i + a), u = Math.max(c / 500 * s, 2 * c - l); + return Fi(t37, e, u, true, n, o); +} +function Ht(t37, e) { + let r = new w(null, { classes: " ML__nulldelimiter " + (e != null ? e : ""), type: "ignore" }); + return r.width = t37.getRegisterAsEm("nulldelimiterspace"), r.wrap(new T({ parent: t37, mathstyle: "textstyle" })); +} +var ge = class t6 extends y { + constructor(e) { + var r; + super({ type: "placeholder", command: "\\placeholder", mode: (r = e == null ? void 0 : e.mode) != null ? r : "math", style: e == null ? void 0 : e.style }), this.captureSelection = true; + } + static fromJson(e) { + return new t6(e); + } + toJson() { + return super.toJson(); + } + render(e) { + let r; + return this.value = e.placeholderSymbol, typeof e.renderPlaceholder == "function" ? r = e.renderPlaceholder(e) : r = this.createBox(e), this.caret && (r.classes += " ML__placeholder-selected"), r; + } + _serialize(e) { + return e.skipPlaceholders ? "" : "\\placeholder{}"; + } +}; +var im = ["matrix", "matrix*", "pmatrix", "pmatrix*", "bmatrix", "bmatrix*", "Bmatrix", "Bmatrix*", "vmatrix", "vmatrix*", "Vmatrix", "Vmatrix*"]; +var nm = ["cases", "dcases", "rcases"]; +var om = ["align", "align*", "aligned", "gather", "gather*", "gathered", "split"]; +var jh = ["array", "subequations", "eqnarray"]; +function am(t37) { + return jh.concat(om).concat(nm).concat(im).includes(t37); +} +function Sa(t37) { + return im.includes(t37); +} +function sm(t37) { + return nm.includes(t37); +} +function lm(t37) { + return om.includes(t37); +} +function Xh(t37, e, r) { + let i = 0; + for (let c of r) + "align" in c && (i += 1); + let n = 0, o = []; + for (let c of e) { + let u = 0; + for (n = Math.max(n, Math.min(c.length, i)); u < c.length; ) { + let d = [], m = Math.min(c.length, u + i); + for (; u < m; ) { + let h = c[u]; + h.length === 0 ? d.push([new y({ type: "first", mode: t37.mode })]) : h[0].type !== "first" ? d.push([new y({ type: "first", mode: t37.mode }), ...h]) : (h.slice(1).some((f) => f.type === "first"), d.push(h)), u += 1; + } + o.push(d); + } + } + o.length > 0 && o[o.length - 1].length === 1 && o[o.length - 1][0].length === 1 && o[o.length - 1][0][0].type === "first" && o.pop(); + let a = []; + for (let c of o) { + if (c.length !== n) + for (let u = c.length; u < n; u++) + c.push([new y({ type: "first", mode: t37.mode }), new ge()]); + a.push(c); + } + let s = 0, l = 0; + for (let c of a) { + l = 0; + for (let u of c) { + for (let d of u) + d.parent = t37, d.parentBranch = [s, l]; + l += 1; + } + s += 1; + } + return t37.isDirty = true, a; +} +var N = class t7 extends y { + constructor(e, r, i, n = {}) { + var o; + super({ type: "array" }), this.environmentName = e, this.rowGaps = i, n.mathstyleName && (this.mathstyleName = n.mathstyleName), n.columns && (n.columns.length === 0 ? this.colFormat = [{ align: "l" }] : this.colFormat = n.columns), this.colFormat || (this.colFormat = [{ align: "l" }, { align: "l" }, { align: "l" }, { align: "l" }, { align: "l" }, { align: "l" }, { align: "l" }, { align: "l" }, { align: "l" }, { align: "l" }]), this.array = Xh(this, r, this.colFormat), n.leftDelim && (this.leftDelim = n.leftDelim), n.rightDelim && (this.rightDelim = n.rightDelim), n.arraycolsep !== void 0 && (this.arraycolsep = n.arraycolsep), this.colSeparationType = n.colSeparationType, n.arraystretch !== void 0 && (this.arraystretch = n.arraystretch), this.minColumns = (o = n.minColumns) != null ? o : 1; + } + static fromJson(e) { + return new t7(e.environmentName, e.array, e.rowGaps, e); + } + toJson() { + let e = g(p({}, super.toJson()), { environmentName: this.environmentName, array: this.array.map((r) => r.map((i) => i.map((n) => n.toJson()))), rowGaps: this.rowGaps, columns: this.colFormat, colSeparationType: this.colSeparationType }); + return this.arraystretch !== void 0 && (e.arraystretch = this.arraystretch), this.arraycolsep !== void 0 && (e.arraycolsep = this.arraycolsep), this.leftDelim && (e.leftDelim = this.leftDelim), this.rightDelim && (e.rightDelim = this.rightDelim), e; + } + branch(e) { + var r; + if (In(e)) + return (r = this.array[e[0]][e[1]]) != null ? r : void 0; + } + createBranch(e) { + var r; + return In(e) ? (this.isDirty = true, (r = this.branch(e)) != null ? r : []) : []; + } + get rowCount() { + return this.array.length; + } + get colCount() { + return this.array[0].length; + } + get maxColumns() { + return this.colFormat.filter((e) => !!e.align).length; + } + removeBranch(e) { + if (fr(e)) + return super.removeBranch(e); + let [r, ...i] = this.branch(e); + return r.type, this.array[e[0]][e[1]] = void 0, i.forEach((n) => { + n.parent = void 0, n.parentBranch = void 0; + }), this.isDirty = true, i; + } + get hasChildren() { + return this.children.length > 0; + } + get children() { + let e = []; + for (let r of this.array) + for (let i of r) + if (i) + for (let n of i) + e.push(...n.children), e.push(n); + return [...e, ...super.children]; + } + render(e) { + var Rt, Zt, pt, be, hn, fn; + let r = new T({ parent: e, mathstyle: this.mathstyleName }, this.style), i = r.getRegisterAsEm("arrayrulewidth"), n = r.getRegisterAsEm("arraycolsep"), o = r.getRegisterAsEm("doublerulesep"), a = (Zt = (Rt = this.arraystretch) != null ? Rt : r.getRegisterAsNumber("arraystretch")) != null ? Zt : 1, s = typeof this.arraycolsep == "number" ? this.arraycolsep : n; + this.colSeparationType === "small" && (s = 0.2778 * (new T({ parent: e, mathstyle: "scriptstyle" }).scalingFactor / e.scalingFactor)); + let l = a * A0, c = 0.7 * l, u = 0.3 * l, d = 0, m = [], h = 0, f = this.array.length; + for (let ne = 0; ne < f; ++ne) { + let he = this.array[ne]; + h = Math.max(h, he.length); + let Se = new T({ parent: r, mathstyle: this.mathstyleName }, this.style), Je = c / Se.scalingFactor, ht = u / Se.scalingFactor, ft = { cells: [], height: 0, depth: 0, pos: 0 }; + for (let Ge of he) { + let ys = (pt = y.createBox(Se, Ge, { type: "ignore" })) != null ? pt : new w(null, { type: "ignore" }); + ht = Math.max(ht, ys.depth), Je = Math.max(Je, ys.height), ft.cells.push(ys); + } + let gt = (be = ba(this.rowGaps[ne])) != null ? be : 0; + gt > 0 && (gt += u, ht = Math.max(ht, gt), gt = 0), ne < f - 1 && !Sa(this.environmentName) && this.environmentName !== "cases" && this.environmentName !== "array" && (ht += r.getRegisterAsEm("jot")), ft.height = Je, ft.depth = ht, d += Je, ft.pos = d, d += ht + gt, m.push(ft); + } + let b = d / 2 + Ae, S = []; + for (let ne = 0; ne < h; ne++) { + let he = []; + for (let Se of m) { + let Je = Se.cells[ne]; + Je.depth = Se.depth, Je.height = Se.height, he.push({ box: Je, shift: Se.pos - b }); + } + he.length > 0 && S.push(new U({ individualShift: he })); + } + let M = [], x = false, v = false, k = 0, C = !this.leftDelim, { colFormat: q } = this; + for (let ne of q) { + if ("align" in ne && k >= S.length) + break; + if ("align" in ne) + x ? M.push(Aa(2 * s)) : (v || C) && M.push(Aa(s)), M.push(new w(S[k], { classes: "col-align-" + ne.align })), k++, x = true, v = false, C = false; + else if ("gap" in ne) { + if (typeof ne.gap == "number") + M.push(Aa(ne.gap)); + else { + let he = Zh(e, m, b, ne.gap); + he && M.push(he); + } + x = false, v = false, C = false; + } else if ("separator" in ne) { + let he = new w(null, { classes: "ML__vertical-separator" }); + he.height = d, he.setStyle("height", d, "em"), he.setStyle("border-right", `${i}em ${ne.separator} currentColor`), he.setStyle("vertical-align", -(d - b), "em"); + let Se = 0; + v ? Se = o - i : x && (Se = s - i), he.left = Se, M.push(he), x = false, v = true, C = false; + } + } + x && !this.rightDelim && M.push(Aa(s)); + let B = new w(M, { classes: "ML__mtable" }); + if ((!this.leftDelim || this.leftDelim === ".") && (!this.rightDelim || this.rightDelim === ".")) + return this.caret && (B.caret = this.caret), this.bind(e, B); + let D = B.height, J = B.depth, de = this.bind(e, new w([this.bind(e, Wr("open", (hn = this.leftDelim) != null ? hn : ".", D, J, r, { isSelected: this.isSelected })), B, this.bind(e, Wr("close", (fn = this.rightDelim) != null ? fn : ".", D, J, r, { isSelected: this.isSelected }))], { type: "ord" })); + return de ? (de.setStyle("display", "inline-block"), this.caret && (de.caret = this.caret), this.bind(e, this.attachSupsub(e, { base: de }))) : null; + } + _serialize(e) { + var i; + let r = []; + if (this.environmentName === "lines" ? r.push("{\\displaylines") : r.push(`\\begin{${this.environmentName}}`), this.environmentName === "array") { + if (r.push("{"), this.colFormat !== void 0) + for (let n of this.colFormat) + "align" in n && typeof n.align == "string" ? r.push(n.align) : "separator" in n && n.separator === "solid" ? r.push("|") : "separator" in n && n.separator === "dashed" && r.push(":"); + r.push("}"); + } + for (let n = 0; n < this.array.length; n++) { + for (let o = 0; o < this.array[n].length; o++) + o > 0 && r.push(" & "), r.push(y.serialize(this.array[n][o], e)); + if (n < this.array.length - 1) { + let o = this.rowGaps[n]; + o != null && o.dimension ? r.push(`\\\\[${o.dimension} ${(i = o.unit) != null ? i : "pt"}] `) : r.push("\\\\ "); + } + } + return this.environmentName === "lines" ? r.push("}") : r.push(`\\end{${this.environmentName}}`), K(r); + } + forEachCell(e) { + for (let r = 0; r < this.rowCount; r++) + for (let i = 0; i < this.colCount; i++) + e(this.array[r][i], r, i); + } + getCell(e, r) { + return this.array[e][r]; + } + setCell(e, r, i) { + this.type === "array" && Array.isArray(this.array) && this.array[e][r]; + for (let o of this.array[e][r]) + o.parent = void 0, o.parentBranch = void 0; + let n = i; + (i.length === 0 || i[0].type !== "first") && (n = [new y({ type: "first", mode: this.mode }), ...i]), this.array[e][r] = n; + for (let o of n) + o.parent = this, o.parentBranch = [e, r]; + this.isDirty = true; + } + addRowBefore(e) { + this.type === "array" && Array.isArray(this.array); + let r = []; + for (let i = 0; i < this.colCount; i++) + r.push(La(this)); + this.array.splice(e, 0, r); + for (let i = e; i < this.rowCount; i++) + for (let n = 0; n < this.colCount; n++) { + let o = this.array[i][n]; + if (o) + for (let a of o) + a.parentBranch = [i, n]; + } + this.isDirty = true; + } + addRowAfter(e) { + this.type === "array" && Array.isArray(this.array); + let r = []; + for (let i = 0; i < this.colCount; i++) + r.push(La(this)); + this.array.splice(e + 1, 0, r); + for (let i = e + 1; i < this.rowCount; i++) + for (let n = 0; n < this.colCount; n++) { + let o = this.array[i][n]; + if (o) + for (let a of o) + a.parentBranch = [i, n]; + } + this.isDirty = true; + } + removeRow(e) { + this.type === "array" && Array.isArray(this.array) && this.rowCount > e; + let r = this.array.splice(e, 1); + for (let i of r) + for (let n of i) + if (n) + for (let o of n) + o.parent = void 0, o.parentBranch = void 0; + for (let i = e; i < this.rowCount; i++) + for (let n = 0; n < this.colCount; n++) { + let o = this.array[i][n]; + if (o) + for (let a of o) + a.parentBranch = [i, n]; + } + this.isDirty = true; + } + addColumnBefore(e) { + this.type === "array" && Array.isArray(this.array); + for (let r of this.array) + r.splice(e, 0, La(this)); + for (let r = 0; r < this.rowCount; r++) + for (let i = e; i < this.colCount; i++) { + let n = this.array[r][i]; + if (n) + for (let o of n) + o.parentBranch = [r, i]; + } + this.isDirty = true; + } + addColumnAfter(e) { + this.type === "array" && Array.isArray(this.array); + for (let r of this.array) + r.splice(e + 1, 0, La(this)); + for (let r = 0; r < this.rowCount; r++) + for (let i = e + 1; i < this.colCount; i++) { + let n = this.array[r][i]; + if (n) + for (let o of n) + o.parentBranch = [r, i]; + } + this.isDirty = true; + } + addColumn() { + this.addColumnAfter(this.colCount - 1); + } + removeColumn(e) { + this.type === "array" && Array.isArray(this.array) && this.colCount > e; + for (let r of this.array) { + let i = r.splice(e, 1); + for (let n of i) + if (n) + for (let o of n) + o.parent = void 0, o.parentBranch = void 0; + } + for (let r = 0; r < this.rowCount; r++) + for (let i = e; i < this.colCount; i++) { + let n = this.array[r][i]; + if (n) + for (let o of n) + o.parentBranch = [r, i]; + } + this.isDirty = true; + } + get cells() { + let e = []; + for (let r of this.array) + for (let i of r) + i && e.push(i.filter((n) => n.type !== "first")); + return e; + } +}; +function La(t37) { + let e = new y({ type: "first", mode: t37.mode }); + e.parent = t37; + let r = new ge(); + return r.parent = t37, [e, r]; +} +function Aa(t37) { + let e = new w(null, { classes: "ML__arraycolsep" }); + return e.width = t37, e; +} +function Zh(t37, e, r, i) { + if (!i) + return null; + let n = []; + for (let o of e) { + let a = y.createBox(t37, i, { type: "ignore" }); + a && (a.depth = o.depth, a.height = o.height, n.push({ box: a, shift: o.pos - r })); + } + return new U({ individualShift: n }).wrap(t37); +} +var qe = class t8 extends y { + constructor(e) { + super({ mode: e.mode, command: e.command, style: e.style, body: e.body, type: "box" }), this.framecolor = e.framecolor, this.backgroundcolor = e.backgroundcolor, this.padding = e.padding, this.offset = e.offset, this.border = e.border; + } + static fromJson(e) { + return new t8(e); + } + toJson() { + return g(p({}, super.toJson()), { framecolor: this.framecolor, backgroundcolor: this.backgroundcolor, padding: this.padding, offset: this.offset, border: this.border }); + } + render(e) { + var l, c, u, d; + let r = y.createBox(e, this.body, { type: "lift" }); + if (!r) + return null; + let i = e.toEm((l = this.offset) != null ? l : { dimension: 0 }); + r.depth += i, r.setStyle("display", "inline-block"), r.setStyle("position", "relative"), r.setStyle("height", Math.floor(100 * r.height + r.depth) / 100, "em"), r.setStyle("vertical-align", -Math.floor(100 * r.height) / 100, "em"); + let n = new T({ parent: e }, this.style), o = n.toEm((c = this.padding) != null ? c : { register: "fboxsep" }), a = new w(null, { classes: "ML__box" }); + a.height = r.height + o, a.depth = r.depth + o, a.setStyle("box-sizing", "border-box"), a.setStyle("position", "absolute"), a.setStyle("top", -o + 0.3, "em"), a.setStyle("left", 0), a.setStyle("height", a.height + a.depth, "em"), a.setStyle("width", "100%"), this.backgroundcolor && a.setStyle("background-color", (u = n.toColor(this.backgroundcolor)) != null ? u : "transparent"), this.framecolor && a.setStyle("border", `${n.getRegisterAsEm("fboxrule", 2)}em solid ${(d = n.toColor(this.framecolor)) != null ? d : "black"}`), this.border && a.setStyle("border", this.border); + let s = new w([a, r], { type: "lift" }); + return s.setStyle("display", "inline-block"), s.setStyle("position", "relative"), s.setStyle("line-height", 0), s.height = r.height + o + (i > 0 ? i : 0), s.depth = r.depth + o + (i < 0 ? -i : 0), s.setStyle("padding-left", o, "em"), s.setStyle("padding-right", o, "em"), s.setStyle("height", Math.floor(100 * (r.height + r.depth + 2 * o + Math.abs(i))) / 100, "em"), s.setStyle("margin-top", -o, "em"), s.setStyle("top", Math.floor(100 * (r.depth - r.height + 2 * o - i)) / 100, "em"), s.setStyle("vertical-align", Math.floor(100 * (r.depth + 2 * o)) / 100, "em"), this.caret && (s.caret = this.caret), this.attachSupsub(e, { base: s }); + } + _serialize(e) { + return e.skipStyles ? K([this.bodyToLatex(e), this.supsubToLatex(e)]) : super._serialize(e); + } +}; +var $i = class t9 extends y { + constructor(e, r) { + var i; + super({ type: "composition", mode: (i = r == null ? void 0 : r.mode) != null ? i : "math", value: e }); + } + static fromJson(e) { + return new t9(e.value, e); + } + toJson() { + return super.toJson(); + } + render(e) { + let r = new w(this.value, { classes: "ML__composition", type: "composition" }); + return this.bind(e, r), this.caret && (r.caret = this.caret), r; + } + _serialize(e) { + return ""; + } +}; +var rt = class t10 extends y { + constructor(e) { + super({ type: "error", value: e, command: e, mode: "math" }), this.verbatimLatex = e; + } + static fromJson(e) { + return new t10(e.command); + } + toJson() { + return super.toJson(); + } + render(e) { + let r = this.createBox(e, { classes: "ML__error" }); + return this.caret && (r.caret = this.caret), r; + } +}; +var Vi = class t11 extends y { + constructor(e, r) { + super({ type: "group", mode: r }), this.body = e, this.boxType = e.length > 1 ? "ord" : "ignore", this.skipBoundary = true, this.displayContainsHighlight = false, e && e.length === 1 && e[0].command === "," && (this.captureSelection = true); + } + static fromJson(e) { + return new t11(e.body, e.mode); + } + render(e) { + let r = y.createBox(e, this.body, { type: this.boxType }); + return r ? (this.caret && (r.caret = this.caret), this.bind(e, r)) : null; + } + _serialize(e) { + if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") + return this.verbatimLatex; + let r = ee(this.command, this.mode); + return r != null && r.serialize ? r.serialize(this, e) : `{${this.bodyToLatex(e)}}`; + } +}; +var H = class t12 extends y { + constructor(e, r, i) { + super({ type: "leftright", style: i.style, displayContainsHighlight: true }), this.variant = e, this.body = r, this.leftDelim = i.leftDelim, this.rightDelim = i.rightDelim; + } + static fromJson(e) { + var r; + return new t12((r = e.variant) != null ? r : "", e.body, e); + } + toJson() { + let e = super.toJson(); + return this.variant && (e.variant = this.variant), this.leftDelim && (e.leftDelim = this.leftDelim), this.rightDelim && (e.rightDelim = this.rightDelim), e; + } + _serialize(e) { + var i, n; + let r = this.matchingRightDelim(); + return this.variant === "left...right" ? K(["\\left", (i = this.leftDelim) != null ? i : ".", this.bodyToLatex(e), "\\right", r]) : this.variant === "mleft...mright" ? K(["\\mleft", (n = this.leftDelim) != null ? n : ".", this.bodyToLatex(e), "\\mright", r]) : K([!this.leftDelim || this.leftDelim === "." ? "" : this.leftDelim, this.bodyToLatex(e), r]); + } + matchingRightDelim() { + var r, i; + if (this.rightDelim && this.rightDelim !== "?") + return this.rightDelim; + let e = (r = this.leftDelim) != null ? r : "."; + return (i = zi[e]) != null ? i : e; + } + render(e) { + var d, m; + let r = new T({ parent: e }, this.style); + this.body; + let i = new T({ parent: e, mathstyle: "textstyle" }, this.style), n = (d = y.createBox(r, this.body, { type: "inner" })) != null ? d : new w(null, { type: "inner" }), o = n.height / i.scalingFactor, a = n.depth / i.scalingFactor, s = []; + if (this.leftDelim && s.push(this.bind(i, Wr("open", this.leftDelim, o, a, i, { isSelected: this.isSelected, classes: "ML__open" + (this.containsCaret ? " ML__contains-caret" : ""), mode: this.mode, style: this.style }))), n && (cm(n.children, this, r, o, a), s.push(n)), this.rightDelim) { + let h = this.containsCaret ? " ML__contains-caret" : "", f = this.rightDelim; + f === "?" && (r.smartFence ? (f = this.matchingRightDelim(), h += " ML__smart-fence__close") : f = "."), s.push(this.bind(i, Wr("close", f, o, a, i, { isSelected: this.isSelected, classes: h + " ML__close", mode: this.mode, style: this.style }))); + } + let l = this.variant === "mleft...mright", c = this.leftSibling; + c && (!l && c.isFunction && (l = true), !l && c.type === "subsup" && ((m = c.leftSibling) != null && m.isFunction) && (l = true)); + let u = new w(s, { type: l ? "close" : "inner", classes: "ML__left-right" }); + return u.setStyle("margin-top", `${-n.depth}em`), u.setStyle("height", `${n.height + n.depth}em`), this.caret && (u.caret = this.caret), this.bind(r, u.wrap(r)); + } +}; +function cm(t37, e, r, i, n) { + if (t37) + for (let o = 0; o < t37.length; o++) { + let a = t37[o]; + a.type === "middle" ? (t37[o] = e.bind(r, Wr("inner", a.value, i, n, r, { isSelected: e.isSelected })), t37[o].caret = a.caret, t37[o].isSelected = a.isSelected, t37[o].cssId = a.cssId, t37[o].htmlData = a.htmlData, t37[o].htmlStyle = a.htmlStyle, t37[o].attributes = a.attributes, t37[o].cssProperties = a.cssProperties) : a.children && cm(a.children, e, r, i, n); + } +} +var qi = class t13 extends y { + constructor(e, r) { + var i; + super({ type: "macro", command: e, style: r.style }), this.body = r.body, r.captureSelection === void 0 ? r.args ? this.captureSelection = false : this.captureSelection = true : this.captureSelection = r.captureSelection, this.macroArgs = r.args, this.expand = (i = r.expand) != null ? i : false; + } + static fromJson(e) { + return new t13(e.command, e); + } + toJson() { + let e = super.toJson(); + return this.expand && (e.expand = true), this.captureSelection !== void 0 && (e.captureSelection = this.captureSelection), this.macroArgs && (e.args = this.macroArgs), e; + } + _serialize(e) { + var r; + return e.expandMacro && this.expand ? this.bodyToLatex(e) : this.command + ((r = this.macroArgs) != null ? r : ""); + } + render(e) { + let r = y.createBox(e, this.body, { type: "lift" }); + return r ? (this.caret && (r.caret = this.caret), this.bind(e, r)) : null; + } +}; +var Ca = class t14 extends y { + constructor() { + super({ type: "macro-argument" }); + } + static fromJson(e) { + return new t14(); + } + toJson() { + return super.toJson(); + } + _serialize(e) { + return ""; + } + render(e) { + return null; + } +}; +var Hi = class t15 extends y { + constructor(e, r, i = false, n, o) { + var a; + super({ type: "prompt", mode: (a = o == null ? void 0 : o.mode) != null ? a : "math", style: o == null ? void 0 : o.style, command: "\\placeholder" }), this.body = n, this.correctness = r, this.placeholderId = e, this.locked = i, this.captureSelection = this.locked; + } + static fromJson(e) { + return new t15(e.placeholderId, e.correctness, e.locked, e.body, e); + } + toJson() { + let e = super.toJson(); + return this.placeholderId && (e.placeholderId = this.placeholderId), this.body || delete e.body, this.body && (e.body = this.body.filter((r) => r.type !== "first").map((r) => r.toJson())), this.correctness && (e.correctness = this.correctness), e.locked = this.locked, e; + } + render(e) { + let r = new T({ parent: e }), i = r.getRegisterAsEm("fboxsep"), n = i, o = i, a = y.createBox(e, this.body); + if (!a) + return null; + a.height || (a.height = r.metrics.xHeight), a.setStyle("vertical-align", -a.height, "em"), this.correctness === "correct" ? a.setStyle("color", "var(--correct-color, var(--ML__correct-color))") : this.correctness === "incorrect" && a.setStyle("color", "var(--incorrect-color, var(--ML__incorrect-color))"); + let s = new w(a, { type: "ord" }); + s.setStyle("display", "inline-block"), s.setStyle("height", a.height + a.depth, "em"), s.setStyle("vertical-align", -o, "em"); + let l = "ML__prompt "; + this.locked ? l += " ML__lockedPromptBox " : l += " ML__editablePromptBox ", this.correctness === "correct" ? l += " ML__correctPromptBox " : this.correctness === "incorrect" && (l += " ML__incorrectPromptBox "), this.containsCaret && (l += " ML__focusedPromptBox "); + let c = new w(null, { classes: l, attributes: { part: "prompt" } }); + c.height = s.height + o, c.depth = s.depth + o, c.width = s.width + 2 * n, c.setStyle("position", "absolute"), c.setStyle("height", `calc(${s.height + s.depth + 2 * o}em - 2px)`), n === 0 && c.setStyle("width", "100%"), n !== 0 && (c.setStyle("width", `calc(100% + ${2 * n}em)`), c.setStyle("top", i, "em"), c.setStyle("left", -n, "em")), (!this.body || this.body.length === 1) && (c.width = 3 * n, c.setStyle("width", `calc(100% + ${3 * n}em)`), c.setStyle("left", -1.5 * n, "em")); + let u = ""; + this.correctness === "incorrect" && (u += ''), u && (c.svgOverlay = u); + let d = new w([c, s], { classes: "ML__prompt-atom" }); + return s.setStyle("line-height", 1), d.setStyle("position", "relative"), d.setStyle("display", "inline-block"), d.setStyle("line-height", 0), d.height = s.height + o + 0.2, d.depth = s.depth + o, d.left = n, d.right = n, d.setStyle("height", s.height + o, "em"), d.setStyle("top", s.depth - s.height, "em"), d.setStyle("vertical-align", s.depth + o, "em"), d.setStyle("margin-left", 0.5, "em"), d.setStyle("margin-right", 0.5, "em"), this.caret && (d.caret = this.caret), this.bind(r, this.attachSupsub(e, { base: d })); + } + _serialize(e) { + var n; + let r = (n = this.bodyToLatex(e)) != null ? n : ""; + if (e.skipPlaceholders) + return r; + let i = "\\placeholder"; + return this.placeholderId && (i += `[${this.placeholderId}]`), this.correctness === "correct" ? i += "[correct]" : this.correctness === "incorrect" && (i += "[incorrect]"), this.locked && (i += "[locked]"), I(i, r); + } +}; +var Wt = class t16 extends y { + constructor(e) { + super({ type: "subsup", style: e == null ? void 0 : e.style }), this.subsupPlacement = "auto"; + } + static fromJson(e) { + let r = new t16(e); + for (let i of gr) + e[i] && r.setChildren(e[i], i); + return r; + } + render(e) { + var a; + let r = new T({ parent: e, isPhantom: true }), i = this.leftSibling, n = (a = i.render(r)) != null ? a : new w(null), o = new w(null); + return o.height = n.height, o.depth = n.depth, this.attachSupsub(e, { base: o, isCharacterBox: i.isCharacterBox(), type: "ignore" }); + } + _serialize(e) { + return this.supsubToLatex(e); + } +}; +function Wi(t37) { + return t37 ? !/^(<$$>|<$>||<{>|<}>|#[0-9\?]|\\.+)$/.test(t37) : false; +} +var Ea = class { + constructor(e, r, i) { + this.errors = []; + this.index = 0; + this.endCount = 0; + var n, o, a, s; + i != null || (i = {}), this.tokens = e, this.context = r instanceof T && !(i != null && i.parseMode) && !i.mathstyle ? r : new T({ from: r, mathstyle: i.mathstyle }, i.style), this.args = (n = i.args) != null ? n : void 0, this.smartFence = this.context.smartFence, this.parsingContext = { parent: void 0, mathlist: [], style: (o = i.style) != null ? o : {}, parseMode: (a = i.parseMode) != null ? a : "math", mathstyle: (s = i.mathstyle) != null ? s : "displaystyle", tabular: false }; + } + beginContext(e) { + var n, o, a; + let r = this.parsingContext, i = { parent: r, mathlist: [], style: p({}, r.style), parseMode: (n = e == null ? void 0 : e.mode) != null ? n : r.parseMode, mathstyle: (o = e == null ? void 0 : e.mathstyle) != null ? o : r.mathstyle, tabular: (a = e == null ? void 0 : e.tabular) != null ? a : false }; + this.parsingContext = i; + } + endContext() { + this.parsingContext = this.parsingContext.parent; + } + onError(e) { + this.errors.push(p({ before: ur(this.tokens.slice(this.index, this.index + 10)), after: ur(this.tokens.slice(Math.max(0, this.index - 10), this.index)) }, e)); + } + get mathlist() { + return this.parsingContext.mathlist; + } + set mathlist(e) { + this.parsingContext.mathlist = e; + } + get parseMode() { + return this.parsingContext.parseMode; + } + set parseMode(e) { + this.parsingContext.parseMode = e; + } + get tabularMode() { + return this.parsingContext.tabular; + } + get style() { + let e = this.parsingContext; + for (; e; ) { + if (e.style) + return p({}, e.style); + e = e.parent; + } + return {}; + } + set style(e) { + this.parsingContext.style = e; + } + end() { + return this.endCount++, this.index >= this.tokens.length || this.endCount > 1e3; + } + next() { + this.index += 1; + } + get() { + return this.endCount = 0, this.index < this.tokens.length ? this.tokens[this.index++] : ""; + } + peek() { + return this.tokens[this.index]; + } + expandUnicode() { + if (!this.peek() || this.parseMode !== "math") + return; + let e = Tc(this.peek()); + e && this.tokens.splice(this.index, 1, ...Ki(e)); + } + match(e) { + return this.tokens[this.index] === e ? (this.index++, true) : false; + } + lastSubsupAtom() { + let e; + return this.mathlist.length > 0 && (e = this.mathlist[this.mathlist.length - 1], e.type === "subsup" || e.subsupPlacement !== void 0) || (e = new Wt({ style: this.style }), this.mathlist.push(e)), e; + } + hasPattern(e) { + return e.test(this.tokens[this.index]); + } + hasInfixCommand() { + var r; + let { index: e } = this; + if (e < this.tokens.length && this.tokens[e].startsWith("\\")) { + let i = ee(this.tokens[e], this.parseMode); + return !i || i.definitionType === "symbol" || i.ifMode && !i.ifMode.includes(this.parseMode) ? false : (r = i.infix) != null ? r : false; + } + return false; + } + matchColumnSeparator() { + return !this.tabularMode || this.peek() !== "&" ? false : (this.index++, true); + } + matchRowSeparator() { + if (!this.tabularMode) + return false; + let e = this.peek(); + return e !== "\\\\" && e !== "\\cr" && e !== "\\tabularnewline" ? false : (this.index++, true); + } + placeholder() { + var r; + let e = (r = this.args) == null ? void 0 : r.call(this, "?"); + return e ? se(e, { parseMode: this.parseMode, mathstyle: "textstyle" }) : [new ge({ mode: this.parseMode, style: this.style })]; + } + skipWhitespace() { + for (; this.match(""); ) + ; + } + skipUntilToken(e) { + let r = this.tokens[this.index]; + for (; r && r !== e; ) + r = this.tokens[++this.index]; + r === e && this.index++; + } + skipFiller() { + for (; this.match("\\relax") || this.match(""); ) + ; + } + matchKeyword(e) { + let r = this.index, i = this.end(), n = ""; + for (; !i; ) { + let a = this.get(); + Wi(a) ? (n += a, i = this.end() || n.length >= e.length) : i = true; + } + let o = e.toUpperCase() === n.toUpperCase(); + return o || (this.index = r), o; + } + scanString() { + let e = ""; + for (; !this.end(); ) { + let r = this.peek(); + if (r === "]") + return e; + if (r === "") + e += " "; + else if (r.startsWith("\\")) + this.onError({ code: "unexpected-command-in-string" }), e += r.substring(1); + else if (Wi(r)) + e += r; + else + return e; + this.next(); + } + return e; + } + scanBalancedString() { + let e = "", r = this.end(), i = 1; + for (; !r; ) { + let n = this.get(); + n === "" ? e += " " : n === "<{>" ? (e += "{", i += 1) : n === "<}>" ? (i -= 1, i > 0 ? e += "}" : this.index -= 1) : n === "<$>" ? e += "$" : n === "<$$>" ? e += "$$" : e += n, r = i === 0 || this.end(); + } + return e; + } + scanLiteralGroup() { + var i; + if (!this.match("<{>")) + return ""; + let e = "", r = 1; + for (; r > 0 && !this.end(); ) { + let n = this.get(); + n === "<}>" ? (r -= 1, r > 0 && (e += "}")) : n === "<{>" ? (r += 1, e += "{") : (/\\[a-zA-Z]+$/.test(e) && /^[a-zA-Z]/.test(n) && (e += " "), e += (i = { "": " ", "<$$>": "$$", "<$>": "$" }[n]) != null ? i : n); + } + return e; + } + scanNumber(e = true) { + var l, c; + let r = false, i = this.peek(); + for (; i === "" || i === "+" || i === "-"; ) + this.get(), i === "-" && (r = !r), i = this.peek(); + e = !!e; + let n = 10, o = /\d/; + if (this.match("'")) + n = 8, o = /[0-7]/, e = true; + else if (this.match('"')) + n = 16, o = /[\dA-F]/, e = true; + else if (this.match("x")) + n = 16, o = /[\dA-Fa-f]/, e = true; + else if (this.match("`")) + return i = this.get(), i ? i.length === 2 && i.startsWith("\\") ? { number: (r ? -1 : 1) * ((l = i.codePointAt(1)) != null ? l : 0), base: "alpha" } : { number: (r ? -1 : 1) * ((c = i.codePointAt(0)) != null ? c : 0), base: "alpha" } : null; + let a = ""; + for (; this.hasPattern(o); ) + a += this.get(); + if (!e && (this.match(".") || this.match(","))) + for (a += "."; this.hasPattern(o); ) + a += this.get(); + let s = e ? Number.parseInt(a, n) : Number.parseFloat(a); + return Number.isNaN(s) ? null : { number: r ? -s : s, base: n === 16 ? "hexadecimal" : n === 8 ? "octal" : "decimal" }; + } + scanRegister() { + var o; + let e = this.index, r = this.scanNumber(false); + if (this.skipWhitespace(), this.match("\\relax")) + return r; + let i = false; + if (r === null) + for (; ; ) { + let a = this.peek(); + if (a === "-") + i = !i; + else if (a !== "+") + break; + this.next(), this.skipWhitespace(); + } + if (this.match("\\global")) { + this.skipWhitespace(); + let a = this.get(); + return a.startsWith("\\") ? r ? { register: a, global: true, factor: (i ? -1 : 1) * r.number } : i ? { register: a, global: true, factor: -1 } : { register: a, global: true } : (this.index = e, null); + } + let n = this.get(); + return n != null && n.startsWith("\\") ? (n = n.substring(1), this.context.registers[n] ? !i || r !== null ? { register: n, factor: (i ? -1 : 1) * ((o = r == null ? void 0 : r.number) != null ? o : 1) } : { register: n } : (this.index = e, null)) : (this.index = e, null); + } + scanValue() { + let e = this.scanRegister(); + if (e) + return e; + let r = this.index, i = this.scanGlueOrDimen(); + if (i && ("unit" in i || "glue" in i && "unit" in i.glue)) + return i; + this.index = r; + let n = this.scanNumber(); + if (n) + return n; + if (this.end() || !Wi(this.peek())) + return null; + let o = this.scanString(); + return o.length > 0 ? { string: o } : null; + } + scanDimen() { + let e = this.scanNumber(false); + if (e === null) + return null; + let r = e.number; + this.skipWhitespace(), this.matchKeyword("true"), this.skipWhitespace(); + let i; + return this.matchKeyword("pt") ? i = "pt" : this.matchKeyword("mm") ? i = "mm" : this.matchKeyword("cm") ? i = "cm" : this.matchKeyword("ex") ? i = "ex" : this.matchKeyword("px") ? i = "px" : this.matchKeyword("em") ? i = "em" : this.matchKeyword("bp") ? i = "bp" : this.matchKeyword("dd") ? i = "dd" : this.matchKeyword("pc") ? i = "pc" : this.matchKeyword("in") ? i = "in" : this.matchKeyword("mu") && (i = "mu"), i ? { dimension: r, unit: i } : { dimension: r }; + } + scanGlueOrDimen() { + let e = this.scanDimen(); + if (e === null) + return null; + if (this.skipWhitespace(), this.match("\\relax")) + return e; + let r = { glue: e }; + if (this.matchKeyword("plus")) { + let i = this.scanDimen(); + if (i) + r.grow = i; + else + return r; + } + if (this.skipWhitespace(), this.match("\\relax")) + return r; + if (this.skipWhitespace(), this.matchKeyword("minus")) { + let i = this.scanDimen(); + if (i) + r.shrink = i; + else + return r; + } + return !r.grow && !r.shrink ? e : r; + } + scanColspec() { + this.skipWhitespace(); + let e = []; + for (; !this.end() && !(this.peek() === "<}>" || this.peek() === "]"); ) { + let r = this.get(); + r === "c" || r === "r" || r === "l" ? e.push({ align: r }) : r === "|" ? e.push({ separator: "solid" }) : r === ":" ? e.push({ separator: "dashed" }) : r === "@" && (this.match("<{>") && (this.beginContext({ mode: "math" }), e.push({ gap: this.scan((i) => i === "<}>") }), this.endContext()), this.match("<}>") || this.onError({ code: "unbalanced-braces" })); + } + return e; + } + scanModeSet() { + let e; + if (this.match("\\(") && (e = "textstyle"), !e && this.match("\\[") && (e = "displaystyle"), !e) + return null; + this.beginContext({ mode: "math", mathstyle: e }); + let r = this.scan((i) => i === (e === "displaystyle" ? "\\]" : "\\)")); + return this.match(e === "displaystyle" ? "\\]" : "\\)") || this.onError({ code: "unbalanced-mode-shift" }), this.endContext(), r; + } + scanModeShift() { + let e = ""; + if (this.match("<$>") && (e = "<$>"), !e && this.match("<$$>") && (e = "<$$>"), !e) + return null; + this.beginContext({ mode: "math", mathstyle: "textstyle" }); + let r = this.scan((i) => i === e); + return this.match(e) || this.onError({ code: "unbalanced-mode-shift" }), this.endContext(), r; + } + scanEnvironment() { + if (!this.match("\\begin")) + return null; + let e = this.scanArgument("string"); + if (!e) + return null; + let r = Oc(e); + if (!r) + return this.onError({ code: "unknown-environment", arg: e }), null; + let i = []; + if (r.params) + for (let l of r.params) + if (l.isOptional) + i.push(this.scanOptionalArgument(l.type)); + else { + let c = this.scanArgument(l.type); + c || this.onError({ code: "missing-argument", arg: e }), i.push(c); + } + this.beginContext({ tabular: r.tabular }); + let n = [], o = [], a = [], s = false; + do + if (this.end() && (this.onError({ code: "unbalanced-environment", arg: e }), s = true), !s && this.match("\\end") && (this.scanArgument("string") !== e && this.onError({ code: "unbalanced-environment", arg: e }), s = true), !s) + if (this.matchColumnSeparator()) + a.push(this.mathlist), this.mathlist = []; + else if (this.matchRowSeparator()) { + a.push(this.mathlist), this.mathlist = []; + let l = null; + this.skipWhitespace(), this.match("[") && (l = this.scanDimen(), this.skipWhitespace(), this.match("]")), o.push(l != null ? l : { dimension: 0 }), n.push(a), a = []; + } else + this.mathlist.push(...this.scan((l) => ["<}>", "&", "\\end", "\\cr", "\\\\", "\\tabularnewline"].includes(l))); + while (!s); + return a.push(this.mathlist), a.length > 0 && n.push(a), this.endContext(), r.createAtom(e, n, o, i, this.context.maxMatrixCols); + } + scanExpression() { + let e = this.mathlist; + if (this.mathlist = [], this.parseExpression()) { + let r = this.mathlist; + return this.mathlist = e, r; + } + return this.mathlist = e, null; + } + scan(e) { + this.beginContext(), e || (e = (s) => s === "<}>"); + let r = "", i = null, n = [], o = null; + for (; !this.end() && !e(this.peek()); ) + this.hasInfixCommand() && !r ? (r = this.get(), i = ee(r, "math"), i && (n = this.scanArguments(i)[1]), o = this.mathlist, this.mathlist = []) : this.parseExpression(); + let a; + return r ? (n.unshift(this.mathlist), o && n.unshift(o), a = [i.createAtom({ command: r, args: n, style: this.style, mode: this.parseMode })]) : a = this.mathlist, this.endContext(), a; + } + scanGroup() { + let e = this.index; + if (!this.match("<{>")) + return null; + let r = this.scan((n) => n === "<}>"); + this.match("<}>") || this.onError({ code: "unbalanced-braces" }); + let i = new Vi(r, this.parseMode); + return i.verbatimLatex = ur(this.tokens.slice(e, this.index)), i; + } + scanSmartFence() { + if (this.skipWhitespace(), !this.match("(")) + return null; + this.beginContext(); + let e = 1; + for (; !this.end() && e !== 0; ) + this.match("(") && (e += 1), this.match(")") && (e -= 1), e !== 0 && this.parseExpression(); + let r = new H("", this.mathlist, { leftDelim: "(", rightDelim: e === 0 ? ")" : "?" }); + return this.endContext(), r; + } + scanDelim() { + this.skipWhitespace(); + let e = this.peek(); + if (!e) + return this.onError({ code: "unexpected-end-of-string" }), null; + if (!Wi(e) && !e.startsWith("\\")) + return null; + this.next(); + let r = ee(e, "math"); + return r ? r.definitionType === "function" && r.ifMode && !r.ifMode.includes(this.parseMode) ? (this.onError({ code: "unexpected-delimiter", arg: e }), null) : r.definitionType === "symbol" && (r.type === "mopen" || r.type === "mclose") || /^(\.|\?|\||<|>|\\vert|\\Vert|\\\||\\surd|\\uparrow|\\downarrow|\\Uparrow|\\Downarrow|\\updownarrow|\\Updownarrow|\\mid|\\mvert|\\mVert)$/.test(e) ? e : (this.onError({ code: "unexpected-delimiter", arg: e }), null) : (this.onError({ code: "unknown-command", arg: e }), null); + } + scanLeftRight() { + var o; + if (this.match("\\right")) + return this.onError({ code: "unbalanced-braces" }), new rt("\\right"); + if (this.match("\\mright")) + return this.onError({ code: "unbalanced-braces" }), new rt("\\mright"); + let e = "\\right"; + if (!this.match("\\left")) { + if (!this.match("\\mleft")) + return null; + e = "\\mright"; + } + let r = this.scanDelim(); + if (!r) + return this.onError({ code: "unexpected-delimiter" }), new rt(e === "\\right" ? "\\left" : "\\mleft"); + for (this.beginContext(); !this.end() && !this.match(e); ) + this.parseExpression(); + let i = this.mathlist; + this.endContext(); + let n = (o = this.scanDelim()) != null ? o : "."; + return new H(e === "\\right" ? "left...right" : "mleft...mright", i, { leftDelim: r, rightDelim: n, style: this.style }); + } + parseSupSub() { + if (this.parseMode !== "math") + return false; + let e = this.peek(); + if (e !== "^" && e !== "_" && e !== "'") + return false; + let r = this.lastSubsupAtom(); + for (; e === "^" || e === "_" || e === "'"; ) + this.match("'") ? this.match("'") ? r.addChild(new y({ type: "mord", command: "\\doubleprime", mode: "math", value: "\u2032\u2032" }), "superscript") : r.addChild(new y({ type: "mord", command: "\\prime", mode: "math", value: "\u2032" }), "superscript") : (this.match("^") || this.match("_")) && r.addChildren(A(this.scanArgument("expression")), e === "_" ? "subscript" : "superscript"), e = this.peek(); + return true; + } + parseLimits() { + if (this.parseMode !== "math") + return false; + let e = this.match("\\limits"), r = !e && this.match("\\nolimits"), i = !r && !e && this.match("\\displaylimits"); + if (!e && !r && !i) + return false; + let n = this.mathlist.length > 0 ? this.mathlist[this.mathlist.length - 1] : null; + return n === null ? false : (n.explicitSubsupPlacement = true, e && (n.subsupPlacement = "over-under"), r && (n.subsupPlacement = "adjacent"), i && (n.subsupPlacement = "auto"), true); + } + scanArguments(e) { + if (!(e != null && e.params)) + return [void 0, []]; + let r, i = [], n = e.infix ? 2 : 0; + for (; n < e.params.length; ) { + let o = e.params[n]; + o.type === "rest" ? i.push(this.scan((a) => ["<}>", "&", "\\end", "\\cr", "\\\\", "\\tabularnewline", "\\right"].includes(a))) : o.isOptional ? i.push(this.scanOptionalArgument(o.type)) : o.type.endsWith("*") ? r = o.type.slice(0, -1) : i.push(this.scanArgument(o.type)), n += 1; + } + return [r, i]; + } + scanSymbolOrLiteral() { + let e = this.peek(); + if (!e) + return null; + this.next(); + let r; + if (Wi(e)) { + let i = ce.createAtom(this.parseMode, e, p({}, this.style)); + return i ? [i] : null; + } + if (r = this.scanMacro(e), r) + return [r]; + if (e.startsWith("\\")) { + let i = ee(e, this.parseMode); + if (!i) + return this.onError({ code: "unknown-command", arg: e }), [new rt(e)]; + if (i.definitionType === "symbol") { + let n = p({}, this.style); + i.variant && (n.variant = i.variant), r = new y({ type: i.type, command: e, style: n, value: String.fromCodePoint(i.codepoint), mode: this.parseMode, verbatimLatex: e }); + } else { + if (i.applyMode || i.applyStyle || i.infix) + return this.onError({ code: "invalid-command", arg: e }), [new rt(e)]; + i.createAtom && (r = i.createAtom({ command: e, args: [], style: this.style, mode: this.parseMode })); + } + } + return r ? [r] : null; + } + scanArgument(e) { + var n; + this.skipFiller(); + let r = this.parseMode; + if (e === "auto" && (e = r), !this.match("<{>")) { + if (e === "string") + return this.scanString(); + if (e === "value") + return this.scanValue(); + if (e === "delim") + return (n = this.scanDelim()) != null ? n : "."; + if (e === "expression") + return this.scanExpression(); + if (e === "math") { + e !== r && this.beginContext({ mode: "math" }); + let o = this.scanSymbolOrLiteral(); + return e !== r && this.endContext(), o; + } + if (e === "text") { + e !== r && this.beginContext({ mode: "text" }); + let o = this.scanSymbolOrLiteral(); + return e !== r && this.endContext(), o; + } + return e === "balanced-string" ? null : e === "rest" ? this.scan((o) => ["<}>", "&", "\\end", "\\cr", "\\\\", "\\tabularnewline", "\\right"].includes(o)) : null; + } + if (e === "text") { + this.beginContext({ mode: "text" }); + do + this.mathlist.push(...this.scan()); + while (!this.match("<}>") && !this.end()); + let o = this.mathlist; + return this.endContext(), { group: o }; + } + if (e === "math") { + this.beginContext({ mode: "math" }); + do + this.mathlist.push(...this.scan()); + while (!this.match("<}>") && !this.end()); + let o = this.mathlist; + return this.endContext(), { group: o }; + } + let i = null; + if (e === "expression") { + this.beginContext({ mode: "math" }); + do + this.mathlist.push(...this.scan()); + while (!this.match("<}>") && !this.end()); + let o = this.mathlist; + return this.endContext(), { group: o }; + } + return e === "string" ? i = this.scanString() : e === "balanced-string" ? i = this.scanBalancedString() : e === "colspec" ? i = this.scanColspec() : e === "value" && (i = this.scanValue()), this.skipUntilToken("<}>"), i; + } + scanOptionalArgument(e) { + if (e = e === "auto" ? this.parseMode : e, this.skipFiller(), !this.match("[")) + return null; + let r = null; + for (; !this.end() && !this.match("]"); ) + if (e === "string") + r = this.scanString(); + else if (e === "value") + r = this.scanValue(); + else if (e === "colspec") + r = this.scanColspec(); + else if (e === "bbox") { + let i = {}, n = this.scanString().toLowerCase().trim().split(/,(?![^(]*\)(?:(?:[^(]*\)){2})*[^"]*$)/); + for (let o of n) { + let a = o.match(/^\s*([\d.]+)\s*([a-z]{2})/); + if (a) + i.padding = { dimension: parseInt(a[1]), unit: a[2] }; + else { + let s = o.match(/^\s*border\s*:\s*(.*)/); + s ? i.border = s[1] : i.backgroundcolor = { string: o }; + } + } + r = i; + } else + e === "math" && (this.beginContext({ mode: "math" }), r = this.mathlist.concat(this.scan((i) => i === "]")), this.endContext()); + return r; + } + scanSymbolOrCommand(e) { + var o, a, s; + if (e === "\\placeholder") { + let l = this.scanOptionalArgument("string"), c = this.scanOptionalArgument("math"), u = y.serialize(c, { defaultMode: "math" }), d = [], m; + !m && u === "correct" ? m = "correct" : !m && u === "incorrect" ? m = "incorrect" : u !== "" && (d = c); + let h = this.scanOptionalArgument("string") === "locked", f = this.scanArgument("auto"), b; + return f && Array.isArray(f) && f.length > 0 ? b = f : f && typeof f == "object" && "group" in f ? b = f.group : b = d, l ? [new Hi(l, m, h, b != null ? b : d, { mode: this.parseMode, style: this.style })] : [new ge({ mode: this.parseMode, style: this.style })]; + } + if (e === "\\renewcommand" || e === "\\newcommand" || e === "\\providecommand" || e === "\\def") { + let l = this.index, c = this.scanLiteralGroup() || this.next(); + if (!c) + return null; + if (this.context.registers[c.substring(1)]) { + let u = this.scanArgument("string"); + u !== null && (this.context.registers[c.substring(1)] = u); + let d = K([e, ur(this.tokens.slice(l, this.index))]); + return [new y({ type: "text", value: "", verbatimLatex: d })]; + } + } + let r = this.scanMacro(e); + if (r) + return [r]; + let i = ee(e, this.parseMode); + if (!i) + return this.parseMode === "text" ? (/[a-zA-Z]/.test((o = this.peek()) != null ? o : "") && (e += " "), [...e].map((l) => new y({ type: "text", value: l, mode: "text", style: this.style }))) : (this.onError({ code: "unknown-command", arg: e }), [new rt(e)]); + let n = this.index; + if (i.definitionType === "symbol") { + let l = p({}, this.style); + i.variant && (l.variant = i.variant), r = new y({ type: i.type, command: e, style: l, value: String.fromCodePoint(i.codepoint), mode: this.parseMode }); + } else { + if (i.ifMode && !i.ifMode.includes(this.parseMode)) + return []; + let l = this.parseMode; + i.applyMode && (this.parseMode = i.applyMode); + let c, u = []; + if (i.parse ? u = i.parse(this) : [c, u] = this.scanArguments(i), this.parseMode = l, i.applyMode && !i.applyStyle && !i.createAtom) + return A(u[0]); + if (i.infix) + return this.onError({ code: "too-many-infix-commands", arg: e }), null; + if (typeof i.createAtom == "function") + r = i.createAtom({ command: e, args: u, style: this.style, mode: this.parseMode }), c && (r.body = A(this.scanArgument(c))); + else if (typeof i.applyStyle == "function") { + let d = i.applyStyle(this.style, e, u, this.context), m = this.parseMode; + if (i.applyMode && (this.parseMode = i.applyMode), c) { + let h = this.style; + this.style = d; + let f = this.scanArgument(c); + return this.style = h, this.parseMode = m, A(f); + } + this.style = d; + } else + r = new y({ type: "mord", command: (a = i.command) != null ? a : e, style: p({}, this.style), value: e, mode: (s = i.applyMode) != null ? s : this.parseMode }); + } + if (!r) + return null; + if (r instanceof y && r.verbatimLatex === void 0 && !/^\\(llap|rlap|class|cssId|htmlData)$/.test(e)) { + let l = K([e, ur(this.tokens.slice(n, this.index))]); + l && (r.verbatimLatex = l); + } + if (r.verbatimLatex === null && (r.verbatimLatex = void 0), r.isFunction && this.smartFence) { + let l = this.scanSmartFence(); + if (l) + return [r, l]; + } + return [r]; + } + scanSymbolCommandOrLiteral() { + this.expandUnicode(); + let e = this.get(); + if (!e) + return null; + if (Wi(e)) { + let r = ce.createAtom(this.parseMode, e, p({}, this.style)); + if (!r) + return null; + if (r.isFunction && this.smartFence) { + let i = this.scanSmartFence(); + if (i) + return [r, i]; + } + return [r]; + } + return e.startsWith("\\") ? this.scanSymbolOrCommand(e) : e === "" ? this.parseMode === "text" ? [new Be(" ", " ", this.style)] : null : (e === "<}>" ? this.onError({ latex: "", code: "unbalanced-braces" }) : this.onError({ latex: "", code: "unexpected-token", arg: e }), null); + } + scanMacro(e) { + var a; + let r = this.context.getMacro(e); + if (!r) + return null; + let i = this.index, n = r.args, o = { "?": (a = this.args) == null ? void 0 : a.call(this, "?") }; + for (let s = 1; s <= n; s++) { + let l = this.scanLiteralGroup(); + if (!l) { + let c = this.index; + this.scanExpression(), l = ur(this.tokens.slice(c, this.index)); + } + o[s] = l; + } + return new qi(e, { expand: r.expand, captureSelection: r.captureSelection, args: i === this.index ? null : ur(this.tokens.slice(i, this.index)), style: this.parsingContext.style, body: se(r.def, { context: this.context, parseMode: this.parseMode, args: (s) => o[s], mathstyle: this.parsingContext.mathstyle, style: this.parsingContext.style }) }); + } + parseExpression() { + var r, i, n, o; + let e = (o = (n = (i = (r = this.scanEnvironment()) != null ? r : this.scanModeShift()) != null ? i : this.scanModeSet()) != null ? n : this.scanGroup()) != null ? o : this.scanLeftRight(); + if (e === null) { + if (this.parseSupSub() || this.parseLimits()) + return true; + e = this.scanSymbolCommandOrLiteral(); + } + return e ? (X(e) ? this.mathlist.push(...e) : this.mathlist.push(e), true) : false; + } +}; +function se(t37, e) { + var o, a, s, l; + let r = (o = e == null ? void 0 : e.args) != null ? o : void 0, i = new Ea(Ki(t37, r), e == null ? void 0 : e.context, { args: r, mathstyle: (a = e == null ? void 0 : e.mathstyle) != null ? a : "displaystyle", parseMode: (s = e == null ? void 0 : e.parseMode) != null ? s : "math", style: (l = e == null ? void 0 : e.style) != null ? l : {} }), n = []; + for (; !i.end(); ) + n.push(...i.scan(() => false)); + return n; +} +function Ta(t37, e) { + var i; + let r = new Ea(Ki(t37, null), e == null ? void 0 : e.context, { mathstyle: "displaystyle", parseMode: (i = e == null ? void 0 : e.parseMode) != null ? i : "math" }); + for (; !r.end(); ) + r.scan(); + return r.errors; +} +var Nn = class t17 extends y { + constructor(e, r) { + super({ type: "chem" }, { command: e, mode: "math" }); + let i = re.go(L.go(r, e === "\\pu" ? "pu" : "ce"), false); + this.body = se(i), this._verbatimLatex = e + "{" + r + "}", this.arg = r, this.captureSelection = true; + } + static fromJson(e) { + return new t17(e.command, e.arg); + } + set verbatimLatex(e) { + } + get verbatimLatex() { + return this._verbatimLatex; + } + toJson() { + return g(p({}, super.toJson()), { arg: this.arg }); + } + render(e) { + let r = y.createBox(e, this.body, { type: "inner" }); + return this.caret && (r.caret = this.caret), this.bind(e, r); + } + _serialize(e) { + return this.verbatimLatex, this.verbatimLatex; + } +}; +_(["ce", "pu"], "{chemformula:balanced-string}", { createAtom: (t37) => { + var e; + return new Nn(t37.command, (e = t37.args[0]) != null ? e : ""); +} }); +var L = { go: function(t37, e) { + if (!t37) + return []; + e === void 0 && (e = "ce"); + var r = "0", i = {}; + i.parenthesisLevel = 0, t37 = t37.replace(/\n/g, " "), t37 = t37.replace(/[\u2212\u2013\u2014\u2010]/g, "-"), t37 = t37.replace(/[\u2026]/g, "..."); + for (var n, o = 10, a = []; ; ) { + n !== t37 ? (o = 10, n = t37) : o--; + var s = L.stateMachines[e], l = s.transitions[r] || s.transitions["*"]; + e: + for (var c = 0; c < l.length; c++) { + var u = L.patterns.match_(l[c].pattern, t37); + if (u) { + for (var d = l[c].task, m = 0; m < d.action_.length; m++) { + var h; + if (s.actions[d.action_[m].type_]) + h = s.actions[d.action_[m].type_](i, u.match_, d.action_[m].option); + else if (L.actions[d.action_[m].type_]) + h = L.actions[d.action_[m].type_](i, u.match_, d.action_[m].option); + else + throw ["MhchemBugA", "mhchem bug A. Please report. (" + d.action_[m].type_ + ")"]; + L.concatArray(a, h); + } + if (r = d.nextState || r, t37.length > 0) { + if (d.revisit || (t37 = u.remainder), !d.toContinue) + break e; + } else + return a; + } + } + if (o <= 0) + throw ["MhchemBugU", "mhchem bug U. Please report."]; + } +}, concatArray: function(t37, e) { + if (e) + if (Object.prototype.toString.call(e) === "[object Array]") + for (var r = 0; r < e.length; r++) + t37.push(e[r]); + else + t37.push(e); +}, patterns: { patterns: { empty: /^$/, else: /^./, else2: /^./, space: /^\s/, "space A": /^\s(?=[A-Z\\$])/, space$: /^\s$/, "a-z": /^[a-z]/, x: /^x/, x$: /^x$/, i$: /^i$/, letters: /^(?:[a-zA-Z\u03B1-\u03C9\u0391-\u03A9?@]|(?:\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))))+/, "\\greek": /^\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega|Gamma|Delta|Theta|Lambda|Xi|Pi|Sigma|Upsilon|Phi|Psi|Omega)(?:\s+|\{\}|(?![a-zA-Z]))/, "one lowercase latin letter $": /^(?:([a-z])(?:$|[^a-zA-Z]))$/, "$one lowercase latin letter$ $": /^\$(?:([a-z])(?:$|[^a-zA-Z]))\$$/, "one lowercase greek letter $": /^(?:\$?[\u03B1-\u03C9]\$?|\$?\\(?:alpha|beta|gamma|delta|epsilon|zeta|eta|theta|iota|kappa|lambda|mu|nu|xi|omicron|pi|rho|sigma|tau|upsilon|phi|chi|psi|omega)\s*\$?)(?:\s+|\{\}|(?![a-zA-Z]))$/, digits: /^[0-9]+/, "-9.,9": /^[+\-]?(?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))/, "-9.,9 no missing 0": /^[+\-]?[0-9]+(?:[.,][0-9]+)?/, "(-)(9.,9)(e)(99)": function(t37) { + var e = t37.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))?(\((?:[0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+))\))?(?:(?:([eE])|\s*(\*|x|\\times|\u00D7)\s*10\^)([+\-]?[0-9]+|\{[+\-]?[0-9]+\}))?/); + return e && e[0] ? { match_: e.slice(1), remainder: t37.substr(e[0].length) } : null; +}, "(-)(9)^(-9)": function(t37) { + var e = t37.match(/^(\+\-|\+\/\-|\+|\-|\\pm\s?)?([0-9]+(?:[,.][0-9]+)?|[0-9]*(?:\.[0-9]+)?)\^([+\-]?[0-9]+|\{[+\-]?[0-9]+\})/); + return e && e[0] ? { match_: e.slice(1), remainder: t37.substr(e[0].length) } : null; +}, "state of aggregation $": function(t37) { + var e = L.patterns.findObserveGroups(t37, "", /^\([a-z]{1,3}(?=[\),])/, ")", ""); + if (e && e.remainder.match(/^($|[\s,;\)\]\}])/)) + return e; + var r = t37.match(/^(?:\((?:\\ca\s?)?\$[amothc]\$\))/); + return r ? { match_: r[0], remainder: t37.substr(r[0].length) } : null; +}, "_{(state of aggregation)}$": /^_\{(\([a-z]{1,3}\))\}/, "{[(": /^(?:\\\{|\[|\()/, ")]}": /^(?:\)|\]|\\\})/, ", ": /^[,;]\s*/, ",": /^[,;]/, ".": /^[.]/, ". ": /^([.\u22C5\u00B7\u2022])\s*/, "...": /^\.\.\.(?=$|[^.])/, "* ": /^([*])\s*/, "^{(...)}": function(t37) { + return L.patterns.findObserveGroups(t37, "^{", "", "", "}"); +}, "^($...$)": function(t37) { + return L.patterns.findObserveGroups(t37, "^", "$", "$", ""); +}, "^a": /^\^([0-9]+|[^\\_])/, "^\\x{}{}": function(t37) { + return L.patterns.findObserveGroups(t37, "^", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true); +}, "^\\x{}": function(t37) { + return L.patterns.findObserveGroups(t37, "^", /^\\[a-zA-Z]+\{/, "}", ""); +}, "^\\x": /^\^(\\[a-zA-Z]+)\s*/, "^(-1)": /^\^(-?\d+)/, "'": /^'/, "_{(...)}": function(t37) { + return L.patterns.findObserveGroups(t37, "_{", "", "", "}"); +}, "_($...$)": function(t37) { + return L.patterns.findObserveGroups(t37, "_", "$", "$", ""); +}, _9: /^_([+\-]?[0-9]+|[^\\])/, "_\\x{}{}": function(t37) { + return L.patterns.findObserveGroups(t37, "_", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true); +}, "_\\x{}": function(t37) { + return L.patterns.findObserveGroups(t37, "_", /^\\[a-zA-Z]+\{/, "}", ""); +}, "_\\x": /^_(\\[a-zA-Z]+)\s*/, "^_": /^(?:\^(?=_)|\_(?=\^)|[\^_]$)/, "{}": /^\{\}/, "{...}": function(t37) { + return L.patterns.findObserveGroups(t37, "", "{", "}", ""); +}, "{(...)}": function(t37) { + return L.patterns.findObserveGroups(t37, "{", "", "", "}"); +}, "$...$": function(t37) { + return L.patterns.findObserveGroups(t37, "", "$", "$", ""); +}, "${(...)}$": function(t37) { + return L.patterns.findObserveGroups(t37, "${", "", "", "}$"); +}, "$(...)$": function(t37) { + return L.patterns.findObserveGroups(t37, "$", "", "", "$"); +}, "=<>": /^[=<>]/, "#": /^[#\u2261]/, "+": /^\+/, "-$": /^-(?=[\s_},;\]/]|$|\([a-z]+\))/, "-9": /^-(?=[0-9])/, "- orbital overlap": /^-(?=(?:[spd]|sp)(?:$|[\s,;\)\]\}]))/, "-": /^-/, "pm-operator": /^(?:\\pm|\$\\pm\$|\+-|\+\/-)/, operator: /^(?:\+|(?:[\-=<>]|<<|>>|\\approx|\$\\approx\$)(?=\s|$|-?[0-9]))/, arrowUpDown: /^(?:v|\(v\)|\^|\(\^\))(?=$|[\s,;\)\]\}])/, "\\bond{(...)}": function(t37) { + return L.patterns.findObserveGroups(t37, "\\bond{", "", "", "}"); +}, "->": /^(?:<->|<-->|->|<-|<=>>|<<=>|<=>|[\u2192\u27F6\u21CC])/, CMT: /^[CMT](?=\[)/, "[(...)]": function(t37) { + return L.patterns.findObserveGroups(t37, "[", "", "", "]"); +}, "1st-level escape": /^(&|\\\\|\\hline)\s*/, "\\,": /^(?:\\[,\ ;:])/, "\\x{}{}": function(t37) { + return L.patterns.findObserveGroups(t37, "", /^\\[a-zA-Z]+\{/, "}", "", "", "{", "}", "", true); +}, "\\x{}": function(t37) { + return L.patterns.findObserveGroups(t37, "", /^\\[a-zA-Z]+\{/, "}", ""); +}, "\\ca": /^\\ca(?:\s+|(?![a-zA-Z]))/, "\\x": /^(?:\\[a-zA-Z]+\s*|\\[_&{}%])/, orbital: /^(?:[0-9]{1,2}[spdfgh]|[0-9]{0,2}sp)(?=$|[^a-zA-Z])/, others: /^[\/~|]/, "\\frac{(...)}": function(t37) { + return L.patterns.findObserveGroups(t37, "\\frac{", "", "", "}", "{", "", "", "}"); +}, "\\overset{(...)}": function(t37) { + return L.patterns.findObserveGroups(t37, "\\overset{", "", "", "}", "{", "", "", "}"); +}, "\\underset{(...)}": function(t37) { + return L.patterns.findObserveGroups(t37, "\\underset{", "", "", "}", "{", "", "", "}"); +}, "\\underbrace{(...)}": function(t37) { + return L.patterns.findObserveGroups(t37, "\\underbrace{", "", "", "}_", "{", "", "", "}"); +}, "\\color{(...)}0": function(t37) { + return L.patterns.findObserveGroups(t37, "\\color{", "", "", "}"); +}, "\\color{(...)}{(...)}1": function(t37) { + return L.patterns.findObserveGroups(t37, "\\color{", "", "", "}", "{", "", "", "}"); +}, "\\color(...){(...)}2": function(t37) { + return L.patterns.findObserveGroups(t37, "\\color", "\\", "", /^(?=\{)/, "{", "", "", "}"); +}, "\\ce{(...)}": function(t37) { + return L.patterns.findObserveGroups(t37, "\\ce{", "", "", "}"); +}, oxidation$: /^(?:[+-][IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/, "d-oxidation$": /^(?:[+-]?\s?[IVX]+|\\pm\s*0|\$\\pm\$\s*0)$/, "roman numeral": /^[IVX]+/, "1/2$": /^[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+(?:\$[a-z]\$|[a-z])?$/, amount: function(t37) { + var e; + if (e = t37.match(/^(?:(?:(?:\([+\-]?[0-9]+\/[0-9]+\)|[+\-]?(?:[0-9]+|\$[a-z]\$|[a-z])\/[0-9]+|[+\-]?[0-9]+[.,][0-9]+|[+\-]?\.[0-9]+|[+\-]?[0-9]+)(?:[a-z](?=\s*[A-Z]))?)|[+\-]?[a-z](?=\s*[A-Z])|\+(?!\s))/), e) + return { match_: e[0], remainder: t37.substr(e[0].length) }; + var r = L.patterns.findObserveGroups(t37, "", "$", "$", ""); + return r && (e = r.match_.match(/^\$(?:\(?[+\-]?(?:[0-9]*[a-z]?[+\-])?[0-9]*[a-z](?:[+\-][0-9]*[a-z]?)?\)?|\+|-)\$$/), e) ? { match_: e[0], remainder: t37.substr(e[0].length) } : null; +}, amount2: function(t37) { + return this.amount(t37); +}, "(KV letters),": /^(?:[A-Z][a-z]{0,2}|i)(?=,)/, formula$: function(t37) { + if (t37.match(/^\([a-z]+\)$/)) + return null; + var e = t37.match(/^(?:[a-z]|(?:[0-9\ \+\-\,\.\(\)]+[a-z])+[0-9\ \+\-\,\.\(\)]*|(?:[a-z][0-9\ \+\-\,\.\(\)]+)+[a-z]?)$/); + return e ? { match_: e[0], remainder: t37.substr(e[0].length) } : null; +}, uprightEntities: /^(?:pH|pOH|pC|pK|iPr|iBu)(?=$|[^a-zA-Z])/, "/": /^\s*(\/)\s*/, "//": /^\s*(\/\/)\s*/, "*": /^\s*[*.]\s*/ }, findObserveGroups: function(t37, e, r, i, n, o, a, s, l, c) { + var u = function(M, x) { + if (typeof x == "string") + return M.indexOf(x) !== 0 ? null : x; + var v = M.match(x); + return v ? v[0] : null; + }, d = function(M, x, v) { + for (var k = 0; x < M.length; ) { + var C = M.charAt(x), q = u(M.substr(x), v); + if (q !== null && k === 0) + return { endMatchBegin: x, endMatchEnd: x + q.length }; + if (C === "{") + k++; + else if (C === "}") { + if (k === 0) + throw ["ExtraCloseMissingOpen", "Extra close brace or missing open brace"]; + k--; + } + x++; + } + return k > 0, null; + }, m = u(t37, e); + if (m === null || (t37 = t37.substr(m.length), m = u(t37, r), m === null)) + return null; + var h = d(t37, m.length, i || n); + if (h === null) + return null; + var f = t37.substring(0, i ? h.endMatchEnd : h.endMatchBegin); + if (o || a) { + var b = this.findObserveGroups(t37.substr(h.endMatchEnd), o, a, s, l); + if (b === null) + return null; + var S = [f, b.match_]; + return { match_: c ? S.join("") : S, remainder: b.remainder }; + } else + return { match_: f, remainder: t37.substr(h.endMatchEnd) }; +}, match_: function(t37, e) { + var r = L.patterns.patterns[t37]; + if (r === void 0) + throw ["MhchemBugP", "mhchem bug P. Please report. (" + t37 + ")"]; + if (typeof r == "function") + return L.patterns.patterns[t37](e); + var i = e.match(r); + if (i) { + var n; + return i[2] ? n = [i[1], i[2]] : i[1] ? n = i[1] : n = i[0], { match_: n, remainder: e.substr(i[0].length) }; + } + return null; +} }, actions: { "a=": function(t37, e) { + t37.a = (t37.a || "") + e; +}, "b=": function(t37, e) { + t37.b = (t37.b || "") + e; +}, "p=": function(t37, e) { + t37.p = (t37.p || "") + e; +}, "o=": function(t37, e) { + t37.o = (t37.o || "") + e; +}, "q=": function(t37, e) { + t37.q = (t37.q || "") + e; +}, "d=": function(t37, e) { + t37.d = (t37.d || "") + e; +}, "rm=": function(t37, e) { + t37.rm = (t37.rm || "") + e; +}, "text=": function(t37, e) { + t37.text_ = (t37.text_ || "") + e; +}, insert: function(t37, e, r) { + return { type_: r }; +}, "insert+p1": function(t37, e, r) { + return { type_: r, p1: e }; +}, "insert+p1+p2": function(t37, e, r) { + return { type_: r, p1: e[0], p2: e[1] }; +}, copy: function(t37, e) { + return e; +}, rm: function(t37, e) { + return { type_: "rm", p1: e || "" }; +}, text: function(t37, e) { + return L.go(e, "text"); +}, "{text}": function(t37, e) { + var r = ["{"]; + return L.concatArray(r, L.go(e, "text")), r.push("}"), r; +}, "tex-math": function(t37, e) { + return L.go(e, "tex-math"); +}, "tex-math tight": function(t37, e) { + return L.go(e, "tex-math tight"); +}, bond: function(t37, e, r) { + return { type_: "bond", kind_: r || e }; +}, "color0-output": function(t37, e) { + return { type_: "color0", color: e[0] }; +}, ce: function(t37, e) { + return L.go(e); +}, "1/2": function(t37, e) { + var r = []; + e.match(/^[+\-]/) && (r.push(e.substr(0, 1)), e = e.substr(1)); + var i = e.match(/^([0-9]+|\$[a-z]\$|[a-z])\/([0-9]+)(\$[a-z]\$|[a-z])?$/); + return i[1] = i[1].replace(/\$/g, ""), r.push({ type_: "frac", p1: i[1], p2: i[2] }), i[3] && (i[3] = i[3].replace(/\$/g, ""), r.push({ type_: "tex-math", p1: i[3] })), r; +}, "9,9": function(t37, e) { + return L.go(e, "9,9"); +} }, createTransitions: function(t37) { + var e, r, i, n, o = {}; + for (e in t37) + for (r in t37[e]) + for (i = r.split("|"), t37[e][r].stateArray = i, n = 0; n < i.length; n++) + o[i[n]] = []; + for (e in t37) + for (r in t37[e]) + for (i = t37[e][r].stateArray || [], n = 0; n < i.length; n++) { + var a = t37[e][r]; + if (a.action_) { + a.action_ = [].concat(a.action_); + for (var s = 0; s < a.action_.length; s++) + typeof a.action_[s] == "string" && (a.action_[s] = { type_: a.action_[s] }); + } else + a.action_ = []; + for (var l = e.split("|"), c = 0; c < l.length; c++) + if (i[n] === "*") + for (var u in o) + o[u].push({ pattern: l[c], task: a }); + else + o[i[n]].push({ pattern: l[c], task: a }); + } + return o; +}, stateMachines: {} }; +L.stateMachines = { ce: { transitions: L.createTransitions({ empty: { "*": { action_: "output" } }, else: { "0|1|2": { action_: "beginsWithBond=false", revisit: true, toContinue: true } }, oxidation$: { 0: { action_: "oxidation-output" } }, CMT: { r: { action_: "rdt=", nextState: "rt" }, rd: { action_: "rqt=", nextState: "rdt" } }, arrowUpDown: { "0|1|2|as": { action_: ["sb=false", "output", "operator"], nextState: "1" } }, uprightEntities: { "0|1|2": { action_: ["o=", "output"], nextState: "1" } }, orbital: { "0|1|2|3": { action_: "o=", nextState: "o" } }, "->": { "0|1|2|3": { action_: "r=", nextState: "r" }, "a|as": { action_: ["output", "r="], nextState: "r" }, "*": { action_: ["output", "r="], nextState: "r" } }, "+": { o: { action_: "d= kv", nextState: "d" }, "d|D": { action_: "d=", nextState: "d" }, q: { action_: "d=", nextState: "qd" }, "qd|qD": { action_: "d=", nextState: "qd" }, dq: { action_: ["output", "d="], nextState: "d" }, 3: { action_: ["sb=false", "output", "operator"], nextState: "0" } }, amount: { "0|2": { action_: "a=", nextState: "a" } }, "pm-operator": { "0|1|2|a|as": { action_: ["sb=false", "output", { type_: "operator", option: "\\pm" }], nextState: "0" } }, operator: { "0|1|2|a|as": { action_: ["sb=false", "output", "operator"], nextState: "0" } }, "-$": { "o|q": { action_: ["charge or bond", "output"], nextState: "qd" }, d: { action_: "d=", nextState: "d" }, D: { action_: ["output", { type_: "bond", option: "-" }], nextState: "3" }, q: { action_: "d=", nextState: "qd" }, qd: { action_: "d=", nextState: "qd" }, "qD|dq": { action_: ["output", { type_: "bond", option: "-" }], nextState: "3" } }, "-9": { "3|o": { action_: ["output", { type_: "insert", option: "hyphen" }], nextState: "3" } }, "- orbital overlap": { o: { action_: ["output", { type_: "insert", option: "hyphen" }], nextState: "2" }, d: { action_: ["output", { type_: "insert", option: "hyphen" }], nextState: "2" } }, "-": { "0|1|2": { action_: [{ type_: "output", option: 1 }, "beginsWithBond=true", { type_: "bond", option: "-" }], nextState: "3" }, 3: { action_: { type_: "bond", option: "-" } }, a: { action_: ["output", { type_: "insert", option: "hyphen" }], nextState: "2" }, as: { action_: [{ type_: "output", option: 2 }, { type_: "bond", option: "-" }], nextState: "3" }, b: { action_: "b=" }, o: { action_: { type_: "- after o/d", option: false }, nextState: "2" }, q: { action_: { type_: "- after o/d", option: false }, nextState: "2" }, "d|qd|dq": { action_: { type_: "- after o/d", option: true }, nextState: "2" }, "D|qD|p": { action_: ["output", { type_: "bond", option: "-" }], nextState: "3" } }, amount2: { "1|3": { action_: "a=", nextState: "a" } }, letters: { "0|1|2|3|a|as|b|p|bp|o": { action_: "o=", nextState: "o" }, "q|dq": { action_: ["output", "o="], nextState: "o" }, "d|D|qd|qD": { action_: "o after d", nextState: "o" } }, digits: { o: { action_: "q=", nextState: "q" }, "d|D": { action_: "q=", nextState: "dq" }, q: { action_: ["output", "o="], nextState: "o" }, a: { action_: "o=", nextState: "o" } }, "space A": { "b|p|bp": {} }, space: { a: { nextState: "as" }, 0: { action_: "sb=false" }, "1|2": { action_: "sb=true" }, "r|rt|rd|rdt|rdq": { action_: "output", nextState: "0" }, "*": { action_: ["output", "sb=true"], nextState: "1" } }, "1st-level escape": { "1|2": { action_: ["output", { type_: "insert+p1", option: "1st-level escape" }] }, "*": { action_: ["output", { type_: "insert+p1", option: "1st-level escape" }], nextState: "0" } }, "[(...)]": { "r|rt": { action_: "rd=", nextState: "rd" }, "rd|rdt": { action_: "rq=", nextState: "rdq" } }, "...": { "o|d|D|dq|qd|qD": { action_: ["output", { type_: "bond", option: "..." }], nextState: "3" }, "*": { action_: [{ type_: "output", option: 1 }, { type_: "insert", option: "ellipsis" }], nextState: "1" } }, ". |* ": { "*": { action_: ["output", { type_: "insert", option: "addition compound" }], nextState: "1" } }, "state of aggregation $": { "*": { action_: ["output", "state of aggregation"], nextState: "1" } }, "{[(": { "a|as|o": { action_: ["o=", "output", "parenthesisLevel++"], nextState: "2" }, "0|1|2|3": { action_: ["o=", "output", "parenthesisLevel++"], nextState: "2" }, "*": { action_: ["output", "o=", "output", "parenthesisLevel++"], nextState: "2" } }, ")]}": { "0|1|2|3|b|p|bp|o": { action_: ["o=", "parenthesisLevel--"], nextState: "o" }, "a|as|d|D|q|qd|qD|dq": { action_: ["output", "o=", "parenthesisLevel--"], nextState: "o" } }, ", ": { "*": { action_: ["output", "comma"], nextState: "0" } }, "^_": { "*": {} }, "^{(...)}|^($...$)": { "0|1|2|as": { action_: "b=", nextState: "b" }, p: { action_: "b=", nextState: "bp" }, "3|o": { action_: "d= kv", nextState: "D" }, q: { action_: "d=", nextState: "qD" }, "d|D|qd|qD|dq": { action_: ["output", "d="], nextState: "D" } }, "^a|^\\x{}{}|^\\x{}|^\\x|'": { "0|1|2|as": { action_: "b=", nextState: "b" }, p: { action_: "b=", nextState: "bp" }, "3|o": { action_: "d= kv", nextState: "d" }, q: { action_: "d=", nextState: "qd" }, "d|qd|D|qD": { action_: "d=" }, dq: { action_: ["output", "d="], nextState: "d" } }, "_{(state of aggregation)}$": { "d|D|q|qd|qD|dq": { action_: ["output", "q="], nextState: "q" } }, "_{(...)}|_($...$)|_9|_\\x{}{}|_\\x{}|_\\x": { "0|1|2|as": { action_: "p=", nextState: "p" }, b: { action_: "p=", nextState: "bp" }, "3|o": { action_: "q=", nextState: "q" }, "d|D": { action_: "q=", nextState: "dq" }, "q|qd|qD|dq": { action_: ["output", "q="], nextState: "q" } }, "=<>": { "0|1|2|3|a|as|o|q|d|D|qd|qD|dq": { action_: [{ type_: "output", option: 2 }, "bond"], nextState: "3" } }, "#": { "0|1|2|3|a|as|o": { action_: [{ type_: "output", option: 2 }, { type_: "bond", option: "#" }], nextState: "3" } }, "{}": { "*": { action_: { type_: "output", option: 1 }, nextState: "1" } }, "{...}": { "0|1|2|3|a|as|b|p|bp": { action_: "o=", nextState: "o" }, "o|d|D|q|qd|qD|dq": { action_: ["output", "o="], nextState: "o" } }, "$...$": { a: { action_: "a=" }, "0|1|2|3|as|b|p|bp|o": { action_: "o=", nextState: "o" }, "as|o": { action_: "o=" }, "q|d|D|qd|qD|dq": { action_: ["output", "o="], nextState: "o" } }, "\\bond{(...)}": { "*": { action_: [{ type_: "output", option: 2 }, "bond"], nextState: "3" } }, "\\frac{(...)}": { "*": { action_: [{ type_: "output", option: 1 }, "frac-output"], nextState: "3" } }, "\\overset{(...)}": { "*": { action_: [{ type_: "output", option: 2 }, "overset-output"], nextState: "3" } }, "\\underset{(...)}": { "*": { action_: [{ type_: "output", option: 2 }, "underset-output"], nextState: "3" } }, "\\underbrace{(...)}": { "*": { action_: [{ type_: "output", option: 2 }, "underbrace-output"], nextState: "3" } }, "\\color{(...)}{(...)}1|\\color(...){(...)}2": { "*": { action_: [{ type_: "output", option: 2 }, "color-output"], nextState: "3" } }, "\\color{(...)}0": { "*": { action_: [{ type_: "output", option: 2 }, "color0-output"] } }, "\\ce{(...)}": { "*": { action_: [{ type_: "output", option: 2 }, "ce"], nextState: "3" } }, "\\,": { "*": { action_: [{ type_: "output", option: 1 }, "copy"], nextState: "1" } }, "\\x{}{}|\\x{}|\\x": { "0|1|2|3|a|as|b|p|bp|o|c0": { action_: ["o=", "output"], nextState: "3" }, "*": { action_: ["output", "o=", "output"], nextState: "3" } }, others: { "*": { action_: [{ type_: "output", option: 1 }, "copy"], nextState: "3" } }, else2: { a: { action_: "a to o", nextState: "o", revisit: true }, as: { action_: ["output", "sb=true"], nextState: "1", revisit: true }, "r|rt|rd|rdt|rdq": { action_: ["output"], nextState: "0", revisit: true }, "*": { action_: ["output", "copy"], nextState: "3" } } }), actions: { "o after d": function(t37, e) { + var r; + if ((t37.d || "").match(/^[0-9]+$/)) { + var i = t37.d; + t37.d = void 0, r = this.output(t37), t37.b = i; + } else + r = this.output(t37); + return L.actions["o="](t37, e), r; +}, "d= kv": function(t37, e) { + t37.d = e, t37.dType = "kv"; +}, "charge or bond": function(t37, e) { + if (t37.beginsWithBond) { + var r = []; + return L.concatArray(r, this.output(t37)), L.concatArray(r, L.actions.bond(t37, e, "-")), r; + } else + t37.d = e; +}, "- after o/d": function(t37, e, r) { + var i = L.patterns.match_("orbital", t37.o || ""), n = L.patterns.match_("one lowercase greek letter $", t37.o || ""), o = L.patterns.match_("one lowercase latin letter $", t37.o || ""), a = L.patterns.match_("$one lowercase latin letter$ $", t37.o || ""), s = e === "-" && (i && i.remainder === "" || n || o || a); + s && !t37.a && !t37.b && !t37.p && !t37.d && !t37.q && !i && o && (t37.o = "$" + t37.o + "$"); + var l = []; + return s ? (L.concatArray(l, this.output(t37)), l.push({ type_: "hyphen" })) : (i = L.patterns.match_("digits", t37.d || ""), r && i && i.remainder === "" ? (L.concatArray(l, L.actions["d="](t37, e)), L.concatArray(l, this.output(t37))) : (L.concatArray(l, this.output(t37)), L.concatArray(l, L.actions.bond(t37, e, "-")))), l; +}, "a to o": function(t37) { + t37.o = t37.a, t37.a = void 0; +}, "sb=true": function(t37) { + t37.sb = true; +}, "sb=false": function(t37) { + t37.sb = false; +}, "beginsWithBond=true": function(t37) { + t37.beginsWithBond = true; +}, "beginsWithBond=false": function(t37) { + t37.beginsWithBond = false; +}, "parenthesisLevel++": function(t37) { + t37.parenthesisLevel++; +}, "parenthesisLevel--": function(t37) { + t37.parenthesisLevel--; +}, "state of aggregation": function(t37, e) { + return { type_: "state of aggregation", p1: L.go(e, "o") }; +}, comma: function(t37, e) { + var r = e.replace(/\s*$/, ""), i = r !== e; + return i && t37.parenthesisLevel === 0 ? { type_: "comma enumeration L", p1: r } : { type_: "comma enumeration M", p1: r }; +}, output: function(t37, e, r) { + var i; + if (!t37.r) + i = [], !t37.a && !t37.b && !t37.p && !t37.o && !t37.q && !t37.d && !r || (t37.sb && i.push({ type_: "entitySkip" }), !t37.o && !t37.q && !t37.d && !t37.b && !t37.p && r !== 2 ? (t37.o = t37.a, t37.a = void 0) : !t37.o && !t37.q && !t37.d && (t37.b || t37.p) ? (t37.o = t37.a, t37.d = t37.b, t37.q = t37.p, t37.a = t37.b = t37.p = void 0) : t37.o && t37.dType === "kv" && L.patterns.match_("d-oxidation$", t37.d || "") ? t37.dType = "oxidation" : t37.o && t37.dType === "kv" && !t37.q && (t37.dType = void 0), i.push({ type_: "chemfive", a: L.go(t37.a, "a"), b: L.go(t37.b, "bd"), p: L.go(t37.p, "pq"), o: L.go(t37.o, "o"), q: L.go(t37.q, "pq"), d: L.go(t37.d, t37.dType === "oxidation" ? "oxidation" : "bd"), dType: t37.dType })); + else { + var n; + t37.rdt === "M" ? n = L.go(t37.rd, "tex-math") : t37.rdt === "T" ? n = [{ type_: "text", p1: t37.rd || "" }] : n = L.go(t37.rd); + var o; + t37.rqt === "M" ? o = L.go(t37.rq, "tex-math") : t37.rqt === "T" ? o = [{ type_: "text", p1: t37.rq || "" }] : o = L.go(t37.rq), i = { type_: "arrow", r: t37.r, rd: n, rq: o }; + } + for (var a in t37) + a !== "parenthesisLevel" && a !== "beginsWithBond" && delete t37[a]; + return i; +}, "oxidation-output": function(t37, e) { + var r = ["{"]; + return L.concatArray(r, L.go(e, "oxidation")), r.push("}"), r; +}, "frac-output": function(t37, e) { + return { type_: "frac-ce", p1: L.go(e[0]), p2: L.go(e[1]) }; +}, "overset-output": function(t37, e) { + return { type_: "overset", p1: L.go(e[0]), p2: L.go(e[1]) }; +}, "underset-output": function(t37, e) { + return { type_: "underset", p1: L.go(e[0]), p2: L.go(e[1]) }; +}, "underbrace-output": function(t37, e) { + return { type_: "underbrace", p1: L.go(e[0]), p2: L.go(e[1]) }; +}, "color-output": function(t37, e) { + return { type_: "color", color1: e[0], color2: L.go(e[1]) }; +}, "r=": function(t37, e) { + t37.r = e; +}, "rdt=": function(t37, e) { + t37.rdt = e; +}, "rd=": function(t37, e) { + t37.rd = e; +}, "rqt=": function(t37, e) { + t37.rqt = e; +}, "rq=": function(t37, e) { + t37.rq = e; +}, operator: function(t37, e, r) { + return { type_: "operator", kind_: r || e }; +} } }, a: { transitions: L.createTransitions({ empty: { "*": {} }, "1/2$": { 0: { action_: "1/2" } }, else: { 0: { nextState: "1", revisit: true } }, "$(...)$": { "*": { action_: "tex-math tight", nextState: "1" } }, ",": { "*": { action_: { type_: "insert", option: "commaDecimal" } } }, else2: { "*": { action_: "copy" } } }), actions: {} }, o: { transitions: L.createTransitions({ empty: { "*": {} }, "1/2$": { 0: { action_: "1/2" } }, else: { 0: { nextState: "1", revisit: true } }, letters: { "*": { action_: "rm" } }, "\\ca": { "*": { action_: { type_: "insert", option: "circa" } } }, "\\x{}{}|\\x{}|\\x": { "*": { action_: "copy" } }, "${(...)}$|$(...)$": { "*": { action_: "tex-math" } }, "{(...)}": { "*": { action_: "{text}" } }, else2: { "*": { action_: "copy" } } }), actions: {} }, text: { transitions: L.createTransitions({ empty: { "*": { action_: "output" } }, "{...}": { "*": { action_: "text=" } }, "${(...)}$|$(...)$": { "*": { action_: "tex-math" } }, "\\greek": { "*": { action_: ["output", "rm"] } }, "\\,|\\x{}{}|\\x{}|\\x": { "*": { action_: ["output", "copy"] } }, else: { "*": { action_: "text=" } } }), actions: { output: function(t37) { + if (t37.text_) { + var e = { type_: "text", p1: t37.text_ }; + for (var r in t37) + delete t37[r]; + return e; + } +} } }, pq: { transitions: L.createTransitions({ empty: { "*": {} }, "state of aggregation $": { "*": { action_: "state of aggregation" } }, i$: { 0: { nextState: "!f", revisit: true } }, "(KV letters),": { 0: { action_: "rm", nextState: "0" } }, formula$: { 0: { nextState: "f", revisit: true } }, "1/2$": { 0: { action_: "1/2" } }, else: { 0: { nextState: "!f", revisit: true } }, "${(...)}$|$(...)$": { "*": { action_: "tex-math" } }, "{(...)}": { "*": { action_: "text" } }, "a-z": { f: { action_: "tex-math" } }, letters: { "*": { action_: "rm" } }, "-9.,9": { "*": { action_: "9,9" } }, ",": { "*": { action_: { type_: "insert+p1", option: "comma enumeration S" } } }, "\\color{(...)}{(...)}1|\\color(...){(...)}2": { "*": { action_: "color-output" } }, "\\color{(...)}0": { "*": { action_: "color0-output" } }, "\\ce{(...)}": { "*": { action_: "ce" } }, "\\,|\\x{}{}|\\x{}|\\x": { "*": { action_: "copy" } }, else2: { "*": { action_: "copy" } } }), actions: { "state of aggregation": function(t37, e) { + return { type_: "state of aggregation subscript", p1: L.go(e, "o") }; +}, "color-output": function(t37, e) { + return { type_: "color", color1: e[0], color2: L.go(e[1], "pq") }; +} } }, bd: { transitions: L.createTransitions({ empty: { "*": {} }, x$: { 0: { nextState: "!f", revisit: true } }, formula$: { 0: { nextState: "f", revisit: true } }, else: { 0: { nextState: "!f", revisit: true } }, "-9.,9 no missing 0": { "*": { action_: "9,9" } }, ".": { "*": { action_: { type_: "insert", option: "electron dot" } } }, "a-z": { f: { action_: "tex-math" } }, x: { "*": { action_: { type_: "insert", option: "KV x" } } }, letters: { "*": { action_: "rm" } }, "'": { "*": { action_: { type_: "insert", option: "prime" } } }, "${(...)}$|$(...)$": { "*": { action_: "tex-math" } }, "{(...)}": { "*": { action_: "text" } }, "\\color{(...)}{(...)}1|\\color(...){(...)}2": { "*": { action_: "color-output" } }, "\\color{(...)}0": { "*": { action_: "color0-output" } }, "\\ce{(...)}": { "*": { action_: "ce" } }, "\\,|\\x{}{}|\\x{}|\\x": { "*": { action_: "copy" } }, else2: { "*": { action_: "copy" } } }), actions: { "color-output": function(t37, e) { + return { type_: "color", color1: e[0], color2: L.go(e[1], "bd") }; +} } }, oxidation: { transitions: L.createTransitions({ empty: { "*": {} }, "roman numeral": { "*": { action_: "roman-numeral" } }, "${(...)}$|$(...)$": { "*": { action_: "tex-math" } }, else: { "*": { action_: "copy" } } }), actions: { "roman-numeral": function(t37, e) { + return { type_: "roman numeral", p1: e || "" }; +} } }, "tex-math": { transitions: L.createTransitions({ empty: { "*": { action_: "output" } }, "\\ce{(...)}": { "*": { action_: ["output", "ce"] } }, "{...}|\\,|\\x{}{}|\\x{}|\\x": { "*": { action_: "o=" } }, else: { "*": { action_: "o=" } } }), actions: { output: function(t37) { + if (t37.o) { + var e = { type_: "tex-math", p1: t37.o }; + for (var r in t37) + delete t37[r]; + return e; + } +} } }, "tex-math tight": { transitions: L.createTransitions({ empty: { "*": { action_: "output" } }, "\\ce{(...)}": { "*": { action_: ["output", "ce"] } }, "{...}|\\,|\\x{}{}|\\x{}|\\x": { "*": { action_: "o=" } }, "-|+": { "*": { action_: "tight operator" } }, else: { "*": { action_: "o=" } } }), actions: { "tight operator": function(t37, e) { + t37.o = (t37.o || "") + "{" + e + "}"; +}, output: function(t37) { + if (t37.o) { + var e = { type_: "tex-math", p1: t37.o }; + for (var r in t37) + delete t37[r]; + return e; + } +} } }, "9,9": { transitions: L.createTransitions({ empty: { "*": {} }, ",": { "*": { action_: "comma" } }, else: { "*": { action_: "copy" } } }), actions: { comma: function() { + return { type_: "commaDecimal" }; +} } }, pu: { transitions: L.createTransitions({ empty: { "*": { action_: "output" } }, space$: { "*": { action_: ["output", "space"] } }, "{[(|)]}": { "0|a": { action_: "copy" } }, "(-)(9)^(-9)": { 0: { action_: "number^", nextState: "a" } }, "(-)(9.,9)(e)(99)": { 0: { action_: "enumber", nextState: "a" } }, space: { "0|a": {} }, "pm-operator": { "0|a": { action_: { type_: "operator", option: "\\pm" }, nextState: "0" } }, operator: { "0|a": { action_: "copy", nextState: "0" } }, "//": { d: { action_: "o=", nextState: "/" } }, "/": { d: { action_: "o=", nextState: "/" } }, "{...}|else": { "0|d": { action_: "d=", nextState: "d" }, a: { action_: ["space", "d="], nextState: "d" }, "/|q": { action_: "q=", nextState: "q" } } }), actions: { enumber: function(t37, e) { + var r = []; + return e[0] === "+-" || e[0] === "+/-" ? r.push("\\pm ") : e[0] && r.push(e[0]), e[1] && (L.concatArray(r, L.go(e[1], "pu-9,9")), e[2] && (e[2].match(/[,.]/) ? L.concatArray(r, L.go(e[2], "pu-9,9")) : r.push(e[2])), (e[3] || e[4]) && (e[3] === "e" || e[4] === "*" ? r.push({ type_: "cdot" }) : r.push({ type_: "times" }))), e[5] && r.push("10^{" + e[5] + "}"), r; +}, "number^": function(t37, e) { + var r = []; + return e[0] === "+-" || e[0] === "+/-" ? r.push("\\pm ") : e[0] && r.push(e[0]), L.concatArray(r, L.go(e[1], "pu-9,9")), r.push("^{" + e[2] + "}"), r; +}, operator: function(t37, e, r) { + return { type_: "operator", kind_: r || e }; +}, space: function() { + return { type_: "pu-space-1" }; +}, output: function(t37) { + var e, r = L.patterns.match_("{(...)}", t37.d || ""); + r && r.remainder === "" && (t37.d = r.match_); + var i = L.patterns.match_("{(...)}", t37.q || ""); + if (i && i.remainder === "" && (t37.q = i.match_), t37.d && (t37.d = t37.d.replace(/\u00B0C|\^oC|\^{o}C/g, "{}^{\\circ}C"), t37.d = t37.d.replace(/\u00B0F|\^oF|\^{o}F/g, "{}^{\\circ}F")), t37.q) { + t37.q = t37.q.replace(/\u00B0C|\^oC|\^{o}C/g, "{}^{\\circ}C"), t37.q = t37.q.replace(/\u00B0F|\^oF|\^{o}F/g, "{}^{\\circ}F"); + var n = { d: L.go(t37.d, "pu"), q: L.go(t37.q, "pu") }; + t37.o === "//" ? e = { type_: "pu-frac", p1: n.d, p2: n.q } : (e = n.d, n.d.length > 1 || n.q.length > 1 ? e.push({ type_: " / " }) : e.push({ type_: "/" }), L.concatArray(e, n.q)); + } else + e = L.go(t37.d, "pu-2"); + for (var o in t37) + delete t37[o]; + return e; +} } }, "pu-2": { transitions: L.createTransitions({ empty: { "*": { action_: "output" } }, "*": { "*": { action_: ["output", "cdot"], nextState: "0" } }, "\\x": { "*": { action_: "rm=" } }, space: { "*": { action_: ["output", "space"], nextState: "0" } }, "^{(...)}|^(-1)": { 1: { action_: "^(-1)" } }, "-9.,9": { 0: { action_: "rm=", nextState: "0" }, 1: { action_: "^(-1)", nextState: "0" } }, "{...}|else": { "*": { action_: "rm=", nextState: "1" } } }), actions: { cdot: function() { + return { type_: "tight cdot" }; +}, "^(-1)": function(t37, e) { + t37.rm += "^{" + e + "}"; +}, space: function() { + return { type_: "pu-space-2" }; +}, output: function(t37) { + var e = []; + if (t37.rm) { + var r = L.patterns.match_("{(...)}", t37.rm || ""); + r && r.remainder === "" ? e = L.go(r.match_, "pu") : e = { type_: "rm", p1: t37.rm }; + } + for (var i in t37) + delete t37[i]; + return e; +} } }, "pu-9,9": { transitions: L.createTransitions({ empty: { 0: { action_: "output-0" }, o: { action_: "output-o" } }, ",": { 0: { action_: ["output-0", "comma"], nextState: "o" } }, ".": { 0: { action_: ["output-0", "copy"], nextState: "o" } }, else: { "*": { action_: "text=" } } }), actions: { comma: function() { + return { type_: "commaDecimal" }; +}, "output-0": function(t37) { + var e = []; + if (t37.text_ = t37.text_ || "", t37.text_.length > 4) { + var r = t37.text_.length % 3; + r === 0 && (r = 3); + for (var i = t37.text_.length - 3; i > 0; i -= 3) + e.push(t37.text_.substr(i, 3)), e.push({ type_: "1000 separator" }); + e.push(t37.text_.substr(0, r)), e.reverse(); + } else + e.push(t37.text_); + for (var n in t37) + delete t37[n]; + return e; +}, "output-o": function(t37) { + var e = []; + if (t37.text_ = t37.text_ || "", t37.text_.length > 4) { + for (var r = t37.text_.length - 3, i = 0; i < r; i += 3) + e.push(t37.text_.substr(i, 3)), e.push({ type_: "1000 separator" }); + e.push(t37.text_.substr(i)); + } else + e.push(t37.text_); + for (var n in t37) + delete t37[n]; + return e; +} } } }; +var re = { go: function(t37, e) { + if (!t37) + return ""; + for (var r = "", i = false, n = 0; n < t37.length; n++) { + var o = t37[n]; + typeof o == "string" ? r += o : (r += re._go2(o), o.type_ === "1st-level escape" && (i = true)); + } + return !e && !i && r && (r = "{" + r + "}"), r; +}, _goInner: function(t37) { + return t37 && re.go(t37, true); +}, _go2: function(t37) { + var e; + switch (t37.type_) { + case "chemfive": + e = ""; + var r = { a: re._goInner(t37.a), b: re._goInner(t37.b), p: re._goInner(t37.p), o: re._goInner(t37.o), q: re._goInner(t37.q), d: re._goInner(t37.d) }; + r.a && (r.a.match(/^[+\-]/) && (r.a = "{" + r.a + "}"), e += r.a + "\\,"), (r.b || r.p) && (e += "{\\vphantom{X}}", e += "^{\\hphantom{" + (r.b || "") + "}}_{\\hphantom{" + (r.p || "") + "}}", e += "{\\vphantom{X}}", e += "^{\\smash[t]{\\vphantom{2}}\\llap{" + (r.b || "") + "}}", e += "_{\\vphantom{2}\\llap{\\smash[t]{" + (r.p || "") + "}}}"), r.o && (r.o.match(/^[+\-]/) && (r.o = "{" + r.o + "}"), e += r.o), t37.dType === "kv" ? ((r.d || r.q) && (e += "{\\vphantom{X}}"), r.d && (e += "^{" + r.d + "}"), r.q && (e += "_{\\smash[t]{" + r.q + "}}")) : t37.dType === "oxidation" ? (r.d && (e += "{\\vphantom{X}}", e += "^{" + r.d + "}"), r.q && (e += "{\\vphantom{X}}", e += "_{\\smash[t]{" + r.q + "}}")) : (r.q && (e += "{\\vphantom{X}}", e += "_{\\smash[t]{" + r.q + "}}"), r.d && (e += "{\\vphantom{X}}", e += "^{" + r.d + "}")); + break; + case "rm": + e = "\\mathrm{" + t37.p1 + "}"; + break; + case "text": + t37.p1.match(/[\^_]/) ? (t37.p1 = t37.p1.replace(" ", "~").replace("-", "\\text{-}"), e = "\\mathrm{" + t37.p1 + "}") : e = "\\text{" + t37.p1 + "}"; + break; + case "roman numeral": + e = "\\mathrm{" + t37.p1 + "}"; + break; + case "state of aggregation": + e = "\\mskip2mu " + re._goInner(t37.p1); + break; + case "state of aggregation subscript": + e = "\\mskip1mu " + re._goInner(t37.p1); + break; + case "bond": + if (e = re._getBond(t37.kind_), !e) + throw ["MhchemErrorBond", "mhchem Error. Unknown bond type (" + t37.kind_ + ")"]; + break; + case "frac": + var i = "\\frac{" + t37.p1 + "}{" + t37.p2 + "}"; + e = "\\mathchoice{\\textstyle" + i + "}{" + i + "}{" + i + "}{" + i + "}"; + break; + case "pu-frac": + var n = "\\frac{" + re._goInner(t37.p1) + "}{" + re._goInner(t37.p2) + "}"; + e = "\\mathchoice{\\textstyle" + n + "}{" + n + "}{" + n + "}{" + n + "}"; + break; + case "tex-math": + e = t37.p1 + " "; + break; + case "frac-ce": + e = "\\frac{" + re._goInner(t37.p1) + "}{" + re._goInner(t37.p2) + "}"; + break; + case "overset": + e = "\\overset{" + re._goInner(t37.p1) + "}{" + re._goInner(t37.p2) + "}"; + break; + case "underset": + e = "\\underset{" + re._goInner(t37.p1) + "}{" + re._goInner(t37.p2) + "}"; + break; + case "underbrace": + e = "\\underbrace{" + re._goInner(t37.p1) + "}_{" + re._goInner(t37.p2) + "}"; + break; + case "color": + e = "{\\color{" + t37.color1 + "}{" + re._goInner(t37.color2) + "}}"; + break; + case "color0": + e = "\\color{" + t37.color + "}"; + break; + case "arrow": + var o = { rd: re._goInner(t37.rd), rq: re._goInner(t37.rq) }, a = re._getArrow(t37.r); + o.rd || o.rq ? t37.r === "<=>" || t37.r === "<=>>" || t37.r === "<<=>" || t37.r === "<-->" ? (a = "\\long" + a, o.rd && (a = "\\overset{" + o.rd + "}{" + a + "}"), o.rq && (t37.r === "<-->" ? a = "\\underset{\\lower2mu{" + o.rq + "}}{" + a + "}" : a = "\\underset{\\lower6mu{" + o.rq + "}}{" + a + "}"), a = " {}\\mathrel{" + a + "}{} ") : (o.rq && (a += "[{" + o.rq + "}]"), a += "{" + o.rd + "}", a = " {}\\mathrel{\\x" + a + "}{} ") : a = " {}\\mathrel{\\long" + a + "}{} ", e = a; + break; + case "operator": + e = re._getOperator(t37.kind_); + break; + case "1st-level escape": + e = t37.p1 + " "; + break; + case "space": + e = " "; + break; + case "entitySkip": + e = "~"; + break; + case "pu-space-1": + e = "~"; + break; + case "pu-space-2": + e = "\\mkern3mu "; + break; + case "1000 separator": + e = "\\mkern2mu "; + break; + case "commaDecimal": + e = "{,}"; + break; + case "comma enumeration L": + e = "{" + t37.p1 + "}\\mkern6mu "; + break; + case "comma enumeration M": + e = "{" + t37.p1 + "}\\mkern3mu "; + break; + case "comma enumeration S": + e = "{" + t37.p1 + "}\\mkern1mu "; + break; + case "hyphen": + e = "\\text{-}"; + break; + case "addition compound": + e = "\\,{\\cdot}\\,"; + break; + case "electron dot": + e = "\\mkern1mu \\bullet\\mkern1mu "; + break; + case "KV x": + e = "{\\times}"; + break; + case "prime": + e = "\\prime "; + break; + case "cdot": + e = "\\cdot "; + break; + case "tight cdot": + e = "\\mkern1mu{\\cdot}\\mkern1mu "; + break; + case "times": + e = "\\times "; + break; + case "circa": + e = "{\\sim}"; + break; + case "^": + e = "uparrow"; + break; + case "v": + e = "downarrow"; + break; + case "ellipsis": + e = "\\ldots "; + break; + case "/": + e = "/"; + break; + case " / ": + e = "\\,/\\,"; + break; + default: + throw ["MhchemBugT", "mhchem bug T. Please report."]; + } + return e; +}, _getArrow: function(t37) { + switch (t37) { + case "->": + return "rightarrow"; + case "\u2192": + return "rightarrow"; + case "\u27F6": + return "rightarrow"; + case "<-": + return "leftarrow"; + case "<->": + return "leftrightarrow"; + case "<-->": + return "leftrightarrows"; + case "<=>": + return "rightleftharpoons"; + case "\u21CC": + return "rightleftharpoons"; + case "<=>>": + return "Rightleftharpoons"; + case "<<=>": + return "Leftrightharpoons"; + default: + throw ["MhchemBugT", "mhchem bug T. Please report."]; + } +}, _getBond: function(t37) { + switch (t37) { + case "-": + return "{-}"; + case "1": + return "{-}"; + case "=": + return "{=}"; + case "2": + return "{=}"; + case "#": + return "{\\equiv}"; + case "3": + return "{\\equiv}"; + case "~": + return "{\\tripledash}"; + case "~-": + return "{\\rlap{\\lower.1em{-}}\\raise.1em{\\tripledash}}"; + case "~=": + return "{\\rlap{\\lower.2em{-}}\\rlap{\\raise.2em{\\tripledash}}-}"; + case "~--": + return "{\\rlap{\\lower.2em{-}}\\rlap{\\raise.2em{\\tripledash}}-}"; + case "-~-": + return "{\\rlap{\\lower.2em{-}}\\rlap{\\raise.2em{-}}\\tripledash}"; + case "...": + return "{{\\cdot}{\\cdot}{\\cdot}}"; + case "....": + return "{{\\cdot}{\\cdot}{\\cdot}{\\cdot}}"; + case "->": + return "{\\rightarrow}"; + case "<-": + return "{\\leftarrow}"; + case "<": + return "{<}"; + case ">": + return "{>}"; + default: + throw ["MhchemBugT", "mhchem bug T. Please report."]; + } +}, _getOperator: function(t37) { + switch (t37) { + case "+": + return " {}+{} "; + case "-": + return " {}-{} "; + case "=": + return " {}={} "; + case "<": + return " {}<{} "; + case ">": + return " {}>{} "; + case "<<": + return " {}\\ll{} "; + case ">>": + return " {}\\gg{} "; + case "\\pm": + return " {}\\pm{} "; + case "\\approx": + return " {}\\approx{} "; + case "$\\approx$": + return " {}\\approx{} "; + case "v": + return " \\downarrow{} "; + case "(v)": + return " \\downarrow{} "; + case "^": + return " \\uparrow{} "; + case "(^)": + return " \\uparrow{} "; + default: + throw ["MhchemBugT", "mhchem bug T. Please report."]; + } +} }; +var Ui = class t18 extends y { + constructor(e) { + super(g(p({}, e), { type: "delim" })), this.value = e.delim, this.size = e.size; + } + static fromJson(e) { + return new t18(e); + } + toJson() { + return g(p({}, super.toJson()), { delim: this.value, size: this.size }); + } + render(e) { + return new w(this.value, { type: "middle" }); + } + _serialize(e) { + if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") + return this.verbatimLatex; + let r = ee(this.command, this.mode); + return r != null && r.serialize ? r.serialize(this, e) : I(this.command, this.value); + } +}; +var Ji = class t19 extends y { + constructor(e) { + super(g(p({}, e), { type: "sizeddelim", value: e.delim })), this.delimType = e.delimType, this.size = e.size; + } + static fromJson(e) { + return new t19(e); + } + toJson() { + return g(p({}, super.toJson()), { delim: this.value, size: this.size, delimType: this.delimType }); + } + render(e) { + let r = rm(this.value, this.size, e, { classes: { open: "ML__open", close: "ML__close" }[this.delimType], type: this.delimType, isSelected: this.isSelected }); + return r ? (r = this.bind(e, r), this.caret && (r.caret = this.caret), r) : null; + } + _serialize(e) { + if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") + return this.verbatimLatex; + let r = ee(this.command, this.mode); + return r != null && r.serialize ? r.serialize(this, e) : I(this.command, this.value); + } +}; +var Ut = class t20 extends y { + constructor(e, r, i, n) { + var o, a; + super({ type: "enclose", command: e, style: n.style }), this.body = r, this.backgroundcolor = n.backgroundcolor, i.updiagonalarrow && (i.updiagonalstrike = false), i.box && (i.left = false, i.right = false, i.bottom = false, i.top = false), this.notation = i, this.shadow = (o = n.shadow) != null ? o : "none", this.strokeWidth = (a = n.strokeWidth) != null ? a : "0.06em", this.strokeWidth || (this.strokeWidth = "0.06em"), this.strokeStyle = n.strokeStyle, this.svgStrokeStyle = n.svgStrokeStyle, this.strokeColor = n.strokeColor, this.borderStyle = n.borderStyle, this.padding = n.padding, this.captureSelection = false; + } + static fromJson(e) { + return new t20(e.command, e.body, e.notation, e); + } + toJson() { + return g(p({}, super.toJson()), { notation: this.notation, shadow: this.shadow, strokeWidth: this.strokeWidth, strokeStyle: this.strokeStyle, svgStrokeStyle: this.svgStrokeStyle, strokeColor: this.strokeColor, borderStyle: this.borderStyle, padding: this.padding }); + } + _serialize(e) { + var n; + if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") + return this.verbatimLatex; + let r = ee(this.command, this.mode); + if (r != null && r.serialize) + return r.serialize(this, e); + let i = (n = this.command) != null ? n : ""; + if (this.command === "\\enclose") { + i += "{" + Object.keys(this.notation).join(" ") + "}"; + let o = "", a = ""; + this.backgroundcolor && this.backgroundcolor !== "transparent" && (o += a + 'mathbackground="' + this.backgroundcolor + '"', a = ","), this.shadow && this.shadow !== "auto" && (o += a + 'shadow="' + this.shadow + '"', a = ","), this.strokeWidth || this.strokeStyle !== "solid" ? (o += a + this.borderStyle, a = ",") : this.strokeColor && this.strokeColor !== "currentColor" && (o += a + 'mathcolor="' + this.strokeColor + '"', a = ","), o && (i += `[${o}]`); + } + return I(i, this.bodyToLatex(e)); + } + render(e) { + let r = new T({ parent: e }, this.style), i = y.createBox(r, this.body); + if (!i) + return null; + let n = Yh(this.borderStyle), o = r.toEm(!this.padding || this.padding === "auto" ? { register: "fboxsep" } : { string: this.padding }); + i.setStyle("position", "relative"), i.setStyle("display", "inline-block"), i.setStyle("top", o, "em"), i.setStyle("height", i.height + i.depth, "em"), i.setStyle("width", i.width, "em"); + let a = new w(null, { classes: "ML__notation" }), s = i.height + i.depth + 2 * o, l = i.width + 2 * o, c = ""; + if (this.notation.horizontalstrike && (c += this.line(3, 50, 97, 50)), this.notation.verticalstrike && (c += this.line(50, 3, 50, 97)), this.notation.updiagonalstrike && (c += this.line(3, 97, 97, 3)), this.notation.downdiagonalstrike && (c += this.line(3, 3, 97, 97)), this.notation.updiagonalarrow) { + c += this.line(o.toString(), (o + i.depth + i.height).toString(), (o + i.width).toString(), o.toString()); + let f = 0.03 * Math.sqrt(l * l + s * s) * 1, b = i.width * f, S = (i.depth + i.height) * f, M = o + i.width, x = o; + x + S - 0.4 * b < 0 && (x = 0.4 * b - S), c += '`; + } +}; +function Da(t37) { + return typeof t37 == "number" ? `${Math.floor(100 * t37) / 100}%` : t37; +} +function Yh(t37) { + if (!t37) + return "1px"; + let e = t37.match(/([0-9][a-zA-Z\%]+)/); + return e === null ? "1px" : e[1]; +} +function Qh(t37) { + return (Math.floor(100 * t37.metrics.sqrtRuleThickness / t37.scalingFactor) / 100 / 10).toString() + "em"; +} +function um(t37) { + let e = t37.isDisplayStyle ? $e : t37.metrics.defaultRuleThickness; + return t37.metrics.defaultRuleThickness + t37.scalingFactor * e / 4; +} +var it = class t21 extends y { + constructor(e, r, i) { + var n, o, a; + super(g(p({}, i), { type: "genfrac", displayContainsHighlight: true })), this.above = e, this.below = r, this.hasBarLine = (n = i == null ? void 0 : i.hasBarLine) != null ? n : true, this.continuousFraction = (o = i == null ? void 0 : i.continuousFraction) != null ? o : false, this.align = (a = i == null ? void 0 : i.align) != null ? a : "center", this.numerPrefix = i == null ? void 0 : i.numerPrefix, this.denomPrefix = i == null ? void 0 : i.denomPrefix, this.mathstyleName = i == null ? void 0 : i.mathstyleName, this.leftDelim = i == null ? void 0 : i.leftDelim, this.rightDelim = i == null ? void 0 : i.rightDelim, this.fractionNavigationOrder = i == null ? void 0 : i.fractionNavigationOrder; + } + static fromJson(e) { + return new t21(e.above, e.below, e); + } + toJson() { + let e = {}; + return this.continuousFraction && (e.continuousFraction = true), this.align !== "center" && (e.align = this.align), this.numerPrefix && (e.numerPrefix = this.numerPrefix), this.denomPrefix && (e.denomPrefix = this.denomPrefix), this.leftDelim && (e.leftDelim = this.leftDelim), this.rightDelim && (e.rightDelim = this.rightDelim), this.hasBarLine || (e.hasBarLine = false), this.mathstyleName && (e.mathstyleName = this.mathstyleName), this.fractionNavigationOrder && (e.fractionNavigationOrder = this.fractionNavigationOrder), p(p({}, super.toJson()), e); + } + get children() { + if (this._children) + return this._children; + let e = []; + if (this.fractionNavigationOrder === "denominator-numerator") { + for (let r of this.below) + e.push(...r.children), e.push(r); + for (let r of this.above) + e.push(...r.children), e.push(r); + } else { + for (let r of this.above) + e.push(...r.children), e.push(r); + for (let r of this.below) + e.push(...r.children), e.push(r); + } + return this._children = e, e; + } + render(e) { + var C, q; + let r = new T({ parent: e, mathstyle: this.mathstyleName }, this.style), i = r.metrics, n = new T({ parent: r, mathstyle: this.continuousFraction ? "" : "numerator" }, this.style), o = this.numerPrefix ? new w([new w(this.numerPrefix), y.createBox(n, this.above)], { isTight: n.isTight, type: "ignore" }) : (C = y.createBox(n, this.above, { type: "ignore" })) != null ? C : new w(null, { type: "ignore" }), a = new T({ parent: r, mathstyle: this.continuousFraction ? "" : "denominator" }, this.style), s = this.denomPrefix ? new w([new w(this.denomPrefix), y.createBox(a, this.below, { type: "ignore" })]) : (q = y.createBox(a, this.below, { type: "ignore" })) != null ? q : new w(null, { type: "ignore" }), l = this.hasBarLine ? i.defaultRuleThickness : 0, c, u = 0, d; + r.isDisplayStyle ? (c = n.metrics.num1, u = l > 0 ? 3 * l : 7 * l, d = a.metrics.denom1) : (l > 0 ? (c = n.metrics.num2, u = l) : (c = n.metrics.num3, u = 3 * i.defaultRuleThickness), d = a.metrics.denom2); + let m = []; + this.isSelected && m.push("ML__selected"); + let h = o.depth, f = s.height, b; + if (l <= 0) { + let B = c - h - (f - d); + B < u && (c += (u - B) / 2, d += (u - B) / 2), b = new U({ individualShift: [{ box: o, shift: -c, classes: [...m, Ka(this.align)] }, { box: s, shift: d, classes: [...m, Ka(this.align)] }] }).wrap(r); + } else { + let B = new w(null, { classes: "ML__frac-line", mode: this.mode, style: this.style }); + B.softWidth = Math.max(o.width, s.width), B.height = l / 2, B.depth = l / 2; + let D = Ae + l / 2; + c < u + h + D && (c = u + h + D); + let J = Ae - l / 2; + d < u + f - J && (d = u + f - J), b = new U({ individualShift: [{ box: s, shift: d, classes: [...m, Ka(this.align)] }, { box: B, shift: -J, classes: m }, { box: o, shift: -c, classes: [...m, Ka(this.align)] }] }).wrap(r); + } + let S = r.isDisplayStyle ? i.delim1 : i.delim2, M = this.leftDelim ? this.bind(e, Fi("open", this.leftDelim, S, true, e, { style: this.style, mode: this.mode, isSelected: this.isSelected })) : Ht(r, "ML__open"), x = null; + this.continuousFraction ? x = new w(null, { type: "close" }) : this.rightDelim ? x = this.bind(e, Fi("close", this.rightDelim, S, true, e, { style: this.style, mode: this.mode, isSelected: this.isSelected })) : x = Ht(r, "ML__close"); + let v = new w([M, b, x], { isTight: r.isTight, type: "inner", classes: "ML__mfrac" }), k = this.bind(e, v); + return this.caret && (k.caret = this.caret), this.attachSupsub(e, { base: k }); + } +}; +function Ka(t37) { + var e; + return (e = { left: "ML__left", right: "ML__right", center: "ML__center" }[t37]) != null ? e : "ML__center"; +} +var ie = class t22 extends y { + constructor(e, r) { + var i; + super({ type: "latex", value: e, mode: "latex" }), this.isSuggestion = (i = r == null ? void 0 : r.isSuggestion) != null ? i : false, this.isError = false; + } + static fromJson(e) { + let r = new t22(e.value); + return e.isSuggestion && (r.isSuggestion = true), e.isError && (r.isError = true), r; + } + toJson() { + let e = {}; + return this.isSuggestion && (e.isSuggestion = true), this.isError && (e.isError = true), p({ type: "latex", value: this.value }, e); + } + render(e) { + let r = new w(this.value, { classes: this.isSuggestion ? "ML__suggestion" : this.isError ? "ML__error" : "", type: "latex", maxFontSize: 1 }); + return r ? (this.caret && (r.caret = this.caret), this.bind(e, r)) : null; + } +}; +var Ct = class t23 extends y { + constructor(e = "") { + super({ type: "latexgroup", mode: "latex" }), this.body = [...e].map((r) => new ie(r)), this.skipBoundary = true; + } + static fromJson(e) { + return new t23(); + } + toJson() { + return super.toJson(); + } + render(e) { + let r = y.createBox(e, this.body); + return r ? (this.caret && (r.caret = this.caret), this.bind(e, r)) : null; + } + _serialize(e) { + var r, i; + return (i = (r = this.body) == null ? void 0 : r.map((n) => n.value).join("")) != null ? i : ""; + } +}; +var Ur = class t24 extends y { + constructor(e, r) { + super(g(p({}, r), { type: "extensible-symbol", isFunction: r == null ? void 0 : r.isFunction })), this.value = e, this.variant = r == null ? void 0 : r.variant, this.subsupPlacement = r == null ? void 0 : r.limits; + } + static fromJson(e) { + return new t24(e.symbol, e); + } + toJson() { + let e = super.toJson(); + return this.variant && (e.variant = this.variant), this.subsupPlacement && (e.limits = this.subsupPlacement), this.value && (e.symbol = this.value), e; + } + render(e) { + var s; + let r = e.isDisplayStyle && this.value !== "\\smallint", i = new w(this.value, { fontFamily: r ? "Size2-Regular" : "Size1-Regular", classes: "ML__op-symbol " + (r ? "ML__large-op" : "ML__small-op"), type: "op", maxFontSize: e.scalingFactor, isSelected: this.isSelected }); + if (!i) + return null; + i.right = i.italic; + let n = (i.height - i.depth) / 2 - Ae * e.scalingFactor, o = i.italic; + i.setTop(n); + let a = i; + if (this.superscript || this.subscript) { + let l = (s = this.subsupPlacement) != null ? s : "auto"; + l === "auto" && e.isDisplayStyle && (l = "over-under"), a = l === "over-under" ? this.attachLimits(e, { base: i, baseShift: n, slant: o }) : this.attachSupsub(e, { base: i }); + } + return new w(this.bind(e, a), { type: "op", caret: this.caret, isSelected: this.isSelected, classes: "ML__op-group" }).wrap(e); + } + _serialize(e) { + if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") + return this.verbatimLatex; + let r = ee(this.command, this.mode); + if (r != null && r.serialize) + return r.serialize(this, e); + let i = []; + return i.push(this.command), this.explicitSubsupPlacement && (this.subsupPlacement === "over-under" && i.push("\\limits"), this.subsupPlacement === "adjacent" && i.push("\\nolimits"), this.subsupPlacement === "auto" && i.push("\\displaylimits")), i.push(this.supsubToLatex(e)), K(i); + } +}; +var nt = class t25 extends y { + constructor(e) { + let r = e.body; + super(g(p({}, e), { type: "overlap", body: typeof r == "string" ? [new y({ value: r })] : r, style: e == null ? void 0 : e.style })), this.skipBoundary = true, this.align = e == null ? void 0 : e.align, this.boxType = e == null ? void 0 : e.boxType; + } + static fromJson(e) { + return new t25(e); + } + toJson() { + let e = {}; + return this.align && (e.align = this.align), this.boxType && (e.boxType = this.boxType), p(p({}, super.toJson()), e); + } + render(e) { + let r = y.createBox(e, this.body, { classes: "ML__inner" }); + return r ? (this.caret && (r.caret = this.caret), this.bind(e, new w([r, new w(null, { classes: "ML__fix" })], { classes: this.align === "right" ? "ML__rlap" : "ML__llap", type: this.boxType }))) : null; + } +}; +var ye = class t26 extends y { + constructor(e) { + var r, i, n, o; + super({ type: "overunder", command: e.command, style: e.style, mode: e.mode, body: e.body, skipBoundary: (r = e.skipBoundary) != null ? r : true }), this.subsupPlacement = e.supsubPlacement, this.svgAbove = e.svgAbove, this.svgBelow = e.svgBelow, this.svgBody = e.svgBody, this.above = e.above, this.below = e.below, this.boxType = (i = e.boxType) != null ? i : "ord", this.paddedBody = (n = e.paddedBody) != null ? n : false, this.paddedLabels = (o = e.paddedLabels) != null ? o : false; + } + static fromJson(e) { + return new t26(e); + } + toJson() { + let e = super.toJson(); + return this.skipBoundary || (e.skipBoundary = false), this.subsupPlacement && (e.subsupPlacement = this.subsupPlacement), this.svgAbove && (e.svgAbove = this.svgAbove), this.svgBelow && (e.svgBelow = this.svgBelow), this.svgBody && (e.svgBody = this.svgBody), this.boxType !== "ord" && (e.boxType = this.boxType), this.paddedBody && (e.paddedBody = true), this.paddedLabels && (e.paddedLabels = true), e; + } + render(e) { + let r = this.svgBody ? Bi(this.svgBody) : y.createBox(e, this.body, { type: "ignore" }), i = new T({ parent: e, mathstyle: "scriptstyle" }, this.style), n = null; + this.svgAbove ? n = Bi(this.svgAbove) : this.above && (n = y.createBox(i, this.above, { type: "ignore" })); + let o = null; + this.svgBelow ? o = Bi(this.svgBelow) : this.below && (o = y.createBox(i, this.below, { type: "ignore" })), this.paddedBody && (r = new w([Ht(e, "ML__open"), r, Ht(e, "ML__close")], { type: "ignore" })); + let a = ef(e, { base: r, above: n, below: o, type: this.boxType === "bin" || this.boxType === "rel" ? this.boxType : "ord", paddedAboveBelow: this.paddedLabels }); + return a ? (this.subsupPlacement === "over-under" ? a = this.attachLimits(e, { base: a, type: a.type }) : a = this.attachSupsub(e, { base: a }), this.caret && (a.caret = this.caret), this.bind(e, a)) : null; + } +}; +function ef(t37, e) { + if (!e.base) + return null; + if (!e.above && !e.below) { + let s = new w(e.base, { type: e.type }); + return s.setStyle("position", "relative"), s; + } + let r = 0; + e.above && (r = t37.metrics.bigOpSpacing5); + let i = null, n = e.base, o = 0, a = ["ML__center"]; + if (e.paddedAboveBelow && a.push("ML__label_padding"), e.below && e.above) { + let s = t37.metrics.bigOpSpacing5 + e.below.height + e.below.depth + n.depth + o; + i = new U({ bottom: s, children: [t37.metrics.bigOpSpacing5, { box: e.below, classes: a }, { box: n, classes: ["ML__center"] }, r, { box: e.above, classes: a }, t37.metrics.bigOpSpacing5] }); + } else + e.below ? i = new U({ top: n.height - o, children: [t37.metrics.bigOpSpacing5, { box: e.below, classes: a }, { box: n, classes: ["ML__center"] }] }) : e.above && (i = new U({ bottom: n.depth + o, children: [{ box: n, classes: ["ML__center"] }, r, { box: e.above, classes: a }, t37.metrics.bigOpSpacing5] })); + return new w(i, { type: e.type }); +} +var Jt = class t27 extends y { + constructor(e) { + var r, i, n, o; + super(g(p({}, e), { type: "phantom" })), this.captureSelection = true, this.isInvisible = (r = e.isInvisible) != null ? r : false, this.smashDepth = (i = e.smashDepth) != null ? i : false, this.smashHeight = (n = e.smashHeight) != null ? n : false, this.smashWidth = (o = e.smashWidth) != null ? o : false; + } + static fromJson(e) { + return new t27(e); + } + toJson() { + let e = {}; + return this.isInvisible && (e.isInvisible = true), this.smashDepth && (e.smashDepth = true), this.smashHeight && (e.smashHeight = true), this.smashWidth && (e.smashWidth = true), p(p({}, super.toJson()), e); + } + render(e) { + let r = new T({ parent: e, isPhantom: true }); + if (!this.smashDepth && !this.smashHeight && !this.smashWidth) + return this.isInvisible, y.createBox(r, this.body, { classes: "ML__inner" }); + let i = y.createBox(this.isInvisible ? r : e, this.body); + if (!i) + return null; + if (this.smashWidth) { + let n = new w(null, { classes: "ML__fix" }); + return new w([i, n], { classes: "ML__rlap" }).wrap(e); + } + if (!this.smashHeight && !this.smashDepth) + return i; + if (this.smashHeight && (i.height = 0), this.smashDepth && (i.depth = 0), i.children) + for (let n of i.children) + this.smashHeight && (n.height = 0), this.smashDepth && (n.depth = 0); + return new U({ firstBaseline: [{ box: i }] }, { type: i.type }).wrap(e); + } +}; +var Et = class t28 extends y { + constructor(e) { + var r; + super(p({ type: "spacing" }, e)), this.width = e == null ? void 0 : e.width, this._braced = (r = e == null ? void 0 : e.braced) != null ? r : false; + } + static fromJson(e) { + return new t28(e); + } + toJson() { + let e = super.toJson(); + return this.width !== void 0 && (e.width = this.width), this._braced && (e.braced = true), e; + } + render(e) { + var i; + if (this.command === "space") + return new w(this.mode === "math" ? null : " "); + let r; + if (this.width !== void 0) + r = new w(null, { classes: "ML__mspace" }), r.left = e.toEm(this.width); + else { + let n = (i = { "\\qquad": "ML__qquad", "\\quad": "ML__quad", "\\enspace": "ML__enspace", "\\;": "ML__thickspace", "\\:": "ML__mediumspace", "\\>": "ML__mediumspace", "\\,": "ML__thinspace", "\\!": "ML__negativethinspace" }[this.command]) != null ? i : "ML__mediumspace"; + r = new w(null, { classes: n }); + } + return r = this.bind(e, r), this.caret && (r.caret = this.caret), r; + } + _serialize(e) { + var n; + if (!e.expandMacro && typeof this.verbatimLatex == "string") + return this.verbatimLatex; + let r = ee(this.command, this.mode); + if (r != null && r.serialize) + return r.serialize(this, e); + let i = (n = this.command) != null ? n : ""; + return this.width === void 0 ? i : this._braced && !("register" in this.width) ? `${i}{${ue(this.width)}}` : `${i}${ue(this.width)}`; + } +}; +var Gi = class t29 extends y { + constructor(e) { + var r; + super(g(p({}, e), { type: "surd", mode: (r = e.mode) != null ? r : "math", style: e.style, displayContainsHighlight: true, body: e.body })), this.above = e.index; + } + static fromJson(e) { + return new t29(g(p({}, e), { index: e.above })); + } + _serialize(e) { + if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") + return this.verbatimLatex; + let r = ee(this.command, this.mode); + if (r != null && r.serialize) + return r.serialize(this, e); + let i = this.command, n = this.bodyToLatex(e); + return this.above && !this.hasEmptyBranch("above") ? I(`${i}[${this.aboveToLatex(e)}]`, n) : /^[0-9]$/.test(n) ? `${i}${n}` : I(i, n); + } + get children() { + if (this._children) + return this._children; + let e = []; + if (this.above) + for (let r of this.above) + e.push(...r.children), e.push(r); + if (this.body) + for (let r of this.body) + e.push(...r.children), e.push(r); + return this._children = e, e; + } + render(e) { + var x; + let r = new T({ parent: e, mathstyle: "cramp" }, this.style), i = (x = y.createBox(r, this.body, { type: "inner" })) != null ? x : new w(null), n = r.scalingFactor, o = r.metrics.defaultRuleThickness / n, a = e.isDisplayStyle ? $e : o, s = new w(null, { classes: "ML__sqrt-line", style: this.style }); + s.height = o, s.softWidth = i.width; + let l = n * (o + a / 4), u = Math.max(n * 2 * a, i.height + i.depth) + l + o, d = new T({ parent: e }, this.style), m = this.bind(d, new w(Fi("inner", "\\surd", u, false, d, { isSelected: this.isSelected }), { isSelected: this.isSelected, classes: "ML__sqrt-sign", style: this.style })); + if (!m) + return null; + let h = m.height + m.depth - o; + h > i.height + i.depth + l && (l = (l + h - (i.height + i.depth)) / 2), m.setTop(m.height - i.height - l); + let f = this.bind(e, new U({ firstBaseline: [{ box: new w(i) }, l - 2 * o, { box: s }, o] })), b = y.createBox(new T({ parent: e, mathstyle: "scriptscriptstyle" }), this.above, { type: "ignore" }); + if (!b) { + let v = new w([m, f], { classes: this.containsCaret ? "ML__contains-caret" : "", type: "inner" }); + return v.setStyle("display", "inline-block"), v.setStyle("height", v.height + v.depth, "em"), this.caret && (v.caret = this.caret), this.bind(e, v); + } + let S = new U({ shift: -0.6 * (Math.max(m.height, f.height) - Math.max(m.depth, f.depth)), children: [{ box: b }] }), M = new w([new w(S, { classes: "ML__sqrt-index", type: "ignore" }), m, f], { type: "inner", classes: this.containsCaret ? "ML__contains-caret" : "" }); + return M.height = m.height, M.depth = m.depth, this.caret && (M.caret = this.caret), this.bind(e, M); + } +}; +var _l = class extends w { + constructor(e) { + super(null, { type: "skip" }), this._width = e; + } + toMarkup() { + return ``; + } +}; +function Fn(t37, e) { + if (!t37.parent) + return; + let r = t37.parent.children, i = r.indexOf(t37), n = i - 1; + for (; n >= 0 && r[n].type === "ignore"; ) + n -= 1; + if (n < 0 && t37.parent.parent && t37.parent.type === "lift") { + Fn(t37.parent, e); + return; + } + i > 0 && r[i - 1].type === "skip" ? r[i - 1].width += e : r.splice(i, 0, new _l(e)); +} +var tf = { ord: { op: 3, bin: 4, rel: 5, inner: 3 }, op: { ord: 3, op: 3, rel: 5, inner: 3 }, bin: { ord: 4, op: 4, open: 4, inner: 4 }, rel: { ord: 5, op: 5, open: 5, inner: 5 }, close: { op: 3, bin: 4, rel: 5, inner: 3 }, punct: { ord: 3, op: 3, rel: 3, open: 3, punct: 3, inner: 3 }, inner: { ord: 3, op: 3, bin: 4, rel: 5, open: 3, punct: 3, inner: 3 } }; +var rf = { ord: { op: 3 }, op: { ord: 3, op: 3 }, close: { op: 3 }, inner: { op: 3 } }; +function nf(t37) { + $n(t37, (e, r) => { + r.type === "bin" && (!e || /^(middle|bin|op|rel|open|punct)$/.test(e.type)) && (r.type = "ord"), (e == null ? void 0 : e.type) === "bin" && /^(rel|close|punct)$/.test(r.type) && (e.type = "ord"), r.type !== "ignore" && (e = r); + }); +} +function Tt(t37, e) { + if (!t37.children) + return t37; + let r = t37.children; + nf(r); + let i = e.getRegisterAsEm("thinmuskip"), n = e.getRegisterAsEm("medmuskip"), o = e.getRegisterAsEm("thickmuskip"); + return $n(r, (a, s) => { + var d, m, h; + if (!a) + return; + let l = a.type, c = s.isTight ? (d = rf[l]) != null ? d : null : (m = tf[l]) != null ? m : null, u = (h = c == null ? void 0 : c[s.type]) != null ? h : null; + u === 3 && Fn(s, i), u === 4 && Fn(s, n), u === 5 && Fn(s, o); + }), t37; +} +function $n(t37, e, r = void 0) { + if (!t37) + return r; + t37 = [...t37]; + for (let i of t37) + i.type === "lift" ? r = $n(i.children, e, r) : i.type === "ignore" ? $n(i.children, e) : (e(r, i), $n(i.children, e), r = i); + return r; +} +var Jr = class t30 extends y { + constructor(e) { + super({ type: "tooltip", command: e.command, mode: e.mode, style: e.style, body: e.body, displayContainsHighlight: true }), this.tooltip = new y({ type: "root", mode: e.content, body: e.tooltip, style: {} }), this.skipBoundary = true, this.captureSelection = false; + } + static fromJson(e) { + return new t30(g(p({}, e), { tooltip: ot(e.tooltip) })); + } + toJson() { + var r; + let e = (r = this.tooltip.body) == null ? void 0 : r.filter((i) => i.type !== "first").map((i) => i.toJson()); + return g(p({}, super.toJson()), { tooltip: e }); + } + render(e) { + let r = y.createBox(new T(), this.body); + if (!r) + return null; + let i = new T({ parent: e, mathstyle: "displaystyle" }, { fontSize: Di }), n = dr(Tt(new w(this.tooltip.render(i), { classes: "ML__tooltip-content" }), i)), o = new w([n, r], { classes: "ML__tooltip-container" }); + return this.caret && (o.caret = this.caret), this.bind(e, o); + } +}; +var at = class t31 extends y { + constructor(e, r) { + super(g(p({}, r), { type: "operator", isFunction: r == null ? void 0 : r.isFunction })), this.value = e, this.variant = r == null ? void 0 : r.variant, this.variantStyle = r == null ? void 0 : r.variantStyle, this.subsupPlacement = r == null ? void 0 : r.limits; + } + static fromJson(e) { + return new t31(e.symbol, e); + } + toJson() { + let e = super.toJson(); + return this.variant && (e.variant = this.variant), this.variantStyle && (e.variantStyle = this.variantStyle), this.subsupPlacement && (e.limits = this.subsupPlacement), this.value && (e.symbol = this.value), e; + } + render(e) { + var n; + let r = new w(this.value, { type: "op", mode: "math", maxFontSize: e.scalingFactor, style: { variant: this.variant, variantStyle: this.variantStyle }, isSelected: this.isSelected, letterShapeStyle: e.letterShapeStyle }), i = r; + if (this.superscript || this.subscript) { + let o = (n = this.subsupPlacement) != null ? n : "auto"; + i = o === "over-under" || o === "auto" && e.isDisplayStyle ? this.attachLimits(e, { base: r }) : this.attachSupsub(e, { base: r }); + } + return new w(this.bind(e, i), { type: "op", caret: this.caret, isSelected: this.isSelected, classes: "ML__op-group" }).wrap(e); + } + _serialize(e) { + if (!(e.expandMacro || e.skipStyles || e.skipPlaceholders) && typeof this.verbatimLatex == "string") + return this.verbatimLatex; + let r = ee(this.command, this.mode); + if (r != null && r.serialize) + return r.serialize(this, e); + let i = [this.command]; + return this.explicitSubsupPlacement && (this.subsupPlacement === "over-under" && i.push("\\limits"), this.subsupPlacement === "adjacent" && i.push("\\nolimits"), this.subsupPlacement === "auto" && i.push("\\displaylimits")), i.push(this.supsubToLatex(e)), K(i); + } +}; +function ot(t37) { + if (X(t37)) + return t37.map((i) => ot(i)); + if (typeof t37 == "string") + return y.fromJson(t37); + t37 = p({}, t37); + for (let i of gr) + t37[i] && (t37[i] = ot(t37[i])); + t37.args && (t37.args = of(t37.args)), t37.array && (t37.array = ot(t37.array)); + let e = t37.type, r; + e === "accent" && (r = xr.fromJson(t37)), e === "array" && (r = N.fromJson(t37)), e === "box" && (r = qe.fromJson(t37)), e === "chem" && (r = Nn.fromJson(t37)), e === "composition" && (r = $i.fromJson(t37)), e === "delim" && (r = Ui.fromJson(t37)), e === "enclose" && (r = Ut.fromJson(t37)), e === "error" && (r = rt.fromJson(t37)), e === "extensible-symbol" && (r = Ur.fromJson(t37)), e === "genfrac" && (r = it.fromJson(t37)), e === "group" && (r = Vi.fromJson(t37)), e === "latex" && (r = ie.fromJson(t37)), e === "latexgroup" && (r = Ct.fromJson(t37)), e === "leftright" && (r = H.fromJson(t37)), e === "macro" && (r = qi.fromJson(t37)), e === "macro-argument" && (r = Ca.fromJson(t37)), e === "operator" && (r = at.fromJson(t37)), e === "overlap" && (r = nt.fromJson(t37)), e === "overunder" && (r = ye.fromJson(t37)), e === "placeholder" && (r = ge.fromJson(t37)), e === "prompt" && (r = Hi.fromJson(t37)), e === "phantom" && (r = Jt.fromJson(t37)), e === "sizeddelim" && (r = Ji.fromJson(t37)), e === "spacing" && (r = Et.fromJson(t37)), e === "subsup" && (r = Wt.fromJson(t37)), e === "surd" && (r = Gi.fromJson(t37)), e === "text" && (r = Be.fromJson(t37)), e === "tooltip" && (r = Jr.fromJson(t37)), r || (!e || ["first", "mbin", "mrel", "mclose", "minner", "mop", "mopen", "mord", "mpunct", "root", "space"].includes(e), `${e}`, r = y.fromJson(t37)); + for (let i of gr) + t37[i] && r.setChildren(t37[i], i); + return t37.verbatimLatex !== void 0 && (r.verbatimLatex = t37.verbatimLatex), t37.subsupPlacement && (r.subsupPlacement = t37.subsupPlacement), t37.explicitSubsupPlacement && (r.explicitSubsupPlacement = true), t37.isFunction && (r.isFunction = true), t37.skipBoundary && (r.skipBoundary = true), t37.captureSelection && (r.captureSelection = true), r; +} +function of(t37) { + if (t37 && Array.isArray(t37)) + return t37.map((e) => e === "" ? null : typeof e == "object" && "group" in e ? { group: e.group.map((r) => ot(r)) } : typeof e == "object" && "atoms" in e ? e.atoms.map((r) => ot(r)) : e); +} +function Dt(t37, e) { + !t37 || !e || (X(t37) ? t37.forEach((r) => Dt(r, e)) : typeof t37 == "object" && !t37.style.color && !t37.style.backgroundColor && !t37.style.fontFamily && !t37.style.fontShape && !t37.style.fontSeries && !t37.style.fontSize && !t37.style.variant && !t37.style.variantStyle && (t37.applyStyle(e), Dt(t37.body, e), Dt(t37.above, e), Dt(t37.below, e), Dt(t37.subscript, e), Dt(t37.superscript, e))); +} +function Vn(t37, e, r, i) { + function n(a, s) { + for (let l of o) + if (l.style[a] !== s) + return false; + return true; + } + if (e = t37.normalizeRange(e), e[0] === e[1]) + return false; + let o = t37.getAtoms(e, { includeChildren: true }); + i.operation === "toggle" && (r.color && n("color", r.color) && (r.color = "none", delete r.verbatimColor), r.backgroundColor && n("backgroundColor", r.backgroundColor) && (r.backgroundColor = "none", delete r.verbatimBackgroundColor), r.fontFamily && n("fontFamily", r.fontFamily) && (r.fontFamily = "none"), r.fontSeries && n("fontSeries", r.fontSeries) && (r.fontSeries = "auto"), r.fontShape && n("fontShape", r.fontShape) && (r.fontShape = "auto"), r.fontSize && n("fontSize", r.fontSize) && (r.fontSize = Di), r.variant && n("variant", r.variant) && (r.variant = "normal"), r.variantStyle && n("variantStyle", r.variantStyle) && (r.variantStyle = "")); + for (let a of o) + a.applyStyle(r); + return true; +} +function dm(t37) { + return { up: "italic", bold: "bolditalic", italic: "italic", bolditalic: "bolditalic", "": "italic" }[t37 != null ? t37 : ""]; +} +function qn(t37) { + return { up: "up", bold: "bold", italic: void 0, bolditalic: "bold", "": void 0 }[t37 != null ? t37 : ""]; +} +var Ml = { main: ["Main-Regular", "ML__cmr"], "main-italic": ["Main-Italic", "ML__cmr ML__it"], "main-bold": ["Main-Bold", "ML__cmr ML__bold"], "main-bolditalic": ["Main-BoldItalic", "ML__cmr ML__bold ML__it"], normal: ["Main-Regular", "ML__cmr"], "normal-bold": ["Main-Bold", "ML__mathbf"], "normal-italic": ["Math-Italic", "ML__mathit"], "normal-bolditalic": ["Math-BoldItalic", "ML__mathbfit"], ams: ["AMS-Regular", "ML__ams"], "ams-bold": ["AMS-Regular", "ML__ams ML__bold"], "ams-italic": ["AMS-Regular", "ML__ams ML__it"], "ams-bolditalic": ["AMS-Regular", "ML__ams ML__bold ML__it"], "sans-serif": ["SansSerif-Regular", "ML__sans"], "sans-serif-bold": ["SansSerif-Regular", "ML__sans ML__bold"], "sans-serif-italic": ["SansSerif-Regular", "ML__sans ML__it"], "sans-serif-bolditalic": ["SansSerif-Regular", "ML__sans ML__bold ML__it"], calligraphic: ["Caligraphic-Regular", "ML__cal"], "calligraphic-bold": ["Caligraphic-Regular", "ML__cal ML__bold"], "calligraphic-italic": ["Caligraphic-Regular", "ML__cal ML__it"], "calligraphic-bolditalic": ["Caligraphic-Regular", "ML__cal ML__bold ML__it"], script: ["Script-Regular", "ML__script"], "script-bold": ["Script-Regular", "ML__script ML__bold"], "script-italic": ["Script-Regular", "ML__script ML__it"], "script-bolditalic": ["Script-Regular", "ML__script ML__bold ML__it"], fraktur: ["Fraktur-Regular", "ML__frak"], "fraktur-bold": ["Fraktur-Regular", "ML__frak ML__bold"], "fraktur-italic": ["Fraktur-Regular", "ML__frak ML__it"], "fraktur-bolditalic": ["Fraktur-Regular", "ML__frak ML__bold ML__it"], monospace: ["Typewriter-Regular", "ML__tt"], "monospace-bold": ["Typewriter-Regular", "ML__tt ML__bold"], "monospace-italic": ["Typewriter-Regular", "ML__tt ML__it"], "monospace-bolditalic": ["Typewriter-Regular", "ML__tt ML__bold ML__it"], "double-struck": ["AMS-Regular", "ML__bb"], "double-struck-bold": ["AMS-Regular", "ML__bb ML__bold"], "double-struck-italic": ["AMS-Regular", "ML__bb ML_italic"], "double-struck-bolditalic": ["AMS-Regular", "ML__bb ML_bolditalic"] }; +var Oa = { "double-struck": /^[A-Z ]$/, script: /^[A-Z ]$/, calligraphic: /^[\dA-Z ]$/, fraktur: /^[\dA-Za-z ]$|^[!"#$%&'()*+,\-./:;=?[]^’‘]$/, monospace: /^[\dA-Za-z ]$|^[!"&'()*+,\-./:;=?@[\]^_~\u0131\u0237\u0393\u0394\u0398\u039B\u039E\u03A0\u03A3\u03A5\u03A8\u03A9]$/, "sans-serif": /^[\dA-Za-z ]$|^[!"&'()*+,\-./:;=?@[\]^_~\u0131\u0237\u0393\u0394\u0398\u039B\u039E\u03A0\u03A3\u03A5\u03A8\u03A9]$/ }; +var mm = /^[\u03B1-\u03C9]|\u03D1|\u03D5|\u03D6|\u03F1|\u03F5]$/; +var af = /^[\u0393|\u0394\u0398\u039B\u039E\u03A0\u03A3\u03A5\u03A6\u03A8\u03A9]$/; +var sf = [/^[a-z]$/, /^[A-Z]$/, mm, af]; +var lf = { iso: ["it", "it", "it", "it"], tex: ["it", "it", "it", "up"], french: ["it", "up", "up", "up"], upright: ["up", "up", "up", "up"] }; +var wl = class extends ce { + constructor() { + super("math"); + } + createAtom(e, r, i) { + var a, s, l, c, u, d; + if (r === null) + return new y({ type: "mord", mode: "math", command: e, value: e, style: i }); + let n = (l = (s = globalThis.MathfieldElement) == null ? void 0 : s.isFunction((a = r.command) != null ? a : e)) != null ? l : false; + if (r.definitionType === "symbol") { + let m = new y({ type: (c = r.type) != null ? c : "mord", mode: "math", command: (u = r.command) != null ? u : e, value: String.fromCodePoint(r.codepoint), style: i }); + return n && (m.isFunction = true), e.startsWith("\\") && (m.verbatimLatex = e), m; + } + let o = new y({ type: "mord", mode: "math", command: (d = r.command) != null ? d : e, value: e, style: i }); + return n && (o.isFunction = true), e.startsWith("\\") && (o.verbatimLatex = e), o; + } + serialize(e, r) { + let i = cf(e, g(p({}, r), { defaultMode: "math" })); + return i.length === 0 || r.defaultMode !== "text" ? i : ["$ ", ...i, " $"]; + } + getFont(e, r) { + var l, c; + if (r.variant, r.fontFamily) { + let [u, d] = Ml[r.fontFamily]; + return d && (e.classes += " " + d), u; + } + let { variant: i } = r, { variantStyle: n } = r; + if (i === "normal" && !n && /[\u00A3\u0131\u0237]/.test(e.value) && (i = "main", n = "italic"), i === "normal" && !n && e.value.length === 1) { + let u = false; + sf.forEach((d, m) => { + var h; + d.test(e.value) && lf[(h = r.letterShapeStyle) != null ? h : "tex"][m] === "it" && (u = true); + }), u && (n = dm(n)); + } + n === "up" && (n = void 0); + let o = n ? i + "-" + n : i; + Ml[o]; + let [a, s] = Ml[o]; + if (Oa[i] && !Oa[i].test(e.value)) { + let u = gn(e.value, i, n); + return u || (u = (l = gn(e.value, i)) != null ? l : e.value, e.classes += (c = { bold: " ML__bold", italic: " ML__it", "bold-italic": " ML__bold ML__it" }[n != null ? n : ""]) != null ? c : ""), e.value = u, null; + } + return mm.test(e.value) && (e.classes += " lcGreek"), s && (e.classes += " " + s), a; + } +}; +function cf(t37, e) { + return Ye(t37, "bold").map((r) => { + if (ha(r[0]) !== "bold") + return Ba(r, e).join(""); + if (ha(r[0].parent) === "bold") + return K(Ba(r, e)); + let n = r.map((o) => { + var a; + return (a = o.value) != null ? a : ""; + }).join(""); + return /^[a-zA-Z0-9]+$/.test(n) ? I("\\mathbf", K(Ba(r, e))) : I("\\bm", K(Ba(r, e))); + }); +} +function Ba(t37, e) { + let { parent: r } = t37[0], i = fa(r); + return Ye(t37, "variant").map((n) => { + let o = fa(n[0]), a = ""; + o && o !== i && (a = { calligraphic: "\\mathcal", "calligraphic-uo": "\\mathcal", fraktur: "\\mathfrak", "fraktur-uo": "\\mathfrak", "double-struck": "\\mathbb", "double-struck-uo": "\\mathbb", script: "\\mathscr", "script-uo": "\\mathscr", monospace: "\\mathtt", "monospace-uo": "\\mathtt", "sans-serif": "\\mathsf", "sans-serif-uo": "\\mathsf", normal: "", "normal-up": "\\mathrm", "normal-italic": "\\mathnormal", "normal-bold": "", "normal-bolditalic": "\\mathbfit", ams: "", "ams-up": "\\mathrm", "ams-italic": "\\mathit", "ams-bold": "", "ams-bolditalic": "\\mathbfit", main: "", "main-up": "\\mathrm", "main-italic": "\\mathit", "main-bold": "", "main-bolditalic": "\\mathbfit" }[o]); + let s = K(n.map((l) => l._serialize(e))); + return a ? I(a, s) : s; + }); +} +new wl(); +function uf(t37, e) { + return t37.map((r) => r._serialize(e)); +} +function df(t37, e) { + return Ye(t37, "fontShape").map((r) => { + let i = uf(r, e), { fontShape: n } = r[0].style, o = ""; + return n === "it" && (o = "\\textit"), n === "sl" && (o = "\\textsl"), n === "sc" && (o = "\\textsc"), n === "n" && (o = "\\textup"), !o && n ? `{${I("\\fontshape", n)}${K(i)}}` : o ? I(o, K(i)) : K(i); + }); +} +function mf(t37, e) { + return Ye(t37, "fontSeries").map((r) => { + let i = df(r, e), { fontSeries: n } = r[0].style, o = ""; + return n === "b" && (o = "\\textbf"), n === "l" && (o = "\\textlf"), n === "m" && (o = "\\textmd"), n && !o ? `{${I("\\fontseries", n)}${K(i)}}` : o ? I(o, K(i)) : K(i); + }); +} +function pf(t37, e) { + return Ye(t37, "fontSize").map((r) => { + var o, a; + let i = mf(r, e), n = (a = ["", "\\tiny", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge"][(o = r[0].style.fontSize) != null ? o : ""]) != null ? a : ""; + return n ? `${n} ${K(i)}` : K(i); + }); +} +function hf(t37, e, r) { + return Ye(t37, "fontFamily").map((i) => { + var s; + r = r && !i.every((l) => l.style.fontFamily || l.style.fontShape || l.style.fontSeries || l.style.fontSize); + let n = pf(i, e), { fontFamily: o } = i[0].style, a = (s = { roman: "textrm", monospace: "texttt", "sans-serif": "textsf" }[o != null ? o : ""]) != null ? s : ""; + return a ? `\\${a}{${K(n)}}` : o ? `{\\fontfamily{${i[0].style.fontFamily}} ${K(n)}}` : r ? `\\text{${K(n)}}` : K(n); + }); +} +var pm = { roman: "", "sans-serif": "ML__sans", monospace: "ML__tt" }; +var kl = class extends ce { + constructor() { + super("text"); + } + createAtom(e, r, i) { + return r && r.definitionType === "symbol" ? new Be(e, String.fromCodePoint(r.codepoint), i != null ? i : {}) : null; + } + serialize(e, r) { + return hf(e, g(p({}, r), { defaultMode: "text" }), r.defaultMode !== "text"); + } + getFont(e, r) { + var n, o, a, s, l; + let { fontFamily: i } = r; + if (pm[i] ? e.classes += " " + pm[i] : i && e.setStyle("font-family", i), r.fontShape && (e.classes += " ", e.classes += (n = { it: "ML__it", sl: "ML__shape_sl", sc: "ML__shape_sc", ol: "ML__shape_ol" }[r.fontShape]) != null ? n : ""), r.fontSeries) { + let c = r.fontSeries.match(/(.?[lbm])?(.?[cx])?/); + c && (e.classes += " ", e.classes += (a = { ul: "ML__series_ul", el: "ML__series_el", l: "ML__series_l", sl: "ML__series_sl", m: "", sb: "ML__series_sb", b: "ML__bold", eb: "ML__series_eb", ub: "ML__series_ub" }[(o = c[1]) != null ? o : ""]) != null ? a : "", e.classes += " ", e.classes += (l = { uc: "ML__series_uc", ec: "ML__series_ec", c: "ML__series_c", sc: "ML__series_sc", n: "", sx: "ML__series_sx", x: "ML__series_x", ex: "ML__series_ex", ux: "ML__series_ux" }[(s = c[2]) != null ? s : ""]) != null ? l : ""); + } + return "Main-Regular"; + } +}; +new kl(); +var Sl = class extends ce { + constructor() { + super("latex"); + } + createAtom(e) { + return new ie(e); + } + serialize(e, r) { + return e.filter((i) => i instanceof ie && !i.isSuggestion).map((i) => i.value); + } + getFont() { + return null; + } +}; +new Sl(); +var hm = { id: "dvorak", locale: "en", displayName: "Dvorak", virtualLayout: "dvorak", platform: "", score: 0, mapping: { KeyA: ["a", "A", "\xE5", "\xC5"], KeyB: ["x", "X", "\u2248", "\u02DB"], KeyC: ["j", "J", "\u2206", "\xD4"], KeyD: ["e", "E", "\xB4", "\xB4"], KeyE: [".", ">", "\u2265", "\u02D8"], KeyF: ["u", "U", "\xA8", "\xA8"], KeyG: ["i", "I", "\u02C6", "\u02C6"], KeyH: ["d", "D", "\u2202", "\xCE"], KeyI: ["c", "C", "\xE7", "\xC7"], KeyJ: ["h", "H", "\u02D9", "\xD3"], KeyK: ["t", "T", "\u2020", "\u02C7"], KeyL: ["n", "N", "\u02DC", "\u02DC"], KeyM: ["m", "M", "\xB5", "\xC2"], KeyN: ["b", "B", "\u222B", "\u0131"], KeyO: ["r", "R", "\xAE", "\u2030"], KeyP: ["l", "L", "\xAC", "\xD2"], KeyQ: ["'", '"', "\xE6", "\xC6"], KeyR: ["p", "P", "\u03C0", "\u220F"], KeyS: ["o", "O", "\xF8", "\xD8"], KeyT: ["y", "Y", "\xA5", "\xC1"], KeyU: ["g", "G", "\xA9", "\u02DD"], KeyV: ["k", "K", "\u02DA", "\uF8FF"], KeyW: [",", "<", "\u2264", "\xAF"], KeyX: ["q", "Q", "\u0153", "\u0152"], KeyY: ["f", "F", "\u0192", "\xCF"], KeyZ: [";", ":", "\u2026", "\xDA"], Digit1: ["1", "!", "\xA1", "\u2044"], Digit2: ["2", "@", "\u2122", "\u20AC"], Digit3: ["3", "#", "\xA3", "\u2039"], Digit4: ["4", "$", "\xA2", "\u203A"], Digit5: ["5", "%", "\u221E", "\uFB01"], Digit6: ["6", "^", "\xA7", "\uFB02"], Digit7: ["7", "&", "\xB6", "\u2021"], Digit8: ["8", "*", "\u2022", "\xB0"], Digit9: ["9", "(", "\xAA", "\xB7"], Digit0: ["0", ")", "\xBA", "\u201A"], Space: [" ", " ", " ", " "], Minus: ["[", "{", "\u201C", "\u201D"], Equal: ["]", "}", "\u2018", "\u2019"], BracketLeft: ["/", "?", "\xF7", "\xBF"], BracketRight: ["=", "+", "\u2260", "\xB1"], Backslash: ["\\", "|", "\xAB", "\xBB"], Semicolon: ["s", "S", "\xDF", "\xCD"], Quote: ["-", "_", "\u2013", "\u2014"], Backquote: ["`", "~", "`", "`"], Comma: ["w", "W", "\u2211", "\u201E"], Period: ["v", "V", "\u221A", "\u25CA"], Slash: ["z", "Z", "\u03A9", "\xB8"], NumpadDivide: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], Numpad1: ["1", "1", "1", "1"], Numpad2: ["2", "2", "2", "2"], Numpad3: ["3", "3", "3", "3"], Numpad4: ["4", "4", "4", "4"], Numpad5: ["5", "5", "5", "5"], Numpad6: ["6", "6", "6", "6"], Numpad7: ["7", "7", "7", "7"], Numpad8: ["8", "8", "8", "8"], Numpad9: ["9", "9", "9", "9"], Numpad0: ["0", "0", "0", "0"], NumpadDecimal: [".", ".", ".", "."], IntlBackslash: ["\xA7", "\xB1", "\xA7", "\xB1"], NumpadEqual: ["=", "=", "=", "="], AudioVolumeUp: ["", "=", "", "="] } }; +var Pa = { id: "apple.en-intl", displayName: "English (international)", virtualLayout: "qwerty", platform: "apple", locale: "en", score: 0, mapping: { KeyA: ["a", "A", "\xE5", "\xC5"], KeyB: ["b", "B", "\u222B", "\u0131"], KeyC: ["c", "C", "\xE7", "\xC7"], KeyD: ["d", "D", "\u2202", "\xCE"], KeyE: ["e", "E", "\xB4", "\xB4"], KeyF: ["f", "F", "\u0192", "\xCF"], KeyG: ["g", "G", "\xA9", "\u02DD"], KeyH: ["h", "H", "\u02D9", "\xD3"], KeyI: ["i", "I", "\u02C6", "\u02C6"], KeyJ: ["j", "J", "\u2206", "\xD4"], KeyK: ["k", "K", "\u02DA", "\uF8FF"], KeyL: ["l", "L", "\xAC", "\xD2"], KeyM: ["m", "M", "\xB5", "\xC2"], KeyN: ["n", "N", "\u02DC", "\u02DC"], KeyO: ["o", "O", "\xF8", "\xD8"], KeyP: ["p", "P", "\u03C0", "\u220F"], KeyQ: ["q", "Q", "\u0153", "\u0152"], KeyR: ["r", "R", "\xAE", "\u2030"], KeyS: ["s", "S", "\xDF", "\xCD"], KeyT: ["t", "T", "\u2020", "\u02C7"], KeyU: ["u", "U", "\xA8", "\xA8"], KeyV: ["v", "V", "\u221A", "\u25CA"], KeyW: ["w", "W", "\u2211", "\u201E"], KeyX: ["x", "X", "\u2248", "\u02DB"], KeyY: ["y", "Y", "\xA5", "\xC1"], KeyZ: ["z", "Z", "\u03A9", "\xB8"], Digit1: ["1", "!", "\xA1", "\u2044"], Digit2: ["2", "@", "\u2122", "\u20AC"], Digit3: ["3", "#", "\xA3", "\u2039"], Digit4: ["4", "$", "\xA2", "\u203A"], Digit5: ["5", "%", "\u221E", "\uFB01"], Digit6: ["6", "^", "\xA7", "\uFB02"], Digit7: ["7", "&", "\xB6", "\u2021"], Digit8: ["8", "*", "\u2022", "\xB0"], Digit9: ["9", "(", "\xAA", "\xB7"], Digit0: ["0", ")", "\xBA", "\u201A"], Space: [" ", " ", " ", " "], Minus: ["-", "_", "\u2013", "\u2014"], Equal: ["=", "+", "\u2260", "\xB1"], BracketLeft: ["[", "{", "\u201C", "\u201D"], BracketRight: ["]", "}", "\u2018", "\u2019"], Backslash: ["\\", "|", "\xAB", "\xBB"], Semicolon: [";", ":", "\u2026", "\xDA"], Quote: ["'", '"', "\xE6", "\xC6"], Backquote: ["`", "\u02DC", "`", "`"], Comma: [",", "<", "\u2264", "\xAF"], Period: [".", ">", "\u2265", "\u02D8"], Slash: ["/", "?", "\xF7", "\xBF"], NumpadDivide: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], Numpad1: ["1", "1", "1", "1"], Numpad2: ["2", "2", "2", "2"], Numpad3: ["3", "3", "3", "3"], Numpad4: ["4", "4", "4", "4"], Numpad5: ["5", "5", "5", "5"], Numpad6: ["6", "6", "6", "6"], Numpad7: ["7", "7", "7", "7"], Numpad8: ["8", "8", "8", "8"], Numpad9: ["9", "9", "9", "9"], Numpad0: ["0", "0", "0", "0"], NumpadDecimal: [".", ".", ".", "."], IntlBackslash: ["\xA7", "\xB1", "\xA7", "\xB1"], NumpadEqual: ["=", "=", "=", "="], AudioVolumeUp: ["", "=", "", "="] } }; +var Ll = { id: "windows.en-intl", displayName: "English (international)", platform: "windows", virtualLayout: "qwerty", locale: "en", score: 0, mapping: { KeyA: ["a", "A", "\xE1", "\xC1"], KeyB: ["b", "B", "", ""], KeyC: ["c", "C", "\xA9", "\xA2"], KeyD: ["d", "D", "\xF0", "\xD0"], KeyE: ["e", "E", "\xE9", "\xC9"], KeyF: ["f", "F", "", ""], KeyG: ["g", "G", "", ""], KeyH: ["h", "H", "", ""], KeyI: ["i", "I", "\xED", "\xCD"], KeyJ: ["j", "J", "", ""], KeyK: ["k", "K", "", ""], KeyL: ["l", "L", "\xF8", "\xD8"], KeyM: ["m", "M", "\xB5", ""], KeyN: ["n", "N", "\xF1", "\xD1"], KeyO: ["o", "O", "\xF3", "\xD3"], KeyP: ["p", "P", "\xF6", "\xD6"], KeyQ: ["q", "Q", "\xE4", "\xC4"], KeyR: ["r", "R", "\xAE", ""], KeyS: ["s", "S", "\xDF", "\xA7"], KeyT: ["t", "T", "\xFE", "\xDE"], KeyU: ["u", "U", "\xFA", "\xDA"], KeyV: ["v", "V", "", ""], KeyW: ["w", "W", "\xE5", "\xC5"], KeyX: ["x", "X", "", ""], KeyY: ["y", "Y", "\xFC", "\xDC"], KeyZ: ["z", "Z", "\xE6", "\xC6"], Digit1: ["1", "!", "\xA1", "\xB9"], Digit2: ["2", "@", "\xB2", ""], Digit3: ["3", "#", "\xB3", ""], Digit4: ["4", "$", "\xA4", "\xA3"], Digit5: ["5", "%", "\u20AC", ""], Digit6: ["6", "^", "\xBC", ""], Digit7: ["7", "&", "\xBD", ""], Digit8: ["8", "*", "\xBE", ""], Digit9: ["9", "(", "\u2018", ""], Digit0: ["0", ")", "\u2019", ""], Space: [" ", " ", "", ""], Minus: ["-", "_", "\xA5", ""], Equal: ["=", "+", "\xD7", "\xF7"], BracketLeft: ["[", "{", "\xAB", ""], BracketRight: ["]", "}", "\xBB", ""], Backslash: ["\\", "|", "\xAC", "\xA6"], Semicolon: [";", ":", "\xB6", "\xB0"], Quote: ["'", '"', "\xB4", "\xA8"], Backquote: ["`", "~", "", ""], Comma: [",", "<", "\xE7", "\xC7"], Period: [".", ">", "", ""], Slash: ["/", "?", "\xBF", ""], NumpadDivide: ["/", "/", "", ""], NumpadMultiply: ["*", "*", "", ""], NumpadSubtract: ["-", "-", "", ""], NumpadAdd: ["+", "+", "", ""], IntlBackslash: ["\\", "|", "", ""] } }; +var Al = { id: "linux.en", displayName: "English", platform: "linux", virtualLayout: "qwerty", locale: "en", score: 0, mapping: { KeyA: ["a", "A", "a", "A"], KeyB: ["b", "B", "b", "B"], KeyC: ["c", "C", "c", "C"], KeyD: ["d", "D", "d", "D"], KeyE: ["e", "E", "e", "E"], KeyF: ["f", "F", "f", "F"], KeyG: ["g", "G", "g", "G"], KeyH: ["h", "H", "h", "H"], KeyI: ["i", "I", "i", "I"], KeyJ: ["j", "J", "j", "J"], KeyK: ["k", "K", "k", "K"], KeyL: ["l", "L", "l", "L"], KeyM: ["m", "M", "m", "M"], KeyN: ["n", "N", "n", "N"], KeyO: ["o", "O", "o", "O"], KeyP: ["p", "P", "p", "P"], KeyQ: ["q", "Q", "q", "Q"], KeyR: ["r", "R", "r", "R"], KeyS: ["s", "S", "s", "S"], KeyT: ["t", "T", "t", "T"], KeyU: ["u", "U", "u", "U"], KeyV: ["v", "V", "v", "V"], KeyW: ["w", "W", "w", "W"], KeyX: ["x", "X", "x", "X"], KeyY: ["y", "Y", "y", "Y"], KeyZ: ["z", "Z", "z", "Z"], Digit1: ["1", "!", "1", "!"], Digit2: ["2", "@", "2", "@"], Digit3: ["3", "#", "3", "#"], Digit4: ["4", "$", "4", "$"], Digit5: ["5", "%", "5", "%"], Digit6: ["6", "^", "6", "^"], Digit7: ["7", "&", "7", "&"], Digit8: ["8", "*", "8", "*"], Digit9: ["9", "(", "9", "("], Digit0: ["0", ")", "0", ")"], Space: [" ", " ", " ", " "], Minus: ["-", "_", "-", "_"], Equal: ["=", "+", "=", "+"], BracketLeft: ["[", "{", "[", "{"], BracketRight: ["]", "}", "]", "}"], Backslash: ["\\", "|", "\\", "|"], Semicolon: [";", ":", ";", ":"], Quote: ["'", '"', "'", '"'], Backquote: ["`", "~", "`", "~"], Comma: [",", "<", ",", "<"], Period: [".", ">", ".", ">"], Slash: ["/", "?", "/", "?"], NumpadDivide: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], Numpad1: ["1", "1", "1", "1"], Numpad2: ["2", "2", "2", "2"], Numpad3: ["3", "3", "3", "3"], Numpad4: ["4", "4", "4", "4"], Numpad5: ["5", "5", "5", "5"], Numpad6: ["6", "6", "6", "6"], Numpad7: ["7", "7", "7", "7"], Numpad8: ["8", "8", "8", "8"], Numpad9: ["9", "9", "9", "9"], Numpad0: ["0", "0", "0", "0"], NumpadDecimal: ["", ".", "", "."], IntlBackslash: ["<", ">", "|", "\xA6"], NumpadEqual: ["=", "=", "=", "="], NumpadComma: [".", ".", ".", "."], NumpadParenLeft: ["(", "(", "(", "("], NumpadParenRight: [")", ")", ")", ")"] } }; +var fm = { id: "apple.french", locale: "fr", displayName: "French", platform: "apple", virtualLayout: "azerty", score: 0, mapping: { KeyA: ["q", "Q", "\u2021", "\u03A9"], KeyB: ["b", "B", "\xDF", "\u222B"], KeyC: ["c", "C", "\xA9", "\xA2"], KeyD: ["d", "D", "\u2202", "\u2206"], KeyE: ["e", "E", "\xEA", "\xCA"], KeyF: ["f", "F", "\u0192", "\xB7"], KeyG: ["g", "G", "\uFB01", "\uFB02"], KeyH: ["h", "H", "\xCC", "\xCE"], KeyI: ["i", "I", "\xEE", "\xEF"], KeyJ: ["j", "J", "\xCF", "\xCD"], KeyK: ["k", "K", "\xC8", "\xCB"], KeyL: ["l", "L", "\xAC", "|"], KeyM: [",", "?", "\u221E", "\xBF"], KeyN: ["n", "N", "~", "\u0131"], KeyO: ["o", "O", "\u0153", "\u0152"], KeyP: ["p", "P", "\u03C0", "\u220F"], KeyQ: ["a", "A", "\xE6", "\xC6"], KeyR: ["r", "R", "\xAE", "\u201A"], KeyS: ["s", "S", "\xD2", "\u2211"], KeyT: ["t", "T", "\u2020", "\u2122"], KeyU: ["u", "U", "\xBA", "\xAA"], KeyV: ["v", "V", "\u25CA", "\u221A"], KeyW: ["z", "Z", "\xC2", "\xC5"], KeyX: ["x", "X", "\u2248", "\u2044"], KeyY: ["y", "Y", "\xDA", "\u0178"], KeyZ: ["w", "W", "\u2039", "\u203A"], Digit1: ["&", "1", "\uF8FF", "\xB4"], Digit2: ["\xE9", "2", "\xEB", "\u201E"], Digit3: ['"', "3", "\u201C", "\u201D"], Digit4: ["'", "4", "\u2018", "\u2019"], Digit5: ["(", "5", "{", "["], Digit6: ["\xA7", "6", "\xB6", "\xE5"], Digit7: ["\xE8", "7", "\xAB", "\xBB"], Digit8: ["!", "8", "\xA1", "\xDB"], Digit9: ["\xE7", "9", "\xC7", "\xC1"], Digit0: ["\xE0", "0", "\xF8", "\xD8"], Space: [" ", " ", " ", " "], Minus: [")", "\xB0", "}", "]"], Equal: ["-", "_", "\u2014", "\u2013"], BracketLeft: ["^", "\xA8", "\xF4", "\xD4"], BracketRight: ["$", "*", "\u20AC", "\xA5"], Backslash: ["`", "\xA3", "@", "#"], Semicolon: ["m", "M", "\xB5", "\xD3"], Quote: ["\xF9", "%", "\xD9", "\u2030"], Backquote: ["<", ">", "\u2264", "\u2265"], Comma: [";", ".", "\u2026", "\u2022"], Period: [":", "/", "\xF7", "\\"], Slash: ["=", "+", "\u2260", "\xB1"], NumpadDivide: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], NumpadDecimal: [",", ".", ",", "."], IntlBackslash: ["@", "#", "\u2022", "\u0178"], NumpadEqual: ["=", "=", "=", "="] } }; +var gm = { id: "windows.french", locale: "fr", displayName: "French", virtualLayout: "azerty", platform: "windows", score: 0, mapping: { KeyA: ["q", "Q", "", ""], KeyB: ["b", "B", "", ""], KeyC: ["c", "C", "", ""], KeyD: ["d", "D", "", ""], KeyE: ["e", "E", "\u20AC", ""], KeyF: ["f", "F", "", ""], KeyG: ["g", "G", "", ""], KeyH: ["h", "H", "", ""], KeyI: ["i", "I", "", ""], KeyJ: ["j", "J", "", ""], KeyK: ["k", "K", "", ""], KeyL: ["l", "L", "", ""], KeyM: [",", "?", "", ""], KeyN: ["n", "N", "", ""], KeyO: ["o", "O", "", ""], KeyP: ["p", "P", "", ""], KeyQ: ["a", "A", "", ""], KeyR: ["r", "R", "", ""], KeyS: ["s", "S", "", ""], KeyT: ["t", "T", "", ""], KeyU: ["u", "U", "", ""], KeyV: ["v", "V", "", ""], KeyW: ["z", "Z", "", ""], KeyX: ["x", "X", "", ""], KeyY: ["y", "Y", "", ""], KeyZ: ["w", "W", "", ""], Digit1: ["&", "1", "", ""], Digit2: ["\xE9", "2", "~", ""], Digit3: ['"', "3", "#", ""], Digit4: ["'", "4", "{", ""], Digit5: ["(", "5", "[", ""], Digit6: ["-", "6", "|", ""], Digit7: ["\xE8", "7", "`", ""], Digit8: ["_", "8", "\\", ""], Digit9: ["\xE7", "9", "^", ""], Digit0: ["\xE0", "0", "@", ""], Space: [" ", " ", "", ""], Minus: [")", "\xB0", "]", ""], Equal: ["=", "+", "}", ""], BracketLeft: ["^", "\xA8", "", ""], BracketRight: ["$", "\xA3", "\xA4", ""], Backslash: ["*", "\xB5", "", ""], Semicolon: ["m", "M", "", ""], Quote: ["\xF9", "%", "", ""], Backquote: ["\xB2", "", "", ""], Comma: [";", ".", "", ""], Period: [":", "/", "", ""], Slash: ["!", "\xA7", "", ""], NumpadDivide: ["/", "/", "", ""], NumpadMultiply: ["*", "*", "", ""], NumpadSubtract: ["-", "-", "", ""], NumpadAdd: ["+", "+", "", ""], IntlBackslash: ["<", ">", "", ""] } }; +var ym = { id: "linux.french", locale: "fr", displayName: "French", virtualLayout: "azerty", platform: "linux", score: 0, mapping: { KeyA: ["q", "Q", "@", "\u03A9"], KeyB: ["b", "B", "\u201D", "\u2019"], KeyC: ["c", "C", "\xA2", "\xA9"], KeyD: ["d", "D", "\xF0", "\xD0"], KeyE: ["e", "E", "\u20AC", "\xA2"], KeyF: ["f", "F", "\u0111", "\xAA"], KeyG: ["g", "G", "\u014B", "\u014A"], KeyH: ["h", "H", "\u0127", "\u0126"], KeyI: ["i", "I", "\u2192", "\u0131"], KeyJ: ["j", "J", "\u0309", "\u031B"], KeyK: ["k", "K", "\u0138", "&"], KeyL: ["l", "L", "\u0142", "\u0141"], KeyM: [",", "?", "\u0301", "\u030B"], KeyN: ["n", "N", "n", "N"], KeyO: ["o", "O", "\xF8", "\xD8"], KeyP: ["p", "P", "\xFE", "\xDE"], KeyQ: ["a", "A", "\xE6", "\xC6"], KeyR: ["r", "R", "\xB6", "\xAE"], KeyS: ["s", "S", "\xDF", "\xA7"], KeyT: ["t", "T", "\u0167", "\u0166"], KeyU: ["u", "U", "\u2193", "\u2191"], KeyV: ["v", "V", "\u201C", "\u2018"], KeyW: ["z", "Z", "\xAB", "<"], KeyX: ["x", "X", "\xBB", ">"], KeyY: ["y", "Y", "\u2190", "\xA5"], KeyZ: ["w", "W", "\u0142", "\u0141"], Digit1: ["&", "1", "\xB9", "\xA1"], Digit2: ["\xE9", "2", "~", "\u215B"], Digit3: ['"', "3", "#", "\xA3"], Digit4: ["'", "4", "{", "$"], Digit5: ["(", "5", "[", "\u215C"], Digit6: ["-", "6", "|", "\u215D"], Digit7: ["\xE8", "7", "`", "\u215E"], Digit8: ["_", "8", "\\", "\u2122"], Digit9: ["\xE7", "9", "^", "\xB1"], Digit0: ["\xE0", "0", "@", "\xB0"], Enter: ["\r", "\r", "\r", "\r"], Escape: ["\x1B", "\x1B", "\x1B", "\x1B"], Backspace: ["\b", "\b", "\b", "\b"], Tab: [" ", "", " ", ""], Space: [" ", " ", " ", " "], Minus: [")", "\xB0", "]", "\xBF"], Equal: ["=", "+", "}", "\u0328"], BracketLeft: ["\u0302", "\u0308", "\u0308", "\u030A"], BracketRight: ["$", "\xA3", "\xA4", "\u0304"], Backslash: ["*", "\xB5", "\u0300", "\u0306"], Semicolon: ["m", "M", "\xB5", "\xBA"], Quote: ["\xF9", "%", "\u0302", "\u030C"], Backquote: ["\xB2", "~", "\xAC", "\xAC"], Comma: [";", ".", "\u2500", "\xD7"], Period: [":", "/", "\xB7", "\xF7"], Slash: ["!", "\xA7", "\u0323", "\u0307"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], NumpadDecimal: ["", ".", "", "."], IntlBackslash: ["<", ">", "|", "\xA6"] } }; +var bm = { id: "apple.german", locale: "de", displayName: "German", virtualLayout: "qwertz", platform: "apple", score: 0, mapping: { KeyA: ["a", "A", "\xE5", "\xC5"], KeyB: ["b", "B", "\u222B", "\u2039"], KeyC: ["c", "C", "\xE7", "\xC7"], KeyD: ["d", "D", "\u2202", "\u2122"], KeyE: ["e", "E", "\u20AC", "\u2030"], KeyF: ["f", "F", "\u0192", "\xCF"], KeyG: ["g", "G", "\xA9", "\xCC"], KeyH: ["h", "H", "\xAA", "\xD3"], KeyI: ["i", "I", "\u2044", "\xDB"], KeyJ: ["j", "J", "\xBA", "\u0131"], KeyK: ["k", "K", "\u2206", "\u02C6"], KeyL: ["l", "L", "@", "\uFB02"], KeyM: ["m", "M", "\xB5", "\u02D8"], KeyN: ["n", "N", "~", "\u203A"], KeyO: ["o", "O", "\xF8", "\xD8"], KeyP: ["p", "P", "\u03C0", "\u220F"], KeyQ: ["q", "Q", "\xAB", "\xBB"], KeyR: ["r", "R", "\xAE", "\xB8"], KeyS: ["s", "S", "\u201A", "\xCD"], KeyT: ["t", "T", "\u2020", "\u02DD"], KeyU: ["u", "U", "\xA8", "\xC1"], KeyV: ["v", "V", "\u221A", "\u25CA"], KeyW: ["w", "W", "\u2211", "\u201E"], KeyX: ["x", "X", "\u2248", "\xD9"], KeyY: ["z", "Z", "\u03A9", "\u02C7"], KeyZ: ["y", "Y", "\xA5", "\u2021"], Digit1: ["1", "!", "\xA1", "\xAC"], Digit2: ["2", '"', "\u201C", "\u201D"], Digit3: ["3", "\xA7", "\xB6", "#"], Digit4: ["4", "$", "\xA2", "\xA3"], Digit5: ["5", "%", "[", "\uFB01"], Digit6: ["6", "&", "]", "^"], Digit7: ["7", "/", "|", "\\"], Digit8: ["8", "(", "{", "\u02DC"], Digit9: ["9", ")", "}", "\xB7"], Digit0: ["0", "=", "\u2260", "\xAF"], Space: [" ", " ", " ", " "], Minus: ["\xDF", "?", "\xBF", "\u02D9"], Equal: ["\xB4", "`", "'", "\u02DA"], BracketLeft: ["\xFC", "\xDC", "\u2022", "\xB0"], BracketRight: ["+", "*", "\xB1", "\uF8FF"], Backslash: ["#", "'", "\u2018", "\u2019"], Semicolon: ["\xF6", "\xD6", "\u0153", "\u0152"], Quote: ["\xE4", "\xC4", "\xE6", "\xC6"], Backquote: ["<", ">", "\u2264", "\u2265"], Comma: [",", ";", "\u221E", "\u02DB"], Period: [".", ":", "\u2026", "\xF7"], Slash: ["-", "_", "\u2013", "\u2014"], NumpadDivide: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], NumpadDecimal: [",", ",", ".", "."], IntlBackslash: ["^", "\xB0", "\u201E", "\u201C"], NumpadEqual: ["=", "=", "=", "="] } }; +var xm = { id: "windows.german", locale: "de", displayName: "German", platform: "windows", virtualLayout: "qwertz", score: 0, mapping: { KeyA: ["a", "A", "", ""], KeyB: ["b", "B", "", ""], KeyC: ["c", "C", "", ""], KeyD: ["d", "D", "", ""], KeyE: ["e", "E", "\u20AC", ""], KeyF: ["f", "F", "", ""], KeyG: ["g", "G", "", ""], KeyH: ["h", "H", "", ""], KeyI: ["i", "I", "", ""], KeyJ: ["j", "J", "", ""], KeyK: ["k", "K", "", ""], KeyL: ["l", "L", "", ""], KeyM: ["m", "M", "\xB5", ""], KeyN: ["n", "N", "", ""], KeyO: ["o", "O", "", ""], KeyP: ["p", "P", "", ""], KeyQ: ["q", "Q", "@", ""], KeyR: ["r", "R", "", ""], KeyS: ["s", "S", "", ""], KeyT: ["t", "T", "", ""], KeyU: ["u", "U", "", ""], KeyV: ["v", "V", "", ""], KeyW: ["w", "W", "", ""], KeyX: ["x", "X", "", ""], KeyY: ["z", "Z", "", ""], KeyZ: ["y", "Y", "", ""], Digit1: ["1", "!", "", ""], Digit2: ["2", '"', "\xB2", ""], Digit3: ["3", "\xA7", "\xB3", ""], Digit4: ["4", "$", "", ""], Digit5: ["5", "%", "", ""], Digit6: ["6", "&", "", ""], Digit7: ["7", "/", "{", ""], Digit8: ["8", "(", "[", ""], Digit9: ["9", ")", "]", ""], Digit0: ["0", "=", "}", ""], Space: [" ", " ", "", ""], Minus: ["\xDF", "?", "\\", "\u1E9E"], Equal: ["\xB4", "`", "", ""], BracketLeft: ["\xFC", "\xDC", "", ""], BracketRight: ["+", "*", "~", ""], Backslash: ["#", "'", "", ""], Semicolon: ["\xF6", "\xD6", "", ""], Quote: ["\xE4", "\xC4", "", ""], Backquote: ["^", "\xB0", "", ""], Comma: [",", ";", "", ""], Period: [".", ":", "", ""], Slash: ["-", "_", "", ""], NumpadDivide: ["/", "/", "", ""], NumpadMultiply: ["*", "*", "", ""], NumpadSubtract: ["-", "-", "", ""], NumpadAdd: ["+", "+", "", ""], IntlBackslash: ["<", ">", "|", ""] } }; +var vm = { id: "linux.german", locale: "de", displayName: "German", platform: "windows", virtualLayout: "qwertz", score: 0, mapping: { KeyA: ["a", "A", "\xE6", "\xC6"], KeyB: ["b", "B", "\u201C", "\u2018"], KeyC: ["c", "C", "\xA2", "\xA9"], KeyD: ["d", "D", "\xF0", "\xD0"], KeyE: ["e", "E", "\u20AC", "\u20AC"], KeyF: ["f", "F", "\u0111", "\xAA"], KeyG: ["g", "G", "\u014B", "\u014A"], KeyH: ["h", "H", "\u0127", "\u0126"], KeyI: ["i", "I", "\u2192", "\u0131"], KeyJ: ["j", "J", "\u0323", "\u0307"], KeyK: ["k", "K", "\u0138", "&"], KeyL: ["l", "L", "\u0142", "\u0141"], KeyM: ["m", "M", "\xB5", "\xBA"], KeyN: ["n", "N", "\u201D", "\u2019"], KeyO: ["o", "O", "\xF8", "\xD8"], KeyP: ["p", "P", "\xFE", "\xDE"], KeyQ: ["q", "Q", "@", "\u03A9"], KeyR: ["r", "R", "\xB6", "\xAE"], KeyS: ["s", "S", "\u017F", "\u1E9E"], KeyT: ["t", "T", "\u0167", "\u0166"], KeyU: ["u", "U", "\u2193", "\u2191"], KeyV: ["v", "V", "\u201E", "\u201A"], KeyW: ["w", "W", "\u0142", "\u0141"], KeyX: ["x", "X", "\xAB", "\u2039"], KeyY: ["z", "Z", "\u2190", "\xA5"], KeyZ: ["y", "Y", "\xBB", "\u203A"], Digit1: ["1", "!", "\xB9", "\xA1"], Digit2: ["2", '"', "\xB2", "\u215B"], Digit3: ["3", "\xA7", "\xB3", "\xA3"], Digit4: ["4", "$", "\xBC", "\xA4"], Digit5: ["5", "%", "\xBD", "\u215C"], Digit6: ["6", "&", "\xAC", "\u215D"], Digit7: ["7", "/", "{", "\u215E"], Digit8: ["8", "(", "[", "\u2122"], Digit9: ["9", ")", "]", "\xB1"], Digit0: ["0", "=", "}", "\xB0"], Enter: ["\r", "\r", "\r", "\r"], Escape: ["\x1B", "\x1B", "\x1B", "\x1B"], Backspace: ["\b", "\b", "\b", "\b"], Tab: [" ", "", " ", ""], Space: [" ", " ", " ", " "], Minus: ["\xDF", "?", "\\", "\xBF"], Equal: ["\u0301", "\u0300", "\u0327", "\u0328"], BracketLeft: ["\xFC", "\xDC", "\u0308", "\u030A"], BracketRight: ["+", "*", "~", "\xAF"], Backslash: ["#", "'", "\u2019", "\u0306"], Semicolon: ["\xF6", "\xD6", "\u030B", "\u0323"], Quote: ["\xE4", "\xC4", "\u0302", "\u030C"], Backquote: ["\u0302", "\xB0", "\u2032", "\u2033"], Comma: [",", ";", "\xB7", "\xD7"], Period: [".", ":", "\u2026", "\xF7"], Slash: ["-", "_", "\u2013", "\u2014"], PrintScreen: ["", "", "", ""], PageUp: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], Numpad1: ["", "1", "", "1"], Numpad2: ["", "2", "", "2"], Numpad3: ["", "3", "", "3"], Numpad4: ["", "4", "", "4"], Numpad5: ["", "5", "", "5"], Numpad6: ["", "6", "", "6"], Numpad7: ["", "7", "", "7"], Numpad8: ["", "8", "", "8"], Numpad9: ["", "9", "", "9"], Numpad0: ["", "0", "", "0"], NumpadDecimal: ["", ",", "", ","], IntlBackslash: ["<", ">", "|", "\u0331"], AltRight: ["\r", "\r", "\r", "\r"], MetaRight: [".", ".", ".", "."] } }; +var _m = { id: "apple.spanish", locale: "es", displayName: "Spanish ISO", platform: "apple", virtualLayout: "qwerty", score: 0, mapping: { KeyA: ["a", "A", "\xE5", "\xC5"], KeyB: ["b", "B", "\xDF", ""], KeyC: ["c", "C", "\xA9", " "], KeyD: ["d", "D", "\u2202", "\u2206"], KeyE: ["e", "E", "\u20AC", "\u20AC"], KeyF: ["f", "F", "\u0192", "\uFB01"], KeyG: ["g", "G", "\uF8FF", "\uFB02"], KeyH: ["h", "H", "\u2122", " "], KeyI: ["i", "I", " ", " "], KeyJ: ["j", "J", "\xB6", "\xAF"], KeyK: ["k", "K", "\xA7", "\u02C7"], KeyL: ["l", "L", " ", "\u02D8"], KeyM: ["m", "M", "\xB5", "\u02DA"], KeyN: ["n", "N", " ", "\u02D9"], KeyO: ["o", "O", "\xF8", "\xD8"], KeyP: ["p", "P", "\u03C0", "\u220F"], KeyQ: ["q", "Q", "\u0153", "\u0152"], KeyR: ["r", "R", "\xAE", " "], KeyS: ["s", "S", "\u222B", " "], KeyT: ["t", "T", "\u2020", "\u2021"], KeyU: ["u", "U", " ", " "], KeyV: ["v", "V", "\u221A", "\u25CA"], KeyW: ["w", "W", "\xE6", "\xC6"], KeyX: ["x", "X", "\u2211", "\u203A"], KeyY: ["y", "Y", "\xA5", " "], KeyZ: ["z", "Z", "\u03A9", "\u2039"], Digit1: ["1", "!", "|", "\u0131"], Digit2: ["2", '"', "@", "\u02DD"], Digit3: ["3", "\xB7", "#", "\u2022"], Digit4: ["4", "$", "\xA2", "\xA3"], Digit5: ["5", "%", "\u221E", "\u2030"], Digit6: ["6", "&", "\xAC", " "], Digit7: ["7", "/", "\xF7", "\u2044"], Digit8: ["8", "(", "\u201C", "\u2018"], Digit9: ["9", ")", "\u201D", "\u2019"], Digit0: ["0", "=", "\u2260", "\u2248"], Space: [" ", " ", " ", " "], Minus: ["'", "?", "\xB4", "\xB8"], Equal: ["\xA1", "\xBF", "\u201A", "\u02DB"], BracketLeft: ["`", "^", "[", "\u02C6"], BracketRight: ["+", "*", "]", "\xB1"], Backslash: ["\xE7", "\xC7", "}", "\xBB"], Semicolon: ["\xF1", "\xD1", "~", "\u02DC"], Quote: ["\xB4", "\xA8", "{", "\xAB"], Backquote: ["<", ">", "\u2264", "\u2265"], Comma: [",", ";", "\u201E", ""], Period: [".", ":", "\u2026", "\u2026"], Slash: ["-", "_", "\u2013", "\u2014"], NumpadDivide: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], Numpad1: ["1", "1", "1", "1"], Numpad2: ["2", "2", "2", "2"], Numpad3: ["3", "3", "3", "3"], Numpad4: ["4", "4", "4", "4"], Numpad5: ["5", "5", "5", "5"], Numpad6: ["6", "6", "6", "6"], Numpad7: ["7", "7", "7", "7"], Numpad8: ["8", "8", "8", "8"], Numpad9: ["9", "9", "9", "9"], Numpad0: ["0", "0", "0", "0"], NumpadDecimal: [",", ",", ",", ","], IntlBackslash: ["\xBA", "\xAA", "\\", "\xB0"] } }; +var Mm = { id: "windows.spanish", locale: "es", displayName: "Spanish", platform: "windows", virtualLayout: "qwerty", score: 0, mapping: { KeyA: ["a", "A", "", ""], KeyB: ["b", "B", "", ""], KeyC: ["c", "C", "", ""], KeyD: ["d", "D", "", ""], KeyE: ["e", "E", "\u20AC", ""], KeyF: ["f", "F", "", ""], KeyG: ["g", "G", "", ""], KeyH: ["h", "H", "", ""], KeyI: ["i", "I", "", ""], KeyJ: ["j", "J", "", ""], KeyK: ["k", "K", "", ""], KeyL: ["l", "L", "", ""], KeyM: ["m", "M", "", ""], KeyN: ["n", "N", "", ""], KeyO: ["o", "O", "", ""], KeyP: ["p", "P", "", ""], KeyQ: ["q", "Q", "", ""], KeyR: ["r", "R", "", ""], KeyS: ["s", "S", "", ""], KeyT: ["t", "T", "", ""], KeyU: ["u", "U", "", ""], KeyV: ["v", "V", "", ""], KeyW: ["w", "W", "", ""], KeyX: ["x", "X", "", ""], KeyY: ["y", "Y", "", ""], KeyZ: ["z", "Z", "", ""], Digit1: ["1", "!", "|", ""], Digit2: ["2", '"', "@", ""], Digit3: ["3", "\xB7", "#", ""], Digit4: ["4", "$", "~", ""], Digit5: ["5", "%", "\u20AC", ""], Digit6: ["6", "&", "\xAC", ""], Digit7: ["7", "/", "", ""], Digit8: ["8", "(", "", ""], Digit9: ["9", ")", "", ""], Digit0: ["0", "=", "", ""], Space: [" ", " ", "", ""], Minus: ["'", "?", "", ""], Equal: ["\xA1", "\xBF", "", ""], BracketLeft: ["`", "^", "[", ""], BracketRight: ["+", "*", "]", ""], Backslash: ["\xE7", "\xC7", "}", ""], Semicolon: ["\xF1", "\xD1", "", ""], Quote: ["\xB4", "\xA8", "{", ""], Backquote: ["\xBA", "\xAA", "\\", ""], Comma: [",", ";", "", ""], Period: [".", ":", "", ""], Slash: ["-", "_", "", ""], NumpadDivide: ["/", "/", "", ""], NumpadMultiply: ["*", "*", "", ""], NumpadSubtract: ["-", "-", "", ""], NumpadAdd: ["+", "+", "", ""], IntlBackslash: ["<", ">", "", ""] } }; +var wm = { id: "linux.spanish", locale: "es", displayName: "Spanish", platform: "linux", virtualLayout: "qwerty", score: 0, mapping: { KeyA: ["a", "A", "\xE6", "\xC6"], KeyB: ["b", "B", "\u201D", "\u2019"], KeyC: ["c", "C", "\xA2", "\xA9"], KeyD: ["d", "D", "\xF0", "\xD0"], KeyE: ["e", "E", "\u20AC", "\xA2"], KeyF: ["f", "F", "\u0111", "\xAA"], KeyG: ["g", "G", "\u014B", "\u014A"], KeyH: ["h", "H", "\u0127", "\u0126"], KeyI: ["i", "I", "\u2192", "\u0131"], KeyJ: ["j", "J", "\u0309", "\u031B"], KeyK: ["k", "K", "\u0138", "&"], KeyL: ["l", "L", "\u0142", "\u0141"], KeyM: ["m", "M", "\xB5", "\xBA"], KeyN: ["n", "N", "n", "N"], KeyO: ["o", "O", "\xF8", "\xD8"], KeyP: ["p", "P", "\xFE", "\xDE"], KeyQ: ["q", "Q", "@", "\u03A9"], KeyR: ["r", "R", "\xB6", "\xAE"], KeyS: ["s", "S", "\xDF", "\xA7"], KeyT: ["t", "T", "\u0167", "\u0166"], KeyU: ["u", "U", "\u2193", "\u2191"], KeyV: ["v", "V", "\u201C", "\u2018"], KeyW: ["w", "W", "\u0142", "\u0141"], KeyX: ["x", "X", "\xBB", ">"], KeyY: ["y", "Y", "\u2190", "\xA5"], KeyZ: ["z", "Z", "\xAB", "<"], Digit1: ["1", "!", "|", "\xA1"], Digit2: ["2", '"', "@", "\u215B"], Digit3: ["3", "\xB7", "#", "\xA3"], Digit4: ["4", "$", "~", "$"], Digit5: ["5", "%", "\xBD", "\u215C"], Digit6: ["6", "&", "\xAC", "\u215D"], Digit7: ["7", "/", "{", "\u215E"], Digit8: ["8", "(", "[", "\u2122"], Digit9: ["9", ")", "]", "\xB1"], Digit0: ["0", "=", "}", "\xB0"], Enter: ["\r", "\r", "\r", "\r"], Escape: ["\x1B", "\x1B", "\x1B", "\x1B"], Backspace: ["\b", "\b", "\b", "\b"], Tab: [" ", "", " ", ""], Space: [" ", " ", " ", " "], Minus: ["'", "?", "\\", "\xBF"], Equal: ["\xA1", "\xBF", "\u0303", "~"], BracketLeft: ["\u0300", "\u0302", "[", "\u030A"], BracketRight: ["+", "*", "]", "\u0304"], Backslash: ["\xE7", "\xC7", "}", "\u0306"], Semicolon: ["\xF1", "\xD1", "~", "\u030B"], Quote: ["\u0301", "\u0308", "{", "{"], Backquote: ["\xBA", "\xAA", "\\", "\\"], Comma: [",", ";", "\u2500", "\xD7"], Period: [".", ":", "\xB7", "\xF7"], Slash: ["-", "_", "\u0323", "\u0307"], NumpadDivide: ["/", "/", "/", "/"], NumpadMultiply: ["*", "*", "*", "*"], NumpadSubtract: ["-", "-", "-", "-"], NumpadAdd: ["+", "+", "+", "+"], NumpadEnter: ["\r", "\r", "\r", "\r"], Numpad1: ["", "1", "", "1"], Numpad2: ["", "2", "", "2"], Numpad3: ["", "3", "", "3"], Numpad4: ["", "4", "", "4"], Numpad5: ["", "5", "", "5"], Numpad6: ["", "6", "", "6"], Numpad7: ["", "7", "", "7"], Numpad8: ["", "8", "", "8"], Numpad9: ["", "9", "", "9"], Numpad0: ["", "0", "", "0"], NumpadDecimal: ["", ".", "", "."], IntlBackslash: ["<", ">", "|", "\xA6"], NumpadEqual: ["=", "=", "=", "="], NumpadComma: [".", ".", ".", "."], NumpadParenLeft: ["(", "(", "(", "("], NumpadParenRight: [")", ")", ")", ")"] } }; +function Cl(t37) { + let e = t37.split("+"), r = { shift: false, alt: false, cmd: false, win: false, meta: false, ctrl: false, key: e.pop() }; + return e.includes("shift") && (r.shift = true), e.includes("alt") && (r.alt = true), e.includes("ctrl") && (r.ctrl = true), e.includes("cmd") && (r.cmd = true), e.includes("win") && (r.win = true), e.includes("meta") && (r.meta = true), r; +} +function jr(t37) { + let e = ""; + return t37.shift && (e += "shift+"), t37.alt && (e += "alt+"), t37.ctrl && (e += "ctrl+"), t37.cmd && (e += "cmd+"), t37.win && (e += "win+"), t37.meta && (e += "meta+"), e + t37.key; +} +var ff = { enter: "[Enter]", escape: "[Escape]", backspace: "[Backspace]", tab: "[Tab]", space: "[Space]", pausebreak: "[Pause]", insert: "[Insert]", home: "[Home]", pageup: "[PageUp]", delete: "[Delete]", end: "[End]", pagedown: "[PageDown]", right: "[ArrowRight]", left: "[ArrowLeft]", down: "[ArrowDown]", up: "[ArrowUp]", numpad0: "[Numpad0]", numpad1: "[Numpad1]", numpad2: "[Numpad2]", numpad3: "[Numpad3]", numpad4: "[Numpad4]", numpad5: "[Numpad5]", numpad6: "[Numpad6]", numpad7: "[Numpad7]", numpad8: "[Numpad8]", numpad9: "[Numpad9]", numpad_divide: "[NumpadDivide]", numpad_multiply: "[NumpadMultiply]", numpad_subtract: "[NumpadSubtract]", numpad_add: "[NumpadAdd]", numpad_decimal: "[NumpadDecimal]", numpad_separator: "[NumpadComma]", capslock: "[Capslock]", f1: "[F1]", f2: "[F2]", f3: "[F3]", f4: "[F4]", f5: "[F5]", f6: "[F6]", f7: "[F7]", f8: "[F8]", f9: "[F9]", f10: "[F10]", f11: "[F11]", f12: "[F12]", f13: "[F13]", f14: "[F14]", f15: "[F15]", f16: "[F16]", f17: "[F17]", f18: "[F18]", f19: "[F19]" }; +var Hn = []; +var Gr; +function El() { + switch (yt()) { + case "macos": + case "ios": + return "apple"; + case "windows": + return "windows"; + } + return "linux"; +} +function Pe(t37) { + (!t37.platform || t37.platform === El()) && Hn.push(t37); +} +function km(t37, e) { + var i; + let r = { shift: false, alt: false, cmd: false, win: false, meta: false, ctrl: false, key: "" }; + if (!t37) + return r; + for (let [n, o] of Object.entries(e.mapping)) { + if (o[0] === t37) + return r.key = `[${n}]`, r; + if (o[1] === t37) + return r.shift = true, r.key = `[${n}]`, r; + if (o[2] === t37) + return r.alt = true, r.key = `[${n}]`, r; + if (o[3] === t37) + return r.shift = true, r.alt = true, r.key = `[${n}]`, r; + } + return r.key = (i = ff[t37]) != null ? i : "", r; +} +function Sm(t37) { + if (t37.code) + return t37; + let e = Object.entries(vr().mapping), r = false, i = false, n = ""; + for (let o = 0; o < 4; o++) { + for (let [a, s] of e) + if (s[o] === t37.key) { + n = a, o === 3 ? (r = true, i = true) : o === 2 ? r = true : o === 1 && (i = true); + break; + } + if (n) + break; + } + return new KeyboardEvent(t37.type, g(p({}, t37), { altKey: r, shiftKey: i, code: n })); +} +function Lm(t37) { + var r, i; + if (!t37 || t37.key === "Unidentified" || t37.key === "Dead") + return; + let e = t37.shiftKey && t37.altKey ? 3 : t37.altKey ? 2 : t37.shiftKey ? 1 : 0; + for (let n of Hn) + ((r = n.mapping[t37.code]) == null ? void 0 : r[e]) === t37.key ? n.score += 1 : (i = n.mapping[t37.code]) != null && i[e] && (n.score = 0); + Hn.sort((n, o) => o.score - n.score); +} +function Am(t37) { + Gr = Hn.find((e) => t37.startsWith(e.locale)); +} +function vr() { + return Gr != null ? Gr : Hn[0]; +} +function Cm() { + switch (El()) { + case "apple": + return Pa; + case "windows": + return Ll; + case "linux": + return Al; + } + return Pa; +} +switch (El()) { + case "apple": + Pe(Pa), Pe(fm), Pe(_m), Pe(bm); + break; + case "windows": + Pe(Ll), Pe(gm), Pe(Mm), Pe(xm); + break; + case "linux": + Pe(Al), Pe(ym), Pe(wm), Pe(vm); + break; +} +Pe(hm); +function ji(t37) { + var n; + let e = /macos|ios/.test(yt()), r = t37.split("+"), i = ""; + for (let o of r) + i && (i += e ? "\u2009" : '+'), o.startsWith("[Key") ? i += o.slice(4, 5) : o.startsWith("Key") ? i += o.slice(3, 4) : o.startsWith("[Digit") ? i += o.slice(6, 7) : o.startsWith("Digit") ? i += o.slice(5, 6) : i += (n = { cmd: "\u2318", meta: e ? "\u2318" : "Ctrl", shift: e ? "\u21E7" : "Shift", alt: e ? "\u2325" : "Alt", ctrl: e ? "\u2303" : "Ctrl", "\n": e ? "\u23CE" : "Return", "[return]": e ? "\u23CE" : "Return", "[enter]": e ? "\u2324" : "Enter", "[tab]": e ? "\u21E5" : "Tab", "[escape]": "Esc", "[backspace]": e ? "\u232B" : "Backspace", "[delete]": e ? "\u2326" : "Del", "[pageup]": e ? "\u21DE" : "Page Up", "[pagedown]": e ? "\u21DF" : "Page Down", "[home]": e ? "\u2912" : "Home", "[end]": e ? "\u2913" : "End", "[space]": "Space", "[equal]": "=", "[minus]": "-", "[comma]": ",", "[slash]": "/", "[backslash]": "\\", "[bracketleft]": "[", "[bracketright]": "]", semicolon: ";", period: ".", comma: ",", minus: "-", equal: "=", quote: "'", backslash: "\\", intlbackslash: "\\", backquote: "`", slash: "/", numpadmultiply: "* 🔢", numpaddivide: "/ 🔢", numpadsubtract: "- 🔢", numpadadd: "+ 🔢", numpaddecimal: ". 🔢", numpadcomma: ", 🔢", help: "help", left: "\u21E0", up: "\u21E1", right: "\u21E2", down: "\u21E3", "[arrowleft]": "\u21E0", "[arrowup]": "\u21E1", "[arrowright]": "\u21E2", "[arrowdown]": "\u21E3" }[o.toLowerCase()]) != null ? n : o.toUpperCase(); + return i; +} +function Xi(t37) { + if (t37 instanceof MouseEvent || t37 instanceof PointerEvent) + return { x: t37.clientX, y: t37.clientY }; + if (typeof TouchEvent != "undefined" && t37 instanceof TouchEvent) { + let e = [...t37.touches].reduce((i, n) => ({ x: i.x + n.clientX, y: i.y + n.clientY }), { x: 0, y: 0 }), r = t37.touches.length; + return { x: e.x / r, y: e.y / r }; + } +} +function Kt(t37) { + let e = { alt: false, control: false, shift: false, meta: false }; + return (t37 instanceof MouseEvent || t37 instanceof PointerEvent || typeof TouchEvent != "undefined" && t37 instanceof TouchEvent || t37 instanceof KeyboardEvent) && (t37.altKey && (e.alt = true), t37.ctrlKey && (e.control = true), t37.metaKey && (e.meta = true), t37.shiftKey && (e.shift = true)), e; +} +function Em(t37, e) { + return !t37 && e || t37 && !e ? false : !t37 || !e ? true : t37.alt === e.alt && t37.control === e.control && t37.shift === e.shift && t37.meta === e.meta; +} +var gf = /* @__PURE__ */ new Set(["Backquote", "Digit0", "Digit1", "Digit2", "Digit3", "Digit4", "Digit5", "Digit6", "Digit7", "Digit8", "Digit9", "Minus", "Equal", "IntlYen", "KeyQ", "KeyW", "KeyE", "KeyR", "KeyT", "KeyY", "KeyU", "KeyI", "KeyO", "KeyP", "BracketLeft", "BracketRight", "Backslash", "KeyA", "KeyS", "KeyD", "KeyF", "KeyG", "KeyH", "KeyJ", "KeyK", "KeyL", "Semicolon", "Quote", "IntlBackslash", "KeyZ", "KeyX", "KeyC", "KeyV", "KeyB", "KeyN", "KeyM", "Comma", "Period", "Slash", "IntlRo", "Space", "Numpad0", "Numpad1", "Numpad2", "Numpad3", "Numpad4", "Numpad5", "Numpad6", "Numpad7", "Numpad8", "Numpad9", "NumpadAdd", "NumpadComma", "NumpadDecimal", "NumpadDivide", "NumpadEqual", "NumpadHash", "NumpadMultiply", "NumpadParenLeft", "NumpadParenRight", "NumpadStar", "NumpadSubstract"]); +function _r(t37) { + return t37.ctrlKey || t37.metaKey || ["Dead", "Process"].includes(t37.key) ? false : t37.code === "" ? true : gf.has(t37.code); +} +function Xr() { + var e; + let t37 = document.activeElement; + for (; (e = t37 == null ? void 0 : t37.shadowRoot) != null && e.activeElement; ) + t37 = t37.shadowRoot.activeElement; + return t37; +} +var _e = class t32 { + static get scrim() { + return t32._scrim || (t32._scrim = new t32()), t32._scrim; + } + static open(e) { + t32.scrim.open(e); + } + static close() { + t32.scrim.close(); + } + static get state() { + return t32.scrim.state; + } + static get element() { + return t32.scrim.element; + } + constructor(e) { + var r, i; + this.lightDismiss = (r = e == null ? void 0 : e.lightDismiss) != null ? r : true, this.translucent = (i = e == null ? void 0 : e.translucent) != null ? i : false, this.state = "closed"; + } + get element() { + if (this._element) + return this._element; + let e = document.createElement("div"); + return e.setAttribute("role", "presentation"), e.style.position = "fixed", e.style.contain = "content", e.style.top = "0", e.style.left = "0", e.style.right = "0", e.style.bottom = "0", e.style.zIndex = "var(--scrim-zindex, 10099)", e.style.outline = "none", this.translucent ? (e.style.background = "rgba(255, 255, 255, .2)", e.style.backdropFilter = "contrast(40%)") : e.style.background = "transparent", this._element = e, e; + } + open(e) { + var o; + if (this.state !== "closed") + return; + this.state = "opening", this.onDismiss = e == null ? void 0 : e.onDismiss, this.savedActiveElement = Xr(); + let { element: r } = this; + ((o = e == null ? void 0 : e.root) != null ? o : document.body).appendChild(r), r.addEventListener("click", this), document.addEventListener("touchmove", this, false), document.addEventListener("scroll", this, false); + let i = window.innerWidth - document.documentElement.clientWidth; + this.savedMarginRight = document.body.style.marginRight, this.savedOverflow = document.body.style.overflow, document.body.style.overflow = "hidden"; + let n = Number.parseFloat(getComputedStyle(document.body).marginRight); + document.body.style.marginRight = `${n + i}px`, e != null && e.child && r.append(e.child), this.state = "open"; + } + close() { + var r, i, n, o; + if (this.state !== "open") { + this.element.parentElement; + return; + } + this.state = "closing", typeof this.onDismiss == "function" && this.onDismiss(), this.onDismiss = void 0; + let { element: e } = this; + e.removeEventListener("click", this), document.removeEventListener("touchmove", this, false), document.removeEventListener("scroll", this, false), e.remove(), document.body.style.overflow = (r = this.savedOverflow) != null ? r : "", document.body.style.marginRight = (i = this.savedMarginRight) != null ? i : "", Xr() !== this.savedActiveElement && ((o = (n = this.savedActiveElement) == null ? void 0 : n.focus) == null || o.call(n)), e.innerHTML = "", this.state = "closed"; + } + handleEvent(e) { + this.lightDismiss && (e.target === this._element && e.type === "click" ? (this.close(), e.preventDefault(), e.stopPropagation()) : e.target === document && (e.type === "touchmove" || e.type === "scroll") && (this.close(), e.preventDefault(), e.stopPropagation())); + } +}; +function Tm(t37, e, r) { + let i = null, n = null, o = false, a = false, s = false, l = new AbortController(), c = l.signal; + return t37.addEventListener("keydown", (u) => { + if (o || u.key === "Process" || u.code === "CapsLock" || /(Control|Meta|Alt|Shift)(Left|Right)/.test(u.code)) { + i = null; + return; + } + i = u, n = null, r.onKeystroke(u) ? t37.textContent = "" : i = null; + }, { capture: true, signal: c }), t37.addEventListener("keypress", (u) => { + o || (i && n && r.onKeystroke(i), n = u); + }, { capture: true, signal: c }), t37.addEventListener("compositionstart", (u) => { + t37.textContent = "", o = true, r.onCompositionStart(u.data); + }, { capture: true, signal: c }), t37.addEventListener("compositionupdate", (u) => { + o && r.onCompositionUpdate(u.data); + }, { capture: true, signal: c }), t37.addEventListener("compositionend", (u) => { + t37.textContent = "", o && (o = false, r.onCompositionEnd(u.data)); + }, { capture: true, signal: c }), t37.addEventListener("beforeinput", (u) => u.stopImmediatePropagation(), { signal: c }), t37.addEventListener("input", (u) => { + var d; + if (!o && (t37.textContent = "", u.inputType !== "insertCompositionText")) { + if (u.inputType === "insertFromPaste") { + u.preventDefault(), u.stopPropagation(); + return; + } + r.onInput((d = u.data) != null ? d : ""), u.preventDefault(), u.stopPropagation(); + } + }, { signal: c }), t37.addEventListener("paste", (u) => { + t37.focus({ preventScroll: true }), t37.textContent = "", r.onPaste(u) || u.preventDefault(), u.stopImmediatePropagation(); + }, { signal: c }), t37.addEventListener("cut", (u) => r.onCut(u), { capture: true, signal: c }), t37.addEventListener("copy", (u) => r.onCopy(u), { capture: true, signal: c }), t37.addEventListener("blur", (u) => { + var f, b; + if (((b = (f = u.relatedTarget) == null ? void 0 : f._mathfield) == null ? void 0 : b.element) === e) { + t37.focus({ preventScroll: true }), u.preventDefault(), u.stopPropagation(); + return; + } + let d = false, m = u.relatedTarget; + for (; m; ) { + if (m.classList.contains("ML__keyboard")) { + d = true; + break; + } + m = m.parentElement; + } + if (d) { + t37.focus({ preventScroll: true }), u.preventDefault(), u.stopPropagation(); + return; + } + let h = _e.state; + if (h === "open" || h === "opening") { + u.preventDefault(), u.stopPropagation(); + return; + } + if (u.relatedTarget === u.target.getRootNode().host) { + u.preventDefault(), u.stopPropagation(); + return; + } + s || a || (s = true, i = null, n = null, r.onBlur(), s = false); + }, { capture: true, signal: c }), t37.addEventListener("focus", (u) => { + s || a || (a = true, r.onFocus(), a = false); + }, { capture: true, signal: c }), { dispose: () => l.abort(), cancelComposition: () => { + o && (t37.blur(), requestAnimationFrame(() => t37.focus({ preventScroll: true }))); + }, blur: () => { + typeof t37.blur == "function" && t37.blur(); + }, focus: () => { + !a && typeof t37.focus == "function" && t37.focus({ preventScroll: true }); + }, hasFocus: () => Xr() === t37, setAriaLabel: (u) => t37.setAttribute("aria-label", u), setValue: (u) => { + var d; + t37.textContent = u, t37.style.left = "-1000px", (d = window.getSelection()) == null || d.selectAllChildren(t37); + }, moveTo: (u, d) => { + t37.style.top = `${d}px`, t37.style.left = `${u}px`; + } }; +} +function Mr(t37) { + var r; + if (!t37 || !_r(t37)) + return ""; + let e; + return t37.key === "Unidentified" && t37.target && (e = t37.target.value), e = (r = e != null ? e : t37.key) != null ? r : t37.code, /^(Dead|Return|Enter|Tab|Escape|Delete|PageUp|PageDown|Home|End|Help|ArrowLeft|ArrowRight|ArrowUp|ArrowDown)$/.test(e) && (e = ""), e; +} +function Ra(t37) { + t37 = Sm(t37); + let e = []; + return t37.ctrlKey && e.push("ctrl"), t37.metaKey && e.push("meta"), t37.altKey && e.push("alt"), t37.shiftKey && e.push("shift"), e.length === 0 ? `[${t37.code}]` : (e.push(`[${t37.code}]`), e.join("+")); +} +function yf(t37) { + if (fe()) { + let e = yt(), r = t37.startsWith("!"), i = t37.endsWith(e); + if (r && !i || !r && i) + return true; + } + return t37 === "!other" ? false : t37 === "other"; +} +function Km(t37, e, r) { + if (t37.length === 0) + return ""; + let i = jr(Cl(Ra(r))), n = jr({ key: r.key, shift: r.shiftKey, alt: r.altKey, ctrl: r.ctrlKey, meta: r.metaKey || r.ctrlKey && /macos|ios/.test(yt()), cmd: false, win: false }); + for (let o = t37.length - 1; o >= 0; o--) + if ((t37[o].key === i || t37[o].key === n) && (!t37[o].ifMode || t37[o].ifMode === e)) + return t37[o].command; + return ""; +} +function Dm(t37) { + let e = t37; + return X(e) && (e = e.length > 0 ? e[0] + "(" + e.slice(1).join("") + ")" : ""), e; +} +function Bm(t37, e) { + let r = []; + if (typeof e == "string") { + let o = $0[e]; + X(o) ? r = o.slice() : o && r.push(o); + } + let i = Dm(e), n = new RegExp("^" + i.replace("\\", "\\\\").replace("|", "\\|").replace("*", "\\*").replace("$", "\\$").replace("^", "\\^") + "([^*a-zA-Z]|$)"); + for (let o of t37) + n.test(Dm(o.command)) && r.push(o.key); + return r.map(ji); +} +function bf(t37, e) { + if (t37.ifPlatform && !/^!?(macos|windows|android|ios|chromeos|other)$/.test(t37.ifPlatform)) + throw new Error(`Unexpected platform "${t37.ifPlatform}" for keybinding ${t37.key}`); + if (t37.ifLayout !== void 0 && (e.score === 0 || !t37.ifLayout.includes(e.id))) + return; + let r = Cl(t37.key), i = t37.ifPlatform; + if (r.cmd) { + if (i && i !== "macos" && i !== "ios") + throw new Error('Unexpected "cmd" modifier with platform "' + i + `" +"cmd" modifier can only be used with macOS or iOS platform.`); + i || (i = yt() === "ios" ? "ios" : "macos"), r.win = false, r.cmd = false, r.meta = true; + } + if (r.win) { + if (i && i !== "windows") + throw new Error('Unexpected "win" modifier with platform "' + i + `" +"win" modifier can only be used with Windows platform.`); + i = "windows", r.win = false, r.cmd = false, r.meta = true; + } + if (i && !yf(i)) + return; + if (/^\[.+\]$/.test(r.key)) + return g(p({}, t37), { key: jr(r) }); + let n = km(r.key, e); + if (!n) + return g(p({}, t37), { key: jr(r) }); + if (n.shift && r.shift || n.alt && r.alt) + throw new Error(`The keybinding ${t37.key} (${Tl(t37.command)}) is conflicting with the key combination ${jr(n)} using the ${e.displayName} keyboard layout`); + return n.shift = n.shift || r.shift, n.alt = n.alt || r.alt, n.meta = r.meta, n.ctrl = r.ctrl, g(p({}, t37), { key: jr(n) }); +} +function Tl(t37) { + if (Array.isArray(t37)) { + let e = [...t37]; + return e.shift() + "(" + e.map((r) => typeof r == "string" ? `"${r}"` : r.toString()).join(", ") + ")"; + } + return t37; +} +function Om(t37, e) { + let r = [], i = []; + for (let n of t37) + try { + let o = bf(n, e); + if (!o) + continue; + let a = i.find((s) => s.key === o.key && s.ifMode === o.ifMode); + if (a) + throw new Error(`Ambiguous key binding ${n.key} (${Tl(n.command)}) matches ${a.key} (${Tl(a.command)}) with the ${e.displayName} keyboard layout`); + i.push(o); + } catch (o) { + o instanceof Error && r.push(o.message); + } + return [i, r]; +} +var Dl = class extends z { + constructor() { + super("latex"); + } + createAtom(e) { + return new ie(e); + } + onPaste(e, r) { + if (!r) + return false; + let i = typeof r == "string" ? r : r.getData("application/x-latex") || r.getData("text/plain"); + return i && e.model.contentWillChange({ inputType: "insertFromPaste", data: i }) ? (e.stopCoalescingUndo(), e.stopRecording(), this.insert(e.model, i) && (e.startRecording(), e.snapshot("paste"), e.model.contentDidChange({ inputType: "insertFromPaste" }), V(e)), e.startRecording(), true) : false; + } + insert(e, r, i) { + if (!e.contentWillChange({ data: r, inputType: "insertText" })) + return false; + i || (i = {}), i.insertionMode || (i.insertionMode = "replaceSelection"), i.selectionMode || (i.selectionMode = "placeholder"); + let { silenceNotifications: n } = e; + i.silenceNotifications && (e.silenceNotifications = true); + let o = e.silenceNotifications; + e.silenceNotifications = true, i.insertionMode === "replaceSelection" && !e.selectionIsCollapsed ? e.deleteAtoms(te(e.selection)) : i.insertionMode === "replaceAll" ? (e.root.setChildren([], "body"), e.position = 0) : i.insertionMode === "insertBefore" ? e.collapseSelection("backward") : i.insertionMode === "insertAfter" && e.collapseSelection("forward"); + let a = []; + for (let c of r) + Bc.test(c) && a.push(new ie(c)); + let s = e.at(e.position); + if (s instanceof Ct && (s = s.lastChild), !(s.parent instanceof Ct)) { + let c = new Ct(); + s.parent.addChildAfter(c, s), s = c.firstChild; + } + let l = s.parent.addChildrenAfter(a, s); + return e.silenceNotifications = o, i.selectionMode === "before" || (i.selectionMode === "item" ? e.setSelection(e.anchor, e.offsetOf(l)) : l && (e.position = e.offsetOf(l))), e.contentDidChange({ data: r, inputType: "insertText" }), e.silenceNotifications = n, true; + } +}; +function Wn(t37) { + return t37.atoms.find((e) => e.type === "latexgroup"); +} +function Un(t37) { + var r, i; + let e = Wn(t37); + return (i = (r = e == null ? void 0 : e.body) == null ? void 0 : r.filter((n) => n.type === "latex")) != null ? i : []; +} +function Ia(t37, e) { + var s; + let r = 0, i = false, n = Number.isFinite(e == null ? void 0 : e.before) ? (s = e == null ? void 0 : e.before) != null ? s : 0 : t37.lastOffset; + for (; r <= n && !i; ) { + let l = t37.at(r); + i = l instanceof ie && l.isSuggestion, i || r++; + } + if (!i) + return [void 0, void 0]; + let o = r, a = false; + for (; o <= n && !a; ) { + let l = t37.at(o); + a = !(l instanceof ie && l.isSuggestion), a || o++; + } + return [r - 1, o - 1]; +} +new Dl(); +function Zr(t37) { + let e = Un(t37.model).filter((r) => r.isSuggestion); + if (e.length !== 0) { + t37.model.position = t37.model.offsetOf(e[0].leftSibling); + for (let r of e) + r.parent.removeChild(r); + } +} +function kr(t37, e) { + var c; + let { model: r } = t37; + Zr(t37); + for (let u of Un(r)) + u.isError = false; + if (!r.selectionIsCollapsed || t37.options.popoverPolicy === "off") { + wr(t37); + return; + } + let i = [], n = r.at(r.position); + for (; n && n instanceof ie && /^[a-zA-Z\*]$/.test(n.value); ) + n = n.leftSibling; + if (n && n instanceof ie && n.value === "\\") + for (i.push(n), n = n.rightSibling; n && n instanceof ie && /^[a-zA-Z\*]$/.test(n.value); ) + i.push(n), n = n.rightSibling; + let o = i.map((u) => u.value).join(""), a = Pc(t37, o); + if (a.length === 0) { + if (/^\\[a-zA-Z\*]+$/.test(o)) + for (let u of i) + u.isError = true; + wr(t37); + return; + } + let s = (c = e == null ? void 0 : e.atIndex) != null ? c : 0; + t37.suggestionIndex = s < 0 ? a.length - 1 : s % a.length; + let l = a[t37.suggestionIndex]; + if (l !== o) { + let u = i[i.length - 1]; + u.parent.addChildrenAfter([...l.slice(o.length - l.length)].map((d) => new ie(d, { isSuggestion: true })), u), st(t37, { interactive: true }); + } + Pm(t37, a); +} +function Kl(t37) { + let [e, r] = Ia(t37, { before: t37.position }); + if (e === void 0 || r === void 0) + return false; + let i = false; + return t37.getAtoms([e, r]).forEach((n) => { + n.isSuggestion && (n.isSuggestion = false, i = true); + }), i; +} +function Bt(t37, e = "accept", r) { + var s, l; + wr(t37); + let i = Wn(t37.model); + if (!i) + return false; + if (e === "accept-suggestion" || e === "accept-all") { + let c = Un(t37.model).filter((u) => u.isSuggestion); + if (c.length !== 0) { + for (let u of c) + u.isSuggestion = false; + t37.model.position = t37.model.offsetOf(c[c.length - 1]); + } + if (e === "accept-suggestion") + return c.length !== 0; + } + let o = Un(t37.model).filter((c) => !c.isSuggestion).map((c) => c.value).join(""), a = i.leftSibling; + return i.parent.removeChild(i), t37.model.position = t37.model.offsetOf(a), t37.switchMode((s = r == null ? void 0 : r.mode) != null ? s : "math"), e === "reject" || (z.insert(t37.model, o, { selectionMode: (l = r == null ? void 0 : r.selectItem) != null && l ? "item" : "placeholder", format: "latex", mode: "math" }), t37.snapshot(), t37.model.announce("replacement"), t37.switchMode("math")), true; +} +function Yr(t37) { + var r; + let e = document.getElementById(t37); + return e ? e.dataset.refcount = Number(Number.parseInt((r = e.dataset.refcount) != null ? r : "0") + 1).toString() : (e = document.createElement("div"), e.setAttribute("aria-hidden", "true"), e.dataset.refcount = "1", e.id = t37, document.body.append(e)), e; +} +function Zi(t37) { + var i; + let e = document.getElementById(t37); + if (!e) + return; + let r = Number.parseInt((i = e.getAttribute("data-refcount")) != null ? i : "0"); + r <= 1 ? e.remove() : e.dataset.refcount = Number(r - 1).toString(); +} +function xf(t37, e) { + let r = new T({ from: t37.context }), i = new y({ mode: "math", type: "root", body: se(e, { context: r }) }), n = dr(Tt(new w(i.render(r), { classes: "ML__base" }), r)); + return mr(n, { classes: "ML__latex" }).toMarkup(); +} +function Pm(t37, e) { + var n; + if (e.length === 0) { + wr(t37); + return; + } + let r = ""; + for (let [o, a] of e.entries()) { + let s = a, l = xf(t37, a), c = Bm(t37.keybindings, s).join("
"); + r += `
  • ${s}${l}`, c && (r += `${c}`), r += "
  • "; + } + let i = vf(t37, `
      ${r}
    `); + Bl() && ((n = i.querySelector(".ML__popover__current")) == null || n.scrollIntoView({ block: "nearest", inline: "nearest" })), setTimeout(() => { + var o; + i && !Bl() && (i.classList.add("is-visible"), Yi(t37), (o = i.querySelector(".ML__popover__current")) == null || o.scrollIntoView({ block: "nearest", inline: "nearest" })); + }, 32); +} +function Bl() { + let t37 = document.getElementById("mathlive-suggestion-popover"); + return t37 ? t37.classList.contains("is-visible") : false; +} +function Yi(t37, e) { + var d, m, h; + if (!t37.element || t37.element.mathfield !== t37 || !Bl()) + return; + if (((d = t37.model.at(t37.model.position)) == null ? void 0 : d.type) !== "latex") { + wr(t37); + return; + } + if (e != null && e.deferred) { + setTimeout(() => Yi(t37), 32); + return; + } + let r = Ri(t37.field); + if (!r) + return; + let i = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight, n = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth, o = window.innerWidth - document.documentElement.clientWidth, a = window.innerHeight - document.documentElement.clientHeight, s = (h = (m = window.mathVirtualKeyboard) == null ? void 0 : m.boundingRect.height) != null ? h : 0, l = document.getElementById("mathlive-suggestion-popover"); + r.x + l.offsetWidth / 2 > n - o ? l.style.left = `${n - l.offsetWidth - o}px` : r.x - l.offsetWidth / 2 < 0 ? l.style.left = "0" : l.style.left = `${r.x - l.offsetWidth / 2}px`; + let c = r.y - r.height; + i - a - s - r.y < c ? (l.classList.add("ML__popover--reverse-direction"), l.classList.remove("top-tip"), l.classList.add("bottom-tip"), l.style.top = `${r.y - r.height - l.offsetHeight - 15}px`) : (l.classList.remove("ML__popover--reverse-direction"), l.classList.add("top-tip"), l.classList.remove("bottom-tip"), l.style.top = `${r.y + 15}px`); +} +function wr(t37) { + t37.suggestionIndex = 0; + let e = document.getElementById("mathlive-suggestion-popover"); + e && (e.classList.remove("is-visible"), e.innerHTML = ""); +} +function vf(t37, e) { + let r = document.getElementById("mathlive-suggestion-popover"); + return r || (r = Yr("mathlive-suggestion-popover"), Oe("suggestion-popover"), Oe("core"), r.addEventListener("pointerdown", (i) => i.preventDefault()), r.addEventListener("click", (i) => { + let n = i.target; + for (; n && !n.dataset.command; ) + n = n.parentElement; + n && (Bt(t37, "reject"), z.insert(t37.model, n.dataset.command, { selectionMode: "placeholder", format: "latex", mode: "math" }), t37.dirty = true, t37.focus()); + })), r.innerHTML = globalThis.MathfieldElement.createHTML(e), r; +} +function Rm() { + document.getElementById("mathlive-suggestion-popover") && (Zi("mathlive-suggestion-popover"), Ve("suggestion-popover"), Ve("core")); +} +function _f() { + let t37 = String(new Error().stack).replace(/^Error.*\n/, "").split(` +`); + if (t37.length === 0) + return console.error(`Can't use relative paths to specify assets location because the sourcefile location could not be determined (unexpected stack trace format "${new Error().stack}").`), ""; + let e = t37[1], r = e.match(/http.*\.ts[\?:]/); + return r && (e = t37[2]), r = e.match(/(https?:.*):[0-9]+:[0-9]+/), r || (r = e.match(/at (.*(\.ts))[\?:]/), r || (r = e.match(/at (.*(\.mjs|\.js))[\?:]/))), r ? r[1] : (console.error(t37), console.error(`Can't use relative paths to specify assets location because the source file location could not be determined (unexpected location "${e}").`), ""); +} +var Jn = null; +var Im; +var zm; +var Ol = ((zm = (Im = globalThis == null ? void 0 : globalThis.document) == null ? void 0 : Im.currentScript) == null ? void 0 : zm.src) || _f(); +async function za(t37) { + if (/^(?:[a-z+]+:)?\/\//i.test(t37)) { + try { + return new URL(t37).href; + } catch (e) { + } + if (t37.startsWith("//")) + try { + return new URL(`${window.location.protocol}${t37}`).href; + } catch (e) { + } + return t37; + } + if (Jn === null) + try { + let e = await fetch(Ol, { method: "HEAD" }); + e.status === 200 && (Jn = e.url); + } catch (e) { + console.error(`Invalid URL "${t37}" (relative to "${Ol}")`); + } + return new URL(t37, Jn != null ? Jn : Ol).href; +} +function Mf(t37, e, r = {}) { + return new FontFace(t37, `url(${e}.woff2) format('woff2')`, r); +} +var Ee = "not-loaded"; +async function Nm() { + return Ee = "not-loaded", Qr(); +} +async function Qr() { + var e; + if (Ee !== "not-loaded") + return; + if (Ee = "loading", (e = getComputedStyle(document.documentElement).getPropertyValue("--ML__static-fonts")) != null ? e : false) { + Ee = "ready"; + return; + } + if (document.body.classList.remove("ML__fonts-did-not-load"), "fonts" in document) { + let r = ["KaTeX_Main", "KaTeX_Math", "KaTeX_AMS", "KaTeX_Caligraphic", "KaTeX_Fraktur", "KaTeX_SansSerif", "KaTeX_Script", "KaTeX_Typewriter", "KaTeX_Size1", "KaTeX_Size2", "KaTeX_Size3", "KaTeX_Size4"], i = Array.from(document.fonts).map((a) => a.family); + if (r.every((a) => i.includes(a))) { + Ee = "ready"; + return; + } + if (!globalThis.MathfieldElement.fontsDirectory) { + Ee = "not-loaded"; + return; + } + let n = await za(globalThis.MathfieldElement.fontsDirectory); + if (!n) { + document.body.classList.add("ML__fonts-did-not-load"), Ee = "error"; + return; + } + let o = [["KaTeX_Main-Regular"], ["KaTeX_Main-BoldItalic", { style: "italic", weight: "bold" }], ["KaTeX_Main-Bold", { weight: "bold" }], ["KaTeX_Main-Italic", { style: "italic" }], ["KaTeX_Math-Italic", { style: "italic" }], ["KaTeX_Math-BoldItalic", { style: "italic", weight: "bold" }], ["KaTeX_AMS-Regular"], ["KaTeX_Caligraphic-Regular"], ["KaTeX_Caligraphic-Bold", { weight: "bold" }], ["KaTeX_Fraktur-Regular"], ["KaTeX_Fraktur-Bold", { weight: "bold" }], ["KaTeX_SansSerif-Regular"], ["KaTeX_SansSerif-Bold", { weight: "bold" }], ["KaTeX_SansSerif-Italic", { style: "italic" }], ["KaTeX_Script-Regular"], ["KaTeX_Typewriter-Regular"], ["KaTeX_Size1-Regular"], ["KaTeX_Size2-Regular"], ["KaTeX_Size3-Regular"], ["KaTeX_Size4-Regular"]].map((a) => Mf(a[0].replace(/-[a-zA-Z]+$/, ""), `${n}/${a[0]}`, a[1])); + try { + (await Promise.all(o.map((s) => { + try { + return s.load(); + } catch (l) { + } + }))).forEach((s) => document.fonts.add(s)), Ee = "ready"; + return; + } catch (a) { + console.error(`MathLive 0.100.0: The math fonts could not be loaded from "${n}"`, { cause: a }), document.body.classList.add("ML__fonts-did-not-load"); + } + Ee = "error"; + } +} +function Fm(t37, e = 0) { + let r = 3735928559 ^ e, i = 1103547991 ^ e; + for (let n = 0; n < t37.length; n++) { + let o = t37.charCodeAt(n); + r = Math.imul(r ^ o, 2654435761), i = Math.imul(i ^ o, 1597334677); + } + return r = Math.imul(r ^ r >>> 16, 2246822507), r ^= Math.imul(i ^ i >>> 13, 3266489909), i = Math.imul(i ^ i >>> 16, 2246822507), i ^= Math.imul(r ^ r >>> 13, 3266489909), 4294967296 * (2097151 & i) + (r >>> 0); +} +function V(t37, e) { + t37 && (t37.dirty || (t37.dirty = true, requestAnimationFrame(() => { + tt(t37) && t37.dirty && (t37.atomBoundsCache = /* @__PURE__ */ new Map(), st(t37, e), t37.atomBoundsCache = void 0); + }))); +} +function wf(t37, e) { + var o; + e = e != null ? e : {}; + let r = new T({ from: g(p({}, t37.context), { atomIdsSettings: { seed: e.forHighlighting ? Fm(y.serialize([t37.model.root], { expandMacro: false, defaultMode: t37.options.defaultMode })) : "random", groupNumbers: (o = e.forHighlighting) != null ? o : false }, letterShapeStyle: t37.options.letterShapeStyle }), mathstyle: t37.options.defaultMode === "inline-math" ? "textstyle" : "displaystyle" }), i = t37.model.root.render(r); + return mr(Tt(i, r), { classes: t37.hasEditablePrompts ? "ML__latex ML__prompting" : "ML__latex", attributes: { translate: "no", "aria-hidden": "true" } }); +} +function Pl(t37, e) { + let { model: r } = t37; + r.root.caret = void 0, r.root.isSelected = false, r.root.containsCaret = true; + for (let n of r.atoms) + n.caret = void 0, n.isSelected = false, n.containsCaret = false; + if (r.selectionIsCollapsed) { + let n = r.at(r.position); + n.caret = t37.model.mode; + let o = n.parent; + for (; o; ) + o.containsCaret = true, o = o.parent; + } else { + let n = r.getAtoms(r.selection, { includeChildren: true }); + for (let o of n) + o.isSelected = true; + } + return wf(t37, e).toMarkup(); +} +function st(t37, e) { + if (!tt(t37)) + return; + e != null || (e = {}); + let r = t37.element.querySelector("[part=virtual-keyboard-toggle]"); + r && (r.style.display = t37.hasEditableContent ? "" : "none"); + let i = t37.field; + if (!i) + return; + let n = t37.isSelectionEditable && t37.hasFocus(), o = i.classList.contains("ML__focused"); + o && !n ? i.classList.remove("ML__focused") : !o && n && i.classList.add("ML__focused"); + let a = Pl(t37, e), s = t37.element.querySelector("[part=menu-toggle]"); + if (s) { + let l = false; + (t37.disabled || t37.readOnly && !t37.hasEditableContent || t37.userSelect === "none") && (l = true), !l && i.offsetWidth < 50 && (l = true), s.style.display = l ? "none" : ""; + } + if (t37.model.atoms.length <= 1) { + let l = t37.options.contentPlaceholder; + l && (a += `${oe(l)}`); + } + i.innerHTML = globalThis.MathfieldElement.createHTML(a), Gn(t37, e.interactive), t37.dirty = false; +} +function Gn(t37, e) { + let r = t37.field; + if (!r) + return; + for (let s of r.querySelectorAll(".ML__selection, .ML__contains-highlight")) + s.remove(); + !(e != null && e) && Ee !== "error" && Ee !== "ready" && setTimeout(() => { + Ee === "ready" ? Gn(t37) : setTimeout(() => Gn(t37), 128); + }, 32); + let i = t37.model, n = r.offsetWidth, o = r.getBoundingClientRect().width, a = Math.floor(o) / n; + if (a = isNaN(a) ? 1 : a, i.selectionIsCollapsed) { + Yi(t37, { deferred: true }); + let s = i.at(i.position); + for (; s && s.type !== "prompt" && !(s.containsCaret && s.displayContainsHighlight); ) + s = s.parent; + if (s != null && s.containsCaret && s.displayContainsHighlight) { + let l = xl(t37, qr(t37, s), a); + if (l) { + l.left /= a, l.right /= a, l.top /= a, l.bottom /= a; + let c = document.createElement("div"); + c.classList.add("ML__contains-highlight"), c.style.position = "absolute", c.style.left = `${l.left + 1}px`, c.style.top = `${Math.ceil(l.top)}px`, c.style.width = `${Math.ceil(l.right - l.left)}px`, c.style.height = `${Math.ceil(l.bottom - l.top)}px`, r.insertBefore(c, r.childNodes[0]); + } + } + return; + } + for (let s of kf(Ma(t37, { excludeAtomsWithBackground: true }))) { + s.left /= a, s.right /= a, s.top /= a, s.bottom /= a; + let l = document.createElement("div"); + l.classList.add("ML__selection"), l.style.position = "absolute", l.style.left = `${s.left}px`, l.style.top = `${s.top}px`, l.style.width = `${Math.ceil(s.right - s.left)}px`, l.style.height = `${Math.ceil(s.bottom - s.top - 1)}px`, r.insertBefore(l, r.childNodes[0]); + } +} +function kf(t37) { + let e = []; + for (let r of t37) { + let i = false; + for (let n of e) + if (r.left === n.left && r.right === n.right && r.top === n.top && r.bottom === n.bottom) { + i = true; + break; + } + i || e.push(r); + } + t37 = e, e = []; + for (let r of t37) { + let i = 0; + for (let n of t37) + if (r.left >= n.left && r.right <= n.right && r.top >= n.top && r.bottom <= n.bottom && (i += 1, i > 1)) + break; + i === 1 && e.push(r); + } + return e; +} +var Rl = 3; +var lt; +function ae(t37, e) { + e = p({ target: "mathfield", canUndo: false, audioFeedback: void 0, changeContent: false, changeSelection: false }, e != null ? e : {}), lt || (lt = {}); + for (let r of Object.keys(t37)) + lt[r], lt[r] = g(p({}, e), { fn: t37[r] }); +} +function Il(t37) { + let e; + if (Array.isArray(t37)) { + if (t37[0] === "performWithFeedback") + return Il(t37[1]); + e = t37[0]; + } else + e = t37; + return lt[e]; +} +function Gt(t37) { + var e; + return (e = Il(t37)) == null ? void 0 : e.target; +} +function $m(t37, e) { + var l, c; + if (e = ei(e), !e) + return false; + let r, i = [], n = false, o = false; + X(e) ? (r = e[0], i = e.slice(1)) : r = e; + let a = lt[r], s = a == null ? void 0 : a.target; + if (s === "model") { + if (!t37.isSelectionEditable && (a != null && a.changeContent)) + return t37.model.announce("plonk"), false; + /^(delete|add)/.test(r) && (r !== "deleteBackward" && t37.flushInlineShortcutBuffer(), t37.snapshot(r)), /^complete/.test(r) || Zr(t37), lt[r].fn(t37.model, ...i), kr(t37), o = true, n = true; + } else if (s === "virtual-keyboard") + o = (c = (l = window.mathVirtualKeyboard) == null ? void 0 : l.executeCommand(e)) != null ? c : false, n = true; + else if (lt[r]) { + if (!t37.isSelectionEditable && (a != null && a.changeContent)) + return t37.model.announce("plonk"), false; + /^(undo|redo)/.test(r) && t37.flushInlineShortcutBuffer(), o = lt[r].fn(t37, ...i), n = true; + } else + throw new Error(`Unknown command "${r}"`); + return s !== "virtual-keyboard" && (!t37.model.selectionIsCollapsed || a != null && a.changeSelection && r !== "deleteBackward") && (t37.flushInlineShortcutBuffer(), a != null && a.changeContent || t37.stopCoalescingUndo(), t37.defaultStyle = {}), o && V(t37), n; +} +function Sf(t37, e) { + var n; + if (!t37) + return false; + t37.focus(), Qi.keypressVibration && yo() && navigator.vibrate(Rl); + let r = Il(e); + globalThis.MathfieldElement.playSound((n = r == null ? void 0 : r.audioFeedback) != null ? n : "keypress"); + let i = t37.executeCommand(e); + return t37.scrollIntoView(), i; +} +ae({ performWithFeedback: (t37, e) => Sf(t37, e) }); +function Lf(t37) { + return kr(t37, { atIndex: t37.suggestionIndex + 1 }), false; +} +function Af(t37) { + return kr(t37, { atIndex: t37.suggestionIndex - 1 }), false; +} +ae({ complete: Bt }, { target: "mathfield", audioFeedback: "return", canUndo: true, changeContent: true, changeSelection: true }); +ae({ dispatchEvent: (t37, e, r) => { + var i, n; + return (n = (i = t37.host) == null ? void 0 : i.dispatchEvent(new CustomEvent(e, { detail: r }))) != null ? n : false; +} }, { target: "mathfield" }); +ae({ nextSuggestion: Lf, previousSuggestion: Af }, { target: "mathfield", audioFeedback: "keypress", changeSelection: true }); +function ei(t37) { + if (!t37) + return; + if (X(t37) && t37.length > 0) { + let i = t37[0]; + return i.replace(/-\w/g, (n) => n[1].toUpperCase()), i === "performWithFeedback" && t37.length === 2 ? [i, ei(t37[1])] : [i, ...t37.slice(1)]; + } + if (typeof t37 != "string") + return; + let e = t37.trim().match(/^([a-zA-Z0-9-]+)\((.*)\)$/); + if (e) { + let i = e[1]; + i.replace(/-\w/g, (o) => o[1].toUpperCase()); + let n = e[2].split(",").map((o) => o.trim()); + return [i, ...n.map((o) => { + if (/"[^"]*"/.test(o) || /'[^']*'/.test(o)) + return o.slice(1, -1); + if (/^true$/.test(o)) + return true; + if (/^false$/.test(o)) + return false; + if (/^[-]?\d+$/.test(o)) + return parseInt(o, 10); + if (/^\{.*\}$/.test(o)) + try { + return JSON.parse(o); + } catch (a) { + return console.error("Invalid argument:", o), o; + } + return ei(o); + })]; + } + let r = t37; + return r.replace(/-\w/g, (i) => i[1].toUpperCase()), r; +} +var Xn = "mathlive#virtual-keyboard-message"; +function Zn(t37) { + var r; + return t37.type !== "message" ? false : ((r = t37.data) == null ? void 0 : r.type) === Xn; +} +var jn = class t33 { + constructor() { + this.targetOrigin = window.origin; + this.originValidator = "none"; + this._boundingRect = new DOMRect(0, 0, 0, 0); + this._isShifted = false; + window.addEventListener("message", this), this.sendMessage("proxy-created"), this.listeners = {}; + } + static get singleton() { + return this._singleton || (this._singleton = new t33()), this._singleton; + } + set alphabeticLayout(e) { + this.sendMessage("update-setting", { alphabeticLayout: e }); + } + set layouts(e) { + this.sendMessage("update-setting", { layouts: e }); + } + get normalizedLayouts() { + return []; + } + set editToolbar(e) { + this.sendMessage("update-setting", { editToolbar: e }); + } + set actionKeycap(e) { + this.sendMessage("update-setting", { actionKeycap: e }); + } + set shiftKeycap(e) { + this.sendMessage("update-setting", { shiftKeycap: e }); + } + set backspaceKeycap(e) { + this.sendMessage("update-setting", { backspaceKeycap: e }); + } + set tabKeycap(e) { + this.sendMessage("update-setting", { tabKeycap: e }); + } + set container(e) { + throw new Error("Container inside an iframe cannot be changed"); + } + show(e) { + this.dispatchEvent(new CustomEvent("before-virtual-keyboard-toggle", { detail: { visible: true }, bubbles: true, cancelable: true, composed: true })) && (this.sendMessage("show", e), this.dispatchEvent(new Event("virtual-keyboard-toggle"))); + } + hide(e) { + this.dispatchEvent(new CustomEvent("before-virtual-keyboard-toggle", { detail: { visible: false }, bubbles: true, cancelable: true, composed: true })) && (this.sendMessage("hide", e), this.dispatchEvent(new Event("virtual-keyboard-toggle"))); + } + get isShifted() { + return this._isShifted; + } + get visible() { + return this._boundingRect.height > 0; + } + set visible(e) { + e ? this.show() : this.hide(); + } + get boundingRect() { + return this._boundingRect; + } + executeCommand(e) { + return this.sendMessage("execute-command", { command: e }), true; + } + updateToolbar(e) { + this.sendMessage("update-toolbar", e); + } + update(e) { + this.sendMessage("update-setting", e); + } + connect() { + this.sendMessage("connect"); + } + disconnect() { + this.sendMessage("disconnect"); + } + addEventListener(e, r, i) { + this.listeners[e] || (this.listeners[e] = /* @__PURE__ */ new Set()), this.listeners[e].has(r) || this.listeners[e].add(r); + } + dispatchEvent(e) { + return !this.listeners[e.type] || this.listeners[e.type].size === 0 ? true : (this.listeners[e.type].forEach((r) => { + typeof r == "function" ? r(e) : r == null || r.handleEvent(e); + }), !e.defaultPrevented); + } + removeEventListener(e, r, i) { + this.listeners[e] && this.listeners[e].delete(r); + } + handleEvent(e) { + if (Zn(e)) { + if (!Ii(e.origin, this.originValidator)) + throw new DOMException(`Message from unknown origin (${e.origin}) cannot be handled`, "SecurityError"); + this.handleMessage(e.data); + } + } + handleMessage(e) { + let { action: r } = e; + if (r === "execute-command") { + let { command: i } = e; + Gt(i) === "virtual-keyboard" && this.executeCommand(i); + return; + } + if (r === "synchronize-proxy") { + this._boundingRect = e.boundingRect, this._isShifted = e.isShifted; + return; + } + if (r === "geometry-changed") { + this._boundingRect = e.boundingRect, this.dispatchEvent(new Event("geometrychange")); + return; + } + } + sendMessage(e, r = {}) { + if (!window.top) + throw new DOMException("A frame does not have access to the top window and can\u2018t communicate with the keyboard. Review virtualKeyboardTargetOrigin and originValidator on mathfields embedded in an iframe", "SecurityError"); + window.top.postMessage(p({ type: Xn, action: e }, r), this.targetOrigin); + } +}; +var zl = { numeric: { label: "123", labelClass: "MLK__tex-math", tooltip: "keyboard.tooltip.numeric", rows: [[{ latex: "x", shift: "y", variants: ["y", "z", "t", "r", "x^2", "x^n", "x^{#?}", "x_n", "x_i", "x_{#?}", { latex: "f(#?)", class: "small" }, { latex: "g(#?)", class: "small" }] }, { latex: "n", shift: "a", variants: ["i", "j", "p", "k", "a", "u"] }, "[separator-5]", "[7]", "[8]", "[9]", "[/]", "[separator-5]", { latex: "\\exponentialE", shift: "\\ln", variants: ["\\exp", "\\times 10^{#?}", "\\ln", "\\log_{10}", "\\log"] }, { latex: "\\imaginaryI", variants: ["\\Re", "\\Im", "\\imaginaryJ", "\\Vert #0 \\Vert"] }, { latex: "\\pi", shift: "\\sin", variants: ["\\prod", { latex: "\\theta", aside: "theta" }, { latex: "\\rho", aside: "rho" }, { latex: "\\tau", aside: "tau" }, "\\sin", "\\cos", "\\tan"] }], [{ label: "<", latex: "<", class: "hide-shift", shift: { latex: "\\le", label: "\u2264" } }, { label: ">", latex: ">", class: "hide-shift", shift: { latex: "\\ge", label: "\u2265" } }, "[separator-5]", "[4]", "[5]", "[6]", "[*]", "[separator-5]", { class: "hide-shift", latex: "#@^2}", shift: "#@^{\\prime}}" }, { latex: "#@^{#0}}", class: "hide-shift", shift: "#@_{#?}" }, { class: "hide-shift", latex: "\\sqrt{#0}", shift: { latex: "\\sqrt[#0]{#?}}" } }], ["[(]", "[)]", "[separator-5]", "[1]", "[2]", "[3]", "[-]", "[separator-5]", { latex: "\\int^{\\infty}_{0}\\!#?\\,\\mathrm{d}x", class: "small hide-shift", shift: "\\int", variants: [{ latex: "\\int_{#?}^{#?}", class: "small" }, { latex: "\\int", class: "small" }, { latex: "\\iint", class: "small" }, { latex: "\\iiint", class: "small" }, { latex: "\\oint", class: "small" }, "\\mathrm{d}x", { latex: "\\dfrac{\\mathrm{d}}{\\mathrm{d} x}", class: "small" }, { latex: "\\frac{\\partial}{\\partial x}", class: "small" }, "\\partial"] }, { class: "hide-shift", latex: "\\forall", shift: "\\exists" }, { label: "[backspace]", width: 1 }], [{ label: "[shift]", width: 2 }, "[separator-5]", "[0]", "[.]", "[=]", "[+]", "[separator-5]", "[left]", "[right]", { label: "[action]", width: 1 }]] }, greek: { label: "αβγ", labelClass: "MLK__tex-math", tooltip: "keyboard.tooltip.greek", rows: [[{ label: "φ", class: "MLK__tex hide-shift", insert: "\\varphi", aside: "phi var.", shift: "\\Phi" }, { label: "ς", class: "MLK__tex hide-shift", insert: "\\varsigma", aside: "sigma var.", shift: "\\Sigma" }, { label: "ϵ", class: "MLK__tex hide-shift", insert: "\\epsilon", aside: "epsilon", shift: '\\char"0190' }, { label: "ρ", class: "MLK__tex hide-shift", insert: "\\rho", aside: "rho", shift: '\\char"3A1' }, { label: "τ", class: "MLK__tex hide-shift", insert: "\\tau", aside: "tau", shift: '\\char"3A4' }, { label: "υ", class: "MLK__tex hide-shift", insert: "\\upsilon", aside: "upsilon", shift: "\\Upsilon" }, { label: "θ", class: "MLK__tex hide-shift", insert: "\\theta", aside: "theta", shift: "\\Theta" }, { label: "ι", class: "MLK__tex hide-shift", insert: "\\iota", aside: "iota", shift: '\\char"399' }, { label: "ο", class: "MLK__tex hide-shift", insert: "\\omicron", aside: "omicron", shift: '\\char"39F' }, { label: "π", class: "MLK__tex hide-shift", insert: "\\pi", aside: "pi", shift: "\\Pi" }], ["[separator-5]", { label: "α", class: "MLK__tex hide-shift", insert: "\\alpha", aside: "alpha", shift: '\\char"391' }, { label: "σ", class: "MLK__tex hide-shift", insert: "\\sigma", aside: "sigma", shift: "\\Sigma" }, { label: "δ", class: "MLK__tex hide-shift", insert: "\\delta", aside: "delta", shift: "\\Delta" }, { latex: "\\phi", class: "MLK__tex hide-shift", insert: "\\phi", aside: "phi", shift: "\\Phi" }, { label: "γ", class: "MLK__tex hide-shift", insert: "\\gamma", aside: "gamma", shift: "\\Gamma" }, { label: "η", class: "MLK__tex hide-shift", insert: "\\eta", aside: "eta", shift: '\\char"397' }, { label: "ξ", class: "MLK__tex hide-shift", insert: "\\xi", aside: "xi", shift: "\\Xi" }, { label: "κ", class: "MLK__tex hide-shift", insert: "\\kappa", aside: "kappa", shift: "\\Kappa" }, { label: "λ", class: "MLK__tex hide-shift", insert: "\\lambda", aside: "lambda", shift: "\\Lambda" }, "[separator-5]"], ["[shift]", { label: "ζ", class: "MLK__tex hide-shift", insert: "\\zeta", aside: "zeta", shift: '\\char"396' }, { label: "χ", class: "MLK__tex hide-shift", insert: "\\chi", aside: "chi", shift: '\\char"3A7' }, { label: "ψ", class: "MLK__tex hide-shift", insert: "\\psi", aside: "zeta", shift: "\\Psi" }, { label: "ω", class: "MLK__tex hide-shift", insert: "\\omega", aside: "omega", shift: "\\Omega" }, { label: "β", class: "MLK__tex hide-shift", insert: "\\beta", aside: "beta", shift: '\\char"392' }, { label: "ν", class: "MLK__tex hide-shift", insert: "\\nu", aside: "nu", shift: '\\char"39D' }, { label: "μ", class: "MLK__tex hide-shift", insert: "\\mu", aside: "mu", shift: '\\char"39C' }, "[backspace]"], ["[separator]", { label: "ε", class: "MLK__tex", insert: "\\varepsilon", aside: "epsilon var." }, { label: "ϑ", class: "MLK__tex", insert: "\\vartheta", aside: "theta var." }, { label: "ϰ", class: "MLK__tex", insert: "\\varkappa", aside: "kappa var." }, { label: "ϖ", class: "MLK__tex", insert: "\\varpi", aside: "pi var." }, { label: "ϱ", class: "MLK__tex", insert: "\\varrho", aside: "rho var." }, "[left]", "[right]", "[action]"]] }, symbols: { label: "∞\u2260\u2208", labelClass: "MLK__tex", tooltip: "keyboard.tooltip.symbols", rows: [[{ latex: "\\sin", shift: "\\sin^{-1}", variants: [{ class: "small", latex: "\\sinh" }, { class: "small", latex: "\\sin^{-1}" }, { class: "small", latex: "\\arsinh" }] }, "\\ln", { latex: "\\mathrm{abs}", insert: "\\mathrm{abs}\\left(#0\\right)" }, { latex: "\\rarr", shift: "\\rArr", variants: [{ latex: "\\implies", aside: "implies" }, { latex: "\\to", aside: "to" }, "\\dashv", { latex: "\\roundimplies", aside: "round implies" }] }, { latex: "\\exists", variants: ["\\nexists"], shift: "\\nexists" }, { latex: "\\in", shift: "\\notin", variants: ["\\notin", "\\owns"] }, "\\cup", { latex: "\\overrightarrow{#@}", shift: "\\overleftarrow{#@}", variants: ["\\overleftarrow{#@}", "\\bar{#@}", "\\vec{#@}", "\\hat{#@}", "\\check{#@}", "\\dot{#@}", "\\ddot{#@}", "\\mathring{#@}", "\\breve{#@}", "\\acute{#@}", "\\tilde{#@}", "\\grave{#@}"] }, { class: "small hide-shift", latex: "\\lim_{#?}", shift: "\\lim_{x\\to\\infty}", variants: [{ class: "small", latex: "\\liminf_{#?}" }, { class: "small", latex: "\\limsup_{#?}" }] }, "\\exponentialE"], [{ latex: "\\cos", shift: "\\cos^{-1}", variants: [{ class: "small", latex: "\\cosh" }, { class: "small", latex: "\\cos^{-1}" }, { class: "small", latex: "\\arcosh" }] }, { latex: "\\log", shift: "\\log_{10}", variants: ["\\log_{#0}", "\\log_{10}"] }, "\\left\\vert#0\\right\\vert", { latex: "\\larr", shift: "\\lArr", variants: [{ latex: "\\impliedby", aside: "implied by" }, { latex: "\\gets", aside: "gets" }, "\\lArr", "\\vdash", { latex: "\\models", aside: "models" }] }, { latex: "\\forall", shift: "\\lnot", variants: [{ latex: "\\land", aside: "and" }, { latex: "\\lor", aside: "or" }, { latex: "\\oplus", aside: "xor" }, { latex: "\\lnot", aside: "not" }, { latex: "\\downarrow", aside: "nor" }, { latex: "\\uparrow", aside: "nand" }, { latex: "\\curlywedge", aside: "nor" }, { latex: "\\bar\\curlywedge", aside: "nand" }] }, { latex: "\\ni", shift: "\\not\\owns" }, "\\cap", { latex: "\\overline{#@}", shift: "\\underline{#@}", variants: ["\\overbrace{#@}", "\\overlinesegment{#@}", "\\overleftrightarrow{#@}", "\\overrightarrow{#@}", "\\overleftarrow{#@}", "\\overgroup{#@}", "\\underbrace{#@}", "\\underlinesegment{#@}", "\\underleftrightarrow{#@}", "\\underrightarrow{#@}", "\\underleftarrow{#@}", "\\undergroup{#@}"] }, { class: "hide-shift small", latex: "\\int", shift: "\\iint", variants: [{ latex: "\\int_{#?}^{#?}", class: "small" }, { latex: "\\int", class: "small" }, { latex: "\\smallint", class: "small" }, { latex: "\\iint", class: "small" }, { latex: "\\iiint", class: "small" }, { latex: "\\oint", class: "small" }, "\\intop", "\\iiint", "\\oiint", "\\oiiint", "\\intclockwise", "\\varointclockwise", "\\ointctrclockwise", "\\intctrclockwise"] }, { latex: "\\pi", shift: "\\tau", variants: ["\\tau"] }], [{ latex: "\\tan", shift: "\\tan^{-1}", variants: [{ class: "small", latex: "\\tanh" }, { class: "small", latex: "\\tan^{-1}" }, { class: "small", latex: "\\artanh" }, { class: "small", latex: "\\arctan" }, { class: "small", latex: "\\arctg" }, { class: "small", latex: "\\tg" }] }, { latex: "\\exp", insert: "\\exp\\left(#0\\right)", variants: ["\\exponentialE^{#0}"] }, "\\left\\Vert#0\\right\\Vert", { latex: "\\lrArr", shift: "\\leftrightarrow", variants: [{ latex: "\\iff", aside: "if and only if" }, "\\leftrightarrow", "\\leftrightarrows", "\\Leftrightarrow", { latex: "^\\biconditional", aside: "biconditional" }] }, { latex: "\\vert", shift: "!" }, { latex: "#@^{\\complement}", aside: "complement", variants: [{ latex: "\\setminus", aside: "set minus" }, { latex: "\\smallsetminus", aside: "small set minus" }] }, { latex: "\\subset", shift: "\\subseteq", variants: ["\\subset", "\\subseteq", "\\subsetneq", "\\varsubsetneq", "\\subsetneqq", "\\nsubset", "\\nsubseteq", "\\supset", "\\supseteq", "\\supsetneq", "\\supsetneqq", "\\nsupset", "\\nsupseteq"] }, { latex: "#@^{\\prime}", shift: "#@^{\\doubleprime}", variants: ["#@^{\\doubleprime}", "#@\\degree"] }, { latex: "\\mathrm{d}", shift: "\\partial", variants: ["\\mathrm{d}x", { latex: "\\dfrac{\\mathrm{d}}{\\mathrm{d} x}", class: "small" }, { latex: "\\frac{\\partial}{\\partial x}", class: "small" }, "\\partial"] }, { latex: "\\infty", variants: ["\\aleph_0", "\\aleph_1", "\\omega", "\\mathfrak{m}"] }], [{ label: "[shift]", width: 2 }, { class: "box", latex: ",", shift: ";", variants: [";", "?"] }, { class: "box", latex: "\\colon", shift: "\\Colon", variants: [{ latex: "\\Colon", aside: "such that", class: "box" }, { latex: ":", aside: "ratio", class: "box" }, { latex: "\\vdots", aside: "", class: "box" }, { latex: "\\ddots", aside: "", class: "box" }, { latex: "\\ldotp", aside: "low dot", class: "box" }, { latex: "\\cdotp", aside: "center dot", class: "box" }, { latex: "\\ldots", aside: "low ellipsis", class: "box" }, { latex: "\\cdots", aside: "center ellipsis", class: "box" }, { latex: "\\therefore", aside: "therefore", class: "box" }, { latex: "\\because", aside: "because", class: "box" }] }, { class: "box", latex: "\\cdot", aside: "centered dot", shift: "\\ast", variants: ["\\circ", "\\bigcirc", "\\bullet", "\\odot", "\\oslash", "\\circledcirc", "\\ast", "\\star", "\\times", "\\doteq", "\\doteqdot"] }, "[separator]", "[left]", "[right]", { label: "[backspace]", width: 1, class: "action hide-shift" }, { label: "[action]", width: 1 }]] }, compact: { label: "compact", rows: [["[+]", "[-]", "[*]", "[/]", "[=]", "[.]", "[(]", "[)]", "\\sqrt{#0}", "#@^{#?}"], ["[1]", "[2]", "[3]", "[4]", "[5]", "[6]", "[7]", "[8]", "[9]", "[0]"], ["[hr]"], ["[undo]", "[redo]", "[separator]", "[separator]", "[separator]", "[left]", "[right]", { label: "[backspace]", class: "action hide-shift" }, "[hide-keyboard]"]] }, minimalist: { label: "minimalist", layers: [{ style: ` + .minimalist-backdrop { + display: flex; + justify-content: center; + } + .minimalist-container { + --keycap-height: 40px; + --keycap-max-width: 53px; + --keycap-small-font-size: 12px; + background: var(--keyboard-background); + padding: 20px; + border-top-left-radius: 8px; + border-top-right-radius: 8px; + border: 1px solid var(--keyboard-border); + box-shadow: 0 0 32px rgb(0 0 0 / 30%); + } + `, backdrop: "minimalist-backdrop", container: "minimalist-container", rows: [["+", "-", "\\times", { latex: "\\frac{#@}{#0}", class: "small" }, "=", "[.]", "(", ")", { latex: "\\sqrt{#0}", class: "small" }, { latex: "#@^{#?}", class: "small" }], ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"], ["[hr]"], ["[undo]", "[redo]", "[separator]", "[separator]", "[separator]", "[left]", "[right]", { label: "[backspace]", class: "action hide-shift" }, "[hide-keyboard]"]] }] }, "numeric-only": { label: "123", labelClass: "MLK__tex-math", tooltip: "keyboard.tooltip.numeric", id: "numeric-only", rows: [["7", "8", "9", "[separator]", { label: "[backspace]", width: 2 }], ["4", "5", "6", "[separator]", "[separator]", "[separator]"], ["1", "2", "3", "[separator]", "[separator]", "[separator]"], ["0", { label: "[.]", variants: [] }, "-", "[separator]", "[left]", "[right]"]] } }; +var Na = { 0: ["\\varnothing", "\\infty"], 1: ["\\frac{1}{#@}", "#@^{-1}", "\\times 10^{#?}", "\\phi", "\\imaginaryI"], 2: ["\\frac{1}{2}", "#@^2", "\\sqrt2", "\\exponentialE"], 3: ["\\frac{1}{3}", "#@^3", "\\sqrt3", "\\pi"], 4: ["\\frac{1}{4}", "#@^4"], 5: ["\\frac{1}{5}", "#@^5", "\\sqrt5"], 6: ["\\frac{1}{6}", "#@^6"], 7: ["\\frac{1}{7}", "#@^7"], 8: ["\\frac{1}{8}", "#@^8"], 9: ["\\frac{1}{9}", "#@^9"], ".": [".", ",", ";", "\\colon"], ",": ["{,}", ".", ";", "\\colon"], a: [{ latex: "\\aleph", aside: "aleph" }, { latex: "\\forall", aside: "for all" }, "\xE5", "\xE0", "\xE1", "\xE2", "\xE4", "\xE6"], A: [{ latex: "\\aleph", aside: "aleph" }, { latex: "\\forall", aside: "for all" }, "\xC5", "\xC0", "\xC1", "\xC2", "\xC4", "\xC6"], b: [{ latex: "\\beth", aside: "beth" }], c: [{ latex: "\\C", aside: "set of complex numbers" }, "\xE7"], d: [{ latex: "\\daleth", aside: "daleth" }], e: [{ latex: "\\exponentialE", aside: "exponential e" }, { latex: "\\exists", aside: "there is" }, { latex: "\\nexists", aside: "there isn\u2019t" }, "\xE8", "\xE9", "\xEA", "\xEB"], E: [{ latex: "\\exponentialE", aside: "exponential e" }, { latex: "\\exists", aside: "there is" }, { latex: "\\nexists", aside: "there isn\u2019t" }, "\xC8", "\xC9", "\xCA", "\xCB"], g: [{ latex: "\\gimel", aside: "gimel" }], h: [{ latex: "\\hbar", aside: "h bar" }, { latex: "\\hslash", aside: "h slash" }], i: [{ latex: "\\imaginaryI", aside: "imaginary i" }, "\xEC", "\xED", "\xEE", "\xEF"], I: [{ latex: "\\imaginaryI", aside: "imaginary i" }, "\xCC", "\xCD", "\xCE", "\xCF"], j: [{ latex: "\\imaginaryJ", aside: "imaginary j" }], l: [{ latex: "\\ell", aside: "ell" }], n: [{ latex: "\\mathbb{N}", aside: "set of natural numbers" }, "\xF1"], o: ["\xF8", "\u0153", "\xF2", "\xF3", "\xF4", "\xF6"], O: ["\xF8", "\u0152", "\xD2", "\xD3", "\xD4", "\xD6"], p: [{ latex: "\\mathbb{P}", aside: "set of primes" }], q: [{ latex: "\\mathbb{Q}", aside: "set of rational numbers" }], r: [{ latex: "\\mathbb{R}", aside: "set of real numbers" }], u: ["\xF9", "\xFA", "\xFB", "\xFC"], U: ["\xD9", "\xDA", "\xDB", "\xDC"], z: [{ latex: "\\mathbb{Z}", aside: "set of integers" }], y: ["\xFD", "\xFF"], Y: ["\u0178"], space: [{ latex: '\\char"203A\\!\\char"2039', insert: "\\!", aside: "negative thin space
    \u207B\xB3\u29F8\u2081\u2088 em" }, { latex: '\\char"203A\\,\\char"2039', insert: "\\,", aside: "thin space
    \xB3\u29F8\u2081\u2088 em" }, { latex: '\\char"203A\\:\\char"2039', insert: "\\:", aside: "medium space
    \u2074\u29F8\u2081\u2088 em" }, { latex: '\\char"203A\\;\\char"2039', insert: "\\;", aside: "thick space
    \u2075\u29F8\u2081\u2088 em" }, { latex: '\\char"203A\\ \\char"2039', insert: "\\ ", aside: "\u2153 em" }, { latex: '\\char"203A\\enspace\\char"2039', insert: "\\enspace", aside: "\xBD em" }, { latex: '\\char"203A\\quad\\char"2039', insert: "\\quad", aside: "1 em" }, { latex: '\\char"203A\\qquad\\char"2039', insert: "\\qquad", aside: "2 em" }] }; +var en; +function Fa(t37, e) { + var m, h, f, b, S; + let r = we.singleton; + if (!r) + return; + let i = ti(t37), n = ""; + if (window.mathVirtualKeyboard.isShifted) { + let M = (m = r.getKeycap(i == null ? void 0 : i.id)) == null ? void 0 : m.shift; + typeof M == "object" && "variants" in M && (n = (h = M.variants) != null ? h : ""); + } else + n = (b = (f = r.getKeycap(i == null ? void 0 : i.id)) == null ? void 0 : f.variants) != null ? b : ""; + if (typeof n == "string" && !$a(n) || Array.isArray(n) && n.length === 0) { + e == null || e(); + return; + } + let o = {}, a = ""; + for (let M of Ef(n)) { + let x = Nl(M), v = Date.now().toString(36).slice(-2) + Math.floor(Math.random() * 1e5).toString(36); + o[v] = x; + let [k, C] = tn(x); + a += `
    ${k}
    `; + } + let s = document.createElement("div"); + s.setAttribute("aria-hidden", "true"), s.className = "MLK__variant-panel", s.style.height = "auto"; + let l = Object.keys(o).length, c = 5; + l === 1 ? c = 1 : l === 2 || l === 4 ? c = 2 : l === 3 || l === 5 || l === 6 ? c = 3 : l >= 7 && l < 14 && (c = 4), s.style.width = `calc(var(--variant-keycap-length) * ${c} + 12px)`, s.innerHTML = Qi.createHTML(a), _e.open({ root: (S = r == null ? void 0 : r.container) == null ? void 0 : S.querySelector(".ML__keyboard"), child: s }), en = new AbortController(); + let { signal: u } = en, d = t37 == null ? void 0 : t37.getBoundingClientRect(); + if (d) { + d.top - s.clientHeight < 0 && (s.style.width = "auto", l <= 6 ? s.style.height = "56px" : l <= 12 ? s.style.height = "108px" : l <= 18 ? s.style.height = "205px" : s.classList.add("compact")); + let M = Math.max(0, Math.min(window.innerWidth - s.offsetWidth, (d.left + d.right - s.offsetWidth) / 2)), x = d.top - s.clientHeight + 5; + s.style.transform = `translate(${M}px, ${x}px)`, s.classList.add("is-visible"), requestAnimationFrame(() => { + s.addEventListener("pointerup", (v) => { + let k = ti(v.target); + !(k != null && k.id) || !o[k.id] || (Va(o[k.id]), ri(), e == null || e(), v.preventDefault()); + }, { capture: true, passive: false, signal: u }), s.addEventListener("pointerenter", (v) => { + let k = ti(v.target); + !(k != null && k.id) || !o[k.id] || k.classList.add("is-active"); + }, { capture: true, signal: u }), s.addEventListener("pointerleave", (v) => { + let k = ti(v.target); + !(k != null && k.id) || !o[k.id] || k.classList.remove("is-active"); + }, { capture: true, signal: u }), window.addEventListener("pointercancel", () => { + ri(), e == null || e(); + }, { signal: u }), window.addEventListener("pointerup", () => { + ri(), e == null || e(); + }, { signal: u }); + }); + } +} +function ri() { + en == null || en.abort(), en = null, _e.state === "open" && _e.close(); +} +function Cf(t37) { + if (t37 === "foreground-color") { + let e = []; + for (let r of Object.keys(zt)) + e.push({ class: "swatch-button", label: '', command: ["applyStyle", { color: r }] }); + return e; + } + if (t37 === "background-color") { + let e = []; + for (let r of Object.keys(It)) + e.push({ class: "swatch-button", label: '', command: ["applyStyle", { backgroundColor: r }] }); + return e; + } +} +function $a(t37) { + return Na[t37] !== void 0; +} +function Ef(t37) { + var e; + return typeof t37 != "string" ? t37 : (Na[t37] || (Na[t37] = (e = Cf(t37)) != null ? e : []), Na[t37]); +} +function Tf(t37) { + return typeof t37 == "string" ? t37 : Object.entries(t37).map(([e, r]) => `${e}:${r} !important`).join(";"); +} +function Df(t37) { + return Object.keys(t37).map((e) => `${e} {${Tf(t37[e])}}`).join(""); +} +function Yn(t37) { + if (!t37) + return ""; + let e = new T(), r = new y({ mode: "math", type: "root", body: se(t37, { context: e, args: (n) => n === "@" ? "{\\class{ML__box-placeholder}{\\blacksquare}}" : "\\placeholder{}" }) }), i = dr(Tt(new w(r.render(e), { classes: "ML__base" }), e)); + return mr(i, { classes: "ML__latex" }).toMarkup(); +} +function Qn(t37) { + var r; + if (Array.isArray(t37)) + return t37.map((i) => Qn(i)).flat(); + let e = typeof t37 == "string" ? { markup: t37 } : t37; + return "rows" in e && Array.isArray(e.rows) && (e.rows = e.rows.map((i) => i.map((n) => Nl(n)))), (r = e.id) != null || (e.id = "ML__layer_" + Date.now().toString(36).slice(-2) + Math.floor(Math.random() * 1e5).toString(36)), [e]; +} +function Kf() { + var o, a; + let e = window.mathVirtualKeyboard.alphabeticLayout; + if (e === "auto") { + let s = vr(); + s && (e = s.virtualLayout), (!e || e === "auto") && (e = (o = { fr: "azerty", be: "azerty", al: "qwertz", ba: "qwertz", cz: "qwertz", de: "qwertz", hu: "qwertz", sk: "qwertz", ch: "qwertz" }[O.locale.slice(0, 2)]) != null ? o : "qwerty"); + } + let r = { qwerty: ["qwertyuiop", " asdfghjkl ", "^zxcvbnm~"], azerty: ["azertyuiop", "qsdfghjklm", "^ wxcvbn ~"], qwertz: ["qwertzuiop", " asdfghjkl ", "^yxcvbnm~"], dvorak: ["^ pyfgcrl ", "aoeuidhtns", "qjkxbmwvz~"], colemak: [" qwfpgjluy ", "arstdhneio", "^zxcvbkm~"] }, i = (a = r[e]) != null ? a : r.qwerty, n = e === "azerty" ? [[{ label: "1", variants: "1" }, { label: "2", shift: { latex: "\xE9" }, variants: "2" }, { label: "3", shift: { latex: "\xF9" }, variants: "3" }, { label: "4", variants: "4" }, { label: "5", shift: { label: "(", latex: "(" }, variants: "5" }, { label: "6", shift: { label: ")", latex: ")" }, variants: "6" }, { label: "7", shift: { latex: "\xE8" }, variants: "7" }, { label: "8", shift: { latex: "\xEA" }, variants: "8" }, { label: "9", shift: { latex: "\xE7" }, variants: "9" }, { label: "0", shift: { latex: "\xE0" }, variants: "0" }]] : [[{ label: "1", variants: "1" }, { label: "2", variants: "2" }, { label: "3", variants: "3" }, { label: "4", variants: "4" }, { label: "5", shift: { latex: "\\frac{#@}{#?}" }, variants: "5" }, { label: "6", shift: { latex: "#@^#?" }, variants: "6" }, { label: "7", variants: "7" }, { label: "8", shift: { latex: "\\times" }, variants: "8" }, { label: "9", shift: { label: "(", latex: "(" }, variants: "9" }, { label: "0", shift: { label: ")", latex: ")" }, variants: "0" }]]; + for (let s of i) { + let l = []; + for (let c of s) + /[a-z]/.test(c) ? l.push({ label: c, class: "hide-shift", shift: { label: c.toUpperCase(), variants: $a(c.toUpperCase()) ? c.toUpperCase() : void 0 }, variants: $a(c) ? c : void 0 }) : c === "~" ? e !== "dvorak" ? l.push("[backspace]") : l.push({ label: "[backspace]", width: 1 }) : c === "^" ? l.push("[shift]") : c === " " && l.push("[separator-5]"); + n.push(l); + } + return n.push(["[-]", "[+]", "[=]", { label: " ", width: 1.5 }, { label: ",", shift: ";", variants: ".", class: "hide-shift" }, "[.]", "[left]", "[right]", { label: "[action]", width: 1.5 }]), { label: "abc", labelClass: "MLK__tex-math", tooltip: "keyboard.tooltip.alphabetic", layers: Qn({ rows: n }) }; +} +function Fl(t37) { + if (t37 === "alphabetic") + return Kf(); + if (typeof t37 == "string") + return zl[t37], `${t37}`, Fl(zl[t37]); + let e; + if ("rows" in t37 && Array.isArray(t37.rows)) { + "layers" in t37 || "markup" in t37; + let n = t37, { rows: a } = n, s = fi(n, ["rows"]); + e = g(p({}, s), { layers: Qn({ rows: t37.rows }) }); + } else if ("markup" in t37 && typeof t37.markup == "string") { + let o = t37, { markup: a } = o, s = fi(o, ["markup"]); + e = g(p({}, s), { layers: Qn(t37.markup) }); + } else + e = p({}, t37), "layers" in t37 ? e.layers = Qn(t37.layers) : console.error('MathLive 0.100.0: provide either a "rows", "markup" or "layers" property'); + let r = false, i = false; + for (let a of e.layers) + if (a.rows) + for (let s of a.rows.flat()) { + rn(s) && (r = true); + let l = s.command; + typeof l == "string" && ["undo", "redo", "cut", "copy", "paste"].includes(l) && (i = true); + } + return (!("displayShiftedKeycaps" in t37) || t37.displayShiftedKeycaps === void 0) && (e.displayShiftedKeycaps = r), (!("displayEditToolbar" in t37) || t37.displayEditToolbar === void 0) && (e.displayEditToolbar = !i), e; +} +function Bf(t37, e) { + var i, n; + let r = '
    '; + if (t37.normalizedLayouts.length > 1) + for (let [o, a] of t37.normalizedLayouts.entries()) { + let s = a, l = [o === e ? "selected" : "layer-switch"]; + s.tooltip && l.push("MLK__tooltip"), s.labelClass && l.push(...s.labelClass.split(" ")), r += `
    ${(n = s.label) != null ? n : "untitled"}
    `; + } + return r += "
    ", r; +} +function Vm(t37, e) { + let r = ""; + if (t37.editToolbar === "none") + return ""; + let n = []; + e.selectionIsCollapsed ? n.push("undo", "redo", "pasteFromClipboard") : n.push("cutToClipboard", "copyToClipboard", "pasteFromClipboard"); + let o = { undo: `
    + +
    `, redo: `
    + +
    `, cutToClipboard: ` +
    + +
    + `, copyToClipboard: ` +
    + +
    + `, pasteFromClipboard: ` +
    + +
    + ` }; + return r += n.map((a) => o[a]).join(""), r; +} +function Of(t37) { + for (let e of t37) + Pf(e); +} +function Pf(t37) { + let e = we.singleton; + if (!e) + return; + let r = {}; + if (!t37.id) { + if (t37.hasAttribute("data-label") && (r.label = t37.dataset.label), t37.hasAttribute("data-latex") && (r.latex = t37.dataset.latex), t37.hasAttribute("data-key") && (r.key = t37.dataset.key), t37.hasAttribute("data-insert") && (r.insert = t37.dataset.insert), t37.hasAttribute("data-variants") && (r.variants = t37.dataset.variants), t37.hasAttribute("data-aside") && (r.aside = t37.dataset.aside), t37.className && (r.class = t37.className), !r.label && !r.latex && !r.key && !r.insert && (r.latex = t37.innerText, r.label = t37.innerHTML), t37.hasAttribute("data-command")) + try { + r.command = JSON.parse(t37.dataset.command); + } catch (i) { + } + t37.id = e.registerKeycap(r); + } + if (!t37.innerHTML) { + let [i, n] = tn(r); + t37.innerHTML = globalThis.MathfieldElement.createHTML(i); + } +} +function Rf() { + Oe("virtual-keyboard"), Oe("core"), Qr(); +} +function qm() { + Ve("core"), Ve("virtual-keyboard"); +} +var If = ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`; +function Hm(t37) { + t37.resetKeycapRegistry(), Rf(); + let e = document.createElement("div"); + e.className = "ML__keyboard"; + let r = document.createElement("div"); + r.className = "MLK__plate", r.innerHTML = globalThis.MathfieldElement.createHTML(If + t37.normalizedLayouts.map((a, s) => zf(t37, a, s)).join("")); + let i = document.createElement("div"); + i.className = "MLK__backdrop", i.appendChild(r), e.appendChild(i), e.addEventListener("pointerdown", Ff, { passive: false }); + let n = e.querySelectorAll(".ML__edit-toolbar"); + if (n) + for (let a of n) + a.addEventListener("click", (s) => { + var u, d; + let l = s.target, c = ""; + for (; l && !c; ) + c = (u = l == null ? void 0 : l.getAttribute("data-command")) != null ? u : "", l = (d = l == null ? void 0 : l.parentElement) != null ? d : null; + c && t37.executeCommand(JSON.parse(c)); + }); + Of(e.querySelectorAll(".MLK__keycap, .action, .fnbutton, .bigfnbutton")); + let o = e.querySelectorAll(".MLK__layer"); + o.length > 0; + for (let a of o) + a.addEventListener("pointerdown", (s) => s.preventDefault()); + return t37.currentLayer = t37.latentLayer, e; +} +function zf(t37, e, r) { + let i = []; + if (!("layers" in e)) + return ""; + for (let n of e.layers) + i.push(`
    `), (t37.normalizedLayouts.length > 1 || e.displayEditToolbar) && (i.push("")), i.push(Nf(t37, n)), i.push("
    "); + return i.join(""); +} +function Nf(t37, e) { + if (typeof e == "string") + return e; + let r = ""; + if (typeof e.style == "string" ? r += `` : typeof e.style == "object" && (r += ``), e.backdrop && (r += `
    `), e.container && (r += `
    `), e.rows) { + r += "
    "; + for (let i of e.rows) { + r += '
    '; + for (let n of i) + if (n) { + let o = t37.registerKeycap(n), [a, s] = tn(n); + /(^|\s)separator/.test(s) ? r += `
    ${a}
    `; + } + r += "
    "; + } + r += "
    "; + } else + e.markup && (r += e.markup); + return e.container && (r += "
    "), e.backdrop && (r += "
    "), r; +} +function tn(t37, e = { shifted: false }) { + var n, o, a, s, l, c, u; + let r = "", i = (n = t37.class) != null ? n : ""; + if (e.shifted && rn(t37) && (i += " is-active"), e.shifted && "shift" in t37) + typeof t37.shift == "string" ? r = Yn(t37.shift) : typeof t37.shift == "object" && (r = t37.shift.label ? t37.shift.label : (o = Yn(t37.shift.latex || t37.shift.insert || "") || t37.shift.key) != null ? o : ""), typeof t37.shift == "object" && (i = (s = (a = t37.shift.class) != null ? a : t37.class) != null ? s : ""); + else { + if (r = t37.label ? t37.label : (l = Yn(t37.latex || t37.insert || "") || t37.key) != null ? l : "", t37.shift) { + let d; + typeof t37.shift == "string" ? d = Yn(t37.shift) : t37.shift.label ? d = t37.shift.label : d = (c = Yn(t37.shift.latex || t37.shift.insert || "") || t37.shift.key) != null ? c : "", r += `${d}`; + } + t37.aside && (r += ``); + } + return t37.layer && !/layer-switch/.test(i) && (i += " layer-switch"), /(^|\s)(separator|action|shift|fnbutton|bigfnbutton)($|\s)/.test(i) || (i += " MLK__keycap"), !/\bw[0-9]+\b/.test(i) && t37.width && (i += (u = { 0: " w0", 0.5: " w5", 1.5: " w15", 2: " w20", 5: " w50" }[t37.width]) != null ? u : ""), [r, i || "MLK__keycap"]; +} +var ii = { "[left]": { class: "action hide-shift", label: "", command: "performWithFeedback(moveToPreviousChar)", shift: { label: "", command: "performWithFeedback(extendSelectionBackward)" } }, "[right]": { class: "action hide-shift", label: "", command: "performWithFeedback(moveToNextChar)", shift: { label: "", command: "performWithFeedback(extendSelectionForward)" } }, "[up]": { class: "action hide-shift", label: "\u2191", command: "performWithFeedback(moveUp)", shift: { label: "\u219F", command: "performWithFeedback(extendSelectionUpward)" } }, "[down]": { class: "action hide-shift", label: "\u2193", command: "performWithFeedback(moveDown)", shift: { label: "\u21A1", command: "performWithFeedback(extendSelectionDownward)" } }, "[return]": { class: "action hide-shift", command: "performWithFeedback(commit)", shift: { command: "performWithFeedback(addRowAfter)" }, width: 1.5, label: "" }, "[action]": { class: "action hide-shift", command: "performWithFeedback(commit)", shift: { label: "", command: "performWithFeedback(addRowAfter)" }, width: 1.5, label: "" }, "[hr]": { class: "separator horizontal-rule" }, "[hide-keyboard]": { class: "action", command: ["hideVirtualKeyboard"], width: 1.5, label: "" }, "[.]": { variants: ".", command: "performWithFeedback(insertDecimalSeparator)", shift: ",", class: "big-op hide-shift", label: "." }, "[,]": { variants: ",", command: "performWithFeedback(insertDecimalSeparator)", shift: ".", class: "big-op hide-shift", label: "," }, "[+]": { variants: [{ latex: "\\sum_{#0}^{#0}", class: "small" }, "\\oplus"], latex: "+", label: "+", class: "big-op hide-shift", shift: { latex: "\\sum", insert: "\\sum", class: "small" } }, "[-]": { variants: ["\\pm", "\\ominus"], latex: "-", label: "−", shift: "\\pm", class: "big-op hide-shift" }, "[/]": { class: "big-op hide-shift", shift: { class: "", latex: "\\frac{1}{#@}" }, variants: ["/", "\\div", "\\%", "\\oslash"], latex: "\\frac{#@}{#?}", label: "÷" }, "[*]": { variants: [{ latex: "\\prod_{#0}^{#0}", class: "small" }, "\\otimes", "\\cdot"], latex: "\\cdot", label: "×", shift: { latex: "\\times" }, class: "big-op hide-shift" }, "[=]": { variants: ["\\neq", "\\equiv", "\\varpropto", "\\thickapprox", "\\lt", "\\gt", "\\le", "\\ge"], latex: "=", label: "=", shift: { label: "\u2260", latex: "\\ne" }, class: "big-op hide-shift" }, "[backspace]": { class: "action bottom right hide-shift", width: 1.5, command: "performWithFeedback(deleteBackward)", label: "", shift: { class: "action warning", label: "", command: "deleteAll" } }, "[undo]": { class: "ghost if-can-undo", command: "undo", label: "", tooltip: "tooltip.undo" }, "[redo]": { class: "ghost if-can-redo", command: "redo", label: "", tooltip: "tooltip.redo" }, "[(]": { variants: [{ latex: "\\lbrack", key: "[" }, "\\langle", "\\lfloor", "\\lceil", { latex: "\\lbrace", key: "{" }], key: "(", label: "(", shift: { label: "[", key: "[" }, class: "hide-shift" }, "[)]": { variants: [{ latex: "\\rbrack", key: "]" }, "\\rangle", "\\rfloor", "\\rceil", { latex: "\\rbrace", key: "]" }], key: ")", label: ")", shift: { label: "]", latex: "\\rbrack" }, class: "hide-shift" }, "[0]": { variants: "0", latex: "0", label: "0", shift: "\\infty", class: "hide-shift" }, "[1]": { variants: "1", latex: "1", label: "1", shift: "#@^{-1}", class: "hide-shift" }, "[2]": { variants: "2", latex: "2", label: "2", shift: "#@^2", class: "hide-shift" }, "[3]": { variants: "3", latex: "3", label: "3", shift: "#@^3", class: "hide-shift" }, "[4]": { variants: "4", latex: "4", label: "4", shift: "#@^4", class: "hide-shift" }, "[5]": { variants: "5", latex: "5", label: "5", shift: "#@^5", class: "hide-shift" }, "[6]": { variants: "6", latex: "6", label: "6", shift: "#@^6", class: "hide-shift" }, "[7]": { variants: "7", latex: "7", label: "7", shift: "#@^7", class: "hide-shift" }, "[8]": { variants: "8", latex: "8", label: "8", shift: "#@^8", class: "hide-shift" }, "[9]": { variants: "9", latex: "9", label: "9", shift: "#@^9", class: "hide-shift" }, "[separator-5]": { class: "separator", width: 0.5 }, "[separator]": { class: "separator" }, "[separator-10]": { class: "separator" }, "[separator-15]": { class: "separator", width: 1.5 }, "[separator-20]": { class: "separator", width: 2 }, "[separator-50]": { class: "separator", width: 5 }, "[shift]": { class: "shift bottom left", width: 1.5, label: "" }, "[foreground-color]": { variants: "foreground-color", command: ["applyStyle", { color: "red" }], label: "" }, "[background-color]": { variants: "background-color", command: ["applyStyle", { backgroundColor: "yellow" }], label: "" } }; +function Nl(t37) { + var r; + if (typeof t37 == "string") { + if (t37 === "[.]" && globalThis.MathfieldElement.decimalSeparator === "," && (t37 = "[,]"), !ii[t37]) + return { latex: t37 }; + t37 = { label: t37 }; + } + let e; + return "label" in t37 && t37.label && ii[t37.label] && (e = g(p(p({}, ii[t37.label]), t37), { label: ii[t37.label].label })), "key" in t37 && t37.key && ii[t37.key] && (e = g(p(p({}, ii[t37.key]), t37), { key: ii[t37.key].key })), e ? (e.command === "insertDecimalSeparator" && (e.label = (r = globalThis.MathfieldElement.decimalSeparator) != null ? r : "."), t37.label === "[action]" && (e = p(p({}, e), window.mathVirtualKeyboard.actionKeycap)), t37.label === "[shift]" && (e = p(p({}, e), window.mathVirtualKeyboard.shiftKeycap)), t37.label === "[backspace]" && (e = p(p({}, e), window.mathVirtualKeyboard.backspaceKeycap)), t37.label === "[tab]" && (e = p(p({}, e), window.mathVirtualKeyboard.tabKeycap)), (e.tooltip === void 0 || e.tooltip === null || e.tooltip === false) && delete e.tooltip, (e.tooltip === void 0 || e.tooltip === null || e.tooltip === false) && delete e.tooltip, (e.aside === void 0 || e.aside === null || e.aside === false) && delete e.aside, (e.variants === void 0 || e.variants === null || e.variants === false) && delete e.variants, (e.shift === void 0 || e.shift === null || e.shift === false) && delete e.shift, e) : t37; +} +var eo; +function Ff(t37) { + var s; + if (t37.button !== 0) + return; + let e = we.singleton; + if (!e) + return; + let r = t37.target; + for (; r && !r.getAttribute("data-layer"); ) + r = r.parentElement; + if (r) { + e.currentLayer = (s = r.getAttribute("data-layer")) != null ? s : "", t37.preventDefault(); + return; + } + let i = ti(t37.target); + if (!(i != null && i.id)) + return; + let n = e.getKeycap(i.id); + if (!n) + return; + t37.type; + let o = new AbortController(), a = o.signal; + i.classList.add("is-pressed"), i.addEventListener("pointerenter", qa(o), { capture: true, signal: a }), i.addEventListener("pointerleave", qa(o), { capture: true, signal: a }), i.addEventListener("pointercancel", qa(o), { signal: a }), i.addEventListener("pointerup", qa(o), { signal: a }), rn(n) && (i.classList.add("is-active"), e.shiftPressCount++), n.variants && (eo && clearTimeout(eo), eo = setTimeout(() => { + i.classList.contains("is-pressed") && (i.classList.remove("is-pressed"), i.classList.add("is-active"), t37.target && "releasePointerCapture" in t37.target && t37.target.releasePointerCapture(t37.pointerId), Fa(i, () => { + o.abort(), i == null || i.classList.remove("is-active"); + })); + }, 300)), t37.preventDefault(); +} +function qa(t37) { + return (e) => { + let r = ti(e.target); + if (!(r != null && r.id)) + return; + let i = we.singleton; + if (!i) + return; + let n = i.getKeycap(r.id); + if (n) { + if (e.type === "pointerenter" && e.target === r && e.isPrimary && r.classList.add("is-pressed"), e.type === "pointercancel") { + r.classList.remove("is-pressed"), rn(n) && (i.shiftPressCount--, r.classList.toggle("is-active", i.isShifted)), t37.abort(); + return; + } + if (e.type === "pointerleave" && e.target === r) { + r.classList.remove("is-pressed"), rn(n) && (i.shiftPressCount--, r.classList.toggle("is-active", i.isShifted)); + return; + } + if (e.type === "pointerup") { + eo && clearTimeout(eo), rn(n) ? r.classList.toggle("is-active", i.isShifted) : r.classList.contains("is-pressed") && (r.classList.remove("is-pressed"), i.isShifted && n.shift ? typeof n.shift == "string" ? i.executeCommand(["insert", n.shift, { focus: true, feedback: true, scrollIntoView: true, mode: "math", format: "latex" }]) : Va(n.shift) : Va(n), i.shiftPressCount === 1 && !e.shiftKey && (i.shiftPressCount = 0)), t37.abort(), e.preventDefault(); + return; + } + } + }; +} +function Va(t37) { + var r; + let e = t37.command; + !e && t37.insert && (e = ["insert", t37.insert, { focus: true, feedback: true, scrollIntoView: true, mode: "math", format: "latex" }]), !e && t37.key && (e = ["typedText", t37.key, { focus: true, feedback: true, simulateKeystroke: true }]), !e && t37.latex && (e = ["insert", t37.latex, { focus: true, feedback: true, scrollIntoView: true, mode: "math", format: "latex" }]), e || (e = ["typedText", t37.label, { focus: true, feedback: true, simulateKeystroke: true }]), (r = we.singleton) == null || r.executeCommand(e); +} +function $f(t37) { + if (t37.nodeType !== 1) + return false; + let e = t37.classList; + return e.contains("MLK__keycap") || e.contains("shift") || e.contains("action") || e.contains("fnbutton") || e.contains("bigfnbutton"); +} +function ti(t37) { + if (!t37) + return; + let e = t37; + for (; e && !$f(e); ) + e = e.parentElement; + return e != null ? e : void 0; +} +function rn(t37) { + return !!t37.class && /(^|\s)shift($|\s)/.test(t37.class); +} +var we = class t34 { + constructor() { + this.originalContainerBottomPadding = null; + this.keycapRegistry = {}; + this._shiftPressCount = 0; + var e; + this.targetOrigin = window.origin, this.originValidator = "none", this._alphabeticLayout = "auto", this._layouts = Object.freeze(["default"]), this._editToolbar = "default", this._container = void 0, this._visible = false, this._rebuilding = false, this.observer = new ResizeObserver((r) => { + this.adjustBoundingRect(), this.dispatchEvent(new Event("geometrychange")), this.sendMessage("geometry-changed", { boundingRect: this.boundingRect }); + }), this.listeners = {}; + try { + (e = window.top) == null || e.addEventListener("message", this); + } catch (r) { + window.addEventListener("message", this); + } + document.addEventListener("focusin", (r) => { + let i = r.target; + i != null && i.isConnected && setTimeout(() => { + let n = Wm(); + n && !n.readOnly && n.mathVirtualKeyboardPolicy === "auto" && go() && this.show({ animate: true }); + }, 300); + }), document.addEventListener("focusout", (r) => { + r.target instanceof ct && r.target.mathVirtualKeyboardPolicy !== "manual" && setTimeout(() => { + Wm() || this.hide(); + }, 300); + }); + } + get currentLayer() { + var e, r, i; + return (i = (r = (e = this._element) == null ? void 0 : e.querySelector(".MLK__layer.is-visible")) == null ? void 0 : r.id) != null ? i : ""; + } + set currentLayer(e) { + var i; + if (!this._element) { + this.latentLayer = e; + return; + } + let r = e ? this._element.querySelector(`#${e}.MLK__layer`) : null; + r || (r = this._element.querySelector(".MLK__layer")), r && ((i = this._element.querySelector(".MLK__layer.is-visible")) == null || i.classList.remove("is-visible"), r.classList.add("is-visible")), this.render(); + } + get shiftPressCount() { + return this._shiftPressCount; + } + set shiftPressCount(e) { + var r; + this._shiftPressCount = e > 2 || e < 0 ? 0 : e, (r = this._element) == null || r.classList.toggle("is-caps-lock", this.shiftPressCount === 2), this.render(); + } + get isShifted() { + return this._shiftPressCount > 0; + } + resetKeycapRegistry() { + this.keycapRegistry = {}; + } + registerKeycap(e) { + let r = "ML__k" + Date.now().toString(36).slice(-2) + Math.floor(Math.random() * 1e5).toString(36); + return this.keycapRegistry[r] = e, r; + } + getKeycap(e) { + return e ? this.keycapRegistry[e] : void 0; + } + getLayer(e) { + let r = this.normalizedLayouts; + for (let i of r) + for (let n of i.layers) + if (n.id === e) + return n; + } + get alphabeticLayout() { + return this._alphabeticLayout; + } + set alphabeticLayout(e) { + this._alphabeticLayout = e, this.rebuild(); + } + get actionKeycap() { + return this._actionKeycap; + } + set actionKeycap(e) { + this._actionKeycap = typeof e == "string" ? { label: e } : e; + } + get shiftKeycap() { + return this._shiftKeycap; + } + set shiftKeycap(e) { + this._shiftKeycap = typeof e == "string" ? { label: e } : e; + } + get backspaceKeycap() { + return this._backspaceKeycap; + } + set backspaceKeycap(e) { + this._backspaceKeycap = typeof e == "string" ? { label: e } : e; + } + get tabKeycap() { + return this._tabKeycap; + } + set tabKeycap(e) { + this._tabKeycap = typeof e == "string" ? { label: e } : e; + } + get layouts() { + return this._layouts; + } + set layouts(e) { + this.updateNormalizedLayouts(e), this.rebuild(); + } + updateNormalizedLayouts(e) { + let r = Array.isArray(e) ? [...e] : [e], i = r.findIndex((n) => n === "default"); + i >= 0 && r.splice(i, 1, "numeric", "symbols", "alphabetic", "greek"), this._layouts = Object.freeze(r), this._normalizedLayouts = r.map((n) => Fl(n)); + } + get normalizedLayouts() { + return this._normalizedLayouts || this.updateNormalizedLayouts(this._layouts), this._normalizedLayouts; + } + get editToolbar() { + return this._editToolbar; + } + set editToolbar(e) { + this._editToolbar = e, this.rebuild(); + } + get container() { + return this._container === void 0 ? window.document.body : this._container; + } + set container(e) { + this._container = e, this.rebuild(); + } + static get singleton() { + if (this._singleton === void 0) + try { + this._singleton = new t34(); + } catch (e) { + this._singleton = null; + } + return this._singleton; + } + get style() { + return this._style; + } + addEventListener(e, r, i) { + this.listeners[e] || (this.listeners[e] = /* @__PURE__ */ new Set()), this.listeners[e].has(r) || this.listeners[e].add(r); + } + dispatchEvent(e) { + return !this.listeners[e.type] || this.listeners[e.type].size === 0 ? true : (this.listeners[e.type].forEach((r) => { + typeof r == "function" ? r(e) : r == null || r.handleEvent(e); + }), !e.defaultPrevented); + } + removeEventListener(e, r, i) { + this.listeners[e] && this.listeners[e].delete(r); + } + get element() { + return this._element; + } + set element(e) { + var r; + this._element !== e && ((r = this._element) == null || r.remove(), this._element = e); + } + get visible() { + return this._visible; + } + set visible(e) { + e ? this.show() : this.hide(); + } + get boundingRect() { + var r; + if (!this._visible) + return new DOMRect(); + let e = (r = this._element) == null ? void 0 : r.getElementsByClassName("MLK__plate")[0]; + return e ? e.getBoundingClientRect() : new DOMRect(); + } + adjustBoundingRect() { + var r, i; + let e = this.boundingRect.height; + if (this.container === document.body) { + (r = this._element) == null || r.style.setProperty("--_keyboard-height", `calc(${e}px + var(--_padding-top) + var(--_padding-bottom) + env(safe-area-inset-bottom, 0))`); + let n = e - 1; + this.container.style.paddingBottom = this.originalContainerBottomPadding ? `calc(${this.originalContainerBottomPadding} + ${n}px)` : `${n}px`; + } else + (i = this._element) == null || i.style.setProperty("--_keyboard-height", `${e}px`); + } + rebuild() { + if (this._rebuilding || !this._element) + return; + this._rebuilding = true; + let e = this.currentLayer; + requestAnimationFrame(() => { + this._rebuilding = false, this._element && (this._element.remove(), this._element = void 0), this.visible && (this.buildAndAttachElement(), this.currentLayer = e, this.render(), this.adjustBoundingRect(), this._element.classList.add("is-visible")); + }); + } + render() { + var n; + if (!this._element) + return; + let e = this.getLayer(this.currentLayer); + this._element.classList.toggle("backdrop-is-transparent", !!(e && (e.backdrop || e.container))); + let r = this._element.querySelectorAll(".MLK__layer.is-visible .MLK__keycap, .MLK__layer.is-visible .action, .fnbutton, .MLK__layer.is-visible .bigfnbutton, .MLK__layer.is-visible .shift"); + if (!r) + return; + let i = this.isShifted; + for (let o of r) { + let a = this.getKeycap(o.id); + if (a) { + let [s, l] = tn(a, { shifted: i }); + o.innerHTML = globalThis.MathfieldElement.createHTML(s), o.className = l, i && typeof a.shift == "object" && ((n = a.shift) != null && n.tooltip) ? o.dataset.tooltip = a.shift.tooltip : !i && a.tooltip && (o.dataset.tooltip = a.tooltip); + } + } + } + show(e) { + var i; + if (this._visible) + return; + let r = this.container; + if (r && window.mathVirtualKeyboard && this.stateWillChange(true)) { + if (this._element || (this.buildAndAttachElement(), this.adjustBoundingRect()), !this._visible) { + let n = this._element.getElementsByClassName("MLK__plate")[0]; + if (n && this.observer.observe(n), r === window.document.body) { + let o = r.style.paddingBottom; + this.originalContainerBottomPadding = o; + let a = n.offsetHeight - 1; + r.style.paddingBottom = o ? `calc(${o} + ${a}px)` : `${a}px`; + } + window.addEventListener("mouseup", this), window.addEventListener("blur", this), window.addEventListener("keydown", this, { capture: true }), window.addEventListener("keyup", this, { capture: true }), (i = this._element) == null || i.classList.toggle("is-caps-lock", this.shiftPressCount === 2), this.currentLayer = this.latentLayer; + } + this._visible = true, e != null && e.animate ? requestAnimationFrame(() => { + this._element && (this._element.classList.add("animate"), this._element.addEventListener("transitionend", () => { + var n; + return (n = this._element) == null ? void 0 : n.classList.remove("animate"); + }, { once: true }), this._element.classList.add("is-visible"), this.stateChanged()); + }) : (this._element.classList.add("is-visible"), this.stateChanged()); + } + } + hide(e) { + var i; + let r = this.container; + if (r && this._visible && this.stateWillChange(false)) { + if (this._visible = false, this._element) { + this.latentLayer = this.currentLayer; + let n = this._element.getElementsByClassName("MLK__plate")[0]; + n && this.observer.unobserve(n), window.removeEventListener("mouseup", this), window.removeEventListener("blur", this), window.removeEventListener("keydown", this, { capture: true }), window.removeEventListener("keyup", this, { capture: true }), window.removeEventListener("contextmenu", this, { capture: true }), ri(), qm(), (i = this._element) == null || i.remove(), this._element = void 0, this.originalContainerBottomPadding !== null && (r.style.paddingBottom = this.originalContainerBottomPadding); + } + this.stateChanged(); + } + } + get height() { + var e, r; + return (r = (e = this.element) == null ? void 0 : e.offsetHeight) != null ? r : 0; + } + buildAndAttachElement() { + var e; + this.element, this.element = Hm(this), window.addEventListener("contextmenu", this, { capture: true }), this.element.addEventListener("contextmenu", (r) => { + r.shiftKey || ((r.ctrlKey || r.button === 2) && Fa(r.target), r.preventDefault(), r.stopPropagation()); + }, { capture: true }), (e = this.container) == null || e.appendChild(this.element); + } + handleEvent(e) { + if (Zn(e)) { + if (!Ii(e.origin, this.originValidator)) + throw new DOMException(`Message from unknown origin (${e.origin}) cannot be handled`, "SecurityError"); + e.data.action === "disconnect" ? this.connectedMathfieldWindow = void 0 : e.data.action !== "update-setting" && e.data.action !== "proxy-created" && e.data.action !== "execute-command" && (e.source, this.connectedMathfieldWindow = e.source), this.handleMessage(e.data, e.source); + } + if (this._element) + switch (e.type) { + case "mouseup": + case "blur": + document.body.style.userSelect = "", this.shiftPressCount = 0; + break; + case "contextmenu": + e.button !== 2 && e.preventDefault(); + break; + case "keydown": { + e.key === "Shift" && !e.repeat && (this.shiftPressCount = 1); + break; + } + case "keyup": { + (e.key === "Shift" || !e.getModifierState("Shift") && this.shiftPressCount !== 2) && (this.shiftPressCount = 0); + break; + } + } + } + handleMessage(e, r) { + let { action: i } = e; + if (i === "execute-command") { + let { command: n } = e, o = Gt(n); + if (window.top !== void 0 && o !== "virtual-keyboard") + return; + this.executeCommand(n); + return; + } + if ((i === "connect" || i === "show") && this.sendMessage("synchronize-proxy", { boundingRect: this.boundingRect, alphabeticLayout: this._alphabeticLayout, layouts: this._layouts, editToolbar: this._editToolbar }, r), i !== "disconnect" && window === window.top) { + if (i === "show") { + typeof e.animate != "undefined" ? this.show({ animate: e.animate }) : this.show(); + return; + } + if (i === "hide") { + typeof e.animate != "undefined" ? this.hide({ animate: e.animate }) : this.hide(); + return; + } + if (i === "update-setting") { + e.alphabeticLayout && (this.alphabeticLayout = e.alphabeticLayout), e.layouts && (this.layouts = e.layouts), e.editToolbar && (this.editToolbar = e.editToolbar); + return; + } + if (i === "proxy-created") { + this.sendMessage("synchronize-proxy", { boundingRect: this.boundingRect, alphabeticLayout: this._alphabeticLayout, layouts: this._layouts, editToolbar: this._editToolbar }, r); + return; + } + } + } + sendMessage(e, r, i) { + if (i || (i = this.connectedMathfieldWindow), this.targetOrigin === null || this.targetOrigin === "null" || i === window) { + window.dispatchEvent(new MessageEvent("message", { source: window, data: p({ type: Xn, action: e }, r) })); + return; + } + if (i) + i.postMessage(p({ type: Xn, action: e }, r), { targetOrigin: this.targetOrigin }); + else if (r.command && this.dispatchEvent(new CustomEvent("math-virtual-keyboard-command", { detail: r.command })), e === "execute-command" && Array.isArray(r.command) && r.command[0] === "insert") { + let n = r.command[1].split(""); + for (let o of n) + this.dispatchEvent(new KeyboardEvent("keydown", { key: o, bubbles: true })), this.dispatchEvent(new KeyboardEvent("keyup", { key: o, bubbles: true })); + } + } + stateWillChange(e) { + return this.dispatchEvent(new CustomEvent("before-virtual-keyboard-toggle", { detail: { visible: e }, bubbles: true, cancelable: true, composed: true })); + } + stateChanged() { + this.dispatchEvent(new Event("virtual-keyboard-toggle")), this._visible || (this.dispatchEvent(new Event("geometrychange")), this.sendMessage("geometry-changed", { boundingRect: this.boundingRect })); + } + focus() { + this.sendMessage("focus", {}); + } + blur() { + this.sendMessage("blur", {}); + } + updateToolbar(e) { + let r = this._element; + if (!r) + return; + r.classList.toggle("is-math-mode", e.mode === "math"), r.classList.toggle("is-text-mode", e.mode === "text"), r.classList.toggle("can-undo", e.canUndo), r.classList.toggle("can-redo", e.canRedo), r.classList.toggle("can-copy", !e.selectionIsCollapsed), r.classList.toggle("can-copy", !e.selectionIsCollapsed), r.classList.toggle("can-paste", true); + let i = r.querySelectorAll(".ML__edit-toolbar"); + if (i) + for (let n of i) + n.innerHTML = Vm(this, e); + } + update(e) { + this._style = e.style, this.updateToolbar(e); + } + connect() { + this.connectedMathfieldWindow = window; + } + disconnect() { + this.connectedMathfieldWindow = void 0; + } + executeCommand(e) { + if (e = ei(e), !e) + return false; + let r, i = [], n = Gt(e); + return X(e) ? (r = e[0], r === "performWithFeedback" && (n = Gt(e.slice(1))), i = e.slice(1)) : r = e, n === "virtual-keyboard" ? lt[r].fn(void 0, ...i) : (this.sendMessage("execute-command", { command: e }), false); + } + dispose() { + window.removeEventListener("mouseup", this), window.removeEventListener("blur", this), window.removeEventListener("message", this); + } +}; +function Wm() { + let t37 = Xr(), e = null; + for (; t37; ) { + if ("host" in t37 && t37.host instanceof ct) { + e = t37.host; + break; + } + t37 = t37.parentNode; + } + return e; +} +if (fe() && !("mathVirtualKeyboard" in window)) + if (window === window.top) { + let t37 = we.singleton; + Object.defineProperty(window, "mathVirtualKeyboard", { get: () => t37 }); + } else + Object.defineProperty(window, "mathVirtualKeyboard", { get: () => jn.singleton, configurable: true }); +function Vf(t37, e) { + t37.flushInlineShortcutBuffer(), t37.stopCoalescingUndo(); + let r = Ha(t37, e), { model: i } = t37; + return i.selectionIsCollapsed ? (t37.defaultStyle.fontSeries && r.fontSeries === t37.defaultStyle.fontSeries && (r.fontSeries = "auto"), r.fontShape && r.fontShape === t37.defaultStyle.fontShape && (r.fontShape = "auto"), r.color && r.color === t37.defaultStyle.color && (r.color = "none"), r.backgroundColor && r.backgroundColor === t37.defaultStyle.backgroundColor && (r.backgroundColor = "none"), r.fontSize && r.fontSize === t37.defaultStyle.fontSize && (r.fontSize = "auto"), t37.defaultStyle = p(p({}, t37.defaultStyle), r)) : t37.model.deferNotifications({ content: true, type: "insertText" }, () => { + i.selection.ranges.forEach((n) => Vn(i, n, r, { operation: "toggle" })), t37.snapshot("style-change"); + }), true; +} +ae({ applyStyle: Vf }, { target: "mathfield", canUndo: true, changeContent: true }); +function Ha(t37, e) { + var n, o, a, s, l, c, u, d, m, h; + let r = {}; + if (typeof e.color == "string") { + let f = (o = t37.colorMap((n = e.color) != null ? n : e.verbatimColor)) != null ? o : "none"; + f !== e.color && (r.verbatimColor = (a = e.verbatimColor) != null ? a : e.color), r.color = f; + } + if (typeof e.backgroundColor == "string") { + let f = (l = t37.backgroundColorMap((s = e.backgroundColor) != null ? s : e.verbatimBackgroundColor)) != null ? l : "none"; + f !== e.backgroundColor && (r.verbatimBackgroundColor = (c = e.verbatimBackgroundColor) != null ? c : e.backgroundColor), r.backgroundColor = f; + } + typeof e.fontFamily == "string" && (r.fontFamily = e.fontFamily), typeof e.series == "string" && (r.fontSeries = e.series), typeof e.fontSeries == "string" && (r.fontSeries = e.fontSeries.toLowerCase()), r.fontSeries && (r.fontSeries = (u = { bold: "b", medium: "m", normal: "m" }[r.fontSeries]) != null ? u : r.fontSeries), typeof e.shape == "string" && (r.fontShape = e.shape), typeof e.fontShape == "string" && (r.fontShape = e.fontShape.toLowerCase()), r.fontShape && (r.fontShape = (d = { italic: "it", up: "n", upright: "n", normal: "n" }[r.fontShape]) != null ? d : r.fontShape), e.variant && (r.variant = e.variant.toLowerCase()), e.variantStyle && (r.variantStyle = e.variantStyle.toLowerCase()); + let i = (m = e.size) != null ? m : e.fontSize; + return typeof i == "number" ? r.fontSize = Math.max(1, Math.min(10, i)) : typeof i == "string" && (r.fontSize = (h = { size1: 1, size2: 2, size3: 3, size4: 4, size5: 5, size6: 6, size7: 7, size8: 8, size9: 9, size10: 10 }[i.toLowerCase()]) != null ? h : { tiny: 1, scriptsize: 2, footnotesize: 3, small: 4, normal: 5, normalsize: 5, large: 6, Large: 7, LARGE: 8, huge: 9, Huge: 10 }[i]), r; +} +function to(t37, e, r) { + let i = t37.model; + if (i.mode === "latex") + return {}; + if (i.mode === "math") { + if (t37.styleBias === "none") + return t37.defaultStyle; + let n = i.at(e), o = t37.styleBias === "right" ? n.rightSibling : n; + if (!o) + return t37.defaultStyle; + if (o.type === "group") { + let a = o.branch("body"); + return !a || a.length < 2 ? {} : t37.styleBias === "right" ? a[1].style : a[a.length - 1].style; + } + return o.style; + } + if (i.mode === "text") { + let n = i.at(r.before); + if (n) + return n.style; + } + return {}; +} +function nn(t37) { + let e = t37.options.onInsertStyle; + if (e === null) + return {}; + e === void 0 && (e = to); + let r = t37.model, i = r.at(r.position), n = i.type === "first" ? -1 : r.position, o = i ? r.offsetOf(i.rightSibling) : -1; + return e(t37, r.position, { before: n, after: o }); +} +function on(t37) { + let e = {}; + for (let r of Object.keys(t37)) + switch (r) { + case "scriptDepth": + let i = t37.scriptDepth; + if (X(i)) + e.scriptDepth = [i[0], i[1]]; + else if (typeof i == "number") + e.scriptDepth = [i, i]; + else if (typeof i == "string") { + let [o, a] = i.split(",").map((s) => parseInt(s.trim())); + e.scriptDepth = [o, a]; + } else + throw new TypeError("Unexpected value for scriptDepth"); + break; + case "mathVirtualKeyboardPolicy": + let n = t37.mathVirtualKeyboardPolicy.toLowerCase(); + if (n === "sandboxed") { + if (window !== window.top) { + let o = we.singleton; + Object.defineProperty(window, "mathVirtualKeyboard", { get: () => o }); + } + n = "manual"; + } + e.mathVirtualKeyboardPolicy = n; + break; + case "letterShapeStyle": + t37.letterShapeStyle === "auto" ? O.locale.startsWith("fr") ? e.letterShapeStyle = "french" : e.letterShapeStyle = "tex" : e.letterShapeStyle = t37.letterShapeStyle; + break; + case "defaultMode": + ["text", "math", "inline-math"].includes(t37.defaultMode) ? e.defaultMode = t37.defaultMode : (console.error('MathLive 0.100.0: valid values for defaultMode are "text", "math" or "inline-math"'), e.defaultMode = "math"); + break; + case "macros": + e.macros = Mo(t37.macros); + break; + default: + X(t37[r]) ? e[r] = [...t37[r]] : typeof t37[r] == "object" && !(t37[r] instanceof Element) && r !== "computeEngine" ? e[r] = p({}, t37[r]) : e[r] = t37[r]; + } + return e; +} +function jt(t37, e) { + let r; + typeof e == "string" ? r = [e] : e === void 0 ? r = Object.keys(t37) : r = e; + let i = {}; + for (let n of r) + t37[n] === null ? i[n] = null : X(t37[n]) ? i[n] = [...t37[n]] : typeof t37[n] == "object" && !(t37[n] instanceof Element) && n !== "computeEngine" ? i[n] = p({}, t37[n]) : i[n] = t37[n]; + return typeof e == "string" ? i[e] : i; +} +function an() { + return { readOnly: false, defaultMode: "math", macros: {}, registers: {}, colorMap: Tr, backgroundColorMap: gi, letterShapeStyle: O.locale.startsWith("fr") ? "french" : "tex", minFontScale: 0, maxMatrixCols: 10, smartMode: false, smartFence: true, smartSuperscript: true, scriptDepth: [1 / 0, 1 / 0], removeExtraneousParentheses: true, isImplicitFunction: (t37) => ["\\sin", "\\cos", "\\tan", "\\arcsin", "\\arccos", "\\arctan", "\\arcsec", "\\arccsc", "\\arsinh", "\\arcosh", "\\artanh", "\\arcsech", "\\arccsch", "\\arg", "\\ch", "\\cosec", "\\cosh", "\\cot", "\\cotg", "\\coth", "\\csc", "\\ctg", "\\cth", "\\sec", "\\sinh", "\\sh", "\\tanh", "\\tg", "\\th", "\\lg", "\\lb", "\\log", "\\ln"].includes(t37), mathModeSpace: "", placeholderSymbol: "\u25A2", contentPlaceholder: "", popoverPolicy: "auto", environmentPopoverPolicy: "off", keybindings: F0, inlineShortcuts: va, inlineShortcutTimeout: 0, mathVirtualKeyboardPolicy: "auto", virtualKeyboardTargetOrigin: window == null ? void 0 : window.origin, originValidator: "none", onInsertStyle: to, onInlineShortcut: () => "", onScrollIntoView: null, onExport: N0, value: "" }; +} +function $l(t37) { + return t37.defaultMode === "inline-math" ? "math" : t37.defaultMode; +} +function Um(t37, e) { + let r = t37.at(t37.position); + if (r.type === "composition") + r.value = e; + else { + let { caret: i } = r; + r.caret = void 0; + let n = new $i(e, { mode: r.mode }); + n.caret = i, r.parent.addChildAfter(n, r), t37.position += 1; + } +} +function Jm(t37) { + let e = t37.at(t37.position); + e.type === "composition" && (e.parent.removeChild(e), t37.position -= 1); +} +Cs(["math", "displaymath"], Re); +Cs("center", Re); +_("displaylines", "", { parse: (t37) => { + let e = [], r = []; + t37.beginContext({ tabular: true }); + do { + if (t37.end() || t37.match("<}>")) + break; + t37.matchColumnSeparator() || t37.matchRowSeparator() ? (e.push([r]), r = []) : r.push(...t37.scan((i) => ["<}>", "&", "\\cr", "\\\\", "\\tabularnewline"].includes(i))); + } while (true); + return t37.endContext(), e.push([r]), e; +}, createAtom: (t37) => new N("lines", t37.args, [], { leftDelim: ".", rightDelim: ".", columns: [{ align: "l" }] }) }); +bt("array", "{columns:colspec}", (t37, e, r, i) => new N(t37, Vl(e), r, { columns: i[0], mathstyleName: "textstyle" })); +bt(["equation", "equation*", "subequations"], "", (t37, e, r) => new N(t37, Vl(e), r, { columns: [{ align: "c" }] })); +bt(["multline", "multline*"], "", Re); +bt(["align", "align*", "aligned", "eqnarray"], "", Re); +bt("split", "", Re); +bt(["gather", "gather*", "gathered"], "", Re); +bt(["matrix", "pmatrix", "bmatrix", "Bmatrix", "vmatrix", "Vmatrix", "matrix*", "pmatrix*", "bmatrix*", "Bmatrix*", "vmatrix*", "Vmatrix*"], "[columns:colspec]", Re); +bt(["smallmatrix", "smallmatrix*"], "[columns:colspec]", Re); +bt(["cases", "dcases", "rcases"], "", Re); +function qf(t37) { + for (let e of t37) + for (let r of e) + if (r.length > 0) + return false; + return true; +} +function Vl(t37, e = 1) { + return qf(t37) ? Array(e).fill([[new y({ type: "first" }), new ge()]]) : t37.map((r) => r.length === 0 ? [[new y({ type: "first" })]] : r.map((i) => i.length === 0 ? [new y({ type: "first" })] : i[0].type === "first" ? i : [new y({ type: "first" }), ...i])); +} +function Re(t37, e = [[[]]], r = [], i = [], n) { + switch (e = Vl(e, ["split", "align", "align*", "aligned", "eqnarray"].includes(t37) ? 2 : 1), t37) { + case "math": + return new N(t37, e, r, { mathstyleName: "textstyle" }); + case "displaymath": + return new N(t37, e, r, { mathstyleName: "textstyle" }); + case "center": + return new N(t37, e, r, { columns: [{ align: "c" }] }); + case "multline": + case "multline*": + return new N(t37, e, r, { columns: [{ align: "m" }], leftDelim: ".", rightDelim: "." }); + case "split": + return new N(t37, e, r, { columns: [{ align: "r" }, { align: "l" }], minColumns: 2 }); + case "gather": + case "gathered": + return new N(t37, e, r, { columns: [{ gap: 0.25 }, { align: "c" }, { gap: 0 }] }); + case "pmatrix": + case "pmatrix*": + return new N(t37, e, r, { mathstyleName: "textstyle", leftDelim: "(", rightDelim: ")", columns: ni(i[0], n) }); + case "bmatrix": + case "bmatrix*": + return new N(t37, e, r, { mathstyleName: "textstyle", leftDelim: "[", rightDelim: "]", columns: ni(i[0], n) }); + case "Bmatrix": + case "Bmatrix*": + return new N(t37, e, r, { mathstyleName: "textstyle", leftDelim: "\\lbrace", rightDelim: "\\rbrace", columns: ni(i[0], n) }); + case "vmatrix": + case "vmatrix*": + return new N(t37, e, r, { mathstyleName: "textstyle", leftDelim: "\\vert", rightDelim: "\\vert", columns: ni(i[0], n) }); + case "Vmatrix": + case "Vmatrix*": + return new N(t37, e, r, { mathstyleName: "textstyle", leftDelim: "\\Vert", rightDelim: "\\Vert", columns: ni(i[0], n) }); + case "matrix": + case "matrix*": + return new N(t37, e, r, { mathstyleName: "textstyle", leftDelim: ".", rightDelim: ".", columns: ni(i == null ? void 0 : i[0], n) }); + case "smallmatrix": + case "smallmatrix*": + return new N(t37, e, r, { mathstyleName: "scriptstyle", columns: ni(i == null ? void 0 : i[0], n), colSeparationType: "small", arraystretch: 0.5 }); + case "cases": + case "dcases": + return new N(t37, e, r, { mathstyleName: t37 === "dcases" ? "displaystyle" : "textstyle", arraystretch: 1.2, leftDelim: "\\lbrace", rightDelim: ".", columns: [{ align: "l" }, { gap: 1 }, { align: "l" }] }); + case "rcases": + return new N(t37, e, r, { arraystretch: 1.2, leftDelim: ".", rightDelim: "\\rbrace", columns: [{ align: "l" }, { gap: 1 }, { align: "l" }] }); + case "lines": + return new N(t37, e, r, { leftDelim: ".", rightDelim: ".", columns: [{ align: "l" }] }); + case "align": + case "align*": + case "aligned": + case "eqnarray": { + let o = 0; + for (let l of e) + o = Math.max(o, l.length); + let a = [{ gap: 0 }, { align: "r" }, { gap: 0.25 }, { align: "l" }], s = 2; + for (; s < o; ) + a.push({ gap: 1 }, { align: "r" }, { gap: 0.25 }, { align: "l" }), s += 2; + return a.push({ gap: 0 }), new N(t37, e, r, { arraycolsep: 0, columns: a, minColumns: 2 }); + } + } + return new N(t37, e, r, { mathstyleName: "textstyle" }); +} +function ni(t37, e = 10) { + return t37 != null ? t37 : Array(e).fill({ align: "c" }); +} +function Hf(t37, e) { + let r = t37.at(t37.position); + for (; r && !(r.parent instanceof N); ) + r = r.parent; + if (r && r.type === "array" && r.environmentName, !r || !(r.parent instanceof N)) { + let i = t37.at(t37.position); + if (r = i, !r.parent.parent) { + let n = t37.extractAtoms([t37.position, t37.lastOffset]), o = t37.extractAtoms([0, t37.position]); + o.length === 0 && (o = Ua()), n.length === 0 && (n = Ua()); + let a; + return e.endsWith("column") ? (a = Re("split", [[o, n]]), t37.root = a, oi(a, 0, 0) ? ai(t37, a, 0, 0) : oi(a, 0, 1) ? ai(t37, a, 0, 1) : t37.position = t37.offsetOf(i)) : (a = Re("lines", [[o], [n]]), t37.root = a, oi(a, 0, 0) ? ai(t37, a, 0, 0) : oi(a, 1, 0) ? ai(t37, a, 1, 0) : t37.position = t37.offsetOf(i)), [void 0, [0, 0]]; + } + if (r.parent instanceof H) { + let n = r.parent, o = t37.extractAtoms([t37.position, t37.offsetOf(n.lastChild)]), a = t37.extractAtoms([t37.offsetOf(n.firstChild), t37.position]); + a.length === 0 && (a = Ua()), o.length === 0 && (o = Ua()); + let s = "pmatrix", l = n.leftDelim, c = n.rightDelim; + l === "(" && (c === ")" || c === "?") ? s = "pmatrix" : (l === "[" || l === "\\lbrack") && (c === "]" || c === "\\rbrack" || c === "?") ? s = "bmatrix" : l === "\\vert" && c === "\\vert" ? s = "vmatrix" : l === "\\Vert" && c === "\\Vert" ? s = "Vmatrix" : (l === "{" || l === "\\lbrace") && (c === "." || c === "?") && (s = "cases"); + let u = Re(s, e.endsWith("column") ? [[a, o]] : [[a], [o]]); + return n.parent.addChildBefore(u, n), n.parent.removeChild(n), oi(u, 0, 0) ? ai(t37, u, 0, 0) : e.endsWith("column") ? oi(u, 0, 1) ? ai(t37, u, 0, 1) : t37.position = t37.offsetOf(r) : oi(u, 1, 0) ? ai(t37, u, 1, 0) : t37.position = t37.offsetOf(r), [void 0, [0, 0]]; + } + } + return r && r.parent instanceof N ? [r.parent, r.parentBranch] : [void 0, [0, 0]]; +} +function oi(t37, e, r) { + let i = t37.getCell(e, r); + return !i || i.length !== 2 ? false : i[1].type === "placeholder"; +} +function Wf(t37, e, r, i) { + let n = e.getCell(r, i); + return n ? [t37.offsetOf(n[0]), t37.offsetOf(n[n.length - 1])] : -1; +} +function ai(t37, e, r, i) { + let n = Wf(t37, e, r, i); + typeof n != "number" && t37.setSelection(n); +} +function Wa(t37, e, r, i, n) { + let o = e.getCell(r, i); + o && t37.setPositionHandlingPlaceholder(t37.offsetOf(o[n === "start" ? 0 : o.length - 1])); +} +function Ja(t37, e) { + let [r, [i, n]] = Hf(t37, e); + if (r) + switch (e) { + case "after row": + r.addRowAfter(i), Wa(t37, r, i + 1, 0, "end"); + break; + case "after column": + if (r.maxColumns <= r.colCount) { + t37.announce("plonk"); + return; + } + r.addColumnAfter(n), Wa(t37, r, i, n + 1, "end"); + break; + case "before row": + r.addRowBefore(i), Wa(t37, r, i, 0, "start"); + break; + case "before column": + if (r.maxColumns <= r.colCount) { + t37.announce("plonk"); + return; + } + r.addColumnBefore(n), Wa(t37, r, i, n, "start"); + break; + } +} +function ql(t37) { + return t37.contentWillChange({ inputType: "insertText" }) ? (Ja(t37, "after row"), t37.contentDidChange({ inputType: "insertText" }), true) : false; +} +function Uf(t37) { + return t37.contentWillChange({ inputType: "insertText" }) ? (Ja(t37, "before row"), t37.contentDidChange({ inputType: "insertText" }), true) : false; +} +function Hl(t37) { + return t37.contentWillChange({ inputType: "insertText" }) ? (Ja(t37, "after column"), t37.contentDidChange({ inputType: "insertText" }), true) : false; +} +function Jf(t37) { + return t37.contentWillChange({ inputType: "insertText" }) ? (Ja(t37, "before column"), t37.contentDidChange({ inputType: "insertText" }), true) : false; +} +function Wl(t37, e) { + if (!t37.contentWillChange({})) + return false; + t37.mathfield.snapshot(); + let r = ".", i = "."; + switch (e) { + case "pmatrix": + case "pmatrix*": + r = "(", i = ")"; + break; + case "bmatrix": + case "bmatrix*": + r = "[", i = "]"; + break; + case "Bmatrix": + case "Bmatrix*": + r = "\\lbrace", i = "\\rbrace"; + break; + case "vmatrix": + case "vmatrix*": + r = "\\vert", i = "\\vert"; + break; + case "Vmatrix": + case "Vmatrix*": + r = "\\Vert", i = "\\Vert"; + break; + case "matrix": + case "matrix*": + r = ".", i = "."; + break; + case "cases": + case "dcases": + r = "\\lbrace"; + break; + case "rcases": + i = "\\rbrace"; + break; + } + let n = t37.at(t37.position), o = n.type === "array" ? n : t37.parentEnvironment; + return o.environmentName = e, o.leftDelim = r, o.rightDelim = i, t37.contentDidChange({}), true; +} +function Gm(t37, e) { + let r = t37.at(t37.position); + for (; r && !(Array.isArray(r.parentBranch) && r.parent instanceof N); ) + r = r.parent; + if (Array.isArray(r == null ? void 0 : r.parentBranch) && (r == null ? void 0 : r.parent) instanceof N) { + let i = r.parent, n = r.parentBranch, o; + switch (e) { + case "row": + if (i.rowCount > 1) { + i.removeRow(n[0]); + let a = i.getCell(Math.max(0, n[0] - 1), n[1]); + o = t37.offsetOf(a[a.length - 1]); + } + break; + case "column": + if (i.colCount > i.minColumns) { + i.removeColumn(n[1]); + let a = i.getCell(n[0], Math.max(0, n[1] - 1)); + o = t37.offsetOf(a[a.length - 1]); + } + break; + } + o && t37.setPositionHandlingPlaceholder(o); + } +} +function Gf(t37) { + return t37.contentWillChange({ inputType: "deleteContent" }) ? (Gm(t37, "row"), t37.contentDidChange({ inputType: "deleteContent" }), true) : false; +} +function jf(t37) { + return t37.contentWillChange({ inputType: "deleteContent" }) ? (Gm(t37, "column"), t37.contentDidChange({ inputType: "deleteContent" }), true) : false; +} +ae({ addRowAfter: ql, addColumnAfter: Hl, addRowBefore: Uf, addColumnBefore: Jf, removeRow: Gf, removeColumn: jf, setEnvironment: Wl }, { target: "model", canUndo: true, changeContent: true, changeSelection: true }); +function Ua() { + return [new ge()]; +} +var ja = class ja2 { + constructor(e) { + this.recording = false; + this.model = e, this.reset(); + } + reset() { + this.stack = [], this.index = -1, this.lastOp = ""; + } + startRecording() { + this.recording = true; + } + stopRecording() { + this.recording = false; + } + canUndo() { + return this.index - 1 >= 0; + } + canRedo() { + return this.stack.length - 1 > this.index; + } + stopCoalescing(e) { + e && this.index >= 0 && (this.stack[this.index].selection = e), this.lastOp = ""; + } + undo() { + return this.canUndo() ? (this.model.setState(this.stack[this.index - 1], { silenceNotifications: false, type: "undo" }), this.index -= 1, this.lastOp = "", true) : false; + } + redo() { + return this.canRedo() ? (this.index += 1, this.model.setState(this.stack[this.index], { silenceNotifications: false, type: "redo" }), this.lastOp = "", true) : false; + } + pop() { + this.canUndo() && (this.stack.splice(this.index, this.stack.length - this.index), this.index -= 1); + } + snapshot(e) { + return this.recording ? (e && e === this.lastOp && this.pop(), this.stack.splice(this.index + 1, this.stack.length - this.index - 1), this.stack.push(this.model.getState()), this.index += 1, this.stack.length > ja2.maximumDepth && (this.stack.shift(), this.index -= 1), this.lastOp = e != null ? e : "", true) : false; + } +}; +ja.maximumDepth = 1e3; +var Ga = ja; +function Ya(t37, e, r) { + if (t37.at(e).mode !== "text") + return e; + let i = r === "backward" ? -1 : 1, n; + if (Dr.test(t37.at(e).value)) { + let o = e, a; + do + a = t37.at(o).mode === "text" && Dr.test(t37.at(o).value), o += i; + while (t37.at(o) && a); + n = t37.at(o) ? o - 2 * i : o - i; + } else if (/\s/.test(t37.at(e).value)) { + let o = e; + for (; t37.at(o) && t37.at(o).mode === "text" && /\s/.test(t37.at(o).value); ) + o += i; + if (!t37.at(o)) + n = o - i; + else { + let a = true; + do + a = t37.at(o).mode === "text" && !/\s/.test(t37.at(o).value), o += i; + while (t37.at(o) && a); + n = t37.at(o) ? o - 2 * i : o - i; + } + } else { + let o = e; + for (; t37.at(o) && t37.at(o).mode === "text" && !/\s/.test(t37.at(o).value); ) + o += i; + n = t37.at(o) ? o : o - i; + let a = true; + for (; t37.at(o) && a; ) + a = t37.at(o).mode === "text" && /\s/.test(t37.at(o).value), a && (n = o), o += i; + n = t37.at(o) ? o - 2 * i : o - i; + } + return n - (i > 0 ? 0 : 1); +} +function Sr(t37, e, r) { + var a, s, l, c, u, d, m; + let i = t37.position; + (a = r == null ? void 0 : r.extend) != null && a || t37.collapseSelection(e); + let n = t37.at(t37.position); + if (e === "forward" && (n.type === "subsup" ? (n = n.rightSibling, n || (n = t37.at(t37.position + 1))) : n = t37.at(t37.position + 1)), !n) + return t37.announce("plonk"), false; + let o = t37.offsetOf(n); + if (n instanceof Be) + o = Ya(t37, o, e); + else if (n instanceof ie) + if (n.isSuggestion) + for (; n && n instanceof ie; ) + n.isSuggestion = false, o = t37.offsetOf(n), n = n.rightSibling; + else if (e === "forward") { + if (n = n.rightSibling, !n || !(n instanceof ie)) + return t37.announce("plonk"), false; + for (; n && n instanceof ie && /[a-zA-Z\*]/.test(n.value); ) + o = t37.offsetOf(n), n = n.rightSibling; + } else { + if (n = n.leftSibling, !n || !(n instanceof ie)) + return t37.announce("plonk"), false; + for (; n && n instanceof ie && /[a-zA-Z\*]/.test(n.value); ) + o = t37.offsetOf(n), n = n.leftSibling; + } + else if (e === "forward" && n.type === "mopen") { + let h = 0; + do + n.type === "mopen" ? h += 1 : n.type === "mclose" && (h -= 1), n = n.rightSibling; + while (!n.isLastSibling && h !== 0); + o = t37.offsetOf(n.leftSibling); + } else if (e === "backward" && n.type === "mclose") { + let h = 0; + do + n.type === "mopen" ? h += 1 : n.type === "mclose" && (h -= 1), n = n.leftSibling; + while (!n.isFirstSibling && h !== 0); + o = t37.offsetOf(n); + } else if (e === "backward") + if (n.type === "first") + for (; o > 0 && n.type === "first"; ) + o -= 1, n = t37.at(o); + else { + let h = n.type; + n.type === "subsup" && (o = t37.offsetOf(t37.at(o).leftSibling)), o -= 1; + let f = (s = t37.at(o)) == null ? void 0 : s.type; + for (; o >= 0 && f === h; ) + ((l = t37.at(o)) == null ? void 0 : l.type) === "subsup" ? o = t37.offsetOf(t37.at(o).leftSibling) : o -= 1, f = t37.at(o).type; + } + else { + let { type: h } = n, f = (c = t37.at(o)) == null ? void 0 : c.type, { lastOffset: b } = t37; + for (; o <= b && (f === h || f === "subsup"); ) { + for (; ((u = t37.at(o).rightSibling) == null ? void 0 : u.type) === "subsup"; ) + o = t37.offsetOf(t37.at(o).rightSibling); + o += 1, f = (d = t37.at(o)) == null ? void 0 : d.type; + } + o -= 1; + } + if ((m = r == null ? void 0 : r.extend) != null && m) { + if (!t37.setSelection(t37.anchor, o)) + return t37.announce("plonk"), false; + } else { + if (o === t37.position) + return t37.announce("plonk"), false; + t37.position = o; + } + return t37.announce("move", i), t37.mathfield.stopCoalescingUndo(), true; +} +function He(t37, e, r) { + var o, a; + if (r = r != null ? r : { extend: false }, t37.mathfield.styleBias = e === "backward" ? "right" : "left", e !== "forward") { + let [s, l] = Ia(t37); + s !== void 0 && l !== void 0 && t37.deleteAtoms([s, l]); + } + if (e === "upward") + return Zf(t37, r); + if (e === "downward") + return Yf(t37, r); + if (r.extend) { + let s = Xa(t37, t37.position, e); + s < 0 && (s = 0), s > t37.lastOffset && (s = t37.lastOffset); + let l = t37.setSelection(t37.anchor, s); + return t37.mathfield.stopCoalescingUndo(), l; + } + if (t37.selectionIsPlaceholder) { + t37.collapseSelection(e); + let s = He(t37, e); + return t37.mathfield.stopCoalescingUndo(), s; + } + let i = t37.position, n = i; + if (t37.collapseSelection(e) ? (i = t37.position, jm(t37, i) || (i = Xa(t37, i, e))) : i = Xa(t37, i, e), i < 0 || i > t37.lastOffset) { + let s = true; + return t37.silenceNotifications || (s = (a = (o = t37.mathfield.host) == null ? void 0 : o.dispatchEvent(new CustomEvent("move-out", { detail: { direction: e }, cancelable: true, bubbles: true, composed: true }))) != null ? a : true), s && t37.announce("plonk"), s; + } + return t37.setPositionHandlingPlaceholder(i), t37.mathfield.stopCoalescingUndo(), t37.announce("move", n), true; +} +function Xa(t37, e, r) { + return e = e + (r === "forward" ? 1 : -1), e < 0 || e > t37.lastOffset || jm(t37, e) ? e : Xa(t37, e, r); +} +function jm(t37, e) { + var n; + let r = t37.at(e), i = r.parent; + for (; i && !i.inCaptureSelection; ) + i = i.parent; + return !(i != null && i.inCaptureSelection || (n = r.parent) != null && n.skipBoundary && (!r.isFirstSibling && r.isLastSibling || r.type === "first") || t37.mathfield.hasEditablePrompts && !r.parentPrompt); +} +function Xf(t37, e, r) { + let i = 1 / 0, n = 0; + for (; n < e.length; n++) { + let o = e[n], a = t37.getHTMLElement(o); + if (!a) + continue; + let s = vl(a).right, l = Math.abs(r - s); + if (l <= i) + i = l; + else + break; + } + return e[n - 1]; +} +function Za(t37, e, r, i, n) { + let o = t37.mathfield.hasEditablePrompts, a = o ? r.filter((c) => c.type === "prompt" && !c.captureSelection) : r, s = vl(t37.mathfield.getHTMLElement(e)).right, l = t37.offsetOf(Xf(t37.mathfield, a, s)) - (o ? 1 : 0); + if (i) { + let [c, u] = t37.selection.ranges[0], d; + l < (n === "up" ? c : u) ? d = { ranges: [[l, u]], direction: "backward" } : d = { ranges: [[c, l]], direction: "forward" }, t37.setSelection(d); + } else + t37.setPositionHandlingPlaceholder(l); + t37.announce(`move ${n}`); +} +function Zf(t37, e) { + var a, s; + let r = (a = e == null ? void 0 : e.extend) != null ? a : false; + r || t37.collapseSelection("backward"); + let i = () => { + var c, u; + let l = true; + return t37.silenceNotifications || (l = (u = (c = t37.mathfield.host) == null ? void 0 : c.dispatchEvent(new CustomEvent("move-out", { detail: { direction: "upward" }, cancelable: true, bubbles: true, composed: true }))) != null ? u : true), t37.announce(l ? "line" : "plonk"), l; + }, n = t37.at(t37.position), o = n; + for (; o && o.parentBranch !== "below" && !(Array.isArray(o.parentBranch) && o.parent instanceof N); ) + o = o.parent; + if (Array.isArray(o == null ? void 0 : o.parentBranch) && o.parent instanceof N) { + let l = o.parent; + if (o.parentBranch[0] < 1) + return i(); + let c = o.parentBranch[0] - 1, u = l.array[c][o.parentBranch[1]]; + if (!u.some((m) => m.type === "prompt" && !m.captureSelection) && t37.mathfield.hasEditablePrompts) + return i(); + Za(t37, n, u, r, "up"); + } else if (o) { + let l = (s = o.parent.branch("above")) != null ? s : o.parent.createBranch("above"); + if (!l.some((u) => u.type === "prompt" && u.placeholderId) && t37.mathfield.hasEditablePrompts) + return i(); + Za(t37, n, l, r, "up"); + } else + return i(); + return t37.mathfield.stopCoalescingUndo(), true; +} +function Yf(t37, e) { + var a, s; + let r = (a = e == null ? void 0 : e.extend) != null ? a : false; + r || t37.collapseSelection("forward"); + let i = () => { + var c, u; + let l = true; + return t37.silenceNotifications || (l = (u = (c = t37.mathfield.host) == null ? void 0 : c.dispatchEvent(new CustomEvent("move-out", { detail: { direction: "downward" }, cancelable: true, bubbles: true, composed: true }))) != null ? u : true), t37.announce(l ? "line" : "plonk"), l; + }, n = t37.at(t37.position), o = n; + for (; o && o.parentBranch !== "above" && !(Array.isArray(o.parentBranch) && o.parent instanceof N); ) + o = o.parent; + if (Array.isArray(o == null ? void 0 : o.parentBranch) && o.parent instanceof N) { + let l = o.parent; + if (o.parentBranch[0] + 1 > l.array.length - 1) + return i(); + let c = o.parentBranch[0] + 1, u = l.array[c][o.parentBranch[1]]; + if (!u.some((m) => m.type === "prompt" && !m.captureSelection) && t37.mathfield.hasEditablePrompts) + return i(); + Za(t37, n, u, r, "down"); + } else if (o) { + let l = (s = o.parent.branch("below")) != null ? s : o.parent.createBranch("below"); + if (!l.some((u) => u.type === "prompt") && t37.mathfield.hasEditablePrompts) + return i(); + Za(t37, n, l, r, "down"); + } else + return i(); + return true; +} +function Jl(t37) { + let e = t37.position, r = t37.at(e).parent; + return r != null && r.parent ? (t37.position = t37.offsetOf(r), t37.mathfield.stopCoalescingUndo(), t37.announce("move", e), true) : (t37.announce("plonk"), false); +} +function Qf(t37) { + let e = 0, r = t37.at(t37.position), i = false; + for (; r; ) + (!r.hasEmptyBranch("superscript") || !r.hasEmptyBranch("subscript")) && (e += 1), r.hasEmptyBranch("superscript") ? r.hasEmptyBranch("subscript") || (i = false) : i = true, r = r.parent; + return i ? e : 0; +} +function eg(t37) { + let e = 0, r = t37.at(t37.position), i = false; + for (; r; ) + (!r.hasEmptyBranch("superscript") || !r.hasEmptyBranch("subscript")) && (e += 1), r.hasEmptyBranch("superscript") ? r.hasEmptyBranch("subscript") || (i = true) : i = false, r = r.parent; + return i ? e : 0; +} +function Xm(t37) { + var r; + if (t37.collapseSelection(), Qf(t37) >= t37.mathfield.options.scriptDepth[1]) + return t37.announce("plonk"), false; + let e = t37.at(t37.position); + return e.subsupPlacement === void 0 && (((r = e.rightSibling) == null ? void 0 : r.type) !== "subsup" && e.parent.addChildAfter(new Wt({ style: e.style }), e), e = e.rightSibling), e.createBranch("superscript"), t37.setSelection(t37.getSiblingsRange(t37.offsetOf(e.superscript[0]))), true; +} +function Zm(t37) { + var r; + if (t37.collapseSelection(), eg(t37) >= t37.mathfield.options.scriptDepth[0]) + return t37.announce("plonk"), false; + let e = t37.at(t37.position); + return e.subsupPlacement === void 0 && (((r = t37.at(t37.position + 1)) == null ? void 0 : r.type) !== "subsup" && e.parent.addChildAfter(new Wt({ style: t37.at(t37.position).style }), e), e = t37.at(t37.position + 1)), e.createBranch("subscript"), t37.setSelection(t37.getSiblingsRange(t37.offsetOf(e.subscript[0]))), true; +} +function tg() { + function t37(l) { + let c = [], u = []; + return [...l.querySelectorAll(`input, select, textarea, a[href], button, + [tabindex], audio[controls], video[controls], + [contenteditable]:not([contenteditable="false"]), details>summary`)].filter(e).forEach((m, h) => { + let f = i(m); + f === 0 ? c.push(m) : u.push({ documentOrder: h, tabIndex: f, node: m }); + }), u.sort((m, h) => m.tabIndex === h.tabIndex ? m.documentOrder - h.documentOrder : m.tabIndex - h.tabIndex).map((m) => m.node).concat(c); + } + function e(l) { + return !(!r(l) || n(l) || i(l) < 0); + } + function r(l) { + return !(l.disabled || l.type === "hidden" && l.tagName.toUpperCase() === "INPUT" || s(l)); + } + function i(l) { + var u; + let c = Number.parseInt((u = l.getAttribute("tabindex")) != null ? u : "NaN", 10); + return Number.isNaN(c) ? l.contentEditable === "true" || (l.nodeName === "AUDIO" || l.nodeName === "VIDEO") && l.getAttribute("tabindex") === null ? 0 : l.tabIndex : c; + } + function n(l) { + return l.tagName.toUpperCase() === "INPUT" && l.type === "radio" && !a(l); + } + function o(l, c) { + for (let u of l) + if (u.checked && u.form === c) + return u; + return null; + } + function a(l) { + var m; + if (!l.name) + return true; + let u = ((m = l.form) != null ? m : l.ownerDocument).querySelectorAll('input[type="radio"][name="' + l.name + '"]'), d = o(u, l.form); + return !d || d === l; + } + function s(l) { + if (!fe() || l === document.activeElement || l.contains(document.activeElement)) + return false; + if (getComputedStyle(l).visibility === "hidden") + return true; + let c = l.getBoundingClientRect(); + if (c.width === 0 || c.height === 0) + return true; + for (; l; ) { + if (getComputedStyle(l).display === "none") + return true; + l = l.parentElement; + } + return false; + } + return fe() ? t37(document.body) : []; +} +function ke(t37, e, r = "forward") { + let i = t37.position; + if (X(e)) { + let n = t37.offsetOf(e[0]), o = t37.offsetOf(e[e.length - 1]); + return r === "forward" ? t37.setSelection(n, o) : t37.setSelection(o, n), t37.announce("move", i), t37.mathfield.stopCoalescingUndo(), true; + } + return r === "forward" ? ke(t37, [e.leftSibling, e]) : ke(t37, [e, e.leftSibling]); +} +function ut(t37, e) { + let r = t37.position; + if (typeof e == "number" && (e = t37.at(e)), e.type === "prompt") + t37.setSelection(t37.offsetOf(e.firstChild), t37.offsetOf(e.lastChild)); + else { + let i = t37.offsetOf(e); + e.type === "placeholder" ? t37.setSelection(i - 1, i) : t37.position = i; + } + return t37.announce("move", r), t37.mathfield.stopCoalescingUndo(), true; +} +function sn(t37, e) { + var a, s; + let r = e === "forward" ? 1 : -1; + t37.at(t37.anchor).type === "placeholder" && He(t37, e); + let i, n = t37.at(t37.anchor).parentPrompt; + n ? e === "forward" ? i = t37.offsetOf(n) + 1 : i = t37.offsetOf(n.leftSibling) : i = Math.max(t37.position + r, 0); + let o = Ul(t37, i, e); + if (!o || e === "forward" && t37.offsetOf(o) < i || e === "backward" && t37.offsetOf(o) > i) { + if (!((s = (a = t37.mathfield.host) == null ? void 0 : a.dispatchEvent(new CustomEvent("move-out", { detail: { direction: e }, cancelable: true, bubbles: true, composed: true }))) != null ? s : true)) + return t37.announce("plonk"), false; + let c = tg(); + if (!document.activeElement || c.length <= 1) + return t37.announce("plonk"), false; + let u = c.indexOf(document.activeElement) + r; + return u < 0 && (u = c.length - 1), u >= c.length && (u = 0), c[u].focus(), t37.mathfield.stopCoalescingUndo(), true; + } + return ut(t37, o), true; +} +function Ul(t37, e = 0, r = "forward") { + return t37.findAtom((i) => i.type === "placeholder" || i.type === "prompt" || !t37.mathfield.readOnly && i.treeDepth > 2 && i.isFirstSibling && i.isLastSibling, e, r); +} +ae({ moveToOpposite: (t37) => { + let e = { superscript: "subscript", subscript: "superscript", above: "below", below: "above" }, r = t37.at(t37.position), { parent: i } = r; + if (!i) + return t37.announce("plonk"), false; + let n = r.parentBranch, o; + if (typeof n == "string" && (o = e[n]), !o) { + let s = r.subsupPlacement ? Zm(t37) : Xm(t37); + return t37.mathfield.stopCoalescingUndo(), s; + } + i.branch(o) || i.createBranch(o); + let a = t37.setSelection(t37.getBranchRange(t37.offsetOf(i), o)); + return t37.mathfield.stopCoalescingUndo(), a; +}, moveBeforeParent: (t37) => { + let { parent: e } = t37.at(t37.position); + return e ? (t37.position = t37.offsetOf(e), t37.mathfield.stopCoalescingUndo(), true) : (t37.announce("plonk"), false); +}, moveAfterParent: (t37) => Jl(t37), moveToNextChar: (t37) => He(t37, "forward"), moveToPreviousChar: (t37) => He(t37, "backward"), moveUp: (t37) => He(t37, "upward"), moveDown: (t37) => He(t37, "downward"), moveToNextWord: (t37) => Sr(t37, "forward"), moveToPreviousWord: (t37) => Sr(t37, "backward"), moveToGroupStart: (t37) => { + let e = t37.offsetOf(t37.at(t37.position).firstSibling); + return e === t37.position ? (t37.announce("plonk"), false) : (t37.position = e, t37.mathfield.stopCoalescingUndo(), true); +}, moveToGroupEnd: (t37) => { + let e = t37.offsetOf(t37.at(t37.position).lastSibling); + return e === t37.position ? (t37.announce("plonk"), false) : (t37.position = e, t37.mathfield.stopCoalescingUndo(), true); +}, moveToNextGroup: (t37) => { + var l, c, u, d; + if (t37.position === t37.lastOffset && t37.anchor === t37.lastOffset) + return sn(t37, "forward"); + let e = t37.at(t37.position); + if (e.mode === "text") { + if (t37.selectionIsCollapsed) { + let m = e; + for (; m && m.mode === "text"; ) + m = m.leftSibling; + let h = e; + for (; ((l = h.rightSibling) == null ? void 0 : l.mode) === "text"; ) + h = h.rightSibling; + if (m && h) + return ke(t37, [m, h]); + } + if (e.rightSibling.mode === "text") { + let m = e; + for (; m && m.mode === "text"; ) + m = m.rightSibling; + return m ? (ut(t37, (c = m.leftSibling) != null ? c : m), t37.mathfield.switchMode("math"), true) : ut(t37, t37.lastOffset); + } + } + let i = t37.at(t37.anchor).parentPrompt, n = i ? t37.offsetOf(i) + 1 : Math.max(t37.position + 1, 0), o = Ul(t37, n, "forward"); + if (o && t37.offsetOf(o) < n) + return sn(t37, "forward"); + if (o) + return ut(t37, o); + let a = Ym(t37, e, (m) => m.type === "leftright" || m.type === "text", "forward"); + if (a) { + if (a.mode === "text") { + let m = a; + for (; m && m.mode === "text"; ) + m = m.rightSibling; + return ke(t37, [(u = a.leftSibling) != null ? u : a, (d = m.leftSibling) != null ? d : m]); + } + return ke(t37, a); + } + let s = e.parent; + if (s) { + if (s.type === "leftright" || s.type === "surd") + return ke(t37, s); + if (e.parentBranch === "superscript" && s.subscript) + return ke(t37, s.subscript); + if (e.parentBranch === "above" && s.below) + return ke(t37, s.below); + if (e.parentBranch === "superscript" || e.parentBranch === "subscript") + return ut(t37, s); + if (e.parentBranch === "above" || e.parentBranch === "below") + return ke(t37, s); + } + return ut(t37, t37.lastOffset); +}, moveToPreviousGroup: (t37) => { + var a; + if (t37.position === 0 && t37.anchor === 0) + return sn(t37, "backward"); + let e = t37.at(t37.position), r = e.mode; + if (r === "text") { + if (t37.selectionIsCollapsed) { + let s = e; + for (; s && s.mode === "text"; ) + s = s.leftSibling; + let l = e; + for (; ((a = l.rightSibling) == null ? void 0 : a.mode) === "text"; ) + l = l.rightSibling; + if (s && l) + return ke(t37, [s, l]); + } + for (; e && e.mode === "text"; ) + e = e.leftSibling; + return e ? ut(t37, e) : ut(t37, 0); + } + let i = t37.at(t37.anchor).parentPrompt, n = i ? t37.offsetOf(i.leftSibling) : Math.max(t37.position - 1, 0), o = Ul(t37, n, "backward"); + if (o && t37.offsetOf(o) > n) + return sn(t37, "backward"); + if (o) + return ut(t37, o); + if (r === "math") { + let s = Ym(t37, e, (c) => c.type === "leftright" || c.type === "text", "backward"); + if (s) { + if (s.mode === "text") { + let c = s; + for (; c && c.mode === "text"; ) + c = c.leftSibling; + return ke(t37, [s, c]); + } + return ke(t37, s); + } + let l = e.parent; + if (l) { + if (l.type === "leftright" || l.type === "surd") + return ke(t37, l); + if (e.parentBranch === "subscript" && l.superscript) + return ke(t37, l.superscript); + if (e.parentBranch === "below" && l.above) + return ke(t37, l.above); + if (e.parentBranch === "superscript" || e.parentBranch === "subscript") + return ut(t37, l); + if (e.parentBranch === "above" || e.parentBranch === "below") + return ke(t37, l); + } + return ut(t37, 0); + } + return false; +}, moveToMathfieldStart: (t37) => t37.selectionIsCollapsed && t37.position === 0 ? (t37.announce("plonk"), false) : (t37.position = 0, t37.mathfield.stopCoalescingUndo(), true), moveToMathfieldEnd: (t37) => t37.selectionIsCollapsed && t37.position === t37.lastOffset ? (t37.announce("plonk"), false) : (t37.position = t37.lastOffset, t37.mathfield.stopCoalescingUndo(), true), moveToSuperscript: Xm, moveToSubscript: Zm }, { target: "model", changeSelection: true }); +ae({ moveToNextPlaceholder: (t37) => sn(t37, "forward"), moveToPreviousPlaceholder: (t37) => sn(t37, "backward") }, { target: "model", changeSelection: true, audioFeedback: "return" }); +function Ym(t37, e, r, i) { + if (i === "forward") { + let o = e.rightSibling; + for (; o && !r(o); ) + o = o.rightSibling; + return o; + } + let n = e.leftSibling; + for (; n && !r(n); ) + n = n.leftSibling; + return n; +} +function Qa(t37, e, r) { + typeof e == "function" && (r = e, e = 1 / 0), e === void 0 && (e = 1 / 0); + let i = t37.position, n = false, o = ""; + for (; !n; ) { + let a = t37.at(i); + n = e === 0 || a === void 0 || a.type === "first" || a.mode !== "math" || !(a.type && /mord|mpunct|operator/.test(a.type) || a.type === "mop" && /[a-zA-Z ]+/.test(a.value)) || !a.hasEmptyBranch("superscript") || !a.hasEmptyBranch("subscript") || typeof r == "function" && !r(a), n || (a.mode = "text", a.command = a.value, a.verbatimLatex = void 0, o += a.value), i -= 1, e -= 1; + } + t37.contentDidChange({ data: o, inputType: "insertText" }); +} +function si(t37, e, r) { + typeof e == "function" && (r = e, e = 1 / 0), e === void 0 && (e = 1 / 0); + let i = t37.position, n = false, o = []; + for (; !n; ) { + let a = t37.at(i); + n = e === 0 || !a || a.type === "first" || a.isFirstSibling || a.mode !== "text" || a.value === " " || typeof r == "function" && !r(a), n || (o.push(y.serialize([a], { defaultMode: "math" })), a.mode = "math"), i -= 1, e -= 1; + } + es(t37), t37.contentDidChange({ data: K(o), inputType: "insertText" }); +} +function es(t37) { + var r; + let e = t37.position - 1; + for (; e >= 0 && ((r = t37.at(e)) == null ? void 0 : r.mode) === "math"; ) + e -= 1; + if (!(e < 0) && t37.at(e).mode === "text" && t37.at(e).value === " " && t37.at(e - 1).mode === "math") { + t37.at(e - 1).parent.removeChild(t37.at(e - 1)); + let i = t37.silenceNotifications; + t37.silenceNotifications = true, t37.position -= 1, t37.silenceNotifications = i, t37.contentDidChange({ inputType: "deleteContent" }); + } +} +function rg(t37) { + let e = "", r = t37.position, i = false; + for (; !i; ) { + let n = t37.at(r); + i = !(n && (n.mode === "text" || n.mode === "math" && n.type && /mord|mpunct/.test(n.type))), i || (e = n.value + e), r -= 1; + } + return e; +} +function Qm(t37, e, r) { + let { model: i } = t37; + if (i.mode === "latex" || !i.at(i.position).isLastSibling || !r || !_r(r)) + return false; + let n = Mr(r); + if (!i.selectionIsCollapsed) + return !!(t37.model.mode === "text" && /[/_^]/.test(n)); + let o = rg(i) + n; + if (t37.model.mode === "text") { + if (e === "Esc" || /[/\\]/.test(n)) + return true; + if (/[\^_]/.test(n)) + return /(^|\s)[a-zA-Z][^_]$/.test(o) && si(i, 1), true; + let a = { ")": "(", "}": "{", "]": "[" }[n], { parent: s } = i.at(i.position); + if (a && s instanceof H && s.leftDelim === a) + return true; + if (/(^|[^a-zA-Z])(a|I) $/.test(o)) + return false; + if (/[$€£₤₺¥¤฿¢₡₧₨₹₩₱]/u.test(n)) + return true; + if (/(^|[^a-zA-Z'’])[a-zA-Z] $/.test(o)) + return si(i, 1), false; + if (/\D\.[^\d\s]$/.test(o)) { + si(i, 1); + let l = i.at(i.position); + return l.value = "\u22C5", l.style.variant = "normal", l.command = "\\cdot", l.verbatimLatex = void 0, i.contentDidChange({ data: "\\cdot", inputType: "insertText" }), true; + } + if (/(^|\s)[a-zA-Z][^a-zA-Z]$/.test(o) || /\.\d$/.test(o) || /\([\d+\-.]$/.test(o)) + return si(i, 1), true; + if (/\([a-z][,;]$/.test(o)) + return si(i, 2), true; + if (/[\d+\-=><*|]$/.test(n)) + return es(i), true; + } else { + if (e === "[Space]") + return Qa(i, void 0, (a) => /[a-z][:,;.]$/.test(a.value)), true; + if (/[a-zA-Z]{3,}$/.test(o) && !/(dxd|abc|xyz|uvw)$/.test(o)) + return Qa(i, void 0, (a) => /[a-zA-Z]/.test(a.value)), true; + if (/(^|\W)(if)$/i.test(o)) + return Qa(i, 1), true; + if (/(\u0393|\u0394|\u0398|\u039B|\u039E|\u03A0|\u03A3|\u03A5|\u03A6|\u03A8|\u03A9|[\u03B1-\u03C9]|\u03D1|\u03D5|\u03D6|\u03F1|\u03F5){3,}$/u.test(o) && !/(αβγ)$/.test(o)) + return Qa(i, void 0, (a) => /(:|,|;|.|\u0393|\u0394|\u0398|\u039B|\u039E|\u03A0|\u03A3|\u03A5|\u03A6|\u03A8|\u03A9|[\u03B1-\u03C9]|\u03D1|\u03D5|\u03D6|\u03F1|\u03F5)/u.test(a.value)), true; + if (n === "?" || n === "." && !/[\d-+]\.$/.test(o)) + return true; + } + return false; +} +function ep(t37, e) { + if (!t37.isSelectionEditable || !t37.keystrokeCaptionVisible) + return; + let r = rp(), i = t37.element.getBoundingClientRect(); + r.style.left = `${i.left}px`, r.style.top = `${i.top - 64}px`, r.innerHTML = globalThis.MathfieldElement.createHTML("" + (ji(e) || e) + "" + r.innerHTML), r.style.visibility = "visible", setTimeout(() => { + r.childNodes.length > 0 && r.childNodes[r.childNodes.length - 1].remove(), r.childNodes.length === 0 && (r.style.visibility = "hidden"); + }, 3e3); +} +function tp(t37) { + if (t37.keystrokeCaptionVisible = !t37.keystrokeCaptionVisible, t37.keystrokeCaptionVisible) { + let e = rp(); + e.innerHTML = ""; + } else { + let e = Yr("mathlive-keystroke-caption-panel"); + e.style.visibility = "hidden"; + } + return false; +} +function rp() { + let t37 = document.getElementById("mathlive-keystroke-caption-panel"); + return t37 || (Oe("keystroke-caption"), Oe("core"), Yr("mathlive-keystroke-caption-panel")); +} +function ip() { + document.getElementById("mathlive-keystroke-caption-panel") && (Zi("mathlive-keystroke-caption-panel"), Ve("core"), Ve("keystroke-caption")); +} +function Xl(t37, e) { + var d, m, h; + let { model: r } = t37, i = Ra(e); + if (e.isTrusted) { + Lm(e); + let f = vr(); + t37.keyboardLayout !== f.id && (t37.keyboardLayout = f.id, t37._keybindings = void 0); + } + if (clearTimeout(t37.inlineShortcutBufferFlushTimer), t37.inlineShortcutBufferFlushTimer = 0, ep(t37, i), e.isTrusted && e.defaultPrevented) + return t37.flushInlineShortcutBuffer(), false; + let n, o = 0, a = "", s = 0, l = t37.inlineShortcutBuffer; + if (t37.isSelectionEditable) { + if (r.mode === "math") + if (i === "[Backspace]") + t37.undoManager.lastOp === "insert-shortcut" ? a = "undo" : l.pop(); + else if (!_r(e)) + t37.flushInlineShortcutBuffer(); + else { + let f = Mr(e), b = [...(m = (d = l[l.length - 1]) == null ? void 0 : d.keystrokes) != null ? m : [], f]; + l.push({ state: r.getState(), keystrokes: b, leftSiblings: ig(t37) }), o = 0; + let S = ""; + for (; !n && o < b.length; ) + s = l.length - (b.length - o), S = b.slice(o).join(""), n = zn(l[s].leftSiblings, S, t37.options.inlineShortcuts), !n && /^[a-zA-Z][a-zA-Z0-9]+?([_\^][a-zA-Z0-9\*\+\-]+?)?$/.test(S) && (n = t37.options.onInlineShortcut(t37, S)), o += 1; + t37.flushInlineShortcutBuffer({ defer: true }); + } + t37.options.smartMode && (n ? t37.switchMode("math") : Qm(t37, i, e) && (t37.switchMode({ math: "text", text: "math" }[r.mode]), a = "")); + } + if (!n) { + if (a || (a = Km(t37.keybindings, r.mode, e)), !a && (i === "[Enter]" || i === "[Return]")) { + let f = true; + return r.contentWillChange({ inputType: "insertLineBreak" }) && (t37.host && (f = t37.host.dispatchEvent(new Event("change", { bubbles: true, composed: true }))), !f && e.preventDefault ? (e.preventDefault(), e.stopPropagation()) : r.contentDidChange({ inputType: "insertLineBreak" })), f; + } + if ((!a || i === "[Space]") && r.mode === "math") { + if (i === "[Space]") { + if (t37.styleBias = "none", t37.flushInlineShortcutBuffer(), t37.options.mathModeSpace) + return z.insert(r, t37.options.mathModeSpace, { format: "latex", mode: "math" }), t37.snapshot("insert-space"), a = "", t37.dirty = true, t37.scrollIntoView(), e.preventDefault && (e.preventDefault(), e.stopPropagation()), false; + let f = r.at(r.position + 1), b = r.at(r.position - 1); + if ((f == null ? void 0 : f.mode) === "text" || (b == null ? void 0 : b.mode) === "text") + return z.insert(r, " ", { mode: "text" }), t37.snapshot("insert-space"), t37.dirty = true, t37.scrollIntoView(), false; + } + (h = r.at(r.position)) != null && h.isDigit() && globalThis.MathfieldElement.decimalSeparator === "," && Mr(e) === "," && (a = "insertDecimalSeparator"); + } + } + if (!n && !a) { + if (r.mathfield.smartFence) { + if (jl(r, Mr(e), nn(t37))) + return t37.dirty = true, t37.scrollIntoView(), e.preventDefault && e.preventDefault(), false; + } else { + let { parent: f } = r.at(r.position); + if (f instanceof H && f.rightDelim === "?" && r.at(r.position).isLastSibling && /^[)}\]|]$/.test(i)) + return t37.snapshot(), f.isDirty = true, f.rightDelim = i, r.position += 1, r.selectionDidChange(), r.contentDidChange({ data: Mr(e), inputType: "insertText" }), t37.snapshot("insert-fence"), t37.dirty = true, t37.scrollIntoView(), e.preventDefault && e.preventDefault(), false; + if (!r.selectionIsCollapsed) { + let b = Mr(e); + if (b === "(" || b === "{" || b === "[") { + let S = { "(": "(", "{": "\\lbrace", "[": "\\lbrack" }[b], M = { "(": ")", "{": "\\rbrace", "[": "\\rbrack" }[b], [x, v] = te(r.selection); + return t37.snapshot(), r.position = v, z.insert(r, M, { format: "latex" }), r.position = x, z.insert(r, S, { format: "latex" }), r.setSelection(x + 1, v + 1), r.contentDidChange({ data: b, inputType: "insertText" }), t37.snapshot("insert-fence"), t37.dirty = true, t37.scrollIntoView(), e.preventDefault && e.preventDefault(), false; + } + } + } + return true; + } + let c = r.at(Math.max(r.position, r.anchor)), { parent: u } = c; + if (a === "moveAfterParent" && (u == null ? void 0 : u.type) === "leftright" && c.isLastSibling && t37.options.smartFence && jl(r, ".", t37.defaultStyle) && (a = "", V(t37)), t37.keyboardDelegate.cancelComposition(), a) + t37.executeCommand(a); + else if (n) { + let f = nn(t37); + r.setState(l[s].state); + let b = l[l.length - 1].keystrokes; + b = b.slice(o - 1); + for (let S of b) + z.insert(r, S, { silenceNotifications: true, style: f }); + t37.snapshot("insert-shortcut"), r.setState(l[s].state), r.deferNotifications({ content: true, selection: true, data: n, type: "insertText" }, () => (z.insert(r, n, { format: "latex", style: f }), es(t37.model), n.endsWith(" ") && (t37.switchMode("text"), z.insert(r, " ", { style: f, mode: "text" })), t37.snapshot(), r.selectionIsCollapsed || t37.flushInlineShortcutBuffer(), true)), t37.dirty = true, r.announce("replacement"); + } + return t37.scrollIntoView(), e.preventDefault && e.preventDefault(), false; +} +function ro(t37, e, r) { + let { model: i } = t37; + if (!t37.isSelectionEditable) { + i.announce("plonk"); + return; + } + r != null || (r = {}), r.focus && t37.focus(), r.feedback && globalThis.MathfieldElement.playSound("keypress"), typeof r.mode == "string" && (t37.switchMode(r.mode), t37.snapshot()); + let n = pa(e), o = window.mathVirtualKeyboard; + if (o != null && o.isShifted && (n = typeof n == "string" ? n.toUpperCase() : n.map((a) => a.toUpperCase())), r.simulateKeystroke) { + let a = true; + for (let s of n) + Xl(t37, new KeyboardEvent("keypress", { key: s })) && (a = false); + if (a) + return; + } + if (i.selectionIsCollapsed || i.deleteAtoms(te(i.selection)), i.mode === "latex") + i.deferNotifications({ content: true, selection: true, data: e, type: "insertText" }, () => { + Zr(t37); + for (let a of n) + z.insert(i, a); + t37.snapshot("insert-latex"), kr(t37); + }); + else if (i.mode === "text") { + let a = p(p({}, ag(i)), t37.defaultStyle); + for (let s of n) + z.insert(i, s, { style: a }); + t37.snapshot("insert-text"); + } else if (i.mode === "math") + for (let a of n) + ng(t37, a); + t37.dirty = true, t37.scrollIntoView(); +} +function ig(t37) { + let e = t37.model, r = [], i = e.at(Math.min(e.position, e.anchor)); + for (; i.type !== "first"; ) + r.push(i), i = i.leftSibling; + return r; +} +function ng(t37, e) { + let r = t37.model, i = { "^": "moveToSuperscript", _: "moveToSubscript", " ": t37.options.mathModeSpace ? ["insert", t37.options.mathModeSpace] : "moveAfterParent" }[e]; + if (i) { + t37.executeCommand(i); + return; + } + let n = p({}, nn(t37)), o = r.at(r.position); + if (/\d/.test(e) && t37.options.smartSuperscript && o.parentBranch === "superscript" && o.parent.type !== "mop" && o.parent.type !== "operator" && o.parent.type !== "extensible-symbol" && o.hasNoSiblings) { + og(r), z.insert(r, e, { style: n }), t37.snapshot(), Jl(r), t37.snapshot(); + return; + } + if (/[a-zA-Z0-9]/.test(e) && t37.styleBias !== "none") { + let s = t37.styleBias === "left" ? o : o.parent ? o.rightSibling : null; + (s == null ? void 0 : s.type) === "mord" && /[a-zA-Z0-9]/.test(s.value) && s.style.variantStyle && (n.variantStyle = s.style.variantStyle); + } + let a = e; + a === "{" ? a = "\\lbrace" : a === "}" ? a = "\\rbrace" : a === "&" ? a = "\\&" : a === "#" ? a = "\\#" : a === "$" ? a = "\\$" : a === "%" ? a = "\\%" : a === "~" ? a = "\\~" : a === "\\" && (a = "\\backslash"), z.insert(r, a, { style: n }), t37.snapshot(`insert-${r.at(r.position).type}`); +} +function og(t37) { + t37.selectionIsCollapsed || (t37.deleteAtoms(te(t37.selection)), t37.mathfield.snapshot("delete")); +} +function ag(t37) { + var r, i, n, o; + if (t37.selectionIsCollapsed) + return (i = (r = t37.at(t37.position)) == null ? void 0 : r.style) != null ? i : {}; + let e = te(t37.selection)[0]; + return (o = (n = t37.at(e + 1)) == null ? void 0 : n.style) != null ? o : {}; +} +function jl(t37, e, r) { + var l; + if (!e || t37.mode !== "math") + return false; + let i = t37.at(t37.position), { parent: n } = i, o = { "(": "(", ")": ")", "{": "\\lbrace", "}": "\\rbrace", "[": "\\lbrack", "]": "\\rbrack", "|": "|" }[e]; + if (!o) + return false; + let a = Ni[o], s = zi[o]; + if (!t37.selectionIsCollapsed) { + t37.mathfield.snapshot(); + let [c, u] = te(t37.selection), d = t37.extractAtoms([c, u]), m = n.addChildrenAfter([new H("left...right", d, { leftDelim: o, rightDelim: s })], t37.at(c)); + return t37.setSelection(t37.offsetOf(m.firstChild), t37.offsetOf(m.lastChild)), t37.mathfield.snapshot("insert-fence"), t37.contentDidChange({ data: o, inputType: "insertText" }), true; + } + if (o === "|") { + let c = n instanceof H ? n.leftDelim + n.rightDelim : ""; + if (c === "\\lbrace\\rbrace" || c === "\\{\\}" || c === "\\lbrace?") + return t37.mathfield.snapshot(), z.insert(t37, "\\,\\middle\\vert\\,", { format: "latex", style: r }), t37.mathfield.snapshot("insert-fence"), t37.contentDidChange({ data: o, inputType: "insertText" }), true; + } + if (s) { + if (n instanceof H && n.firstChild === i && (n.leftDelim === "?" || n.leftDelim === ".")) + return n.leftDelim = o, n.isDirty = true, t37.mathfield.snapshot(), t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; + if (!(n instanceof H)) { + let m = i; + for (; m && !(m.type === "mclose" && m.value === s); ) + m = m.rightSibling; + if (m) { + t37.mathfield.snapshot(); + let h = t37.extractAtoms([t37.offsetOf(i), t37.offsetOf(m)]); + return h.pop(), n.addChildrenAfter([new H("left...right", h, { leftDelim: o, rightDelim: s })], i), t37.position = t37.offsetOf(n.firstChild) + 1, t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; + } + } + let c = t37.offsetOf(i.lastSibling), u; + for (u = t37.position; u <= c; u++) { + let m = t37.at(u); + if (m instanceof H && (m.leftDelim === "?" || m.leftDelim === ".") && np(o, m.rightDelim)) + break; + } + let d = t37.at(u); + if (u <= c && d instanceof H) { + d.leftDelim = o, t37.mathfield.snapshot(); + let m = t37.extractAtoms([t37.position, u - 1]); + return m = m.filter((h) => h.type !== "first"), d.addChildren(m, d.parentBranch), t37.position += 1, t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; + } + if (n instanceof H && (n.leftDelim === "?" || n.leftDelim === ".") && np(o, n.rightDelim)) { + n.isDirty = true, n.leftDelim = o, t37.mathfield.snapshot(); + let m = t37.extractAtoms([t37.offsetOf(i.firstSibling), t37.position]); + for (let h of m) + n.parent.addChildBefore(h, n); + return t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; + } + if (!(n instanceof H && n.leftDelim === "|")) { + if (o === "(") { + let m = t37.position - 1, h = false; + for (; m >= 0; ) { + let f = t37.at(m); + if (f.type === "first") + break; + if (f.type === "mord" && f.value && /^[\d]$/.test(f.value)) { + m -= 1; + continue; + } + if (f.type === "group" && ((l = f.body) == null ? void 0 : l.length) === 2 && f.body[0].type === "first" && f.body[1].value === ",") { + h = true; + break; + } + if (f.type === "mord" && (f.value === "," || f.value === ".")) { + h = true; + break; + } + break; + } + if (h) + return false; + } + if (t37.mathfield.snapshot(), z.insert(t37, `\\left${o}\\right?`, { format: "latex", style: r }), i.lastSibling.type !== "first") { + let m = t37.offsetOf(i.lastSibling), h = t37.extractAtoms([t37.position, m]); + t37.at(t37.position).body = h, t37.position -= 1; + } + return t37.mathfield.snapshot("insert-fence"), true; + } + } + if (a) { + if (o === ")") { + let f = t37.position - 1, b = false; + for (; f >= 0; ) { + let S = t37.at(f); + if (S.type === "first") + break; + if (S.type === "mord" && S.value && /^[\d]$/.test(S.value)) { + b = true, f -= 1; + continue; + } + break; + } + if (b && t37.at(f).type === "mopen" && t37.at(f).value === "(") + return false; + } + let c = i; + for (; c; ) { + if (c.type === "mopen" && c.value === a) { + t37.mathfield.snapshot(); + let f = c.leftSibling, b = t37.extractAtoms([t37.offsetOf(c.leftSibling), t37.offsetOf(i)]); + [, ...b] = b; + let S = new H("left...right", b, { leftDelim: a, rightDelim: o }); + return n.addChildrenAfter([S], f), t37.position = t37.offsetOf(S), t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; + } + c = c.leftSibling; + } + if (n instanceof H && i.isLastSibling && Gl(n.leftDelim, o)) + return t37.mathfield.snapshot(), n.isDirty = true, n.rightDelim = o, t37.position += 1, t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; + let u = t37.offsetOf(i.firstSibling), d; + for (d = t37.position; d >= u; d--) { + let f = t37.at(d); + if (f instanceof H && (f.rightDelim === "?" || f.rightDelim === ".") && Gl(f.leftDelim, o)) + break; + } + let m = t37.at(d); + if (d >= u && m instanceof H) + return t37.mathfield.snapshot(), m.rightDelim = o, m.addChildren(t37.extractAtoms([d, t37.position]), m.parentBranch), t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; + if (n instanceof H && (n.rightDelim === "?" || n.rightDelim === ".") && Gl(n.leftDelim, o)) + return t37.mathfield.snapshot(), n.isDirty = true, n.rightDelim = o, n.parent.addChildren(t37.extractAtoms([t37.position, t37.offsetOf(i.lastSibling)]), n.parentBranch), t37.position = t37.offsetOf(n), t37.contentDidChange({ data: o, inputType: "insertText" }), t37.mathfield.snapshot("insert-fence"), true; + let h = n.parent; + return h instanceof H && (h.rightDelim === "?" || h.rightDelim === ".") && t37.at(t37.position).isLastSibling ? (t37.position = t37.offsetOf(h), jl(t37, o, r)) : false; + } + return false; +} +function Gl(t37, e) { + return t37 ? ["(", "\\lparen", "{", "\\{", "\\lbrace", "[", "\\lbrack"].includes(t37) ? [")", "\\rparen", "}", "\\}", "\\rbrace", "]", "\\rbrack"].includes(e) : zi[t37] === e : true; +} +function np(t37, e) { + return e ? [")", "\\rparen", "}", "\\}", "\\rbrace", "]", "\\rbrack"].includes(e) ? ["(", "\\lparen", "{", "\\{", "\\lbrace", "[", "\\lbrack"].includes(t37) : Ni[e] === t37 : true; +} +ae({ undo: (t37) => (t37.undo(), true), redo: (t37) => (t37.redo(), true), scrollIntoView: (t37) => (t37.scrollIntoView(), true), scrollToStart: (t37) => (t37.field.scroll(0, 0), true), scrollToEnd: (t37) => { + let e = t37.field.getBoundingClientRect(); + return t37.field.scroll(e.left - window.scrollX, 0), true; +}, toggleKeystrokeCaption: tp, toggleContextMenu: (t37) => { + let e = t37.toggleContextMenu(); + return e || t37.model.announce("plonk"), e; +}, plonk: (t37) => (t37.model.announce("plonk"), true), switchMode: (t37, e, r, i) => (t37.switchMode(e, r, i), true), insert: (t37, e, r) => t37.insert(e, r), typedText: (t37, e, r) => (ro(t37, e, r), true), insertDecimalSeparator: (t37) => { + let e = t37.model; + return e.mode === "math" && globalThis.MathfieldElement.decimalSeparator === "," && e.at(Math.max(e.position, e.anchor)).isDigit() ? (t37.insert("{,}", { format: "latex" }), t37.snapshot("insert-mord"), true) : (t37.insert("."), true); +}, commit: (t37) => { + var e; + return t37.model.contentWillChange({ inputType: "insertLineBreak" }) && ((e = t37.host) == null || e.dispatchEvent(new Event("change", { bubbles: true, composed: true })), t37.model.contentDidChange({ inputType: "insertLineBreak" })), true; +}, insertPrompt: (t37, e, r) => { + let i = t37.getPrompts(), n = "prompt-" + Date.now().toString(36).slice(-2) + Math.floor(Math.random() * 1e5).toString(36), o = 0; + for (; i.includes(n) && o < 100; ) { + if (o === 99) + return console.error("could not find a unique ID after 100 tries"), false; + n = "prompt-" + Date.now().toString(36).slice(-2) + Math.floor(Math.random() * 1e5).toString(36), o++; + } + return t37.insert(`\\placeholder[${e != null ? e : n}]{}`, r), true; +} }); +ae({ copyToClipboard: (t37) => (t37.focus(), t37.model.selectionIsCollapsed && t37.select(), "queryCommandSupported" in document && document.queryCommandSupported("copy") && document.execCommand("copy") || t37.element.querySelector(".ML__keyboard-sink").dispatchEvent(new ClipboardEvent("copy", { bubbles: true, composed: true })), false) }, { target: "mathfield" }); +ae({ cutToClipboard: (t37) => (t37.focus(), "queryCommandSupported" in document && document.queryCommandSupported("cut") && document.execCommand("cut") || t37.element.querySelector(".ML__keyboard-sink").dispatchEvent(new ClipboardEvent("cut", { bubbles: true, composed: true })), true), pasteFromClipboard: (t37) => (t37.focus(), "queryCommandSupported" in document && document.queryCommandSupported("paste") ? (document.execCommand("paste"), true) : (navigator.clipboard.readText().then((e) => { + e && t37.model.contentWillChange({ inputType: "insertFromPaste", data: e }) ? (t37.stopCoalescingUndo(), t37.stopRecording(), t37.insert(e, { mode: t37.model.mode }) && (kr(t37), t37.startRecording(), t37.snapshot("paste"), t37.model.contentDidChange({ inputType: "insertFromPaste" }), V(t37))) : t37.model.announce("plonk"), t37.startRecording(); +}), true)) }, { target: "mathfield", canUndo: true, changeContent: true, changeSelection: true }); +function ts(t37) { + let [e, r] = te(t37.selection); + if (e = op(t37, e, "backward"), r = op(t37, r, "forward"), e === r) { + let i = t37.at(e); + if (i.type === "leftright") + return t37.setSelection(t37.offsetOf(i.firstChild) - 1, r); + if (i.type === "first" && (i.parent.type === "leftright" || i.parent.type === "surd")) + return t37.setSelection(e - 1, t37.offsetOf(i.parent.lastChild) + 1); + t37.setSelection(e - 1, r); + } else + t37.setSelection(e, r); + return true; +} +function op(t37, e, r) { + var o, a, s; + let i = t37.at(e); + if (!i) + return e; + let n = r === "forward" ? 1 : -1; + if (i.mode === "text") { + for (; i && !(i.mode !== "text" || !Dr.test(i.value)); ) + e += n, i = t37.at(e); + return r === "backward" ? e - 1 : e; + } + if (i.mode === "latex") { + if (/[a-zA-Z\*]/.test(i.value)) + if (r === "backward") + for (; i && i.mode === "latex" && i.value !== "\\" && /[a-zA-Z]/.test(i.value); ) + e += n, i = t37.at(e); + else + for (; i && i.mode === "latex" && /[a-zA-Z\*]/.test(i.value); ) + e += n, i = t37.at(e); + else if (i.value === "{") { + if (r === "forward") { + for (; i && i.mode === "latex" && i.value !== "}"; ) + e += n, i = t37.at(e); + return e; + } + return e - 1; + } else if (i.value === "}") { + if (r === "backward") { + for (; i && i.mode === "latex" && i.value !== "{"; ) + e += n, i = t37.at(e); + return e - 1; + } + return e; + } + return e - 1; + } + if (i.mode === "math") { + if (i.isDigit()) { + for (; (o = t37.at(e + n)) != null && o.isDigit(); ) + e += n; + return r === "backward" ? e - 1 : e; + } + if (i.style.variant || i.style.variantStyle) { + let l = (a = t37.at(e)) == null ? void 0 : a.style; + for (; l && l.variant === i.style.variant && l.variantStyle === i.style.variantStyle; ) + l = (s = t37.at(e + n)) == null ? void 0 : s.style, e += n; + return r === "backward" ? e - 1 : e; + } + return e; + } + return e; +} +ae({ selectGroup: (t37) => { + let e = ts(t37); + return e || t37.announce("plonk"), e; +}, selectAll: (t37) => t37.setSelection(0, t37.lastOffset), extendSelectionForward: (t37) => He(t37, "forward", { extend: true }), extendSelectionBackward: (t37) => He(t37, "backward", { extend: true }), extendToNextWord: (t37) => Sr(t37, "forward", { extend: true }), extendToPreviousWord: (t37) => Sr(t37, "backward", { extend: true }), extendSelectionUpward: (t37) => He(t37, "upward", { extend: true }), extendSelectionDownward: (t37) => He(t37, "downward", { extend: true }), extendToNextBoundary: (t37) => Sr(t37, "forward", { extend: true }), extendToPreviousBoundary: (t37) => Sr(t37, "backward", { extend: true }), extendToGroupStart: (t37) => { + let e = t37.setSelection(t37.anchor, t37.offsetOf(t37.at(t37.position).firstSibling)); + return e || t37.announce("plonk"), e; +}, extendToGroupEnd: (t37) => { + let e = t37.setSelection(t37.anchor, t37.offsetOf(t37.at(t37.position).lastSibling)); + return e || t37.announce("plonk"), e; +}, extendToMathFieldStart: (t37) => { + let e = t37.setSelection(t37.anchor, 0); + return e || t37.announce("plonk"), e; +}, extendToMathFieldEnd: (t37) => { + let e = t37.setSelection(t37.anchor, t37.lastOffset); + return e || t37.announce("plonk"), e; +} }, { target: "model", changeSelection: true }); +var li = null; +var io = 0; +var ci = class t35 { + static start(e, r, i, n) { + var a; + t35.element = e, (a = t35.controller) == null || a.abort(), t35.controller = new AbortController(); + let o = { signal: t35.controller.signal }; + "PointerEvent" in window ? (e.addEventListener("pointermove", i, o), e.addEventListener("pointerup", n, o), e.addEventListener("pointercancel", n, o), Zl(r) && (t35.pointerId = r.pointerId, e.setPointerCapture(r.pointerId))) : (window.addEventListener("mousemove", i, o), window.addEventListener("blur", n, o), window.addEventListener("mouseup", n, o)); + } + static stop() { + var e; + (e = t35.controller) == null || e.abort(), t35.controller = void 0, typeof t35.pointerId == "number" && (t35.element.releasePointerCapture(t35.pointerId), t35.pointerId = void 0); + } +}; +function Zl(t37) { + return t37 !== null && globalThis.PointerEvent !== void 0 && t37 instanceof PointerEvent; +} +function Yl(t37, e) { + var M; + if (e.buttons > 1) + return; + t37.atomBoundsCache = /* @__PURE__ */ new Map(); + let r = t37, i, n = false, o = false, a = "none", s = false, l = false, c = e.clientX, u = e.clientY, d = Date.now(), m = r.field, h = setInterval(() => { + s ? m.scroll({ top: 0, left: m.scrollLeft - 16 }) : l && m.scroll({ top: 0, left: m.scrollLeft + 16 }); + }, 32); + function f() { + ci.stop(), n = false, clearInterval(h), t37.element.classList.remove("tracking"), e && e.preventDefault(); + } + function b(x) { + if (!r.hasFocus()) { + f(); + return; + } + let v = x.clientX, k = x.clientY, C = Zl(x) && x.pointerType === "touch" ? 20 : 5; + if (Date.now() < d + 500 && Math.abs(c - v) < C && Math.abs(u - k) < C) { + x.preventDefault(), x.stopPropagation(); + return; + } + let q = m.getBoundingClientRect(); + l = v > q.right, s = v < q.left; + let B = i; + Zl(x) && (x.isPrimary || (B = no(r, x.clientX, x.clientY, { bias: 0 }))); + let D = no(r, v, k, { bias: v <= c ? v === c ? 0 : -1 : 1 }); + B >= 0 && D >= 0 && (r.model.extendSelectionTo(B, D), V(t37)), o && ts(r.model); + } + li && Math.abs(li.x - c) < 5 && Math.abs(li.y - u) < 5 && Date.now() < li.time + 500 ? (io += 1, li.time = d) : (li = { x: c, y: u, time: d }, io = 1); + let S = m.getBoundingClientRect(); + if (c >= S.left && c <= S.right && u >= S.top && u <= S.bottom) { + if (t37.flushInlineShortcutBuffer(), i = no(t37, c, u, { bias: 0 }), i !== t37.model.anchor && (t37.defaultStyle = {}, t37.styleBias = "left"), i >= 0) { + if (t37.element.classList.add("tracking"), e.shiftKey) { + let x = t37.model.selectionIsCollapsed; + t37.model.extendSelectionTo(t37.model.anchor, i), Kl(t37.model) || x ? a = "all" : a = "selection"; + } else + t37.model.at(i).type === "placeholder" ? (t37.model.setSelection(i - 1, i), a = "selection") : ((M = t37.model.at(i).rightSibling) == null ? void 0 : M.type) === "placeholder" ? (t37.model.setSelection(i, i + 1), a = "selection") : (t37.model.position = i, Kl(t37.model) ? a = "all" : a = "selection"); + e.detail === 3 || io > 2 ? (f(), (e.detail === 3 || io === 3) && (t37.model.selection = { ranges: [[0, t37.model.lastOffset]] }, a = "all")) : n || (n = true, ci.start(m, e, b, f), (e.detail === 2 || io === 2) && (o = true, ts(t37.model), a = "all")); + } + t37.hasFocus() || (a = "none", t37.focus({ preventScroll: true })); + } else + li = null; + t37.stopCoalescingUndo(), a !== "none" && (t37.model.selectionIsCollapsed && (a = "all"), V(t37)), e.preventDefault(); +} +function sg(t37, e, r) { + if (t37 >= r.left && t37 <= r.right && e >= r.top && e <= r.bottom) + return 0; + let i = t37 - (r.left + r.right) / 2, n = e - (r.top + r.bottom) / 2; + return i * i + n * n; +} +function ap(t37, e, r, i, n) { + if (!r.id) + return [1 / 0, null]; + if (e.has(r.id)) + return e.get(r.id); + let o = qr(t37, r); + if (!o) + return [1 / 0, null]; + let a = [1 / 0, null]; + if (r.hasChildren && !r.captureSelection && i >= o.left && i <= o.right) + for (let s of r.children) { + let l = ap(t37, e, s, i, n); + l[0] <= a[0] && (a = l); + } + return a[1] || (a = [sg(i, n, o), r]), e.set(r.id, a), a; +} +function lg(t37, e, r) { + let [, i] = ap(t37, /* @__PURE__ */ new Map(), t37.model.root, e, r); + return i; +} +function no(t37, e, r, i) { + var c; + let n = t37.field.querySelector(".ML__latex").getBoundingClientRect(); + if (!n) + return 0; + if (e > n.right || r > n.bottom + 8) + return t37.model.lastOffset; + if (e < n.left || r < n.top - 8) + return 0; + i = i != null ? i : {}, i.bias = (c = i.bias) != null ? c : 0; + let o = lg(t37, e, r), a = [], s = o; + for (; s; ) + a.unshift(s), s = s.parent; + for (let u of a) + if (u.captureSelection) { + o = u; + break; + } + let l = t37.model.offsetOf(o); + if (l < 0) + return -1; + if (o.leftSibling) + if (i.bias === 0 && o.type !== "placeholder") { + let u = qr(t37, o); + u && e < (u.left + u.right) / 2 && (l = t37.model.offsetOf(o.leftSibling)); + } else + i.bias < 0 && (l = t37.model.offsetOf(o.leftSibling)); + return l; +} +var Ql = class extends z { + constructor() { + super("math"); + } + onPaste(e, r) { + if (!r || !e.model.contentWillChange({ data: typeof r == "string" ? r : null, dataTransfer: typeof r == "string" ? null : r, inputType: "insertFromPaste" })) + return false; + let i = "", n = "auto", o = typeof r != "string" ? r.getData("application/json+mathlive") : ""; + if (o) + try { + let a = JSON.parse(o); + if (a && Array.isArray(a)) { + e.snapshot(); + let s = ot(a), { model: l } = e; + l.selectionIsCollapsed || l.deleteAtoms(te(l.selection)); + let c = l.at(l.position); + if (c.parent instanceof N) { + c.parentBranch; + let u = [], d = []; + s[0].type === "first" && s.shift(), s[s.length - 1].type === "first" && s.pop(); + for (let b of s) + b.type === "first" && d.length > 0 ? (u.push(d), d = [b]) : d.push(b); + d.length > 0 && u.push(d); + let m = Number(c.parentBranch[0]), h = Number(c.parentBranch[1]), f = c.parent.maxColumns; + for (; c.parent.colCount - h < u.length && c.parent.colCount < f; ) + c.parent.addColumn(); + c.parent.addChildrenAfter(u[0], c); + for (let b = 1; b < u.length; b++) + h++, h >= f && (h = 0, c.parent.addRowAfter(m), m++), c.parent.setCell(m, h, u[b]); + } else + c.parent.addChildrenAfter(s.filter((u) => u.type !== "first"), c); + return l.position = l.offsetOf(s[s.length - 1]), l.contentDidChange({ inputType: "insertFromPaste" }), V(e), true; + } + } catch (a) { + } + if (o = typeof r != "string" ? r.getData("application/json") : "", o && globalThis.MathfieldElement.computeEngine) + try { + let a = JSON.parse(o); + if (typeof a == "object" && "latex" in a && a.latex && (i = a.latex), !i) { + let s = globalThis.MathfieldElement.computeEngine.box(a); + s && !s.has("Error") && (i = s.latex); + } + i || (n = "latex"); + } catch (a) { + } + if (!i && typeof r != "string" && (i = r.getData("application/x-latex"), i && (n = "latex")), i || (i = typeof r == "string" ? r : r.getData("text/plain")), i) { + let a; + return [a, i] = _a(i), n === "auto" && a && (n = "latex"), e.stopCoalescingUndo(), e.stopRecording(), this.insert(e.model, i, { format: n }) && (e.startRecording(), e.snapshot("paste"), V(e)), e.startRecording(), true; + } + return false; + } + insert(e, r, i) { + var x, v; + let n = typeof r == "string" ? r : (v = (x = globalThis.MathfieldElement.computeEngine) == null ? void 0 : x.box(r).latex) != null ? v : ""; + if (!i.silenceNotifications && !e.contentWillChange({ data: n, inputType: "insertText" })) + return false; + i.insertionMode || (i.insertionMode = "replaceSelection"), i.selectionMode || (i.selectionMode = "placeholder"), i.format || (i.format = "auto"); + let { silenceNotifications: o } = e; + i.silenceNotifications && (e.silenceNotifications = true); + let a = e.silenceNotifications; + e.silenceNotifications = true; + let s = { "?": "\\placeholder{}", "@": "\\placeholder{}" }; + s[0] = i.insertionMode === "replaceAll" ? "" : e.getValue(e.selection, "latex-unstyled"), i.insertionMode === "replaceSelection" && !e.selectionIsCollapsed ? e.deleteAtoms(te(e.selection)) : i.insertionMode === "replaceAll" ? e.deleteAtoms() : i.insertionMode === "insertBefore" ? e.collapseSelection("backward") : i.insertionMode === "insertAfter" && e.collapseSelection("forward"), !e.at(e.position).isLastSibling && e.at(e.position + 1).type === "placeholder" ? e.deleteAtoms([e.position, e.position + 1]) : e.at(e.position).type === "placeholder" && e.deleteAtoms([e.position - 1, e.position]); + let l = -1; + s[0] ? s["@"] = s[0] : typeof r == "string" && /(^|[^\\])#@/.test(r) && (l = cg(e), l >= 0 && (s["@"] = e.getValue(l, e.position, "latex"))), s[0] || (s[0] = s["?"]); + let c = false, u = (k) => (c = true, s[k]), [d, m] = sp(e, r, u, i); + if (!m) + return false; + let h = m.length === 1 && m[0].type === "genfrac"; + h && l >= 0 && typeof e.mathfield.options.isImplicitFunction == "function" && e.mathfield.options.isImplicitFunction(e.at(e.position).command) ? (s["@"] = s["?"], c = false, [d, m] = sp(e, r, u, i)) : l >= 0 && e.deleteAtoms([l, e.position]); + let { parent: f } = e.at(e.position), b = f.hasEmptyBranch("body"); + if (h && d !== "latex" && e.mathfield.options.removeExtraneousParentheses && f instanceof H && f.leftDelim === "(" && b) { + let k = f.parent, C = f.parentBranch; + k.removeChild(f), k.setChildren(m, C); + } + let S = e.at(e.position); + S.parent.addChildrenAfter(m, S), d === "latex" && typeof r == "string" && (f == null ? void 0 : f.type) === "root" && b && !c && (f.verbatimLatex = r), e.silenceNotifications = a; + let M = m[m.length - 1]; + if (i.selectionMode === "placeholder") { + let k = m.flatMap((C) => [C, ...C.children]).find((C) => C.type === "placeholder"); + if (k) { + let C = e.offsetOf(k); + e.setSelection(C - 1, C), e.announce("move"); + } else + M && (e.position = e.offsetOf(M)); + } else + i.selectionMode === "before" || (i.selectionMode === "after" ? M && (e.position = e.offsetOf(M)) : i.selectionMode === "item" && e.setSelection(e.anchor, e.offsetOf(M))); + return e.contentDidChange({ data: n, inputType: "insertText" }), e.silenceNotifications = o, true; + } +}; +function sp(t37, e, r, i) { + var a; + let n, o = []; + if (typeof e != "string" || i.format === "math-json") { + let s = globalThis.MathfieldElement.computeEngine; + if (!s) + return ["math-json", []]; + [n, e] = ["latex", s.box(e).latex], o = se(e, { context: t37.mathfield.context }); + } else + typeof e == "string" && i.format === "ascii-math" ? ([n, e] = qt(e, { format: "ascii-math", inlineShortcuts: t37.mathfield.options.inlineShortcuts }), o = se(e, { context: t37.mathfield.context }), n !== "latex" && t37.mathfield.options.removeExtraneousParentheses && (o = o.map((s) => rs(s)))) : (i.format === "auto" || (a = i.format) != null && a.startsWith("latex")) && (i.format === "auto" && ([n, e] = qt(e, { format: "auto", inlineShortcuts: t37.mathfield.options.inlineShortcuts })), i.format === "latex" && ([, e] = _a(e)), o = se(e, { context: t37.mathfield.context, args: r }), i.format !== "latex" && t37.mathfield.options.removeExtraneousParentheses && (o = o.map((s) => rs(s)))); + return Dt(o, i.style), [n != null ? n : "latex", o]; +} +function rs(t37) { + var e; + if (t37 instanceof H && t37.leftDelim !== "(" && t37.rightDelim === ")") { + let r = (e = t37.body) == null ? void 0 : e.filter((i) => i.type !== "first"); + if ((r == null ? void 0 : r.length) === 1 && r[0].type === "genfrac") + return r[0]; + } + for (let r of t37.branches) + t37.hasEmptyBranch(r) || t37.setChildren(t37.branch(r).map((i) => rs(i)), r); + return t37 instanceof N && t37.forEachCell((r, i, n) => { + t37.setCell(i, n, r.map((o) => rs(o))); + }), t37; +} +function cg(t37) { + let e = t37.at(t37.position); + if (e.mode === "text") { + for (; !e.isFirstSibling && e.mode === "text"; ) + e = e.leftSibling; + return t37.offsetOf(e); + } + let r = e, i = false; + if (e.type === "mclose") { + let n = Ni[e.value]; + for (; !e.isFirstSibling && !(e.type === "mopen" && e.value === n); ) + e = e.leftSibling; + e.isFirstSibling || (e = e.leftSibling), i = true; + } else + e.type === "leftright" && (e = e.leftSibling, i = true); + if (i) + for (; !e.isFirstSibling && (e.isFunction || lp(e)); ) + e = e.leftSibling; + else { + let n = []; + for (; !e.isFirstSibling && (lp(e) || n.length > 0); ) + e.type === "mclose" && n.unshift(e.value), e.type === "mopen" && n.length > 0 && e.value === Ni[n[0]] && n.shift(), e = e.leftSibling; + } + return r === e ? -1 : t37.offsetOf(e); +} +function lp(t37) { + return t37.isDigit() ? true : t37.type && /^(mord|surd|subsup|leftright|mop|mclose)$/.test(t37.type) ? t37.type !== "extensible-symbol" : false; +} +new Ql(); +var ec = class extends z { + constructor() { + super("text"); + } + onPaste(e, r) { + if (!r) + return false; + let i = typeof r == "string" ? r : r.getData("text/plain"); + return i && e.model.contentWillChange({ inputType: "insertFromPaste", data: i }) ? (e.stopCoalescingUndo(), e.stopRecording(), this.insert(e.model, i) && (e.model.contentDidChange({ inputType: "insertFromPaste" }), e.startRecording(), e.snapshot("paste"), V(e)), e.startRecording(), true) : false; + } + insert(e, r, i = {}) { + if (!e.contentWillChange({ data: r, inputType: "insertText" })) + return false; + i.insertionMode || (i.insertionMode = "replaceSelection"), i.selectionMode || (i.selectionMode = "placeholder"), i.format || (i.format = "auto"); + let { silenceNotifications: n } = e; + i.silenceNotifications && (e.silenceNotifications = true); + let o = e.silenceNotifications; + e.silenceNotifications = true, i.insertionMode === "replaceSelection" && !e.selectionIsCollapsed ? e.deleteAtoms(te(e.selection)) : i.insertionMode === "replaceAll" ? (e.root.setChildren([], "body"), e.position = 0) : i.insertionMode === "insertBefore" ? e.collapseSelection("backward") : i.insertionMode === "insertAfter" && e.collapseSelection("forward"); + let a = ug(r, e.mathfield.context); + if (Dt(a, i.style), !a) + return false; + let s = e.at(e.position), l = s.parent.addChildrenAfter(a, s); + return e.silenceNotifications = o, i.selectionMode === "before" || (i.selectionMode === "item" ? e.setSelection(e.anchor, e.offsetOf(l)) : l && (e.position = e.offsetOf(l))), e.contentDidChange({ data: r, inputType: "insertText" }), e.silenceNotifications = n, true; + } +}; +function ug(t37, e) { + return t37 = t37.replace(/\\/g, "\\textbackslash "), t37 = t37.replace(/#/g, "\\#"), t37 = t37.replace(/\$/g, "\\$"), t37 = t37.replace(/%/g, "\\%"), t37 = t37.replace(/&/g, "\\&"), t37 = t37.replace(/_/g, "\\_"), t37 = t37.replace(/{/g, "\\textbraceleft "), t37 = t37.replace(/}/g, "\\textbraceright "), t37 = t37.replace(/lbrace/g, "\\textbraceleft "), t37 = t37.replace(/rbrace/g, "\\textbraceright "), t37 = t37.replace(/\^/g, "\\textasciicircum "), t37 = t37.replace(/~/g, "\\textasciitilde "), t37 = t37.replace(/£/g, "\\textsterling "), se(t37, { context: e, parseMode: "text" }); +} +new ec(); +function We(t37) { + return { value: t37.model.getValue(), selectionIsCollapsed: t37.model.selectionIsCollapsed, canUndo: t37.canUndo(), canRedo: t37.canRedo(), style: dg(t37.model), mode: t37.model.mode }; +} +function dg(t37) { + var i; + if (t37.selectionIsCollapsed) + return (i = t37.at(t37.position)) == null ? void 0 : i.style; + let e = t37.getAtoms(t37.selection); + if (e.length === 0) + return {}; + let r = p({}, e[0].style); + for (let n of e) + for (let [o, a] of Object.entries(n.style)) + r[o] !== a && delete r[o]; + return r; +} +var Y = 4; +var Te = 20; +var le = 2 * (Te + Y); +var is = (t37, e) => ` + + + + + `; +var cp = (t37, e) => ` + + + + + `; +var ns = (t37, e, r) => ` + + + + + + `; +var mg = ` + + + + + ${ns(2 * (Y + le), 2 * Y + 3 * le, 0)} + + + ${ns(2 * (Y + le), 2 * Y + le, 180)} + + + ${ns(2 * Y + 3 * le, 2 * (Y + le), -90)} + + + ${ns(2 * Y + le, 2 * (Y + le), 90)} + + + + + ${is(2 * Y + le, Y)} + + + ${cp(2 * Y + 2 * le, Y)} + + + ${is(2 * Y + 3 * le, Y)} + + + ${is(Y, 2 * Y + le)} + + + ${cp(Y, 2 * Y + 2 * le)} + + + ${is(Y, 2 * Y + 3 * le)} + +`; +var pg = (t37) => ` + + + + + `; +var hg = (t37) => ` + + + + + + + `; +var up = (t37) => ` + + + + + + + +`; +var fg = (t37) => ` + + + + + + + +`; +var gg = (t37) => ` + + + + + + + +`; +var yg = (t37) => ` + + + + + + + + + +`; +var bg = (t37) => ` + + + + + + + +`; +var xg = (t37) => ` + + + + + + + +`; +var tc = { matrix: pg, pmatrix: hg, bmatrix: fg, Bmatrix: up, vmatrix: gg, Vmatrix: yg }; +var rc = { cases: bg, rcases: xg, Bmatrix: up }; +function vg(t37) { + var m, b; + let e = (m = t37.model.parentEnvironment) == null ? void 0 : m.array; + if (!e) + return; + let r = 0; + e.forEach((S) => { + (!r || S.length > r) && (r = S.length); + }); + let i = document.getElementById("mathlive-environment-popover"); + i || (i = Yr("mathlive-environment-popover"), Oe("environment-popover"), Oe("core"), i.setAttribute("aria-hidden", "true")); + let n, o = i.querySelector(".MLEP__environment-controls"); + o ? n = o : (n = document.createElement("div"), i.innerHTML = "", i.appendChild(n)), n.className = "MLEP__environment-controls", n.style.display = "flex", n.style.width = "100%", n.style.height = "100%", n.style.boxSizing = "border-box", n.innerHTML = mg; + let a = [], s = "", l = t37.model.parentEnvironment.environmentName; + if (Sa(l)) { + let S = _g(l); + s = tc[S]("active"); + let h = tc, { [S]: M } = h, x = fi(h, [bs(S)]); + a = Object.values(x).map((v) => v("inactive")); + } else if (sm(l)) { + let S = Mg(l); + s = rc[S]("active"); + let f = rc, { [S]: M } = f, x = fi(f, [bs(S)]); + a = Object.values(x).map((v) => v("inactive")); + } else + lm(l) && (s = tc.matrix("active"), a = Object.values(rc).map((S) => S("inactive"))); + let c = document.createElement("div"); + c.className = "MLEP__environment-delimiter-controls", c.style.display = "flex", c.style.flexDirection = "column", c.innerHTML = ` +
    + ${s} + ${a.join("")} +
    `, s && n.appendChild(c), n.querySelectorAll("[data-command]").forEach((S) => { + let M = S.dataset.command, x = M; + try { + x = JSON.parse(M); + } catch (v) { + } + S.addEventListener("mousedown", (v) => v.preventDefault()), x && S.addEventListener("click", () => t37.executeCommand(x)); + }); + let d = (b = t37.field) == null ? void 0 : b.getBoundingClientRect(); + d && (i.style.top = `${window.scrollY + (d.top - i.clientHeight - 15)}px`, i.style.left = `${d.left + 20}px`, i.classList.add("is-visible")); +} +function os() { + let t37 = document.getElementById("mathlive-environment-popover"); + t37 == null || t37.classList.remove("is-visible"); +} +function dp() { + document.getElementById("mathlive-environment-popover") && (Zi("mathlive-environment-popover"), Ve("environment-popover"), Ve("core")); +} +function oo(t37) { + if (!t37.hasFocus()) + return; + let e = false; + if (t37.model.mode === "math") { + let r = t37.model.parentEnvironment; + if (r != null && r.array && am(r.environmentName)) { + let i = t37.options.environmentPopoverPolicy; + e = i === "auto" || i === "on"; + } + } + e ? vg(t37) : os(); +} +function _g(t37) { + return t37.replace("*", ""); +} +function Mg(t37) { + return t37 === "dcases" ? "cases" : t37; +} +function as(t37) { + let e = getComputedStyle(t37).direction; + return e === "ltr" || e === "rtl" ? e : "ltr"; +} +function nc(t37, e, r) { + return e === "left" || e === "leading" && r === "ltr" || e === "trailing" && r === "rtl" ? t37.left : t37.right; +} +function ic(t37, e, r, i) { + return r === "middle" ? t37 - e / 2 : r === "start" && i === "rtl" || r === "end" && i === "ltr" || r === "top" || r === "right" ? Math.max(0, t37 - e) : t37; +} +function wg(t37, e, r, i) { + return r === "middle" ? t37 - e / 2 : r === "start" && i === "ltr" || r === "end" && i === "rtl" || r === "top" || r === "right" ? t37 : t37 - e; +} +function mp(t37, e) { + var u, d, m; + let r = (u = as(t37)) != null ? u : "ltr"; + t37.style.position = "fixed", t37.style.left = "", t37.style.top = "", t37.style.right = "", t37.style.bottom = "", t37.style.height = "", t37.style.width = ""; + let i = t37.getBoundingClientRect(), n = Number.isFinite(e.maxHeight) ? Math.min(e.maxHeight, window.innerHeight) : window.innerHeight, o = Math.min(n, (d = e.height) != null ? d : i.height), a = ic(e.location.y, o, e.verticalPos, r); + a + o > window.innerHeight - 8 && (e.alternateLocation ? (a = ic(e.alternateLocation.y, o, e.verticalPos, r), a + o > window.innerHeight - 8 && (a = void 0)) : a = void 0), Number.isFinite(a) || (a = Math.max(8, window.innerHeight - 8 - o), 8 + o > window.innerHeight - 8 && (t37.style.bottom = "8px")), o = Math.min(a + o, window.innerHeight - 8) - a; + let s = Number.isFinite(e.maxWidth) ? Math.min(e.maxWidth, window.innerWidth) : window.innerWidth, l = Math.min(s, (m = e.width) != null ? m : i.width), c = ic(e.location.x, l, e.horizontalPos, r); + c + l > window.innerWidth - 8 && (e.alternateLocation ? (c = wg(e.alternateLocation.x, l, e.verticalPos, r), c + l > window.innerWidth - 8 && (c = void 0)) : c = void 0), Number.isFinite(c) || (c = Math.max(8, window.innerWidth - 8 - l), 8 + l > window.innerWidth - 8 && (t37.style.right = "8px")), l = Math.min(c + l, window.innerWidth - 8) - c, r === "rtl" ? t37.style.right = `${Math.ceil(window.innerWidth - c - l).toString()}px` : t37.style.left = `${Math.ceil(c).toString()}px`, t37.style.top = `${Math.ceil(a).toString()}px`, o !== i.height && (t37.style.height = `${Math.ceil(o).toString()}px`), l !== i.width && (t37.style.width = `${Math.ceil(l).toString()}px`); +} +function pp(t37, e) { + return Math.hypot(e.x - t37.x, e.y - t37.y); +} +function Lr(t37) { + return "submenu" in t37; +} +function dt(t37) { + return "type" in t37 && t37.type === "command" || "onMenuSelect" in t37 || "id" in t37; +} +function ao(t37) { + return "type" in t37 && t37.type === "divider"; +} +function ss(t37) { + return "type" in t37 && t37.type === "heading"; +} +var hp = {}; +function ls(t37) { + let e = hp[t37]; + if (!e) { + let r; + switch (t37) { + case "checkmark": + r = ``; + break; + case "trailing-chevron": + r = ''; + break; + case "mixedmark": + r = ''; + } + if (r) { + let i = document.createElement("template"); + i.innerHTML = r, hp[t37] = i, e = i; + } + } + if (e) { + if ("content" in e) + return e.content.cloneNode(true); + let r = document.createElement("svg"); + return r.innerHTML = e.innerHTML, r; + } +} +var fp = 80; +var ln = class { + constructor(e, r) { + this._className = ""; + this._element = null; + var i; + this.parentMenu = r, this._declaration = e, Object.freeze(this._declaration), Lr(e) ? (this.type = "submenu", this.submenu = new cn(e.submenu, { parentMenu: r, submenuClass: e.submenuClass, columnCount: e.columnCount })) : this.type = (i = e.type) != null ? i : "command", this.hasCheck = dt(e) && e.checked !== void 0; + } + get rootMenu() { + return this.parentMenu.rootMenu; + } + get abortController() { + return this._abortController || (this._abortController = new AbortController()), this._abortController; + } + dispose() { + var e, r; + (e = this._abortController) == null || e.abort(), this._abortController = void 0, (r = this._element) == null || r.remove(), this._element = null, this.submenu && this.submenu.dispose(), this.submenu = void 0; + } + get menuItem() { + return this._declaration; + } + get label() { + var e; + return (e = this._label) != null ? e : ""; + } + set label(e) { + e === void 0 && (e = ""), e !== this._label && (this._label = e, this.dirty = true); + } + get visible() { + return this._visible; + } + set visible(e) { + e !== this._visible && (this._visible = e, this.dirty = true); + } + get enabled() { + return this._enabled; + } + set enabled(e) { + this._enabled = e, this.element && (e ? this.element.removeAttribute("aria-disabled") : this.element.setAttribute("aria-disabled", "true")), this.dirty = true; + } + get checked() { + return this._checked; + } + set checked(e) { + this._checked = e, this.dirty = true; + } + get tooltip() { + return this._tooltip; + } + set tooltip(e) { + e !== this._tooltip && (this._tooltip = e, this.dirty = true); + } + get ariaLabel() { + return this._ariaLabel; + } + set ariaLabel(e) { + e !== this._ariaLabel && (this._ariaLabel = e, this.dirty = true); + } + get active() { + var e, r; + return (r = (e = this.element) == null ? void 0 : e.classList.contains("active")) != null ? r : false; + } + set active(e) { + this.element && this.element.classList.toggle("active", e); + } + updateState(e) { + var i, n, o; + let r = this._declaration; + if (ao(r)) { + this.enabled = false, this.checked = false; + return; + } + ss(r) && (this.enabled = false, this.checked = false, this.visible = true), dt(r) && (this.checked = (i = ui(r.checked, e)) != null ? i : false), (dt(r) || Lr(r)) && (this.enabled = (n = ui(r.enabled, e)) != null ? n : true, this.visible = (o = ui(r.visible, e)) != null ? o : true, this.visible && this.enabled && this.submenu && (this.submenu.updateState(e), this.submenu.visible || (this.visible = false))), (dt(r) || ss(r) || Lr(r)) && (this.label = ui(r.label, e), this._className = ui(r.class, e), this.tooltip = ui(r.tooltip, e), this.ariaLabel = ui(r.ariaLabel, e)), this._element && this.updateElement(); + } + set dirty(e) { + e && this.parentMenu && (this.parentMenu.dirty = true); + } + updateElement() { + var i; + if (!this.visible || !this.element) + return; + let e = this.element; + e.textContent = "", e.className = "", e.className = (i = this._className) != null ? i : "", this.enabled ? e.removeAttribute("aria-disabled") : e.setAttribute("aria-disabled", "true"), this.checked === true ? (e.setAttribute("aria-checked", "true"), e.append(ls("checkmark"))) : this.checked === "mixed" ? (e.setAttribute("aria-checked", "mixed"), e.append(ls("mixedmark"))) : e.removeAttribute("aria-checked"), this.ariaLabel && e.setAttribute("aria-label", this.ariaLabel); + let r = document.createElement("span"); + if (r.className = this.parentMenu.hasCheck ? "label indent" : "label", this.type === "heading" && r.classList.add("heading"), r.innerHTML = this.label, e.append(r), this._tooltip && e.setAttribute("data-tooltip", this._tooltip), dt(this._declaration) && this._declaration.keyboardShortcut) { + let n = document.createElement("kbd"); + n.innerHTML = ji(this._declaration.keyboardShortcut), e.append(n); + } + this.type === "submenu" && e.append(ls("trailing-chevron")); + } + get element() { + if (this._element) + return this._element; + if (ao(this._declaration)) { + let i = document.createElement("li"); + return i.setAttribute("part", "menu-divider"), i.setAttribute("role", "divider"), this._element = i, i; + } + let e = document.createElement("li"); + this._element = e, (dt(this._declaration) || ss(this._declaration) || Lr(this._declaration)) && e.setAttribute("part", "menu-item"), e.setAttribute("tabindex", "-1"), this.hasCheck ? e.setAttribute("role", "menuitemcheckbox") : e.setAttribute("role", "menuitem"), this.type === "submenu" && (e.setAttribute("aria-haspopup", "true"), e.setAttribute("aria-expanded", "false")); + let r = this.abortController.signal; + return e.addEventListener("pointerenter", this, { signal: r }), e.addEventListener("pointerleave", this, { signal: r }), e.addEventListener("pointerup", this, { signal: r }), e.addEventListener("click", this, { signal: r }), this._element; + } + dispatchSelect() { + var i; + if (!dt(this._declaration)) + return; + let e = new CustomEvent("menu-select", { cancelable: true, bubbles: true, detail: { modifiers: this.rootMenu.modifiers, id: this._declaration.id, data: this._declaration.data } }); + this.parentMenu.dispatchEvent(e) && typeof this._declaration.onMenuSelect == "function" && this._declaration.onMenuSelect({ target: (i = this.parentMenu.host) != null ? i : void 0, modifiers: this.rootMenu.modifiers, id: this._declaration.id, data: this._declaration.data }); + } + handleEvent(e) { + var r; + if (!(!this.visible || !this.enabled)) { + if (e.type === "click") { + this.rootMenu.state === "modal" && this.select(), e.stopPropagation(), e.preventDefault(); + return; + } + if (e.type === "pointerenter") { + let i = e; + this.rootMenu.cancelDelayedOperation(), this.parentMenu.isSubmenuOpen && ((r = this.parentMenu.activeMenuItem) != null && r.movingTowardSubmenu(i)) ? this.rootMenu.scheduleOperation(() => { + this.parentMenu.activeMenuItem = this, this.openSubmenu(); + }) : (this.parentMenu.activeMenuItem = this, this.openSubmenu({ withDelay: true })); + return; + } + if (e.type === "pointerleave") { + this.rootMenu.activeSubmenu === this.parentMenu && (this.parentMenu.activeMenuItem = null); + return; + } + if (e.type === "pointerup") { + this.rootMenu.state !== "modal" && this.select(), e.stopPropagation(), e.preventDefault(); + return; + } + } + } + select() { + if (this.rootMenu.cancelDelayedOperation(), this.type === "submenu") { + this.openSubmenu(); + return; + } + this.active = false, setTimeout(() => { + this.active = true, setTimeout(() => { + this.active = false, this.rootMenu.hide(), this.dispatchSelect(); + }, fp); + }, fp); + } + openSubmenu(e) { + var n; + if (this.type !== "submenu" || !this.element) + return; + if ((n = e == null ? void 0 : e.withDelay) != null && n) { + this.rootMenu.scheduleOperation(() => this.openSubmenu()); + return; + } + let r = this.element.getBoundingClientRect(), i = as(this.element); + this.submenu.show({ container: this.rootMenu.element.parentNode, location: { x: nc(r, "trailing", i), y: r.top - 4 }, alternateLocation: { x: nc(r, "leading", i), y: r.top - 4 } }); + } + movingTowardSubmenu(e) { + if (!this.element || this.type !== "submenu") + return false; + let r = this.rootMenu.lastMoveEvent; + if (!r) + return false; + let i = e.timeStamp - r.timeStamp; + if (i > 500) + return false; + let n = e.clientX - r.clientX; + if (kg(n, r.clientY - e.clientY, i) <= 0.2) + return false; + let a = "right"; + if (this.submenu.element) { + let s = this.submenu.element.getBoundingClientRect(), l = this.element.getBoundingClientRect(); + s.left < l.left + l.width / 2 && (a = "left"); + } + return a === "right" ? n > 0 : n < 0; + } +}; +function kg(t37, e, r) { + return Math.hypot(t37, e) / r; +} +function ui(t37, e) { + return t37 === void 0 || typeof t37 != "function" ? t37 : (e != null || (e = { alt: false, control: false, shift: false, meta: false }), t37(e)); +} +var cn = class t36 { + constructor(e, r) { + this._element = null; + this._activeMenuItem = null; + this._dirty = true; + var i, n; + this.parentMenu = (i = r == null ? void 0 : r.parentMenu) != null ? i : null, this._submenuClass = r == null ? void 0 : r.submenuClass, this.columnCount = (n = r == null ? void 0 : r.columnCount) != null ? n : 1, this.isSubmenuOpen = false, this.menuItems = e; + } + get children() { + return Object.freeze([...this._menuItems]); + } + set menuItems(e) { + let r = this.parentMenu; + this.dispose(), this.parentMenu = r, e = [...e], this._menuItems = e.map((i) => i.onCreate ? i.onCreate(i, this) : new ln(i, this)), this.hasCheck = void 0, this.dirty = true; + } + dispose() { + var e; + this.hide(), this._element && this._element.remove(), this._abortController && this._abortController.abort(), (e = this._menuItems) == null || e.forEach((r) => r.dispose()), this._menuItems = [], this._activeMenuItem = null, this.parentMenu = null; + } + handleEvent(e) { + if (e.type === "wheel" && this._element) { + let r = e; + this._element.scrollBy(0, r.deltaY), e.stopPropagation(); + } + } + dispatchEvent(e) { + return this.rootMenu.dispatchEvent(e); + } + get host() { + return this.rootMenu.host; + } + get rootMenu() { + return this.parentMenu.rootMenu; + } + updateState(e) { + var a, s, l; + this._menuItems.forEach((c) => c.updateState(e)); + let r = this.hasCheck; + this.hasCheck = this._menuItems.some((c) => c.visible && c.hasCheck), this.hasCheck !== r && this._menuItems.forEach((c) => c.updateState(e)); + let i, n = 0; + for (let c of this._menuItems) + c.type === "heading" ? (i && n === 0 && (i.visible = false), i = c, n = 0) : c.type === "divider" && i ? (i.visible = n > 0, i = void 0, n = 0) : i && c.visible && (n += 1); + i && (i.visible = n > 0); + let o = true; + for (let c of this._menuItems) + c.type === "divider" ? (c.visible = !o, o = true) : c.visible && (o = false); + (a = this.activeMenuItem) != null && a.visible || (this.activeMenuItem = null), !((s = this.activeMenuItem) != null && s.enabled) && ((l = this.activeMenuItem) == null ? void 0 : l.type) === "submenu" && this._activeMenuItem.submenu.hide(), this._dirty = false; + } + get enabled() { + return this.updateIfDirty(), this._menuItems.some((e) => e.type !== "divider" && e.visible && e.enabled); + } + get visible() { + return this.updateIfDirty(), this._menuItems.some((e) => e.type !== "divider" && e.visible); + } + set dirty(e) { + this._dirty !== e && e && this.parentMenu && (this._dirty = true, this.parentMenu.dirty = true); + } + updateIfDirty() { + this._dirty && this.updateState(this.rootMenu.modifiers); + } + updateElement() { + var e; + if (this._element) { + this._element.textContent = ""; + for (let { element: r, visible: i } of this._menuItems) + r && i && this._element.append(r); + (e = this._element.querySelector("li:first-of-type")) == null || e.setAttribute("tabindex", "0"); + } + } + get element() { + if (this._element) + return this._element; + let e = document.createElement("menu"); + e.setAttribute("role", "menu"), e.setAttribute("tabindex", "-1"), e.setAttribute("aria-orientation", "vertical"), e.setAttribute("part", "ui-menu-container"), this._submenuClass && e.classList.add(this._submenuClass), e.classList.add("ui-menu-container"), this._abortController || (this._abortController = new AbortController()); + let r = this._abortController.signal; + return e.addEventListener("focus", this, { signal: r }), e.addEventListener("wheel", this, { passive: true, signal: r }), this._element = e, this.updateElement(), e; + } + get activeMenuItem() { + return this._activeMenuItem; + } + set activeMenuItem(e) { + var r, i, n, o; + if (this.rootMenu.cancelDelayedOperation(), e !== this._activeMenuItem) { + if (this.activeMenuItem) { + let a = this.activeMenuItem; + a.active = false, (r = a.submenu) == null || r.hide(); + } + if (!((i = e == null ? void 0 : e.visible) == null || i)) { + this._activeMenuItem = null; + return; + } + this._activeMenuItem = e, e && (e.active = true); + } + e ? (n = e.element) == null || n.focus({ preventScroll: true }) : (o = this._element) == null || o.focus({ preventScroll: true }); + } + get firstMenuItem() { + this.updateIfDirty(); + let e = 0, r = false, i = this._menuItems; + for (; !r && e <= i.length - 1; ) { + let n = i[e]; + r = n.type !== "divider" && n.visible && n.enabled, e += 1; + } + return r ? i[e - 1] : null; + } + get lastMenuItem() { + this.updateIfDirty(); + let e = this._menuItems, r = e.length - 1, i = false; + for (; !i && r >= 0; ) { + let n = e[r]; + i = n.type !== "divider" && n.visible && n.enabled, r -= 1; + } + return i ? e[r + 1] : null; + } + nextMenuItem(e) { + if (e === 0) + return this._activeMenuItem; + if (!this._activeMenuItem) + return e > 0 ? this.firstMenuItem : this.lastMenuItem; + if (!this.firstMenuItem || !this.lastMenuItem || !this._activeMenuItem) + return null; + this.updateIfDirty(); + let r = this._menuItems.indexOf(this.firstMenuItem), i = this._menuItems.indexOf(this.lastMenuItem), n = this._menuItems.indexOf(this._activeMenuItem), o = 1; + for (; n >= r && n <= i; ) { + n += e > 0 ? 1 : -1; + let a = this._menuItems[n]; + if (!a) + break; + if (a.visible && a.enabled) { + if (o === Math.abs(e)) + return this._menuItems[n]; + o += 1; + } + } + return e > 0 ? this.lastMenuItem : this.firstMenuItem; + } + getMenuItemColumn(e) { + this.updateIfDirty(); + let i = this._menuItems.filter((n) => n.visible && n.enabled).indexOf(e); + return i < 0 ? -1 : i % this.columnCount; + } + static get collator() { + return t36._collator || (t36._collator = new Intl.Collator(void 0, { usage: "search", sensitivity: "base" })), t36._collator; + } + findMenuItem(e) { + var a; + this.updateIfDirty(); + let r = this._menuItems.filter((s) => s.type !== "divider" && s.visible && s.enabled); + if (r.length === 0) + return null; + let i = Math.max(...r.map((s) => s.label.length)) - e.length; + if (i < 0) + return null; + let n = null, o = 0; + for (; o < i && !n; ) + n = (a = r.find((s) => t36.collator.compare(e, s.label.substring(o, e.length)) === 0)) != null ? a : null, o++; + return n; + } + show(e) { + return !this.visible || !e.container ? false : (this.updateElement(), e.container.appendChild(this.element), xs() && (this.element.popover = "manual", this.element.showPopover()), e.location && mp(this.element, { location: e.location, alternateLocation: e.alternateLocation, verticalPos: "bottom", horizontalPos: "start" }), gp(), this.element.focus({ preventScroll: true }), yp(), this.parentMenu && (this.parentMenu.openSubmenu = this), true); + } + hide() { + var e, r, i, n, o; + this.openSubmenu = null, this.activeMenuItem = null, this.parentMenu && (this.parentMenu.openSubmenu = null), xs() && ((e = this._element) != null && e.popover) && this.element.hidePopover(), gp(), (i = (r = this.parentMenu) == null ? void 0 : r.element) == null || i.focus(), (o = (n = this._element) == null ? void 0 : n.parentNode) == null || o.removeChild(this._element), yp(); + } + set openSubmenu(e) { + var i, n, o, a; + let r = e !== null; + ((i = this.activeMenuItem) == null ? void 0 : i.type) === "submenu" && ((n = this.activeMenuItem.element) == null || n.setAttribute("aria-expanded", r.toString())), (a = (o = this.activeMenuItem) == null ? void 0 : o.element) == null || a.classList.toggle("is-submenu-open", r), this.isSubmenuOpen = r; + } +}; +function gp() { + document.addEventListener("focusin", Ar, true), document.addEventListener("focusout", Ar, true), document.addEventListener("focus", Ar, true), document.addEventListener("blur", Ar, true); +} +function Ar(t37) { + t37.stopImmediatePropagation(), t37.preventDefault(); +} +function yp() { + document.removeEventListener("focusin", Ar, true), document.removeEventListener("focusout", Ar, true), document.removeEventListener("focus", Ar, true), document.removeEventListener("blur", Ar, true); +} +var us = class us2 extends cn { + constructor(r, i) { + var n; + super(r); + this.state = "closed"; + this.typingBufferResetTimer = 0; + this.hysteresisTimer = 0; + this._updating = false; + this._host = (n = i == null ? void 0 : i.host) != null ? n : null, this.isDynamic = r.some(bp), this._modifiers = { shift: false, control: false, alt: false, meta: false }, this.typingBuffer = "", this.state = "closed"; + } + get modifiers() { + return this._modifiers; + } + set modifiers(r) { + Em(this._modifiers, r) || (this._modifiers = r, this.dirty = true); + } + get activeSubmenu() { + let r = this; + for (; r.isSubmenuOpen; ) + r = r.activeMenuItem.submenu; + return r; + } + set dirty(r) { + this._updating || this._dirty !== r && (this._dirty = true, r && setTimeout(() => { + this.updateState(this.modifiers), this.updateElement(); + })); + } + updateState(r) { + this._updating = true, this.modifiers = r != null ? r : this.modifiers, super.updateState(this.modifiers), this._updating = false; + } + handleKeyupEvent(r) { + this.isDynamic && (this.modifiers = Kt(r)), r.stopImmediatePropagation(); + } + handleKeydownEvent(r) { + var a, s, l; + if (r.key === "Tab" || r.key === "Escape") { + this.hide(); + return; + } + this.isDynamic && (this.modifiers = Kt(r)); + let i = true, n = this.activeSubmenu, o = n.activeMenuItem; + switch (r.key) { + case " ": + case "Space": + case "Return": + case "Enter": + o == null || o.select(Kt(r)); + break; + case "ArrowRight": + if ((o == null ? void 0 : o.type) === "submenu") + o.select(Kt(r)), this.activeSubmenu.activeMenuItem = this.activeSubmenu.firstMenuItem; + else if (!o) + n.activeMenuItem = n.firstMenuItem; + else { + let c = (a = n.getMenuItemColumn(o)) != null ? a : -1; + if (c >= 0 && c < ((s = n.columnCount) != null ? s : 1) - 1) { + let u = n.nextMenuItem(1); + u && (n.activeMenuItem = u); + } + } + break; + case "ArrowLeft": + if (n === this.rootMenu) + o || (n.activeMenuItem = n.firstMenuItem); + else if ((o && (l = n.getMenuItemColumn(o)) != null ? l : -1) <= 0 || !o) { + n.hide(); + let u = n.parentMenu.activeMenuItem; + if (u) { + let { element: d } = u; + d == null || d.focus(), d == null || d.classList.remove("is-submenu-open"); + } + } else { + let u = n.nextMenuItem(-1); + u && (n.activeMenuItem = u); + } + break; + case "ArrowDown": + n.activeMenuItem = n.nextMenuItem(n.columnCount); + break; + case "ArrowUp": + n.activeMenuItem = n.nextMenuItem(-n.columnCount); + break; + case "Home": + case "PageUp": + n.activeMenuItem = n.firstMenuItem; + break; + case "End": + case "PageDown": + n.activeMenuItem = n.lastMenuItem; + break; + case "Backspace": + if (this.typingBuffer && (this.typingBuffer = this.typingBuffer.slice(0, -1), this.typingBuffer)) { + clearTimeout(this.typingBufferResetTimer); + let c = n.findMenuItem(this.typingBuffer); + c && (n.activeMenuItem = c), this.typingBufferResetTimer = setTimeout(() => { + this.typingBuffer = ""; + }, 500); + } + break; + default: + if (_r(r)) { + isFinite(this.typingBufferResetTimer) && clearTimeout(this.typingBufferResetTimer), this.typingBuffer += r.key; + let c = n.findMenuItem(this.typingBuffer); + c && (n.activeMenuItem = c), this.typingBufferResetTimer = setTimeout(() => { + this.typingBuffer = ""; + }, 500); + } else + i = false; + } + i && (r.preventDefault(), r.stopPropagation()); + } + handleEvent(r) { + if (r.type === "keydown") + this.handleKeydownEvent(r); + else if (r.type === "keyup") + this.handleKeyupEvent(r); + else if (r.type === "pointermove") + this.lastMoveEvent = r; + else if (r.type === "pointerup" && r.target === this.scrim) + Number.isFinite(this.rootMenu._openTimestamp) && Date.now() - this.rootMenu._openTimestamp < 120 ? this.state = "modal" : this.state === "modal" && this.hide(); + else if (r.type === "contextmenu") { + r.preventDefault(), r.stopPropagation(); + return; + } + super.handleEvent(r); + } + dispatchEvent(r) { + return this._host ? this._host.dispatchEvent(r) : true; + } + get host() { + return this._host; + } + get scrim() { + return _e.element; + } + connectScrim(r) { + let i = this.scrim; + i.addEventListener("pointerup", this), i.addEventListener("contextmenu", this), i.addEventListener("keydown", this), i.addEventListener("keyup", this), i.addEventListener("pointermove", this), _e.open({ root: r, onDismiss: () => this.hide() }); + } + disconnectScrim() { + let r = this.scrim; + r.removeEventListener("pointerup", this), r.removeEventListener("contextmenu", this), r.removeEventListener("keydown", this), r.removeEventListener("keyup", this), r.removeEventListener("pointermove", this), _e.state === "open" && _e.scrim.close(); + } + get rootMenu() { + return this; + } + show(r) { + return this._onDismiss = r == null ? void 0 : r.onDismiss, r != null && r.modifiers && (this.modifiers = r.modifiers), this.updateState(), this.connectScrim(r == null ? void 0 : r.target), super.show(g(p({}, r), { container: this.scrim })) ? (this._openTimestamp = Date.now(), this.state = "open", true) : (this.disconnectScrim(), false); + } + hide() { + this.cancelDelayedOperation(), this.state !== void 0 && (this.state !== "closed" && (this.activeMenuItem = null, _e.element.parentElement.focus(), super.hide(), this.state = "closed", this.disconnectScrim()), this._onDismiss && (this._onDismiss(), this._onDismiss = void 0)); + } + scheduleOperation(r) { + this.cancelDelayedOperation(); + let i = us2.SUBMENU_DELAY; + if (i <= 0) { + r(); + return; + } + this.hysteresisTimer = setTimeout(() => { + this.hysteresisTimer = 0, r(); + }, i); + } + cancelDelayedOperation() { + this.hysteresisTimer && (clearTimeout(this.hysteresisTimer), this.hysteresisTimer = 0); + } +}; +us.SUBMENU_DELAY = 120; +var cs = us; +function bp(t37) { + return ao(t37) ? false : typeof t37.label == "function" || typeof t37.ariaLabel == "function" || typeof t37.tooltip == "function" || (dt(t37) || Lr(t37)) && (typeof t37.enabled == "function" || typeof t37.visible == "function") || dt(t37) && typeof t37.checked == "function" ? true : Lr(t37) ? t37.submenu.some(bp) : false; +} +var un = class { +}; +un.DELAY = 300, un.MAX_DISTANCE = 10; +function xp(t37) { + return new Promise((e, r) => { + let i = Xi(t37); + i || e(false); + let n = i, o = setTimeout(() => { + a.abort(), e(pp(n, i) < un.MAX_DISTANCE); + }, un.DELAY), a = new AbortController(), s = a.signal; + for (let l of ["pointermove", "pointerup", "pointercancel"]) + window.addEventListener(l, (c) => { + if (c.type === "pointerup" || c.type === "pointercancel") + clearTimeout(o), a.abort(), e(false); + else if (c.type === "pointermove") { + let u = Xi(c); + u && (n = u); + } + }, { passive: true, signal: s }); + }); +} +async function oc(t37, e, r) { + if (t37.type === "contextmenu") { + let i = t37; + if (r.show({ target: e, location: Xi(i), modifiers: Kt(i) })) + return t37.preventDefault(), t37.stopPropagation(), true; + } + if (t37.type === "keydown") { + let i = t37; + if (i.code === "ContextMenu" || i.code === "F10" && i.shiftKey) { + let n = e == null ? void 0 : e.getBoundingClientRect(); + if (n && r.show({ target: e, location: { x: Math.ceil(n.left + n.width / 2), y: Math.ceil(n.top + n.height / 2) }, modifiers: Kt(i) })) + return t37.preventDefault(), t37.stopPropagation(), true; + } + } + if (t37.type === "pointerdown" && t37.pointerType !== "mouse" && t37.button === 0) { + let i = t37.target; + for (; i && e !== i; ) + i = i.parentNode; + if (!i || !r.visible) + return false; + let n = Xi(t37); + if (await xp(t37)) + return r.state !== "closed" ? false : (r.show({ target: e, location: n }), true); + } + return false; +} +var vp = { acute: 714, grave: 715, dot: 729, ddot: 168, mathring: 730, tilde: 126, bar: 713, breve: 728, check: 711, hat: 94, vec: 8407 }; +_(Object.keys(vp), "{body:auto}", { createAtom: (t37) => new xr(g(p({}, t37), { body: A(t37.args[0]), accentChar: vp[t37.command.slice(1)] })) }); +_(["widehat", "widecheck", "widetilde"], "{body:auto}", { createAtom: (t37) => { + let e = As(A(t37.args[0])); + return new xr(g(p({}, t37), { body: A(t37.args[0]), svgAccent: t37.command.slice(1) + (e.length > 5 ? "4" : ["1", "1", "2", "2", "3", "3"][e.length]) })); +} }); +_(["overarc", "overparen", "wideparen"], "{body:auto}", { createAtom: (t37) => new xr(g(p({}, t37), { body: A(t37.args[0]), svgAccent: "overarc" })) }); +_(["underarc", "underparen"], "{body:auto}", { createAtom: (t37) => new ye(g(p({}, t37), { body: A(t37.args[0]), svgBelow: "underarc" })) }); +_("utilde", "{body:auto}", { createAtom: (t37) => { + let e = A(t37.args[0]), r = As(e), i = "widetilde" + (r.length > 5 ? "4" : ["1", "1", "2", "2", "3", "3"][r.length]); + return new ye(g(p({}, t37), { body: e, svgBelow: i, boxType: Nr(e) })); +} }); +_("^", "{:string}", { createAtom: (t37) => { + var e; + return new y(g(p({}, t37), { type: "mord", isFunction: false, limits: "adjacent", value: t37.args[0] && (e = { a: "\xE2", e: "\xEA", i: "\xEE", o: "\xF4", u: "\xFB", A: "\xC2", E: "\xCA", I: "\xCE", O: "\xD4", U: "\xDB" }[t37.args[0]]) != null ? e : "^" })); +} }); +_("`", "{:string}", { createAtom: (t37) => { + var e; + return new y(g(p({}, t37), { type: "mord", isFunction: false, limits: "adjacent", value: t37.args[0] && (e = { a: "\xE0", e: "\xE8", i: "\xEC", o: "\xF2", u: "\xF9", A: "\xC0", E: "\xC8", I: "\xCC", O: "\xD2", U: "\xD9" }[t37.args[0]]) != null ? e : "`" })); +} }); +_("'", "{:string}", { createAtom: (t37) => { + var e; + return new y(g(p({}, t37), { type: "mord", isFunction: false, limits: "adjacent", value: t37.args[0] && (e = { a: "\xE1", e: "\xE9", i: "\xED", o: "\xF3", u: "\xFA", A: "\xC1", E: "\xC9", I: "\xCD", O: "\xD3", U: "\xDA" }[t37.args[0]]) != null ? e : "'" })); +} }); +_('"', "{:string}", { createAtom: (t37) => { + var e, r; + return new y(g(p({}, t37), { type: "mord", isFunction: false, limits: "adjacent", value: (e = t37.args) != null && e[0] ? (r = { a: "\xE4", e: "\xEB", i: "\xEF", o: "\xF6", u: "\xFC", A: "\xC4", E: "\xCB", I: "\xCB", O: "\xD6", U: "\xDC" }[t37.args[0]]) != null ? r : '"' + t37.args[0] : '"' })); +} }); +_(".", "{:string}", { createAtom: (t37) => { + var e, r; + return new y(g(p({}, t37), { type: "mord", isFunction: false, limits: "adjacent", value: (e = t37.args) != null && e[0] ? (r = { a: "\u0227", e: "\u0117", i: "\u0307i", o: "\u022F", u: "\u0307u", A: "\u0226", E: "\u0116", I: "\u0130", O: "\u022E", U: "\u0307U" }[t37.args[0]]) != null ? r : "." + t37.args[0] : "." })); +} }); +_("=", "{:string}", { createAtom: (t37) => { + var e, r; + return new y(g(p({}, t37), { type: "mord", isFunction: false, limits: "adjacent", value: (e = t37.args) != null && e[0] ? (r = { a: "\u0101", e: "\u0113", i: "\u012B", o: "\u014D", u: "\u016B", A: "\u0100", E: "\u0112", I: "\u012A", O: "\u014C", U: "\u016A" }[t37.args[0]]) != null ? r : "=" + t37.args[0] : "=" })); +} }); +_("~", "{:string}", { createAtom: (t37) => { + var e; + return new y(g(p({ type: "mord" }, t37), { isFunction: false, limits: "adjacent", value: t37.args[0] && (e = { n: "\xF1", N: "\xD1", a: "\xE3", o: "\xF5", A: "\xC3", O: "\xD5" }[t37.args[0]]) != null ? e : "\xB4" })); +} }); +_("c", "{:string}", { createAtom: (t37) => { + var e; + return new y(g(p({}, t37), { type: "mord", isFunction: false, limits: "adjacent", value: t37.args[0] && (e = { c: "\xE7", C: "\xC7" }[t37.args[0]]) != null ? e : "" })); +} }); +_("enclose", "{notation:string}[style:string]{body:auto}", { createAtom: (t37) => { + var n, o; + let e = t37.args, r = { strokeColor: "currentColor", strokeWidth: "", strokeStyle: "solid", backgroundcolor: "transparent", padding: "auto", shadow: "none", svgStrokeStyle: void 0, borderStyle: void 0, style: (n = t37.style) != null ? n : {} }; + if (e[1]) { + let a = e[1].split(/,(?![^(]*\)(?:(?:[^(]*\)){2})*[^"]*$)/); + for (let s of a) { + let l = s.match(/\s*(\S+)\s+(\S+)\s+(.*)/); + if (l) + r.strokeWidth = l[1], r.strokeStyle = l[2], r.strokeColor = l[3]; + else { + let c = s.match(/\s*([a-z]*)\s*=\s*"(.*)"/); + c && (c[1] === "mathbackground" ? r.backgroundcolor = c[2] : c[1] === "mathcolor" ? r.strokeColor = c[2] : c[1] === "padding" ? r.padding = c[2] : c[1] === "shadow" && (r.shadow = c[2])); + } + } + r.strokeStyle === "dashed" ? r.svgStrokeStyle = "5,5" : r.strokeStyle === "dotted" && (r.svgStrokeStyle = "1,5"); + } + r.borderStyle = `${r.strokeWidth} ${r.strokeStyle} ${r.strokeColor}`; + let i = {}; + return ((o = e[0]) != null ? o : "").split(/[, ]/).filter((a) => a.length > 0).forEach((a) => { + i[a.toLowerCase()] = true; + }), new Ut(t37.command, A(e[2]), i, r); +} }); +_("cancel", "{body:auto}", { createAtom: (t37) => { + var e; + return new Ut(t37.command, A(t37.args[0]), { updiagonalstrike: true }, { strokeColor: "currentColor", strokeWidth: "", strokeStyle: "solid", borderStyle: "1px solid currentColor", backgroundcolor: "transparent", padding: "auto", shadow: "none", style: (e = t37.style) != null ? e : {} }); +} }); +_("bcancel", "{body:auto}", { createAtom: (t37) => { + var e; + return new Ut(t37.command, A(t37.args[0]), { downdiagonalstrike: true }, { strokeColor: "currentColor", strokeWidth: "", strokeStyle: "solid", borderStyle: "1px solid currentColor", backgroundcolor: "transparent", padding: "auto", shadow: "none", style: (e = t37.style) != null ? e : {} }); +} }); +_("xcancel", "{body:auto}", { createAtom: (t37) => { + var e; + return new Ut(t37.command, A(t37.args[0]), { updiagonalstrike: true, downdiagonalstrike: true }, { strokeColor: "currentColor", strokeWidth: "", strokeStyle: "solid", borderStyle: "1px solid currentColor", backgroundcolor: "transparent", padding: "auto", shadow: "none", style: (e = t37.style) != null ? e : {} }); +} }); +_(["overrightarrow", "overleftarrow", "Overrightarrow", "overleftharpoon", "overrightharpoon", "overleftrightarrow", "overlinesegment", "overgroup"], "{:auto}", { createAtom: (t37) => { + var e; + return new ye(g(p({}, t37), { body: A((e = t37.args) == null ? void 0 : e[0]), skipBoundary: false, supsubPlacement: "over-under", paddedBody: true, boxType: "rel", svgAbove: t37.command.slice(1) })); +} }); +_("overbrace", "{:auto}", { createAtom: (t37) => new ye(g(p({}, t37), { body: A(t37.args[0]), skipBoundary: false, supsubPlacement: "over-under", paddedBody: true, boxType: "ord", svgAbove: t37.command.slice(1) })) }); +_(["underrightarrow", "underleftarrow", "underleftrightarrow", "underlinesegment", "undergroup"], "{:auto}", { createAtom: (t37) => new ye(g(p({}, t37), { body: A(t37.args[0]), skipBoundary: false, supsubPlacement: "over-under", paddedBody: true, boxType: "rel", svgBelow: t37.command.slice(1) })) }); +_(["underbrace"], "{:auto}", { createAtom: (t37) => new ye(g(p({}, t37), { body: A(t37.args[0]), skipBoundary: false, supsubPlacement: "over-under", paddedBody: true, boxType: "ord", svgBelow: t37.command.slice(1) })) }); +_(["xrightarrow", "longrightarrow", "xleftarrow", "longleftarrow", "xRightarrow", "xLeftarrow", "xleftharpoonup", "xleftharpoondown", "xrightharpoonup", "xrightharpoondown", "xlongequal", "xtwoheadleftarrow", "xtwoheadrightarrow", "xleftrightarrow", "longleftrightarrow", "xLeftrightarrow", "xrightleftharpoons", "longrightleftharpoons", "xleftrightharpoons", "xhookleftarrow", "xhookrightarrow", "xmapsto", "xtofrom", "xleftrightarrows", "longleftrightarrows", "xRightleftharpoons", "longRightleftharpoons", "xLeftrightharpoons", "longLeftrightharpoons"], "[:auto]{:auto}", { createAtom: (t37) => { + var e, r, i, n, o; + return new ye(g(p({}, t37), { svgBody: t37.command.slice(1), above: ((r = A((e = t37.args) == null ? void 0 : e[1])) == null ? void 0 : r.length) === 0 ? void 0 : A((i = t37.args) == null ? void 0 : i[1]), below: (o = A((n = t37.args) == null ? void 0 : n[0])) != null ? o : null, skipBoundary: false, supsubPlacement: "over-under", paddedBody: true, paddedLabels: true, boxType: "rel" })); +}, serialize: (t37, e) => t37.command + (t37.hasEmptyBranch("below") ? "" : `[${t37.belowToLatex(e)}]`) + `{${t37.aboveToLatex(e)}}${t37.supsubToLatex(e)}` }); +_(["arccos", "arcsin", "arctan", "arctg", "arcctg", "arg", "ch", "cos", "cosh", "cot", "cotg", "coth", "ctg", "cth", "csc", "cosec", "deg", "dim", "exp", "gcd", "hom", "inf", "ker", "lb", "lg", "ln", "log", "Pr", "sec", "sh", "sin", "sinh", "sup", "tan", "tanh", "tg", "th", "arcsec", "arccsc", "arsinh", "arcosh", "artanh", "arcsech", "arccsch"], "", { isFunction: true, ifMode: "math", createAtom: (t37) => new at(t37.command.slice(1), g(p({}, t37), { limits: "adjacent", isFunction: true, variant: "main", variantStyle: "up" })) }); +_(["liminf", "limsup"], "", { ifMode: "math", createAtom: (t37) => new at({ "\\liminf": "lim inf", "\\limsup": "lim sup" }[t37.command], g(p({}, t37), { limits: "over-under", variant: "main" })) }); +_(["lim", "mod"], "", { ifMode: "math", createAtom: (t37) => new at(t37.command.slice(1), g(p({}, t37), { limits: "over-under", variant: "main" })) }); +_(["det", "max", "min"], "", { ifMode: "math", isFunction: true, createAtom: (t37) => new at(t37.command.slice(1), g(p({}, t37), { limits: "over-under", isFunction: true, variant: "main" })) }); +_(["ang"], "{:math}", { ifMode: "math", createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[0]) })), serialize: (t37, e) => `\\ang{${t37.bodyToLatex(e)}}`, render: (t37, e) => { + let r = t37.createBox(e), i = r.caret; + r.caret = void 0; + let n = new w("\xB0", { style: g(p({}, t37.style), { variant: "normal", variantStyle: "up" }) }); + return new w([r, n], { type: "inner", isSelected: t37.isSelected, caret: i }); +} }); +_("sqrt", "[index:auto]{radicand:expression}", { ifMode: "math", createAtom: (t37) => new Gi(g(p({}, t37), { body: A(t37.args[1]), index: t37.args[0] ? A(t37.args[0]) : void 0 })) }); +_(["frac", "dfrac", "tfrac", "binom", "dbinom", "tbinom"], "{:expression}{:expression}", { ifMode: "math", createAtom: (t37) => { + let e = p({}, t37), r = t37.command, i = t37.args; + switch (r) { + case "\\dfrac": + case "\\frac": + case "\\tfrac": + e.hasBarLine = true; + break; + case "\\atopfrac": + e.hasBarLine = false; + break; + case "\\dbinom": + case "\\binom": + case "\\tbinom": + e.hasBarLine = false, e.leftDelim = "(", e.rightDelim = ")"; + break; + case "\\cfrac": + e.hasBarLine = true, e.continuousFraction = true; + break; + default: + } + switch (r) { + case "\\dfrac": + case "\\dbinom": + e.mathstyleName = "displaystyle"; + break; + case "\\tfrac": + case "\\tbinom": + e.mathstyleName = "textstyle"; + break; + default: + } + return new it(i[0] ? A(i[0]) : [new ge()], i[1] ? A(i[1]) : [new ge()], e); +}, serialize: (t37, e) => { + let r = t37.aboveToLatex(e), i = t37.belowToLatex(e); + return /^[0-9]$/.test(r) && /^[0-9]$/.test(i) ? `${t37.command}${r}${i}` : I(t37.command, r, i); +} }); +_(["cfrac"], "[:string]{:expression}{:expression}", { ifMode: "math", createAtom: (t37) => { + let e = p({}, t37), r = t37.args; + return e.hasBarLine = true, e.continuousFraction = true, r[0] === "r" && (e.align = "right"), r[0] === "l" && (e.align = "left"), new it(r[1] ? A(r[1]) : [new ge()], r[2] ? A(r[2]) : [new ge()], e); +}, serialize: (t37, e) => { + let r = t37.aboveToLatex(e), i = t37.belowToLatex(e); + return I(t37.command, r, i); +} }); +_(["brace", "brack"], "", { infix: true, createAtom: (t37) => new it(A(t37.args[0]), A(t37.args[1]), g(p({}, t37), { hasBarLine: false, leftDelim: t37.command === "\\brace" ? "\\lbrace" : "\\lbrack", rightDelim: t37.command === "\\brace" ? "\\rbrace" : "\\rbrack" })), serialize: (t37, e) => K([t37.aboveToLatex(e), t37.command, t37.belowToLatex(e)]) }); +_(["over", "atop", "choose"], "", { infix: true, createAtom: (t37) => { + let e, r, i = t37.args; + return t37.command === "\\choose" && (e = "(", r = ")"), new it(A(i[0]), A(i[1]), g(p({}, t37), { hasBarLine: t37.command === "\\over", leftDelim: e, rightDelim: r })); +}, serialize: (t37, e) => K([t37.aboveToLatex(e), t37.command, t37.belowToLatex(e)]) }); +_(["overwithdelims", "atopwithdelims"], "{numer:auto}{denom:auto}{left-delim:delim}{right-delim:delim}", { infix: true, createAtom: (t37) => { + var r, i; + let e = t37.args; + return new it(A(e[0]), A(e[1]), g(p({}, t37), { leftDelim: (r = e[2]) != null ? r : ".", rightDelim: (i = e[3]) != null ? i : ".", hasBarLine: false })); +}, serialize: (t37, e) => `${t37.aboveToLatex(e)} ${t37.command}${t37.leftDelim}${t37.rightDelim}${t37.belowToLatex(e)}` }); +_("pdiff", "{numerator}{denominator}", { ifMode: "math", createAtom: (t37) => new it(A(t37.args[0]), A(t37.args[1]), g(p({}, t37), { hasBarLine: true, numerPrefix: "\u2202", denomPrefix: "\u2202" })) }); +_(["sum", "prod", "bigcup", "bigcap", "coprod", "bigvee", "bigwedge", "biguplus", "bigotimes", "bigoplus", "bigodot", "bigsqcup", "intop"], "", { ifMode: "math", createAtom: (t37) => new Ur({ coprod: "\u2210", bigvee: "\u22C1", bigwedge: "\u22C0", biguplus: "\u2A04", bigcap: "\u22C2", bigcup: "\u22C3", intop: "\u222B", prod: "\u220F", sum: "\u2211", bigotimes: "\u2A02", bigoplus: "\u2A01", bigodot: "\u2A00", bigsqcup: "\u2A06", smallint: "\u222B" }[t37.command.slice(1)], g(p({}, t37), { limits: "auto", variant: "main" })) }); +_("smallint", "", { ifMode: "math", createAtom: (t37) => new at("\u222B", g(p({}, t37), { limits: "adjacent", variant: "main" })) }); +var _p = { int: "\u222B", iint: "\u222C", iiint: "\u222D", oint: "\u222E", oiint: "\u222F", oiiint: "\u2230", intclockwise: "\u2231", varointclockwise: "\u2232", ointctrclockwise: "\u2233", intctrclockwise: "\u2A11", sqcup: "\u2294", sqcap: "\u2293", uplus: "\u228E", wr: "\u2240", amalg: "\u2A3F", Cap: "\u22D2", Cup: "\u22D3", doublecap: "\u22D2", doublecup: "\u22D3" }; +_(Object.keys(_p), "", { ifMode: "math", createAtom: (t37) => { + let e = t37.command, r = _p[e.slice(1)]; + return new Ur(r, g(p({}, t37), { limits: "adjacent", variant: { "\u22D2": "ams", "\u22D3": "ams" }[r] })); +} }); +_(["Re", "Im"], "", { ifMode: "math", createAtom: (t37) => new at({ "\\Re": "\u211C", "\\Im": "\u2111" }[t37.command], g(p({}, t37), { limits: "adjacent", isFunction: true, variant: "fraktur" })) }); +_("middle", "{:delim}", { ifMode: "math", createAtom: (t37) => { + var e; + return new Ui(g(p({}, t37), { delim: (e = t37.args[0]) != null ? e : "|", size: 1 })); +} }); +_("the", "{:value}", { createAtom: (t37) => new y(g(p({}, t37), { captureSelection: true, verbatimLatex: null })), render: (t37, e) => { + var o; + let r = new T({ parent: e }, t37.style), i = ""; + t37.isSelected && (i += " ML__selected"); + let n = r.evaluate(t37.args[0]); + return new w(((o = ue(n)) != null ? o : "").split("").map((a) => new w(a, { type: "ord", classes: i, mode: t37.mode, isSelected: t37.isSelected, style: p({ variant: "main" }, t37.style) })), { type: "lift", style: t37.style, caret: t37.caret, isSelected: t37.isSelected, classes: i }).wrap(r); +}, serialize: (t37) => { + var e; + return `\\the${(e = ue(t37.args[0])) != null ? e : "\\relax"}`; +} }); +_("mathtip", "{:auto}{:math}", { createAtom: (t37) => new Jr(g(p({}, t37), { body: A(t37.args[0]), tooltip: A(t37.args[1]), content: "math" })), serialize: (t37, e) => e.skipStyles ? t37.bodyToLatex(e) : `\\texttip{${t37.bodyToLatex(e)}}{${y.serialize([t37.tooltip], g(p({}, e), { defaultMode: "math" }))}}` }); +_("texttip", "{:auto}{:text}", { createAtom: (t37) => new Jr(g(p({}, t37), { body: A(t37.args[0]), tooltip: A(t37.args[1]), content: "text" })), serialize: (t37, e) => e.skipStyles ? t37.bodyToLatex(e) : `\\texttip{${t37.bodyToLatex(e)}}{${y.serialize([t37.tooltip], g(p({}, e), { defaultMode: "text" }))}}` }); +_("error", "{:math}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[0]) })), serialize: (t37, e) => `\\error{${t37.bodyToLatex(e)}}`, render: (t37, e) => t37.createBox(e, { classes: "ML__error" }) }); +_("ensuremath", "{:math}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[0]) })), serialize: (t37, e) => `${t37.command}{${t37.bodyToLatex(g(p({}, e), { defaultMode: "math" }))}}` }); +_("color", "{:value}", { applyStyle: (t37, e, r, i) => { + var n, o; + return g(p({}, t37), { verbatimColor: (n = ue(r[0])) != null ? n : void 0, color: i.toColor((o = r[0]) != null ? o : { string: "red" }) }); +} }); +_("textcolor", "{:value}{content:auto*}", { applyStyle: (t37, e, r, i) => { + var n, o; + return g(p({}, t37), { verbatimColor: (n = ue(r[0])) != null ? n : void 0, color: i.toColor((o = r[0]) != null ? o : { string: "red" }) }); +} }); +_("boxed", "{content:math}", { createAtom: (t37) => new qe(g(p({}, t37), { body: A(t37.args[0]), framecolor: { string: "black" } })) }); +_("colorbox", "{:value}{:text*}", { applyStyle: (t37, e, r, i) => { + var n, o; + return g(p({}, t37), { verbatimBackgroundColor: (n = ue(r[0])) != null ? n : void 0, backgroundColor: i.toBackgroundColor((o = r[0]) != null ? o : { string: "yellow" }) }); +} }); +_("fcolorbox", "{frame-color:value}{background-color:value}{content:text}", { applyMode: "text", createAtom: (t37) => { + var e, r; + return new qe(g(p({}, t37), { body: A(t37.args[2]), framecolor: (e = t37.args[0]) != null ? e : { string: "blue" }, backgroundcolor: (r = t37.args[1]) != null ? r : { string: "yellow" } })); +}, serialize: (t37, e) => { + var r, i; + return e.skipStyles ? t37.bodyToLatex(g(p({}, e), { defaultMode: "text" })) : I(t37.command, (r = ue(t37.framecolor)) != null ? r : "", (i = ue(t37.backgroundcolor)) != null ? i : "", t37.bodyToLatex(g(p({}, e), { defaultMode: "text" }))); +} }); +_("bbox", "[:bbox]{body:auto}", { createAtom: (t37) => { + var i; + let e = t37.args[0], r = A(t37.args[1]); + return e ? new qe(g(p({}, t37), { body: r, padding: e.padding, border: e.border, backgroundcolor: (i = e.backgroundcolor) != null ? i : void 0 })) : new qe(g(p({}, t37), { body: r })); +}, serialize: (t37, e) => { + var i, n; + if (e.skipStyles) + return t37.bodyToLatex(e); + let r = t37.command; + if (Number.isFinite(t37.padding) || t37.border !== void 0 || t37.backgroundcolor !== void 0) { + let o = []; + t37.padding && o.push((i = ue(t37.padding)) != null ? i : ""), t37.border && o.push(`border: ${t37.border}`), t37.backgroundcolor && o.push((n = ue(t37.backgroundcolor)) != null ? n : ""), r += `[${o.join(",")}]`; + } + return I(r, t37.bodyToLatex(e)); +} }); +_(["displaystyle", "textstyle", "scriptstyle", "scriptscriptstyle"], "{:rest}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[0]) })), render: (t37, e) => { + let r = new T({ parent: e, mathstyle: t37.command.slice(1) }, t37.style), i = y.createBox(r, t37.body, { type: "lift" }); + return t37.caret && (i.caret = t37.caret), t37.bind(e, i); +}, serialize: (t37, e) => e.skipStyles ? t37.bodyToLatex(e) : `{${K([t37.command, t37.bodyToLatex(e)])}}` }); +_(["tiny", "scriptsize", "footnotesize", "small", "normalsize", "large", "Large", "LARGE", "huge", "Huge"], "", { applyStyle: (t37, e) => g(p({}, t37), { fontSize: { "\\tiny": 1, "\\scriptsize": 2, "\\footnotesize": 3, "\\small": 4, "\\normalsize": 5, "\\large": 6, "\\Large": 7, "\\LARGE": 8, "\\huge": 9, "\\Huge": 10 }[e] }) }); +_("fontseries", "{:string}", { ifMode: "text", applyStyle: (t37, e, r) => { + var i; + return g(p({}, t37), { fontSeries: (i = r[0]) != null ? i : "auto" }); +} }); +_("fontshape", "{:string}", { ifMode: "text", applyStyle: (t37, e, r) => { + var i; + return g(p({}, t37), { fontShape: (i = r[0]) != null ? i : "auto" }); +} }); +_("fontfamily", "{:string}", { ifMode: "text", applyStyle: (t37, e, r) => { + var i; + return g(p({}, t37), { fontFamily: (i = r[0]) != null ? i : "roman" }); +} }); +_("selectfont", "", { ifMode: "text", applyStyle: (t37) => t37 }); +_("bf", "{:rest*}", { applyStyle: (t37) => g(p({}, t37), { fontSeries: "b", fontShape: "n", fontFamily: "roman" }) }); +_(["boldsymbol", "bm", "bold"], "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variantStyle: "bold" }) }); +_("bfseries", "{:rest*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontSeries: "b" }) }); +_("mdseries", "{:rest*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontSeries: "m" }) }); +_("upshape", "{:rest*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "n" }) }); +_("slshape", "{:rest*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "sl" }) }); +_("scshape", "{:rest*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "sc" }) }); +_("textbf", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontSeries: "b" }) }); +_("textmd", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontSeries: "m" }) }); +_("textup", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "n" }) }); +_("textnormal", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "n", fontSeries: "m" }) }); +_("textsl", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "sl" }) }); +_("textit", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "it" }) }); +_("textsc", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontShape: "sc" }) }); +_("textrm", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontFamily: "roman" }) }); +_("textsf", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontFamily: "sans-serif" }) }); +_("texttt", "{:text*}", { applyMode: "text", applyStyle: (t37) => g(p({}, t37), { fontFamily: "monospace" }) }); +_("mathbf", "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variant: "normal", variantStyle: "bold" }) }); +_("mathit", "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variant: "main", variantStyle: "italic" }) }); +_("mathnormal", "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variant: "normal", variantStyle: "italic" }) }); +_("mathbfit", "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variant: "main", variantStyle: "bolditalic" }) }); +_("mathrm", "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variant: "normal", variantStyle: "up" }) }); +_("mathsf", "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variant: "sans-serif", variantStyle: "up" }) }); +_("mathtt", "{:math*}", { applyMode: "math", applyStyle: (t37) => g(p({}, t37), { variant: "monospace", variantStyle: "up" }) }); +_("it", "{:rest*}", { applyStyle: (t37) => g(p({}, t37), { fontSeries: "m", fontShape: "it", fontFamily: "roman", variantStyle: "italic" }) }); +_("rmfamily", "{:rest*}", { applyStyle: (t37) => g(p({}, t37), { fontFamily: "roman" }) }); +_("sffamily", "{:rest*}", { applyStyle: (t37) => g(p({}, t37), { fontFamily: "sans-serif" }) }); +_("ttfamily", "{:rest*}", { applyStyle: (t37) => g(p({}, t37), { fontFamily: "monospace" }) }); +_(["Bbb", "mathbb"], "{:math*}", { applyStyle: (t37) => ({ variant: "double-struck", variantStyle: qn(t37.variantStyle) }) }); +_(["frak", "mathfrak"], "{:math*}", { applyStyle: (t37) => ({ variant: "fraktur", variantStyle: qn(t37.variantStyle) }) }); +_("mathcal", "{:math*}", { applyStyle: (t37) => ({ variant: "calligraphic", variantStyle: qn(t37.variantStyle) }) }); +_("mathscr", "{:math*}", { applyStyle: (t37) => ({ variant: "script", variantStyle: qn(t37.variantStyle) }) }); +_("mbox", "{:text}", { ifMode: "math", createAtom: (t37) => new y(g(p({}, t37), { type: "mord", body: A(t37.args[0]), mode: "math" })), serialize: (t37, e) => I("\\mbox", t37.bodyToLatex(g(p({}, e), { defaultMode: "text" }))) }); +_("text", "{:text}", { ifMode: "math", applyMode: "text" }); +_(["class", "htmlClass"], "{name:string}{content:auto}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[1]) })), serialize: (t37, e) => !t37.args[0] || e.skipStyles ? t37.bodyToLatex(e) : `${t37.command}{${t37.args[0]}}{${t37.bodyToLatex(e)}}`, render: (t37, e) => { + var r; + return t37.createBox(e, { classes: (r = t37.args[0]) != null ? r : "" }); +} }); +_(["cssId", "htmlId"], "{id:string}{content:auto}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[1]) })), serialize: (t37, e) => { + var r; + return !((r = t37.args) != null && r[0]) || e.skipStyles ? t37.bodyToLatex(e) : `${t37.command}{${t37.args[0]}}{${t37.bodyToLatex(e)}}`; +}, render: (t37, e) => { + var i; + let r = t37.createBox(e); + return r.cssId = (i = t37.args[0]) != null ? i : "", r; +} }); +_("htmlData", "{data:string}{content:auto}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[1]) })), serialize: (t37, e) => { + var r; + return !((r = t37.args) != null && r[0]) || e.skipStyles ? t37.bodyToLatex(e) : `\\htmlData{${t37.args[0]}}{${t37.bodyToLatex(e)}}`; +}, render: (t37, e) => { + var i; + let r = t37.createBox(e); + return r.htmlData = (i = t37.args[0]) != null ? i : "", r; +} }); +_(["style", "htmlStyle"], "{data:string}{content:auto}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[1]) })), serialize: (t37, e) => { + var r; + return !((r = t37.args) != null && r[0]) || e.skipStyles ? t37.bodyToLatex(e) : `${t37.command}{${t37.args[0]}}{${t37.bodyToLatex(e)}}`; +}, render: (t37, e) => { + var i; + let r = t37.createBox(e); + return r.htmlStyle = (i = t37.args[0]) != null ? i : "", r; +} }); +_("href", "{url:string}{content:auto}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[1]) })), render: (t37, e) => { + var n; + let r = t37.createBox(e), i = (n = t37.args[0]) != null ? n : ""; + return i && (r.htmlData = `href=${i}`), r; +} }); +_("em", "{:rest}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[0]) })), serialize: (t37, e) => e.skipStyles ? t37.bodyToLatex(e) : `{\\em ${t37.bodyToLatex(e)}}`, render: (t37, e) => t37.createBox(e, { classes: "ML__emph", boxType: "lift" }) }); +_("emph", "{:auto}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[1]) })), serialize: (t37, e) => e.skipStyles ? t37.bodyToLatex(e) : `\\emph{${t37.bodyToLatex(e)}}`, render: (t37, e) => t37.createBox(e, { classes: "ML__emph", boxType: "lift" }) }); +var Mp = { "\\bigl": { mclass: "mopen", size: 1 }, "\\Bigl": { mclass: "mopen", size: 2 }, "\\biggl": { mclass: "mopen", size: 3 }, "\\Biggl": { mclass: "mopen", size: 4 }, "\\bigr": { mclass: "mclose", size: 1 }, "\\Bigr": { mclass: "mclose", size: 2 }, "\\biggr": { mclass: "mclose", size: 3 }, "\\Biggr": { mclass: "mclose", size: 4 }, "\\bigm": { mclass: "mrel", size: 1 }, "\\Bigm": { mclass: "mrel", size: 2 }, "\\biggm": { mclass: "mrel", size: 3 }, "\\Biggm": { mclass: "mrel", size: 4 }, "\\big": { mclass: "mord", size: 1 }, "\\Big": { mclass: "mord", size: 2 }, "\\bigg": { mclass: "mord", size: 3 }, "\\Bigg": { mclass: "mord", size: 4 } }; +_(["bigl", "Bigl", "biggl", "Biggl", "bigr", "Bigr", "biggr", "Biggr", "bigm", "Bigm", "biggm", "Biggm", "big", "Big", "bigg", "Bigg"], "{:delim}", { createAtom: (t37) => { + var e; + return new Ji(g(p({}, t37), { delim: (e = t37.args[0]) != null ? e : ".", size: Mp[t37.command].size, delimType: Mp[t37.command].mclass })); +} }); +_(["hspace", "hspace*"], "{width:value}", { createAtom: (t37) => { + var e; + return new Et(g(p({}, t37), { width: (e = t37.args[0]) != null ? e : { dimension: 0 } })); +} }); +_(["mkern", "kern", "mskip", "hskip", "mspace"], "{width:value}", { createAtom: (t37) => { + var e; + return new Et(g(p({}, t37), { width: (e = t37.args[0]) != null ? e : { dimension: 0 } })); +} }); +_("mathchoice", "{:math}{:math}{:math}{:math}", { createAtom: (t37) => new y(t37), render: (t37, e) => { + let r = 0, i = e.mathstyle.id; + (i === Pn || i === pr) && (r = 1), (i === Fr || i === Ke) && (r = 2), (i === hr || i === ve) && (r = 3); + let n = A(t37.args[r]); + return y.createBox(e, n); +}, serialize: (t37, e) => `\\mathchoice{${y.serialize(t37.args[0], e)}}{${y.serialize(t37.args[1], e)}}{${y.serialize(t37.args[2], e)}}{${y.serialize(t37.args[3], e)}}` }); +_("mathop", "{:auto}", { createAtom: (t37) => new y(g(p({}, t37), { type: "mop", body: A(t37.args[0]), limits: "over-under", isFunction: true, captureSelection: true })), render: (t37, e) => { + var i; + let r = y.createBox(e, t37.body); + if (t37.superscript || t37.subscript) { + let n = (i = t37.subsupPlacement) != null ? i : "auto"; + r = n === "over-under" || n === "auto" && e.isDisplayStyle ? t37.attachLimits(e, { base: r }) : t37.attachSupsub(e, { base: r }); + } + return new w(t37.bind(e, r), { type: "op", isSelected: t37.isSelected, classes: "ML__op-group" }); +}, serialize: (t37, e) => { + let r = [I(t37.command, t37.bodyToLatex(e))]; + return t37.explicitSubsupPlacement && (t37.subsupPlacement === "over-under" && r.push("\\limits"), t37.subsupPlacement === "adjacent" && r.push("\\nolimits"), t37.subsupPlacement === "auto" && r.push("\\displaylimits")), r.push(t37.supsubToLatex(e)), K(r); +} }); +_(["mathbin", "mathrel", "mathopen", "mathclose", "mathpunct", "mathord", "mathinner"], "{:auto}", { createAtom: (t37) => new y(g(p({}, t37), { type: { "\\mathbin": "mbin", "\\mathrel": "mrel", "\\mathopen": "mopen", "\\mathclose": "mclose", "\\mathpunct": "mpunct", "\\mathord": "mord", "\\mathinner": "minner" }[t37.command], body: A(t37.args[0]) })) }); +_(["operatorname", "operatorname*"], "{operator:math}", { createAtom: (t37) => { + let e = A(t37.args[0]).map((r) => { + var i; + return r.type !== "first" && (r.type = "mord", r.value = (i = { "\u2217": "*", "\u2212": "-" }[r.value]) != null ? i : r.value, r.isFunction = false, !r.style.variant && !r.style.variantStyle && (r.style.variant = "main", r.style.variantStyle = "up")), r; + }); + return new y(g(p({}, t37), { type: "mop", body: e, isFunction: true, limits: t37.command === "\\operatorname" ? "adjacent" : "over-under" })); +}, render: (t37, e) => { + var i; + let r = y.createBox(e, t37.body); + if (t37.superscript || t37.subscript) { + let n = (i = t37.subsupPlacement) != null ? i : "auto"; + r = n === "over-under" || n === "auto" && e.isDisplayStyle ? t37.attachLimits(e, { base: r }) : t37.attachSupsub(e, { base: r }); + } + return t37.caret && (r.caret = t37.caret), new w(t37.bind(e, r), { type: "op", isSelected: t37.isSelected, classes: "ML__op-group" }); +}, serialize: (t37, e) => { + let r = [I(t37.command, t37.bodyToLatex(e))]; + return t37.explicitSubsupPlacement && (t37.subsupPlacement === "over-under" && r.push("\\limits"), t37.subsupPlacement === "adjacent" && r.push("\\nolimits"), t37.subsupPlacement === "auto" && r.push("\\displaylimits")), r.push(t37.supsubToLatex(e)), K(r); +} }); +_(["char", "unicode"], "{charcode:value}", { createAtom: (t37) => new y(g(p({}, t37), { type: t37.mode === "text" ? "text" : "mord" })), serialize: (t37) => { + var e; + return `${t37.command}${ue((e = t37.args[0]) != null ? e : { number: 10067, base: "hexadecimal" })}`; +}, render: (t37, e) => { + let r = e.evaluate(t37.args[0]); + return (!r || !("number" in r)) && (r = { number: 10067, base: "hexadecimal" }), t37.value = String.fromCodePoint(r.number), t37.createBox(e); +} }); +_("rule", "[raise:value]{width:value}{thickness:value}", { createAtom: (t37) => new y(t37), render: (t37, e) => { + var s, l, c; + let r = new T({ parent: e, mathstyle: "textstyle" }, t37.style), i = r.toEm((s = t37.args[0]) != null ? s : { dimension: 0 }), n = r.toEm((l = t37.args[1]) != null ? l : { dimension: 10 }), o = r.toEm((c = t37.args[2]) != null ? c : { dimension: 10 }), a = new w(null, { classes: "ML__rule", type: "ord" }); + return a.width = n, a.height = o + i, a.depth = -i, a.setStyle("border-right-width", n, "em"), a.setStyle("border-top-width", o, "em"), a.setStyle("border-color", t37.style.color), a.setStyle("vertical-align", i, "em"), t37.isSelected && a.setStyle("opacity", "50%"), t37.bind(r, a), t37.caret && (a.caret = t37.caret), a.wrap(e); +}, serialize: (t37) => `\\rule${t37.args[0] ? `[${ue(t37.args[0])}]` : ""}{${ue(t37.args[1])}}{${ue(t37.args[2])}}` }); +_(["overline", "underline"], "{:auto}", { createAtom: (t37) => new y(g(p({}, t37), { body: A(t37.args[0]) })), render: (t37, e) => { + let r = t37.command.substring(1), i = new T({ parent: e, mathstyle: "cramp" }, t37.style), n = y.createBox(i, t37.body); + if (!n) + return null; + let o = i.metrics.defaultRuleThickness / i.scalingFactor, a = new w(null, { classes: r + "-line" }); + a.height = o, a.maxFontSize = o * 1.125 * i.scalingFactor; + let s; + return r === "overline" ? s = new U({ shift: 0, children: [{ box: n }, 3 * o, { box: a }, o] }) : s = new U({ top: n.height, children: [o, { box: a }, 3 * o, { box: n }] }), t37.caret && (s.caret = t37.caret), new w(s, { classes: r, type: "ignore" }); +} }); +_("overset", "{:auto}{base:auto}", { createAtom: (t37) => { + let e = A(t37.args[1]); + return new ye(g(p({}, t37), { above: A(t37.args[0]), body: e, skipBoundary: false, boxType: Nr(e) })); +}, serialize: (t37, e) => I(t37.command, t37.aboveToLatex(e), t37.bodyToLatex(e)) }); +_("underset", "{:auto}{base:auto}", { createAtom: (t37) => { + let e = A(t37.args[1]); + return new ye(g(p({}, t37), { below: A(t37.args[0]), body: e, skipBoundary: false, boxType: Nr(e) })); +}, serialize: (t37, e) => I(t37.command, t37.belowToLatex(e), t37.bodyToLatex(e)) }); +_("overunderset", "{above:auto}{below:auto}{base:auto}", { createAtom: (t37) => { + let e = A(t37.args[2]); + return new ye(g(p({}, t37), { above: A(t37.args[0]), below: A(t37.args[1]), body: e, skipBoundary: false, boxType: Nr(e) })); +}, serialize: (t37, e) => I(t37.command, t37.belowToLatex(e), t37.bodyToLatex(e)) }); +_(["stackrel", "stackbin"], "[below:auto]{above:auto}{base:auto}", { createAtom: (t37) => new ye(g(p({}, t37), { body: A(t37.args[2]), above: A(t37.args[1]), below: A(t37.args[0]), skipBoundary: false, boxType: t37.command === "\\stackrel" ? "rel" : "bin" })), serialize: (t37, e) => I(t37.command, t37.aboveToLatex(e), t37.bodyToLatex(e)) }); +_("smash", "[:string]{:auto}", { createAtom: (t37) => { + var e, r, i, n; + return new Jt(g(p({}, t37), { body: A(t37.args[1]), smashHeight: (r = (e = t37.args[0]) == null ? void 0 : e.includes("t")) != null ? r : true, smashDepth: (n = (i = t37.args[0]) == null ? void 0 : i.includes("b")) != null ? n : true })); +} }); +_(["vphantom"], "{:auto}", { createAtom: (t37) => new Jt(g(p({}, t37), { body: A(t37.args[0]), isInvisible: true, smashWidth: true })) }); +_(["hphantom"], "{:auto}", { createAtom: (t37) => new Jt(g(p({}, t37), { body: A(t37.args[0]), isInvisible: true, smashHeight: true, smashDepth: true })) }); +_(["phantom"], "{:auto}", { createAtom: (t37) => new Jt(g(p({}, t37), { body: A(t37.args[0]), isInvisible: true })) }); +_("not", "{:math}", { createAtom: (t37) => { + let e = A(t37.args[0]); + return e.length === 0 ? new y(g(p({}, t37), { type: "mrel", value: "\uE020" })) : new y(g(p({}, t37), { body: [new nt(g(p({}, t37), { body: "\uE020", align: "right" })), ...e], captureSelection: true })); +}, serialize: (t37, e) => { + let r = t37.args[0], i = r && typeof r == "object" && "group" in r; + return t37.value !== "\uE020" ? i ? `\\not{${y.serialize(r.group, e)}}` : `\\not${y.serialize(r, e)}` : i ? "\\not{}" : "\\not"; +}, render: (t37, e) => { + if (t37.value) + return t37.createBox(e); + let i = t37.args[0] && typeof t37.args[0] == "object" && "group" in t37.args[0] ? "ord" : Nr(A(t37.args[0])), n = y.createBox(e, t37.body, { type: i }); + return t37.caret && (n.caret = t37.caret), t37.bind(e, n); +} }); +_(["ne", "neq"], "", { createAtom: (t37) => new y(g(p({}, t37), { type: "mrel", body: [new nt(g(p({}, t37), { body: "\uE020", align: "right", boxType: "rel" })), new y(g(p({}, t37), { value: "=" }))], captureSelection: true })), serialize: (t37) => t37.command }); +_("rlap", "{:auto}", { createAtom: (t37) => new nt(g(p({}, t37), { body: A(t37.args[0]), align: "right" })) }); +_("llap", "{:auto}", { createAtom: (t37) => new nt(g(p({}, t37), { body: A(t37.args[0]), align: "left" })) }); +_("mathrlap", "{:math}", { createAtom: (t37) => new nt(g(p({}, t37), { body: A(t37.args[0]), align: "right" })) }); +_("mathllap", "{:math}", { createAtom: (t37) => new nt(g(p({}, t37), { body: A(t37.args[0]), align: "left" })) }); +_("raisebox", "{:value}{:text}", { createAtom: (t37) => { + var e; + return new qe(g(p({}, t37), { body: A(t37.args[1]), padding: { dimension: 0 }, offset: (e = t37.args[0]) != null ? e : { dimension: 0 } })); +}, serialize: (t37, e) => { + var r; + return I("\\raisebox", (r = ue(t37.offset)) != null ? r : "0pt", t37.bodyToLatex(e)); +} }); +_("raise", "{:value}{:auto}", { createAtom: (t37) => { + var e; + return new qe(g(p({}, t37), { body: A(t37.args[1]), padding: { dimension: 0 }, offset: (e = t37.args[0]) != null ? e : { dimension: 0 } })); +}, serialize: (t37, e) => { + var r; + return I("\\raise", (r = ue(t37.offset)) != null ? r : "0pt", t37.bodyToLatex(e)); +} }); +_("lower", "{:value}{:auto}", { createAtom: (t37) => { + var e; + return new qe(g(p({}, t37), { body: A(t37.args[1]), padding: { dimension: 0 }, offset: (e = et(t37.args[0], -1)) != null ? e : { dimension: 0 } })); +}, serialize: (t37, e) => { + var r, i; + return I("\\lower", (i = ue(et((r = t37.offset) != null ? r : { dimension: 0 }, -1))) != null ? i : "0pt", t37.bodyToLatex(e)); +} }); +me("0123456789/@.?!"); +Ls(65, 90); +Ls(97, 122); +me([["\\forall", 8704], ["\\exists", 8707], ["\\nexists", 8708, "mord", "ams"], ["\\mid", 8739, "mrel"], ["\\top", 8868], ["\\bot", 8869]]); +me([["\\#", 35], ["\\&", 38], ["\\parallelogram", 9649], ["\\spadesuit", 9824], ["\\heartsuit", 9825], ["\\diamondsuit", 9826], ["\\clubsuit", 9827], ["\\flat", 9837], ["\\natural", 9838], ["\\sharp", 9839]]); +me([["\\backslash", 92], ["\\nabla", 8711], ["\\partial", 8706], ["\\ell", 8467], ["\\hbar", 8463], ["\\Q", 81, "mord", "double-struck"], ["\\C", 67, "mord", "double-struck"], ["\\P", 80, "mord", "double-struck"], ["\\pounds", 163], ["\\euro", 8364]]); +me([["\\rightarrow", 8594], ["\\to", 8594], ["\\leftarrow", 8592], ["\\gets", 8592], ["\\Rightarrow", 8658], ["\\Leftarrow", 8656], ["\\longrightarrow", 10230], ["\\longleftarrow", 10229], ["\\Longrightarrow", 10233], ["\\implies", 10233], ["\\Longleftarrow", 10232], ["\\impliedby", 10232], ["\\longleftrightarrow", 10231], ["\\biconditional", 10231], ["\\Longleftrightarrow", 10234], ["\\mapsto", 8614], ["\\longmapsto", 10236], ["\\uparrow", 8593], ["\\downarrow", 8595], ["\\Uparrow", 8657], ["\\Downarrow", 8659], ["\\updownarrow", 8597], ["\\Updownarrow", 8661], ["\\hookrightarrow", 8618], ["\\hookleftarrow", 8617], ["\\rightharpoonup", 8640], ["\\leftharpoonup", 8636], ["\\rightharpoondown", 8641], ["\\leftharpoondown", 8637], ["\\searrow", 8600], ["\\nearrow", 8599], ["\\swarrow", 8601], ["\\nwarrow", 8598], ["\\originalof", 8886], ["\\laplace", 8886], ["\\imageof", 8887], ["\\Laplace", 8887]], "mrel"); +me([["\\mapsfrom", 8612, "mrel"], ["\\Mapsfrom", 10502, "mrel"], ["\\MapsTo", 10503, "mrel"], ["\\Yup", 8516, "mord"], ["\\lightning", 8623, "mrel"], ["\\leftarrowtriangle", 8701, "mrel"], ["\\rightarrowtriangle", 8702, "mrel"], ["\\leftrightarrowtriangle", 8703, "mrel"], ["\\boxdot", 8865, "mbin"], ["\\bigtriangleup", 9651, "mbin"], ["\\bigtriangledown", 9661, "mbin"], ["\\boxbar", 9707, "mbin"], ["\\Lbag", 10181, "mopen"], ["\\Rbag", 10182, "mclose"], ["\\llbracket", 10214, "mopen"], ["\\rrbracket", 10215, "mclose"], ["\\longmapsfrom", 10235, "mrel"], ["\\Longmapsfrom", 10237, "mrel"], ["\\Longmapsto", 10238, "mrel"], ["\\boxslash", 10692, "mbin"], ["\\boxbslash", 10693, "mbin"], ["\\boxast", 10694, "mbin"], ["\\boxcircle", 10695, "mbin"], ["\\boxbox", 10696, "mbin"], ["\\fatsemi", 10783, "mop"], ["\\leftslice", 10918, "mrel"], ["\\rightslice", 10919, "mrel"], ["\\interleave", 10996, "mbin"], ["\\biginterleave", 11004, "mop"], ["\\sslash", 11005, "mbin"], ["\\talloblong", 11006, "mbin"]]); +me([["\\lbrace", 123, "mopen"], ["\\rbrace", 125, "mclose"], ["\\lparen", 40, "mopen"], ["\\rparen", 41, "mclose"], ["\\langle", 10216, "mopen"], ["\\rangle", 10217, "mclose"], ["\\lfloor", 8970, "mopen"], ["\\rfloor", 8971, "mclose"], ["\\lceil", 8968, "mopen"], ["\\rceil", 8969, "mclose"], ["\\vert", 8739], ["\\lvert", 8739, "mopen"], ["\\rvert", 8739, "mclose"], ["\\|", 8741], ["\\Vert", 8741], ["\\mVert", 8741], ["\\lVert", 8741, "mopen"], ["\\rVert", 8741, "mclose"], ["\\lbrack", 91, "mopen"], ["\\rbrack", 93, "mclose"], ["\\{", 123, "mopen"], ["\\}", 125, "mclose"], ["(", 40, "mopen"], [")", 41, "mclose"], ["[", 91, "mopen"], ["]", 93, "mclose"], ["\\ulcorner", 9484, "mopen", "ams"], ["\\urcorner", 9488, "mclose", "ams"], ["\\llcorner", 9492, "mopen", "ams"], ["\\lrcorner", 9496, "mclose", "ams"], ["\\lgroup", 10222, "mopen"], ["\\rgroup", 10223, "mclose"], ["\\lmoustache", 9136, "mopen"], ["\\rmoustache", 9137, "mclose"]]); +me([["\\dashrightarrow", 8674], ["\\dashleftarrow", 8672], ["\\Rrightarrow", 8667], ["\\Lleftarrow", 8666], ["\\leftrightarrows", 8646], ["\\rightleftarrows", 8644], ["\\curvearrowright", 8631], ["\\curvearrowleft", 8630], ["\\rightrightarrows", 8649], ["\\leftleftarrows", 8647], ["\\upuparrows", 8648], ["\\downdownarrows", 8650], ["\\vartriangle", 9651], ["\\triangleq", 8796], ["\\vartriangleleft", 8882], ["\\trianglelefteq", 8884], ["\\ntriangleleft", 8938], ["\\ntrianglelefteq", 8940], ["\\vartriangleright", 8883], ["\\trianglerighteq", 8885], ["\\ntriangleright", 8939], ["\\ntrianglerighteq", 8941], ["\\blacktriangleleft", 9664], ["\\blacktriangleright", 9654], ["\\leftarrowtail", 8610], ["\\rightarrowtail", 8611], ["\\looparrowright", 8620], ["\\looparrowleft", 8619], ["\\twoheadleftarrow", 8606], ["\\twoheadrightarrow", 8608], ["\\twoheadrightarrowtail", 10518], ["\\rightleftharpoons", 8652], ["\\leftrightharpoons", 8651], ["\\Rsh", 8625], ["\\Lsh", 8624], ["\\circlearrowright", 8635], ["\\circlearrowleft", 8634], ["\\restriction", 8638], ["\\upharpoonright", 8638], ["\\upharpoonleft", 8639], ["\\downharpoonright", 8642], ["\\downharpoonleft", 8643], ["\\rightsquigarrow", 8669], ["\\leadsto", 8669], ["\\leftrightsquigarrow", 8621], ["\\multimap", 8888], ["\\nleftarrow", 8602], ["\\nrightarrow", 8603], ["\\nRightarrow", 8655], ["\\nLeftarrow", 8653], ["\\nleftrightarrow", 8622], ["\\nLeftrightarrow", 8654], ["\\nvrightarrow", 8696], ["\\nvtwoheadrightarrow", 10496], ["\\nvrightarrowtail", 10516], ["\\nvtwoheadrightarrowtail", 10519], ["\\shortparallel", 8741], ["\\nless", 8814], ["\\nleqslant", 57360], ["\\lneq", 10887], ["\\lneqq", 8808], ["\\nleqq", 57361], ["\\lvertneqq", 57356], ["\\lnsim", 8934], ["\\lnapprox", 10889], ["\\nprec", 8832], ["\\npreceq", 8928], ["\\precnsim", 8936], ["\\precnapprox", 10937], ["\\nsim", 8769], ["\\nshortmid", 57350], ["\\nmid", 8740], ["\\nvdash", 8876], ["\\nvDash", 8877], ["\\ngtr", 8815], ["\\ngeqslant", 57359], ["\\ngeqq", 57358], ["\\gneq", 10888], ["\\gneqq", 8809], ["\\gvertneqq", 57357], ["\\gnsim", 8935], ["\\gnapprox", 10890], ["\\nsucc", 8833], ["\\nsucceq", 8929], ["\\succnsim", 8937], ["\\succnapprox", 10938], ["\\ncong", 8774], ["\\nshortparallel", 57351], ["\\nparallel", 8742], ["\\nVDash", 8879], ["\\nsupseteqq", 57368], ["\\supsetneq", 8843], ["\\varsupsetneq", 57371], ["\\supsetneqq", 10956], ["\\varsupsetneqq", 57369], ["\\nVdash", 8878], ["\\precneqq", 10933], ["\\succneqq", 10934], ["\\nsubseteqq", 57366], ["\\leqslant", 10877], ["\\geqslant", 10878], ["\\gtrsim", 8819], ["\\approxeq", 8778], ["\\thickapprox", 8776], ["\\lessapprox", 10885], ["\\gtrapprox", 10886], ["\\precapprox", 10935], ["\\succapprox", 10936], ["\\thicksim", 8764], ["\\succsim", 8831], ["\\precsim", 8830], ["\\backsim", 8765], ["\\eqsim", 8770], ["\\backsimeq", 8909], ["\\lesssim", 8818], ["\\nleq", 8816], ["\\ngeq", 8817], ["\\smallsmile", 8995], ["\\smallfrown", 8994], ["\\leqq", 8806], ["\\eqslantless", 10901], ["\\lll", 8920], ["\\lessgtr", 8822], ["\\lesseqgtr", 8922], ["\\lesseqqgtr", 10891], ["\\risingdotseq", 8787], ["\\fallingdotseq", 8786], ["\\subseteqq", 10949], ["\\Subset", 8912], ["\\sqsubset", 8847], ["\\preccurlyeq", 8828], ["\\curlyeqprec", 8926], ["\\vDash", 8872], ["\\Vvdash", 8874], ["\\bumpeq", 8783], ["\\Bumpeq", 8782], ["\\geqq", 8807], ["\\eqslantgtr", 10902], ["\\ggg", 8921], ["\\gtrless", 8823], ["\\gtreqless", 8923], ["\\gtreqqless", 10892], ["\\supseteqq", 10950], ["\\Supset", 8913], ["\\sqsupset", 8848], ["\\succcurlyeq", 8829], ["\\curlyeqsucc", 8927], ["\\Vdash", 8873], ["\\shortmid", 8739], ["\\between", 8812], ["\\pitchfork", 8916], ["\\varpropto", 8733], ["\\backepsilon", 8717], ["\\llless", 8920], ["\\gggtr", 8921], ["\\doteqdot", 8785], ["\\Doteq", 8785], ["\\eqcirc", 8790], ["\\circeq", 8791], ["\\therefore", 8756], ["\\because", 8757]], "mrel", "ams"); +me([["+", 43], ["-", 8722], ["\u2212", 8722], ["\\pm", 177], ["\\mp", 8723], ["*", 8727], ["\\times", 215], ["\\div", 247], ["\\divides", 8739], ["\\cdot", 8901], ["\\cap", 8745], ["\\cup", 8746], ["\\setminus", 8726], ["\\land", 8743], ["\\wedge", 8743], ["\\lor", 8744], ["\\vee", 8744], ["\\circ", 8728], ["\\bigcirc", 9711], ["\\bullet", 8729], ["\\oplus", 8853], ["\\ominus", 8854], ["\\otimes", 8855], ["\\odot", 8857], ["\\oslash", 8856], ["\\bigtriangleup", 9651], ["\\bigtriangledown", 9661], ["\\triangleleft", 9667], ["\\triangleright", 9657], ["\\And", 38], ["\\dagger", 8224], ["\\dag", 8224], ["\\ddag", 8225], ["\\ddagger", 8225], ["\\ast", 8727], ["\\star", 8902], ["\\bigstar", 9733], ["\\diamond", 8900]], "mbin"); +me([["\\lhd", 8882], ["\\rhd", 8883], ["\\lessdot", 8918], ["\\gtrdot", 8919], ["\\ltimes", 8905], ["\\rtimes", 8906], ["\\leftthreetimes", 8907], ["\\rightthreetimes", 8908], ["\\intercal", 8890], ["\\dotplus", 8724], ["\\doublebarwedge", 10846], ["\\divideontimes", 8903], ["\\centerdot", 8901], ["\\smallsetminus", 8726], ["\\barwedge", 8892], ["\\veebar", 8891], ["\\nor", 8891], ["\\curlywedge", 8911], ["\\curlyvee", 8910], ["\\boxminus", 8863], ["\\boxplus", 8862], ["\\boxtimes", 8864], ["\\boxdot", 8865], ["\\circleddash", 8861], ["\\circledast", 8859], ["\\circledcirc", 8858], ["\\unlhd", 8884], ["\\unrhd", 8885]], "mbin", "ams"); +me([["\\surd", 8730], ["\\infty", 8734], ["\\prime", 8242], ["\\doubleprime", 8243], ["\\angle", 8736], ["`", 8216], ["\\$", 36], ["\\%", 37], ["\\_", 95], ["\\alpha", 945], ["\\beta", 946], ["\\gamma", 947], ["\\delta", 948], ["\\epsilon", 1013], ["\\varepsilon", 949], ["\\zeta", 950], ["\\eta", 951], ["\\theta", 952], ["\\vartheta", 977], ["\\iota", 953], ["\\kappa", 954], ["\\varkappa", 1008, "mord", "ams"], ["\\lambda", 955], ["\\mu", 956], ["\\nu", 957], ["\\xi", 958], ["\\omicron", 111], ["\\pi", 960], ["\\varpi", 982], ["\\rho", 961], ["\\varrho", 1009], ["\\sigma", 963], ["\\varsigma", 962], ["\\tau", 964], ["\\phi", 981], ["\\varphi", 966], ["\\upsilon", 965], ["\\chi", 967], ["\\psi", 968], ["\\omega", 969], ["\\Gamma", 915], ["\\Delta", 916], ["\\Theta", 920], ["\\Lambda", 923], ["\\Xi", 926], ["\\Pi", 928], ["\\Sigma", 931], ["\\Upsilon", 933], ["\\Phi", 934], ["\\Psi", 936], ["\\Omega", 937], ["\\digamma", 989, "mord", "ams"], ["\\emptyset", 8709]]); +me([["=", 61], ["<", 60], ["\\lt", 60], [">", 62], ["\\gt", 62], ["\\le", 8804], ["\\leq", 8804], ["\\ge", 8805], ["\\geq", 8805], ["\\ll", 8810], ["\\gg", 8811], ["\\coloneq", 8788], ["\\coloneqq", 8788], ["\\colonequals", 8788], ["\\measeq", 8797], ["\\eqdef", 8798], ["\\questeq", 8799], [":", 58], ["\\cong", 8773], ["\\equiv", 8801], ["\\prec", 8826], ["\\preceq", 10927], ["\\succ", 8827], ["\\succeq", 10928], ["\\perp", 8869], ["\\propto", 8733], ["\\Colon", 8759], ["\\smile", 8995], ["\\frown", 8994], ["\\sim", 8764], ["\\doteq", 8784], ["\\bowtie", 8904], ["\\Join", 8904], ["\\asymp", 8781], ["\\sqsubseteq", 8849], ["\\sqsupseteq", 8850], ["\\approx", 8776], ["\\~", 126], ["\\leftrightarrow", 8596], ["\\Leftrightarrow", 8660], ["\\models", 8872], ["\\vdash", 8866], ["\\dashv", 8867], ["\\roundimplies", 10608], ["\\in", 8712], ["\\notin", 8713], ["\\ni", 8715], ["\\owns", 8715], ["\\subset", 8834], ["\\supset", 8835], ["\\subseteq", 8838], ["\\supseteq", 8839], ["\\differencedelta", 8710], ["\\mvert", 8739], ["\\parallel", 8741], ["\\simeq", 8771]], "mrel"); +me([["\\lnot", 172], ["\\neg", 172], ["\\triangle", 9651], ["\\subsetneq", 8842], ["\\varsubsetneq", 57370], ["\\subsetneqq", 10955], ["\\varsubsetneqq", 57367], ["\\nsubset", 8836], ["\\nsupset", 8837], ["\\nsubseteq", 8840], ["\\nsupseteq", 8841]], "mrel", "ams"); +me([["\\wp", 8472], ["\\aleph", 8501]]); +me([["\\blacktriangle", 9650], ["\\hslash", 8463], ["\\Finv", 8498], ["\\Game", 8513], ["\\eth", 240], ["\\mho", 8487], ["\\Bbbk", 107], ["\\yen", 165], ["\\square", 9633], ["\\Box", 9633], ["\\blacksquare", 9632], ["\\circledS", 9416], ["\\circledR", 174], ["\\triangledown", 9661], ["\\blacktriangledown", 9660], ["\\checkmark", 10003], ["\\diagup", 9585], ["\\measuredangle", 8737], ["\\sphericalangle", 8738], ["\\backprime", 8245], ["\\backdoubleprime", 8246], ["\\Diamond", 9674], ["\\lozenge", 9674], ["\\blacklozenge", 10731], ["\\varnothing", 8709], ["\\complement", 8705], ["\\maltese", 10016], ["\\beth", 8502], ["\\daleth", 8504], ["\\gimel", 8503]], "mord", "ams"); +me([["\\ ", 160], ["~", 160]], "space"); +_(["!", ",", ":", ";", ">", "enskip", "enspace", "quad", "qquad"], "", { createAtom: (t37) => new Et(t37) }); +_("space", "", { createAtom: (t37) => new Et(t37) }); +me([["\\colon", 58], ["\\cdotp", 8901], ["\\vdots", 8942, "mord"], ["\\ldotp", 46], [",", 44], [";", 59]], "mpunct"); +me([["\\cdots", 8943], ["\\ddots", 8945], ["\\ldots", 8230], ["\\mathellipsis", 8230]], "minner"); +me([["\\/", 47], ["|", 8739, "mord"], ["\\imath", 305], ["\\jmath", 567], ["\\degree", 176], ["'", 8242], ['"', 8221]]); +var wp = ""; +var ms = ""; +function ds(t37) { + return t37.replace(/"/g, """).replace(/'/g, "'").replace(//g, ">"); +} +function G(t37, e) { + return !t37 || !e.generateID ? "" : ` extid="${t37}"`; +} +function Sg(t37, e, r) { + var d, m, h, f, b, S, M, x; + let i = false; + e = e != null ? e : t37.atoms.length; + let n = "", o = "", a = t37.atoms[t37.index], s = (d = a.style) == null ? void 0 : d.variant, l = (m = a.style) == null ? void 0 : m.variantStyle, c = ""; + if (a.value && (s || l)) { + let v = (h = gn(a.value, s, l)) != null ? h : a.value; + if (v !== a.value) + return t37.index += 1, n = `${v}`, Ot(n, t37, r) || (t37.mathML += n, t37.lastType = "mi"), true; + c = (f = { upnormal: "normal", boldnormal: "bold", italicmain: "italic", bolditalicmain: "bold-italic", "updouble-struck": "double-struck", "double-struck": "double-struck", boldfraktur: "bold-fraktur", calligraphic: "script", upcalligraphic: "script", script: "script", boldscript: "bold-script", boldcalligraphic: "bold-script", fraktur: "fraktur", "upsans-serif": "sans-serif", "boldsans-serif": "bold-sans-serif", "italicsans-serif": "sans-serif-italic", "bolditalicsans-serif": "sans-serif-bold-italic", monospace: "monospace" }[(l != null ? l : "") + (s != null ? s : "")]) != null ? f : "", c && (c = ` mathvariant="${c}"`); + } + let u = { "\\exponentialE": "ⅇ", "\\imaginaryI": "ⅈ", "\\differentialD": "ⅆ", "\\capitalDifferentialD": "ⅅ", "\\alpha": "α", "\\pi": "π", "\\infty": "∞", "\\forall": "∀", "\\nexists": "∄", "\\exists": "∃", "\\hbar": "\u210F", "\\cdotp": "\u22C5", "\\ldots": "\u2026", "\\cdots": "\u22EF", "\\ddots": "\u22F1", "\\vdots": "\u22EE", "\\ldotp": "." }; + if (a.command === "!") + return t37.index += 1, n = "!", Ot(n, t37, r) || (t37.mathML += n, t37.lastType = "mo"), true; + if (u[a.command]) { + t37.index += 1; + let v = `${u[a.command]}`; + return (t37.lastType === "mi" || t37.lastType === "mn" || t37.lastType === "mtext" || t37.lastType === "fence") && (v = ms + v), Ot(v, t37, r) || (t37.mathML += v, t37.lastType = "mi"), true; + } + if (a.command === "\\operatorname") + o = dn(a.body), t37.index += 1; + else if (s || l) + for (; t37.index < e && (a.type === "mord" || a.type === "macro") && !a.isDigit() && s === ((S = (b = a.style) == null ? void 0 : b.variant) != null ? S : "") && l === ((x = (M = a.style) == null ? void 0 : M.variantStyle) != null ? x : ""); ) + o += dn([a]), t37.index += 1, a = t37.atoms[t37.index]; + else + (a.type === "mord" || a.type === "macro") && !a.isDigit() && (o += dn([a]), t37.index += 1); + if (o.length > 0) { + i = true, n = `${o}`; + let v = t37.lastType; + n.endsWith(">f") || n.endsWith(">g") ? (n += wp, t37.lastType = "applyfunction") : t37.lastType = /^(.*)<\/mo>$/.test(n) ? "mo" : "mi", Ot(n, t37, r) || ((v === "mi" || v === "mn" || v === "mtext" || v === "fence") && (n = ms + n), t37.mathML += n); + } + return i; +} +function kp(t37) { + return t37.index < t37.atoms.length && t37.atoms[t37.index].superscript && t37.atoms[t37.index].type === "subsup"; +} +function Sp(t37) { + let e = -1, r = t37.index, i = false, n = false; + for (; r < t37.atoms.length && !i && !n; ) { + let o = t37.atoms[r]; + i = !o.isDigit(), n = !i && o.superscript !== void 0, r++; + } + return n && (e = r - 1), e; +} +function Ot(t37, e, r) { + var l; + let i = e.atoms[e.index - 1]; + if (!i) + return false; + if (!i.superscript && !i.subscript) + if (((l = e.atoms[e.index]) == null ? void 0 : l.type) === "subsup") + i = e.atoms[e.index], e.index += 1; + else + return false; + let n = e.lastType; + e.lastType = ""; + let o = F(i.superscript, r); + e.lastType = ""; + let a = F(i.subscript, r); + if (e.lastType = n, !o && !a) + return false; + let s = ""; + return o && a ? s = `${t37}${a}${o}` : o ? s = `${t37}${o}` : a && (s = `${t37}${a}`), e.mathML += s, e.lastType = "", true; +} +function Lg(t37, e, r) { + e = e != null ? e : t37.atoms.length; + let i = t37.index, n = "", o = Sp(t37); + for (o >= 0 && o < e && (e = o); t37.index < e && t37.atoms[t37.index].mode === "text"; ) + n += t37.atoms[t37.index].value ? t37.atoms[t37.index].value : " ", t37.index += 1; + return n.length > 0 ? (n = `${n}`, o < 0 && kp(t37) && (o = t37.index, t37.index += 1), Ot(n, t37, r) || (t37.mathML += n, t37.lastType = "mtext"), true) : false; +} +function Ag(t37, e, r) { + e = e != null ? e : t37.atoms.length; + let i = t37.index, n = "", o = Sp(t37); + for (o >= 0 && o < e && (e = o); t37.index < e && t37.atoms[t37.index].isDigit(); ) + n += t37.atoms[t37.index].asDigit(), t37.index += 1; + return n.length <= 0 ? false : (n = "" + n + "", o < 0 && kp(t37) && (o = t37.index, t37.index += 1), Ot(n, t37, r) || (t37.mathML += n, t37.lastType = "mn"), true); +} +function Cg(t37, e, r) { + let i = false; + e = e != null ? e : t37.atoms.length; + let n = "", o = ""; + if (t37.index < e && t37.atoms[t37.index].type === "mopen") { + let a = false, s = 0, l = t37.index, c = -1, u = l + 1; + for (; u < e && !a; ) + t37.atoms[u].type === "mopen" ? s += 1 : t37.atoms[u].type === "mclose" && (s -= 1), s === -1 && (a = true, c = u), u += 1; + a && (n = "", n += di(t37.atoms[l], r), n += F(t37.atoms, r, l + 1, c), n += di(t37.atoms[c], r), n += "", t37.index = c + 1, (t37.lastType === "mi" || t37.lastType === "mn" || t37.lastType === "mfrac" || t37.lastType === "fence") && (t37.mathML += ms), Ot(n, t37, r) && (i = true, t37.lastType = "", n = ""), o = "fence"); + } + return n.length > 0 && (i = true, t37.mathML += n, t37.lastType = o), i; +} +function Eg(t37, e, r) { + let i = false; + e = e != null ? e : t37.atoms.length; + let n = "", o = "", a = t37.atoms[t37.index]; + if (!a) + return false; + let s = { "\\ne": "≠", "\\neq": "≠", "\\pm": "±", "\\times": "×", "\\colon": ":", "\\vert": "|", "\\Vert": "\u2225", "\\mid": "\u2223", "\\{": "{", "\\}": "}", "\\lbrace": "{", "\\rbrace": "}", "\\lbrack": "[", "\\rbrack": "]", "\\lparen": "(", "\\rparen": ")", "\\langle": "\u27E8", "\\rangle": "\u27E9", "\\lfloor": "\u230A", "\\rfloor": "\u230B", "\\lceil": "\u2308", "\\rceil": "\u2309" }; + if (s[a.command]) { + t37.index += 1; + let l = `${s[a.command]}`; + return Ot(l, t37, r) || (t37.mathML += l, t37.lastType = "mo"), true; + } + if (t37.index < e && (a.type === "mbin" || a.type === "mrel")) + n += ac(t37.atoms[t37.index], r), t37.index += 1, o = "mo"; + else if (t37.index < e && (a.type === "mop" || a.type === "operator" || a.type === "extensible-symbol")) { + if (a.subsupPlacement === "over-under" && (a.superscript || a.subscript)) { + let l = di(a, r); + return a.superscript && a.subscript ? (n += "" + l, n += F(a.subscript, r), n += F(a.superscript, r), n += "") : a.superscript ? (n += "" + l, n += F(a.superscript, r), n += "") : a.subscript && (n += "" + l, n += F(a.subscript, r), n += ""), t37.mathML += n, t37.lastType = "mo", t37.index += 1, true; + } + { + let l = t37.atoms[t37.index], c = l.value === "\\operatorname", u = c ? '" + dn(l.value) + "" : di(l, r); + n += u, !c && !/^(.*)<\/mo>$/.test(u) ? (n += wp, o = "applyfunction") : o = c ? "mi" : "mo"; + } + (t37.lastType === "mi" || t37.lastType === "mn") && !/^(.*)<\/mo>$/.test(n) && (n = ms + n), t37.index += 1; + } + return n.length > 0 && (i = true, Ot(n, t37, r) || (t37.mathML += n, t37.lastType = o)), i; +} +function F(t37, e, r, i) { + e != null || (e = {}); + let n = { atoms: [], index: r != null ? r : 0, mathML: "", lastType: "" }; + if (typeof t37 == "number" || typeof t37 == "boolean") + n.mathML = t37.toString(); + else if (typeof t37 == "string") + n.mathML = t37; + else if (t37 instanceof y) + n.mathML = ac(t37, e); + else if (Array.isArray(t37)) { + n.atoms = t37; + let o = 0; + for (i = i || (t37 ? t37.length : 0); n.index < i; ) + if (Lg(n, i, e) || Ag(n, i, e) || Sg(n, i, e) || Eg(n, i, e) || Cg(n, i, e)) + o += 1; + else if (n.index < i) { + let a = ac(n.atoms[n.index], e); + n.lastType === "mn" && a.length > 0 && n.atoms[n.index].type === "genfrac" && (a = "" + a), n.atoms[n.index].type === "genfrac" ? n.lastType = "mfrac" : n.lastType = "", n.index += 1, Ot(a, n, e) ? o += 1 : a.length > 0 && (n.mathML += a, o += 1); + } + o > 1 && (n.mathML = "" + n.mathML + ""); + } + return n.mathML; +} +function di(t37, e) { + let r = "", i = dn(t37.value); + return i && (r = "" + i + ""), r; +} +function dn(t37) { + if (!t37) + return ""; + if (typeof t37 == "string") + return ds(t37); + if (!Array.isArray(t37) && typeof t37.body == "string") + return ds(t37.body); + let e = ""; + for (let r of t37) + typeof r.value == "string" && (e += r.value); + return ds(e); +} +function ac(t37, e) { + var b, S, M, x, v, k, C, q, B, D, J, de, Rt, Zt, pt, be, hn, fn, ne, he, Se, Je; + if (t37.mode === "text") + return `${t37.value}`; + let r = { widehat: "^", widecheck: "\u02C7", widetilde: "~", utilde: "~", overleftarrow: "\u2190", underleftarrow: "\u2190", xleftarrow: "\u2190", longleftarrow: "\u2190", overrightarrow: "\u2192", underrightarrow: "\u2192", xrightarrow: "\u2192", longrightarrow: "\u2192", underbrace: "\u23DF", overbrace: "\u23DE", overgroup: "\u23E0", undergroup: "\u23E1", overleftrightarrow: "\u2194", underleftrightarrow: "\u2194", xleftrightarrow: "\u2194", Overrightarrow: "\u21D2", xRightarrow: "\u21D2", overleftharpoon: "\u21BC", xleftharpoonup: "\u21BC", overrightharpoon: "\u21C0", xrightharpoonup: "\u21C0", xLeftarrow: "\u21D0", xLeftrightarrow: "\u21D4", xhookleftarrow: "\u21A9", xhookrightarrow: "\u21AA", xmapsto: "\u21A6", xrightharpoondown: "\u21C1", xleftharpoondown: "\u21BD", xrightleftharpoons: "\u21CC", longrightleftharpoons: "\u21CC", xleftrightharpoons: "\u21CB", xtwoheadleftarrow: "\u219E", xtwoheadrightarrow: "\u21A0", xlongequal: "=", xtofrom: "\u21C4", xleftrightarrows: "\u21C4", xRightleftharpoons: "\u21CC", longRightleftharpoons: "\u21CC", xLeftrightharpoons: "\u21CB", longLeftrightharpoons: "\u21CB" }, i = { "\\!": -3 / 18, "\\ ": 6 / 18, "\\,": 3 / 18, "\\:": 4 / 18, "\\>": 4 / 18, "\\;": 5 / 18, "\\enspace": 0.5, "\\quad": 1, "\\qquad": 2, "\\enskip": 0.5 }, n = "", o = "", a, s, l, c, u, d, { command: m } = t37; + if (t37.command === "\\error") + return `${F(t37.body, e)}`; + let h = { "\\vert": "|", "\\Vert": "\u2225", "\\mid": "\u2223", "\\lbrack": "[", "\\rbrack": "]", "\\{": "{", "\\}": "}", "\\lbrace": "{", "\\rbrace": "}", "\\lparen": "(", "\\rparen": ")", "\\langle": "\u27E8", "\\rangle": "\u27E9", "\\lfloor": "\u230A", "\\rfloor": "\u230B", "\\lceil": "\u2308", "\\rceil": "\u2309" }, f = { "\\vec": "⃗", "\\acute": "´", "\\grave": "`", "\\dot": "˙", "\\ddot": "¨", "\\tilde": "~", "\\bar": "¯", "\\breve": "˘", "\\check": "ˇ", "\\hat": "^" }; + switch (t37.type) { + case "first": + break; + case "group": + case "root": + n = F(t37.body, e); + break; + case "array": + if ((t37.leftDelim && t37.leftDelim !== "." || t37.rightDelim && t37.rightDelim !== ".") && (n += "", t37.leftDelim && t37.leftDelim !== "." && (n += "" + (h[t37.leftDelim] || t37.leftDelim) + "")), n += ""; + n += ""; + } + n += "", (t37.leftDelim && t37.leftDelim !== "." || t37.rightDelim && t37.rightDelim !== ".") && (t37.rightDelim && t37.rightDelim !== "." && (n += "" + (h[t37.leftDelim] || t37.rightDelim) + ""), n += ""); + break; + case "genfrac": + (t37.leftDelim || t37.rightDelim) && (n += ""), t37.leftDelim && t37.leftDelim !== "." && (n += "" + (h[t37.leftDelim] || t37.leftDelim) + ""), t37.hasBarLine ? (n += "", n += F(t37.above, e) || " ", n += F(t37.below, e) || " ", n += "") : (n += "", n += "" + F(t37.above, e) + "", n += "" + F(t37.below, e) + "", n += ""), t37.rightDelim && t37.rightDelim !== "." && (n += "" + (h[t37.rightDelim] || t37.rightDelim) + ""), (t37.leftDelim || t37.rightDelim) && (n += ""); + break; + case "surd": + t37.hasEmptyBranch("above") ? (n += "", n += F(t37.body, e), n += "") : (n += "", n += F(t37.body, e), n += F(t37.above, e), n += ""); + break; + case "leftright": + let ht = t37, ft = ht.leftDelim; + n = "", ft && ft !== "." && (n += `${(b = h[ft]) != null ? b : ft}`), t37.body && (n += F(t37.body, e)); + let gt = ht.matchingRightDelim(); + gt && gt !== "." && (n += `${(S = h[gt]) != null ? S : gt}`), n += ""; + break; + case "sizeddelim": + case "delim": + n += `${h[t37.value] || t37.value}`; + break; + case "accent": + n += '", n += F(t37.body, e), n += "" + (f[m] || t37.accent) + "", n += ""; + break; + case "line": + case "overlap": + break; + case "overunder": + u = t37.above, c = t37.below, (t37.svgAbove || u) && (t37.svgBelow || c) ? d = t37.body : u && u.length > 0 ? (d = t37.body, (x = (M = t37.body) == null ? void 0 : M[0]) != null && x.below ? (c = t37.body[0].below, d = t37.body[0].body) : ((k = (v = t37.body) == null ? void 0 : v[0]) == null ? void 0 : k.type) === "first" && ((q = (C = t37.body) == null ? void 0 : C[1]) != null && q.below) && (c = t37.body[1].below, d = t37.body[1].body)) : c && c.length > 0 && (d = t37.body, (D = (B = t37.body) == null ? void 0 : B[0]) != null && D.above ? (u = t37.body[0].above, d = t37.body[0].body) : ((de = (J = t37.body) == null ? void 0 : J[0]) == null ? void 0 : de.type) === "first" && ((Zt = (Rt = t37.body) == null ? void 0 : Rt[1]) != null && Zt.above) && (u = t37.body[1].overscript, d = t37.body[1].body)), (t37.svgAbove || u) && (t37.svgBelow || c) ? (n += ``, n += (pt = r[t37.svgBody]) != null ? pt : F(d, e), n += (be = r[t37.svgBelow]) != null ? be : F(c, e), n += (hn = r[t37.svgAbove]) != null ? hn : F(u, e), n += "") : t37.svgAbove || u ? (n += `` + ((fn = r[t37.svgBody]) != null ? fn : F(d, e)), n += (ne = r[t37.svgAbove]) != null ? ne : F(u, e), n += "") : (t37.svgBelow || c) && (n += `` + ((he = r[t37.svgBody]) != null ? he : F(d, e)), n += (Se = r[t37.svgBelow]) != null ? Se : F(c, e), n += ""); + break; + case "placeholder": + n += "?"; + break; + case "mord": { + n = typeof t37.value == "string" ? t37.value : m, m === "\\char" ? n = "&#x" + ("000000" + t37.args[0].number.toString(16)).slice(-4) + ";" : n.length > 0 && n.startsWith("\\") && (typeof t37.value == "string" && t37.value.charCodeAt(0) > 255 ? n = "&#x" + ("000000" + t37.value.charCodeAt(0).toString(16)).slice(-4) + ";" : typeof t37.value == "string" ? n = t37.value.charAt(0) : (console.error("Did not expect this"), n = "")); + let Ge = /\d/.test(n) ? "mn" : "mi"; + n = `<${Ge}${G(t37.id, e)}>${ds(n)}`; + break; + } + case "mbin": + case "mrel": + case "minner": + n = di(t37, e); + break; + case "mpunct": + n = '" + m + ""; + break; + case "mop": + case "operator": + case "extensible-symbol": + t37.body !== "\u200B" && (n = "", n += m === "\\operatorname" ? t37.body : m || t37.body, n += ""); + break; + case "box": + n = '" + F(t37.body, e) + ""; + break; + case "spacing": + n += ''; + break; + case "enclose": + n = '' + F(t37.body, e) + ""; + break; + case "prompt": + n = '' + F(t37.body, e) + ""; + break; + case "space": + n += " "; + break; + case "subsup": + break; + case "phantom": + break; + case "composition": + break; + case "rule": + break; + case "chem": + break; + case "mopen": + n += di(t37, e); + break; + case "mclose": + n += di(t37, e); + break; + case "macro": + { + let Ge = t37.command + dn(t37.macroArgs); + Ge && (n += `${Ge}`); + } + break; + case "latexgroup": + n += F(t37.body, e); + break; + case "latex": + n += "" + t37.value + ""; + break; + case "tooltip": + n += F(t37.body, e); + break; + case "text": + n += `${t37.value}`; + break; + default: + if (t37.command === "\\displaystyle") + return `${F(t37.body, e)}`; + if (t37.command === "\\textstyle") + return `${F(t37.body, e)}`; + console.info("Unexpected element in conversion to MathML:", t37); + } + return n; +} +var mn = { "\\alpha": "alpha ", "\\mu": "mew ", "\\sigma": "sigma ", "\\pi": "pie ", "\\imaginaryI": "imaginary eye ", "\\imaginaryJ": "imaginary jay ", "\\sum": "Summation ", "\\prod": "Product ", "+": "plus ", "-": "minus ", ";": ' semi-colon ', ",": ' comma ', "|": 'Vertical bar', "(": 'Open paren. ', ")": ' Close paren. ', "=": "equals ", "<": "is less than ", "\\lt": "is less than ", "<=": "is less than or equal to ", "\\le": "is less than or equal to ", "\\gt": "is greater than ", ">": "is greater than ", "\\pm": "plus or minus", "\\mp": "minus or plus", "\\ge": "is greater than or equal to ", "\\geq": "is greater than or equal to ", "\\leq": "is less than or equal to ", "\\ne": "is not equal to ", "\\neq": "is not equal to ", "!": "factorial ", "\\sin": "sine ", "\\cos": "cosine ", "\u200B": "", "\u2212": "minus ", ":": ' such that ', "\\colon": ' such that ', "\\hbar": "etch bar ", "\\iff": 'if, and only if, ', "\\Longleftrightarrow": 'if, and only if, ', "\\land": "and ", "\\lor": "or ", "\\neg": "not ", "\\div": "divided by ", "\\forall": "for all ", "\\exists": "there exists ", "\\nexists": "there does not exists ", "\\in": "element of ", "\\N": 'the set n', "\\C": 'the set c', "\\Z": 'the set z', "\\Q": 'the set q', "\\infty": "infinity ", "\\nabla": "nabla ", "\\partial": "partial derivative of ", "\\cdot": "times ", "\\cdots": "dot dot dot ", "\\Rightarrow": "implies ", "\\lparen": 'open paren', "\\rparen": 'close paren', "\\lbrace": 'open brace', "\\{": 'open brace', "\\rbrace": 'close brace', "\\}": 'close brace', "\\langle": 'left angle bracket', "\\rangle": 'right angle bracket', "\\lfloor": 'open floor', "\\rfloor": 'close floor', "\\lceil": 'open ceiling', "\\rceil": 'close ceiling', "\\vert": 'vertical bar', "\\mvert": 'divides', "\\lvert": 'left vertical bar', "\\rvert": 'right vertical bar', "\\lbrack": ' open square bracket ', "\\rbrack": ' close square bracket ', mm: "millimeters", cm: "centimeters", km: "kilometers", kg: "kilograms" }; +var sc = { array: "array", matrix: "matrix", pmatrix: "parenthesis matrix", bmatrix: "square brackets matrix", Bmatrix: "braces matrix", vmatrix: "bars matrix", Vmatrix: "double bars matrix", "matrix*": "matrix", smallmatrix: "small matrix" }; +function Tg(t37) { + let e = ""; + return t37.startsWith("\\") && (e = " " + t37.replace("\\", "") + " "), e; +} +function so(t37) { + let e = 0; + if (X(t37)) + for (let r of t37) + r.type !== "first" && (e += 1); + return e === 1; +} +function Dg(t37) { + if (X(t37)) { + for (let e of t37) + if (e.type !== "first" && e.id) + return e.id.toString(); + } + return ""; +} +function Lp(t37) { + let e = ""; + if (X(t37)) + for (let r of t37) + r.type !== "first" && typeof r.value == "string" && (e += r.value); + return e; +} +function Kg(t37) { + return t37 ? t37.map((e) => e.value).join("") : ""; +} +function lc(t37) { + return `${t37}`; +} +function Bg(t37, e) { + var o; + let r = "", i = false, n = false; + for (let a = 0; a < e.length; a++) + e[a].type !== "first" && (e[a].mode !== "text" && (n = false), a < e.length - 2 && e[a].type === "mopen" && e[a + 2].type === "mclose" && e[a + 1].type === "mord" ? (r += " of ", r += lc(R(t37, e[a + 1])), a += 2) : e[a].mode === "text" ? n ? r += (o = e[a].value) != null ? o : " " : (n = true, r += R("text", e[a])) : e[a].isDigit() ? i ? r += e[a].asDigit() : (i = true, r += R(t37, e[a])) : (i = false, r += R(t37, e[a]))); + return r; +} +function R(t37, e) { + var c, u, d, m; + function r(h) { + return globalThis.MathfieldElement.textToSpeechMarkup ? /[a-z]/.test(h) ? ` ${h}` : /[A-Z]/.test(h) ? `capital ${h.toLowerCase()}` : h : /[a-z]/.test(h) ? " '" + h.toUpperCase() + "'" : /[A-Z]/.test(h) ? " 'capital " + h.toUpperCase() + "'" : h; + } + if (!e) + return ""; + if (X(e)) + return Bg(t37, e); + let i = ""; + if (e.id && t37 === "math" && (i += ''), e.mode === "text") + return i + e.value; + let n = "", o = "", a = "", s = false, { command: l } = e; + switch (l) { + case "\\vec": + return "vector " + R(t37, e.body); + case "\\acute": + return R(t37, e.body) + " acute"; + case "\\grave": + return R(t37, e.body) + " grave"; + case "\\dot": + return "dot over" + R(t37, e.body); + case "\\ddot": + return "double dot over" + R(t37, e.body); + case "\\mathring": + return "ring over" + R(t37, e.body); + case "\\tilde": + case "\\widetilde": + return "tilde over" + R(t37, e.body); + case "\\bar": + return R(t37, e.body) + " bar"; + case "\\breve": + return R(t37, e.body) + " breve"; + case "\\check": + case "\\widecheck": + return "check over " + R(t37, e.body); + case "\\hat": + case "\\widehat": + return "hat over" + R(t37, e.body); + case "\\overarc": + case "\\overparen": + case "\\wideparen": + return "arc over " + R(t37, e.body); + case "\\underarc": + case "\\underparen": + return "arc under " + R(t37, e.body); + } + switch (e.type) { + case "prompt": + let h = e.body.length > 1 ? 'start input . ' + R(t37, e.body) + '. end input' : "blank"; + i += ' ' + h + '. ' + ((c = e.correctness) != null ? c : "") + ' . '; + break; + case "array": + let f = e.array, b = e.environmentName; + if (Object.keys(sc).includes(b)) { + i += ` begin ${sc[b]} `; + for (let x = 0; x < f.length; x++) { + x > 0 && (i += ","), i += ` row ${x + 1} `; + for (let v = 0; v < f[x].length; v++) + v > 0 && (i += ","), i += ` column ${v + 1}: `, i += R("math", f[x][v]); + } + i += ` end ${sc[b]} `; + } + break; + case "group": + l === "\\ne" ? i += " not equal " : (l === "\\not" && (i += " not "), i += R("math", e.body)); + break; + case "root": + i += R("math", e.body); + break; + case "genfrac": + if (n = R("math", e.above), o = R("math", e.below), so(e.above) && so(e.below)) { + let v = { "1/2": " half ", "1/3": " one third ", "2/3": " two third", "1/4": " one quarter ", "3/4": " three quarter ", "1/5": " one fifth ", "2/5": " two fifths ", "3/5": " three fifths ", "4/5": " four fifths ", "1/6": " one sixth ", "5/6": " five sixths ", "1/8": " one eight ", "3/8": " three eights ", "5/8": " five eights ", "7/8": " seven eights ", "1/9": " one ninth ", "2/9": " two ninths ", "4/9": " four ninths ", "5/9": " five ninths ", "7/9": " seven ninths ", "8/9": " eight ninths " }[Lp(e.above) + "/" + Lp(e.below)]; + v ? i = v : i += n + " over " + o; + } else + i += ' the fraction ' + n + ' over ' + o + '. End fraction.'; + break; + case "surd": + if (a = R("math", e.body), e.hasEmptyBranch("above")) + i += so(e.body) ? " the square root of " + a + " , " : ' the square root of ' + a + '. End square root'; + else { + let x = R("math", e.above); + x = x.trim(); + let v = x.replace(//g, ""); + v === "3" ? i += ' the cube root of ' + a + '. End cube root' : v === "n" ? i += ' the nth root of ' + a + '. End root' : i += ' the root with index: ' + x + ', of ' + a + '. End root'; + } + break; + case "leftright": + { + let x = e; + i += (u = x.leftDelim ? mn[x.leftDelim] : void 0) != null ? u : x.leftDelim, i += R("math", e.body), i += (d = x.rightDelim ? mn[x.rightDelim] : void 0) != null ? d : x.rightDelim; + } + break; + case "rule": + break; + case "overunder": + break; + case "overlap": + break; + case "macro": + let S = l.replace(/^\\/g, ""), M = xi()[S]; + M && (M != null && M.expand ? i += R("math", e.body) : i += `${S} `); + break; + case "placeholder": + i += "placeholder "; + break; + case "delim": + case "sizeddelim": + case "mord": + case "minner": + case "mbin": + case "mrel": + case "mpunct": + case "mopen": + case "mclose": { + if (l === "\\mathbin" || l === "\\mathrel" || l === "\\mathopen" || l === "\\mathclose" || l === "\\mathpunct" || l === "\\mathord" || l === "\\mathinner") { + i = R(t37, e.body); + break; + } + let x = e.isDigit() ? e.asDigit() : e.value, v = e.command; + if ((e.type === "delim" || e.type === "sizeddelim") && (v = e.value, x = v), t37 === "text") + i += x; + else { + if (e.type === "mbin" && (i += ''), x) { + let k = mn[x] || (v ? mn[v.trim()] : ""); + if (k) + i += " " + k; + else { + let C = v ? Tg(v.trim()) : ""; + i += C || r(x); + } + } else + i += R("math", e.body); + e.type === "mbin" && (i += ''); + } + break; + } + case "mop": + case "operator": + case "extensible-symbol": + if (e.value !== "\u200B") { + let x = e.command; + if (x === "\\sum") + if (!e.hasEmptyBranch("superscript") && !e.hasEmptyBranch("subscript")) { + let v = R("math", e.superscript); + v = v.trim(); + let k = R("math", e.subscript); + k = k.trim(), i += ' the summation from ' + k + ' to ' + v + ' of ', s = true; + } else if (e.hasEmptyBranch("subscript")) + i += " the summation of"; + else { + let v = R("math", e.subscript); + v = v.trim(), i += ' the summation from ' + v + ' of ', s = true; + } + else if (x === "\\prod") + if (!e.hasEmptyBranch("superscript") && !e.hasEmptyBranch("subscript")) { + let v = R("math", e.superscript); + v = v.trim(); + let k = R("math", e.subscript); + k = k.trim(), i += ' the product from ' + k + ' to ' + v + ' of ', s = true; + } else if (e.hasEmptyBranch("subscript")) + i += " the product of "; + else { + let v = R("math", e.subscript); + v = v.trim(), i += ' the product from ' + v + ' of ', s = true; + } + else if (x === "\\int") + if (!e.hasEmptyBranch("superscript") && !e.hasEmptyBranch("subscript")) { + let v = R("math", e.superscript); + v = v.trim(); + let k = R("math", e.subscript); + k = k.trim(), i += ' the integral from ' + lc(k) + ' to ' + lc(v) + ' of ', s = true; + } else + i += ' the integral of '; + else if (x === "\\operatorname" || x === "\\operatorname*") + i += Kg(e.body) + " "; + else if (typeof e.value == "string") { + let v = (m = mn[e.value]) != null ? m : e.command ? mn[e.command] : void 0; + i += v || " " + e.value; + } else + e.command && (e.command === "\\mathop" ? i += R("math", e.body) : i += e.command.startsWith("\\") ? " " + e.command.slice(1) : " " + e.command); + } + break; + case "enclose": + a = R("math", e.body), i += " crossed out " + a + ". End crossed out."; + break; + case "space": + case "spacing": + break; + } + if (!s && !e.hasEmptyBranch("superscript")) { + let h = R(t37, e.superscript); + h = h.trim(); + let f = h.replace(/<[^>]*>/g, ""); + if (so(e.superscript)) { + if (t37 === "math") { + let b = Dg(e.superscript); + b && (i += ''); + } + f === "\u2032" ? i += " prime " : f === "2" ? i += " squared " : f === "3" ? i += " cubed " : Number.isNaN(Number.parseInt(f)) ? i += " to the " + h + "; " : i += ' to the ' + f + " power; "; + } else + Number.isNaN(Number.parseInt(f)) ? i += " raised to the " + h + "; " : i += ' raised to the ' + f + " power; "; + } + if (!s && !e.hasEmptyBranch("subscript")) { + let h = R("math", e.subscript); + h = h.trim(), i += so(e.subscript) ? " sub " + h : " subscript " + h + ". End subscript. "; + } + return i; +} +function mt(t37) { + var i, n; + let e = globalThis.MathfieldElement; + if (e.textToSpeechRules === "sre" && ("sre" in window || "SRE" in window)) { + let o = F(t37); + if (o) { + e.textToSpeechMarkup && (e.textToSpeechRulesOptions = (i = e.textToSpeechRulesOptions) != null ? i : {}, e.textToSpeechRulesOptions = g(p({}, e.textToSpeechRulesOptions), { markup: e.textToSpeechMarkup }), e.textToSpeechRulesOptions.markup === "ssml" && (e.textToSpeechRulesOptions = g(p({}, e.textToSpeechRulesOptions), { markup: "ssml_step" })), e.textToSpeechRulesOptions = g(p({}, e.textToSpeechRulesOptions), { rate: e.speechEngineRate })); + let a = (n = window.SRE) != null ? n : globalThis.sre.System.getInstance(); + e.textToSpeechRulesOptions && a.setupEngine(e.textToSpeechRulesOptions); + let s = ""; + try { + s = a.toSpeech(o); + } catch (l) { + console.error("MathLive 0.100.0: `SRE.toSpeech()` runtime error", l); + } + return s; + } + return ""; + } + let r = R("math", t37); + if (e.textToSpeechMarkup === "ssml") { + let o = ""; + e.speechEngineRate && (o = ''), r = '' + o + "

    " + r + "

    " + (o ? "
    " : "") + ""; + } else + e.textToSpeechMarkup === "mac" && yt() === "macos" ? r = r.replace(//g, "").replace(//g, "[[emph+]]").replace(/<\/emphasis>/g, "").replace(//g, "[[slc $1]]").replace(/]*>/g, "").replace(/<\/say-as>/g, "") : r = r.replace(/<[^>]*>/g, "").replace(/\s{2,}/g, " "); + return r; +} +var lo = { "\\ne": "\u2260", "\\neq": "\u2260", "\u2212": "-", "-": "-", "\\alpha": "alpha", "\\beta": "beta", "\\gamma": "gamma", "\\delta": "delta", "\\epsilon": "epsilon", "\\varepsilon": "varepsilon", "\\zeta": "zeta", "\\eta": "eta", "\\theta": "theta", "\\vartheta": "vartheta", "\\iota": "iota", "\\kappa": "kappa", "\\lambda": "lambda", "\\mu": "mu", "\\nu": "nu", "\\xi": "xi", "\\pi": "pi", "\\rho": "rho", "\\sigma": "sigma", "\\tau": "tau", "\\upsilon": "upsilon", "\\phi": "phi", "\\varphi": "varphi", "\\chi": "chi", "\\psi": "psi", "\\omega": "omega", "\\Gamma": "Gamma", "\\Delta": "Delta", "\\Theta": "Theta", "\\Lambda": "Lambda", "\\Xi": "Xi", "\\Pi": "Pi", "\\Sigma": "Sigma", "\\Phi": "Phi", "\\Psi": "Psi", "\\Omega": "Omega", "\\exponentialE": "e", "\\imaginaryI": "i", "\\imaginaryJ": "j", "\\!": " ", "\\,": " ", "\\:": " ", "\\>": " ", "\\;": " ", "\\enskip": " ", "\\enspace": " ", "\\qquad": " ", "\\quad": " ", "\\infty": "oo", "\\R": "RR", "\\N": "NN", "\\Z": "ZZ", "\\Q": "QQ", "\\C": "CC", "\\emptyset": "O/", "\\varnothing": "O/", "\\varDelta": "Delta", "\\varTheta": "Theta", "\\varLambda": "Lambda", "\\varXi": "Xi", "\\varPi": "Pi", "\\varSigma": "Sigma", "\\varUpsilon": "Upsilon", "\\varPhi": "Phi", "\\varPsi": "Psi", "\\varOmega": "Omega" }; +var co = { "\\pm": "+-", "\\colon": ":", "\\vert": "|", "\\Vert": "||", "\\mid": "|", "\\lbrack": "[", "\\rbrack": "]", "\\lbrace": "{", "\\rbrace": "}", "\\lparen": "(", "\\rparen": ")", "\\langle": "(:", "\\rangle": ":)", "\\sum": " sum ", "\\prod": " prod ", "\\bigcap": " nnn ", "\\bigcup": " uuu ", "\\int": " int ", "\\oint": " oint ", "\\ge": ">=", "\\le": "<=", "\\ne": "!=", "\\neq": "!=", "\\lt": "<", "\\gt": ">", "\\gets": "<-", "\\to": "->", "\\land": " and ", "\\lor": " or ", "\\lnot": " not ", "\\forall": " AA ", "\\exists": " EE ", "\\in": " in ", "\\notin": " !in ", "\\mapsto": "|->", "\\implies": "=>", "\\iff": "<=>", "\\cdot": "*", "\\ast": "**", "\\star": "***", "\\times": "xx", "\\div": "-:", "\\ltimes": "|><", "\\rtimes": "><|", "\\bowtie": "|><|", "\\circ": "@" }; +function Og(t37) { + let e = ""; + for (let r of t37) { + let i = e[e.length - 1]; + i !== void 0 && /\d/.test(i) && /^\d/.test(r) && (e += " "), e += r; + } + return e; +} +function Q(t37, e) { + var o, a, s, l, c, u, d, m, h, f, b, S, M; + if (!t37) + return ""; + if (X(t37)) { + if (t37.length === 0) + return ""; + if (t37[0].mode === "latex") + return t37.map((k) => Q(k)).join(""); + if (t37[0].mode === "text") { + let k = 0, C = ""; + for (; ((o = t37[k]) == null ? void 0 : o.mode) === "text"; ) + C += t37[k].body ? Q(t37[k].body, e) : t37[k].value, k++; + return e != null && e.plain ? C + Q(t37.slice(k), e) : `"${C}" ${Q(t37.slice(k))}`; + } + let x = 0, v = []; + for (; t37[x] && t37[x].mode === "math"; ) { + let k = ""; + for (; t37[x] && t37[x].type === "mord" && /\d/.test(t37[x].value); ) + k += t37[x++].value; + k ? v.push(k) : v.push(Q(t37[x++], e)); + } + return v.push(Q(t37.slice(x), e)), Og(v); + } + if (t37.mode === "text") + return e != null && e.plain ? t37.value : `"${t37.value}"`; + let r = "", { command: i } = t37, n; + if (i === "\\placeholder") + return `(${Q(t37.body, e)})`; + switch (t37.type) { + case "accent": + let x = { "\\vec": "vec", "\\dot": "dot", "\\ddot": "ddot", "\\bar": "bar", "\\hat": "hat", "\\acute": "acute;", "\\grave": "grave", "\\tilde": "tilde", "\\breve": "breave", "\\check": "check" }[i]; + r = `${x != null ? x : ""} ${Q(t37.body, e)} `; + break; + case "first": + return ""; + case "latexgroup": + return t37.body.map((D) => D.value).join(""); + case "group": + case "root": + r = (a = lo[i]) != null ? a : Q(t37.body, e); + break; + case "genfrac": + { + let D = t37; + (D.leftDelim || D.rightDelim) && (r = D.leftDelim === "." || !D.leftDelim ? "{:" : D.leftDelim), D.hasBarLine ? (r += "(", r += Q(D.above, e), r += ")/(", r += Q(D.below, e), r += ")") : (r += "(" + Q(D.above, e) + "),", r += "(" + Q(D.below, e) + ")"), (D.leftDelim || D.rightDelim) && (r += D.rightDelim === "." || !D.rightDelim ? "{:" : D.rightDelim); + } + break; + case "surd": + r += t37.hasEmptyBranch("above") ? "sqrt(" + Q(t37.body, e) + ")" : "root(" + Q(t37.above, e) + ")(" + Q(t37.body, e) + ")"; + break; + case "latex": + r = t37.value; + break; + case "leftright": + { + let D = t37, J = D.leftDelim; + r += J === "." || !J ? "{:" : J, r += Q(D.body, e); + let de = D.matchingRightDelim(); + r += de === "." || !de ? ":}" : de; + } + break; + case "sizeddelim": + case "delim": + r = t37.value; + break; + case "overlap": + break; + case "overunder": + break; + case "mord": + r = (l = (s = lo[i]) != null ? s : i) != null ? l : typeof t37.value == "string" ? t37.value : "", r.startsWith("\\") && (r += " "), n = i ? i.match(/{?\\char"([\dabcdefABCDEF]+)}?/) : null, n ? r = String.fromCodePoint(Number.parseInt("0x" + n[1])) : r.length > 0 && r.startsWith("\\") && (r = typeof t37.value == "string" ? t37.value.charAt(0) : t37.command), r = Pg(r, t37.style); + break; + case "mbin": + case "mrel": + case "minner": + r = (u = (c = lo[i]) != null ? c : co[i]) != null ? u : t37.value; + break; + case "mopen": + case "mclose": + r = t37.value; + break; + case "mpunct": + r = (d = co[i]) != null ? d : i; + break; + case "mop": + case "operator": + case "extensible-symbol": + t37.value !== "\u200B" && (co[i] ? r = co[i] : r = i === "\\operatorname" ? Q(t37.body, e) : (m = t37.value) != null ? m : i, r += " "); + break; + case "array": + let v = t37.array, k = t37.environmentName, C = (h = { bmatrix: ["[", "]"], "bmatrix*": ["[", "]"] }[k]) != null ? h : ["(", ")"], q = []; + for (let D of v) { + let J = []; + for (let de of D) + J.push(C[0] + Q(de, e) + C[1]); + q.push(J.join(",")); + } + let B = (f = { bmatrix: ["[", "]"], "bmatrix*": ["[", "]"], cases: ["{", ":}"] }[k]) != null ? f : ["(", ")"]; + r = B[0] + q.join(",") + B[1]; + break; + case "box": + break; + case "spacing": + r = (b = lo[i]) != null ? b : " "; + break; + case "enclose": + r = "(" + Q(t37.body, e) + ")"; + break; + case "space": + r = " "; + break; + case "subsup": + r = ""; + break; + case "macro": + r = (M = (S = lo[i]) != null ? S : co[i]) != null ? M : Q(t37.body, e); + break; + } + if (!t37.hasEmptyBranch("subscript")) { + r += "_"; + let x = Q(t37.subscript, e); + r += x.length !== 1 ? `(${x})` : x; + } + if (!t37.hasEmptyBranch("superscript")) { + r += "^"; + let x = Q(t37.superscript, e); + r += x.length !== 1 ? `(${x})` : x; + } + return r; +} +function Pg(t37, e) { + if (!e) + return t37; + let r = t37; + return e.variant === "double-struck" && (r = `bbb "${r}"`), e.variant === "script" && (r = `cc "${r}"`), e.variant === "fraktur" && (r = `fr "${r}"`), e.variant === "sans-serif" && (r = `sf "${r}"`), e.variant === "monospace" && (r = `tt "${r}"`), e.variantStyle === "bold" && (r = `bb "${r}"`), e.color ? `color({${e.color}})(${r})` : r; +} +function oe(t37, e) { + var c; + e != null || (e = {}), e.mathstyle = (c = e.mathstyle) != null ? c : "displaystyle"; + let { mathstyle: r, letterShapeStyle: i, context: n } = e != null ? e : {}; + r = r != null ? r : "displaystyle", i = i != null ? i : "tex", n != null || (n = {}); + let o = new T({ from: p(g(p({}, Rn()), { renderPlaceholder: () => new w(160, { maxFontSize: 1 }), letterShapeStyle: i }), n), mathstyle: r }), s = new y({ mode: "math", type: "root", body: se(t37, { context: o, parseMode: "math", mathstyle: r }) }).render(o); + return s ? (dr(Tt(s, o)), mr(s, { classes: "ML__latex" }).toMarkup()) : ""; +} +function mo(t37) { + if (typeof t37 == "string") { + let e = Rg(t37); + if (!e) + throw new Error(`Invalid color: ${t37}`); + return e; + } + return "C" in t37 ? zg(t37) : "a" in t37 ? Tp(t37) : t37; +} +function mi(t37) { + return t37 < 0 ? 0 : t37 > 255 ? 255 : Math.round(t37); +} +function Rg(t37) { + if (!t37 || t37[0] !== "#") + return; + t37 = t37.slice(1); + let e; + return t37.length <= 4 ? (e = { r: parseInt(t37[0] + t37[0], 16), g: parseInt(t37[1] + t37[1], 16), b: parseInt(t37[2] + t37[2], 16) }, t37.length === 4 && (e.a = parseInt(t37[3] + t37[3], 16) / 255)) : (e = { r: parseInt(t37[0] + t37[1], 16), g: parseInt(t37[2] + t37[3], 16), b: parseInt(t37[4] + t37[5], 16) }, t37.length === 8 && (e.a = parseInt(t37[6] + t37[7], 16) / 255)), e && typeof e.a == "undefined" && (e.a = 1), e; +} +function mc(t37) { + let [e, r, i] = [t37.L, t37.C, t37.H], n = i * Math.PI / 180, o = { L: e, a: r * Math.cos(n), b: r * Math.sin(n) }; + return t37.alpha !== void 0 && (o.alpha = t37.alpha), o; +} +function Ig(t37) { + let [e, r, i] = [t37.L, t37.a, t37.b], n = Math.sqrt(r * r + i * i), a = Math.atan2(i, r) * 180 / Math.PI, s = { L: e, C: n, H: a }; + return t37.alpha !== void 0 && (s.alpha = t37.alpha), s; +} +function cc(t37) { + let [e, r, i] = [t37.L, t37.a, t37.b], n = Math.pow(0.9999999984505198 * e + 0.39633779217376786 * r + 0.2158037580607588 * i, 3), o = Math.pow(1.00000000888176 * e - 0.10556134232365635 * r - 0.0638541747717059 * i, 3), a = Math.pow(e * 1.000000054672411 - 0.0894841820949657 * r - 1.2914855378640917 * i, 3), s = 4.076741661347994 * n - 3.307711590408193 * o + 0.230969928729428 * a, l = -1.2684380040921763 * n + 2.6097574006633715 * o - 0.3413193963102197 * a, c = -0.004196086541837188 * n - 0.7034186144594493 * o + 1.7076147009309444 * a, u = (d) => { + let m = Math.abs(d); + return m <= 31308e-7 ? d * 12.92 : (Math.sign(d) || 1) * (1.055 * Math.pow(m, 1 / 2.4) - 0.055); + }; + return [u(s), u(l), u(c)]; +} +function uc(t37) { + let [e, r, i] = t37; + return e >= 0 && e <= 1 && r >= 0 && r <= 1 && i >= 0 && i <= 1; +} +function dc(t37, e) { + let [r, i, n] = t37; + return r = mi(r * 255), i = mi(i * 255), n = mi(n * 255), e !== void 0 ? { r, g: i, b: n, alpha: e } : { r, g: i, b: n }; +} +function Tp(t37) { + let [e, r, i] = cc(t37); + if (uc([e, r, i])) + return dc([e, r, i], t37.alpha); + let n = Ig(t37); + if (n.C = 0, [e, r, i] = cc(mc(n)), !uc([e, r, i])) + return dc([e, r, i], t37.alpha); + let o = 0, a = t37.L, s = (o + a) / 2; + n.C = s; + let l = 0.36 / Math.pow(2, 12); + for (; a - o > l; ) + s = (o + a) / 2, n.C = s, [e, r, i] = cc(mc(n)), uc([e, r, i]) ? o = s : a = s; + return dc([e, r, i], t37.alpha); +} +function zg(t37) { + return Tp(mc(t37)); +} +function Dp(t37, e) { + let r = mo(t37), i = mo(e), n = 0.56, o = 0.57, a = 0.62, s = 0.65, l = 0.022, c = 1.414, u = 0.1, d = 5e-4, m = 1.14, h = 0.027, f = 1.14, b = 0.027; + function S(B) { + return B >= l ? B : B + (l - B) ** c; + } + function M(B) { + return (B < 0 ? -1 : 1) * Math.pow(Math.abs(B), 2.4); + } + let x = S(M(i.r / 255) * 0.2126729 + M(i.g / 255) * 0.7151522 + M(i.b / 255) * 0.072175), v = S(M(r.r / 255) * 0.2126729 + M(r.g / 255) * 0.7151522 + M(r.b / 255) * 0.072175), k, C, q; + return Math.abs(v - x) < d ? C = 0 : v > x ? (k = v ** n - x ** o, C = k * m) : (k = v ** s - x ** a, C = k * f), Math.abs(C) < u ? q = 0 : C > 0 ? q = C - b : q = C + h, q * 100; +} +function pc(t37, e, r) { + r != null || (r = "#fff"), e != null || (e = "#000"); + let i = Dp(t37, r), n = Dp(t37, e); + return Math.abs(i) > Math.abs(n) ? r : e; +} +function Kp(t37) { + let e = mo(t37), r = ((1 << 24) + (mi(e.r) << 16) + (mi(e.g) << 8) + mi(e.b)).toString(16).slice(1); + return e.alpha !== void 0 && e.alpha < 1 && (r += ("00" + Math.round(e.alpha * 255).toString(16)).slice(-2)), r[0] === r[1] && r[2] === r[3] && r[4] === r[5] && r[6] === r[7] && (r = r[0] + r[2] + r[4] + (e.alpha !== void 0 && e.alpha < 1 ? r[6] : "")), "#" + r; +} +function j(t37) { + let e = Bp(t37), r = ""; + for (let i of e) { + if (typeof i.value != "string") + return ""; + r += i.value; + } + return r; +} +function Bp(t37) { + let r = t37.model.selection.ranges; + if (r.length !== 1) + return []; + let i = t37.model.getAtoms(r[0]); + return i.length === 1 && i[0].type === "root" && (i = i[0].children), i.filter((n) => n.type !== "first"); +} +function Ng(t37, e) { + let r = Bp(t37); + if (r.length !== 1) + return false; + let i = Oa[e]; + return i ? !!i.test(r[0].value) : false; +} +function Fg(t37) { + return j(t37).length > 0; +} +function $g(t37) { + return [hc(t37, "double-struck", "mathbb", "tooltip.blackboard"), hc(t37, "fraktur", "mathfrak", "tooltip.fraktur"), hc(t37, "calligraphic", "mathcal", "tooltip.caligraphic"), fc(t37, "up", "mathrm", "tooltip.roman-upright"), fc(t37, "bold", "bm", "tooltip.bold"), fc(t37, "italic", "mathit", "tooltip.italic")]; +} +function Vg(t37) { + return [{ id: "accent-vec", class: "ML__center-menu", label: () => oe(`\\vec{${j(t37)}}`), visible: () => j(t37).length === 1, onMenuSelect: () => t37.insert("\\vec{#@}", { selectionMode: "item" }) }, { id: "accent-overrightarrow", class: "ML__center-menu", label: () => oe(`\\overrightarrow{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\overrightarrow{#@}", { selectionMode: "item" }) }, { id: "accent-overleftarrow", class: "ML__center-menu", label: () => oe(`\\overleftarrow{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\overleftarrow{#@}", { selectionMode: "item" }) }, { id: "accent-dot", class: "ML__center-menu", label: () => oe(`\\dot{${j(t37)}}`), visible: () => j(t37).length === 1, onMenuSelect: () => t37.insert("\\dot{#@}", { selectionMode: "item" }) }, { id: "accent-ddot", class: "ML__center-menu", label: () => oe(`\\ddot{${j(t37)}}`), visible: () => j(t37).length === 1, onMenuSelect: () => t37.insert("\\ddot{#@}", { selectionMode: "item" }) }, { id: "accent-bar", class: "ML__center-menu", label: () => oe(`\\bar{${j(t37)}}`), visible: () => j(t37).length === 1, onMenuSelect: () => t37.insert("\\bar{#@}", { selectionMode: "item" }) }, { id: "accent-overline", class: "ML__center-menu", label: () => oe(`\\overline{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\overline{#@}", { selectionMode: "item" }) }, { id: "accent-overgroup", class: "ML__center-menu", label: () => oe(`\\overgroup{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\overgroup{#@}", { selectionMode: "item" }) }, { id: "accent-overbrace", class: "ML__center-menu", label: () => oe(`\\overbrace{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\overbrace{#@}", { selectionMode: "item" }) }, { id: "accent-underline", class: "ML__center-menu", label: () => oe(`\\underline{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\underline{#@}", { selectionMode: "item" }) }, { id: "accent-undergroup", class: "ML__center-menu", label: () => oe(`\\undergroup{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\undergroup{#@}", { selectionMode: "item" }) }, { id: "accent-underbrace", class: "ML__center-menu", label: () => oe(`\\underbrace{${j(t37)}}`), visible: () => j(t37).length > 0, onMenuSelect: () => t37.insert("\\underbrace{#@}", { selectionMode: "item" }) }]; +} +function qg(t37) { + return [{ id: "decoration-boxed", label: () => oe(`\\boxed{${t37.getValue(t37.model.selection)}}}`), onMenuSelect: () => t37.insert("\\boxed{#@}", { selectionMode: "item" }) }, { id: "decoration-red-box", label: () => oe(`\\bbox[5px, border: 2px solid red]{${t37.getValue(t37.model.selection)}}`), onMenuSelect: () => t37.insert("\\bbox[5px, border: 2px solid red]{#@}", { selectionMode: "item" }) }, { id: "decoration-dashed-black-box", label: () => oe(`\\bbox[5px, border: 2px dashed black]{${t37.getValue(t37.model.selection)}}`), onMenuSelect: () => t37.insert("\\bbox[5px, border: 2px dashed black]{#@}", { selectionMode: "item" }) }]; +} +function Hg(t37) { + let e = []; + for (let r of Object.keys(It)) + e.push({ id: `background-color-${r}`, class: (Kp(pc(It[r])) === "#000" ? "dark-contrast" : "light-contrast") + " menu-swatch", label: ``, ariaLabel: () => { + var i; + return (i = P(r)) != null ? i : r; + }, checked: () => { + var i; + return (i = { some: "mixed", all: true }[t37.queryStyle({ backgroundColor: r })]) != null ? i : false; + }, onMenuSelect: () => t37.applyStyle({ backgroundColor: r }, { operation: "toggle" }) }); + return e; +} +function Wg(t37) { + let e = []; + for (let r of Object.keys(zt)) + e.push({ id: `color-${r}`, class: (pc(zt[r]) === "#000" ? "dark-contrast" : "light-contrast") + " menu-swatch", label: ``, ariaLabel: () => { + var i; + return (i = P(r)) != null ? i : r; + }, checked: () => { + var i; + return (i = { some: "mixed", all: true }[t37.queryStyle({ color: r })]) != null ? i : false; + }, onMenuSelect: () => t37.applyStyle({ color: r }, { operation: "toggle" }) }); + return e; +} +var gc = class extends ln { + constructor(e, r, i, n) { + super(e, r), this.row = i, this.col = n; + } + set active(e) { + let r = this.parentMenu.children; + if (e) + for (let i of r) + i.element.classList.toggle("active", i.row <= this.row && i.col <= this.col); + else + for (let i of r) + i.element.classList.remove("active"); + } +}; +function Ug(t37) { + let e = []; + for (let r = 1; r <= 5; r++) + for (let i = 1; i <= 5; i++) + e.push({ id: `insert-matrix-${r}x${i}`, onCreate: (n, o) => new gc(n, o, r, i), label: "\u2610", tooltip: () => P("tooltip.row-by-col", r, i), data: { row: r, col: i }, onMenuSelect: () => { + t37.insert(`\\begin{pmatrix}${Array(r).fill(Array(i).fill("#?").join(" & ")).join("\\\\")}\\end{pmatrix}`, { selectionMode: "item" }); + } }); + return e; +} +function Op(t37) { + return [{ label: () => P("menu.array.add row above"), id: "add-row-above", onMenuSelect: () => t37.executeCommand("addRowBefore"), keyboardShortcut: "shift+alt+[Return]", visible: () => pi(t37) }, { label: () => P("menu.array.add row below"), id: "add-row-below", onMenuSelect: () => t37.executeCommand("addRowAfter"), keyboardShortcut: "alt+[Return]", visible: () => pi(t37) }, { label: () => P("menu.array.add column before"), id: "add-column-before", onMenuSelect: () => t37.executeCommand("addColumnBefore"), visible: () => pi(t37), keyboardShortcut: "shift+alt+[Tab]", enabled: () => { + let e = t37.model.parentEnvironment; + if (!e) + return false; + let [r, i] = Gg(t37); + return r < e.maxColumns; + } }, { label: () => P("menu.array.add column after"), id: "add-column-after", onMenuSelect: () => t37.executeCommand("addColumnAfter"), keyboardShortcut: "alt+[Tab]", visible: () => pi(t37) }, { type: "divider" }, { label: () => P("menu.array.delete row"), id: "delete-row", onMenuSelect: () => t37.executeCommand("removeRow"), visible: () => pi(t37) }, { label: () => P("menu.array.delete column"), id: "delete-column", onMenuSelect: () => t37.executeCommand("removeColumn"), visible: () => pi(t37) }, { type: "divider" }, { label: () => P("menu.borders"), visible: () => (Jg(t37) || pi(t37)) && t37.isSelectionEditable, submenu: [{ label: " \u22F1 ", id: "environment-no-border", onMenuSelect: () => po(t37, "matrix") }, { label: "(\u22F1)", id: "environment-parentheses", onMenuSelect: () => po(t37, "pmatrix") }, { label: "[\u22F1]", id: "environment-brackets", onMenuSelect: () => po(t37, "bmatrix") }, { label: "|\u22F1|", id: "environment-bar", onMenuSelect: () => po(t37, "vmatrix") }, { label: "{\u22F1}", id: "environment-braces", onMenuSelect: () => po(t37, "Bmatrix") }], submenuClass: "border-submenu" }, { type: "divider" }, { label: () => P("menu.insert matrix"), id: "insert-matrix", visible: () => t37.isSelectionEditable, submenu: Ug(t37), submenuClass: "insert-matrix-submenu", columnCount: 5 }, { label: () => P("menu.mode"), id: "mode", visible: () => t37.isSelectionEditable && t37.model.selectionIsCollapsed, submenu: [{ label: () => P("menu.mode-math"), id: "mode-math", onMenuSelect: () => { + Bt(t37, "accept-all"), t37.executeCommand(["switchMode", "math"]); + }, checked: () => t37.model.mode === "math" }, { label: () => P("menu.mode-text"), id: "mode-text", onMenuSelect: () => { + Bt(t37, "accept-all"), t37.executeCommand(["switchMode", "text"]); + }, checked: () => t37.model.mode === "text" }, { label: () => P("menu.mode-latex"), id: "mode-latex", onMenuSelect: () => t37.executeCommand(["switchMode", "latex"]), checked: () => t37.model.mode === "latex" }] }, { type: "divider" }, { label: () => P("menu.font-style"), id: "variant", visible: () => t37.isSelectionEditable, submenu: $g(t37), submenuClass: "variant-submenu" }, { label: () => P("menu.color"), id: "color", visible: () => t37.isSelectionEditable, submenu: Wg(t37), columnCount: 4, submenuClass: "swatches-submenu" }, { label: () => P("menu.background-color"), id: "background-color", visible: () => t37.isSelectionEditable, submenu: Hg(t37), columnCount: 4, submenuClass: "swatches-submenu" }, { label: () => P("menu.accent"), id: "accent", visible: () => t37.isSelectionEditable, submenu: Vg(t37), submenuClass: "variant-submenu" }, { label: () => P("menu.decoration"), id: "decoration", visible: () => t37.isSelectionEditable && j(t37).length > 0, submenu: qg(t37), submenuClass: "variant-submenu" }, { type: "divider" }, { label: () => P("menu.evaluate"), id: "ce-evaluate", visible: () => t37.isSelectionEditable && globalThis.MathfieldElement.computeEngine !== null, onMenuSelect: () => { + let e = jg(t37); + if (!e) { + t37.model.announce("plonk"); + return; + } + t37.model.selectionIsCollapsed ? (t37.model.position = t37.model.lastOffset, t37.insert(`=${e}`, { insertionMode: "insertAfter", selectionMode: "item" })) : t37.insert(e, { insertionMode: "replaceSelection", selectionMode: "item" }); + } }, { label: () => P("menu.simplify"), id: "ce-simplify", visible: () => t37.isSelectionEditable && globalThis.MathfieldElement.computeEngine !== null, onMenuSelect: () => { + var e, r; + if (t37.model.selectionIsCollapsed) { + let i = (e = t37.expression) == null ? void 0 : e.simplify(); + if (t37.model.position = t37.model.lastOffset, !i) { + t37.model.announce("plonk"); + return; + } + t37.insert(`=${i.latex}`, { insertionMode: "insertAfter", selectionMode: "item" }); + } else { + let i = (r = globalThis.MathfieldElement.computeEngine) == null ? void 0 : r.parse(t37.getValue(t37.model.selection)).simplify(); + if (!i) { + t37.model.announce("plonk"); + return; + } + t37.insert(i.latex, { insertionMode: "replaceSelection", selectionMode: "item" }); + } + } }, { label: () => { + var i; + let e = globalThis.MathfieldElement.computeEngine; + if (e === null) + return ""; + let r = (i = t37.expression) == null ? void 0 : i.unknowns[0]; + if (r) { + let n = e.box(r).latex; + return P("menu.solve-for", oe(n)); + } + return P("menu.solve"); + }, id: "ce-solve", visible: () => { + var e; + return t37.isSelectionEditable && globalThis.MathfieldElement.computeEngine !== null && ((e = t37.expression) == null ? void 0 : e.unknowns.length) === 1 && t37.expression.unknowns[0] !== "Nothing"; + }, onMenuSelect: () => { + var n; + let e = t37.expression, r = e == null ? void 0 : e.unknowns[0], i = (n = e.solve(r)) == null ? void 0 : n.map((o) => { + var a; + return (a = o.simplify().latex) != null ? a : ""; + }); + if (!i) { + t37.model.announce("plonk"); + return; + } + t37.insert(`${r}=${i.length === 1 ? i[0] : "\\left\\lbrace" + (i == null ? void 0 : i.join(", ")) + "\\right\\rbrace"}`, { insertionMode: "replaceAll", selectionMode: "item" }); + } }, { type: "divider" }, { label: () => P("menu.cut"), id: "cut", onMenuSelect: () => t37.executeCommand("cutToClipboard"), visible: () => !t37.options.readOnly && t37.isSelectionEditable, keyboardShortcut: "meta+X" }, { label: () => P("menu.copy"), id: "copy", submenu: [{ label: () => P("menu.copy-as-latex"), id: "copy-latex", onMenuSelect: () => z.copyToClipboard(t37, "latex"), keyboardShortcut: "meta+C" }, { label: () => P("menu.copy-as-ascii-math"), id: "copy-ascii-math", onMenuSelect: () => z.copyToClipboard(t37, "ascii-math") }, { label: () => P("menu.copy-as-mathml"), id: "copy-math-ml", onMenuSelect: () => z.copyToClipboard(t37, "math-ml") }] }, { label: () => P("menu.paste"), id: "paste", onMenuSelect: () => t37.executeCommand("pasteFromClipboard"), visible: () => t37.hasEditableContent, keyboardShortcut: "meta+V" }, { label: () => P("menu.select-all"), id: "select-all", keyboardShortcut: "meta+A", onMenuSelect: () => t37.executeCommand("selectAll") }]; +} +function pi(t37) { + var e; + return !!((e = t37.model.parentEnvironment) != null && e.array); +} +function Jg(t37) { + return t37.model.at(t37.model.position).type === "array"; +} +function Gg(t37) { + var r; + let e = (r = t37.model.parentEnvironment) == null ? void 0 : r.array; + return e ? [e.length, e.reduce((i, n) => Math.max(i, n.length), 0)] : [0, 0]; +} +function po(t37, e) { + Zr(t37), t37.flushInlineShortcutBuffer(), Wl(t37.model, e), V(t37); +} +function jg(t37) { + var i, n; + let e; + if (t37.model.selectionIsCollapsed ? e = (i = globalThis.MathfieldElement.computeEngine) == null ? void 0 : i.parse(t37.getValue(), { canonical: false }) : e = (n = globalThis.MathfieldElement.computeEngine) == null ? void 0 : n.parse(t37.getValue(t37.model.selection), { canonical: false }), !e) + return ""; + let r = e.evaluate(); + return r.isSame(e) && (r = e.N()), r.latex; +} +function hc(t37, e, r, i) { + return { id: `variant-${e}`, label: () => { + var o; + return j(t37).length < 12 ? oe(`\\${r}{${j(t37)}}`) : (o = P(i)) != null ? o : i; + }, class: "ML__xl", tooltip: () => { + var n; + return (n = P(i)) != null ? n : i; + }, visible: () => Ng(t37, e), checked: () => { + var n; + return (n = { some: "mixed", all: true }[t37.queryStyle({ variant: e })]) != null ? n : false; + }, onMenuSelect: () => t37.applyStyle({ variant: e }, { operation: "toggle" }) }; +} +function fc(t37, e, r, i) { + return { id: `variant-style-${e}`, label: () => { + var o; + let n = j(t37); + return n.length > 0 && n.length < 12 ? oe(`\\${r}{${j(t37)}}`) : (o = P(i)) != null ? o : i; + }, class: () => { + let n = j(t37); + return n.length > 0 && n.length < 12 ? "ML__xl" : ""; + }, tooltip: () => { + var n; + return (n = P(i)) != null ? n : i; + }, visible: e === "bold" ? true : () => Fg(t37), checked: () => { + var n; + return (n = { some: "mixed", all: true }[t37.queryStyle({ variantStyle: e })]) != null ? n : false; + }, onMenuSelect: () => t37.applyStyle({ variantStyle: e }, { operation: "toggle" }) }; +} +function Cr(t37, e) { + return typeof t37 == "string" ? t37 + mt(e) : mt(t37); +} +function yc(t37) { + var r; + let e; + if (t37.parent.type === "prompt") + t37.parentBranch === "body" && (e = "prompt"); + else if (t37.parentBranch === "body") { + if (t37.type === "first" && (t37.parent.type === "root" ? e = "mathfield" : t37.parent.type === "surd" ? e = "radicand" : t37.parent.type === "genfrac" ? e = "fraction" : t37.parent.type === "sizeddelim" && (e = "delimiter"), e)) + return e; + t37.type === "subsup" ? t37.superscript && t37.subscript ? e = "superscript and subscript" : t37.superscript ? e = "superscript" : t37.subscript && (e = "subscript") : t37.type && (e = (r = { accent: "accented", array: "array", box: "box", chem: "chemical formula", delim: "delimiter", enclose: "cross out", "extensible-symbol": "extensible symbol", error: "error", first: "first", genfrac: "fraction", group: "group", latex: "LaTeX", leftright: "delimiter", line: "line", subsup: "subscript-superscript", operator: "operator", overunder: "over-under", placeholder: "placeholder", rule: "rule", sizeddelim: "delimiter", space: "space", spacing: "spacing", surd: "square root", text: "text", prompt: "prompt", root: "math field", mop: "operator" }[t37.type]) != null ? r : "parent"); + } else if (t37.parent.type === "genfrac") { + if (t37.parentBranch === "above") + return "numerator"; + if (t37.parentBranch === "below") + return "denominator"; + } else + t37.parent.type === "surd" ? t37.parentBranch === "above" && (e = "index") : t37.parentBranch === "superscript" ? e = "superscript" : t37.parentBranch === "subscript" && (e = "subscript"); + return e != null ? e : "parent"; +} +function Pp(t37, e, r, i) { + let n = ""; + if (e === "plonk") { + globalThis.MathfieldElement.playSound("plonk"), t37.flushInlineShortcutBuffer(); + return; + } + if (e === "delete") + n = Cr("deleted: ", i); + else if (e === "focus" || e.includes("move")) + n = Xg(t37.model, r), n += Zg(t37.model); + else if (e === "replacement") + n = Cr(t37.model.at(t37.model.position)); + else if (e === "line") { + let o = Cr(t37.model.root); + t37.keyboardDelegate.setAriaLabel(o); + } else + n = i ? Cr(e + " ", i) : e; + if (n) { + let o = t37.ariaLiveText.textContent.includes("\xA0") ? " \u202F " : " \xA0 "; + t37.ariaLiveText.textContent = n + o; + } +} +function Xg(t37, e) { + if (Number.isNaN(e)) + return ""; + let r = t37.at(e); + if (!r || r.treeDepth <= t37.at(t37.position).treeDepth) + return ""; + let i = "", n = r.parent, o = t37.at(t37.position).parent; + for (; n !== t37.root && n !== o; ) + i += `out of ${yc(n)};`, n = n.parent; + return i; +} +function Zg(t37) { + if (!t37.selectionIsCollapsed) + return `selected: ${Cr(t37.getAtoms(t37.selection))}`; + let e = "", r = t37.at(t37.position); + if (r.isFirstSibling && (e = `start of ${yc(r)}: `), r.isLastSibling) { + if (!r.isFirstSibling) { + if (!r.parent.parent) + return `${Cr(r)}; end of mathfield`; + e = `${Cr(r)}; end of ${yc(r)}`; + } + } else + e += Cr(r); + return e; +} +var ps = class { + constructor(e, r, i) { + this.mathfield = e, this.mode = r, this.silenceNotifications = false, this._selection = { ranges: [[0, 0]], direction: "none" }, this._anchor = 0, this._position = 0, this.root = i; + } + dispose() { + this.mathfield = void 0; + } + getState() { + let e = { ranges: [...this._selection.ranges] }; + return this.selection.direction && this.selection.direction !== "none" && (e.direction = this.selection.direction), { content: this.root.toJson(), selection: e, mode: this.mode }; + } + setState(e, r) { + var o; + let i = this.silenceNotifications; + this.silenceNotifications = (o = r == null ? void 0 : r.silenceNotifications) != null ? o : true; + let n = {}; + if ((r == null ? void 0 : r.type) === "undo" && (n = { inputType: "historyUndo" }), (r == null ? void 0 : r.type) === "redo" && (n = { inputType: "historyRedo" }), this.contentWillChange(n)) { + let a = this.silenceNotifications; + this.silenceNotifications = true, this.mode = e.mode, this.root = ot(e.content), this.selection = e.selection, this.silenceNotifications = a, this.contentDidChange(n); + } + this.silenceNotifications = i; + } + get atoms() { + return this.root.children; + } + get selection() { + return this._selection; + } + set selection(e) { + this.setSelection(e); + } + setSelection(e, r) { + return !this.mathfield.contentEditable && this.mathfield.userSelect === "none" ? false : this.deferNotifications({ selection: true }, () => { + var l, c, u; + let i = this.normalizeSelection(e, r); + if (i === void 0) + throw new TypeError("Invalid selection"); + if (i.ranges.length === 1 && i.ranges[0][0] === i.ranges[0][1]) { + let d = i.ranges[0][0]; + if (!this.mathfield.dirty && !((l = this.at(d)) != null && l.parentPrompt) && this.mathfield.hasEditablePrompts) { + if ((c = this.at(d - 1)) != null && c.parentPrompt) { + this._anchor = this.normalizeOffset(d - 1), this._position = this._anchor, this._selection = this.normalizeSelection(this._anchor); + return; + } + if ((u = this.at(d + 1)) != null && u.parentPrompt) { + this._anchor = this.normalizeOffset(d + 1), this._position = this._anchor, this._selection = this.normalizeSelection(this._anchor); + return; + } + this._anchor = 0, this._position = 0, this._selection = { ranges: [[0, 0]] }; + return; + } + this._anchor = d, this._position = d, this._selection = i; + return; + } + let n = te(i); + i.direction === "backward" ? [this._position, this._anchor] = n : [this._anchor, this._position] = n; + let o = this.at(n[0] + 1), a = this.at(n[1]), s = y.commonAncestor(o, a); + (s == null ? void 0 : s.type) === "array" && o.parent === s && a.parent === s ? this._selection = { ranges: [n], direction: i.direction } : this._selection = { ranges: [n], direction: i.direction }, this._position >= 0 && this._position <= this.lastOffset; + }); + } + setPositionHandlingPlaceholder(e) { + var i; + let r = this.at(e); + (r == null ? void 0 : r.type) === "placeholder" ? this.setSelection(e - 1, e) : ((i = r == null ? void 0 : r.rightSibling) == null ? void 0 : i.type) === "placeholder" ? this.setSelection(e, e + 1) : this.position = e, r instanceof ie && r.isSuggestion && (r.isSuggestion = false), this.mathfield.stopCoalescingUndo(); + } + get position() { + return this._position; + } + set position(e) { + this.setSelection(e, e); + } + get anchor() { + return this._anchor; + } + get selectionIsCollapsed() { + return this._anchor === this._position; + } + get selectionIsPlaceholder() { + return Math.abs(this._anchor - this._position) === 1 ? this.at(Math.max(this._anchor, this._position)).type === "placeholder" : false; + } + collapseSelection(e = "forward") { + return this._anchor === this._position ? false : (e === "backward" ? this.position = Math.min(this._anchor, this._position) : this.position = Math.max(this._anchor, this._position), true); + } + get lastOffset() { + return this.atoms.length - 1; + } + at(e) { + return this.atoms[e]; + } + offsetOf(e) { + return this.atoms.indexOf(e); + } + getSiblingsRange(e) { + let r = this.at(e), { parent: i } = r; + if (!i) + return [0, this.lastOffset]; + let n = r.parent.branch(r.parentBranch); + return [this.offsetOf(n[0]), this.offsetOf(n[n.length - 1])]; + } + getBranchRange(e, r) { + let i = this.at(e).branch(r); + return [this.offsetOf(i[0]), this.offsetOf(i[i.length - 1])]; + } + getAtoms(e, r, i) { + let n = i != null ? i : {}; + if (Oi(e)) { + if (n = r != null ? r : {}, e.ranges.length > 1) + return e.ranges.reduce((u, d) => [...u, ...this.getAtoms(d, n)], []); + e = e.ranges[0]; + } + let o, a; + if (Lt(e)) { + if (o = e, !Lt(r)) + return []; + a = r; + } else + [o, a] = e, n = r != null ? r : {}; + if (!Number.isFinite(o)) + return []; + n.includeChildren === void 0 && (n.includeChildren = false), o < 0 && (o = this.lastOffset - o + 1), a < 0 && (a = this.lastOffset + a + 1); + let s = Math.min(o, a) + 1, l = Math.max(o, a); + if (!n.includeChildren && s === 1 && l === this.lastOffset) + return [this.root]; + let c = []; + for (let u = s; u <= l; u++) { + let d = this.atoms[u]; + Rp(this, d, s, l) && c.push(d); + } + return n.includeChildren || (c = c.filter((u) => { + let d = false, { parent: m } = u; + for (; m && !d; ) + d = Rp(this, m, s, l), m = m.parent; + return !d; + })), c; + } + getAllAtoms(e = 0) { + let r = [], i = this.lastOffset; + for (let n = e; n <= i; n++) + r.push(this.atoms[n]); + for (let n = 0; n < e; n++) + r.push(this.atoms[n]); + return r; + } + findAtom(e, r = 0, i = "forward") { + let n, o = this.lastOffset; + if (i === "forward") { + for (let a = r; a <= o; a++) + if (n = this.atoms[a], e(n)) + return n; + for (let a = 0; a < r; a++) + if (n = this.atoms[a], e(n)) + return n; + return; + } + for (let a = r; a >= 0; a--) + if (n = this.atoms[a], e(n)) + return n; + for (let a = o; a > r; a--) + if (n = this.atoms[a], e(n)) + return n; + } + extractAtoms(e) { + let r = this.getAtoms(e); + if (r.length === 1 && !r[0].parent) + if (r[0].type === "root") + r = [...r[0].body], r.shift(); + else + return r = this.root.cells.flat(), this.root = new y({ type: "root", body: [] }), r; + for (let i of r) + i.parent.removeChild(i); + return r; + } + deleteAtoms(e) { + e != null || (e = [0, -1]), this.extractAtoms(e), this.position = e[0]; + } + atomToString(e, r) { + let i = r != null ? r : "latex"; + if (i.startsWith("latex")) + return y.serialize([e], { expandMacro: i === "latex-expanded", skipStyles: i === "latex-unstyled", skipPlaceholders: i === "latex-without-placeholders", defaultMode: this.mathfield.options.defaultMode }); + if (i === "math-ml") + return F(e); + if (i === "spoken") + return mt(e); + if (i === "spoken-text") { + let n = globalThis.MathfieldElement.textToSpeechMarkup; + globalThis.MathfieldElement.textToSpeechMarkup = ""; + let o = mt(e); + return globalThis.MathfieldElement.textToSpeechMarkup = n, o; + } + if (i === "spoken-ssml" || i === "spoken-ssml-with-highlighting") { + let n = globalThis.MathfieldElement.textToSpeechMarkup; + globalThis.MathfieldElement.textToSpeechMarkup = "ssml"; + let o = mt(e); + return globalThis.MathfieldElement.textToSpeechMarkup = n, o; + } + return i === "plain-text" ? Q(e, { plain: true }) : i === "ascii-math" ? Q(e) : (console.error(`MathLive 0.100.0: Unexpected format "${i}`), ""); + } + getValue(e, r, i) { + if (e === void 0) + return this.atomToString(this.root, "latex"); + if (typeof e == "string" && e !== "math-json") + return this.atomToString(this.root, e); + let n, o; + if (Lt(e) && Lt(r) ? (n = [this.normalizeRange([e, r])], o = i) : $r(e) ? (n = [this.normalizeRange(e)], o = r) : Oi(e) ? (n = e.ranges, o = r) : (n = [this.normalizeRange([0, -1])], o = e), o != null || (o = "latex"), o === "math-json") { + if (!globalThis.MathfieldElement.computeEngine) + return window[Symbol.for("io.cortexjs.compute-engine")] || console.error(`The CortexJS Compute Engine library is not available. +Load the library, for example with: +import "https://unpkg.com/@cortex-js/compute-engine?module"`), '["Error", "compute-engine-not-available"]'; + let a = this.getValue({ ranges: n }, "latex-unstyled"); + try { + let s = globalThis.MathfieldElement.computeEngine.parse(a); + return JSON.stringify(s.json); + } catch (s) { + return JSON.stringify(["Error", `'${s.toString()}'`]); + } + } + if (o.startsWith("latex")) { + let a = { expandMacro: o === "latex-expanded", skipStyles: o === "latex-unstyled", skipPlaceholders: o === "latex-without-placeholders", defaultMode: this.mathfield.options.defaultMode }; + return K(n.map((s) => y.serialize(this.getAtoms(s), a))); + } + return n.map((a) => this.getAtoms(a).map((s) => this.atomToString(s, o)).join("")).join(""); + } + extendSelectionTo(e, r) { + return !this.mathfield.contentEditable && this.mathfield.userSelect === "none" ? false : this.deferNotifications({ selection: true }, () => { + let i = this.normalizeRange([e, r]), [n, o] = i, { parent: a } = this.at(o); + if (a && (a.type === "genfrac" || a.type === "subsup")) + for (; a !== this.root && bc(this, a, [n, o]); ) + o = this.offsetOf(a), a = a.parent; + for (a = this.at(n).parent; a !== this.root && bc(this, a, [n, o]); ) + n = this.offsetOf(a.leftSibling), a = a.parent; + if (a = this.at(o).parent, (a == null ? void 0 : a.type) === "genfrac") + for (; a !== this.root && bc(this, a, [n, o]); ) + o = this.offsetOf(a), o >= 0, a = a.parent; + this._position = this.normalizeOffset(r), this._selection = { ranges: [[n, o]], direction: "none" }; + }); + } + announce(e, r, i = []) { + var o, a; + ((a = (o = this.mathfield.host) == null ? void 0 : o.dispatchEvent(new CustomEvent("announce", { detail: { command: e, previousPosition: r, atoms: i }, cancelable: true, bubbles: true, composed: true }))) != null ? a : true) && Pp(this.mathfield, e, r, i); + } + deferNotifications(e, r) { + let i = this._selection, n = this._anchor, o = this._position, a = this.silenceNotifications; + this.silenceNotifications = true; + let s = this.root.changeCounter; + r(); + let l = this.root.changeCounter !== s, c = n !== this._anchor || o !== this._position || R0(this._selection, i) === "different"; + return this.silenceNotifications = a, e.content && l && this.contentDidChange({ inputType: e.type }), e.selection && c && this.selectionDidChange(), l || c; + } + normalizeOffset(e) { + return e > 0 ? e = Math.min(e, this.lastOffset) : e < 0 && (e = this.lastOffset + e + 1), e; + } + normalizeRange(e) { + let [r, i] = e; + return r = this.normalizeOffset(r), i = this.normalizeOffset(i), r < i ? [r, i] : [i, r]; + } + normalizeSelection(e, r) { + var n; + let i; + if (Lt(e)) { + let o = this.normalizeOffset(e); + if (Lt(r)) { + let a = this.normalizeOffset(r); + i = o <= a ? { ranges: [[o, a]], direction: "none" } : { ranges: [[a, o]], direction: "backward" }; + } else + i = { ranges: [[o, o]], direction: "none" }; + } else if ($r(e)) { + let o = this.normalizeOffset(e[0]), a = this.normalizeOffset(e[1]); + i = o <= a ? { ranges: [[o, a]], direction: "none" } : { ranges: [[a, o]], direction: "backward" }; + } else + Oi(e) && (i = { ranges: e.ranges.map((o) => this.normalizeRange(o)), direction: (n = e.direction) != null ? n : "none" }); + return i; + } + get parentEnvironment() { + let e = this.at(this.position).parent; + if (e) { + for (; e.parent && e.type !== "array"; ) + e = e.parent; + if (e.type === "array") + return e; + } + } + get cell() { + var r; + let e = this.at(this.position); + if (e) { + for (; e && ((r = e.parent) == null ? void 0 : r.type) !== "array"; ) + e = e.parent; + if (!(!(e != null && e.parent) || e.parent.type !== "array")) + return e.parentBranch; + } + } + contentWillChange(e = {}) { + if (this.silenceNotifications || !this.mathfield) + return true; + let r = this.silenceNotifications; + this.silenceNotifications = true; + let i = this.mathfield.onContentWillChange(e); + return this.silenceNotifications = r, i; + } + contentDidChange(e) { + if (window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.update(We(this.mathfield)), this.silenceNotifications || !this.mathfield.host || !this.mathfield) + return; + let r = this.silenceNotifications; + this.silenceNotifications = true, setTimeout(() => { + var i; + !this.mathfield || !tt(this.mathfield) || !this.mathfield.host || (this.mathfield.host.dispatchEvent(new InputEvent("input", g(p({}, e), { data: e.data ? e.data : (i = e.inputType) != null ? i : "", bubbles: true, composed: true }))), this.silenceNotifications = r); + }, 0); + } + selectionDidChange() { + if (!this.mathfield || (window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.update(We(this.mathfield)), this.silenceNotifications)) + return; + let e = this.silenceNotifications; + this.silenceNotifications = true, this.mathfield.onSelectionDidChange(), this.silenceNotifications = e; + } +}; +function Rp(t37, e, r, i) { + let n = t37.offsetOf(e); + if (n < r || n > i) + return false; + if (!e.hasChildren) + return true; + let o = t37.offsetOf(e.firstChild); + if (o >= r && o <= i) { + let a = t37.offsetOf(e.lastChild); + if (a >= r && a <= i) + return true; + } + return false; +} +function bc(t37, e, r) { + if (!(e != null && e.hasChildren)) + return false; + let [i, n] = r, o = t37.offsetOf(e.firstChild), a = t37.offsetOf(e.lastChild); + return o >= i && o <= n && a >= o && a <= n; +} +function ho(t37, e, r, i) { + var o, a, s, l, c, u; + let n = r.parent; + if (n && r instanceof H) { + let d = !i && e === "forward" || i === "body" && e === "backward", m = d ? t37.offsetOf(r.firstChild) : t37.offsetOf(r.lastChild); + return d ? r.rightDelim !== "?" && r.rightDelim !== "." ? (r.leftDelim = ".", r.isDirty = true) : (n.addChildrenAfter(r.removeBranch("body"), r), n.removeChild(r), m--) : r.leftDelim !== "?" && r.leftDelim !== "." ? (r.rightDelim = ".", r.isDirty = true) : (n.addChildrenAfter(r.removeBranch("body"), r), n.removeChild(r), m--), t37.position = m, true; + } + if (n && r.type === "surd") { + if (e === "forward" && !i || e === "backward" && i === "body") { + let d = r.leftSibling; + r.hasChildren && n.addChildrenAfter(r.removeBranch("body"), r), n.removeChild(r), t37.position = t37.offsetOf(d); + } else + e === "forward" && i === "body" ? t37.position = t37.offsetOf(r) : !i && e === "backward" ? r.hasChildren ? t37.position = t37.offsetOf(r.lastChild) : (t37.position = Math.max(0, t37.offsetOf(r) - 1), n.removeChild(r)) : i === "above" && (r.hasEmptyBranch("above") && r.removeBranch("above"), e === "backward" ? t37.position = t37.offsetOf(r.leftSibling) : t37.position = t37.offsetOf(r.body[0])); + return true; + } + if (n && (r.type === "box" || r.type === "enclose")) { + let d = i && e === "backward" || !i && e === "forward" ? r.leftSibling : r.lastChild; + return n.addChildrenAfter(r.removeBranch("body"), r), n.removeChild(r), t37.position = t37.offsetOf(d), true; + } + if (r.type === "genfrac" || r.type === "overunder") { + if (!i) + return r.type === "overunder" && r.hasEmptyBranch("body") || r.type === "genfrac" && r.hasEmptyBranch("below") && r.hasEmptyBranch("above") ? false : (t37.position = t37.offsetOf(e === "forward" ? r.firstChild : r.lastChild), true); + let d = ct.fractionNavigationOrder === "numerator-denominator" ? "above" : "below", m = d === "above" ? "below" : "above"; + if (n && (e === "forward" && i === d || e === "backward" && i === m)) { + let h = r.removeBranch(d), f = r.removeBranch(m); + return n.addChildrenAfter([...h, ...f], r), n.removeChild(r), t37.position = t37.offsetOf(h.length > 0 ? h[h.length - 1] : f[0]), true; + } + return e === "backward" ? t37.position = t37.offsetOf(r.leftSibling) : t37.position = t37.offsetOf(r), true; + } + if (r.type === "extensible-symbol" || r.type === "subsup") { + if (!i && e === "forward") + return false; + if (!i) { + if (r.subscript || r.superscript) { + let d = e === "forward" ? (s = (o = r.superscript) == null ? void 0 : o[0]) != null ? s : (a = r.subscript) == null ? void 0 : a[0] : (u = (l = r.subscript) == null ? void 0 : l[0].lastSibling) != null ? u : (c = r.superscript) == null ? void 0 : c[0].lastSibling; + return d && (t37.position = t37.offsetOf(d)), true; + } + return false; + } + if (!r.hasChildren && r.type === "subsup") { + let d = e === "forward" ? t37.offsetOf(r) : Math.max(0, t37.offsetOf(r) - 1); + return r.parent.removeChild(r), t37.position = d, true; + } + if (i === "superscript") + if (e === "backward") { + let d = t37.offsetOf(r.firstChild) - 1; + d >= 0, t37.position = d; + } else + r.subscript ? t37.position = t37.offsetOf(r.subscript[0]) : t37.position = t37.offsetOf(r); + else + i === "subscript" && (e === "backward" && r.superscript ? t37.position = t37.offsetOf(r.superscript[0].lastSibling) : e === "backward" ? t37.position = t37.offsetOf(r.firstChild) - 1 : t37.position = t37.offsetOf(r)); + if (i && r.hasEmptyBranch(i) && (r.removeBranch(i), r.type === "subsup" && !r.subscript && !r.superscript)) { + let d = e === "forward" ? t37.offsetOf(r) : Math.max(0, t37.offsetOf(r) - 1); + r.parent.removeChild(r), t37.position = d; + } + return true; + } + if ((n == null ? void 0 : n.type) === "genfrac" && !i && r.type !== "first") { + let d = t37.offsetOf(r.leftSibling); + return n.removeChild(r), n.hasEmptyBranch("above") && n.hasEmptyBranch("below") ? (d = t37.offsetOf(n.leftSibling), n.parent.removeChild(n), t37.announce("delete", void 0, [n]), t37.position = d, true) : (t37.announce("delete", void 0, [r]), t37.position = d, true); + } + if (e === "backward" && ((n == null ? void 0 : n.command) === "\\ln" || (n == null ? void 0 : n.command) === "\\log") && r.parentBranch !== "body") { + let d = t37.offsetOf(n.leftSibling); + return n.parent.removeChild(n), t37.announce("delete", void 0, [n]), t37.position = d, true; + } + return false; +} +function Ip(t37) { + return !t37.mathfield.isSelectionEditable || !t37.contentWillChange({ inputType: "deleteContentBackward" }) ? false : t37.selectionIsCollapsed ? t37.deferNotifications({ content: true, selection: true, type: "deleteContentBackward" }, () => { + let e = t37.at(t37.position); + if (!(e && ho(t37, "backward", e))) { + if (e != null && e.isFirstSibling) { + if (ho(t37, "backward", e.parent, e.parentBranch)) + return; + e = null; + } + if (!e) { + t37.announce("plonk"); + return; + } + t37.position = t37.offsetOf(e.leftSibling), e.parent.removeChild(e), t37.announce("delete", void 0, [e]); + } + }) : Ue(t37, te(t37.selection), "deleteContentBackward"); +} +function zp(t37) { + return !t37.mathfield.isSelectionEditable || !t37.contentWillChange({ inputType: "deleteContentForward" }) ? false : t37.selectionIsCollapsed ? t37.deferNotifications({ content: true, selection: true, type: "deleteContentForward" }, () => { + var i, n; + let e = t37.at(t37.position).rightSibling; + if (e && ho(t37, "forward", e)) + return; + if (e) { + if (t37.at(t37.position).isLastSibling && ho(t37, "forward", e.parent, e.parentBranch)) + return; + } else { + if (e = t37.at(t37.position), e.isLastSibling && ho(t37, "forward", e.parent, e.parentBranch)) + return; + e = void 0; + } + if (t37.position === t37.lastOffset || !e) { + t37.announce("plonk"); + return; + } + e.parent.removeChild(e); + let r = (i = t37.at(t37.position)) == null ? void 0 : i.rightSibling; + for (; (r == null ? void 0 : r.type) === "subsup"; ) + r.parent.removeChild(r), r = (n = t37.at(t37.position)) == null ? void 0 : n.rightSibling; + t37.announce("delete", void 0, [e]); + }) : Ue(t37, te(t37.selection), "deleteContentForward"); +} +function Ue(t37, e, r) { + let i = t37.getAtoms(e); + if (i.length > 0 && i[0].parent) { + let n = i[0].parent.firstChild; + n.type === "first" && (n = n.rightSibling); + let o = i[i.length - 1].parent.lastChild, a = i[0]; + a.type === "first" && (a = a.rightSibling); + let s = i[i.length - 1]; + if (a === n && s === o) { + let l = i[0].parent; + l.parent && l.type !== "prompt" && (e = [t37.offsetOf(l.leftSibling), t37.offsetOf(l)]); + } + if (i.length === 1 && i[0].type === "placeholder" && i[0].parent.type === "genfrac") { + let l = i[0].parent, c = i[0].parentBranch === "below" ? "above" : "below", u = t37.offsetOf(l.leftSibling); + return t37.deferNotifications({ content: true, selection: true, type: r }, () => { + var m, h; + let d = l.removeBranch(c); + if (d.length === 1 && d[0].type === "placeholder") + (h = l.parent) == null || h.removeChild(l), t37.position = Math.max(0, u); + else { + let f = l.parent.addChildrenAfter(d, l); + (m = l.parent) == null || m.removeChild(l), t37.position = t37.offsetOf(f); + } + }); + } + } + return t37.deferNotifications({ content: true, selection: true, type: r }, () => t37.deleteAtoms(e)); +} +ae({ deleteAll: (t37) => t37.contentWillChange({ inputType: "deleteContent" }) && Ue(t37, [0, -1], "deleteContent"), deleteForward: (t37) => zp(t37), deleteBackward: (t37) => Ip(t37), deleteNextWord: (t37) => t37.contentWillChange({ inputType: "deleteWordForward" }) && Ue(t37, [t37.anchor, Ya(t37, t37.position, "forward")], "deleteWordForward"), deletePreviousWord: (t37) => t37.contentWillChange({ inputType: "deleteWordBackward" }) && Ue(t37, [t37.anchor, Ya(t37, t37.position, "backward")], "deleteWordBackward"), deleteToGroupStart: (t37) => t37.contentWillChange({ inputType: "deleteSoftLineBackward" }) && Ue(t37, [t37.anchor, t37.offsetOf(t37.at(t37.position).firstSibling)], "deleteSoftLineBackward"), deleteToGroupEnd: (t37) => t37.contentWillChange({ inputType: "deleteSoftLineForward" }) && Ue(t37, [t37.anchor, t37.offsetOf(t37.at(t37.position).lastSibling)], "deleteSoftLineForward"), deleteToMathFieldStart: (t37) => t37.contentWillChange({ inputType: "deleteHardLineBackward" }) && Ue(t37, [t37.anchor, 0], "deleteHardLineBackward"), deleteToMathFieldEnd: (t37) => t37.contentWillChange({ inputType: "deleteHardLineForward" }) && Ue(t37, [t37.anchor, -1], "deleteHardLineForward") }, { target: "model", audioFeedback: "delete", canUndo: true, changeContent: true, changeSelection: true }); +var Yg = ``; +var Qg = ``; +var hs = class { + constructor(e, r) { + this.focusBlurInProgress = false; + var c, u, d; + this.options = p(g(p({}, an()), { macros: xi(), registers: xa() }), on(r)), this.eventController = new AbortController(); + let i = this.eventController.signal; + r.eventSink && (this.host = r.eventSink), this.element = e, e.mathfield = this, this.blurred = true, this.keystrokeCaptionVisible = false, this.suggestionIndex = 0, this.inlineShortcutBuffer = [], this.inlineShortcutBufferFlushTimer = 0, this.defaultStyle = {}, this.styleBias = "left", this.options.defaultMode === "inline-math" ? this.element.classList.add("ML__is-inline") : this.element.classList.remove("ML__is-inline"), this.dirty = false; + let n = (u = (c = r.value) != null ? c : this.element.textContent) != null ? u : ""; + n = n.trim(); + let o = $l(this.options), a = new y({ type: "root", mode: o, body: se(n, { context: this.context }) }); + this.model = new ps(this, o, a), this.undoManager = new Ga(this.model); + let s = []; + if (s.push(""), s.push('"), s.push(""), s.push(""), s.push(""), this.element.innerHTML = globalThis.MathfieldElement.createHTML(s.join("")), !this.element.children) { + console.error("%cMathLive 0.100.0: Something went wrong and the mathfield could not be created.%c\nIf you are using Vue, this may be because you are using the runtime-only build of Vue. Make sure to include `runtimeCompiler: true` in your Vue configuration. There may a warning from Vue in the log above.", "color:red;font-family:system-ui;font-size:1.2rem;font-weight:bold", "color:inherit;font-family:system-ui;font-size:inherit;font-weight:inherit"); + return; + } + this._l10Subscription = O.subscribe(() => O.update(this.element)), O.update(this.element), this.field = this.element.querySelector("[part=content]"), this.field.addEventListener("click", (m) => m.stopImmediatePropagation(), { capture: false, signal: i }), this.field.addEventListener("wheel", this, { passive: false, signal: i }), "PointerEvent" in window ? this.field.addEventListener("pointerdown", this, { signal: i }) : this.field.addEventListener("mousedown", this, { signal: i }), (d = this.element.querySelector("[part=virtual-keyboard-toggle]")) == null || d.addEventListener("click", () => { + window.mathVirtualKeyboard.visible ? window.mathVirtualKeyboard.hide() : (window.mathVirtualKeyboard.show({ animate: true }), window.mathVirtualKeyboard.update(We(this))); + }, { signal: i }), this._menu = new cs(Op(this), { host: this.host }), this.field.addEventListener("contextmenu", this, { signal: i }); + let l = this.element.querySelector("[part=menu-toggle]"); + l == null || l.addEventListener("pointerdown", (m) => { + if (m.currentTarget !== l || this._menu.state !== "closed") + return; + this.element.classList.add("tracking"); + let h = l.getBoundingClientRect(); + this._menu.modifiers = Kt(m), this._menu.show({ target: l, location: { x: h.left, y: h.bottom }, onDismiss: () => this.element.classList.remove("tracking") }), m.preventDefault(), m.stopPropagation(); + }, { signal: i }), (this.model.atoms.length <= 1 || this.disabled || this.readOnly && !this.hasEditableContent || this.userSelect === "none") && (l.style.display = "none"), this.ariaLiveText = this.element.querySelector("[role=status]"), this.keyboardDelegate = Tm(this.element.querySelector(".ML__keyboard-sink"), this.element, this), window.addEventListener("resize", this, { signal: i }), document.addEventListener("scroll", this, { signal: i }), this.resizeObserver = new ResizeObserver(() => V(this)), this.resizeObserver.observe(this.field), window.mathVirtualKeyboard.addEventListener("virtual-keyboard-toggle", this, { signal: i }), Gr && !O.locale.startsWith(Gr.locale) && Am(O.locale), Ee !== "ready" && document.fonts.ready.then(() => Gn(this)), e.querySelector("[part=container]").style.removeProperty("visibility"), this.undoManager.startRecording(), this.undoManager.snapshot("set-value"); + } + connectToVirtualKeyboard() { + this.connectedToVirtualKeyboard || (this.connectedToVirtualKeyboard = true, window.addEventListener("message", this, { signal: this.eventController.signal }), window.mathVirtualKeyboard.connect(), window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.update(We(this)), oo(this)); + } + disconnectFromVirtualKeyboard() { + this.connectedToVirtualKeyboard && (window.removeEventListener("message", this), window.mathVirtualKeyboard.disconnect(), this.connectedToVirtualKeyboard = false, os()); + } + showMenu(e) { + var o, a; + let r = (a = (o = e == null ? void 0 : e.location) != null ? o : Ri(this.field)) != null ? a : void 0, i = e == null ? void 0 : e.modifiers, n = this.element.querySelector("[part=container]"); + return this._menu.show({ target: n, location: r, modifiers: i }); + } + get colorMap() { + return (e) => { + var r, i, n; + return (n = (i = (r = this.options).colorMap) == null ? void 0 : i.call(r, e)) != null ? n : Tr(e); + }; + } + get backgroundColorMap() { + return (e) => { + var r, i, n, o, a, s; + return (s = (a = (i = (r = this.options).backgroundColorMap) == null ? void 0 : i.call(r, e)) != null ? a : (o = (n = this.options).colorMap) == null ? void 0 : o.call(n, e)) != null ? s : gi(e); + }; + } + get smartFence() { + var e; + return (e = this.options.smartFence) != null ? e : false; + } + get readOnly() { + var e; + return (e = this.options.readOnly) != null ? e : false; + } + get disabled() { + var e, r; + return (r = (e = this.host) == null ? void 0 : e.disabled) != null ? r : false; + } + get contentEditable() { + return this.host ? this.host.getAttribute("contenteditable") !== "false" : false; + } + get userSelect() { + if (!this.host) + return ""; + let e = getComputedStyle(this.host); + return e.getPropertyValue("user-select") || e.getPropertyValue("-webkit-user-select"); + } + get hasEditableContent() { + return this.disabled || !this.contentEditable ? false : !this.readOnly || this.hasEditablePrompts; + } + get hasEditablePrompts() { + return this.readOnly && !this.disabled && this.contentEditable && this.model.findAtom((e) => e.type === "prompt" && !e.locked) !== void 0; + } + get isSelectionEditable() { + if (this.disabled || !this.contentEditable) + return false; + if (!this.readOnly) + return true; + let e = this.model.at(this.model.anchor), r = this.model.at(this.model.position), i = y.commonAncestor(e, r); + return !!((i == null ? void 0 : i.type) === "prompt" || i != null && i.parentPrompt); + } + get letterShapeStyle() { + var e; + return (e = this.options.letterShapeStyle) != null ? e : "tex"; + } + get minFontScale() { + return this.options.minFontScale; + } + get maxMatrixCols() { + return this.options.maxMatrixCols; + } + queryStyle(e) { + let r = Ha(this, e); + "verbatimColor" in r && delete r.verbatimColor, "verbatimBackgroundColor" in r && delete r.verbatimBackgroundColor; + let i = Object.keys(r).length; + if (i === 0) + return "all"; + if (i > 1) { + for (let c of Object.keys(r)) { + let u = this.queryStyle({ [c]: r[c] }); + if (u === "none") + return "none"; + if (u === "some") + return "some"; + } + return "all"; + } + let n = Object.keys(r)[0], o = r[n]; + if (this.model.selectionIsCollapsed) + return nn(this)[n] === o ? "all" : "none"; + let a = this.model.getAtoms(this.model.selection, { includeChildren: true }), s = a.length; + if (s === 0) + return "none"; + let l = 0; + for (let c of a) { + if (c.type === "first") { + s -= 1; + continue; + } + c.style[n] === o && (l += 1); + } + return l === 0 ? "none" : l === s ? "all" : "some"; + } + get keybindings() { + var i, n; + if (this._keybindings) + return this._keybindings; + let [e, r] = Om(this.options.keybindings, (i = vr()) != null ? i : Cm()); + return ((n = vr()) == null ? void 0 : n.score) > 0 && (this._keybindings = e, r.length > 0 && console.error("MathLive 0.100.0: Invalid keybindings for current keyboard layout", r)), e; + } + get menu() { + return this._menu; + } + setOptions(e) { + var n; + this.options = p(p({}, this.options), on(e)), this._keybindings = void 0, this.options.defaultMode === "inline-math" ? this.element.classList.add("ML__is-inline") : this.element.classList.remove("ML__is-inline"); + let r = this.options.defaultMode; + r === "inline-math" && (r = "math"), ((n = this.model.root.firstChild) == null ? void 0 : n.mode) !== r && (this.model.root.firstChild.mode = r), this.options.readOnly && this.hasFocus() && window.mathVirtualKeyboard.visible && this.executeCommand("hideVirtualKeyboard"); + let i = y.serialize([this.model.root], { expandMacro: false, defaultMode: this.options.defaultMode }); + if ("macros" in e || this.model.getValue() !== i) { + let o = this.model.selection; + z.insert(this.model, i, { insertionMode: "replaceAll", selectionMode: "after", format: "latex", silenceNotifications: true, mode: "math" }), this.model.selection = o; + } + ("value" in e || "macros" in e || "registers" in e || "colorMap" in e || "backgroundColorMap" in e || "letterShapeStyle" in e || "minFontScale" in e || "maxMatrixCols" in e || "readOnly" in e || "placeholderSymbol" in e) && V(this); + } + getOptions(e) { + return jt(this.options, e); + } + getOption(e) { + return jt(this.options, e); + } + async handleEvent(e) { + var r; + if (tt(this)) { + if (Zn(e)) { + if (!Ii(e.origin, (r = this.options.originValidator) != null ? r : "none")) + throw new DOMException(`Message from unknown origin (${e.origin}) cannot be handled`, "SecurityError"); + let { action: i } = e.data; + if (i === "execute-command") { + let n = ei(e.data.command); + if (!n || Gt(n) === "virtual-keyboard") + return; + this.executeCommand(n); + } else + i === "update-state" || (i === "focus" ? this.focus({ preventScroll: true }) : i === "blur" && this.blur()); + return; + } + switch (e.type) { + case "focus": + this.onFocus(); + break; + case "blur": + this.onBlur(); + break; + case "mousedown": + this.userSelect !== "none" && Yl(this, e); + break; + case "pointerdown": + this.userSelect !== "none" && (Yl(this, e), e.shiftKey === false && await oc(e, this.element.querySelector("[part=container]"), this._menu) && ci.stop()); + break; + case "contextmenu": + this.userSelect !== "none" && e.shiftKey === false && await oc(e, this.element.querySelector("[part=container]"), this._menu) && ci.stop(); + break; + case "virtual-keyboard-toggle": + this.hasFocus() && oo(this); + break; + case "resize": + this.geometryChangeTimer && cancelAnimationFrame(this.geometryChangeTimer), this.geometryChangeTimer = requestAnimationFrame(() => tt(this) && this.onGeometryChange()); + break; + case "scroll": + this.geometryChangeTimer && cancelAnimationFrame(this.geometryChangeTimer), this.geometryChangeTimer = requestAnimationFrame(() => tt(this) && this.onGeometryChange()); + break; + case "wheel": + this.onWheel(e); + break; + case "message": + break; + default: + console.warn("Unexpected event type", e.type); + } + } + } + dispose() { + if (!tt(this)) + return; + O.unsubscribe(this._l10Subscription), this.keyboardDelegate.dispose(), this.keyboardDelegate = void 0, this.eventController.abort(), this.eventController = void 0, this.resizeObserver.disconnect(), window.mathVirtualKeyboard.removeEventListener("virtual-keyboard-toggle", this), this.disconnectFromVirtualKeyboard(), this.model.dispose(); + let e = this.element; + delete e.mathfield, this.element = void 0, this.host = void 0, this.field = void 0, this.ariaLiveText = void 0, ip(), Rm(), dp(); + } + flushInlineShortcutBuffer(e) { + if (e != null || (e = { defer: false }), !e.defer) { + this.inlineShortcutBuffer = [], clearTimeout(this.inlineShortcutBufferFlushTimer), this.inlineShortcutBufferFlushTimer = 0; + return; + } + this.options.inlineShortcutTimeout > 0 && (clearTimeout(this.inlineShortcutBufferFlushTimer), this.inlineShortcutBufferFlushTimer = setTimeout(() => this.flushInlineShortcutBuffer(), this.options.inlineShortcutTimeout)); + } + executeCommand(e) { + return Gt(e) === "virtual-keyboard" ? (this.focus({ preventScroll: true }), window.mathVirtualKeyboard.executeCommand(e), requestAnimationFrame(() => window.mathVirtualKeyboard.update(We(this))), false) : $m(this, e); + } + get errors() { + return Ta(this.model.getValue(), { context: this.context }); + } + getValue(e, r, i) { + return this.model.getValue(e, r, i); + } + setValue(e, r) { + var n; + r = r != null ? r : { mode: "math" }, r.insertionMode === void 0 && (r.insertionMode = "replaceAll"), (r.format === void 0 || r.format === "auto") && (r.format = "latex"), (r.mode === void 0 || r.mode === "auto") && (r.mode = (n = I0(this.model, this.model.position)) != null ? n : "math"); + let i = this.undoManager.canUndo(); + z.insert(this.model, e, r) && (V(this), i || this.undoManager.reset(), this.undoManager.snapshot("set-value")); + } + get expression() { + let e = globalThis.MathfieldElement.computeEngine; + return e ? e.box(e.parse(this.model.getValue("latex-unstyled"))) : (console.error("MathLive 0.100.0: no compute engine available. Make sure the Compute Engine library is loaded."), null); + } + scrollIntoView() { + var i; + if (!this.element) + return; + if (this.host) { + if (this.options.onScrollIntoView) + this.options.onScrollIntoView(this); + else if (this.host.scrollIntoView({ block: "nearest", inline: "nearest" }), window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.container === window.document.body) { + let n = window.mathVirtualKeyboard.boundingRect, o = this.host.getBoundingClientRect(); + o.bottom > n.top && ((i = window.document.scrollingElement) == null || i.scrollBy(0, o.bottom - n.top + 8)); + } + } + this.dirty && st(this, { interactive: true }); + let e = this.field.getBoundingClientRect(), r = null; + if (this.model.selectionIsCollapsed) + r = Ri(this.field); + else { + let n = Ma(this); + if (n.length > 0) { + let o = -1 / 0, a = -1 / 0; + for (let s of n) + s.right > o && (o = s.right), s.top < a && (a = s.top); + r = { x: o + e.left - this.field.scrollLeft, y: a + e.top - this.field.scrollTop, height: 0 }; + } + } + if (this.host && r) { + let n = this.host.getBoundingClientRect(), o = r.y, a = this.host.scrollTop; + o < n.top ? a = o - n.top + this.host.scrollTop : o > n.bottom && (a = o - n.bottom + this.host.scrollTop + r.height), this.host.scroll({ top: a, left: 0 }); + } + if (r) { + let n = r.x - window.scrollX, o = this.field.scrollLeft; + n < e.left ? o = n - e.left + this.field.scrollLeft - 20 : n > e.right && (o = n - e.right + this.field.scrollLeft + 20), this.field.scroll({ top: this.field.scrollTop, left: o }); + } + } + insert(e, r) { + return typeof e != "string" || e.length === 0 && ((r == null ? void 0 : r.insertionMode) === "insertBefore" || (r == null ? void 0 : r.insertionMode) === "insertAfter") || e.length === 0 && this.model.selectionIsCollapsed ? false : (this.flushInlineShortcutBuffer(), r = r != null ? r : { mode: "math" }, r.focus && this.focus(), r.feedback && (globalThis.MathfieldElement.keypressVibration && yo() && navigator.vibrate(Rl), globalThis.MathfieldElement.playSound("keypress")), e === "\\\\" ? ql(this.model) : e === "&" ? Hl(this.model) : this.model.selectionIsCollapsed ? z.insert(this.model, e, p({ style: this.model.at(this.model.position).style }, r)) : z.insert(this.model, e, r), this.snapshot(`insert-${this.model.at(this.model.position).type}`), V(this), r.scrollIntoView && this.scrollIntoView(), true); + } + switchMode(e, r = "", i = "") { + if (this.model.mode === e || !this.hasEditableContent || !this.contentEditable || this.disabled) + return; + let { model: n } = this, o = n.mode; + if (n.mode = e, this.host && !this.host.dispatchEvent(new Event("mode-change", { bubbles: true, composed: true, cancelable: true }))) { + n.mode = o; + return; + } + n.mode = o, n.deferNotifications({ content: !!i || !!r, selection: true, type: "insertText" }, () => { + let a = n.at(n.position), s = (d, m) => { + if (!d) + return; + let h = n.mode === "math" ? se(qt(d, { format: "ascii-math" })[1], { context: this.context }) : [...d].map((f) => new Be(f, f, {})); + if (m.select) { + let f = a.parent.addChildrenAfter(h, a); + n.setSelection(n.offsetOf(h[0].leftSibling), n.offsetOf(f)); + } else + n.position = n.offsetOf(a.parent.addChildrenAfter(h, a)); + u = true; + }, l = (d, m) => { + let h = new Ct(d); + a.parent.addChildAfter(h, a), m.select ? n.setSelection(n.offsetOf(h.firstChild), n.offsetOf(h.lastChild)) : n.position = n.offsetOf(h.lastChild), u = true; + }, c = () => { + let d = e === "latex" ? "latex" : e === "math" ? "plain-text" : "ascii-math", m = te(n.selection), h = this.model.getValue(m, d), f = this.model.extractAtoms(m); + return f.length === 1 && f[0].type === "placeholder" && (h = i), a = n.at(m[0]), h; + }, u = false; + if (this.flushInlineShortcutBuffer(), this.stopCoalescingUndo(), Bt(this, "accept"), n.selectionIsCollapsed) + s(r, { select: false }), n.mode = e, e === "latex" ? l(i, { select: false }) : s(i, { select: false }); + else { + let d = c(); + n.mode = e, e === "latex" ? l(d, { select: true }) : s(d, { select: true }); + } + return V(this), this.undoManager.snapshot(e === "latex" ? "insert-latex" : "insert"), u; + }), n.mode = e, window.mathVirtualKeyboard.update(We(this)); + } + hasFocus() { + return !this.blurred; + } + focus(e) { + var r; + this.hasFocus() || (this.keyboardDelegate.focus(), this.connectToVirtualKeyboard(), this.onFocus(), this.model.announce("line")), (r = e == null ? void 0 : e.preventScroll) != null && r || this.scrollIntoView(); + } + blur() { + this.disconnectFromVirtualKeyboard(), this.hasFocus() && this.keyboardDelegate.blur(); + } + select() { + this.model.selection = { ranges: [[0, this.model.lastOffset]] }, this.focus(); + } + applyStyle(e, r = {}) { + var s; + let i, n = "set", o = false; + $r(r) ? i = r : (r.operation === "toggle" && (n = "toggle"), i = r.range, o = (s = r.silenceNotifications) != null ? s : false), i && (i = this.model.normalizeRange(i)), i && i[0] === i[1] && (i = void 0); + let a = Ha(this, e); + if (i === void 0 && this.model.selectionIsCollapsed) { + if (n === "set") { + let c = p({}, this.defaultStyle); + "color" in a && delete c.verbatimColor, "backgroundColor" in a && delete c.verbatimBackgroundColor, this.defaultStyle = p(p({}, c), a), this.styleBias = "none"; + return; + } + let l = p({}, this.defaultStyle); + for (let c of Object.keys(a)) + l[c] === a[c] ? (c === "color" && delete l.verbatimColor, c === "backgroundColor" && delete l.verbatimBackgroundColor, delete l[c]) : l[c] = a[c]; + this.defaultStyle = l, this.styleBias = "none"; + return; + } + this.model.deferNotifications({ content: !o, type: "insertText" }, () => { + if (i === void 0) + for (let l of this.model.selection.ranges) + Vn(this.model, l, a, { operation: n }); + else + Vn(this.model, i, a, { operation: n }); + }), V(this); + } + toggleContextMenu() { + var i; + if (!this._menu.visible) + return false; + if (this._menu.state === "open") + return this._menu.hide(), true; + let e = (i = wa(this, this.model.position)) == null ? void 0 : i.bounds; + if (!e) + return false; + let r = { x: e.right, y: e.bottom }; + return this._menu.show({ target: this.element.querySelector("[part=container]"), location: r, onDismiss: () => { + var n; + return (n = this.element) == null ? void 0 : n.focus(); + } }), true; + } + getPrompt(e) { + let r = this.model.findAtom((i) => i.type === "prompt" && i.placeholderId === e); + return r; + } + getPromptValue(e, r) { + let i = this.getPrompt(e); + if (!i) + return ""; + let n = this.model.offsetOf(i.firstChild), o = this.model.offsetOf(i.lastChild); + return this.model.getValue(n, o, r); + } + getPrompts(e) { + return this.model.getAllAtoms().filter((r) => r.type !== "prompt" ? false : e ? !(e.id && r.placeholderId !== e.id || e.locked && r.locked !== e.locked || e.correctness === "undefined" && r.correctness || e.correctness && r.correctness !== e.correctness) : true).map((r) => r.placeholderId); + } + setPromptValue(e, r, i) { + if (r !== void 0) { + let n = this.getPrompt(e); + if (!n) { + console.error(`MathLive 0.100.0: unknown prompt ${e}`); + return; + } + let o = this.model.getBranchRange(this.model.offsetOf(n), "body"); + this.model.setSelection(o), this.insert(r, g(p({}, i), { insertionMode: "replaceSelection" })); + } + i != null && i.silenceNotifications && (this.valueOnFocus = this.getValue()), V(this); + } + setPromptState(e, r, i) { + let n = this.getPrompt(e); + if (!n) { + console.error(`MathLive 0.100.0: unknown prompt ${e}`); + return; + } + r === "undefined" ? n.correctness = void 0 : typeof r == "string" && (n.correctness = r), typeof i == "boolean" && (n.locked = i, n.captureSelection = i), V(this); + } + getPromptState(e) { + let r = this.getPrompt(e); + return r ? [r.correctness, r.locked] : (console.error(`MathLive 0.100.0: unknown prompt ${e}`), [void 0, true]); + } + getPromptRange(e) { + let r = this.getPrompt(e); + return r ? this.model.getBranchRange(this.model.offsetOf(r), "body") : (console.error(`MathLive 0.100.0: unknown prompt ${e}`), [0, 0]); + } + canUndo() { + return this.undoManager.canUndo(); + } + canRedo() { + return this.undoManager.canRedo(); + } + popUndoStack() { + this.undoManager.pop(); + } + snapshot(e) { + var r; + this.undoManager.snapshot(e) && (window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.update(We(this)), (r = this.host) == null || r.dispatchEvent(new CustomEvent("undo-state-change", { bubbles: true, composed: true, detail: { type: "snapshot" } }))); + } + stopCoalescingUndo() { + this.undoManager.stopCoalescing(this.model.selection); + } + stopRecording() { + this.undoManager.stopRecording(); + } + startRecording() { + this.undoManager.startRecording(); + } + undo() { + var e; + this.undoManager.undo() && (window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.update(We(this)), (e = this.host) == null || e.dispatchEvent(new CustomEvent("undo-state-change", { bubbles: true, composed: true, detail: { type: "undo" } }))); + } + redo() { + var e; + this.undoManager.redo() && (window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.update(We(this)), (e = this.host) == null || e.dispatchEvent(new CustomEvent("undo-state-change", { bubbles: true, composed: true, detail: { type: "undo" } }))); + } + resetUndo() { + var e; + (e = this.undoManager) == null || e.reset(); + } + onSelectionDidChange() { + var r, i; + let e = this.model; + if (this.keyboardDelegate.setValue(e.getValue(e.selection, "latex-expanded")), e.selectionIsCollapsed) { + let n = Wn(e), o = e.position, a = e.at(o), s = (r = a.mode) != null ? r : $l(this.options); + if (n && (o < e.offsetOf(n.firstChild) - 1 || o > e.offsetOf(n.lastChild) + 1)) + Bt(this, "accept", { mode: s }), e.position = e.offsetOf(a); + else { + let l = e.at(o + 1); + (l == null ? void 0 : l.type) === "first" && l.mode === "latex" ? e.position = o + 1 : n && (l == null ? void 0 : l.mode) !== "latex" ? e.position = o - 1 : this.switchMode(s); + } + } + (i = this.host) == null || i.dispatchEvent(new Event("selection-change", { bubbles: true, composed: true })), window.mathVirtualKeyboard.visible && window.mathVirtualKeyboard.update(We(this)), oo(this); + } + onContentWillChange(e) { + var r, i, n; + return (n = (i = this.host) == null ? void 0 : i.dispatchEvent(new InputEvent("beforeinput", g(p({}, e), { data: e.data ? e.data : (r = e.inputType) != null ? r : "", cancelable: true, bubbles: true, composed: true })))) != null ? n : true; + } + onFocus() { + this.focusBlurInProgress || !this.blurred || (this.focusBlurInProgress = true, this.blurred = false, this.keyboardDelegate.focus(), this.stopCoalescingUndo(), st(this, { interactive: true }), this.valueOnFocus = this.model.getValue(), this.hasEditablePrompts && !this.model.at(this.model.anchor).parentPrompt && this.executeCommand("moveToNextPlaceholder"), this.focusBlurInProgress = false); + } + onBlur() { + var e, r, i; + if (!(this.focusBlurInProgress || this.blurred) && (this.focusBlurInProgress = true, this.stopCoalescingUndo(), this.blurred = true, this.ariaLiveText.textContent = "", wr(this), this.model.getValue() !== this.valueOnFocus && ((e = this.host) == null || e.dispatchEvent(new Event("change", { bubbles: true, composed: true }))), this.disconnectFromVirtualKeyboard(), (r = this.host) == null || r.dispatchEvent(new Event("blur", { bubbles: false, composed: true })), (i = this.host) == null || i.dispatchEvent(new UIEvent("focusout", { bubbles: true, composed: true })), V(this), this.focusBlurInProgress = false, os(), Qi.restoreFocusWhenDocumentFocused)) { + let n = new AbortController(), o = n.signal; + document.addEventListener("visibilitychange", () => { + document.visibilityState === "hidden" && document.addEventListener("visibilitychange", () => { + tt(this) && document.visibilityState === "visible" && this.focus({ preventScroll: true }); + }, { once: true, signal: o }); + }, { once: true, signal: o }), document.addEventListener("focusin", () => n.abort(), { once: true }); + } + } + onInput(e) { + ro(this, e); + } + onKeystroke(e) { + return Xl(this, e); + } + onCompositionStart(e) { + this.model.deleteAtoms(te(this.model.selection)); + let r = Ri(this.field); + r && requestAnimationFrame(() => { + st(this), this.keyboardDelegate.moveTo(r.x, r.y - r.height); + }); + } + onCompositionUpdate(e) { + Um(this.model, e), V(this); + } + onCompositionEnd(e) { + Jm(this.model), ro(this, e, { simulateKeystroke: true }); + } + onCut(e) { + if (!this.isSelectionEditable) { + this.model.announce("plonk"); + return; + } + this.model.contentWillChange({ inputType: "deleteByCut" }) && (this.stopCoalescingUndo(), e.clipboardData ? z.onCopy(this, e) : z.copyToClipboard(this, "latex"), Ue(this.model, te(this.model.selection), "deleteByCut"), this.snapshot("cut"), V(this)); + } + onCopy(e) { + e.clipboardData ? z.onCopy(this, e) : z.copyToClipboard(this, "latex"); + } + onPaste(e) { + let r = this.isSelectionEditable; + return r && (r = z.onPaste(this.model.at(this.model.position).mode, this, e.clipboardData)), r || this.model.announce("plonk"), e.preventDefault(), e.stopPropagation(), r; + } + onGeometryChange() { + this._menu.hide(), Yi(this), oo(this); + } + onWheel(e) { + let r = 5 * e.deltaX; + if (!Number.isFinite(r) || r === 0) + return; + let i = this.field; + r < 0 && i.scrollLeft === 0 || r > 0 && i.offsetWidth + i.scrollLeft >= i.scrollWidth || (i.scrollBy({ top: 0, left: r }), e.preventDefault(), e.stopPropagation()); + } + getHTMLElement(e) { + let r = e; + for (; !r.id && r.hasChildren; ) + r = e.children[0]; + return this.field.querySelector(`[data-atom-id="${r.id}"]`); + } + get context() { + var e, r; + return { registers: (e = this.options.registers) != null ? e : {}, smartFence: this.smartFence, letterShapeStyle: this.letterShapeStyle, minFontScale: this.minFontScale, maxMatrixCols: this.maxMatrixCols, placeholderSymbol: (r = this.options.placeholderSymbol) != null ? r : "\u25A2", colorMap: (i) => this.colorMap(i), backgroundColorMap: (i) => this.backgroundColorMap(i), getMacro: (i) => wo(i, this.options.macros), atomIdsSettings: { seed: "random", groupNumbers: false } }; + } +}; +ae({ speak: (t37, e, r) => e1(t37, e, r) }, { target: "mathfield" }); +function e1(t37, e, r) { + var c; + r = r != null ? r : { withHighlighting: false }; + let { model: i } = t37; + function n(u) { + let d = null; + switch (u) { + case "all": + d = i.root; + break; + case "selection": + d = i.getAtoms(i.selection); + break; + case "left": { + d = i.getAtoms(i.offsetOf(i.at(i.position).leftSibling), i.position); + break; + } + case "right": { + d = i.getAtoms(i.position, i.offsetOf(i.at(i.position).rightSibling)); + break; + } + case "group": + d = i.getAtoms(i.getSiblingsRange(i.position)); + break; + case "parent": { + let { parent: m } = i.at(i.position); + m != null && m.parent ? d = m : d = i.root; + break; + } + default: + d = i.root; + } + return d; + } + function o(u) { + let d = ""; + switch (u) { + case "all": + console.error("Internal failure: speak all failed"); + break; + case "selection": + d = "no selection"; + break; + case "left": + d = "at start"; + break; + case "right": + d = "at end"; + break; + case "group": + console.error("Internal failure: speak group failed"); + break; + case "parent": + d = "no parent"; + break; + default: + console.error('unknown speak_ param value: "' + u + '"'); + break; + } + return d; + } + let a = globalThis.MathfieldElement, s = n(e); + if (s === null) + return (c = a.speakHook) == null || c.call(a, o(e)), false; + (r.withHighlighting || a.speechEngine === "amazon") && (a.textToSpeechMarkup = globalThis.sre && a.textToSpeechRules === "sre" ? "ssml_step" : "ssml"); + let l = mt(s); + return fe() && r.withHighlighting ? (Pt().readAloudMathfield = t37, st(t37, { forHighlighting: true }), a.readAloudHook && a.readAloudHook(t37.field, l)) : a.speakHook && a.speakHook(l), false; +} +function Np(t37) { + var r, i; + if (!fe()) + return; + let e = globalThis.MathfieldElement; + if (!e.speechEngine || e.speechEngine === "local") { + let n = new SpeechSynthesisUtterance(t37); + globalThis.speechSynthesis.speak(n); + } else if (e.speechEngine === "amazon") + if (!("AWS" in window)) + console.error("MathLive 0.100.0: AWS SDK not loaded. See https://www.npmjs.com/package/aws-sdk"); + else { + let n = new globalThis.AWS.Polly({ apiVersion: "2016-06-10" }), o = { OutputFormat: "mp3", VoiceId: (r = e.speechEngineVoice) != null ? r : "Joanna", Engine: ["Amy", "Emma", "Brian", "Ivy", "Joanna", "Kendra", "Kimberly", "Salli", "Joey", "Justin", "Matthew"].includes((i = e.speechEngineVoice) != null ? i : "Joanna") ? "neural" : "standard", Text: t37, TextType: "ssml" }; + n.synthesizeSpeech(o, (a, s) => { + if (a) + console.trace(`MathLive 0.100.0: \`polly.synthesizeSpeech()\` error: ${a}`); + else if (s != null && s.AudioStream) { + let l = new Uint8Array(s.AudioStream), c = new Blob([l.buffer], { type: "audio/mpeg" }), u = URL.createObjectURL(c); + new Audio(u).play().catch((m) => console.error(m)); + } + }); + } + else + e.speechEngine === "google" && console.error("MathLive 0.100.0: The Google speech engine is not supported yet. Please come again."); +} +function Fp(t37) { + if (t37 && (t37.classList.remove("ML__highlight"), t37.children)) + for (let e of t37.children) + Fp(e); +} +function xc(t37, e) { + var r; + t37 && (!e || ((r = t37.dataset) == null ? void 0 : r.atomId) === e ? (t37.classList.add("ML__highlight"), t37.children && t37.children.length > 0 && [...t37.children].forEach((i) => { + i instanceof HTMLElement && xc(i); + })) : (t37.classList.remove("ML__highlight"), t37.children && t37.children.length > 0 && [...t37.children].forEach((i) => { + i instanceof HTMLElement && xc(i, e); + }))); +} +function $p(t37, e) { + var n; + if (!fe()) + return; + if (globalThis.MathfieldElement.speechEngine !== "amazon") { + console.error("MathLive 0.100.0: Use Amazon TTS Engine for synchronized highlighting"), typeof globalThis.MathfieldElement.speakHook == "function" && globalThis.MathfieldElement.speakHook(e); + return; + } + if (!globalThis.AWS) { + console.error("MathLive 0.100.0: AWS SDK not loaded. See https://www.npmjs.com/package/aws-sdk"); + return; + } + let r = new globalThis.AWS.Polly({ apiVersion: "2016-06-10" }), i = { OutputFormat: "json", VoiceId: (n = globalThis.MathfieldElement.speechEngineVoice) != null ? n : "Joanna", Engine: "standard", Text: e, TextType: "ssml", SpeechMarkTypes: ["ssml"] }; + Pt().readAloudElement = t37, r.synthesizeSpeech(i, (o, a) => { + if (o) { + console.trace(`MathLive 0.100.0: \`polly.synthesizeSpeech()\` error: ${o}`); + return; + } + if (!(a != null && a.AudioStream)) + return; + let s = new TextDecoder("utf-8").decode(new Uint8Array(a.AudioStream)); + Pt().readAloudMarks = s.split(` +`).map((l) => l ? JSON.parse(l) : {}), Pt().readAloudTokens = []; + for (let l of Pt().readAloudMarks) + l.value && Pt().readAloudTokens.push(l.value); + Pt().readAloudCurrentMark = "", i.OutputFormat = "mp3", i.SpeechMarkTypes = [], r.synthesizeSpeech(i, (l, c) => { + if (l) { + console.trace(`MathLive 0.100.0: \`polly.synthesizeSpeech("${e}") error:${l}`); + return; + } + if (!(c != null && c.AudioStream)) + return; + let u = new Uint8Array(c.AudioStream), d = new Blob([u.buffer], { type: "audio/mpeg" }), m = URL.createObjectURL(d), h = Pt(); + h.readAloudAudio ? h.readAloudAudio.pause() : (h.readAloudAudio = new Audio(), h.readAloudAudio.addEventListener("ended", () => { + let f = h.readAloudMathfield; + h.readAloudStatus = "ended", document.body.dispatchEvent(new Event("read-aloud-status-change", { bubbles: true, composed: true })), f ? (st(f), h.readAloudElement = null, h.readAloudMathfield = null, h.readAloudTokens = [], h.readAloudMarks = [], h.readAloudCurrentMark = "") : Fp(h.readAloudElement); + }), h.readAloudAudio.addEventListener("timeupdate", () => { + let f = "", b = h.readAloudAudio.currentTime * 1e3 + 100; + for (let S of h.readAloudMarks) + S.time < b && (f = S.value); + h.readAloudCurrentMark !== f && (h.readAloudCurrentToken = f, f && f === h.readAloudFinalToken ? h.readAloudAudio.pause() : (h.readAloudCurrentMark = f, xc(h.readAloudElement, h.readAloudCurrentMark))); + })), h.readAloudAudio.src = m, h.readAloudStatus = "playing", document.body.dispatchEvent(new Event("read-aloud-status-change", { bubbles: true, composed: true })), h.readAloudAudio.play(); + }); + }); +} +fe() || console.error('MathLive 0.100.0: this version of the MathLive library is for use in the browser. A subset of the API is available on the server side in the "mathlive-ssr" library. If using server side rendering (with React for example) you may want to do a dynamic import of the MathLive library inside a `useEffect()` call.'); +var W = /* @__PURE__ */ new WeakMap(); +var t1 = 0.5; +var Er = { letterShapeStyle: "mf.letterShapeStyle = ...", horizontalSpacingScale: 'Removed. Use `"thinmuskip"`, `"medmuskip"`, and `"thickmuskip"` registers ', macros: "mf.macros = ...", registers: "mf.registers = ...", backgroundColorMap: "mf.backgroundColorMap = ...", colorMap: "mf.colorMap = ...", enablePopover: "mf.popoverPolicy = ...", mathModeSpace: "mf.mathModeSpace = ...", placeholderSymbol: "mf.placeholderSymbol = ...", readOnly: "mf.readOnly = ...", removeExtraneousParentheses: "mf.removeExtraneousParentheses = ...", scriptDepth: "mf.scriptDepth = ...", smartFence: "mf.smartFence = ...", smartMode: "mf.smartMode = ...", smartSuperscript: "mf.smartSuperscript = ...", inlineShortcutTimeout: "mf.inlineShortcutTimeout = ...", inlineShortcuts: "mf.inlineShortcuts = ...", keybindings: "mf.keybindings = ...", virtualKeyboardMode: "mf.mathVirtualKeyboardPolicy = ...", customVirtualKeyboardLayers: "mathVirtualKeyboard.layers = ...", customVirtualKeyboards: "mathVirtualKeyboard.layouts = ...", keypressSound: "mathVirtualKeyboard.keypressSound = ...", keypressVibration: "mathVirtualKeyboard.keypressVibration = ...", plonkSound: "mathVirtualKeyboard.plonkSound = ...", virtualKeyboardContainer: "mathVirtualKeyboard.container = ...", virtualKeyboardLayout: "mathVirtualKeyboard.alphabeticLayout = ...", virtualKeyboardTheme: "No longer supported", virtualKeyboardToggleGlyph: "No longer supported", virtualKeyboardToolbar: "mathVirtualKeyboard.editToolbar = ...", virtualKeyboards: "Use `mathVirtualKeyboard.layouts`", speechEngine: "`MathfieldElement.speechEngine`", speechEngineRate: "`MathfieldElement.speechEngineRate`", speechEngineVoice: "`MathfieldElement.speechEngineVoice`", textToSpeechMarkup: "`MathfieldElement.textToSpeechMarkup`", textToSpeechRules: "`MathfieldElement.textToSpeechRules`", textToSpeechRulesOptions: "`MathfieldElement.textToSpeechRulesOptions`", readAloudHook: "`MathfieldElement.readAloudHook`", speakHook: "`MathfieldElement.speakHook`", computeEngine: "`MathfieldElement.computeEngine`", fontsDirectory: "`MathfieldElement.fontsDirectory`", soundsDirectory: "`MathfieldElement.soundsDirectory`", createHTML: "`MathfieldElement.createHTML`", onExport: "`mf.onExport`", onInlineShortcut: "`mf.onInlineShortcut`", onScrollIntoView: "`mf.onScrollIntoView`", locale: "MathfieldElement.locale = ...", strings: "MathfieldElement.strings = ...", decimalSeparator: "MathfieldElement.decimalSeparator = ...", fractionNavigationOrder: "MathfieldElement.fractionNavigationOrder = ..." }; +var Z = class Z2 extends HTMLElement { + constructor(r) { + super(); + this._observer = null; + if (r) { + let i = []; + for (let n of Object.keys(r)) + if (Er[n]) + if (Er[n].startsWith("mf.")) + if (Er[n].startsWith(`mf.${n}`)) + i.push(`Option \`${n}\` cannot be used as a constructor option. Use ${Er[n]}`); + else { + let o = Er[n].match(/([a-zA-Z]+) =/); + i.push(`Option \`${n}\` has been renamed \`${o[1]}\``); + } + else + i.push(`Option \`${n}\` cannot be used as a constructor option. Use ${Er[n]}`); + if (i.length > 0) { + console.group("%cMathLive 0.100.0: %cInvalid Options", "color:#12b; font-size: 1.1rem", "color:#db1111; font-size: 1.1rem"), console.warn("Some of the options passed to `new MathfieldElement(...)` are invalid. \n See mathfield/changelog/ for details."); + for (let n of i) + console.warn(n); + console.groupEnd(); + } + } + if (pn() && (this._internals = this.attachInternals(), this._internals.role = "math", this._internals.ariaLabel = "math input field", this._internals.ariaMultiLine = "false"), this.attachShadow({ mode: "open", delegatesFocus: true }), this.shadowRoot && "adoptedStyleSheets" in this.shadowRoot) { + this.shadowRoot.adoptedStyleSheets = [Hr("core"), Hr("mathfield"), Hr("mathfield-element"), Hr("ui"), Hr("menu")], this.shadowRoot.appendChild(document.createElement("span")); + let i = document.createElement("slot"); + i.style.display = "none", this.shadowRoot.appendChild(i); + } else + this.shadowRoot.innerHTML = "'; + r && this._setOptions(r); + } + static get formAssociated() { + return pn(); + } + static get optionsAttributes() { + return { "default-mode": "string", "letter-shape-style": "string", "min-font-scale": "number", "max-matrix-cols": "number", "popover-policy": "string", "math-mode-space": "string", "read-only": "boolean", "remove-extraneous-parentheses": "on/off", "smart-fence": "on/off", "smart-mode": "on/off", "smart-superscript": "on/off", "inline-shortcut-timeout": "string", "script-depth": "string", placeholder: "string", "virtual-keyboard-target-origin": "string", "math-virtual-keyboard-policy": "string" }; + } + static get observedAttributes() { + return [...Object.keys(this.optionsAttributes), "contenteditable", "disabled", "readonly", "read-only"]; + } + static get fontsDirectory() { + return this._fontsDirectory; + } + static set fontsDirectory(r) { + r !== this._fontsDirectory && (this._fontsDirectory = r, Nm()); + } + get fontsDirectory() { + throw new Error("Use MathfieldElement.fontsDirectory instead"); + } + set fontsDirectory(r) { + throw new Error("Use MathfieldElement.fontsDirectory instead"); + } + static get soundsDirectory() { + return this._soundsDirectory; + } + static set soundsDirectory(r) { + this._soundsDirectory = r, this.audioBuffers = {}; + } + get soundsDirectory() { + throw new Error("Use MathfieldElement.soundsDirectory instead"); + } + set soundsDirectory(r) { + throw new Error("Use MathfieldElement.soundsDirectory instead"); + } + static get keypressSound() { + return this._keypressSound; + } + static set keypressSound(r) { + var i, n, o; + this.audioBuffers = {}, r === null ? this._keypressSound = { spacebar: null, return: null, delete: null, default: null } : typeof r == "string" ? this._keypressSound = { spacebar: r, return: r, delete: r, default: r } : typeof r == "object" && "default" in r && (this._keypressSound = { spacebar: (i = r.spacebar) != null ? i : r.default, return: (n = r.return) != null ? n : r.default, delete: (o = r.delete) != null ? o : r.default, default: r.default }); + } + static get plonkSound() { + return this._plonkSound; + } + static set plonkSound(r) { + this.audioBuffers = {}, this._plonkSound = r; + } + static get audioContext() { + return this._audioContext || (this._audioContext = new AudioContext()), this._audioContext; + } + static get speechEngine() { + return this._speechEngine; + } + static set speechEngine(r) { + this._speechEngine = r; + } + static get speechEngineRate() { + return this._speechEngineRate; + } + static set speechEngineRate(r) { + this._speechEngineRate = r; + } + static get speechEngineVoice() { + return this._speechEngineVoice; + } + static set speechEngineVoice(r) { + this._speechEngineVoice = r; + } + static get textToSpeechMarkup() { + return this._textToSpeechMarkup; + } + static set textToSpeechMarkup(r) { + this._textToSpeechMarkup = r; + } + static get textToSpeechRules() { + return this._textToSpeechRules; + } + static set textToSpeechRules(r) { + this._textToSpeechRules = r; + } + static get textToSpeechRulesOptions() { + return this._textToSpeechRulesOptions; + } + static set textToSpeechRulesOptions(r) { + this._textToSpeechRulesOptions = r; + } + static get locale() { + return O.locale; + } + static set locale(r) { + r === "auto" && (r = navigator.language.slice(0, 5)), O.locale = r; + } + get locale() { + throw new Error("Use MathfieldElement.locale instead"); + } + set locale(r) { + throw new Error("Use MathfieldElement.locale instead"); + } + static get strings() { + return O.strings; + } + static set strings(r) { + O.merge(r); + } + get strings() { + throw new Error("Use MathfieldElement.strings instead"); + } + set strings(r) { + throw new Error("Use MathfieldElement.strings instead"); + } + static get decimalSeparator() { + return this._decimalSeparator; + } + static set decimalSeparator(r) { + this._decimalSeparator = r, this._computeEngine && (this._computeEngine.latexOptions.decimalMarker = this.decimalSeparator === "," ? "{,}" : "."); + } + get decimalSeparator() { + throw new Error("Use MathfieldElement.decimalSeparator instead"); + } + set decimalSeparator(r) { + throw new Error("Use MathfieldElement.decimalSeparator instead"); + } + static get computeEngine() { + var r, i; + if (this._computeEngine === void 0) { + let n = (r = window[Symbol.for("io.cortexjs.compute-engine")]) == null ? void 0 : r.ComputeEngine; + if (!n) + return null; + this._computeEngine = new n(), this._computeEngine && this.decimalSeparator === "," && (this._computeEngine.latexOptions.decimalMarker = "{,}"); + } + return (i = this._computeEngine) != null ? i : null; + } + static set computeEngine(r) { + this._computeEngine = r; + } + get computeEngine() { + throw new Error("Use MathfieldElement.computeEngine instead"); + } + set computeEngine(r) { + throw new Error("Use MathfieldElement.computeEngine instead"); + } + static get isFunction() { + return typeof this._isFunction != "function" ? () => false : this._isFunction; + } + static set isFunction(r) { + this._isFunction = r; + } + static async loadSound(r) { + delete this.audioBuffers[r]; + let i = ""; + switch (r) { + case "keypress": + i = this._keypressSound.default; + break; + case "return": + i = this._keypressSound.return; + break; + case "spacebar": + i = this._keypressSound.spacebar; + break; + case "delete": + i = this._keypressSound.delete; + break; + case "plonk": + i = this.plonkSound; + break; + } + if (typeof i != "string") + return; + i = i.trim(); + let n = this.soundsDirectory; + if (!(n == null || n === "null" || i === "none" || i === "null")) + try { + let a = await (await fetch(await za(`${n}/${i}`))).arrayBuffer(), s = await this.audioContext.decodeAudioData(a); + this.audioBuffers[r] = s; + } catch (o) { + } + } + static async playSound(r) { + if ((this.audioContext.state === "suspended" || this.audioContext.state === "interrupted") && await this.audioContext.resume(), this.audioBuffers[r] || await this.loadSound(r), !this.audioBuffers[r]) + return; + let i = this.audioContext.createBufferSource(); + i.buffer = this.audioBuffers[r]; + let n = this.audioContext.createGain(); + n.gain.value = t1, i.connect(n).connect(this.audioContext.destination), i.start(); + } + showMenu(r) { + var i, n; + return (n = (i = this._mathfield) == null ? void 0 : i.showMenu(r)) != null ? n : false; + } + get mathVirtualKeyboard() { + throw new Error("The `mathVirtualKeyboard` property is not available on the MathfieldElement. Use `window.mathVirtualKeyboard` instead."); + } + onPointerDown() { + window.addEventListener("pointerup", (r) => { + let i = this._mathfield; + if (i && r.target === this && !i.disabled) { + this.dispatchEvent(new MouseEvent("click", { altKey: r.altKey, button: r.button, buttons: r.buttons, clientX: r.clientX, clientY: r.clientY, ctrlKey: r.ctrlKey, metaKey: r.metaKey, movementX: r.movementX, movementY: r.movementY, relatedTarget: r.relatedTarget, screenX: r.screenX, screenY: r.screenY, shiftKey: r.shiftKey })); + let n = this.getOffsetFromPoint(r.clientX, r.clientY); + n >= 0 && Z2.openUrl(q0(i, n)); + } + }, { once: true }); + } + getPromptValue(r, i) { + var n, o; + return (o = (n = this._mathfield) == null ? void 0 : n.getPromptValue(r, i)) != null ? o : ""; + } + setPromptValue(r, i, n) { + var o; + (o = this._mathfield) == null || o.setPromptValue(r, i, n); + } + getPromptRange(r) { + var i, n; + return (n = (i = this._mathfield) == null ? void 0 : i.getPromptRange(r)) != null ? n : null; + } + getPrompts(r) { + var i, n; + return (n = (i = this._mathfield) == null ? void 0 : i.getPrompts(r)) != null ? n : []; + } + get form() { + var r; + return (r = this._internals) == null ? void 0 : r.form; + } + get name() { + var r; + return (r = this.getAttribute("name")) != null ? r : ""; + } + get type() { + return this.localName; + } + get mode() { + var r, i; + return (i = (r = this._mathfield) == null ? void 0 : r.model.mode) != null ? i : this.defaultMode === "text" ? "text" : "math"; + } + set mode(r) { + var i; + (i = this._mathfield) == null || i.switchMode(r); + } + get expression() { + if (this._mathfield) + return window[Symbol.for("io.cortexjs.compute-engine")] ? this._mathfield.expression : (console.error(`MathLive 0.100.0: The CortexJS Compute Engine library is not available. + + Load the library, for example with: + + import "https://unpkg.com/@cortex-js/compute-engine?module"`), null); + } + set expression(r) { + var n, o; + if (!this._mathfield) + return; + let i = (o = (n = Z2.computeEngine) == null ? void 0 : n.box(r).latex) != null ? o : null; + i !== null && this._mathfield.setValue(i), window[Symbol.for("io.cortexjs.compute-engine")] || console.error(`MathLive 0.100.0: The Compute Engine library is not available. + + Load the library, for example with: + + import "https://unpkg.com/@cortex-js/compute-engine?module"`); + } + get errors() { + var r, i; + return (i = (r = this._mathfield) == null ? void 0 : r.errors) != null ? i : []; + } + _getOptions(r) { + return this._mathfield ? jt(this._mathfield.options, r) : W.has(this) ? p({}, jt(p(p({}, an()), on(W.get(this).options)), r)) : null; + } + getOptions(r) { + return console.warn("%cMathLive 0.100.0: %cDeprecated Usage%c\n `mf.getOptions()` is deprecated. Read the property directly on the mathfield instead.\n See mathfield/changelog/ for details.", "color:#12b; font-size: 1.1rem", "color:#db1111; font-size: 1.1rem", "color: inherit, font-size: 1rem"), this._mathfield ? jt(this._mathfield.options, r) : W.has(this) ? jt(p(p({}, an()), on(W.get(this).options)), r) : null; + } + reflectAttributes() { + let r = an(), i = this._getOptions(); + Object.keys(Z2.optionsAttributes).forEach((n) => { + let o = Xt(n); + Z2.optionsAttributes[n] === "on/off" ? r[o] !== i[o] ? this.setAttribute(n, i[o] ? "on" : "off") : this.removeAttribute(n) : r[o] !== i[o] && (Z2.optionsAttributes[n] === "boolean" ? i[o] ? this.setAttribute(n, "") : this.removeAttribute(n) : (typeof i[o] == "string" || typeof i[o] == "number") && this.setAttribute(n, i[o].toString())); + }); + } + getOption(r) { + return console.warn("%cMathLive 0.100.0: %cDeprecated Usage%c\n `mf.getOption()` is deprecated. Read the property directly on the mathfield instead.\n See mathfield/changelog/ for details.", "color:#12b; font-size: 1.1rem", "color:#db1111; font-size: 1.1rem", "color: inherit, font-size: 1rem"), this._getOptions([r])[r]; + } + _getOption(r) { + return this._getOptions([r])[r]; + } + _setOptions(r) { + if (this._mathfield) + this._mathfield.setOptions(r); + else if (W.has(this)) { + let i = p(p({}, W.get(this).options), r); + W.set(this, g(p({}, W.get(this)), { selection: { ranges: i.readOnly ? [[0, 0]] : [[0, -1]] }, options: i })); + } else + W.set(this, { value: void 0, selection: { ranges: [[0, 0]] }, options: r, menuItems: void 0 }); + this.reflectAttributes(); + } + setOptions(r) { + console.group("%cMathLive 0.100.0: %cDeprecated Usage", "color:#12b; font-size: 1.1rem", "color:#db1111; font-size: 1.1rem"), console.warn(" `mf.setOptions()` is deprecated. Set the property directly on the mathfield instead.\n See mathfield/changelog/ for details."); + for (let i of Object.keys(r)) + Er[i] && console.warn(`\`mf.setOptions({${i}:...})\` -> ${Er[i]}`); + console.groupEnd(), this._setOptions(r); + } + executeCommand(...r) { + var n, o; + let i; + if (r.length === 1 ? i = r[0] : i = [r[0], ...r.slice(1)], i) + return (o = (n = this._mathfield) == null ? void 0 : n.executeCommand(i)) != null ? o : false; + throw new Error("Invalid selector"); + } + getValue(r, i, n) { + var o, a; + if (this._mathfield) + return this._mathfield.model.getValue(r, i, n); + if (W.has(this)) { + let s, l, c; + if (Oi(r) ? ([s, l] = r.ranges[0], c = i) : $r(r) ? ([s, l] = r, c = i) : Lt(r) && Lt(i) ? (s = r, l = i, c = n) : (s = 0, l = -1, c = r), (c === void 0 || c === "latex") && s === 0 && l === -1) + return (a = (o = W.get(this).value) != null ? o : this.textContent) != null ? a : ""; + } + return ""; + } + setValue(r, i) { + if (this._mathfield && r !== void 0) { + if (this._mathfield.model.getValue() === r) + return; + i != null || (i = { silenceNotifications: true, mode: "math" }), this._mathfield.setValue(r, i); + return; + } + if (W.has(this)) { + let o = W.get(this).options; + W.set(this, { value: r, selection: { ranges: [[-1, -1]], direction: "forward" }, options: o, menuItems: void 0 }); + return; + } + let n = fs(this); + W.set(this, { value: r, selection: { ranges: [[-1, -1]], direction: "forward" }, options: n, menuItems: void 0 }); + } + hasFocus() { + var r, i; + return (i = (r = this._mathfield) == null ? void 0 : r.hasFocus()) != null ? i : false; + } + focus() { + var r; + (r = this._mathfield) == null || r.focus(); + } + blur() { + var r; + (r = this._mathfield) == null || r.blur(); + } + select() { + var r; + (r = this._mathfield) == null || r.select(); + } + insert(r, i) { + var n, o; + return (o = (n = this._mathfield) == null ? void 0 : n.insert(r, i)) != null ? o : false; + } + applyStyle(r, i) { + var n; + return (n = this._mathfield) == null ? void 0 : n.applyStyle(r, i); + } + queryStyle(r) { + var i, n; + return (n = (i = this._mathfield) == null ? void 0 : i.queryStyle(r)) != null ? n : "none"; + } + getOffsetFromPoint(r, i, n) { + return this._mathfield ? no(this._mathfield, r, i, n) : -1; + } + getElementInfo(r) { + return wa(this._mathfield, r); + } + resetUndo() { + var r; + (r = this._mathfield) == null || r.resetUndo(); + } + canUndo() { + return this._mathfield ? this._mathfield.canUndo() : false; + } + canRedo() { + return this._mathfield ? this._mathfield.canRedo() : false; + } + handleEvent(r) { + var i, n, o, a, s; + _e.state === "closed" && ((n = (i = this._mathfield) == null ? void 0 : i.menu) == null ? void 0 : n.state) === "closed" && (r.type === "pointerdown" && this.onPointerDown(), r.type === "focus" && ((o = this._mathfield) == null || o.focus()), r.type === "blur" && ((a = _e.scrim) == null ? void 0 : a.state) === "closed" && !(go() && Sc()) && ((s = this._mathfield) == null || s.blur())); + } + connectedCallback() { + var l, c, u, d; + let r = this.shadowRoot, i = r.host, o = window.getComputedStyle(this).userSelect !== "none"; + if (o) + i.addEventListener("pointerdown", this, true); + else { + let m = r.querySelector("span"); + m.style.pointerEvents = "none"; + } + i.addEventListener("focus", this, true), i.addEventListener("blur", this, true), this._observer = new MutationObserver(() => { + var m; + this.value = (m = this.textContent) != null ? m : ""; + }), this._observer.observe(this, { childList: true, characterData: true, subtree: true }), pn() || (this.hasAttribute("role") || this.setAttribute("role", "math"), this.hasAttribute("aria-label") || this.setAttribute("aria-label", "math input field"), this.setAttribute("aria-multiline", "false")), o && !this.hasAttribute("contenteditable") && this.setAttribute("contenteditable", "true"), this.hasAttribute("tabindex") || this.setAttribute("tabindex", "0"); + let a = r.querySelector("slot:not([name])"); + if (a) + try { + this._style = a.assignedElements().filter((m) => m.tagName.toLowerCase() === "style").map((m) => m.textContent).join(""); + } catch (m) { + console.error(m); + } + if (this._style) { + let m = document.createElement("style"); + m.textContent = this._style, r.appendChild(m); + } + let s = ""; + if (this.hasAttribute("value") ? s = this.getAttribute("value") : s = (l = a == null ? void 0 : a.assignedNodes().map((m) => m.nodeType === 3 ? m.textContent : "").join("").trim()) != null ? l : "", this._mathfield = new hs(r.querySelector(":host > span"), g(p({}, (u = (c = W.get(this)) == null ? void 0 : c.options) != null ? u : fs(this)), { eventSink: this, value: s })), !W.has(this)) { + this.upgradeProperty("disabled"), this.upgradeProperty("readonly"); + for (let m of Object.keys(Z2.optionsAttributes)) + this.upgradeProperty(Xt(m)); + } + if (!((d = this._mathfield) != null && d.model)) { + this._mathfield = null; + return; + } + if (W.has(this)) { + let m = this._mathfield, h = W.get(this), f = h.menuItems; + m.model.deferNotifications({ content: false, selection: false }, () => { + let b = h.value; + b !== void 0 && m.setValue(b), m.model.selection = h.selection, W.delete(this); + }), f && (this.menuItems = f); + } + window.queueMicrotask(() => { + this.isConnected && this.dispatchEvent(new Event("mount", { cancelable: false, bubbles: true, composed: true })); + }), Qr(); + } + disconnectedCallback() { + var i, n, o; + if (this.shadowRoot.host.removeEventListener("pointerdown", this, true), !this._mathfield) + return; + (i = this._observer) == null || i.disconnect(), this._observer = null, window.queueMicrotask(() => this.dispatchEvent(new Event("unmount", { cancelable: false, bubbles: true, composed: true }))); + let r = jt(this._mathfield.options, Object.keys(Z2.optionsAttributes).map((a) => Xt(a))); + W.set(this, { value: this._mathfield.getValue(), selection: this._mathfield.model.selection, menuItems: (o = (n = this._mathfield.menu) == null ? void 0 : n.menuItems) != null ? o : void 0, options: r }), this._mathfield.dispose(), this._mathfield = null; + } + upgradeProperty(r) { + if (this.hasOwnProperty(r)) { + let i = this[r]; + delete this[r], (r === "readonly" || r === "read-only") && (r = "readOnly"), this[r] = i; + } + } + attributeChangedCallback(r, i, n) { + if (i === n) + return; + let o = n !== null; + switch (r) { + case "contenteditable": + V(this._mathfield); + break; + case "disabled": + this.disabled = o; + break; + case "read-only": + case "readonly": + this.readOnly = o; + break; + default: + } + } + get readonly() { + return this.hasAttribute("readonly") || this.hasAttribute("read-only"); + } + set readonly(r) { + let i = !!r; + i ? (this.setAttribute("readonly", ""), pn() ? this._internals.ariaReadOnly = "true" : this.setAttribute("aria-readonly", "true"), this.setAttribute("aria-readonly", "true")) : (pn() ? this._internals.ariaReadOnly = "false" : this.removeAttribute("aria-readonly"), this.removeAttribute("readonly"), this.removeAttribute("read-only")), this._setOptions({ readOnly: i }); + } + get disabled() { + return this.hasAttribute("disabled"); + } + set disabled(r) { + var n; + let i = !!r; + i ? this.setAttribute("disabled", "") : this.removeAttribute("disabled"), pn() ? this._internals.ariaDisabled = i ? "true" : "false" : this.setAttribute("aria-disabled", i ? "true" : "false"), i && ((n = this._mathfield) != null && n.hasFocus) && window.mathVirtualKeyboard.visible && this._mathfield.executeCommand("hideVirtualKeyboard"); + } + get value() { + return this.getValue(); + } + set value(r) { + this.setValue(r); + } + get defaultMode() { + return this._getOption("defaultMode"); + } + set defaultMode(r) { + this._setOptions({ defaultMode: r }); + } + get macros() { + if (!this._mathfield) + throw new Error("Mathfield not mounted"); + return this._getOption("macros"); + } + set macros(r) { + this._setOptions({ macros: r }); + } + get registers() { + if (!this._mathfield) + throw new Error("Mathfield not mounted"); + let r = this; + return new Proxy({}, { get: (i, n) => { + if (typeof n == "string") + return r._getOption("registers")[n]; + }, set(i, n, o) { + return typeof n != "string" ? false : (r._setOptions({ registers: g(p({}, r._getOption("registers")), { [n]: o }) }), true); + } }); + } + set registers(r) { + this._setOptions({ registers: r }); + } + get colorMap() { + return this._getOption("colorMap"); + } + set colorMap(r) { + this._setOptions({ colorMap: r }); + } + get backgroundColorMap() { + return this._getOption("backgroundColorMap"); + } + set backgroundColorMap(r) { + this._setOptions({ backgroundColorMap: r }); + } + get letterShapeStyle() { + return this._getOption("letterShapeStyle"); + } + set letterShapeStyle(r) { + this._setOptions({ letterShapeStyle: r }); + } + get minFontScale() { + return this._getOption("minFontScale"); + } + set minFontScale(r) { + this._setOptions({ minFontScale: r }); + } + get maxMatrixCols() { + return this._getOption("maxMatrixCols"); + } + set maxMatrixCols(r) { + this._setOptions({ maxMatrixCols: r }); + } + get smartMode() { + return this._getOption("smartMode"); + } + set smartMode(r) { + this._setOptions({ smartMode: r }); + } + get smartFence() { + return this._getOption("smartFence"); + } + set smartFence(r) { + this._setOptions({ smartFence: r }); + } + get smartSuperscript() { + return this._getOption("smartSuperscript"); + } + set smartSuperscript(r) { + this._setOptions({ smartSuperscript: r }); + } + get scriptDepth() { + return this._getOption("scriptDepth"); + } + set scriptDepth(r) { + this._setOptions({ scriptDepth: r }); + } + get removeExtraneousParentheses() { + return this._getOption("removeExtraneousParentheses"); + } + set removeExtraneousParentheses(r) { + this._setOptions({ removeExtraneousParentheses: r }); + } + get mathModeSpace() { + return this._getOption("mathModeSpace"); + } + set mathModeSpace(r) { + this._setOptions({ mathModeSpace: r }); + } + get placeholderSymbol() { + return this._getOption("placeholderSymbol"); + } + set placeholderSymbol(r) { + this._setOptions({ placeholderSymbol: r }); + } + get popoverPolicy() { + return this._getOption("popoverPolicy"); + } + set popoverPolicy(r) { + this._setOptions({ popoverPolicy: r }); + } + get environmentPopoverPolicy() { + return this._getOption("environmentPopoverPolicy"); + } + set environmentPopoverPolicy(r) { + this._setOptions({ environmentPopoverPolicy: r }); + } + get menuItems() { + var r; + if (!this._mathfield) + throw new Error("Mathfield not mounted"); + return (r = this._mathfield.menu._menuItems.map((i) => i.menuItem)) != null ? r : []; + } + set menuItems(r) { + var i; + if (!this._mathfield) + throw new Error("Mathfield not mounted"); + if (this._mathfield) { + let n = (i = this._mathfield.element) == null ? void 0 : i.querySelector("[part=menu-toggle]"); + n && (n.style.display = r.length === 0 ? "none" : ""), this._mathfield.menu.menuItems = r; + } + } + get mathVirtualKeyboardPolicy() { + return this._getOption("mathVirtualKeyboardPolicy"); + } + set mathVirtualKeyboardPolicy(r) { + this._setOptions({ mathVirtualKeyboardPolicy: r }); + } + get inlineShortcuts() { + if (!this._mathfield) + throw new Error("Mathfield not mounted"); + return this._getOption("inlineShortcuts"); + } + set inlineShortcuts(r) { + if (!this._mathfield) + throw new Error("Mathfield not mounted"); + this._setOptions({ inlineShortcuts: r }); + } + get inlineShortcutTimeout() { + return this._getOption("inlineShortcutTimeout"); + } + set inlineShortcutTimeout(r) { + this._setOptions({ inlineShortcutTimeout: r }); + } + get keybindings() { + if (!this._mathfield) + throw new Error("Mathfield not mounted"); + return this._getOption("keybindings"); + } + set keybindings(r) { + if (!this._mathfield) + throw new Error("Mathfield not mounted"); + this._setOptions({ keybindings: r }); + } + get onInsertStyle() { + let r = this._getOption("onInsertStyle"); + return r === void 0 ? to : r; + } + set onInsertStyle(r) { + this._setOptions({ onInsertStyle: r }); + } + get onInlineShortcut() { + return this._getOption("onInlineShortcut"); + } + set onInlineShortcut(r) { + this._setOptions({ onInlineShortcut: r }); + } + get onScrollIntoView() { + return this._getOption("onScrollIntoView"); + } + set onScrollIntoView(r) { + this._setOptions({ onScrollIntoView: r }); + } + get onExport() { + return this._getOption("onExport"); + } + set onExport(r) { + this._setOptions({ onExport: r }); + } + get readOnly() { + return this._getOption("readOnly"); + } + set readOnly(r) { + this._setOptions({ readOnly: r }); + } + get isSelectionEditable() { + var r, i; + return (i = (r = this._mathfield) == null ? void 0 : r.isSelectionEditable) != null ? i : false; + } + setPromptState(r, i, n) { + var o; + (o = this._mathfield) == null || o.setPromptState(r, i, n); + } + getPromptState(r) { + var i, n; + return (n = (i = this._mathfield) == null ? void 0 : i.getPromptState(r)) != null ? n : [void 0, true]; + } + get virtualKeyboardTargetOrigin() { + return this._getOption("virtualKeyboardTargetOrigin"); + } + set virtualKeyboardTargetOrigin(r) { + this._setOptions({ virtualKeyboardTargetOrigin: r }); + } + get selection() { + return this._mathfield ? this._mathfield.model.selection : W.has(this) ? W.get(this).selection : { ranges: [[0, 0]], direction: "forward" }; + } + set selection(r) { + if (typeof r == "number" && (r = { ranges: [[r, r]] }), this._mathfield) { + this._mathfield.model.selection = r, V(this._mathfield); + return; + } + if (W.has(this)) { + W.set(this, g(p({}, W.get(this)), { selection: r })); + return; + } + W.set(this, { value: void 0, selection: r, options: fs(this), menuItems: void 0 }); + } + get selectionIsCollapsed() { + let r = this.selection; + return r.ranges.length === 1 && r.ranges[0][0] === r.ranges[0][1]; + } + get position() { + return this._mathfield ? this._mathfield.model.position : W.has(this) ? W.get(this).selection.ranges[0][0] : 0; + } + set position(r) { + if (this._mathfield && (this._mathfield.model.position = r, V(this._mathfield)), W.has(this)) { + W.set(this, g(p({}, W.get(this)), { selection: { ranges: [[r, r]] } })); + return; + } + W.set(this, { value: void 0, selection: { ranges: [[r, r]] }, options: fs(this), menuItems: void 0 }); + } + get lastOffset() { + var r, i; + return (i = (r = this._mathfield) == null ? void 0 : r.model.lastOffset) != null ? i : -1; + } +}; +Z.version = "0.100.0", Z.openUrl = (r) => { + if (!r) + return; + let i = new URL(r); + if (!["http:", "https:", "file:"].includes(i.protocol.toLowerCase())) { + Z.playSound("plonk"); + return; + } + window.open(i, "_blank"); +}, Z._fontsDirectory = "./fonts", Z._soundsDirectory = "./sounds", Z.keypressVibration = true, Z._keypressSound = { spacebar: "keypress-spacebar.wav", return: "keypress-return.wav", delete: "keypress-delete.wav", default: "keypress-standard.wav" }, Z._plonkSound = "plonk.wav", Z.audioBuffers = {}, Z.createHTML = (r) => r, Z._speechEngineRate = "100%", Z._speechEngineVoice = "Joanna", Z._textToSpeechMarkup = "", Z._textToSpeechRules = "mathlive", Z._textToSpeechRulesOptions = {}, Z.speakHook = Np, Z.readAloudHook = $p, Z.restoreFocusWhenDocumentFocused = true, Z._decimalSeparator = ".", Z.fractionNavigationOrder = "numerator-denominator", Z._isFunction = (r) => { + var n, o; + let i = globalThis.MathfieldElement.computeEngine; + return (o = (n = i == null ? void 0 : i.parse(r).domain) == null ? void 0 : n.isFunction) != null ? o : false; +}; +var ct = Z; +function Xt(t37) { + return t37.replace(/[^a-zA-Z\d]+(.)/g, (e, r) => r.toUpperCase()); +} +function fs(t37) { + let e = { readOnly: false }, r = ct.optionsAttributes; + return Object.keys(r).forEach((i) => { + var n; + if (t37.hasAttribute(i)) { + let o = t37.getAttribute(i); + i === "placeholder" ? e.contentPlaceholder = o != null ? o : "" : r[i] === "boolean" ? e[Xt(i)] = true : r[i] === "on/off" ? (o = (n = o == null ? void 0 : o.toLowerCase()) != null ? n : "", o === "on" || o === "true" ? e[Xt(i)] = true : o === "off" || o === "false" ? e[Xt(i)] = false : e[Xt(i)] = void 0) : r[i] === "number" ? e[Xt(i)] = Number.parseFloat(o != null ? o : "0") : e[Xt(i)] = o; + } + }), e; +} +function pn() { + return !(!("ElementInternals" in window) || !HTMLElement.prototype.attachInternals || !("role" in window.ElementInternals.prototype)); +} +var Qi = ct; +var Vp; +var qp; +var Hp; +var Wp; +if (fe() && !((Vp = window.customElements) != null && Vp.get("math-field"))) { + (Hp = window[qp = Symbol.for("io.cortexjs.mathlive")]) != null || (window[qp] = {}); + let t37 = window[Symbol.for("io.cortexjs.mathlive")]; + t37.version = "0.100.0", globalThis.MathfieldElement = ct, (Wp = window.customElements) == null || Wp.define("math-field", ct); +} +function s1(t37, e) { + let r = we.singleton; + return r ? (r.show(), ri(), r.currentLayer = e, r.render(), r.focus(), true) : false; +} +function l1() { + let t37 = window.mathVirtualKeyboard; + return t37.visible ? t37.hide({ animate: true }) : t37.show({ animate: true }), false; +} +ae({ switchKeyboardLayer: s1, toggleVirtualKeyboard: l1, hideVirtualKeyboard: () => (window.mathVirtualKeyboard.hide({ animate: true }), false), showVirtualKeyboard: () => (window.mathVirtualKeyboard.show({ animate: true }), false) }, { target: "virtual-keyboard" }); +function Pt() { + var t37, e; + return (e = globalThis[t37 = Symbol.for("io.cortexjs.mathlive")]) != null || (globalThis[t37] = {}), globalThis[Symbol.for("io.cortexjs.mathlive")]; +} + +// src/setting.ts +var import_obsidian = require("obsidian"); +var DEFAULT_SETTINGS = { + display: true, + blockDisplay: true, + blockMenuIcon: true, + blockKeyboardIcon: true, + inlineDisplay: false, + inlineMenuIcon: false, + inlineKeyboardIcon: false +}; +var MathLiveEditorModeSettingsTab = class extends import_obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + this.containerEl.empty(); + new import_obsidian.Setting(this.containerEl).setName("Display MathLive block").setDesc("Toggle display state of MathLive").addToggle((cb) => { + cb.setValue(this.plugin.settings.display); + cb.onChange(async (ev) => { + this.plugin.settings.display = ev; + await this.plugin.saveSettings(); + this.display(); + new import_obsidian.Notice("Toggle visibility successfully!"); + }); + }).addButton((cb) => { + cb.setButtonText("Set hotkey").setTooltip(`Set toggle hotkey`).onClick(() => { + this.app.setting.openTabById("hotkeys"); + const tab = this.app.setting.activeTab; + tab.headerComponent.components[1].inputEl.value = `Toggle MathLive block`; + tab.updateHotkeyVisibility(); + }); + }); + if (this.plugin.settings.display) { + new import_obsidian.Setting(this.containerEl).setName("Block").setHeading(); + new import_obsidian.Setting(this.containerEl).setName("Display block equation").setDesc("Enable MathLive for block equation").addToggle((cb) => { + cb.setValue(this.plugin.settings.blockDisplay); + cb.onChange(async (ev) => { + this.plugin.settings.blockDisplay = ev; + await this.plugin.saveSettings(); + new import_obsidian.Notice( + "Toggle inline equation display successfully!" + ); + }); + }); + new import_obsidian.Setting(this.containerEl).setName("Display block menu icon").addToggle((cb) => { + cb.setValue(this.plugin.settings.blockMenuIcon); + cb.onChange(async (ev) => { + this.plugin.settings.blockMenuIcon = ev; + await this.plugin.saveSettings(); + new import_obsidian.Notice("Toggle block menu icon successfully!"); + }); + }); + new import_obsidian.Setting(this.containerEl).setName("Display block keyboard icon").addToggle((cb) => { + cb.setValue(this.plugin.settings.blockKeyboardIcon); + cb.onChange(async (ev) => { + this.plugin.settings.blockKeyboardIcon = ev; + await this.plugin.saveSettings(); + new import_obsidian.Notice("Toggle block keyboard icon successfully!"); + }); + }); + new import_obsidian.Setting(this.containerEl).setName("Inline").setHeading(); + new import_obsidian.Setting(this.containerEl).setName("Display inline equation").setDesc("Enable MathLive for inline equation").addToggle((cb) => { + cb.setValue(this.plugin.settings.inlineDisplay); + cb.onChange(async (ev) => { + this.plugin.settings.inlineDisplay = ev; + await this.plugin.saveSettings(); + new import_obsidian.Notice( + "Toggle inline equation display successfully!" + ); + }); + }); + new import_obsidian.Setting(this.containerEl).setName("Display inline menu icon").addToggle((cb) => { + cb.setValue(this.plugin.settings.inlineMenuIcon); + cb.onChange(async (ev) => { + this.plugin.settings.inlineMenuIcon = ev; + await this.plugin.saveSettings(); + new import_obsidian.Notice("Toggle inline menu icon successfully!"); + }); + }); + new import_obsidian.Setting(this.containerEl).setName("Display inline keyboard icon").addToggle((cb) => { + cb.setValue(this.plugin.settings.inlineKeyboardIcon); + cb.onChange(async (ev) => { + this.plugin.settings.inlineKeyboardIcon = ev; + await this.plugin.saveSettings(); + new import_obsidian.Notice("Toggle inline keyboard icon successfully!"); + }); + }); + } + } +}; + +// src/main.ts +var MathLiveInEditorMode = class extends import_obsidian2.Plugin { + async onload() { + await this.loadSettings(); + if (customElements.get("math-field") === void 0) + customElements.define("math-field", ct); + this.addSettingTab(new MathLiveEditorModeSettingsTab(this.app, this)); + this.registerEditorExtension(mathliveListFieldWrapper(this.settings)); + this.addCommand({ + id: "toggle-mathfield", + name: "Toggle MathLive block", + editorCallback: async (editor, view) => { + this.settings.display = !this.settings.display; + await this.saveSettings(); + const curser = editor.getCursor(); + editor.setCursor(curser); + } + }); + } + onunload() { + } + async loadSettings() { + this.settings = Object.assign( + {}, + DEFAULT_SETTINGS, + await this.loadData() + ); + } + async saveSettings() { + await this.saveData(this.settings); + } +}; diff --git a/.obsidian/plugins/mathlive-in-editor-mode/manifest.json b/.obsidian/plugins/mathlive-in-editor-mode/manifest.json new file mode 100644 index 0000000..f8df009 --- /dev/null +++ b/.obsidian/plugins/mathlive-in-editor-mode/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "mathlive-in-editor-mode", + "name": "MathLive in Editor Mode", + "version": "0.1.7", + "minAppVersion": "1.5.12", + "description": "MathLive input in editor mode", + "author": "MizarZh", + "authorUrl": "https://github.com/MizarZh", + "isDesktopOnly": false +} diff --git a/.obsidian/plugins/mathlive-in-editor-mode/styles.css b/.obsidian/plugins/mathlive-in-editor-mode/styles.css new file mode 100644 index 0000000..1581b20 --- /dev/null +++ b/.obsidian/plugins/mathlive-in-editor-mode/styles.css @@ -0,0 +1,203 @@ +/* .obsidian-mathlive-codemirror-math-field { + width: 100%; +} */ + +.theme-dark { + --caret-color: #ddd; + --contains-highlight-background-color: #767676; +} + +.obsidian-mathlive-codemirror-wrapper math-field { + display: block; +} + +.obsidian-mathlive-codemirror-wrapper.inline { + display: inline; +} + +.obsidian-mathlive-codemirror-wrapper.inline math-field { + display: inline-block; + margin: 0 3px; +} + +.obsidian-mathlive-codemirror-wrapper.hidden { + display: none; +} + +.obsidian-mathlive-codemirror-wrapper.hidden math-field { + display: none; + margin: 0; +} + +math-field.hide-keyboard::part(virtual-keyboard-toggle) { + display: none; +} + +math-field.hide-menu::part(menu-toggle) { + display: none; +} + +/* 0.98.6 */ +:root { + --ML__static-fonts: true; +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_AMS; + font-style: normal; + font-weight: 400; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Caligraphic; + font-style: normal; + font-weight: 700; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Caligraphic; + font-style: normal; + font-weight: 400; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Typewriter; + font-style: normal; + font-weight: 400; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Fraktur; + font-style: normal; + font-weight: 400; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Main; + font-style: normal; + font-weight: 700; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Main; + font-style: italic; + font-weight: 700; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Main; + font-style: italic; + font-weight: 400; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Main; + font-style: normal; + font-weight: 400; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Math; + font-style: italic; + font-weight: 700; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Math; + font-style: italic; + font-weight: 400; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: "KaTeX_SansSerif"; + font-style: normal; + font-weight: 700; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: "KaTeX_SansSerif"; + font-style: italic; + font-weight: 400; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: "KaTeX_SansSerif"; + font-style: normal; + font-weight: 400; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Script; + font-style: normal; + font-weight: 400; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Size1; + font-style: normal; + font-weight: 400; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Size2; + font-style: normal; + font-weight: 400; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Size3; + font-style: normal; + font-weight: 400; + src: url(data:application/octet-stream;base64,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); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Size4; + font-style: normal; + font-weight: 400; + src: url(data:application/octet-stream;base64,d09GMgABAAAAABNAAA4AAAAAKKwAABLqAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAAgTQIDgmcDBEICqAQl3UBNgIkA4FMC2gABCAFiQAHgyoMgRwbNiOzkDZrVocSRbBxBObjPcV/lcCT+auhHTaLDBIyQ+TpEasEZ2B1aVN5+W/nWjgup64RE78VroyQZNZ/wDl7P0nT1NOWFikSCGFAM1ZMNiQw1sGsMmxCMZ+Yc2IOZ667nc68/wHGC1d3v/9pS/cCWAIp8JSf6i7aABk2pD1I2GYpKPnWV9QuahVtijozT2uuunDVen66N2gdmg04U5vaKVLX+V6aBe6cv0ZOxCcxi9R8u/2Ly6ZBiwMrf672/+ZKeZPclRQKc7KEz5clOPfzZ2eDvZ1JCtNcaVKiTMqHrNqqFbpAzxORMGjP1YiqPl8h5Pn975faufPeBP6G0AK5RDhULsb88zY0OwHEogJgjXKPL1pCV6FqZIUwFTLLcCPS77mSD3RdmvKtyekU0WCIIY4xo92vqs/eBxg2vTMKHcDsZp4FsHdwbPoR2cTATL0R+E/s73/wMrMng6aoKKSf1MPSwVTNxz7nfpbCgQUszGIJHy444kZhn/ZDOdy8NBVSdbnwN2dgEuYXa4p1xc3M68y3LJtyWU7LP+QnJvw5QD+FDhQkpGMSWrAGM/SE/L384AB+mv1v1vWI3HHAfgNr51SchL5d83fxzyrcuvYfEEwfMwZVIsJu4IE3e7DOeUM++NExz8P0pjBBCjeSUeK+AAHtY1lTWhNNhCb9FgQtWENSKbVODBlVtGhDVkWzyUadK6pqOjWEYDMTVdussBoZbWkDNMtktDo25GZvtAzDaMEyufOKHtNbq6tTdQWCJrZ1ktNwLiFmu3XfuomJSziN9dKluQSLxM3cbluhAV+cI5f2sU0nizYYD8jXOL2yUfELn1zSVWqUOHv2F7cihCwabilq8sigYsP0yGxgMn2eD09eTGGCtDsKxOgG3ZMQnnFoFpACHvx1NUVGoVkbEwFH1Pm4WnVUNBOziXVxT0Q77rR7OrR530RP8gKTQfw7pFsT6w11KgYgp8QG1GtzjnrZUpCt0tqTWg35rEMi3k1Z32bhgosO1CLwWRKtXVGXqd88uYYk7R7reLNPp5BLm3dhTsUF78RrD1YEXeJKh/yMzmeoV2nQei2YYhMhbZCtgICJIpm2CaldUp/ZY4MKzlWs2niPQxtoEla0esco9FeXMqqtwQptYLu6fYipcTsFZqobk1cIjZwSMEhyBE3OQ3jKsp2ShxV5k2QVW9CP1BPLJIKpqwaa3RArLuv2Ny1msDVzTivRvqsNbWpmmBp2mJWhqPYMQJv2ehqLbpKtp2gzAoaoDO0qp7m5LPY4tCc5QrsWkFolgHdELutQ3yy5zHX0/U1aOmVDJ8418+7N4lEo3UudI0apGQ5t2XHgKqSIpd3rF7aJUWy2nQxxL5JbQFYBL2cxS06xaTeiKzFTy3TeEigUYSxEL2lPmzai6K1REyVrSSGvmQGn3CdpxJSHiej81lxqMQ6mZsnRIVsMaJUtLTLRahF2Y2I6sMOJKmt1IFG3TYrkKMHLPT3PDW/oVjNcXsNoNsNEMcxQLLMUxxx5WEfxzFMC6ymRBUpiw6JXlSq8l3zrmyUnKEnz3zJxu1l1yXT7RS0nZqb5xS9NUosxm1fsOimyfQxwiUgkQ0IKJMiQkAoJCiSkQcIESEiHhAxIyIS0lqWialuapKgHxrSiFtGvCwssZFbncp9qcbzdyeSnJFsFRqhpInFK3t9bjvOUBiQnd0iyla/pu3MxOzPryDVwd7zUIDdLLUeuzlPxkP/yfLWAbmoSxyQvo+ZHE7gfhalS/VSmch65BJ+SAhUVRiIkodVeZFiolhcqwyIPRdLGU1cpVjMDt4ISI0J+y7zDV2n3SB5JhFtT2pNk2xYRuc52DUtUwj0WLVtyCjnFWWYzxNOatN56ypKBKhX56ZRGKPfbQF62ITHY+sFy7xVz3CYnHZXUJpd2NM5bK6BRQ5LDpAxDLaaRkYAfebmvpjNwWmiEOi02nyqcFhV1Wjg0GXhHUQByaTKMU0po1IZkFEJTHTBg4wm4MnYDU9QpETXpGpNLm4upuCxmH6cNEq7zhmWKjAWAujQp1dSLAZMjGlHO0GNsrGXFFARdUk5v0CcIuRKVaGUfPbBbwLkJXtE6vfoBkytlsz3PaubJjV9Rfqc1YBeAolLrZJsv9KYKVVBqCejy0ZqbUwveofJl9lFUzzJt5fwLaq77KoIWhx2yprLEGzddrbLUm6QNO+0gU5EHmJRW0rdGaiK4uzRI039LpFm2GcA23VVQoZSpJPpUNRs5xU72XPfG/i9GvRyEhQ+z9EqmlO6aCe3ZUu0iSrza6DQt3ia0bB8jU5mAv9/16h9t8TbvOzPMKsjsyPTtOjWDpBEWppV6lcWEZnwO7hpBiWGSI5qNzlTbeoQzhONmqS0wtWA2E82JCAgwpYJI1HIoAIUjAuYyHd+gbgLQMhodUVOCgGZH1FIEEOY5ovkJAhY4Si1MjBpuDSuKRAS0MVF7ITANHUzUGRHQxWTd7FDNPck19SYI6HNk/RAAA45oMEHAkKOjw2pGWRltxDbCiuYXoTK1OPfJFao2lqiZkLRUyC0TouVTSIwazhu8NwuQvCF23ygJKAu0HJlE9UTzRPfE6AaaAloC3T5TOF64Xnhe+LqBfukQ7RZa26M+bPp5e8wY73mYY/jvG+VkT3JTU5V3TOgcY1Nnr/zMfs9EEOiibDBRLn7SBcAHcM8A/AhMJCKHwe1oe0gAevhxWo6LT3IJbmFm0FV2iwQ+ror3xCfWoTzH89Qy4adLLlM8nlijWYpPTOIWhTNxho7TUYITJJm7dSz7aMPtRR7GDh/vF3ZkHCrq1CyBcYw6W0YTtc8JspFEEopFUUl35uHiLv2W5cVuAm4DO05sJG9B4UEvZVoKQCYGljhNkE1Q7gB+I9JtJJlwLaiYeRBbJkFzQ/3W3fRidmpiSK3rTgUU3rgoMk5PmlRycNzlaZHxbNM8TONpyWP/zgPVTjtAfDWmf2y4uSTQHM2hOPUm33GAtezgS855skHlJycMVWcwITBZkXBpS3sWkjzhu18MPDE+81udjaSbjn/blrmXXqBUub3t16avBS8XsooOst2bSck4kqfgOC+FnQSlxAY2klbsOo4Fr4I1AY7ti2q8K43HxagDbNNp1AHVR3JtqIcnMLXbr7QjzfDJQm+cZwwnp51T7avMlNUfYbnSobwKkM42savdJwsNw+n9V4swz9ScI4sk2FTAJs6DVpmzgJOOnkJfXc8mPcMpGBmpBq9KXgnQQXbgHcOD42JAhi5BGp/Gilot0Tp7NRJc78rGysNicbpVdqajZUERP0Hbm1wo9K4+/dFSt+24y0ngq/FaPulx91dF/SXRP/wmEZuVTJzRtPNz5TArXlzaaHkd3gCBhHs6EdQaUIyLjF/GuCRQI8B7BziAFXTALyBE5BUgH5116S5kwgs4bh0y9yDhJrHQLmUzx8kyAQ2mBNqw0EAfniGEBbTF2B1wPHzjbHCZC8NoTEVcA26Cdp6C8isGhC+os82QXSAUXD5d1MjySTv74944QJzTzYUl9kx7wxFak8mJ6h+qMMPoLCrLrNgoA1b0Tzkx5SzOTQD8uNpbRt6gl5/olpvyFoRRygiTOhS3F64ywSkrA6U95MT/xNJLpuAZ+9s5FYeTvAxbMpVBhtjFARWCdcSrvDHe5momFHh2kxZoFMz2KuxRQah/RJIxIYrHqcof5hs6f5hC6k/nGgVrmNviq1fW+z5QPVgFrKuzqoB/zQgqYCV1qSlsz84Zz8Gkjs/4sOhAYPDhv5975uF/9qWIdnuY//iJ31qLFi+bkI6AgVINjPs9g1OwOEvoV+bbGQzwrTpioowsd9eH89xbdkz3I2CgPCCHab+/fV2cZCaW+BrvOuce0Ww3be8c4qc/wfREnv8vmJS//GC3P2k6YnH2Ow0ub9xispvFPas9GWDuPn9eyOtBRuibcHLMmrKabp/f3OLZj9GkiWsc9c0bKjLsHVB4vVW5CkCEL693zUQRo/s8racyBvtmCgebk8N2O7vlTKBpy/e6WmHrFsG4oalv+qyZabetW/ITBw1HvhfDCn/z1x9tYe0w8C+IaQaTWPzYvI0LpZ3BDM8+BOGvt8yNXF6r2jvg0ok6F4WSa9XI5Za59fAjsN+TEYzpawx1TleKbY6w3ZIWVPub24xbhS1bBWH13B5/ZPrv+syIP0DAqP+vfFvvjTOz2l0ozQVfcvMLJKwxKimls3/gfKXi92Jj/GQmWiBk5Baxo4K/O/b7xoneWndj4fZX3IUR322LIoyod7UkuA59GYyxBR5wzTAU5H1RbZyuoAeLzCE39qDkl9Pcr/+l5LUmXPaK+dNyc7W71zdhukV/D69P+ebylHSXmaHCwmJj7lNlK5Vr6q6uvxLdLTdrkSEDftkf6gFjwPVLOM4umuyHY+vVxfd7/JbI4TbB4Qiz3A1vSy//Zz3NXJcseXyiVxMrKZf5N+pzHRuz7cseXC+Q6LGYPYaNPtaz8oEsJlesNrleJN3O5p1wbN0rVntFn0c6Jn6UeNUry+47egPHhu1OrOjpf2r+B0nH2MJcAh1bYbKbrC+Vv590gi2orBQ1/z/4qPiJZ8mdtaOHfjmTiqqYA+N/3U9R4SxfywrY3S5n/5lfRg/dOc2zRPzweCambIVe3xLSg38E5c2hZtnY4oaK9YyzQi0XRJh6wU8CP+SXQN2yZQF9XLi9Pq/jTlsHMaU4oDMWK0eIPZyZJ0pM/Pf/CKanLz+QqCmvIya0Q6zIECXG882fgvH6hevLg13lwaWbZlVvzm/nh4U/x4wcjRhiY2INIxLj+fqQycY/sfNJhmEFQWAZ5snGqu73+PWmQ78wUH9ZF5bvuC5Yd01mWDfP8GQC5Up5mYdZOoxjJn3FRZ+7NtwehhNb8xJf1Wewbluu99GIIc5kjjWMWO/9GoLx6GbRbr9j27SZG8qG+W7hn0dMHIlk8x7B0cUOp4SWz6/zQ/fmpeqGx2IIW4Ufsix9Z/xQWfeMjdun3SE6w047wu0z8jrusrYTlWEfbypRDjuR1d6NsD0Q4c2e4GTPFYUdoXtC3e/WX1t/XVvmit6vLj+Cw9cbzOux57Dj+Hcnvnes/YRGmA9zRMPsI1HBt+YcPtJx/DNBTBGjxhwWBeH2HxV6IW+Hsw876kcMYo7VffO54fh3juPfn2dxjOF7S9xgDrLpT9+G5+pLH2n4Pe738vzB0T3B/mlYXle3dcO0zslrBVbk7C699G+jd4mOjUv5pwJFta7b8iM2XJcYr8s2bVteu2Fa3dZ1cthui+T/sTpUvSb62xLRpTfEIXrqafDBVYxuB1vDAvnY+uDl+KQ+KV9/LIoGGwyPc8c9yOgTxqXzVx3MZ+wOGFfevhIczMdIPpvIZPKfgwAQUPfJiwULbWXHBRt7EADWKje8OOCnLlkYpB/aGRDAAGGgwmgVmvURy8CLB4uAYDbn4gxyPNwZkZxRbAz+QTWTuQsoYmrJMshAx6ZhFBC5Sh+5eMT3NwKAU5c0vYk9iGFmA1kmoVu/wPaTDCNI8ngrLZG5jsphBPCsX2ZX0UY/hnuh29IDp3AShtk07I1V3ZzEPF9JL188OHQC+kb9WCSrP6hB9zPvi6zmPwBgwGKwIM4A4FbAUktw49ZaBlY8WctiKl6v5ZBG5lodqijnZn601sJ00dK/aUUe+zU0DGMEq7AYvehGD5ZCQjrakQEJOfDBh2JMvGh2OFlCNTqxJECHCoJxQKe24z0VEvzwdFkw0pdnIw9FWme0CDUqZyLoqDuDWIU6BaHmjViIIHqxeicPAXSGHy3DACJYjKkYxhCWDnTx0DoTWRbvJymBRHSbifvrgdW5mi1Wwg3PZCMLaSnXpaBdRl0WZobRAwND0m059vUsQhZykaH8/VL3gWyuDCseO1kYRCTM9KCPLaxElkKHZAoyanS5tAP92Fsiu0vTq1pju/WyM0lfW6KqLsdLHZDq2VjCTEQweFU1DJ0WVwupfeuScA1ydOkKwOIBCacDzNrVwxJ0YJl1sDCJl3VSzPhRH2ZnYSTgUvpb62mgXkVP9Gfxu3LyHQkRLPfW21WFbRi4WVLGImnnKjHHsrcUJTBWKY46EnTSPbcE7dXTkRJHy+IwNKD16z8JszAV9YFjDEynF7cUORjM/VvUPwITzHBgCspRgQVoJQZf4itiicMdpCOe9CSQgYxkIjNZyEo2EslODnJSFLnITdEUQ7EURx6KpwRKpCSSKJlSSKZUUvTLhnp9vkrf4N25vhzD0t6Bjs5/cRjslDNQBFIslb4qo1g0qZYaPzW30ifZkiO5kif5UiCFUiTFUilVovnq/qrgqLAmQBKGa3xX98pll2bn+yRbciT3Z3moexJvBhrHifY3jdEvFWePjENfNQ5kQmtj+lMATHsMcBUWqB5PpZ1zGscqdjZaSYeZHj8pYItuSZNnfMI+9bSwEcSZF7eHXkZz+nFYM5+kiyO3b5wZZB/RdfCorgY=); +} + +@font-face { + font-display: "swap"; + font-family: KaTeX_Typewriter; + font-style: normal; + font-weight: 400; + src: url(data:application/octet-stream;base64,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); +} diff --git a/.obsidian/plugins/scroll-speed/data.json b/.obsidian/plugins/scroll-speed/data.json new file mode 100644 index 0000000..33d863f --- /dev/null +++ b/.obsidian/plugins/scroll-speed/data.json @@ -0,0 +1,5 @@ +{ + "speed": 5, + "altMultiplier": 5, + "enableAnimations": true +} \ No newline at end of file diff --git a/.obsidian/plugins/scroll-speed/main.js b/.obsidian/plugins/scroll-speed/main.js new file mode 100644 index 0000000..a22d0fc --- /dev/null +++ b/.obsidian/plugins/scroll-speed/main.js @@ -0,0 +1,219 @@ +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __markAsModule = (target) => __defProp(target, "__esModule", { value: true }); +var __export = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __reExport = (target, module2, desc) => { + if (module2 && typeof module2 === "object" || typeof module2 === "function") { + for (let key of __getOwnPropNames(module2)) + if (!__hasOwnProp.call(target, key) && key !== "default") + __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable }); + } + return target; +}; +var __toModule = (module2) => { + return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2); +}; +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; + +// main.ts +__export(exports, { + default: () => ScrollSpeed +}); +var import_obsidian = __toModule(require("obsidian")); +var DEFAULT_SETTINGS = { + speed: 5, + altMultiplier: 5, + enableAnimations: true +}; +var ScrollSpeed = class extends import_obsidian.Plugin { + constructor() { + super(...arguments); + this.animationSmoothness = 3; + this.positionY = 0; + this.isMoving = false; + this.scrollDistance = 0; + this.windowOpenListener = (_win, window2) => { + this.registerDomEvent(window2, "wheel", this.scrollListener, { passive: false }); + }; + this.scrollListener = (event) => { + event.preventDefault(); + const path = event.path || event.composedPath && event.composedPath(); + for (const element of path) { + if (this.isScrollable(element, event)) { + this.target = element; + if (this.isTrackPadUsed(event) || !this.settings.enableAnimations) { + this.scrollWithoutAnimation(event); + } else { + this.scrollWithAnimation(event); + } + break; + } + } + }; + } + onload() { + return __async(this, null, function* () { + yield this.loadSettings(); + this.addSettingTab(new SettingsTab(this.app, this)); + this.registerDomEvent(window, "wheel", this.scrollListener, { passive: false }); + this.registerEvent(this.app.on("window-open", this.windowOpenListener)); + }); + } + scrollWithoutAnimation(event) { + const acceleration = event.altKey ? this.settings.speed * this.settings.altMultiplier : this.settings.speed; + this.target.scrollBy(event.deltaX * acceleration, event.deltaY * acceleration); + } + scrollWithAnimation(event) { + if (!this.isMoving) { + this.positionY = this.target.scrollTop; + } + const acceleration = event.altKey ? Math.pow(this.settings.speed * this.settings.altMultiplier, 1.1) : Math.pow(this.settings.speed, 1.1); + this.positionY += event.deltaY * acceleration; + this.scrollDistance = event.deltaY * acceleration; + this.positionY = Math.max(0, Math.min(this.positionY, this.target.scrollHeight - this.target.clientHeight)); + if (!this.isMoving) { + this.isMoving = true; + this.updateScrollAnimation(); + } + } + updateScrollAnimation() { + if (!this.isMoving || !this.target) { + return this.stopScrollAnimation(); + } + const divider = Math.pow(this.animationSmoothness, 1.3); + const delta = this.positionY - this.target.scrollTop; + this.target.scrollTop += delta / divider; + if (delta < 0 && this.positionY < 0 && this.target.scrollTop === 0) { + return this.stopScrollAnimation(); + } + if (delta > 0 && this.positionY > this.target.scrollHeight - this.target.clientHeight / 2 - this.scrollDistance) { + return this.stopScrollAnimation(); + } + if (Math.abs(delta) < this.scrollDistance * 0.015 || Math.abs(delta / divider) < 1) { + return this.stopScrollAnimation(); + } + window.requestAnimationFrame(this.updateScrollAnimation.bind(this)); + } + stopScrollAnimation() { + this.isMoving = false; + this.scrollDistance = 0; + this.positionY = this.target.scrollTop; + if (this.target) + this.target = void 0; + } + isScrollable(element, event) { + const isHorizontal = event.deltaX && !event.deltaY; + return this.isContentOverflowing(element, isHorizontal) && this.hasOverflowStyle(element, isHorizontal); + } + isContentOverflowing(element, horizontal) { + const client = horizontal ? element.clientWidth : element.clientHeight; + const scroll = horizontal ? element.scrollWidth : element.scrollHeight; + return client < scroll; + } + hasOverflowStyle(element, horizontal) { + const style = getComputedStyle(element); + const overflow = style.getPropertyValue(horizontal ? "overflow-x" : "overflow-y"); + return /^(scroll|auto)$/.test(overflow); + } + isTrackPadUsed(event) { + let isTrackPad = false; + if (event.wheelDeltaY) { + if (event.wheelDeltaY === event.deltaY * -3) { + isTrackPad = true; + } + } else if (event.deltaMode === 0) { + isTrackPad = true; + } + return isTrackPad; + } + loadSettings() { + return __async(this, null, function* () { + this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData()); + }); + } + saveSettings() { + return __async(this, null, function* () { + yield this.saveData(this.settings); + }); + } +}; +var SettingsTab = class extends import_obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + const { containerEl } = this; + containerEl.empty(); + let speedSlider; + new import_obsidian.Setting(containerEl).setName("Mouse Scroll Speed").setDesc("1 is the default scroll speed, higher is faster").addExtraButton((button) => { + button.setIcon("reset").setTooltip("Restore default").onClick(() => __async(this, null, function* () { + this.plugin.settings.speed = DEFAULT_SETTINGS.speed; + speedSlider.setValue(DEFAULT_SETTINGS.speed); + yield this.plugin.saveSettings(); + })); + }).addSlider((slider) => { + speedSlider = slider; + slider.setValue(this.plugin.settings.speed).setLimits(0.1, 10, 0.1).setDynamicTooltip().onChange((value) => __async(this, null, function* () { + this.plugin.settings.speed = value; + yield this.plugin.saveSettings(); + })); + }); + let altMultiplierSlider; + new import_obsidian.Setting(containerEl).setName("Alt Multiplier").setDesc("Multiply scroll speed when the ALT key is pressed").addExtraButton((button) => { + button.setIcon("reset").setTooltip("Restore default").onClick(() => __async(this, null, function* () { + this.plugin.settings.altMultiplier = DEFAULT_SETTINGS.altMultiplier; + altMultiplierSlider.setValue(DEFAULT_SETTINGS.altMultiplier); + yield this.plugin.saveSettings(); + })); + }).addSlider((slider) => { + altMultiplierSlider = slider; + slider.setValue(this.plugin.settings.altMultiplier).setLimits(0.1, 10, 0.1).setDynamicTooltip().onChange((value) => __async(this, null, function* () { + this.plugin.settings.altMultiplier = value; + yield this.plugin.saveSettings(); + })); + }); + let animationToggle; + new import_obsidian.Setting(containerEl).setName("Enable Animation").setDesc("Toggle smooth scrolling animations").addExtraButton((button) => { + button.setIcon("reset").setTooltip("Restore default").onClick(() => __async(this, null, function* () { + this.plugin.settings.enableAnimations = DEFAULT_SETTINGS.enableAnimations; + animationToggle.setValue(DEFAULT_SETTINGS.enableAnimations); + yield this.plugin.saveSettings(); + })); + }).addToggle((toggle) => { + animationToggle = toggle; + toggle.setValue(this.plugin.settings.enableAnimations).onChange((value) => __async(this, null, function* () { + this.plugin.settings.enableAnimations = value; + yield this.plugin.saveSettings(); + })); + }); + } +}; +//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibWFpbi50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHtcclxuICBBcHAsXHJcbiAgUGx1Z2luLFxyXG4gIFBsdWdpblNldHRpbmdUYWIsXHJcbiAgU2V0dGluZyxcclxuICBTbGlkZXJDb21wb25lbnQsXHJcbiAgVG9nZ2xlQ29tcG9uZW50LFxyXG4gIFdvcmtzcGFjZVdpbmRvdyxcclxufSBmcm9tICdvYnNpZGlhbidcclxuXHJcbmludGVyZmFjZSBBdWdtZW50ZWRXaGVlbEV2ZW50IGV4dGVuZHMgV2hlZWxFdmVudCB7XHJcbiAgcGF0aDogRWxlbWVudFtdXHJcbiAgd2hlZWxEZWx0YVk6IG51bWJlclxyXG4gIHdoZWVsRGVsdGFYOiBudW1iZXJcclxufVxyXG5cclxuaW50ZXJmYWNlIFNldHRpbmdzIHtcclxuICBzcGVlZDogbnVtYmVyXHJcbiAgYWx0TXVsdGlwbGllcjogbnVtYmVyXHJcbiAgZW5hYmxlQW5pbWF0aW9uczogYm9vbGVhblxyXG59XHJcblxyXG5jb25zdCBERUZBVUxUX1NFVFRJTkdTOiBTZXR0aW5ncyA9IHtcclxuICBzcGVlZDogNSxcclxuICBhbHRNdWx0aXBsaWVyOiA1LFxyXG4gIGVuYWJsZUFuaW1hdGlvbnM6IHRydWUsXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNjcm9sbFNwZWVkIGV4dGVuZHMgUGx1Z2luIHtcclxuICBzZXR0aW5nczogU2V0dGluZ3NcclxuXHJcbiAgYW5pbWF0aW9uU21vb3RobmVzcyA9IDNcclxuICBwb3NpdGlvblkgPSAwXHJcbiAgaXNNb3ZpbmcgPSBmYWxzZVxyXG4gIHRhcmdldDogRWxlbWVudCB8IHVuZGVmaW5lZFxyXG4gIHNjcm9sbERpc3RhbmNlID0gMFxyXG5cclxuICBhc3luYyBvbmxvYWQoKSB7XHJcbiAgICBhd2FpdCB0aGlzLmxvYWRTZXR0aW5ncygpXHJcbiAgICB0aGlzLmFkZFNldHRpbmdUYWIobmV3IFNldHRpbmdzVGFiKHRoaXMuYXBwLCB0aGlzKSlcclxuXHJcbiAgICB0aGlzLnJlZ2lzdGVyRG9tRXZlbnQod2luZG93LCAnd2hlZWwnLCB0aGlzLnNjcm9sbExpc3RlbmVyLCB7cGFzc2l2ZTogZmFsc2V9KVxyXG5cclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMucmVnaXN0ZXJFdmVudCh0aGlzLmFwcC5vbignd2luZG93LW9wZW4nLCB0aGlzLndpbmRvd09wZW5MaXN0ZW5lcikpXHJcbiAgfVxyXG5cclxuICB3aW5kb3dPcGVuTGlzdGVuZXIgPSAoX3dpbjogV29ya3NwYWNlV2luZG93LCB3aW5kb3c6IFdpbmRvdykgPT4ge1xyXG4gICAgdGhpcy5yZWdpc3RlckRvbUV2ZW50KHdpbmRvdywgJ3doZWVsJywgdGhpcy5zY3JvbGxMaXN0ZW5lciwge3Bhc3NpdmU6IGZhbHNlfSlcclxuICB9XHJcblxyXG4gIHNjcm9sbExpc3RlbmVyID0gKGV2ZW50OiBBdWdtZW50ZWRXaGVlbEV2ZW50KSA9PiB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXHJcblxyXG4gICAgLy8gaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzM5MjQ1NjM4Lzg1ODY4MDNcclxuICAgIGNvbnN0IHBhdGggPSBldmVudC5wYXRoIHx8IChldmVudC5jb21wb3NlZFBhdGggJiYgKGV2ZW50LmNvbXBvc2VkUGF0aCgpIGFzIEVsZW1lbnRbXSkpXHJcblxyXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIHBhdGgpIHtcclxuICAgICAgaWYgKHRoaXMuaXNTY3JvbGxhYmxlKGVsZW1lbnQsIGV2ZW50KSkge1xyXG4gICAgICAgIHRoaXMudGFyZ2V0ID0gZWxlbWVudFxyXG5cclxuICAgICAgICBpZiAodGhpcy5pc1RyYWNrUGFkVXNlZChldmVudCkgfHwgIXRoaXMuc2V0dGluZ3MuZW5hYmxlQW5pbWF0aW9ucykge1xyXG4gICAgICAgICAgdGhpcy5zY3JvbGxXaXRob3V0QW5pbWF0aW9uKGV2ZW50KVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNjcm9sbFdpdGhBbmltYXRpb24oZXZlbnQpXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBicmVha1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzY3JvbGxXaXRob3V0QW5pbWF0aW9uKGV2ZW50OiBBdWdtZW50ZWRXaGVlbEV2ZW50KSB7XHJcbiAgICBjb25zdCBhY2NlbGVyYXRpb24gPSBldmVudC5hbHRLZXlcclxuICAgICAgPyB0aGlzLnNldHRpbmdzLnNwZWVkICogdGhpcy5zZXR0aW5ncy5hbHRNdWx0aXBsaWVyXHJcbiAgICAgIDogdGhpcy5zZXR0aW5ncy5zcGVlZFxyXG5cclxuICAgIHRoaXMudGFyZ2V0LnNjcm9sbEJ5KGV2ZW50LmRlbHRhWCAqIGFjY2VsZXJhdGlvbiwgZXZlbnQuZGVsdGFZICogYWNjZWxlcmF0aW9uKVxyXG4gIH1cclxuXHJcbiAgc2Nyb2xsV2l0aEFuaW1hdGlvbihldmVudDogQXVnbWVudGVkV2hlZWxFdmVudCkge1xyXG4gICAgLy8gVE9ETyBob3Jpem9udGFsIHNjcm9sbGluZywgdG9vXHJcbiAgICBpZiAoIXRoaXMuaXNNb3ZpbmcpIHtcclxuICAgICAgdGhpcy5wb3NpdGlvblkgPSB0aGlzLnRhcmdldC5zY3JvbGxUb3BcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBhY2NlbGVyYXRpb24gPSBldmVudC5hbHRLZXlcclxuICAgICAgPyBNYXRoLnBvdyh0aGlzLnNldHRpbmdzLnNwZWVkICogdGhpcy5zZXR0aW5ncy5hbHRNdWx0aXBsaWVyLCAxLjEpXHJcbiAgICAgIDogTWF0aC5wb3codGhpcy5zZXR0aW5ncy5zcGVlZCwgMS4xKVxyXG5cclxuICAgIHRoaXMucG9zaXRpb25ZICs9IGV2ZW50LmRlbHRhWSAqIGFjY2VsZXJhdGlvblxyXG4gICAgdGhpcy5zY3JvbGxEaXN0YW5jZSA9IGV2ZW50LmRlbHRhWSAqIGFjY2VsZXJhdGlvblxyXG4gICAgdGhpcy5wb3NpdGlvblkgPSBNYXRoLm1heCgwLCBNYXRoLm1pbih0aGlzLnBvc2l0aW9uWSwgdGhpcy50YXJnZXQuc2Nyb2xsSGVpZ2h0IC0gdGhpcy50YXJnZXQuY2xpZW50SGVpZ2h0KSlcclxuXHJcbiAgICBpZiAoIXRoaXMuaXNNb3ZpbmcpIHtcclxuICAgICAgdGhpcy5pc01vdmluZyA9IHRydWVcclxuXHJcbiAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQW5pbWF0aW9uKClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHVwZGF0ZVNjcm9sbEFuaW1hdGlvbigpIHtcclxuICAgIGlmICghdGhpcy5pc01vdmluZyB8fCAhdGhpcy50YXJnZXQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc3RvcFNjcm9sbEFuaW1hdGlvbigpXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGl2aWRlciA9IE1hdGgucG93KHRoaXMuYW5pbWF0aW9uU21vb3RobmVzcywgMS4zKVxyXG4gICAgY29uc3QgZGVsdGEgPSB0aGlzLnBvc2l0aW9uWSAtIHRoaXMudGFyZ2V0LnNjcm9sbFRvcFxyXG4gICAgdGhpcy50YXJnZXQuc2Nyb2xsVG9wICs9IGRlbHRhIC8gZGl2aWRlclxyXG5cclxuICAgIC8vIEJvdW5kYXJ5IGF0IHRoZSB0b3BcclxuICAgIGlmIChkZWx0YSA8IDAgJiYgdGhpcy5wb3NpdGlvblkgPCAwICYmIHRoaXMudGFyZ2V0LnNjcm9sbFRvcCA9PT0gMCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zdG9wU2Nyb2xsQW5pbWF0aW9uKClcclxuICAgIH1cclxuXHJcbiAgICAvLyBCb3VuZGFyeSBhdCB0aGUgYm90dG9tXHJcbiAgICBpZiAoXHJcbiAgICAgIGRlbHRhID4gMCAmJlxyXG4gICAgICB0aGlzLnBvc2l0aW9uWSA+IHRoaXMudGFyZ2V0LnNjcm9sbEhlaWdodCAtIHRoaXMudGFyZ2V0LmNsaWVudEhlaWdodCAvIDIgLSB0aGlzLnNjcm9sbERpc3RhbmNlXHJcbiAgICApIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc3RvcFNjcm9sbEFuaW1hdGlvbigpXHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3RvcCB3aGVuIG1vdmVtZW50IGRlbHRhIGlzIGFwcHJvYWNoaW5nIHplcm9cclxuICAgIGlmIChNYXRoLmFicyhkZWx0YSkgPCB0aGlzLnNjcm9sbERpc3RhbmNlICogMC4wMTUgfHwgTWF0aC5hYnMoZGVsdGEgLyBkaXZpZGVyKSA8IDEpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc3RvcFNjcm9sbEFuaW1hdGlvbigpXHJcbiAgICB9XHJcblxyXG4gICAgd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSh0aGlzLnVwZGF0ZVNjcm9sbEFuaW1hdGlvbi5iaW5kKHRoaXMpKVxyXG4gIH1cclxuXHJcbiAgc3RvcFNjcm9sbEFuaW1hdGlvbigpIHtcclxuICAgIHRoaXMuaXNNb3ZpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5zY3JvbGxEaXN0YW5jZSA9IDBcclxuICAgIHRoaXMucG9zaXRpb25ZID0gdGhpcy50YXJnZXQuc2Nyb2xsVG9wXHJcbiAgICBpZiAodGhpcy50YXJnZXQpIHRoaXMudGFyZ2V0ID0gdW5kZWZpbmVkXHJcbiAgfVxyXG5cclxuICBpc1Njcm9sbGFibGUoZWxlbWVudDogRWxlbWVudCwgZXZlbnQ6IEF1Z21lbnRlZFdoZWVsRXZlbnQpIHtcclxuICAgIGNvbnN0IGlzSG9yaXpvbnRhbCA9IGV2ZW50LmRlbHRhWCAmJiAhZXZlbnQuZGVsdGFZXHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgdGhpcy5pc0NvbnRlbnRPdmVyZmxvd2luZyhlbGVtZW50LCBpc0hvcml6b250YWwpICYmXHJcbiAgICAgIHRoaXMuaGFzT3ZlcmZsb3dTdHlsZShlbGVtZW50LCBpc0hvcml6b250YWwpXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBpc0NvbnRlbnRPdmVyZmxvd2luZyhlbGVtZW50OiBFbGVtZW50LCBob3Jpem9udGFsOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBjbGllbnQgPSBob3Jpem9udGFsID8gZWxlbWVudC5jbGllbnRXaWR0aCA6IGVsZW1lbnQuY2xpZW50SGVpZ2h0XHJcbiAgICBjb25zdCBzY3JvbGwgPSBob3Jpem9udGFsID8gZWxlbWVudC5zY3JvbGxXaWR0aCA6IGVsZW1lbnQuc2Nyb2xsSGVpZ2h0XHJcbiAgICByZXR1cm4gY2xpZW50IDwgc2Nyb2xsXHJcbiAgfVxyXG5cclxuICBoYXNPdmVyZmxvd1N0eWxlKGVsZW1lbnQ6IEVsZW1lbnQsIGhvcml6b250YWw6IGJvb2xlYW4pIHtcclxuICAgIGNvbnN0IHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KVxyXG4gICAgY29uc3Qgb3ZlcmZsb3cgPSBzdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGhvcml6b250YWwgPyAnb3ZlcmZsb3cteCcgOiAnb3ZlcmZsb3cteScpXHJcbiAgICByZXR1cm4gL14oc2Nyb2xsfGF1dG8pJC8udGVzdChvdmVyZmxvdylcclxuICB9XHJcblxyXG4gIGlzVHJhY2tQYWRVc2VkKGV2ZW50OiBBdWdtZW50ZWRXaGVlbEV2ZW50KSB7XHJcbiAgICAvLyBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNjI0MTU3NTQvODU4NjgwM1xyXG5cclxuICAgIGxldCBpc1RyYWNrUGFkID0gZmFsc2VcclxuICAgIGlmIChldmVudC53aGVlbERlbHRhWSkge1xyXG4gICAgICBpZiAoZXZlbnQud2hlZWxEZWx0YVkgPT09IGV2ZW50LmRlbHRhWSAqIC0zKSB7XHJcbiAgICAgICAgaXNUcmFja1BhZCA9IHRydWVcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChldmVudC5kZWx0YU1vZGUgPT09IDApIHtcclxuICAgICAgaXNUcmFja1BhZCA9IHRydWVcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaXNUcmFja1BhZFxyXG4gIH1cclxuXHJcbiAgYXN5bmMgbG9hZFNldHRpbmdzKCkge1xyXG4gICAgdGhpcy5zZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfU0VUVElOR1MsIGF3YWl0IHRoaXMubG9hZERhdGEoKSlcclxuICB9XHJcblxyXG4gIGFzeW5jIHNhdmVTZXR0aW5ncygpIHtcclxuICAgIGF3YWl0IHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncylcclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIFNldHRpbmdzVGFiIGV4dGVuZHMgUGx1Z2luU2V0dGluZ1RhYiB7XHJcbiAgcGx1Z2luOiBTY3JvbGxTcGVlZFxyXG5cclxuICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBTY3JvbGxTcGVlZCkge1xyXG4gICAgc3VwZXIoYXBwLCBwbHVnaW4pXHJcbiAgICB0aGlzLnBsdWdpbiA9IHBsdWdpblxyXG4gIH1cclxuXHJcbiAgZGlzcGxheSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHtjb250YWluZXJFbH0gPSB0aGlzXHJcbiAgICBjb250YWluZXJFbC5lbXB0eSgpXHJcblxyXG4gICAgbGV0IHNwZWVkU2xpZGVyOiBTbGlkZXJDb21wb25lbnRcclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnTW91c2UgU2Nyb2xsIFNwZWVkJylcclxuICAgICAgLnNldERlc2MoJzEgaXMgdGhlIGRlZmF1bHQgc2Nyb2xsIHNwZWVkLCBoaWdoZXIgaXMgZmFzdGVyJylcclxuICAgICAgLmFkZEV4dHJhQnV0dG9uKGJ1dHRvbiA9PiB7XHJcbiAgICAgICAgYnV0dG9uXHJcbiAgICAgICAgICAuc2V0SWNvbigncmVzZXQnKVxyXG4gICAgICAgICAgLnNldFRvb2x0aXAoJ1Jlc3RvcmUgZGVmYXVsdCcpXHJcbiAgICAgICAgICAub25DbGljayhhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnNwZWVkID0gREVGQVVMVF9TRVRUSU5HUy5zcGVlZFxyXG4gICAgICAgICAgICBzcGVlZFNsaWRlci5zZXRWYWx1ZShERUZBVUxUX1NFVFRJTkdTLnNwZWVkKVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgICAgLmFkZFNsaWRlcihzbGlkZXIgPT4ge1xyXG4gICAgICAgIHNwZWVkU2xpZGVyID0gc2xpZGVyXHJcbiAgICAgICAgc2xpZGVyXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3Muc3BlZWQpXHJcbiAgICAgICAgICAuc2V0TGltaXRzKDAuMSwgMTAsIDAuMSlcclxuICAgICAgICAgIC5zZXREeW5hbWljVG9vbHRpcCgpXHJcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgdmFsdWUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5zcGVlZCA9IHZhbHVlXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICB9KVxyXG5cclxuICAgIGxldCBhbHRNdWx0aXBsaWVyU2xpZGVyOiBTbGlkZXJDb21wb25lbnRcclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSgnQWx0IE11bHRpcGxpZXInKVxyXG4gICAgICAuc2V0RGVzYygnTXVsdGlwbHkgc2Nyb2xsIHNwZWVkIHdoZW4gdGhlIEFMVCBrZXkgaXMgcHJlc3NlZCcpXHJcbiAgICAgIC5hZGRFeHRyYUJ1dHRvbihidXR0b24gPT4ge1xyXG4gICAgICAgIGJ1dHRvblxyXG4gICAgICAgICAgLnNldEljb24oJ3Jlc2V0JylcclxuICAgICAgICAgIC5zZXRUb29sdGlwKCdSZXN0b3JlIGRlZmF1bHQnKVxyXG4gICAgICAgICAgLm9uQ2xpY2soYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5hbHRNdWx0aXBsaWVyID0gREVGQVVMVF9TRVRUSU5HUy5hbHRNdWx0aXBsaWVyXHJcbiAgICAgICAgICAgIGFsdE11bHRpcGxpZXJTbGlkZXIuc2V0VmFsdWUoREVGQVVMVF9TRVRUSU5HUy5hbHRNdWx0aXBsaWVyKVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgICAgLmFkZFNsaWRlcihzbGlkZXIgPT4ge1xyXG4gICAgICAgIGFsdE11bHRpcGxpZXJTbGlkZXIgPSBzbGlkZXJcclxuICAgICAgICBzbGlkZXJcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5hbHRNdWx0aXBsaWVyKVxyXG4gICAgICAgICAgLnNldExpbWl0cygwLjEsIDEwLCAwLjEpXHJcbiAgICAgICAgICAuc2V0RHluYW1pY1Rvb2x0aXAoKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jIHZhbHVlID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuYWx0TXVsdGlwbGllciA9IHZhbHVlXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICB9KVxyXG5cclxuICAgIGxldCBhbmltYXRpb25Ub2dnbGU6IFRvZ2dsZUNvbXBvbmVudFxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKCdFbmFibGUgQW5pbWF0aW9uJylcclxuICAgICAgLnNldERlc2MoJ1RvZ2dsZSBzbW9vdGggc2Nyb2xsaW5nIGFuaW1hdGlvbnMnKVxyXG4gICAgICAuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IHtcclxuICAgICAgICBidXR0b25cclxuICAgICAgICAgIC5zZXRJY29uKCdyZXNldCcpXHJcbiAgICAgICAgICAuc2V0VG9vbHRpcCgnUmVzdG9yZSBkZWZhdWx0JylcclxuICAgICAgICAgIC5vbkNsaWNrKGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZW5hYmxlQW5pbWF0aW9ucyA9IERFRkFVTFRfU0VUVElOR1MuZW5hYmxlQW5pbWF0aW9uc1xyXG4gICAgICAgICAgICBhbmltYXRpb25Ub2dnbGUuc2V0VmFsdWUoREVGQVVMVF9TRVRUSU5HUy5lbmFibGVBbmltYXRpb25zKVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4ge1xyXG4gICAgICAgIGFuaW1hdGlvblRvZ2dsZSA9IHRvZ2dsZVxyXG4gICAgICAgIHRvZ2dsZS5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5lbmFibGVBbmltYXRpb25zKS5vbkNoYW5nZShhc3luYyB2YWx1ZSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5lbmFibGVBbmltYXRpb25zID0gdmFsdWVcclxuICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICB9XHJcbn1cclxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUEsc0JBUU87QUFjUCxJQUFNLG1CQUE2QjtBQUFBLEVBQ2pDLE9BQU87QUFBQSxFQUNQLGVBQWU7QUFBQSxFQUNmLGtCQUFrQjtBQUFBO0FBR3BCLGdDQUF5Qyx1QkFBTztBQUFBLEVBQWhELGNBNUJBO0FBNEJBO0FBR0UsK0JBQXNCO0FBQ3RCLHFCQUFZO0FBQ1osb0JBQVc7QUFFWCwwQkFBaUI7QUFZakIsOEJBQXFCLENBQUMsTUFBdUIsWUFBbUI7QUFDOUQsV0FBSyxpQkFBaUIsU0FBUSxTQUFTLEtBQUssZ0JBQWdCLEVBQUMsU0FBUztBQUFBO0FBR3hFLDBCQUFpQixDQUFDLFVBQStCO0FBQy9DLFlBQU07QUFHTixZQUFNLE9BQU8sTUFBTSxRQUFTLE1BQU0sZ0JBQWlCLE1BQU07QUFFekQsaUJBQVcsV0FBVyxNQUFNO0FBQzFC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 diff --git a/.obsidian/plugins/scroll-speed/manifest.json b/.obsidian/plugins/scroll-speed/manifest.json new file mode 100644 index 0000000..a20dc99 --- /dev/null +++ b/.obsidian/plugins/scroll-speed/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "scroll-speed", + "name": "Scroll Speed", + "version": "1.4.0", + "minAppVersion": "1.0.3", + "description": "This plugin allows you to change the scroll speed inside Obsidian notes.", + "author": "Florian Ludewig", + "authorUrl": "https://flolu.de", + "isDesktopOnly": false +} diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 9360ce2..1324a7f 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -8,33 +8,14 @@ "type": "tabs", "children": [ { - "id": "1d85c224683321ec", + "id": "8c353f1d24129115", "type": "leaf", "state": { - "type": "pdf", + "type": "markdown", "state": { - "file": "Biometric Systems/slides/LEZIONE1_Introduzione.pdf", - "page": 32, - "left": -24, - "top": 10, - "zoom": 0.615625 - } - } - } - ] - }, - { - "id": "75aa4113d18475de", - "type": "tabs", - "children": [ - { - "id": "97d6e45de66358f9", - "type": "leaf", - "state": { - "type": "diff-view", - "state": { - "file": ".obsidian/workspace.json", - "staged": false + "file": "Autonomous Networking/notes/2 RFID.md", + "mode": "source", + "source": false } } } @@ -104,7 +85,7 @@ "state": { "type": "backlink", "state": { - "file": "Biometric Systems/slides/LEZIONE1_Introduzione.pdf", + "file": "Autonomous Networking/notes/2 RFID.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -121,7 +102,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "Biometric Systems/slides/LEZIONE1_Introduzione.pdf", + "file": "Autonomous Networking/notes/2 RFID.md", "linksCollapsed": false, "unlinkedCollapsed": true } @@ -144,7 +125,7 @@ "state": { "type": "outline", "state": { - "file": "Biometric Systems/slides/LEZIONE1_Introduzione.pdf" + "file": "Autonomous Networking/notes/2 RFID.md" } } }, @@ -161,7 +142,7 @@ } ], "direction": "horizontal", - "width": 289.5 + "width": 233.5 }, "left-ribbon": { "hiddenItems": { @@ -178,23 +159,32 @@ "obsidian-git:Open Git source control": false } }, - "active": "97d6e45de66358f9", + "active": "8c353f1d24129115", "lastOpenFiles": [ + "Autonomous Networking/slides/2 RFID.pdf", + "Autonomous Networking/images/Pasted image 20240928134852.png", + "Autonomous Networking/images/Pasted image 20240928140723.png", + "Autonomous Networking/images/Pasted image 20240928193321.png", + "Autonomous Networking/images", + "Autonomous Networking/images/Pasted image 20240928143319.png", + "Autonomous Networking/notes/2 RFID.md", + "Autonomous Networking/images/Pasted image 20240928193303.png", + "Autonomous Networking/images/Pasted image 20240928193208.png", + "Autonomous Networking/images/Pasted image 20240928191316.png", + "Autonomous Networking/images/Pasted image 20240928183123.png", + "Autonomous Networking/images/Pasted image 20240928181424.png", + "Autonomous Networking/images/Pasted image 20240928181304.png", + "Autonomous Networking/notes", + "Autonomous Networking/slides", + "Autonomous Networking", "Biometric Systems/final notes/1. Introduction.md", "LICENSE", "Biometric Systems/slides/LEZIONE1_Introduzione.pdf", "Biometric Systems/slides/lezione1 notes.md", - "Biometric Systems/images/architecture - recognition.png", - "Biometric Systems/images/architecture - enrollment.png", "Biometric Systems/images", "Biometric Systems/slides/LEZIONE2_Indici_di_prestazione.pdf", "prova per obsidian.md", "Biometric Systems/final notes", - "Biometric Systems/slides", - "Biometric Systems", - "Senza nome.canvas", - "bachelor_presentation-1.pdf", - "bachelor_presentation-1 2.pdf", - "bachelor_presentation-1 1.pdf" + "Senza nome.canvas" ] } \ No newline at end of file diff --git a/Autonomous Networking/images/Pasted image 20240928134852.png b/Autonomous Networking/images/Pasted image 20240928134852.png new file mode 100644 index 0000000..091f00e Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928134852.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928140723.png b/Autonomous Networking/images/Pasted image 20240928140723.png new file mode 100644 index 0000000..23e1ce6 Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928140723.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928143319.png b/Autonomous Networking/images/Pasted image 20240928143319.png new file mode 100644 index 0000000..3c7807b Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928143319.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928155313.png b/Autonomous Networking/images/Pasted image 20240928155313.png new file mode 100644 index 0000000..b3b75aa Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928155313.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928160334.png b/Autonomous Networking/images/Pasted image 20240928160334.png new file mode 100644 index 0000000..94f208c Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928160334.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928164839.png b/Autonomous Networking/images/Pasted image 20240928164839.png new file mode 100644 index 0000000..94a0a4b Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928164839.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928165439.png b/Autonomous Networking/images/Pasted image 20240928165439.png new file mode 100644 index 0000000..6ca648f Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928165439.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928165943.png b/Autonomous Networking/images/Pasted image 20240928165943.png new file mode 100644 index 0000000..bc8f96f Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928165943.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928175441.png b/Autonomous Networking/images/Pasted image 20240928175441.png new file mode 100644 index 0000000..fec1490 Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928175441.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928181304.png b/Autonomous Networking/images/Pasted image 20240928181304.png new file mode 100644 index 0000000..df8fc6a Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928181304.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928181424.png b/Autonomous Networking/images/Pasted image 20240928181424.png new file mode 100644 index 0000000..60d1074 Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928181424.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928183123.png b/Autonomous Networking/images/Pasted image 20240928183123.png new file mode 100644 index 0000000..7c01b45 Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928183123.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928191316.png b/Autonomous Networking/images/Pasted image 20240928191316.png new file mode 100644 index 0000000..8fd1d4d Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928191316.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928193208.png b/Autonomous Networking/images/Pasted image 20240928193208.png new file mode 100644 index 0000000..07ed716 Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928193208.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928193303.png b/Autonomous Networking/images/Pasted image 20240928193303.png new file mode 100644 index 0000000..929ab7f Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928193303.png differ diff --git a/Autonomous Networking/images/Pasted image 20240928193321.png b/Autonomous Networking/images/Pasted image 20240928193321.png new file mode 100644 index 0000000..196df8b Binary files /dev/null and b/Autonomous Networking/images/Pasted image 20240928193321.png differ diff --git a/Autonomous Networking/notes/2 RFID.md b/Autonomous Networking/notes/2 RFID.md new file mode 100644 index 0000000..863020e --- /dev/null +++ b/Autonomous Networking/notes/2 RFID.md @@ -0,0 +1,172 @@ +Radio-frequency identification (RFID) is a technology that uses radio waves to communicate wirelessly. An RFID system consists of two main components: +- **Tags:** small, inexpensive, and long-lasting devices that are attached to objects to be identified. They store a unique identifier, typically 96 bits long, and consist of an antenna integrated onto a microchip. RFID tags are battery-free, passive devices that harvest power from radio frequency signals. They reflect the signal generated by the reader to transmit their unique ID. +- **Readers:** These are more powerful devices that query tags to retrieve their IDs. + +#### MAC issues +- large number of passive tags +- tags cannot transmit transmit spontaneously: + - reader queries tags + - tags respond with their ID by back-scattering the received signal + - two or more simultaneous tag responses cause collision + - tags cannot ear each other (no carrier sense, no collision detection) + - channel access must be arbitrated by the reader + +## Mac protocols +To identify tags in a RFID system, several MAC protocols have been proposed + +**Sequential protocols** +aim at singulating tag transmissions +- **Tree based** + - Binary Splitting + - Query Tree + - Variations (Query Tree Improved) +- **Aloha based** + - Framed Slotted Alhoa + - EPC Gen Standard + - Tree Slotted Alhoa + - Variations (BSTSA) + +**Concurrent protocols** +not covered in the course + +#### Binary Splitting +- BS recursively splits answering tags into two subgroups until obtaining singletag groups. +- Tags answer to reader’s queries according to the generation of a binary random number + +- Suppose we have a set of tags to identify + - Each tag has a counter initially set to zero +- The tags with the counter = 0 reply to the reader query + - The reader sends a query + - All tags reply → collision + - Each tag generates a random binary number (0,1) and sums it to the counter +- The process repeats + - The reader sends a query + - All tags with C=0 replies + - If collision → each replying tag generates a random binary number and sums it to its counter + - Each other tag (silent) → C=C+1 + - If none or one tag replies → all tags: counter = counter - 1 +#### Query Tree +- QT queries tags according to the binary structure of their ID + +- The reader interrogates tags by sending them a string, and only those tags whose IDs have a **prefix** matching that string respond to the query +- At the beginning, the reader queries all tags: this is implemented by including a **NULL** string in the query +- If a collision occurs, then the string length is **increased by one bit** until the collision is solved and a tag is identified +- The reader then starts a new query with a different string. In particular, if tag identification occurs with a string q0 the reader will query for string **q1** + +#### Performances +In case of uniform ID distribution, the tree induced by QT is analogous to the tree induced by BS, this is because a set of uniformly distributed tags splits approximately in equal parts, like in the Bs protocol. +![[Pasted image 20240928134852.png]] +→ QT and BS protocols have the same estimated performance! +##### Measuring the performance +- we want to know how fast a protocol is to collect all tags ID (each tag needs to reply) +- if we have n tags, then the protocol will end when all n tags have responded singularly +- system efficiency: $SE = \frac{n}{q}$ (n = single responses, q = total number of queries) +###### Performance of Binary Splitting +- to evaluate efficiency (SE) we need to estimate the total number of queries (#Q) that we call $BS_{tot}(n)$ +- to evaluate the total number of queries we estimate the total number of nodes in a BS tree +- at each queries tags split into two sets +- we recursively count the number of nodes in the tree + ![[Pasted image 20240928140723.png]] +- we estimate the total number of queries $BS_{tot}(n)$ to identify n tags as $$BS_{tot}(n)=\begin{cases}1,n\le1\\ 1+\sum_{k=0}^{n}\binom{n}{k}\left(\frac12\right)^{k}\left(1-\frac12\right)^{n-k}\left(BS_{tot}\left(k\right)+BS_{tot}\left(n-k\right)\right),n>1\end{cases}$$ +- for large values of n, we get $SE_{BS}=0.38$, which means that only 38% of queries are successful! +- **the efficiency is low!** + +#### Aloha principle +- Time is slotted. Slot duration is equal to the tag’s ID transmission time +- Slots are grouped into frames +- Each tag randomly picks a slot to respond + +#### Frame slotted Aloha +- when a reader issues a start of frame, it includes the number of slots in a frame +- the tags then randomly pick a slot in which to reply +- collisions occur if two or more tags pick the same slot +- the process repeats itself until all tags are identified +- once a tag is identified, it no longer responds to the start of frame +![[Pasted image 20240928143319.png]] +In the example above, we have 6 slots, 3 collision and 3 identified tags. +- system efficiency is equal to $\frac{\#identifications}{\#slots} = 50\%$ +- in general, best performance is achieved when the number of slots in a frame is equal to the number of tags to be identified + +#### EPC Gen 2 class 1 +- Based on Frame slotted Aloha +- adapts frame length according to the number of collisions and empty slots +- specifies the **transmission time model**, that allow us to estimate a temporale evaluation of protocol performance + +##### Transmission time model +![[Pasted image 20240928155313.png]] +- R1: tag reaction time +- R2: reader reaction time +- RX_threshold: time at which the reader should receive the first bit of tag transmission + +The key aspect of transmission time model stands in observing that idle responses (no response) last less than identification or colliding responses + +#### Analytical model +Each tag randomly selects a slot (balls and bins model) +![[Pasted image 20240928160334.png]] +- n tags randomly select the slot to answer among N slots +- the probability that r tags answer in the same slot is given by the binomial distribution +- the number of slots with exactly r tags (probabilità che r tag scelgano lo stesso slot) is given by: $$s\left(r\right)=N\binom{n}{r}\left(\frac{1}{N}\right)^{r}\left(1-\frac{1}{N}\right)^{n-r}$$ +##### Time system efficiency +- Let $R_{ident}, R_{call}, R_{idle}$ be the number of identifications, collisions and idle rounds during the identification process +- $R_{idle}=N(1-\frac{1}{N})^n$ +- $R_{ident}=n(1-\frac{1}{N})^{n-1}$ +- $R_{coll}=N-R_{idle}-R_{ident}$ +- system efficiency = $R_{ident}/(R_{idle}+R_{ident}+R_{coll})$ +- will be **36%** if rounds have the same duration + +As stated before, we can make idle rounds last less. Let's suppose they last a $\beta$ fraction of the identification/collision round time: +$$Time\_SE=\frac{R_{ident}}{\beta R_{idle}+R_{ident}+R_{coll}}=\frac{n\left(1-\frac{1}{N}\right)^{n-1}}{\left(\beta-1\right)N\left(1-\frac{1}{N}\right)^{n}+N}$$![[Pasted image 20240928164839.png]] +**40% of time is wasted in idle and collisions slots!** Can we reduce this time? + +### Tree slotted Aloha +- slots are executed following a tree +- a new child frame is issued for each collision slot: only tags replying to the same slot participate into the new slot + +![[Pasted image 20240928165943.png]] +[Learn more](https://www.researchgate.net/figure/An-example-of-Tree-Slotted-Aloha-TSA_fig21_326759775) + +- To estimate TSA performance we again count the number of nodes in the TSA tree +$$TSA_{tot}(n)=\begin{cases}1,n=1\\ n+n\sum_{k=2}^{n}\binom{n}{k}\left(\frac{1}{n}\right)^{k}\left(1-\frac{1}{n}\right)^{n-k}TSA_{tot}\left(k\right),n>1\end{cases}$$ +- per valori grandi di n, l'efficienza è 0.43 +![[Pasted image 20240928175441.png]] + +#### TSA and FSA: main issues +Often the number of tags in the system **is not known!** +- how can we estimate the frame size? +- any time TSA issues a new frame it has to estimate the number of tags participating into that frame +- and the initial frame? How many tags are in the environment? + +##### Estimating tag population for intermediate frames +- The number of tags to be identified is not known +- The initial frame size is set to a predefined value (i.e., 128) +- The size of the following frames is estimated $$tags\_per\_collision\_slot=\frac{(estimated\_total\_num\_of\_tags) - (identified\_tags)}{collision\_slots}$$ +- We know number of identified tags and number of collision slots, but **we don't know** the total number of tags! :/ + +- The total number of tags is estimated according to the outcome of the previous frame (based on Chebyshevʼs inequality) + ![[Pasted image 20240928181304.png]] + +Given N and a possible value of n, the expected number of slots with r tags is estimated as: +![[Pasted image 20240928181424.png]] + +##### Inaccuracy of tag estimation for large networks +- The estimator does not capture the possibly high variance of the number of tags +- The minimum distance is computed over n ranging in $[c_1 + 2c_k, 2(c1 + 2c_k)]$ +- The upper bound $2(c1 + 2c_k)$ is not adequate for network composed of thousands of nodes + ![[Pasted image 20240928183123.png]] +Let's try to find a better upper bound! +A solution can be the BSTSA protocol. + +#### Binary Splitting Tree Slotted Aloha +- Basic principle: any large group of elements randomly split into two groups of almost the same size +- BSTSA: Combination of BS and TSA + - BS is used to divide tags into groups whose size can be easily estimated + - TSA is used to identify tags +![[Pasted image 20240928193208.png]] + +L'idea è che facendo binary split fino ad avere un gruppo con un solo tag (come in figura), poi posso finalmente stimare la dimensione degli altri gruppi, in questo modo posso scegliere un valore di N (numero di slot) adeguato per identificare ogni gruppo con TSA. + +##### Performances +- BS performace up to the last split +- TSA performance for each group +- Optimal frame tuning is considered (overestimating frame size to allow for more idle slots than collision slots) +![[Pasted image 20240928193303.png]]![[Pasted image 20240928193321.png]] diff --git a/Autonomous Networking/slides/2 RFID.pdf b/Autonomous Networking/slides/2 RFID.pdf new file mode 100644 index 0000000..561c6c2 Binary files /dev/null and b/Autonomous Networking/slides/2 RFID.pdf differ