From f92e7c8ca23485a29cae1d367569238931891d90 Mon Sep 17 00:00:00 2001 From: Janik von Rotz Date: Tue, 14 Oct 2025 08:03:44 +0200 Subject: [PATCH] vault backup: 2025-10-14 08:03:44 --- .obsidian/app.json | 7 +- .obsidian/community-plugins.json | 2 +- .obsidian/core-plugins-migration.json | 2 +- .obsidian/core-plugins.json | 2 +- .obsidian/hotkeys.json | 7 +- .obsidian/plugins/emoji-shortcodes/data.json | 2 +- .obsidian/plugins/emoji-shortcodes/main.js | 418 +- .../plugins/emoji-shortcodes/manifest.json | 22 +- .../obsidian-excalidraw-plugin/data.json | 14 +- .../obsidian-excalidraw-plugin/main.js | 54097 +++++++++++++++- .../obsidian-excalidraw-plugin/manifest.json | 24 +- .../obsidian-excalidraw-plugin/styles.css | 6798 +- .../data.json | 2 +- .../main.js | 7974 ++- .obsidian/plugins/obsidian-git/data.json | 2 +- .obsidian/plugins/obsidian-git/main.js | 40448 +++++++++++- .obsidian/plugins/obsidian-git/manifest.json | 16 +- .obsidian/plugins/obsidian-git/styles.css | 564 +- .../plugins/table-editor-obsidian/data.json | 2 +- .../plugins/table-editor-obsidian/main.js | 13217 +++- .../plugins/table-editor-obsidian/styles.css | 14 +- .obsidian/types.json | 2 +- .prettierrc.conf | 6 + .vuepress/config.js | 106 +- .vuepress/mermaid.js | 38 +- .vuepress/mermaidClient.js | 20 +- .vuepress/plausible.js | 22 +- .vuepress/plausibleClient.js | 22 +- AGBs Entwicklungsprojekt.md | 19 +- AHV und EO.md | 5 +- API Key.md | 3 +- APPUiO.md | 3 +- Abos und Preise.md | 3 +- Accounts.md | 2 +- Administrator Mint System.md | 3 +- Aegis Authenticator.md | 3 +- Aerodoo.md | 3 +- Affiliate-Marketing.md | 2 + Akquise.md | 3 +- Algolia.md | 2 +- Anforderungen.md | 3 +- Anforderungsanalyse.md | 3 +- Angebot.md | 51 +- Anleitung.md | 17 +- Ansible Build.md | 3 +- Ansible Inventory.md | 3 +- Ansible Troubleshooting.md | 3 +- Ansible Vault.md | 5 +- Ansible.md | 1 + Apache Superset.md | 1 + Applikation mit Odoo entwickeln.md | 3 +- Arbeitsplatz am Bahnhofplatz 1.md | 5 +- Arbeitsplatz.md | 13 +- Assets for Odoo Modules.md | 3 +- Auf Open Source wechseln.md | 7 +- Aufbau einer Entwicklungsumgebung für Odoo.md | 3 +- Aufgabenplanung.md | 1 + Auftragsverarbeitungsvertrag.md | 9 +- Aufwandsschätzung Odoo Upgrade XX.0.md | 25 +- Aufwandsschätzung.md | 5 +- BINARY business.md | 3 +- BINARY one GmbH.md | 4 +- BPMN.md | 3 +- Backup Replication.md | 2 +- Backup.md | 3 +- Barcode.md | 26 +- Basiswissen Requirements Engineering.md | 5 +- Bauteile mit Odoo zertifizieren.md | 3 +- Begriffe.md | 4 +- ...nternehmensdaten mit Nextcloud im Griff.md | 227 +- Beratungsprojekte.md | 19 +- Besser als Alternativ.md | 38 +- Bestandsaufnahme Office 365.md | 40 +- Betriebssystem.md | 5 +- BigBlueButton.md | 3 +- Billability.md | 1 + Blog-Posts.md | 5 +- Business Process Model and Notation.md | 5 +- CH Open.md | 3 +- Caluma.md | 1 + Chaos Computer Club.md | 3 +- Check-in.md | 3 +- Chief Operating Officer.md | 14 +- Cloud Mint System.md | 3 +- Cloudscale.md | 3 +- Code of Conduct.md | 3 +- Codeberg.md | 3 +- Collabora.md | 3 +- Collaboration.md | 3 +- Compare coding agents.md | 3 +- Concept Template.md | 12 +- Containervirtualisierung.md | 3 +- Continuous Delivery.md | 3 +- Conventional Commits.md | 3 +- Copier.md | 3 +- Corporate Design.md | 20 +- Crossplane.md | 2 +- CrowdSec.md | 2 +- DKIM.md | 3 +- DMARC.md | 5 +- DMS.md | 3 +- DNS.md | 8 +- DRP - Server Totalausfall mit Nextcloud.md | 3 +- DRP - Server Totalausfall mit Odoo.md | 5 +- Data Hackdays Uri.md | 3 +- Datenschutzrichtlinie.md | 2 +- Datenverarbeitung.md | 3 +- Debian.md | 5 +- Demoumgebungen.md | 1 + Den eigenen Login-Anbieter mit Keycloak.md | 7 +- Der eigene Messenger für ihre Schule.md | 10 +- Design Decisions.md | 17 +- Develope an Odoo module.md | 5 +- Dienstleistungen.md | 13 +- Digital Cluster Uri.md | 1 + Digital cluster Uri Bot.md | 1 + Disaster Recovery Plan.md | 3 +- ...er - Migrate bind mount to volume mount.md | 15 +- ...e Docker data directory to new location.md | 7 +- Docker Troubleshooting.md | 4 +- Docker.md | 3 +- Document Management - Archive files.md | 5 +- Dokumentation.md | 3 +- Dokumente.md | 2 +- Domains.md | 45 +- Doom Emacs.md | 5 +- Drehbuch Migration Infomaniak.md | 3 +- E-Mails mit Odoo versenden und empfangen.md | 15 +- ERP Mint System.md | 5 +- ETL-Prozess.md | 5 +- Eine Sache des guten Geschmacks.md | 22 +- Element.md | 3 +- Emacs.md | 3 +- Emoji.md | 6 +- End-of-life.md | 5 +- Entity Relationship Model.md | 14 +- Entwicklung.md | 3 +- Equitania Software GmbH.md | 4 +- Erklärung.md | 13 +- Estimation.md | 1 + Evaluation IaaS.md | 33 +- Evaluation Nextcloud Office.md | 11 +- Evaluation Odoo Hardware.md | 3 +- Evaluation Odoo Report.md | 3 +- Evaluation Telefonieanbieter.md | 13 +- Evaluation.md | 19 +- Excalidraw.md | 3 +- Exoscale - Extend disk space.md | 25 +- Exoscale cli.md | 2 +- Exoscale.md | 3 +- Feedback Upgrade Odoo XX.0.md | 3 +- Fernwartung.md | 3 +- Finanzen.md | 7 +- FireHOL.md | 3 +- Firefox Handbuch.md | 17 +- Firefox.md | 5 +- Fonts.md | 3 +- Foreign Data Wrapper.md | 3 +- Fosstodon.md | 2 +- Freischaffende Mitarbeitende.md | 40 +- Förderbeiträge.md | 2 +- Fünf Fünf Fünf.md | 3 +- GNU GPLv3 Lizenz.md | 5 +- GParted.md | 3 +- Gaapex.md | 3 +- Gap-Analyse.md | 13 +- Gerit Tänzer.md | 2 +- Git Forks.md | 6 +- Git Handbook.md | 3 +- Git Rebase.md | 5 +- Git.md | 3 +- GitHub Organisation.md | 14 +- GitHub.md | 3 +- GitLab.md | 5 +- Gitea.md | 1 + Github - Download binary files.md | 3 +- Google Ads.md | 5 +- Governance.md | 3 +- Grafana Dashboard.md | 7 +- Grafana.md | 5 +- Green.md | 5 +- Groupware.md | 4 +- Hack4SocialGood 2024.md | 14 +- Hades.md | 9 +- Helix.md | 1 + Hermes.md | 10 +- Hetzner - Festplattenspeicher erweitern.md | 55 +- Hetzner - Projekt verwalten.md | 5 +- Hetzner - RAM-Speicher erhöhen.md | 16 +- ...er - Server zu neuem Standort migrieren.md | 1 + Hetzner Troubleshooting.md | 3 +- Hetzner.md | 1 + Hosting Provider.md | 5 +- Hosting-Modelle.md | 19 +- Hosting-Projekte.md | 23 +- Hosting.md | 10 +- Hugo.md | 3 +- IT-Monokultur in der Verwaltung.md | 6 +- Icons.md | 5 +- Ideation.md | 35 +- Infomaniak Handbuch.md | 9 +- Infomaniak Kubernetes.md | 8 +- Infomaniak Migration.md | 3 +- Infomaniak.md | 5 +- Infrastructure Mint System.md | 60 +- Infrastruktur.base.md | 3 +- Infrastruktur.md | 33 +- Inkscape.md | 5 +- Innernet.md | 3 +- Innovation.md | 3 +- Interne Links.md | 5 +- Inventage.md | 2 +- JFrog Connect.md | 4 +- Janik von Rotz.md | 6 +- Jenkins Handbuch.md | 17 +- Jenkins Hosting.md | 11 +- Jenkins Security.md | 4 +- Jenkins.md | 12 +- Jobs.md | 7 +- Jupyter.md | 4 +- KPI.md | 2 +- Kanban.md | 5 +- KeePassXC Handbuch.md | 13 +- KeePassXC.md | 3 +- Keep a changelog.md | 2 +- Keychron.md | 5 +- Keycloak Assessment.md | 49 +- Keycloak Handbuch.md | 7 +- Keycloak Hosting.md | 3 +- Keycloak Security.md | 5 +- Keycloak Troubleshooting.md | 21 +- Keycloak Upgrade.md | 7 +- Keycloak.md | 13 +- Kollaboration.md | 5 +- Kommandozeile.md | 1 + Konkurrenten.md | 3 +- Konkurrenzprodukte.md | 25 +- Konzepte.md | 2 +- Koordination Wartung.md | 8 +- Kostendach.md | 5 +- Kreis Infrastruktur.md | 3 +- Kuberenetes Worker Nodes.md | 2 +- Kubernetes Build.md | 3 +- Kubernetes Control Planes.md | 2 +- Kubernetes Service.md | 3 +- Kubernetes.md | 5 +- Kunden.md | 5 +- Kurt Gisler.md | 3 +- LLM.md | 3 +- Large Language Model Agents.md | 5 +- Large Language Models.md | 3 +- Laszlo Krajnikovszkij.md | 3 +- Let's Encrypt.md | 5 +- LibreOffice Handbuch.md | 5 +- LibreOffice Impress.md | 7 +- LibreOffice.md | 5 +- LibrePLM.md | 7 +- LibreWolf.md | 2 +- Link 2500 Portable Flex.md | 3 +- Linux Server Patching Dokumentation.md | 4 +- Linux Server Patching.md | 5 +- Linux.md | 7 +- Liste Accounts.md | 17 +- Liste Begriffe.md | 41 +- Liste Blog.md | 77 +- Liste Dienstleistung.md | 11 +- Liste Handbücher.md | 29 +- Liste Infrastruktur.md | 41 +- Liste Kommunikation.md | 51 +- Liste Kontakte.md | 53 +- Liste Manpages.md | 21 +- Liste Meta.md | 19 +- Liste Methodik.md | 45 +- Liste Odoo Apps.md | 1 + Liste Organisation.md | 107 +- Liste Phasen.md | 169 +- Liste Produkte.md | 115 +- Liste Projekte.md | 11 +- Liste Prozesse.md | 295 +- Liste Richtlinien.md | 57 +- Liste Softwareentwicklung.md | 71 +- Liste Spezifikationen.md | 25 +- Liste Tools.md | 73 +- Liste Troubleshooting.md | 27 +- Liste Vorlagen.md | 77 +- Liste _ No Kind nor Section.md | 3 +- Liste Übersicht.md | 55 +- Lizenzmanagement mit Odoo.md | 3 +- Login Mint System.md | 14 +- Login mit login.mint-system.ch.md | 4 +- Login mit odoo.com.md | 7 +- Login with GitLab.md | 1 + Lokalisierung.md | 5 +- Mail Bounce.md | 1 + Mail Hosting.md | 3 +- Mail Security.md | 3 +- Mail-Accounts.md | 3 +- Mail.md | 6 +- Mailgun.md | 2 +- Mailhog.md | 3 +- Mailpit.md | 2 +- Main Build.md | 3 +- Managed Kubernetes.md | 3 +- Managed Server Kalkulation.md | 21 +- Managed Server Konfiguration.md | 3 +- Managed Server.md | 3 +- Marco Roeleven.md | 3 +- Marcus Menzel.md | 3 +- Markdown Tutorial.md | 25 +- Marketing.md | 3 +- Marktsondierung.md | 3 +- Mastodon.md | 48 +- Matomo Hosting.md | 10 +- Matomo.md | 4 +- Matrix Server.md | 2 +- Matrix.md | 4 +- Mattermost.md | 4 +- Mehrwertsteuer.md | 39 +- Meilisearch Upgrade.md | 5 +- Meilisearch.md | 3 +- Mermaidjs.md | 2 +- Methodik.md | 23 +- Mettler Toledo.md | 5 +- Microsoft Authenticator.md | 16 +- Migrate Modules to Odoo XX.0.md | 17 +- Migrate OCA module to XX.0.md | 19 +- ... docker postgres databases with pg_dump.md | 4 +- Minor Improvements Template.md | 3 + Mint Bot.md | 1 + Mint Cloud Kubernetes Clusters.md | 2 +- Mint Cloud.md | 3 +- Mint SaaS.md | 14 +- Mint System GmbH.md | 20 +- Mint System Login.md | 4 +- Mint System Odoo.md | 3 +- Mint System Referenzen.md | 3 +- Mint System Spesenreglement 2020.md | 1 + Mint System Website.md | 5 +- Mint System als Subunternehmen.md | 2 +- Mint System und Odoo.md | 152 +- Mint System.md | 5 +- Mintsys.md | 5 +- Mitarbeit.md | 5 +- Mitgliedschaften.md | 11 +- Modelle.md | 2 +- Monitoring Server.md | 3 +- Monitoring.md | 21 +- Moodle Hosting.md | 3 +- Moodle.md | 1 + Mythen über Open Source.md | 14 +- N8N Handbook.md | 2 +- N8N.md | 3 +- Netzwerk.md | 5 +- Netzwerker%In.md | 1 + Neue Regionalpolitik.md | 2 +- New Rubrik Edge.md | 3 +- Nextcloud - Configure ignored files.md | 20 +- Nextcloud - Full text seach.md | 24 +- Nextcloud - OwnCloud Console.md | 3 +- ... - Restore password manager from backup.md | 4 +- ...cloud - Set default locale and language.md | 3 +- Nextcloud App Elektronische Signaturen.md | 3 +- Nextcloud App Mail.md | 3 +- Nextcloud App Social Login.md | 3 +- Nextcloud App Talk.md | 1 + Nextcloud App Two-Factor TOTP Provider.md | 3 +- Nextcloud Apps.md | 11 +- Nextcloud Destkop Client.md | 1 + Nextcloud FAQ.md | 5 +- Nextcloud GmbH.md | 3 +- Nextcloud Handbuch.md | 25 +- Nextcloud Hosting.md | 6 +- Nextcloud Marketing.md | 6 +- Nextcloud Office Routing.md | 5 +- Nextcloud Passwords.md | 3 +- Nextcloud Troubleshooting.md | 7 +- Nextcloud Upgrade.md | 15 +- Nextcloud.md | 4 +- Nginx Troubleshooting.md | 3 +- Nginx.md | 2 +- Nine.md | 2 +- Nix.md | 8 +- OAuth.md | 3 +- OCA.md | 1 + OPNSense.md | 3 +- OPTEX Treuhand AG.md | 5 +- OTP Auth.md | 3 +- OWASP-Sicherheitslücken.md | 2 +- Obsidian Handbuch.md | 5 +- Obsidian Web Clipper.md | 1 + Obsidian.md | 11 +- Odoo 15 und die Odoo Partner Days.md | 4 +- Odoo 16 - Ein Meilenstein.md | 5 +- Odoo App Abwesenheitszeiten.md | 1 + Odoo App Anwesenheitszeiten.md | 3 +- Odoo App Barcode.md | 27 +- Odoo App Budget.md | 1 + ... App Engineering & Lifecycle Management.md | 18 +- Odoo App Fertigung Tabletansicht.md | 5 +- Odoo App Fertigung.md | 5 +- Odoo App Finanzen.md | 4 +- Odoo App Kalender.md | 17 +- Odoo App Kostenrechnung.md | 30 +- Odoo App Lager.md | 4 +- Odoo App Lohnabrechnung.md | 7 +- Odoo App Management System.md | 3 +- Odoo App Order Positions.md | 9 +- Odoo App PDM.md | 5 +- Odoo App PoS Hardware.md | 3 +- Odoo App PoS.md | 5 +- Odoo App Product Lifecycle Management.md | 7 +- Odoo App Projekt.md | 19 +- Odoo App Verkauf.md | 5 +- Odoo App Website.md | 3 +- Odoo App eCommerce.md | 33 +- Odoo Apps.md | 29 +- Odoo Assets.md | 5 +- Odoo Brand Assets.md | 1 + Odoo Buchhaltung Expert%in.md | 1 + Odoo Build - Create an OCA module.md | 5 +- Odoo Build Troubleshooting.md | 6 +- Odoo Build.md | 5 +- Odoo Checklisten.md | 10 +- Odoo Community Apps.md | 6 +- Odoo Community Association.md | 3 +- Odoo Community Edition.md | 3 +- Odoo Community Upgrade.md | 5 +- Odoo Connector.md | 3 +- Odoo Continuous Delivery.md | 31 +- ...ing ohne unvorhergesehene Upgradekosten.md | 3 +- Odoo Demodaten.md | 5 +- Odoo Demoumgebung.md | 3 +- Odoo Developer Tutorials.md | 9 +- Odoo Development Guidelines.md | 4 +- Odoo Development Workflow.md | 2 +- Odoo Documents - Nextcloud.md | 176 +- Odoo Drucken.md | 21 +- Odoo E-Mail Integration.md | 11 +- Odoo Editionen.md | 3 +- Odoo Eigenentwicklungen.md | 45 +- Odoo Email Konfiguration.md | 15 +- Odoo Enterprise Edition.md | 5 +- Odoo Enterprise Upgrade.md | 1 + Odoo Enterprise.md | 5 +- Odoo Entwickler%in.md | 1 + Odoo Entwicklermodus.md | 3 +- Odoo Entwicklungsumgebung.md | 11 +- Odoo Experience 2021.md | 10 +- Odoo FAQ.md | 5 +- Odoo Finanzen Treuhänder.md | 5 +- Odoo Hosting - Off-Premise.md | 7 +- Odoo Hosting - On-Premise.md | 12 +- Odoo Hosting - Online.md | 2 +- Odoo Hosting.md | 31 +- Odoo Implementation Skilltree.md | 2 +- Odoo Kontakt.md | 3 +- Odoo Lifecycle.md | 7 +- Odoo Lizenzierung, Hosting und Upgrade.md | 2 +- Odoo Login Integration.md | 16 +- Odoo Mailgate.md | 3 +- Odoo Management System Changelog.md | 20 +- Odoo Master Password.md | 5 +- Odoo Mint System.md | 5 +- Odoo Mobile App.md | 2 +- Odoo Modul.md | 1 + Odoo Module Test Instructions.md | 7 +- Odoo Module Testing.md | 3 +- Odoo Monitoring mit Prometheus und Grafana.md | 2 +- Odoo Nextcloud Filestore.md | 21 +- Odoo On-Premise Checkliste.md | 114 +- Odoo Online.md | 4 +- Odoo OpenUpgrade from 13.0 to 14.0.md | 31 +- Odoo OpenUpgrade from 14.0 to 15.0.md | 5 +- Odoo PaaS.md | 7 +- Odoo Produktionsumgebung.md | 1 + Odoo Python Scripts.md | 22 +- Odoo Revisionen.md | 3 +- Odoo S.A..md | 7 +- Odoo SQL Scripts.md | 5 +- Odoo Saferpay App.md | 6 +- Odoo Schulung Finanzen.md | 30 +- Odoo Schulung.md | 3 +- Odoo Scripts.md | 7 +- Odoo Security Advisory.md | 1 + Odoo Security.md | 2 +- Odoo Sicherheit.md | 3 +- Odoo Snippets.md | 1 + Odoo Studio - Konvertierung zu Odoo Modul.md | 27 +- Odoo Studio.md | 7 +- Odoo Subscription.md | 5 +- Odoo Testumgebung.md | 3 +- Odoo Troubleshooting.md | 8 +- Odoo Umgebungen.md | 3 +- Odoo Update.md | 1 + Odoo Upgrade FAQ.md | 4 +- Odoo Upgrade Service.md | 2 +- Odoo Upgrade.md | 55 +- Odoo Wartung.md | 3 +- Odoo Webshop Saferpay Checkliste.md | 2 +- Odoo Webshop.md | 3 +- Odoo Website CSS.md | 18 +- Odoo Wiki.md | 4 +- Odoo Zeiterfassung.md | 9 +- Odoo Zertifizierung.md | 7 +- Odoo ist kein ERP-System.md | 1 + Odoo mit ihrer Bank verbinden.md | 3 +- Odoo-Projekte.md | 135 +- Odoo-Release.md | 5 +- Odoo.md | 56 +- Odoo.sh Entwicklung.md | 36 +- Odoo.sh Projekte.md | 7 +- Odoo.sh Upgrade Script Module.md | 6 +- Odoo.sh Upgrade.md | 9 +- Odoo.sh.md | 5 +- Offer Template.md | 8 +- Office 365 Exchange für Odoo konfigurieren.md | 32 +- Office Open XML.md | 5 +- Oh-My-Zsh.md | 1 + OmniaSolutions.md | 2 +- One Time Password Authentication.md | 5 +- OnlyOffice.md | 2 +- Open Broadcast Software.md | 6 +- Open Sans.md | 5 +- Open Service Broker API.md | 3 +- Open Source Expert.md | 15 +- Open Source Software = Sicherheit.md | 9 +- Open Source Software.md | 3 +- Open Source.md | 5 +- OpenEduca.md | 3 +- OpenShift.md | 3 +- OpenUpgrade Odoo XX.0.md | 3 +- OpenUpgrade.md | 4 +- OpenVPN Cheatsheet.md | 10 +- OpenVPN Handbook.md | 2 +- OpenVPN.md | 10 +- Organisation.md | 4 +- Paradigmenwechsel im Umgang mit Daten.md | 6 +- Partner.md | 28 +- Passwortmanager.md | 2 +- Payrexx.md | 2 +- Pendenzen.md | 7 +- Personal.md | 7 +- Phase Abonnements.md | 26 +- Phase Abrechnung.md | 27 +- Phase Abwesenheit.md | 29 +- Phase Anforderungsanalyse.md | 35 +- Phase Anwesenheit.md | 15 +- Phase Aufnahme Assets.md | 67 +- Phase Aufwand.md | 20 +- Phase Aussendienst.md | 9 +- Phase Backstage Hosting.md | 11 +- Phase Build-Umgebung bereitstellen.md | 9 +- Phase Coaching Odoo Entwicklung.md | 4 +- Phase Continuos Delivery.md | 9 +- Phase Datenmigration.md | 11 +- Phase Dialog.md | 19 +- Phase E-Mail-Marketing.md | 21 +- Phase Einkauf.md | 11 +- Phase Entwicklung Ansible Rollen.md | 15 +- Phase Entwicklung Website Theme.md | 11 +- Phase Fertigung.md | 19 +- Phase Finanzen Budget.md | 21 +- Phase Finanzen Vermögensverwaltung.md | 19 +- Phase Finanzen.md | 82 +- Phase Frappe Hosting.md | 15 +- Phase Gap-Analyse.md | 11 +- Phase Go-Live.md | 13 +- Phase Hosting Initialisierung.md | 11 +- Phase Inbetriebnahme Hardware.md | 4 +- Phase Inventur.md | 5 +- Phase Keycloak Hosting.md | 15 +- Phase Kick-Off.md | 23 +- Phase Knowledge.md | 24 +- Phase Kontakte.md | 29 +- Phase Kubernetes Cluster.md | 3 +- Phase Kundendienst.md | 24 +- Phase Kundenverwaltung.md | 30 +- Phase Lager.md | 27 +- Phase Login.md | 13 +- Phase Matomo Hosting.md | 13 +- Phase Microsoft Login.md | 11 +- Phase Migration Container.md | 11 +- Phase Moodle Hosting.md | 15 +- Phase Odoo Berichte.md | 21 +- Phase Odoo Demoumgebung.md | 11 +- Phase Odoo Entwicklung Extern.md | 7 +- Phase Odoo Entwicklung.md | 11 +- Phase Odoo Initialisierung.md | 4 +- Phase Odoo Installation.md | 15 +- Phase Odoo Integration.md | 9 +- Phase Odoo Proof of Concept.md | 14 +- Phase Odoo Transfer.md | 9 +- Phase Odoo Upgrade.md | 11 +- Phase Personal.md | 27 +- Phase Personalbeschaffung.md | 19 +- Phase Personalbrechnung.md | 27 +- Phase Plannung.md | 17 +- Phase PoS.md | 14 +- Phase Produkte.md | 22 +- Phase Produktionsplanung.md | 14 +- Phase Projekt.md | 11 +- Phase Projekteingabe.md | 11 +- Phase Projektmanagement.md | 9 +- Phase Projektplanung.md | 11 +- Phase Proof of Concept.md | 9 +- Phase Roadmap.md | 18 +- Phase Schulung.md | 7 +- Phase Server Bereitstellung.md | 9 +- Phase Social Login.md | 11 +- Phase Social Marketing.md | 21 +- Phase Softwareentwicklung.md | 7 +- Phase Softwareevaluation.md | 11 +- Phase Terminal Zeiterfassung.md | 11 +- Phase Umfragen.md | 43 +- Phase Verkauf.md | 15 +- Phase Versand.md | 6 +- Phase Wartung.md | 9 +- Phase Webshop.md | 25 +- Phase Website Blog.md | 11 +- Phase Website Event.md | 11 +- Phase Website Forum.md | 9 +- Phase Website Inhalte.md | 13 +- Phase Website.md | 28 +- Phase Wordpress Hosting.md | 15 +- Phase Zeiterfassung.md | 25 +- Phasen.base.md | 172 +- Phasen.md | 4 +- Philosophie.md | 9 +- Plausible.md | 3 +- Playbook Upgrade Odoo XX.0.md | 3 +- Playbook Upgrade Odoo.sh XX.0.md | 2 +- Policy Project Management.md | 17 +- Pop_OS.md | 3 +- PostgreSQL Upgrade.md | 3 +- PostgreSQL.md | 1 + Problemanalyse Support.md | 16 +- Problematik der IT-Monokultur.md | 8 +- Produktentwicklung.md | 3 +- Produktive Umgebungen.md | 28 +- Projektarbeit.md | 22 +- Projektmanagement.md | 5 +- Projektphasen.md | 3 +- Prometheus.md | 5 +- Proof of Concept.md | 4 +- Proxmox.md | 3 +- Prozessdokumentation.md | 3 +- ...se Akquise - Analyse Odoo Customization.md | 12 +- Prozesse Akquise - Anforderungsanalyse.md | 16 +- Prozesse Akquise - Angebot erstellen.md | 37 +- Prozesse Akquise - Kontaktaufnahme.md | 8 +- Prozesse Akquise - Konzept erstellen.md | 18 +- ...e Akquise - Odoo Testumgebung erstellen.md | 47 +- Prozesse Akquise - Präsentation.md | 20 +- Prozesse Akquise - Qualifikation.md | 19 +- Prozesse Akquise - Workshop Gap-Analyse.md | 19 +- Prozesse Akquise.md | 19 +- Prozesse Beratung - Aufnahme Assets.md | 13 +- Prozesse Beratung - Optimierung.md | 3 +- Prozesse Beratung.md | 8 +- ...entenmanagement - Dokumente archivieren.md | 6 +- Prozesse Dokumentenmanagement.md | 3 +- Prozesse Finanzen - Ausgangsrechnungen.md | 57 +- Prozesse Finanzen - Ausgleich.md | 19 +- Prozesse Finanzen - Buchhaltung.md | 12 +- Prozesse Finanzen - Eingangsrechnungen.md | 13 +- Prozesse Finanzen - Jahresabschluss.md | 15 +- Prozesse Finanzen - Kostenrechnung.md | 12 +- ...sse Finanzen - Mehrwertsteuerabrechnung.md | 37 +- Prozesse Finanzen - Personalabrechnung.md | 43 +- Prozesse Finanzen - Produkt erfassen.md | 31 +- Prozesse Finanzen - Spesenabrechnung.md | 18 +- Prozesse Finanzen - Verträge.md | 11 +- Prozesse Finanzen.md | 23 +- Prozesse Hardware - Terminal Zeiterfassung.md | 25 +- Prozesse Hardware.md | 3 +- ...astruktur - BigBlueButton bereitstellen.md | 11 +- ... Infrastruktur - DNS-Einträge erstellen.md | 12 +- Prozesse Infrastruktur - DNS-Verwaltung.md | 23 +- ...sse Infrastruktur - Deinstallation Odoo.md | 13 +- ... Infrastruktur - Innernet bereitstellen.md | 12 +- ...frastruktur - Installation Raspberry Pi.md | 69 +- ...e Infrastruktur - Linux Server Patching.md | 25 +- ...sse Infrastruktur - Mail-Account Intern.md | 17 +- ...esse Infrastruktur - Mail-Account Kunde.md | 7 +- ...se Infrastruktur - Moodle bereitstellen.md | 7 +- ...Infrastruktur - Nextcloud bereitstellen.md | 5 +- ...sse Infrastruktur - Nextcloud bestellen.md | 14 +- Prozesse Infrastruktur - Nextcloud.md | 6 +- Prozesse Infrastruktur - OS Migration.md | 30 +- ...esse Infrastruktur - Odoo bereitstellen.md | 9 +- Prozesse Infrastruktur - Odoo bestellen.md | 33 +- ...nfrastruktur - Office 365 bereitstellen.md | 5 +- ...se Infrastruktur - Passwörter verwalten.md | 25 +- Prozesse Infrastruktur - Server Monitoring.md | 10 +- ...se Infrastruktur - Server bereitstellen.md | 31 +- Prozesse Infrastruktur - Server bestellen.md | 13 +- Prozesse Infrastruktur - Server entfernen.md | 27 +- ...nfrastruktur - Server-Zugriff verwalten.md | 30 +- Prozesse Infrastruktur - Serverwartung.md | 5 +- Prozesse Infrastruktur - Upgrade Odoo.md | 27 +- Prozesse Infrastruktur - Upgrade Odoo.sh.md | 19 +- Prozesse Infrastruktur.md | 53 +- Prozesse Marketing - Newsletter und Blog.md | 23 +- Prozesse Marketing - Website.md | 19 +- Prozesse Marketing.md | 5 +- ...- Von Microsoft zu Infomaniak migrieren.md | 55 +- Prozesse Migration.md | 3 +- Prozesse Nextcloud - Desktop Client.md | 11 +- ...oud - Produktionsumgebung initalisieren.md | 17 +- Prozesse Nextcloud - Upgrade.md | 15 +- Prozesse Nextcloud.md | 7 +- Prozesse Odoo - App Abonnements.md | 7 +- Prozesse Odoo - App Abwesenheit.md | 9 +- Prozesse Odoo - App Anwesenheit.md | 9 +- Prozesse Odoo - App Aufwand.md | 9 +- Prozesse Odoo - App Aussendienst.md | 9 +- Prozesse Odoo - App Bewertungen.md | 5 +- Prozesse Odoo - App CRM.md | 5 +- Prozesse Odoo - App Dashboard.md | 2 + Prozesse Odoo - App Data Cleaning.md | 9 +- Prozesse Odoo - App Dokumente.md | 24 +- Prozesse Odoo - App Einkauf.md | 7 +- Prozesse Odoo - App Einstellungen.md | 5 +- Prozesse Odoo - App Fertigung.md | 14 +- Prozesse Odoo - App Finanzen.md | 49 +- Prozesse Odoo - App IoT.md | 7 +- Prozesse Odoo - App Kontakte.md | 5 +- Prozesse Odoo - App Kundendienst.md | 11 +- Prozesse Odoo - App Kundenverwaltung.md | 5 +- Prozesse Odoo - App Lager.md | 18 +- Prozesse Odoo - App Odoo Direct Print.md | 12 +- Prozesse Odoo - App PLM.md | 4 +- Prozesse Odoo - App Personal.md | 5 +- Prozesse Odoo - App Personalabrechnung.md | 32 +- Prozesse Odoo - App Point of Sale.md | 5 +- Prozesse Odoo - App Projekt.md | 35 +- Prozesse Odoo - App Qualität.md | 5 +- Prozesse Odoo - App Reseller.md | 7 +- Prozesse Odoo - App Strichcode.md | 9 +- Prozesse Odoo - App Studio.md | 2 + Prozesse Odoo - App Umfrage.md | 5 +- Prozesse Odoo - App Verkäufe.md | 29 +- Prozesse Odoo - App Wartung.md | 2 + Prozesse Odoo - App Website.md | 33 +- Prozesse Odoo - App Zeiterfassung.md | 7 +- Prozesse Odoo - App eLearning.md | 7 +- Prozesse Odoo - Datenmigration.md | 8 +- Prozesse Odoo - Demoumgebung bereitstellen.md | 33 +- Prozesse Odoo - Entwicklung.md | 1 + Prozesse Odoo - Lizenzierung.md | 21 +- Prozesse Odoo - Modul Migration.md | 65 +- ...doo - Produktionsumgebung bereitstellen.md | 37 +- Prozesse Odoo - Revision.md | 25 +- Prozesse Odoo - Snippets.md | 27 +- Prozesse Odoo - Testumgebung bereitstellen.md | 3 +- Prozesse Odoo - Upgrade Angebot.md | 13 +- Prozesse Odoo - Upgrade Implementation.md | 47 +- ...e Odoo - Upgrade-Umgebung bereitstellen.md | 14 +- Prozesse Odoo.md | 93 +- Prozesse Odoo.sh - Modul Migration.md | 21 +- Prozesse Odoo.sh - Projekt bereitstellen.md | 19 +- Prozesse Odoo.sh - Projekt entwickeln.md | 35 +- Prozesse Odoo.sh - Upgrade Implementation.md | 13 +- Prozesse Odoo.sh.md | 9 +- Prozesse Personal - Bewerbung.md | 11 +- Prozesse Personal - Offboarding.md | 4 +- Prozesse Personal - Onboarding.md | 63 +- Prozesse Personal.md | 7 +- Prozesse Projektmanagement - Archivierung.md | 14 +- Prozesse Projektmanagement - Aufgaben.md | 3 +- ...e Projektmanagement - Aufwandsschätzung.md | 8 +- ...rojektmanagement - Business Requirement.md | 7 +- Prozesse Projektmanagement - Freelancer%In.md | 20 +- Prozesse Projektmanagement - Konzept.md | 7 +- Prozesse Projektmanagement - Odoo.md | 18 +- ...e Projektmanagement - Projektdefinition.md | 23 +- ...e Projektmanagement - Ressourcenplanung.md | 11 +- Prozesse Projektmanagement - Zeiterfassung.md | 3 +- Prozesse Projektmanagement.md | 21 +- Prozesse Sicherheit - Assessment.md | 3 +- ...sse Sicherheit - Odoo Security Advisory.md | 11 +- Prozesse Sicherheit.md | 6 +- ...se Softwareentwicklung - Git-Repository.md | 26 +- Prozesse Softwareentwicklung - Odoo Image.md | 11 +- Prozesse Softwareentwicklung - Odoo Module.md | 22 +- ...eentwicklung - Technische Spezifikation.md | 11 +- Prozesse Softwareentwicklung.md | 9 +- Prozesse Support - Benachrichtigungen.md | 11 +- Prozesse Support - Ticket.md | 3 +- Prozesse Support.md | 6 +- Prozesse Wiki - Mitarbeit.md | 24 +- Prozesse Wiki.md | 3 +- Prozesse.base.md | 295 +- Prozesse.md | 42 +- Putty.md | 45 +- Qwen Coder.md | 1 + README.md | 5 +- Raspberry Pi.md | 3 +- Referenz.md | 15 +- Repository.md | 3 +- Ressourcenplanung.md | 2 +- Restic - Wiederherstellung von Backups.md | 4 +- Restic Handbuch.md | 3 +- Restic Troubleshooting.md | 4 +- Restic.md | 5 +- Richtlinie - Arbeitszeit.md | 2 + Richtlinie - Aufgabenverwaltung.md | 33 +- Richtlinie - Calc Dokumente.md | 11 +- Richtlinie - Code Sharing.md | 4 +- Richtlinie - DMS.md | 91 +- Richtlinie - Datenschutz.md | 3 +- Richtlinie - E-Mail.md | 3 +- Richtlinie - Finanzen.md | 47 +- Richtlinie - Kalender.md | 3 +- Richtlinie - Kollaboration.md | 9 +- Richtlinie - Kommunikation.md | 3 +- Richtlinie - Konferenz.md | 3 +- Richtlinie - Kontakte.md | 1 + Richtlinie - Namenskonventionen.md | 9 +- Richtlinie - Obsidian.md | 11 +- Richtlinie - Odoo Modulentwicklung.md | 3 +- Richtlinie - Odoo Snippet.md | 13 +- Richtlinie - Passwortmanager.md | 11 +- Richtlinie - Projektmanagement.md | 4 +- Richtlinie - Smartphone.md | 3 +- Richtlinie - Softwareentwicklung.md | 5 +- Richtlinie - Spesenreglement.md | 1 + Richtlinie - Todos.md | 3 +- Richtlinie - Website.md | 33 +- Richtlinie - Zeiterfassung.md | 7 +- Richtlinien.base.md | 57 +- Richtlinien.md | 51 +- Roadmap.md | 1 + Rollen Projektmanagement.md | 3 +- SBOM.md | 3 +- SMTP-Fehler.md | 3 +- SMTP-Skripte.md | 1 + SPF.md | 5 +- SSH-Zugriff.md | 6 +- SSH.md | 3 +- SaaS.md | 4 +- Saferpay.md | 4 +- Saldosteuersätze.md | 4 +- Scalable Kubernetes Service.md | 3 +- Security Audit.md | 3 +- Security.md | 13 +- Semantic Versioning.md | 5 +- ...Applikationen mit Ansible bereitstellen.md | 21 +- Server.md | 3 +- Servers.md | 1 + Service Accounts.md | 11 +- Service Level Agreement Hosting.md | 49 +- Services.md | 6 +- Sicherheit.md | 5 +- Sidebery.md | 7 +- Signaturen.md | 5 +- Skripte.md | 9 +- Slides.md | 11 +- Social Media.md | 7 +- Sociocracy 3.0.md | 4 +- Software Engineering.md | 1 + Softwareentwicklung.md | 5 +- Softwareentwicklungsprojekte.md | 17 +- Spam reduzieren mit SPF, DKIM und DMARC.md | 3 +- Spam.md | 9 +- Specification Git Kubernetes.md | 33 +- Specification Open Service Broker Client.md | 3 +- Specification Social Mastodon.md | 2 +- ...on Subscription OCA Open Service Broker.md | 2 +- Specification Uri Cloud.md | 8 +- Specification Website Sale Helm.md | 37 +- ...ebsite Sale Kubernetes Subscription OCA.md | 25 +- ...cation Website Sale Open Service Broker.md | 3 +- Spesenreglement.md | 7 +- Spezifikation Mint Cloud.md | 19 +- Spezifikationen.md | 13 +- Standard für Dokumentationssysteme.md | 6 +- Stellenprofile.md | 14 +- Steuern.md | 6 +- Steuerungskreis.md | 24 +- Storage Bucket.md | 3 +- Strategien.md | 2 +- Struktur Kostenstellen.md | 31 +- Subunternehmen.md | 3 +- Subunternehmer.md | 4 +- Success Stories.md | 5 +- Success Story Kleinbrauerei Stiärbiär AG.md | 5 +- Support Engineer.md | 13 +- Support.md | 5 +- Supporter%in.md | 1 + Supportvertrag.md | 55 +- Synchronisations-Meeting.md | 3 +- Syscoon GmbH.md | 1 + System Implementation.md | 5 +- ...-Überwachung mit Prometheus und Grafana.md | 5 +- System76.md | 5 +- Systemadministrator%in.md | 1 + TOC.md | 2 +- TOTP Auth.md | 1 + Tags.md | 63 +- Talend Open Studio.md | 5 +- Technischer Support.md | 3 +- Technologien.md | 25 +- Telefonie.md | 1 + Template Issue.md | 11 +- Template Meeting.md | 17 +- Template Report on Odoo Customization.md | 6 +- Template Weekly.md | 23 +- Template Worklog.md | 8 +- Terminal Zeiterfassung.md | 9 +- Terminal.md | 3 +- Terraform mit Hetzner.md | 13 +- Terraform.md | 5 +- Test FDW with Odoo.md | 4 +- Test Mint System.md | 3 +- Test Odoo Mail Flow.md | 43 +- Testing Upgrade Odoo XX.0.md | 6 +- Testumgebungen.md | 1 + The Odoo Ecosystem.md | 111 +- Thunderbird Appointment.md | 3 +- Thunderbird.md | 6 +- Todos.md | 5 +- Tools.md | 3 +- Troubleshooting Template.md | 6 +- Turn-Server.md | 6 +- Tutorial - Create App with Odoo Studio.md | 62 +- ...ial - Customize report with Odoo Studio.md | 2 +- Tutorial - Extend the Odoo product model.md | 27 +- Tutorial - Install Odoo Studio.md | 43 +- Tutorial.md | 3 +- Twint.md | 11 +- URec-Team.md | 5 +- Ubuntu.md | 5 +- Ulrich Kilian.md | 3 +- Unix Philosophy.md | 13 +- Unsere fast neue Website.md | 4 +- Unsupported Modules.md | 15 +- Unternehmensentwicklung.md | 23 +- Unternehmensziele 2022.md | 9 +- Unternehmensziele 2023.md | 7 +- Unternehmensziele 2024.md | 29 +- Unternehmensziele 2025.md | 3 +- Update custom Odoo module.md | 10 +- Update.md | 3 +- Upgrade.md | 3 +- Uri Cloud.md | 7 +- VMware.md | 3 +- VSCode.md | 5 +- VSCodium.md | 17 +- VSHN AG.md | 3 +- VSHN Application Marketplace.md | 2 +- VSHN Central Control Plane.md | 2 +- Ventor PRO.md | 3 +- Verbesserungsvorschläge.md | 3 +- Vercel.md | 6 +- Verkauf.md | 1 + Virtualisierung.md | 3 +- Vision.md | 17 +- Visual Studio Code.md | 13 +- Von Bexio nach Odoo.md | 15 +- Von Microsoft zu Infomaniak migrieren.md | 32 +- Vorgehensmodell Beratungsprojekte.md | 7 +- Vorgehensmodell Hosting.md | 6 +- Vorgehensmodell Odoo Projekte.md | 85 +- Vorgehensmodell Softwareentwicklung.md | 3 +- Vorgehensmodell.md | 3 +- Vorlage Anforderungen.md | 3 + Vorlage Anforderungsanalyse.md | 26 +- Vorlage Angebot.md | 27 +- Vorlage Bugs.md | 3 + Vorlage Cashflow.md | 1 + Vorlage Datenmigration.md | 12 +- Vorlage Gap-Analyse.md | 46 +- Vorlage Interviews Gap-Analyse.md | 6 +- Vorlage Konzept.md | 57 +- Vorlage Phase.md | 20 +- Vorlage Prozesse Odoo.md | 3 +- Vorlage Spezifikation Modul.md | 54 +- Vorlage Test Cases.md | 9 +- Vorlage Troubleshooting.md | 7 +- Vorlage Use Cases.md | 4 +- Vorlage Zusatzanforderungen.md | 31 +- Vorlagen.md | 1 + Vuepress.md | 3 +- Waagen.md | 5 +- Wartungsauftrag.md | 15 +- Wartungsvertrag.md | 15 +- Wasmtime.md | 3 +- Web Analytics.md | 5 +- WebAssembly.md | 3 +- Webapplikation.md | 5 +- Website.md | 3 +- Websites mit Odoo erstellen.md | 10 +- Weekly-Meeting.md | 9 +- Weiterbildung.md | 5 +- Wiki Mint System.md | 3 +- Wir sind Odoo Silberpartner.md | 2 +- Wireguard.md | 1 + Wirkungsräume.md | 3 +- Wissensdomäne.md | 5 +- Wissensmanager%in.md | 1 + ...infache Anpassungen für Odoo entwickeln.md | 36 +- Wissentransfer.md | 5 +- Wordpress Handbook.md | 18 +- Wordpress Hosting.md | 10 +- Wordpress.md | 3 +- Workplace Hardware.md | 5 +- Workplace Software.md | 1 + Workshop Gap-Analyse.md | 21 +- Workshops.md | 2 +- Worldline.md | 4 +- XPath.md | 3 +- Zahlen zum Unternehmen.md | 2 +- Zellj.md | 3 +- Zero-Trust-Architektur.md | 3 +- Ziele.md | 9 +- Zsh.md | 1 + Zusatzanforderungen.md | 5 +- attachments/Beispiel Excalidraw.excalidraw.md | 12 +- attachments/Git Base Repo UI.excalidraw.md | 16 +- ...doo Hosting und Lizenzierung.excalidraw.md | 11 +- .../Odoo System Implementation.excalidraw.md | 10 +- .../Specification Sale Helm.excalidraw.md | 13 +- ...Specification Social Mastodo.excalidraw.md | 13 +- autossh.md | 7 +- bpmn.io.md | 3 +- build.js | 1203 +- dbpConcepts GmbH.md | 3 +- diagrams.net.md | 5 +- dotfiles.md | 3 +- eBau.md | 3 +- generate-bases-view.js | 88 +- giordano.ch ag.md | 3 +- hosttech.md | 3 +- inosca.md | 3 +- k3s.md | 3 +- man apt.md | 5 +- man docker.md | 5 +- man git.md | 1 + man gpg.md | 4 +- man netcat.md | 3 +- man psql.md | 2 +- man ripgrep.md | 4 +- man sql.md | 7 +- man.md | 17 +- nivels GmbH.md | 3 +- package.json | 1 + peoplefone.md | 3 +- pgAdmin.md | 3 +- pnpm-lock.yaml | 4454 +- pre-commit.md | 1 + prettier.md | 3 +- pylint.md | 3 +- rustdesk.md | 2 +- task | 5 + terra computer.md | 5 +- tmux.md | 3 +- ungleich GmbH.md | 3 +- vCard.md | 5 +- 1059 files changed, 131217 insertions(+), 11710 deletions(-) create mode 100644 .prettierrc.conf diff --git a/.obsidian/app.json b/.obsidian/app.json index 41abe5ba..3f741a57 100644 --- a/.obsidian/app.json +++ b/.obsidian/app.json @@ -12,14 +12,11 @@ "margin": "0", "downscalePercent": 100 }, - "userIgnoreFilters": [ - "node_modules/", - "src/" - ], + "userIgnoreFilters": ["node_modules/", "src/"], "showInlineTitle": false, "propertiesInDocument": "visible", "vimMode": false, "promptDelete": false, "strictLineBreaks": true, "trashOption": "none" -} \ No newline at end of file +} diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index 0e753e25..3099cc70 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -4,4 +4,4 @@ "obsidian-front-matter-title-plugin", "obsidian-excalidraw-plugin", "emoji-shortcodes" -] \ No newline at end of file +] diff --git a/.obsidian/core-plugins-migration.json b/.obsidian/core-plugins-migration.json index 0f1396ca..afd10a7b 100644 --- a/.obsidian/core-plugins-migration.json +++ b/.obsidian/core-plugins-migration.json @@ -28,4 +28,4 @@ "canvas": true, "bookmarks": true, "properties": false -} \ No newline at end of file +} diff --git a/.obsidian/core-plugins.json b/.obsidian/core-plugins.json index 966fedf4..4df5aaa4 100644 --- a/.obsidian/core-plugins.json +++ b/.obsidian/core-plugins.json @@ -31,4 +31,4 @@ "webviewer": false, "footnotes": false, "bases": true -} \ No newline at end of file +} diff --git a/.obsidian/hotkeys.json b/.obsidian/hotkeys.json index 02e9f878..7b7acd4f 100644 --- a/.obsidian/hotkeys.json +++ b/.obsidian/hotkeys.json @@ -1,11 +1,8 @@ { "file-explorer:reveal-active-file": [ { - "modifiers": [ - "Mod", - "Shift" - ], + "modifiers": ["Mod", "Shift"], "key": "R" } ] -} \ No newline at end of file +} diff --git a/.obsidian/plugins/emoji-shortcodes/data.json b/.obsidian/plugins/emoji-shortcodes/data.json index a269558f..17b5b845 100644 --- a/.obsidian/plugins/emoji-shortcodes/data.json +++ b/.obsidian/plugins/emoji-shortcodes/data.json @@ -10,4 +10,4 @@ ":smile:", ":green_square:" ] -} \ No newline at end of file +} diff --git a/.obsidian/plugins/emoji-shortcodes/main.js b/.obsidian/plugins/emoji-shortcodes/main.js index 79f0417a..ec77b7a3 100644 --- a/.obsidian/plugins/emoji-shortcodes/main.js +++ b/.obsidian/plugins/emoji-shortcodes/main.js @@ -3,33 +3,55 @@ THIS IS A GENERATED/BUNDLED FILE BY ROLLUP if you want to view the source visit the plugins github repository */ -'use strict'; +"use strict"; -var obsidian = require('obsidian'); +var obsidian = require("obsidian"); -/****************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ - -function __awaiter(thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); +/****************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { + return value instanceof P + ? value + : new P(function (resolve) { + resolve(value); + }); + } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + } + function rejected(value) { + try { + step(generator["throw"](value)); + } catch (e) { + reject(e); + } + } + function step(result) { + result.done + ? resolve(result.value) + : adopt(result.value).then(fulfilled, rejected); + } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); } // Generated from: https://api.github.com/emojis @@ -1892,180 +1914,218 @@ const emoji = JSON.parse(`{ }`); class EmojiMarkdownPostProcessor { - static emojiReplace(shortcode, el) { - var _a; - if ((typeof el.tagName === "string") && (el.tagName.indexOf("CODE") !== -1 || el.tagName.indexOf("MJX") !== -1)) { - return false; - } - if (el.hasChildNodes()) { - el.childNodes.forEach((child) => this.emojiReplace(shortcode, child)); - } - else { - el.textContent = el.textContent.replace(shortcode, (_a = emoji[shortcode]) !== null && _a !== void 0 ? _a : shortcode); - } + static emojiReplace(shortcode, el) { + var _a; + if ( + typeof el.tagName === "string" && + (el.tagName.indexOf("CODE") !== -1 || el.tagName.indexOf("MJX") !== -1) + ) { + return false; } + if (el.hasChildNodes()) { + el.childNodes.forEach((child) => this.emojiReplace(shortcode, child)); + } else { + el.textContent = el.textContent.replace( + shortcode, + (_a = emoji[shortcode]) !== null && _a !== void 0 ? _a : shortcode, + ); + } + } } EmojiMarkdownPostProcessor.emojiProcessor = (el) => { - var _a; - (_a = el.innerText.match(/[:][^\s:][^ \n:]*[:]/g)) === null || _a === void 0 ? void 0 : _a.forEach((e) => EmojiMarkdownPostProcessor.emojiReplace(e, el)); + var _a; + (_a = el.innerText.match(/[:][^\s:][^ \n:]*[:]/g)) === null || _a === void 0 + ? void 0 + : _a.forEach((e) => EmojiMarkdownPostProcessor.emojiReplace(e, el)); }; const DEFAULT_SETTINGS = { - immediateReplace: true, - suggester: true, - historyPriority: true, - historyLimit: 100, - history: [], + immediateReplace: true, + suggester: true, + historyPriority: true, + historyLimit: 100, + history: [], }; class EmojiPluginSettingTab extends obsidian.PluginSettingTab { - constructor(app, plugin) { - super(app, plugin); - this.plugin = plugin; - } - display() { - let { containerEl } = this; - containerEl.empty(); - containerEl.createEl('h2', { text: 'Emoji Shortcodes Plugin' }); - new obsidian.Setting(containerEl) - .setName('Immediate Emoji Replace') - .setDesc('If this is turned on, Emoji shortcodes will be immediately replaced after typing. Otherwise they are still stored as a shortcode and you only see the Emoji in Preview Mode.') - .addToggle(cb => { - cb.setValue(this.plugin.settings.immediateReplace) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.immediateReplace = value; + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + let { containerEl } = this; + containerEl.empty(); + containerEl.createEl("h2", { text: "Emoji Shortcodes Plugin" }); + new obsidian.Setting(containerEl) + .setName("Immediate Emoji Replace") + .setDesc( + "If this is turned on, Emoji shortcodes will be immediately replaced after typing. Otherwise they are still stored as a shortcode and you only see the Emoji in Preview Mode.", + ) + .addToggle((cb) => { + cb.setValue(this.plugin.settings.immediateReplace).onChange((value) => + __awaiter(this, void 0, void 0, function* () { + this.plugin.settings.immediateReplace = value; + yield this.plugin.saveSettings(); + }), + ); + }); + new obsidian.Setting(containerEl) + .setName("Emoji Suggester") + .setDesc( + "If this is turned on, a Suggester will appear everytime you type : followed by a letter. This will help you insert Emojis. (Doesn't work on mobile)", + ) + .addToggle((cb) => { + cb.setValue(this.plugin.settings.suggester).onChange((value) => + __awaiter(this, void 0, void 0, function* () { + this.plugin.settings.suggester = value; + yield this.plugin.saveSettings(); + }), + ); + }); + new obsidian.Setting(containerEl) + .setName("Use History Priority") + .setDesc("Suggester gives priority to recently used emoji.") + .addToggle((cb) => { + cb.setValue(this.plugin.settings.historyPriority).onChange((value) => + __awaiter(this, void 0, void 0, function* () { + this.plugin.settings.historyPriority = value; + yield this.plugin.saveSettings(); + this.display(); + }), + ); + }); + if (this.plugin.settings.historyPriority) { + new obsidian.Setting(containerEl) + .setName("History Limit") + .setClass("ES-sub-setting") + .addText((cb) => { + cb.setPlaceholder(String(DEFAULT_SETTINGS.historyLimit)) + .setValue(String(this.plugin.settings.historyLimit)) + .onChange((value) => + __awaiter(this, void 0, void 0, function* () { + this.plugin.settings.historyLimit = + value !== "" ? Number(value) : DEFAULT_SETTINGS.historyLimit; yield this.plugin.saveSettings(); - })); + }), + ); }); - new obsidian.Setting(containerEl) - .setName('Emoji Suggester') - .setDesc('If this is turned on, a Suggester will appear everytime you type : followed by a letter. This will help you insert Emojis. (Doesn\'t work on mobile)') - .addToggle(cb => { - cb.setValue(this.plugin.settings.suggester) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.suggester = value; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName('Use History Priority') - .setDesc('Suggester gives priority to recently used emoji.') - .addToggle(cb => { - cb.setValue(this.plugin.settings.historyPriority) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.historyPriority = value; - yield this.plugin.saveSettings(); - this.display(); - })); - }); - if (this.plugin.settings.historyPriority) { - new obsidian.Setting(containerEl) - .setName('History Limit') - .setClass('ES-sub-setting') - .addText(cb => { - cb.setPlaceholder(String(DEFAULT_SETTINGS.historyLimit)) - .setValue(String(this.plugin.settings.historyLimit)) - .onChange((value) => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.historyLimit = value !== '' ? Number(value) : DEFAULT_SETTINGS.historyLimit; - yield this.plugin.saveSettings(); - })); - }); - new obsidian.Setting(containerEl) - .setName('Clear History') - .setClass('ES-sub-setting') - .addButton(cb => { - cb.setButtonText("Clear") - .onClick(() => __awaiter(this, void 0, void 0, function* () { - this.plugin.settings.history = []; - yield this.plugin.saveSettings(); - })); - }); - } - new obsidian.Setting(containerEl) - .setName('Donate') - .setDesc('If you like this Plugin, consider donating to support continued development:') - .addButton((bt) => { - bt.buttonEl.outerHTML = ``; + new obsidian.Setting(containerEl) + .setName("Clear History") + .setClass("ES-sub-setting") + .addButton((cb) => { + cb.setButtonText("Clear").onClick(() => + __awaiter(this, void 0, void 0, function* () { + this.plugin.settings.history = []; + yield this.plugin.saveSettings(); + }), + ); }); } + new obsidian.Setting(containerEl) + .setName("Donate") + .setDesc( + "If you like this Plugin, consider donating to support continued development:", + ) + .addButton((bt) => { + bt.buttonEl.outerHTML = ``; + }); + } } class EmojiShortcodesPlugin extends obsidian.Plugin { - onload() { - return __awaiter(this, void 0, void 0, function* () { - yield this.loadSettings(); - this.addSettingTab(new EmojiPluginSettingTab(this.app, this)); - this.registerEditorSuggest(new EmojiSuggester(this)); - this.registerMarkdownPostProcessor(EmojiMarkdownPostProcessor.emojiProcessor); - //this.registerMarkdownPostProcessor(DefinitionListPostProcessor.definitionListProcessor); - }); - } - loadSettings() { - return __awaiter(this, void 0, void 0, function* () { - this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData()); - this.updateEmojiList(); - }); - } - saveSettings() { - return __awaiter(this, void 0, void 0, function* () { - yield this.saveData(this.settings); - this.updateEmojiList(); - }); - } - updateEmojiList() { - const set = new Set(this.settings.history); - this.emojiList = [...this.settings.history, ...Object.keys(emoji).filter(e => !set.has(e))]; - } - updateHistory(suggestion) { - if (!this.settings.historyPriority) - return; - const set = new Set([suggestion, ...this.settings.history]); - const history = [...set].slice(0, this.settings.historyLimit); - this.settings = Object.assign(this.settings, { history }); - this.saveSettings(); - } + onload() { + return __awaiter(this, void 0, void 0, function* () { + yield this.loadSettings(); + this.addSettingTab(new EmojiPluginSettingTab(this.app, this)); + this.registerEditorSuggest(new EmojiSuggester(this)); + this.registerMarkdownPostProcessor( + EmojiMarkdownPostProcessor.emojiProcessor, + ); + //this.registerMarkdownPostProcessor(DefinitionListPostProcessor.definitionListProcessor); + }); + } + loadSettings() { + return __awaiter(this, void 0, void 0, function* () { + this.settings = Object.assign( + {}, + DEFAULT_SETTINGS, + yield this.loadData(), + ); + this.updateEmojiList(); + }); + } + saveSettings() { + return __awaiter(this, void 0, void 0, function* () { + yield this.saveData(this.settings); + this.updateEmojiList(); + }); + } + updateEmojiList() { + const set = new Set(this.settings.history); + this.emojiList = [ + ...this.settings.history, + ...Object.keys(emoji).filter((e) => !set.has(e)), + ]; + } + updateHistory(suggestion) { + if (!this.settings.historyPriority) return; + const set = new Set([suggestion, ...this.settings.history]); + const history = [...set].slice(0, this.settings.historyLimit); + this.settings = Object.assign(this.settings, { history }); + this.saveSettings(); + } } class EmojiSuggester extends obsidian.EditorSuggest { - constructor(plugin) { - super(plugin.app); - this.plugin = plugin; + constructor(plugin) { + super(plugin.app); + this.plugin = plugin; + } + onTrigger(cursor, editor, _) { + var _a; + if (this.plugin.settings.suggester) { + const sub = editor.getLine(cursor.line).substring(0, cursor.ch); + const match = + (_a = sub.match(/:\S+$/)) === null || _a === void 0 + ? void 0 + : _a.first(); + if (match) { + return { + end: cursor, + start: { + ch: sub.lastIndexOf(match), + line: cursor.line, + }, + query: match, + }; + } } - onTrigger(cursor, editor, _) { - var _a; - if (this.plugin.settings.suggester) { - const sub = editor.getLine(cursor.line).substring(0, cursor.ch); - const match = (_a = sub.match(/:\S+$/)) === null || _a === void 0 ? void 0 : _a.first(); - if (match) { - return { - end: cursor, - start: { - ch: sub.lastIndexOf(match), - line: cursor.line, - }, - query: match, - }; - } - } - return null; - } - getSuggestions(context) { - let emoji_query = context.query.replace(':', '').toLowerCase(); - return this.plugin.emojiList.filter(p => p.includes(emoji_query)); - } - renderSuggestion(suggestion, el) { - const outer = el.createDiv({ cls: "ES-suggester-container" }); - outer.createDiv({ cls: "ES-shortcode" }).setText(suggestion.replace(/:/g, "")); - //@ts-expect-error - outer.createDiv({ cls: "ES-emoji" }).setText(emoji[suggestion]); - } - selectSuggestion(suggestion) { - if (this.context) { - this.context.editor.replaceRange(this.plugin.settings.immediateReplace ? emoji[suggestion] : `${suggestion} `, this.context.start, this.context.end); - this.plugin.updateHistory(suggestion); - } + return null; + } + getSuggestions(context) { + let emoji_query = context.query.replace(":", "").toLowerCase(); + return this.plugin.emojiList.filter((p) => p.includes(emoji_query)); + } + renderSuggestion(suggestion, el) { + const outer = el.createDiv({ cls: "ES-suggester-container" }); + outer + .createDiv({ cls: "ES-shortcode" }) + .setText(suggestion.replace(/:/g, "")); + //@ts-expect-error + outer.createDiv({ cls: "ES-emoji" }).setText(emoji[suggestion]); + } + selectSuggestion(suggestion) { + if (this.context) { + this.context.editor.replaceRange( + this.plugin.settings.immediateReplace + ? emoji[suggestion] + : `${suggestion} `, + this.context.start, + this.context.end, + ); + this.plugin.updateHistory(suggestion); } + } } module.exports = EmojiShortcodesPlugin; - -/* nosourcemap */ \ No newline at end of file +/* nosourcemap */ diff --git a/.obsidian/plugins/emoji-shortcodes/manifest.json b/.obsidian/plugins/emoji-shortcodes/manifest.json index 432f6235..140114da 100644 --- a/.obsidian/plugins/emoji-shortcodes/manifest.json +++ b/.obsidian/plugins/emoji-shortcodes/manifest.json @@ -1,11 +1,11 @@ -{ - "id": "emoji-shortcodes", - "name": "Emoji Shortcodes", - "version": "2.2.0", - "minAppVersion": "1.0.0", - "description": "This Plugin enables the use of Markdown Emoji Shortcodes :smile:", - "author": "phibr0", - "authorUrl": "https://github.com/phibr0", - "isDesktopOnly": false, - "fundingUrl": "https://ko-fi.com/phibr0" -} +{ + "id": "emoji-shortcodes", + "name": "Emoji Shortcodes", + "version": "2.2.0", + "minAppVersion": "1.0.0", + "description": "This Plugin enables the use of Markdown Emoji Shortcodes :smile:", + "author": "phibr0", + "authorUrl": "https://github.com/phibr0", + "isDesktopOnly": false, + "fundingUrl": "https://ko-fi.com/phibr0" +} diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json index a4082108..bf1f6126 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json @@ -768,21 +768,15 @@ "rank": "Bronze", "modifierKeyOverrides": [ { - "modifiers": [ - "Mod" - ], + "modifiers": ["Mod"], "key": "Enter" }, { - "modifiers": [ - "Mod" - ], + "modifiers": ["Mod"], "key": "k" }, { - "modifiers": [ - "Mod" - ], + "modifiers": ["Mod"], "key": "G" } ], @@ -796,4 +790,4 @@ "alignment": "center", "margin": "normal" } -} \ No newline at end of file +} diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/main.js b/.obsidian/plugins/obsidian-excalidraw-plugin/main.js index 80a6c552..9fce9b28 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/main.js +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/main.js @@ -1,10 +1,54093 @@ -"use strict";var obsidian_module=require("obsidian"),state=require("@codemirror/state"),view=require("@codemirror/view");const INITIAL_TIMESTAMP=Date.now();var LZString=function(){var r=String.fromCharCode,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$",e={};function t(r,o){if(!e[r]){e[r]={};for(var n=0;n>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null==o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;e>=1}else{for(t=1,e=0;e>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[c]}else for(t=s[c],e=0;e>=1;0==--l&&(l=Math.pow(2,h),h++),s[p]=f++,c=String(a)}if(""!==c){if(Object.prototype.hasOwnProperty.call(u,c)){if(c.charCodeAt(0)<256){for(e=0;e>=1}else{for(t=1,e=0;e>=1}0==--l&&(l=Math.pow(2,h),h++),delete u[c]}else for(t=s[c],e=0;e>=1;0==--l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;e>=1;for(;;){if(m<<=1,v==o-1){d.push(n(m));break}v++}return d.join("")},decompress:function(r){return null==r?"":""==r?null:i._decompress(r.length,32768,function(o){return r.charCodeAt(o)})},_decompress:function(o,n,e){var t,i,s,u,a,p,c,l=[],f=4,h=4,d=3,m="",v=[],g={val:e(0),position:n,index:1};for(t=0;t<3;t+=1)l[t]=t;for(s=0,a=Math.pow(2,2),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;switch(s){case 0:for(s=0,a=Math.pow(2,8),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;c=r(s);break;case 1:for(s=0,a=Math.pow(2,16),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;c=r(s);break;case 2:return""}for(l[3]=c,i=c,v.push(c);;){if(g.index>o)return"";for(s=0,a=Math.pow(2,d),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;switch(c=s){case 0:for(s=0,a=Math.pow(2,8),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;l[h++]=r(s),c=h-1,f--;break;case 1:for(s=0,a=Math.pow(2,16),p=1;p!=a;)u=g.val&g.position,g.position>>=1,0==g.position&&(g.position=n,g.val=e(g.index++)),s|=(u>0?1:0)*p,p<<=1;l[h++]=r(s),c=h-1,f--;break;case 2:return v.join("")}if(0==f&&(f=Math.pow(2,d),d++),l[c])m=l[c];else{if(c!==h)return null;m=i+i.charAt(0)}v.push(m),l[h++]=i+m.charAt(0),i=m,0==--f&&(f=Math.pow(2,d),d++)}}};return i}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module?module.exports=LZString:"undefined"!=typeof angular&&null!=angular&&angular.module("LZString",[]).factory("LZString",function(){return LZString}); +"use strict"; +var obsidian_module = require("obsidian"), + state = require("@codemirror/state"), + view = require("@codemirror/view"); +const INITIAL_TIMESTAMP = Date.now(); +var LZString = (function () { + var r = String.fromCharCode, + o = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=", + n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$", + e = {}; + function t(r, o) { + if (!e[r]) { + e[r] = {}; + for (var n = 0; n < r.length; n++) e[r][r.charAt(n)] = n; + } + return e[r][o]; + } + var i = { + compressToBase64: function (r) { + if (null == r) return ""; + var n = i._compress(r, 6, function (r) { + return o.charAt(r); + }); + switch (n.length % 4) { + default: + case 0: + return n; + case 1: + return n + "==="; + case 2: + return n + "=="; + case 3: + return n + "="; + } + }, + decompressFromBase64: function (r) { + return null == r + ? "" + : "" == r + ? null + : i._decompress(r.length, 32, function (n) { + return t(o, r.charAt(n)); + }); + }, + compressToUTF16: function (o) { + return null == o + ? "" + : i._compress(o, 15, function (o) { + return r(o + 32); + }) + " "; + }, + decompressFromUTF16: function (r) { + return null == r + ? "" + : "" == r + ? null + : i._decompress(r.length, 16384, function (o) { + return r.charCodeAt(o) - 32; + }); + }, + compressToUint8Array: function (r) { + for ( + var o = i.compress(r), + n = new Uint8Array(2 * o.length), + e = 0, + t = o.length; + e < t; + e++ + ) { + var s = o.charCodeAt(e); + ((n[2 * e] = s >>> 8), (n[2 * e + 1] = s % 256)); + } + return n; + }, + decompressFromUint8Array: function (o) { + if (null == o) return i.decompress(o); + for (var n = new Array(o.length / 2), e = 0, t = n.length; e < t; e++) + n[e] = 256 * o[2 * e] + o[2 * e + 1]; + var s = []; + return ( + n.forEach(function (o) { + s.push(r(o)); + }), + i.decompress(s.join("")) + ); + }, + compressToEncodedURIComponent: function (r) { + return null == r + ? "" + : i._compress(r, 6, function (r) { + return n.charAt(r); + }); + }, + decompressFromEncodedURIComponent: function (r) { + return null == r + ? "" + : "" == r + ? null + : ((r = r.replace(/ /g, "+")), + i._decompress(r.length, 32, function (o) { + return t(n, r.charAt(o)); + })); + }, + compress: function (o) { + return i._compress(o, 16, function (o) { + return r(o); + }); + }, + _compress: function (r, o, n) { + if (null == r) return ""; + var e, + t, + i, + s = {}, + u = {}, + a = "", + p = "", + c = "", + l = 2, + f = 3, + h = 2, + d = [], + m = 0, + v = 0; + for (i = 0; i < r.length; i += 1) + if ( + ((a = r.charAt(i)), + Object.prototype.hasOwnProperty.call(s, a) || + ((s[a] = f++), (u[a] = !0)), + (p = c + a), + Object.prototype.hasOwnProperty.call(s, p)) + ) + c = p; + else { + if (Object.prototype.hasOwnProperty.call(u, c)) { + if (c.charCodeAt(0) < 256) { + for (e = 0; e < h; e++) + ((m <<= 1), + v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++); + for (t = c.charCodeAt(0), e = 0; e < 8; e++) + ((m = (m << 1) | (1 & t)), + v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++, + (t >>= 1)); + } else { + for (t = 1, e = 0; e < h; e++) + ((m = (m << 1) | t), + v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++, + (t = 0)); + for (t = c.charCodeAt(0), e = 0; e < 16; e++) + ((m = (m << 1) | (1 & t)), + v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++, + (t >>= 1)); + } + (0 == --l && ((l = Math.pow(2, h)), h++), delete u[c]); + } else + for (t = s[c], e = 0; e < h; e++) + ((m = (m << 1) | (1 & t)), + v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++, + (t >>= 1)); + (0 == --l && ((l = Math.pow(2, h)), h++), + (s[p] = f++), + (c = String(a))); + } + if ("" !== c) { + if (Object.prototype.hasOwnProperty.call(u, c)) { + if (c.charCodeAt(0) < 256) { + for (e = 0; e < h; e++) + ((m <<= 1), v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++); + for (t = c.charCodeAt(0), e = 0; e < 8; e++) + ((m = (m << 1) | (1 & t)), + v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++, + (t >>= 1)); + } else { + for (t = 1, e = 0; e < h; e++) + ((m = (m << 1) | t), + v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++, + (t = 0)); + for (t = c.charCodeAt(0), e = 0; e < 16; e++) + ((m = (m << 1) | (1 & t)), + v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++, + (t >>= 1)); + } + (0 == --l && ((l = Math.pow(2, h)), h++), delete u[c]); + } else + for (t = s[c], e = 0; e < h; e++) + ((m = (m << 1) | (1 & t)), + v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++, + (t >>= 1)); + 0 == --l && ((l = Math.pow(2, h)), h++); + } + for (t = 2, e = 0; e < h; e++) + ((m = (m << 1) | (1 & t)), + v == o - 1 ? ((v = 0), d.push(n(m)), (m = 0)) : v++, + (t >>= 1)); + for (;;) { + if (((m <<= 1), v == o - 1)) { + d.push(n(m)); + break; + } + v++; + } + return d.join(""); + }, + decompress: function (r) { + return null == r + ? "" + : "" == r + ? null + : i._decompress(r.length, 32768, function (o) { + return r.charCodeAt(o); + }); + }, + _decompress: function (o, n, e) { + var t, + i, + s, + u, + a, + p, + c, + l = [], + f = 4, + h = 4, + d = 3, + m = "", + v = [], + g = { val: e(0), position: n, index: 1 }; + for (t = 0; t < 3; t += 1) l[t] = t; + for (s = 0, a = Math.pow(2, 2), p = 1; p != a; ) + ((u = g.val & g.position), + (g.position >>= 1), + 0 == g.position && ((g.position = n), (g.val = e(g.index++))), + (s |= (u > 0 ? 1 : 0) * p), + (p <<= 1)); + switch (s) { + case 0: + for (s = 0, a = Math.pow(2, 8), p = 1; p != a; ) + ((u = g.val & g.position), + (g.position >>= 1), + 0 == g.position && ((g.position = n), (g.val = e(g.index++))), + (s |= (u > 0 ? 1 : 0) * p), + (p <<= 1)); + c = r(s); + break; + case 1: + for (s = 0, a = Math.pow(2, 16), p = 1; p != a; ) + ((u = g.val & g.position), + (g.position >>= 1), + 0 == g.position && ((g.position = n), (g.val = e(g.index++))), + (s |= (u > 0 ? 1 : 0) * p), + (p <<= 1)); + c = r(s); + break; + case 2: + return ""; + } + for (l[3] = c, i = c, v.push(c); ; ) { + if (g.index > o) return ""; + for (s = 0, a = Math.pow(2, d), p = 1; p != a; ) + ((u = g.val & g.position), + (g.position >>= 1), + 0 == g.position && ((g.position = n), (g.val = e(g.index++))), + (s |= (u > 0 ? 1 : 0) * p), + (p <<= 1)); + switch ((c = s)) { + case 0: + for (s = 0, a = Math.pow(2, 8), p = 1; p != a; ) + ((u = g.val & g.position), + (g.position >>= 1), + 0 == g.position && ((g.position = n), (g.val = e(g.index++))), + (s |= (u > 0 ? 1 : 0) * p), + (p <<= 1)); + ((l[h++] = r(s)), (c = h - 1), f--); + break; + case 1: + for (s = 0, a = Math.pow(2, 16), p = 1; p != a; ) + ((u = g.val & g.position), + (g.position >>= 1), + 0 == g.position && ((g.position = n), (g.val = e(g.index++))), + (s |= (u > 0 ? 1 : 0) * p), + (p <<= 1)); + ((l[h++] = r(s)), (c = h - 1), f--); + break; + case 2: + return v.join(""); + } + if ((0 == f && ((f = Math.pow(2, d)), d++), l[c])) m = l[c]; + else { + if (c !== h) return null; + m = i + i.charAt(0); + } + (v.push(m), + (l[h++] = i + m.charAt(0)), + (i = m), + 0 == --f && ((f = Math.pow(2, d)), d++)); + } + }, + }; + return i; +})(); +"function" == typeof define && define.amd + ? define(function () { + return LZString; + }) + : "undefined" != typeof module && null != module + ? (module.exports = LZString) + : "undefined" != typeof angular && + null != angular && + angular.module("LZString", []).factory("LZString", function () { + return LZString; + }); let REACT_PACKAGES = `!function(){var e,t;e=this,t=function(e){function M(e){return null!==e&&"object"==typeof e&&"function"==typeof(e=ee&&e[ee]||e["@@iterator"])?e:null}function t(e,t,n){this.props=e,this.context=t,this.refs=re,this.updater=n||te}function n(){}function r(e,t,n){this.props=e,this.context=t,this.refs=re,this.updater=n||te}function o(e,t,n){var r,o={},u=null,a=null;if(null!=t)for(r in void 0!==t.ref&&(a=t.ref),void 0!==t.key&&(u=""+t.key),t)ue.call(t,r)&&!ae.hasOwnProperty(r)&&(o[r]=t[r]);var i=arguments.length-2;if(1===i)o.children=n;else if(1>>1,o=e[r];if(!(0>>1;rt)||e&&!q());){var r,o=R.callback;"function"==typeof o?(R.callback=null,P=R.priorityLevel,r=o(R.expirationTime<=t),t=v(),"function"==typeof r?R.callback=r:R===i(C)&&l(C),y(t)):l(C),R=i(C)}var u,a=null!==R||(null!==(u=i(E))&&_(d,u.startTime-t),!1);return a}finally{R=null,P=n,$=!1}}function q(){return!(v()-ye")?l.replace("",n.displayName):l}while(1<=u&&0<=i);break}}}finally{Eo=!1,Error.prepareStackTrace=t}return(n=n?n.displayName||n.name:"")?j(n):""}function q(e){switch(e.tag){case 5:return j(e.type);case 16:return j("Lazy");case 13:return j("Suspense");case 19:return j("SuspenseList");case 0:case 2:case 15:return e=$(e.type,!1);case 11:return e=$(e.type.render,!1);case 1:return e=$(e.type,!0);default:return""}}function K(e){if(null!=e){if("function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case fo:return"Fragment";case co:return"Portal";case mo:return"Profiler";case po:return"StrictMode";case vo:return"Suspense";case bo:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case go:return(e.displayName||"Context")+".Consumer";case ho:return(e._context.displayName||"Context")+".Provider";case yo:var n=e.render;return e=(e=e.displayName)?e:""!==(e=n.displayName||n.name||"")?"ForwardRef("+e+")":"ForwardRef";case ko:return null!==(n=e.displayName||null)?n:K(e.type)||"Memo";case wo:n=e._payload,e=e._init;try{return K(e(n))}catch(e){}}}return null}function Y(e){var n=e.type;switch(e.tag){case 24:return"Cache";case 9:return(n.displayName||"Context")+".Consumer";case 10:return(n._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=(e=n.render).displayName||e.name||"",n.displayName||(""!==e?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return n;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return K(n);case 8:return n===po?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if("function"==typeof n)return n.displayName||n.name||null;if("string"==typeof n)return n}return null}function X(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function G(e){var n=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===n||"radio"===n)}function Z(e){var n,t,r=G(e)?"checked":"value",l=Object.getOwnPropertyDescriptor(e.constructor.prototype,r),a=""+e[r];if(!e.hasOwnProperty(r)&&void 0!==l&&"function"==typeof l.get&&"function"==typeof l.set)return n=l.get,t=l.set,Object.defineProperty(e,r,{configurable:!0,get:function(){return n.call(this)},set:function(e){a=""+e,t.call(this,e)}}),Object.defineProperty(e,r,{enumerable:l.enumerable}),{getValue:function(){return a},setValue:function(e){a=""+e},stopTracking:function(){e._valueTracker=null,delete e[r]}}}function J(e){e._valueTracker||(e._valueTracker=Z(e))}function ee(e){var n,t,r;return!(!e||(n=e._valueTracker)&&(t=n.getValue(),r="",(e=r=e?G(e)?e.checked?"true":"false":e.value:r)===t||(n.setValue(e),0)))}function ne(n){if(void 0===(n=n||("undefined"!=typeof document?document:void 0)))return null;try{return n.activeElement||n.body}catch(e){return n.body}}function te(e,n){var t=n.checked;return g({},n,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=t?t:e._wrapperState.initialChecked})}function re(e,n){var t=null==n.defaultValue?"":n.defaultValue,r=null!=n.checked?n.checked:n.defaultChecked,t=X(null!=n.value?n.value:t);e._wrapperState={initialChecked:r,initialValue:t,controlled:"checkbox"===n.type||"radio"===n.type?null!=n.checked:null!=n.value}}function le(e,n){null!=(n=n.checked)&&H(e,"checked",n,!1)}function ae(e,n){le(e,n);var t=X(n.value),r=n.type;if(null!=t)"number"===r?(0===t&&""===e.value||e.value!=t)&&(e.value=""+t):e.value!==""+t&&(e.value=""+t);else if("submit"===r||"reset"===r)return void e.removeAttribute("value");n.hasOwnProperty("value")?ue(e,n.type,t):n.hasOwnProperty("defaultValue")&&ue(e,n.type,X(n.defaultValue)),null==n.checked&&null!=n.defaultChecked&&(e.defaultChecked=!!n.defaultChecked)}function oe(e,n,t){if(n.hasOwnProperty("value")||n.hasOwnProperty("defaultValue")){var r=n.type;if(("submit"===r||"reset"===r)&&null==n.value)return;n=""+e._wrapperState.initialValue,t||n===e.value||(e.value=n),e.defaultValue=n}""!==(t=e.name)&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,""!==t&&(e.name=t)}function ue(e,n,t){"number"===n&&ne(e.ownerDocument)===e||(null==t?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+t&&(e.defaultValue=""+t))}function ie(e,n,t,r){if(e=e.options,n){n={};for(var l=0;l>>=0)?32:31-(su(e)/cu|0)|0}function De(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194240&e;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return 130023424&e;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Oe(e,n){var t=e.pendingLanes;if(0===t)return 0;var r,l=0,a=e.suspendedLanes,o=e.pingedLanes,u=268435455&t;if(0!==u?0!==(r=u&~a)?l=De(r):0!==(o&=u)&&(l=De(o)):0!==(u=t&~a)?l=De(u):0!==o&&(l=De(o)),0===l)return 0;if(0!==n&&n!==l&&0==(n&a)&&((o=n&-n)<=(a=l&-l)||16===a&&0!=(4194240&o)))return n;if(0!=(4&l)&&(l|=16&t),0!==(n=e.entangledLanes))for(e=e.entanglements,n&=l;0>=r,a-=r,Gi=1<<32-iu(n)+a|t<u?(i=o,o=null):i=o.sibling;var s=y(n,o,t[u],r);if(null===s){null===o&&(o=i);break}f&&o&&null===s.alternate&&d(n,o),e=h(s,e,u),null===a?l=s:a.sibling=s,a=s,o=i}if(u===t.length)p(n,o);else if(null===o)for(;uu?(i=o,o=null):i=o.sibling;var c=y(n,o,s.value,r);if(null===c){null===o&&(o=i);break}f&&o&&null===c.alternate&&d(n,o),e=h(c,e,u),null===a?l=c:a.sibling=c,a=c,o=i}if(s.done)p(n,o);else if(null===o)for(;!s.done;u++,s=t.next())null!==(s=g(n,s.value,r))&&(e=h(s,e,u),null===a?l=s:a.sibling=s,a=s);else{for(o=m(n,o);!s.done;u++,s=t.next())null!==(s=v(o,n,u,s.value,r))&&(f&&null!==s.alternate&&o.delete(null===s.key?u:s.key),e=h(s,e,u),null===a?l=s:a.sibling=s,a=s);f&&o.forEach(function(e){return d(n,e)})}return E&&bt(n,u),l}function w(e,n,t,r){if("object"==typeof(t="object"==typeof t&&null!==t&&t.type===fo&&null===t.key?t.props.children:t)&&null!==t){switch(t.$$typeof){case so:e:{for(var l=t.key,a=n;null!==a;){if(a.key===l){if((l=t.type)===fo){if(7===a.tag){p(e,a.sibling),(n=o(a,t.props.children)).return=e,e=n;break e}}else if(a.elementType===l||"object"==typeof l&&null!==l&&l.$$typeof===wo&&nr(l)===a.type){p(e,a.sibling),(n=o(a,t.props)).ref=Jt(e,a,t),n.return=e,e=n;break e}p(e,a);break}d(e,a),a=a.sibling}e=t.type===fo?((n=Pa(t.props.children,e.mode,r,t.key)).return=e,n):((r=za(t.type,t.key,t.props,null,e.mode,r)).ref=Jt(e,n,t),r.return=e,r)}return u(e);case co:e:{for(a=t.key;null!==n;){if(n.key===a){if(4===n.tag&&n.stateNode.containerInfo===t.containerInfo&&n.stateNode.implementation===t.implementation){p(e,n.sibling),(n=o(n,t.children||[])).return=e,e=n;break e}p(e,n);break}d(e,n),n=n.sibling}(n=Ta(t,e.mode,r)).return=e,e=n}return u(e);case wo:return w(e,n,(a=t._init)(t._payload),r)}if(Co(t))return b(e,n,t,r);if(Q(t))return k(e,n,t,r);er(e,t)}return"string"==typeof t&&""!==t||"number"==typeof t?(t=""+t,(n=null!==n&&6===n.tag?(p(e,n.sibling),o(n,t)):(p(e,n),La(t,e.mode,r))).return=e,u(e=n)):p(e,n)}return w}function rr(e){if(e===ps)throw Error(S(174));return e}function lr(e,n){switch(f(gs,n),f(hs,e),f(ms,ps),e=n.nodeType){case 9:case 11:n=(n=n.documentElement)?n.namespaceURI:me(null,"");break;default:n=me(n=(e=8===e?n.parentNode:n).namespaceURI||null,e=e.tagName)}s(ms),f(ms,n)}function ar(e){s(ms),s(hs),s(gs)}function or(e){rr(gs.current);var n=rr(ms.current),t=me(n,e.type);n!==t&&(f(hs,e),f(ms,t))}function ur(e){hs.current===e&&(s(ms),s(hs))}function ir(e){for(var n=e;null!==n;){if(13===n.tag){var t=n.memoizedState;if(null!==t&&(null===(t=t.dehydrated)||"$?"===t.data||"$!"===t.data))return n}else if(19===n.tag&&void 0!==n.memoizedProps.revealOrder){if(0!=(128&n.flags))return n}else if(null!==n.child){n=(n.child.return=n).child;continue}if(n===e)break;for(;null===n.sibling;){if(null===n.return||n.return===e)return null;n=n.return}n.sibling.return=n.return,n=n.sibling}return null}function sr(){for(var e=0;e<\\/script>",e=e.removeChild(e.firstChild)):"string"==typeof r.is?e=o.createElement(t,{is:r.is}):(e=o.createElement(t),"select"===t&&(o=e,r.multiple?o.multiple=!0:r.size&&(o.size=r.size))):e=o.createElementNS(e,t),e[Ti]=n,e[Mi]=r,Ms(e,n,!1,!1),n.stateNode=e;e:{switch(o=ve(t,r),t){case"dialog":c("cancel",e),c("close",e),a=r;break;case"iframe":case"object":case"embed":c("load",e),a=r;break;case"video":case"audio":for(a=0;aGs&&(n.flags|=128,Sl(i,!(r=!0)),n.lanes=4194304)}else{if(!r)if(null!==(e=ir(o))){if(n.flags|=128,r=!0,null!==(t=e.updateQueue)&&(n.updateQueue=t,n.flags|=4),Sl(i,!0),null===i.tail&&"hidden"===i.tailMode&&!o.alternate&&!E)return p(n),null}else 2*y()-i.renderingStartTime>Gs&&1073741824!==t&&(n.flags|=128,Sl(i,!(r=!0)),n.lanes=4194304);i.isBackwards?(o.sibling=n.child,n.child=o):(null!==(t=i.last)?t.sibling=o:n.child=o,i.last=o)}if(null!==i.tail)return n=i.tail,i.rendering=n,i.tail=n.sibling,i.renderingStartTime=y(),n.sibling=null,t=C.current,f(C,r?1&t|2:1&t),n}return p(n),null;case 22:case 23:return O=Qs.current,s(Qs),r=null!==n.memoizedState,null!==e&&null!==e.memoizedState!==r&&(n.flags|=8192),r&&0!=(1&n.mode)?0!=(1073741824&O)&&(p(n),6&n.subtreeFlags)&&(n.flags|=8192):p(n),null;case 24:case 25:return null}throw Error(S(156,n.tag))}function El(e,n,t){switch(St(n),n.tag){case 1:return h(n.type)&&(s(b),s(v)),65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 3:return ar(),s(b),s(v),sr(),0!=(65536&(e=n.flags))&&0==(128&e)?(n.flags=-65537&e|128,n):null;case 5:return ur(n),null;case 13:if(s(C),null!==(e=n.memoizedState)&&null!==e.dehydrated){if(null===n.alternate)throw Error(S(340));_t()}return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 19:return s(C),null;case 4:return ar(),null;case 10:return Ft(n.type._context),null;case 22:case 23:return O=Qs.current,s(Qs),null;default:return null}}function Cl(n,t){var e=n.ref;if(null!==e)if("function"==typeof e)try{e(null)}catch(e){w(n,t,e)}else e.current=null}function Nl(n,t,e){try{e()}catch(e){w(n,t,e)}}function zl(e,n){if(Ci=xu,On(e=Dn())){if("selectionStart"in e)var t={start:e.selectionStart,end:e.selectionEnd};else e:if((a=(t=(t=e.ownerDocument)&&t.defaultView||window).getSelection&&t.getSelection())&&0!==a.rangeCount){var t=a.anchorNode,r=a.anchorOffset,l=a.focusNode,a=a.focusOffset;try{t.nodeType,l.nodeType}catch(e){t=null;break e}var o,u=0,i=-1,s=-1,c=0,f=0,d=e,p=null;n:for(;;){for(;d!==t||0!==r&&3!==d.nodeType||(i=u+r),d!==l||0!==a&&3!==d.nodeType||(s=u+a),3===d.nodeType&&(u+=d.nodeValue.length),null!==(o=d.firstChild);)p=d,d=o;for(;;){if(d===e)break n;if(p===t&&++c===r&&(i=u),p===l&&++f===a&&(s=u),null!==(o=d.nextSibling))break;p=(d=p).parentNode}d=o}t=-1===i||-1===s?null:{start:i,end:s}}else t=null;t=t||{start:0,end:0}}else t=null;for(xu=!(Ni={focusedElem:e,selectionRange:t}),T=n;null!==T;)if(e=(n=T).child,0!=(1028&n.subtreeFlags)&&null!==e)e.return=n,T=e;else for(;null!==T;){n=T;try{var m,h,g,y,v=n.alternate;if(0!=(1024&n.flags))switch(n.tag){case 0:case 11:case 15:break;case 1:null!==v&&(m=v.memoizedProps,h=v.memoizedState,y=(g=n.stateNode).getSnapshotBeforeUpdate(n.elementType===n.type?m:Tt(n.type,m),h),g.__reactInternalSnapshotBeforeUpdate=y);break;case 3:var b=n.stateNode.containerInfo;1===b.nodeType?b.textContent="":9===b.nodeType&&b.documentElement&&b.removeChild(b.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(S(163))}}catch(e){w(n,n.return,e)}if(null!==(e=n.sibling)){e.return=n.return,T=e;break}T=n.return}return v=Us,Us=!1,v}function Pl(e,n,t){var r=n.updateQueue;if(null!==(r=null!==r?r.lastEffect:null)){var l,a=r=r.next;do{}while((a.tag&e)===e&&(l=a.destroy,(a.destroy=void 0)!==l)&&Nl(n,t,l),(a=a.next)!==r)}}function _l(e,n){if(null!==(n=null!==(n=n.updateQueue)?n.lastEffect:null)){var t,r=n=n.next;do{}while((r.tag&e)===e&&(t=r.create,r.destroy=t()),(r=r.next)!==n)}}function Ll(e){var n,t=e.ref;null!==t&&(n=e.stateNode,e.tag,e=n,"function"==typeof t?t(e):t.current=e)}function Tl(e){var n=e.alternate;null!==n&&(e.alternate=null,Tl(n)),e.child=null,e.deletions=null,e.sibling=null,5===e.tag&&null!==(n=e.stateNode)&&(delete n[Ti],delete n[Mi],delete n[Ri],delete n[Di],delete n[Oi]),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function Ml(e){return 5===e.tag||3===e.tag||4===e.tag}function Fl(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||Ml(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(2&e.flags)continue e;if(null===e.child||4===e.tag)continue e;e=(e.child.return=e).child}if(!(2&e.flags))return e.stateNode}}function Rl(e,n,t){var r=e.tag;if(5===r||6===r)e=e.stateNode,n?(8===t.nodeType?t.parentNode:t).insertBefore(e,n):(8===t.nodeType?(n=t.parentNode).insertBefore(e,t):(n=t).appendChild(e),null==(t=t._reactRootContainer)&&null===n.onclick&&(n.onclick=et));else if(4!==r&&null!==(e=e.child))for(Rl(e,n,t),e=e.sibling;null!==e;)Rl(e,n,t),e=e.sibling}function Dl(e,n,t){var r=e.tag;if(5===r||6===r)e=e.stateNode,n?t.insertBefore(e,n):t.appendChild(e);else if(4!==r&&null!==(e=e.child))for(Dl(e,n,t),e=e.sibling;null!==e;)Dl(e,n,t),e=e.sibling}function Ol(e,n,t){for(t=t.child;null!==t;)Il(e,n,t),t=t.sibling}function Il(e,n,t){if(uu&&"function"==typeof uu.onCommitFiberUnmount)try{uu.onCommitFiberUnmount(ou,t)}catch(e){}switch(t.tag){case 5:L||Cl(t,n);case 6:var r=M,l=Vs;M=null,Ol(e,n,t),Vs=l,null!==(M=r)&&(Vs?(e=M,t=t.stateNode,(8===e.nodeType?e.parentNode:e).removeChild(t)):M.removeChild(t.stateNode));break;case 18:null!==M&&(Vs?(e=M,t=t.stateNode,8===e.nodeType?rt(e.parentNode,t):1===e.nodeType&&rt(e,t),en(e)):rt(M,t.stateNode));break;case 4:r=M,l=Vs,M=t.stateNode.containerInfo,Vs=!0,Ol(e,n,t),M=r,Vs=l;break;case 0:case 11:case 14:case 15:if(!L&&null!==(r=t.updateQueue)&&null!==(r=r.lastEffect)){l=r=r.next;do{var a=(o=l).destroy,o=o.tag}while(void 0===a||0==(2&o)&&0==(4&o)||Nl(t,n,a),(l=l.next)!==r)}Ol(e,n,t);break;case 1:if(!L&&(Cl(t,n),"function"==typeof(r=t.stateNode).componentWillUnmount))try{r.props=t.memoizedProps,r.state=t.memoizedState,r.componentWillUnmount()}catch(e){w(t,n,e)}Ol(e,n,t);break;case 21:Ol(e,n,t);break;case 22:1&t.mode?(L=(r=L)||null!==t.memoizedState,Ol(e,n,t),L=r):Ol(e,n,t);break;default:Ol(e,n,t)}}function Ul(t){var r,e=t.updateQueue;null!==e&&((t.updateQueue=null)===(r=t.stateNode)&&(r=t.stateNode=new Is),e.forEach(function(e){var n=wa.bind(null,t,e);r.has(e)||(r.add(e),e.then(n,n))}))}function Vl(e,n,t){if(null!==(t=n.deletions))for(var r=0;r