diff --git a/.gitignore b/.gitignore index d46af724..4742fc4b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +public/ node_modules .temp .cache diff --git a/.zine.ziggy-schema b/.zine.ziggy-schema new file mode 100644 index 00000000..85cff02a --- /dev/null +++ b/.zine.ziggy-schema @@ -0,0 +1,166 @@ +$ = Config + +/// This is the schema of a Zine website config file, usually named 'zine.ziggy'. +struct Config { + /// A semver string representing the version of Zine that your website + /// requires. Used by GitHub / Forgejo actions to select automatically + /// the right version of Zine to fetch, see the 'Deploying' section of + /// https://zine-ssg.io/docs/. + zine_version: bytes, + /// SuperMD content rendering settings + supermd: ?SuperMd, + /// Your website definition + site: Site, + /// User-defined properties that you can reference from SuperHTML via + /// '$site.custom'. + custom: {:}any, +} + +struct SuperMd { + /// SuperMD documents start at heading level 1 ('#') which by default + /// renders as `

`. Should SuperMD headings start at `

` instead? + headings_h2: ?bool, + /// Should external links generated by SuperMD automatically add + /// `target="_blank"`? Defaults to `false`. + /// + /// Note: you can override this setting on each link by using explicit + /// syntax (e.g. `[my link]($link.url(https://example.com).new(true))`) + auto_target_blank: ?bool, +} + +union Site { + simple: Simple, + multilingual: Multilingual, + + struct Simple { + title: bytes, + /// URL where the website will be hosted. + /// It must not contain a subpath, see `url_path_prefix`. + host_url: bytes, + /// Set this value if your website is hosted under a subpath of `host_url`. + /// + /// `host_url` and `url_prefix_path` are split to allow the development + /// server to generate correct relative paths when serving the website + /// locally. + url_path_prefix: ?bytes, + + /// Directory containing your SuperHTML layouts. + layouts_dir_path: bytes, + /// Directory containing your SuperMD content. + content_dir_path: bytes, + /// Directory containing your site-wide assets. + assets_dir_path: bytes, + + /// Subpaths in `assets_dir_path` that will be installed unconditionally. + /// All other assets will be installed only if referenced by a content file + /// or a layout by calling `$site.asset('foo').link()`. + /// + /// Examples of incorrect usage of this field: + /// - site-wide CSS files (should be `link`ed by templates) + /// - RSS feeds (should be generated by defining `alternative` pages) + /// + /// Examples of correct usage of this field: + /// - `favicon.ico` and other similar assets auto-discovered by browsers + /// - Font files only referenced inside of CSS files. + static_assets: []bytes, + /// When enabled, Zine will automatically add 'width' and 'height' + /// attributes to elements for local assets. + /// Be aware that setting 'width' and 'heigth' of an image will in some + /// circumstances cause browsers to distort images. + /// + /// This problem can be solved by adding the following CSS code to your + /// site: + /// + /// img { height: auto; } + /// + image_size_attributes: ?bool, + } + + struct Multilingual { + /// URL where the website will be hosted. + /// It must not contain a subpath, see `Locale.output_prefix_override`. + host_url: bytes, + /// Directory that contains mappings from placeholders to translations, + /// expressed as Ziggy files. + /// + /// Each Ziggy file must be named after the locale it's meant to offer + /// translations for. + i18n_dir_path: bytes, + /// Directory containing your SuperHTML layouts. + layouts_dir_path: bytes, + /// Directory containing your site-wide assets. + assets_dir_path: bytes, + /// Location where site- and build- assets will be installed. By default + /// assets will be installed directly in the output location. + /// + /// In mulitilingual websites Zine will create a single copy of + /// site assets which will then be installed at this location. It + /// will be your duty to then copy this directory elsewhere if + /// needed in your deployment setup (e.g. when deploying different + /// localized variants to different hosts). + /// + /// NOTE: *page* assets will still be installed next to their + /// relative page. + assets_prefix_path: ?bytes, + /// Subpaths in `assets_dir_path` that will be installed unconditionally. + /// All other assets will be installed only if referenced by a content file + /// or a layout by using `$site.asset('foo').link()`. + /// + /// Examples of incorrect usage of this field: + /// - site-wide CSS files (should be `link`ed by templates) + /// - RSS feeds (should be generated by defining `alternative` pages) + /// + /// Examples of correct usage of this field: + /// - `favicon.ico` and other similar assets auto-discovered by browsers + /// - Font files only referenced inside of CSS files. + static_assets: []bytes, + /// A list of locales of this website. + /// + /// For each entry the following values must be unique: + /// - `code` + /// - `output_prefix_override` (if not null) + `host_url_override` + locales: []Locale, + /// When enabled, Zine will automatically add 'width' and 'height' + /// attributes to elements for local assets. + /// Be aware that setting 'width' and 'heigth' of an image will in some + /// circumstances cause browsers to distort images. + /// + /// This problem can be solved by adding the following CSS code to your + /// site: + /// + /// img { height: auto; } + /// + image_size_attributes: ?bool, + + struct Locale { + /// A language-NATION code, e.g. 'en-US', used to identify each + /// individual localized variant of the website. + /// + /// Must be unique. + code: bytes, + /// A name that identifies this locale, e.g. 'English' + name: bytes, + /// Content dir for this locale, + content_dir_path: bytes, + /// Site title for this locale. + site_title: bytes, + /// Set to a non-null value when deploying this locale from a dedicated + /// host (e.g. 'https://us.site.com', 'http://de.site.com'). + /// + /// It must not contain a path other than '/'. + host_url_override: ?bytes, + /// | output_ | host_ | resulting | resulting | + /// | prefix_ | url_ | url | path | + /// | override | override | prefix | prefix | + /// | -------- | ------------- | ---------------- | --------------- | + /// | null | null | site.com/en-US/ | zig-out/en-US/ | + /// | null | "us.site.com" | us.site.com/ | zig-out/en-US/ | + /// | "foo" | null | site.com/foo/ | zig-out/foo/ | + /// | "foo" | "us.site.com" | us.site.com/foo/ | zig-out/foo/ | + /// | "" | null | site.com/ | zig-out/ | + /// + /// The last case is how you create a default locale. + output_prefix_override: ?bytes, + } + } +} diff --git a/0.5.0/docs/.vuepress/dist/index.html b/0.5.0/docs/.vuepress/dist/index.html deleted file mode 100644 index beb7fd03..00000000 --- a/0.5.0/docs/.vuepress/dist/index.html +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - buzz - - - - -
buzz

buzz

A small/lightweight statically typed scripting language

Guide Reference Try it Latest release open in new window

Statically typed

Find out bugs in your IDE rather than production

JIT compiled

Uses MIR, a fast and lightweight JIT compiler

Unambiguous

No implicit behavior or unexpected type coercion

Small in size and complexity

Does not take much space on your drive or in your mind

Interoperability with C

Call C functions easily with FFIs and embed buzz with its C API

Fibers

Single threaded cooperative multitasking

import "std";
-
-fun fibonacci(n: int) > void *> int? {
-    var n1 = 0;
-    var n2 = 1;
-    var next: int? = null;
-
-    foreach (_ in 0..n) {
-        _ = yield n1;
-        next = n1 + n2;
-        n1 = n2;
-        n2 = next!;
-    }
-}
-
-fun main(args: [str]) > void {
-    final N = std\parseInt(args[?0] ?? "10")!;
-
-    foreach (n in &fibonacci(N)) {
-        std\print("{n}");
-    }
-}
-
- - - diff --git a/0.5.0/docs/index.md b/0.5.0/docs/index.md deleted file mode 100755 index 3c94f284..00000000 --- a/0.5.0/docs/index.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -home: true -heroImage: logo.png -tagline: A small/lightweight statically typed scripting language -actions: - - text: Guide - link: /guide/ - - text: Reference - link: /reference/ - - text: Try it - link: /repl - - text: Latest release - link: https://github.com/buzz-language/buzz/releases/tag/0.5.0 - type: secondary -features: - - title: Statically typed - details: Find out bugs in your IDE rather than production - - title: JIT compiled - details: Uses MIR, a fast and lightweight JIT compiler - - title: Unambiguous - details: No implicit behavior or unexpected type coercion - - title: Small in size and complexity - details: Does not take much space on your drive or in your mind - - title: Interoperability with C - details: Call C functions easily with FFIs and embed buzz with its C API - - title: Fibers - details: Single threaded cooperative multitasking -footer: MIT licensed | Copyright © 2021-present Benoit Giannangeli ---- -```buzz -import "std"; - -fun fibonacci(n: int) > void *> int? { - var n1 = 0; - var n2 = 1; - var next: int? = null; - - foreach (_ in 0..n) { - _ = yield n1; - next = n1 + n2; - n1 = n2; - n2 = next!; - } -} - -fun main(args: [str]) > void { - final N = std\parseInt(args[?0] ?? "10")!; - - foreach (n in &fibonacci(N)) { - std\print("{n}"); - } -} -``` diff --git a/assets/Temml-Local.css b/assets/Temml-Local.css new file mode 100644 index 00000000..8c61ca4c --- /dev/null +++ b/assets/Temml-Local.css @@ -0,0 +1,249 @@ +/* +Temml.woff2 is a clone of KaTeX_Script-Regular, except that the code points +have been changed from ASCII to Unicode Mathematical Alphanumeric Symbols Script capitals, +Unicode range 1D49C to 1D4B5. +*/ + +@font-face { + font-family: 'Temml'; + src: url('Temml.woff2') format('woff2'); + font-weight: normal; + font-style: normal; +} + +math { + font-family: "Cambria Math", 'STIXTwoMath-Regular', 'NotoSansMath-Regular', math; + font-style: normal; + font-weight: normal; + line-height: normal; + font-size-adjust: none; + text-indent: 0; + text-transform: none; + letter-spacing: normal; + word-wrap: normal; + direction: ltr; + /* Prevent Firefox from omitting the dot on i or j. */ + font-feature-settings: "dtls" off; +} + +math * { + border-color: currentColor; +} + +/* Next line is active in Firefox and Safari. + * Not in Chromium, which recognizes display: "block math" written inline. */ +math.tml-display { display: block; } + +*.mathcal { + /* NotoSans */ + font-feature-settings: 'ss01'; +} + +math .mathscr { + font-family: "Temml"; +} + +mo.tml-prime { + font-family: Temml; +} + +/* Prevent f' from overlapping in Chromium */ +mo.prime-pad { + padding-left: 0.08em; +} + +/* \cancel & \phase use background images. Get them to print. */ +menclose { + -webkit-print-color-adjust: exact; /* Chrome & Edge */ + print-color-adjust: exact; +} + +/* Array cell justification in Firefox & WebKit */ +.tml-right { + text-align: right; +} +.tml-left { + text-align: left; +} + +/* Styles for Chromium only */ +@supports (not (-webkit-backdrop-filter: blur(1px))) and (not (-moz-appearance: none)) { + /* MathML Core & Chromium do not support the MathML 3.0 element attributes. */ + /* So use styles. */ + menclose { + position: relative; + padding: 0.5ex 0ex; + } + + .tml-overline { + padding: 0.1em 0 0 0; + border-top: 0.065em solid; + } + + .tml-underline { + padding: 0 0 0.1em 0; + border-bottom: 0.065em solid; + } + + .tml-cancel { + display: inline-block; + position: absolute; + left: 0.5px; + bottom: 0; + width: 100%; + height: 100%; + background-color: currentColor; + } + .upstrike { + clip-path: polygon(0.05em 100%, 0em calc(100% - 0.05em), calc(100% - 0.05em) 0em, 100% 0.05em); + } + .downstrike { + clip-path: polygon(0em 0.05em, 0.05em 0em, 100% calc(100% - 0.05em), calc(100% - 0.05em) 100%); + } + .sout { + clip-path: polygon(0em calc(55% + 0.0333em), 0em calc(55% - 0.0333em), 100% calc(55% - 0.0333em), 100% calc(55% + 0.0333em)); + } + .tml-xcancel { + background: linear-gradient(to top left, + rgba(0,0,0,0) 0%, + rgba(0,0,0,0) calc(50% - 0.06em), + rgba(0,0,0,1) 50%, + rgba(0,0,0,0) calc(50% + 0.06em), + rgba(0,0,0,0) 100%), + linear-gradient(to top right, + rgba(0,0,0,0) 0%, + rgba(0,0,0,0) calc(50% - 0.06em), + rgba(0,0,0,1) 50%, + rgba(0,0,0,0) calc(50% + 0.06em), + rgba(0,0,0,0) 100%) + } + + .longdiv-top { + border-top: 0.067em solid; + padding: 0.1em 0.2em 0.2em 0.433em; + } + .longdiv-arc { + position: absolute; + top: 0; + bottom: 0.1em; + left: -0.4em; + width: 0.7em; + border: 0.067em solid; + transform: translateY(-0.067em); + border-radius: 70%; + clip-path: inset(0 0 0 0.4em); + box-sizing: border-box;} + .menclose {display: inline-block; + text-align: left; + position: relative; + } + + .phasor-bottom { + border-bottom: 0.067em solid; + padding: 0.2em 0.2em 0.1em 0.6em; + } + .phasor-angle { + display: inline-block; + position: absolute; + left: 0.5px; + bottom: -0.04em; + height: 100%; + aspect-ratio: 0.5; + background-color: currentColor; + clip-path: polygon(0.05em 100%, 0em calc(100% - 0.05em), calc(100% - 0.05em) 0em, 100% 0.05em); + } + + .tml-box { + padding: 3pt 0 3pt 0; + border: 1px solid; + } + .tml-fbox { + padding: 3pt; + border: 1px solid; + } + + .circle-pad { + padding: 0.267em; + } + .textcircle { + position: absolute; + top: 0; + bottom: 0; + right: 0; + left: 0; + border: 0.067em solid; + border-radius: 50%; + } + + .actuarial { + padding: 0.03889em 0.03889em 0 0.03889em; + border-width: 0.08em 0.08em 0em 0em; + border-style: solid; + margin-right: 0.03889em; + } + + /* Stretch \widetilde */ + .tml-crooked-2 { + transform: scale(2.0, 1.1) + } + .tml-crooked-3 { + transform: scale(3.0, 1.3) + } + .tml-crooked-4 { + transform: scale(4.0, 1.4) + } + /* set array cell justification */ + .tml-right { + text-align: -webkit-right; + } + .tml-left { + text-align: -webkit-left; + } +} + +/* Adjust WebKit accents */ +@supports (-webkit-backdrop-filter: blur(1px)) { + .tml-xshift { transform: translate(0px, 0.45em) } + .tml-capshift { transform: translate(0px, 0.35em) } +} + +/* flex-wrap for line-breaking in Chromium */ +math { + display: inline-flex; + flex-wrap: wrap; + align-items: baseline; +} +math > mrow { + padding: 0.5ex 0ex; +} + +/* Default mtd top padding is 0.5ex per MathML-Core and user-agent CSS */ +/* We adjust for jot and small */ +mtable.tml-jot mtd { + padding-top: 0.7ex; + padding-bottom: 0.7ex; +} +mtable.tml-small mtd { + padding-top: 0.35ex; + padding-bottom: 0.35ex; +} + +/* Firefox */ +@-moz-document url-prefix() { + /* Avoid flex-wrap */ + math { display: inline; } + math > mrow { padding: 0 } + /* Adjust Firefox spacing between array rows */ + mtd, mtable.tml-small mtd { padding-top: 0; padding-bottom: 0; } + mtable.tml-jot mtd { padding-top: 0.2ex; padding-bottom: 0.ex; } +} + +/* AMS environment auto-numbering via CSS counter. */ +.tml-eqn::before { + counter-increment: tmlEqnNo; + content: "(" counter(tmlEqnNo) ")"; +} + +body { + counter-reset: tmlEqnNo; +} diff --git a/assets/Temml.woff2 b/assets/Temml.woff2 new file mode 100644 index 00000000..fccefda4 Binary files /dev/null and b/assets/Temml.woff2 differ diff --git a/assets/code-blocks.js b/assets/code-blocks.js new file mode 100644 index 00000000..133b35ed --- /dev/null +++ b/assets/code-blocks.js @@ -0,0 +1,8 @@ +console.log("lksjfdlskjfd"); +document.querySelectorAll('pre:has(> code)').forEach((element) => { + console.log("element:", element); + // HACK: Assumes the code element only has one class, which is the language extension + const ext = element.querySelector(':scope > code').className; + element.dataset.ext = ext; + element.classList.add(`language-${ext}`); +}); diff --git a/assets/external-link-icon.svg b/assets/external-link-icon.svg new file mode 100644 index 00000000..f5c8f9c1 --- /dev/null +++ b/assets/external-link-icon.svg @@ -0,0 +1,4 @@ + diff --git a/assets/highlight.css b/assets/highlight.css new file mode 100644 index 00000000..03788cfc --- /dev/null +++ b/assets/highlight.css @@ -0,0 +1,117 @@ +:root { + --light-yellow: #e5c07b; + --dark-yellow: #d19a66; + --blue: #61afef; + --cyan: #56b6c2; + --light-red: #e06c75; + --dark-red: #be5046; + --comment-gray: #5c6370; + --magenta: #c678dd; + + /* Colorscheme colors */ + --base1-color: light-dark(#4f565d, #c4c0b9); + --base2-color: light-dark(#636b73, #aaa8a1); + --base3-color: light-dark(#75808e, #7f8a96); + --base4-color: light-dark(#aab3bc, #5c6773); + --base5-color: light-dark(#d1d4d7, #2d3640); + --base6-color: light-dark(#e3e7eb, #1b222b); + --base7-color: light-dark(#fafafa, #0f1419); + --accent-color: light-dark(#946ec0, #d2a6ff); + --orange-text-color: light-dark(#e88437, #ffad66); + --orange-text-sec-color: light-dark(#f29a2a, #e6b450); + --orange-bg-color: light-dark(#f7e8d0, #302a20); + --green-text-color: light-dark(#739b00, #aad94c); + --green-text-sec-color: light-dark(#89b317, #c2e675); + --green-bg-color: light-dark(#e3f0cc, #23301f); + --teal-text-color: light-dark(#429fbe, #73b8ff); + --teal-text-sec-color: light-dark(#59afcc, #8ac7ff); + --teal-bg-color: light-dark(#d8ebf2, #1f2d3a); + --blue-text-color: light-dark(#2f8fd1, #59c2ff); + --blue-text-sec-color: light-dark(#4aa6c8, #86d2ff); + --blue-bg-color: light-dark(#d6e7f7, #1c2b38); + --purple-text-color: light-dark(#8e66b8, #d2a6ff); + --purple-text-sec-color: light-dark(#a080c8, #e1c4ff); + --purple-bg-color: light-dark(#e6dcf1, #2d2438); + --diff-add-color: light-dark(#739b00, #aad94c); + --diff-change-color: light-dark(#f29a2a, #e6b450); + --diff-change-dark-color: light-dark(#a86f18, #5a4728); + --diff-delete-color: light-dark(#e26363, #f07178); + --diff-renamed-color: light-dark(#2f8fd1, #59c2ff); + --white-color: light-dark(#ffffff, #ffffff); + --comment-bg-color: light-dark(#f1cdcd, #3a2228); + --comment-fg-color: light-dark(#e26363, #f07178); + --inlay-fg-color: light-dark(#df8e1e, #c9a15a); + --inlay-bg-color: light-dark(#f7e8d0, #2a241a); + --foreground-color: light-dark(#4f565d, #cdcac4); + --black-color: light-dark(#dde2e8, #131721); + --blue-color: light-dark(#2f8fd1, #59c2ff); + --orange-color: light-dark(#e88437, #ff8f40); + --magenta-color: light-dark(#8e66b8, #d2a6ff); + --gray-color: light-dark(#75808e, #5c6773); + --dark-gray-color: light-dark(#cdd1d5, #2d3640); + --background-color: light-dark(#fafafa, #0f1419); + --dark-background-color: light-dark(#edf0f3, #080a0d); + --cyan-color: light-dark(#3f7fbd, #73b8ff); + --green-color: light-dark(#739b00, #aad94c); + --red-color: light-dark(#e26363, #f07178); + --yellow-color: light-dark(#f29a2a, #e6b450); + --color: light-dark(#545a62, #bbb7b1); + + /* Token colors */ + --code-comment-fg: var(--comment-fg-color); + --code-comment-bg: var(--comment-bg-color); + --code-punctuation: var(--base3-color); /* NOTE: Same background */ + --code-namespace-fg: var(--teal-text-color); + --code-namespace-bg: var(--teal-bg-color); + --code-constant-fg: var(--blue-text-color); + --code-constant-bg: var(--blue-bg-color); + --code-string-fg: var(--green-text-color); + --code-string-bg: var(--green-bg-color); + --code-operator: var(--base1-color); /* NOTE: Same background */ + --code-keyword-fg: var(--purple-text-color); + --code-keyword-bg: var(--purple-bg-color); + --code-function: var(--orange-text-color); + --code-variable: var(--color); +} + +pre[class*="language-"] { + background-color: var(--background-color); + padding: 10px 5px; +} + +code.kotlin { + .comment { + color: var(--comment-fg-color); + background-color: var(--comment-bg-color); + } + .punctuation_bracket, + .punctuation_delimiter { + color: var(--code-punctuation); + } + .boolean, + .number { + color: var(--code-constant-fg); + background-color: var(--code-constant-bg); + } + .string { + color: var(--code-string-fg); + background-color: var(--code-string-bg); + } + .operator { + color: var(--code-operator); + } + .variable { + color: var(--code-variable); + } + .keyword_function, + .include, + .keyword, + .type_builtin { + color: var(--code-keyword-fg); + background-color: var(--code-keyword-bg); + } + .function, + .class-name { + color: var(--code-function); + } +} diff --git a/0.5.0/docs/.vuepress/dist/logo.png b/assets/logo.png similarity index 100% rename from 0.5.0/docs/.vuepress/dist/logo.png rename to assets/logo.png diff --git a/assets/render-mathtex.js b/assets/render-mathtex.js new file mode 100644 index 00000000..b7a68a4d --- /dev/null +++ b/assets/render-mathtex.js @@ -0,0 +1,8 @@ +let eqns = document.querySelectorAll("script[type='math/tex']"); +for (let i=eqns.length-1; i>=0; i--) { + let eqn = eqns[i]; + let src = eqn.text; + let d = eqn.closest('p') == null; + eqn.outerHTML = temml.renderToString(src, { displayMode: d }); +} + diff --git a/assets/style.css b/assets/style.css new file mode 100644 index 00000000..5e677048 --- /dev/null +++ b/assets/style.css @@ -0,0 +1,428 @@ +:root { + color-scheme: light dark; + + /* Colors */ + --c-brand: light-dark(#221328, #AB78BF); + --c-brand-light: light-dark(#2D1935, #C39FD1); + --c-bg: light-dark(#ffffff, #22272e); + --c-bg-light: light-dark(#f3f4f5, #2b313a); + --c-bg-lighter: light-dark(#eeeeee, #262c34); + --c-bg-dark: light-dark(#ebebec, #343b44); + --c-bg-darker: light-dark(#e6e6e6, #37404c); + --c-bg-navbar: var(--c-bg); + --c-bg-sidebar: var(--c-bg); + --c-bg-arrow: #cccccc; + --c-text: light-dark(#2c3e50, #adbac7); + --c-text-accent: var(--c-brand); + --c-text-lightest: #6a8bad; + --c-text-light: light-dark(#3a5169, #96a7b7); + --c-text-lighter: light-dark(#4e6e8e, #8b9eb0); + --c-text-lightest: light-dark(#9152aa, #8094a8); /* NOTE: Light version is overriden. Not sure why */ + --c-text-quote: #999999; + --c-border: light-dark(#eaecef, #3e4c5a); + --c-border-dark: light-dark(#dfe2e5, #34404c); + /* TODO: I might want to define these: + + --c-tip: light-dark(#42b983, #318a62); + --c-tip-bg: var(--c-bg-light); + --c-tip-title: var(--c-text); + --c-tip-text: var(--c-text); + --c-tip-text-accent: var(--c-text-accent); + --c-warning: #ffc310; + --c-warning-bg: #fffae3; + --c-warning-bg-light: #fff3ba; + --c-warning-bg-lighter: #fff0b0; + --c-warning-border-dark: #f7dc91; + --c-warning-details-bg: #fff5ca; + --c-warning-title: #f1b300; + --c-warning-text: #746000; + --c-warning-text-accent: #edb100; + --c-warning-text-light: #c1971c; + --c-warning-text-quote: #ccab49; + --c-danger: #f11e37; + --c-danger-bg: #ffe0e0; + --c-danger-bg-light: #ffcfde; + --c-danger-bg-lighter: #ffc9c9; + --c-danger-border-dark: #f1abab; + --c-danger-details-bg: #ffd4d4; + --c-danger-title: #ed1e2c; + --c-danger-text: #660000; + --c-danger-text-accent: #bd1a1a; + --c-danger-text-light: #b5474d; + --c-danger-text-quote: #c15b5b; + --c-details-bg: #eeeeee; + --c-badge-tip: var(--c-tip); + --c-badge-warning: #ecc808; + --c-badge-warning-text: var(--c-bg); + --c-badge-danger: #dc2626; + --c-badge-danger-text: var(--c-bg); + */ + + /* Transition stuff? */ + --t-color: .3s ease; + --t-transform: .3s ease; + + /* Code colors and variables */ + --code-bg-color: #282c34; + --code-hl-bg-color: light-dark(rgba(0, 0, 0, .66), #363b46); + --code-ln-color: #9e9e9e; + --code-ln-wrapper-width: 3.5rem; + + /* Fonts */ + --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + --font-family-code: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; + + /* Navbar */ + --navbar-height: 3.6rem; + --navbar-padding-v: .7rem; + --navbar-padding-h: 1.5rem; + + /* Side bar */ + --sidebar-width: 20rem; + --sidebar-width-mobile: calc(var(--sidebar-width) * .82); + --content-width: 740px; + --homepage-width: 960px +} + +html, +body { + padding: 0; + margin: 0; + background-color: var(--c-bg); + transition: background-color var(--t-color); +} + +body { + font-family: var(--font-family); + font-size: 1rem; + color: var(--c-text); +} + +a { + font-weight: 500; + color: var(--c-text-accent); + text-decoration: none; + overflow-wrap: break-word; +} + +p a code { + font-weight: 400; + color: var(--c-text-accent); +} + +kbd { + font-family: var(--font-family-code); + color: var(--c-text-lighter); +} + +.navbar { + position: fixed; + z-index: 20; + top: 0; + left: 0; + right: 0; + height: var(--navbar-height); + box-sizing: border-box; + border-bottom: 1px solid var(--c-border); + background-color: var(--c-bg-navbar); + transition: background-color var(--t-color),border-color var(--t-color); +} + +.navbar { + --navbar-line-height: calc( var(--navbar-height) - 2 * var(--navbar-padding-v) ); + padding: var(--navbar-padding-v) var(--navbar-padding-h); + line-height: var(--navbar-line-height); +} + +.navbar .logo { + height: var(--navbar-line-height); + margin-right: var(--navbar-padding-v); + vertical-align: top; +} + +.navbar .site-name { + font-size: 1.3rem; + font-weight: 600; + color: var(--c-text); + position: relative; +} + +.navbar .navbar-items-wrapper { + display: flex; + position: absolute; + box-sizing: border-box; + top: var(--navbar-padding-v); + right: var(--navbar-padding-h); + height: var(--navbar-line-height); + padding-left: var(--navbar-padding-h); + whitespace: nowrap; + font-size: .9rem; +} + +@media screen and (max-width: 719px) { + /* TODO: */ +} + +.navbar-items { + display: inline-block; +} + +.navbar-items a { + display: inline-block; + line-height: 1.4rem; + color: inherit; +} + +.navbar-items a:hover, +.navbar-items a.router-link-active { + color: var(--c-text); +} + +.navbar-items .navbar-item { + position: relative; + display: inline-block; + margin-left: 1.5rem; + line-height: var(--navbar-line-height); +} +.navbar-items .navbar-item:first-child { + margin-left: 0; +} + +.navbar-items .navbar-item>a:hover, +.navbar-items .navbar-item>a.router-link-active { + margin-bottom: -2px; + border-bottom: 2px solid var(--c-text-accent); +} + +@media (max-width: 719px) { + /* TODO: */ +} + +.home { + padding: var(--navbar-height) 2rem 0; + max-width: var(--homepage-width); + margin: 0 auto; + display: block; +} +.home .hero { + text-align: center; +} +.home .hero img { + max-width: 100%; + max-height: 280px; + display: block; + margin: 3rem auto 1.5rem; +} +.home .hero h1 { + font-size: 3rem; +} +.home .hero h1, +.home .hero .description, +.home .hero .actions { + margin: 1.8rem auto; +} +.home .hero .actions { + display: flex; + flex-wrap: wrap; + gap: 1rem; + justify-content: center; +} +.home .hero .description { + max-width: 35rem; + font-size: 1.6rem; + line-height: 1.3; + color: var(--c-text-lightest); +} +.home .hero .action-button { + display: inline-block; + font-size: 1.2rem; + padding: 0.8rem 1.6rem; + border-width: 2px; + border-style: solid; + border-radius: 4px; + transition: background-color var(--t-color); + box-sizing: border-box; +} +.home .hero .action-button.primary { + color: var(--c-bg); + background-color: var(--c-brand); + border-color: var(--c-brand); +} +.home .hero .action-button.primary:hover { + background-color: var(--c-brand-light); +} +.home .hero .action-button.secondary { + color: var(--c-brand); + background-color: var(--c-bg); + border-color: var(--c-brand); +} +.home .hero .action-button.secondary:hover { + color: var(--c-bg); + background-color: var(--c-brand-light); +} + +.home .features { + border-top: 1px solid var(--c-border); + transition: border-color var(--t-color); + padding: 1.2rem 0; + margin-top: 2.5rem; + display: flex; + flex-wrap: wrap; + align-items: flex-start; + align-content: stretch; + justify-content: space-between; +} +.home .feature { + flex-grow: 1; + flex-basis: 30%; + max-width: 30%; +} +.home .feature h2 { + font-size: 1.4rem; + font-weight: 500; + border-bottom: none; + padding-bottom: 0; + color: var(--c-text-light); +} +.home .feature p { + color: var(--c-text-lighter); +} + +.home .theme-default-content { + padding: 0; + margin: 0; +} + +footer { + padding: 2.5rem; + border-top: 1px solid var(--c-border); + text-align: center; + color: var(--c-text-lighter); + transition: border-color var(--t-color); + + /* + * HACK: The following properties are not on the orignal, they are used + * because the footer is not nested within main.home + */ + max-width: var(--homepage-width); + margin: auto; +} + +pre[class*="language-"] { + position: relative; + background-color: var(--code-bg-color); + border-radius: 6px; +} +pre[class*="language-"]:before { + content: attr(data-ext); + position: absolute; + z-index: 3; + top: 0.8em; + right: 1em; + font-size: 0.75rem; + color: var(--code-ln-color); +} +/* +h1, +h2, +h3, +h4, +h5 { + color: #ddd; + font-family: "Verdana", sans-serif; +} + +b, +strong { + color: #fff; +} + +a { + color: #eee; +} + +html { + color: #ccc; + font-family: "Georgia", serif; + font-size: 1.2em; + display: flex; + flex-direction: row; + justify-content: center; + background-color: #111; +} +*/ + +/* +body { + max-width: 800px; + overflow-x: scroll; + padding: 15px; + display: flex; + flex-direction: column; +} +*/ + +/* +.site-title { + font-size: 2.5em; + margin-bottom: 10px; + text-align: center; +} +*/ + +/* +nav { + display: flex; + flex-direction: row; + justify-content: left; + font-size: 1.2em; + margin-bottom: 20px; +} +*/ + +/* +pre { + overflow-x: scroll; +} + +img { + max-width: 100vw; +} + +.block { + border: 1px dotted white; + padding: 5px 15px; + margin: 0 10px; + text-align: center; + display: flex; + flex-direction: column; + justify-content: center; +} + +.block h1 { + font-size: 1em; + text-align: center; + margin-bottom: 0; +} + +.small { + font-size: 0.8em; +} + +.wave { + background: #111; + color: #fff; + text-shadow: 1px 1px 10px #fff, 1px 1px 10px #ccc; +} + +footer { + margin-top: 30px; + display: flex; + flex-direction: column; + align-items: center; +} + +footer hr { + width: 100%; +} +*/ diff --git a/assets/temml.min.js b/assets/temml.min.js new file mode 100644 index 00000000..68a0e9f8 --- /dev/null +++ b/assets/temml.min.js @@ -0,0 +1 @@ +var temml=function(){"use strict";class e{constructor(t,r){let n,s=" "+t;const o=r&&r.loc;if(o&&o.start<=o.end){const e=o.lexer.input;n=o.start;const t=o.end;n===e.length?s+=" at end of input: ":s+=" at position "+(n+1)+": \n";const r=e.slice(n,t).replace(/[^]/g,"$&̲");let a,l;a=n>15?"…"+e.slice(n-15,n):e.slice(0,n),l=t+15":">","<":"<",'"':""","'":"'"},n=/[&><"']/g;const s=function(e){return"ordgroup"===e.type||"color"===e.type?1===e.body.length?s(e.body[0]):e:"font"===e.type?s(e.body):e};var o={deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(n,(e=>r[e]))},hyphenate:function(e){return e.replace(t,"-$1").toLowerCase()},getBaseElem:s,isCharacterBox:function(e){const t=s(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){const t=/^[\x00-\x20]*([^\\/#?]*?)(:|�*58|�*3a|&colon)/i.exec(e);return t?":"!==t[2]?null:/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(t[1])?t[1].toLowerCase():null:"_relative"},round:function(e){return+e.toFixed(4)}};class a{constructor(e){e=e||{},this.displayMode=o.deflt(e.displayMode,!1),this.annotate=o.deflt(e.annotate,!1),this.leqno=o.deflt(e.leqno,!1),this.throwOnError=o.deflt(e.throwOnError,!1),this.errorColor=o.deflt(e.errorColor,"#b22222"),this.macros=e.macros||{},this.wrap=o.deflt(e.wrap,"tex"),this.xml=o.deflt(e.xml,!1),this.colorIsTextColor=o.deflt(e.colorIsTextColor,!1),this.strict=o.deflt(e.strict,!1),this.trust=o.deflt(e.trust,!1),this.maxSize=void 0===e.maxSize?[1/0,1/0]:Array.isArray(e.maxSize)?e.maxSize:[1/0,1/0],this.maxExpand=Math.max(0,o.deflt(e.maxExpand,1e3))}isTrusted(e){if(e.url&&!e.protocol){const t=o.protocolFromUrl(e.url);if(null==t)return!1;e.protocol=t}const t="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)}}const l={},i={};function c({type:e,names:t,props:r,handler:n,mathmlBuilder:s}){const o={type:e,numArgs:r.numArgs,argTypes:r.argTypes,allowedInArgument:!!r.allowedInArgument,allowedInText:!!r.allowedInText,allowedInMath:void 0===r.allowedInMath||r.allowedInMath,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,primitive:!!r.primitive,handler:n};for(let e=0;ee.toText())).join("")}}const h=function(e){return e.filter((e=>e)).join(" ")},g=function(e,t){this.classes=e||[],this.attributes={},this.style=t||{}},f=function(e){const t=document.createElement(e);t.className=h(this.classes);for(const e in this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t.style[e]=this.style[e]);for(const e in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,e)&&t.setAttribute(e,this.attributes[e]);for(let e=0;e`,t};class y{constructor(e,t,r){g.call(this,e,r),this.children=t||[]}setAttribute(e,t){this.attributes[e]=t}toNode(){return f.call(this,"span")}toMarkup(){return b.call(this,"span")}}let w=class{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return o.escape(this.text)}};class x{constructor(e,t,r){this.href=e,this.classes=t,this.children=r||[]}toNode(){const e=document.createElement("a");e.setAttribute("href",this.href),this.classes.length>0&&(e.className=h(this.classes));for(let t=0;t0&&(e+=` class="${o.escape(h(this.classes))}"`),e+=">";for(let t=0;t0&&(e.className=h(this.classes));for(const t in this.style)Object.prototype.hasOwnProperty.call(this.style,t)&&(e.style[t]=this.style[t]);for(let t=0;t0&&(e+=` class="${o.escape(h(this.classes))}"`);let t="";for(const e in this.style)Object.prototype.hasOwnProperty.call(this.style,e)&&(t+=`${o.hyphenate(e)}:${this.style[e]};`);t&&(e+=` style="${t}"`),e+=">";for(let t=0;t",e}toText(){return this.children.map((e=>e.toText())).join("")}}class A{constructor(e){this.text=e}toNode(){return document.createTextNode(this.text)}toMarkup(){return o.escape(this.toText())}toText(){return this.text}}const N=e=>{let t;return 1===e.length&&"mrow"===e[0].type?(t=e.pop(),t.type="mstyle"):t=new v("mstyle",e),t};var T={MathNode:v,TextNode:A,newDocumentFragment:function(e){return new u(e)}};const S=e=>{let t=0;if(e.body)for(const r of e.body)t+=S(r);else if("supsub"===e.type)t+=S(e.base),e.sub&&(t+=.7*S(e.sub)),e.sup&&(t+=.7*S(e.sup));else if("mathord"===e.type||"textord"===e.type)for(const r of e.text.split("")){const e=r.codePointAt(0);t+=96{const t=O(e.label);if(M.includes(e.label)){const r=S(e.base);1","\\gt",!0),I(L,_,"∈","\\in",!0),I(L,_,"∉","\\notin",!0),I(L,_,"","\\@not"),I(L,_,"⊂","\\subset",!0),I(L,_,"⊃","\\supset",!0),I(L,_,"⊆","\\subseteq",!0),I(L,_,"⊇","\\supseteq",!0),I(L,_,"⊈","\\nsubseteq",!0),I(L,_,"⊈","\\nsubseteqq"),I(L,_,"⊉","\\nsupseteq",!0),I(L,_,"⊉","\\nsupseteqq"),I(L,_,"⊨","\\models"),I(L,_,"←","\\leftarrow",!0),I(L,_,"≤","\\le"),I(L,_,"≤","\\leq",!0),I(L,_,"<","\\lt",!0),I(L,_,"→","\\rightarrow",!0),I(L,_,"→","\\to"),I(L,_,"≱","\\ngeq",!0),I(L,_,"≱","\\ngeqq"),I(L,_,"≱","\\ngeqslant"),I(L,_,"≰","\\nleq",!0),I(L,_,"≰","\\nleqq"),I(L,_,"≰","\\nleqslant"),I(L,_,"⫫","\\Perp",!0),I(L,W," ","\\ "),I(L,W," ","\\space"),I(L,W," ","\\nobreakspace"),I(F,W," ","\\ "),I(F,W," "," "),I(F,W," ","\\space"),I(F,W," ","\\nobreakspace"),I(L,W,null,"\\nobreak"),I(L,W,null,"\\allowbreak"),I(L,V,",",","),I(F,V,":",":"),I(L,V,";",";"),I(L,G,"⊼","\\barwedge"),I(L,G,"⊻","\\veebar"),I(L,G,"⊙","\\odot",!0),I(L,G,"⊕︎","\\oplus"),I(L,G,"⊗","\\otimes",!0),I(L,X,"∂","\\partial",!0),I(L,G,"⊘","\\oslash",!0),I(L,G,"⊚","\\circledcirc",!0),I(L,G,"⊡","\\boxdot",!0),I(L,G,"△","\\bigtriangleup"),I(L,G,"▽","\\bigtriangledown"),I(L,G,"†","\\dagger"),I(L,G,"⋄","\\diamond"),I(L,G,"◃","\\triangleleft"),I(L,G,"▹","\\triangleright"),I(L,H,"{","\\{"),I(F,X,"{","\\{"),I(F,X,"{","\\textbraceleft"),I(L,j,"}","\\}"),I(F,X,"}","\\}"),I(F,X,"}","\\textbraceright"),I(L,H,"{","\\lbrace"),I(L,j,"}","\\rbrace"),I(L,H,"[","\\lbrack",!0),I(F,X,"[","\\lbrack",!0),I(L,j,"]","\\rbrack",!0),I(F,X,"]","\\rbrack",!0),I(L,H,"(","\\lparen",!0),I(L,j,")","\\rparen",!0),I(L,H,"⦇","\\llparenthesis",!0),I(L,j,"⦈","\\rrparenthesis",!0),I(F,X,"<","\\textless",!0),I(F,X,">","\\textgreater",!0),I(L,H,"⌊","\\lfloor",!0),I(L,j,"⌋","\\rfloor",!0),I(L,H,"⌈","\\lceil",!0),I(L,j,"⌉","\\rceil",!0),I(L,X,"\\","\\backslash"),I(L,X,"|","|"),I(L,X,"|","\\vert"),I(F,X,"|","\\textbar",!0),I(L,X,"‖","\\|"),I(L,X,"‖","\\Vert"),I(F,X,"‖","\\textbardbl"),I(F,X,"~","\\textasciitilde"),I(F,X,"\\","\\textbackslash"),I(F,X,"^","\\textasciicircum"),I(L,_,"↑","\\uparrow",!0),I(L,_,"⇑","\\Uparrow",!0),I(L,_,"↓","\\downarrow",!0),I(L,_,"⇓","\\Downarrow",!0),I(L,_,"↕","\\updownarrow",!0),I(L,_,"⇕","\\Updownarrow",!0),I(L,U,"∐","\\coprod"),I(L,U,"⋁","\\bigvee"),I(L,U,"⋀","\\bigwedge"),I(L,U,"⨄","\\biguplus"),I(L,U,"⨄","\\bigcupplus"),I(L,U,"⨃","\\bigcupdot"),I(L,U,"⨇","\\bigdoublevee"),I(L,U,"⨈","\\bigdoublewedge"),I(L,U,"⋂","\\bigcap"),I(L,U,"⋃","\\bigcup"),I(L,U,"∫","\\int"),I(L,U,"∫","\\intop"),I(L,U,"∬","\\iint"),I(L,U,"∭","\\iiint"),I(L,U,"∏","\\prod"),I(L,U,"∑","\\sum"),I(L,U,"⨂","\\bigotimes"),I(L,U,"⨁","\\bigoplus"),I(L,U,"⨀","\\bigodot"),I(L,U,"⨉","\\bigtimes"),I(L,U,"∮","\\oint"),I(L,U,"∯","\\oiint"),I(L,U,"∰","\\oiiint"),I(L,U,"∱","\\intclockwise"),I(L,U,"∲","\\varointclockwise"),I(L,U,"⨌","\\iiiint"),I(L,U,"⨍","\\intbar"),I(L,U,"⨎","\\intBar"),I(L,U,"⨏","\\fint"),I(L,U,"⨒","\\rppolint"),I(L,U,"⨓","\\scpolint"),I(L,U,"⨕","\\pointint"),I(L,U,"⨖","\\sqint"),I(L,U,"⨗","\\intlarhk"),I(L,U,"⨘","\\intx"),I(L,U,"⨙","\\intcap"),I(L,U,"⨚","\\intcup"),I(L,U,"⨅","\\bigsqcap"),I(L,U,"⨆","\\bigsqcup"),I(L,U,"∫","\\smallint"),I(F,P,"…","\\textellipsis"),I(L,P,"…","\\mathellipsis"),I(F,P,"…","\\ldots",!0),I(L,P,"…","\\ldots",!0),I(L,P,"⋰","\\iddots",!0),I(L,P,"⋯","\\@cdots",!0),I(L,P,"⋱","\\ddots",!0),I(L,X,"⋮","\\varvdots"),I(F,X,"⋮","\\varvdots"),I(L,D,"ˊ","\\acute"),I(L,D,"`","\\grave"),I(L,D,"¨","\\ddot"),I(L,D,"…","\\dddot"),I(L,D,"….","\\ddddot"),I(L,D,"~","\\tilde"),I(L,D,"‾","\\bar"),I(L,D,"˘","\\breve"),I(L,D,"ˇ","\\check"),I(L,D,"^","\\hat"),I(L,D,"→","\\vec"),I(L,D,"˙","\\dot"),I(L,D,"˚","\\mathring"),I(L,R,"ı","\\imath",!0),I(L,R,"ȷ","\\jmath",!0),I(L,X,"ı","ı"),I(L,X,"ȷ","ȷ"),I(F,X,"ı","\\i",!0),I(F,X,"ȷ","\\j",!0),I(F,X,"ø","\\o",!0),I(L,R,"ø","\\o",!0),I(F,X,"Ø","\\O",!0),I(L,R,"Ø","\\O",!0),I(F,D,"ˊ","\\'"),I(F,D,"ˋ","\\`"),I(F,D,"ˆ","\\^"),I(F,D,"˜","\\~"),I(F,D,"ˉ","\\="),I(F,D,"˘","\\u"),I(F,D,"˙","\\."),I(F,D,"¸","\\c"),I(F,D,"˚","\\r"),I(F,D,"ˇ","\\v");I(F,D,"¨",'\\"'),I(F,D,"˝","\\H"),I(L,D,"ˊ","\\'"),I(L,D,"ˋ","\\`"),I(L,D,"ˆ","\\^"),I(L,D,"˜","\\~"),I(L,D,"ˉ","\\="),I(L,D,"˘","\\u"),I(L,D,"˙","\\."),I(L,D,"¸","\\c"),I(L,D,"˚","\\r"),I(L,D,"ˇ","\\v"),I(L,D,"¨",'\\"'),I(L,D,"˝","\\H");const Z={"--":!0,"---":!0,"``":!0,"''":!0};I(F,X,"–","--",!0),I(F,X,"–","\\textendash"),I(F,X,"—","---",!0),I(F,X,"—","\\textemdash"),I(F,X,"‘","`",!0),I(F,X,"‘","\\textquoteleft"),I(F,X,"’","'",!0),I(F,X,"’","\\textquoteright"),I(F,X,"“","``",!0),I(F,X,"“","\\textquotedblleft"),I(F,X,"”","''",!0),I(F,X,"”","\\textquotedblright"),I(L,X,"°","\\degree",!0),I(F,X,"°","\\degree"),I(F,X,"°","\\textdegree",!0),I(L,X,"£","\\pounds"),I(L,X,"£","\\mathsterling",!0),I(F,X,"£","\\pounds"),I(F,X,"£","\\textsterling",!0),I(L,X,"✠","\\maltese"),I(F,X,"✠","\\maltese"),I(L,X,"€","\\euro",!0),I(F,X,"€","\\euro",!0),I(F,X,"€","\\texteuro"),I(L,X,"©","\\copyright",!0),I(F,X,"©","\\textcopyright"),I(L,X,"⌀","\\diameter",!0),I(F,X,"⌀","\\diameter"),I(L,X,"𝛤","\\varGamma"),I(L,X,"𝛥","\\varDelta"),I(L,X,"𝛩","\\varTheta"),I(L,X,"𝛬","\\varLambda"),I(L,X,"𝛯","\\varXi"),I(L,X,"𝛱","\\varPi"),I(L,X,"𝛴","\\varSigma"),I(L,X,"𝛶","\\varUpsilon"),I(L,X,"𝛷","\\varPhi"),I(L,X,"𝛹","\\varPsi"),I(L,X,"𝛺","\\varOmega"),I(F,X,"𝛤","\\varGamma"),I(F,X,"𝛥","\\varDelta"),I(F,X,"𝛩","\\varTheta"),I(F,X,"𝛬","\\varLambda"),I(F,X,"𝛯","\\varXi"),I(F,X,"𝛱","\\varPi"),I(F,X,"𝛴","\\varSigma"),I(F,X,"𝛶","\\varUpsilon"),I(F,X,"𝛷","\\varPhi"),I(F,X,"𝛹","\\varPsi"),I(F,X,"𝛺","\\varOmega");const Y='0123456789/@."';for(let e=0;e<14;e++){const t=Y.charAt(e);I(L,X,t,t)}const J='0123456789!@*()-=+";:?/.,';for(let e=0;e<25;e++){const t=J.charAt(e);I(F,X,t,t)}const K="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";for(let e=0;e<52;e++){const t=K.charAt(e);I(L,R,t,t),I(F,X,t,t)}const Q="ÇÐÞçþℂℍℕℙℚℝℤℎℏℊℋℌℐℑℒℓ℘ℛℜℬℰℱℳℭℨ";for(let e=0;e<30;e++){const t=Q.charAt(e);I(L,R,t,t),I(F,X,t,t)}let ee="";for(let e=0;e<52;e++){ee=String.fromCharCode(55349,56320+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56372+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56424+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56580+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56736+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56788+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56840+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56944+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,56632+e),I(L,R,ee,ee),I(F,X,ee,ee);const t=K.charAt(e);ee=String.fromCharCode(55349,56476+e),I(L,R,t,ee),I(F,X,t,ee)}for(let e=0;e<10;e++)ee=String.fromCharCode(55349,57294+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,57314+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,57324+e),I(L,R,ee,ee),I(F,X,ee,ee),ee=String.fromCharCode(55349,57334+e),I(L,R,ee,ee),I(F,X,ee,ee);const te=function(e,t,r){return!$[t][e]||!$[t][e].replace||55349===e.charCodeAt(0)||Object.prototype.hasOwnProperty.call(Z,e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.slice(4,6)||r.font&&"tt"===r.font.slice(4,6))||(e=$[t][e].replace),new T.TextNode(e)},re=(e,t)=>{if(0===e.children.length||"mtext"!==e.children[e.children.length-1].type){const r=new T.MathNode("mtext",[new T.TextNode(t.children[0].text)]);e.children.push(r)}else e.children[e.children.length-1].children[0].text+=t.children[0].text},ne=e=>{if("mrow"!==e.type&&"mstyle"!==e.type)return e;if(0===e.children.length)return e;const t=new T.MathNode("mrow");for(let r=0;r0&&" "===n.children[0].text.charAt(s-1)&&(n.children[0].text=n.children[0].text.slice(0,-1)+" ");for(const[t,r]of Object.entries(e.attributes))n.attributes[t]=r}return 1===t.children.length&&"mtext"===t.children[0].type?t.children[0]:t},se=function(e,t=!1){if(!(1!==e.length||e[0]instanceof u))return e[0];if(!t){e[0]instanceof v&&"mo"===e[0].type&&!e[0].attributes.fence&&(e[0].attributes.lspace="0em",e[0].attributes.rspace="0em");const t=e.length-1;e[t]instanceof v&&"mo"===e[t].type&&!e[t].attributes.fence&&(e[t].attributes.lspace="0em",e[t].attributes.rspace="0em")}return new T.MathNode("mrow",e)};function oe(e){if(!e)return!1;if("mi"===e.type&&1===e.children.length){const t=e.children[0];return t instanceof A&&"."===t.text}if("mtext"===e.type&&1===e.children.length){const t=e.children[0];return t instanceof A&&" "===t.text}if("mo"===e.type&&1===e.children.length&&"true"===e.getAttribute("separator")&&"0em"===e.getAttribute("lspace")&&"0em"===e.getAttribute("rspace")){const t=e.children[0];return t instanceof A&&","===t.text}return!1}const ae=(e,t)=>{const r=e[t],n=e[t+1];return"atom"===r.type&&","===r.text&&r.loc&&n.loc&&r.loc.end===n.loc.start},le=e=>"atom"===e.type&&"rel"===e.family||"mclass"===e.type&&"mrel"===e.mclass,ie=function(e,t,r=!1){if(!r&&1===e.length){const r=de(e[0],t);return r instanceof v&&"mo"===r.type&&(r.setAttribute("lspace","0em"),r.setAttribute("rspace","0em")),[r]}const n=[],s=[];let o;for(let r=0;r0&&le(e[t])&&le(e[t-1])&&r.setAttribute("lspace","0em"),"mn"===r.type&&o&&"mn"===o.type)o.children.push(...r.children);else if(oe(r)&&o&&"mn"===o.type)o.children.push(...r.children);else if(o&&"mn"===o.type&&t=1&&o&&("mn"===o.type||oe(o))){const e=r.children[0];e instanceof v&&"mn"===e.type&&o&&(e.children=[...o.children,...e.children],n.pop())}n.push(r),o=r}}return n},ce=function(e,t,r=!1){return se(ie(e,t,r),r)},de=function(t,r){if(!t)return new T.MathNode("mrow");if(i[t.type]){return i[t.type](t,r)}throw new e("Got group of unknown type: '"+t.type+"'")},me=e=>new T.MathNode("mtd",[],[],{padding:"0",width:"50%"}),pe=["mrow","mtd","mtable","mtr"],ue=e=>{for(const t of e.children)if(t.type&&pe.includes(t.type)){if(t.classes&&"tml-label"===t.classes[0]){return t.label}{const e=ue(t);if(e)return e}}else if(!t.type){const e=ue(t);if(e)return e}};function he(e,t,r,n){let s=null;1===e.length&&"tag"===e[0].type&&(s=e[0].tag,e=e[0].body);const o=ie(e,r);if(1===o.length&&o[0]instanceof x)return o[0];const a=n.displayMode||n.annotate?"none":n.wrap,l=0===o.length?null:o[0];let i=1===o.length&&null===s&&l instanceof v?o[0]:function(e,t,r){const n=[];let s=[],o=[],a=0,l=0,i=0;for(;l0&&s.push(new T.MathNode("mrow",o)),s.push(r),o=[];const e=new T.MathNode("mtd",s);e.style.textAlign="left",n.push(new T.MathNode("mtr",[e])),s=[],l+=1}else{if(o.push(r),r.type&&"mo"===r.type&&1===r.children.length&&!Object.prototype.hasOwnProperty.call(r.attributes,"movablelimits")){const n=r.children[0].text;if("([{⌊⌈⟨⟮⎰⟦⦃".indexOf(n)>-1)i+=1;else if(")]}⌋⌉⟩⟯⎱⟦⦄".indexOf(n)>-1)i-=1;else if(0===i&&"="===t&&"="===n){if(a+=1,a>1){o.pop();const e=new T.MathNode("mrow",o);s.push(e),o=[r]}}else if(0===i&&"tex"===t&&"∇"!==n){const t=l0){const e=new T.MathNode("mrow",o);s.push(e)}if(n.length>0){const e=new T.MathNode("mtd",s);e.style.textAlign="left";const t=new T.MathNode("mtr",[e]);n.push(t);const o=new T.MathNode("mtable",n);return r||(o.setAttribute("columnalign","left"),o.setAttribute("rowspacing","0em")),o}return T.newDocumentFragment(s)}(o,a,n.displayMode);if(s&&(i=((e,t,r,n)=>{t=ce(t[0].body,r),(t=ne(t)).classes.push("tml-tag");const s=ue(e);e=new T.MathNode("mtd",[e]);const o=[me(),e,me()];o[n?0:2].classes.push(n?"tml-left":"tml-right"),o[n?0:2].children.push(t);const a=new T.MathNode("mtr",o,["tml-tageqn"]);s&&a.setAttribute("id",s);const l=new T.MathNode("mtable",[a]);return l.style.width="100%",l.setAttribute("displaystyle","true"),l})(i,s,r,n.leqno)),n.annotate){const e=new T.MathNode("annotation",[new T.TextNode(t)]);e.setAttribute("encoding","application/x-tex"),i=new T.MathNode("semantics",[i,e])}const c=new T.MathNode("math",[i]);return n.xml&&c.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),i.style.width&&(c.style.width="100%"),n.displayMode&&(c.setAttribute("display","block"),c.style.display="block math",c.classes=["tml-display"]),c}const ge="acegıȷmnopqrsuvwxyzαγεηικμνοπρςστυχωϕ𝐚𝐜𝐞𝐠𝐦𝐧𝐨𝐩𝐪𝐫𝐬𝐮𝐯𝐰𝐱𝐲𝐳",fe="ABCDEFGHIJKLMNOPQRSTUVWXYZbdfhkltΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩβδλζφθψ𝐀𝐁𝐂𝐃𝐄𝐅𝐆𝐇𝐈𝐉𝐊𝐋𝐌𝐍𝐎𝐏𝐐𝐑𝐒𝐓𝐔𝐕𝐖𝐗𝐘𝐙𝐛𝐝𝐟𝐡𝐤𝐥𝐭",be=new Set(["\\alpha","\\gamma","\\delta","\\epsilon","\\eta","\\iota","\\kappa","\\mu","\\nu","\\pi","\\rho","\\sigma","\\tau","\\upsilon","\\chi","\\psi","\\omega","\\imath","\\jmath"]),ye=new Set(["\\Gamma","\\Delta","\\Sigma","\\Omega","\\beta","\\delta","\\lambda","\\theta","\\psi"]),we=(e,t)=>{const r=e.isStretchy?C(e):new T.MathNode("mo",[te(e.label,e.mode)]);if("\\vec"===e.label)r.style.transform="scale(0.75) translate(10%, 30%)";else if(r.style.mathStyle="normal",r.style.mathDepth="0",ke.has(e.label)&&o.isCharacterBox(e.base)){let t="";const n=e.base.text;(ge.indexOf(n)>-1||be.has(n))&&(t="tml-xshift"),(fe.indexOf(n)>-1||ye.has(n))&&(t="tml-capshift"),t&&r.classes.push(t)}e.isStretchy||r.setAttribute("stretchy","false");return new T.MathNode("\\c"===e.label?"munder":"mover",[de(e.base,t),r])},xe=new Set(["\\acute","\\grave","\\ddot","\\dddot","\\ddddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"]),ke=new Set(["\\acute","\\bar","\\breve","\\check","\\dot","\\ddot","\\grave","\\hat","\\mathring","\\'","\\^","\\~","\\=","\\u","\\.",'\\"',"\\r","\\H","\\v"]),ve={"\\`":"̀","\\'":"́","\\^":"̂","\\~":"̃","\\=":"̄","\\u":"̆","\\.":"̇",'\\"':"̈","\\r":"̊","\\H":"̋","\\v":"̌"};c({type:"accent",names:["\\acute","\\grave","\\ddot","\\dddot","\\ddddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\overparen","\\widecheck","\\widehat","\\wideparen","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:(e,t)=>{const r=m(t[0]),n=!xe.has(e.funcName);return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,base:r}},mathmlBuilder:we}),c({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\c","\\u","\\.",'\\"',"\\r","\\H","\\v"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:(e,t)=>{const r=m(t[0]),n=e.parser.mode;return"math"===n&&e.parser.settings.strict&&console.log(`Temml parse error: Command ${e.funcName} is invalid in math mode.`),"text"===n&&r.text&&1===r.text.length&&e.funcName in ve&&ge.indexOf(r.text)>-1?{type:"textord",mode:"text",text:r.text+ve[e.funcName]}:{type:"accent",mode:n,label:e.funcName,isStretchy:!1,base:r}},mathmlBuilder:we}),c({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underparen","\\utilde"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>{const n=r[0];return{type:"accentUnder",mode:e.mode,label:t,base:n}},mathmlBuilder:(e,t)=>{const r=C(e);r.style["math-depth"]=0;return new T.MathNode("munder",[de(e.base,t),r])}});const Ae={pt:800/803,pc:9600/803,dd:1238/1157*800/803,cc:12.792133216944668,nd:685/642*800/803,nc:1370/107*800/803,sp:1/65536*800/803,mm:25.4/72,cm:2.54/72,in:1/72,px:96/72},Ne=["em","ex","mu","pt","mm","cm","in","px","bp","pc","dd","cc","nd","nc","sp"],Te=function(e){return"string"!=typeof e&&(e=e.unit),Ne.indexOf(e)>-1},Se=e=>[1,.7,.5][Math.max(e-1,0)],qe=function(t,r){let n=t.number;if(r.maxSize[0]<0&&n>0)return{number:0,unit:"em"};const s=t.unit;switch(s){case"mm":case"cm":case"in":case"px":return n*Ae[s]>r.maxSize[1]?{number:r.maxSize[1],unit:"pt"}:{number:n,unit:s};case"em":case"ex":return"ex"===s&&(n*=.431),n=Math.min(n/Se(r.level),r.maxSize[0]),{number:o.round(n),unit:"em"};case"bp":return n>r.maxSize[1]&&(n=r.maxSize[1]),{number:n,unit:"pt"};case"pt":case"pc":case"dd":case"cc":case"nd":case"nc":case"sp":return n=Math.min(n*Ae[s],r.maxSize[1]),{number:o.round(n),unit:"pt"};case"mu":return n=Math.min(n/18,r.maxSize[0]),{number:o.round(n),unit:"em"};default:throw new e("Invalid unit: '"+s+"'")}},Oe=e=>{const t=new T.MathNode("mspace");return t.setAttribute("width",e+"em"),t},Me=(e,t=.3,r=0,n=!1)=>{if(null==e&&0===r)return Oe(t);const s=e?[e]:[];if(0!==t&&s.unshift(Oe(t)),r>0&&s.push(Oe(r)),n){const e=new T.MathNode("mpadded",s);return e.setAttribute("height","0"),e}return new T.MathNode("mrow",s)},Be=(e,t)=>Number(e)/Se(t),Ce=(e,t,r,n)=>{const s=B(e),o="eq"===e.slice(1,3),a="x"===e.charAt(1)?"1.75":"cd"===e.slice(2,4)?"3.0":o?"1.0":"2.0";s.setAttribute("lspace","0"),s.setAttribute("rspace",o?"0.5em":"0");const l=n.withLevel(n.level<2?2:3),i=Be(a,l.level),c=Be(a,3),d=Me(null,i.toFixed(4),0),m=Me(null,c.toFixed(4),0),p=Be(o?0:.3,l.level).toFixed(4);let u,h;const g=t&&t.body&&(t.body.body||t.body.length>0);if(g){let r=de(t,l);r=Me(r,p,p,"\\\\cdrightarrow"===e||"\\\\cdleftarrow"===e),u=new T.MathNode("mover",[r,m])}const f=r&&r.body&&(r.body.body||r.body.length>0);if(f){let e=de(r,l);e=Me(e,p,p),h=new T.MathNode("munder",[e,m])}let b;return b=g||f?g&&f?new T.MathNode("munderover",[s,h,u]):g?new T.MathNode("mover",[s,u]):new T.MathNode("munder",[s,h]):new T.MathNode("mover",[s,d]),"3.0"===a&&(b.style.height="1em"),b.setAttribute("accent","false"),b};c({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\yields","\\yieldsLeft","\\mesomerism","\\longrightharpoonup","\\longleftharpoondown","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler:({parser:e,funcName:t},r,n)=>({type:"xArrow",mode:e.mode,name:t,body:r[0],below:n[0]}),mathmlBuilder(e,t){const r=[Ce(e.name,e.body,e.below,t)];return r.unshift(Oe(.2778)),r.push(Oe(.2778)),new T.MathNode("mrow",r)}});const ze={"\\xtofrom":["\\xrightarrow","\\xleftarrow"],"\\xleftrightharpoons":["\\xleftharpoonup","\\xrightharpoondown"],"\\xrightleftharpoons":["\\xrightharpoonup","\\xleftharpoondown"],"\\yieldsLeftRight":["\\yields","\\yieldsLeft"],"\\equilibrium":["\\longrightharpoonup","\\longleftharpoondown"],"\\equilibriumRight":["\\longrightharpoonup","\\eqleftharpoondown"],"\\equilibriumLeft":["\\eqrightharpoonup","\\longleftharpoondown"]};c({type:"stackedArrow",names:["\\xtofrom","\\xleftrightharpoons","\\xrightleftharpoons","\\yieldsLeftRight","\\equilibrium","\\equilibriumRight","\\equilibriumLeft"],props:{numArgs:1,numOptionalArgs:1},handler({parser:e,funcName:t},r,n){const s=r[0]?{type:"hphantom",mode:e.mode,body:r[0]}:null,o=n[0]?{type:"hphantom",mode:e.mode,body:n[0]}:null;return{type:"stackedArrow",mode:e.mode,name:t,body:r[0],upperArrowBelow:o,lowerArrowBody:s,below:n[0]}},mathmlBuilder(e,t){const r=ze[e.name][0],n=ze[e.name][1],s=Ce(r,e.body,e.upperArrowBelow,t),o=Ce(n,e.lowerArrowBody,e.below,t);let a;const l=new T.MathNode("mpadded",[s]);if(l.setAttribute("voffset","0.3em"),l.setAttribute("height","+0.3em"),l.setAttribute("depth","-0.3em"),"\\equilibriumLeft"===e.name){const e=new T.MathNode("mpadded",[o]);e.setAttribute("width","0.5em"),a=new T.MathNode("mpadded",[Oe(.2778),e,l,Oe(.2778)])}else l.setAttribute("width","\\equilibriumRight"===e.name?"0.5em":"0"),a=new T.MathNode("mpadded",[Oe(.2778),l,o,Oe(.2778)]);return a.setAttribute("voffset","-0.18em"),a.setAttribute("height","-0.18em"),a.setAttribute("depth","+0.18em"),a}});const Ee={};function $e({type:e,names:t,props:r,handler:n,mathmlBuilder:s}){const o={type:e,numArgs:r.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:n};for(let e=0;e":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},Ge=e=>"textord"===e.type&&"@"===e.text;function je(e,t,r){const n=De[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":{const e={type:"atom",text:n,mode:"math",family:"rel"},s={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[e],[]),r.callFunction("\\\\cdright",[t[1]],[])],semisimple:!0};return r.callFunction("\\\\cdparent",[s],[])}case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":{const e={type:"textord",text:"\\Vert",mode:"math"};return r.callFunction("\\Big",[e],[])}default:return{type:"textord",text:" ",mode:"math"}}}c({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>({type:"cdlabel",mode:e.mode,side:t.slice(4),label:r[0]}),mathmlBuilder(e,t){if(0===e.label.body.length)return new T.MathNode("mrow",t);const r=new T.MathNode("mtd",[de(e.label,t)]);r.style.padding="0";const n=new T.MathNode("mtr",[r]),s=new T.MathNode("mtable",[n]),o=new T.MathNode("mpadded",[s]);return o.setAttribute("width","0"),o.setAttribute("displaystyle","false"),o.setAttribute("scriptlevel","1"),"left"===e.side&&(o.style.display="flex",o.style.justifyContent="flex-end"),o}}),c({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler:({parser:e},t)=>({type:"cdlabelparent",mode:e.mode,fragment:t[0]}),mathmlBuilder:(e,t)=>new T.MathNode("mrow",[de(e.fragment,t)])});const Pe=e=>({type:"ordgroup",mode:"math",body:e,semisimple:!0}),Re=(e,t)=>({type:t,mode:"math",body:Pe(e)});class Ue{constructor(e,t,r){this.lexer=e,this.start=t,this.end=r}static range(e,t){return t?e&&e.loc&&t.loc&&e.loc.lexer===t.loc.lexer?new Ue(e.loc.lexer,e.loc.start,t.loc.end):null:e&&e.loc}}class He{constructor(e,t){this.text=e,this.loc=t}range(e,t){return new He(t,Ue.range(this,e))}}const Ve=0,_e=1,We=2,Xe=3,Ze={};function Ye(e,t){Ze[e]=t}const Je=Ze;Ye("\\noexpand",(function(e){const t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}})),Ye("\\expandafter",(function(e){const t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}})),Ye("\\@firstoftwo",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),Ye("\\@secondoftwo",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),Ye("\\@ifnextchar",(function(e){const t=e.consumeArgs(3);e.consumeSpaces();const r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),Ye("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Ye("\\TextOrMath",(function(e){const t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));const Ke=e=>{let t="";for(let r=e.length-1;r>-1;r--)t+=e[r].text;return t},Qe={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,a:10,A:10,b:11,B:11,c:12,C:12,d:13,D:13,e:14,E:14,f:15,F:15},et=e=>{const t=e.future().text;return"EOF"===t?[null,""]:[Qe[t.charAt(0)],t]},tt=(e,t,r)=>{for(let n=1;n=0;e--){const s=t[e].loc.start;s>n&&(r+=" ",n=s),r+=t[e].text,n+=t[e].text.length}return r}Ye("\\char",(function(t){let r,n=t.popToken(),s="";if("'"===n.text)r=8,n=t.popToken();else if('"'===n.text)r=16,n=t.popToken();else if("`"===n.text)if(n=t.popToken(),"\\"===n.text[0])s=n.text.charCodeAt(1);else{if("EOF"===n.text)throw new e("\\char` missing argument");s=n.text.charCodeAt(0)}else r=10;if(r){let o,a=n.text;if(s=Qe[a.charAt(0)],null==s||s>=r)throw new e(`Invalid base-${r} digit ${n.text}`);for(s=tt(s,a,r),[o,a]=et(t);null!=o&&o":"\\dotsb","-":"\\dotsb","*":"\\dotsb",":":"\\dotsb","\\DOTSB":"\\dotsb","\\coprod":"\\dotsb","\\bigvee":"\\dotsb","\\bigwedge":"\\dotsb","\\biguplus":"\\dotsb","\\bigcap":"\\dotsb","\\bigcup":"\\dotsb","\\prod":"\\dotsb","\\sum":"\\dotsb","\\bigotimes":"\\dotsb","\\bigoplus":"\\dotsb","\\bigodot":"\\dotsb","\\bigsqcap":"\\dotsb","\\bigsqcup":"\\dotsb","\\bigtimes":"\\dotsb","\\And":"\\dotsb","\\longrightarrow":"\\dotsb","\\Longrightarrow":"\\dotsb","\\longleftarrow":"\\dotsb","\\Longleftarrow":"\\dotsb","\\longleftrightarrow":"\\dotsb","\\Longleftrightarrow":"\\dotsb","\\mapsto":"\\dotsb","\\longmapsto":"\\dotsb","\\hookrightarrow":"\\dotsb","\\doteq":"\\dotsb","\\mathbin":"\\dotsb","\\mathrel":"\\dotsb","\\relbar":"\\dotsb","\\Relbar":"\\dotsb","\\xrightarrow":"\\dotsb","\\xleftarrow":"\\dotsb","\\DOTSI":"\\dotsi","\\int":"\\dotsi","\\oint":"\\dotsi","\\iint":"\\dotsi","\\iiint":"\\dotsi","\\iiiint":"\\dotsi","\\idotsint":"\\dotsi","\\DOTSX":"\\dotsx"};Ye("\\dots",(function(e){let t="\\dotso";const r=e.expandAfterFuture().text;return r in nt?t=nt[r]:("\\not"===r.slice(0,4)||r in $.math&&["bin","rel"].includes($.math[r].group))&&(t="\\dotsb"),t}));const st={")":!0,"]":!0,"\\rbrack":!0,"\\}":!0,"\\rbrace":!0,"\\rangle":!0,"\\rceil":!0,"\\rfloor":!0,"\\rgroup":!0,"\\rmoustache":!0,"\\right":!0,"\\bigr":!0,"\\biggr":!0,"\\Bigr":!0,"\\Biggr":!0,$:!0,";":!0,".":!0,",":!0};Ye("\\dotso",(function(e){return e.future().text in st?"\\ldots\\,":"\\ldots"})),Ye("\\dotsc",(function(e){const t=e.future().text;return t in st&&","!==t?"\\ldots\\,":"\\ldots"})),Ye("\\cdots",(function(e){return e.future().text in st?"\\@cdots\\,":"\\@cdots"})),Ye("\\dotsb","\\cdots"),Ye("\\dotsm","\\cdots"),Ye("\\dotsi","\\!\\cdots"),Ye("\\idotsint","\\dotsi"),Ye("\\dotsx","\\ldots\\,"),Ye("\\DOTSI","\\relax"),Ye("\\DOTSB","\\relax"),Ye("\\DOTSX","\\relax"),Ye("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Ye("\\,","{\\tmspace+{3mu}{.1667em}}"),Ye("\\thinspace","\\,"),Ye("\\>","\\mskip{4mu}"),Ye("\\:","{\\tmspace+{4mu}{.2222em}}"),Ye("\\medspace","\\:"),Ye("\\;","{\\tmspace+{5mu}{.2777em}}"),Ye("\\thickspace","\\;"),Ye("\\!","{\\tmspace-{3mu}{.1667em}}"),Ye("\\negthinspace","\\!"),Ye("\\negmedspace","{\\tmspace-{4mu}{.2222em}}"),Ye("\\negthickspace","{\\tmspace-{5mu}{.277em}}"),Ye("\\enspace","\\kern.5em "),Ye("\\enskip","\\hskip.5em\\relax"),Ye("\\quad","\\hskip1em\\relax"),Ye("\\qquad","\\hskip2em\\relax"),Ye("\\AA","\\TextOrMath{\\Angstrom}{\\mathring{A}}\\relax"),Ye("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Ye("\\tag@paren","\\tag@literal{({#1})}"),Ye("\\tag@literal",(t=>{if(t.macros.get("\\df@tag"))throw new e("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"})),Ye("\\notag","\\nonumber"),Ye("\\nonumber","\\gdef\\@eqnsw{0}"),Ye("\\bmod","\\mathbin{\\text{mod}}"),Ye("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Ye("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Ye("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Ye("\\newline","\\\\\\relax"),Ye("\\TeX","\\textrm{T}\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125em\\textrm{X}"),Ye("\\LaTeX","\\textrm{L}\\kern-.35em\\raisebox{0.2em}{\\scriptstyle A}\\kern-.15em\\TeX"),Ye("\\Temml","\\textrm{T}\\kern-0.2em\\lower{0.2em}{\\textrm{E}}\\kern-0.08em{\\textrm{M}\\kern-0.08em\\raise{0.2em}\\textrm{M}\\kern-0.08em\\textrm{L}}"),Ye("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Ye("\\@hspace","\\hskip #1\\relax"),Ye("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Ye("\\colon",'\\mathpunct{\\char"3a}'),Ye("\\prescript","\\pres@cript{_{#1}^{#2}}{}{#3}"),Ye("\\ordinarycolon",'\\char"3a'),Ye("\\vcentcolon","\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}}"),Ye("\\coloneq",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"2212}'),Ye("\\Coloneq",'\\mathrel{\\char"2237\\char"2212}'),Ye("\\Eqqcolon",'\\mathrel{\\char"3d\\char"2237}'),Ye("\\Eqcolon",'\\mathrel{\\char"2212\\char"2237}'),Ye("\\colonapprox",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"2248}'),Ye("\\Colonapprox",'\\mathrel{\\char"2237\\char"2248}'),Ye("\\colonsim",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"223c}'),Ye("\\Colonsim",'\\mathrel{\\raisebox{0.035em}{\\ordinarycolon}\\char"223c}'),Ye("\\ratio","\\vcentcolon"),Ye("\\coloncolon","\\dblcolon"),Ye("\\colonequals","\\coloneqq"),Ye("\\coloncolonequals","\\Coloneqq"),Ye("\\equalscolon","\\eqqcolon"),Ye("\\equalscoloncolon","\\Eqqcolon"),Ye("\\colonminus","\\coloneq"),Ye("\\coloncolonminus","\\Coloneq"),Ye("\\minuscolon","\\eqcolon"),Ye("\\minuscoloncolon","\\Eqcolon"),Ye("\\coloncolonapprox","\\Colonapprox"),Ye("\\coloncolonsim","\\Colonsim"),Ye("\\notni","\\mathrel{\\char`∌}"),Ye("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Ye("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Ye("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Ye("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Ye("\\varlimsup","\\DOTSB\\operatorname*{\\overline{\\text{lim}}}"),Ye("\\varliminf","\\DOTSB\\operatorname*{\\underline{\\text{lim}}}"),Ye("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{\\text{lim}}}"),Ye("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{\\text{lim}}}"),Ye("\\centerdot","{\\medspace\\rule{0.167em}{0.189em}\\medspace}"),Ye("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Ye("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Ye("\\plim","\\DOTSB\\operatorname*{plim}"),Ye("\\leftmodels","\\mathop{\\reflectbox{$\\models$}}"),Ye("\\bra","\\mathinner{\\langle{#1}|}"),Ye("\\ket","\\mathinner{|{#1}\\rangle}"),Ye("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Ye("\\Bra","\\left\\langle#1\\right|"),Ye("\\Ket","\\left|#1\\right\\rangle");const ot=(e,t)=>{const r=`}\\,\\middle${"|"===t[0]?"\\vert":"\\Vert"}\\,{`;return e.slice(0,t.index)+r+e.slice(t.index+t[0].length)};Ye("\\Braket",(function(e){let t=rt(e);const r=/\|\||\||\\\|/g;let n;for(;null!==(n=r.exec(t));)t=ot(t,n);return"\\left\\langle{"+t+"}\\right\\rangle"})),Ye("\\Set",(function(e){let t=rt(e);const r=/\|\||\||\\\|/.exec(t);return r&&(t=ot(t,r)),"\\left\\{\\:{"+t+"}\\:\\right\\}"})),Ye("\\set",(function(e){return"\\{{"+rt(e).replace(/\|/,"}\\mid{")+"}\\}"})),Ye("\\angln","{\\angl n}"),Ye("\\odv","\\@ifstar\\odv@next\\odv@numerator"),Ye("\\odv@numerator","\\frac{\\mathrm{d}#1}{\\mathrm{d}#2}"),Ye("\\odv@next","\\frac{\\mathrm{d}}{\\mathrm{d}#2}#1"),Ye("\\pdv","\\@ifstar\\pdv@next\\pdv@numerator");const at=e=>{const t=e[0][0].text,r=Ke(e[1]).split(","),n=String(r.length),s="1"===n?"\\partial":`\\partial^${n}`;let o="";return r.map((e=>{o+="\\partial "+e.trim()+"\\,"})),[t,s,o.replace(/\\,$/,"")]};function lt(e){const t=[];e.consumeSpaces();let r=e.fetch().text;for("\\relax"===r&&(e.consume(),e.consumeSpaces(),r=e.fetch().text);"\\hline"===r||"\\hdashline"===r;)e.consume(),t.push("\\hdashline"===r),e.consumeSpaces(),r=e.fetch().text;return t}Ye("\\pdv@numerator",(function(e){const[t,r,n]=at(e.consumeArgs(2));return`\\frac{${r} ${t}}{${n}}`})),Ye("\\pdv@next",(function(e){const[t,r,n]=at(e.consumeArgs(2));return`\\frac{${r}}{${n}} ${t}`})),Ye("\\upalpha","\\up@greek{\\alpha}"),Ye("\\upbeta","\\up@greek{\\beta}"),Ye("\\upgamma","\\up@greek{\\gamma}"),Ye("\\updelta","\\up@greek{\\delta}"),Ye("\\upepsilon","\\up@greek{\\epsilon}"),Ye("\\upzeta","\\up@greek{\\zeta}"),Ye("\\upeta","\\up@greek{\\eta}"),Ye("\\uptheta","\\up@greek{\\theta}"),Ye("\\upiota","\\up@greek{\\iota}"),Ye("\\upkappa","\\up@greek{\\kappa}"),Ye("\\uplambda","\\up@greek{\\lambda}"),Ye("\\upmu","\\up@greek{\\mu}"),Ye("\\upnu","\\up@greek{\\nu}"),Ye("\\upxi","\\up@greek{\\xi}"),Ye("\\upomicron","\\up@greek{\\omicron}"),Ye("\\uppi","\\up@greek{\\pi}"),Ye("\\upalpha","\\up@greek{\\alpha}"),Ye("\\uprho","\\up@greek{\\rho}"),Ye("\\upsigma","\\up@greek{\\sigma}"),Ye("\\uptau","\\up@greek{\\tau}"),Ye("\\upupsilon","\\up@greek{\\upsilon}"),Ye("\\upphi","\\up@greek{\\phi}"),Ye("\\upchi","\\up@greek{\\chi}"),Ye("\\uppsi","\\up@greek{\\psi}"),Ye("\\upomega","\\up@greek{\\omega}"),Ye("\\invamp",'\\mathbin{\\char"214b}'),Ye("\\parr",'\\mathbin{\\char"214b}'),Ye("\\with",'\\mathbin{\\char"26}'),Ye("\\multimapinv",'\\mathrel{\\char"27dc}'),Ye("\\multimapboth",'\\mathrel{\\char"29df}'),Ye("\\scoh",'{\\mkern5mu\\char"2322\\mkern5mu}'),Ye("\\sincoh",'{\\mkern5mu\\char"2323\\mkern5mu}'),Ye("\\coh",'{\\mkern5mu\\rule{}{0.7em}\\mathrlap{\\smash{\\raise2mu{\\char"2322}}}\n{\\smash{\\lower4mu{\\char"2323}}}\\mkern5mu}'),Ye("\\incoh",'{\\mkern5mu\\rule{}{0.7em}\\mathrlap{\\smash{\\raise2mu{\\char"2323}}}\n{\\smash{\\lower4mu{\\char"2322}}}\\mkern5mu}'),Ye("\\standardstate","\\text{\\tiny\\char`⦵}");const it=t=>{if(!t.parser.settings.displayMode)throw new e(`{${t.envName}} can be used only in display mode.`)},ct=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/,dt=e=>{let t=e.get("\\arraystretch");"string"!=typeof t&&(t=Ke(t.tokens)),t=isNaN(t)?null:Number(t);let r=e.get("\\arraycolsep");"string"!=typeof r&&(r=Ke(r.tokens));const n=ct.exec(r);return[t,n?{number:+(n[1]+n[2]),unit:n[3]}:null]},mt=t=>{let r="";for(let n=0;n1||!a)&&h.pop(),f.push(mt(r.body)),b.length{const t=new T.MathNode("mtd",[]);return t.style={padding:"0",width:"50%"},e.envClasses.includes("multline")&&(t.style.width="7.5%"),t},bt=function(e,t){const r=[],n=e.body.length,s=e.hLinesBeforeRow;for(let o=0;o0&&(2===s[0].length?d.children.forEach((e=>{e.style.borderTop="0.15em double"})):d.children.forEach((e=>{e.style.borderTop=s[0][0]?"0.06em dashed":"0.06em solid"}))),s[o+1].length>0&&(2===s[o+1].length?d.children.forEach((e=>{e.style.borderBottom="0.15em double"})):d.children.forEach((e=>{e.style.borderBottom=s[o+1][0]?"0.06em dashed":"0.06em solid"})));let p=!0;for(let e=0;e0&&(o=e.envClasses.includes("abut")||e.envClasses.includes("cases")?"0":e.envClasses.includes("small")?"0.1389":e.envClasses.includes("cd")?"0.25":"0.4",a="em"),e.arraycolsep){const r=qe(e.arraycolsep,t);o=r.number.toFixed(4),a=r.unit}if(o){const t=0===r.length?0:r[0].children.length,n=(r,n)=>0===r&&0===n||r===t-1&&1===n?"0":"align"!==e.envClasses[0]?o:1===n?"0":e.autoTag?r%2?"1":"0":r%2?"0":"1";for(let e=0;e0){const t=e.envClasses.includes("align")||e.envClasses.includes("alignat");for(let n=0;n1&&e.envClasses.includes("cases")&&(s.children[1].style.paddingLeft="1em"),e.envClasses.includes("cases")||e.envClasses.includes("subarray"))for(const e of s.children)e.classes.push("tml-left")}}let l=new T.MathNode("mtable",r);e.envClasses.length>0&&(e.envClasses.includes("jot")?l.classes.push("tml-jot"):e.envClasses.includes("small")&&l.classes.push("tml-small")),"display"===e.scriptLevel&&l.setAttribute("displaystyle","true"),(e.autoTag||e.envClasses.includes("multline"))&&(l.style.width="100%");let i="";if(e.cols&&e.cols.length>0){const t=e.cols;let r=!1,n=0,s=t.length;for(;"separator"===t[n].type;)n+=1;for(;"separator"===t[s-1].type;)s-=1;if("separator"===t[0].type){const e="separator"===t[1].type?"0.15em double":"|"===t[0].separator?"0.06em solid ":"0.06em dashed ";for(const t of l.children)t.children[0].style.borderLeft=e}let o=e.autoTag?0:-1;for(let e=n;e0?i:"center ")+"right "),i&&l.setAttribute("columnalign",i.trim()),e.envClasses.includes("small")&&(l=new T.MathNode("mstyle",[l]),l.setAttribute("scriptlevel","1")),l},yt=function(t,r){-1===t.envName.indexOf("ed")&&it(t);const n="split"===t.envName,s=[],o=ut(t.parser,{cols:s,emptySingleRow:!0,autoTag:n?void 0:pt(t.envName),envClasses:["abut","jot"],maxNumCols:"split"===t.envName?2:void 0,leqno:t.parser.settings.leqno},"display");let a,l=0;const i=t.envName.indexOf("at")>-1;if(r[0]&&i){let t="";for(let e=0;e0?new Array(o.body[0].length).fill({type:"align",align:n}):[];const[a,l]=dt(t.parser.gullet.macros);return o.arraystretch=a,!l||6===l&&"pt"===l||(o.arraycolsep=l),r?{type:"leftright",mode:t.mode,body:[o],left:r[0],right:r[1],rightColor:void 0}:o},mathmlBuilder:bt}),$e({type:"array",names:["bordermatrix"],props:{numArgs:0},handler(e){const t=ut(e.parser,{cols:[],envClasses:["bordermatrix"]},"text");return t.cols=t.body.length>0?new Array(t.body[0].length).fill({type:"align",align:"c"}):[],t.envClasses=[],t.arraystretch=1,"matrix"===e.envName?t:((e,t)=>{const r=e.body;r[0].shift();const n=new Array(r.length-1).fill().map((()=>[]));for(let e=1;e[]));for(let e=0;e[])),envClasses:[],scriptLevel:"text",arraystretch:1,labels:new Array(n.length).fill(""),arraycolsep:{number:.04,unit:"em"}},a={type:"styling",mode:"math",scriptLevel:"text",body:[{type:"array",mode:"math",body:s,cols:new Array(s.length).fill({type:"align",align:"c"}),rowGaps:new Array(s.length-1).fill(null),hLinesBeforeRow:new Array(s.length+1).fill().map((()=>[])),envClasses:[],scriptLevel:"text",arraystretch:1,labels:new Array(s.length).fill(""),arraycolsep:null}]},l={type:"leftright",mode:"math",body:[e],left:t?t[0]:"(",right:t?t[1]:")",rightColor:void 0};return Pe([o,{type:"supsub",mode:"math",base:{type:"op",mode:"math",limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!0,symbol:!1,stack:!0,suppressBaseShift:!0,body:[l]},sup:a,sub:null}])})(t,e.delimiters)},mathmlBuilder:bt}),$e({type:"array",names:["smallmatrix"],props:{numArgs:0},handler(e){const t=ut(e.parser,{type:"small"},"script");return t.envClasses=["small"],t},mathmlBuilder:bt}),$e({type:"array",names:["subarray"],props:{numArgs:1},handler(t,r){const n=(Fe(r[0])?[r[0]]:Ie(r[0],"ordgroup").body).map((function(t){const r=Le(t).text;if(-1!=="lc".indexOf(r))return{type:"align",align:r};throw new e("Unknown column alignment: "+r,t)}));if(n.length>1)throw new e("{subarray} can contain only one column");let s={cols:n,envClasses:["small"]};if(s=ut(t.parser,s,"script"),s.body.length>0&&s.body[0].length>1)throw new e("{subarray} can contain only one column");return s},mathmlBuilder:bt}),$e({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler(e){const t=ut(e.parser,{cols:[],envClasses:["cases"]},ht(e.envName));return{type:"leftright",mode:e.mode,body:[t],left:e.envName.indexOf("r")>-1?".":"\\{",right:e.envName.indexOf("r")>-1?"\\}":".",rightColor:void 0}},mathmlBuilder:bt}),$e({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:yt,mathmlBuilder:bt}),$e({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:yt,mathmlBuilder:bt}),$e({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler(e){"gathered"!==e.envName&&it(e);const t={cols:[],envClasses:["abut","jot"],autoTag:pt(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return ut(e.parser,t,"display")},mathmlBuilder:bt}),$e({type:"array",names:["equation","equation*"],props:{numArgs:0},handler(e){it(e);const t={autoTag:pt(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,envClasses:["align"],leqno:e.parser.settings.leqno};return ut(e.parser,t,"display")},mathmlBuilder:bt}),$e({type:"array",names:["multline","multline*"],props:{numArgs:0},handler(e){it(e);const t={autoTag:"multline"===e.envName,maxNumCols:1,envClasses:["jot","multline"],leqno:e.parser.settings.leqno};return ut(e.parser,t,"display")},mathmlBuilder:bt}),$e({type:"array",names:["CD"],props:{numArgs:0},handler:t=>(it(t),function(t){const r=[];for(t.gullet.beginGroup(),t.gullet.macros.set("\\cr","\\\\\\relax"),t.gullet.beginGroup();;){r.push(t.parseExpression(!1,"\\\\")),t.gullet.endGroup(),t.gullet.beginGroup();const n=t.fetch().text;if("&"!==n&&"\\\\"!==n){if("\\end"===n){0===r[r.length-1].length&&r.pop();break}throw new e("Expected \\\\ or \\cr or \\end",t.nextToken)}t.consume()}let n=[];const s=[n];for(let l=0;l-1);else{if(!("<>AV".indexOf(s)>-1))throw new e('Expected one of "<>AV=|." after @.');for(let t=0;t<2;t++){let n=!0;for(let c=r+1;c{let s=["(",")"];if("\\bordermatrix"===t&&n[0]&&n[0].body){const e=n[0].body;2===e.length&&"atom"===e[0].type&&"atom"===e[1].type&&"open"===e[0].family&&"close"===e[1].family&&(s=[e[0].text,e[1].text])}e.consumeSpaces(),e.consume();const o=wt.bordermatrix,a={mode:e.mode,envName:t.slice(1),delimiters:s,parser:e},l=o.handler(a);return e.expect("}",!0),l}}),c({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler({parser:t,token:r},n){const s=Ie(n[0],"ordgroup").body;let o="";for(let e=0;e{let t=e.toString(16);return 1===t.length&&(t="0"+t),t},St=JSON.parse('{\n "Apricot": "#ffb484",\n "Aquamarine": "#08b4bc",\n "Bittersweet": "#c84c14",\n "blue": "#0000FF",\n "Blue": "#303494",\n "BlueGreen": "#08b4bc",\n "BlueViolet": "#503c94",\n "BrickRed": "#b8341c",\n "brown": "#BF8040",\n "Brown": "#802404",\n "BurntOrange": "#f8941c",\n "CadetBlue": "#78749c",\n "CarnationPink": "#f884b4",\n "Cerulean": "#08a4e4",\n "CornflowerBlue": "#40ace4",\n "cyan": "#00FFFF",\n "Cyan": "#08acec",\n "Dandelion": "#ffbc44",\n "darkgray": "#404040",\n "DarkOrchid": "#a8548c",\n "Emerald": "#08ac9c",\n "ForestGreen": "#089c54",\n "Fuchsia": "#90348c",\n "Goldenrod": "#ffdc44",\n "gray": "#808080",\n "Gray": "#98949c",\n "green": "#00FF00",\n "Green": "#08a44c",\n "GreenYellow": "#e0e474",\n "JungleGreen": "#08ac9c",\n "Lavender": "#f89cc4",\n "lightgray": "#c0c0c0",\n "lime": "#BFFF00",\n "LimeGreen": "#90c43c",\n "magenta": "#FF00FF",\n "Magenta": "#f0048c",\n "Mahogany": "#b0341c",\n "Maroon": "#b03434",\n "Melon": "#f89c7c",\n "MidnightBlue": "#086494",\n "Mulberry": "#b03c94",\n "NavyBlue": "#086cbc",\n "olive": "#7F7F00",\n "OliveGreen": "#407c34",\n "orange": "#FF8000",\n "Orange": "#f8843c",\n "OrangeRed": "#f0145c",\n "Orchid": "#b074ac",\n "Peach": "#f8945c",\n "Periwinkle": "#8074bc",\n "PineGreen": "#088c74",\n "pink": "#ff7f7f",\n "Plum": "#98248c",\n "ProcessBlue": "#08b4ec",\n "purple": "#BF0040",\n "Purple": "#a0449c",\n "RawSienna": "#983c04",\n "red": "#ff0000",\n "Red": "#f01c24",\n "RedOrange": "#f86434",\n "RedViolet": "#a0246c",\n "Rhodamine": "#f0549c",\n "Royallue": "#0874bc",\n "RoyalPurple": "#683c9c",\n "RubineRed": "#f0047c",\n "Salmon": "#f8948c",\n "SeaGreen": "#30bc9c",\n "Sepia": "#701404",\n "SkyBlue": "#48c4dc",\n "SpringGreen": "#c8dc64",\n "Tan": "#e09c74",\n "teal": "#007F7F",\n "TealBlue": "#08acb4",\n "Thistle": "#d884b4",\n "Turquoise": "#08b4cc",\n "violet": "#800080",\n "Violet": "#60449c",\n "VioletRed": "#f054a4",\n "WildStrawberry": "#f0246c",\n "yellow": "#FFFF00",\n "Yellow": "#fff404",\n "YellowGreen": "#98cc6c",\n "YellowOrange": "#ffa41c"\n}'),qt=(t,r)=>{let n="";if("HTML"===t){if(!xt.test(r))throw new e("Invalid HTML input.");n=r}else if("RGB"===t){if(!vt.test(r))throw new e("Invalid RGB input.");r.split(",").map((e=>{n+=Tt(Number(e.trim()))}))}else{if(!At.test(r))throw new e("Invalid rbg input.");r.split(",").map((t=>{const r=Number(t.trim());if(r>1)throw new e("Color rgb input must be < 1.");n+=Tt(Number((255*r).toFixed(0)))}))}return"#"!==n.charAt(0)&&(n="#"+n),n},Ot=(t,r,n)=>{const s=`\\\\color@${t}`;if(!kt.exec(t))throw new e("Invalid color: '"+t+"'",n);return Nt.test(t)?"#"+t:("#"===t.charAt(0)||(r.has(s)?t=r.get(s).tokens[0].text:St[t]&&(t=St[t])),t)},Mt=(e,t)=>{let r=ie(e.body,t.withColor(e.color));return 0===r.length&&r.push(new T.MathNode("mrow")),r=r.map((t=>(t.style.color=e.color,t))),T.newDocumentFragment(r)};c({type:"color",names:["\\textcolor"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","original"]},handler({parser:e,token:t},r,n){const s=n[0]&&Ie(n[0],"raw").string;let o="";if(s){const e=Ie(r[0],"raw").string;o=qt(s,e)}else o=Ot(Ie(r[0],"raw").string,e.gullet.macros,t);const a=r[1];return{type:"color",mode:e.mode,color:o,isTextColor:!0,body:p(a)}},mathmlBuilder:Mt}),c({type:"color",names:["\\color"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw"]},handler({parser:e,breakOnTokenText:t,token:r},n,s){const o=s[0]&&Ie(s[0],"raw").string;let a="";if(o){const e=Ie(n[0],"raw").string;a=qt(o,e)}else a=Ot(Ie(n[0],"raw").string,e.gullet.macros,r);const l=e.parseExpression(!0,t,!0);return{type:"color",mode:e.mode,color:a,isTextColor:!1,body:l}},mathmlBuilder:Mt}),c({type:"color",names:["\\definecolor"],props:{numArgs:3,allowedInText:!0,argTypes:["raw","raw","raw"]},handler({parser:t,funcName:r,token:n},s){const o=Ie(s[0],"raw").string;if(!/^[A-Za-z]+$/.test(o))throw new e("Color name must be latin letters.",n);const a=Ie(s[1],"raw").string;if(!["HTML","RGB","rgb"].includes(a))throw new e("Color model must be HTML, RGB, or rgb.",n);const l=Ie(s[2],"raw").string,i=qt(a,l);return t.gullet.macros.set(`\\\\color@${o}`,{tokens:[{text:i}],numArgs:0}),{type:"internal",mode:t.mode}}}),c({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:0,allowedInText:!0},handler({parser:e},t,r){const n="["===e.gullet.future().text?e.parseSizeGroup(!0):null,s=!e.settings.displayMode;return{type:"cr",mode:e.mode,newLine:s,size:n&&Ie(n,"size").value}},mathmlBuilder(e,t){const r=new T.MathNode("mo");if(e.newLine&&(r.setAttribute("linebreak","newline"),e.size)){const n=qe(e.size,t);r.setAttribute("height",n.number+n.unit)}return r}});const Bt={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},Ct=t=>{const r=t.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(r))throw new e("Expected a control sequence",t);return r},zt=(e,t,r,n)=>{let s=e.gullet.macros.get(r.text);null==s&&(r.noexpand=!0,s={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,s,n)};c({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler({parser:t,funcName:r}){t.consumeSpaces();const n=t.fetch();if(Bt[n.text])return"\\global"!==r&&"\\\\globallong"!==r||(n.text=Bt[n.text]),Ie(t.parseFunction(),"internal");throw new e("Invalid token after macro prefix",n)}}),c({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:t,funcName:r}){let n=t.gullet.popToken();const s=n.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(s))throw new e("Expected a control sequence",n);let o,a=0;const l=[[]];for(;"{"!==t.gullet.future().text;)if(n=t.gullet.popToken(),"#"===n.text){if("{"===t.gullet.future().text){o=t.gullet.future(),l[a].push("{");break}if(n=t.gullet.popToken(),!/^[1-9]$/.test(n.text))throw new e(`Invalid argument number "${n.text}"`);if(parseInt(n.text)!==a+1)throw new e(`Argument number "${n.text}" out of order`);a++,l.push([])}else{if("EOF"===n.text)throw new e("Expected a macro definition");l[a].push(n.text)}let{tokens:i}=t.gullet.consumeArg();if(o&&i.unshift(o),"\\edef"===r||"\\xdef"===r){if(i=t.gullet.expandTokens(i),i.length>t.gullet.settings.maxExpand)throw new e("Too many expansions in an "+r);i.reverse()}return t.gullet.macros.set(s,{tokens:i,numArgs:a,delimiters:l},r===Bt[r]),{type:"internal",mode:t.mode}}}),c({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:e,funcName:t}){const r=Ct(e.gullet.popToken());e.gullet.consumeSpaces();const n=(e=>{let t=e.gullet.popToken();return"="===t.text&&(t=e.gullet.popToken()," "===t.text&&(t=e.gullet.popToken())),t})(e);return zt(e,r,n,"\\\\globallet"===t),{type:"internal",mode:e.mode}}}),c({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:e,funcName:t}){const r=Ct(e.gullet.popToken()),n=e.gullet.popToken(),s=e.gullet.popToken();return zt(e,r,s,"\\\\globalfuture"===t),e.gullet.pushToken(s),e.gullet.pushToken(n),{type:"internal",mode:e.mode}}}),c({type:"internal",names:["\\newcommand","\\renewcommand","\\providecommand"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({parser:t,funcName:r}){let n="";const s=t.gullet.popToken();"{"===s.text?(n=Ct(t.gullet.popToken()),t.gullet.popToken()):n=Ct(s);const o=t.gullet.isDefined(n);if(o&&"\\newcommand"===r)throw new e(`\\newcommand{${n}} attempting to redefine ${n}; use \\renewcommand`);if(!o&&"\\renewcommand"===r)throw new e(`\\renewcommand{${n}} when command ${n} does not yet exist; use \\newcommand`);let a=0;if("["===t.gullet.future().text){let r=t.gullet.popToken();if(r=t.gullet.popToken(),!/^[0-9]$/.test(r.text))throw new e(`Invalid number of arguments: "${r.text}"`);if(a=parseInt(r.text),r=t.gullet.popToken(),"]"!==r.text)throw new e(`Invalid argument "${r.text}"`)}const{tokens:l}=t.gullet.consumeArg();return"\\providecommand"===r&&t.gullet.macros.has(n)||t.gullet.macros.set(n,{tokens:l,numArgs:a}),{type:"internal",mode:t.mode}}});const Et={"\\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}},$t=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","⦇","\\llparenthesis","⦈","\\rrparenthesis","\\lfloor","\\rfloor","⌊","⌋","\\lceil","\\rceil","⌈","⌉","<",">","\\langle","⟨","\\rangle","⟩","\\lAngle","⟪","\\rAngle","⟫","\\llangle","⦉","\\rrangle","⦊","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","⟮","⟯","\\lmoustache","\\rmoustache","⎰","⎱","\\llbracket","\\rrbracket","⟦","⟦","\\lBrace","\\rBrace","⦃","⦄","/","\\backslash","|","\\vert","\\|","\\Vert","‖","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."],It=["}","\\left","\\middle","\\right"],Lt=e=>e.length>0&&($t.includes(e)||Et[e]||It.includes(e)),Ft=[0,1.2,1.8,2.4,3];function Dt(t,r){const n=Fe(t);if(n&&$t.includes(n.text))return["<","\\lt"].includes(n.text)&&(n.text="⟨"),[">","\\gt"].includes(n.text)&&(n.text="⟩"),n;throw new e(n?`Invalid delimiter '${n.text}' after '${r.funcName}'`:`Invalid delimiter type '${t.type}'`,t)}const Gt=["/","\\","\\backslash","\\vert","|"];c({type:"delimsizing",names:["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>{const r=Dt(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Et[e.funcName].size,mclass:Et[e.funcName].mclass,delim:r.text}},mathmlBuilder:e=>{const t=[];"."===e.delim&&(e.delim=""),t.push(te(e.delim,e.mode));const r=new T.MathNode("mo",t);return"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),(Gt.includes(e.delim)||e.delim.indexOf("arrow")>-1)&&r.setAttribute("stretchy","true"),r.setAttribute("symmetric","true"),r.setAttribute("minsize",Ft[e.size]+"em"),r.setAttribute("maxsize",Ft[e.size]+"em"),r}}),c({type:"leftright-right",names:["\\right"],props:{numArgs:1,argTypes:["primitive"]},handler:(e,t)=>({type:"leftright-right",mode:e.parser.mode,delim:Dt(t[0],e).text})}),c({type:"leftright",names:["\\left"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,r)=>{const n=Dt(r[0],t),s=t.parser;++s.leftrightDepth;let o=s.parseExpression(!1,null,!0),a=s.fetch();for(;"\\middle"===a.text;){s.consume();const t=s.fetch().text;if(!$.math[t])throw new e(`Invalid delimiter '${t}' after '\\middle'`);Dt({type:"atom",mode:"math",text:t},{funcName:"\\middle"}),o.push({type:"middle",mode:"math",delim:t}),s.consume(),o=o.concat(s.parseExpression(!1,null,!0)),a=s.fetch()}--s.leftrightDepth,s.expect("\\right",!1);const l=Ie(s.parseFunction(),"leftright-right");return{type:"leftright",mode:s.mode,body:o,left:n.text,right:l.delim}},mathmlBuilder:(e,t)=>{!function(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}(e);const r=ie(e.body,t);"."===e.left&&(e.left="");const n=new T.MathNode("mo",[te(e.left,e.mode)]);n.setAttribute("fence","true"),n.setAttribute("form","prefix"),("/"===e.left||"\\"===e.left||e.left.indexOf("arrow")>-1)&&n.setAttribute("stretchy","true"),r.unshift(n),"."===e.right&&(e.right="");const s=new T.MathNode("mo",[te(e.right,e.mode)]);if(s.setAttribute("fence","true"),s.setAttribute("form","postfix"),("∖"===e.right||e.right.indexOf("arrow")>-1)&&s.setAttribute("stretchy","true"),e.body.length>0){const t=e.body[e.body.length-1];"color"!==t.type||t.isTextColor||s.setAttribute("mathcolor",t.color)}return r.push(s),se(r)}}),c({type:"middle",names:["\\middle"],props:{numArgs:1,argTypes:["primitive"]},handler:(t,r)=>{const n=Dt(r[0],t);if(!t.parser.leftrightDepth)throw new e("\\middle without preceding \\left",n);return{type:"middle",mode:t.parser.mode,delim:n.text}},mathmlBuilder:(e,t)=>{const r=te(e.delim,e.mode),n=new T.MathNode("mo",[r]);return n.setAttribute("fence","true"),e.delim.indexOf("arrow")>-1&&n.setAttribute("stretchy","true"),n.setAttribute("form","prefix"),n.setAttribute("lspace","0.05em"),n.setAttribute("rspace","0.05em"),n}});const jt=e=>{const t=new T.MathNode("mspace");return t.setAttribute("width","3pt"),t},Pt=(e,t)=>{let r;switch(r=e.label.indexOf("colorbox")>-1||"\\boxed"===e.label?new T.MathNode("mrow",[jt(),de(e.body,t),jt()]):new T.MathNode("menclose",[de(e.body,t)]),e.label){case"\\overline":r.setAttribute("notation","top"),r.classes.push("tml-overline");break;case"\\underline":r.setAttribute("notation","bottom"),r.classes.push("tml-underline");break;case"\\cancel":r.setAttribute("notation","updiagonalstrike"),r.children.push(new T.MathNode("mrow",[],["tml-cancel","upstrike"]));break;case"\\bcancel":r.setAttribute("notation","downdiagonalstrike"),r.children.push(new T.MathNode("mrow",[],["tml-cancel","downstrike"]));break;case"\\sout":r.setAttribute("notation","horizontalstrike"),r.children.push(new T.MathNode("mrow",[],["tml-cancel","sout"]));break;case"\\xcancel":r.setAttribute("notation","updiagonalstrike downdiagonalstrike"),r.classes.push("tml-xcancel");break;case"\\longdiv":r.setAttribute("notation","longdiv"),r.classes.push("longdiv-top"),r.children.push(new T.MathNode("mrow",[],["longdiv-arc"]));break;case"\\phase":r.setAttribute("notation","phasorangle"),r.classes.push("phasor-bottom"),r.children.push(new T.MathNode("mrow",[],["phasor-angle"]));break;case"\\textcircled":r.setAttribute("notation","circle"),r.classes.push("circle-pad"),r.children.push(new T.MathNode("mrow",[],["textcircle"]));break;case"\\angl":r.setAttribute("notation","actuarial"),r.classes.push("actuarial");break;case"\\boxed":r.setAttribute("notation","box"),r.classes.push("tml-box"),r.setAttribute("scriptlevel","0"),r.setAttribute("displaystyle","true");break;case"\\fbox":r.setAttribute("notation","box"),r.classes.push("tml-fbox");break;case"\\fcolorbox":case"\\colorbox":{const t={padding:"3pt 0 3pt 0"};"\\fcolorbox"===e.label&&(t.border="0.0667em solid "+String(e.borderColor)),r.style=t;break}}return e.backgroundColor&&r.setAttribute("mathbackground",e.backgroundColor),r};c({type:"enclose",names:["\\colorbox"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","text"]},handler({parser:e,funcName:t},r,n){const s=n[0]&&Ie(n[0],"raw").string;let o="";if(s){const e=Ie(r[0],"raw").string;o=qt(s,e)}else o=Ot(Ie(r[0],"raw").string,e.gullet.macros);const a=r[1];return{type:"enclose",mode:e.mode,label:t,backgroundColor:o,body:a}},mathmlBuilder:Pt}),c({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,numOptionalArgs:1,allowedInText:!0,argTypes:["raw","raw","raw","text"]},handler({parser:e,funcName:t},r,n){const s=n[0]&&Ie(n[0],"raw").string;let o,a="";if(s){const e=Ie(r[0],"raw").string,t=Ie(r[0],"raw").string;a=qt(s,e),o=qt(s,t)}else a=Ot(Ie(r[0],"raw").string,e.gullet.macros),o=Ot(Ie(r[1],"raw").string,e.gullet.macros);const l=r[2];return{type:"enclose",mode:e.mode,label:t,backgroundColor:o,borderColor:a,body:l}},mathmlBuilder:Pt}),c({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:({parser:e},t)=>({type:"enclose",mode:e.mode,label:"\\fbox",body:t[0]})}),c({type:"enclose",names:["\\angl","\\cancel","\\bcancel","\\xcancel","\\sout","\\overline","\\boxed","\\longdiv","\\phase"],props:{numArgs:1},handler({parser:e,funcName:t},r){const n=r[0];return{type:"enclose",mode:e.mode,label:t,body:n}},mathmlBuilder:Pt}),c({type:"enclose",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:"enclose",mode:e.mode,label:t,body:n}},mathmlBuilder:Pt}),c({type:"enclose",names:["\\textcircled"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:"enclose",mode:e.mode,label:t,body:n}},mathmlBuilder:Pt}),c({type:"environment",names:["\\begin","\\end"],props:{numArgs:1,argTypes:["text"]},handler({parser:t,funcName:r},n){const s=n[0];if("ordgroup"!==s.type)throw new e("Invalid environment name",s);let o="";for(let e=0;e({type:"envTag",mode:e.mode,body:t[0]}),mathmlBuilder:(e,t)=>new T.MathNode("mrow")}),c({type:"noTag",names:["\\env@notag"],props:{numArgs:0},handler:({parser:e})=>({type:"noTag",mode:e.mode}),mathmlBuilder:(e,t)=>new T.MathNode("mrow")});const Rt=(e,t)=>{const r=e.font,n=t.withFont(r),s=de(e.body,n);if(0===s.children.length)return s;if("boldsymbol"===r&&["mo","mpadded","mrow"].includes(s.type))return s.style.fontWeight="bold",s;if(((e,t)=>{if("mathrm"!==t||"ordgroup"!==e.body.type||1===e.body.body.length)return!1;if("mathord"!==e.body.body[0].type)return!1;for(let t=1;t{const n=m(r[0]);let s=t;return s in Ut&&(s=Ut[s]),{type:"font",mode:e.mode,font:s.slice(1),body:n}},mathmlBuilder:Rt}),c({type:"font",names:["\\rm","\\sf","\\tt","\\bf","\\it","\\cal"],props:{numArgs:0,allowedInText:!0},handler:({parser:e,funcName:t,breakOnTokenText:r},n)=>{const{mode:s}=e,o=e.parseExpression(!0,r,!0);return{type:"font",mode:s,font:`math${t.slice(1)}`,body:{type:"ordgroup",mode:e.mode,body:o}}},mathmlBuilder:Rt});const Ht=["display","text","script","scriptscript"],Vt={auto:-1,display:0,text:0,script:1,scriptscript:2},_t=(e,t)=>{const r="auto"===e.scriptLevel?t.incrementLevel():"display"===e.scriptLevel?t.withLevel(_e):"text"===e.scriptLevel?t.withLevel(We):t.withLevel(Xe),n=de(e.numer,r),s=de(e.denom,r);3===t.level&&(n.style.mathDepth="2",n.setAttribute("scriptlevel","2"),s.style.mathDepth="2",s.setAttribute("scriptlevel","2"));let o=new T.MathNode("mfrac",[n,s]);if(e.hasBarLine){if(e.barSize){const r=qe(e.barSize,t);o.setAttribute("linethickness",r.number+r.unit)}}else o.setAttribute("linethickness","0px");if(null!=e.leftDelim||null!=e.rightDelim){const t=[];if(null!=e.leftDelim){const r=new T.MathNode("mo",[new T.TextNode(e.leftDelim.replace("\\",""))]);r.setAttribute("fence","true"),t.push(r)}if(t.push(o),null!=e.rightDelim){const r=new T.MathNode("mo",[new T.TextNode(e.rightDelim.replace("\\",""))]);r.setAttribute("fence","true"),t.push(r)}o=se(t)}return"auto"!==e.scriptLevel&&(o=new T.MathNode("mstyle",[o]),o.setAttribute("displaystyle",String("display"===e.scriptLevel)),o.setAttribute("scriptlevel",Vt[e.scriptLevel])),o};c({type:"genfrac",names:["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac","\\\\bracefrac","\\\\brackfrac"],props:{numArgs:2,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=r[1];let o=!1,a=null,l=null,i="auto";switch(t){case"\\dfrac":case"\\frac":case"\\tfrac":o=!0;break;case"\\\\atopfrac":o=!1;break;case"\\dbinom":case"\\binom":case"\\tbinom":a="(",l=")";break;case"\\\\bracefrac":a="\\{",l="\\}";break;case"\\\\brackfrac":a="[",l="]";break;default:throw new Error("Unrecognized genfrac command")}switch(t){case"\\dfrac":case"\\dbinom":i="display";break;case"\\tfrac":case"\\tbinom":i="text"}return{type:"genfrac",mode:e.mode,continued:!1,numer:n,denom:s,hasBarLine:o,leftDelim:a,rightDelim:l,scriptLevel:i,barSize:null}},mathmlBuilder:_t}),c({type:"genfrac",names:["\\cfrac"],props:{numArgs:2},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=r[1];return{type:"genfrac",mode:e.mode,continued:!0,numer:n,denom:s,hasBarLine:!0,leftDelim:null,rightDelim:null,scriptLevel:"display",barSize:null}}}),c({type:"infix",names:["\\over","\\choose","\\atop","\\brace","\\brack"],props:{numArgs:0,infix:!0},handler({parser:e,funcName:t,token:r}){let n;switch(t){case"\\over":n="\\frac";break;case"\\choose":n="\\binom";break;case"\\atop":n="\\\\atopfrac";break;case"\\brace":n="\\\\bracefrac";break;case"\\brack":n="\\\\brackfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",mode:e.mode,replaceWith:n,token:r}}});const Wt=function(e){let t=null;return e.length>0&&(t=e,t="."===t?null:t),t};c({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler({parser:e},t){const r=t[4],n=t[5],s=m(t[0]),o="atom"===s.type&&"open"===s.family?Wt(s.text):null,a=m(t[1]),l="atom"===a.type&&"close"===a.family?Wt(a.text):null,i=Ie(t[2],"size");let c,d=null;i.isBlank?c=!0:(d=i.value,c=d.number>0);let p="auto",u=t[3];if("ordgroup"===u.type){if(u.body.length>0){const e=Ie(u.body[0],"textord");p=Ht[Number(e.text)]}}else u=Ie(u,"textord"),p=Ht[Number(u.text)];return{type:"genfrac",mode:e.mode,numer:r,denom:n,continued:!1,hasBarLine:c,barSize:d,leftDelim:o,rightDelim:l,scriptLevel:p}},mathmlBuilder:_t}),c({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:({parser:e,funcName:t,token:r},n)=>({type:"infix",mode:e.mode,replaceWith:"\\\\abovefrac",barSize:Ie(n[0],"size").value,token:r})}),c({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Ie(r[1],"infix").barSize),o=r[2],a=s.number>0;return{type:"genfrac",mode:e.mode,numer:n,denom:o,continued:!1,hasBarLine:a,barSize:s,leftDelim:null,rightDelim:null,scriptLevel:"auto"}},mathmlBuilder:_t}),c({type:"hbox",names:["\\hbox"],props:{numArgs:1,argTypes:["hbox"],allowedInArgument:!0,allowedInText:!1},handler:({parser:e},t)=>({type:"hbox",mode:e.mode,body:p(t[0])}),mathmlBuilder(e,t){const r=t.withLevel(_e),n=ce(e.body,r);return ne(n)}});c({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:({parser:e,funcName:t},r)=>({type:"horizBrace",mode:e.mode,label:t,isOver:/^\\over/.test(t),base:r[0]}),mathmlBuilder:(e,t)=>{const r=B(e.label);return r.style["math-depth"]=0,new T.MathNode(e.isOver?"mover":"munder",[de(e.base,t),r])}}),c({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:({parser:t,token:r},n)=>{const s=n[1],o=Ie(n[0],"url").url;if(!t.settings.isTrusted({command:"\\href",url:o}))throw new e('Function "\\href" is not trusted',r);return{type:"href",mode:t.mode,href:o,body:p(s)}},mathmlBuilder:(e,t)=>{const r=new v("math",[ce(e.body,t)]);return new x(e.href,[],[r])}}),c({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:({parser:t,token:r},n)=>{const s=Ie(n[0],"url").url;if(!t.settings.isTrusted({command:"\\url",url:s}))throw new e('Function "\\url" is not trusted',r);const o=[];for(let e=0;e{const o=Ie(s[0],"raw").string,a=s[1];if(t.settings.strict)throw new e(`Function "${r}" is disabled in strict mode`,n);let l;const i={};switch(r){case"\\class":i.class=o,l={command:"\\class",class:o};break;case"\\id":i.id=o,l={command:"\\id",id:o};break;case"\\style":i.style=o,l={command:"\\style",style:o};break;case"\\data":{const t=o.split(",");for(let r=0;r{const r=ce(e.body,t),n=[];e.attributes.class&&n.push(...e.attributes.class.trim().split(/\s+/)),r.classes=n;for(const t in e.attributes)"class"!==t&&Object.prototype.hasOwnProperty.call(e.attributes,t)&&r.setAttribute(t,e.attributes[t]);return r}});const Xt=function(t){if(/^[-+]? *(\d+(\.\d*)?|\.\d+)$/.test(t))return{number:+t,unit:"bp"};{const r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t);if(!r)throw new e("Invalid size: '"+t+"' in \\includegraphics");const n={number:+(r[1]+r[2]),unit:r[3]};if(!Te(n))throw new e("Invalid unit: '"+n.unit+"' in \\includegraphics.");return n}};c({type:"includegraphics",names:["\\includegraphics"],props:{numArgs:1,numOptionalArgs:1,argTypes:["raw","url"],allowedInText:!1},handler:({parser:t,token:r},n,s)=>{let o={number:0,unit:"em"},a={number:.9,unit:"em"},l={number:0,unit:"em"},i="";if(s[0]){const t=Ie(s[0],"raw").string.split(",");for(let r=0;r{const r=qe(e.height,t),n={number:0,unit:"em"};e.totalheight.number>0&&e.totalheight.unit===r.unit&&e.totalheight.number>r.number&&(n.number=e.totalheight.number-r.number,n.unit=r.unit);let s=0;e.width.number>0&&(s=qe(e.width,t));const o={height:r.number+n.number+"em"};s.number>0&&(o.width=s.number+s.unit),n.number>0&&(o.verticalAlign=-n.number+n.unit);const a=new k(e.src,e.alt,o);return a.height=r,a.depth=n,new T.MathNode("mtext",[a])}}),c({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler({parser:t,funcName:r,token:n},s){const o=Ie(s[0],"size");if(t.settings.strict){const s="m"===r[1],a="mu"===o.value.unit;if(s){if(!a)throw new e(`LaTeX's ${r} supports only mu units, not ${o.value.unit} units`,n);if("math"!==t.mode)throw new e(`LaTeX's ${r} works only in math mode`,n)}else if(a)throw new e(`LaTeX's ${r} doesn't support mu units`,n)}return{type:"kern",mode:t.mode,dimension:o.value}},mathmlBuilder(e,t){const r=qe(e.dimension,t),n="em"===r.unit?Zt(r.number):"";if("text"===e.mode&&n.length>0){const e=new T.TextNode(n);return new T.MathNode("mtext",[e])}{const e=new T.MathNode("mspace");return e.setAttribute("width",r.number+r.unit),r.number<0&&(e.style.marginLeft=r.number+r.unit),e}}});const Zt=function(e){return e>=.05555&&e<=.05556?" ":e>=.1666&&e<=.1667?" ":e>=.2222&&e<=.2223?" ":e>=.2777&&e<=.2778?"  ":""},Yt=/[^A-Za-z_0-9-]/g;c({type:"label",names:["\\label"],props:{numArgs:1,argTypes:["raw"]},handler:({parser:e},t)=>({type:"label",mode:e.mode,string:t[0].string.replace(Yt,"")}),mathmlBuilder(e,t){const r=new T.MathNode("mrow",[],["tml-label"]);return e.string.length>0&&r.setLabel(e.string),r}});const Jt=["\\clap","\\llap","\\rlap"];c({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap","\\clap","\\llap","\\rlap"],props:{numArgs:1,allowedInText:!0},handler:({parser:t,funcName:r,token:n},s)=>{if(Jt.includes(r)){if(t.settings.strict&&"text"!==t.mode)throw new e(`{${r}} can be used only in text mode.\n Try \\math${r.slice(1)}`,n);r=r.slice(1)}else r=r.slice(5);const o=s[0];return{type:"lap",mode:t.mode,alignment:r,body:o}},mathmlBuilder:(e,t)=>{let r;if("llap"===e.alignment){const n=ie(p(e.body),t),s=new T.MathNode("mphantom",n);r=new T.MathNode("mpadded",[s]),r.setAttribute("width","0px")}const n=de(e.body,t);let s;if("llap"===e.alignment?(n.style.position="absolute",n.style.right="0",n.style.bottom="0",s=new T.MathNode("mpadded",[r,n])):s=new T.MathNode("mpadded",[n]),"rlap"===e.alignment)e.body.body.length>0&&"genfrac"===e.body.body[0].type&&s.setAttribute("lspace","0.16667em");else{const t="llap"===e.alignment?"-1":"-0.5";s.setAttribute("lspace",t+"width"),"llap"===e.alignment?s.style.position="relative":(s.style.display="flex",s.style.justifyContent="center")}return s.setAttribute("width","0px"),s}}),c({type:"ordgroup",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler({funcName:e,parser:t},r){const n=t.mode;t.switchMode("math");const s="\\("===e?"\\)":"$",o=t.parseExpression(!1,s);return t.expect(s),t.switchMode(n),{type:"ordgroup",mode:t.mode,body:o}}}),c({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler(t,r){throw new e(`Mismatched ${t.funcName}`,r)}});c({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:({parser:e},t)=>({type:"mathchoice",mode:e.mode,display:p(t[0]),text:p(t[1]),script:p(t[2]),scriptscript:p(t[3])}),mathmlBuilder:(e,t)=>{const r=((e,t)=>{switch(t.level){case Ve:return e.display;case _e:return e.text;case We:return e.script;case Xe:return e.scriptscript;default:return e.text}})(e,t);return ce(r,t)}});const Kt=["text","textord","mathord","atom"];function Qt(e,t){let r;const n=ie(e.body,t);if("minner"===e.mclass)r=new T.MathNode("mpadded",n);else if("mord"===e.mclass)e.isCharacterBox||"mathord"===n[0].type?(r=n[0],r.type="mi",1===r.children.length&&r.children[0].text&&"∇"===r.children[0].text&&r.setAttribute("mathvariant","normal")):r=new T.MathNode("mi",n);else{r=new T.MathNode("mrow",n),e.mustPromote?(r=n[0],r.type="mo",e.isCharacterBox&&e.body[0].text&&/[A-Za-z]/.test(e.body[0].text)&&r.setAttribute("mathvariant","italic")):r=new T.MathNode("mrow",n);const s=t.level<2;"mrow"===r.type?s&&("mbin"===e.mclass?(r.children.unshift(Oe(.2222)),r.children.push(Oe(.2222))):"mrel"===e.mclass?(r.children.unshift(Oe(.2778)),r.children.push(Oe(.2778))):"mpunct"===e.mclass?r.children.push(Oe(.1667)):"minner"===e.mclass&&(r.children.unshift(Oe(.0556)),r.children.push(Oe(.0556)))):"mbin"===e.mclass?(r.attributes.lspace=s?"0.2222em":"0",r.attributes.rspace=s?"0.2222em":"0"):"mrel"===e.mclass?(r.attributes.lspace=s?"0.2778em":"0",r.attributes.rspace=s?"0.2778em":"0"):"mpunct"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace=s?"0.1667em":"0"):"mopen"===e.mclass||"mclose"===e.mclass?(r.attributes.lspace="0em",r.attributes.rspace="0em"):"minner"===e.mclass&&s&&(r.attributes.lspace="0.0556em",r.attributes.width="+0.1111em"),"mopen"!==e.mclass&&"mclose"!==e.mclass&&(delete r.attributes.stretchy,delete r.attributes.form)}return r}c({type:"mclass",names:["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],props:{numArgs:1,primitive:!0},handler({parser:e,funcName:t},r){const n=r[0],s=o.isCharacterBox(n);let a=!0;const l={type:"mathord",text:"",mode:e.mode},i=n.body?n.body:[n];for(const t of i){if(!Kt.includes(t.type)){a=!1;break}$[e.mode][t.text]?l.text+=$[e.mode][t.text].replace:t.text?l.text+=t.text:t.body&&t.body.map((e=>{l.text+=e.text}))}return a&&"\\mathord"===t&&"mathord"===l.type&&l.text.length>1?l:{type:"mclass",mode:e.mode,mclass:"m"+t.slice(5),body:p(a?l:n),isCharacterBox:s,mustPromote:a}},mathmlBuilder:Qt});const er=e=>{const t="ordgroup"===e.type&&e.body.length?e.body[0]:e;return"atom"!==t.type||"bin"!==t.family&&"rel"!==t.family?"mord":"m"+t.family};c({type:"mclass",names:["\\@binrel"],props:{numArgs:2},handler:({parser:e},t)=>({type:"mclass",mode:e.mode,mclass:er(t[0]),body:p(t[1]),isCharacterBox:o.isCharacterBox(t[1])})}),c({type:"mclass",names:["\\stackrel","\\overset","\\underset"],props:{numArgs:2},handler({parser:e,funcName:t},r){const n=r[1],s=r[0],o={type:"op",mode:n.mode,limits:!0,alwaysHandleSupSub:!0,parentIsSupSub:!1,symbol:!1,stack:!0,suppressBaseShift:"\\stackrel"!==t,body:p(n)};return{type:"supsub",mode:s.mode,base:o,sup:"\\underset"===t?null:s,sub:"\\underset"===t?s:null}},mathmlBuilder:Qt});const tr=(e,t,r)=>{if(!e)return r;const n=de(e,t);return"mrow"===n.type&&0===n.children.length?r:n};c({type:"multiscript",names:["\\sideset","\\pres@cript"],props:{numArgs:3},handler({parser:t,funcName:r,token:n},s){if(0===s[2].body.length)throw new e(r+"cannot parse an empty base.");const o=s[2].body[0];if(t.settings.strict&&"\\sideset"===r&&!o.symbol)throw new e("The base of \\sideset must be a big operator. Try \\prescript.");if(s[0].body.length>0&&"supsub"!==s[0].body[0].type||s[1].body.length>0&&"supsub"!==s[1].body[0].type)throw new e("\\sideset can parse only subscripts and superscripts in its first two arguments",n);const a=s[0].body.length>0?s[0].body[0]:null,l=s[1].body.length>0?s[1].body[0]:null;return a||l?a?{type:"multiscript",mode:t.mode,isSideset:"\\sideset"===r,prescripts:a,postscripts:l,base:o}:{type:"styling",mode:t.mode,scriptLevel:"text",body:[{type:"supsub",mode:t.mode,base:o,sup:l.sup,sub:l.sub}]}:o},mathmlBuilder(e,t){const r=de(e.base,t),n=new T.MathNode("mprescripts"),s=new T.MathNode("none");let o=[];const a=tr(e.prescripts.sub,t,s),l=tr(e.prescripts.sup,t,s);if(e.isSideset&&(a.setAttribute("style","text-align: left;"),l.setAttribute("style","text-align: left;")),e.postscripts){o=[r,tr(e.postscripts.sub,t,s),tr(e.postscripts.sup,t,s),n,a,l]}else o=[r,n,a,l];return new T.MathNode("mmultiscripts",o)}}),c({type:"not",names:["\\not"],props:{numArgs:1,primitive:!0,allowedInText:!1},handler({parser:e},t){const r=o.isCharacterBox(t[0]);let n;if(r)n=p(t[0]),"\\"===n[0].text.charAt(0)&&(n[0].text=$.math[n[0].text].replace),n[0].text=n[0].text.slice(0,1)+"̸"+n[0].text.slice(1);else{n=[{type:"textord",mode:"math",text:"̸"},{type:"kern",mode:"math",dimension:{number:-.6,unit:"em"}},t[0]]}return{type:"not",mode:e.mode,body:n,isCharacterBox:r}},mathmlBuilder(e,t){if(e.isCharacterBox){return ie(e.body,t,!0)[0]}return ce(e.body,t)}});const rr=["textord","mathord","atom"],nr=["\\smallint"],sr=["textord","mathord","ordgroup","close","leftright","font"],or=e=>{e.attributes.lspace="0.1667em",e.attributes.rspace="0.1667em"},ar=(e,t)=>{let r;if(e.symbol)r=new v("mo",[te(e.name,e.mode)]),nr.includes(e.name)?r.setAttribute("largeop","false"):r.setAttribute("movablelimits","false"),e.fromMathOp&&or(r);else if(e.body)r=new v("mo",ie(e.body,t)),e.fromMathOp&&or(r);else if(r=new v("mi",[new A(e.name.slice(1))]),!e.parentIsSupSub){const t=[r,new v("mo",[te("⁡","text")])];if(e.needsLeadingSpace){const e=new v("mspace");e.setAttribute("width","0.1667em"),t.unshift(e)}if(!e.isFollowedByDelimiter){const e=new v("mspace");e.setAttribute("width","0.1667em"),t.push(e)}r=new v("mrow",t)}return r},lr={"∏":"\\prod","∐":"\\coprod","∑":"\\sum","⋀":"\\bigwedge","⋁":"\\bigvee","⋂":"\\bigcap","⋃":"\\bigcup","⨀":"\\bigodot","⨁":"\\bigoplus","⨂":"\\bigotimes","⨄":"\\biguplus","⨅":"\\bigsqcap","⨆":"\\bigsqcup","⨃":"\\bigcupdot","⨇":"\\bigdoublevee","⨈":"\\bigdoublewedge","⨉":"\\bigtimes"};c({type:"op",names:["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcupplus","\\bigcupdot","\\bigcap","\\bigcup","\\bigdoublevee","\\bigdoublewedge","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcap","\\bigsqcup","\\bigtimes","\\smallint","∏","∐","∑","⋀","⋁","⋂","⋃","⨀","⨁","⨂","⨃","⨄","⨅","⨆","⨇","⨈","⨉"],props:{numArgs:0},handler:({parser:e,funcName:t},r)=>{let n=t;return 1===n.length&&(n=lr[n]),{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!0,stack:!1,name:n}},mathmlBuilder:ar}),c({type:"op",names:["\\mathop"],props:{numArgs:1,primitive:!0},handler:({parser:e},t)=>{const r=t[0],n=r.body?r.body:[r],s=1===n.length&&rr.includes(n[0].type);return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:s,fromMathOp:!0,stack:!1,name:s?n[0].text:null,body:s?null:p(r)}},mathmlBuilder:ar});const ir={"∫":"\\int","∬":"\\iint","∭":"\\iiint","∮":"\\oint","∯":"\\oiint","∰":"\\oiiint","∱":"\\intclockwise","∲":"\\varointclockwise","⨌":"\\iiiint","⨍":"\\intbar","⨎":"\\intBar","⨏":"\\fint","⨒":"\\rppolint","⨓":"\\scpolint","⨕":"\\pointint","⨖":"\\sqint","⨗":"\\intlarhk","⨘":"\\intx","⨙":"\\intcap","⨚":"\\intcup"};c({type:"op",names:["\\arcsin","\\arccos","\\arctan","\\arctg","\\arcctg","\\arg","\\ch","\\cos","\\cosec","\\cosh","\\cot","\\cotg","\\coth","\\csc","\\ctg","\\cth","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\sh","\\sgn","\\tan","\\tanh","\\tg","\\th"],props:{numArgs:0},handler({parser:e,funcName:t}){const r=e.prevAtomType,n=e.gullet.future().text;return{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!1,stack:!1,isFollowedByDelimiter:Lt(n),needsLeadingSpace:r.length>0&&sr.includes(r),name:t}},mathmlBuilder:ar}),c({type:"op",names:["\\det","\\gcd","\\inf","\\lim","\\max","\\min","\\Pr","\\sup"],props:{numArgs:0},handler({parser:e,funcName:t}){const r=e.prevAtomType,n=e.gullet.future().text;return{type:"op",mode:e.mode,limits:!0,parentIsSupSub:!1,symbol:!1,stack:!1,isFollowedByDelimiter:Lt(n),needsLeadingSpace:r.length>0&&sr.includes(r),name:t}},mathmlBuilder:ar}),c({type:"op",names:["\\int","\\iint","\\iiint","\\iiiint","\\oint","\\oiint","\\oiiint","\\intclockwise","\\varointclockwise","\\intbar","\\intBar","\\fint","\\rppolint","\\scpolint","\\pointint","\\sqint","\\intlarhk","\\intx","\\intcap","\\intcup","∫","∬","∭","∮","∯","∰","∱","∲","⨌","⨍","⨎","⨏","⨒","⨓","⨕","⨖","⨗","⨘","⨙","⨚"],props:{numArgs:0},handler({parser:e,funcName:t}){let r=t;return 1===r.length&&(r=ir[r]),{type:"op",mode:e.mode,limits:!1,parentIsSupSub:!1,symbol:!0,stack:!1,name:r}},mathmlBuilder:ar});c({type:"operatorname",names:["\\operatorname@","\\operatornamewithlimits"],props:{numArgs:1,allowedInArgument:!0},handler:({parser:e,funcName:t},r)=>{const n=r[0],s=e.prevAtomType,o=e.gullet.future().text;return{type:"operatorname",mode:e.mode,body:p(n),alwaysHandleSupSub:"\\operatornamewithlimits"===t,limits:!1,parentIsSupSub:!1,isFollowedByDelimiter:Lt(o),needsLeadingSpace:s.length>0&&sr.includes(s)}},mathmlBuilder:(e,t)=>{let r,n=ie(e.body,t.withFont("mathrm")),s=!0;for(let e=0;ee.toText())).join("");n=[new T.TextNode(e)]}else if(1===n.length&&["mover","munder"].includes(n[0].type)&&("mi"===n[0].children[0].type||"mtext"===n[0].children[0].type)){if(n[0].children[0].type="mi",e.parentIsSupSub)return new T.MathNode("mrow",n);{const e=new T.MathNode("mo",[te("⁡","text")]);return T.newDocumentFragment([n[0],e])}}if(s?(r=new T.MathNode("mi",n),1===n[0].text.length&&r.setAttribute("mathvariant","normal")):r=new T.MathNode("mrow",n),!e.parentIsSupSub){const t=[r,new T.MathNode("mo",[te("⁡","text")])];if(e.needsLeadingSpace){const e=new T.MathNode("mspace");e.setAttribute("width","0.1667em"),t.unshift(e)}if(!e.isFollowedByDelimiter){const e=new T.MathNode("mspace");e.setAttribute("width","0.1667em"),t.push(e)}return T.newDocumentFragment(t)}return r}}),Ye("\\operatorname","\\@ifstar\\operatornamewithlimits\\operatorname@"),d({type:"ordgroup",mathmlBuilder:(e,t)=>ce(e.body,t,e.semisimple)}),c({type:"phantom",names:["\\phantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"phantom",mode:e.mode,body:p(r)}},mathmlBuilder:(e,t)=>{const r=ie(e.body,t);return new T.MathNode("mphantom",r)}}),c({type:"hphantom",names:["\\hphantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"hphantom",mode:e.mode,body:r}},mathmlBuilder:(e,t)=>{const r=ie(p(e.body),t),n=new T.MathNode("mphantom",r),s=new T.MathNode("mpadded",[n]);return s.setAttribute("height","0px"),s.setAttribute("depth","0px"),s}}),c({type:"vphantom",names:["\\vphantom"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>{const r=t[0];return{type:"vphantom",mode:e.mode,body:r}},mathmlBuilder:(e,t)=>{const r=ie(p(e.body),t),n=new T.MathNode("mphantom",r),s=new T.MathNode("mpadded",[n]);return s.setAttribute("width","0px"),s}}),c({type:"pmb",names:["\\pmb"],props:{numArgs:1,allowedInText:!0},handler:({parser:e},t)=>({type:"pmb",mode:e.mode,body:p(t[0])}),mathmlBuilder(e,t){const r=ie(e.body,t),n=N(r);return n.setAttribute("style","font-weight:bold"),n}});const cr=(e,t)=>{const r=t.withLevel(_e),n=new T.MathNode("mpadded",[de(e.body,r)]),s=qe(e.dy,t);return n.setAttribute("voffset",s.number+s.unit),s.number>0?n.style.padding=s.number+s.unit+" 0 0 0":n.style.padding="0 0 "+Math.abs(s.number)+s.unit+" 0",n};c({type:"raise",names:["\\raise","\\lower"],props:{numArgs:2,argTypes:["size","primitive"],primitive:!0},handler({parser:e,funcName:t},r){const n=Ie(r[0],"size").value;"\\lower"===t&&(n.number*=-1);const s=r[1];return{type:"raise",mode:e.mode,dy:n,body:s}},mathmlBuilder:cr}),c({type:"raise",names:["\\raisebox"],props:{numArgs:2,argTypes:["size","hbox"],allowedInText:!0},handler({parser:e,funcName:t},r){const n=Ie(r[0],"size").value,s=r[1];return{type:"raise",mode:e.mode,dy:n,body:s}},mathmlBuilder:cr}),c({type:"ref",names:["\\ref","\\eqref"],props:{numArgs:1,argTypes:["raw"]},handler:({parser:e,funcName:t},r)=>({type:"ref",mode:e.mode,funcName:t,string:r[0].string.replace(Yt,"")}),mathmlBuilder(e,t){const r="\\ref"===e.funcName?["tml-ref"]:["tml-ref","tml-eqref"];return new x("#"+e.string,r,null)}}),c({type:"reflect",names:["\\reflectbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:({parser:e},t)=>({type:"reflect",mode:e.mode,body:t[0]}),mathmlBuilder(e,t){const r=de(e.body,t);return r.style.transform="scaleX(-1)",r}}),c({type:"internal",names:["\\relax"],props:{numArgs:0,allowedInText:!0},handler:({parser:e})=>({type:"internal",mode:e.mode})}),c({type:"rule",names:["\\rule"],props:{numArgs:2,numOptionalArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["size","size","size"]},handler({parser:e},t,r){const n=r[0],s=Ie(t[0],"size"),o=Ie(t[1],"size");return{type:"rule",mode:e.mode,shift:n&&Ie(n,"size").value,width:s.value,height:o.value}},mathmlBuilder(e,t){const r=qe(e.width,t),n=qe(e.height,t),s=e.shift?qe(e.shift,t):{number:0,unit:"em"},o=t.color&&t.getColor()||"black",a=new T.MathNode("mspace");if(r.number>0&&n.number>0&&a.setAttribute("mathbackground",o),a.setAttribute("width",r.number+r.unit),a.setAttribute("height",n.number+n.unit),0===s.number)return a;const l=new T.MathNode("mpadded",[a]);return s.number>=0?l.setAttribute("height","+"+s.number+s.unit):(l.setAttribute("height",s.number+s.unit),l.setAttribute("depth","+"+-s.number+s.unit)),l.setAttribute("voffset",s.number+s.unit),l}});const dr={"\\tiny":.5,"\\sixptsize":.6,"\\Tiny":.6,"\\scriptsize":.7,"\\footnotesize":.8,"\\small":.9,"\\normalsize":1,"\\large":1.2,"\\Large":1.44,"\\LARGE":1.728,"\\huge":2.074,"\\Huge":2.488};c({type:"sizing",names:["\\tiny","\\sixptsize","\\Tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],props:{numArgs:0,allowedInText:!0},handler:({breakOnTokenText:e,funcName:t,parser:r},n)=>{r.settings.strict&&"math"===r.mode&&console.log(`Temml strict-mode warning: Command ${t} is invalid in math mode.`);const s=r.parseExpression(!1,e,!0);return{type:"sizing",mode:r.mode,funcName:t,body:s}},mathmlBuilder:(e,t)=>{const r=t.withFontSize(dr[e.funcName]),n=ie(e.body,r),s=N(n),o=(dr[e.funcName]/t.fontSize).toFixed(4);return s.setAttribute("mathsize",o+"em"),s}}),c({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:({parser:e},t,r)=>{let n=!1,s=!1;const o=r[0]&&Ie(r[0],"ordgroup");if(o){let e="";for(let t=0;t{const r=new T.MathNode("mpadded",[de(e.body,t)]);return e.smashHeight&&r.setAttribute("height","0px"),e.smashDepth&&r.setAttribute("depth","0px"),r}}),c({type:"sqrt",names:["\\sqrt"],props:{numArgs:1,numOptionalArgs:1},handler({parser:e},t,r){const n=r[0],s=t[0];return{type:"sqrt",mode:e.mode,body:s,index:n}},mathmlBuilder(e,t){const{body:r,index:n}=e;return n?new T.MathNode("mroot",[de(r,t),de(n,t.incrementLevel())]):new T.MathNode("msqrt",[de(r,t)])}});const mr={display:0,text:1,script:2,scriptscript:3},pr={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};c({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler({breakOnTokenText:e,funcName:t,parser:r},n){const s=r.parseExpression(!0,e,!0),o=t.slice(1,t.length-5);return{type:"styling",mode:r.mode,scriptLevel:o,body:s}},mathmlBuilder(e,t){const r=t.withLevel(mr[e.scriptLevel]),n=ie(e.body,r),s=N(n),o=pr[e.scriptLevel];return s.setAttribute("scriptlevel",o[0]),s.setAttribute("displaystyle",o[1]),s}});const ur=/^m(over|under|underover)$/;d({type:"supsub",mathmlBuilder(e,t){let r,n,s=!1,o=!1,a=!1,l=!1;e.base&&"horizBrace"===e.base.type&&(n=!!e.sup,n===e.base.isOver&&(s=!0,r=e.base.isOver)),!e.base||e.base.stack||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0,o=!e.base.symbol,a=o&&!e.isFollowedByDelimiter,l=e.base.needsLeadingSpace);const i=e.base&&e.base.stack?[de(e.base.body[0],t)]:[de(e.base,t)],c=t.inSubOrSup();if(e.sub){const r=de(e.sub,c);3===t.level&&r.setAttribute("scriptlevel","2"),i.push(r)}if(e.sup){const r=de(e.sup,c);3===t.level&&r.setAttribute("scriptlevel","2");const n="mrow"===r.type?r.children[0]:r;n&&"mo"===n.type&&n.classes.includes("tml-prime")&&e.base&&e.base.text&&"fF".indexOf(e.base.text)>-1&&n.classes.push("prime-pad"),i.push(r)}let d;if(s)d=r?"mover":"munder";else if(e.sub)if(e.sup){const r=e.base;d=r&&("op"===r.type&&r.limits||"multiscript"===r.type)&&(t.level===Ve||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(t.level===Ve||r.limits)?"munderover":"msubsup"}else{const r=e.base;d=r&&"op"===r.type&&r.limits&&(t.level===Ve||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.level===Ve)?"munder":"msub"}else{const r=e.base;d=r&&"op"===r.type&&r.limits&&(t.level===Ve||r.alwaysHandleSupSub)||r&&"operatorname"===r.type&&r.alwaysHandleSupSub&&(r.limits||t.level===Ve)?"mover":"msup"}let m=new T.MathNode(d,i);if(o){const e=new T.MathNode("mo",[te("⁡","text")]);if(l){const t=new T.MathNode("mspace");t.setAttribute("width","0.1667em"),m=T.newDocumentFragment([t,m,e])}else m=T.newDocumentFragment([m,e]);if(a){const e=new T.MathNode("mspace");e.setAttribute("width","0.1667em"),m.children.push(e)}}else ur.test(d)&&(m=new T.MathNode("mrow",[m]));return m}});const hr=["\\shortmid","\\nshortmid","\\shortparallel","\\nshortparallel","\\smallsetminus"],gr=["\\Rsh","\\Lsh","\\restriction"];d({type:"atom",mathmlBuilder(e,t){const r=new T.MathNode("mo",[te(e.text,e.mode)]);if("punct"===e.family)r.setAttribute("separator","true");else if("open"===e.family||"close"===e.family)"open"===e.family?(r.setAttribute("form","prefix"),r.setAttribute("stretchy","false")):"close"===e.family&&(r.setAttribute("form","postfix"),r.setAttribute("stretchy","false"));else if("\\mid"===e.text)r.setAttribute("lspace","0.22em"),r.setAttribute("rspace","0.22em"),r.setAttribute("stretchy","false");else if("rel"===e.family&&(e=>{if(1===e.length){const t=e.codePointAt(0);return 8591-1||e.indexOf("harpoon")>-1||gr.includes(e)})(e.text))r.setAttribute("stretchy","false");else if(hr.includes(e.text))r.setAttribute("mathsize","70%");else if(":"===e.text)r.attributes.lspace="0.2222em",r.attributes.rspace="0.2222em";else if(e.needsSpacing)return"bin"===e.family?new T.MathNode("mrow",[Oe(.222),r,Oe(.222)]):new T.MathNode("mrow",[Oe(.2778),r,Oe(.2778)]);return r}});const fr={mathbf:"bold",mathrm:"normal",textit:"italic",mathit:"italic",mathnormal:"italic",mathbb:"double-struck",mathcal:"script",mathfrak:"fraktur",mathscr:"script",mathsf:"sans-serif",mathtt:"monospace"},br=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsc"===t.fontFamily)return"normal";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"sans-serif-bold":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";const r=t.font;if(!r||"mathnormal"===r)return null;const n=e.mode;switch(r){case"mathit":case"greekItalic":return"italic";case"mathrm":{const t=e.text.codePointAt(0);return 9390,bold:e=>119743,italic:e=>119795,"bold-italic":e=>119847,script:e=>yr[e]||119899,"script-bold":e=>119951,fraktur:e=>wr[e]||120003,"fraktur-bold":e=>120107,"double-struck":e=>xr[e]||120055,"sans-serif":e=>120159,"sans-serif-bold":e=>120211,"sans-serif-italic":e=>120263,"sans-serif-bold-italic":e=>120380,monospace:e=>120367},lowerCaseLatin:{normal:e=>0,bold:e=>119737,italic:e=>"h"===e?8358:119789,"bold-italic":e=>119841,script:e=>yr[e]||119893,"script-bold":e=>119945,fraktur:e=>119997,"fraktur-bold":e=>120101,"double-struck":e=>120049,"sans-serif":e=>120153,"sans-serif-bold":e=>120205,"sans-serif-italic":e=>120257,"sans-serif-bold-italic":e=>120309,monospace:e=>120361},upperCaseGreek:{normal:e=>0,bold:e=>119575,italic:e=>119633,"bold-italic":e=>119575,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>119749,"sans-serif-bold":e=>119749,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>119807,monospace:e=>0},lowerCaseGreek:{normal:e=>0,bold:e=>119569,italic:e=>119627,"bold-italic":e=>"ϕ"===e?119678:119685,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>119743,"sans-serif-bold":e=>119743,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>119801,monospace:e=>0},varGreek:{normal:e=>0,bold:e=>kr[e]||-51,italic:e=>0,"bold-italic":e=>vr[e]||58,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>0,"sans-serif":e=>Ar[e]||116,"sans-serif-bold":e=>Ar[e]||116,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>Nr[e]||174,monospace:e=>0},numeral:{normal:e=>0,bold:e=>120734,italic:e=>0,"bold-italic":e=>0,script:e=>0,"script-bold":e=>0,fraktur:e=>0,"fraktur-bold":e=>0,"double-struck":e=>120744,"sans-serif":e=>120754,"sans-serif-bold":e=>120764,"sans-serif-italic":e=>0,"sans-serif-bold-italic":e=>0,monospace:e=>120774}}),Sr=(e,t)=>{const r=e.codePointAt(0),n=64{const n=new T.MathNode(r,[e]),s=new T.MathNode("mstyle",[n]);return s.style["font-style"]="italic",s.style["font-family"]="Cambria, 'Times New Roman', serif","bold-italic"===t&&(s.style["font-weight"]="bold"),s})(s,o,t);"normal"!==o&&(s.text=s.text.split("").map((e=>Sr(e,o))).join("")),a=new T.MathNode(t,[s])}else if("text"===e.mode)"normal"!==o&&(s.text=Sr(s.text,o)),a=new T.MathNode("mtext",[s]);else if(Br.has(e.text))a=new T.MathNode("mo",[s]),a.classes.push("tml-prime");else{const e=s.text;"italic"!==o&&(s.text=Sr(s.text,o)),a=new T.MathNode("mi",[s]),s.text===e&&Mr.test(e)&&a.setAttribute("mathvariant","italic")}return a}});const Cr={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},zr={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};d({type:"spacing",mathmlBuilder(t,r){let n;if(Object.prototype.hasOwnProperty.call(zr,t.text))n=new T.MathNode("mtext",[new T.TextNode(" ")]);else{if(!Object.prototype.hasOwnProperty.call(Cr,t.text))throw new e(`Unknown type of space "${t.text}"`);n=new T.MathNode("mo"),"\\nobreak"===t.text&&n.setAttribute("linebreak","nobreak")}return n}}),d({type:"tag"});const Er={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm","\\textsc":"textsc"},$r={"\\textbf":"textbf","\\textmd":"textmd"},Ir={"\\textit":"textit","\\textup":"textup"};c({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textsc","\\textbf","\\textmd","\\textit","\\textup","\\emph"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler({parser:e,funcName:t},r){const n=r[0];return{type:"text",mode:e.mode,body:p(n),font:t}},mathmlBuilder(e,t){const r=((e,t)=>{const r=e.font;return r?Er[r]?t.withTextFontFamily(Er[r]):$r[r]?t.withTextFontWeight($r[r]):"\\emph"===r?"textit"===t.fontShape?t.withTextFontShape("textup"):t.withTextFontShape("textit"):t.withTextFontShape(Ir[r]):t})(e,t),n=ce(e.body,r);return ne(n)}}),c({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler:({parser:e},t)=>({type:"vcenter",mode:e.mode,body:t[0]}),mathmlBuilder(e,t){const r=new T.MathNode("mtd",[de(e.body,t)]);r.style.padding="0";const n=new T.MathNode("mtr",[r]);return new T.MathNode("mtable",[n])}}),c({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler(t,r,n){throw new e("\\verb ended by end of line instead of matching delimiter")},mathmlBuilder(e,t){const r=new T.TextNode(Lr(e)),n=new T.MathNode("mtext",[r]);return n.setAttribute("mathvariant","monospace"),n}});const Lr=e=>e.body.replace(/ /g,e.star?"␣":" "),Fr=l,Dr="[ \r\n\t]",Gr=`(\\\\[a-zA-Z@]+)${Dr}*`,jr="[̀-ͯ]",Pr=new RegExp(`${jr}+$`),Rr=`(${Dr}+)|\\\\(\n|[ \r\t]+\n?)[ \r\t]*|([!-\\[\\]-‧‪-퟿豈-￿]${jr}*|[\ud800-\udbff][\udc00-\udfff]${jr}*|\\\\verb\\*([^]).*?\\4|\\\\verb([^*a-zA-Z]).*?\\5|${Gr}|\\\\[^\ud800-\udfff])`;class Ur{constructor(e,t){this.input=e,this.settings=t,this.tokenRegex=new RegExp(Rr,"g"),this.catcodes={"%":14,"~":13}}setCatcode(e,t){this.catcodes[e]=t}lex(){const t=this.input,r=this.tokenRegex.lastIndex;if(r===t.length)return new He("EOF",new Ue(this,r,r));const n=this.tokenRegex.exec(t);if(null===n||n.index!==r)throw new e(`Unexpected character: '${t[r]}'`,new He(t[r],new Ue(this,r,r+1)));const s=n[6]||n[3]||(n[2]?"\\ ":" ");if(14===this.catcodes[s]){const r=t.indexOf("\n",this.tokenRegex.lastIndex);if(-1===r){if(this.tokenRegex.lastIndex=t.length,this.settings.strict)throw new e("% comment has no terminating newline; LaTeX would fail because of commenting the end of math mode")}else this.tokenRegex.lastIndex=r+1;return this.lex()}return new He(s,new Ue(this,r,this.tokenRegex.lastIndex))}}class Hr{constructor(e={},t={}){this.current=t,this.builtins=e,this.undefStack=[]}beginGroup(){this.undefStack.push({})}endGroup(){if(0===this.undefStack.length)throw new e("Unbalanced namespace destruction: attempt to pop global namespace; please report this as a bug");const t=this.undefStack.pop();for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(void 0===t[e]?delete this.current[e]:this.current[e]=t[e])}has(e){return Object.prototype.hasOwnProperty.call(this.current,e)||Object.prototype.hasOwnProperty.call(this.builtins,e)}get(e){return Object.prototype.hasOwnProperty.call(this.current,e)?this.current[e]:this.builtins[e]}set(e,t,r=!1){if(r){for(let t=0;t0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{const t=this.undefStack[this.undefStack.length-1];t&&!Object.prototype.hasOwnProperty.call(t,e)&&(t[e]=this.current[e])}this.current[e]=t}}const Vr={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0};class _r{constructor(e,t,r){this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new Hr(Je,t.macros),this.mode=r,this.stack=[]}feed(e){this.lexer=new Ur(e,this.settings)}switchMode(e){this.mode=e}beginGroup(){this.macros.beginGroup()}endGroup(){this.macros.endGroup()}future(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]}popToken(){return this.future(),this.stack.pop()}pushToken(e){this.stack.push(e)}pushTokens(e){this.stack.push(...e)}scanArgument(e){let t,r,n;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken(),({tokens:n,end:r}=this.consumeArg(["]"]))}else({tokens:n,start:t,end:r}=this.consumeArg());return this.pushToken(new He("EOF",r.loc)),this.pushTokens(n),t.range(r,"")}consumeSpaces(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}}consumeArg(t){const r=[],n=t&&t.length>0;n||this.consumeSpaces();const s=this.future();let o,a=0,l=0;do{if(o=this.popToken(),r.push(o),"{"===o.text)++a;else if("}"===o.text){if(--a,-1===a)throw new e("Extra }",o)}else if("EOF"===o.text)throw new e("Unexpected end of input in a macro argument, expected '"+(t&&n?t[l]:"}")+"'",o);if(t&&n)if((0===a||1===a&&"{"===t[l])&&o.text===t[l]){if(++l,l===t.length){r.splice(-l,l);break}}else l=0}while(0!==a||n);return"{"===s.text&&"}"===r[r.length-1].text&&(r.pop(),r.shift()),r.reverse(),{tokens:r,start:s,end:o}}consumeArgs(t,r){if(r){if(r.length!==t+1)throw new e("The length of delimiters doesn't match the number of args!");const n=r[0];for(let t=0;tthis.settings.maxExpand)throw new e("Too many expansions: infinite loop or need to increase maxExpand setting");let o=s.tokens;const a=this.consumeArgs(s.numArgs,s.delimiters);if(s.numArgs){o=o.slice();for(let t=o.length-1;t>=0;--t){let r=o[t];if("#"===r.text){if(0===t)throw new e("Incomplete placeholder at end of macro body",r);if(r=o[--t],"#"===r.text)o.splice(t+1,1);else{if(!/^[1-9]$/.test(r.text))throw new e("Not a valid argument number",r);o.splice(t,2,...a[+r.text-1])}}}}return this.pushTokens(o),o.length}expandAfterFuture(){return this.expandOnce(),this.future()}expandNextToken(){for(;;)if(!1===this.expandOnce()){const e=this.stack.pop();return e.treatAsRelax&&(e.text="\\relax"),e}throw new Error}expandMacro(e){return this.macros.has(e)?this.expandTokens([new He(e)]):void 0}expandTokens(e){const t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;)if(!1===this.expandOnce(!0)){const e=this.stack.pop();e.treatAsRelax&&(e.noexpand=!1,e.treatAsRelax=!1),t.push(e)}return t}expandMacroAsText(e){const t=this.expandMacro(e);return t?t.map((e=>e.text)).join(""):t}_getExpansion(e){const t=this.macros.get(e);if(null==t)return t;if(1===e.length){const t=this.lexer.catcodes[e];if(null!=t&&13!==t)return}const r="function"==typeof t?t(this):t;if("string"==typeof r){let e=0;if(-1!==r.indexOf("#")){const t=r.replace(/##/g,"");for(;-1!==t.indexOf("#"+(e+1));)++e}const t=new Ur(r,this.settings),n=[];let s=t.lex();for(;"EOF"!==s.text;)n.push(s),s=t.lex();n.reverse();return{tokens:n,numArgs:e}}return r}isDefined(e){return this.macros.has(e)||Object.prototype.hasOwnProperty.call(Fr,e)||Object.prototype.hasOwnProperty.call($.math,e)||Object.prototype.hasOwnProperty.call($.text,e)||Object.prototype.hasOwnProperty.call(Vr,e)}isExpandable(e){const t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Object.prototype.hasOwnProperty.call(Fr,e)&&!Fr[e].primitive}}const Wr=/^[₊₋₌₍₎₀₁₂₃₄₅₆₇₈₉ₐₑₕᵢⱼₖₗₘₙₒₚᵣₛₜᵤᵥₓᵦᵧᵨᵩᵪ]/,Xr=Object.freeze({"₊":"+","₋":"-","₌":"=","₍":"(","₎":")","₀":"0","₁":"1","₂":"2","₃":"3","₄":"4","₅":"5","₆":"6","₇":"7","₈":"8","₉":"9","ₐ":"a","ₑ":"e","ₕ":"h","ᵢ":"i","ⱼ":"j","ₖ":"k","ₗ":"l","ₘ":"m","ₙ":"n","ₒ":"o","ₚ":"p","ᵣ":"r","ₛ":"s","ₜ":"t","ᵤ":"u","ᵥ":"v","ₓ":"x","ᵦ":"β","ᵧ":"γ","ᵨ":"ρ","ᵩ":"ϕ","ᵪ":"χ","⁺":"+","⁻":"-","⁼":"=","⁽":"(","⁾":")","⁰":"0","¹":"1","²":"2","³":"3","⁴":"4","⁵":"5","⁶":"6","⁷":"7","⁸":"8","⁹":"9","ᴬ":"A","ᴮ":"B","ᴰ":"D","ᴱ":"E","ᴳ":"G","ᴴ":"H","ᴵ":"I","ᴶ":"J","ᴷ":"K","ᴸ":"L","ᴹ":"M","ᴺ":"N","ᴼ":"O","ᴾ":"P","ᴿ":"R","ᵀ":"T","ᵁ":"U","ⱽ":"V","ᵂ":"W","ᵃ":"a","ᵇ":"b","ᶜ":"c","ᵈ":"d","ᵉ":"e","ᶠ":"f","ᵍ":"g","ʰ":"h","ⁱ":"i","ʲ":"j","ᵏ":"k","ˡ":"l","ᵐ":"m","ⁿ":"n","ᵒ":"o","ᵖ":"p","ʳ":"r","ˢ":"s","ᵗ":"t","ᵘ":"u","ᵛ":"v","ʷ":"w","ˣ":"x","ʸ":"y","ᶻ":"z","ᵝ":"β","ᵞ":"γ","ᵟ":"δ","ᵠ":"ϕ","ᵡ":"χ","ᶿ":"θ"}),Zr=Object.freeze({"𝒜":"A","ℬ":"B","𝒞":"C","𝒟":"D","ℰ":"E","ℱ":"F","𝒢":"G","ℋ":"H","ℐ":"I","𝒥":"J","𝒦":"K","ℒ":"L","ℳ":"M","𝒩":"N","𝒪":"O","𝒫":"P","𝒬":"Q","ℛ":"R","𝒮":"S","𝒯":"T","𝒰":"U","𝒱":"V","𝒲":"W","𝒳":"X","𝒴":"Y","𝒵":"Z"});var Yr={"́":{text:"\\'",math:"\\acute"},"̀":{text:"\\`",math:"\\grave"},"̈":{text:'\\"',math:"\\ddot"},"̃":{text:"\\~",math:"\\tilde"},"̄":{text:"\\=",math:"\\bar"},"̆":{text:"\\u",math:"\\breve"},"̌":{text:"\\v",math:"\\check"},"̂":{text:"\\^",math:"\\hat"},"̇":{text:"\\.",math:"\\dot"},"̊":{text:"\\r",math:"\\mathring"},"̋":{text:"\\H"},"̧":{text:"\\c"}},Jr={"á":"á","à":"à","ä":"ä","ǟ":"ǟ","ã":"ã","ā":"ā","ă":"ă","ắ":"ắ","ằ":"ằ","ẵ":"ẵ","ǎ":"ǎ","â":"â","ấ":"ấ","ầ":"ầ","ẫ":"ẫ","ȧ":"ȧ","ǡ":"ǡ","å":"å","ǻ":"ǻ","ḃ":"ḃ","ć":"ć","č":"č","ĉ":"ĉ","ċ":"ċ","ď":"ď","ḋ":"ḋ","é":"é","è":"è","ë":"ë","ẽ":"ẽ","ē":"ē","ḗ":"ḗ","ḕ":"ḕ","ĕ":"ĕ","ě":"ě","ê":"ê","ế":"ế","ề":"ề","ễ":"ễ","ė":"ė","ḟ":"ḟ","ǵ":"ǵ","ḡ":"ḡ","ğ":"ğ","ǧ":"ǧ","ĝ":"ĝ","ġ":"ġ","ḧ":"ḧ","ȟ":"ȟ","ĥ":"ĥ","ḣ":"ḣ","í":"í","ì":"ì","ï":"ï","ḯ":"ḯ","ĩ":"ĩ","ī":"ī","ĭ":"ĭ","ǐ":"ǐ","î":"î","ǰ":"ǰ","ĵ":"ĵ","ḱ":"ḱ","ǩ":"ǩ","ĺ":"ĺ","ľ":"ľ","ḿ":"ḿ","ṁ":"ṁ","ń":"ń","ǹ":"ǹ","ñ":"ñ","ň":"ň","ṅ":"ṅ","ó":"ó","ò":"ò","ö":"ö","ȫ":"ȫ","õ":"õ","ṍ":"ṍ","ṏ":"ṏ","ȭ":"ȭ","ō":"ō","ṓ":"ṓ","ṑ":"ṑ","ŏ":"ŏ","ǒ":"ǒ","ô":"ô","ố":"ố","ồ":"ồ","ỗ":"ỗ","ȯ":"ȯ","ȱ":"ȱ","ő":"ő","ṕ":"ṕ","ṗ":"ṗ","ŕ":"ŕ","ř":"ř","ṙ":"ṙ","ś":"ś","ṥ":"ṥ","š":"š","ṧ":"ṧ","ŝ":"ŝ","ṡ":"ṡ","ẗ":"ẗ","ť":"ť","ṫ":"ṫ","ú":"ú","ù":"ù","ü":"ü","ǘ":"ǘ","ǜ":"ǜ","ǖ":"ǖ","ǚ":"ǚ","ũ":"ũ","ṹ":"ṹ","ū":"ū","ṻ":"ṻ","ŭ":"ŭ","ǔ":"ǔ","û":"û","ů":"ů","ű":"ű","ṽ":"ṽ","ẃ":"ẃ","ẁ":"ẁ","ẅ":"ẅ","ŵ":"ŵ","ẇ":"ẇ","ẘ":"ẘ","ẍ":"ẍ","ẋ":"ẋ","ý":"ý","ỳ":"ỳ","ÿ":"ÿ","ỹ":"ỹ","ȳ":"ȳ","ŷ":"ŷ","ẏ":"ẏ","ẙ":"ẙ","ź":"ź","ž":"ž","ẑ":"ẑ","ż":"ż","Á":"Á","À":"À","Ä":"Ä","Ǟ":"Ǟ","Ã":"Ã","Ā":"Ā","Ă":"Ă","Ắ":"Ắ","Ằ":"Ằ","Ẵ":"Ẵ","Ǎ":"Ǎ","Â":"Â","Ấ":"Ấ","Ầ":"Ầ","Ẫ":"Ẫ","Ȧ":"Ȧ","Ǡ":"Ǡ","Å":"Å","Ǻ":"Ǻ","Ḃ":"Ḃ","Ć":"Ć","Č":"Č","Ĉ":"Ĉ","Ċ":"Ċ","Ď":"Ď","Ḋ":"Ḋ","É":"É","È":"È","Ë":"Ë","Ẽ":"Ẽ","Ē":"Ē","Ḗ":"Ḗ","Ḕ":"Ḕ","Ĕ":"Ĕ","Ě":"Ě","Ê":"Ê","Ế":"Ế","Ề":"Ề","Ễ":"Ễ","Ė":"Ė","Ḟ":"Ḟ","Ǵ":"Ǵ","Ḡ":"Ḡ","Ğ":"Ğ","Ǧ":"Ǧ","Ĝ":"Ĝ","Ġ":"Ġ","Ḧ":"Ḧ","Ȟ":"Ȟ","Ĥ":"Ĥ","Ḣ":"Ḣ","Í":"Í","Ì":"Ì","Ï":"Ï","Ḯ":"Ḯ","Ĩ":"Ĩ","Ī":"Ī","Ĭ":"Ĭ","Ǐ":"Ǐ","Î":"Î","İ":"İ","Ĵ":"Ĵ","Ḱ":"Ḱ","Ǩ":"Ǩ","Ĺ":"Ĺ","Ľ":"Ľ","Ḿ":"Ḿ","Ṁ":"Ṁ","Ń":"Ń","Ǹ":"Ǹ","Ñ":"Ñ","Ň":"Ň","Ṅ":"Ṅ","Ó":"Ó","Ò":"Ò","Ö":"Ö","Ȫ":"Ȫ","Õ":"Õ","Ṍ":"Ṍ","Ṏ":"Ṏ","Ȭ":"Ȭ","Ō":"Ō","Ṓ":"Ṓ","Ṑ":"Ṑ","Ŏ":"Ŏ","Ǒ":"Ǒ","Ô":"Ô","Ố":"Ố","Ồ":"Ồ","Ỗ":"Ỗ","Ȯ":"Ȯ","Ȱ":"Ȱ","Ő":"Ő","Ṕ":"Ṕ","Ṗ":"Ṗ","Ŕ":"Ŕ","Ř":"Ř","Ṙ":"Ṙ","Ś":"Ś","Ṥ":"Ṥ","Š":"Š","Ṧ":"Ṧ","Ŝ":"Ŝ","Ṡ":"Ṡ","Ť":"Ť","Ṫ":"Ṫ","Ú":"Ú","Ù":"Ù","Ü":"Ü","Ǘ":"Ǘ","Ǜ":"Ǜ","Ǖ":"Ǖ","Ǚ":"Ǚ","Ũ":"Ũ","Ṹ":"Ṹ","Ū":"Ū","Ṻ":"Ṻ","Ŭ":"Ŭ","Ǔ":"Ǔ","Û":"Û","Ů":"Ů","Ű":"Ű","Ṽ":"Ṽ","Ẃ":"Ẃ","Ẁ":"Ẁ","Ẅ":"Ẅ","Ŵ":"Ŵ","Ẇ":"Ẇ","Ẍ":"Ẍ","Ẋ":"Ẋ","Ý":"Ý","Ỳ":"Ỳ","Ÿ":"Ÿ","Ỹ":"Ỹ","Ȳ":"Ȳ","Ŷ":"Ŷ","Ẏ":"Ẏ","Ź":"Ź","Ž":"Ž","Ẑ":"Ẑ","Ż":"Ż","ά":"ά","ὰ":"ὰ","ᾱ":"ᾱ","ᾰ":"ᾰ","έ":"έ","ὲ":"ὲ","ή":"ή","ὴ":"ὴ","ί":"ί","ὶ":"ὶ","ϊ":"ϊ","ΐ":"ΐ","ῒ":"ῒ","ῑ":"ῑ","ῐ":"ῐ","ό":"ό","ὸ":"ὸ","ύ":"ύ","ὺ":"ὺ","ϋ":"ϋ","ΰ":"ΰ","ῢ":"ῢ","ῡ":"ῡ","ῠ":"ῠ","ώ":"ώ","ὼ":"ὼ","Ύ":"Ύ","Ὺ":"Ὺ","Ϋ":"Ϋ","Ῡ":"Ῡ","Ῠ":"Ῠ","Ώ":"Ώ","Ὼ":"Ὼ"};const Kr=["bin","op","open","punct","rel"],Qr=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/,en=/^ *\\text/;class tn{constructor(e,t,r=!1){this.mode="math",this.gullet=new _r(e,t,this.mode),this.settings=t,this.isPreamble=r,this.leftrightDepth=0,this.prevAtomType=""}expect(t,r=!0){if(this.fetch().text!==t)throw new e(`Expected '${t}', got '${this.fetch().text}'`,this.fetch());r&&this.consume()}consume(){this.nextToken=null}fetch(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken}switchMode(e){this.mode=e,this.gullet.switchMode(e)}parse(){this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");const e=this.parseExpression(!1);if(this.expect("EOF"),this.isPreamble){const e=Object.create(null);return Object.entries(this.gullet.macros.current).forEach((([t,r])=>{e[t]=r})),this.gullet.endGroup(),e}const t=this.gullet.macros.get("\\df@tag");return this.gullet.endGroup(),t&&(this.gullet.macros.current["\\df@tag"]=t),e}static get endOfExpression(){return["}","\\endgroup","\\end","\\right","\\endtoggle","&"]}subparse(e){const t=this.nextToken;this.consume(),this.gullet.pushToken(new He("}")),this.gullet.pushTokens(e);const r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r}parseExpression(e,t,r){const n=[];for(this.prevAtomType="";;){"math"===this.mode&&this.consumeSpaces();const s=this.fetch();if(-1!==tn.endOfExpression.indexOf(s.text))break;if(t&&s.text===t)break;if(r&&"\\middle"===s.text)break;if(e&&Fr[s.text]&&Fr[s.text].infix)break;const o=this.parseAtom(t);if(!o)break;"internal"!==o.type&&(n.push(o),this.prevAtomType="atom"===o.type?o.family:o.type)}return"text"===this.mode&&this.formLigatures(n),this.handleInfixNodes(n)}handleInfixNodes(t){let r,n=-1;for(let s=0;s=128||Pr.exec(r)))return null;if(this.settings.strict&&"math"===this.mode)throw new e(`Unicode text character "${r[0]}" used in math mode`,t);s={type:"textord",mode:"text",loc:Ue.range(t),text:r}}if(this.consume(),n)for(let r=0;r0&&s[0].type&&"array"===s[0].type&&s[0].addEqnNum)&&n.gullet.macros.get("\\df@tag")){if(!r.displayMode)throw new e("\\tag works only in display mode");n.gullet.feed("\\df@tag"),s=[{type:"tag",mode:"text",body:s,tag:n.parse()}]}return s},nn=[2,2,3,3];class sn{constructor(e){this.level=e.level,this.color=e.color,this.font=e.font||"",this.fontFamily=e.fontFamily||"",this.fontSize=e.fontSize||1,this.fontWeight=e.fontWeight||"",this.fontShape=e.fontShape||"",this.maxSize=e.maxSize}extend(e){const t={level:this.level,color:this.color,font:this.font,fontFamily:this.fontFamily,fontSize:this.fontSize,fontWeight:this.fontWeight,fontShape:this.fontShape,maxSize:this.maxSize};for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return new sn(t)}withLevel(e){return this.extend({level:e})}incrementLevel(){return this.extend({level:Math.min(this.level+1,3)})}inSubOrSup(){return this.extend({level:nn[this.level]})}withColor(e){return this.extend({color:e})}withFont(e){return this.extend({font:e})}withTextFontFamily(e){return this.extend({fontFamily:e,font:""})}withFontSize(e){return this.extend({fontSize:e})}withTextFontWeight(e){return this.extend({fontWeight:e,font:""})}withTextFontShape(e){return this.extend({fontShape:e,font:""})}getColor(){return this.color}}function on(e){const t={};let r=0;const n=document.getElementsByClassName("tml-eqn");for(let e of n)for(r+=1,e.setAttribute("id","tml-eqn-"+String(r));"mtable"!==e.tagName;){if(e.getElementsByClassName("tml-label").length>0){const n=e.attributes.id.value;t[n]=String(r);break}e=e.parentElement}const s=document.getElementsByClassName("tml-tageqn");for(const e of s){if(e.getElementsByClassName("tml-label").length>0){const r=e.getElementsByClassName("tml-tag");if(r.length>0){const n=e.attributes.id.value;t[n]=r[0].textContent}}}[...e.getElementsByClassName("tml-ref")].forEach((e=>{const r=e.getAttribute("href");let n=t[r.slice(1)];-1===e.className.indexOf("tml-eqref")?(n=n.replace(/^\(/,""),n=n.replace(/\)$/,"")):("("!==n.charAt(0)&&(n="("+n),")"!==n.slice(-1)&&(n+=")"));const s=document.createElementNS("http://www.w3.org/1998/Math/MathML","mtext");s.appendChild(document.createTextNode(n));const o=document.createElementNS("http://www.w3.org/1998/Math/MathML","math");o.appendChild(s),e.textContent="",e.appendChild(o)}))}const an=function(e,t,r){let n=r,s=0;const o=e.length;for(;ne.left.replace(/[-/\\^$*+?.()|[\]{}]/g,"\\$&"))).join("|")+")");for(;r=e.search(s),-1!==r;){r>0&&(n.push({type:"text",data:e.slice(0,r)}),e=e.slice(r));const s=t.findIndex((t=>e.startsWith(t.left)));if(r=an(t[s].right,e,t[s].left.length),-1===r)break;const o=e.slice(0,r+t[s].right.length),a=ln.test(o)?o:e.slice(t[s].left.length,r);n.push({type:"math",data:a,rawData:o,display:t[s].display}),e=e.slice(r+t[s].right.length)}return""!==e&&n.push({type:"text",data:e}),n}(t,r.delimiters);if(1===n.length&&"text"===n[0].type)return null;const s=document.createDocumentFragment();for(let t=0;t-1===e.indexOf(" "+t+" ")))&&un(n,t)}}};let hn=function(e,t,r={}){t.textContent="";const n="math"===t.tagName.toLowerCase();n&&(r.wrap="none");const s=gn(e,r);n||s.children.length>1?(t.textContent="",s.children.forEach((e=>{t.appendChild(e.toNode())}))):t.appendChild(s.toNode())};"undefined"!=typeof document&&"CSS1Compat"!==document.compatMode&&("undefined"!=typeof console&&console.warn("Warning: Temml doesn't work in quirks mode. Make sure your website has a suitable doctype."),hn=function(){throw new e("Temml doesn't work in quirks mode.")});const gn=function(t,r){const n=new a(r);try{const e=rn(t,n);return he(e,t,new sn({level:n.displayMode?Ve:_e,maxSize:n.maxSize}),n)}catch(r){return function(t,r,n){if(n.throwOnError||!(t instanceof e))throw t;const s=new y(["temml-error"],[new w(r+"\n\n"+t.toString())]);return s.style.color=n.errorColor,s.style.whiteSpace="pre-line",s}(r,t,n)}};return{version:"0.11.04",render:hn,renderToString:function(e,t){return gn(e,t).toMarkup()},renderMathInElement:function(e,t){if(!e)throw new Error("No element provided to render");const r={};for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&(r[e]=t[e]);r.fences?r.delimiters=(e=>{if("$"===e||"("===e)return dn[e];if("$+"===e||"(+"===e)return dn[e.slice(0,1)].concat(mn);return"ams"===e?mn:"all"===e?dn["("].concat(dn.$).concat(mn):cn})(r.fences):r.delimiters=r.delimiters||cn,r.ignoredTags=r.ignoredTags||["script","noscript","style","textarea","pre","code","option"],r.ignoredClasses=r.ignoredClasses||[],r.errorCallback=r.errorCallback||console.error,r.macros=r.macros||{},un(e,r),on(e)},postProcess:on,ParseError:e,definePreamble:function(e,t){const r=new a(t);if(r.macros={},!("string"==typeof e||e instanceof String))throw new TypeError("Temml can only parse string typed expression");const n=new tn(e,r,!0);delete n.gullet.macros.current["\\df@tag"];return n.parse()},__parse:function(e,t){const r=new a(t);return rn(e,r)},__renderToMathMLTree:gn,__defineSymbol:I,__defineMacro:Ye}}(); \ No newline at end of file diff --git a/content/.smd.ziggy-schema b/content/.smd.ziggy-schema new file mode 100644 index 00000000..4f224178 --- /dev/null +++ b/content/.smd.ziggy-schema @@ -0,0 +1,83 @@ +$ = Page + +/// This is the schema of a SuperMD document frontmatter. +/// +/// As a reminder, optionals ('?'), slices ('[]'), and dictionaries ('{:}') +/// can all be omitted, see https://ziggy-lang.io for more info. +/// +/// Note that while some fields here are defined as optional, +/// in SuperHTML they will instead be non-optional with a default value. +/// For example '?bytes' fields will default to an empty string, while +/// slices and dictionaries will instead default to empty containers. +/// +/// Make sure to read the SuperHTML reference to know how to properly +/// access these fields (https://zine-ssg.io/docs/superhtml/scripty/). +struct Page { + /// The title of this page. + title: ?bytes, + /// A short description of the page. + description: ?bytes, + /// The publishing date of this page. + date: Date, + /// The author(s) of this page. + authors: []bytes, + /// A list of tags for this page. + tags: []bytes, + /// Path to a layout file inside of the configured layouts directory. + layout: bytes, + /// Alternative paths where this content will also be made available. + /// + /// Note that the copies will be 100% identical to the main version, + /// if you need minor (or major) changes to other variants of this page, + /// you will want to use `alternatives`. + aliases: []bytes, + /// Alternative versions of this page, created by rendering the content + /// using a different layout and placed at a different URL. + /// + /// Useful for creating RSS feeds, for example. + alternatives: []Alternative, + /// In multilingual sites can be set to match corresponding pages that + /// don't have identical URLs. See 'i18n' docs for more info. + translation_key: ?bytes, + /// When set to true this file will be ignored when bulding the website, + /// unless the '--drafts' option has been passed to Zine. + draft: ?bool, + /// This property can only be set in the frontmatter of a section page + /// (i.e. a page named 'index.smd') to ensure that it will not contain + /// subsections. + /// + /// When set to true, any 'index.smd' subpage will trigger a build + /// error, requiring the user to reame the subpage to something else. + /// + /// As a reminder, `foo/bar/index.smd` and `foo/bar.smd` are equivalent + /// definitions with the only difference that the latter will not + /// define a new section. + /// + /// This property is useful for guaranteeing correct behavior from + /// `$page.leaves()` and other sectioning-related builtin functions. + forbid_subsections: ?bool, + /// User-defined properties that you can reference from SuperHTML via + /// '$page.custom' + custom: {:}any, + + union Date { + /// A RFC3339 date string, e.g. "1990/01/01" or "1990/01/01T00:00:00". + date: bytes, + /// An epoch UNIX timestamp (seconds), e.g. 631148400. + unix: int, + } + + struct Alternative { + /// A name that can be used to refer to this alternative version + /// of the page from SuperHTML. + name: bytes, + /// Path to a layout file inside of the configured layouts + /// directory. + layout: bytes, + /// Output path, relative to the current directory. Use an absolute + /// path to refer to the website's root directory. + output: bytes, + /// Useful when generating `` elements. + type: ?bytes, + } +} diff --git a/0.5.0/docs/.vuepress/config.ts b/content/0.5.0/docs/.vuepress/config.ts similarity index 100% rename from 0.5.0/docs/.vuepress/config.ts rename to content/0.5.0/docs/.vuepress/config.ts diff --git a/0.5.0/docs/.vuepress/dist/.DS_Store b/content/0.5.0/docs/.vuepress/dist/.DS_Store similarity index 100% rename from 0.5.0/docs/.vuepress/dist/.DS_Store rename to content/0.5.0/docs/.vuepress/dist/.DS_Store diff --git a/0.5.0/docs/.vuepress/dist/404.html b/content/0.5.0/docs/.vuepress/dist/404.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/404.html rename to content/0.5.0/docs/.vuepress/dist/404.html diff --git a/0.5.0/docs/.vuepress/dist/assets/404.html-60b35caa.js b/content/0.5.0/docs/.vuepress/dist/assets/404.html-60b35caa.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/404.html-60b35caa.js rename to content/0.5.0/docs/.vuepress/dist/assets/404.html-60b35caa.js diff --git a/0.5.0/docs/.vuepress/dist/assets/404.html-81dcbf04.js b/content/0.5.0/docs/.vuepress/dist/assets/404.html-81dcbf04.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/404.html-81dcbf04.js rename to content/0.5.0/docs/.vuepress/dist/assets/404.html-81dcbf04.js diff --git a/0.5.0/docs/.vuepress/dist/assets/api.html-664752d9.js b/content/0.5.0/docs/.vuepress/dist/assets/api.html-664752d9.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/api.html-664752d9.js rename to content/0.5.0/docs/.vuepress/dist/assets/api.html-664752d9.js diff --git a/0.5.0/docs/.vuepress/dist/assets/api.html-782c08dd.js b/content/0.5.0/docs/.vuepress/dist/assets/api.html-782c08dd.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/api.html-782c08dd.js rename to content/0.5.0/docs/.vuepress/dist/assets/api.html-782c08dd.js diff --git a/0.5.0/docs/.vuepress/dist/assets/app-fdd7d3c1.js b/content/0.5.0/docs/.vuepress/dist/assets/app-fdd7d3c1.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/app-fdd7d3c1.js rename to content/0.5.0/docs/.vuepress/dist/assets/app-fdd7d3c1.js diff --git a/0.5.0/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg b/content/0.5.0/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg rename to content/0.5.0/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg diff --git a/0.5.0/docs/.vuepress/dist/assets/buffer.html-b9ff57c6.js b/content/0.5.0/docs/.vuepress/dist/assets/buffer.html-b9ff57c6.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/buffer.html-b9ff57c6.js rename to content/0.5.0/docs/.vuepress/dist/assets/buffer.html-b9ff57c6.js diff --git a/0.5.0/docs/.vuepress/dist/assets/buffer.html-f0bbadca.js b/content/0.5.0/docs/.vuepress/dist/assets/buffer.html-f0bbadca.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/buffer.html-f0bbadca.js rename to content/0.5.0/docs/.vuepress/dist/assets/buffer.html-f0bbadca.js diff --git a/0.5.0/docs/.vuepress/dist/assets/building-installing.html-b942c545.js b/content/0.5.0/docs/.vuepress/dist/assets/building-installing.html-b942c545.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/building-installing.html-b942c545.js rename to content/0.5.0/docs/.vuepress/dist/assets/building-installing.html-b942c545.js diff --git a/0.5.0/docs/.vuepress/dist/assets/building-installing.html-f67292e3.js b/content/0.5.0/docs/.vuepress/dist/assets/building-installing.html-f67292e3.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/building-installing.html-f67292e3.js rename to content/0.5.0/docs/.vuepress/dist/assets/building-installing.html-f67292e3.js diff --git a/0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-caf3c7fd.js b/content/0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-caf3c7fd.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-caf3c7fd.js rename to content/0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-caf3c7fd.js diff --git a/0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-d15d2b69.js b/content/0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-d15d2b69.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-d15d2b69.js rename to content/0.5.0/docs/.vuepress/dist/assets/calling-native-code.html-d15d2b69.js diff --git a/0.5.0/docs/.vuepress/dist/assets/control-flow.html-369e24d4.js b/content/0.5.0/docs/.vuepress/dist/assets/control-flow.html-369e24d4.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/control-flow.html-369e24d4.js rename to content/0.5.0/docs/.vuepress/dist/assets/control-flow.html-369e24d4.js diff --git a/0.5.0/docs/.vuepress/dist/assets/control-flow.html-b4dad974.js b/content/0.5.0/docs/.vuepress/dist/assets/control-flow.html-b4dad974.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/control-flow.html-b4dad974.js rename to content/0.5.0/docs/.vuepress/dist/assets/control-flow.html-b4dad974.js diff --git a/0.5.0/docs/.vuepress/dist/assets/crypto.html-03686c71.js b/content/0.5.0/docs/.vuepress/dist/assets/crypto.html-03686c71.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/crypto.html-03686c71.js rename to content/0.5.0/docs/.vuepress/dist/assets/crypto.html-03686c71.js diff --git a/0.5.0/docs/.vuepress/dist/assets/crypto.html-3dc6139a.js b/content/0.5.0/docs/.vuepress/dist/assets/crypto.html-3dc6139a.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/crypto.html-3dc6139a.js rename to content/0.5.0/docs/.vuepress/dist/assets/crypto.html-3dc6139a.js diff --git a/0.5.0/docs/.vuepress/dist/assets/debug.html-1a8ed36d.js b/content/0.5.0/docs/.vuepress/dist/assets/debug.html-1a8ed36d.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/debug.html-1a8ed36d.js rename to content/0.5.0/docs/.vuepress/dist/assets/debug.html-1a8ed36d.js diff --git a/0.5.0/docs/.vuepress/dist/assets/debug.html-7d9c655f.js b/content/0.5.0/docs/.vuepress/dist/assets/debug.html-7d9c655f.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/debug.html-7d9c655f.js rename to content/0.5.0/docs/.vuepress/dist/assets/debug.html-7d9c655f.js diff --git a/0.5.0/docs/.vuepress/dist/assets/enums.html-88a6d059.js b/content/0.5.0/docs/.vuepress/dist/assets/enums.html-88a6d059.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/enums.html-88a6d059.js rename to content/0.5.0/docs/.vuepress/dist/assets/enums.html-88a6d059.js diff --git a/0.5.0/docs/.vuepress/dist/assets/enums.html-fac67bba.js b/content/0.5.0/docs/.vuepress/dist/assets/enums.html-fac67bba.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/enums.html-fac67bba.js rename to content/0.5.0/docs/.vuepress/dist/assets/enums.html-fac67bba.js diff --git a/0.5.0/docs/.vuepress/dist/assets/errors.html-223a5da6.js b/content/0.5.0/docs/.vuepress/dist/assets/errors.html-223a5da6.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/errors.html-223a5da6.js rename to content/0.5.0/docs/.vuepress/dist/assets/errors.html-223a5da6.js diff --git a/0.5.0/docs/.vuepress/dist/assets/errors.html-cac16163.js b/content/0.5.0/docs/.vuepress/dist/assets/errors.html-cac16163.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/errors.html-cac16163.js rename to content/0.5.0/docs/.vuepress/dist/assets/errors.html-cac16163.js diff --git a/0.5.0/docs/.vuepress/dist/assets/ffi.html-1270c42a.js b/content/0.5.0/docs/.vuepress/dist/assets/ffi.html-1270c42a.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/ffi.html-1270c42a.js rename to content/0.5.0/docs/.vuepress/dist/assets/ffi.html-1270c42a.js diff --git a/0.5.0/docs/.vuepress/dist/assets/ffi.html-4b7e094a.js b/content/0.5.0/docs/.vuepress/dist/assets/ffi.html-4b7e094a.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/ffi.html-4b7e094a.js rename to content/0.5.0/docs/.vuepress/dist/assets/ffi.html-4b7e094a.js diff --git a/0.5.0/docs/.vuepress/dist/assets/ffi.html-8f169169.js b/content/0.5.0/docs/.vuepress/dist/assets/ffi.html-8f169169.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/ffi.html-8f169169.js rename to content/0.5.0/docs/.vuepress/dist/assets/ffi.html-8f169169.js diff --git a/0.5.0/docs/.vuepress/dist/assets/ffi.html-a3573afd.js b/content/0.5.0/docs/.vuepress/dist/assets/ffi.html-a3573afd.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/ffi.html-a3573afd.js rename to content/0.5.0/docs/.vuepress/dist/assets/ffi.html-a3573afd.js diff --git a/0.5.0/docs/.vuepress/dist/assets/fibers.html-128da3b2.js b/content/0.5.0/docs/.vuepress/dist/assets/fibers.html-128da3b2.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/fibers.html-128da3b2.js rename to content/0.5.0/docs/.vuepress/dist/assets/fibers.html-128da3b2.js diff --git a/0.5.0/docs/.vuepress/dist/assets/fibers.html-26ad6db0.js b/content/0.5.0/docs/.vuepress/dist/assets/fibers.html-26ad6db0.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/fibers.html-26ad6db0.js rename to content/0.5.0/docs/.vuepress/dist/assets/fibers.html-26ad6db0.js diff --git a/0.5.0/docs/.vuepress/dist/assets/fibers.html-4212fab3.js b/content/0.5.0/docs/.vuepress/dist/assets/fibers.html-4212fab3.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/fibers.html-4212fab3.js rename to content/0.5.0/docs/.vuepress/dist/assets/fibers.html-4212fab3.js diff --git a/0.5.0/docs/.vuepress/dist/assets/fibers.html-cb2e6732.js b/content/0.5.0/docs/.vuepress/dist/assets/fibers.html-cb2e6732.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/fibers.html-cb2e6732.js rename to content/0.5.0/docs/.vuepress/dist/assets/fibers.html-cb2e6732.js diff --git a/0.5.0/docs/.vuepress/dist/assets/fs.html-88f986ed.js b/content/0.5.0/docs/.vuepress/dist/assets/fs.html-88f986ed.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/fs.html-88f986ed.js rename to content/0.5.0/docs/.vuepress/dist/assets/fs.html-88f986ed.js diff --git a/0.5.0/docs/.vuepress/dist/assets/fs.html-e51b11ec.js b/content/0.5.0/docs/.vuepress/dist/assets/fs.html-e51b11ec.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/fs.html-e51b11ec.js rename to content/0.5.0/docs/.vuepress/dist/assets/fs.html-e51b11ec.js diff --git a/0.5.0/docs/.vuepress/dist/assets/functions.html-950ab70b.js b/content/0.5.0/docs/.vuepress/dist/assets/functions.html-950ab70b.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/functions.html-950ab70b.js rename to content/0.5.0/docs/.vuepress/dist/assets/functions.html-950ab70b.js diff --git a/0.5.0/docs/.vuepress/dist/assets/functions.html-c473e66c.js b/content/0.5.0/docs/.vuepress/dist/assets/functions.html-c473e66c.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/functions.html-c473e66c.js rename to content/0.5.0/docs/.vuepress/dist/assets/functions.html-c473e66c.js diff --git a/0.5.0/docs/.vuepress/dist/assets/gc.html-586473d4.js b/content/0.5.0/docs/.vuepress/dist/assets/gc.html-586473d4.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/gc.html-586473d4.js rename to content/0.5.0/docs/.vuepress/dist/assets/gc.html-586473d4.js diff --git a/0.5.0/docs/.vuepress/dist/assets/gc.html-c870a1dc.js b/content/0.5.0/docs/.vuepress/dist/assets/gc.html-c870a1dc.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/gc.html-c870a1dc.js rename to content/0.5.0/docs/.vuepress/dist/assets/gc.html-c870a1dc.js diff --git a/0.5.0/docs/.vuepress/dist/assets/import-export.html-43f7b872.js b/content/0.5.0/docs/.vuepress/dist/assets/import-export.html-43f7b872.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/import-export.html-43f7b872.js rename to content/0.5.0/docs/.vuepress/dist/assets/import-export.html-43f7b872.js diff --git a/0.5.0/docs/.vuepress/dist/assets/import-export.html-eb59ce91.js b/content/0.5.0/docs/.vuepress/dist/assets/import-export.html-eb59ce91.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/import-export.html-eb59ce91.js rename to content/0.5.0/docs/.vuepress/dist/assets/import-export.html-eb59ce91.js diff --git a/0.5.0/docs/.vuepress/dist/assets/index.html-2ec4ef30.js b/content/0.5.0/docs/.vuepress/dist/assets/index.html-2ec4ef30.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/index.html-2ec4ef30.js rename to content/0.5.0/docs/.vuepress/dist/assets/index.html-2ec4ef30.js diff --git a/0.5.0/docs/.vuepress/dist/assets/index.html-7de7ebeb.js b/content/0.5.0/docs/.vuepress/dist/assets/index.html-7de7ebeb.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/index.html-7de7ebeb.js rename to content/0.5.0/docs/.vuepress/dist/assets/index.html-7de7ebeb.js diff --git a/0.5.0/docs/.vuepress/dist/assets/index.html-9d14688f.js b/content/0.5.0/docs/.vuepress/dist/assets/index.html-9d14688f.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/index.html-9d14688f.js rename to content/0.5.0/docs/.vuepress/dist/assets/index.html-9d14688f.js diff --git a/0.5.0/docs/.vuepress/dist/assets/index.html-c96e7c71.js b/content/0.5.0/docs/.vuepress/dist/assets/index.html-c96e7c71.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/index.html-c96e7c71.js rename to content/0.5.0/docs/.vuepress/dist/assets/index.html-c96e7c71.js diff --git a/0.5.0/docs/.vuepress/dist/assets/index.html-cfa1c43b.js b/content/0.5.0/docs/.vuepress/dist/assets/index.html-cfa1c43b.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/index.html-cfa1c43b.js rename to content/0.5.0/docs/.vuepress/dist/assets/index.html-cfa1c43b.js diff --git a/0.5.0/docs/.vuepress/dist/assets/index.html-ee39a618.js b/content/0.5.0/docs/.vuepress/dist/assets/index.html-ee39a618.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/index.html-ee39a618.js rename to content/0.5.0/docs/.vuepress/dist/assets/index.html-ee39a618.js diff --git a/0.5.0/docs/.vuepress/dist/assets/io.html-5afd2865.js b/content/0.5.0/docs/.vuepress/dist/assets/io.html-5afd2865.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/io.html-5afd2865.js rename to content/0.5.0/docs/.vuepress/dist/assets/io.html-5afd2865.js diff --git a/0.5.0/docs/.vuepress/dist/assets/io.html-66f837f2.js b/content/0.5.0/docs/.vuepress/dist/assets/io.html-66f837f2.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/io.html-66f837f2.js rename to content/0.5.0/docs/.vuepress/dist/assets/io.html-66f837f2.js diff --git a/0.5.0/docs/.vuepress/dist/assets/lists.html-0dfb9f88.js b/content/0.5.0/docs/.vuepress/dist/assets/lists.html-0dfb9f88.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/lists.html-0dfb9f88.js rename to content/0.5.0/docs/.vuepress/dist/assets/lists.html-0dfb9f88.js diff --git a/0.5.0/docs/.vuepress/dist/assets/lists.html-f2cb681c.js b/content/0.5.0/docs/.vuepress/dist/assets/lists.html-f2cb681c.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/lists.html-f2cb681c.js rename to content/0.5.0/docs/.vuepress/dist/assets/lists.html-f2cb681c.js diff --git a/0.5.0/docs/.vuepress/dist/assets/maps.html-5baae6ee.js b/content/0.5.0/docs/.vuepress/dist/assets/maps.html-5baae6ee.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/maps.html-5baae6ee.js rename to content/0.5.0/docs/.vuepress/dist/assets/maps.html-5baae6ee.js diff --git a/0.5.0/docs/.vuepress/dist/assets/maps.html-e954b557.js b/content/0.5.0/docs/.vuepress/dist/assets/maps.html-e954b557.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/maps.html-e954b557.js rename to content/0.5.0/docs/.vuepress/dist/assets/maps.html-e954b557.js diff --git a/0.5.0/docs/.vuepress/dist/assets/math.html-724dee99.js b/content/0.5.0/docs/.vuepress/dist/assets/math.html-724dee99.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/math.html-724dee99.js rename to content/0.5.0/docs/.vuepress/dist/assets/math.html-724dee99.js diff --git a/0.5.0/docs/.vuepress/dist/assets/math.html-e1a94a97.js b/content/0.5.0/docs/.vuepress/dist/assets/math.html-e1a94a97.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/math.html-e1a94a97.js rename to content/0.5.0/docs/.vuepress/dist/assets/math.html-e1a94a97.js diff --git a/0.5.0/docs/.vuepress/dist/assets/null-safety.html-225d7a97.js b/content/0.5.0/docs/.vuepress/dist/assets/null-safety.html-225d7a97.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/null-safety.html-225d7a97.js rename to content/0.5.0/docs/.vuepress/dist/assets/null-safety.html-225d7a97.js diff --git a/0.5.0/docs/.vuepress/dist/assets/null-safety.html-78eef157.js b/content/0.5.0/docs/.vuepress/dist/assets/null-safety.html-78eef157.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/null-safety.html-78eef157.js rename to content/0.5.0/docs/.vuepress/dist/assets/null-safety.html-78eef157.js diff --git a/0.5.0/docs/.vuepress/dist/assets/objects.html-d3ba5e5e.js b/content/0.5.0/docs/.vuepress/dist/assets/objects.html-d3ba5e5e.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/objects.html-d3ba5e5e.js rename to content/0.5.0/docs/.vuepress/dist/assets/objects.html-d3ba5e5e.js diff --git a/0.5.0/docs/.vuepress/dist/assets/objects.html-fbce603d.js b/content/0.5.0/docs/.vuepress/dist/assets/objects.html-fbce603d.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/objects.html-fbce603d.js rename to content/0.5.0/docs/.vuepress/dist/assets/objects.html-fbce603d.js diff --git a/0.5.0/docs/.vuepress/dist/assets/os.html-401e6994.js b/content/0.5.0/docs/.vuepress/dist/assets/os.html-401e6994.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/os.html-401e6994.js rename to content/0.5.0/docs/.vuepress/dist/assets/os.html-401e6994.js diff --git a/0.5.0/docs/.vuepress/dist/assets/os.html-c27c3a80.js b/content/0.5.0/docs/.vuepress/dist/assets/os.html-c27c3a80.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/os.html-c27c3a80.js rename to content/0.5.0/docs/.vuepress/dist/assets/os.html-c27c3a80.js diff --git a/0.5.0/docs/.vuepress/dist/assets/patterns.html-13199373.js b/content/0.5.0/docs/.vuepress/dist/assets/patterns.html-13199373.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/patterns.html-13199373.js rename to content/0.5.0/docs/.vuepress/dist/assets/patterns.html-13199373.js diff --git a/0.5.0/docs/.vuepress/dist/assets/patterns.html-25e56ec1.js b/content/0.5.0/docs/.vuepress/dist/assets/patterns.html-25e56ec1.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/patterns.html-25e56ec1.js rename to content/0.5.0/docs/.vuepress/dist/assets/patterns.html-25e56ec1.js diff --git a/0.5.0/docs/.vuepress/dist/assets/protocols.html-add388e7.js b/content/0.5.0/docs/.vuepress/dist/assets/protocols.html-add388e7.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/protocols.html-add388e7.js rename to content/0.5.0/docs/.vuepress/dist/assets/protocols.html-add388e7.js diff --git a/0.5.0/docs/.vuepress/dist/assets/protocols.html-cf22dabc.js b/content/0.5.0/docs/.vuepress/dist/assets/protocols.html-cf22dabc.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/protocols.html-cf22dabc.js rename to content/0.5.0/docs/.vuepress/dist/assets/protocols.html-cf22dabc.js diff --git a/0.5.0/docs/.vuepress/dist/assets/ranges.html-1ec45949.js b/content/0.5.0/docs/.vuepress/dist/assets/ranges.html-1ec45949.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/ranges.html-1ec45949.js rename to content/0.5.0/docs/.vuepress/dist/assets/ranges.html-1ec45949.js diff --git a/0.5.0/docs/.vuepress/dist/assets/ranges.html-63af24a7.js b/content/0.5.0/docs/.vuepress/dist/assets/ranges.html-63af24a7.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/ranges.html-63af24a7.js rename to content/0.5.0/docs/.vuepress/dist/assets/ranges.html-63af24a7.js diff --git a/0.5.0/docs/.vuepress/dist/assets/repl.html-3a352999.js b/content/0.5.0/docs/.vuepress/dist/assets/repl.html-3a352999.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/repl.html-3a352999.js rename to content/0.5.0/docs/.vuepress/dist/assets/repl.html-3a352999.js diff --git a/0.5.0/docs/.vuepress/dist/assets/repl.html-e56c24b3.js b/content/0.5.0/docs/.vuepress/dist/assets/repl.html-e56c24b3.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/repl.html-e56c24b3.js rename to content/0.5.0/docs/.vuepress/dist/assets/repl.html-e56c24b3.js diff --git a/0.5.0/docs/.vuepress/dist/assets/scope.html-788dec71.js b/content/0.5.0/docs/.vuepress/dist/assets/scope.html-788dec71.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/scope.html-788dec71.js rename to content/0.5.0/docs/.vuepress/dist/assets/scope.html-788dec71.js diff --git a/0.5.0/docs/.vuepress/dist/assets/scope.html-e02d0c59.js b/content/0.5.0/docs/.vuepress/dist/assets/scope.html-e02d0c59.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/scope.html-e02d0c59.js rename to content/0.5.0/docs/.vuepress/dist/assets/scope.html-e02d0c59.js diff --git a/0.5.0/docs/.vuepress/dist/assets/serialize.html-a2b2f5c7.js b/content/0.5.0/docs/.vuepress/dist/assets/serialize.html-a2b2f5c7.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/serialize.html-a2b2f5c7.js rename to content/0.5.0/docs/.vuepress/dist/assets/serialize.html-a2b2f5c7.js diff --git a/0.5.0/docs/.vuepress/dist/assets/serialize.html-b6cab62f.js b/content/0.5.0/docs/.vuepress/dist/assets/serialize.html-b6cab62f.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/serialize.html-b6cab62f.js rename to content/0.5.0/docs/.vuepress/dist/assets/serialize.html-b6cab62f.js diff --git a/0.5.0/docs/.vuepress/dist/assets/std.html-1f14ef55.js b/content/0.5.0/docs/.vuepress/dist/assets/std.html-1f14ef55.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/std.html-1f14ef55.js rename to content/0.5.0/docs/.vuepress/dist/assets/std.html-1f14ef55.js diff --git a/0.5.0/docs/.vuepress/dist/assets/std.html-28946dd8.js b/content/0.5.0/docs/.vuepress/dist/assets/std.html-28946dd8.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/std.html-28946dd8.js rename to content/0.5.0/docs/.vuepress/dist/assets/std.html-28946dd8.js diff --git a/0.5.0/docs/.vuepress/dist/assets/strings.html-19211e8e.js b/content/0.5.0/docs/.vuepress/dist/assets/strings.html-19211e8e.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/strings.html-19211e8e.js rename to content/0.5.0/docs/.vuepress/dist/assets/strings.html-19211e8e.js diff --git a/0.5.0/docs/.vuepress/dist/assets/strings.html-3eee8ada.js b/content/0.5.0/docs/.vuepress/dist/assets/strings.html-3eee8ada.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/strings.html-3eee8ada.js rename to content/0.5.0/docs/.vuepress/dist/assets/strings.html-3eee8ada.js diff --git a/0.5.0/docs/.vuepress/dist/assets/style-a4c8bf56.css b/content/0.5.0/docs/.vuepress/dist/assets/style-a4c8bf56.css similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/style-a4c8bf56.css rename to content/0.5.0/docs/.vuepress/dist/assets/style-a4c8bf56.css diff --git a/0.5.0/docs/.vuepress/dist/assets/syntax.html-1d9e70a0.js b/content/0.5.0/docs/.vuepress/dist/assets/syntax.html-1d9e70a0.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/syntax.html-1d9e70a0.js rename to content/0.5.0/docs/.vuepress/dist/assets/syntax.html-1d9e70a0.js diff --git a/0.5.0/docs/.vuepress/dist/assets/syntax.html-97d67af0.js b/content/0.5.0/docs/.vuepress/dist/assets/syntax.html-97d67af0.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/syntax.html-97d67af0.js rename to content/0.5.0/docs/.vuepress/dist/assets/syntax.html-97d67af0.js diff --git a/0.5.0/docs/.vuepress/dist/assets/types.html-7d2c7042.js b/content/0.5.0/docs/.vuepress/dist/assets/types.html-7d2c7042.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/types.html-7d2c7042.js rename to content/0.5.0/docs/.vuepress/dist/assets/types.html-7d2c7042.js diff --git a/0.5.0/docs/.vuepress/dist/assets/types.html-f2d7ed88.js b/content/0.5.0/docs/.vuepress/dist/assets/types.html-f2d7ed88.js similarity index 100% rename from 0.5.0/docs/.vuepress/dist/assets/types.html-f2d7ed88.js rename to content/0.5.0/docs/.vuepress/dist/assets/types.html-f2d7ed88.js diff --git a/0.5.0/docs/.vuepress/dist/buzz.wasm b/content/0.5.0/docs/.vuepress/dist/buzz.wasm similarity index 100% rename from 0.5.0/docs/.vuepress/dist/buzz.wasm rename to content/0.5.0/docs/.vuepress/dist/buzz.wasm diff --git a/0.5.0/docs/.vuepress/dist/favicon.ico b/content/0.5.0/docs/.vuepress/dist/favicon.ico similarity index 100% rename from 0.5.0/docs/.vuepress/dist/favicon.ico rename to content/0.5.0/docs/.vuepress/dist/favicon.ico diff --git a/0.5.0/docs/.vuepress/dist/guide/building-installing.html b/content/0.5.0/docs/.vuepress/dist/guide/building-installing.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/building-installing.html rename to content/0.5.0/docs/.vuepress/dist/guide/building-installing.html diff --git a/0.5.0/docs/.vuepress/dist/guide/calling-native-code.html b/content/0.5.0/docs/.vuepress/dist/guide/calling-native-code.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/calling-native-code.html rename to content/0.5.0/docs/.vuepress/dist/guide/calling-native-code.html diff --git a/0.5.0/docs/.vuepress/dist/guide/control-flow.html b/content/0.5.0/docs/.vuepress/dist/guide/control-flow.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/control-flow.html rename to content/0.5.0/docs/.vuepress/dist/guide/control-flow.html diff --git a/0.5.0/docs/.vuepress/dist/guide/enums.html b/content/0.5.0/docs/.vuepress/dist/guide/enums.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/enums.html rename to content/0.5.0/docs/.vuepress/dist/guide/enums.html diff --git a/0.5.0/docs/.vuepress/dist/guide/errors.html b/content/0.5.0/docs/.vuepress/dist/guide/errors.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/errors.html rename to content/0.5.0/docs/.vuepress/dist/guide/errors.html diff --git a/0.5.0/docs/.vuepress/dist/guide/ffi.html b/content/0.5.0/docs/.vuepress/dist/guide/ffi.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/ffi.html rename to content/0.5.0/docs/.vuepress/dist/guide/ffi.html diff --git a/0.5.0/docs/.vuepress/dist/guide/fibers.html b/content/0.5.0/docs/.vuepress/dist/guide/fibers.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/fibers.html rename to content/0.5.0/docs/.vuepress/dist/guide/fibers.html diff --git a/0.5.0/docs/.vuepress/dist/guide/functions.html b/content/0.5.0/docs/.vuepress/dist/guide/functions.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/functions.html rename to content/0.5.0/docs/.vuepress/dist/guide/functions.html diff --git a/0.5.0/docs/.vuepress/dist/guide/import-export.html b/content/0.5.0/docs/.vuepress/dist/guide/import-export.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/import-export.html rename to content/0.5.0/docs/.vuepress/dist/guide/import-export.html diff --git a/0.5.0/docs/.vuepress/dist/guide/index.html b/content/0.5.0/docs/.vuepress/dist/guide/index.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/index.html rename to content/0.5.0/docs/.vuepress/dist/guide/index.html diff --git a/0.5.0/docs/.vuepress/dist/guide/null-safety.html b/content/0.5.0/docs/.vuepress/dist/guide/null-safety.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/null-safety.html rename to content/0.5.0/docs/.vuepress/dist/guide/null-safety.html diff --git a/0.5.0/docs/.vuepress/dist/guide/objects.html b/content/0.5.0/docs/.vuepress/dist/guide/objects.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/objects.html rename to content/0.5.0/docs/.vuepress/dist/guide/objects.html diff --git a/0.5.0/docs/.vuepress/dist/guide/protocols.html b/content/0.5.0/docs/.vuepress/dist/guide/protocols.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/protocols.html rename to content/0.5.0/docs/.vuepress/dist/guide/protocols.html diff --git a/0.5.0/docs/.vuepress/dist/guide/scope.html b/content/0.5.0/docs/.vuepress/dist/guide/scope.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/scope.html rename to content/0.5.0/docs/.vuepress/dist/guide/scope.html diff --git a/0.5.0/docs/.vuepress/dist/guide/syntax.html b/content/0.5.0/docs/.vuepress/dist/guide/syntax.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/syntax.html rename to content/0.5.0/docs/.vuepress/dist/guide/syntax.html diff --git a/0.5.0/docs/.vuepress/dist/guide/types.html b/content/0.5.0/docs/.vuepress/dist/guide/types.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/guide/types.html rename to content/0.5.0/docs/.vuepress/dist/guide/types.html diff --git a/content/0.5.0/docs/.vuepress/dist/index.html b/content/0.5.0/docs/.vuepress/dist/index.html new file mode 100644 index 00000000..e79984bb --- /dev/null +++ b/content/0.5.0/docs/.vuepress/dist/index.html @@ -0,0 +1,303 @@ + + + + + + + + + + + + buzz + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
+ buzz +

buzz

+

A small/lightweight statically typed scripting language

+

+ Guide + Reference + Try it + + Latest release + + + open in new window + + +

+
+ +
+
+

Statically typed

+

Find out bugs in your IDE rather than production

+
+
+

JIT compiled

+

Uses MIR, a fast and lightweight JIT compiler

+
+
+

Unambiguous

+

No implicit behavior or unexpected type coercion

+
+
+

Small in size and complexity

+

Does not take much space on your drive or in your mind

+
+
+

Interoperability with C

+

Call C functions easily with FFIs and embed buzz with its C API

+
+
+

Fibers

+

Single threaded cooperative multitasking

+
+
+ +
+
+
+
+              
+                import "std";
+
+fun fibonacci(n: int) > void *> int? {
+    var n1 = 0;
+    var n2 = 1;
+    var next: int? = null;
+
+    foreach (_ in 0..n) {
+        _ = yield n1;
+        next = n1 + n2;
+        n1 = n2;
+        n2 = next!;
+    }
+}
+
+fun main(args: [str]) > void {
+    final N = std\parseInt(args[?0] ?? "10")!;
+
+    foreach (n in &fibonacci(N)) {
+        std\print("{n}");
+    }
+}
+
+
+
+
+
+
+
+ + + diff --git a/0.5.0/docs/.vuepress/public/logo.png b/content/0.5.0/docs/.vuepress/dist/logo.png similarity index 100% rename from 0.5.0/docs/.vuepress/public/logo.png rename to content/0.5.0/docs/.vuepress/dist/logo.png diff --git a/0.5.0/docs/.vuepress/dist/reference/api.html b/content/0.5.0/docs/.vuepress/dist/reference/api.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/api.html rename to content/0.5.0/docs/.vuepress/dist/reference/api.html diff --git a/0.5.0/docs/.vuepress/dist/reference/builtins/fibers.html b/content/0.5.0/docs/.vuepress/dist/reference/builtins/fibers.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/builtins/fibers.html rename to content/0.5.0/docs/.vuepress/dist/reference/builtins/fibers.html diff --git a/0.5.0/docs/.vuepress/dist/reference/builtins/lists.html b/content/0.5.0/docs/.vuepress/dist/reference/builtins/lists.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/builtins/lists.html rename to content/0.5.0/docs/.vuepress/dist/reference/builtins/lists.html diff --git a/0.5.0/docs/.vuepress/dist/reference/builtins/maps.html b/content/0.5.0/docs/.vuepress/dist/reference/builtins/maps.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/builtins/maps.html rename to content/0.5.0/docs/.vuepress/dist/reference/builtins/maps.html diff --git a/0.5.0/docs/.vuepress/dist/reference/builtins/patterns.html b/content/0.5.0/docs/.vuepress/dist/reference/builtins/patterns.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/builtins/patterns.html rename to content/0.5.0/docs/.vuepress/dist/reference/builtins/patterns.html diff --git a/0.5.0/docs/.vuepress/dist/reference/builtins/ranges.html b/content/0.5.0/docs/.vuepress/dist/reference/builtins/ranges.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/builtins/ranges.html rename to content/0.5.0/docs/.vuepress/dist/reference/builtins/ranges.html diff --git a/0.5.0/docs/.vuepress/dist/reference/builtins/strings.html b/content/0.5.0/docs/.vuepress/dist/reference/builtins/strings.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/builtins/strings.html rename to content/0.5.0/docs/.vuepress/dist/reference/builtins/strings.html diff --git a/0.5.0/docs/.vuepress/dist/reference/index.html b/content/0.5.0/docs/.vuepress/dist/reference/index.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/index.html rename to content/0.5.0/docs/.vuepress/dist/reference/index.html diff --git a/0.5.0/docs/.vuepress/dist/reference/std/buffer.html b/content/0.5.0/docs/.vuepress/dist/reference/std/buffer.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/std/buffer.html rename to content/0.5.0/docs/.vuepress/dist/reference/std/buffer.html diff --git a/0.5.0/docs/.vuepress/dist/reference/std/crypto.html b/content/0.5.0/docs/.vuepress/dist/reference/std/crypto.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/std/crypto.html rename to content/0.5.0/docs/.vuepress/dist/reference/std/crypto.html diff --git a/0.5.0/docs/.vuepress/dist/reference/std/debug.html b/content/0.5.0/docs/.vuepress/dist/reference/std/debug.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/std/debug.html rename to content/0.5.0/docs/.vuepress/dist/reference/std/debug.html diff --git a/0.5.0/docs/.vuepress/dist/reference/std/ffi.html b/content/0.5.0/docs/.vuepress/dist/reference/std/ffi.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/std/ffi.html rename to content/0.5.0/docs/.vuepress/dist/reference/std/ffi.html diff --git a/0.5.0/docs/.vuepress/dist/reference/std/fs.html b/content/0.5.0/docs/.vuepress/dist/reference/std/fs.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/std/fs.html rename to content/0.5.0/docs/.vuepress/dist/reference/std/fs.html diff --git a/0.5.0/docs/.vuepress/dist/reference/std/gc.html b/content/0.5.0/docs/.vuepress/dist/reference/std/gc.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/std/gc.html rename to content/0.5.0/docs/.vuepress/dist/reference/std/gc.html diff --git a/0.5.0/docs/.vuepress/dist/reference/std/io.html b/content/0.5.0/docs/.vuepress/dist/reference/std/io.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/std/io.html rename to content/0.5.0/docs/.vuepress/dist/reference/std/io.html diff --git a/0.5.0/docs/.vuepress/dist/reference/std/math.html b/content/0.5.0/docs/.vuepress/dist/reference/std/math.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/std/math.html rename to content/0.5.0/docs/.vuepress/dist/reference/std/math.html diff --git a/0.5.0/docs/.vuepress/dist/reference/std/os.html b/content/0.5.0/docs/.vuepress/dist/reference/std/os.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/std/os.html rename to content/0.5.0/docs/.vuepress/dist/reference/std/os.html diff --git a/0.5.0/docs/.vuepress/dist/reference/std/serialize.html b/content/0.5.0/docs/.vuepress/dist/reference/std/serialize.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/std/serialize.html rename to content/0.5.0/docs/.vuepress/dist/reference/std/serialize.html diff --git a/0.5.0/docs/.vuepress/dist/reference/std/std.html b/content/0.5.0/docs/.vuepress/dist/reference/std/std.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/reference/std/std.html rename to content/0.5.0/docs/.vuepress/dist/reference/std/std.html diff --git a/0.5.0/docs/.vuepress/dist/repl.html b/content/0.5.0/docs/.vuepress/dist/repl.html similarity index 100% rename from 0.5.0/docs/.vuepress/dist/repl.html rename to content/0.5.0/docs/.vuepress/dist/repl.html diff --git a/0.5.0/docs/.vuepress/public/.DS_Store b/content/0.5.0/docs/.vuepress/public/.DS_Store similarity index 100% rename from 0.5.0/docs/.vuepress/public/.DS_Store rename to content/0.5.0/docs/.vuepress/public/.DS_Store diff --git a/0.5.0/docs/.vuepress/public/buzz.wasm b/content/0.5.0/docs/.vuepress/public/buzz.wasm similarity index 100% rename from 0.5.0/docs/.vuepress/public/buzz.wasm rename to content/0.5.0/docs/.vuepress/public/buzz.wasm diff --git a/0.5.0/docs/.vuepress/public/favicon.ico b/content/0.5.0/docs/.vuepress/public/favicon.ico similarity index 100% rename from 0.5.0/docs/.vuepress/public/favicon.ico rename to content/0.5.0/docs/.vuepress/public/favicon.ico diff --git a/main/docs/.vuepress/dist/logo.png b/content/0.5.0/docs/.vuepress/public/logo.png similarity index 100% rename from main/docs/.vuepress/dist/logo.png rename to content/0.5.0/docs/.vuepress/public/logo.png diff --git a/0.5.0/docs/.vuepress/styles/index.scss b/content/0.5.0/docs/.vuepress/styles/index.scss similarity index 100% rename from 0.5.0/docs/.vuepress/styles/index.scss rename to content/0.5.0/docs/.vuepress/styles/index.scss diff --git a/0.5.0/docs/guide/README.md b/content/0.5.0/docs/guide/README.md similarity index 100% rename from 0.5.0/docs/guide/README.md rename to content/0.5.0/docs/guide/README.md diff --git a/0.5.0/docs/guide/building-installing.md b/content/0.5.0/docs/guide/building-installing.md similarity index 100% rename from 0.5.0/docs/guide/building-installing.md rename to content/0.5.0/docs/guide/building-installing.md diff --git a/0.5.0/docs/guide/calling-native-code.md b/content/0.5.0/docs/guide/calling-native-code.md similarity index 100% rename from 0.5.0/docs/guide/calling-native-code.md rename to content/0.5.0/docs/guide/calling-native-code.md diff --git a/0.5.0/docs/guide/control-flow.md b/content/0.5.0/docs/guide/control-flow.md similarity index 100% rename from 0.5.0/docs/guide/control-flow.md rename to content/0.5.0/docs/guide/control-flow.md diff --git a/0.5.0/docs/guide/enums.md b/content/0.5.0/docs/guide/enums.md similarity index 100% rename from 0.5.0/docs/guide/enums.md rename to content/0.5.0/docs/guide/enums.md diff --git a/0.5.0/docs/guide/errors.md b/content/0.5.0/docs/guide/errors.md similarity index 100% rename from 0.5.0/docs/guide/errors.md rename to content/0.5.0/docs/guide/errors.md diff --git a/0.5.0/docs/guide/ffi.md b/content/0.5.0/docs/guide/ffi.md similarity index 100% rename from 0.5.0/docs/guide/ffi.md rename to content/0.5.0/docs/guide/ffi.md diff --git a/0.5.0/docs/guide/fibers.md b/content/0.5.0/docs/guide/fibers.md similarity index 100% rename from 0.5.0/docs/guide/fibers.md rename to content/0.5.0/docs/guide/fibers.md diff --git a/0.5.0/docs/guide/functions.md b/content/0.5.0/docs/guide/functions.md similarity index 100% rename from 0.5.0/docs/guide/functions.md rename to content/0.5.0/docs/guide/functions.md diff --git a/0.5.0/docs/guide/import-export.md b/content/0.5.0/docs/guide/import-export.md similarity index 100% rename from 0.5.0/docs/guide/import-export.md rename to content/0.5.0/docs/guide/import-export.md diff --git a/0.5.0/docs/guide/null-safety.md b/content/0.5.0/docs/guide/null-safety.md similarity index 100% rename from 0.5.0/docs/guide/null-safety.md rename to content/0.5.0/docs/guide/null-safety.md diff --git a/0.5.0/docs/guide/objects.md b/content/0.5.0/docs/guide/objects.md similarity index 100% rename from 0.5.0/docs/guide/objects.md rename to content/0.5.0/docs/guide/objects.md diff --git a/0.5.0/docs/guide/protocols.md b/content/0.5.0/docs/guide/protocols.md similarity index 100% rename from 0.5.0/docs/guide/protocols.md rename to content/0.5.0/docs/guide/protocols.md diff --git a/0.5.0/docs/guide/scope.md b/content/0.5.0/docs/guide/scope.md similarity index 100% rename from 0.5.0/docs/guide/scope.md rename to content/0.5.0/docs/guide/scope.md diff --git a/0.5.0/docs/guide/syntax.md b/content/0.5.0/docs/guide/syntax.md similarity index 100% rename from 0.5.0/docs/guide/syntax.md rename to content/0.5.0/docs/guide/syntax.md diff --git a/0.5.0/docs/guide/types.md b/content/0.5.0/docs/guide/types.md similarity index 100% rename from 0.5.0/docs/guide/types.md rename to content/0.5.0/docs/guide/types.md diff --git a/0.5.0/docs/reference/README.md b/content/0.5.0/docs/reference/README.md similarity index 100% rename from 0.5.0/docs/reference/README.md rename to content/0.5.0/docs/reference/README.md diff --git a/0.5.0/docs/reference/api.md b/content/0.5.0/docs/reference/api.md similarity index 100% rename from 0.5.0/docs/reference/api.md rename to content/0.5.0/docs/reference/api.md diff --git a/0.5.0/docs/reference/builtins/fibers.md b/content/0.5.0/docs/reference/builtins/fibers.md similarity index 100% rename from 0.5.0/docs/reference/builtins/fibers.md rename to content/0.5.0/docs/reference/builtins/fibers.md diff --git a/0.5.0/docs/reference/builtins/lists.md b/content/0.5.0/docs/reference/builtins/lists.md similarity index 100% rename from 0.5.0/docs/reference/builtins/lists.md rename to content/0.5.0/docs/reference/builtins/lists.md diff --git a/0.5.0/docs/reference/builtins/maps.md b/content/0.5.0/docs/reference/builtins/maps.md similarity index 100% rename from 0.5.0/docs/reference/builtins/maps.md rename to content/0.5.0/docs/reference/builtins/maps.md diff --git a/0.5.0/docs/reference/builtins/patterns.md b/content/0.5.0/docs/reference/builtins/patterns.md similarity index 100% rename from 0.5.0/docs/reference/builtins/patterns.md rename to content/0.5.0/docs/reference/builtins/patterns.md diff --git a/0.5.0/docs/reference/builtins/ranges.md b/content/0.5.0/docs/reference/builtins/ranges.md similarity index 100% rename from 0.5.0/docs/reference/builtins/ranges.md rename to content/0.5.0/docs/reference/builtins/ranges.md diff --git a/0.5.0/docs/reference/builtins/strings.md b/content/0.5.0/docs/reference/builtins/strings.md similarity index 100% rename from 0.5.0/docs/reference/builtins/strings.md rename to content/0.5.0/docs/reference/builtins/strings.md diff --git a/0.5.0/docs/reference/std/buffer.md b/content/0.5.0/docs/reference/std/buffer.md similarity index 100% rename from 0.5.0/docs/reference/std/buffer.md rename to content/0.5.0/docs/reference/std/buffer.md diff --git a/0.5.0/docs/reference/std/crypto.md b/content/0.5.0/docs/reference/std/crypto.md similarity index 100% rename from 0.5.0/docs/reference/std/crypto.md rename to content/0.5.0/docs/reference/std/crypto.md diff --git a/0.5.0/docs/reference/std/debug.md b/content/0.5.0/docs/reference/std/debug.md similarity index 100% rename from 0.5.0/docs/reference/std/debug.md rename to content/0.5.0/docs/reference/std/debug.md diff --git a/0.5.0/docs/reference/std/ffi.md b/content/0.5.0/docs/reference/std/ffi.md similarity index 100% rename from 0.5.0/docs/reference/std/ffi.md rename to content/0.5.0/docs/reference/std/ffi.md diff --git a/0.5.0/docs/reference/std/fs.md b/content/0.5.0/docs/reference/std/fs.md similarity index 100% rename from 0.5.0/docs/reference/std/fs.md rename to content/0.5.0/docs/reference/std/fs.md diff --git a/0.5.0/docs/reference/std/gc.md b/content/0.5.0/docs/reference/std/gc.md similarity index 100% rename from 0.5.0/docs/reference/std/gc.md rename to content/0.5.0/docs/reference/std/gc.md diff --git a/0.5.0/docs/reference/std/io.md b/content/0.5.0/docs/reference/std/io.md similarity index 100% rename from 0.5.0/docs/reference/std/io.md rename to content/0.5.0/docs/reference/std/io.md diff --git a/0.5.0/docs/reference/std/math.md b/content/0.5.0/docs/reference/std/math.md similarity index 100% rename from 0.5.0/docs/reference/std/math.md rename to content/0.5.0/docs/reference/std/math.md diff --git a/0.5.0/docs/reference/std/os.md b/content/0.5.0/docs/reference/std/os.md similarity index 100% rename from 0.5.0/docs/reference/std/os.md rename to content/0.5.0/docs/reference/std/os.md diff --git a/0.5.0/docs/reference/std/serialize.md b/content/0.5.0/docs/reference/std/serialize.md similarity index 100% rename from 0.5.0/docs/reference/std/serialize.md rename to content/0.5.0/docs/reference/std/serialize.md diff --git a/0.5.0/docs/reference/std/std.md b/content/0.5.0/docs/reference/std/std.md similarity index 100% rename from 0.5.0/docs/reference/std/std.md rename to content/0.5.0/docs/reference/std/std.md diff --git a/0.5.0/docs/repl.md b/content/0.5.0/docs/repl.md similarity index 100% rename from 0.5.0/docs/repl.md rename to content/0.5.0/docs/repl.md diff --git a/content/0.5.0/guide/index.smd b/content/0.5.0/guide/index.smd new file mode 100644 index 00000000..946703e4 --- /dev/null +++ b/content/0.5.0/guide/index.smd @@ -0,0 +1,11 @@ +--- +.title = "buzz", +.description = "A small/lightweight statically typed scripting language", +.date = .date("1990-01-01T00:00:00"), +.custom = { + "version": "0.5.0", +}, +.layout = "page.shtml", +--- + +TODO: Guide diff --git a/content/0.5.0/index.smd b/content/0.5.0/index.smd new file mode 100755 index 00000000..0313797e --- /dev/null +++ b/content/0.5.0/index.smd @@ -0,0 +1,66 @@ +--- +.title = "buzz", +.description = "A small/lightweight statically typed scripting language", +.date = .date("1990-01-01T00:00:00"), +.custom = { + "version": "0.5.0", + "actions": [ + { "text": "Guide", "link": "guide" }, + { "text": "Reference", "link": "reference" }, + { "text": "Try it", "link": "repl" }, + { "text": "Latest release", "link": "https://github.com/buzz-language/buzz/releases/tag/0.5.0", "external": true }, + ], + "features": [ + { + "title": "Statically typed", + "details": "Find out bugs in your IDE rather than production", + }, + { + "title": "JIT compiled", + "details": "Uses MIR, a fast and lightweight JIT compiler", + }, + { + "title": "Unambiguous", + "details": "No implicit behavior or unexpected type coercion", + }, + { + "title": "Small in size and complexity", + "details": "Does not take much space on your drive or in your mind", + }, + { + "title": "Interoperability with C", + "details": "Call C functions easily with FFIs and embed buzz with its C API", + }, + { + "title": "Fibers", + "details": "Single threaded cooperative multitasking", + }, + ], +}, +.layout = "home.shtml", +--- + +```kotlin buzz +import "std"; + +fun fibonacci(n: int) > void *> int? { + var n1 = 0; + var n2 = 1; + var next: int? = null; + + foreach (_ in 0..n) { + _ = yield n1; + next = n1 + n2; + n1 = n2; + n2 = next!; + } +} + +fun main(args: [str]) > void { + final N = std\parseInt(args[?0] ?? "10")!; + + foreach (n in &fibonacci(N)) { + std\print("{n}"); + } +} +``` diff --git a/0.5.0/nginx.conf b/content/0.5.0/nginx.conf similarity index 100% rename from 0.5.0/nginx.conf rename to content/0.5.0/nginx.conf diff --git a/0.5.0/package.json b/content/0.5.0/package.json similarity index 100% rename from 0.5.0/package.json rename to content/0.5.0/package.json diff --git a/0.5.0/pnpm-lock.yaml b/content/0.5.0/pnpm-lock.yaml similarity index 100% rename from 0.5.0/pnpm-lock.yaml rename to content/0.5.0/pnpm-lock.yaml diff --git a/content/0.5.0/reference/index.smd b/content/0.5.0/reference/index.smd new file mode 100644 index 00000000..ccaba836 --- /dev/null +++ b/content/0.5.0/reference/index.smd @@ -0,0 +1,11 @@ +--- +.title = "buzz", +.description = "A small/lightweight statically typed scripting language", +.date = .date("1990-01-01T00:00:00"), +.custom = { + "version": "0.5.0", +}, +.layout = "page.shtml", +--- + +TODO: Reference diff --git a/content/0.5.0/repl.smd b/content/0.5.0/repl.smd new file mode 100644 index 00000000..22543ddc --- /dev/null +++ b/content/0.5.0/repl.smd @@ -0,0 +1,11 @@ +--- +.title = "buzz", +.description = "A small/lightweight statically typed scripting language", +.date = .date("1990-01-01T00:00:00"), +.custom = { + "version": "0.5.0", +}, +.layout = "page.shtml", +--- + +TODO: REPL diff --git a/content/index.smd b/content/index.smd new file mode 100644 index 00000000..e39dae93 --- /dev/null +++ b/content/index.smd @@ -0,0 +1,7 @@ +--- +.title = "buzz", +.date = .date("1990-01-01T00:00:00"), +.layout = "redirect.shtml", +// Redirect to latest stable release +.custom = { "new-location": "/0.5.0", "version": "0.5.0" }, +--- diff --git a/main/AGENTS.md b/content/main/AGENTS.md similarity index 100% rename from main/AGENTS.md rename to content/main/AGENTS.md diff --git a/main/docs/.vuepress/config.ts b/content/main/docs/.vuepress/config.ts similarity index 100% rename from main/docs/.vuepress/config.ts rename to content/main/docs/.vuepress/config.ts diff --git a/main/docs/.vuepress/dist/.DS_Store b/content/main/docs/.vuepress/dist/.DS_Store similarity index 100% rename from main/docs/.vuepress/dist/.DS_Store rename to content/main/docs/.vuepress/dist/.DS_Store diff --git a/main/docs/.vuepress/dist/404.html b/content/main/docs/.vuepress/dist/404.html similarity index 100% rename from main/docs/.vuepress/dist/404.html rename to content/main/docs/.vuepress/dist/404.html diff --git a/main/docs/.vuepress/dist/assets/404.html-60b35caa.js b/content/main/docs/.vuepress/dist/assets/404.html-60b35caa.js similarity index 100% rename from main/docs/.vuepress/dist/assets/404.html-60b35caa.js rename to content/main/docs/.vuepress/dist/assets/404.html-60b35caa.js diff --git a/main/docs/.vuepress/dist/assets/404.html-d948ce64.js b/content/main/docs/.vuepress/dist/assets/404.html-d948ce64.js similarity index 100% rename from main/docs/.vuepress/dist/assets/404.html-d948ce64.js rename to content/main/docs/.vuepress/dist/assets/404.html-d948ce64.js diff --git a/main/docs/.vuepress/dist/assets/api.html-664752d9.js b/content/main/docs/.vuepress/dist/assets/api.html-664752d9.js similarity index 100% rename from main/docs/.vuepress/dist/assets/api.html-664752d9.js rename to content/main/docs/.vuepress/dist/assets/api.html-664752d9.js diff --git a/main/docs/.vuepress/dist/assets/api.html-7b1ffba8.js b/content/main/docs/.vuepress/dist/assets/api.html-7b1ffba8.js similarity index 100% rename from main/docs/.vuepress/dist/assets/api.html-7b1ffba8.js rename to content/main/docs/.vuepress/dist/assets/api.html-7b1ffba8.js diff --git a/main/docs/.vuepress/dist/assets/app-631b6948.js b/content/main/docs/.vuepress/dist/assets/app-631b6948.js similarity index 100% rename from main/docs/.vuepress/dist/assets/app-631b6948.js rename to content/main/docs/.vuepress/dist/assets/app-631b6948.js diff --git a/main/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg b/content/main/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg similarity index 100% rename from main/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg rename to content/main/docs/.vuepress/dist/assets/back-to-top-8efcbe56.svg diff --git a/main/docs/.vuepress/dist/assets/buffer.html-4cb461be.js b/content/main/docs/.vuepress/dist/assets/buffer.html-4cb461be.js similarity index 100% rename from main/docs/.vuepress/dist/assets/buffer.html-4cb461be.js rename to content/main/docs/.vuepress/dist/assets/buffer.html-4cb461be.js diff --git a/main/docs/.vuepress/dist/assets/buffer.html-bc4f6a2b.js b/content/main/docs/.vuepress/dist/assets/buffer.html-bc4f6a2b.js similarity index 100% rename from main/docs/.vuepress/dist/assets/buffer.html-bc4f6a2b.js rename to content/main/docs/.vuepress/dist/assets/buffer.html-bc4f6a2b.js diff --git a/main/docs/.vuepress/dist/assets/building-installing.html-3e68969f.js b/content/main/docs/.vuepress/dist/assets/building-installing.html-3e68969f.js similarity index 100% rename from main/docs/.vuepress/dist/assets/building-installing.html-3e68969f.js rename to content/main/docs/.vuepress/dist/assets/building-installing.html-3e68969f.js diff --git a/main/docs/.vuepress/dist/assets/building-installing.html-5062e075.js b/content/main/docs/.vuepress/dist/assets/building-installing.html-5062e075.js similarity index 100% rename from main/docs/.vuepress/dist/assets/building-installing.html-5062e075.js rename to content/main/docs/.vuepress/dist/assets/building-installing.html-5062e075.js diff --git a/main/docs/.vuepress/dist/assets/calling-native-code.html-7a10d775.js b/content/main/docs/.vuepress/dist/assets/calling-native-code.html-7a10d775.js similarity index 100% rename from main/docs/.vuepress/dist/assets/calling-native-code.html-7a10d775.js rename to content/main/docs/.vuepress/dist/assets/calling-native-code.html-7a10d775.js diff --git a/main/docs/.vuepress/dist/assets/calling-native-code.html-f0064cbc.js b/content/main/docs/.vuepress/dist/assets/calling-native-code.html-f0064cbc.js similarity index 100% rename from main/docs/.vuepress/dist/assets/calling-native-code.html-f0064cbc.js rename to content/main/docs/.vuepress/dist/assets/calling-native-code.html-f0064cbc.js diff --git a/main/docs/.vuepress/dist/assets/control-flow.html-54925a68.js b/content/main/docs/.vuepress/dist/assets/control-flow.html-54925a68.js similarity index 100% rename from main/docs/.vuepress/dist/assets/control-flow.html-54925a68.js rename to content/main/docs/.vuepress/dist/assets/control-flow.html-54925a68.js diff --git a/main/docs/.vuepress/dist/assets/control-flow.html-c4284ae0.js b/content/main/docs/.vuepress/dist/assets/control-flow.html-c4284ae0.js similarity index 100% rename from main/docs/.vuepress/dist/assets/control-flow.html-c4284ae0.js rename to content/main/docs/.vuepress/dist/assets/control-flow.html-c4284ae0.js diff --git a/main/docs/.vuepress/dist/assets/crypto.html-4423d2c8.js b/content/main/docs/.vuepress/dist/assets/crypto.html-4423d2c8.js similarity index 100% rename from main/docs/.vuepress/dist/assets/crypto.html-4423d2c8.js rename to content/main/docs/.vuepress/dist/assets/crypto.html-4423d2c8.js diff --git a/main/docs/.vuepress/dist/assets/crypto.html-4f1b84d7.js b/content/main/docs/.vuepress/dist/assets/crypto.html-4f1b84d7.js similarity index 100% rename from main/docs/.vuepress/dist/assets/crypto.html-4f1b84d7.js rename to content/main/docs/.vuepress/dist/assets/crypto.html-4f1b84d7.js diff --git a/main/docs/.vuepress/dist/assets/debug.html-553b1ba0.js b/content/main/docs/.vuepress/dist/assets/debug.html-553b1ba0.js similarity index 100% rename from main/docs/.vuepress/dist/assets/debug.html-553b1ba0.js rename to content/main/docs/.vuepress/dist/assets/debug.html-553b1ba0.js diff --git a/main/docs/.vuepress/dist/assets/debug.html-e233508d.js b/content/main/docs/.vuepress/dist/assets/debug.html-e233508d.js similarity index 100% rename from main/docs/.vuepress/dist/assets/debug.html-e233508d.js rename to content/main/docs/.vuepress/dist/assets/debug.html-e233508d.js diff --git a/main/docs/.vuepress/dist/assets/enums.html-bad178cc.js b/content/main/docs/.vuepress/dist/assets/enums.html-bad178cc.js similarity index 100% rename from main/docs/.vuepress/dist/assets/enums.html-bad178cc.js rename to content/main/docs/.vuepress/dist/assets/enums.html-bad178cc.js diff --git a/main/docs/.vuepress/dist/assets/enums.html-fac67bba.js b/content/main/docs/.vuepress/dist/assets/enums.html-fac67bba.js similarity index 100% rename from main/docs/.vuepress/dist/assets/enums.html-fac67bba.js rename to content/main/docs/.vuepress/dist/assets/enums.html-fac67bba.js diff --git a/main/docs/.vuepress/dist/assets/errors.html-0d72a89c.js b/content/main/docs/.vuepress/dist/assets/errors.html-0d72a89c.js similarity index 100% rename from main/docs/.vuepress/dist/assets/errors.html-0d72a89c.js rename to content/main/docs/.vuepress/dist/assets/errors.html-0d72a89c.js diff --git a/main/docs/.vuepress/dist/assets/errors.html-1c454e81.js b/content/main/docs/.vuepress/dist/assets/errors.html-1c454e81.js similarity index 100% rename from main/docs/.vuepress/dist/assets/errors.html-1c454e81.js rename to content/main/docs/.vuepress/dist/assets/errors.html-1c454e81.js diff --git a/main/docs/.vuepress/dist/assets/errors.html-223a5da6.js b/content/main/docs/.vuepress/dist/assets/errors.html-223a5da6.js similarity index 100% rename from main/docs/.vuepress/dist/assets/errors.html-223a5da6.js rename to content/main/docs/.vuepress/dist/assets/errors.html-223a5da6.js diff --git a/main/docs/.vuepress/dist/assets/errors.html-ecd1636f.js b/content/main/docs/.vuepress/dist/assets/errors.html-ecd1636f.js similarity index 100% rename from main/docs/.vuepress/dist/assets/errors.html-ecd1636f.js rename to content/main/docs/.vuepress/dist/assets/errors.html-ecd1636f.js diff --git a/main/docs/.vuepress/dist/assets/ffi.html-130a5838.js b/content/main/docs/.vuepress/dist/assets/ffi.html-130a5838.js similarity index 100% rename from main/docs/.vuepress/dist/assets/ffi.html-130a5838.js rename to content/main/docs/.vuepress/dist/assets/ffi.html-130a5838.js diff --git a/main/docs/.vuepress/dist/assets/ffi.html-b12e681a.js b/content/main/docs/.vuepress/dist/assets/ffi.html-b12e681a.js similarity index 100% rename from main/docs/.vuepress/dist/assets/ffi.html-b12e681a.js rename to content/main/docs/.vuepress/dist/assets/ffi.html-b12e681a.js diff --git a/main/docs/.vuepress/dist/assets/ffi.html-c5d36b59.js b/content/main/docs/.vuepress/dist/assets/ffi.html-c5d36b59.js similarity index 100% rename from main/docs/.vuepress/dist/assets/ffi.html-c5d36b59.js rename to content/main/docs/.vuepress/dist/assets/ffi.html-c5d36b59.js diff --git a/main/docs/.vuepress/dist/assets/ffi.html-eea11461.js b/content/main/docs/.vuepress/dist/assets/ffi.html-eea11461.js similarity index 100% rename from main/docs/.vuepress/dist/assets/ffi.html-eea11461.js rename to content/main/docs/.vuepress/dist/assets/ffi.html-eea11461.js diff --git a/main/docs/.vuepress/dist/assets/fibers.html-16508b49.js b/content/main/docs/.vuepress/dist/assets/fibers.html-16508b49.js similarity index 100% rename from main/docs/.vuepress/dist/assets/fibers.html-16508b49.js rename to content/main/docs/.vuepress/dist/assets/fibers.html-16508b49.js diff --git a/main/docs/.vuepress/dist/assets/fibers.html-71ea4736.js b/content/main/docs/.vuepress/dist/assets/fibers.html-71ea4736.js similarity index 100% rename from main/docs/.vuepress/dist/assets/fibers.html-71ea4736.js rename to content/main/docs/.vuepress/dist/assets/fibers.html-71ea4736.js diff --git a/main/docs/.vuepress/dist/assets/fibers.html-8e285f23.js b/content/main/docs/.vuepress/dist/assets/fibers.html-8e285f23.js similarity index 100% rename from main/docs/.vuepress/dist/assets/fibers.html-8e285f23.js rename to content/main/docs/.vuepress/dist/assets/fibers.html-8e285f23.js diff --git a/main/docs/.vuepress/dist/assets/fibers.html-f5030769.js b/content/main/docs/.vuepress/dist/assets/fibers.html-f5030769.js similarity index 100% rename from main/docs/.vuepress/dist/assets/fibers.html-f5030769.js rename to content/main/docs/.vuepress/dist/assets/fibers.html-f5030769.js diff --git a/main/docs/.vuepress/dist/assets/fs.html-122542d3.js b/content/main/docs/.vuepress/dist/assets/fs.html-122542d3.js similarity index 100% rename from main/docs/.vuepress/dist/assets/fs.html-122542d3.js rename to content/main/docs/.vuepress/dist/assets/fs.html-122542d3.js diff --git a/main/docs/.vuepress/dist/assets/fs.html-a69c80bd.js b/content/main/docs/.vuepress/dist/assets/fs.html-a69c80bd.js similarity index 100% rename from main/docs/.vuepress/dist/assets/fs.html-a69c80bd.js rename to content/main/docs/.vuepress/dist/assets/fs.html-a69c80bd.js diff --git a/main/docs/.vuepress/dist/assets/functions.html-6d499fbe.js b/content/main/docs/.vuepress/dist/assets/functions.html-6d499fbe.js similarity index 100% rename from main/docs/.vuepress/dist/assets/functions.html-6d499fbe.js rename to content/main/docs/.vuepress/dist/assets/functions.html-6d499fbe.js diff --git a/main/docs/.vuepress/dist/assets/functions.html-71d6b513.js b/content/main/docs/.vuepress/dist/assets/functions.html-71d6b513.js similarity index 100% rename from main/docs/.vuepress/dist/assets/functions.html-71d6b513.js rename to content/main/docs/.vuepress/dist/assets/functions.html-71d6b513.js diff --git a/main/docs/.vuepress/dist/assets/gc.html-068f31c7.js b/content/main/docs/.vuepress/dist/assets/gc.html-068f31c7.js similarity index 100% rename from main/docs/.vuepress/dist/assets/gc.html-068f31c7.js rename to content/main/docs/.vuepress/dist/assets/gc.html-068f31c7.js diff --git a/main/docs/.vuepress/dist/assets/gc.html-3d7a02c4.js b/content/main/docs/.vuepress/dist/assets/gc.html-3d7a02c4.js similarity index 100% rename from main/docs/.vuepress/dist/assets/gc.html-3d7a02c4.js rename to content/main/docs/.vuepress/dist/assets/gc.html-3d7a02c4.js diff --git a/main/docs/.vuepress/dist/assets/get-started.html-52577ec7.js b/content/main/docs/.vuepress/dist/assets/get-started.html-52577ec7.js similarity index 100% rename from main/docs/.vuepress/dist/assets/get-started.html-52577ec7.js rename to content/main/docs/.vuepress/dist/assets/get-started.html-52577ec7.js diff --git a/main/docs/.vuepress/dist/assets/get-started.html-8c2eb3a6.js b/content/main/docs/.vuepress/dist/assets/get-started.html-8c2eb3a6.js similarity index 100% rename from main/docs/.vuepress/dist/assets/get-started.html-8c2eb3a6.js rename to content/main/docs/.vuepress/dist/assets/get-started.html-8c2eb3a6.js diff --git a/main/docs/.vuepress/dist/assets/http.html-4a451b45.js b/content/main/docs/.vuepress/dist/assets/http.html-4a451b45.js similarity index 100% rename from main/docs/.vuepress/dist/assets/http.html-4a451b45.js rename to content/main/docs/.vuepress/dist/assets/http.html-4a451b45.js diff --git a/main/docs/.vuepress/dist/assets/http.html-e1f7da91.js b/content/main/docs/.vuepress/dist/assets/http.html-e1f7da91.js similarity index 100% rename from main/docs/.vuepress/dist/assets/http.html-e1f7da91.js rename to content/main/docs/.vuepress/dist/assets/http.html-e1f7da91.js diff --git a/main/docs/.vuepress/dist/assets/import-export.html-253553e6.js b/content/main/docs/.vuepress/dist/assets/import-export.html-253553e6.js similarity index 100% rename from main/docs/.vuepress/dist/assets/import-export.html-253553e6.js rename to content/main/docs/.vuepress/dist/assets/import-export.html-253553e6.js diff --git a/main/docs/.vuepress/dist/assets/import-export.html-c7a1cb0f.js b/content/main/docs/.vuepress/dist/assets/import-export.html-c7a1cb0f.js similarity index 100% rename from main/docs/.vuepress/dist/assets/import-export.html-c7a1cb0f.js rename to content/main/docs/.vuepress/dist/assets/import-export.html-c7a1cb0f.js diff --git a/main/docs/.vuepress/dist/assets/index.html-2ec4ef30.js b/content/main/docs/.vuepress/dist/assets/index.html-2ec4ef30.js similarity index 100% rename from main/docs/.vuepress/dist/assets/index.html-2ec4ef30.js rename to content/main/docs/.vuepress/dist/assets/index.html-2ec4ef30.js diff --git a/main/docs/.vuepress/dist/assets/index.html-7de7ebeb.js b/content/main/docs/.vuepress/dist/assets/index.html-7de7ebeb.js similarity index 100% rename from main/docs/.vuepress/dist/assets/index.html-7de7ebeb.js rename to content/main/docs/.vuepress/dist/assets/index.html-7de7ebeb.js diff --git a/main/docs/.vuepress/dist/assets/index.html-9bac4119.js b/content/main/docs/.vuepress/dist/assets/index.html-9bac4119.js similarity index 100% rename from main/docs/.vuepress/dist/assets/index.html-9bac4119.js rename to content/main/docs/.vuepress/dist/assets/index.html-9bac4119.js diff --git a/main/docs/.vuepress/dist/assets/index.html-9ce5cec2.js b/content/main/docs/.vuepress/dist/assets/index.html-9ce5cec2.js similarity index 100% rename from main/docs/.vuepress/dist/assets/index.html-9ce5cec2.js rename to content/main/docs/.vuepress/dist/assets/index.html-9ce5cec2.js diff --git a/main/docs/.vuepress/dist/assets/index.html-b1241025.js b/content/main/docs/.vuepress/dist/assets/index.html-b1241025.js similarity index 100% rename from main/docs/.vuepress/dist/assets/index.html-b1241025.js rename to content/main/docs/.vuepress/dist/assets/index.html-b1241025.js diff --git a/main/docs/.vuepress/dist/assets/index.html-ee2aed99.js b/content/main/docs/.vuepress/dist/assets/index.html-ee2aed99.js similarity index 100% rename from main/docs/.vuepress/dist/assets/index.html-ee2aed99.js rename to content/main/docs/.vuepress/dist/assets/index.html-ee2aed99.js diff --git a/main/docs/.vuepress/dist/assets/io.html-28d6763c.js b/content/main/docs/.vuepress/dist/assets/io.html-28d6763c.js similarity index 100% rename from main/docs/.vuepress/dist/assets/io.html-28d6763c.js rename to content/main/docs/.vuepress/dist/assets/io.html-28d6763c.js diff --git a/main/docs/.vuepress/dist/assets/io.html-c1a15cd0.js b/content/main/docs/.vuepress/dist/assets/io.html-c1a15cd0.js similarity index 100% rename from main/docs/.vuepress/dist/assets/io.html-c1a15cd0.js rename to content/main/docs/.vuepress/dist/assets/io.html-c1a15cd0.js diff --git a/main/docs/.vuepress/dist/assets/lists.html-6196a427.js b/content/main/docs/.vuepress/dist/assets/lists.html-6196a427.js similarity index 100% rename from main/docs/.vuepress/dist/assets/lists.html-6196a427.js rename to content/main/docs/.vuepress/dist/assets/lists.html-6196a427.js diff --git a/main/docs/.vuepress/dist/assets/lists.html-eaf29a24.js b/content/main/docs/.vuepress/dist/assets/lists.html-eaf29a24.js similarity index 100% rename from main/docs/.vuepress/dist/assets/lists.html-eaf29a24.js rename to content/main/docs/.vuepress/dist/assets/lists.html-eaf29a24.js diff --git a/main/docs/.vuepress/dist/assets/manifest.html-b658225f.js b/content/main/docs/.vuepress/dist/assets/manifest.html-b658225f.js similarity index 100% rename from main/docs/.vuepress/dist/assets/manifest.html-b658225f.js rename to content/main/docs/.vuepress/dist/assets/manifest.html-b658225f.js diff --git a/main/docs/.vuepress/dist/assets/manifest.html-c41026e8.js b/content/main/docs/.vuepress/dist/assets/manifest.html-c41026e8.js similarity index 100% rename from main/docs/.vuepress/dist/assets/manifest.html-c41026e8.js rename to content/main/docs/.vuepress/dist/assets/manifest.html-c41026e8.js diff --git a/main/docs/.vuepress/dist/assets/maps.html-7ad1e8ad.js b/content/main/docs/.vuepress/dist/assets/maps.html-7ad1e8ad.js similarity index 100% rename from main/docs/.vuepress/dist/assets/maps.html-7ad1e8ad.js rename to content/main/docs/.vuepress/dist/assets/maps.html-7ad1e8ad.js diff --git a/main/docs/.vuepress/dist/assets/maps.html-8551948f.js b/content/main/docs/.vuepress/dist/assets/maps.html-8551948f.js similarity index 100% rename from main/docs/.vuepress/dist/assets/maps.html-8551948f.js rename to content/main/docs/.vuepress/dist/assets/maps.html-8551948f.js diff --git a/main/docs/.vuepress/dist/assets/math.html-93f55f15.js b/content/main/docs/.vuepress/dist/assets/math.html-93f55f15.js similarity index 100% rename from main/docs/.vuepress/dist/assets/math.html-93f55f15.js rename to content/main/docs/.vuepress/dist/assets/math.html-93f55f15.js diff --git a/main/docs/.vuepress/dist/assets/math.html-eb02d6d2.js b/content/main/docs/.vuepress/dist/assets/math.html-eb02d6d2.js similarity index 100% rename from main/docs/.vuepress/dist/assets/math.html-eb02d6d2.js rename to content/main/docs/.vuepress/dist/assets/math.html-eb02d6d2.js diff --git a/main/docs/.vuepress/dist/assets/null-safety.html-27a10c06.js b/content/main/docs/.vuepress/dist/assets/null-safety.html-27a10c06.js similarity index 100% rename from main/docs/.vuepress/dist/assets/null-safety.html-27a10c06.js rename to content/main/docs/.vuepress/dist/assets/null-safety.html-27a10c06.js diff --git a/main/docs/.vuepress/dist/assets/null-safety.html-a8154d47.js b/content/main/docs/.vuepress/dist/assets/null-safety.html-a8154d47.js similarity index 100% rename from main/docs/.vuepress/dist/assets/null-safety.html-a8154d47.js rename to content/main/docs/.vuepress/dist/assets/null-safety.html-a8154d47.js diff --git a/main/docs/.vuepress/dist/assets/objects.html-030ef37c.js b/content/main/docs/.vuepress/dist/assets/objects.html-030ef37c.js similarity index 100% rename from main/docs/.vuepress/dist/assets/objects.html-030ef37c.js rename to content/main/docs/.vuepress/dist/assets/objects.html-030ef37c.js diff --git a/main/docs/.vuepress/dist/assets/objects.html-785a4b41.js b/content/main/docs/.vuepress/dist/assets/objects.html-785a4b41.js similarity index 100% rename from main/docs/.vuepress/dist/assets/objects.html-785a4b41.js rename to content/main/docs/.vuepress/dist/assets/objects.html-785a4b41.js diff --git a/main/docs/.vuepress/dist/assets/os.html-ac29c9d4.js b/content/main/docs/.vuepress/dist/assets/os.html-ac29c9d4.js similarity index 100% rename from main/docs/.vuepress/dist/assets/os.html-ac29c9d4.js rename to content/main/docs/.vuepress/dist/assets/os.html-ac29c9d4.js diff --git a/main/docs/.vuepress/dist/assets/os.html-c27c3a80.js b/content/main/docs/.vuepress/dist/assets/os.html-c27c3a80.js similarity index 100% rename from main/docs/.vuepress/dist/assets/os.html-c27c3a80.js rename to content/main/docs/.vuepress/dist/assets/os.html-c27c3a80.js diff --git a/main/docs/.vuepress/dist/assets/package.html-edeb64c9.js b/content/main/docs/.vuepress/dist/assets/package.html-edeb64c9.js similarity index 100% rename from main/docs/.vuepress/dist/assets/package.html-edeb64c9.js rename to content/main/docs/.vuepress/dist/assets/package.html-edeb64c9.js diff --git a/main/docs/.vuepress/dist/assets/package.html-f02962f6.js b/content/main/docs/.vuepress/dist/assets/package.html-f02962f6.js similarity index 100% rename from main/docs/.vuepress/dist/assets/package.html-f02962f6.js rename to content/main/docs/.vuepress/dist/assets/package.html-f02962f6.js diff --git a/main/docs/.vuepress/dist/assets/patterns.html-59e24f57.js b/content/main/docs/.vuepress/dist/assets/patterns.html-59e24f57.js similarity index 100% rename from main/docs/.vuepress/dist/assets/patterns.html-59e24f57.js rename to content/main/docs/.vuepress/dist/assets/patterns.html-59e24f57.js diff --git a/main/docs/.vuepress/dist/assets/patterns.html-f2b4d5aa.js b/content/main/docs/.vuepress/dist/assets/patterns.html-f2b4d5aa.js similarity index 100% rename from main/docs/.vuepress/dist/assets/patterns.html-f2b4d5aa.js rename to content/main/docs/.vuepress/dist/assets/patterns.html-f2b4d5aa.js diff --git a/main/docs/.vuepress/dist/assets/protocols.html-6e7ed9b1.js b/content/main/docs/.vuepress/dist/assets/protocols.html-6e7ed9b1.js similarity index 100% rename from main/docs/.vuepress/dist/assets/protocols.html-6e7ed9b1.js rename to content/main/docs/.vuepress/dist/assets/protocols.html-6e7ed9b1.js diff --git a/main/docs/.vuepress/dist/assets/protocols.html-f1222f71.js b/content/main/docs/.vuepress/dist/assets/protocols.html-f1222f71.js similarity index 100% rename from main/docs/.vuepress/dist/assets/protocols.html-f1222f71.js rename to content/main/docs/.vuepress/dist/assets/protocols.html-f1222f71.js diff --git a/main/docs/.vuepress/dist/assets/ranges.html-3ca80bd5.js b/content/main/docs/.vuepress/dist/assets/ranges.html-3ca80bd5.js similarity index 100% rename from main/docs/.vuepress/dist/assets/ranges.html-3ca80bd5.js rename to content/main/docs/.vuepress/dist/assets/ranges.html-3ca80bd5.js diff --git a/main/docs/.vuepress/dist/assets/ranges.html-3f025e6a.js b/content/main/docs/.vuepress/dist/assets/ranges.html-3f025e6a.js similarity index 100% rename from main/docs/.vuepress/dist/assets/ranges.html-3f025e6a.js rename to content/main/docs/.vuepress/dist/assets/ranges.html-3f025e6a.js diff --git a/main/docs/.vuepress/dist/assets/repl.html-e0ab52fe.js b/content/main/docs/.vuepress/dist/assets/repl.html-e0ab52fe.js similarity index 100% rename from main/docs/.vuepress/dist/assets/repl.html-e0ab52fe.js rename to content/main/docs/.vuepress/dist/assets/repl.html-e0ab52fe.js diff --git a/main/docs/.vuepress/dist/assets/repl.html-e56c24b3.js b/content/main/docs/.vuepress/dist/assets/repl.html-e56c24b3.js similarity index 100% rename from main/docs/.vuepress/dist/assets/repl.html-e56c24b3.js rename to content/main/docs/.vuepress/dist/assets/repl.html-e56c24b3.js diff --git a/main/docs/.vuepress/dist/assets/scope.html-8abe8ae3.js b/content/main/docs/.vuepress/dist/assets/scope.html-8abe8ae3.js similarity index 100% rename from main/docs/.vuepress/dist/assets/scope.html-8abe8ae3.js rename to content/main/docs/.vuepress/dist/assets/scope.html-8abe8ae3.js diff --git a/main/docs/.vuepress/dist/assets/scope.html-e02d0c59.js b/content/main/docs/.vuepress/dist/assets/scope.html-e02d0c59.js similarity index 100% rename from main/docs/.vuepress/dist/assets/scope.html-e02d0c59.js rename to content/main/docs/.vuepress/dist/assets/scope.html-e02d0c59.js diff --git a/main/docs/.vuepress/dist/assets/serialize.html-f25dd295.js b/content/main/docs/.vuepress/dist/assets/serialize.html-f25dd295.js similarity index 100% rename from main/docs/.vuepress/dist/assets/serialize.html-f25dd295.js rename to content/main/docs/.vuepress/dist/assets/serialize.html-f25dd295.js diff --git a/main/docs/.vuepress/dist/assets/serialize.html-faa98dc9.js b/content/main/docs/.vuepress/dist/assets/serialize.html-faa98dc9.js similarity index 100% rename from main/docs/.vuepress/dist/assets/serialize.html-faa98dc9.js rename to content/main/docs/.vuepress/dist/assets/serialize.html-faa98dc9.js diff --git a/main/docs/.vuepress/dist/assets/std.html-014dd46a.js b/content/main/docs/.vuepress/dist/assets/std.html-014dd46a.js similarity index 100% rename from main/docs/.vuepress/dist/assets/std.html-014dd46a.js rename to content/main/docs/.vuepress/dist/assets/std.html-014dd46a.js diff --git a/main/docs/.vuepress/dist/assets/std.html-d8724455.js b/content/main/docs/.vuepress/dist/assets/std.html-d8724455.js similarity index 100% rename from main/docs/.vuepress/dist/assets/std.html-d8724455.js rename to content/main/docs/.vuepress/dist/assets/std.html-d8724455.js diff --git a/main/docs/.vuepress/dist/assets/strings.html-19211e8e.js b/content/main/docs/.vuepress/dist/assets/strings.html-19211e8e.js similarity index 100% rename from main/docs/.vuepress/dist/assets/strings.html-19211e8e.js rename to content/main/docs/.vuepress/dist/assets/strings.html-19211e8e.js diff --git a/main/docs/.vuepress/dist/assets/strings.html-9536272f.js b/content/main/docs/.vuepress/dist/assets/strings.html-9536272f.js similarity index 100% rename from main/docs/.vuepress/dist/assets/strings.html-9536272f.js rename to content/main/docs/.vuepress/dist/assets/strings.html-9536272f.js diff --git a/main/docs/.vuepress/dist/assets/style-5aa52750.css b/content/main/docs/.vuepress/dist/assets/style-5aa52750.css similarity index 100% rename from main/docs/.vuepress/dist/assets/style-5aa52750.css rename to content/main/docs/.vuepress/dist/assets/style-5aa52750.css diff --git a/main/docs/.vuepress/dist/assets/syntax.html-979ec2fd.js b/content/main/docs/.vuepress/dist/assets/syntax.html-979ec2fd.js similarity index 100% rename from main/docs/.vuepress/dist/assets/syntax.html-979ec2fd.js rename to content/main/docs/.vuepress/dist/assets/syntax.html-979ec2fd.js diff --git a/main/docs/.vuepress/dist/assets/syntax.html-c5ec77a6.js b/content/main/docs/.vuepress/dist/assets/syntax.html-c5ec77a6.js similarity index 100% rename from main/docs/.vuepress/dist/assets/syntax.html-c5ec77a6.js rename to content/main/docs/.vuepress/dist/assets/syntax.html-c5ec77a6.js diff --git a/main/docs/.vuepress/dist/assets/testing.html-23e53806.js b/content/main/docs/.vuepress/dist/assets/testing.html-23e53806.js similarity index 100% rename from main/docs/.vuepress/dist/assets/testing.html-23e53806.js rename to content/main/docs/.vuepress/dist/assets/testing.html-23e53806.js diff --git a/main/docs/.vuepress/dist/assets/testing.html-ee7981d7.js b/content/main/docs/.vuepress/dist/assets/testing.html-ee7981d7.js similarity index 100% rename from main/docs/.vuepress/dist/assets/testing.html-ee7981d7.js rename to content/main/docs/.vuepress/dist/assets/testing.html-ee7981d7.js diff --git a/main/docs/.vuepress/dist/assets/toml.html-69771c57.js b/content/main/docs/.vuepress/dist/assets/toml.html-69771c57.js similarity index 100% rename from main/docs/.vuepress/dist/assets/toml.html-69771c57.js rename to content/main/docs/.vuepress/dist/assets/toml.html-69771c57.js diff --git a/main/docs/.vuepress/dist/assets/toml.html-f24fd17d.js b/content/main/docs/.vuepress/dist/assets/toml.html-f24fd17d.js similarity index 100% rename from main/docs/.vuepress/dist/assets/toml.html-f24fd17d.js rename to content/main/docs/.vuepress/dist/assets/toml.html-f24fd17d.js diff --git a/main/docs/.vuepress/dist/assets/types.html-2dc8ea4a.js b/content/main/docs/.vuepress/dist/assets/types.html-2dc8ea4a.js similarity index 100% rename from main/docs/.vuepress/dist/assets/types.html-2dc8ea4a.js rename to content/main/docs/.vuepress/dist/assets/types.html-2dc8ea4a.js diff --git a/main/docs/.vuepress/dist/assets/types.html-f2d7ed88.js b/content/main/docs/.vuepress/dist/assets/types.html-f2d7ed88.js similarity index 100% rename from main/docs/.vuepress/dist/assets/types.html-f2d7ed88.js rename to content/main/docs/.vuepress/dist/assets/types.html-f2d7ed88.js diff --git a/main/docs/.vuepress/dist/buzz.wasm b/content/main/docs/.vuepress/dist/buzz.wasm similarity index 100% rename from main/docs/.vuepress/dist/buzz.wasm rename to content/main/docs/.vuepress/dist/buzz.wasm diff --git a/main/docs/.vuepress/dist/favicon.ico b/content/main/docs/.vuepress/dist/favicon.ico similarity index 100% rename from main/docs/.vuepress/dist/favicon.ico rename to content/main/docs/.vuepress/dist/favicon.ico diff --git a/main/docs/.vuepress/dist/guide/building-installing.html b/content/main/docs/.vuepress/dist/guide/building-installing.html similarity index 100% rename from main/docs/.vuepress/dist/guide/building-installing.html rename to content/main/docs/.vuepress/dist/guide/building-installing.html diff --git a/main/docs/.vuepress/dist/guide/calling-native-code.html b/content/main/docs/.vuepress/dist/guide/calling-native-code.html similarity index 100% rename from main/docs/.vuepress/dist/guide/calling-native-code.html rename to content/main/docs/.vuepress/dist/guide/calling-native-code.html diff --git a/main/docs/.vuepress/dist/guide/control-flow.html b/content/main/docs/.vuepress/dist/guide/control-flow.html similarity index 100% rename from main/docs/.vuepress/dist/guide/control-flow.html rename to content/main/docs/.vuepress/dist/guide/control-flow.html diff --git a/main/docs/.vuepress/dist/guide/enums.html b/content/main/docs/.vuepress/dist/guide/enums.html similarity index 100% rename from main/docs/.vuepress/dist/guide/enums.html rename to content/main/docs/.vuepress/dist/guide/enums.html diff --git a/main/docs/.vuepress/dist/guide/errors.html b/content/main/docs/.vuepress/dist/guide/errors.html similarity index 100% rename from main/docs/.vuepress/dist/guide/errors.html rename to content/main/docs/.vuepress/dist/guide/errors.html diff --git a/main/docs/.vuepress/dist/guide/ffi.html b/content/main/docs/.vuepress/dist/guide/ffi.html similarity index 100% rename from main/docs/.vuepress/dist/guide/ffi.html rename to content/main/docs/.vuepress/dist/guide/ffi.html diff --git a/main/docs/.vuepress/dist/guide/fibers.html b/content/main/docs/.vuepress/dist/guide/fibers.html similarity index 100% rename from main/docs/.vuepress/dist/guide/fibers.html rename to content/main/docs/.vuepress/dist/guide/fibers.html diff --git a/main/docs/.vuepress/dist/guide/functions.html b/content/main/docs/.vuepress/dist/guide/functions.html similarity index 100% rename from main/docs/.vuepress/dist/guide/functions.html rename to content/main/docs/.vuepress/dist/guide/functions.html diff --git a/main/docs/.vuepress/dist/guide/get-started.html b/content/main/docs/.vuepress/dist/guide/get-started.html similarity index 100% rename from main/docs/.vuepress/dist/guide/get-started.html rename to content/main/docs/.vuepress/dist/guide/get-started.html diff --git a/main/docs/.vuepress/dist/guide/import-export.html b/content/main/docs/.vuepress/dist/guide/import-export.html similarity index 100% rename from main/docs/.vuepress/dist/guide/import-export.html rename to content/main/docs/.vuepress/dist/guide/import-export.html diff --git a/main/docs/.vuepress/dist/guide/index.html b/content/main/docs/.vuepress/dist/guide/index.html similarity index 100% rename from main/docs/.vuepress/dist/guide/index.html rename to content/main/docs/.vuepress/dist/guide/index.html diff --git a/main/docs/.vuepress/dist/guide/null-safety.html b/content/main/docs/.vuepress/dist/guide/null-safety.html similarity index 100% rename from main/docs/.vuepress/dist/guide/null-safety.html rename to content/main/docs/.vuepress/dist/guide/null-safety.html diff --git a/main/docs/.vuepress/dist/guide/objects.html b/content/main/docs/.vuepress/dist/guide/objects.html similarity index 100% rename from main/docs/.vuepress/dist/guide/objects.html rename to content/main/docs/.vuepress/dist/guide/objects.html diff --git a/main/docs/.vuepress/dist/guide/package.html b/content/main/docs/.vuepress/dist/guide/package.html similarity index 100% rename from main/docs/.vuepress/dist/guide/package.html rename to content/main/docs/.vuepress/dist/guide/package.html diff --git a/main/docs/.vuepress/dist/guide/protocols.html b/content/main/docs/.vuepress/dist/guide/protocols.html similarity index 100% rename from main/docs/.vuepress/dist/guide/protocols.html rename to content/main/docs/.vuepress/dist/guide/protocols.html diff --git a/main/docs/.vuepress/dist/guide/scope.html b/content/main/docs/.vuepress/dist/guide/scope.html similarity index 100% rename from main/docs/.vuepress/dist/guide/scope.html rename to content/main/docs/.vuepress/dist/guide/scope.html diff --git a/main/docs/.vuepress/dist/guide/syntax.html b/content/main/docs/.vuepress/dist/guide/syntax.html similarity index 100% rename from main/docs/.vuepress/dist/guide/syntax.html rename to content/main/docs/.vuepress/dist/guide/syntax.html diff --git a/main/docs/.vuepress/dist/guide/types.html b/content/main/docs/.vuepress/dist/guide/types.html similarity index 100% rename from main/docs/.vuepress/dist/guide/types.html rename to content/main/docs/.vuepress/dist/guide/types.html diff --git a/main/docs/.vuepress/dist/index.html b/content/main/docs/.vuepress/dist/index.html similarity index 100% rename from main/docs/.vuepress/dist/index.html rename to content/main/docs/.vuepress/dist/index.html diff --git a/main/docs/.vuepress/public/logo.png b/content/main/docs/.vuepress/dist/logo.png similarity index 100% rename from main/docs/.vuepress/public/logo.png rename to content/main/docs/.vuepress/dist/logo.png diff --git a/main/docs/.vuepress/dist/reference/api.html b/content/main/docs/.vuepress/dist/reference/api.html similarity index 100% rename from main/docs/.vuepress/dist/reference/api.html rename to content/main/docs/.vuepress/dist/reference/api.html diff --git a/main/docs/.vuepress/dist/reference/builtins/fibers.html b/content/main/docs/.vuepress/dist/reference/builtins/fibers.html similarity index 100% rename from main/docs/.vuepress/dist/reference/builtins/fibers.html rename to content/main/docs/.vuepress/dist/reference/builtins/fibers.html diff --git a/main/docs/.vuepress/dist/reference/builtins/lists.html b/content/main/docs/.vuepress/dist/reference/builtins/lists.html similarity index 100% rename from main/docs/.vuepress/dist/reference/builtins/lists.html rename to content/main/docs/.vuepress/dist/reference/builtins/lists.html diff --git a/main/docs/.vuepress/dist/reference/builtins/maps.html b/content/main/docs/.vuepress/dist/reference/builtins/maps.html similarity index 100% rename from main/docs/.vuepress/dist/reference/builtins/maps.html rename to content/main/docs/.vuepress/dist/reference/builtins/maps.html diff --git a/main/docs/.vuepress/dist/reference/builtins/patterns.html b/content/main/docs/.vuepress/dist/reference/builtins/patterns.html similarity index 100% rename from main/docs/.vuepress/dist/reference/builtins/patterns.html rename to content/main/docs/.vuepress/dist/reference/builtins/patterns.html diff --git a/main/docs/.vuepress/dist/reference/builtins/ranges.html b/content/main/docs/.vuepress/dist/reference/builtins/ranges.html similarity index 100% rename from main/docs/.vuepress/dist/reference/builtins/ranges.html rename to content/main/docs/.vuepress/dist/reference/builtins/ranges.html diff --git a/main/docs/.vuepress/dist/reference/builtins/strings.html b/content/main/docs/.vuepress/dist/reference/builtins/strings.html similarity index 100% rename from main/docs/.vuepress/dist/reference/builtins/strings.html rename to content/main/docs/.vuepress/dist/reference/builtins/strings.html diff --git a/main/docs/.vuepress/dist/reference/index.html b/content/main/docs/.vuepress/dist/reference/index.html similarity index 100% rename from main/docs/.vuepress/dist/reference/index.html rename to content/main/docs/.vuepress/dist/reference/index.html diff --git a/main/docs/.vuepress/dist/reference/std/buffer.html b/content/main/docs/.vuepress/dist/reference/std/buffer.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/buffer.html rename to content/main/docs/.vuepress/dist/reference/std/buffer.html diff --git a/main/docs/.vuepress/dist/reference/std/crypto.html b/content/main/docs/.vuepress/dist/reference/std/crypto.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/crypto.html rename to content/main/docs/.vuepress/dist/reference/std/crypto.html diff --git a/main/docs/.vuepress/dist/reference/std/debug.html b/content/main/docs/.vuepress/dist/reference/std/debug.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/debug.html rename to content/main/docs/.vuepress/dist/reference/std/debug.html diff --git a/main/docs/.vuepress/dist/reference/std/errors.html b/content/main/docs/.vuepress/dist/reference/std/errors.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/errors.html rename to content/main/docs/.vuepress/dist/reference/std/errors.html diff --git a/main/docs/.vuepress/dist/reference/std/ffi.html b/content/main/docs/.vuepress/dist/reference/std/ffi.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/ffi.html rename to content/main/docs/.vuepress/dist/reference/std/ffi.html diff --git a/main/docs/.vuepress/dist/reference/std/fs.html b/content/main/docs/.vuepress/dist/reference/std/fs.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/fs.html rename to content/main/docs/.vuepress/dist/reference/std/fs.html diff --git a/main/docs/.vuepress/dist/reference/std/gc.html b/content/main/docs/.vuepress/dist/reference/std/gc.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/gc.html rename to content/main/docs/.vuepress/dist/reference/std/gc.html diff --git a/main/docs/.vuepress/dist/reference/std/http.html b/content/main/docs/.vuepress/dist/reference/std/http.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/http.html rename to content/main/docs/.vuepress/dist/reference/std/http.html diff --git a/main/docs/.vuepress/dist/reference/std/io.html b/content/main/docs/.vuepress/dist/reference/std/io.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/io.html rename to content/main/docs/.vuepress/dist/reference/std/io.html diff --git a/main/docs/.vuepress/dist/reference/std/manifest.html b/content/main/docs/.vuepress/dist/reference/std/manifest.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/manifest.html rename to content/main/docs/.vuepress/dist/reference/std/manifest.html diff --git a/main/docs/.vuepress/dist/reference/std/math.html b/content/main/docs/.vuepress/dist/reference/std/math.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/math.html rename to content/main/docs/.vuepress/dist/reference/std/math.html diff --git a/main/docs/.vuepress/dist/reference/std/os.html b/content/main/docs/.vuepress/dist/reference/std/os.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/os.html rename to content/main/docs/.vuepress/dist/reference/std/os.html diff --git a/main/docs/.vuepress/dist/reference/std/serialize.html b/content/main/docs/.vuepress/dist/reference/std/serialize.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/serialize.html rename to content/main/docs/.vuepress/dist/reference/std/serialize.html diff --git a/main/docs/.vuepress/dist/reference/std/std.html b/content/main/docs/.vuepress/dist/reference/std/std.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/std.html rename to content/main/docs/.vuepress/dist/reference/std/std.html diff --git a/main/docs/.vuepress/dist/reference/std/testing.html b/content/main/docs/.vuepress/dist/reference/std/testing.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/testing.html rename to content/main/docs/.vuepress/dist/reference/std/testing.html diff --git a/main/docs/.vuepress/dist/reference/std/toml.html b/content/main/docs/.vuepress/dist/reference/std/toml.html similarity index 100% rename from main/docs/.vuepress/dist/reference/std/toml.html rename to content/main/docs/.vuepress/dist/reference/std/toml.html diff --git a/main/docs/.vuepress/dist/repl.html b/content/main/docs/.vuepress/dist/repl.html similarity index 100% rename from main/docs/.vuepress/dist/repl.html rename to content/main/docs/.vuepress/dist/repl.html diff --git a/main/docs/.vuepress/public/.DS_Store b/content/main/docs/.vuepress/public/.DS_Store similarity index 100% rename from main/docs/.vuepress/public/.DS_Store rename to content/main/docs/.vuepress/public/.DS_Store diff --git a/main/docs/.vuepress/public/buzz.wasm b/content/main/docs/.vuepress/public/buzz.wasm similarity index 100% rename from main/docs/.vuepress/public/buzz.wasm rename to content/main/docs/.vuepress/public/buzz.wasm diff --git a/main/docs/.vuepress/public/favicon.ico b/content/main/docs/.vuepress/public/favicon.ico similarity index 100% rename from main/docs/.vuepress/public/favicon.ico rename to content/main/docs/.vuepress/public/favicon.ico diff --git a/content/main/docs/.vuepress/public/logo.png b/content/main/docs/.vuepress/public/logo.png new file mode 100644 index 00000000..12aec3e1 Binary files /dev/null and b/content/main/docs/.vuepress/public/logo.png differ diff --git a/main/docs/.vuepress/styles/index.scss b/content/main/docs/.vuepress/styles/index.scss similarity index 100% rename from main/docs/.vuepress/styles/index.scss rename to content/main/docs/.vuepress/styles/index.scss diff --git a/main/docs/guide/README.md b/content/main/docs/guide/README.md similarity index 100% rename from main/docs/guide/README.md rename to content/main/docs/guide/README.md diff --git a/main/docs/guide/building-installing.md b/content/main/docs/guide/building-installing.md similarity index 100% rename from main/docs/guide/building-installing.md rename to content/main/docs/guide/building-installing.md diff --git a/main/docs/guide/calling-native-code.md b/content/main/docs/guide/calling-native-code.md similarity index 100% rename from main/docs/guide/calling-native-code.md rename to content/main/docs/guide/calling-native-code.md diff --git a/main/docs/guide/control-flow.md b/content/main/docs/guide/control-flow.md similarity index 100% rename from main/docs/guide/control-flow.md rename to content/main/docs/guide/control-flow.md diff --git a/main/docs/guide/enums.md b/content/main/docs/guide/enums.md similarity index 100% rename from main/docs/guide/enums.md rename to content/main/docs/guide/enums.md diff --git a/main/docs/guide/errors.md b/content/main/docs/guide/errors.md similarity index 100% rename from main/docs/guide/errors.md rename to content/main/docs/guide/errors.md diff --git a/main/docs/guide/ffi.md b/content/main/docs/guide/ffi.md similarity index 100% rename from main/docs/guide/ffi.md rename to content/main/docs/guide/ffi.md diff --git a/main/docs/guide/fibers.md b/content/main/docs/guide/fibers.md similarity index 100% rename from main/docs/guide/fibers.md rename to content/main/docs/guide/fibers.md diff --git a/main/docs/guide/functions.md b/content/main/docs/guide/functions.md similarity index 100% rename from main/docs/guide/functions.md rename to content/main/docs/guide/functions.md diff --git a/main/docs/guide/get-started.md b/content/main/docs/guide/get-started.md similarity index 100% rename from main/docs/guide/get-started.md rename to content/main/docs/guide/get-started.md diff --git a/main/docs/guide/import-export.md b/content/main/docs/guide/import-export.md similarity index 100% rename from main/docs/guide/import-export.md rename to content/main/docs/guide/import-export.md diff --git a/main/docs/guide/null-safety.md b/content/main/docs/guide/null-safety.md similarity index 100% rename from main/docs/guide/null-safety.md rename to content/main/docs/guide/null-safety.md diff --git a/main/docs/guide/objects.md b/content/main/docs/guide/objects.md similarity index 100% rename from main/docs/guide/objects.md rename to content/main/docs/guide/objects.md diff --git a/main/docs/guide/package.md b/content/main/docs/guide/package.md similarity index 100% rename from main/docs/guide/package.md rename to content/main/docs/guide/package.md diff --git a/main/docs/guide/protocols.md b/content/main/docs/guide/protocols.md similarity index 100% rename from main/docs/guide/protocols.md rename to content/main/docs/guide/protocols.md diff --git a/main/docs/guide/scope.md b/content/main/docs/guide/scope.md similarity index 100% rename from main/docs/guide/scope.md rename to content/main/docs/guide/scope.md diff --git a/main/docs/guide/syntax.md b/content/main/docs/guide/syntax.md similarity index 100% rename from main/docs/guide/syntax.md rename to content/main/docs/guide/syntax.md diff --git a/main/docs/guide/types.md b/content/main/docs/guide/types.md similarity index 100% rename from main/docs/guide/types.md rename to content/main/docs/guide/types.md diff --git a/main/docs/index.md b/content/main/docs/index.md similarity index 100% rename from main/docs/index.md rename to content/main/docs/index.md diff --git a/main/docs/reference/README.md b/content/main/docs/reference/README.md similarity index 100% rename from main/docs/reference/README.md rename to content/main/docs/reference/README.md diff --git a/main/docs/reference/api.md b/content/main/docs/reference/api.md similarity index 100% rename from main/docs/reference/api.md rename to content/main/docs/reference/api.md diff --git a/main/docs/reference/builtins/fibers.md b/content/main/docs/reference/builtins/fibers.md similarity index 100% rename from main/docs/reference/builtins/fibers.md rename to content/main/docs/reference/builtins/fibers.md diff --git a/main/docs/reference/builtins/lists.md b/content/main/docs/reference/builtins/lists.md similarity index 100% rename from main/docs/reference/builtins/lists.md rename to content/main/docs/reference/builtins/lists.md diff --git a/main/docs/reference/builtins/maps.md b/content/main/docs/reference/builtins/maps.md similarity index 100% rename from main/docs/reference/builtins/maps.md rename to content/main/docs/reference/builtins/maps.md diff --git a/main/docs/reference/builtins/patterns.md b/content/main/docs/reference/builtins/patterns.md similarity index 100% rename from main/docs/reference/builtins/patterns.md rename to content/main/docs/reference/builtins/patterns.md diff --git a/main/docs/reference/builtins/ranges.md b/content/main/docs/reference/builtins/ranges.md similarity index 100% rename from main/docs/reference/builtins/ranges.md rename to content/main/docs/reference/builtins/ranges.md diff --git a/main/docs/reference/builtins/strings.md b/content/main/docs/reference/builtins/strings.md similarity index 100% rename from main/docs/reference/builtins/strings.md rename to content/main/docs/reference/builtins/strings.md diff --git a/main/docs/reference/std/buffer.md b/content/main/docs/reference/std/buffer.md similarity index 100% rename from main/docs/reference/std/buffer.md rename to content/main/docs/reference/std/buffer.md diff --git a/main/docs/reference/std/crypto.md b/content/main/docs/reference/std/crypto.md similarity index 100% rename from main/docs/reference/std/crypto.md rename to content/main/docs/reference/std/crypto.md diff --git a/main/docs/reference/std/debug.md b/content/main/docs/reference/std/debug.md similarity index 100% rename from main/docs/reference/std/debug.md rename to content/main/docs/reference/std/debug.md diff --git a/main/docs/reference/std/errors.md b/content/main/docs/reference/std/errors.md similarity index 100% rename from main/docs/reference/std/errors.md rename to content/main/docs/reference/std/errors.md diff --git a/main/docs/reference/std/ffi.md b/content/main/docs/reference/std/ffi.md similarity index 100% rename from main/docs/reference/std/ffi.md rename to content/main/docs/reference/std/ffi.md diff --git a/main/docs/reference/std/fs.md b/content/main/docs/reference/std/fs.md similarity index 100% rename from main/docs/reference/std/fs.md rename to content/main/docs/reference/std/fs.md diff --git a/main/docs/reference/std/gc.md b/content/main/docs/reference/std/gc.md similarity index 100% rename from main/docs/reference/std/gc.md rename to content/main/docs/reference/std/gc.md diff --git a/main/docs/reference/std/http.md b/content/main/docs/reference/std/http.md similarity index 100% rename from main/docs/reference/std/http.md rename to content/main/docs/reference/std/http.md diff --git a/main/docs/reference/std/io.md b/content/main/docs/reference/std/io.md similarity index 100% rename from main/docs/reference/std/io.md rename to content/main/docs/reference/std/io.md diff --git a/main/docs/reference/std/manifest.md b/content/main/docs/reference/std/manifest.md similarity index 100% rename from main/docs/reference/std/manifest.md rename to content/main/docs/reference/std/manifest.md diff --git a/main/docs/reference/std/math.md b/content/main/docs/reference/std/math.md similarity index 100% rename from main/docs/reference/std/math.md rename to content/main/docs/reference/std/math.md diff --git a/main/docs/reference/std/os.md b/content/main/docs/reference/std/os.md similarity index 100% rename from main/docs/reference/std/os.md rename to content/main/docs/reference/std/os.md diff --git a/main/docs/reference/std/serialize.md b/content/main/docs/reference/std/serialize.md similarity index 100% rename from main/docs/reference/std/serialize.md rename to content/main/docs/reference/std/serialize.md diff --git a/main/docs/reference/std/std.md b/content/main/docs/reference/std/std.md similarity index 100% rename from main/docs/reference/std/std.md rename to content/main/docs/reference/std/std.md diff --git a/main/docs/reference/std/testing.md b/content/main/docs/reference/std/testing.md similarity index 100% rename from main/docs/reference/std/testing.md rename to content/main/docs/reference/std/testing.md diff --git a/main/docs/reference/std/toml.md b/content/main/docs/reference/std/toml.md similarity index 100% rename from main/docs/reference/std/toml.md rename to content/main/docs/reference/std/toml.md diff --git a/main/docs/repl.md b/content/main/docs/repl.md similarity index 100% rename from main/docs/repl.md rename to content/main/docs/repl.md diff --git a/content/main/guide/index.smd b/content/main/guide/index.smd new file mode 100644 index 00000000..38bc1b9c --- /dev/null +++ b/content/main/guide/index.smd @@ -0,0 +1,11 @@ +--- +.title = "buzz", +.description = "A small/lightweight statically typed scripting language", +.date = .date("1990-01-01T00:00:00"), +.custom = { + "version": "main", +}, +.layout = "page.shtml", +--- + +TODO: Guide diff --git a/content/main/index.smd b/content/main/index.smd new file mode 100644 index 00000000..21691e20 --- /dev/null +++ b/content/main/index.smd @@ -0,0 +1,81 @@ +--- +.title = "buzz", +.description = "A small/lightweight statically typed scripting language", +.date = .date("1990-01-01T00:00:00"), +.custom = { + "version": "main", + "actions": [ + { "text": "Guide", "link": "guide" }, + { "text": "Reference", "link": "reference" }, + { "text": "Try it", "link": "repl" }, + { "text": "Latest release", "link": "https://github.com/buzz-language/buzz/releases/tag/0.5.0", "external": true }, + ], + "features": [ + { + "title": "Statically typed", + "details": "Find out bugs in your IDE rather than production", + }, + { + "title": "JIT compiled", + "details": "Uses MIR, a fast and lightweight JIT compiler", + }, + { + "title": "Unambiguous", + "details": "No implicit behavior or unexpected type coercion", + }, + { + "title": "Small in size and complexity", + "details": "Does not take much space on your drive or in your mind", + }, + { + "title": "Interoperability with C", + "details": "Call C functions easily with FFIs and embed buzz with its C API", + }, + { + "title": "Fibers", + "details": "Single threaded cooperative multitasking", + }, + ], +}, +.layout = "home.shtml", +--- + +```kotlin buzz +import "buzz:std"; + +enum State { todo, doing, done } + +object Task { + title: str, + points: int?, + state: State = .todo, + + fun score() => match (this.state) { + .done -> this.points ?? 0, + .doing, .todo -> 0 + }; +} + +fun scores(tasks: [Task]) > str *> int { + foreach (task in tasks) { + _ = yield task.score(); + } + return "scored {tasks.len()} tasks"; +} + +fun main() > void { + final tasks: [Task] = [ + .{ title = "parser", points = 8, state = .done }, + .{ title = "lsp", points = 5, state = .doing }, + .{ title = "docs", points = 3 }, + ]; + + var total = 0; + final fiber = &scores(tasks); + foreach (score in fiber) { + total += score; + } + + std\print("completed points: {total}, message is {resolve fiber}"); +} +``` diff --git a/main/nginx.conf b/content/main/nginx.conf similarity index 100% rename from main/nginx.conf rename to content/main/nginx.conf diff --git a/main/package.json b/content/main/package.json similarity index 100% rename from main/package.json rename to content/main/package.json diff --git a/main/pnpm-lock.yaml b/content/main/pnpm-lock.yaml similarity index 100% rename from main/pnpm-lock.yaml rename to content/main/pnpm-lock.yaml diff --git a/content/main/reference/index.smd b/content/main/reference/index.smd new file mode 100644 index 00000000..5dc2376d --- /dev/null +++ b/content/main/reference/index.smd @@ -0,0 +1,11 @@ +--- +.title = "buzz", +.description = "A small/lightweight statically typed scripting language", +.date = .date("1990-01-01T00:00:00"), +.custom = { + "version": "main", +}, +.layout = "page.shtml", +--- + +TODO: Reference diff --git a/content/main/repl.smd b/content/main/repl.smd new file mode 100644 index 00000000..11b77015 --- /dev/null +++ b/content/main/repl.smd @@ -0,0 +1,11 @@ +--- +.title = "buzz", +.description = "A small/lightweight statically typed scripting language", +.date = .date("1990-01-01T00:00:00"), +.custom = { + "version": "main", +}, +.layout = "page.shtml", +--- + +TODO: REPL diff --git a/layouts/home.shtml b/layouts/home.shtml new file mode 100644 index 00000000..992696b9 --- /dev/null +++ b/layouts/home.shtml @@ -0,0 +1,37 @@ + + + +
+
+ buzz +

+

+

+ + + + + + + + + + + +

+
+ +
+
+

+

+
+
+
+
+ diff --git a/layouts/index.shtml b/layouts/index.shtml new file mode 100644 index 00000000..8a91c9c9 --- /dev/null +++ b/layouts/index.shtml @@ -0,0 +1,6 @@ + + + +

+
+ diff --git a/layouts/page.shtml b/layouts/page.shtml new file mode 100644 index 00000000..36efa7fb --- /dev/null +++ b/layouts/page.shtml @@ -0,0 +1,7 @@ + + + + +

+
+ diff --git a/layouts/post.shtml b/layouts/post.shtml new file mode 100644 index 00000000..5545052b --- /dev/null +++ b/layouts/post.shtml @@ -0,0 +1,40 @@ + + + + + +

+
+ + diff --git a/layouts/redirect.shtml b/layouts/redirect.shtml new file mode 100644 index 00000000..2e8789cb --- /dev/null +++ b/layouts/redirect.shtml @@ -0,0 +1,15 @@ + + + + + + + +

+

This page has moved. If you are not redirected automatically, please click the link below:

+

Go to the new page

+ diff --git a/layouts/templates/base.shtml b/layouts/templates/base.shtml new file mode 100644 index 00000000..9d1700c8 --- /dev/null +++ b/layouts/templates/base.shtml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/release b/release deleted file mode 120000 index 79a2734b..00000000 --- a/release +++ /dev/null @@ -1 +0,0 @@ -0.5.0 \ No newline at end of file diff --git a/zine.ziggy b/zine.ziggy new file mode 100644 index 00000000..cb41304a --- /dev/null +++ b/zine.ziggy @@ -0,0 +1,14 @@ +.zine_version = "0.13.0", +.site = .simple(.{ + .title = "buzz", + .host_url = "https://buzz-lang.dev", + .content_dir_path = "content", + .layouts_dir_path = "layouts", + .assets_dir_path = "assets", + .static_assets = [ + "Temml.woff2", + ], +}), +.custom = { + "latest_version": "0.5.0", +},