From cc4fde6912ee2c416873f8b15c75b2856d2fdb7e Mon Sep 17 00:00:00 2001 From: root Date: Sat, 14 Mar 2026 14:38:27 +0000 Subject: Update 2026 --- public/about-hugo/index.html | 11 +- public/about-us/index.html | 11 +- public/about.md.bak | 46 ++ public/about/index.html | 71 +- public/archives/index.html | 17 +- public/categories/index.html | 19 +- public/categories/index.xml | 7 +- public/contact/index.html | 11 +- ...f9f0563053de7f06a4d1bf7b85a59608bf96e566710.css | 174 +++++ ...78aa9c63b0b94d2d34fa61bc590bb5c42e31c0eced7.css | 798 +++++++++++++++++++++ ...25b2d1a9faf97f546982f44b3ffb9715a264da36c90.css | 787 ++++++++++++++++++++ ...4c90817e8273a7994cf333e4a47a2981193d2b8b5f0.css | 795 ++++++++++++++++++++ public/fonts/SimpleIcons.woff2 | Bin 0 -> 796696 bytes public/index.html | 21 +- public/index.xml | 31 +- public/js/MathJax.js | 19 + public/js/themetoggle.js | 36 +- public/katex/auto-render.min.js | 1 + public/katex/katex.min.css | 1 + public/katex/katex.min.js | 1 + public/page/1/index.html | 11 +- public/posts/index.html | 19 +- public/posts/index.xml | 24 +- public/posts/neovim.md.bak | 37 + public/posts/neovim/index.html | 83 ++- public/posts/notebook.md.bak | 36 + public/posts/notebook/index.html | 60 +- public/posts/ranger.md.bak | 35 + public/posts/ranger/index.html | 55 +- public/sitemap.xml | 6 +- public/svg/feather-sprite.svg | 1 + public/tags/index.html | 19 +- public/tags/index.xml | 17 +- public/tags/jupyter-notebook/index.html | 19 +- public/tags/jupyter-notebook/index.xml | 13 +- public/tags/neovim/index.html | 19 +- public/tags/neovim/index.xml | 12 +- public/tags/ranger/index.html | 19 +- public/tags/ranger/index.xml | 13 +- public/tags/tech/index.html | 19 +- public/tags/tech/index.xml | 24 +- public/tags/tutorial/index.html | 19 +- public/tags/tutorial/index.xml | 24 +- 43 files changed, 3126 insertions(+), 315 deletions(-) create mode 100644 public/about.md.bak create mode 100644 public/css/dark.f163b79c6de51d14a766ff9f0563053de7f06a4d1bf7b85a59608bf96e566710.css create mode 100644 public/css/main.5276b213c82635532e70278aa9c63b0b94d2d34fa61bc590bb5c42e31c0eced7.css create mode 100644 public/css/main.a87126a5d38398207e58225b2d1a9faf97f546982f44b3ffb9715a264da36c90.css create mode 100644 public/css/main.ac4b0a9155d8d1d5c87be4c90817e8273a7994cf333e4a47a2981193d2b8b5f0.css create mode 100644 public/fonts/SimpleIcons.woff2 create mode 100644 public/js/MathJax.js create mode 100644 public/katex/auto-render.min.js create mode 100644 public/katex/katex.min.css create mode 100644 public/katex/katex.min.js create mode 100644 public/posts/neovim.md.bak create mode 100644 public/posts/notebook.md.bak create mode 100644 public/posts/ranger.md.bak create mode 100644 public/svg/feather-sprite.svg (limited to 'public') diff --git a/public/about-hugo/index.html b/public/about-hugo/index.html index 4215391..d620d24 100644 --- a/public/about-hugo/index.html +++ b/public/about-hugo/index.html @@ -1,10 +1 @@ - - - - /about/ - - - - - - +/about/ \ No newline at end of file diff --git a/public/about-us/index.html b/public/about-us/index.html index 4215391..d620d24 100644 --- a/public/about-us/index.html +++ b/public/about-us/index.html @@ -1,10 +1 @@ - - - - /about/ - - - - - - +/about/ \ No newline at end of file diff --git a/public/about.md.bak b/public/about.md.bak new file mode 100644 index 0000000..73c16cf --- /dev/null +++ b/public/about.md.bak @@ -0,0 +1,46 @@ ++++ +title = "About Author" +description = "Mqdd Site Based on Hugo" +date = '2024-01-21' +aliases = ["about-us","about-hugo","contact"] +author = "Mqdd" ++++ + +{{< img src="/meh.gif" title="Me" alt="Profile Photo" >}} +Profile Photo + + +Nama Saya Ahmad Miqdad, saya merupakan mahasiswa prodi Teknik Telekomunikasi Politeknik Elektronika Negeri Surabaya (PENS). Sekarang saya bekerja sebagai IT Staff di PT.Indoteknik Dotcom Gemilang. Pekerjaan saya sehari-hari adalah sebagai Odoo Developer dan juga IT Support. + +# Work Experience +- IT Staff/Support (2025 - Now) + +# Experience +- Tukar Guling Odoo 14 Custom Models +- Peserta Penanggulangan Keadaan Darurat (PKD) Ke-108 Bandar Udara Juanda Surabaya +- Program Kreativitas Mahasiswa (PKM) Vokasi 2023 - Karsa Cipta +- Kerja Praktik PT. Angkasa Pura I (Airport Technology) +- Talent Scouting Academy (TSA) Indonesian Young Smart Industry Academy +- Latihan Keterampilan Manajemen Mahasiswa Tingkat Dasar +- Latihan Keterampilan Manajemen Mahasiswa Pra-Tingkat Dasar +- International General Certificate of Secondary Education Cambridge Assessment International Education +- Digital Technology Certification by UNSW Global +- "Design Your First Web" by HIMIT PENS + +# Project +* [Hackintosh T480](https://github.com/Mqdd227/https://github.com/Mqdd27/Hackintosh-T480 "Hackintosh for ThinkPad T480") +* [Prediksi Produksi Padi Menggunakan Metode LSTM-SVM di Kabupaten Gresik](https://github.com/Linc2427/Prediksi-Hasil-Panen "Prediksi Hasil Panen") +* [PKM-KC: 🔐 Sistem Keamanan dan Monitoring Berbasis IoT dengan Access Code dan GPS Tracking](https://https://github.com/Linc2427/TwinGuard "TwinGuard") +* [Website Pengecekan Bagasi Bandara Udara Juanda](https://github.com/Linc2427/Golek.in "Golek.in") +* [Aplikasi Vaksin Surabaya Menggunakan Zenity](https://github.com/Linc2427/Aplikasi-Vaksin-Bash "Aplikasi Vaksin") +* [Website Monitoring Lampu Penerangan Jalan Gresik PT.Telkom](https://github.com/Linc2427/SmartPju "Smart Pju") +* [Deteksi Suhu Pada Pintu Masuk Menggunakan Arduino](https://github.com/Linc2427/Si-HU "Si-HU") +* [Aplikasi E-Commerce Menggunakan Java](https://github.com/Linc2427/Aplikasi-E-commerce-Java "Aplikasi E-Commerce Java") +* [website Persewaan Buku](https://drive.google.com/drive/folders/19XisZQUZ89XGICcL_qbTS9s3AiDMIV1V "Website Persewaan Buku") +* [Linux Dotfiles](https://github.com/Linc2427/DotFiles/ "Linux Dotfiles") + +# Links/Contacts +* [Email](mailto:ahmadmiqdad27@gmail.com) +* [GitHub](https://github.com/Mqdd27/ "My Github") +* [LinkedIn](https://www.linkedin.com/in/ahmad-miqdadd/ "my linkedin profile") +* [Instagram](https://www.instagram.com/a.miqdad/ "my ig") diff --git a/public/about/index.html b/public/about/index.html index e25c722..6eae7c2 100644 --- a/public/about/index.html +++ b/public/about/index.html @@ -1,7 +1,7 @@ - About Author - 📙 Mqdd Blog Posts + About Author - 📙 Mqdd Personal Website @@ -11,7 +11,8 @@ - + + @@ -20,8 +21,8 @@ - - + + @@ -35,7 +36,7 @@
@@ -62,23 +63,30 @@
- -
- - Profile Photo - - -
-

Me

- -
- -
+
+
+ Profile Photo +
+ +
+ Me +
+ +
-

Nama Saya Ahmad Miqdad, saya merupakan mahasiswa prodi Teknik Telekomunikasi Politeknik Elektronika Negeri Surabaya (PENS). Saya memiliki minat dalam bidang Web Development dan IoT, dalam mengembangkan minat tersebut saya telah melakukan beberapa kegiatan yang dapat mengasah keahlian diantaranya mengikuti sertifikasi dan mengerjakan sebuah proyek.

+

Nama Saya Ahmad Miqdad, saya merupakan mahasiswa prodi Teknik Telekomunikasi Politeknik Elektronika Negeri Surabaya (PENS). Sekarang saya bekerja sebagai IT Staff di PT.Indoteknik Dotcom Gemilang. Pekerjaan saya sehari-hari adalah sebagai Odoo Developer dan juga IT Support. You can see my work on my mirror git repos here: Mirror Git Repos 😁😁😁

+

Work Experience

+
    +
  • IT Staff/Support (2025 - Now)
  • +

Experience

    +
  • Tukar Guling Odoo 14 Custom Models
  • Peserta Penanggulangan Keadaan Darurat (PKD) Ke-108 Bandar Udara Juanda Surabaya
  • Program Kreativitas Mahasiswa (PKM) Vokasi 2023 - Karsa Cipta
  • Kerja Praktik PT. Angkasa Pura I (Airport Technology)
  • @@ -91,22 +99,23 @@

Project

Links/Contacts

@@ -117,10 +126,10 @@ diff --git a/public/archives/index.html b/public/archives/index.html index 1a71a81..33b6797 100644 --- a/public/archives/index.html +++ b/public/archives/index.html @@ -1,7 +1,7 @@ - - 📙 Mqdd Blog Posts + - 📙 Mqdd Personal Website @@ -11,7 +11,8 @@ - + + @@ -20,8 +21,8 @@ - - + + @@ -35,7 +36,7 @@
@@ -73,10 +74,10 @@ diff --git a/public/categories/index.html b/public/categories/index.html index 592a7ae..3d6bd08 100644 --- a/public/categories/index.html +++ b/public/categories/index.html @@ -1,16 +1,17 @@ - Categories - 📙 Mqdd Blog Posts + Categories - 📙 Mqdd Personal Website - + - + + @@ -19,8 +20,8 @@ - - + + @@ -34,7 +35,7 @@
@@ -67,10 +68,10 @@
diff --git a/public/categories/index.xml b/public/categories/index.xml index e01667a..a474df4 100644 --- a/public/categories/index.xml +++ b/public/categories/index.xml @@ -1,12 +1,11 @@ - Categories on 📙 Mqdd Blog Posts + Categories on 📙 Mqdd Personal Website /categories/ - Recent content in Categories on 📙 Mqdd Blog Posts + Recent content in Categories on 📙 Mqdd Personal Website Hugo -- gohugo.io en-us - © Mqdd - + © Mqdd diff --git a/public/contact/index.html b/public/contact/index.html index 4215391..d620d24 100644 --- a/public/contact/index.html +++ b/public/contact/index.html @@ -1,10 +1 @@ - - - - /about/ - - - - - - +/about/ \ No newline at end of file diff --git a/public/css/dark.f163b79c6de51d14a766ff9f0563053de7f06a4d1bf7b85a59608bf96e566710.css b/public/css/dark.f163b79c6de51d14a766ff9f0563053de7f06a4d1bf7b85a59608bf96e566710.css new file mode 100644 index 0000000..0b0f8bc --- /dev/null +++ b/public/css/dark.f163b79c6de51d14a766ff9f0563053de7f06a4d1bf7b85a59608bf96e566710.css @@ -0,0 +1,174 @@ +/* Dark theme overrides */ +body { + color: var(--color-text-dark, #ffffff); + background-color: var(--color-background-dark, #202124); +} + +::-moz-selection { + background: var(--color-primary-dark, #50fa7b); + color: #000000; + text-shadow: none; +} + +::selection { + background: var(--color-primary-dark, #50fa7b); + color: #000000; + text-shadow: none; +} + +hr { + border-block-start: 3px dotted var(--color-border-dark, #0066ff); +} + +code { + background-color: var(--color-background-code-dark, #3a3a3a); + color: var(--color-text-dark, #ffffff); +} + +pre { + background-color: var(--color-background-pre-dark, #272822); + border-color: var(--color-border-dark, #0066ff); +} + +blockquote { + border-color: var(--color-border-dark, #0066ff); + color: var(--color-text-muted-dark, #dddddd); +} + +/* Headings */ +h1, +h2, +h3, +h4, +h5, +h6 { + color: var(--color-text-muted-dark, #dddddd); +} + +h1::before { color: var(--color-primary-dark, #50fa7b); } +h2::before { color: var(--color-primary-dark, #50fa7b); } +h3::before { color: var(--color-primary-dark, #50fa7b); } +h4::before { color: var(--color-primary-dark, #50fa7b); } +h5::before { color: var(--color-primary-dark, #50fa7b); } +h6::before { color: var(--color-primary-dark, #50fa7b); } + +.toc { + background-color: var(--color-background-toc-dark, #272822); + color: var(--color-text-dark, #ffffff); + border-color: var(--color-border-dark, #0066ff); +} + +/* Links */ +a { + border-block-end: 3px solid var(--color-primary-dark, #50fa7b); + color: inherit; +} + +a:hover, +a:focus { + background-color: var(--color-primary-dark, #50fa7b); + color: #000000; + outline-color: var(--color-primary-dark, #50fa7b); +} + +.site-description a { + color: var(--color-text-muted-dark, #dddddd); +} + +.site-description a:hover, +.site-description a:focus { + color: #000000; +} + +/* Tags */ +.tags a { + border-block-end: 3px solid var(--color-primary-dark, #50fa7b); +} + +.tags a:hover, +.tags a:focus { + background-color: var(--color-primary-dark, #50fa7b); + color: #000000; +} + +.site-title a { + color: var(--color-text-dark, #ffffff); + text-decoration: none !important; +} + +.header nav, +footer { + border-color: var(--color-border-dark, #0066ff); +} + +.highlight { + background-color: var(--color-background-pre-dark, #272822); +} + +.soc:hover, +.soc:focus { + color: #000000; + outline-color: var(--color-primary-dark, #50fa7b); +} + +.draft-label { + color: var(--color-text-dark, #ffffff); + background-color: var(--color-background-draft-dark, #0066ff); +} + +/* Tables in dark mode */ +table th { + background-color: var(--color-background-pre-dark, #272822); + color: var(--color-text-dark, #ffffff); + border-color: var(--color-border-dark, #0066ff); +} + +table td { + border-color: var(--color-border-dark, #0066ff); + color: var(--color-text-dark, #ffffff); +} + +table tr:nth-child(even) { + background-color: var(--color-background-code-dark, #3a3a3a); +} + +/* Navigation toggle in dark mode */ +.nav-toggle { + color: var(--color-text-dark, #ffffff); +} + +.nav-toggle:hover, +.nav-toggle:focus { + background-color: var(--color-primary-dark, #50fa7b); + color: #000000; + outline-color: var(--color-primary-dark, #50fa7b); +} +/* Language badges inherit from main.css - no duplicates needed */ + +/* Callouts in dark mode */ +.callout { + background-color: var(--color-background-pre-dark, #272822); + color: var(--color-text-dark, #ffffff); +} + +.callout-alert { + color: #f8d7da; + background-color: #2d1b1d; + border-color: #842029; +} + +.callout-tip { + color: #d1ecf1; + background-color: #0c2428; + border-color: #0f5132; +} + +.callout-warning { + color: #fff3cd; + background-color: #332701; + border-color: #997404; +} + +.callout-custom { + color: var(--color-text-dark, #ffffff); +} diff --git a/public/css/main.5276b213c82635532e70278aa9c63b0b94d2d34fa61bc590bb5c42e31c0eced7.css b/public/css/main.5276b213c82635532e70278aa9c63b0b94d2d34fa61bc590bb5c42e31c0eced7.css new file mode 100644 index 0000000..5eda9e3 --- /dev/null +++ b/public/css/main.5276b213c82635532e70278aa9c63b0b94d2d34fa61bc590bb5c42e31c0eced7.css @@ -0,0 +1,798 @@ +/* CSS Custom Properties */ +:root { + /* Light theme colors */ + --color-primary: #dc143c; + --color-primary-hover: #b91c3c; + --color-border: #663399; + --color-callout: #1e90ff; + --color-text: #232333; + --color-text-muted: #737373; + --color-text-meta: #999999; + --color-background: #ffffff; + --color-background-code: #f1f1f1; + --color-background-pre: #ececec; + --color-background-toc: #ececec; + --color-background-draft: #f9f2f4; + + /* Dark theme colors */ + --color-primary-dark: #50fa7b; + --color-primary-hover-dark: #3dd458; + --color-border-dark: #0066ff; + --color-text-dark: #ffffff; + --color-text-muted-dark: #dddddd; + --color-background-dark: #202124; + --color-background-code-dark: #3a3a3a; + --color-background-pre-dark: #272822; + --color-background-toc-dark: #272822; + --color-background-draft-dark: #0066ff; + + /* Spacing and sizing */ + --content-max-width: 800px; + --content-padding: 1ch; + --border-radius: 5px; + --font-size-base: 15px; + --line-height-base: 1.6; + --line-height-content: 1.5; +} +/* Reset and base styles */ +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + color: var(--color-text, #232333); + font-family: 'Roboto Mono', 'Courier New', monospace; + font-size: var(--font-size-base, 15px); + line-height: var(--line-height-base, 1.6); + scroll-behavior: smooth; +} + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } +} + +body { + margin: 8px; + background-color: var(--color-background, #ffffff); + transition: background-color 0.2s ease, color 0.2s ease; +} + +* { + -webkit-tap-highlight-color: transparent; +} + +/* Selection styles */ +::selection { + background: var(--color-primary, #dc143c); + color: #ffffff; +} + +::-moz-selection { + background: var(--color-primary, #dc143c); + color: #ffffff; +} + +/* Typography */ +p { + font-family: 'Fira Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + line-height: var(--line-height-content, 1.5); + /* Fallback for older browsers */ + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +@supports (margin-block: 0.5em) { + p { + margin-top: unset; + margin-bottom: unset; + margin-block: 0.5em; + } +} + +hr { + border: 0; + /* Fallback for older browsers */ + border-top: 3px dotted var(--color-border, #663399); + margin-top: 1em; + margin-bottom: 1em; +} + +@supports (border-block-start: 3px dotted var(--color-border, #663399)) { + hr { + border-top: unset; + margin-top: unset; + margin-bottom: unset; + border-block-start: 3px dotted var(--color-border, #663399); + margin-block: 1em; + } +} + +blockquote { + /* Fallback for older browsers */ + border-left: 3px solid var(--color-border, #663399); + padding-left: 1em; + color: var(--color-text-muted, #737373); + margin: 0; + font-style: italic; +} + +@supports (border-inline-start: 3px solid var(--color-border, #663399)) { + blockquote { + border-left: unset; + padding-left: unset; + border-inline-start: 3px solid var(--color-border, #663399); + padding-inline-start: 1em; + } +} + +/* Links */ +a { + /* Fallback for older browsers */ + border-bottom: 3px solid var(--color-primary, #dc143c); + /* Modern logical properties */ + border-block-end: 3px solid var(--color-primary, #dc143c); + color: inherit; + text-decoration: none; + transition: background-color 0.2s ease, color 0.2s ease; +} + +a:hover, +a:focus { + background-color: var(--color-primary-hover, #b91c3c); + color: #ffffff; + outline: 2px solid var(--color-primary, #dc143c); + outline-offset: 2px; +} + +a:focus { + outline-style: solid; +} + +/* Lists */ +ul { + list-style: none; + /* Fallback for older browsers */ + padding-left: 2ch; + /* Modern logical properties */ + padding-inline-start: 2ch; +} + +ul li { + text-indent: -2ch; +} + +ul > li::before { + content: '* '; + font-weight: bold; + color: var(--color-primary, #dc143c); +} + +/* Images */ +img { + border: 3px solid var(--color-background-pre, #ececec); + /* Fallback for older browsers */ + max-width: 100%; + height: auto; + /* Modern logical properties */ + max-inline-size: 100%; + block-size: auto; + border-radius: var(--border-radius, 5px); +} + +.center-img { + text-align: center; +} + +.center-img img { + display: block; + margin-left: auto; + margin-right: auto; + max-width: 300px; +} + +figure { + display: inline-block; + margin: 0; + /* Fallback for older browsers */ + max-width: 100%; + /* Modern logical properties */ + max-inline-size: 100%; +} + +figure img { + /* Fallback for older browsers */ + max-height: 500px; + /* Modern logical properties */ + max-block-size: 500px; +} + +@media screen and (min-width: 37.5em) { + figure { + /* Fallback for older browsers */ + padding-left: 2.5rem; + padding-right: 2.5rem; + /* Modern logical properties */ + padding-inline: 2.5rem; + } +} + +figure h4 { + font-size: 1rem; + margin: 0; + /* Fallback for older browsers */ + margin-bottom: 1em; + /* Modern logical properties */ + margin-block-end: 1em; +} + +figure h4::before { + content: '↳ '; + color: var(--color-primary, #dc143c); +} + +/* Code blocks */ +code { + background-color: var(--color-background-code, #f1f1f1); + padding: 0.1em 0.2em; + border-radius: 3px; + font-size: 0.9em; +} + +pre { + background-color: var(--color-background-pre, #ececec); + line-height: 1.4; + overflow-x: auto; + padding: 1em; + border-radius: var(--border-radius, 5px); + border: 1px solid var(--color-border, #663399); +} + +.highlight pre ::selection { + background: rgba(255, 255, 255, 0.2); + color: inherit; +} + +pre code { + background-color: transparent; + color: inherit; + font-size: 100%; + padding: 0; +} + +/* Layout containers */ +.content { + /* Fallback for older browsers */ + margin-bottom: 4em; + margin-left: auto; + margin-right: auto; + max-width: var(--content-max-width, 800px); + padding-left: var(--content-padding, 1ch); + padding-right: var(--content-padding, 1ch); + /* Modern logical properties */ + margin-block-end: 4em; + margin-inline: auto; + max-inline-size: var(--content-max-width, 800px); + padding-inline: var(--content-padding, 1ch); + word-wrap: break-word; + overflow-wrap: break-word; +} + +/* Header */ +header { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + /* Fallback for older browsers */ + margin-top: 1em; + margin-bottom: 1em; + /* Modern logical properties */ + margin-block: 1em; + line-height: 2.5em; + gap: 1rem; +} + +header .main { + font-size: 1.5rem; + font-weight: bold; +} + +/* Headings */ +h1, h2, h3, h4, h5, h6 { + font-size: 1.2rem; + /* Fallback for older browsers */ + margin-top: 2em; + margin-bottom: 0.5em; + /* Modern logical properties */ + margin-block-start: 2em; + margin-block-end: 0.5em; + line-height: 1.2; +} + +h1::before { color: var(--color-primary, #dc143c); content: '# '; } +h2::before { color: var(--color-primary, #dc143c); content: '## '; } +h3::before { color: var(--color-primary, #dc143c); content: '### '; } +h4::before { color: var(--color-primary, #dc143c); content: '#### '; } +h5::before { color: var(--color-primary, #dc143c); content: '##### '; } +h6::before { color: var(--color-primary, #dc143c); content: '###### '; } + +.meta { + color: var(--color-text-meta, #999999); + letter-spacing: -0.5px; + font-size: 0.9em; +} + +/* Post layout */ +.post-container { + /* Flexbox fallback for older browsers */ + display: flex; + flex-wrap: wrap; + gap: 1.25rem; + align-items: flex-start; +} + +@supports (display: grid) { + .post-container { + display: grid; + grid-template-columns: 1fr; + } +} + +@media screen and (min-width: 60em) { + .post-container { + /* Flexbox fallback */ + flex-wrap: nowrap; + } + + @supports (display: grid) { + .post-container { + grid-template-columns: 1fr auto; + } + } +} + +.post-content { + /* Flexbox fallback */ + flex: 1; + min-width: 0; + /* Modern properties */ + min-inline-size: 0; + overflow-wrap: break-word; +} + +.toc { + background-color: var(--color-background-toc, #ececec); + border-radius: var(--border-radius, 5px); + color: var(--color-text, #232333); + /* Fallback for older browsers */ + max-width: 18.75rem; + /* Flexbox fallback */ + flex: 0 0 auto; + /* Modern properties */ + max-inline-size: 18.75rem; + overflow-y: auto; + padding: 0.75rem; + border: 1px solid var(--color-border, #663399); +} + +@media screen and (min-width: 60em) { + .toc { + position: sticky; + /* Fallback for older browsers */ + top: 1.25rem; + /* Modern logical properties */ + inset-block-start: 1.25rem; + } +} + +@media screen and (max-width: 59.99em) { + .toc { + /* Fallback for older browsers */ + margin-bottom: 1.5rem; + /* Modern logical properties */ + margin-block-end: 1.5rem; + order: -1; + } +} + +/* Footer */ +footer { + display: flex; + align-items: center; + /* Fallback for older browsers */ + border-top: 0.4rem dotted var(--color-border, #663399); + padding-top: 2rem; + padding-bottom: 2rem; + margin-top: 2rem; + /* Modern logical properties */ + border-block-start: 0.4rem dotted var(--color-border, #663399); + padding-block: 2rem; + margin-block-start: 2rem; + gap: 0.5rem; + flex-wrap: wrap; +} + +.soc { + display: flex; + align-items: center; + /* Fallback for older browsers */ + border-bottom: none; + /* Modern logical properties */ + border-block-end: none; + transition: color 0.2s ease; +} + +.soc:hover, +.soc:focus { + color: #ffffff; + outline: 2px solid var(--color-primary, #dc143c); + outline-offset: 2px; +} + +.border { + margin-inline: 0.5rem; + border: 1px solid var(--color-border, #663399); +} + +/* Common elements */ +.title h1 { + /* Fallback for older browsers */ + margin-bottom: 0; + /* Modern logical properties */ + margin-block-end: 0; +} + +time { + color: var(--color-text-muted, #737373); + font-size: 0.9em; +} + +/* Posts */ +article .title { + /* Fallback for older browsers */ + margin-bottom: 1em; + /* Modern logical properties */ + margin-block-end: 1em; +} + + +/* Callouts */ +.callout { + background-color: var(--color-callout, #1e90ff); + color: #ffffff; + padding: 1em; + border-radius: var(--border-radius, 5px); + /* Fallback for older browsers */ + margin-top: 1em; + margin-bottom: 1em; + /* Modern logical properties */ + margin-block: 1em; +} + +.callout p { + font-family: 'IBM Plex Mono', 'Courier New', monospace; + margin: 0; +} + +.callout a { + /* Fallback for older browsers */ + border-bottom: 3px solid #ffffff; + /* Modern logical properties */ + border-block-end: 3px solid #ffffff; + color: inherit; +} + +.callout a:hover, +.callout a:focus { + background-color: #ffffff; + color: var(--color-callout, #1e90ff); +} + +/* Callout variants */ +.callout-alert { + color: #721c24; + background-color: #f8d7da; + border: 3px solid #f5c2c7; +} + +.callout-tip { + color: #055160; + background-color: #d1ecf1; + border: 3px solid #b8daff; +} + +.callout-warning { + color: #664d03; + background-color: #fff3cd; + border: 3px solid #ffecb5; +} + +.callout-custom { + /* Custom styles will be applied inline */ + color: inherit; +} + +/* Site and content elements */ +.site-description { + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 1rem; +} + +/* Tags */ +.tags { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + list-style: none; + padding: 0; +} + +.tags li::before { + content: "🏷 "; + margin-inline-start: 2rem; +} + +.tags a { + /* Fallback for older browsers */ + border-bottom: 3px solid var(--color-primary, #dc143c); + /* Modern logical properties */ + border-block-end: 3px solid var(--color-primary, #dc143c); + padding: 0.25rem 0.5rem; + border-radius: 3px; + transition: all 0.2s ease; +} + +.tags a:hover, +.tags a:focus { + color: #ffffff; + background-color: var(--color-primary-hover, #b91c3c); +} + +/* Icons and media */ +svg { + /* Fallback for older browsers */ + max-height: 1rem; + max-width: 1rem; + /* Modern logical properties */ + max-block-size: 1rem; + max-inline-size: 1rem; +} + +.feather { + /* Fallback for older browsers */ + width: 1.5rem; + height: 1.5rem; + /* Modern logical properties */ + inline-size: 1.5rem; + block-size: 1.5rem; + stroke: currentColor; + stroke-width: 2; + stroke-linecap: round; + stroke-linejoin: round; + fill: none; + display: inline-block; + vertical-align: middle; +} + +/* Draft label */ +.draft-label { + color: var(--color-border, #663399); + text-decoration: none; + padding: 0.125rem 0.25rem; + border-radius: 4px; + /* Fallback for older browsers */ + margin-left: 0.375rem; + /* Modern logical properties */ + margin-inline-start: 0.375rem; + background-color: var(--color-background-draft, #f9f2f4); + font-size: 0.8em; + font-weight: bold; +} +/* Code highlighting */ +.highlight { + position: relative; + -webkit-overflow-scrolling: touch; + border-radius: var(--border-radius, 5px); + overflow: hidden; +} +/* Code language badges */ +.highlight pre code[class*="language-"] { + -webkit-overflow-scrolling: touch; +} + +.highlight pre code[class*="language-"]::before { + background: #000000; + border-radius: 0 0 0.25rem 0.25rem; + color: #ffffff; + font-size: 0.75rem; + font-weight: bold; + letter-spacing: 0.025rem; + padding: 0.1rem 0.5rem; + position: absolute; + /* Fallback for older browsers */ + right: 1rem; + top: 0; + /* Modern logical properties */ + inset-inline-end: 1rem; + inset-block-start: 0; + text-align: right; + text-transform: uppercase; +} + +/* Language-specific badges */ +.highlight pre code[class*="language-js"]::before, +.highlight pre code[class="language-javascript"]::before { + content: "js"; + background: #f7df1e; + color: #000000; +} + +.highlight pre code[class*="language-ts"]::before { + content: "ts"; + background: #3178c6; + color: #ffffff; +} + +.highlight pre code[class*="language-py"]::before, +.highlight pre code[class*="language-python"]::before { + content: "python"; + background: #3776ab; + color: #ffffff; +} + +.highlight pre code[class*="language-go"]::before { + content: "go"; + background: #00add8; + color: #ffffff; +} + +.highlight pre code[class*="language-css"]::before { + content: "css"; + background: #1572b6; + color: #ffffff; +} + +.highlight pre code[class*="language-html"]::before { + content: "html"; + background: #e34f26; + color: #ffffff; +} + +.highlight pre code[class*="language-json"]::before { + content: "json"; + background: #000000; + color: #ffffff; +} + +.highlight pre code[class*="language-yml"]::before, +.highlight pre code[class*="language-yaml"]::before { + content: "yaml"; + background: #cc1018; + color: #ffffff; +} + +.highlight pre code[class*="language-shell"]::before, +.highlight pre code[class*="language-bash"]::before, +.highlight pre code[class*="language-sh"]::before { + content: "shell"; + background: #4eaa25; + color: #ffffff; +} + +.highlight pre code[class*="language-md"]::before, +.highlight pre code[class*="language-markdown"]::before { + content: "markdown"; + background: #083fa1; + color: #ffffff; +} + +/* Tables */ +table { + border-spacing: 0; + border-collapse: collapse; + /* Fallback for older browsers */ + width: 100%; + margin-top: 1rem; + margin-bottom: 1rem; + /* Modern logical properties */ + inline-size: 100%; + margin-block: 1rem; + border-radius: var(--border-radius, 5px); + overflow: hidden; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +table th { + padding: 0.75rem; + border: 1px solid var(--color-border, #663399); + font-weight: bold; + background-color: var(--color-background-pre, #ececec); + text-align: start; +} + +table td { + padding: 0.75rem; + border: 1px solid var(--color-border, #663399); +} + +table tr:nth-child(even) { + background-color: var(--color-background-code, #f1f1f1); +} + +/* Navigation and theme toggle */ +nav { + display: flex; + align-items: center; + gap: 1rem; + flex-wrap: wrap; +} + +.nav-toggle { + /* Reset button styles */ + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + border: none; + background: none; + margin: 0; + font: inherit; + cursor: pointer; + + /* Custom styling */ + padding: 0.5rem; + border-radius: 4px; + transition: all 0.2s ease; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.nav-toggle { + /* Ensure icon is always visible */ + color: var(--color-text, #232333); +} + +.nav-toggle:hover, +.nav-toggle:focus { + background-color: var(--color-primary, #dc143c); + color: #ffffff; + outline: 2px solid var(--color-primary, #dc143c); + outline-offset: 2px; +} + +.nav-toggle:focus { + outline-style: solid; +} + +.nav-toggle:active { + transform: scale(0.95); +} + +/* Media queries for responsive design */ +@media (max-width: 37.4em) { + .content { + /* Fallback for older browsers */ + padding-left: 0.5rem; + padding-right: 0.5rem; + /* Modern logical properties */ + padding-inline: 0.5rem; + } + + header { + flex-direction: column; + align-items: flex-start; + gap: 0.5rem; + } + + .site-description { + flex-direction: column; + align-items: flex-start; + } +} diff --git a/public/css/main.a87126a5d38398207e58225b2d1a9faf97f546982f44b3ffb9715a264da36c90.css b/public/css/main.a87126a5d38398207e58225b2d1a9faf97f546982f44b3ffb9715a264da36c90.css new file mode 100644 index 0000000..fea4f24 --- /dev/null +++ b/public/css/main.a87126a5d38398207e58225b2d1a9faf97f546982f44b3ffb9715a264da36c90.css @@ -0,0 +1,787 @@ +/* CSS Custom Properties */ +:root { + /* Light theme colors */ + --color-primary: #dc143c; + --color-primary-hover: #b91c3c; + --color-border: #663399; + --color-callout: #1e90ff; + --color-text: #232333; + --color-text-muted: #737373; + --color-text-meta: #999999; + --color-background: #ffffff; + --color-background-code: #f1f1f1; + --color-background-pre: #ececec; + --color-background-toc: #ececec; + --color-background-draft: #f9f2f4; + + /* Dark theme colors */ + --color-primary-dark: #50fa7b; + --color-primary-hover-dark: #3dd458; + --color-border-dark: #0066ff; + --color-text-dark: #ffffff; + --color-text-muted-dark: #dddddd; + --color-background-dark: #202124; + --color-background-code-dark: #3a3a3a; + --color-background-pre-dark: #272822; + --color-background-toc-dark: #272822; + --color-background-draft-dark: #0066ff; + + /* Spacing and sizing */ + --content-max-width: 800px; + --content-padding: 1ch; + --border-radius: 5px; + --font-size-base: 15px; + --line-height-base: 1.6; + --line-height-content: 1.5; +} +/* Reset and base styles */ +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + color: var(--color-text, #232333); + font-family: 'Roboto Mono', 'Courier New', monospace; + font-size: var(--font-size-base, 15px); + line-height: var(--line-height-base, 1.6); + scroll-behavior: smooth; +} + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } +} + +body { + margin: 8px; + background-color: var(--color-background, #ffffff); + transition: background-color 0.2s ease, color 0.2s ease; +} + +* { + -webkit-tap-highlight-color: transparent; +} + +/* Selection styles */ +::selection { + background: var(--color-primary, #dc143c); + color: #ffffff; +} + +::-moz-selection { + background: var(--color-primary, #dc143c); + color: #ffffff; +} + +/* Typography */ +p { + font-family: 'Fira Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + line-height: var(--line-height-content, 1.5); + /* Fallback for older browsers */ + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +@supports (margin-block: 0.5em) { + p { + margin-top: unset; + margin-bottom: unset; + margin-block: 0.5em; + } +} + +hr { + border: 0; + /* Fallback for older browsers */ + border-top: 3px dotted var(--color-border, #663399); + margin-top: 1em; + margin-bottom: 1em; +} + +@supports (border-block-start: 3px dotted var(--color-border, #663399)) { + hr { + border-top: unset; + margin-top: unset; + margin-bottom: unset; + border-block-start: 3px dotted var(--color-border, #663399); + margin-block: 1em; + } +} + +blockquote { + /* Fallback for older browsers */ + border-left: 3px solid var(--color-border, #663399); + padding-left: 1em; + color: var(--color-text-muted, #737373); + margin: 0; + font-style: italic; +} + +@supports (border-inline-start: 3px solid var(--color-border, #663399)) { + blockquote { + border-left: unset; + padding-left: unset; + border-inline-start: 3px solid var(--color-border, #663399); + padding-inline-start: 1em; + } +} + +/* Links */ +a { + /* Fallback for older browsers */ + border-bottom: 3px solid var(--color-primary, #dc143c); + /* Modern logical properties */ + border-block-end: 3px solid var(--color-primary, #dc143c); + color: inherit; + text-decoration: none; + transition: background-color 0.2s ease, color 0.2s ease; +} + +a:hover, +a:focus { + background-color: var(--color-primary-hover, #b91c3c); + color: #ffffff; + outline: 2px solid var(--color-primary, #dc143c); + outline-offset: 2px; +} + +a:focus { + outline-style: solid; +} + +/* Lists */ +ul { + list-style: none; + /* Fallback for older browsers */ + padding-left: 2ch; + /* Modern logical properties */ + padding-inline-start: 2ch; +} + +ul li { + text-indent: -2ch; +} + +ul > li::before { + content: '* '; + font-weight: bold; + color: var(--color-primary, #dc143c); +} + +/* Images */ +img { + border: 3px solid var(--color-background-pre, #ececec); + /* Fallback for older browsers */ + max-width: 100%; + height: auto; + /* Modern logical properties */ + max-inline-size: 100%; + block-size: auto; + border-radius: var(--border-radius, 5px); +} + +figure { + display: inline-block; + margin: 0; + /* Fallback for older browsers */ + max-width: 100%; + /* Modern logical properties */ + max-inline-size: 100%; +} + +figure img { + /* Fallback for older browsers */ + max-height: 500px; + /* Modern logical properties */ + max-block-size: 500px; +} + +@media screen and (min-width: 37.5em) { + figure { + /* Fallback for older browsers */ + padding-left: 2.5rem; + padding-right: 2.5rem; + /* Modern logical properties */ + padding-inline: 2.5rem; + } +} + +figure h4 { + font-size: 1rem; + margin: 0; + /* Fallback for older browsers */ + margin-bottom: 1em; + /* Modern logical properties */ + margin-block-end: 1em; +} + +figure h4::before { + content: '↳ '; + color: var(--color-primary, #dc143c); +} + +/* Code blocks */ +code { + background-color: var(--color-background-code, #f1f1f1); + padding: 0.1em 0.2em; + border-radius: 3px; + font-size: 0.9em; +} + +pre { + background-color: var(--color-background-pre, #ececec); + line-height: 1.4; + overflow-x: auto; + padding: 1em; + border-radius: var(--border-radius, 5px); + border: 1px solid var(--color-border, #663399); +} + +.highlight pre ::selection { + background: rgba(255, 255, 255, 0.2); + color: inherit; +} + +pre code { + background-color: transparent; + color: inherit; + font-size: 100%; + padding: 0; +} + +/* Layout containers */ +.content { + /* Fallback for older browsers */ + margin-bottom: 4em; + margin-left: auto; + margin-right: auto; + max-width: var(--content-max-width, 800px); + padding-left: var(--content-padding, 1ch); + padding-right: var(--content-padding, 1ch); + /* Modern logical properties */ + margin-block-end: 4em; + margin-inline: auto; + max-inline-size: var(--content-max-width, 800px); + padding-inline: var(--content-padding, 1ch); + word-wrap: break-word; + overflow-wrap: break-word; +} + +/* Header */ +header { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + /* Fallback for older browsers */ + margin-top: 1em; + margin-bottom: 1em; + /* Modern logical properties */ + margin-block: 1em; + line-height: 2.5em; + gap: 1rem; +} + +header .main { + font-size: 1.5rem; + font-weight: bold; +} + +/* Headings */ +h1, h2, h3, h4, h5, h6 { + font-size: 1.2rem; + /* Fallback for older browsers */ + margin-top: 2em; + margin-bottom: 0.5em; + /* Modern logical properties */ + margin-block-start: 2em; + margin-block-end: 0.5em; + line-height: 1.2; +} + +h1::before { color: var(--color-primary, #dc143c); content: '# '; } +h2::before { color: var(--color-primary, #dc143c); content: '## '; } +h3::before { color: var(--color-primary, #dc143c); content: '### '; } +h4::before { color: var(--color-primary, #dc143c); content: '#### '; } +h5::before { color: var(--color-primary, #dc143c); content: '##### '; } +h6::before { color: var(--color-primary, #dc143c); content: '###### '; } + +.meta { + color: var(--color-text-meta, #999999); + letter-spacing: -0.5px; + font-size: 0.9em; +} + +/* Post layout */ +.post-container { + /* Flexbox fallback for older browsers */ + display: flex; + flex-wrap: wrap; + gap: 1.25rem; + align-items: flex-start; +} + +@supports (display: grid) { + .post-container { + display: grid; + grid-template-columns: 1fr; + } +} + +@media screen and (min-width: 60em) { + .post-container { + /* Flexbox fallback */ + flex-wrap: nowrap; + } + + @supports (display: grid) { + .post-container { + grid-template-columns: 1fr auto; + } + } +} + +.post-content { + /* Flexbox fallback */ + flex: 1; + min-width: 0; + /* Modern properties */ + min-inline-size: 0; + overflow-wrap: break-word; +} + +.toc { + background-color: var(--color-background-toc, #ececec); + border-radius: var(--border-radius, 5px); + color: var(--color-text, #232333); + /* Fallback for older browsers */ + max-width: 18.75rem; + /* Flexbox fallback */ + flex: 0 0 auto; + /* Modern properties */ + max-inline-size: 18.75rem; + overflow-y: auto; + padding: 0.75rem; + border: 1px solid var(--color-border, #663399); +} + +@media screen and (min-width: 60em) { + .toc { + position: sticky; + /* Fallback for older browsers */ + top: 1.25rem; + /* Modern logical properties */ + inset-block-start: 1.25rem; + } +} + +@media screen and (max-width: 59.99em) { + .toc { + /* Fallback for older browsers */ + margin-bottom: 1.5rem; + /* Modern logical properties */ + margin-block-end: 1.5rem; + order: -1; + } +} + +/* Footer */ +footer { + display: flex; + align-items: center; + /* Fallback for older browsers */ + border-top: 0.4rem dotted var(--color-border, #663399); + padding-top: 2rem; + padding-bottom: 2rem; + margin-top: 2rem; + /* Modern logical properties */ + border-block-start: 0.4rem dotted var(--color-border, #663399); + padding-block: 2rem; + margin-block-start: 2rem; + gap: 0.5rem; + flex-wrap: wrap; +} + +.soc { + display: flex; + align-items: center; + /* Fallback for older browsers */ + border-bottom: none; + /* Modern logical properties */ + border-block-end: none; + transition: color 0.2s ease; +} + +.soc:hover, +.soc:focus { + color: #ffffff; + outline: 2px solid var(--color-primary, #dc143c); + outline-offset: 2px; +} + +.border { + margin-inline: 0.5rem; + border: 1px solid var(--color-border, #663399); +} + +/* Common elements */ +.title h1 { + /* Fallback for older browsers */ + margin-bottom: 0; + /* Modern logical properties */ + margin-block-end: 0; +} + +time { + color: var(--color-text-muted, #737373); + font-size: 0.9em; +} + +/* Posts */ +article .title { + /* Fallback for older browsers */ + margin-bottom: 1em; + /* Modern logical properties */ + margin-block-end: 1em; +} + + +/* Callouts */ +.callout { + background-color: var(--color-callout, #1e90ff); + color: #ffffff; + padding: 1em; + border-radius: var(--border-radius, 5px); + /* Fallback for older browsers */ + margin-top: 1em; + margin-bottom: 1em; + /* Modern logical properties */ + margin-block: 1em; +} + +.callout p { + font-family: 'IBM Plex Mono', 'Courier New', monospace; + margin: 0; +} + +.callout a { + /* Fallback for older browsers */ + border-bottom: 3px solid #ffffff; + /* Modern logical properties */ + border-block-end: 3px solid #ffffff; + color: inherit; +} + +.callout a:hover, +.callout a:focus { + background-color: #ffffff; + color: var(--color-callout, #1e90ff); +} + +/* Callout variants */ +.callout-alert { + color: #721c24; + background-color: #f8d7da; + border: 3px solid #f5c2c7; +} + +.callout-tip { + color: #055160; + background-color: #d1ecf1; + border: 3px solid #b8daff; +} + +.callout-warning { + color: #664d03; + background-color: #fff3cd; + border: 3px solid #ffecb5; +} + +.callout-custom { + /* Custom styles will be applied inline */ + color: inherit; +} + +/* Site and content elements */ +.site-description { + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 1rem; +} + +/* Tags */ +.tags { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + list-style: none; + padding: 0; +} + +.tags li::before { + content: "🏷 "; + margin-inline-start: 2rem; +} + +.tags a { + /* Fallback for older browsers */ + border-bottom: 3px solid var(--color-primary, #dc143c); + /* Modern logical properties */ + border-block-end: 3px solid var(--color-primary, #dc143c); + padding: 0.25rem 0.5rem; + border-radius: 3px; + transition: all 0.2s ease; +} + +.tags a:hover, +.tags a:focus { + color: #ffffff; + background-color: var(--color-primary-hover, #b91c3c); +} + +/* Icons and media */ +svg { + /* Fallback for older browsers */ + max-height: 1rem; + max-width: 1rem; + /* Modern logical properties */ + max-block-size: 1rem; + max-inline-size: 1rem; +} + +.feather { + /* Fallback for older browsers */ + width: 1.5rem; + height: 1.5rem; + /* Modern logical properties */ + inline-size: 1.5rem; + block-size: 1.5rem; + stroke: currentColor; + stroke-width: 2; + stroke-linecap: round; + stroke-linejoin: round; + fill: none; + display: inline-block; + vertical-align: middle; +} + +/* Draft label */ +.draft-label { + color: var(--color-border, #663399); + text-decoration: none; + padding: 0.125rem 0.25rem; + border-radius: 4px; + /* Fallback for older browsers */ + margin-left: 0.375rem; + /* Modern logical properties */ + margin-inline-start: 0.375rem; + background-color: var(--color-background-draft, #f9f2f4); + font-size: 0.8em; + font-weight: bold; +} +/* Code highlighting */ +.highlight { + position: relative; + -webkit-overflow-scrolling: touch; + border-radius: var(--border-radius, 5px); + overflow: hidden; +} +/* Code language badges */ +.highlight pre code[class*="language-"] { + -webkit-overflow-scrolling: touch; +} + +.highlight pre code[class*="language-"]::before { + background: #000000; + border-radius: 0 0 0.25rem 0.25rem; + color: #ffffff; + font-size: 0.75rem; + font-weight: bold; + letter-spacing: 0.025rem; + padding: 0.1rem 0.5rem; + position: absolute; + /* Fallback for older browsers */ + right: 1rem; + top: 0; + /* Modern logical properties */ + inset-inline-end: 1rem; + inset-block-start: 0; + text-align: right; + text-transform: uppercase; +} + +/* Language-specific badges */ +.highlight pre code[class*="language-js"]::before, +.highlight pre code[class="language-javascript"]::before { + content: "js"; + background: #f7df1e; + color: #000000; +} + +.highlight pre code[class*="language-ts"]::before { + content: "ts"; + background: #3178c6; + color: #ffffff; +} + +.highlight pre code[class*="language-py"]::before, +.highlight pre code[class*="language-python"]::before { + content: "python"; + background: #3776ab; + color: #ffffff; +} + +.highlight pre code[class*="language-go"]::before { + content: "go"; + background: #00add8; + color: #ffffff; +} + +.highlight pre code[class*="language-css"]::before { + content: "css"; + background: #1572b6; + color: #ffffff; +} + +.highlight pre code[class*="language-html"]::before { + content: "html"; + background: #e34f26; + color: #ffffff; +} + +.highlight pre code[class*="language-json"]::before { + content: "json"; + background: #000000; + color: #ffffff; +} + +.highlight pre code[class*="language-yml"]::before, +.highlight pre code[class*="language-yaml"]::before { + content: "yaml"; + background: #cc1018; + color: #ffffff; +} + +.highlight pre code[class*="language-shell"]::before, +.highlight pre code[class*="language-bash"]::before, +.highlight pre code[class*="language-sh"]::before { + content: "shell"; + background: #4eaa25; + color: #ffffff; +} + +.highlight pre code[class*="language-md"]::before, +.highlight pre code[class*="language-markdown"]::before { + content: "markdown"; + background: #083fa1; + color: #ffffff; +} + +/* Tables */ +table { + border-spacing: 0; + border-collapse: collapse; + /* Fallback for older browsers */ + width: 100%; + margin-top: 1rem; + margin-bottom: 1rem; + /* Modern logical properties */ + inline-size: 100%; + margin-block: 1rem; + border-radius: var(--border-radius, 5px); + overflow: hidden; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +table th { + padding: 0.75rem; + border: 1px solid var(--color-border, #663399); + font-weight: bold; + background-color: var(--color-background-pre, #ececec); + text-align: start; +} + +table td { + padding: 0.75rem; + border: 1px solid var(--color-border, #663399); +} + +table tr:nth-child(even) { + background-color: var(--color-background-code, #f1f1f1); +} + +/* Navigation and theme toggle */ +nav { + display: flex; + align-items: center; + gap: 1rem; + flex-wrap: wrap; +} + +.nav-toggle { + /* Reset button styles */ + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + border: none; + background: none; + margin: 0; + font: inherit; + cursor: pointer; + + /* Custom styling */ + padding: 0.5rem; + border-radius: 4px; + transition: all 0.2s ease; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.nav-toggle { + /* Ensure icon is always visible */ + color: var(--color-text, #232333); +} + +.nav-toggle:hover, +.nav-toggle:focus { + background-color: var(--color-primary, #dc143c); + color: #ffffff; + outline: 2px solid var(--color-primary, #dc143c); + outline-offset: 2px; +} + +.nav-toggle:focus { + outline-style: solid; +} + +.nav-toggle:active { + transform: scale(0.95); +} + +/* Media queries for responsive design */ +@media (max-width: 37.4em) { + .content { + /* Fallback for older browsers */ + padding-left: 0.5rem; + padding-right: 0.5rem; + /* Modern logical properties */ + padding-inline: 0.5rem; + } + + header { + flex-direction: column; + align-items: flex-start; + gap: 0.5rem; + } + + .site-description { + flex-direction: column; + align-items: flex-start; + } +} diff --git a/public/css/main.ac4b0a9155d8d1d5c87be4c90817e8273a7994cf333e4a47a2981193d2b8b5f0.css b/public/css/main.ac4b0a9155d8d1d5c87be4c90817e8273a7994cf333e4a47a2981193d2b8b5f0.css new file mode 100644 index 0000000..3fb1c27 --- /dev/null +++ b/public/css/main.ac4b0a9155d8d1d5c87be4c90817e8273a7994cf333e4a47a2981193d2b8b5f0.css @@ -0,0 +1,795 @@ +/* CSS Custom Properties */ +:root { + /* Light theme colors */ + --color-primary: #dc143c; + --color-primary-hover: #b91c3c; + --color-border: #663399; + --color-callout: #1e90ff; + --color-text: #232333; + --color-text-muted: #737373; + --color-text-meta: #999999; + --color-background: #ffffff; + --color-background-code: #f1f1f1; + --color-background-pre: #ececec; + --color-background-toc: #ececec; + --color-background-draft: #f9f2f4; + + /* Dark theme colors */ + --color-primary-dark: #50fa7b; + --color-primary-hover-dark: #3dd458; + --color-border-dark: #0066ff; + --color-text-dark: #ffffff; + --color-text-muted-dark: #dddddd; + --color-background-dark: #202124; + --color-background-code-dark: #3a3a3a; + --color-background-pre-dark: #272822; + --color-background-toc-dark: #272822; + --color-background-draft-dark: #0066ff; + + /* Spacing and sizing */ + --content-max-width: 800px; + --content-padding: 1ch; + --border-radius: 5px; + --font-size-base: 15px; + --line-height-base: 1.6; + --line-height-content: 1.5; +} +/* Reset and base styles */ +*, +*::before, +*::after { + box-sizing: border-box; +} + +html { + color: var(--color-text, #232333); + font-family: 'Roboto Mono', 'Courier New', monospace; + font-size: var(--font-size-base, 15px); + line-height: var(--line-height-base, 1.6); + scroll-behavior: smooth; +} + +@media (prefers-reduced-motion: reduce) { + html { + scroll-behavior: auto; + } +} + +body { + margin: 8px; + background-color: var(--color-background, #ffffff); + transition: background-color 0.2s ease, color 0.2s ease; +} + +* { + -webkit-tap-highlight-color: transparent; +} + +/* Selection styles */ +::selection { + background: var(--color-primary, #dc143c); + color: #ffffff; +} + +::-moz-selection { + background: var(--color-primary, #dc143c); + color: #ffffff; +} + +/* Typography */ +p { + font-family: 'Fira Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + line-height: var(--line-height-content, 1.5); + /* Fallback for older browsers */ + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +@supports (margin-block: 0.5em) { + p { + margin-top: unset; + margin-bottom: unset; + margin-block: 0.5em; + } +} + +hr { + border: 0; + /* Fallback for older browsers */ + border-top: 3px dotted var(--color-border, #663399); + margin-top: 1em; + margin-bottom: 1em; +} + +@supports (border-block-start: 3px dotted var(--color-border, #663399)) { + hr { + border-top: unset; + margin-top: unset; + margin-bottom: unset; + border-block-start: 3px dotted var(--color-border, #663399); + margin-block: 1em; + } +} + +blockquote { + /* Fallback for older browsers */ + border-left: 3px solid var(--color-border, #663399); + padding-left: 1em; + color: var(--color-text-muted, #737373); + margin: 0; + font-style: italic; +} + +@supports (border-inline-start: 3px solid var(--color-border, #663399)) { + blockquote { + border-left: unset; + padding-left: unset; + border-inline-start: 3px solid var(--color-border, #663399); + padding-inline-start: 1em; + } +} + +/* Links */ +a { + /* Fallback for older browsers */ + border-bottom: 3px solid var(--color-primary, #dc143c); + /* Modern logical properties */ + border-block-end: 3px solid var(--color-primary, #dc143c); + color: inherit; + text-decoration: none; + transition: background-color 0.2s ease, color 0.2s ease; +} + +a:hover, +a:focus { + background-color: var(--color-primary-hover, #b91c3c); + color: #ffffff; + outline: 2px solid var(--color-primary, #dc143c); + outline-offset: 2px; +} + +a:focus { + outline-style: solid; +} + +/* Lists */ +ul { + list-style: none; + /* Fallback for older browsers */ + padding-left: 2ch; + /* Modern logical properties */ + padding-inline-start: 2ch; +} + +ul li { + text-indent: -2ch; +} + +ul > li::before { + content: '* '; + font-weight: bold; + color: var(--color-primary, #dc143c); +} + +/* Images */ +img { + border: 3px solid var(--color-background-pre, #ececec); + /* Fallback for older browsers */ + max-width: 100%; + height: auto; + /* Modern logical properties */ + max-inline-size: 100%; + block-size: auto; + border-radius: var(--border-radius, 5px); +} + +.center-img { + text-align: center; +} + +.center-img img { + display: block; +} + +figure { + display: inline-block; + margin: 0; + /* Fallback for older browsers */ + max-width: 100%; + /* Modern logical properties */ + max-inline-size: 100%; +} + +figure img { + /* Fallback for older browsers */ + max-height: 500px; + /* Modern logical properties */ + max-block-size: 500px; +} + +@media screen and (min-width: 37.5em) { + figure { + /* Fallback for older browsers */ + padding-left: 2.5rem; + padding-right: 2.5rem; + /* Modern logical properties */ + padding-inline: 2.5rem; + } +} + +figure h4 { + font-size: 1rem; + margin: 0; + /* Fallback for older browsers */ + margin-bottom: 1em; + /* Modern logical properties */ + margin-block-end: 1em; +} + +figure h4::before { + content: '↳ '; + color: var(--color-primary, #dc143c); +} + +/* Code blocks */ +code { + background-color: var(--color-background-code, #f1f1f1); + padding: 0.1em 0.2em; + border-radius: 3px; + font-size: 0.9em; +} + +pre { + background-color: var(--color-background-pre, #ececec); + line-height: 1.4; + overflow-x: auto; + padding: 1em; + border-radius: var(--border-radius, 5px); + border: 1px solid var(--color-border, #663399); +} + +.highlight pre ::selection { + background: rgba(255, 255, 255, 0.2); + color: inherit; +} + +pre code { + background-color: transparent; + color: inherit; + font-size: 100%; + padding: 0; +} + +/* Layout containers */ +.content { + /* Fallback for older browsers */ + margin-bottom: 4em; + margin-left: auto; + margin-right: auto; + max-width: var(--content-max-width, 800px); + padding-left: var(--content-padding, 1ch); + padding-right: var(--content-padding, 1ch); + /* Modern logical properties */ + margin-block-end: 4em; + margin-inline: auto; + max-inline-size: var(--content-max-width, 800px); + padding-inline: var(--content-padding, 1ch); + word-wrap: break-word; + overflow-wrap: break-word; +} + +/* Header */ +header { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + /* Fallback for older browsers */ + margin-top: 1em; + margin-bottom: 1em; + /* Modern logical properties */ + margin-block: 1em; + line-height: 2.5em; + gap: 1rem; +} + +header .main { + font-size: 1.5rem; + font-weight: bold; +} + +/* Headings */ +h1, h2, h3, h4, h5, h6 { + font-size: 1.2rem; + /* Fallback for older browsers */ + margin-top: 2em; + margin-bottom: 0.5em; + /* Modern logical properties */ + margin-block-start: 2em; + margin-block-end: 0.5em; + line-height: 1.2; +} + +h1::before { color: var(--color-primary, #dc143c); content: '# '; } +h2::before { color: var(--color-primary, #dc143c); content: '## '; } +h3::before { color: var(--color-primary, #dc143c); content: '### '; } +h4::before { color: var(--color-primary, #dc143c); content: '#### '; } +h5::before { color: var(--color-primary, #dc143c); content: '##### '; } +h6::before { color: var(--color-primary, #dc143c); content: '###### '; } + +.meta { + color: var(--color-text-meta, #999999); + letter-spacing: -0.5px; + font-size: 0.9em; +} + +/* Post layout */ +.post-container { + /* Flexbox fallback for older browsers */ + display: flex; + flex-wrap: wrap; + gap: 1.25rem; + align-items: flex-start; +} + +@supports (display: grid) { + .post-container { + display: grid; + grid-template-columns: 1fr; + } +} + +@media screen and (min-width: 60em) { + .post-container { + /* Flexbox fallback */ + flex-wrap: nowrap; + } + + @supports (display: grid) { + .post-container { + grid-template-columns: 1fr auto; + } + } +} + +.post-content { + /* Flexbox fallback */ + flex: 1; + min-width: 0; + /* Modern properties */ + min-inline-size: 0; + overflow-wrap: break-word; +} + +.toc { + background-color: var(--color-background-toc, #ececec); + border-radius: var(--border-radius, 5px); + color: var(--color-text, #232333); + /* Fallback for older browsers */ + max-width: 18.75rem; + /* Flexbox fallback */ + flex: 0 0 auto; + /* Modern properties */ + max-inline-size: 18.75rem; + overflow-y: auto; + padding: 0.75rem; + border: 1px solid var(--color-border, #663399); +} + +@media screen and (min-width: 60em) { + .toc { + position: sticky; + /* Fallback for older browsers */ + top: 1.25rem; + /* Modern logical properties */ + inset-block-start: 1.25rem; + } +} + +@media screen and (max-width: 59.99em) { + .toc { + /* Fallback for older browsers */ + margin-bottom: 1.5rem; + /* Modern logical properties */ + margin-block-end: 1.5rem; + order: -1; + } +} + +/* Footer */ +footer { + display: flex; + align-items: center; + /* Fallback for older browsers */ + border-top: 0.4rem dotted var(--color-border, #663399); + padding-top: 2rem; + padding-bottom: 2rem; + margin-top: 2rem; + /* Modern logical properties */ + border-block-start: 0.4rem dotted var(--color-border, #663399); + padding-block: 2rem; + margin-block-start: 2rem; + gap: 0.5rem; + flex-wrap: wrap; +} + +.soc { + display: flex; + align-items: center; + /* Fallback for older browsers */ + border-bottom: none; + /* Modern logical properties */ + border-block-end: none; + transition: color 0.2s ease; +} + +.soc:hover, +.soc:focus { + color: #ffffff; + outline: 2px solid var(--color-primary, #dc143c); + outline-offset: 2px; +} + +.border { + margin-inline: 0.5rem; + border: 1px solid var(--color-border, #663399); +} + +/* Common elements */ +.title h1 { + /* Fallback for older browsers */ + margin-bottom: 0; + /* Modern logical properties */ + margin-block-end: 0; +} + +time { + color: var(--color-text-muted, #737373); + font-size: 0.9em; +} + +/* Posts */ +article .title { + /* Fallback for older browsers */ + margin-bottom: 1em; + /* Modern logical properties */ + margin-block-end: 1em; +} + + +/* Callouts */ +.callout { + background-color: var(--color-callout, #1e90ff); + color: #ffffff; + padding: 1em; + border-radius: var(--border-radius, 5px); + /* Fallback for older browsers */ + margin-top: 1em; + margin-bottom: 1em; + /* Modern logical properties */ + margin-block: 1em; +} + +.callout p { + font-family: 'IBM Plex Mono', 'Courier New', monospace; + margin: 0; +} + +.callout a { + /* Fallback for older browsers */ + border-bottom: 3px solid #ffffff; + /* Modern logical properties */ + border-block-end: 3px solid #ffffff; + color: inherit; +} + +.callout a:hover, +.callout a:focus { + background-color: #ffffff; + color: var(--color-callout, #1e90ff); +} + +/* Callout variants */ +.callout-alert { + color: #721c24; + background-color: #f8d7da; + border: 3px solid #f5c2c7; +} + +.callout-tip { + color: #055160; + background-color: #d1ecf1; + border: 3px solid #b8daff; +} + +.callout-warning { + color: #664d03; + background-color: #fff3cd; + border: 3px solid #ffecb5; +} + +.callout-custom { + /* Custom styles will be applied inline */ + color: inherit; +} + +/* Site and content elements */ +.site-description { + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 1rem; +} + +/* Tags */ +.tags { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + list-style: none; + padding: 0; +} + +.tags li::before { + content: "🏷 "; + margin-inline-start: 2rem; +} + +.tags a { + /* Fallback for older browsers */ + border-bottom: 3px solid var(--color-primary, #dc143c); + /* Modern logical properties */ + border-block-end: 3px solid var(--color-primary, #dc143c); + padding: 0.25rem 0.5rem; + border-radius: 3px; + transition: all 0.2s ease; +} + +.tags a:hover, +.tags a:focus { + color: #ffffff; + background-color: var(--color-primary-hover, #b91c3c); +} + +/* Icons and media */ +svg { + /* Fallback for older browsers */ + max-height: 1rem; + max-width: 1rem; + /* Modern logical properties */ + max-block-size: 1rem; + max-inline-size: 1rem; +} + +.feather { + /* Fallback for older browsers */ + width: 1.5rem; + height: 1.5rem; + /* Modern logical properties */ + inline-size: 1.5rem; + block-size: 1.5rem; + stroke: currentColor; + stroke-width: 2; + stroke-linecap: round; + stroke-linejoin: round; + fill: none; + display: inline-block; + vertical-align: middle; +} + +/* Draft label */ +.draft-label { + color: var(--color-border, #663399); + text-decoration: none; + padding: 0.125rem 0.25rem; + border-radius: 4px; + /* Fallback for older browsers */ + margin-left: 0.375rem; + /* Modern logical properties */ + margin-inline-start: 0.375rem; + background-color: var(--color-background-draft, #f9f2f4); + font-size: 0.8em; + font-weight: bold; +} +/* Code highlighting */ +.highlight { + position: relative; + -webkit-overflow-scrolling: touch; + border-radius: var(--border-radius, 5px); + overflow: hidden; +} +/* Code language badges */ +.highlight pre code[class*="language-"] { + -webkit-overflow-scrolling: touch; +} + +.highlight pre code[class*="language-"]::before { + background: #000000; + border-radius: 0 0 0.25rem 0.25rem; + color: #ffffff; + font-size: 0.75rem; + font-weight: bold; + letter-spacing: 0.025rem; + padding: 0.1rem 0.5rem; + position: absolute; + /* Fallback for older browsers */ + right: 1rem; + top: 0; + /* Modern logical properties */ + inset-inline-end: 1rem; + inset-block-start: 0; + text-align: right; + text-transform: uppercase; +} + +/* Language-specific badges */ +.highlight pre code[class*="language-js"]::before, +.highlight pre code[class="language-javascript"]::before { + content: "js"; + background: #f7df1e; + color: #000000; +} + +.highlight pre code[class*="language-ts"]::before { + content: "ts"; + background: #3178c6; + color: #ffffff; +} + +.highlight pre code[class*="language-py"]::before, +.highlight pre code[class*="language-python"]::before { + content: "python"; + background: #3776ab; + color: #ffffff; +} + +.highlight pre code[class*="language-go"]::before { + content: "go"; + background: #00add8; + color: #ffffff; +} + +.highlight pre code[class*="language-css"]::before { + content: "css"; + background: #1572b6; + color: #ffffff; +} + +.highlight pre code[class*="language-html"]::before { + content: "html"; + background: #e34f26; + color: #ffffff; +} + +.highlight pre code[class*="language-json"]::before { + content: "json"; + background: #000000; + color: #ffffff; +} + +.highlight pre code[class*="language-yml"]::before, +.highlight pre code[class*="language-yaml"]::before { + content: "yaml"; + background: #cc1018; + color: #ffffff; +} + +.highlight pre code[class*="language-shell"]::before, +.highlight pre code[class*="language-bash"]::before, +.highlight pre code[class*="language-sh"]::before { + content: "shell"; + background: #4eaa25; + color: #ffffff; +} + +.highlight pre code[class*="language-md"]::before, +.highlight pre code[class*="language-markdown"]::before { + content: "markdown"; + background: #083fa1; + color: #ffffff; +} + +/* Tables */ +table { + border-spacing: 0; + border-collapse: collapse; + /* Fallback for older browsers */ + width: 100%; + margin-top: 1rem; + margin-bottom: 1rem; + /* Modern logical properties */ + inline-size: 100%; + margin-block: 1rem; + border-radius: var(--border-radius, 5px); + overflow: hidden; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +table th { + padding: 0.75rem; + border: 1px solid var(--color-border, #663399); + font-weight: bold; + background-color: var(--color-background-pre, #ececec); + text-align: start; +} + +table td { + padding: 0.75rem; + border: 1px solid var(--color-border, #663399); +} + +table tr:nth-child(even) { + background-color: var(--color-background-code, #f1f1f1); +} + +/* Navigation and theme toggle */ +nav { + display: flex; + align-items: center; + gap: 1rem; + flex-wrap: wrap; +} + +.nav-toggle { + /* Reset button styles */ + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + border: none; + background: none; + margin: 0; + font: inherit; + cursor: pointer; + + /* Custom styling */ + padding: 0.5rem; + border-radius: 4px; + transition: all 0.2s ease; + display: inline-flex; + align-items: center; + justify-content: center; +} + +.nav-toggle { + /* Ensure icon is always visible */ + color: var(--color-text, #232333); +} + +.nav-toggle:hover, +.nav-toggle:focus { + background-color: var(--color-primary, #dc143c); + color: #ffffff; + outline: 2px solid var(--color-primary, #dc143c); + outline-offset: 2px; +} + +.nav-toggle:focus { + outline-style: solid; +} + +.nav-toggle:active { + transform: scale(0.95); +} + +/* Media queries for responsive design */ +@media (max-width: 37.4em) { + .content { + /* Fallback for older browsers */ + padding-left: 0.5rem; + padding-right: 0.5rem; + /* Modern logical properties */ + padding-inline: 0.5rem; + } + + header { + flex-direction: column; + align-items: flex-start; + gap: 0.5rem; + } + + .site-description { + flex-direction: column; + align-items: flex-start; + } +} diff --git a/public/fonts/SimpleIcons.woff2 b/public/fonts/SimpleIcons.woff2 new file mode 100644 index 0000000..d6536f8 Binary files /dev/null and b/public/fonts/SimpleIcons.woff2 differ diff --git a/public/index.html b/public/index.html index 4fe2c35..700a8f9 100644 --- a/public/index.html +++ b/public/index.html @@ -2,16 +2,17 @@ - 📙 Mqdd Blog Posts | Home + 📙 Mqdd Personal Website | Home - - + + - + + @@ -20,8 +21,8 @@ - - + + @@ -37,7 +38,7 @@
@@ -99,10 +100,10 @@ diff --git a/public/index.xml b/public/index.xml index 6dea460..6ff7315 100644 --- a/public/index.xml +++ b/public/index.xml @@ -1,48 +1,63 @@ - 📙 Mqdd Blog Posts + 📙 Mqdd Personal Website / - Recent content on 📙 Mqdd Blog Posts + Recent content on 📙 Mqdd Personal Website Hugo -- gohugo.io en-us © Mqdd - Tue, 30 Jan 2024 02:41:45 +0700 - + Tue, 30 Jan 2024 02:41:45 +0700 Ranger File Manager /posts/ranger/ Tue, 30 Jan 2024 02:41:45 +0700 + /posts/ranger/ - Ranger FM Ranger merupakan terminal based program yang berfungsi sebagai file manager sebgaimana. Pada tutorial ini saya menggunakan Ranger pada WSL di Windows 11 dengan distro Ubuntu. Ranger juga tersedia pada repository lain seperti Arch Repo, dnf, dan nix-pkg. Ada beberapa fitur yang tidak dapat berjalan pada WSL contohnya seperti Image Preview hal ini dikarenakan image preview membutuhkan X-Server/Display server seperti halnya di linux. Pada blog post ini saya ingin menunjukkan cara membuka program windows dari ranger pada WSL. + Ranger FM Ranger merupakan terminal based program yang berfungsi sebagai file manager sebgaimana. Pada tutorial ini saya menggunakan Ranger pada WSL di Windows 11 dengan distro Ubuntu. Ranger juga tersedia pada repository lain seperti Arch Repo, dnf, dan nix-pkg. +Ada beberapa fitur yang tidak dapat berjalan pada WSL contohnya seperti Image Preview hal ini dikarenakan image preview membutuhkan X-Server/Display server seperti halnya di linux. +Pada blog post ini saya ingin menunjukkan cara membuka program windows dari ranger pada WSL. + About Author /about/ Sun, 21 Jan 2024 00:00:00 +0000 + /about/ - Me Nama Saya Ahmad Miqdad, saya merupakan mahasiswa prodi Teknik Telekomunikasi Politeknik Elektronika Negeri Surabaya (PENS). Saya memiliki minat dalam bidang Web Development dan IoT, dalam mengembangkan minat tersebut saya telah melakukan beberapa kegiatan yang dapat mengasah keahlian diantaranya mengikuti sertifikasi dan mengerjakan sebuah proyek. Experience Peserta Penanggulangan Keadaan Darurat (PKD) Ke-108 Bandar Udara Juanda Surabaya Program Kreativitas Mahasiswa (PKM) Vokasi 2023 - Karsa Cipta Kerja Praktik PT. Angkasa Pura I (Airport Technology) Talent Scouting Academy (TSA) Indonesian Young Smart Industry Academy Latihan Keterampilan Manajemen Mahasiswa Tingkat Dasar Latihan Keterampilan Manajemen Mahasiswa Pra-Tingkat Dasar International General Certificate of Secondary Education Cambridge Assessment International Education Digital Technology Certification by UNSW Global &ldquo;Design Your First Web&rdquo; by HIMIT PENS Project Prediksi Produksi Padi Menggunakan Metode LSTM-SVM di Kabupaten Gresik PKM-KC: 🔐 Sistem Keamanan dan Monitoring Berbasis IoT dengan Access Code dan GPS Tracking Website Pengecekan Bagasi Bandara Udara Juanda Aplikasi Vaksin Surabaya Menggunakan Zenity Website Monitoring Lampu Penerangan Jalan Gresik PT. + Me Nama Saya Ahmad Miqdad, saya merupakan mahasiswa prodi Teknik Telekomunikasi Politeknik Elektronika Negeri Surabaya (PENS). Sekarang saya bekerja sebagai IT Staff di PT.Indoteknik Dotcom Gemilang. Pekerjaan saya sehari-hari adalah sebagai Odoo Developer dan juga IT Support. You can see my work on my mirror git repos here: Mirror Git Repos 😁😁😁 +Work Experience IT Staff/Support (2025 - Now) Experience Tukar Guling Odoo 14 Custom Models Peserta Penanggulangan Keadaan Darurat (PKD) Ke-108 Bandar Udara Juanda Surabaya Program Kreativitas Mahasiswa (PKM) Vokasi 2023 - Karsa Cipta Kerja Praktik PT. + Neovim Sebagai IDE /posts/neovim/ Sun, 21 Jan 2024 04:56:47 +0700 + /posts/neovim/ - Neovim - NvChad Neovim Merupakan sebuah text editor yang minimalis. Secara default Neovim tidak memiliki banyak fitur seperti IDE yang biasanya seperti Vscode, Atom, dll. Untuk menambahkan fitur-fitur pada Neovim diperlukan effort yang lebih seperti instalasi plugin, konfigurasi autocomplete, dll. Nah sekarang mulai ada berbagai macam autogenerated neovim configuration, dimana kita tidak perlu susah susah untuk melakukan konfigurasi. Saat ini contohnya ada lazyvim, astrovim, dan masih banyak lagi. Pada blog post ini saya akan menjelaskan cara instalasi dari NvChad dan untuk distro yang saya gunakan adalah Ubuntu. + Neovim - NvChad Neovim Merupakan sebuah text editor yang minimalis. Secara default Neovim tidak memiliki banyak fitur seperti IDE yang biasanya seperti Vscode, Atom, dll. Untuk menambahkan fitur-fitur pada Neovim diperlukan effort yang lebih seperti instalasi plugin, konfigurasi autocomplete, dll. +Nah sekarang mulai ada berbagai macam autogenerated neovim configuration, dimana kita tidak perlu susah susah untuk melakukan konfigurasi. Saat ini contohnya ada lazyvim, astrovim, dan masih banyak lagi. + Instalasi Jupyter Notebook Menggunakan WSL /posts/notebook/ Sun, 21 Jan 2024 04:25:11 +0700 + /posts/notebook/ - Jupyter Notebook Jupyter Notebook merupakan sebuah program yang biasa digunankan untuk eksplorasi data menggunakan bahasa Julia, Python, dan R. Pada kali ini saya akan menunjukkan cara menginstall Jupyter Notebook di Windows menggunakan WSL yang dimana menurut saya lebih mudah dibandingkan dengan cara instalasi secara biasa melalui instalasi python pada windows. Distro yang saya gunakan pada tutorial ini adalah Ubuntu. Instalasi WSL dapat dilihat pada dokumentasi dari Microsoft. Setelah WSL terinstall ikuti langkah berikut: + Jupyter Notebook Jupyter Notebook merupakan sebuah program yang biasa digunankan untuk eksplorasi data menggunakan bahasa Julia, Python, dan R. +Pada kali ini saya akan menunjukkan cara menginstall Jupyter Notebook di Windows menggunakan WSL yang dimana menurut saya lebih mudah dibandingkan dengan cara instalasi secara biasa melalui instalasi python pada windows. Distro yang saya gunakan pada tutorial ini adalah Ubuntu. +Instalasi WSL dapat dilihat pada dokumentasi dari Microsoft. + /archives/ Tue, 28 May 2019 00:00:00 +0000 + /archives/ + diff --git a/public/js/MathJax.js b/public/js/MathJax.js new file mode 100644 index 0000000..b77df92 --- /dev/null +++ b/public/js/MathJax.js @@ -0,0 +1,19 @@ +/* + * /MathJax.js + * + * Copyright (c) 2009-2017 The MathJax Consortium + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +if(document.getElementById&&document.childNodes&&document.createElement){if(!(window.MathJax&&MathJax.Hub)){if(window.MathJax){window.MathJax={AuthorConfig:window.MathJax}}else{window.MathJax={}}MathJax.isPacked=true;MathJax.version="2.7.1";MathJax.fileversion="2.7.1";MathJax.cdnVersion="2.7.1";MathJax.cdnFileVersions={};(function(d){var b=window[d];if(!b){b=window[d]={}}var e=[];var c=function(f){var g=f.constructor;if(!g){g=function(){}}for(var h in f){if(h!=="constructor"&&f.hasOwnProperty(h)){g[h]=f[h]}}return g};var a=function(){return function(){return arguments.callee.Init.call(this,arguments)}};b.Object=c({constructor:a(),Subclass:function(f,h){var g=a();g.SUPER=this;g.Init=this.Init;g.Subclass=this.Subclass;g.Augment=this.Augment;g.protoFunction=this.protoFunction;g.can=this.can;g.has=this.has;g.isa=this.isa;g.prototype=new this(e);g.prototype.constructor=g;g.Augment(f,h);return g},Init:function(f){var g=this;if(f.length===1&&f[0]===e){return g}if(!(g instanceof f.callee)){g=new f.callee(e)}return g.Init.apply(g,f)||g},Augment:function(f,g){var h;if(f!=null){for(h in f){if(f.hasOwnProperty(h)){this.protoFunction(h,f[h])}}if(f.toString!==this.prototype.toString&&f.toString!=={}.toString){this.protoFunction("toString",f.toString)}}if(g!=null){for(h in g){if(g.hasOwnProperty(h)){this[h]=g[h]}}}return this},protoFunction:function(g,f){this.prototype[g]=f;if(typeof f==="function"){f.SUPER=this.SUPER.prototype}},prototype:{Init:function(){},SUPER:function(f){return f.callee.SUPER},can:function(f){return typeof(this[f])==="function"},has:function(f){return typeof(this[f])!=="undefined"},isa:function(f){return(f instanceof Object)&&(this instanceof f)}},can:function(f){return this.prototype.can.call(this,f)},has:function(f){return this.prototype.has.call(this,f)},isa:function(g){var f=this;while(f){if(f===g){return true}else{f=f.SUPER}}return false},SimpleSUPER:c({constructor:function(f){return this.SimpleSUPER.define(f)},define:function(f){var h={};if(f!=null){for(var g in f){if(f.hasOwnProperty(g)){h[g]=this.wrap(g,f[g])}}if(f.toString!==this.prototype.toString&&f.toString!=={}.toString){h.toString=this.wrap("toString",f.toString)}}return h},wrap:function(i,h){if(typeof(h)!=="function"||!h.toString().match(/\.\s*SUPER\s*\(/)){return h}var g=function(){this.SUPER=g.SUPER[i];try{var f=h.apply(this,arguments)}catch(j){delete this.SUPER;throw j}delete this.SUPER;return f};g.toString=function(){return h.toString.apply(h,arguments)};return g}})});b.Object.isArray=Array.isArray||function(f){return Object.prototype.toString.call(f)==="[object Array]"};b.Object.Array=Array})("MathJax");(function(BASENAME){var BASE=window[BASENAME];if(!BASE){BASE=window[BASENAME]={}}var isArray=BASE.Object.isArray;var CALLBACK=function(data){var cb=function(){return arguments.callee.execute.apply(arguments.callee,arguments)};for(var id in CALLBACK.prototype){if(CALLBACK.prototype.hasOwnProperty(id)){if(typeof(data[id])!=="undefined"){cb[id]=data[id]}else{cb[id]=CALLBACK.prototype[id]}}}cb.toString=CALLBACK.prototype.toString;return cb};CALLBACK.prototype={isCallback:true,hook:function(){},data:[],object:window,execute:function(){if(!this.called||this.autoReset){this.called=!this.autoReset;return this.hook.apply(this.object,this.data.concat([].slice.call(arguments,0)))}},reset:function(){delete this.called},toString:function(){return this.hook.toString.apply(this.hook,arguments)}};var ISCALLBACK=function(f){return(typeof(f)==="function"&&f.isCallback)};var EVAL=function(code){return eval.call(window,code)};var TESTEVAL=function(){EVAL("var __TeSt_VaR__ = 1");if(window.__TeSt_VaR__){try{delete window.__TeSt_VaR__}catch(error){window.__TeSt_VaR__=null}}else{if(window.execScript){EVAL=function(code){BASE.__code=code;code="try {"+BASENAME+".__result = eval("+BASENAME+".__code)} catch(err) {"+BASENAME+".__result = err}";window.execScript(code);var result=BASE.__result;delete BASE.__result;delete BASE.__code;if(result instanceof Error){throw result}return result}}else{EVAL=function(code){BASE.__code=code;code="try {"+BASENAME+".__result = eval("+BASENAME+".__code)} catch(err) {"+BASENAME+".__result = err}";var head=(document.getElementsByTagName("head"))[0];if(!head){head=document.body}var script=document.createElement("script");script.appendChild(document.createTextNode(code));head.appendChild(script);head.removeChild(script);var result=BASE.__result;delete BASE.__result;delete BASE.__code;if(result instanceof Error){throw result}return result}}}TESTEVAL=null};var USING=function(args,i){if(arguments.length>1){if(arguments.length===2&&!(typeof arguments[0]==="function")&&arguments[0] instanceof Object&&typeof arguments[1]==="number"){args=[].slice.call(args,i)}else{args=[].slice.call(arguments,0)}}if(isArray(args)&&args.length===1){args=args[0]}if(typeof args==="function"){if(args.execute===CALLBACK.prototype.execute){return args}return CALLBACK({hook:args})}else{if(isArray(args)){if(typeof(args[0])==="string"&&args[1] instanceof Object&&typeof args[1][args[0]]==="function"){return CALLBACK({hook:args[1][args[0]],object:args[1],data:args.slice(2)})}else{if(typeof args[0]==="function"){return CALLBACK({hook:args[0],data:args.slice(1)})}else{if(typeof args[1]==="function"){return CALLBACK({hook:args[1],object:args[0],data:args.slice(2)})}}}}else{if(typeof(args)==="string"){if(TESTEVAL){TESTEVAL()}return CALLBACK({hook:EVAL,data:[args]})}else{if(args instanceof Object){return CALLBACK(args)}else{if(typeof(args)==="undefined"){return CALLBACK({})}}}}}throw Error("Can't make callback from given data")};var DELAY=function(time,callback){callback=USING(callback);callback.timeout=setTimeout(callback,time);return callback};var WAITFOR=function(callback,signal){callback=USING(callback);if(!callback.called){WAITSIGNAL(callback,signal);signal.pending++}};var WAITEXECUTE=function(){var signals=this.signal;delete this.signal;this.execute=this.oldExecute;delete this.oldExecute;var result=this.execute.apply(this,arguments);if(ISCALLBACK(result)&&!result.called){WAITSIGNAL(result,signals)}else{for(var i=0,m=signals.length;i0&&priority=0;i--){this.hooks.splice(i,1)}this.remove=[]}});var EXECUTEHOOKS=function(hooks,data,reset){if(!hooks){return null}if(!isArray(hooks)){hooks=[hooks]}if(!isArray(data)){data=(data==null?[]:[data])}var handler=HOOKS(reset);for(var i=0,m=hooks.length;ig){g=document.styleSheets.length}if(!i){i=document.head||((document.getElementsByTagName("head"))[0]);if(!i){i=document.body}}return i};var f=[];var c=function(){for(var k=0,j=f.length;k=this.timeout){i(this.STATUS.ERROR);return 1}return 0},file:function(j,i){if(i<0){a.Ajax.loadTimeout(j)}else{a.Ajax.loadComplete(j)}},execute:function(){this.hook.call(this.object,this,this.data[0],this.data[1])},checkSafari2:function(i,j,k){if(i.time(k)){return}if(document.styleSheets.length>j&&document.styleSheets[j].cssRules&&document.styleSheets[j].cssRules.length){k(i.STATUS.OK)}else{setTimeout(i,i.delay)}},checkLength:function(i,l,n){if(i.time(n)){return}var m=0;var j=(l.sheet||l.styleSheet);try{if((j.cssRules||j.rules||[]).length>0){m=1}}catch(k){if(k.message.match(/protected variable|restricted URI/)){m=1}else{if(k.message.match(/Security error/)){m=1}}}if(m){setTimeout(a.Callback([n,i.STATUS.OK]),0)}else{setTimeout(i,i.delay)}}},loadComplete:function(i){i=this.fileURL(i);var j=this.loading[i];if(j&&!j.preloaded){a.Message.Clear(j.message);clearTimeout(j.timeout);if(j.script){if(f.length===0){setTimeout(c,0)}f.push(j.script)}this.loaded[i]=j.status;delete this.loading[i];this.addHook(i,j.callback)}else{if(j){delete this.loading[i]}this.loaded[i]=this.STATUS.OK;j={status:this.STATUS.OK}}if(!this.loadHooks[i]){return null}return this.loadHooks[i].Execute(j.status)},loadTimeout:function(i){if(this.loading[i].timeout){clearTimeout(this.loading[i].timeout)}this.loading[i].status=this.STATUS.ERROR;this.loadError(i);this.loadComplete(i)},loadError:function(i){a.Message.Set(["LoadFailed","File failed to load: %1",i],null,2000);a.Hub.signal.Post(["file load error",i])},Styles:function(k,l){var i=this.StyleString(k);if(i===""){l=a.Callback(l);l()}else{var j=document.createElement("style");j.type="text/css";this.head=h(this.head);this.head.appendChild(j);if(j.styleSheet&&typeof(j.styleSheet.cssText)!=="undefined"){j.styleSheet.cssText=i}else{j.appendChild(document.createTextNode(i))}l=this.timer.create.call(this,l,j)}return l},StyleString:function(n){if(typeof(n)==="string"){return n}var k="",o,m;for(o in n){if(n.hasOwnProperty(o)){if(typeof n[o]==="string"){k+=o+" {"+n[o]+"}\n"}else{if(a.Object.isArray(n[o])){for(var l=0;l="0"&&q<="9"){f[j]=p[f[j]-1];if(typeof f[j]==="number"){f[j]=this.number(f[j])}}else{if(q==="{"){q=f[j].substr(1);if(q>="0"&&q<="9"){f[j]=p[f[j].substr(1,f[j].length-2)-1];if(typeof f[j]==="number"){f[j]=this.number(f[j])}}else{var k=f[j].match(/^\{([a-z]+):%(\d+)\|(.*)\}$/);if(k){if(k[1]==="plural"){var d=p[k[2]-1];if(typeof d==="undefined"){f[j]="???"}else{d=this.plural(d)-1;var h=k[3].replace(/(^|[^%])(%%)*%\|/g,"$1$2%\uEFEF").split(/\|/);if(d>=0&&d=3){c.push([f[0],f[1],this.processSnippet(g,f[2])])}else{c.push(e[d])}}}}else{c.push(e[d])}}return c},markdownPattern:/(%.)|(\*{1,3})((?:%.|.)+?)\2|(`+)((?:%.|.)+?)\4|\[((?:%.|.)+?)\]\(([^\s\)]+)\)/,processMarkdown:function(b,h,d){var j=[],e;var c=b.split(this.markdownPattern);var g=c[0];for(var f=1,a=c.length;f1?d[1]:""));f=null}if(e&&(!b.preJax||d)){c.nodeValue=c.nodeValue.replace(b.postJax,(e.length>1?e[1]:""))}if(f&&!f.nodeValue.match(/\S/)){f=f.previousSibling}}if(b.preRemoveClass&&f&&f.className===b.preRemoveClass){a.MathJax.preview=f}a.MathJax.checked=1},processInput:function(a){var b,i=MathJax.ElementJax.STATE;var h,e,d=a.scripts.length;try{while(a.ithis.processUpdateTime&&a.i1){d.jax[a.outputJax].push(b)}b.MathJax.state=c.OUTPUT},prepareOutput:function(c,f){while(c.jthis.processUpdateTime&&h.i=0;q--){if((b[q].src||"").match(f)){s.script=b[q].innerHTML;if(RegExp.$2){var t=RegExp.$2.substr(1).split(/\&/);for(var p=0,l=t.length;p=parseInt(y[z])}}return true},Select:function(j){var i=j[d.Browser];if(i){return i(d.Browser)}return null}};var e=k.replace(/^Mozilla\/(\d+\.)+\d+ /,"").replace(/[a-z][-a-z0-9._: ]+\/\d+[^ ]*-[^ ]*\.([a-z][a-z])?\d+ /i,"").replace(/Gentoo |Ubuntu\/(\d+\.)*\d+ (\([^)]*\) )?/,"");d.Browser=d.Insert(d.Insert(new String("Unknown"),{version:"0.0"}),a);for(var v in a){if(a.hasOwnProperty(v)){if(a[v]&&v.substr(0,2)==="is"){v=v.slice(2);if(v==="Mac"||v==="PC"){continue}d.Browser=d.Insert(new String(v),a);var r=new RegExp(".*(Version/| Trident/.*; rv:)((?:\\d+\\.)+\\d+)|.*("+v+")"+(v=="MSIE"?" ":"/")+"((?:\\d+\\.)*\\d+)|(?:^|\\(| )([a-z][-a-z0-9._: ]+|(?:Apple)?WebKit)/((?:\\d+\\.)+\\d+)");var u=r.exec(e)||["","","","unknown","0.0"];d.Browser.name=(u[1]!=""?v:(u[3]||u[5]));d.Browser.version=u[2]||u[4]||u[6];break}}}try{d.Browser.Select({Safari:function(j){var i=parseInt((String(j.version).split("."))[0]);if(i>85){j.webkit=j.version}if(i>=538){j.version="8.0"}else{if(i>=537){j.version="7.0"}else{if(i>=536){j.version="6.0"}else{if(i>=534){j.version="5.1"}else{if(i>=533){j.version="5.0"}else{if(i>=526){j.version="4.0"}else{if(i>=525){j.version="3.1"}else{if(i>500){j.version="3.0"}else{if(i>400){j.version="2.0"}else{if(i>85){j.version="1.0"}}}}}}}}}}j.webkit=(navigator.appVersion.match(/WebKit\/(\d+)\./))[1];j.isMobile=(navigator.appVersion.match(/Mobile/i)!=null);j.noContextMenu=j.isMobile},Firefox:function(j){if((j.version==="0.0"||k.match(/Firefox/)==null)&&navigator.product==="Gecko"){var m=k.match(/[\/ ]rv:(\d+\.\d.*?)[\) ]/);if(m){j.version=m[1]}else{var i=(navigator.buildID||navigator.productSub||"0").substr(0,8);if(i>="20111220"){j.version="9.0"}else{if(i>="20111120"){j.version="8.0"}else{if(i>="20110927"){j.version="7.0"}else{if(i>="20110816"){j.version="6.0"}else{if(i>="20110621"){j.version="5.0"}else{if(i>="20110320"){j.version="4.0"}else{if(i>="20100121"){j.version="3.6"}else{if(i>="20090630"){j.version="3.5"}else{if(i>="20080617"){j.version="3.0"}else{if(i>="20061024"){j.version="2.0"}}}}}}}}}}}}j.isMobile=(navigator.appVersion.match(/Android/i)!=null||k.match(/ Fennec\//)!=null||k.match(/Mobile/)!=null)},Chrome:function(i){i.noContextMenu=i.isMobile=!!navigator.userAgent.match(/ Mobile[ \/]/)},Opera:function(i){i.version=opera.version()},Edge:function(i){i.isMobile=!!navigator.userAgent.match(/ Phone/)},MSIE:function(j){j.isMobile=!!navigator.userAgent.match(/ Phone/);j.isIE9=!!(document.documentMode&&(window.performance||window.msPerformance));MathJax.HTML.setScriptBug=!j.isIE9||document.documentMode<9;MathJax.Hub.msieHTMLCollectionBug=(document.documentMode<9);if(document.documentMode<10&&!s.params.NoMathPlayer){try{new ActiveXObject("MathPlayer.Factory.1");j.hasMathPlayer=true}catch(m){}try{if(j.hasMathPlayer){var i=document.createElement("object");i.id="mathplayer";i.classid="clsid:32F66A20-7614-11D4-BD11-00104BD3F987";g.appendChild(i);document.namespaces.add("m","http://www.w3.org/1998/Math/MathML");j.mpNamespace=true;if(document.readyState&&(document.readyState==="loading"||document.readyState==="interactive")){document.write('');j.mpImported=true}}else{document.namespaces.add("mjx_IE_fix","http://www.w3.org/1999/xlink")}}catch(m){}}}})}catch(c){console.error(c.message)}d.Browser.Select(MathJax.Message.browsers);if(h.AuthorConfig&&typeof h.AuthorConfig.AuthorInit==="function"){h.AuthorConfig.AuthorInit()}d.queue=h.Callback.Queue();d.queue.Push(["Post",s.signal,"Begin"],["Config",s],["Cookie",s],["Styles",s],["Message",s],function(){var i=h.Callback.Queue(s.Jax(),s.Extensions());return i.Push({})},["Menu",s],s.onLoad(),function(){MathJax.isReady=true},["Typeset",s],["Hash",s],["MenuZoom",s],["Post",s.signal,"End"])})("MathJax")}}; diff --git a/public/js/themetoggle.js b/public/js/themetoggle.js index f8c6dcd..687d85e 100644 --- a/public/js/themetoggle.js +++ b/public/js/themetoggle.js @@ -1,13 +1,37 @@ function setTheme(mode) { localStorage.setItem("theme-storage", mode); + var toggleBtn = document.getElementById("dark-mode-toggle"); + if (mode === "dark") { - document.getElementById("darkModeStyle").disabled=false; - document.getElementById("dark-mode-toggle").innerHTML = ""; - feather.replace() + var darkModeStyle = document.getElementById("darkModeStyle"); + if (darkModeStyle) darkModeStyle.disabled = false; + + // Update icon to moon for dark mode + if (toggleBtn) { + toggleBtn.innerHTML = ` + + `; + toggleBtn.setAttribute('data-theme', 'dark'); + } } else if (mode === "light") { - document.getElementById("darkModeStyle").disabled=true; - document.getElementById("dark-mode-toggle").innerHTML = ""; - feather.replace() + var darkModeStyle = document.getElementById("darkModeStyle"); + if (darkModeStyle) darkModeStyle.disabled = true; + + // Update icon to sun for light mode + if (toggleBtn) { + toggleBtn.innerHTML = ` + + + + + + + + + + `; + toggleBtn.setAttribute('data-theme', 'light'); + } } } diff --git a/public/katex/auto-render.min.js b/public/katex/auto-render.min.js new file mode 100644 index 0000000..c169ec6 --- /dev/null +++ b/public/katex/auto-render.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("katex")):"function"==typeof define&&define.amd?define(["katex"],t):"object"==typeof exports?exports.renderMathInElement=t(require("katex")):e.renderMathInElement=t(e.katex)}("undefined"!=typeof self?self:this,(function(e){return function(){"use strict";var t={771:function(t){t.exports=e}},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var i=r[e]={exports:{}};return t[e](i,i.exports,n),i.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var a={};return function(){n.d(a,{default:function(){return s}});var e=n(771),t=n.n(e),r=function(e,t,r){for(var n=r,a=0,i=e.length;n0&&(a.push({type:"text",data:e.slice(0,n)}),e=e.slice(n));var l=t.findIndex((function(t){return e.startsWith(t.left)}));if(-1===(n=r(t[l].right,e,t[l].left.length)))break;var d=e.slice(0,n+t[l].right.length),s=i.test(d)?d:e.slice(t[l].left.length,n);a.push({type:"math",data:s,rawData:d,display:t[l].display}),e=e.slice(n+t[l].right.length)}return""!==e&&a.push({type:"text",data:e}),a},l=function(e,r){var n=o(e,r.delimiters);if(1===n.length&&"text"===n[0].type)return null;for(var a=document.createDocumentFragment(),i=0;i.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.83333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.16666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.66666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.45666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.14666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.85714286em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.46857143em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.96285714em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.55428571em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.66666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.77777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.88888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.30444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.76444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.58333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.66666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72833333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.07333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.41666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.48611111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.55555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.44027778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.72777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.28935185em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.34722222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.40509259em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.46296296em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.52083333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20023148em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.43981481em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.24108004em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.28929605em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.33751205em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.38572806em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.43394407em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48216008em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57859209em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69431051em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.83317261em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.19961427em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.20096463em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.24115756em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.28135048em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.32154341em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.36173633em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.40192926em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.48231511em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.57877814em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.69453376em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.83360129em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo} diff --git a/public/katex/katex.min.js b/public/katex/katex.min.js new file mode 100644 index 0000000..dfd717d --- /dev/null +++ b/public/katex/katex.min.js @@ -0,0 +1 @@ +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.katex=t():e.katex=t()}("undefined"!=typeof self?self:this,(function(){return function(){"use strict";var e={d:function(t,r){for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}},t={};e.d(t,{default:function(){return Zn}});var r=function e(t,r){this.position=void 0;var n,a="KaTeX parse error: "+t,i=r&&r.loc;if(i&&i.start<=i.end){var o=i.lexer.input;n=i.start;var s=i.end;n===o.length?a+=" at end of input: ":a+=" at position "+(n+1)+": ";var l=o.slice(n,s).replace(/[^]/g,"$&\u0332");a+=(n>15?"\u2026"+o.slice(n-15,n):o.slice(0,n))+l+(s+15":">","<":"<",'"':""","'":"'"},o=/[&><"']/g;var s=function e(t){return"ordgroup"===t.type||"color"===t.type?1===t.body.length?e(t.body[0]):t:"font"===t.type?e(t.body):t},l={contains:function(e,t){return-1!==e.indexOf(t)},deflt:function(e,t){return void 0===e?t:e},escape:function(e){return String(e).replace(o,(function(e){return i[e]}))},hyphenate:function(e){return e.replace(a,"-$1").toLowerCase()},getBaseElem:s,isCharacterBox:function(e){var t=s(e);return"mathord"===t.type||"textord"===t.type||"atom"===t.type},protocolFromUrl:function(e){var t=/^\s*([^\\/#]*?)(?::|�*58|�*3a)/i.exec(e);return null!=t?t[1]:"_relative"}},h={displayMode:{type:"boolean",description:"Render math in display mode, which puts the math in display style (so \\int and \\sum are large, for example), and centers the math on the page on its own line.",cli:"-d, --display-mode"},output:{type:{enum:["htmlAndMathml","html","mathml"]},description:"Determines the markup language of the output.",cli:"-F, --format "},leqno:{type:"boolean",description:"Render display math in leqno style (left-justified tags)."},fleqn:{type:"boolean",description:"Render display math flush left."},throwOnError:{type:"boolean",default:!0,cli:"-t, --no-throw-on-error",cliDescription:"Render errors (in the color given by --error-color) instead of throwing a ParseError exception when encountering an error."},errorColor:{type:"string",default:"#cc0000",cli:"-c, --error-color ",cliDescription:"A color string given in the format 'rgb' or 'rrggbb' (no #). This option determines the color of errors rendered by the -t option.",cliProcessor:function(e){return"#"+e}},macros:{type:"object",cli:"-m, --macro ",cliDescription:"Define custom macro of the form '\\foo:expansion' (use multiple -m arguments for multiple macros).",cliDefault:[],cliProcessor:function(e,t){return t.push(e),t}},minRuleThickness:{type:"number",description:"Specifies a minimum thickness, in ems, for fraction lines, `\\sqrt` top lines, `{array}` vertical lines, `\\hline`, `\\hdashline`, `\\underline`, `\\overline`, and the borders of `\\fbox`, `\\boxed`, and `\\fcolorbox`.",processor:function(e){return Math.max(0,e)},cli:"--min-rule-thickness ",cliProcessor:parseFloat},colorIsTextColor:{type:"boolean",description:"Makes \\color behave like LaTeX's 2-argument \\textcolor, instead of LaTeX's one-argument \\color mode change.",cli:"-b, --color-is-text-color"},strict:{type:[{enum:["warn","ignore","error"]},"boolean","function"],description:"Turn on strict / LaTeX faithfulness mode, which throws an error if the input uses features that are not supported by LaTeX.",cli:"-S, --strict",cliDefault:!1},trust:{type:["boolean","function"],description:"Trust the input, enabling all HTML features such as \\url.",cli:"-T, --trust"},maxSize:{type:"number",default:1/0,description:"If non-zero, all user-specified sizes, e.g. in \\rule{500em}{500em}, will be capped to maxSize ems. Otherwise, elements and spaces can be arbitrarily large",processor:function(e){return Math.max(0,e)},cli:"-s, --max-size ",cliProcessor:parseInt},maxExpand:{type:"number",default:1e3,description:"Limit the number of macro expansions to the specified number, to prevent e.g. infinite macro loops. If set to Infinity, the macro expander will try to fully expand as in LaTeX.",processor:function(e){return Math.max(0,e)},cli:"-e, --max-expand ",cliProcessor:function(e){return"Infinity"===e?1/0:parseInt(e)}},globalGroup:{type:"boolean",cli:!1}};function m(e){if(e.default)return e.default;var t=e.type,r=Array.isArray(t)?t[0]:t;if("string"!=typeof r)return r.enum[0];switch(r){case"boolean":return!1;case"string":return"";case"number":return 0;case"object":return{}}}var c=function(){function e(e){for(var t in this.displayMode=void 0,this.output=void 0,this.leqno=void 0,this.fleqn=void 0,this.throwOnError=void 0,this.errorColor=void 0,this.macros=void 0,this.minRuleThickness=void 0,this.colorIsTextColor=void 0,this.strict=void 0,this.trust=void 0,this.maxSize=void 0,this.maxExpand=void 0,this.globalGroup=void 0,e=e||{},h)if(h.hasOwnProperty(t)){var r=h[t];this[t]=void 0!==e[t]?r.processor?r.processor(e[t]):e[t]:m(r)}}var t=e.prototype;return t.reportNonstrict=function(e,t,r){var a=this.strict;if("function"==typeof a&&(a=a(e,t,r)),a&&"ignore"!==a){if(!0===a||"error"===a)throw new n("LaTeX-incompatible input and strict mode is set to 'error': "+t+" ["+e+"]",r);"warn"===a?"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"):"undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+a+"': "+t+" ["+e+"]")}},t.useStrictBehavior=function(e,t,r){var n=this.strict;if("function"==typeof n)try{n=n(e,t,r)}catch(e){n="error"}return!(!n||"ignore"===n)&&(!0===n||"error"===n||("warn"===n?("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to 'warn': "+t+" ["+e+"]"),!1):("undefined"!=typeof console&&console.warn("LaTeX-incompatible input and strict mode is set to unrecognized '"+n+"': "+t+" ["+e+"]"),!1)))},t.isTrusted=function(e){e.url&&!e.protocol&&(e.protocol=l.protocolFromUrl(e.url));var t="function"==typeof this.trust?this.trust(e):this.trust;return Boolean(t)},e}(),u=function(){function e(e,t,r){this.id=void 0,this.size=void 0,this.cramped=void 0,this.id=e,this.size=t,this.cramped=r}var t=e.prototype;return t.sup=function(){return p[d[this.id]]},t.sub=function(){return p[f[this.id]]},t.fracNum=function(){return p[g[this.id]]},t.fracDen=function(){return p[v[this.id]]},t.cramp=function(){return p[b[this.id]]},t.text=function(){return p[y[this.id]]},t.isTight=function(){return this.size>=2},e}(),p=[new u(0,0,!1),new u(1,0,!0),new u(2,1,!1),new u(3,1,!0),new u(4,2,!1),new u(5,2,!0),new u(6,3,!1),new u(7,3,!0)],d=[4,5,4,5,6,7,6,7],f=[5,5,5,5,7,7,7,7],g=[2,3,4,5,6,7,6,7],v=[3,3,5,5,7,7,7,7],b=[1,1,3,3,5,5,7,7],y=[0,1,2,3,2,3,2,3],x={DISPLAY:p[0],TEXT:p[2],SCRIPT:p[4],SCRIPTSCRIPT:p[6]},w=[{name:"latin",blocks:[[256,591],[768,879]]},{name:"cyrillic",blocks:[[1024,1279]]},{name:"armenian",blocks:[[1328,1423]]},{name:"brahmic",blocks:[[2304,4255]]},{name:"georgian",blocks:[[4256,4351]]},{name:"cjk",blocks:[[12288,12543],[19968,40879],[65280,65376]]},{name:"hangul",blocks:[[44032,55215]]}];var k=[];function S(e){for(var t=0;t=k[t]&&e<=k[t+1])return!0;return!1}w.forEach((function(e){return e.blocks.forEach((function(e){return k.push.apply(k,e)}))}));var M=80,z={doubleleftarrow:"M262 157\nl10-10c34-36 62.7-77 86-123 3.3-8 5-13.3 5-16 0-5.3-6.7-8-20-8-7.3\n 0-12.2.5-14.5 1.5-2.3 1-4.8 4.5-7.5 10.5-49.3 97.3-121.7 169.3-217 216-28\n 14-57.3 25-88 33-6.7 2-11 3.8-13 5.5-2 1.7-3 4.2-3 7.5s1 5.8 3 7.5\nc2 1.7 6.3 3.5 13 5.5 68 17.3 128.2 47.8 180.5 91.5 52.3 43.7 93.8 96.2 124.5\n 157.5 9.3 8 15.3 12.3 18 13h6c12-.7 18-4 18-10 0-2-1.7-7-5-15-23.3-46-52-87\n-86-123l-10-10h399738v-40H218c328 0 0 0 0 0l-10-8c-26.7-20-65.7-43-117-69 2.7\n-2 6-3.7 10-5 36.7-16 72.3-37.3 107-64l10-8h399782v-40z\nm8 0v40h399730v-40zm0 194v40h399730v-40z",doublerightarrow:"M399738 392l\n-10 10c-34 36-62.7 77-86 123-3.3 8-5 13.3-5 16 0 5.3 6.7 8 20 8 7.3 0 12.2-.5\n 14.5-1.5 2.3-1 4.8-4.5 7.5-10.5 49.3-97.3 121.7-169.3 217-216 28-14 57.3-25 88\n-33 6.7-2 11-3.8 13-5.5 2-1.7 3-4.2 3-7.5s-1-5.8-3-7.5c-2-1.7-6.3-3.5-13-5.5-68\n-17.3-128.2-47.8-180.5-91.5-52.3-43.7-93.8-96.2-124.5-157.5-9.3-8-15.3-12.3-18\n-13h-6c-12 .7-18 4-18 10 0 2 1.7 7 5 15 23.3 46 52 87 86 123l10 10H0v40h399782\nc-328 0 0 0 0 0l10 8c26.7 20 65.7 43 117 69-2.7 2-6 3.7-10 5-36.7 16-72.3 37.3\n-107 64l-10 8H0v40zM0 157v40h399730v-40zm0 194v40h399730v-40z",leftarrow:"M400000 241H110l3-3c68.7-52.7 113.7-120\n 135-202 4-14.7 6-23 6-25 0-7.3-7-11-21-11-8 0-13.2.8-15.5 2.5-2.3 1.7-4.2 5.8\n-5.5 12.5-1.3 4.7-2.7 10.3-4 17-12 48.7-34.8 92-68.5 130S65.3 228.3 18 247\nc-10 4-16 7.7-18 11 0 8.7 6 14.3 18 17 47.3 18.7 87.8 47 121.5 85S196 441.3 208\n 490c.7 2 1.3 5 2 9s1.2 6.7 1.5 8c.3 1.3 1 3.3 2 6s2.2 4.5 3.5 5.5c1.3 1 3.3\n 1.8 6 2.5s6 1 10 1c14 0 21-3.7 21-11 0-2-2-10.3-6-25-20-79.3-65-146.7-135-202\n l-3-3h399890zM100 241v40h399900v-40z",leftbrace:"M6 548l-6-6v-35l6-11c56-104 135.3-181.3 238-232 57.3-28.7 117\n-45 179-50h399577v120H403c-43.3 7-81 15-113 26-100.7 33-179.7 91-237 174-2.7\n 5-6 9-10 13-.7 1-7.3 1-20 1H6z",leftbraceunder:"M0 6l6-6h17c12.688 0 19.313.3 20 1 4 4 7.313 8.3 10 13\n 35.313 51.3 80.813 93.8 136.5 127.5 55.688 33.7 117.188 55.8 184.5 66.5.688\n 0 2 .3 4 1 18.688 2.7 76 4.3 172 5h399450v120H429l-6-1c-124.688-8-235-61.7\n-331-161C60.687 138.7 32.312 99.3 7 54L0 41V6z",leftgroup:"M400000 80\nH435C64 80 168.3 229.4 21 260c-5.9 1.2-18 0-18 0-2 0-3-1-3-3v-38C76 61 257 0\n 435 0h399565z",leftgroupunder:"M400000 262\nH435C64 262 168.3 112.6 21 82c-5.9-1.2-18 0-18 0-2 0-3 1-3 3v38c76 158 257 219\n 435 219h399565z",leftharpoon:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3\n-3.3 10.2-9.5 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5\n-18.3 3-21-1.3-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7\n-196 228-6.7 4.7-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40z",leftharpoonplus:"M0 267c.7 5.3 3 10 7 14h399993v-40H93c3.3-3.3 10.2-9.5\n 20.5-18.5s17.8-15.8 22.5-20.5c50.7-52 88-110.3 112-175 4-11.3 5-18.3 3-21-1.3\n-4-7.3-6-18-6-8 0-13 .7-15 2s-4.7 6.7-8 16c-42 98.7-107.3 174.7-196 228-6.7 4.7\n-10.7 8-12 10-1.3 2-2 5.7-2 11zm100-26v40h399900v-40zM0 435v40h400000v-40z\nm0 0v40h400000v-40z",leftharpoondown:"M7 241c-4 4-6.333 8.667-7 14 0 5.333.667 9 2 11s5.333\n 5.333 12 10c90.667 54 156 130 196 228 3.333 10.667 6.333 16.333 9 17 2 .667 5\n 1 9 1h5c10.667 0 16.667-2 18-6 2-2.667 1-9.667-3-21-32-87.333-82.667-157.667\n-152-211l-3-3h399907v-40zM93 281 H400000 v-40L7 241z",leftharpoondownplus:"M7 435c-4 4-6.3 8.7-7 14 0 5.3.7 9 2 11s5.3 5.3 12\n 10c90.7 54 156 130 196 228 3.3 10.7 6.3 16.3 9 17 2 .7 5 1 9 1h5c10.7 0 16.7\n-2 18-6 2-2.7 1-9.7-3-21-32-87.3-82.7-157.7-152-211l-3-3h399907v-40H7zm93 0\nv40h399900v-40zM0 241v40h399900v-40zm0 0v40h399900v-40z",lefthook:"M400000 281 H103s-33-11.2-61-33.5S0 197.3 0 164s14.2-61.2 42.5\n-83.5C70.8 58.2 104 47 142 47 c16.7 0 25 6.7 25 20 0 12-8.7 18.7-26 20-40 3.3\n-68.7 15.7-86 37-10 12-15 25.3-15 40 0 22.7 9.8 40.7 29.5 54 19.7 13.3 43.5 21\n 71.5 23h399859zM103 281v-40h399897v40z",leftlinesegment:"M40 281 V428 H0 V94 H40 V241 H400000 v40z\nM40 281 V428 H0 V94 H40 V241 H400000 v40z",leftmapsto:"M40 281 V448H0V74H40V241H400000v40z\nM40 281 V448H0V74H40V241H400000v40z",leftToFrom:"M0 147h400000v40H0zm0 214c68 40 115.7 95.7 143 167h22c15.3 0 23\n-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69-70-101l-7-8h399905v-40H95l7-8\nc28.7-32 52-65.7 70-101 10.7-23.3 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 265.3\n 68 321 0 361zm0-174v-40h399900v40zm100 154v40h399900v-40z",longequal:"M0 50 h400000 v40H0z m0 194h40000v40H0z\nM0 50 h400000 v40H0z m0 194h40000v40H0z",midbrace:"M200428 334\nc-100.7-8.3-195.3-44-280-108-55.3-42-101.7-93-139-153l-9-14c-2.7 4-5.7 8.7-9 14\n-53.3 86.7-123.7 153-211 199-66.7 36-137.3 56.3-212 62H0V214h199568c178.3-11.7\n 311.7-78.3 403-201 6-8 9.7-12 11-12 .7-.7 6.7-1 18-1s17.3.3 18 1c1.3 0 5 4 11\n 12 44.7 59.3 101.3 106.3 170 141s145.3 54.3 229 60h199572v120z",midbraceunder:"M199572 214\nc100.7 8.3 195.3 44 280 108 55.3 42 101.7 93 139 153l9 14c2.7-4 5.7-8.7 9-14\n 53.3-86.7 123.7-153 211-199 66.7-36 137.3-56.3 212-62h199568v120H200432c-178.3\n 11.7-311.7 78.3-403 201-6 8-9.7 12-11 12-.7.7-6.7 1-18 1s-17.3-.3-18-1c-1.3 0\n-5-4-11-12-44.7-59.3-101.3-106.3-170-141s-145.3-54.3-229-60H0V214z",oiintSize1:"M512.6 71.6c272.6 0 320.3 106.8 320.3 178.2 0 70.8-47.7 177.6\n-320.3 177.6S193.1 320.6 193.1 249.8c0-71.4 46.9-178.2 319.5-178.2z\nm368.1 178.2c0-86.4-60.9-215.4-368.1-215.4-306.4 0-367.3 129-367.3 215.4 0 85.8\n60.9 214.8 367.3 214.8 307.2 0 368.1-129 368.1-214.8z",oiintSize2:"M757.8 100.1c384.7 0 451.1 137.6 451.1 230 0 91.3-66.4 228.8\n-451.1 228.8-386.3 0-452.7-137.5-452.7-228.8 0-92.4 66.4-230 452.7-230z\nm502.4 230c0-111.2-82.4-277.2-502.4-277.2s-504 166-504 277.2\nc0 110 84 276 504 276s502.4-166 502.4-276z",oiiintSize1:"M681.4 71.6c408.9 0 480.5 106.8 480.5 178.2 0 70.8-71.6 177.6\n-480.5 177.6S202.1 320.6 202.1 249.8c0-71.4 70.5-178.2 479.3-178.2z\nm525.8 178.2c0-86.4-86.8-215.4-525.7-215.4-437.9 0-524.7 129-524.7 215.4 0\n85.8 86.8 214.8 524.7 214.8 438.9 0 525.7-129 525.7-214.8z",oiiintSize2:"M1021.2 53c603.6 0 707.8 165.8 707.8 277.2 0 110-104.2 275.8\n-707.8 275.8-606 0-710.2-165.8-710.2-275.8C311 218.8 415.2 53 1021.2 53z\nm770.4 277.1c0-131.2-126.4-327.6-770.5-327.6S248.4 198.9 248.4 330.1\nc0 130 128.8 326.4 772.7 326.4s770.5-196.4 770.5-326.4z",rightarrow:"M0 241v40h399891c-47.3 35.3-84 78-110 128\n-16.7 32-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20\n 11 8 0 13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7\n 39-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85\n-40.5-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n 151.7 139 205zm0 0v40h399900v-40z",rightbrace:"M400000 542l\n-6 6h-17c-12.7 0-19.3-.3-20-1-4-4-7.3-8.3-10-13-35.3-51.3-80.8-93.8-136.5-127.5\ns-117.2-55.8-184.5-66.5c-.7 0-2-.3-4-1-18.7-2.7-76-4.3-172-5H0V214h399571l6 1\nc124.7 8 235 61.7 331 161 31.3 33.3 59.7 72.7 85 118l7 13v35z",rightbraceunder:"M399994 0l6 6v35l-6 11c-56 104-135.3 181.3-238 232-57.3\n 28.7-117 45-179 50H-300V214h399897c43.3-7 81-15 113-26 100.7-33 179.7-91 237\n-174 2.7-5 6-9 10-13 .7-1 7.3-1 20-1h17z",rightgroup:"M0 80h399565c371 0 266.7 149.4 414 180 5.9 1.2 18 0 18 0 2 0\n 3-1 3-3v-38c-76-158-257-219-435-219H0z",rightgroupunder:"M0 262h399565c371 0 266.7-149.4 414-180 5.9-1.2 18 0 18\n 0 2 0 3 1 3 3v38c-76 158-257 219-435 219H0z",rightharpoon:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3\n-3.7-15.3-11-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2\n-10.7 0-16.7 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58\n 69.2 92 94.5zm0 0v40h399900v-40z",rightharpoonplus:"M0 241v40h399993c4.7-4.7 7-9.3 7-14 0-9.3-3.7-15.3-11\n-18-92.7-56.7-159-133.7-199-231-3.3-9.3-6-14.7-8-16-2-1.3-7-2-15-2-10.7 0-16.7\n 2-18 6-2 2.7-1 9.7 3 21 15.3 42 36.7 81.8 64 119.5 27.3 37.7 58 69.2 92 94.5z\nm0 0v40h399900v-40z m100 194v40h399900v-40zm0 0v40h399900v-40z",rightharpoondown:"M399747 511c0 7.3 6.7 11 20 11 8 0 13-.8 15-2.5s4.7-6.8\n 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3 8.5-5.8 9.5\n-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3-64.7 57-92 95\n-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 241v40h399900v-40z",rightharpoondownplus:"M399747 705c0 7.3 6.7 11 20 11 8 0 13-.8\n 15-2.5s4.7-6.8 8-15.5c40-94 99.3-166.3 178-217 13.3-8 20.3-12.3 21-13 5.3-3.3\n 8.5-5.8 9.5-7.5 1-1.7 1.5-5.2 1.5-10.5s-2.3-10.3-7-15H0v40h399908c-34 25.3\n-64.7 57-92 95-27.3 38-48.7 77.7-64 119-3.3 8.7-5 14-5 16zM0 435v40h399900v-40z\nm0-194v40h400000v-40zm0 0v40h400000v-40z",righthook:"M399859 241c-764 0 0 0 0 0 40-3.3 68.7-15.7 86-37 10-12 15-25.3\n 15-40 0-22.7-9.8-40.7-29.5-54-19.7-13.3-43.5-21-71.5-23-17.3-1.3-26-8-26-20 0\n-13.3 8.7-20 26-20 38 0 71 11.2 99 33.5 0 0 7 5.6 21 16.7 14 11.2 21 33.5 21\n 66.8s-14 61.2-42 83.5c-28 22.3-61 33.5-99 33.5L0 241z M0 281v-40h399859v40z",rightlinesegment:"M399960 241 V94 h40 V428 h-40 V281 H0 v-40z\nM399960 241 V94 h40 V428 h-40 V281 H0 v-40z",rightToFrom:"M400000 167c-70.7-42-118-97.7-142-167h-23c-15.3 0-23 .3-23\n 1 0 1.3 5.3 13.7 16 37 18 35.3 41.3 69 70 101l7 8H0v40h399905l-7 8c-28.7 32\n-52 65.7-70 101-10.7 23.3-16 35.7-16 37 0 .7 7.7 1 23 1h23c24-69.3 71.3-125 142\n-167z M100 147v40h399900v-40zM0 341v40h399900v-40z",twoheadleftarrow:"M0 167c68 40\n 115.7 95.7 143 167h22c15.3 0 23-.3 23-1 0-1.3-5.3-13.7-16-37-18-35.3-41.3-69\n-70-101l-7-8h125l9 7c50.7 39.3 85 86 103 140h46c0-4.7-6.3-18.7-19-42-18-35.3\n-40-67.3-66-96l-9-9h399716v-40H284l9-9c26-28.7 48-60.7 66-96 12.7-23.333 19\n-37.333 19-42h-46c-18 54-52.3 100.7-103 140l-9 7H95l7-8c28.7-32 52-65.7 70-101\n 10.7-23.333 16-35.7 16-37 0-.7-7.7-1-23-1h-22C115.7 71.3 68 127 0 167z",twoheadrightarrow:"M400000 167\nc-68-40-115.7-95.7-143-167h-22c-15.3 0-23 .3-23 1 0 1.3 5.3 13.7 16 37 18 35.3\n 41.3 69 70 101l7 8h-125l-9-7c-50.7-39.3-85-86-103-140h-46c0 4.7 6.3 18.7 19 42\n 18 35.3 40 67.3 66 96l9 9H0v40h399716l-9 9c-26 28.7-48 60.7-66 96-12.7 23.333\n-19 37.333-19 42h46c18-54 52.3-100.7 103-140l9-7h125l-7 8c-28.7 32-52 65.7-70\n 101-10.7 23.333-16 35.7-16 37 0 .7 7.7 1 23 1h22c27.3-71.3 75-127 143-167z",tilde1:"M200 55.538c-77 0-168 73.953-177 73.953-3 0-7\n-2.175-9-5.437L2 97c-1-2-2-4-2-6 0-4 2-7 5-9l20-12C116 12 171 0 207 0c86 0\n 114 68 191 68 78 0 168-68 177-68 4 0 7 2 9 5l12 19c1 2.175 2 4.35 2 6.525 0\n 4.35-2 7.613-5 9.788l-19 13.05c-92 63.077-116.937 75.308-183 76.128\n-68.267.847-113-73.952-191-73.952z",tilde2:"M344 55.266c-142 0-300.638 81.316-311.5 86.418\n-8.01 3.762-22.5 10.91-23.5 5.562L1 120c-1-2-1-3-1-4 0-5 3-9 8-10l18.4-9C160.9\n 31.9 283 0 358 0c148 0 188 122 331 122s314-97 326-97c4 0 8 2 10 7l7 21.114\nc1 2.14 1 3.21 1 4.28 0 5.347-3 9.626-7 10.696l-22.3 12.622C852.6 158.372 751\n 181.476 676 181.476c-149 0-189-126.21-332-126.21z",tilde3:"M786 59C457 59 32 175.242 13 175.242c-6 0-10-3.457\n-11-10.37L.15 138c-1-7 3-12 10-13l19.2-6.4C378.4 40.7 634.3 0 804.3 0c337 0\n 411.8 157 746.8 157 328 0 754-112 773-112 5 0 10 3 11 9l1 14.075c1 8.066-.697\n 16.595-6.697 17.492l-21.052 7.31c-367.9 98.146-609.15 122.696-778.15 122.696\n -338 0-409-156.573-744-156.573z",tilde4:"M786 58C457 58 32 177.487 13 177.487c-6 0-10-3.345\n-11-10.035L.15 143c-1-7 3-12 10-13l22-6.7C381.2 35 637.15 0 807.15 0c337 0 409\n 177 744 177 328 0 754-127 773-127 5 0 10 3 11 9l1 14.794c1 7.805-3 13.38-9\n 14.495l-20.7 5.574c-366.85 99.79-607.3 139.372-776.3 139.372-338 0-409\n -175.236-744-175.236z",vec:"M377 20c0-5.333 1.833-10 5.5-14S391 0 397 0c4.667 0 8.667 1.667 12 5\n3.333 2.667 6.667 9 10 19 6.667 24.667 20.333 43.667 41 57 7.333 4.667 11\n10.667 11 18 0 6-1 10-3 12s-6.667 5-14 9c-28.667 14.667-53.667 35.667-75 63\n-1.333 1.333-3.167 3.5-5.5 6.5s-4 4.833-5 5.5c-1 .667-2.5 1.333-4.5 2s-4.333 1\n-7 1c-4.667 0-9.167-1.833-13.5-5.5S337 184 337 178c0-12.667 15.667-32.333 47-59\nH213l-171-1c-8.667-6-13-12.333-13-19 0-4.667 4.333-11.333 13-20h359\nc-16-25.333-24-45-24-59z",widehat1:"M529 0h5l519 115c5 1 9 5 9 10 0 1-1 2-1 3l-4 22\nc-1 5-5 9-11 9h-2L532 67 19 159h-2c-5 0-9-4-11-9l-5-22c-1-6 2-12 8-13z",widehat2:"M1181 0h2l1171 176c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 220h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat3:"M1181 0h2l1171 236c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 280h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widehat4:"M1181 0h2l1171 296c6 0 10 5 10 11l-2 23c-1 6-5 10\n-11 10h-1L1182 67 15 340h-1c-6 0-10-4-11-10l-2-23c-1-6 4-11 10-11z",widecheck1:"M529,159h5l519,-115c5,-1,9,-5,9,-10c0,-1,-1,-2,-1,-3l-4,-22c-1,\n-5,-5,-9,-11,-9h-2l-512,92l-513,-92h-2c-5,0,-9,4,-11,9l-5,22c-1,6,2,12,8,13z",widecheck2:"M1181,220h2l1171,-176c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,153l-1167,-153h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck3:"M1181,280h2l1171,-236c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,213l-1167,-213h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",widecheck4:"M1181,340h2l1171,-296c6,0,10,-5,10,-11l-2,-23c-1,-6,-5,-10,\n-11,-10h-1l-1168,273l-1167,-273h-1c-6,0,-10,4,-11,10l-2,23c-1,6,4,11,10,11z",baraboveleftarrow:"M400000 620h-399890l3 -3c68.7 -52.7 113.7 -120 135 -202\nc4 -14.7 6 -23 6 -25c0 -7.3 -7 -11 -21 -11c-8 0 -13.2 0.8 -15.5 2.5\nc-2.3 1.7 -4.2 5.8 -5.5 12.5c-1.3 4.7 -2.7 10.3 -4 17c-12 48.7 -34.8 92 -68.5 130\ns-74.2 66.3 -121.5 85c-10 4 -16 7.7 -18 11c0 8.7 6 14.3 18 17c47.3 18.7 87.8 47\n121.5 85s56.5 81.3 68.5 130c0.7 2 1.3 5 2 9s1.2 6.7 1.5 8c0.3 1.3 1 3.3 2 6\ns2.2 4.5 3.5 5.5c1.3 1 3.3 1.8 6 2.5s6 1 10 1c14 0 21 -3.7 21 -11\nc0 -2 -2 -10.3 -6 -25c-20 -79.3 -65 -146.7 -135 -202l-3 -3h399890z\nM100 620v40h399900v-40z M0 241v40h399900v-40zM0 241v40h399900v-40z",rightarrowabovebar:"M0 241v40h399891c-47.3 35.3-84 78-110 128-16.7 32\n-27.7 63.7-33 95 0 1.3-.2 2.7-.5 4-.3 1.3-.5 2.3-.5 3 0 7.3 6.7 11 20 11 8 0\n13.2-.8 15.5-2.5 2.3-1.7 4.2-5.5 5.5-11.5 2-13.3 5.7-27 11-41 14.7-44.7 39\n-84.5 73-119.5s73.7-60.2 119-75.5c6-2 9-5.7 9-11s-3-9-9-11c-45.3-15.3-85-40.5\n-119-75.5s-58.3-74.8-73-119.5c-4.7-14-8.3-27.3-11-40-1.3-6.7-3.2-10.8-5.5\n-12.5-2.3-1.7-7.5-2.5-15.5-2.5-14 0-21 3.7-21 11 0 2 2 10.3 6 25 20.7 83.3 67\n151.7 139 205zm96 379h399894v40H0zm0 0h399904v40H0z",baraboveshortleftharpoon:"M507,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17\nc2,0.7,5,1,9,1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21\nc-32,-87.3,-82.7,-157.7,-152,-211c0,0,-3,-3,-3,-3l399351,0l0,-40\nc-398570,0,-399437,0,-399437,0z M593 435 v40 H399500 v-40z\nM0 281 v-40 H399908 v40z M0 281 v-40 H399908 v40z",rightharpoonaboveshortbar:"M0,241 l0,40c399126,0,399993,0,399993,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM0 241 v40 H399908 v-40z M0 475 v-40 H399500 v40z M0 475 v-40 H399500 v40z",shortbaraboveleftharpoon:"M7,435c-4,4,-6.3,8.7,-7,14c0,5.3,0.7,9,2,11\nc1.3,2,5.3,5.3,12,10c90.7,54,156,130,196,228c3.3,10.7,6.3,16.3,9,17c2,0.7,5,1,9,\n1c0,0,5,0,5,0c10.7,0,16.7,-2,18,-6c2,-2.7,1,-9.7,-3,-21c-32,-87.3,-82.7,-157.7,\n-152,-211c0,0,-3,-3,-3,-3l399907,0l0,-40c-399126,0,-399993,0,-399993,0z\nM93 435 v40 H400000 v-40z M500 241 v40 H400000 v-40z M500 241 v40 H400000 v-40z",shortrightharpoonabovebar:"M53,241l0,40c398570,0,399437,0,399437,0\nc4.7,-4.7,7,-9.3,7,-14c0,-9.3,-3.7,-15.3,-11,-18c-92.7,-56.7,-159,-133.7,-199,\n-231c-3.3,-9.3,-6,-14.7,-8,-16c-2,-1.3,-7,-2,-15,-2c-10.7,0,-16.7,2,-18,6\nc-2,2.7,-1,9.7,3,21c15.3,42,36.7,81.8,64,119.5c27.3,37.7,58,69.2,92,94.5z\nM500 241 v40 H399408 v-40z M500 435 v40 H400000 v-40z"},A=function(){function e(e){this.children=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.children=e,this.classes=[],this.height=0,this.depth=0,this.maxFontSize=0,this.style={}}var t=e.prototype;return t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){for(var e=document.createDocumentFragment(),t=0;t=5?0:e>=3?1:2]){var r=N[t]={cssEmPerMu:B.quad[t]/18};for(var n in B)B.hasOwnProperty(n)&&(r[n]=B[n][t])}return N[t]}(this.size)),this._fontMetrics},t.getColor=function(){return this.phantom?"transparent":this.color},e}();H.BASESIZE=6;var E=H,L={pt:1,mm:7227/2540,cm:7227/254,in:72.27,bp:1.00375,pc:12,dd:1238/1157,cc:14856/1157,nd:685/642,nc:1370/107,sp:1/65536,px:1.00375},D={ex:!0,em:!0,mu:!0},P=function(e){return"string"!=typeof e&&(e=e.unit),e in L||e in D||"ex"===e},F=function(e,t){var r;if(e.unit in L)r=L[e.unit]/t.fontMetrics().ptPerEm/t.sizeMultiplier;else if("mu"===e.unit)r=t.fontMetrics().cssEmPerMu;else{var a;if(a=t.style.isTight()?t.havingStyle(t.style.text()):t,"ex"===e.unit)r=a.fontMetrics().xHeight;else{if("em"!==e.unit)throw new n("Invalid unit: '"+e.unit+"'");r=a.fontMetrics().quad}a!==t&&(r*=a.sizeMultiplier/t.sizeMultiplier)}return Math.min(e.number*r,t.maxSize)},V=function(e){return+e.toFixed(4)+"em"},G=function(e){return e.filter((function(e){return e})).join(" ")},U=function(e,t,r){if(this.classes=e||[],this.attributes={},this.height=0,this.depth=0,this.maxFontSize=0,this.style=r||{},t){t.style.isTight()&&this.classes.push("mtight");var n=t.getColor();n&&(this.style.color=n)}},Y=function(e){var t=document.createElement(e);for(var r in t.className=G(this.classes),this.style)this.style.hasOwnProperty(r)&&(t.style[r]=this.style[r]);for(var n in this.attributes)this.attributes.hasOwnProperty(n)&&t.setAttribute(n,this.attributes[n]);for(var a=0;a"},W=function(){function e(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.width=void 0,this.maxFontSize=void 0,this.style=void 0,U.call(this,e,r,n),this.children=t||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){return Y.call(this,"span")},t.toMarkup=function(){return X.call(this,"span")},e}(),_=function(){function e(e,t,r,n){this.children=void 0,this.attributes=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,U.call(this,t,n),this.children=r||[],this.setAttribute("href",e)}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){return Y.call(this,"a")},t.toMarkup=function(){return X.call(this,"a")},e}(),j=function(){function e(e,t,r){this.src=void 0,this.alt=void 0,this.classes=void 0,this.height=void 0,this.depth=void 0,this.maxFontSize=void 0,this.style=void 0,this.alt=t,this.src=e,this.classes=["mord"],this.style=r}var t=e.prototype;return t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){var e=document.createElement("img");for(var t in e.src=this.src,e.alt=this.alt,e.className="mord",this.style)this.style.hasOwnProperty(t)&&(e.style[t]=this.style[t]);return e},t.toMarkup=function(){var e=""+this.alt+"=a[0]&&e<=a[1])return r.name}return null}(this.text.charCodeAt(0));l&&this.classes.push(l+"_fallback"),/[\xee\xef\xed\xec]/.test(this.text)&&(this.text=$[this.text])}var t=e.prototype;return t.hasClass=function(e){return l.contains(this.classes,e)},t.toNode=function(){var e=document.createTextNode(this.text),t=null;for(var r in this.italic>0&&((t=document.createElement("span")).style.marginRight=V(this.italic)),this.classes.length>0&&((t=t||document.createElement("span")).className=G(this.classes)),this.style)this.style.hasOwnProperty(r)&&((t=t||document.createElement("span")).style[r]=this.style[r]);return t?(t.appendChild(e),t):e},t.toMarkup=function(){var e=!1,t="0&&(r+="margin-right:"+this.italic+"em;"),this.style)this.style.hasOwnProperty(n)&&(r+=l.hyphenate(n)+":"+this.style[n]+";");r&&(e=!0,t+=' style="'+l.escape(r)+'"');var a=l.escape(this.text);return e?(t+=">",t+=a,t+=""):a},e}(),K=function(){function e(e,t){this.children=void 0,this.attributes=void 0,this.children=e||[],this.attributes=t||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","svg");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);for(var r=0;r":""},e}(),Q=function(){function e(e){this.attributes=void 0,this.attributes=e||{}}var t=e.prototype;return t.toNode=function(){var e=document.createElementNS("http://www.w3.org/2000/svg","line");for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);return e},t.toMarkup=function(){var e="","\\gt",!0),ie(oe,le,be,"\u2208","\\in",!0),ie(oe,le,be,"\ue020","\\@not"),ie(oe,le,be,"\u2282","\\subset",!0),ie(oe,le,be,"\u2283","\\supset",!0),ie(oe,le,be,"\u2286","\\subseteq",!0),ie(oe,le,be,"\u2287","\\supseteq",!0),ie(oe,he,be,"\u2288","\\nsubseteq",!0),ie(oe,he,be,"\u2289","\\nsupseteq",!0),ie(oe,le,be,"\u22a8","\\models"),ie(oe,le,be,"\u2190","\\leftarrow",!0),ie(oe,le,be,"\u2264","\\le"),ie(oe,le,be,"\u2264","\\leq",!0),ie(oe,le,be,"<","\\lt",!0),ie(oe,le,be,"\u2192","\\rightarrow",!0),ie(oe,le,be,"\u2192","\\to"),ie(oe,he,be,"\u2271","\\ngeq",!0),ie(oe,he,be,"\u2270","\\nleq",!0),ie(oe,le,ye,"\xa0","\\ "),ie(oe,le,ye,"\xa0","\\space"),ie(oe,le,ye,"\xa0","\\nobreakspace"),ie(se,le,ye,"\xa0","\\ "),ie(se,le,ye,"\xa0"," "),ie(se,le,ye,"\xa0","\\space"),ie(se,le,ye,"\xa0","\\nobreakspace"),ie(oe,le,ye,null,"\\nobreak"),ie(oe,le,ye,null,"\\allowbreak"),ie(oe,le,ve,",",","),ie(oe,le,ve,";",";"),ie(oe,he,ce,"\u22bc","\\barwedge",!0),ie(oe,he,ce,"\u22bb","\\veebar",!0),ie(oe,le,ce,"\u2299","\\odot",!0),ie(oe,le,ce,"\u2295","\\oplus",!0),ie(oe,le,ce,"\u2297","\\otimes",!0),ie(oe,le,xe,"\u2202","\\partial",!0),ie(oe,le,ce,"\u2298","\\oslash",!0),ie(oe,he,ce,"\u229a","\\circledcirc",!0),ie(oe,he,ce,"\u22a1","\\boxdot",!0),ie(oe,le,ce,"\u25b3","\\bigtriangleup"),ie(oe,le,ce,"\u25bd","\\bigtriangledown"),ie(oe,le,ce,"\u2020","\\dagger"),ie(oe,le,ce,"\u22c4","\\diamond"),ie(oe,le,ce,"\u22c6","\\star"),ie(oe,le,ce,"\u25c3","\\triangleleft"),ie(oe,le,ce,"\u25b9","\\triangleright"),ie(oe,le,ge,"{","\\{"),ie(se,le,xe,"{","\\{"),ie(se,le,xe,"{","\\textbraceleft"),ie(oe,le,ue,"}","\\}"),ie(se,le,xe,"}","\\}"),ie(se,le,xe,"}","\\textbraceright"),ie(oe,le,ge,"{","\\lbrace"),ie(oe,le,ue,"}","\\rbrace"),ie(oe,le,ge,"[","\\lbrack",!0),ie(se,le,xe,"[","\\lbrack",!0),ie(oe,le,ue,"]","\\rbrack",!0),ie(se,le,xe,"]","\\rbrack",!0),ie(oe,le,ge,"(","\\lparen",!0),ie(oe,le,ue,")","\\rparen",!0),ie(se,le,xe,"<","\\textless",!0),ie(se,le,xe,">","\\textgreater",!0),ie(oe,le,ge,"\u230a","\\lfloor",!0),ie(oe,le,ue,"\u230b","\\rfloor",!0),ie(oe,le,ge,"\u2308","\\lceil",!0),ie(oe,le,ue,"\u2309","\\rceil",!0),ie(oe,le,xe,"\\","\\backslash"),ie(oe,le,xe,"\u2223","|"),ie(oe,le,xe,"\u2223","\\vert"),ie(se,le,xe,"|","\\textbar",!0),ie(oe,le,xe,"\u2225","\\|"),ie(oe,le,xe,"\u2225","\\Vert"),ie(se,le,xe,"\u2225","\\textbardbl"),ie(se,le,xe,"~","\\textasciitilde"),ie(se,le,xe,"\\","\\textbackslash"),ie(se,le,xe,"^","\\textasciicircum"),ie(oe,le,be,"\u2191","\\uparrow",!0),ie(oe,le,be,"\u21d1","\\Uparrow",!0),ie(oe,le,be,"\u2193","\\downarrow",!0),ie(oe,le,be,"\u21d3","\\Downarrow",!0),ie(oe,le,be,"\u2195","\\updownarrow",!0),ie(oe,le,be,"\u21d5","\\Updownarrow",!0),ie(oe,le,fe,"\u2210","\\coprod"),ie(oe,le,fe,"\u22c1","\\bigvee"),ie(oe,le,fe,"\u22c0","\\bigwedge"),ie(oe,le,fe,"\u2a04","\\biguplus"),ie(oe,le,fe,"\u22c2","\\bigcap"),ie(oe,le,fe,"\u22c3","\\bigcup"),ie(oe,le,fe,"\u222b","\\int"),ie(oe,le,fe,"\u222b","\\intop"),ie(oe,le,fe,"\u222c","\\iint"),ie(oe,le,fe,"\u222d","\\iiint"),ie(oe,le,fe,"\u220f","\\prod"),ie(oe,le,fe,"\u2211","\\sum"),ie(oe,le,fe,"\u2a02","\\bigotimes"),ie(oe,le,fe,"\u2a01","\\bigoplus"),ie(oe,le,fe,"\u2a00","\\bigodot"),ie(oe,le,fe,"\u222e","\\oint"),ie(oe,le,fe,"\u222f","\\oiint"),ie(oe,le,fe,"\u2230","\\oiiint"),ie(oe,le,fe,"\u2a06","\\bigsqcup"),ie(oe,le,fe,"\u222b","\\smallint"),ie(se,le,pe,"\u2026","\\textellipsis"),ie(oe,le,pe,"\u2026","\\mathellipsis"),ie(se,le,pe,"\u2026","\\ldots",!0),ie(oe,le,pe,"\u2026","\\ldots",!0),ie(oe,le,pe,"\u22ef","\\@cdots",!0),ie(oe,le,pe,"\u22f1","\\ddots",!0),ie(oe,le,xe,"\u22ee","\\varvdots"),ie(oe,le,me,"\u02ca","\\acute"),ie(oe,le,me,"\u02cb","\\grave"),ie(oe,le,me,"\xa8","\\ddot"),ie(oe,le,me,"~","\\tilde"),ie(oe,le,me,"\u02c9","\\bar"),ie(oe,le,me,"\u02d8","\\breve"),ie(oe,le,me,"\u02c7","\\check"),ie(oe,le,me,"^","\\hat"),ie(oe,le,me,"\u20d7","\\vec"),ie(oe,le,me,"\u02d9","\\dot"),ie(oe,le,me,"\u02da","\\mathring"),ie(oe,le,de,"\ue131","\\@imath"),ie(oe,le,de,"\ue237","\\@jmath"),ie(oe,le,xe,"\u0131","\u0131"),ie(oe,le,xe,"\u0237","\u0237"),ie(se,le,xe,"\u0131","\\i",!0),ie(se,le,xe,"\u0237","\\j",!0),ie(se,le,xe,"\xdf","\\ss",!0),ie(se,le,xe,"\xe6","\\ae",!0),ie(se,le,xe,"\u0153","\\oe",!0),ie(se,le,xe,"\xf8","\\o",!0),ie(se,le,xe,"\xc6","\\AE",!0),ie(se,le,xe,"\u0152","\\OE",!0),ie(se,le,xe,"\xd8","\\O",!0),ie(se,le,me,"\u02ca","\\'"),ie(se,le,me,"\u02cb","\\`"),ie(se,le,me,"\u02c6","\\^"),ie(se,le,me,"\u02dc","\\~"),ie(se,le,me,"\u02c9","\\="),ie(se,le,me,"\u02d8","\\u"),ie(se,le,me,"\u02d9","\\."),ie(se,le,me,"\xb8","\\c"),ie(se,le,me,"\u02da","\\r"),ie(se,le,me,"\u02c7","\\v"),ie(se,le,me,"\xa8",'\\"'),ie(se,le,me,"\u02dd","\\H"),ie(se,le,me,"\u25ef","\\textcircled");var we={"--":!0,"---":!0,"``":!0,"''":!0};ie(se,le,xe,"\u2013","--",!0),ie(se,le,xe,"\u2013","\\textendash"),ie(se,le,xe,"\u2014","---",!0),ie(se,le,xe,"\u2014","\\textemdash"),ie(se,le,xe,"\u2018","`",!0),ie(se,le,xe,"\u2018","\\textquoteleft"),ie(se,le,xe,"\u2019","'",!0),ie(se,le,xe,"\u2019","\\textquoteright"),ie(se,le,xe,"\u201c","``",!0),ie(se,le,xe,"\u201c","\\textquotedblleft"),ie(se,le,xe,"\u201d","''",!0),ie(se,le,xe,"\u201d","\\textquotedblright"),ie(oe,le,xe,"\xb0","\\degree",!0),ie(se,le,xe,"\xb0","\\degree"),ie(se,le,xe,"\xb0","\\textdegree",!0),ie(oe,le,xe,"\xa3","\\pounds"),ie(oe,le,xe,"\xa3","\\mathsterling",!0),ie(se,le,xe,"\xa3","\\pounds"),ie(se,le,xe,"\xa3","\\textsterling",!0),ie(oe,he,xe,"\u2720","\\maltese"),ie(se,he,xe,"\u2720","\\maltese");for(var ke='0123456789/@."',Se=0;Set&&(t=i.height),i.depth>r&&(r=i.depth),i.maxFontSize>n&&(n=i.maxFontSize)}e.height=t,e.depth=r,e.maxFontSize=n},Xe=function(e,t,r,n){var a=new W(e,t,r,n);return Ye(a),a},We=function(e,t,r,n){return new W(e,t,r,n)},_e=function(e){var t=new A(e);return Ye(t),t},je=function(e,t,r){var n="";switch(e){case"amsrm":n="AMS";break;case"textrm":n="Main";break;case"textsf":n="SansSerif";break;case"texttt":n="Typewriter";break;default:n=e}return n+"-"+("textbf"===t&&"textit"===r?"BoldItalic":"textbf"===t?"Bold":"textit"===t?"Italic":"Regular")},$e={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathit:{variant:"italic",fontName:"Main-Italic"},mathnormal:{variant:"italic",fontName:"Math-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}},Ze={vec:["vec",.471,.714],oiintSize1:["oiintSize1",.957,.499],oiintSize2:["oiintSize2",1.472,.659],oiiintSize1:["oiiintSize1",1.304,.499],oiiintSize2:["oiiintSize2",1.98,.659]},Ke={fontMap:$e,makeSymbol:Ge,mathsym:function(e,t,r,n){return void 0===n&&(n=[]),"boldsymbol"===r.font&&Ve(e,"Main-Bold",t).metrics?Ge(e,"Main-Bold",t,r,n.concat(["mathbf"])):"\\"===e||"main"===ae[t][e].font?Ge(e,"Main-Regular",t,r,n):Ge(e,"AMS-Regular",t,r,n.concat(["amsrm"]))},makeSpan:Xe,makeSvgSpan:We,makeLineSpan:function(e,t,r){var n=Xe([e],[],t);return n.height=Math.max(r||t.fontMetrics().defaultRuleThickness,t.minRuleThickness),n.style.borderBottomWidth=V(n.height),n.maxFontSize=1,n},makeAnchor:function(e,t,r,n){var a=new _(e,t,r,n);return Ye(a),a},makeFragment:_e,wrapFragment:function(e,t){return e instanceof A?Xe([],[e],t):e},makeVList:function(e,t){for(var r=function(e){if("individualShift"===e.positionType){for(var t=e.children,r=[t[0]],n=-t[0].shift-t[0].elem.depth,a=n,i=1;i0&&(o.push(kt(s,t)),s=[]),o.push(a[l]));s.length>0&&o.push(kt(s,t)),r?((i=kt(ft(r,t,!0))).classes=["tag"],o.push(i)):n&&o.push(n);var m=mt(["katex-html"],o);if(m.setAttribute("aria-hidden","true"),i){var c=i.children[0];c.style.height=V(m.height+m.depth),m.depth&&(c.style.verticalAlign=V(-m.depth))}return m}function Mt(e){return new A(e)}var zt=function(){function e(e,t,r){this.type=void 0,this.attributes=void 0,this.children=void 0,this.classes=void 0,this.type=e,this.attributes={},this.children=t||[],this.classes=r||[]}var t=e.prototype;return t.setAttribute=function(e,t){this.attributes[e]=t},t.getAttribute=function(e){return this.attributes[e]},t.toNode=function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes)Object.prototype.hasOwnProperty.call(this.attributes,t)&&e.setAttribute(t,this.attributes[t]);this.classes.length>0&&(e.className=G(this.classes));for(var r=0;r0&&(e+=' class ="'+l.escape(G(this.classes))+'"'),e+=">";for(var r=0;r"},t.toText=function(){return this.children.map((function(e){return e.toText()})).join("")},e}(),At=function(){function e(e){this.text=void 0,this.text=e}var t=e.prototype;return t.toNode=function(){return document.createTextNode(this.text)},t.toMarkup=function(){return l.escape(this.toText())},t.toText=function(){return this.text},e}(),Tt={MathNode:zt,TextNode:At,SpaceNode:function(){function e(e){this.width=void 0,this.character=void 0,this.width=e,this.character=e>=.05555&&e<=.05556?"\u200a":e>=.1666&&e<=.1667?"\u2009":e>=.2222&&e<=.2223?"\u2005":e>=.2777&&e<=.2778?"\u2005\u200a":e>=-.05556&&e<=-.05555?"\u200a\u2063":e>=-.1667&&e<=-.1666?"\u2009\u2063":e>=-.2223&&e<=-.2222?"\u205f\u2063":e>=-.2778&&e<=-.2777?"\u2005\u2063":null}var t=e.prototype;return t.toNode=function(){if(this.character)return document.createTextNode(this.character);var e=document.createElementNS("http://www.w3.org/1998/Math/MathML","mspace");return e.setAttribute("width",V(this.width)),e},t.toMarkup=function(){return this.character?""+this.character+"":''},t.toText=function(){return this.character?this.character:" "},e}(),newDocumentFragment:Mt},Bt=function(e,t,r){return!ae[t][e]||!ae[t][e].replace||55349===e.charCodeAt(0)||we.hasOwnProperty(e)&&r&&(r.fontFamily&&"tt"===r.fontFamily.substr(4,2)||r.font&&"tt"===r.font.substr(4,2))||(e=ae[t][e].replace),new Tt.TextNode(e)},Ct=function(e){return 1===e.length?e[0]:new Tt.MathNode("mrow",e)},qt=function(e,t){if("texttt"===t.fontFamily)return"monospace";if("textsf"===t.fontFamily)return"textit"===t.fontShape&&"textbf"===t.fontWeight?"sans-serif-bold-italic":"textit"===t.fontShape?"sans-serif-italic":"textbf"===t.fontWeight?"bold-sans-serif":"sans-serif";if("textit"===t.fontShape&&"textbf"===t.fontWeight)return"bold-italic";if("textit"===t.fontShape)return"italic";if("textbf"===t.fontWeight)return"bold";var r=t.font;if(!r||"mathnormal"===r)return null;var n=e.mode;if("mathit"===r)return"italic";if("boldsymbol"===r)return"textord"===e.type?"bold":"bold-italic";if("mathbf"===r)return"bold";if("mathbb"===r)return"double-struck";if("mathfrak"===r)return"fraktur";if("mathscr"===r||"mathcal"===r)return"script";if("mathsf"===r)return"sans-serif";if("mathtt"===r)return"monospace";var a=e.text;return l.contains(["\\imath","\\jmath"],a)?null:(ae[n][a]&&ae[n][a].replace&&(a=ae[n][a].replace),q(a,Ke.fontMap[r].fontName,n)?Ke.fontMap[r].variant:null)},Nt=function(e,t,r){if(1===e.length){var n=Rt(e[0],t);return r&&n instanceof zt&&"mo"===n.type&&(n.setAttribute("lspace","0em"),n.setAttribute("rspace","0em")),[n]}for(var a,i=[],o=0;o0&&(p.text=p.text.slice(0,1)+"\u0338"+p.text.slice(1),i.pop())}}}i.push(s),a=s}return i},It=function(e,t,r){return Ct(Nt(e,t,r))},Rt=function(e,t){if(!e)return new Tt.MathNode("mrow");if(it[e.type])return it[e.type](e,t);throw new n("Got group of unknown type: '"+e.type+"'")};function Ot(e,t,r,n,a){var i,o=Nt(e,r);i=1===o.length&&o[0]instanceof zt&&l.contains(["mrow","mtable"],o[0].type)?o[0]:new Tt.MathNode("mrow",o);var s=new Tt.MathNode("annotation",[new Tt.TextNode(t)]);s.setAttribute("encoding","application/x-tex");var h=new Tt.MathNode("semantics",[i,s]),m=new Tt.MathNode("math",[h]);m.setAttribute("xmlns","http://www.w3.org/1998/Math/MathML"),n&&m.setAttribute("display","block");var c=a?"katex":"katex-mathml";return Ke.makeSpan([c],[m])}var Ht=function(e){return new E({style:e.displayMode?x.DISPLAY:x.TEXT,maxSize:e.maxSize,minRuleThickness:e.minRuleThickness})},Et=function(e,t){if(t.displayMode){var r=["katex-display"];t.leqno&&r.push("leqno"),t.fleqn&&r.push("fleqn"),e=Ke.makeSpan(r,[e])}return e},Lt=function(e,t,r){var n,a=Ht(r);if("mathml"===r.output)return Ot(e,t,a,r.displayMode,!0);if("html"===r.output){var i=St(e,a);n=Ke.makeSpan(["katex"],[i])}else{var o=Ot(e,t,a,r.displayMode,!1),s=St(e,a);n=Ke.makeSpan(["katex"],[o,s])}return Et(n,r)},Dt={widehat:"^",widecheck:"\u02c7",widetilde:"~",utilde:"~",overleftarrow:"\u2190",underleftarrow:"\u2190",xleftarrow:"\u2190",overrightarrow:"\u2192",underrightarrow:"\u2192",xrightarrow:"\u2192",underbrace:"\u23df",overbrace:"\u23de",overgroup:"\u23e0",undergroup:"\u23e1",overleftrightarrow:"\u2194",underleftrightarrow:"\u2194",xleftrightarrow:"\u2194",Overrightarrow:"\u21d2",xRightarrow:"\u21d2",overleftharpoon:"\u21bc",xleftharpoonup:"\u21bc",overrightharpoon:"\u21c0",xrightharpoonup:"\u21c0",xLeftarrow:"\u21d0",xLeftrightarrow:"\u21d4",xhookleftarrow:"\u21a9",xhookrightarrow:"\u21aa",xmapsto:"\u21a6",xrightharpoondown:"\u21c1",xleftharpoondown:"\u21bd",xrightleftharpoons:"\u21cc",xleftrightharpoons:"\u21cb",xtwoheadleftarrow:"\u219e",xtwoheadrightarrow:"\u21a0",xlongequal:"=",xtofrom:"\u21c4",xrightleftarrows:"\u21c4",xrightequilibrium:"\u21cc",xleftequilibrium:"\u21cb","\\cdrightarrow":"\u2192","\\cdleftarrow":"\u2190","\\cdlongequal":"="},Pt={overrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],overleftarrow:[["leftarrow"],.888,522,"xMinYMin"],underrightarrow:[["rightarrow"],.888,522,"xMaxYMin"],underleftarrow:[["leftarrow"],.888,522,"xMinYMin"],xrightarrow:[["rightarrow"],1.469,522,"xMaxYMin"],"\\cdrightarrow":[["rightarrow"],3,522,"xMaxYMin"],xleftarrow:[["leftarrow"],1.469,522,"xMinYMin"],"\\cdleftarrow":[["leftarrow"],3,522,"xMinYMin"],Overrightarrow:[["doublerightarrow"],.888,560,"xMaxYMin"],xRightarrow:[["doublerightarrow"],1.526,560,"xMaxYMin"],xLeftarrow:[["doubleleftarrow"],1.526,560,"xMinYMin"],overleftharpoon:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoonup:[["leftharpoon"],.888,522,"xMinYMin"],xleftharpoondown:[["leftharpoondown"],.888,522,"xMinYMin"],overrightharpoon:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoonup:[["rightharpoon"],.888,522,"xMaxYMin"],xrightharpoondown:[["rightharpoondown"],.888,522,"xMaxYMin"],xlongequal:[["longequal"],.888,334,"xMinYMin"],"\\cdlongequal":[["longequal"],3,334,"xMinYMin"],xtwoheadleftarrow:[["twoheadleftarrow"],.888,334,"xMinYMin"],xtwoheadrightarrow:[["twoheadrightarrow"],.888,334,"xMaxYMin"],overleftrightarrow:[["leftarrow","rightarrow"],.888,522],overbrace:[["leftbrace","midbrace","rightbrace"],1.6,548],underbrace:[["leftbraceunder","midbraceunder","rightbraceunder"],1.6,548],underleftrightarrow:[["leftarrow","rightarrow"],.888,522],xleftrightarrow:[["leftarrow","rightarrow"],1.75,522],xLeftrightarrow:[["doubleleftarrow","doublerightarrow"],1.75,560],xrightleftharpoons:[["leftharpoondownplus","rightharpoonplus"],1.75,716],xleftrightharpoons:[["leftharpoonplus","rightharpoondownplus"],1.75,716],xhookleftarrow:[["leftarrow","righthook"],1.08,522],xhookrightarrow:[["lefthook","rightarrow"],1.08,522],overlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],underlinesegment:[["leftlinesegment","rightlinesegment"],.888,522],overgroup:[["leftgroup","rightgroup"],.888,342],undergroup:[["leftgroupunder","rightgroupunder"],.888,342],xmapsto:[["leftmapsto","rightarrow"],1.5,522],xtofrom:[["leftToFrom","rightToFrom"],1.75,528],xrightleftarrows:[["baraboveleftarrow","rightarrowabovebar"],1.75,901],xrightequilibrium:[["baraboveshortleftharpoon","rightharpoonaboveshortbar"],1.75,716],xleftequilibrium:[["shortbaraboveleftharpoon","shortrightharpoonabovebar"],1.75,716]},Ft=function(e,t,r,n,a){var i,o=e.height+e.depth+r+n;if(/fbox|color|angl/.test(t)){if(i=Ke.makeSpan(["stretchy",t],[],a),"fbox"===t){var s=a.color&&a.getColor();s&&(i.style.borderColor=s)}}else{var l=[];/^[bx]cancel$/.test(t)&&l.push(new Q({x1:"0",y1:"0",x2:"100%",y2:"100%","stroke-width":"0.046em"})),/^x?cancel$/.test(t)&&l.push(new Q({x1:"0",y1:"100%",x2:"100%",y2:"0","stroke-width":"0.046em"}));var h=new K(l,{width:"100%",height:V(o)});i=Ke.makeSvgSpan([],[h],a)}return i.height=o,i.style.height=V(o),i},Vt=function(e){var t=new Tt.MathNode("mo",[new Tt.TextNode(Dt[e.replace(/^\\/,"")])]);return t.setAttribute("stretchy","true"),t},Gt=function(e,t){var r=function(){var r=4e5,n=e.label.substr(1);if(l.contains(["widehat","widecheck","widetilde","utilde"],n)){var a,i,o,s="ordgroup"===(d=e.base).type?d.body.length:1;if(s>5)"widehat"===n||"widecheck"===n?(a=420,r=2364,o=.42,i=n+"4"):(a=312,r=2340,o=.34,i="tilde4");else{var h=[1,1,2,2,3,3][s];"widehat"===n||"widecheck"===n?(r=[0,1062,2364,2364,2364][h],a=[0,239,300,360,420][h],o=[0,.24,.3,.3,.36,.42][h],i=n+h):(r=[0,600,1033,2339,2340][h],a=[0,260,286,306,312][h],o=[0,.26,.286,.3,.306,.34][h],i="tilde"+h)}var m=new J(i),c=new K([m],{width:"100%",height:V(o),viewBox:"0 0 "+r+" "+a,preserveAspectRatio:"none"});return{span:Ke.makeSvgSpan([],[c],t),minWidth:0,height:o}}var u,p,d,f=[],g=Pt[n],v=g[0],b=g[1],y=g[2],x=y/1e3,w=v.length;if(1===w)u=["hide-tail"],p=[g[3]];else if(2===w)u=["halfarrow-left","halfarrow-right"],p=["xMinYMin","xMaxYMin"];else{if(3!==w)throw new Error("Correct katexImagesData or update code here to support\n "+w+" children.");u=["brace-left","brace-center","brace-right"],p=["xMinYMin","xMidYMin","xMaxYMin"]}for(var k=0;k0&&(n.style.minWidth=V(a)),n};function Ut(e,t){if(!e||e.type!==t)throw new Error("Expected node of type "+t+", but got "+(e?"node of type "+e.type:String(e)));return e}function Yt(e){var t=Xt(e);if(!t)throw new Error("Expected node of symbol group type, but got "+(e?"node of type "+e.type:String(e)));return t}function Xt(e){return e&&("atom"===e.type||re.hasOwnProperty(e.type))?e:null}var Wt=function(e,t){var r,n,a;e&&"supsub"===e.type?(r=(n=Ut(e.base,"accent")).base,e.base=r,a=function(e){if(e instanceof W)return e;throw new Error("Expected span but got "+String(e)+".")}(wt(e,t)),e.base=n):r=(n=Ut(e,"accent")).base;var i=wt(r,t.havingCrampedStyle()),o=0;if(n.isShifty&&l.isCharacterBox(r)){var s=l.getBaseElem(r);o=ee(wt(s,t.havingCrampedStyle())).skew}var h,m="\\c"===n.label,c=m?i.height+i.depth:Math.min(i.height,t.fontMetrics().xHeight);if(n.isStretchy)h=Gt(n,t),h=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"elem",elem:h,wrapperClasses:["svg-align"],wrapperStyle:o>0?{width:"calc(100% - "+V(2*o)+")",marginLeft:V(2*o)}:void 0}]},t);else{var u,p;"\\vec"===n.label?(u=Ke.staticSvg("vec",t),p=Ke.svgData.vec[1]):((u=ee(u=Ke.makeOrd({mode:n.mode,text:n.label},t,"textord"))).italic=0,p=u.width,m&&(c+=u.depth)),h=Ke.makeSpan(["accent-body"],[u]);var d="\\textcircled"===n.label;d&&(h.classes.push("accent-full"),c=i.height);var f=o;d||(f-=p/2),h.style.left=V(f),"\\textcircled"===n.label&&(h.style.top=".2em"),h=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:i},{type:"kern",size:-c},{type:"elem",elem:h}]},t)}var g=Ke.makeSpan(["mord","accent"],[h],t);return a?(a.children[0]=g,a.height=Math.max(g.height,a.height),a.classes[0]="mord",a):g},_t=function(e,t){var r=e.isStretchy?Vt(e.label):new Tt.MathNode("mo",[Bt(e.label,e.mode)]),n=new Tt.MathNode("mover",[Rt(e.base,t),r]);return n.setAttribute("accent","true"),n},jt=new RegExp(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring"].map((function(e){return"\\"+e})).join("|"));ot({type:"accent",names:["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot","\\mathring","\\widecheck","\\widehat","\\widetilde","\\overrightarrow","\\overleftarrow","\\Overrightarrow","\\overleftrightarrow","\\overgroup","\\overlinesegment","\\overleftharpoon","\\overrightharpoon"],props:{numArgs:1},handler:function(e,t){var r=lt(t[0]),n=!jt.test(e.funcName),a=!n||"\\widehat"===e.funcName||"\\widetilde"===e.funcName||"\\widecheck"===e.funcName;return{type:"accent",mode:e.parser.mode,label:e.funcName,isStretchy:n,isShifty:a,base:r}},htmlBuilder:Wt,mathmlBuilder:_t}),ot({type:"accent",names:["\\'","\\`","\\^","\\~","\\=","\\u","\\.",'\\"',"\\c","\\r","\\H","\\v","\\textcircled"],props:{numArgs:1,allowedInText:!0,allowedInMath:!0,argTypes:["primitive"]},handler:function(e,t){var r=t[0],n=e.parser.mode;return"math"===n&&(e.parser.settings.reportNonstrict("mathVsTextAccents","LaTeX's accent "+e.funcName+" works only in text mode"),n="text"),{type:"accent",mode:n,label:e.funcName,isStretchy:!1,isShifty:!0,base:r}},htmlBuilder:Wt,mathmlBuilder:_t}),ot({type:"accentUnder",names:["\\underleftarrow","\\underrightarrow","\\underleftrightarrow","\\undergroup","\\underlinesegment","\\utilde"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"accentUnder",mode:r.mode,label:n,base:a}},htmlBuilder:function(e,t){var r=wt(e.base,t),n=Gt(e,t),a="\\utilde"===e.label?.12:0,i=Ke.makeVList({positionType:"top",positionData:r.height,children:[{type:"elem",elem:n,wrapperClasses:["svg-align"]},{type:"kern",size:a},{type:"elem",elem:r}]},t);return Ke.makeSpan(["mord","accentunder"],[i],t)},mathmlBuilder:function(e,t){var r=Vt(e.label),n=new Tt.MathNode("munder",[Rt(e.base,t),r]);return n.setAttribute("accentunder","true"),n}});var $t=function(e){var t=new Tt.MathNode("mpadded",e?[e]:[]);return t.setAttribute("width","+0.6em"),t.setAttribute("lspace","0.3em"),t};ot({type:"xArrow",names:["\\xleftarrow","\\xrightarrow","\\xLeftarrow","\\xRightarrow","\\xleftrightarrow","\\xLeftrightarrow","\\xhookleftarrow","\\xhookrightarrow","\\xmapsto","\\xrightharpoondown","\\xrightharpoonup","\\xleftharpoondown","\\xleftharpoonup","\\xrightleftharpoons","\\xleftrightharpoons","\\xlongequal","\\xtwoheadrightarrow","\\xtwoheadleftarrow","\\xtofrom","\\xrightleftarrows","\\xrightequilibrium","\\xleftequilibrium","\\\\cdrightarrow","\\\\cdleftarrow","\\\\cdlongequal"],props:{numArgs:1,numOptionalArgs:1},handler:function(e,t,r){var n=e.parser,a=e.funcName;return{type:"xArrow",mode:n.mode,label:a,body:t[0],below:r[0]}},htmlBuilder:function(e,t){var r,n=t.style,a=t.havingStyle(n.sup()),i=Ke.wrapFragment(wt(e.body,a,t),t),o="\\x"===e.label.slice(0,2)?"x":"cd";i.classes.push(o+"-arrow-pad"),e.below&&(a=t.havingStyle(n.sub()),(r=Ke.wrapFragment(wt(e.below,a,t),t)).classes.push(o+"-arrow-pad"));var s,l=Gt(e,t),h=-t.fontMetrics().axisHeight+.5*l.height,m=-t.fontMetrics().axisHeight-.5*l.height-.111;if((i.depth>.25||"\\xleftequilibrium"===e.label)&&(m-=i.depth),r){var c=-t.fontMetrics().axisHeight+r.height+.5*l.height+.111;s=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h},{type:"elem",elem:r,shift:c}]},t)}else s=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:i,shift:m},{type:"elem",elem:l,shift:h}]},t);return s.children[0].children[0].children[1].classes.push("svg-align"),Ke.makeSpan(["mrel","x-arrow"],[s],t)},mathmlBuilder:function(e,t){var r,n=Vt(e.label);if(n.setAttribute("minsize","x"===e.label.charAt(0)?"1.75em":"3.0em"),e.body){var a=$t(Rt(e.body,t));if(e.below){var i=$t(Rt(e.below,t));r=new Tt.MathNode("munderover",[n,i,a])}else r=new Tt.MathNode("mover",[n,a])}else if(e.below){var o=$t(Rt(e.below,t));r=new Tt.MathNode("munder",[n,o])}else r=$t(),r=new Tt.MathNode("mover",[n,r]);return r}});var Zt={">":"\\\\cdrightarrow","<":"\\\\cdleftarrow","=":"\\\\cdlongequal",A:"\\uparrow",V:"\\downarrow","|":"\\Vert",".":"no arrow"},Kt=function(e){return"textord"===e.type&&"@"===e.text};function Jt(e,t,r){var n=Zt[e];switch(n){case"\\\\cdrightarrow":case"\\\\cdleftarrow":return r.callFunction(n,[t[0]],[t[1]]);case"\\uparrow":case"\\downarrow":var a={type:"atom",text:n,mode:"math",family:"rel"},i={type:"ordgroup",mode:"math",body:[r.callFunction("\\\\cdleft",[t[0]],[]),r.callFunction("\\Big",[a],[]),r.callFunction("\\\\cdright",[t[1]],[])]};return r.callFunction("\\\\cdparent",[i],[]);case"\\\\cdlongequal":return r.callFunction("\\\\cdlongequal",[],[]);case"\\Vert":return r.callFunction("\\Big",[{type:"textord",text:"\\Vert",mode:"math"}],[]);default:return{type:"textord",text:" ",mode:"math"}}}ot({type:"cdlabel",names:["\\\\cdleft","\\\\cdright"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName;return{type:"cdlabel",mode:r.mode,side:n.slice(4),label:t[0]}},htmlBuilder:function(e,t){var r=t.havingStyle(t.style.sup()),n=Ke.wrapFragment(wt(e.label,r,t),t);return n.classes.push("cd-label-"+e.side),n.style.bottom=V(.8-n.depth),n.height=0,n.depth=0,n},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mrow",[Rt(e.label,t)]);return(r=new Tt.MathNode("mpadded",[r])).setAttribute("width","0"),"left"===e.side&&r.setAttribute("lspace","-1width"),r.setAttribute("voffset","0.7em"),(r=new Tt.MathNode("mstyle",[r])).setAttribute("displaystyle","false"),r.setAttribute("scriptlevel","1"),r}}),ot({type:"cdlabelparent",names:["\\\\cdparent"],props:{numArgs:1},handler:function(e,t){return{type:"cdlabelparent",mode:e.parser.mode,fragment:t[0]}},htmlBuilder:function(e,t){var r=Ke.wrapFragment(wt(e.fragment,t),t);return r.classes.push("cd-vert-arrow"),r},mathmlBuilder:function(e,t){return new Tt.MathNode("mrow",[Rt(e.fragment,t)])}}),ot({type:"textord",names:["\\@char"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){for(var r=e.parser,a=Ut(t[0],"ordgroup").body,i="",o=0;o=1114111)throw new n("\\@char with invalid code point "+i);return l<=65535?s=String.fromCharCode(l):(l-=65536,s=String.fromCharCode(55296+(l>>10),56320+(1023&l))),{type:"textord",mode:r.mode,text:s}}});var Qt=function(e,t){var r=ft(e.body,t.withColor(e.color),!1);return Ke.makeFragment(r)},er=function(e,t){var r=Nt(e.body,t.withColor(e.color)),n=new Tt.MathNode("mstyle",r);return n.setAttribute("mathcolor",e.color),n};ot({type:"color",names:["\\textcolor"],props:{numArgs:2,allowedInText:!0,argTypes:["color","original"]},handler:function(e,t){var r=e.parser,n=Ut(t[0],"color-token").color,a=t[1];return{type:"color",mode:r.mode,color:n,body:ht(a)}},htmlBuilder:Qt,mathmlBuilder:er}),ot({type:"color",names:["\\color"],props:{numArgs:1,allowedInText:!0,argTypes:["color"]},handler:function(e,t){var r=e.parser,n=e.breakOnTokenText,a=Ut(t[0],"color-token").color;r.gullet.macros.set("\\current@color",a);var i=r.parseExpression(!0,n);return{type:"color",mode:r.mode,color:a,body:i}},htmlBuilder:Qt,mathmlBuilder:er}),ot({type:"cr",names:["\\\\"],props:{numArgs:0,numOptionalArgs:1,argTypes:["size"],allowedInText:!0},handler:function(e,t,r){var n=e.parser,a=r[0],i=!n.settings.displayMode||!n.settings.useStrictBehavior("newLineInDisplayMode","In LaTeX, \\\\ or \\newline does nothing in display mode");return{type:"cr",mode:n.mode,newLine:i,size:a&&Ut(a,"size").value}},htmlBuilder:function(e,t){var r=Ke.makeSpan(["mspace"],[],t);return e.newLine&&(r.classes.push("newline"),e.size&&(r.style.marginTop=V(F(e.size,t)))),r},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mspace");return e.newLine&&(r.setAttribute("linebreak","newline"),e.size&&r.setAttribute("height",V(F(e.size,t)))),r}});var tr={"\\global":"\\global","\\long":"\\\\globallong","\\\\globallong":"\\\\globallong","\\def":"\\gdef","\\gdef":"\\gdef","\\edef":"\\xdef","\\xdef":"\\xdef","\\let":"\\\\globallet","\\futurelet":"\\\\globalfuture"},rr=function(e){var t=e.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(t))throw new n("Expected a control sequence",e);return t},nr=function(e,t,r,n){var a=e.gullet.macros.get(r.text);null==a&&(r.noexpand=!0,a={tokens:[r],numArgs:0,unexpandable:!e.gullet.isExpandable(r.text)}),e.gullet.macros.set(t,a,n)};ot({type:"internal",names:["\\global","\\long","\\\\globallong"],props:{numArgs:0,allowedInText:!0},handler:function(e){var t=e.parser,r=e.funcName;t.consumeSpaces();var a=t.fetch();if(tr[a.text])return"\\global"!==r&&"\\\\globallong"!==r||(a.text=tr[a.text]),Ut(t.parseFunction(),"internal");throw new n("Invalid token after macro prefix",a)}}),ot({type:"internal",names:["\\def","\\gdef","\\edef","\\xdef"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e){var t=e.parser,r=e.funcName,a=t.gullet.popToken(),i=a.text;if(/^(?:[\\{}$&#^_]|EOF)$/.test(i))throw new n("Expected a control sequence",a);for(var o,s=0,l=[[]];"{"!==t.gullet.future().text;)if("#"===(a=t.gullet.popToken()).text){if("{"===t.gullet.future().text){o=t.gullet.future(),l[s].push("{");break}if(a=t.gullet.popToken(),!/^[1-9]$/.test(a.text))throw new n('Invalid argument number "'+a.text+'"');if(parseInt(a.text)!==s+1)throw new n('Argument number "'+a.text+'" out of order');s++,l.push([])}else{if("EOF"===a.text)throw new n("Expected a macro definition");l[s].push(a.text)}var h=t.gullet.consumeArg().tokens;return o&&h.unshift(o),"\\edef"!==r&&"\\xdef"!==r||(h=t.gullet.expandTokens(h)).reverse(),t.gullet.macros.set(i,{tokens:h,numArgs:s,delimiters:l},r===tr[r]),{type:"internal",mode:t.mode}}}),ot({type:"internal",names:["\\let","\\\\globallet"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e){var t=e.parser,r=e.funcName,n=rr(t.gullet.popToken());t.gullet.consumeSpaces();var a=function(e){var t=e.gullet.popToken();return"="===t.text&&" "===(t=e.gullet.popToken()).text&&(t=e.gullet.popToken()),t}(t);return nr(t,n,a,"\\\\globallet"===r),{type:"internal",mode:t.mode}}}),ot({type:"internal",names:["\\futurelet","\\\\globalfuture"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e){var t=e.parser,r=e.funcName,n=rr(t.gullet.popToken()),a=t.gullet.popToken(),i=t.gullet.popToken();return nr(t,n,i,"\\\\globalfuture"===r),t.gullet.pushToken(i),t.gullet.pushToken(a),{type:"internal",mode:t.mode}}});var ar=function(e,t,r){var n=q(ae.math[e]&&ae.math[e].replace||e,t,r);if(!n)throw new Error("Unsupported symbol "+e+" and font size "+t+".");return n},ir=function(e,t,r,n){var a=r.havingBaseStyle(t),i=Ke.makeSpan(n.concat(a.sizingClasses(r)),[e],r),o=a.sizeMultiplier/r.sizeMultiplier;return i.height*=o,i.depth*=o,i.maxFontSize=a.sizeMultiplier,i},or=function(e,t,r){var n=t.havingBaseStyle(r),a=(1-t.sizeMultiplier/n.sizeMultiplier)*t.fontMetrics().axisHeight;e.classes.push("delimcenter"),e.style.top=V(a),e.height-=a,e.depth+=a},sr=function(e,t,r,n,a,i){var o=function(e,t,r,n){return Ke.makeSymbol(e,"Size"+t+"-Regular",r,n)}(e,t,a,n),s=ir(Ke.makeSpan(["delimsizing","size"+t],[o],n),x.TEXT,n,i);return r&&or(s,n,x.TEXT),s},lr=function(e,t,r){var n;return n="Size1-Regular"===t?"delim-size1":"delim-size4",{type:"elem",elem:Ke.makeSpan(["delimsizinginner",n],[Ke.makeSpan([],[Ke.makeSymbol(e,t,r)])])}},hr=function(e,t,r){var n=T["Size4-Regular"][e.charCodeAt(0)]?T["Size4-Regular"][e.charCodeAt(0)][4]:T["Size1-Regular"][e.charCodeAt(0)][4],a=new J("inner",function(e,t){switch(e){case"\u239c":return"M291 0 H417 V"+t+" H291z M291 0 H417 V"+t+" H291z";case"\u2223":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145z";case"\u2225":return"M145 0 H188 V"+t+" H145z M145 0 H188 V"+t+" H145zM367 0 H410 V"+t+" H367z M367 0 H410 V"+t+" H367z";case"\u239f":return"M457 0 H583 V"+t+" H457z M457 0 H583 V"+t+" H457z";case"\u23a2":return"M319 0 H403 V"+t+" H319z M319 0 H403 V"+t+" H319z";case"\u23a5":return"M263 0 H347 V"+t+" H263z M263 0 H347 V"+t+" H263z";case"\u23aa":return"M384 0 H504 V"+t+" H384z M384 0 H504 V"+t+" H384z";case"\u23d0":return"M312 0 H355 V"+t+" H312z M312 0 H355 V"+t+" H312z";case"\u2016":return"M257 0 H300 V"+t+" H257z M257 0 H300 V"+t+" H257zM478 0 H521 V"+t+" H478z M478 0 H521 V"+t+" H478z";default:return""}}(e,Math.round(1e3*t))),i=new K([a],{width:V(n),height:V(t),style:"width:"+V(n),viewBox:"0 0 "+1e3*n+" "+Math.round(1e3*t),preserveAspectRatio:"xMinYMin"}),o=Ke.makeSvgSpan([],[i],r);return o.height=t,o.style.height=V(t),o.style.width=V(n),{type:"elem",elem:o}},mr={type:"kern",size:-.008},cr=["|","\\lvert","\\rvert","\\vert"],ur=["\\|","\\lVert","\\rVert","\\Vert"],pr=function(e,t,r,n,a,i){var o,s,h,m;o=h=m=e,s=null;var c="Size1-Regular";"\\uparrow"===e?h=m="\u23d0":"\\Uparrow"===e?h=m="\u2016":"\\downarrow"===e?o=h="\u23d0":"\\Downarrow"===e?o=h="\u2016":"\\updownarrow"===e?(o="\\uparrow",h="\u23d0",m="\\downarrow"):"\\Updownarrow"===e?(o="\\Uparrow",h="\u2016",m="\\Downarrow"):l.contains(cr,e)?h="\u2223":l.contains(ur,e)?h="\u2225":"["===e||"\\lbrack"===e?(o="\u23a1",h="\u23a2",m="\u23a3",c="Size4-Regular"):"]"===e||"\\rbrack"===e?(o="\u23a4",h="\u23a5",m="\u23a6",c="Size4-Regular"):"\\lfloor"===e||"\u230a"===e?(h=o="\u23a2",m="\u23a3",c="Size4-Regular"):"\\lceil"===e||"\u2308"===e?(o="\u23a1",h=m="\u23a2",c="Size4-Regular"):"\\rfloor"===e||"\u230b"===e?(h=o="\u23a5",m="\u23a6",c="Size4-Regular"):"\\rceil"===e||"\u2309"===e?(o="\u23a4",h=m="\u23a5",c="Size4-Regular"):"("===e||"\\lparen"===e?(o="\u239b",h="\u239c",m="\u239d",c="Size4-Regular"):")"===e||"\\rparen"===e?(o="\u239e",h="\u239f",m="\u23a0",c="Size4-Regular"):"\\{"===e||"\\lbrace"===e?(o="\u23a7",s="\u23a8",m="\u23a9",h="\u23aa",c="Size4-Regular"):"\\}"===e||"\\rbrace"===e?(o="\u23ab",s="\u23ac",m="\u23ad",h="\u23aa",c="Size4-Regular"):"\\lgroup"===e||"\u27ee"===e?(o="\u23a7",m="\u23a9",h="\u23aa",c="Size4-Regular"):"\\rgroup"===e||"\u27ef"===e?(o="\u23ab",m="\u23ad",h="\u23aa",c="Size4-Regular"):"\\lmoustache"===e||"\u23b0"===e?(o="\u23a7",m="\u23ad",h="\u23aa",c="Size4-Regular"):"\\rmoustache"!==e&&"\u23b1"!==e||(o="\u23ab",m="\u23a9",h="\u23aa",c="Size4-Regular");var u=ar(o,c,a),p=u.height+u.depth,d=ar(h,c,a),f=d.height+d.depth,g=ar(m,c,a),v=g.height+g.depth,b=0,y=1;if(null!==s){var w=ar(s,c,a);b=w.height+w.depth,y=2}var k=p+v+b,S=k+Math.max(0,Math.ceil((t-k)/(y*f)))*y*f,M=n.fontMetrics().axisHeight;r&&(M*=n.sizeMultiplier);var z=S/2-M,A=[];if(A.push(lr(m,c,a)),A.push(mr),null===s){var T=S-p-v+.016;A.push(hr(h,T,n))}else{var B=(S-p-v-b)/2+.016;A.push(hr(h,B,n)),A.push(mr),A.push(lr(s,c,a)),A.push(mr),A.push(hr(h,B,n))}A.push(mr),A.push(lr(o,c,a));var C=n.havingBaseStyle(x.TEXT),q=Ke.makeVList({positionType:"bottom",positionData:z,children:A},C);return ir(Ke.makeSpan(["delimsizing","mult"],[q],C),x.TEXT,n,i)},dr=.08,fr=function(e,t,r,n,a){var i=function(e,t,r){t*=1e3;var n="";switch(e){case"sqrtMain":n=function(e,t){return"M95,"+(622+e+t)+"\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl"+e/2.075+" -"+e+"\nc5.3,-9.3,12,-14,20,-14\nH400000v"+(40+e)+"H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM"+(834+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize1":n=function(e,t){return"M263,"+(601+e+t)+"c0.7,0,18,39.7,52,119\nc34,79.3,68.167,158.7,102.5,238c34.3,79.3,51.8,119.3,52.5,120\nc340,-704.7,510.7,-1060.3,512,-1067\nl"+e/2.084+" -"+e+"\nc4.7,-7.3,11,-11,19,-11\nH40000v"+(40+e)+"H1012.3\ns-271.3,567,-271.3,567c-38.7,80.7,-84,175,-136,283c-52,108,-89.167,185.3,-111.5,232\nc-22.3,46.7,-33.8,70.3,-34.5,71c-4.7,4.7,-12.3,7,-23,7s-12,-1,-12,-1\ns-109,-253,-109,-253c-72.7,-168,-109.3,-252,-110,-252c-10.7,8,-22,16.7,-34,26\nc-22,17.3,-33.3,26,-34,26s-26,-26,-26,-26s76,-59,76,-59s76,-60,76,-60z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize2":n=function(e,t){return"M983 "+(10+e+t)+"\nl"+e/3.13+" -"+e+"\nc4,-6.7,10,-10,18,-10 H400000v"+(40+e)+"\nH1013.1s-83.4,268,-264.1,840c-180.7,572,-277,876.3,-289,913c-4.7,4.7,-12.7,7,-24,7\ns-12,0,-12,0c-1.3,-3.3,-3.7,-11.7,-7,-25c-35.3,-125.3,-106.7,-373.3,-214,-744\nc-10,12,-21,25,-33,39s-32,39,-32,39c-6,-5.3,-15,-14,-27,-26s25,-30,25,-30\nc26.7,-32.7,52,-63,76,-91s52,-60,52,-60s208,722,208,722\nc56,-175.3,126.3,-397.3,211,-666c84.7,-268.7,153.8,-488.2,207.5,-658.5\nc53.7,-170.3,84.5,-266.8,92.5,-289.5z\nM"+(1001+e)+" "+t+"h400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize3":n=function(e,t){return"M424,"+(2398+e+t)+"\nc-1.3,-0.7,-38.5,-172,-111.5,-514c-73,-342,-109.8,-513.3,-110.5,-514\nc0,-2,-10.7,14.3,-32,49c-4.7,7.3,-9.8,15.7,-15.5,25c-5.7,9.3,-9.8,16,-12.5,20\ns-5,7,-5,7c-4,-3.3,-8.3,-7.7,-13,-13s-13,-13,-13,-13s76,-122,76,-122s77,-121,77,-121\ns209,968,209,968c0,-2,84.7,-361.7,254,-1079c169.3,-717.3,254.7,-1077.7,256,-1081\nl"+e/4.223+" -"+e+"c4,-6.7,10,-10,18,-10 H400000\nv"+(40+e)+"H1014.6\ns-87.3,378.7,-272.6,1166c-185.3,787.3,-279.3,1182.3,-282,1185\nc-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2z M"+(1001+e)+" "+t+"\nh400000v"+(40+e)+"h-400000z"}(t,M);break;case"sqrtSize4":n=function(e,t){return"M473,"+(2713+e+t)+"\nc339.3,-1799.3,509.3,-2700,510,-2702 l"+e/5.298+" -"+e+"\nc3.3,-7.3,9.3,-11,18,-11 H400000v"+(40+e)+"H1017.7\ns-90.5,478,-276.2,1466c-185.7,988,-279.5,1483,-281.5,1485c-2,6,-10,9,-24,9\nc-8,0,-12,-0.7,-12,-2c0,-1.3,-5.3,-32,-16,-92c-50.7,-293.3,-119.7,-693.3,-207,-1200\nc0,-1.3,-5.3,8.7,-16,30c-10.7,21.3,-21.3,42.7,-32,64s-16,33,-16,33s-26,-26,-26,-26\ns76,-153,76,-153s77,-151,77,-151c0.7,0.7,35.7,202,105,604c67.3,400.7,102,602.7,104,\n606zM"+(1001+e)+" "+t+"h400000v"+(40+e)+"H1017.7z"}(t,M);break;case"sqrtTall":n=function(e,t,r){return"M702 "+(e+t)+"H400000"+(40+e)+"\nH742v"+(r-54-t-e)+"l-4 4-4 4c-.667.7 -2 1.5-4 2.5s-4.167 1.833-6.5 2.5-5.5 1-9.5 1\nh-12l-28-84c-16.667-52-96.667 -294.333-240-727l-212 -643 -85 170\nc-4-3.333-8.333-7.667-13 -13l-13-13l77-155 77-156c66 199.333 139 419.667\n219 661 l218 661zM702 "+t+"H400000v"+(40+e)+"H742z"}(t,M,r)}return n}(e,n,r),o=new J(e,i),s=new K([o],{width:"400em",height:V(t),viewBox:"0 0 400000 "+r,preserveAspectRatio:"xMinYMin slice"});return Ke.makeSvgSpan(["hide-tail"],[s],a)},gr=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","\\surd"],vr=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1"],br=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"],yr=[0,1.2,1.8,2.4,3],xr=[{type:"small",style:x.SCRIPTSCRIPT},{type:"small",style:x.SCRIPT},{type:"small",style:x.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}],wr=[{type:"small",style:x.SCRIPTSCRIPT},{type:"small",style:x.SCRIPT},{type:"small",style:x.TEXT},{type:"stack"}],kr=[{type:"small",style:x.SCRIPTSCRIPT},{type:"small",style:x.SCRIPT},{type:"small",style:x.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}],Sr=function(e){if("small"===e.type)return"Main-Regular";if("large"===e.type)return"Size"+e.size+"-Regular";if("stack"===e.type)return"Size4-Regular";throw new Error("Add support for delim type '"+e.type+"' here.")},Mr=function(e,t,r,n){for(var a=Math.min(2,3-n.style.size);at)return r[a]}return r[r.length-1]},zr=function(e,t,r,n,a,i){var o;"<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),o=l.contains(br,e)?xr:l.contains(gr,e)?kr:wr;var s=Mr(e,t,o,n);return"small"===s.type?function(e,t,r,n,a,i){var o=Ke.makeSymbol(e,"Main-Regular",a,n),s=ir(o,t,n,i);return r&&or(s,n,t),s}(e,s.style,r,n,a,i):"large"===s.type?sr(e,s.size,r,n,a,i):pr(e,t,r,n,a,i)},Ar={sqrtImage:function(e,t){var r,n,a=t.havingBaseSizing(),i=Mr("\\surd",e*a.sizeMultiplier,kr,a),o=a.sizeMultiplier,s=Math.max(0,t.minRuleThickness-t.fontMetrics().sqrtRuleThickness),l=0,h=0,m=0;return"small"===i.type?(e<1?o=1:e<1.4&&(o=.7),h=(1+s)/o,(r=fr("sqrtMain",l=(1+s+dr)/o,m=1e3+1e3*s+80,s,t)).style.minWidth="0.853em",n=.833/o):"large"===i.type?(m=1080*yr[i.size],h=(yr[i.size]+s)/o,l=(yr[i.size]+s+dr)/o,(r=fr("sqrtSize"+i.size,l,m,s,t)).style.minWidth="1.02em",n=1/o):(l=e+s+dr,h=e+s,m=Math.floor(1e3*e+s)+80,(r=fr("sqrtTall",l,m,s,t)).style.minWidth="0.742em",n=1.056),r.height=h,r.style.height=V(l),{span:r,advanceWidth:n,ruleWidth:(t.fontMetrics().sqrtRuleThickness+s)*o}},sizedDelim:function(e,t,r,a,i){if("<"===e||"\\lt"===e||"\u27e8"===e?e="\\langle":">"!==e&&"\\gt"!==e&&"\u27e9"!==e||(e="\\rangle"),l.contains(gr,e)||l.contains(br,e))return sr(e,t,!1,r,a,i);if(l.contains(vr,e))return pr(e,yr[t],!1,r,a,i);throw new n("Illegal delimiter: '"+e+"'")},sizeToMaxHeight:yr,customSizedDelim:zr,leftRightDelim:function(e,t,r,n,a,i){var o=n.fontMetrics().axisHeight*n.sizeMultiplier,s=5/n.fontMetrics().ptPerEm,l=Math.max(t-o,r+o),h=Math.max(l/500*901,2*l-s);return zr(e,h,!0,n,a,i)}},Tr={"\\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}},Br=["(","\\lparen",")","\\rparen","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\u230a","\u230b","\\lceil","\\rceil","\u2308","\u2309","<",">","\\langle","\u27e8","\\rangle","\u27e9","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\u27ee","\u27ef","\\lmoustache","\\rmoustache","\u23b0","\u23b1","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];function Cr(e,t){var r=Xt(e);if(r&&l.contains(Br,r.text))return r;throw new n(r?"Invalid delimiter '"+r.text+"' after '"+t.funcName+"'":"Invalid delimiter type '"+e.type+"'",e)}function qr(e){if(!e.body)throw new Error("Bug: The leftright ParseNode wasn't fully parsed.")}ot({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:function(e,t){var r=Cr(t[0],e);return{type:"delimsizing",mode:e.parser.mode,size:Tr[e.funcName].size,mclass:Tr[e.funcName].mclass,delim:r.text}},htmlBuilder:function(e,t){return"."===e.delim?Ke.makeSpan([e.mclass]):Ar.sizedDelim(e.delim,e.size,t,e.mode,[e.mclass])},mathmlBuilder:function(e){var t=[];"."!==e.delim&&t.push(Bt(e.delim,e.mode));var r=new Tt.MathNode("mo",t);"mopen"===e.mclass||"mclose"===e.mclass?r.setAttribute("fence","true"):r.setAttribute("fence","false"),r.setAttribute("stretchy","true");var n=V(Ar.sizeToMaxHeight[e.size]);return r.setAttribute("minsize",n),r.setAttribute("maxsize",n),r}}),ot({type:"leftright-right",names:["\\right"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=e.parser.gullet.macros.get("\\current@color");if(r&&"string"!=typeof r)throw new n("\\current@color set to non-string in \\right");return{type:"leftright-right",mode:e.parser.mode,delim:Cr(t[0],e).text,color:r}}}),ot({type:"leftright",names:["\\left"],props:{numArgs:1,primitive:!0},handler:function(e,t){var r=Cr(t[0],e),n=e.parser;++n.leftrightDepth;var a=n.parseExpression(!1);--n.leftrightDepth,n.expect("\\right",!1);var i=Ut(n.parseFunction(),"leftright-right");return{type:"leftright",mode:n.mode,body:a,left:r.text,right:i.delim,rightColor:i.color}},htmlBuilder:function(e,t){qr(e);for(var r,n,a=ft(e.body,t,!0,["mopen","mclose"]),i=0,o=0,s=!1,l=0;l-1?"mpadded":"menclose",[Rt(e.body,t)]);switch(e.label){case"\\cancel":n.setAttribute("notation","updiagonalstrike");break;case"\\bcancel":n.setAttribute("notation","downdiagonalstrike");break;case"\\phase":n.setAttribute("notation","phasorangle");break;case"\\sout":n.setAttribute("notation","horizontalstrike");break;case"\\fbox":n.setAttribute("notation","box");break;case"\\angl":n.setAttribute("notation","actuarial");break;case"\\fcolorbox":case"\\colorbox":if(r=t.fontMetrics().fboxsep*t.fontMetrics().ptPerEm,n.setAttribute("width","+"+2*r+"pt"),n.setAttribute("height","+"+2*r+"pt"),n.setAttribute("lspace",r+"pt"),n.setAttribute("voffset",r+"pt"),"\\fcolorbox"===e.label){var a=Math.max(t.fontMetrics().fboxrule,t.minRuleThickness);n.setAttribute("style","border: "+a+"em solid "+String(e.borderColor))}break;case"\\xcancel":n.setAttribute("notation","updiagonalstrike downdiagonalstrike")}return e.backgroundColor&&n.setAttribute("mathbackground",e.backgroundColor),n};ot({type:"enclose",names:["\\colorbox"],props:{numArgs:2,allowedInText:!0,argTypes:["color","text"]},handler:function(e,t,r){var n=e.parser,a=e.funcName,i=Ut(t[0],"color-token").color,o=t[1];return{type:"enclose",mode:n.mode,label:a,backgroundColor:i,body:o}},htmlBuilder:Nr,mathmlBuilder:Ir}),ot({type:"enclose",names:["\\fcolorbox"],props:{numArgs:3,allowedInText:!0,argTypes:["color","color","text"]},handler:function(e,t,r){var n=e.parser,a=e.funcName,i=Ut(t[0],"color-token").color,o=Ut(t[1],"color-token").color,s=t[2];return{type:"enclose",mode:n.mode,label:a,backgroundColor:o,borderColor:i,body:s}},htmlBuilder:Nr,mathmlBuilder:Ir}),ot({type:"enclose",names:["\\fbox"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!0},handler:function(e,t){return{type:"enclose",mode:e.parser.mode,label:"\\fbox",body:t[0]}}}),ot({type:"enclose",names:["\\cancel","\\bcancel","\\xcancel","\\sout","\\phase"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"enclose",mode:r.mode,label:n,body:a}},htmlBuilder:Nr,mathmlBuilder:Ir}),ot({type:"enclose",names:["\\angl"],props:{numArgs:1,argTypes:["hbox"],allowedInText:!1},handler:function(e,t){return{type:"enclose",mode:e.parser.mode,label:"\\angl",body:t[0]}}});var Rr={};function Or(e){for(var t=e.type,r=e.names,n=e.props,a=e.handler,i=e.htmlBuilder,o=e.mathmlBuilder,s={type:t,numArgs:n.numArgs||0,allowedInText:!1,numOptionalArgs:0,handler:a},l=0;l1||!c)&&g.pop(),b.length0&&(y+=.25),m.push({pos:y,isDashed:e[t]})}for(w(o[0]),r=0;r0&&(M<(B+=b)&&(M=B),B=0),e.addJot&&(M+=f),z.height=S,z.depth=M,y+=S,z.pos=y,y+=M+B,h[r]=z,w(o[r+1])}var C,q,N=y/2+t.fontMetrics().axisHeight,I=e.cols||[],R=[],O=[];if(e.tags&&e.tags.some((function(e){return e})))for(r=0;r=s)){var W=void 0;(a>0||e.hskipBeforeAndAfter)&&0!==(W=l.deflt(P.pregap,p))&&((C=Ke.makeSpan(["arraycolsep"],[])).style.width=V(W),R.push(C));var _=[];for(r=0;r0){for(var K=Ke.makeLineSpan("hline",t,c),J=Ke.makeLineSpan("hdashline",t,c),Q=[{type:"elem",elem:h,shift:0}];m.length>0;){var ee=m.pop(),te=ee.pos-N;ee.isDashed?Q.push({type:"elem",elem:J,shift:te}):Q.push({type:"elem",elem:K,shift:te})}h=Ke.makeVList({positionType:"individualShift",children:Q},t)}if(0===O.length)return Ke.makeSpan(["mord"],[h],t);var re=Ke.makeVList({positionType:"individualShift",children:O},t);return re=Ke.makeSpan(["tag"],[re],t),Ke.makeFragment([h,re])},Xr={c:"center ",l:"left ",r:"right "},Wr=function(e,t){for(var r=[],n=new Tt.MathNode("mtd",[],["mtr-glue"]),a=new Tt.MathNode("mtd",[],["mml-eqn-num"]),i=0;i0){var p=e.cols,d="",f=!1,g=0,v=p.length;"separator"===p[0].type&&(c+="top ",g=1),"separator"===p[p.length-1].type&&(c+="bottom ",v-=1);for(var b=g;b0?"left ":"",c+=S[S.length-1].length>0?"right ":"";for(var M=1;M-1?"alignat":"align",o="split"===e.envName,s=Gr(e.parser,{cols:a,addJot:!0,autoTag:o?void 0:Vr(e.envName),emptySingleRow:!0,colSeparationType:i,maxNumCols:o?2:void 0,leqno:e.parser.settings.leqno},"display"),l=0,h={type:"ordgroup",mode:e.mode,body:[]};if(t[0]&&"ordgroup"===t[0].type){for(var m="",c=0;c0&&u&&(f=1),a[p]={type:"align",align:d,pregap:f,postgap:0}}return s.colSeparationType=u?"align":"alignat",s};Or({type:"array",names:["array","darray"],props:{numArgs:1},handler:function(e,t){var r=(Xt(t[0])?[t[0]]:Ut(t[0],"ordgroup").body).map((function(e){var t=Yt(e).text;if(-1!=="lcr".indexOf(t))return{type:"align",align:t};if("|"===t)return{type:"separator",separator:"|"};if(":"===t)return{type:"separator",separator:":"};throw new n("Unknown column alignment: "+t,e)})),a={cols:r,hskipBeforeAndAfter:!0,maxNumCols:r.length};return Gr(e.parser,a,Ur(e.envName))},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix","matrix*","pmatrix*","bmatrix*","Bmatrix*","vmatrix*","Vmatrix*"],props:{numArgs:0},handler:function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName.replace("*","")],r="c",a={hskipBeforeAndAfter:!1,cols:[{type:"align",align:r}]};if("*"===e.envName.charAt(e.envName.length-1)){var i=e.parser;if(i.consumeSpaces(),"["===i.fetch().text){if(i.consume(),i.consumeSpaces(),r=i.fetch().text,-1==="lcr".indexOf(r))throw new n("Expected l or c or r",i.nextToken);i.consume(),i.consumeSpaces(),i.expect("]"),i.consume(),a.cols=[{type:"align",align:r}]}}var o=Gr(e.parser,a,Ur(e.envName)),s=Math.max.apply(Math,[0].concat(o.body.map((function(e){return e.length}))));return o.cols=new Array(s).fill({type:"align",align:r}),t?{type:"leftright",mode:e.mode,body:[o],left:t[0],right:t[1],rightColor:void 0}:o},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["smallmatrix"],props:{numArgs:0},handler:function(e){var t=Gr(e.parser,{arraystretch:.5},"script");return t.colSeparationType="small",t},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["subarray"],props:{numArgs:1},handler:function(e,t){var r=(Xt(t[0])?[t[0]]:Ut(t[0],"ordgroup").body).map((function(e){var t=Yt(e).text;if(-1!=="lc".indexOf(t))return{type:"align",align:t};throw new n("Unknown column alignment: "+t,e)}));if(r.length>1)throw new n("{subarray} can contain only one column");var a={cols:r,hskipBeforeAndAfter:!1,arraystretch:.5};if((a=Gr(e.parser,a,"script")).body.length>0&&a.body[0].length>1)throw new n("{subarray} can contain only one column");return a},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["cases","dcases","rcases","drcases"],props:{numArgs:0},handler:function(e){var t=Gr(e.parser,{arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:1},{type:"align",align:"l",pregap:0,postgap:0}]},Ur(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}},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["align","align*","aligned","split"],props:{numArgs:0},handler:_r,htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["gathered","gather","gather*"],props:{numArgs:0},handler:function(e){l.contains(["gather","gather*"],e.envName)&&Fr(e);var t={cols:[{type:"align",align:"c"}],addJot:!0,colSeparationType:"gather",autoTag:Vr(e.envName),emptySingleRow:!0,leqno:e.parser.settings.leqno};return Gr(e.parser,t,"display")},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["alignat","alignat*","alignedat"],props:{numArgs:1},handler:_r,htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["equation","equation*"],props:{numArgs:0},handler:function(e){Fr(e);var t={autoTag:Vr(e.envName),emptySingleRow:!0,singleRow:!0,maxNumCols:1,leqno:e.parser.settings.leqno};return Gr(e.parser,t,"display")},htmlBuilder:Yr,mathmlBuilder:Wr}),Or({type:"array",names:["CD"],props:{numArgs:0},handler:function(e){return Fr(e),function(e){var t=[];for(e.gullet.beginGroup(),e.gullet.macros.set("\\cr","\\\\\\relax"),e.gullet.beginGroup();;){t.push(e.parseExpression(!1,"\\\\")),e.gullet.endGroup(),e.gullet.beginGroup();var r=e.fetch().text;if("&"!==r&&"\\\\"!==r){if("\\end"===r){0===t[t.length-1].length&&t.pop();break}throw new n("Expected \\\\ or \\cr or \\end",e.nextToken)}e.consume()}for(var a,i,o=[],s=[o],l=0;l-1);else{if(!("<>AV".indexOf(u)>-1))throw new n('Expected one of "<>AV=|." after @',h[c]);for(var d=0;d<2;d++){for(var f=!0,g=c+1;g=x.SCRIPT.id?r.text():x.DISPLAY:"text"===e&&r.size===x.DISPLAY.size?r=x.TEXT:"script"===e?r=x.SCRIPT:"scriptscript"===e&&(r=x.SCRIPTSCRIPT),r},nn=function(e,t){var r,n=rn(e.size,t.style),a=n.fracNum(),i=n.fracDen();r=t.havingStyle(a);var o=wt(e.numer,r,t);if(e.continued){var s=8.5/t.fontMetrics().ptPerEm,l=3.5/t.fontMetrics().ptPerEm;o.height=o.height0?3*c:7*c,d=t.fontMetrics().denom1):(m>0?(u=t.fontMetrics().num2,p=c):(u=t.fontMetrics().num3,p=3*c),d=t.fontMetrics().denom2),h){var w=t.fontMetrics().axisHeight;u-o.depth-(w+.5*m)0&&(t="."===(t=e)?null:t),t};ot({type:"genfrac",names:["\\genfrac"],props:{numArgs:6,allowedInArgument:!0,argTypes:["math","math","size","text","math","math"]},handler:function(e,t){var r,n=e.parser,a=t[4],i=t[5],o=lt(t[0]),s="atom"===o.type&&"open"===o.family?sn(o.text):null,l=lt(t[1]),h="atom"===l.type&&"close"===l.family?sn(l.text):null,m=Ut(t[2],"size"),c=null;r=!!m.isBlank||(c=m.value).number>0;var u="auto",p=t[3];if("ordgroup"===p.type){if(p.body.length>0){var d=Ut(p.body[0],"textord");u=on[Number(d.text)]}}else p=Ut(p,"textord"),u=on[Number(p.text)];return{type:"genfrac",mode:n.mode,numer:a,denom:i,continued:!1,hasBarLine:r,barSize:c,leftDelim:s,rightDelim:h,size:u}},htmlBuilder:nn,mathmlBuilder:an}),ot({type:"infix",names:["\\above"],props:{numArgs:1,argTypes:["size"],infix:!0},handler:function(e,t){var r=e.parser,n=(e.funcName,e.token);return{type:"infix",mode:r.mode,replaceWith:"\\\\abovefrac",size:Ut(t[0],"size").value,token:n}}}),ot({type:"genfrac",names:["\\\\abovefrac"],props:{numArgs:3,argTypes:["math","size","math"]},handler:function(e,t){var r=e.parser,n=(e.funcName,t[0]),a=function(e){if(!e)throw new Error("Expected non-null, but got "+String(e));return e}(Ut(t[1],"infix").size),i=t[2],o=a.number>0;return{type:"genfrac",mode:r.mode,numer:n,denom:i,continued:!1,hasBarLine:o,barSize:a,leftDelim:null,rightDelim:null,size:"auto"}},htmlBuilder:nn,mathmlBuilder:an});var ln=function(e,t){var r,n,a=t.style;"supsub"===e.type?(r=e.sup?wt(e.sup,t.havingStyle(a.sup()),t):wt(e.sub,t.havingStyle(a.sub()),t),n=Ut(e.base,"horizBrace")):n=Ut(e,"horizBrace");var i,o=wt(n.base,t.havingBaseStyle(x.DISPLAY)),s=Gt(n,t);if(n.isOver?(i=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:o},{type:"kern",size:.1},{type:"elem",elem:s}]},t)).children[0].children[0].children[1].classes.push("svg-align"):(i=Ke.makeVList({positionType:"bottom",positionData:o.depth+.1+s.height,children:[{type:"elem",elem:s},{type:"kern",size:.1},{type:"elem",elem:o}]},t)).children[0].children[0].children[0].classes.push("svg-align"),r){var l=Ke.makeSpan(["mord",n.isOver?"mover":"munder"],[i],t);i=n.isOver?Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:l},{type:"kern",size:.2},{type:"elem",elem:r}]},t):Ke.makeVList({positionType:"bottom",positionData:l.depth+.2+r.height+r.depth,children:[{type:"elem",elem:r},{type:"kern",size:.2},{type:"elem",elem:l}]},t)}return Ke.makeSpan(["mord",n.isOver?"mover":"munder"],[i],t)};ot({type:"horizBrace",names:["\\overbrace","\\underbrace"],props:{numArgs:1},handler:function(e,t){var r=e.parser,n=e.funcName;return{type:"horizBrace",mode:r.mode,label:n,isOver:/^\\over/.test(n),base:t[0]}},htmlBuilder:ln,mathmlBuilder:function(e,t){var r=Vt(e.label);return new Tt.MathNode(e.isOver?"mover":"munder",[Rt(e.base,t),r])}}),ot({type:"href",names:["\\href"],props:{numArgs:2,argTypes:["url","original"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=t[1],a=Ut(t[0],"url").url;return r.settings.isTrusted({command:"\\href",url:a})?{type:"href",mode:r.mode,href:a,body:ht(n)}:r.formatUnsupportedCmd("\\href")},htmlBuilder:function(e,t){var r=ft(e.body,t,!1);return Ke.makeAnchor(e.href,[],r,t)},mathmlBuilder:function(e,t){var r=It(e.body,t);return r instanceof zt||(r=new zt("mrow",[r])),r.setAttribute("href",e.href),r}}),ot({type:"href",names:["\\url"],props:{numArgs:1,argTypes:["url"],allowedInText:!0},handler:function(e,t){var r=e.parser,n=Ut(t[0],"url").url;if(!r.settings.isTrusted({command:"\\url",url:n}))return r.formatUnsupportedCmd("\\url");for(var a=[],i=0;i0&&(n=F(e.totalheight,t)-r);var a=0;e.width.number>0&&(a=F(e.width,t));var i={height:V(r+n)};a>0&&(i.width=V(a)),n>0&&(i.verticalAlign=V(-n));var o=new j(e.src,e.alt,i);return o.height=r,o.depth=n,o},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mglyph",[]);r.setAttribute("alt",e.alt);var n=F(e.height,t),a=0;if(e.totalheight.number>0&&(a=F(e.totalheight,t)-n,r.setAttribute("valign",V(-a))),r.setAttribute("height",V(n+a)),e.width.number>0){var i=F(e.width,t);r.setAttribute("width",V(i))}return r.setAttribute("src",e.src),r}}),ot({type:"kern",names:["\\kern","\\mkern","\\hskip","\\mskip"],props:{numArgs:1,argTypes:["size"],primitive:!0,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=Ut(t[0],"size");if(r.settings.strict){var i="m"===n[1],o="mu"===a.value.unit;i?(o||r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" supports only mu units, not "+a.value.unit+" units"),"math"!==r.mode&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" works only in math mode")):o&&r.settings.reportNonstrict("mathVsTextUnits","LaTeX's "+n+" doesn't support mu units")}return{type:"kern",mode:r.mode,dimension:a.value}},htmlBuilder:function(e,t){return Ke.makeGlue(e.dimension,t)},mathmlBuilder:function(e,t){var r=F(e.dimension,t);return new Tt.SpaceNode(r)}}),ot({type:"lap",names:["\\mathllap","\\mathrlap","\\mathclap"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"lap",mode:r.mode,alignment:n.slice(5),body:a}},htmlBuilder:function(e,t){var r;"clap"===e.alignment?(r=Ke.makeSpan([],[wt(e.body,t)]),r=Ke.makeSpan(["inner"],[r],t)):r=Ke.makeSpan(["inner"],[wt(e.body,t)]);var n=Ke.makeSpan(["fix"],[]),a=Ke.makeSpan([e.alignment],[r,n],t),i=Ke.makeSpan(["strut"]);return i.style.height=V(a.height+a.depth),a.depth&&(i.style.verticalAlign=V(-a.depth)),a.children.unshift(i),a=Ke.makeSpan(["thinbox"],[a],t),Ke.makeSpan(["mord","vbox"],[a],t)},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mpadded",[Rt(e.body,t)]);if("rlap"!==e.alignment){var n="llap"===e.alignment?"-1":"-0.5";r.setAttribute("lspace",n+"width")}return r.setAttribute("width","0px"),r}}),ot({type:"styling",names:["\\(","$"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){var r=e.funcName,n=e.parser,a=n.mode;n.switchMode("math");var i="\\("===r?"\\)":"$",o=n.parseExpression(!1,i);return n.expect(i),n.switchMode(a),{type:"styling",mode:n.mode,style:"text",body:o}}}),ot({type:"text",names:["\\)","\\]"],props:{numArgs:0,allowedInText:!0,allowedInMath:!1},handler:function(e,t){throw new n("Mismatched "+e.funcName)}});var mn=function(e,t){switch(t.style.size){case x.DISPLAY.size:return e.display;case x.TEXT.size:return e.text;case x.SCRIPT.size:return e.script;case x.SCRIPTSCRIPT.size:return e.scriptscript;default:return e.text}};ot({type:"mathchoice",names:["\\mathchoice"],props:{numArgs:4,primitive:!0},handler:function(e,t){return{type:"mathchoice",mode:e.parser.mode,display:ht(t[0]),text:ht(t[1]),script:ht(t[2]),scriptscript:ht(t[3])}},htmlBuilder:function(e,t){var r=mn(e,t),n=ft(r,t,!1);return Ke.makeFragment(n)},mathmlBuilder:function(e,t){var r=mn(e,t);return It(r,t)}});var cn=function(e,t,r,n,a,i,o){e=Ke.makeSpan([],[e]);var s,h,m,c=r&&l.isCharacterBox(r);if(t){var u=wt(t,n.havingStyle(a.sup()),n);h={elem:u,kern:Math.max(n.fontMetrics().bigOpSpacing1,n.fontMetrics().bigOpSpacing3-u.depth)}}if(r){var p=wt(r,n.havingStyle(a.sub()),n);s={elem:p,kern:Math.max(n.fontMetrics().bigOpSpacing2,n.fontMetrics().bigOpSpacing4-p.height)}}if(h&&s){var d=n.fontMetrics().bigOpSpacing5+s.elem.height+s.elem.depth+s.kern+e.depth+o;m=Ke.makeVList({positionType:"bottom",positionData:d,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:V(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}else if(s){var f=e.height-o;m=Ke.makeVList({positionType:"top",positionData:f,children:[{type:"kern",size:n.fontMetrics().bigOpSpacing5},{type:"elem",elem:s.elem,marginLeft:V(-i)},{type:"kern",size:s.kern},{type:"elem",elem:e}]},n)}else{if(!h)return e;var g=e.depth+o;m=Ke.makeVList({positionType:"bottom",positionData:g,children:[{type:"elem",elem:e},{type:"kern",size:h.kern},{type:"elem",elem:h.elem,marginLeft:V(i)},{type:"kern",size:n.fontMetrics().bigOpSpacing5}]},n)}var v=[m];if(s&&0!==i&&!c){var b=Ke.makeSpan(["mspace"],[],n);b.style.marginRight=V(i),v.unshift(b)}return Ke.makeSpan(["mop","op-limits"],v,n)},un=["\\smallint"],pn=function(e,t){var r,n,a,i=!1;"supsub"===e.type?(r=e.sup,n=e.sub,a=Ut(e.base,"op"),i=!0):a=Ut(e,"op");var o,s=t.style,h=!1;if(s.size===x.DISPLAY.size&&a.symbol&&!l.contains(un,a.name)&&(h=!0),a.symbol){var m=h?"Size2-Regular":"Size1-Regular",c="";if("\\oiint"!==a.name&&"\\oiiint"!==a.name||(c=a.name.substr(1),a.name="oiint"===c?"\\iint":"\\iiint"),o=Ke.makeSymbol(a.name,m,"math",t,["mop","op-symbol",h?"large-op":"small-op"]),c.length>0){var u=o.italic,p=Ke.staticSvg(c+"Size"+(h?"2":"1"),t);o=Ke.makeVList({positionType:"individualShift",children:[{type:"elem",elem:o,shift:0},{type:"elem",elem:p,shift:h?.08:0}]},t),a.name="\\"+c,o.classes.unshift("mop"),o.italic=u}}else if(a.body){var d=ft(a.body,t,!0);1===d.length&&d[0]instanceof Z?(o=d[0]).classes[0]="mop":o=Ke.makeSpan(["mop"],d,t)}else{for(var f=[],g=1;g0){for(var s=a.body.map((function(e){var t=e.text;return"string"==typeof t?{type:"textord",mode:e.mode,text:t}:e})),l=ft(s,t.withFont("mathrm"),!0),h=0;h=0?s.setAttribute("height",V(a)):(s.setAttribute("height",V(a)),s.setAttribute("depth",V(-a))),s.setAttribute("voffset",V(a)),s}});var yn=["\\tiny","\\sixptsize","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];ot({type:"sizing",names:yn,props:{numArgs:0,allowedInText:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,a=e.parser,i=a.parseExpression(!1,r);return{type:"sizing",mode:a.mode,size:yn.indexOf(n)+1,body:i}},htmlBuilder:function(e,t){var r=t.havingSize(e.size);return bn(e.body,r,t)},mathmlBuilder:function(e,t){var r=t.havingSize(e.size),n=Nt(e.body,r),a=new Tt.MathNode("mstyle",n);return a.setAttribute("mathsize",V(r.sizeMultiplier)),a}}),ot({type:"smash",names:["\\smash"],props:{numArgs:1,numOptionalArgs:1,allowedInText:!0},handler:function(e,t,r){var n=e.parser,a=!1,i=!1,o=r[0]&&Ut(r[0],"ordgroup");if(o)for(var s="",l=0;lr.height+r.depth+i&&(i=(i+c-r.height-r.depth)/2);var u=l.height-r.height-i-h;r.style.paddingLeft=V(m);var p=Ke.makeVList({positionType:"firstBaseline",children:[{type:"elem",elem:r,wrapperClasses:["svg-align"]},{type:"kern",size:-(r.height+u)},{type:"elem",elem:l},{type:"kern",size:h}]},t);if(e.index){var d=t.havingStyle(x.SCRIPTSCRIPT),f=wt(e.index,d,t),g=.6*(p.height-p.depth),v=Ke.makeVList({positionType:"shift",positionData:-g,children:[{type:"elem",elem:f}]},t),b=Ke.makeSpan(["root"],[v]);return Ke.makeSpan(["mord","sqrt"],[b,p],t)}return Ke.makeSpan(["mord","sqrt"],[p],t)},mathmlBuilder:function(e,t){var r=e.body,n=e.index;return n?new Tt.MathNode("mroot",[Rt(r,t),Rt(n,t)]):new Tt.MathNode("msqrt",[Rt(r,t)])}});var xn={display:x.DISPLAY,text:x.TEXT,script:x.SCRIPT,scriptscript:x.SCRIPTSCRIPT};ot({type:"styling",names:["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],props:{numArgs:0,allowedInText:!0,primitive:!0},handler:function(e,t){var r=e.breakOnTokenText,n=e.funcName,a=e.parser,i=a.parseExpression(!0,r),o=n.slice(1,n.length-5);return{type:"styling",mode:a.mode,style:o,body:i}},htmlBuilder:function(e,t){var r=xn[e.style],n=t.havingStyle(r).withFont("");return bn(e.body,n,t)},mathmlBuilder:function(e,t){var r=xn[e.style],n=t.havingStyle(r),a=Nt(e.body,n),i=new Tt.MathNode("mstyle",a),o={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]}[e.style];return i.setAttribute("scriptlevel",o[0]),i.setAttribute("displaystyle",o[1]),i}});var wn=function(e,t){var r=e.base;return r?"op"===r.type?r.limits&&(t.style.size===x.DISPLAY.size||r.alwaysHandleSupSub)?pn:null:"operatorname"===r.type?r.alwaysHandleSupSub&&(t.style.size===x.DISPLAY.size||r.limits)?vn:null:"accent"===r.type?l.isCharacterBox(r.base)?Wt:null:"horizBrace"===r.type&&!e.sub===r.isOver?ln:null:null};st({type:"supsub",htmlBuilder:function(e,t){var r=wn(e,t);if(r)return r(e,t);var n,a,i,o=e.base,s=e.sup,h=e.sub,m=wt(o,t),c=t.fontMetrics(),u=0,p=0,d=o&&l.isCharacterBox(o);if(s){var f=t.havingStyle(t.style.sup());n=wt(s,f,t),d||(u=m.height-f.fontMetrics().supDrop*f.sizeMultiplier/t.sizeMultiplier)}if(h){var g=t.havingStyle(t.style.sub());a=wt(h,g,t),d||(p=m.depth+g.fontMetrics().subDrop*g.sizeMultiplier/t.sizeMultiplier)}i=t.style===x.DISPLAY?c.sup1:t.style.cramped?c.sup3:c.sup2;var v,b=t.sizeMultiplier,y=V(.5/c.ptPerEm/b),w=null;if(a){var k=e.base&&"op"===e.base.type&&e.base.name&&("\\oiint"===e.base.name||"\\oiiint"===e.base.name);(m instanceof Z||k)&&(w=V(-m.italic))}if(n&&a){u=Math.max(u,i,n.depth+.25*c.xHeight),p=Math.max(p,c.sub2);var S=4*c.defaultRuleThickness;if(u-n.depth-(a.height-p)0&&(u+=M,p-=M)}var z=[{type:"elem",elem:a,shift:p,marginRight:y,marginLeft:w},{type:"elem",elem:n,shift:-u,marginRight:y}];v=Ke.makeVList({positionType:"individualShift",children:z},t)}else if(a){p=Math.max(p,c.sub1,a.height-.8*c.xHeight);var A=[{type:"elem",elem:a,marginLeft:w,marginRight:y}];v=Ke.makeVList({positionType:"shift",positionData:p,children:A},t)}else{if(!n)throw new Error("supsub must have either sup or sub.");u=Math.max(u,i,n.depth+.25*c.xHeight),v=Ke.makeVList({positionType:"shift",positionData:-u,children:[{type:"elem",elem:n,marginRight:y}]},t)}var T=yt(m,"right")||"mord";return Ke.makeSpan([T],[m,Ke.makeSpan(["msupsub"],[v])],t)},mathmlBuilder:function(e,t){var r,n=!1;e.base&&"horizBrace"===e.base.type&&!!e.sup===e.base.isOver&&(n=!0,r=e.base.isOver),!e.base||"op"!==e.base.type&&"operatorname"!==e.base.type||(e.base.parentIsSupSub=!0);var a,i=[Rt(e.base,t)];if(e.sub&&i.push(Rt(e.sub,t)),e.sup&&i.push(Rt(e.sup,t)),n)a=r?"mover":"munder";else if(e.sub)if(e.sup){var o=e.base;a=o&&"op"===o.type&&o.limits&&t.style===x.DISPLAY||o&&"operatorname"===o.type&&o.alwaysHandleSupSub&&(t.style===x.DISPLAY||o.limits)?"munderover":"msubsup"}else{var s=e.base;a=s&&"op"===s.type&&s.limits&&(t.style===x.DISPLAY||s.alwaysHandleSupSub)||s&&"operatorname"===s.type&&s.alwaysHandleSupSub&&(s.limits||t.style===x.DISPLAY)?"munder":"msub"}else{var l=e.base;a=l&&"op"===l.type&&l.limits&&(t.style===x.DISPLAY||l.alwaysHandleSupSub)||l&&"operatorname"===l.type&&l.alwaysHandleSupSub&&(l.limits||t.style===x.DISPLAY)?"mover":"msup"}return new Tt.MathNode(a,i)}}),st({type:"atom",htmlBuilder:function(e,t){return Ke.mathsym(e.text,e.mode,t,["m"+e.family])},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mo",[Bt(e.text,e.mode)]);if("bin"===e.family){var n=qt(e,t);"bold-italic"===n&&r.setAttribute("mathvariant",n)}else"punct"===e.family?r.setAttribute("separator","true"):"open"!==e.family&&"close"!==e.family||r.setAttribute("stretchy","false");return r}});var kn={mi:"italic",mn:"normal",mtext:"normal"};st({type:"mathord",htmlBuilder:function(e,t){return Ke.makeOrd(e,t,"mathord")},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mi",[Bt(e.text,e.mode,t)]),n=qt(e,t)||"italic";return n!==kn[r.type]&&r.setAttribute("mathvariant",n),r}}),st({type:"textord",htmlBuilder:function(e,t){return Ke.makeOrd(e,t,"textord")},mathmlBuilder:function(e,t){var r,n=Bt(e.text,e.mode,t),a=qt(e,t)||"normal";return r="text"===e.mode?new Tt.MathNode("mtext",[n]):/[0-9]/.test(e.text)?new Tt.MathNode("mn",[n]):"\\prime"===e.text?new Tt.MathNode("mo",[n]):new Tt.MathNode("mi",[n]),a!==kn[r.type]&&r.setAttribute("mathvariant",a),r}});var Sn={"\\nobreak":"nobreak","\\allowbreak":"allowbreak"},Mn={" ":{},"\\ ":{},"~":{className:"nobreak"},"\\space":{},"\\nobreakspace":{className:"nobreak"}};st({type:"spacing",htmlBuilder:function(e,t){if(Mn.hasOwnProperty(e.text)){var r=Mn[e.text].className||"";if("text"===e.mode){var a=Ke.makeOrd(e,t,"textord");return a.classes.push(r),a}return Ke.makeSpan(["mspace",r],[Ke.mathsym(e.text,e.mode,t)],t)}if(Sn.hasOwnProperty(e.text))return Ke.makeSpan(["mspace",Sn[e.text]],[],t);throw new n('Unknown type of space "'+e.text+'"')},mathmlBuilder:function(e,t){if(!Mn.hasOwnProperty(e.text)){if(Sn.hasOwnProperty(e.text))return new Tt.MathNode("mspace");throw new n('Unknown type of space "'+e.text+'"')}return new Tt.MathNode("mtext",[new Tt.TextNode("\xa0")])}});var zn=function(){var e=new Tt.MathNode("mtd",[]);return e.setAttribute("width","50%"),e};st({type:"tag",mathmlBuilder:function(e,t){var r=new Tt.MathNode("mtable",[new Tt.MathNode("mtr",[zn(),new Tt.MathNode("mtd",[It(e.body,t)]),zn(),new Tt.MathNode("mtd",[It(e.tag,t)])])]);return r.setAttribute("width","100%"),r}});var An={"\\text":void 0,"\\textrm":"textrm","\\textsf":"textsf","\\texttt":"texttt","\\textnormal":"textrm"},Tn={"\\textbf":"textbf","\\textmd":"textmd"},Bn={"\\textit":"textit","\\textup":"textup"},Cn=function(e,t){var r=e.font;return r?An[r]?t.withTextFontFamily(An[r]):Tn[r]?t.withTextFontWeight(Tn[r]):t.withTextFontShape(Bn[r]):t};ot({type:"text",names:["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textmd","\\textit","\\textup"],props:{numArgs:1,argTypes:["text"],allowedInArgument:!0,allowedInText:!0},handler:function(e,t){var r=e.parser,n=e.funcName,a=t[0];return{type:"text",mode:r.mode,body:ht(a),font:n}},htmlBuilder:function(e,t){var r=Cn(e,t),n=ft(e.body,r,!0);return Ke.makeSpan(["mord","text"],n,r)},mathmlBuilder:function(e,t){var r=Cn(e,t);return It(e.body,r)}}),ot({type:"underline",names:["\\underline"],props:{numArgs:1,allowedInText:!0},handler:function(e,t){return{type:"underline",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var r=wt(e.body,t),n=Ke.makeLineSpan("underline-line",t),a=t.fontMetrics().defaultRuleThickness,i=Ke.makeVList({positionType:"top",positionData:r.height,children:[{type:"kern",size:a},{type:"elem",elem:n},{type:"kern",size:3*a},{type:"elem",elem:r}]},t);return Ke.makeSpan(["mord","underline"],[i],t)},mathmlBuilder:function(e,t){var r=new Tt.MathNode("mo",[new Tt.TextNode("\u203e")]);r.setAttribute("stretchy","true");var n=new Tt.MathNode("munder",[Rt(e.body,t),r]);return n.setAttribute("accentunder","true"),n}}),ot({type:"vcenter",names:["\\vcenter"],props:{numArgs:1,argTypes:["original"],allowedInText:!1},handler:function(e,t){return{type:"vcenter",mode:e.parser.mode,body:t[0]}},htmlBuilder:function(e,t){var r=wt(e.body,t),n=t.fontMetrics().axisHeight,a=.5*(r.height-n-(r.depth+n));return Ke.makeVList({positionType:"shift",positionData:a,children:[{type:"elem",elem:r}]},t)},mathmlBuilder:function(e,t){return new Tt.MathNode("mpadded",[Rt(e.body,t)],["vcenter"])}}),ot({type:"verb",names:["\\verb"],props:{numArgs:0,allowedInText:!0},handler:function(e,t,r){throw new n("\\verb ended by end of line instead of matching delimiter")},htmlBuilder:function(e,t){for(var r=qn(e),n=[],a=t.havingStyle(t.style.text()),i=0;i0;)this.endGroup()},t.has=function(e){return this.current.hasOwnProperty(e)||this.builtins.hasOwnProperty(e)},t.get=function(e){return this.current.hasOwnProperty(e)?this.current[e]:this.builtins[e]},t.set=function(e,t,r){if(void 0===r&&(r=!1),r){for(var n=0;n0&&(this.undefStack[this.undefStack.length-1][e]=t)}else{var a=this.undefStack[this.undefStack.length-1];a&&!a.hasOwnProperty(e)&&(a[e]=this.current[e])}null==t?delete this.current[e]:this.current[e]=t},e}(),Hn=Hr;Er("\\noexpand",(function(e){var t=e.popToken();return e.isExpandable(t.text)&&(t.noexpand=!0,t.treatAsRelax=!0),{tokens:[t],numArgs:0}})),Er("\\expandafter",(function(e){var t=e.popToken();return e.expandOnce(!0),{tokens:[t],numArgs:0}})),Er("\\@firstoftwo",(function(e){return{tokens:e.consumeArgs(2)[0],numArgs:0}})),Er("\\@secondoftwo",(function(e){return{tokens:e.consumeArgs(2)[1],numArgs:0}})),Er("\\@ifnextchar",(function(e){var t=e.consumeArgs(3);e.consumeSpaces();var r=e.future();return 1===t[0].length&&t[0][0].text===r.text?{tokens:t[1],numArgs:0}:{tokens:t[2],numArgs:0}})),Er("\\@ifstar","\\@ifnextchar *{\\@firstoftwo{#1}}"),Er("\\TextOrMath",(function(e){var t=e.consumeArgs(2);return"text"===e.mode?{tokens:t[0],numArgs:0}:{tokens:t[1],numArgs:0}}));var En={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};Er("\\char",(function(e){var t,r=e.popToken(),a="";if("'"===r.text)t=8,r=e.popToken();else if('"'===r.text)t=16,r=e.popToken();else if("`"===r.text)if("\\"===(r=e.popToken()).text[0])a=r.text.charCodeAt(1);else{if("EOF"===r.text)throw new n("\\char` missing argument");a=r.text.charCodeAt(0)}else t=10;if(t){if(null==(a=En[r.text])||a>=t)throw new n("Invalid base-"+t+" digit "+r.text);for(var i;null!=(i=En[e.future().text])&&i":"\\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","\\bigsqcup":"\\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"};Er("\\dots",(function(e){var t="\\dotso",r=e.expandAfterFuture().text;return r in Dn?t=Dn[r]:("\\not"===r.substr(0,4)||r in ae.math&&l.contains(["bin","rel"],ae.math[r].group))&&(t="\\dotsb"),t}));var Pn={")":!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};Er("\\dotso",(function(e){return e.future().text in Pn?"\\ldots\\,":"\\ldots"})),Er("\\dotsc",(function(e){var t=e.future().text;return t in Pn&&","!==t?"\\ldots\\,":"\\ldots"})),Er("\\cdots",(function(e){return e.future().text in Pn?"\\@cdots\\,":"\\@cdots"})),Er("\\dotsb","\\cdots"),Er("\\dotsm","\\cdots"),Er("\\dotsi","\\!\\cdots"),Er("\\dotsx","\\ldots\\,"),Er("\\DOTSI","\\relax"),Er("\\DOTSB","\\relax"),Er("\\DOTSX","\\relax"),Er("\\tmspace","\\TextOrMath{\\kern#1#3}{\\mskip#1#2}\\relax"),Er("\\,","\\tmspace+{3mu}{.1667em}"),Er("\\thinspace","\\,"),Er("\\>","\\mskip{4mu}"),Er("\\:","\\tmspace+{4mu}{.2222em}"),Er("\\medspace","\\:"),Er("\\;","\\tmspace+{5mu}{.2777em}"),Er("\\thickspace","\\;"),Er("\\!","\\tmspace-{3mu}{.1667em}"),Er("\\negthinspace","\\!"),Er("\\negmedspace","\\tmspace-{4mu}{.2222em}"),Er("\\negthickspace","\\tmspace-{5mu}{.277em}"),Er("\\enspace","\\kern.5em "),Er("\\enskip","\\hskip.5em\\relax"),Er("\\quad","\\hskip1em\\relax"),Er("\\qquad","\\hskip2em\\relax"),Er("\\tag","\\@ifstar\\tag@literal\\tag@paren"),Er("\\tag@paren","\\tag@literal{({#1})}"),Er("\\tag@literal",(function(e){if(e.macros.get("\\df@tag"))throw new n("Multiple \\tag");return"\\gdef\\df@tag{\\text{#1}}"})),Er("\\bmod","\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}\\mathbin{\\rm mod}\\mathchoice{\\mskip1mu}{\\mskip1mu}{\\mskip5mu}{\\mskip5mu}"),Er("\\pod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern8mu}{\\mkern8mu}{\\mkern8mu}(#1)"),Er("\\pmod","\\pod{{\\rm mod}\\mkern6mu#1}"),Er("\\mod","\\allowbreak\\mathchoice{\\mkern18mu}{\\mkern12mu}{\\mkern12mu}{\\mkern12mu}{\\rm mod}\\,\\,#1"),Er("\\pmb","\\html@mathml{\\@binrel{#1}{\\mathrlap{#1}\\kern0.5px#1}}{\\mathbf{#1}}"),Er("\\newline","\\\\\\relax"),Er("\\TeX","\\textrm{\\html@mathml{T\\kern-.1667em\\raisebox{-.5ex}{E}\\kern-.125emX}{TeX}}");var Fn=V(T["Main-Regular"]["T".charCodeAt(0)][1]-.7*T["Main-Regular"]["A".charCodeAt(0)][1]);Er("\\LaTeX","\\textrm{\\html@mathml{L\\kern-.36em\\raisebox{"+Fn+"}{\\scriptstyle A}\\kern-.15em\\TeX}{LaTeX}}"),Er("\\KaTeX","\\textrm{\\html@mathml{K\\kern-.17em\\raisebox{"+Fn+"}{\\scriptstyle A}\\kern-.15em\\TeX}{KaTeX}}"),Er("\\hspace","\\@ifstar\\@hspacer\\@hspace"),Er("\\@hspace","\\hskip #1\\relax"),Er("\\@hspacer","\\rule{0pt}{0pt}\\hskip #1\\relax"),Er("\\ordinarycolon",":"),Er("\\vcentcolon","\\mathrel{\\mathop\\ordinarycolon}"),Er("\\dblcolon",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-.9mu}\\vcentcolon}}{\\mathop{\\char"2237}}'),Er("\\coloneqq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2254}}'),Er("\\Coloneqq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}=}}{\\mathop{\\char"2237\\char"3d}}'),Er("\\coloneq",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"3a\\char"2212}}'),Er("\\Coloneq",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\mathrel{-}}}{\\mathop{\\char"2237\\char"2212}}'),Er("\\eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2255}}'),Er("\\Eqqcolon",'\\html@mathml{\\mathrel{=\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"3d\\char"2237}}'),Er("\\eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\vcentcolon}}{\\mathop{\\char"2239}}'),Er("\\Eqcolon",'\\html@mathml{\\mathrel{\\mathrel{-}\\mathrel{\\mkern-1.2mu}\\dblcolon}}{\\mathop{\\char"2212\\char"2237}}'),Er("\\colonapprox",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"3a\\char"2248}}'),Er("\\Colonapprox",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\approx}}{\\mathop{\\char"2237\\char"2248}}'),Er("\\colonsim",'\\html@mathml{\\mathrel{\\vcentcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"3a\\char"223c}}'),Er("\\Colonsim",'\\html@mathml{\\mathrel{\\dblcolon\\mathrel{\\mkern-1.2mu}\\sim}}{\\mathop{\\char"2237\\char"223c}}'),Er("\u2237","\\dblcolon"),Er("\u2239","\\eqcolon"),Er("\u2254","\\coloneqq"),Er("\u2255","\\eqqcolon"),Er("\u2a74","\\Coloneqq"),Er("\\ratio","\\vcentcolon"),Er("\\coloncolon","\\dblcolon"),Er("\\colonequals","\\coloneqq"),Er("\\coloncolonequals","\\Coloneqq"),Er("\\equalscolon","\\eqqcolon"),Er("\\equalscoloncolon","\\Eqqcolon"),Er("\\colonminus","\\coloneq"),Er("\\coloncolonminus","\\Coloneq"),Er("\\minuscolon","\\eqcolon"),Er("\\minuscoloncolon","\\Eqcolon"),Er("\\coloncolonapprox","\\Colonapprox"),Er("\\coloncolonsim","\\Colonsim"),Er("\\simcolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Er("\\simcoloncolon","\\mathrel{\\sim\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Er("\\approxcolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\vcentcolon}"),Er("\\approxcoloncolon","\\mathrel{\\approx\\mathrel{\\mkern-1.2mu}\\dblcolon}"),Er("\\notni","\\html@mathml{\\not\\ni}{\\mathrel{\\char`\u220c}}"),Er("\\limsup","\\DOTSB\\operatorname*{lim\\,sup}"),Er("\\liminf","\\DOTSB\\operatorname*{lim\\,inf}"),Er("\\injlim","\\DOTSB\\operatorname*{inj\\,lim}"),Er("\\projlim","\\DOTSB\\operatorname*{proj\\,lim}"),Er("\\varlimsup","\\DOTSB\\operatorname*{\\overline{lim}}"),Er("\\varliminf","\\DOTSB\\operatorname*{\\underline{lim}}"),Er("\\varinjlim","\\DOTSB\\operatorname*{\\underrightarrow{lim}}"),Er("\\varprojlim","\\DOTSB\\operatorname*{\\underleftarrow{lim}}"),Er("\\gvertneqq","\\html@mathml{\\@gvertneqq}{\u2269}"),Er("\\lvertneqq","\\html@mathml{\\@lvertneqq}{\u2268}"),Er("\\ngeqq","\\html@mathml{\\@ngeqq}{\u2271}"),Er("\\ngeqslant","\\html@mathml{\\@ngeqslant}{\u2271}"),Er("\\nleqq","\\html@mathml{\\@nleqq}{\u2270}"),Er("\\nleqslant","\\html@mathml{\\@nleqslant}{\u2270}"),Er("\\nshortmid","\\html@mathml{\\@nshortmid}{\u2224}"),Er("\\nshortparallel","\\html@mathml{\\@nshortparallel}{\u2226}"),Er("\\nsubseteqq","\\html@mathml{\\@nsubseteqq}{\u2288}"),Er("\\nsupseteqq","\\html@mathml{\\@nsupseteqq}{\u2289}"),Er("\\varsubsetneq","\\html@mathml{\\@varsubsetneq}{\u228a}"),Er("\\varsubsetneqq","\\html@mathml{\\@varsubsetneqq}{\u2acb}"),Er("\\varsupsetneq","\\html@mathml{\\@varsupsetneq}{\u228b}"),Er("\\varsupsetneqq","\\html@mathml{\\@varsupsetneqq}{\u2acc}"),Er("\\imath","\\html@mathml{\\@imath}{\u0131}"),Er("\\jmath","\\html@mathml{\\@jmath}{\u0237}"),Er("\\llbracket","\\html@mathml{\\mathopen{[\\mkern-3.2mu[}}{\\mathopen{\\char`\u27e6}}"),Er("\\rrbracket","\\html@mathml{\\mathclose{]\\mkern-3.2mu]}}{\\mathclose{\\char`\u27e7}}"),Er("\u27e6","\\llbracket"),Er("\u27e7","\\rrbracket"),Er("\\lBrace","\\html@mathml{\\mathopen{\\{\\mkern-3.2mu[}}{\\mathopen{\\char`\u2983}}"),Er("\\rBrace","\\html@mathml{\\mathclose{]\\mkern-3.2mu\\}}}{\\mathclose{\\char`\u2984}}"),Er("\u2983","\\lBrace"),Er("\u2984","\\rBrace"),Er("\\minuso","\\mathbin{\\html@mathml{{\\mathrlap{\\mathchoice{\\kern{0.145em}}{\\kern{0.145em}}{\\kern{0.1015em}}{\\kern{0.0725em}}\\circ}{-}}}{\\char`\u29b5}}"),Er("\u29b5","\\minuso"),Er("\\darr","\\downarrow"),Er("\\dArr","\\Downarrow"),Er("\\Darr","\\Downarrow"),Er("\\lang","\\langle"),Er("\\rang","\\rangle"),Er("\\uarr","\\uparrow"),Er("\\uArr","\\Uparrow"),Er("\\Uarr","\\Uparrow"),Er("\\N","\\mathbb{N}"),Er("\\R","\\mathbb{R}"),Er("\\Z","\\mathbb{Z}"),Er("\\alef","\\aleph"),Er("\\alefsym","\\aleph"),Er("\\Alpha","\\mathrm{A}"),Er("\\Beta","\\mathrm{B}"),Er("\\bull","\\bullet"),Er("\\Chi","\\mathrm{X}"),Er("\\clubs","\\clubsuit"),Er("\\cnums","\\mathbb{C}"),Er("\\Complex","\\mathbb{C}"),Er("\\Dagger","\\ddagger"),Er("\\diamonds","\\diamondsuit"),Er("\\empty","\\emptyset"),Er("\\Epsilon","\\mathrm{E}"),Er("\\Eta","\\mathrm{H}"),Er("\\exist","\\exists"),Er("\\harr","\\leftrightarrow"),Er("\\hArr","\\Leftrightarrow"),Er("\\Harr","\\Leftrightarrow"),Er("\\hearts","\\heartsuit"),Er("\\image","\\Im"),Er("\\infin","\\infty"),Er("\\Iota","\\mathrm{I}"),Er("\\isin","\\in"),Er("\\Kappa","\\mathrm{K}"),Er("\\larr","\\leftarrow"),Er("\\lArr","\\Leftarrow"),Er("\\Larr","\\Leftarrow"),Er("\\lrarr","\\leftrightarrow"),Er("\\lrArr","\\Leftrightarrow"),Er("\\Lrarr","\\Leftrightarrow"),Er("\\Mu","\\mathrm{M}"),Er("\\natnums","\\mathbb{N}"),Er("\\Nu","\\mathrm{N}"),Er("\\Omicron","\\mathrm{O}"),Er("\\plusmn","\\pm"),Er("\\rarr","\\rightarrow"),Er("\\rArr","\\Rightarrow"),Er("\\Rarr","\\Rightarrow"),Er("\\real","\\Re"),Er("\\reals","\\mathbb{R}"),Er("\\Reals","\\mathbb{R}"),Er("\\Rho","\\mathrm{P}"),Er("\\sdot","\\cdot"),Er("\\sect","\\S"),Er("\\spades","\\spadesuit"),Er("\\sub","\\subset"),Er("\\sube","\\subseteq"),Er("\\supe","\\supseteq"),Er("\\Tau","\\mathrm{T}"),Er("\\thetasym","\\vartheta"),Er("\\weierp","\\wp"),Er("\\Zeta","\\mathrm{Z}"),Er("\\argmin","\\DOTSB\\operatorname*{arg\\,min}"),Er("\\argmax","\\DOTSB\\operatorname*{arg\\,max}"),Er("\\plim","\\DOTSB\\mathop{\\operatorname{plim}}\\limits"),Er("\\bra","\\mathinner{\\langle{#1}|}"),Er("\\ket","\\mathinner{|{#1}\\rangle}"),Er("\\braket","\\mathinner{\\langle{#1}\\rangle}"),Er("\\Bra","\\left\\langle#1\\right|"),Er("\\Ket","\\left|#1\\right\\rangle"),Er("\\angln","{\\angl n}"),Er("\\blue","\\textcolor{##6495ed}{#1}"),Er("\\orange","\\textcolor{##ffa500}{#1}"),Er("\\pink","\\textcolor{##ff00af}{#1}"),Er("\\red","\\textcolor{##df0030}{#1}"),Er("\\green","\\textcolor{##28ae7b}{#1}"),Er("\\gray","\\textcolor{gray}{#1}"),Er("\\purple","\\textcolor{##9d38bd}{#1}"),Er("\\blueA","\\textcolor{##ccfaff}{#1}"),Er("\\blueB","\\textcolor{##80f6ff}{#1}"),Er("\\blueC","\\textcolor{##63d9ea}{#1}"),Er("\\blueD","\\textcolor{##11accd}{#1}"),Er("\\blueE","\\textcolor{##0c7f99}{#1}"),Er("\\tealA","\\textcolor{##94fff5}{#1}"),Er("\\tealB","\\textcolor{##26edd5}{#1}"),Er("\\tealC","\\textcolor{##01d1c1}{#1}"),Er("\\tealD","\\textcolor{##01a995}{#1}"),Er("\\tealE","\\textcolor{##208170}{#1}"),Er("\\greenA","\\textcolor{##b6ffb0}{#1}"),Er("\\greenB","\\textcolor{##8af281}{#1}"),Er("\\greenC","\\textcolor{##74cf70}{#1}"),Er("\\greenD","\\textcolor{##1fab54}{#1}"),Er("\\greenE","\\textcolor{##0d923f}{#1}"),Er("\\goldA","\\textcolor{##ffd0a9}{#1}"),Er("\\goldB","\\textcolor{##ffbb71}{#1}"),Er("\\goldC","\\textcolor{##ff9c39}{#1}"),Er("\\goldD","\\textcolor{##e07d10}{#1}"),Er("\\goldE","\\textcolor{##a75a05}{#1}"),Er("\\redA","\\textcolor{##fca9a9}{#1}"),Er("\\redB","\\textcolor{##ff8482}{#1}"),Er("\\redC","\\textcolor{##f9685d}{#1}"),Er("\\redD","\\textcolor{##e84d39}{#1}"),Er("\\redE","\\textcolor{##bc2612}{#1}"),Er("\\maroonA","\\textcolor{##ffbde0}{#1}"),Er("\\maroonB","\\textcolor{##ff92c6}{#1}"),Er("\\maroonC","\\textcolor{##ed5fa6}{#1}"),Er("\\maroonD","\\textcolor{##ca337c}{#1}"),Er("\\maroonE","\\textcolor{##9e034e}{#1}"),Er("\\purpleA","\\textcolor{##ddd7ff}{#1}"),Er("\\purpleB","\\textcolor{##c6b9fc}{#1}"),Er("\\purpleC","\\textcolor{##aa87ff}{#1}"),Er("\\purpleD","\\textcolor{##7854ab}{#1}"),Er("\\purpleE","\\textcolor{##543b78}{#1}"),Er("\\mintA","\\textcolor{##f5f9e8}{#1}"),Er("\\mintB","\\textcolor{##edf2df}{#1}"),Er("\\mintC","\\textcolor{##e0e5cc}{#1}"),Er("\\grayA","\\textcolor{##f6f7f7}{#1}"),Er("\\grayB","\\textcolor{##f0f1f2}{#1}"),Er("\\grayC","\\textcolor{##e3e5e6}{#1}"),Er("\\grayD","\\textcolor{##d6d8da}{#1}"),Er("\\grayE","\\textcolor{##babec2}{#1}"),Er("\\grayF","\\textcolor{##888d93}{#1}"),Er("\\grayG","\\textcolor{##626569}{#1}"),Er("\\grayH","\\textcolor{##3b3e40}{#1}"),Er("\\grayI","\\textcolor{##21242c}{#1}"),Er("\\kaBlue","\\textcolor{##314453}{#1}"),Er("\\kaGreen","\\textcolor{##71B307}{#1}");var Vn={"^":!0,_:!0,"\\limits":!0,"\\nolimits":!0},Gn=function(){function e(e,t,r){this.settings=void 0,this.expansionCount=void 0,this.lexer=void 0,this.macros=void 0,this.stack=void 0,this.mode=void 0,this.settings=t,this.expansionCount=0,this.feed(e),this.macros=new On(Hn,t.macros),this.mode=r,this.stack=[]}var t=e.prototype;return t.feed=function(e){this.lexer=new Rn(e,this.settings)},t.switchMode=function(e){this.mode=e},t.beginGroup=function(){this.macros.beginGroup()},t.endGroup=function(){this.macros.endGroup()},t.endGroups=function(){this.macros.endGroups()},t.future=function(){return 0===this.stack.length&&this.pushToken(this.lexer.lex()),this.stack[this.stack.length-1]},t.popToken=function(){return this.future(),this.stack.pop()},t.pushToken=function(e){this.stack.push(e)},t.pushTokens=function(e){var t;(t=this.stack).push.apply(t,e)},t.scanArgument=function(e){var t,r,n;if(e){if(this.consumeSpaces(),"["!==this.future().text)return null;t=this.popToken();var a=this.consumeArg(["]"]);n=a.tokens,r=a.end}else{var i=this.consumeArg();n=i.tokens,t=i.start,r=i.end}return this.pushToken(new Dr("EOF",r.loc)),this.pushTokens(n),t.range(r,"")},t.consumeSpaces=function(){for(;;){if(" "!==this.future().text)break;this.stack.pop()}},t.consumeArg=function(e){var t=[],r=e&&e.length>0;r||this.consumeSpaces();var a,i=this.future(),o=0,s=0;do{if(a=this.popToken(),t.push(a),"{"===a.text)++o;else if("}"===a.text){if(-1===--o)throw new n("Extra }",a)}else if("EOF"===a.text)throw new n("Unexpected end of input in a macro argument, expected '"+(e&&r?e[s]:"}")+"'",a);if(e&&r)if((0===o||1===o&&"{"===e[s])&&a.text===e[s]){if(++s===e.length){t.splice(-s,s);break}}else s=0}while(0!==o||r);return"{"===i.text&&"}"===t[t.length-1].text&&(t.pop(),t.shift()),t.reverse(),{tokens:t,start:i,end:a}},t.consumeArgs=function(e,t){if(t){if(t.length!==e+1)throw new n("The length of delimiters doesn't match the number of args!");for(var r=t[0],a=0;athis.settings.maxExpand)throw new n("Too many expansions: infinite loop or need to increase maxExpand setting");var i=a.tokens,o=this.consumeArgs(a.numArgs,a.delimiters);if(a.numArgs)for(var s=(i=i.slice()).length-1;s>=0;--s){var l=i[s];if("#"===l.text){if(0===s)throw new n("Incomplete placeholder at end of macro body",l);if("#"===(l=i[--s]).text)i.splice(s+1,1);else{if(!/^[1-9]$/.test(l.text))throw new n("Not a valid argument number",l);var h;(h=i).splice.apply(h,[s,2].concat(o[+l.text-1]))}}}return this.pushTokens(i),i},t.expandAfterFuture=function(){return this.expandOnce(),this.future()},t.expandNextToken=function(){for(;;){var e=this.expandOnce();if(e instanceof Dr)return e.treatAsRelax&&(e.text="\\relax"),this.stack.pop()}throw new Error},t.expandMacro=function(e){return this.macros.has(e)?this.expandTokens([new Dr(e)]):void 0},t.expandTokens=function(e){var t=[],r=this.stack.length;for(this.pushTokens(e);this.stack.length>r;){var n=this.expandOnce(!0);n instanceof Dr&&(n.treatAsRelax&&(n.noexpand=!1,n.treatAsRelax=!1),t.push(this.stack.pop()))}return t},t.expandMacroAsText=function(e){var t=this.expandMacro(e);return t?t.map((function(e){return e.text})).join(""):t},t._getExpansion=function(e){var t=this.macros.get(e);if(null==t)return t;if(1===e.length){var r=this.lexer.catcodes[e];if(null!=r&&13!==r)return}var n="function"==typeof t?t(this):t;if("string"==typeof n){var a=0;if(-1!==n.indexOf("#"))for(var i=n.replace(/##/g,"");-1!==i.indexOf("#"+(a+1));)++a;for(var o=new Rn(n,this.settings),s=[],l=o.lex();"EOF"!==l.text;)s.push(l),l=o.lex();return s.reverse(),{tokens:s,numArgs:a}}return n},t.isDefined=function(e){return this.macros.has(e)||Nn.hasOwnProperty(e)||ae.math.hasOwnProperty(e)||ae.text.hasOwnProperty(e)||Vn.hasOwnProperty(e)},t.isExpandable=function(e){var t=this.macros.get(e);return null!=t?"string"==typeof t||"function"==typeof t||!t.unexpandable:Nn.hasOwnProperty(e)&&!Nn[e].primitive},e}(),Un={"\u0301":{text:"\\'",math:"\\acute"},"\u0300":{text:"\\`",math:"\\grave"},"\u0308":{text:'\\"',math:"\\ddot"},"\u0303":{text:"\\~",math:"\\tilde"},"\u0304":{text:"\\=",math:"\\bar"},"\u0306":{text:"\\u",math:"\\breve"},"\u030c":{text:"\\v",math:"\\check"},"\u0302":{text:"\\^",math:"\\hat"},"\u0307":{text:"\\.",math:"\\dot"},"\u030a":{text:"\\r",math:"\\mathring"},"\u030b":{text:"\\H"},"\u0327":{text:"\\c"}},Yn={"\xe1":"a\u0301","\xe0":"a\u0300","\xe4":"a\u0308","\u01df":"a\u0308\u0304","\xe3":"a\u0303","\u0101":"a\u0304","\u0103":"a\u0306","\u1eaf":"a\u0306\u0301","\u1eb1":"a\u0306\u0300","\u1eb5":"a\u0306\u0303","\u01ce":"a\u030c","\xe2":"a\u0302","\u1ea5":"a\u0302\u0301","\u1ea7":"a\u0302\u0300","\u1eab":"a\u0302\u0303","\u0227":"a\u0307","\u01e1":"a\u0307\u0304","\xe5":"a\u030a","\u01fb":"a\u030a\u0301","\u1e03":"b\u0307","\u0107":"c\u0301","\u1e09":"c\u0327\u0301","\u010d":"c\u030c","\u0109":"c\u0302","\u010b":"c\u0307","\xe7":"c\u0327","\u010f":"d\u030c","\u1e0b":"d\u0307","\u1e11":"d\u0327","\xe9":"e\u0301","\xe8":"e\u0300","\xeb":"e\u0308","\u1ebd":"e\u0303","\u0113":"e\u0304","\u1e17":"e\u0304\u0301","\u1e15":"e\u0304\u0300","\u0115":"e\u0306","\u1e1d":"e\u0327\u0306","\u011b":"e\u030c","\xea":"e\u0302","\u1ebf":"e\u0302\u0301","\u1ec1":"e\u0302\u0300","\u1ec5":"e\u0302\u0303","\u0117":"e\u0307","\u0229":"e\u0327","\u1e1f":"f\u0307","\u01f5":"g\u0301","\u1e21":"g\u0304","\u011f":"g\u0306","\u01e7":"g\u030c","\u011d":"g\u0302","\u0121":"g\u0307","\u0123":"g\u0327","\u1e27":"h\u0308","\u021f":"h\u030c","\u0125":"h\u0302","\u1e23":"h\u0307","\u1e29":"h\u0327","\xed":"i\u0301","\xec":"i\u0300","\xef":"i\u0308","\u1e2f":"i\u0308\u0301","\u0129":"i\u0303","\u012b":"i\u0304","\u012d":"i\u0306","\u01d0":"i\u030c","\xee":"i\u0302","\u01f0":"j\u030c","\u0135":"j\u0302","\u1e31":"k\u0301","\u01e9":"k\u030c","\u0137":"k\u0327","\u013a":"l\u0301","\u013e":"l\u030c","\u013c":"l\u0327","\u1e3f":"m\u0301","\u1e41":"m\u0307","\u0144":"n\u0301","\u01f9":"n\u0300","\xf1":"n\u0303","\u0148":"n\u030c","\u1e45":"n\u0307","\u0146":"n\u0327","\xf3":"o\u0301","\xf2":"o\u0300","\xf6":"o\u0308","\u022b":"o\u0308\u0304","\xf5":"o\u0303","\u1e4d":"o\u0303\u0301","\u1e4f":"o\u0303\u0308","\u022d":"o\u0303\u0304","\u014d":"o\u0304","\u1e53":"o\u0304\u0301","\u1e51":"o\u0304\u0300","\u014f":"o\u0306","\u01d2":"o\u030c","\xf4":"o\u0302","\u1ed1":"o\u0302\u0301","\u1ed3":"o\u0302\u0300","\u1ed7":"o\u0302\u0303","\u022f":"o\u0307","\u0231":"o\u0307\u0304","\u0151":"o\u030b","\u1e55":"p\u0301","\u1e57":"p\u0307","\u0155":"r\u0301","\u0159":"r\u030c","\u1e59":"r\u0307","\u0157":"r\u0327","\u015b":"s\u0301","\u1e65":"s\u0301\u0307","\u0161":"s\u030c","\u1e67":"s\u030c\u0307","\u015d":"s\u0302","\u1e61":"s\u0307","\u015f":"s\u0327","\u1e97":"t\u0308","\u0165":"t\u030c","\u1e6b":"t\u0307","\u0163":"t\u0327","\xfa":"u\u0301","\xf9":"u\u0300","\xfc":"u\u0308","\u01d8":"u\u0308\u0301","\u01dc":"u\u0308\u0300","\u01d6":"u\u0308\u0304","\u01da":"u\u0308\u030c","\u0169":"u\u0303","\u1e79":"u\u0303\u0301","\u016b":"u\u0304","\u1e7b":"u\u0304\u0308","\u016d":"u\u0306","\u01d4":"u\u030c","\xfb":"u\u0302","\u016f":"u\u030a","\u0171":"u\u030b","\u1e7d":"v\u0303","\u1e83":"w\u0301","\u1e81":"w\u0300","\u1e85":"w\u0308","\u0175":"w\u0302","\u1e87":"w\u0307","\u1e98":"w\u030a","\u1e8d":"x\u0308","\u1e8b":"x\u0307","\xfd":"y\u0301","\u1ef3":"y\u0300","\xff":"y\u0308","\u1ef9":"y\u0303","\u0233":"y\u0304","\u0177":"y\u0302","\u1e8f":"y\u0307","\u1e99":"y\u030a","\u017a":"z\u0301","\u017e":"z\u030c","\u1e91":"z\u0302","\u017c":"z\u0307","\xc1":"A\u0301","\xc0":"A\u0300","\xc4":"A\u0308","\u01de":"A\u0308\u0304","\xc3":"A\u0303","\u0100":"A\u0304","\u0102":"A\u0306","\u1eae":"A\u0306\u0301","\u1eb0":"A\u0306\u0300","\u1eb4":"A\u0306\u0303","\u01cd":"A\u030c","\xc2":"A\u0302","\u1ea4":"A\u0302\u0301","\u1ea6":"A\u0302\u0300","\u1eaa":"A\u0302\u0303","\u0226":"A\u0307","\u01e0":"A\u0307\u0304","\xc5":"A\u030a","\u01fa":"A\u030a\u0301","\u1e02":"B\u0307","\u0106":"C\u0301","\u1e08":"C\u0327\u0301","\u010c":"C\u030c","\u0108":"C\u0302","\u010a":"C\u0307","\xc7":"C\u0327","\u010e":"D\u030c","\u1e0a":"D\u0307","\u1e10":"D\u0327","\xc9":"E\u0301","\xc8":"E\u0300","\xcb":"E\u0308","\u1ebc":"E\u0303","\u0112":"E\u0304","\u1e16":"E\u0304\u0301","\u1e14":"E\u0304\u0300","\u0114":"E\u0306","\u1e1c":"E\u0327\u0306","\u011a":"E\u030c","\xca":"E\u0302","\u1ebe":"E\u0302\u0301","\u1ec0":"E\u0302\u0300","\u1ec4":"E\u0302\u0303","\u0116":"E\u0307","\u0228":"E\u0327","\u1e1e":"F\u0307","\u01f4":"G\u0301","\u1e20":"G\u0304","\u011e":"G\u0306","\u01e6":"G\u030c","\u011c":"G\u0302","\u0120":"G\u0307","\u0122":"G\u0327","\u1e26":"H\u0308","\u021e":"H\u030c","\u0124":"H\u0302","\u1e22":"H\u0307","\u1e28":"H\u0327","\xcd":"I\u0301","\xcc":"I\u0300","\xcf":"I\u0308","\u1e2e":"I\u0308\u0301","\u0128":"I\u0303","\u012a":"I\u0304","\u012c":"I\u0306","\u01cf":"I\u030c","\xce":"I\u0302","\u0130":"I\u0307","\u0134":"J\u0302","\u1e30":"K\u0301","\u01e8":"K\u030c","\u0136":"K\u0327","\u0139":"L\u0301","\u013d":"L\u030c","\u013b":"L\u0327","\u1e3e":"M\u0301","\u1e40":"M\u0307","\u0143":"N\u0301","\u01f8":"N\u0300","\xd1":"N\u0303","\u0147":"N\u030c","\u1e44":"N\u0307","\u0145":"N\u0327","\xd3":"O\u0301","\xd2":"O\u0300","\xd6":"O\u0308","\u022a":"O\u0308\u0304","\xd5":"O\u0303","\u1e4c":"O\u0303\u0301","\u1e4e":"O\u0303\u0308","\u022c":"O\u0303\u0304","\u014c":"O\u0304","\u1e52":"O\u0304\u0301","\u1e50":"O\u0304\u0300","\u014e":"O\u0306","\u01d1":"O\u030c","\xd4":"O\u0302","\u1ed0":"O\u0302\u0301","\u1ed2":"O\u0302\u0300","\u1ed6":"O\u0302\u0303","\u022e":"O\u0307","\u0230":"O\u0307\u0304","\u0150":"O\u030b","\u1e54":"P\u0301","\u1e56":"P\u0307","\u0154":"R\u0301","\u0158":"R\u030c","\u1e58":"R\u0307","\u0156":"R\u0327","\u015a":"S\u0301","\u1e64":"S\u0301\u0307","\u0160":"S\u030c","\u1e66":"S\u030c\u0307","\u015c":"S\u0302","\u1e60":"S\u0307","\u015e":"S\u0327","\u0164":"T\u030c","\u1e6a":"T\u0307","\u0162":"T\u0327","\xda":"U\u0301","\xd9":"U\u0300","\xdc":"U\u0308","\u01d7":"U\u0308\u0301","\u01db":"U\u0308\u0300","\u01d5":"U\u0308\u0304","\u01d9":"U\u0308\u030c","\u0168":"U\u0303","\u1e78":"U\u0303\u0301","\u016a":"U\u0304","\u1e7a":"U\u0304\u0308","\u016c":"U\u0306","\u01d3":"U\u030c","\xdb":"U\u0302","\u016e":"U\u030a","\u0170":"U\u030b","\u1e7c":"V\u0303","\u1e82":"W\u0301","\u1e80":"W\u0300","\u1e84":"W\u0308","\u0174":"W\u0302","\u1e86":"W\u0307","\u1e8c":"X\u0308","\u1e8a":"X\u0307","\xdd":"Y\u0301","\u1ef2":"Y\u0300","\u0178":"Y\u0308","\u1ef8":"Y\u0303","\u0232":"Y\u0304","\u0176":"Y\u0302","\u1e8e":"Y\u0307","\u0179":"Z\u0301","\u017d":"Z\u030c","\u1e90":"Z\u0302","\u017b":"Z\u0307","\u03ac":"\u03b1\u0301","\u1f70":"\u03b1\u0300","\u1fb1":"\u03b1\u0304","\u1fb0":"\u03b1\u0306","\u03ad":"\u03b5\u0301","\u1f72":"\u03b5\u0300","\u03ae":"\u03b7\u0301","\u1f74":"\u03b7\u0300","\u03af":"\u03b9\u0301","\u1f76":"\u03b9\u0300","\u03ca":"\u03b9\u0308","\u0390":"\u03b9\u0308\u0301","\u1fd2":"\u03b9\u0308\u0300","\u1fd1":"\u03b9\u0304","\u1fd0":"\u03b9\u0306","\u03cc":"\u03bf\u0301","\u1f78":"\u03bf\u0300","\u03cd":"\u03c5\u0301","\u1f7a":"\u03c5\u0300","\u03cb":"\u03c5\u0308","\u03b0":"\u03c5\u0308\u0301","\u1fe2":"\u03c5\u0308\u0300","\u1fe1":"\u03c5\u0304","\u1fe0":"\u03c5\u0306","\u03ce":"\u03c9\u0301","\u1f7c":"\u03c9\u0300","\u038e":"\u03a5\u0301","\u1fea":"\u03a5\u0300","\u03ab":"\u03a5\u0308","\u1fe9":"\u03a5\u0304","\u1fe8":"\u03a5\u0306","\u038f":"\u03a9\u0301","\u1ffa":"\u03a9\u0300"},Xn=function(){function e(e,t){this.mode=void 0,this.gullet=void 0,this.settings=void 0,this.leftrightDepth=void 0,this.nextToken=void 0,this.mode="math",this.gullet=new Gn(e,t,this.mode),this.settings=t,this.leftrightDepth=0}var t=e.prototype;return t.expect=function(e,t){if(void 0===t&&(t=!0),this.fetch().text!==e)throw new n("Expected '"+e+"', got '"+this.fetch().text+"'",this.fetch());t&&this.consume()},t.consume=function(){this.nextToken=null},t.fetch=function(){return null==this.nextToken&&(this.nextToken=this.gullet.expandNextToken()),this.nextToken},t.switchMode=function(e){this.mode=e,this.gullet.switchMode(e)},t.parse=function(){this.settings.globalGroup||this.gullet.beginGroup(),this.settings.colorIsTextColor&&this.gullet.macros.set("\\color","\\textcolor");try{var e=this.parseExpression(!1);return this.expect("EOF"),this.settings.globalGroup||this.gullet.endGroup(),e}finally{this.gullet.endGroups()}},t.subparse=function(e){var t=this.nextToken;this.consume(),this.gullet.pushToken(new Dr("}")),this.gullet.pushTokens(e);var r=this.parseExpression(!1);return this.expect("}"),this.nextToken=t,r},t.parseExpression=function(t,r){for(var n=[];;){"math"===this.mode&&this.consumeSpaces();var a=this.fetch();if(-1!==e.endOfExpression.indexOf(a.text))break;if(r&&a.text===r)break;if(t&&Nn[a.text]&&Nn[a.text].infix)break;var i=this.parseAtom(r);if(!i)break;"internal"!==i.type&&n.push(i)}return"text"===this.mode&&this.formLigatures(n),this.handleInfixNodes(n)},t.handleInfixNodes=function(e){for(var t,r=-1,a=0;a=0&&this.settings.reportNonstrict("unicodeTextInMathMode",'Latin-1/Unicode text character "'+t[0]+'" used in math mode',e);var s,l=ae[this.mode][t].group,h=Lr.range(e);if(te.hasOwnProperty(l)){var m=l;s={type:"atom",mode:this.mode,family:m,loc:h,text:t}}else s={type:l,mode:this.mode,loc:h,text:t};i=s}else{if(!(t.charCodeAt(0)>=128))return null;this.settings.strict&&(S(t.charCodeAt(0))?"math"===this.mode&&this.settings.reportNonstrict("unicodeTextInMathMode",'Unicode text character "'+t[0]+'" used in math mode',e):this.settings.reportNonstrict("unknownSymbol",'Unrecognized Unicode character "'+t[0]+'" ('+t.charCodeAt(0)+")",e)),i={type:"textord",mode:"text",loc:Lr.range(e),text:t}}if(this.consume(),o)for(var c=0;c - - - / - - - - - - +/ \ No newline at end of file diff --git a/public/posts/index.html b/public/posts/index.html index a95db73..ecaff9e 100644 --- a/public/posts/index.html +++ b/public/posts/index.html @@ -1,16 +1,17 @@ - Posts - 📙 Mqdd Blog Posts + Posts - 📙 Mqdd Personal Website - + - + + @@ -19,8 +20,8 @@ - - + + @@ -34,7 +35,7 @@
@@ -64,10 +65,10 @@ Instalasi Jupyter Notebook Menggunakan WSL 21 jan, 2024 diff --git a/public/posts/index.xml b/public/posts/index.xml index cec283f..8aba3a4 100644 --- a/public/posts/index.xml +++ b/public/posts/index.xml @@ -1,34 +1,44 @@ - Posts on 📙 Mqdd Blog Posts + Posts on 📙 Mqdd Personal Website /posts/ - Recent content in Posts on 📙 Mqdd Blog Posts + Recent content in Posts on 📙 Mqdd Personal Website Hugo -- gohugo.io en-us © Mqdd - Tue, 30 Jan 2024 02:41:45 +0700 - + Tue, 30 Jan 2024 02:41:45 +0700 Ranger File Manager /posts/ranger/ Tue, 30 Jan 2024 02:41:45 +0700 + /posts/ranger/ - Ranger FM Ranger merupakan terminal based program yang berfungsi sebagai file manager sebgaimana. Pada tutorial ini saya menggunakan Ranger pada WSL di Windows 11 dengan distro Ubuntu. Ranger juga tersedia pada repository lain seperti Arch Repo, dnf, dan nix-pkg. Ada beberapa fitur yang tidak dapat berjalan pada WSL contohnya seperti Image Preview hal ini dikarenakan image preview membutuhkan X-Server/Display server seperti halnya di linux. Pada blog post ini saya ingin menunjukkan cara membuka program windows dari ranger pada WSL. + Ranger FM Ranger merupakan terminal based program yang berfungsi sebagai file manager sebgaimana. Pada tutorial ini saya menggunakan Ranger pada WSL di Windows 11 dengan distro Ubuntu. Ranger juga tersedia pada repository lain seperti Arch Repo, dnf, dan nix-pkg. +Ada beberapa fitur yang tidak dapat berjalan pada WSL contohnya seperti Image Preview hal ini dikarenakan image preview membutuhkan X-Server/Display server seperti halnya di linux. +Pada blog post ini saya ingin menunjukkan cara membuka program windows dari ranger pada WSL. + Neovim Sebagai IDE /posts/neovim/ Sun, 21 Jan 2024 04:56:47 +0700 + /posts/neovim/ - Neovim - NvChad Neovim Merupakan sebuah text editor yang minimalis. Secara default Neovim tidak memiliki banyak fitur seperti IDE yang biasanya seperti Vscode, Atom, dll. Untuk menambahkan fitur-fitur pada Neovim diperlukan effort yang lebih seperti instalasi plugin, konfigurasi autocomplete, dll. Nah sekarang mulai ada berbagai macam autogenerated neovim configuration, dimana kita tidak perlu susah susah untuk melakukan konfigurasi. Saat ini contohnya ada lazyvim, astrovim, dan masih banyak lagi. Pada blog post ini saya akan menjelaskan cara instalasi dari NvChad dan untuk distro yang saya gunakan adalah Ubuntu. + Neovim - NvChad Neovim Merupakan sebuah text editor yang minimalis. Secara default Neovim tidak memiliki banyak fitur seperti IDE yang biasanya seperti Vscode, Atom, dll. Untuk menambahkan fitur-fitur pada Neovim diperlukan effort yang lebih seperti instalasi plugin, konfigurasi autocomplete, dll. +Nah sekarang mulai ada berbagai macam autogenerated neovim configuration, dimana kita tidak perlu susah susah untuk melakukan konfigurasi. Saat ini contohnya ada lazyvim, astrovim, dan masih banyak lagi. + Instalasi Jupyter Notebook Menggunakan WSL /posts/notebook/ Sun, 21 Jan 2024 04:25:11 +0700 + /posts/notebook/ - Jupyter Notebook Jupyter Notebook merupakan sebuah program yang biasa digunankan untuk eksplorasi data menggunakan bahasa Julia, Python, dan R. Pada kali ini saya akan menunjukkan cara menginstall Jupyter Notebook di Windows menggunakan WSL yang dimana menurut saya lebih mudah dibandingkan dengan cara instalasi secara biasa melalui instalasi python pada windows. Distro yang saya gunakan pada tutorial ini adalah Ubuntu. Instalasi WSL dapat dilihat pada dokumentasi dari Microsoft. Setelah WSL terinstall ikuti langkah berikut: + Jupyter Notebook Jupyter Notebook merupakan sebuah program yang biasa digunankan untuk eksplorasi data menggunakan bahasa Julia, Python, dan R. +Pada kali ini saya akan menunjukkan cara menginstall Jupyter Notebook di Windows menggunakan WSL yang dimana menurut saya lebih mudah dibandingkan dengan cara instalasi secara biasa melalui instalasi python pada windows. Distro yang saya gunakan pada tutorial ini adalah Ubuntu. +Instalasi WSL dapat dilihat pada dokumentasi dari Microsoft. + diff --git a/public/posts/neovim.md.bak b/public/posts/neovim.md.bak new file mode 100644 index 0000000..7dd7676 --- /dev/null +++ b/public/posts/neovim.md.bak @@ -0,0 +1,37 @@ +--- +date: '2024-01-21T04:56:47+07:00' +draft: false +title: 'Neovim Sebagai IDE' +tags: [Tech, Tutorial, neovim] +description: 'Neovim Merupakan sebuah text editor yang minimalis. Secara default Neovim tidak memiliki banyak fitur. Pada Tutorial ini saya akan menunjukkan cara instalasi agar Neovim memiliki fitur-fitur seperti text editor lain.' +--- +{{< img src="/dashboard.png" title="Neovim - NvChad" alt="Neovim" >}} + +Neovim Merupakan sebuah text editor yang minimalis. Secara default Neovim tidak memiliki banyak fitur seperti IDE yang biasanya seperti Vscode, Atom, dll. Untuk menambahkan fitur-fitur pada Neovim diperlukan effort yang lebih seperti instalasi plugin, konfigurasi autocomplete, dll. + +Nah sekarang mulai ada berbagai macam autogenerated neovim configuration, dimana kita tidak perlu susah susah untuk melakukan konfigurasi. Saat ini contohnya ada lazyvim, astrovim, dan masih banyak lagi. Pada blog post ini saya akan menjelaskan cara instalasi dari **NvChad** dan untuk distro yang saya gunakan adalah Ubuntu. Tetapi kalian juga bisa menginstall pada distro lainnya. + +Berikut cara instalasinya: +1. Install Neovim +```shell +sudo apt install neovim +``` +2. Cek versi Neovim +```shell +nvim --version +``` +3. Tambahkan PPA Neovim Unstable **(Jika version < 0.10.0)** +```shell +sudo add-apt-repository ppa:neovim-ppa/unstable +``` +4. Install NvChad +```shell +git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1 && nvim +``` +## Preview +{{< img src="/preview.png" title="Preview NvChad" alt="Preview Image" >}} + +Selamat!! Neovim kalian akan menjadi IDE seperti Vscode 👍😁👍. Untuk shortcut/keybinding dari NvChad dapat dilihat pada [Link ini](https://nvchad.com/docs/features "NvChad") atau ketikkan **"Spasi+ch"** pada saat Normal mode. + + +****Direkomendasikan sebelum menggunakan vim/neovim kalian harus biasa menggunakan vim binding.*** diff --git a/public/posts/neovim/index.html b/public/posts/neovim/index.html index 595ac1b..5dda680 100644 --- a/public/posts/neovim/index.html +++ b/public/posts/neovim/index.html @@ -1,7 +1,7 @@ - Neovim Sebagai IDE - 📙 Mqdd Blog Posts + Neovim Sebagai IDE - 📙 Mqdd Personal Website @@ -11,7 +11,8 @@ - + + @@ -20,8 +21,8 @@ - - + + @@ -35,7 +36,7 @@
@@ -62,19 +63,21 @@
- -
- - Neovim - - -
-

Neovim - NvChad

- -
- -
+
+
+ Neovim +
+ +
+ Neovim - NvChad +
+ +

Neovim Merupakan sebuah text editor yang minimalis. Secara default Neovim tidak memiliki banyak fitur seperti IDE yang biasanya seperti Vscode, Atom, dll. Untuk menambahkan fitur-fitur pada Neovim diperlukan effort yang lebih seperti instalasi plugin, konfigurasi autocomplete, dll.

Nah sekarang mulai ada berbagai macam autogenerated neovim configuration, dimana kita tidak perlu susah susah untuk melakukan konfigurasi. Saat ini contohnya ada lazyvim, astrovim, dan masih banyak lagi. Pada blog post ini saya akan menjelaskan cara instalasi dari NvChad dan untuk distro yang saya gunakan adalah Ubuntu. Tetapi kalian juga bisa menginstall pada distro lainnya.

@@ -82,33 +85,35 @@
  1. Install Neovim
-
sudo apt install neovim
-
    +
    sudo apt install neovim
    +
    1. Cek versi Neovim
    -
    nvim --version
    -
      +
      nvim --version
      +
      1. Tambahkan PPA Neovim Unstable (Jika version < 0.10.0)
      -
      sudo add-apt-repository ppa:neovim-ppa/unstable
      -
        +
        sudo add-apt-repository ppa:neovim-ppa/unstable
        +
        1. Install NvChad
        -
        git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1 && nvim
        -

        Preview

        +
        git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1 && nvim
        +

        Preview

        +
        +
        + Preview Image +
        -
        - - Preview Image - -
        -

        Preview NvChad

        - -
        - -
        - +
        + Preview NvChad +
        + +

        Selamat!! Neovim kalian akan menjadi IDE seperti Vscode 👍😁👍. Untuk shortcut/keybinding dari NvChad dapat dilihat pada Link ini atau ketikkan “Spasi+ch” pada saat Normal mode.

        *Direkomendasikan sebelum menggunakan vim/neovim kalian harus biasa menggunakan vim binding.

        @@ -135,10 +140,10 @@ diff --git a/public/posts/notebook.md.bak b/public/posts/notebook.md.bak new file mode 100644 index 0000000..ce8490b --- /dev/null +++ b/public/posts/notebook.md.bak @@ -0,0 +1,36 @@ +--- +date: '2024-01-21T04:25:11+07:00' +draft: false +title: 'Instalasi Jupyter Notebook Menggunakan WSL' +tags: [tech, tutorial, jupyter notebook] +description: 'Jupyter Notebook merupakan sebuah program yang biasa digunankan untuk eksplorasi data menggunakan bahasa Julia, Python, dan R. Pada tutorial ini saya akan menunjukkan cara instalasi Jupyter Notebook dengan WSL.' +--- +{{< img src="/notebook_windows_wsl.png" title="Jupyter Notebook" alt="Jupyter Notebook" >}} + +Jupyter Notebook merupakan sebuah program yang biasa digunankan untuk eksplorasi data menggunakan bahasa Julia, Python, dan R. + +Pada kali ini saya akan menunjukkan cara menginstall Jupyter Notebook di Windows menggunakan WSL yang dimana menurut saya lebih mudah dibandingkan dengan cara instalasi secara biasa melalui instalasi python pada windows. Distro yang saya gunakan pada tutorial ini adalah **Ubuntu**. + + +Instalasi WSL dapat dilihat pada dokumentasi dari [Microsoft](https://learn.microsoft.com/en-us/windows/wsl/install). Setelah WSL terinstall ikuti langkah berikut: +1. Buka WSL Pada Terminal +2. Install pip +```shell +sudo apt install python3-pip +``` +3. Install Jupyter Notebook +```shell +pip install notebook +``` +4. Jalankan Jupyter Notebook +```shell +jupyter notebook --no-browser +``` +atau +```shell +python3 -m notebook --no-browser + +``` +Untuk mengakses folder yang kalian inginkan gunakan perintah seperti biasa pada linux yaitu dengan cd ke direktori yang kalian inginkan. + +Nah! cukup mudah bukan dibandingkan cara biasanya 👍😁👍 diff --git a/public/posts/notebook/index.html b/public/posts/notebook/index.html index ca84901..ab3a2d8 100644 --- a/public/posts/notebook/index.html +++ b/public/posts/notebook/index.html @@ -1,7 +1,7 @@ - Instalasi Jupyter Notebook Menggunakan WSL - 📙 Mqdd Blog Posts + Instalasi Jupyter Notebook Menggunakan WSL - 📙 Mqdd Personal Website @@ -11,7 +11,8 @@ - + + @@ -20,8 +21,8 @@ - - + + @@ -35,7 +36,7 @@
        @@ -62,19 +63,21 @@
        - -
        - - Jupyter Notebook - - -
        -

        Jupyter Notebook

        - -
        - -
        +
        +
        + Jupyter Notebook +
        + +
        + Jupyter Notebook +
        + +

        Jupyter Notebook merupakan sebuah program yang biasa digunankan untuk eksplorasi data menggunakan bahasa Julia, Python, dan R.

        Pada kali ini saya akan menunjukkan cara menginstall Jupyter Notebook di Windows menggunakan WSL yang dimana menurut saya lebih mudah dibandingkan dengan cara instalasi secara biasa melalui instalasi python pada windows. Distro yang saya gunakan pada tutorial ini adalah Ubuntu.

        @@ -83,18 +86,19 @@
      1. Buka WSL Pada Terminal
      2. Install pip
      -
      sudo apt install python3-pip
      -
        +
        sudo apt install python3-pip
        +
        1. Install Jupyter Notebook
        -
        pip install notebook
        -
          +
          pip install notebook
          +
          1. Jalankan Jupyter Notebook
          -
          jupyter notebook --no-browser
          -

          atau

          -
          python3 -m notebook --no-browser
          -

          Untuk mengakses folder yang kalian inginkan gunakan perintah seperti biasa pada linux yaitu dengan cd ke direktori yang kalian inginkan.

          +
          jupyter notebook --no-browser
          +

          atau

          +
          python3 -m notebook --no-browser
          +
          +

          Untuk mengakses folder yang kalian inginkan gunakan perintah seperti biasa pada linux yaitu dengan cd ke direktori yang kalian inginkan.

          Nah! cukup mudah bukan dibandingkan cara biasanya 👍😁👍

@@ -119,10 +123,10 @@ diff --git a/public/posts/ranger.md.bak b/public/posts/ranger.md.bak new file mode 100644 index 0000000..4eec124 --- /dev/null +++ b/public/posts/ranger.md.bak @@ -0,0 +1,35 @@ +--- +date: '2024-01-30T02:41:45+07:00' +draft: false +title: 'Ranger File Manager' +tags: [tech, tutorial, ranger] +description: 'Ranger merupakan file manager yang berbasis terminal, sehingga tidk perlu GUI. Ranger memiliki banyak fitur-fitur yang sangat berguna dibandingkan program file manager lainnya yang berbasis GUI.' +--- + +{{< img src="/ranger.png" title="Ranger FM" alt="Ranger" >}} + +Ranger merupakan terminal based program yang berfungsi sebagai file manager sebgaimana. Pada tutorial ini saya menggunakan Ranger pada WSL di Windows 11 dengan distro **Ubuntu**. Ranger juga tersedia pada repository lain seperti Arch Repo, dnf, dan nix-pkg. + +Ada beberapa fitur yang tidak dapat berjalan pada WSL contohnya seperti Image Preview hal ini dikarenakan image preview membutuhkan X-Server/Display server seperti halnya di linux. + +Pada blog post ini saya ingin menunjukkan cara membuka program windows dari ranger pada WSL. Sebelum itu kita harus install Ranger terlebih dahulu. Berikut cara instalasinya: +1. Buka WSL Pada Terminal +2. Install ranger +```shell +sudo apt install ranger +``` +3. Copy Ranger Config dari GitHub saya +```shell +git clone -n --depth=1 --filter=tree:0 https://github.com/Linc2427/DotFiles.git && cd DotFiles && git sparse-checkout set --no-cone ranger && git checkout && mv ranger ../ && cd ../ && rm -rf DotFiles +``` +4. Jalankan Ranger +```shell +ranger +``` + +Nah! Sekarang jika kalian membuka file misalkan docx maka nantinya akan langsung membuka microsoft word atau default word processor kalian. 👍😁👍 + +Untuk Keybinding dapat dilihat pada rc.conf pada folder ranger yang ada di .config. + +Sumber: + - https://gist.github.com/TaipanRex/5db9a19304743fe6367b9ef291d2b69b diff --git a/public/posts/ranger/index.html b/public/posts/ranger/index.html index 590d66b..e114382 100644 --- a/public/posts/ranger/index.html +++ b/public/posts/ranger/index.html @@ -1,7 +1,7 @@ - Ranger File Manager - 📙 Mqdd Blog Posts + Ranger File Manager - 📙 Mqdd Personal Website @@ -11,7 +11,8 @@ - + + @@ -20,8 +21,8 @@ - - + + @@ -35,7 +36,7 @@
@@ -62,19 +63,21 @@
- -
- - Ranger - - -
-

Ranger FM

- -
- -
+
+
+ Ranger +
+ +
+ Ranger FM +
+ +

Ranger merupakan terminal based program yang berfungsi sebagai file manager sebgaimana. Pada tutorial ini saya menggunakan Ranger pada WSL di Windows 11 dengan distro Ubuntu. Ranger juga tersedia pada repository lain seperti Arch Repo, dnf, dan nix-pkg.

Ada beberapa fitur yang tidak dapat berjalan pada WSL contohnya seperti Image Preview hal ini dikarenakan image preview membutuhkan X-Server/Display server seperti halnya di linux.

@@ -83,16 +86,16 @@
  • Buka WSL Pada Terminal
  • Install ranger
  • -
    sudo apt install ranger
    -
      +
      sudo apt install ranger
      +
      1. Copy Ranger Config dari GitHub saya
      -
      git clone -n --depth=1 --filter=tree:0 https://github.com/Linc2427/DotFiles.git && cd DotFiles && git sparse-checkout set --no-cone ranger && git checkout && mv ranger ../ && cd ../ && rm -rf DotFiles
      -
        +
        git clone -n --depth=1 --filter=tree:0 https://github.com/Linc2427/DotFiles.git && cd DotFiles && git sparse-checkout set --no-cone ranger && git checkout && mv ranger ../ && cd ../ && rm -rf DotFiles
        +
        1. Jalankan Ranger
        -
        ranger
        -

        Nah! Sekarang jika kalian membuka file misalkan docx maka nantinya akan langsung membuka microsoft word atau default word processor kalian. 👍😁👍

        +
        ranger
        +

        Nah! Sekarang jika kalian membuka file misalkan docx maka nantinya akan langsung membuka microsoft word atau default word processor kalian. 👍😁👍

        Untuk Keybinding dapat dilihat pada rc.conf pada folder ranger yang ada di .config.

        Sumber:

          @@ -121,10 +124,10 @@ diff --git a/public/sitemap.xml b/public/sitemap.xml index 77074c4..4634fa8 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -2,9 +2,6 @@ - / - 2024-01-30T02:41:45+07:00 - /posts/ 2024-01-30T02:41:45+07:00 @@ -22,6 +19,9 @@ /tags/tutorial/ 2024-01-30T02:41:45+07:00 + + / + 2024-01-30T02:41:45+07:00 /about/ 2024-01-21T00:00:00+00:00 diff --git a/public/svg/feather-sprite.svg b/public/svg/feather-sprite.svg new file mode 100644 index 0000000..b66f76f --- /dev/null +++ b/public/svg/feather-sprite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/tags/index.html b/public/tags/index.html index 52465a0..8776217 100644 --- a/public/tags/index.html +++ b/public/tags/index.html @@ -1,16 +1,17 @@ - Tags - 📙 Mqdd Blog Posts + Tags - 📙 Mqdd Personal Website - + - + + @@ -19,8 +20,8 @@ - - + + @@ -34,7 +35,7 @@
          @@ -87,10 +88,10 @@
    diff --git a/public/tags/index.xml b/public/tags/index.xml index 1615c5e..00788aa 100644 --- a/public/tags/index.xml +++ b/public/tags/index.xml @@ -1,48 +1,57 @@ - Tags on 📙 Mqdd Blog Posts + Tags on 📙 Mqdd Personal Website /tags/ - Recent content in Tags on 📙 Mqdd Blog Posts + Recent content in Tags on 📙 Mqdd Personal Website Hugo -- gohugo.io en-us © Mqdd - Tue, 30 Jan 2024 02:41:45 +0700 - + Tue, 30 Jan 2024 02:41:45 +0700 ranger /tags/ranger/ Tue, 30 Jan 2024 02:41:45 +0700 + /tags/ranger/ + Tech /tags/tech/ Tue, 30 Jan 2024 02:41:45 +0700 + /tags/tech/ + Tutorial /tags/tutorial/ Tue, 30 Jan 2024 02:41:45 +0700 + /tags/tutorial/ + neovim /tags/neovim/ Sun, 21 Jan 2024 04:56:47 +0700 + /tags/neovim/ + jupyter notebook /tags/jupyter-notebook/ Sun, 21 Jan 2024 04:25:11 +0700 + /tags/jupyter-notebook/ + diff --git a/public/tags/jupyter-notebook/index.html b/public/tags/jupyter-notebook/index.html index 0e3b637..142b4de 100644 --- a/public/tags/jupyter-notebook/index.html +++ b/public/tags/jupyter-notebook/index.html @@ -1,16 +1,17 @@ - jupyter notebook - 📙 Mqdd Blog Posts + jupyter notebook - 📙 Mqdd Personal Website - + - + + @@ -19,8 +20,8 @@ - - + + @@ -34,7 +35,7 @@
    @@ -60,10 +61,10 @@ Instalasi Jupyter Notebook Menggunakan WSL Jan 21, 2024 diff --git a/public/tags/jupyter-notebook/index.xml b/public/tags/jupyter-notebook/index.xml index 09b1019..3cfcb0b 100644 --- a/public/tags/jupyter-notebook/index.xml +++ b/public/tags/jupyter-notebook/index.xml @@ -1,20 +1,23 @@ - jupyter notebook on 📙 Mqdd Blog Posts + jupyter notebook on 📙 Mqdd Personal Website /tags/jupyter-notebook/ - Recent content in jupyter notebook on 📙 Mqdd Blog Posts + Recent content in jupyter notebook on 📙 Mqdd Personal Website Hugo -- gohugo.io en-us © Mqdd - Sun, 21 Jan 2024 04:25:11 +0700 - + Sun, 21 Jan 2024 04:25:11 +0700 Instalasi Jupyter Notebook Menggunakan WSL /posts/notebook/ Sun, 21 Jan 2024 04:25:11 +0700 + /posts/notebook/ - Jupyter Notebook Jupyter Notebook merupakan sebuah program yang biasa digunankan untuk eksplorasi data menggunakan bahasa Julia, Python, dan R. Pada kali ini saya akan menunjukkan cara menginstall Jupyter Notebook di Windows menggunakan WSL yang dimana menurut saya lebih mudah dibandingkan dengan cara instalasi secara biasa melalui instalasi python pada windows. Distro yang saya gunakan pada tutorial ini adalah Ubuntu. Instalasi WSL dapat dilihat pada dokumentasi dari Microsoft. Setelah WSL terinstall ikuti langkah berikut: + Jupyter Notebook Jupyter Notebook merupakan sebuah program yang biasa digunankan untuk eksplorasi data menggunakan bahasa Julia, Python, dan R. +Pada kali ini saya akan menunjukkan cara menginstall Jupyter Notebook di Windows menggunakan WSL yang dimana menurut saya lebih mudah dibandingkan dengan cara instalasi secara biasa melalui instalasi python pada windows. Distro yang saya gunakan pada tutorial ini adalah Ubuntu. +Instalasi WSL dapat dilihat pada dokumentasi dari Microsoft. + diff --git a/public/tags/neovim/index.html b/public/tags/neovim/index.html index 9ee5402..19a61ec 100644 --- a/public/tags/neovim/index.html +++ b/public/tags/neovim/index.html @@ -1,16 +1,17 @@ - neovim - 📙 Mqdd Blog Posts + neovim - 📙 Mqdd Personal Website - + - + + @@ -19,8 +20,8 @@ - - + + @@ -34,7 +35,7 @@
    @@ -60,10 +61,10 @@ Neovim Sebagai IDE Jan 21, 2024 diff --git a/public/tags/neovim/index.xml b/public/tags/neovim/index.xml index b8d4bdd..aad8a6a 100644 --- a/public/tags/neovim/index.xml +++ b/public/tags/neovim/index.xml @@ -1,20 +1,22 @@ - neovim on 📙 Mqdd Blog Posts + neovim on 📙 Mqdd Personal Website /tags/neovim/ - Recent content in neovim on 📙 Mqdd Blog Posts + Recent content in neovim on 📙 Mqdd Personal Website Hugo -- gohugo.io en-us © Mqdd - Sun, 21 Jan 2024 04:56:47 +0700 - + Sun, 21 Jan 2024 04:56:47 +0700 Neovim Sebagai IDE /posts/neovim/ Sun, 21 Jan 2024 04:56:47 +0700 + /posts/neovim/ - Neovim - NvChad Neovim Merupakan sebuah text editor yang minimalis. Secara default Neovim tidak memiliki banyak fitur seperti IDE yang biasanya seperti Vscode, Atom, dll. Untuk menambahkan fitur-fitur pada Neovim diperlukan effort yang lebih seperti instalasi plugin, konfigurasi autocomplete, dll. Nah sekarang mulai ada berbagai macam autogenerated neovim configuration, dimana kita tidak perlu susah susah untuk melakukan konfigurasi. Saat ini contohnya ada lazyvim, astrovim, dan masih banyak lagi. Pada blog post ini saya akan menjelaskan cara instalasi dari NvChad dan untuk distro yang saya gunakan adalah Ubuntu. + Neovim - NvChad Neovim Merupakan sebuah text editor yang minimalis. Secara default Neovim tidak memiliki banyak fitur seperti IDE yang biasanya seperti Vscode, Atom, dll. Untuk menambahkan fitur-fitur pada Neovim diperlukan effort yang lebih seperti instalasi plugin, konfigurasi autocomplete, dll. +Nah sekarang mulai ada berbagai macam autogenerated neovim configuration, dimana kita tidak perlu susah susah untuk melakukan konfigurasi. Saat ini contohnya ada lazyvim, astrovim, dan masih banyak lagi. + diff --git a/public/tags/ranger/index.html b/public/tags/ranger/index.html index 6789557..90cc9c0 100644 --- a/public/tags/ranger/index.html +++ b/public/tags/ranger/index.html @@ -1,16 +1,17 @@ - ranger - 📙 Mqdd Blog Posts + ranger - 📙 Mqdd Personal Website - + - + + @@ -19,8 +20,8 @@ - - + + @@ -34,7 +35,7 @@
    @@ -60,10 +61,10 @@ Ranger File Manager Jan 30, 2024 diff --git a/public/tags/ranger/index.xml b/public/tags/ranger/index.xml index e07af26..10947f7 100644 --- a/public/tags/ranger/index.xml +++ b/public/tags/ranger/index.xml @@ -1,20 +1,23 @@ - ranger on 📙 Mqdd Blog Posts + ranger on 📙 Mqdd Personal Website /tags/ranger/ - Recent content in ranger on 📙 Mqdd Blog Posts + Recent content in ranger on 📙 Mqdd Personal Website Hugo -- gohugo.io en-us © Mqdd - Tue, 30 Jan 2024 02:41:45 +0700 - + Tue, 30 Jan 2024 02:41:45 +0700 Ranger File Manager /posts/ranger/ Tue, 30 Jan 2024 02:41:45 +0700 + /posts/ranger/ - Ranger FM Ranger merupakan terminal based program yang berfungsi sebagai file manager sebgaimana. Pada tutorial ini saya menggunakan Ranger pada WSL di Windows 11 dengan distro Ubuntu. Ranger juga tersedia pada repository lain seperti Arch Repo, dnf, dan nix-pkg. Ada beberapa fitur yang tidak dapat berjalan pada WSL contohnya seperti Image Preview hal ini dikarenakan image preview membutuhkan X-Server/Display server seperti halnya di linux. Pada blog post ini saya ingin menunjukkan cara membuka program windows dari ranger pada WSL. + Ranger FM Ranger merupakan terminal based program yang berfungsi sebagai file manager sebgaimana. Pada tutorial ini saya menggunakan Ranger pada WSL di Windows 11 dengan distro Ubuntu. Ranger juga tersedia pada repository lain seperti Arch Repo, dnf, dan nix-pkg. +Ada beberapa fitur yang tidak dapat berjalan pada WSL contohnya seperti Image Preview hal ini dikarenakan image preview membutuhkan X-Server/Display server seperti halnya di linux. +Pada blog post ini saya ingin menunjukkan cara membuka program windows dari ranger pada WSL. + diff --git a/public/tags/tech/index.html b/public/tags/tech/index.html index 18c1bd7..894021d 100644 --- a/public/tags/tech/index.html +++ b/public/tags/tech/index.html @@ -1,16 +1,17 @@ - Tech - 📙 Mqdd Blog Posts + Tech - 📙 Mqdd Personal Website - + - + + @@ -19,8 +20,8 @@ - - + + @@ -34,7 +35,7 @@
    @@ -64,10 +65,10 @@ Instalasi Jupyter Notebook Menggunakan WSL Jan 21, 2024 diff --git a/public/tags/tech/index.xml b/public/tags/tech/index.xml index 10c929a..e3acb8c 100644 --- a/public/tags/tech/index.xml +++ b/public/tags/tech/index.xml @@ -1,34 +1,44 @@ - Tech on 📙 Mqdd Blog Posts + Tech on 📙 Mqdd Personal Website /tags/tech/ - Recent content in Tech on 📙 Mqdd Blog Posts + Recent content in Tech on 📙 Mqdd Personal Website Hugo -- gohugo.io en-us © Mqdd - Tue, 30 Jan 2024 02:41:45 +0700 - + Tue, 30 Jan 2024 02:41:45 +0700 Ranger File Manager /posts/ranger/ Tue, 30 Jan 2024 02:41:45 +0700 + /posts/ranger/ - Ranger FM Ranger merupakan terminal based program yang berfungsi sebagai file manager sebgaimana. Pada tutorial ini saya menggunakan Ranger pada WSL di Windows 11 dengan distro Ubuntu. Ranger juga tersedia pada repository lain seperti Arch Repo, dnf, dan nix-pkg. Ada beberapa fitur yang tidak dapat berjalan pada WSL contohnya seperti Image Preview hal ini dikarenakan image preview membutuhkan X-Server/Display server seperti halnya di linux. Pada blog post ini saya ingin menunjukkan cara membuka program windows dari ranger pada WSL. + Ranger FM Ranger merupakan terminal based program yang berfungsi sebagai file manager sebgaimana. Pada tutorial ini saya menggunakan Ranger pada WSL di Windows 11 dengan distro Ubuntu. Ranger juga tersedia pada repository lain seperti Arch Repo, dnf, dan nix-pkg. +Ada beberapa fitur yang tidak dapat berjalan pada WSL contohnya seperti Image Preview hal ini dikarenakan image preview membutuhkan X-Server/Display server seperti halnya di linux. +Pada blog post ini saya ingin menunjukkan cara membuka program windows dari ranger pada WSL. + Neovim Sebagai IDE /posts/neovim/ Sun, 21 Jan 2024 04:56:47 +0700 + /posts/neovim/ - Neovim - NvChad Neovim Merupakan sebuah text editor yang minimalis. Secara default Neovim tidak memiliki banyak fitur seperti IDE yang biasanya seperti Vscode, Atom, dll. Untuk menambahkan fitur-fitur pada Neovim diperlukan effort yang lebih seperti instalasi plugin, konfigurasi autocomplete, dll. Nah sekarang mulai ada berbagai macam autogenerated neovim configuration, dimana kita tidak perlu susah susah untuk melakukan konfigurasi. Saat ini contohnya ada lazyvim, astrovim, dan masih banyak lagi. Pada blog post ini saya akan menjelaskan cara instalasi dari NvChad dan untuk distro yang saya gunakan adalah Ubuntu. + Neovim - NvChad Neovim Merupakan sebuah text editor yang minimalis. Secara default Neovim tidak memiliki banyak fitur seperti IDE yang biasanya seperti Vscode, Atom, dll. Untuk menambahkan fitur-fitur pada Neovim diperlukan effort yang lebih seperti instalasi plugin, konfigurasi autocomplete, dll. +Nah sekarang mulai ada berbagai macam autogenerated neovim configuration, dimana kita tidak perlu susah susah untuk melakukan konfigurasi. Saat ini contohnya ada lazyvim, astrovim, dan masih banyak lagi. + Instalasi Jupyter Notebook Menggunakan WSL /posts/notebook/ Sun, 21 Jan 2024 04:25:11 +0700 + /posts/notebook/ - Jupyter Notebook Jupyter Notebook merupakan sebuah program yang biasa digunankan untuk eksplorasi data menggunakan bahasa Julia, Python, dan R. Pada kali ini saya akan menunjukkan cara menginstall Jupyter Notebook di Windows menggunakan WSL yang dimana menurut saya lebih mudah dibandingkan dengan cara instalasi secara biasa melalui instalasi python pada windows. Distro yang saya gunakan pada tutorial ini adalah Ubuntu. Instalasi WSL dapat dilihat pada dokumentasi dari Microsoft. Setelah WSL terinstall ikuti langkah berikut: + Jupyter Notebook Jupyter Notebook merupakan sebuah program yang biasa digunankan untuk eksplorasi data menggunakan bahasa Julia, Python, dan R. +Pada kali ini saya akan menunjukkan cara menginstall Jupyter Notebook di Windows menggunakan WSL yang dimana menurut saya lebih mudah dibandingkan dengan cara instalasi secara biasa melalui instalasi python pada windows. Distro yang saya gunakan pada tutorial ini adalah Ubuntu. +Instalasi WSL dapat dilihat pada dokumentasi dari Microsoft. + diff --git a/public/tags/tutorial/index.html b/public/tags/tutorial/index.html index 503d08e..5263f8b 100644 --- a/public/tags/tutorial/index.html +++ b/public/tags/tutorial/index.html @@ -1,16 +1,17 @@ - Tutorial - 📙 Mqdd Blog Posts + Tutorial - 📙 Mqdd Personal Website - + - + + @@ -19,8 +20,8 @@ - - + + @@ -34,7 +35,7 @@
    @@ -64,10 +65,10 @@ Instalasi Jupyter Notebook Menggunakan WSL Jan 21, 2024 diff --git a/public/tags/tutorial/index.xml b/public/tags/tutorial/index.xml index 065f84d..c048d7f 100644 --- a/public/tags/tutorial/index.xml +++ b/public/tags/tutorial/index.xml @@ -1,34 +1,44 @@ - Tutorial on 📙 Mqdd Blog Posts + Tutorial on 📙 Mqdd Personal Website /tags/tutorial/ - Recent content in Tutorial on 📙 Mqdd Blog Posts + Recent content in Tutorial on 📙 Mqdd Personal Website Hugo -- gohugo.io en-us © Mqdd - Tue, 30 Jan 2024 02:41:45 +0700 - + Tue, 30 Jan 2024 02:41:45 +0700 Ranger File Manager /posts/ranger/ Tue, 30 Jan 2024 02:41:45 +0700 + /posts/ranger/ - Ranger FM Ranger merupakan terminal based program yang berfungsi sebagai file manager sebgaimana. Pada tutorial ini saya menggunakan Ranger pada WSL di Windows 11 dengan distro Ubuntu. Ranger juga tersedia pada repository lain seperti Arch Repo, dnf, dan nix-pkg. Ada beberapa fitur yang tidak dapat berjalan pada WSL contohnya seperti Image Preview hal ini dikarenakan image preview membutuhkan X-Server/Display server seperti halnya di linux. Pada blog post ini saya ingin menunjukkan cara membuka program windows dari ranger pada WSL. + Ranger FM Ranger merupakan terminal based program yang berfungsi sebagai file manager sebgaimana. Pada tutorial ini saya menggunakan Ranger pada WSL di Windows 11 dengan distro Ubuntu. Ranger juga tersedia pada repository lain seperti Arch Repo, dnf, dan nix-pkg. +Ada beberapa fitur yang tidak dapat berjalan pada WSL contohnya seperti Image Preview hal ini dikarenakan image preview membutuhkan X-Server/Display server seperti halnya di linux. +Pada blog post ini saya ingin menunjukkan cara membuka program windows dari ranger pada WSL. + Neovim Sebagai IDE /posts/neovim/ Sun, 21 Jan 2024 04:56:47 +0700 + /posts/neovim/ - Neovim - NvChad Neovim Merupakan sebuah text editor yang minimalis. Secara default Neovim tidak memiliki banyak fitur seperti IDE yang biasanya seperti Vscode, Atom, dll. Untuk menambahkan fitur-fitur pada Neovim diperlukan effort yang lebih seperti instalasi plugin, konfigurasi autocomplete, dll. Nah sekarang mulai ada berbagai macam autogenerated neovim configuration, dimana kita tidak perlu susah susah untuk melakukan konfigurasi. Saat ini contohnya ada lazyvim, astrovim, dan masih banyak lagi. Pada blog post ini saya akan menjelaskan cara instalasi dari NvChad dan untuk distro yang saya gunakan adalah Ubuntu. + Neovim - NvChad Neovim Merupakan sebuah text editor yang minimalis. Secara default Neovim tidak memiliki banyak fitur seperti IDE yang biasanya seperti Vscode, Atom, dll. Untuk menambahkan fitur-fitur pada Neovim diperlukan effort yang lebih seperti instalasi plugin, konfigurasi autocomplete, dll. +Nah sekarang mulai ada berbagai macam autogenerated neovim configuration, dimana kita tidak perlu susah susah untuk melakukan konfigurasi. Saat ini contohnya ada lazyvim, astrovim, dan masih banyak lagi. + Instalasi Jupyter Notebook Menggunakan WSL /posts/notebook/ Sun, 21 Jan 2024 04:25:11 +0700 + /posts/notebook/ - Jupyter Notebook Jupyter Notebook merupakan sebuah program yang biasa digunankan untuk eksplorasi data menggunakan bahasa Julia, Python, dan R. Pada kali ini saya akan menunjukkan cara menginstall Jupyter Notebook di Windows menggunakan WSL yang dimana menurut saya lebih mudah dibandingkan dengan cara instalasi secara biasa melalui instalasi python pada windows. Distro yang saya gunakan pada tutorial ini adalah Ubuntu. Instalasi WSL dapat dilihat pada dokumentasi dari Microsoft. Setelah WSL terinstall ikuti langkah berikut: + Jupyter Notebook Jupyter Notebook merupakan sebuah program yang biasa digunankan untuk eksplorasi data menggunakan bahasa Julia, Python, dan R. +Pada kali ini saya akan menunjukkan cara menginstall Jupyter Notebook di Windows menggunakan WSL yang dimana menurut saya lebih mudah dibandingkan dengan cara instalasi secara biasa melalui instalasi python pada windows. Distro yang saya gunakan pada tutorial ini adalah Ubuntu. +Instalasi WSL dapat dilihat pada dokumentasi dari Microsoft. + -- cgit v1.2.3