commit 18ab287dc5e0b3f7d0ad2730c2979d0954fb9c8f Author: Hardik Date: Sun May 24 13:36:37 2026 +0530 Mind Palace Layout diff --git a/.obsidian/app.json b/.obsidian/app.json new file mode 100644 index 0000000..5bf8a85 --- /dev/null +++ b/.obsidian/app.json @@ -0,0 +1,6 @@ +{ + "alwaysUpdateLinks": true, + "attachmentFolderPath": "Resources/Assets", + "newFileLocation": "folder", + "newFileFolderPath": "Scratchpad" +} \ No newline at end of file diff --git a/.obsidian/appearance.json b/.obsidian/appearance.json new file mode 100644 index 0000000..ac16716 --- /dev/null +++ b/.obsidian/appearance.json @@ -0,0 +1,5 @@ +{ + "cssTheme": "AnuPpuccin", + "theme": "moonstone", + "textFontFamily": "NewYork" +} \ No newline at end of file diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json new file mode 100644 index 0000000..8c7f11a --- /dev/null +++ b/.obsidian/community-plugins.json @@ -0,0 +1,14 @@ +[ + "obsidian-style-settings", + "periodic-notes", + "calendar", + "obsidian-auto-link-title", + "hotkey-helper", + "obsidian-git", + "obsidian-hover-editor", + "link-favicon", + "nldates-redux", + "url-into-selection", + "obsidian42-brat", + "simple-embeds" +] \ No newline at end of file diff --git a/.obsidian/core-plugins.json b/.obsidian/core-plugins.json new file mode 100644 index 0000000..639b90d --- /dev/null +++ b/.obsidian/core-plugins.json @@ -0,0 +1,33 @@ +{ + "file-explorer": true, + "global-search": true, + "switcher": true, + "graph": true, + "backlink": true, + "canvas": true, + "outgoing-link": true, + "tag-pane": true, + "footnotes": false, + "properties": true, + "page-preview": true, + "daily-notes": true, + "templates": true, + "note-composer": true, + "command-palette": true, + "slash-command": false, + "editor-status": true, + "bookmarks": true, + "markdown-importer": false, + "zk-prefixer": false, + "random-note": false, + "outline": true, + "word-count": true, + "slides": false, + "audio-recorder": false, + "workspaces": false, + "file-recovery": true, + "publish": false, + "sync": true, + "bases": true, + "webviewer": false +} \ No newline at end of file diff --git a/.obsidian/graph.json b/.obsidian/graph.json new file mode 100644 index 0000000..42a46ec --- /dev/null +++ b/.obsidian/graph.json @@ -0,0 +1,22 @@ +{ + "collapse-filter": true, + "search": "", + "showTags": false, + "showAttachments": false, + "hideUnresolved": false, + "showOrphans": true, + "collapse-color-groups": true, + "colorGroups": [], + "collapse-display": true, + "showArrow": false, + "textFadeMultiplier": 0, + "nodeSizeMultiplier": 1, + "lineSizeMultiplier": 1, + "collapse-forces": true, + "centerStrength": 0.518713248970312, + "repelStrength": 10, + "linkStrength": 1, + "linkDistance": 250, + "scale": 1, + "close": true +} \ No newline at end of file diff --git a/.obsidian/hotkeys.json b/.obsidian/hotkeys.json new file mode 100644 index 0000000..7f04664 --- /dev/null +++ b/.obsidian/hotkeys.json @@ -0,0 +1,11 @@ +{ + "periodic-notes:open-daily-note": [ + { + "modifiers": [ + "Mod" + ], + "key": "D" + } + ], + "editor:delete-paragraph": [] +} \ No newline at end of file diff --git a/.obsidian/plugins/calendar/data.json b/.obsidian/plugins/calendar/data.json new file mode 100644 index 0000000..b03e21d --- /dev/null +++ b/.obsidian/plugins/calendar/data.json @@ -0,0 +1,10 @@ +{ + "shouldConfirmBeforeCreate": true, + "weekStart": "locale", + "wordsPerDot": 250, + "showWeeklyNote": false, + "weeklyNoteFormat": "", + "weeklyNoteTemplate": "", + "weeklyNoteFolder": "", + "localeOverride": "system-default" +} \ No newline at end of file diff --git a/.obsidian/plugins/calendar/main.js b/.obsidian/plugins/calendar/main.js new file mode 100644 index 0000000..ed6cea3 --- /dev/null +++ b/.obsidian/plugins/calendar/main.js @@ -0,0 +1,4459 @@ +'use strict'; + +var obsidian = require('obsidian'); + +function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + +var obsidian__default = /*#__PURE__*/_interopDefaultLegacy(obsidian); + +const DEFAULT_WEEK_FORMAT = "gggg-[W]ww"; +const DEFAULT_WORDS_PER_DOT = 250; +const VIEW_TYPE_CALENDAR = "calendar"; +const TRIGGER_ON_OPEN = "calendar:open"; + +const DEFAULT_DAILY_NOTE_FORMAT = "YYYY-MM-DD"; +const DEFAULT_WEEKLY_NOTE_FORMAT = "gggg-[W]ww"; +const DEFAULT_MONTHLY_NOTE_FORMAT = "YYYY-MM"; + +function shouldUsePeriodicNotesSettings(periodicity) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const periodicNotes = window.app.plugins.getPlugin("periodic-notes"); + return periodicNotes && periodicNotes.settings?.[periodicity]?.enabled; +} +/** + * Read the user settings for the `daily-notes` plugin + * to keep behavior of creating a new note in-sync. + */ +function getDailyNoteSettings() { + try { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const { internalPlugins, plugins } = window.app; + if (shouldUsePeriodicNotesSettings("daily")) { + const { format, folder, template } = plugins.getPlugin("periodic-notes")?.settings?.daily || {}; + return { + format: format || DEFAULT_DAILY_NOTE_FORMAT, + folder: folder?.trim() || "", + template: template?.trim() || "", + }; + } + const { folder, format, template } = internalPlugins.getPluginById("daily-notes")?.instance?.options || {}; + return { + format: format || DEFAULT_DAILY_NOTE_FORMAT, + folder: folder?.trim() || "", + template: template?.trim() || "", + }; + } + catch (err) { + console.info("No custom daily note settings found!", err); + } +} +/** + * Read the user settings for the `weekly-notes` plugin + * to keep behavior of creating a new note in-sync. + */ +function getWeeklyNoteSettings() { + try { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const pluginManager = window.app.plugins; + const calendarSettings = pluginManager.getPlugin("calendar")?.options; + const periodicNotesSettings = pluginManager.getPlugin("periodic-notes") + ?.settings?.weekly; + if (shouldUsePeriodicNotesSettings("weekly")) { + return { + format: periodicNotesSettings.format || DEFAULT_WEEKLY_NOTE_FORMAT, + folder: periodicNotesSettings.folder?.trim() || "", + template: periodicNotesSettings.template?.trim() || "", + }; + } + const settings = calendarSettings || {}; + return { + format: settings.weeklyNoteFormat || DEFAULT_WEEKLY_NOTE_FORMAT, + folder: settings.weeklyNoteFolder?.trim() || "", + template: settings.weeklyNoteTemplate?.trim() || "", + }; + } + catch (err) { + console.info("No custom weekly note settings found!", err); + } +} +/** + * Read the user settings for the `periodic-notes` plugin + * to keep behavior of creating a new note in-sync. + */ +function getMonthlyNoteSettings() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const pluginManager = window.app.plugins; + try { + const settings = (shouldUsePeriodicNotesSettings("monthly") && + pluginManager.getPlugin("periodic-notes")?.settings?.monthly) || + {}; + return { + format: settings.format || DEFAULT_MONTHLY_NOTE_FORMAT, + folder: settings.folder?.trim() || "", + template: settings.template?.trim() || "", + }; + } + catch (err) { + console.info("No custom monthly note settings found!", err); + } +} + +/** + * dateUID is a way of weekly identifying daily/weekly/monthly notes. + * They are prefixed with the granularity to avoid ambiguity. + */ +function getDateUID$1(date, granularity = "day") { + const ts = date.clone().startOf(granularity).format(); + return `${granularity}-${ts}`; +} +function removeEscapedCharacters(format) { + return format.replace(/\[[^\]]*\]/g, ""); // remove everything within brackets +} +/** + * XXX: When parsing dates that contain both week numbers and months, + * Moment choses to ignore the week numbers. For the week dateUID, we + * want the opposite behavior. Strip the MMM from the format to patch. + */ +function isFormatAmbiguous(format, granularity) { + if (granularity === "week") { + const cleanFormat = removeEscapedCharacters(format); + return (/w{1,2}/i.test(cleanFormat) && + (/M{1,4}/.test(cleanFormat) || /D{1,4}/.test(cleanFormat))); + } + return false; +} +function getDateFromFile(file, granularity) { + const getSettings = { + day: getDailyNoteSettings, + week: getWeeklyNoteSettings, + month: getMonthlyNoteSettings, + }; + const format = getSettings[granularity]().format.split("/").pop(); + const noteDate = window.moment(file.basename, format, true); + if (!noteDate.isValid()) { + return null; + } + if (isFormatAmbiguous(format, granularity)) { + if (granularity === "week") { + const cleanFormat = removeEscapedCharacters(format); + if (/w{1,2}/i.test(cleanFormat)) { + return window.moment(file.basename, + // If format contains week, remove day & month formatting + format.replace(/M{1,4}/g, "").replace(/D{1,4}/g, ""), false); + } + } + } + return noteDate; +} + +// Credit: @creationix/path.js +function join(...partSegments) { + // Split the inputs into a list of path commands. + let parts = []; + for (let i = 0, l = partSegments.length; i < l; i++) { + parts = parts.concat(partSegments[i].split("/")); + } + // Interpret the path commands to get the new resolved path. + const newParts = []; + for (let i = 0, l = parts.length; i < l; i++) { + const part = parts[i]; + // Remove leading and trailing slashes + // Also remove "." segments + if (!part || part === ".") + continue; + // Push new path segments. + else + newParts.push(part); + } + // Preserve the initial slash if there was one. + if (parts[0] === "") + newParts.unshift(""); + // Turn back into a single string path. + return newParts.join("/"); +} +async function ensureFolderExists(path) { + const dirs = path.replace(/\\/g, "/").split("/"); + dirs.pop(); // remove basename + if (dirs.length) { + const dir = join(...dirs); + if (!window.app.vault.getAbstractFileByPath(dir)) { + await window.app.vault.createFolder(dir); + } + } +} +async function getNotePath(directory, filename) { + if (!filename.endsWith(".md")) { + filename += ".md"; + } + const path = obsidian__default['default'].normalizePath(join(directory, filename)); + await ensureFolderExists(path); + return path; +} +async function getTemplateInfo(template) { + const { metadataCache, vault } = window.app; + const templatePath = obsidian__default['default'].normalizePath(template); + if (templatePath === "/") { + return Promise.resolve(["", null]); + } + try { + const templateFile = metadataCache.getFirstLinkpathDest(templatePath, ""); + const contents = await vault.cachedRead(templateFile); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const IFoldInfo = window.app.foldManager.load(templateFile); + return [contents, IFoldInfo]; + } + catch (err) { + console.error(`Failed to read the daily note template '${templatePath}'`, err); + new obsidian__default['default'].Notice("Failed to read the daily note template"); + return ["", null]; + } +} + +class DailyNotesFolderMissingError extends Error { +} +/** + * This function mimics the behavior of the daily-notes plugin + * so it will replace {{date}}, {{title}}, and {{time}} with the + * formatted timestamp. + * + * Note: it has an added bonus that it's not 'today' specific. + */ +async function createDailyNote(date) { + const app = window.app; + const { vault } = app; + const moment = window.moment; + const { template, format, folder } = getDailyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents + .replace(/{{\s*date\s*}}/gi, filename) + .replace(/{{\s*time\s*}}/gi, moment().format("HH:mm")) + .replace(/{{\s*title\s*}}/gi, filename) + .replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second"), + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }) + .replace(/{{\s*yesterday\s*}}/gi, date.clone().subtract(1, "day").format(format)) + .replace(/{{\s*tomorrow\s*}}/gi, date.clone().add(1, "d").format(format))); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } + catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian__default['default'].Notice("Unable to create new file."); + } +} +function getDailyNote(date, dailyNotes) { + return dailyNotes[getDateUID$1(date, "day")] ?? null; +} +function getAllDailyNotes() { + /** + * Find all daily notes in the daily note folder + */ + const { vault } = window.app; + const { folder } = getDailyNoteSettings(); + const dailyNotesFolder = vault.getAbstractFileByPath(obsidian__default['default'].normalizePath(folder)); + if (!dailyNotesFolder) { + throw new DailyNotesFolderMissingError("Failed to find daily notes folder"); + } + const dailyNotes = {}; + obsidian__default['default'].Vault.recurseChildren(dailyNotesFolder, (note) => { + if (note instanceof obsidian__default['default'].TFile) { + const date = getDateFromFile(note, "day"); + if (date) { + const dateString = getDateUID$1(date, "day"); + dailyNotes[dateString] = note; + } + } + }); + return dailyNotes; +} + +class WeeklyNotesFolderMissingError extends Error { +} +function getDaysOfWeek$1() { + const { moment } = window; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let weekStart = moment.localeData()._week.dow; + const daysOfWeek = [ + "sunday", + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + ]; + while (weekStart) { + daysOfWeek.push(daysOfWeek.shift()); + weekStart--; + } + return daysOfWeek; +} +function getDayOfWeekNumericalValue(dayOfWeekName) { + return getDaysOfWeek$1().indexOf(dayOfWeekName.toLowerCase()); +} +async function createWeeklyNote(date) { + const { vault } = window.app; + const { template, format, folder } = getWeeklyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents + .replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second"), + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }) + .replace(/{{\s*title\s*}}/gi, filename) + .replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")) + .replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi, (_, dayOfWeek, momentFormat) => { + const day = getDayOfWeekNumericalValue(dayOfWeek); + return date.weekday(day).format(momentFormat.trim()); + })); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } + catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian__default['default'].Notice("Unable to create new file."); + } +} +function getWeeklyNote(date, weeklyNotes) { + return weeklyNotes[getDateUID$1(date, "week")] ?? null; +} +function getAllWeeklyNotes() { + const { vault } = window.app; + const { folder } = getWeeklyNoteSettings(); + const weeklyNotesFolder = vault.getAbstractFileByPath(obsidian__default['default'].normalizePath(folder)); + if (!weeklyNotesFolder) { + throw new WeeklyNotesFolderMissingError("Failed to find weekly notes folder"); + } + const weeklyNotes = {}; + obsidian__default['default'].Vault.recurseChildren(weeklyNotesFolder, (note) => { + if (note instanceof obsidian__default['default'].TFile) { + const date = getDateFromFile(note, "week"); + if (date) { + const dateString = getDateUID$1(date, "week"); + weeklyNotes[dateString] = note; + } + } + }); + return weeklyNotes; +} + +function appHasDailyNotesPluginLoaded() { + const { app } = window; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const dailyNotesPlugin = app.internalPlugins.plugins["daily-notes"]; + if (dailyNotesPlugin && dailyNotesPlugin.enabled) { + return true; + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && periodicNotes.settings?.daily?.enabled; +} +var appHasDailyNotesPluginLoaded_1 = appHasDailyNotesPluginLoaded; +var createDailyNote_1 = createDailyNote; +var createWeeklyNote_1 = createWeeklyNote; +var getAllDailyNotes_1 = getAllDailyNotes; +var getAllWeeklyNotes_1 = getAllWeeklyNotes; +var getDailyNote_1 = getDailyNote; +var getDailyNoteSettings_1 = getDailyNoteSettings; +var getDateFromFile_1 = getDateFromFile; +var getDateUID_1$1 = getDateUID$1; +var getWeeklyNote_1 = getWeeklyNote; +var getWeeklyNoteSettings_1 = getWeeklyNoteSettings; + +function noop$1() { } +function run$1(fn) { + return fn(); +} +function blank_object$1() { + return Object.create(null); +} +function run_all$1(fns) { + fns.forEach(run$1); +} +function is_function$1(thing) { + return typeof thing === 'function'; +} +function safe_not_equal$1(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); +} +function not_equal$1(a, b) { + return a != a ? b == b : a !== b; +} +function is_empty$1(obj) { + return Object.keys(obj).length === 0; +} +function subscribe(store, ...callbacks) { + if (store == null) { + return noop$1; + } + const unsub = store.subscribe(...callbacks); + return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; +} +function get_store_value(store) { + let value; + subscribe(store, _ => value = _)(); + return value; +} +function component_subscribe(component, store, callback) { + component.$$.on_destroy.push(subscribe(store, callback)); +} +function detach$1(node) { + node.parentNode.removeChild(node); +} +function children$1(element) { + return Array.from(element.childNodes); +} + +let current_component$1; +function set_current_component$1(component) { + current_component$1 = component; +} +function get_current_component$1() { + if (!current_component$1) + throw new Error('Function called outside component initialization'); + return current_component$1; +} +function onDestroy(fn) { + get_current_component$1().$$.on_destroy.push(fn); +} + +const dirty_components$1 = []; +const binding_callbacks$1 = []; +const render_callbacks$1 = []; +const flush_callbacks$1 = []; +const resolved_promise$1 = Promise.resolve(); +let update_scheduled$1 = false; +function schedule_update$1() { + if (!update_scheduled$1) { + update_scheduled$1 = true; + resolved_promise$1.then(flush$1); + } +} +function add_render_callback$1(fn) { + render_callbacks$1.push(fn); +} +function add_flush_callback(fn) { + flush_callbacks$1.push(fn); +} +let flushing$1 = false; +const seen_callbacks$1 = new Set(); +function flush$1() { + if (flushing$1) + return; + flushing$1 = true; + do { + // first, call beforeUpdate functions + // and update components + for (let i = 0; i < dirty_components$1.length; i += 1) { + const component = dirty_components$1[i]; + set_current_component$1(component); + update$1(component.$$); + } + set_current_component$1(null); + dirty_components$1.length = 0; + while (binding_callbacks$1.length) + binding_callbacks$1.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks$1.length; i += 1) { + const callback = render_callbacks$1[i]; + if (!seen_callbacks$1.has(callback)) { + // ...so guard against infinite loops + seen_callbacks$1.add(callback); + callback(); + } + } + render_callbacks$1.length = 0; + } while (dirty_components$1.length); + while (flush_callbacks$1.length) { + flush_callbacks$1.pop()(); + } + update_scheduled$1 = false; + flushing$1 = false; + seen_callbacks$1.clear(); +} +function update$1($$) { + if ($$.fragment !== null) { + $$.update(); + run_all$1($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback$1); + } +} +const outroing$1 = new Set(); +let outros$1; +function transition_in$1(block, local) { + if (block && block.i) { + outroing$1.delete(block); + block.i(local); + } +} +function transition_out$1(block, local, detach, callback) { + if (block && block.o) { + if (outroing$1.has(block)) + return; + outroing$1.add(block); + outros$1.c.push(() => { + outroing$1.delete(block); + if (callback) { + if (detach) + block.d(1); + callback(); + } + }); + block.o(local); + } +} + +function bind(component, name, callback) { + const index = component.$$.props[name]; + if (index !== undefined) { + component.$$.bound[index] = callback; + callback(component.$$.ctx[index]); + } +} +function create_component$1(block) { + block && block.c(); +} +function mount_component$1(component, target, anchor, customElement) { + const { fragment, on_mount, on_destroy, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + // onMount happens before the initial afterUpdate + add_render_callback$1(() => { + const new_on_destroy = on_mount.map(run$1).filter(is_function$1); + if (on_destroy) { + on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all$1(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback$1); +} +function destroy_component$1(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + run_all$1($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } +} +function make_dirty$1(component, i) { + if (component.$$.dirty[0] === -1) { + dirty_components$1.push(component); + schedule_update$1(); + component.$$.dirty.fill(0); + } + component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); +} +function init$1(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) { + const parent_component = current_component$1; + set_current_component$1(component); + const $$ = component.$$ = { + fragment: null, + ctx: null, + // state + props, + update: noop$1, + not_equal, + bound: blank_object$1(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(parent_component ? parent_component.$$.context : []), + // everything else + callbacks: blank_object$1(), + dirty, + skip_bound: false + }; + let ready = false; + $$.ctx = instance + ? instance(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty$1(component, i); + } + return ret; + }) + : []; + $$.update(); + ready = true; + run_all$1($$.before_update); + // `false` as a special case of no DOM component + $$.fragment = create_fragment ? create_fragment($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + const nodes = children$1(options.target); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach$1); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in$1(component.$$.fragment); + mount_component$1(component, options.target, options.anchor, options.customElement); + flush$1(); + } + set_current_component$1(parent_component); +} +/** + * Base class for Svelte components. Used when dev=false. + */ +class SvelteComponent$1 { + $destroy() { + destroy_component$1(this, 1); + this.$destroy = noop$1; + } + $on(type, callback) { + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty$1($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } +} + +const subscriber_queue = []; +/** + * Create a `Writable` store that allows both updating and reading by subscription. + * @param {*=}value initial value + * @param {StartStopNotifier=}start start and stop notifications for subscriptions + */ +function writable(value, start = noop$1) { + let stop; + const subscribers = []; + function set(new_value) { + if (safe_not_equal$1(value, new_value)) { + value = new_value; + if (stop) { // store is ready + const run_queue = !subscriber_queue.length; + for (let i = 0; i < subscribers.length; i += 1) { + const s = subscribers[i]; + s[1](); + subscriber_queue.push(s, value); + } + if (run_queue) { + for (let i = 0; i < subscriber_queue.length; i += 2) { + subscriber_queue[i][0](subscriber_queue[i + 1]); + } + subscriber_queue.length = 0; + } + } + } + } + function update(fn) { + set(fn(value)); + } + function subscribe(run, invalidate = noop$1) { + const subscriber = [run, invalidate]; + subscribers.push(subscriber); + if (subscribers.length === 1) { + stop = start(set) || noop$1; + } + run(value); + return () => { + const index = subscribers.indexOf(subscriber); + if (index !== -1) { + subscribers.splice(index, 1); + } + if (subscribers.length === 0) { + stop(); + stop = null; + } + }; + } + return { set, update, subscribe }; +} + +const weekdays$1 = [ + "sunday", + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", +]; +const defaultSettings = Object.freeze({ + shouldConfirmBeforeCreate: true, + weekStart: "locale", + wordsPerDot: DEFAULT_WORDS_PER_DOT, + showWeeklyNote: false, + weeklyNoteFormat: "", + weeklyNoteTemplate: "", + weeklyNoteFolder: "", + localeOverride: "system-default", +}); +function appHasPeriodicNotesPluginLoaded() { + var _a, _b; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const periodicNotes = window.app.plugins.getPlugin("periodic-notes"); + return periodicNotes && ((_b = (_a = periodicNotes.settings) === null || _a === void 0 ? void 0 : _a.weekly) === null || _b === void 0 ? void 0 : _b.enabled); +} +class CalendarSettingsTab extends obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + this.containerEl.empty(); + if (!appHasDailyNotesPluginLoaded_1()) { + this.containerEl.createDiv("settings-banner", (banner) => { + banner.createEl("h3", { + text: "⚠️ Daily Notes plugin not enabled", + }); + banner.createEl("p", { + cls: "setting-item-description", + text: "The calendar is best used in conjunction with either the Daily Notes plugin or the Periodic Notes plugin (available in the Community Plugins catalog).", + }); + }); + } + this.containerEl.createEl("h3", { + text: "General Settings", + }); + this.addDotThresholdSetting(); + this.addWeekStartSetting(); + this.addConfirmCreateSetting(); + this.addShowWeeklyNoteSetting(); + if (this.plugin.options.showWeeklyNote && + !appHasPeriodicNotesPluginLoaded()) { + this.containerEl.createEl("h3", { + text: "Weekly Note Settings", + }); + this.containerEl.createEl("p", { + cls: "setting-item-description", + text: "Note: Weekly Note settings are moving. You are encouraged to install the 'Periodic Notes' plugin to keep the functionality in the future.", + }); + this.addWeeklyNoteFormatSetting(); + this.addWeeklyNoteTemplateSetting(); + this.addWeeklyNoteFolderSetting(); + } + this.containerEl.createEl("h3", { + text: "Advanced Settings", + }); + this.addLocaleOverrideSetting(); + } + addDotThresholdSetting() { + new obsidian.Setting(this.containerEl) + .setName("Words per dot") + .setDesc("How many words should be represented by a single dot?") + .addText((textfield) => { + textfield.setPlaceholder(String(DEFAULT_WORDS_PER_DOT)); + textfield.inputEl.type = "number"; + textfield.setValue(String(this.plugin.options.wordsPerDot)); + textfield.onChange(async (value) => { + this.plugin.writeOptions(() => ({ + wordsPerDot: value !== "" ? Number(value) : undefined, + })); + }); + }); + } + addWeekStartSetting() { + const { moment } = window; + const localizedWeekdays = moment.weekdays(); + const localeWeekStartNum = window._bundledLocaleWeekSpec.dow; + const localeWeekStart = moment.weekdays()[localeWeekStartNum]; + new obsidian.Setting(this.containerEl) + .setName("Start week on:") + .setDesc("Choose what day of the week to start. Select 'Locale default' to use the default specified by moment.js") + .addDropdown((dropdown) => { + dropdown.addOption("locale", `Locale default (${localeWeekStart})`); + localizedWeekdays.forEach((day, i) => { + dropdown.addOption(weekdays$1[i], day); + }); + dropdown.setValue(this.plugin.options.weekStart); + dropdown.onChange(async (value) => { + this.plugin.writeOptions(() => ({ + weekStart: value, + })); + }); + }); + } + addConfirmCreateSetting() { + new obsidian.Setting(this.containerEl) + .setName("Confirm before creating new note") + .setDesc("Show a confirmation modal before creating a new note") + .addToggle((toggle) => { + toggle.setValue(this.plugin.options.shouldConfirmBeforeCreate); + toggle.onChange(async (value) => { + this.plugin.writeOptions(() => ({ + shouldConfirmBeforeCreate: value, + })); + }); + }); + } + addShowWeeklyNoteSetting() { + new obsidian.Setting(this.containerEl) + .setName("Show week number") + .setDesc("Enable this to add a column with the week number") + .addToggle((toggle) => { + toggle.setValue(this.plugin.options.showWeeklyNote); + toggle.onChange(async (value) => { + this.plugin.writeOptions(() => ({ showWeeklyNote: value })); + this.display(); // show/hide weekly settings + }); + }); + } + addWeeklyNoteFormatSetting() { + new obsidian.Setting(this.containerEl) + .setName("Weekly note format") + .setDesc("For more syntax help, refer to format reference") + .addText((textfield) => { + textfield.setValue(this.plugin.options.weeklyNoteFormat); + textfield.setPlaceholder(DEFAULT_WEEK_FORMAT); + textfield.onChange(async (value) => { + this.plugin.writeOptions(() => ({ weeklyNoteFormat: value })); + }); + }); + } + addWeeklyNoteTemplateSetting() { + new obsidian.Setting(this.containerEl) + .setName("Weekly note template") + .setDesc("Choose the file you want to use as the template for your weekly notes") + .addText((textfield) => { + textfield.setValue(this.plugin.options.weeklyNoteTemplate); + textfield.onChange(async (value) => { + this.plugin.writeOptions(() => ({ weeklyNoteTemplate: value })); + }); + }); + } + addWeeklyNoteFolderSetting() { + new obsidian.Setting(this.containerEl) + .setName("Weekly note folder") + .setDesc("New weekly notes will be placed here") + .addText((textfield) => { + textfield.setValue(this.plugin.options.weeklyNoteFolder); + textfield.onChange(async (value) => { + this.plugin.writeOptions(() => ({ weeklyNoteFolder: value })); + }); + }); + } + addLocaleOverrideSetting() { + var _a; + const { moment } = window; + const sysLocale = (_a = navigator.language) === null || _a === void 0 ? void 0 : _a.toLowerCase(); + new obsidian.Setting(this.containerEl) + .setName("Override locale:") + .setDesc("Set this if you want to use a locale different from the default") + .addDropdown((dropdown) => { + dropdown.addOption("system-default", `Same as system (${sysLocale})`); + moment.locales().forEach((locale) => { + dropdown.addOption(locale, locale); + }); + dropdown.setValue(this.plugin.options.localeOverride); + dropdown.onChange(async (value) => { + this.plugin.writeOptions(() => ({ + localeOverride: value, + })); + }); + }); + } +} + +const classList = (obj) => { + return Object.entries(obj) + .filter(([_k, v]) => !!v) + .map(([k, _k]) => k); +}; +function clamp(num, lowerBound, upperBound) { + return Math.min(Math.max(lowerBound, num), upperBound); +} +function partition(arr, predicate) { + const pass = []; + const fail = []; + arr.forEach((elem) => { + if (predicate(elem)) { + pass.push(elem); + } + else { + fail.push(elem); + } + }); + return [pass, fail]; +} +/** + * Lookup the dateUID for a given file. It compares the filename + * to the daily and weekly note formats to find a match. + * + * @param file + */ +function getDateUIDFromFile(file) { + if (!file) { + return null; + } + // TODO: I'm not checking the path! + let date = getDateFromFile_1(file, "day"); + if (date) { + return getDateUID_1$1(date, "day"); + } + date = getDateFromFile_1(file, "week"); + if (date) { + return getDateUID_1$1(date, "week"); + } + return null; +} +function getWordCount(text) { + const spaceDelimitedChars = /A-Za-z\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16F1-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC/ + .source; + const nonSpaceDelimitedWords = /\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u4E00-\u9FD5/ + .source; + const pattern = new RegExp([ + `(?:[0-9]+(?:(?:,|\\.)[0-9]+)*|[\\-${spaceDelimitedChars}])+`, + nonSpaceDelimitedWords, + ].join("|"), "g"); + return (text.match(pattern) || []).length; +} + +function createDailyNotesStore() { + let hasError = false; + const store = writable(null); + return Object.assign({ reindex: () => { + try { + const dailyNotes = getAllDailyNotes_1(); + store.set(dailyNotes); + hasError = false; + } + catch (err) { + if (!hasError) { + // Avoid error being shown multiple times + console.log("[Calendar] Failed to find daily notes folder", err); + } + store.set({}); + hasError = true; + } + } }, store); +} +function createWeeklyNotesStore() { + let hasError = false; + const store = writable(null); + return Object.assign({ reindex: () => { + try { + const weeklyNotes = getAllWeeklyNotes_1(); + store.set(weeklyNotes); + hasError = false; + } + catch (err) { + if (!hasError) { + // Avoid error being shown multiple times + console.log("[Calendar] Failed to find weekly notes folder", err); + } + store.set({}); + hasError = true; + } + } }, store); +} +const settings = writable(defaultSettings); +const dailyNotes = createDailyNotesStore(); +const weeklyNotes = createWeeklyNotesStore(); +function createSelectedFileStore() { + const store = writable(null); + return Object.assign({ setFile: (file) => { + const id = getDateUIDFromFile(file); + store.set(id); + } }, store); +} +const activeFile = createSelectedFileStore(); + +class ConfirmationModal extends obsidian.Modal { + constructor(app, config) { + super(app); + const { cta, onAccept, text, title } = config; + this.contentEl.createEl("h2", { text: title }); + this.contentEl.createEl("p", { text }); + this.contentEl.createDiv("modal-button-container", (buttonsEl) => { + buttonsEl + .createEl("button", { text: "Never mind" }) + .addEventListener("click", () => this.close()); + buttonsEl + .createEl("button", { + cls: "mod-cta", + text: cta, + }) + .addEventListener("click", async (e) => { + await onAccept(e); + this.close(); + }); + }); + } +} +function createConfirmationDialog({ cta, onAccept, text, title, }) { + new ConfirmationModal(window.app, { cta, onAccept, text, title }).open(); +} + +/** + * Create a Daily Note for a given date. + */ +async function tryToCreateDailyNote(date, inNewSplit, settings, cb) { + const { workspace } = window.app; + const { format } = getDailyNoteSettings_1(); + const filename = date.format(format); + const createFile = async () => { + const dailyNote = await createDailyNote_1(date); + const leaf = inNewSplit + ? workspace.splitActiveLeaf() + : workspace.getUnpinnedLeaf(); + await leaf.openFile(dailyNote); + cb === null || cb === void 0 ? void 0 : cb(dailyNote); + }; + if (settings.shouldConfirmBeforeCreate) { + createConfirmationDialog({ + cta: "Create", + onAccept: createFile, + text: `File ${filename} does not exist. Would you like to create it?`, + title: "New Daily Note", + }); + } + else { + await createFile(); + } +} + +/** + * Create a Weekly Note for a given date. + */ +async function tryToCreateWeeklyNote(date, inNewSplit, settings, cb) { + const { workspace } = window.app; + const { format } = getWeeklyNoteSettings_1(); + const filename = date.format(format); + const createFile = async () => { + const dailyNote = await createWeeklyNote_1(date); + const leaf = inNewSplit + ? workspace.splitActiveLeaf() + : workspace.getUnpinnedLeaf(); + await leaf.openFile(dailyNote); + cb === null || cb === void 0 ? void 0 : cb(dailyNote); + }; + if (settings.shouldConfirmBeforeCreate) { + createConfirmationDialog({ + cta: "Create", + onAccept: createFile, + text: `File ${filename} does not exist. Would you like to create it?`, + title: "New Weekly Note", + }); + } + else { + await createFile(); + } +} + +function noop() { } +function assign(tar, src) { + // @ts-ignore + for (const k in src) + tar[k] = src[k]; + return tar; +} +function is_promise(value) { + return value && typeof value === 'object' && typeof value.then === 'function'; +} +function run(fn) { + return fn(); +} +function blank_object() { + return Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function is_function(thing) { + return typeof thing === 'function'; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); +} +function not_equal(a, b) { + return a != a ? b == b : a !== b; +} +function is_empty(obj) { + return Object.keys(obj).length === 0; +} +function create_slot(definition, ctx, $$scope, fn) { + if (definition) { + const slot_ctx = get_slot_context(definition, ctx, $$scope, fn); + return definition[0](slot_ctx); + } +} +function get_slot_context(definition, ctx, $$scope, fn) { + return definition[1] && fn + ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) + : $$scope.ctx; +} +function get_slot_changes(definition, $$scope, dirty, fn) { + if (definition[2] && fn) { + const lets = definition[2](fn(dirty)); + if ($$scope.dirty === undefined) { + return lets; + } + if (typeof lets === 'object') { + const merged = []; + const len = Math.max($$scope.dirty.length, lets.length); + for (let i = 0; i < len; i += 1) { + merged[i] = $$scope.dirty[i] | lets[i]; + } + return merged; + } + return $$scope.dirty | lets; + } + return $$scope.dirty; +} +function update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) { + const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn); + if (slot_changes) { + const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn); + slot.p(slot_context, slot_changes); + } +} +function null_to_empty(value) { + return value == null ? '' : value; +} + +function append(target, node) { + target.appendChild(node); +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function detach(node) { + node.parentNode.removeChild(node); +} +function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } +} +function element(name) { + return document.createElement(name); +} +function svg_element(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(' '); +} +function empty() { + return text(''); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); +} +function set_attributes(node, attributes) { + // @ts-ignore + const descriptors = Object.getOwnPropertyDescriptors(node.__proto__); + for (const key in attributes) { + if (attributes[key] == null) { + node.removeAttribute(key); + } + else if (key === 'style') { + node.style.cssText = attributes[key]; + } + else if (key === '__value') { + node.value = node[key] = attributes[key]; + } + else if (descriptors[key] && descriptors[key].set) { + node[key] = attributes[key]; + } + else { + attr(node, key, attributes[key]); + } + } +} +function children(element) { + return Array.from(element.childNodes); +} +function set_data(text, data) { + data = '' + data; + if (text.wholeText !== data) + text.data = data; +} +function toggle_class(element, name, toggle) { + element.classList[toggle ? 'add' : 'remove'](name); +} + +let current_component; +function set_current_component(component) { + current_component = component; +} +function get_current_component() { + if (!current_component) + throw new Error('Function called outside component initialization'); + return current_component; +} + +const dirty_components = []; +const binding_callbacks = []; +const render_callbacks = []; +const flush_callbacks = []; +const resolved_promise = Promise.resolve(); +let update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +let flushing = false; +const seen_callbacks = new Set(); +function flush() { + if (flushing) + return; + flushing = true; + do { + // first, call beforeUpdate functions + // and update components + for (let i = 0; i < dirty_components.length; i += 1) { + const component = dirty_components[i]; + set_current_component(component); + update(component.$$); + } + set_current_component(null); + dirty_components.length = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + // ...so guard against infinite loops + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + flushing = false; + seen_callbacks.clear(); +} +function update($$) { + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } +} +const outroing = new Set(); +let outros; +function group_outros() { + outros = { + r: 0, + c: [], + p: outros // parent group + }; +} +function check_outros() { + if (!outros.r) { + run_all(outros.c); + } + outros = outros.p; +} +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} +function transition_out(block, local, detach, callback) { + if (block && block.o) { + if (outroing.has(block)) + return; + outroing.add(block); + outros.c.push(() => { + outroing.delete(block); + if (callback) { + if (detach) + block.d(1); + callback(); + } + }); + block.o(local); + } +} + +function handle_promise(promise, info) { + const token = info.token = {}; + function update(type, index, key, value) { + if (info.token !== token) + return; + info.resolved = value; + let child_ctx = info.ctx; + if (key !== undefined) { + child_ctx = child_ctx.slice(); + child_ctx[key] = value; + } + const block = type && (info.current = type)(child_ctx); + let needs_flush = false; + if (info.block) { + if (info.blocks) { + info.blocks.forEach((block, i) => { + if (i !== index && block) { + group_outros(); + transition_out(block, 1, 1, () => { + if (info.blocks[i] === block) { + info.blocks[i] = null; + } + }); + check_outros(); + } + }); + } + else { + info.block.d(1); + } + block.c(); + transition_in(block, 1); + block.m(info.mount(), info.anchor); + needs_flush = true; + } + info.block = block; + if (info.blocks) + info.blocks[index] = block; + if (needs_flush) { + flush(); + } + } + if (is_promise(promise)) { + const current_component = get_current_component(); + promise.then(value => { + set_current_component(current_component); + update(info.then, 1, info.value, value); + set_current_component(null); + }, error => { + set_current_component(current_component); + update(info.catch, 2, info.error, error); + set_current_component(null); + if (!info.hasCatch) { + throw error; + } + }); + // if we previously had a then/catch block, destroy it + if (info.current !== info.pending) { + update(info.pending, 0); + return true; + } + } + else { + if (info.current !== info.then) { + update(info.then, 1, info.value, promise); + return true; + } + info.resolved = promise; + } +} +function outro_and_destroy_block(block, lookup) { + transition_out(block, 1, 1, () => { + lookup.delete(block.key); + }); +} +function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) { + let o = old_blocks.length; + let n = list.length; + let i = o; + const old_indexes = {}; + while (i--) + old_indexes[old_blocks[i].key] = i; + const new_blocks = []; + const new_lookup = new Map(); + const deltas = new Map(); + i = n; + while (i--) { + const child_ctx = get_context(ctx, list, i); + const key = get_key(child_ctx); + let block = lookup.get(key); + if (!block) { + block = create_each_block(key, child_ctx); + block.c(); + } + else if (dynamic) { + block.p(child_ctx, dirty); + } + new_lookup.set(key, new_blocks[i] = block); + if (key in old_indexes) + deltas.set(key, Math.abs(i - old_indexes[key])); + } + const will_move = new Set(); + const did_move = new Set(); + function insert(block) { + transition_in(block, 1); + block.m(node, next); + lookup.set(block.key, block); + next = block.first; + n--; + } + while (o && n) { + const new_block = new_blocks[n - 1]; + const old_block = old_blocks[o - 1]; + const new_key = new_block.key; + const old_key = old_block.key; + if (new_block === old_block) { + // do nothing + next = new_block.first; + o--; + n--; + } + else if (!new_lookup.has(old_key)) { + // remove old block + destroy(old_block, lookup); + o--; + } + else if (!lookup.has(new_key) || will_move.has(new_key)) { + insert(new_block); + } + else if (did_move.has(old_key)) { + o--; + } + else if (deltas.get(new_key) > deltas.get(old_key)) { + did_move.add(new_key); + insert(new_block); + } + else { + will_move.add(old_key); + o--; + } + } + while (o--) { + const old_block = old_blocks[o]; + if (!new_lookup.has(old_block.key)) + destroy(old_block, lookup); + } + while (n) + insert(new_blocks[n - 1]); + return new_blocks; +} + +function get_spread_update(levels, updates) { + const update = {}; + const to_null_out = {}; + const accounted_for = { $$scope: 1 }; + let i = levels.length; + while (i--) { + const o = levels[i]; + const n = updates[i]; + if (n) { + for (const key in o) { + if (!(key in n)) + to_null_out[key] = 1; + } + for (const key in n) { + if (!accounted_for[key]) { + update[key] = n[key]; + accounted_for[key] = 1; + } + } + levels[i] = n; + } + else { + for (const key in o) { + accounted_for[key] = 1; + } + } + } + for (const key in to_null_out) { + if (!(key in update)) + update[key] = undefined; + } + return update; +} +function get_spread_object(spread_props) { + return typeof spread_props === 'object' && spread_props !== null ? spread_props : {}; +} +function create_component(block) { + block && block.c(); +} +function mount_component(component, target, anchor, customElement) { + const { fragment, on_mount, on_destroy, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + // onMount happens before the initial afterUpdate + add_render_callback(() => { + const new_on_destroy = on_mount.map(run).filter(is_function); + if (on_destroy) { + on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } +} +function make_dirty(component, i) { + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); +} +function init(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: null, + // state + props, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(parent_component ? parent_component.$$.context : []), + // everything else + callbacks: blank_object(), + dirty, + skip_bound: false + }; + let ready = false; + $$.ctx = instance + ? instance(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty(component, i); + } + return ret; + }) + : []; + $$.update(); + ready = true; + run_all($$.before_update); + // `false` as a special case of no DOM component + $$.fragment = create_fragment ? create_fragment($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + const nodes = children(options.target); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor, options.customElement); + flush(); + } + set_current_component(parent_component); +} +/** + * Base class for Svelte components. Used when dev=false. + */ +class SvelteComponent { + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } +} + +/** + * dateUID is a way of weekly identifying daily/weekly/monthly notes. + * They are prefixed with the granularity to avoid ambiguity. + */ +function getDateUID(date, granularity = "day") { + const ts = date.clone().startOf(granularity).format(); + return `${granularity}-${ts}`; +} +var getDateUID_1 = getDateUID; + +/* src/components/Dot.svelte generated by Svelte v3.35.0 */ + +function add_css$5() { + var style = element("style"); + style.id = "svelte-1widvzq-style"; + style.textContent = ".dot.svelte-1widvzq,.hollow.svelte-1widvzq{display:inline-block;height:6px;width:6px;margin:0 1px}.filled.svelte-1widvzq{fill:var(--color-dot)}.active.filled.svelte-1widvzq{fill:var(--text-on-accent)}.hollow.svelte-1widvzq{fill:none;stroke:var(--color-dot)}.active.hollow.svelte-1widvzq{fill:none;stroke:var(--text-on-accent)}"; + append(document.head, style); +} + +// (14:0) {:else} +function create_else_block$1(ctx) { + let svg; + let circle; + let svg_class_value; + + return { + c() { + svg = svg_element("svg"); + circle = svg_element("circle"); + attr(circle, "cx", "3"); + attr(circle, "cy", "3"); + attr(circle, "r", "2"); + attr(svg, "class", svg_class_value = "" + (null_to_empty(`hollow ${/*className*/ ctx[0]}`) + " svelte-1widvzq")); + attr(svg, "viewBox", "0 0 6 6"); + attr(svg, "xmlns", "http://www.w3.org/2000/svg"); + toggle_class(svg, "active", /*isActive*/ ctx[2]); + }, + m(target, anchor) { + insert(target, svg, anchor); + append(svg, circle); + }, + p(ctx, dirty) { + if (dirty & /*className*/ 1 && svg_class_value !== (svg_class_value = "" + (null_to_empty(`hollow ${/*className*/ ctx[0]}`) + " svelte-1widvzq"))) { + attr(svg, "class", svg_class_value); + } + + if (dirty & /*className, isActive*/ 5) { + toggle_class(svg, "active", /*isActive*/ ctx[2]); + } + }, + d(detaching) { + if (detaching) detach(svg); + } + }; +} + +// (6:0) {#if isFilled} +function create_if_block$2(ctx) { + let svg; + let circle; + let svg_class_value; + + return { + c() { + svg = svg_element("svg"); + circle = svg_element("circle"); + attr(circle, "cx", "3"); + attr(circle, "cy", "3"); + attr(circle, "r", "2"); + attr(svg, "class", svg_class_value = "" + (null_to_empty(`dot filled ${/*className*/ ctx[0]}`) + " svelte-1widvzq")); + attr(svg, "viewBox", "0 0 6 6"); + attr(svg, "xmlns", "http://www.w3.org/2000/svg"); + toggle_class(svg, "active", /*isActive*/ ctx[2]); + }, + m(target, anchor) { + insert(target, svg, anchor); + append(svg, circle); + }, + p(ctx, dirty) { + if (dirty & /*className*/ 1 && svg_class_value !== (svg_class_value = "" + (null_to_empty(`dot filled ${/*className*/ ctx[0]}`) + " svelte-1widvzq"))) { + attr(svg, "class", svg_class_value); + } + + if (dirty & /*className, isActive*/ 5) { + toggle_class(svg, "active", /*isActive*/ ctx[2]); + } + }, + d(detaching) { + if (detaching) detach(svg); + } + }; +} + +function create_fragment$6(ctx) { + let if_block_anchor; + + function select_block_type(ctx, dirty) { + if (/*isFilled*/ ctx[1]) return create_if_block$2; + return create_else_block$1; + } + + let current_block_type = select_block_type(ctx); + let if_block = current_block_type(ctx); + + return { + c() { + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + }, + p(ctx, [dirty]) { + if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) { + if_block.p(ctx, dirty); + } else { + if_block.d(1); + if_block = current_block_type(ctx); + + if (if_block) { + if_block.c(); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } + }, + i: noop, + o: noop, + d(detaching) { + if_block.d(detaching); + if (detaching) detach(if_block_anchor); + } + }; +} + +function instance$6($$self, $$props, $$invalidate) { + let { className = "" } = $$props; + let { isFilled } = $$props; + let { isActive } = $$props; + + $$self.$$set = $$props => { + if ("className" in $$props) $$invalidate(0, className = $$props.className); + if ("isFilled" in $$props) $$invalidate(1, isFilled = $$props.isFilled); + if ("isActive" in $$props) $$invalidate(2, isActive = $$props.isActive); + }; + + return [className, isFilled, isActive]; +} + +class Dot extends SvelteComponent { + constructor(options) { + super(); + if (!document.getElementById("svelte-1widvzq-style")) add_css$5(); + init(this, options, instance$6, create_fragment$6, safe_not_equal, { className: 0, isFilled: 1, isActive: 2 }); + } +} + +/* src/components/MetadataResolver.svelte generated by Svelte v3.35.0 */ + +const get_default_slot_changes_1 = dirty => ({}); +const get_default_slot_context_1 = ctx => ({ metadata: null }); +const get_default_slot_changes = dirty => ({ metadata: dirty & /*metadata*/ 1 }); +const get_default_slot_context = ctx => ({ metadata: /*resolvedMeta*/ ctx[3] }); + +// (11:0) {:else} +function create_else_block(ctx) { + let current; + const default_slot_template = /*#slots*/ ctx[2].default; + const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[1], get_default_slot_context_1); + + return { + c() { + if (default_slot) default_slot.c(); + }, + m(target, anchor) { + if (default_slot) { + default_slot.m(target, anchor); + } + + current = true; + }, + p(ctx, dirty) { + if (default_slot) { + if (default_slot.p && dirty & /*$$scope*/ 2) { + update_slot(default_slot, default_slot_template, ctx, /*$$scope*/ ctx[1], dirty, get_default_slot_changes_1, get_default_slot_context_1); + } + } + }, + i(local) { + if (current) return; + transition_in(default_slot, local); + current = true; + }, + o(local) { + transition_out(default_slot, local); + current = false; + }, + d(detaching) { + if (default_slot) default_slot.d(detaching); + } + }; +} + +// (7:0) {#if metadata} +function create_if_block$1(ctx) { + let await_block_anchor; + let promise; + let current; + + let info = { + ctx, + current: null, + token: null, + hasCatch: false, + pending: create_pending_block, + then: create_then_block, + catch: create_catch_block, + value: 3, + blocks: [,,,] + }; + + handle_promise(promise = /*metadata*/ ctx[0], info); + + return { + c() { + await_block_anchor = empty(); + info.block.c(); + }, + m(target, anchor) { + insert(target, await_block_anchor, anchor); + info.block.m(target, info.anchor = anchor); + info.mount = () => await_block_anchor.parentNode; + info.anchor = await_block_anchor; + current = true; + }, + p(new_ctx, dirty) { + ctx = new_ctx; + info.ctx = ctx; + + if (dirty & /*metadata*/ 1 && promise !== (promise = /*metadata*/ ctx[0]) && handle_promise(promise, info)) ; else { + const child_ctx = ctx.slice(); + child_ctx[3] = info.resolved; + info.block.p(child_ctx, dirty); + } + }, + i(local) { + if (current) return; + transition_in(info.block); + current = true; + }, + o(local) { + for (let i = 0; i < 3; i += 1) { + const block = info.blocks[i]; + transition_out(block); + } + + current = false; + }, + d(detaching) { + if (detaching) detach(await_block_anchor); + info.block.d(detaching); + info.token = null; + info = null; + } + }; +} + +// (1:0) {#if metadata} +function create_catch_block(ctx) { + return { + c: noop, + m: noop, + p: noop, + i: noop, + o: noop, + d: noop + }; +} + +// (8:37) ; export let metadata; {#if metadata} +function create_pending_block(ctx) { + return { + c: noop, + m: noop, + p: noop, + i: noop, + o: noop, + d: noop + }; +} + +function create_fragment$5(ctx) { + let current_block_type_index; + let if_block; + let if_block_anchor; + let current; + const if_block_creators = [create_if_block$1, create_else_block]; + const if_blocks = []; + + function select_block_type(ctx, dirty) { + if (/*metadata*/ ctx[0]) return 0; + return 1; + } + + current_block_type_index = select_block_type(ctx); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + + return { + c() { + if_block.c(); + if_block_anchor = empty(); + }, + m(target, anchor) { + if_blocks[current_block_type_index].m(target, anchor); + insert(target, if_block_anchor, anchor); + current = true; + }, + p(ctx, [dirty]) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type(ctx); + + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx, dirty); + } else { + group_outros(); + + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + + check_outros(); + if_block = if_blocks[current_block_type_index]; + + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + if_block.c(); + } else { + if_block.p(ctx, dirty); + } + + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + }, + i(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if_blocks[current_block_type_index].d(detaching); + if (detaching) detach(if_block_anchor); + } + }; +} + +function instance$5($$self, $$props, $$invalidate) { + let { $$slots: slots = {}, $$scope } = $$props; + + let { metadata } = $$props; + + $$self.$$set = $$props => { + if ("metadata" in $$props) $$invalidate(0, metadata = $$props.metadata); + if ("$$scope" in $$props) $$invalidate(1, $$scope = $$props.$$scope); + }; + + return [metadata, $$scope, slots]; +} + +class MetadataResolver extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$5, create_fragment$5, not_equal, { metadata: 0 }); + } +} + +function isMacOS() { + return navigator.appVersion.indexOf("Mac") !== -1; +} +function isMetaPressed(e) { + return isMacOS() ? e.metaKey : e.ctrlKey; +} +function getDaysOfWeek(..._args) { + return window.moment.weekdaysShort(true); +} +function isWeekend(date) { + return date.isoWeekday() === 6 || date.isoWeekday() === 7; +} +function getStartOfWeek(days) { + return days[0].weekday(0); +} +/** + * Generate a 2D array of daily information to power + * the calendar view. + */ +function getMonth(displayedMonth, ..._args) { + const locale = window.moment().locale(); + const month = []; + let week; + const startOfMonth = displayedMonth.clone().locale(locale).date(1); + const startOffset = startOfMonth.weekday(); + let date = startOfMonth.clone().subtract(startOffset, "days"); + for (let _day = 0; _day < 42; _day++) { + if (_day % 7 === 0) { + week = { + days: [], + weekNum: date.week(), + }; + month.push(week); + } + week.days.push(date); + date = date.clone().add(1, "days"); + } + return month; +} + +/* src/components/Day.svelte generated by Svelte v3.35.0 */ + +function add_css$4() { + var style = element("style"); + style.id = "svelte-q3wqg9-style"; + style.textContent = ".day.svelte-q3wqg9{background-color:var(--color-background-day);border-radius:4px;color:var(--color-text-day);cursor:pointer;font-size:0.8em;height:100%;padding:4px;position:relative;text-align:center;transition:background-color 0.1s ease-in, color 0.1s ease-in;vertical-align:baseline}.day.svelte-q3wqg9:hover{background-color:var(--interactive-hover)}.day.active.svelte-q3wqg9:hover{background-color:var(--interactive-accent-hover)}.adjacent-month.svelte-q3wqg9{opacity:0.25}.today.svelte-q3wqg9{color:var(--color-text-today)}.day.svelte-q3wqg9:active,.active.svelte-q3wqg9,.active.today.svelte-q3wqg9{color:var(--text-on-accent);background-color:var(--interactive-accent)}.dot-container.svelte-q3wqg9{display:flex;flex-wrap:wrap;justify-content:center;line-height:6px;min-height:6px}"; + append(document.head, style); +} + +function get_each_context$2(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[11] = list[i]; + return child_ctx; +} + +// (36:8) {#each metadata.dots as dot} +function create_each_block$2(ctx) { + let dot; + let current; + const dot_spread_levels = [/*dot*/ ctx[11]]; + let dot_props = {}; + + for (let i = 0; i < dot_spread_levels.length; i += 1) { + dot_props = assign(dot_props, dot_spread_levels[i]); + } + + dot = new Dot({ props: dot_props }); + + return { + c() { + create_component(dot.$$.fragment); + }, + m(target, anchor) { + mount_component(dot, target, anchor); + current = true; + }, + p(ctx, dirty) { + const dot_changes = (dirty & /*metadata*/ 128) + ? get_spread_update(dot_spread_levels, [get_spread_object(/*dot*/ ctx[11])]) + : {}; + + dot.$set(dot_changes); + }, + i(local) { + if (current) return; + transition_in(dot.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(dot.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(dot, detaching); + } + }; +} + +// (22:2) +function create_default_slot$1(ctx) { + let div1; + let t0_value = /*date*/ ctx[0].format("D") + ""; + let t0; + let t1; + let div0; + let div1_class_value; + let current; + let mounted; + let dispose; + let each_value = /*metadata*/ ctx[7].dots; + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i)); + } + + const out = i => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); + + let div1_levels = [ + { + class: div1_class_value = `day ${/*metadata*/ ctx[7].classes.join(" ")}` + }, + /*metadata*/ ctx[7].dataAttributes || {} + ]; + + let div1_data = {}; + + for (let i = 0; i < div1_levels.length; i += 1) { + div1_data = assign(div1_data, div1_levels[i]); + } + + return { + c() { + div1 = element("div"); + t0 = text(t0_value); + t1 = space(); + div0 = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + attr(div0, "class", "dot-container svelte-q3wqg9"); + set_attributes(div1, div1_data); + toggle_class(div1, "active", /*selectedId*/ ctx[6] === getDateUID_1(/*date*/ ctx[0], "day")); + toggle_class(div1, "adjacent-month", !/*date*/ ctx[0].isSame(/*displayedMonth*/ ctx[5], "month")); + toggle_class(div1, "today", /*date*/ ctx[0].isSame(/*today*/ ctx[4], "day")); + toggle_class(div1, "svelte-q3wqg9", true); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, t0); + append(div1, t1); + append(div1, div0); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div0, null); + } + + current = true; + + if (!mounted) { + dispose = [ + listen(div1, "click", function () { + if (is_function(/*onClick*/ ctx[2] && /*click_handler*/ ctx[8])) (/*onClick*/ ctx[2] && /*click_handler*/ ctx[8]).apply(this, arguments); + }), + listen(div1, "contextmenu", function () { + if (is_function(/*onContextMenu*/ ctx[3] && /*contextmenu_handler*/ ctx[9])) (/*onContextMenu*/ ctx[3] && /*contextmenu_handler*/ ctx[9]).apply(this, arguments); + }), + listen(div1, "pointerover", function () { + if (is_function(/*onHover*/ ctx[1] && /*pointerover_handler*/ ctx[10])) (/*onHover*/ ctx[1] && /*pointerover_handler*/ ctx[10]).apply(this, arguments); + }) + ]; + + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + if ((!current || dirty & /*date*/ 1) && t0_value !== (t0_value = /*date*/ ctx[0].format("D") + "")) set_data(t0, t0_value); + + if (dirty & /*metadata*/ 128) { + each_value = /*metadata*/ ctx[7].dots; + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context$2(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block$2(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(div0, null); + } + } + + group_outros(); + + for (i = each_value.length; i < each_blocks.length; i += 1) { + out(i); + } + + check_outros(); + } + + set_attributes(div1, div1_data = get_spread_update(div1_levels, [ + (!current || dirty & /*metadata*/ 128 && div1_class_value !== (div1_class_value = `day ${/*metadata*/ ctx[7].classes.join(" ")}`)) && { class: div1_class_value }, + dirty & /*metadata*/ 128 && (/*metadata*/ ctx[7].dataAttributes || {}) + ])); + + toggle_class(div1, "active", /*selectedId*/ ctx[6] === getDateUID_1(/*date*/ ctx[0], "day")); + toggle_class(div1, "adjacent-month", !/*date*/ ctx[0].isSame(/*displayedMonth*/ ctx[5], "month")); + toggle_class(div1, "today", /*date*/ ctx[0].isSame(/*today*/ ctx[4], "day")); + toggle_class(div1, "svelte-q3wqg9", true); + }, + i(local) { + if (current) return; + + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); + + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + + current = false; + }, + d(detaching) { + if (detaching) detach(div1); + destroy_each(each_blocks, detaching); + mounted = false; + run_all(dispose); + } + }; +} + +function create_fragment$4(ctx) { + let td; + let metadataresolver; + let current; + + metadataresolver = new MetadataResolver({ + props: { + metadata: /*metadata*/ ctx[7], + $$slots: { + default: [ + create_default_slot$1, + ({ metadata }) => ({ 7: metadata }), + ({ metadata }) => metadata ? 128 : 0 + ] + }, + $$scope: { ctx } + } + }); + + return { + c() { + td = element("td"); + create_component(metadataresolver.$$.fragment); + }, + m(target, anchor) { + insert(target, td, anchor); + mount_component(metadataresolver, td, null); + current = true; + }, + p(ctx, [dirty]) { + const metadataresolver_changes = {}; + if (dirty & /*metadata*/ 128) metadataresolver_changes.metadata = /*metadata*/ ctx[7]; + + if (dirty & /*$$scope, metadata, selectedId, date, displayedMonth, today, onClick, onContextMenu, onHover*/ 16639) { + metadataresolver_changes.$$scope = { dirty, ctx }; + } + + metadataresolver.$set(metadataresolver_changes); + }, + i(local) { + if (current) return; + transition_in(metadataresolver.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(metadataresolver.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) detach(td); + destroy_component(metadataresolver); + } + }; +} + +function instance$4($$self, $$props, $$invalidate) { + + + let { date } = $$props; + let { metadata } = $$props; + let { onHover } = $$props; + let { onClick } = $$props; + let { onContextMenu } = $$props; + let { today } = $$props; + let { displayedMonth = null } = $$props; + let { selectedId = null } = $$props; + const click_handler = e => onClick(date, isMetaPressed(e)); + const contextmenu_handler = e => onContextMenu(date, e); + const pointerover_handler = e => onHover(date, e.target, isMetaPressed(e)); + + $$self.$$set = $$props => { + if ("date" in $$props) $$invalidate(0, date = $$props.date); + if ("metadata" in $$props) $$invalidate(7, metadata = $$props.metadata); + if ("onHover" in $$props) $$invalidate(1, onHover = $$props.onHover); + if ("onClick" in $$props) $$invalidate(2, onClick = $$props.onClick); + if ("onContextMenu" in $$props) $$invalidate(3, onContextMenu = $$props.onContextMenu); + if ("today" in $$props) $$invalidate(4, today = $$props.today); + if ("displayedMonth" in $$props) $$invalidate(5, displayedMonth = $$props.displayedMonth); + if ("selectedId" in $$props) $$invalidate(6, selectedId = $$props.selectedId); + }; + + return [ + date, + onHover, + onClick, + onContextMenu, + today, + displayedMonth, + selectedId, + metadata, + click_handler, + contextmenu_handler, + pointerover_handler + ]; +} + +class Day extends SvelteComponent { + constructor(options) { + super(); + if (!document.getElementById("svelte-q3wqg9-style")) add_css$4(); + + init(this, options, instance$4, create_fragment$4, not_equal, { + date: 0, + metadata: 7, + onHover: 1, + onClick: 2, + onContextMenu: 3, + today: 4, + displayedMonth: 5, + selectedId: 6 + }); + } +} + +/* src/components/Arrow.svelte generated by Svelte v3.35.0 */ + +function add_css$3() { + var style = element("style"); + style.id = "svelte-156w7na-style"; + style.textContent = ".arrow.svelte-156w7na.svelte-156w7na{align-items:center;cursor:pointer;display:flex;justify-content:center;width:24px}.arrow.is-mobile.svelte-156w7na.svelte-156w7na{width:32px}.right.svelte-156w7na.svelte-156w7na{transform:rotate(180deg)}.arrow.svelte-156w7na svg.svelte-156w7na{color:var(--color-arrow);height:16px;width:16px}"; + append(document.head, style); +} + +function create_fragment$3(ctx) { + let div; + let svg; + let path; + let mounted; + let dispose; + + return { + c() { + div = element("div"); + svg = svg_element("svg"); + path = svg_element("path"); + attr(path, "fill", "currentColor"); + attr(path, "d", "M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z"); + attr(svg, "focusable", "false"); + attr(svg, "role", "img"); + attr(svg, "xmlns", "http://www.w3.org/2000/svg"); + attr(svg, "viewBox", "0 0 320 512"); + attr(svg, "class", "svelte-156w7na"); + attr(div, "class", "arrow svelte-156w7na"); + attr(div, "aria-label", /*tooltip*/ ctx[1]); + toggle_class(div, "is-mobile", /*isMobile*/ ctx[3]); + toggle_class(div, "right", /*direction*/ ctx[2] === "right"); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, svg); + append(svg, path); + + if (!mounted) { + dispose = listen(div, "click", function () { + if (is_function(/*onClick*/ ctx[0])) /*onClick*/ ctx[0].apply(this, arguments); + }); + + mounted = true; + } + }, + p(new_ctx, [dirty]) { + ctx = new_ctx; + + if (dirty & /*tooltip*/ 2) { + attr(div, "aria-label", /*tooltip*/ ctx[1]); + } + + if (dirty & /*direction*/ 4) { + toggle_class(div, "right", /*direction*/ ctx[2] === "right"); + } + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) detach(div); + mounted = false; + dispose(); + } + }; +} + +function instance$3($$self, $$props, $$invalidate) { + let { onClick } = $$props; + let { tooltip } = $$props; + let { direction } = $$props; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let isMobile = window.app.isMobile; + + $$self.$$set = $$props => { + if ("onClick" in $$props) $$invalidate(0, onClick = $$props.onClick); + if ("tooltip" in $$props) $$invalidate(1, tooltip = $$props.tooltip); + if ("direction" in $$props) $$invalidate(2, direction = $$props.direction); + }; + + return [onClick, tooltip, direction, isMobile]; +} + +class Arrow extends SvelteComponent { + constructor(options) { + super(); + if (!document.getElementById("svelte-156w7na-style")) add_css$3(); + init(this, options, instance$3, create_fragment$3, safe_not_equal, { onClick: 0, tooltip: 1, direction: 2 }); + } +} + +/* src/components/Nav.svelte generated by Svelte v3.35.0 */ + +function add_css$2() { + var style = element("style"); + style.id = "svelte-1vwr9dd-style"; + style.textContent = ".nav.svelte-1vwr9dd.svelte-1vwr9dd{align-items:center;display:flex;margin:0.6em 0 1em;padding:0 8px;width:100%}.nav.is-mobile.svelte-1vwr9dd.svelte-1vwr9dd{padding:0}.title.svelte-1vwr9dd.svelte-1vwr9dd{color:var(--color-text-title);font-size:1.5em;margin:0}.is-mobile.svelte-1vwr9dd .title.svelte-1vwr9dd{font-size:1.3em}.month.svelte-1vwr9dd.svelte-1vwr9dd{font-weight:500;text-transform:capitalize}.year.svelte-1vwr9dd.svelte-1vwr9dd{color:var(--interactive-accent)}.right-nav.svelte-1vwr9dd.svelte-1vwr9dd{display:flex;justify-content:center;margin-left:auto}.reset-button.svelte-1vwr9dd.svelte-1vwr9dd{cursor:pointer;border-radius:4px;color:var(--text-muted);font-size:0.7em;font-weight:600;letter-spacing:1px;margin:0 4px;padding:0px 4px;text-transform:uppercase}.is-mobile.svelte-1vwr9dd .reset-button.svelte-1vwr9dd{display:none}"; + append(document.head, style); +} + +function create_fragment$2(ctx) { + let div2; + let h3; + let span0; + let t0_value = /*displayedMonth*/ ctx[0].format("MMM") + ""; + let t0; + let t1; + let span1; + let t2_value = /*displayedMonth*/ ctx[0].format("YYYY") + ""; + let t2; + let t3; + let div1; + let arrow0; + let t4; + let div0; + let t6; + let arrow1; + let current; + let mounted; + let dispose; + + arrow0 = new Arrow({ + props: { + direction: "left", + onClick: /*decrementDisplayedMonth*/ ctx[3], + tooltip: "Previous Month" + } + }); + + arrow1 = new Arrow({ + props: { + direction: "right", + onClick: /*incrementDisplayedMonth*/ ctx[2], + tooltip: "Next Month" + } + }); + + return { + c() { + div2 = element("div"); + h3 = element("h3"); + span0 = element("span"); + t0 = text(t0_value); + t1 = space(); + span1 = element("span"); + t2 = text(t2_value); + t3 = space(); + div1 = element("div"); + create_component(arrow0.$$.fragment); + t4 = space(); + div0 = element("div"); + div0.textContent = `${/*todayDisplayStr*/ ctx[4]}`; + t6 = space(); + create_component(arrow1.$$.fragment); + attr(span0, "class", "month svelte-1vwr9dd"); + attr(span1, "class", "year svelte-1vwr9dd"); + attr(h3, "class", "title svelte-1vwr9dd"); + attr(div0, "class", "reset-button svelte-1vwr9dd"); + attr(div1, "class", "right-nav svelte-1vwr9dd"); + attr(div2, "class", "nav svelte-1vwr9dd"); + toggle_class(div2, "is-mobile", /*isMobile*/ ctx[5]); + }, + m(target, anchor) { + insert(target, div2, anchor); + append(div2, h3); + append(h3, span0); + append(span0, t0); + append(h3, t1); + append(h3, span1); + append(span1, t2); + append(div2, t3); + append(div2, div1); + mount_component(arrow0, div1, null); + append(div1, t4); + append(div1, div0); + append(div1, t6); + mount_component(arrow1, div1, null); + current = true; + + if (!mounted) { + dispose = [ + listen(h3, "click", function () { + if (is_function(/*resetDisplayedMonth*/ ctx[1])) /*resetDisplayedMonth*/ ctx[1].apply(this, arguments); + }), + listen(div0, "click", function () { + if (is_function(/*resetDisplayedMonth*/ ctx[1])) /*resetDisplayedMonth*/ ctx[1].apply(this, arguments); + }) + ]; + + mounted = true; + } + }, + p(new_ctx, [dirty]) { + ctx = new_ctx; + if ((!current || dirty & /*displayedMonth*/ 1) && t0_value !== (t0_value = /*displayedMonth*/ ctx[0].format("MMM") + "")) set_data(t0, t0_value); + if ((!current || dirty & /*displayedMonth*/ 1) && t2_value !== (t2_value = /*displayedMonth*/ ctx[0].format("YYYY") + "")) set_data(t2, t2_value); + const arrow0_changes = {}; + if (dirty & /*decrementDisplayedMonth*/ 8) arrow0_changes.onClick = /*decrementDisplayedMonth*/ ctx[3]; + arrow0.$set(arrow0_changes); + const arrow1_changes = {}; + if (dirty & /*incrementDisplayedMonth*/ 4) arrow1_changes.onClick = /*incrementDisplayedMonth*/ ctx[2]; + arrow1.$set(arrow1_changes); + }, + i(local) { + if (current) return; + transition_in(arrow0.$$.fragment, local); + transition_in(arrow1.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(arrow0.$$.fragment, local); + transition_out(arrow1.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) detach(div2); + destroy_component(arrow0); + destroy_component(arrow1); + mounted = false; + run_all(dispose); + } + }; +} + +function instance$2($$self, $$props, $$invalidate) { + + let { displayedMonth } = $$props; + let { today } = $$props; + let { resetDisplayedMonth } = $$props; + let { incrementDisplayedMonth } = $$props; + let { decrementDisplayedMonth } = $$props; + + // Get the word 'Today' but localized to the current language + const todayDisplayStr = today.calendar().split(/\d|\s/)[0]; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let isMobile = window.app.isMobile; + + $$self.$$set = $$props => { + if ("displayedMonth" in $$props) $$invalidate(0, displayedMonth = $$props.displayedMonth); + if ("today" in $$props) $$invalidate(6, today = $$props.today); + if ("resetDisplayedMonth" in $$props) $$invalidate(1, resetDisplayedMonth = $$props.resetDisplayedMonth); + if ("incrementDisplayedMonth" in $$props) $$invalidate(2, incrementDisplayedMonth = $$props.incrementDisplayedMonth); + if ("decrementDisplayedMonth" in $$props) $$invalidate(3, decrementDisplayedMonth = $$props.decrementDisplayedMonth); + }; + + return [ + displayedMonth, + resetDisplayedMonth, + incrementDisplayedMonth, + decrementDisplayedMonth, + todayDisplayStr, + isMobile, + today + ]; +} + +class Nav extends SvelteComponent { + constructor(options) { + super(); + if (!document.getElementById("svelte-1vwr9dd-style")) add_css$2(); + + init(this, options, instance$2, create_fragment$2, safe_not_equal, { + displayedMonth: 0, + today: 6, + resetDisplayedMonth: 1, + incrementDisplayedMonth: 2, + decrementDisplayedMonth: 3 + }); + } +} + +/* src/components/WeekNum.svelte generated by Svelte v3.35.0 */ + +function add_css$1() { + var style = element("style"); + style.id = "svelte-egt0yd-style"; + style.textContent = "td.svelte-egt0yd{border-right:1px solid var(--background-modifier-border)}.week-num.svelte-egt0yd{background-color:var(--color-background-weeknum);border-radius:4px;color:var(--color-text-weeknum);cursor:pointer;font-size:0.65em;height:100%;padding:4px;text-align:center;transition:background-color 0.1s ease-in, color 0.1s ease-in;vertical-align:baseline}.week-num.svelte-egt0yd:hover{background-color:var(--interactive-hover)}.week-num.active.svelte-egt0yd:hover{background-color:var(--interactive-accent-hover)}.active.svelte-egt0yd{color:var(--text-on-accent);background-color:var(--interactive-accent)}.dot-container.svelte-egt0yd{display:flex;flex-wrap:wrap;justify-content:center;line-height:6px;min-height:6px}"; + append(document.head, style); +} + +function get_each_context$1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[11] = list[i]; + return child_ctx; +} + +// (35:8) {#each metadata.dots as dot} +function create_each_block$1(ctx) { + let dot; + let current; + const dot_spread_levels = [/*dot*/ ctx[11]]; + let dot_props = {}; + + for (let i = 0; i < dot_spread_levels.length; i += 1) { + dot_props = assign(dot_props, dot_spread_levels[i]); + } + + dot = new Dot({ props: dot_props }); + + return { + c() { + create_component(dot.$$.fragment); + }, + m(target, anchor) { + mount_component(dot, target, anchor); + current = true; + }, + p(ctx, dirty) { + const dot_changes = (dirty & /*metadata*/ 64) + ? get_spread_update(dot_spread_levels, [get_spread_object(/*dot*/ ctx[11])]) + : {}; + + dot.$set(dot_changes); + }, + i(local) { + if (current) return; + transition_in(dot.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(dot.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(dot, detaching); + } + }; +} + +// (24:2) +function create_default_slot(ctx) { + let div1; + let t0; + let t1; + let div0; + let div1_class_value; + let current; + let mounted; + let dispose; + let each_value = /*metadata*/ ctx[6].dots; + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i)); + } + + const out = i => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); + + return { + c() { + div1 = element("div"); + t0 = text(/*weekNum*/ ctx[0]); + t1 = space(); + div0 = element("div"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + attr(div0, "class", "dot-container svelte-egt0yd"); + attr(div1, "class", div1_class_value = "" + (null_to_empty(`week-num ${/*metadata*/ ctx[6].classes.join(" ")}`) + " svelte-egt0yd")); + toggle_class(div1, "active", /*selectedId*/ ctx[5] === getDateUID_1(/*days*/ ctx[1][0], "week")); + }, + m(target, anchor) { + insert(target, div1, anchor); + append(div1, t0); + append(div1, t1); + append(div1, div0); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(div0, null); + } + + current = true; + + if (!mounted) { + dispose = [ + listen(div1, "click", function () { + if (is_function(/*onClick*/ ctx[3] && /*click_handler*/ ctx[8])) (/*onClick*/ ctx[3] && /*click_handler*/ ctx[8]).apply(this, arguments); + }), + listen(div1, "contextmenu", function () { + if (is_function(/*onContextMenu*/ ctx[4] && /*contextmenu_handler*/ ctx[9])) (/*onContextMenu*/ ctx[4] && /*contextmenu_handler*/ ctx[9]).apply(this, arguments); + }), + listen(div1, "pointerover", function () { + if (is_function(/*onHover*/ ctx[2] && /*pointerover_handler*/ ctx[10])) (/*onHover*/ ctx[2] && /*pointerover_handler*/ ctx[10]).apply(this, arguments); + }) + ]; + + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + if (!current || dirty & /*weekNum*/ 1) set_data(t0, /*weekNum*/ ctx[0]); + + if (dirty & /*metadata*/ 64) { + each_value = /*metadata*/ ctx[6].dots; + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context$1(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block$1(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(div0, null); + } + } + + group_outros(); + + for (i = each_value.length; i < each_blocks.length; i += 1) { + out(i); + } + + check_outros(); + } + + if (!current || dirty & /*metadata*/ 64 && div1_class_value !== (div1_class_value = "" + (null_to_empty(`week-num ${/*metadata*/ ctx[6].classes.join(" ")}`) + " svelte-egt0yd"))) { + attr(div1, "class", div1_class_value); + } + + if (dirty & /*metadata, selectedId, getDateUID, days*/ 98) { + toggle_class(div1, "active", /*selectedId*/ ctx[5] === getDateUID_1(/*days*/ ctx[1][0], "week")); + } + }, + i(local) { + if (current) return; + + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + + current = true; + }, + o(local) { + each_blocks = each_blocks.filter(Boolean); + + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + + current = false; + }, + d(detaching) { + if (detaching) detach(div1); + destroy_each(each_blocks, detaching); + mounted = false; + run_all(dispose); + } + }; +} + +function create_fragment$1(ctx) { + let td; + let metadataresolver; + let current; + + metadataresolver = new MetadataResolver({ + props: { + metadata: /*metadata*/ ctx[6], + $$slots: { + default: [ + create_default_slot, + ({ metadata }) => ({ 6: metadata }), + ({ metadata }) => metadata ? 64 : 0 + ] + }, + $$scope: { ctx } + } + }); + + return { + c() { + td = element("td"); + create_component(metadataresolver.$$.fragment); + attr(td, "class", "svelte-egt0yd"); + }, + m(target, anchor) { + insert(target, td, anchor); + mount_component(metadataresolver, td, null); + current = true; + }, + p(ctx, [dirty]) { + const metadataresolver_changes = {}; + if (dirty & /*metadata*/ 64) metadataresolver_changes.metadata = /*metadata*/ ctx[6]; + + if (dirty & /*$$scope, metadata, selectedId, days, onClick, startOfWeek, onContextMenu, onHover, weekNum*/ 16639) { + metadataresolver_changes.$$scope = { dirty, ctx }; + } + + metadataresolver.$set(metadataresolver_changes); + }, + i(local) { + if (current) return; + transition_in(metadataresolver.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(metadataresolver.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) detach(td); + destroy_component(metadataresolver); + } + }; +} + +function instance$1($$self, $$props, $$invalidate) { + + + let { weekNum } = $$props; + let { days } = $$props; + let { metadata } = $$props; + let { onHover } = $$props; + let { onClick } = $$props; + let { onContextMenu } = $$props; + let { selectedId = null } = $$props; + let startOfWeek; + const click_handler = e => onClick(startOfWeek, isMetaPressed(e)); + const contextmenu_handler = e => onContextMenu(days[0], e); + const pointerover_handler = e => onHover(startOfWeek, e.target, isMetaPressed(e)); + + $$self.$$set = $$props => { + if ("weekNum" in $$props) $$invalidate(0, weekNum = $$props.weekNum); + if ("days" in $$props) $$invalidate(1, days = $$props.days); + if ("metadata" in $$props) $$invalidate(6, metadata = $$props.metadata); + if ("onHover" in $$props) $$invalidate(2, onHover = $$props.onHover); + if ("onClick" in $$props) $$invalidate(3, onClick = $$props.onClick); + if ("onContextMenu" in $$props) $$invalidate(4, onContextMenu = $$props.onContextMenu); + if ("selectedId" in $$props) $$invalidate(5, selectedId = $$props.selectedId); + }; + + $$self.$$.update = () => { + if ($$self.$$.dirty & /*days*/ 2) { + $$invalidate(7, startOfWeek = getStartOfWeek(days)); + } + }; + + return [ + weekNum, + days, + onHover, + onClick, + onContextMenu, + selectedId, + metadata, + startOfWeek, + click_handler, + contextmenu_handler, + pointerover_handler + ]; +} + +class WeekNum extends SvelteComponent { + constructor(options) { + super(); + if (!document.getElementById("svelte-egt0yd-style")) add_css$1(); + + init(this, options, instance$1, create_fragment$1, not_equal, { + weekNum: 0, + days: 1, + metadata: 6, + onHover: 2, + onClick: 3, + onContextMenu: 4, + selectedId: 5 + }); + } +} + +async function metadataReducer(promisedMetadata) { + const meta = { + dots: [], + classes: [], + dataAttributes: {}, + }; + const metas = await Promise.all(promisedMetadata); + return metas.reduce((acc, meta) => ({ + classes: [...acc.classes, ...(meta.classes || [])], + dataAttributes: Object.assign(acc.dataAttributes, meta.dataAttributes), + dots: [...acc.dots, ...(meta.dots || [])], + }), meta); +} +function getDailyMetadata(sources, date, ..._args) { + return metadataReducer(sources.map((source) => source.getDailyMetadata(date))); +} +function getWeeklyMetadata(sources, date, ..._args) { + return metadataReducer(sources.map((source) => source.getWeeklyMetadata(date))); +} + +/* src/components/Calendar.svelte generated by Svelte v3.35.0 */ + +function add_css() { + var style = element("style"); + style.id = "svelte-pcimu8-style"; + style.textContent = ".container.svelte-pcimu8{--color-background-heading:transparent;--color-background-day:transparent;--color-background-weeknum:transparent;--color-background-weekend:transparent;--color-dot:var(--text-muted);--color-arrow:var(--text-muted);--color-button:var(--text-muted);--color-text-title:var(--text-normal);--color-text-heading:var(--text-muted);--color-text-day:var(--text-normal);--color-text-today:var(--interactive-accent);--color-text-weeknum:var(--text-muted)}.container.svelte-pcimu8{padding:0 8px}.container.is-mobile.svelte-pcimu8{padding:0}th.svelte-pcimu8{text-align:center}.weekend.svelte-pcimu8{background-color:var(--color-background-weekend)}.calendar.svelte-pcimu8{border-collapse:collapse;width:100%}th.svelte-pcimu8{background-color:var(--color-background-heading);color:var(--color-text-heading);font-size:0.6em;letter-spacing:1px;padding:4px;text-transform:uppercase}"; + append(document.head, style); +} + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[18] = list[i]; + return child_ctx; +} + +function get_each_context_1(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[21] = list[i]; + return child_ctx; +} + +function get_each_context_2(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[24] = list[i]; + return child_ctx; +} + +function get_each_context_3(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[27] = list[i]; + return child_ctx; +} + +// (55:6) {#if showWeekNums} +function create_if_block_2(ctx) { + let col; + + return { + c() { + col = element("col"); + }, + m(target, anchor) { + insert(target, col, anchor); + }, + d(detaching) { + if (detaching) detach(col); + } + }; +} + +// (58:6) {#each month[1].days as date} +function create_each_block_3(ctx) { + let col; + + return { + c() { + col = element("col"); + attr(col, "class", "svelte-pcimu8"); + toggle_class(col, "weekend", isWeekend(/*date*/ ctx[27])); + }, + m(target, anchor) { + insert(target, col, anchor); + }, + p(ctx, dirty) { + if (dirty & /*isWeekend, month*/ 16384) { + toggle_class(col, "weekend", isWeekend(/*date*/ ctx[27])); + } + }, + d(detaching) { + if (detaching) detach(col); + } + }; +} + +// (64:8) {#if showWeekNums} +function create_if_block_1(ctx) { + let th; + + return { + c() { + th = element("th"); + th.textContent = "W"; + attr(th, "class", "svelte-pcimu8"); + }, + m(target, anchor) { + insert(target, th, anchor); + }, + d(detaching) { + if (detaching) detach(th); + } + }; +} + +// (67:8) {#each daysOfWeek as dayOfWeek} +function create_each_block_2(ctx) { + let th; + let t_value = /*dayOfWeek*/ ctx[24] + ""; + let t; + + return { + c() { + th = element("th"); + t = text(t_value); + attr(th, "class", "svelte-pcimu8"); + }, + m(target, anchor) { + insert(target, th, anchor); + append(th, t); + }, + p(ctx, dirty) { + if (dirty & /*daysOfWeek*/ 32768 && t_value !== (t_value = /*dayOfWeek*/ ctx[24] + "")) set_data(t, t_value); + }, + d(detaching) { + if (detaching) detach(th); + } + }; +} + +// (75:10) {#if showWeekNums} +function create_if_block(ctx) { + let weeknum; + let current; + + const weeknum_spread_levels = [ + /*week*/ ctx[18], + { + metadata: getWeeklyMetadata(/*sources*/ ctx[8], /*week*/ ctx[18].days[0], /*today*/ ctx[10]) + }, + { onClick: /*onClickWeek*/ ctx[7] }, + { + onContextMenu: /*onContextMenuWeek*/ ctx[5] + }, + { onHover: /*onHoverWeek*/ ctx[3] }, + { selectedId: /*selectedId*/ ctx[9] } + ]; + + let weeknum_props = {}; + + for (let i = 0; i < weeknum_spread_levels.length; i += 1) { + weeknum_props = assign(weeknum_props, weeknum_spread_levels[i]); + } + + weeknum = new WeekNum({ props: weeknum_props }); + + return { + c() { + create_component(weeknum.$$.fragment); + }, + m(target, anchor) { + mount_component(weeknum, target, anchor); + current = true; + }, + p(ctx, dirty) { + const weeknum_changes = (dirty & /*month, getWeeklyMetadata, sources, today, onClickWeek, onContextMenuWeek, onHoverWeek, selectedId*/ 18344) + ? get_spread_update(weeknum_spread_levels, [ + dirty & /*month*/ 16384 && get_spread_object(/*week*/ ctx[18]), + dirty & /*getWeeklyMetadata, sources, month, today*/ 17664 && { + metadata: getWeeklyMetadata(/*sources*/ ctx[8], /*week*/ ctx[18].days[0], /*today*/ ctx[10]) + }, + dirty & /*onClickWeek*/ 128 && { onClick: /*onClickWeek*/ ctx[7] }, + dirty & /*onContextMenuWeek*/ 32 && { + onContextMenu: /*onContextMenuWeek*/ ctx[5] + }, + dirty & /*onHoverWeek*/ 8 && { onHover: /*onHoverWeek*/ ctx[3] }, + dirty & /*selectedId*/ 512 && { selectedId: /*selectedId*/ ctx[9] } + ]) + : {}; + + weeknum.$set(weeknum_changes); + }, + i(local) { + if (current) return; + transition_in(weeknum.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(weeknum.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(weeknum, detaching); + } + }; +} + +// (85:10) {#each week.days as day (day.format())} +function create_each_block_1(key_1, ctx) { + let first; + let day; + let current; + + day = new Day({ + props: { + date: /*day*/ ctx[21], + today: /*today*/ ctx[10], + displayedMonth: /*displayedMonth*/ ctx[0], + onClick: /*onClickDay*/ ctx[6], + onContextMenu: /*onContextMenuDay*/ ctx[4], + onHover: /*onHoverDay*/ ctx[2], + metadata: getDailyMetadata(/*sources*/ ctx[8], /*day*/ ctx[21], /*today*/ ctx[10]), + selectedId: /*selectedId*/ ctx[9] + } + }); + + return { + key: key_1, + first: null, + c() { + first = empty(); + create_component(day.$$.fragment); + this.first = first; + }, + m(target, anchor) { + insert(target, first, anchor); + mount_component(day, target, anchor); + current = true; + }, + p(new_ctx, dirty) { + ctx = new_ctx; + const day_changes = {}; + if (dirty & /*month*/ 16384) day_changes.date = /*day*/ ctx[21]; + if (dirty & /*today*/ 1024) day_changes.today = /*today*/ ctx[10]; + if (dirty & /*displayedMonth*/ 1) day_changes.displayedMonth = /*displayedMonth*/ ctx[0]; + if (dirty & /*onClickDay*/ 64) day_changes.onClick = /*onClickDay*/ ctx[6]; + if (dirty & /*onContextMenuDay*/ 16) day_changes.onContextMenu = /*onContextMenuDay*/ ctx[4]; + if (dirty & /*onHoverDay*/ 4) day_changes.onHover = /*onHoverDay*/ ctx[2]; + if (dirty & /*sources, month, today*/ 17664) day_changes.metadata = getDailyMetadata(/*sources*/ ctx[8], /*day*/ ctx[21], /*today*/ ctx[10]); + if (dirty & /*selectedId*/ 512) day_changes.selectedId = /*selectedId*/ ctx[9]; + day.$set(day_changes); + }, + i(local) { + if (current) return; + transition_in(day.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(day.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) detach(first); + destroy_component(day, detaching); + } + }; +} + +// (73:6) {#each month as week (week.weekNum)} +function create_each_block(key_1, ctx) { + let tr; + let t0; + let each_blocks = []; + let each_1_lookup = new Map(); + let t1; + let current; + let if_block = /*showWeekNums*/ ctx[1] && create_if_block(ctx); + let each_value_1 = /*week*/ ctx[18].days; + const get_key = ctx => /*day*/ ctx[21].format(); + + for (let i = 0; i < each_value_1.length; i += 1) { + let child_ctx = get_each_context_1(ctx, each_value_1, i); + let key = get_key(child_ctx); + each_1_lookup.set(key, each_blocks[i] = create_each_block_1(key, child_ctx)); + } + + return { + key: key_1, + first: null, + c() { + tr = element("tr"); + if (if_block) if_block.c(); + t0 = space(); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + t1 = space(); + this.first = tr; + }, + m(target, anchor) { + insert(target, tr, anchor); + if (if_block) if_block.m(tr, null); + append(tr, t0); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(tr, null); + } + + append(tr, t1); + current = true; + }, + p(new_ctx, dirty) { + ctx = new_ctx; + + if (/*showWeekNums*/ ctx[1]) { + if (if_block) { + if_block.p(ctx, dirty); + + if (dirty & /*showWeekNums*/ 2) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(tr, t0); + } + } else if (if_block) { + group_outros(); + + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + + check_outros(); + } + + if (dirty & /*month, today, displayedMonth, onClickDay, onContextMenuDay, onHoverDay, getDailyMetadata, sources, selectedId*/ 18261) { + each_value_1 = /*week*/ ctx[18].days; + group_outros(); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value_1, each_1_lookup, tr, outro_and_destroy_block, create_each_block_1, t1, get_each_context_1); + check_outros(); + } + }, + i(local) { + if (current) return; + transition_in(if_block); + + for (let i = 0; i < each_value_1.length; i += 1) { + transition_in(each_blocks[i]); + } + + current = true; + }, + o(local) { + transition_out(if_block); + + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + + current = false; + }, + d(detaching) { + if (detaching) detach(tr); + if (if_block) if_block.d(); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].d(); + } + } + }; +} + +function create_fragment$7(ctx) { + let div; + let nav; + let t0; + let table; + let colgroup; + let t1; + let t2; + let thead; + let tr; + let t3; + let t4; + let tbody; + let each_blocks = []; + let each2_lookup = new Map(); + let current; + + nav = new Nav({ + props: { + today: /*today*/ ctx[10], + displayedMonth: /*displayedMonth*/ ctx[0], + incrementDisplayedMonth: /*incrementDisplayedMonth*/ ctx[11], + decrementDisplayedMonth: /*decrementDisplayedMonth*/ ctx[12], + resetDisplayedMonth: /*resetDisplayedMonth*/ ctx[13] + } + }); + + let if_block0 = /*showWeekNums*/ ctx[1] && create_if_block_2(); + let each_value_3 = /*month*/ ctx[14][1].days; + let each_blocks_2 = []; + + for (let i = 0; i < each_value_3.length; i += 1) { + each_blocks_2[i] = create_each_block_3(get_each_context_3(ctx, each_value_3, i)); + } + + let if_block1 = /*showWeekNums*/ ctx[1] && create_if_block_1(); + let each_value_2 = /*daysOfWeek*/ ctx[15]; + let each_blocks_1 = []; + + for (let i = 0; i < each_value_2.length; i += 1) { + each_blocks_1[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i)); + } + + let each_value = /*month*/ ctx[14]; + const get_key = ctx => /*week*/ ctx[18].weekNum; + + for (let i = 0; i < each_value.length; i += 1) { + let child_ctx = get_each_context(ctx, each_value, i); + let key = get_key(child_ctx); + each2_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx)); + } + + return { + c() { + div = element("div"); + create_component(nav.$$.fragment); + t0 = space(); + table = element("table"); + colgroup = element("colgroup"); + if (if_block0) if_block0.c(); + t1 = space(); + + for (let i = 0; i < each_blocks_2.length; i += 1) { + each_blocks_2[i].c(); + } + + t2 = space(); + thead = element("thead"); + tr = element("tr"); + if (if_block1) if_block1.c(); + t3 = space(); + + for (let i = 0; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].c(); + } + + t4 = space(); + tbody = element("tbody"); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + attr(table, "class", "calendar svelte-pcimu8"); + attr(div, "id", "calendar-container"); + attr(div, "class", "container svelte-pcimu8"); + toggle_class(div, "is-mobile", /*isMobile*/ ctx[16]); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(nav, div, null); + append(div, t0); + append(div, table); + append(table, colgroup); + if (if_block0) if_block0.m(colgroup, null); + append(colgroup, t1); + + for (let i = 0; i < each_blocks_2.length; i += 1) { + each_blocks_2[i].m(colgroup, null); + } + + append(table, t2); + append(table, thead); + append(thead, tr); + if (if_block1) if_block1.m(tr, null); + append(tr, t3); + + for (let i = 0; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].m(tr, null); + } + + append(table, t4); + append(table, tbody); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(tbody, null); + } + + current = true; + }, + p(ctx, [dirty]) { + const nav_changes = {}; + if (dirty & /*today*/ 1024) nav_changes.today = /*today*/ ctx[10]; + if (dirty & /*displayedMonth*/ 1) nav_changes.displayedMonth = /*displayedMonth*/ ctx[0]; + nav.$set(nav_changes); + + if (/*showWeekNums*/ ctx[1]) { + if (if_block0) ; else { + if_block0 = create_if_block_2(); + if_block0.c(); + if_block0.m(colgroup, t1); + } + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } + + if (dirty & /*isWeekend, month*/ 16384) { + each_value_3 = /*month*/ ctx[14][1].days; + let i; + + for (i = 0; i < each_value_3.length; i += 1) { + const child_ctx = get_each_context_3(ctx, each_value_3, i); + + if (each_blocks_2[i]) { + each_blocks_2[i].p(child_ctx, dirty); + } else { + each_blocks_2[i] = create_each_block_3(child_ctx); + each_blocks_2[i].c(); + each_blocks_2[i].m(colgroup, null); + } + } + + for (; i < each_blocks_2.length; i += 1) { + each_blocks_2[i].d(1); + } + + each_blocks_2.length = each_value_3.length; + } + + if (/*showWeekNums*/ ctx[1]) { + if (if_block1) ; else { + if_block1 = create_if_block_1(); + if_block1.c(); + if_block1.m(tr, t3); + } + } else if (if_block1) { + if_block1.d(1); + if_block1 = null; + } + + if (dirty & /*daysOfWeek*/ 32768) { + each_value_2 = /*daysOfWeek*/ ctx[15]; + let i; + + for (i = 0; i < each_value_2.length; i += 1) { + const child_ctx = get_each_context_2(ctx, each_value_2, i); + + if (each_blocks_1[i]) { + each_blocks_1[i].p(child_ctx, dirty); + } else { + each_blocks_1[i] = create_each_block_2(child_ctx); + each_blocks_1[i].c(); + each_blocks_1[i].m(tr, null); + } + } + + for (; i < each_blocks_1.length; i += 1) { + each_blocks_1[i].d(1); + } + + each_blocks_1.length = each_value_2.length; + } + + if (dirty & /*month, today, displayedMonth, onClickDay, onContextMenuDay, onHoverDay, getDailyMetadata, sources, selectedId, getWeeklyMetadata, onClickWeek, onContextMenuWeek, onHoverWeek, showWeekNums*/ 18431) { + each_value = /*month*/ ctx[14]; + group_outros(); + each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each2_lookup, tbody, outro_and_destroy_block, create_each_block, null, get_each_context); + check_outros(); + } + }, + i(local) { + if (current) return; + transition_in(nav.$$.fragment, local); + + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + + current = true; + }, + o(local) { + transition_out(nav.$$.fragment, local); + + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + + current = false; + }, + d(detaching) { + if (detaching) detach(div); + destroy_component(nav); + if (if_block0) if_block0.d(); + destroy_each(each_blocks_2, detaching); + if (if_block1) if_block1.d(); + destroy_each(each_blocks_1, detaching); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].d(); + } + } + }; +} + +function instance$7($$self, $$props, $$invalidate) { + + + let { localeData } = $$props; + let { showWeekNums = false } = $$props; + let { onHoverDay } = $$props; + let { onHoverWeek } = $$props; + let { onContextMenuDay } = $$props; + let { onContextMenuWeek } = $$props; + let { onClickDay } = $$props; + let { onClickWeek } = $$props; + let { sources = [] } = $$props; + let { selectedId } = $$props; + let { today = window.moment() } = $$props; + let { displayedMonth = today } = $$props; + let month; + let daysOfWeek; + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let isMobile = window.app.isMobile; + + function incrementDisplayedMonth() { + $$invalidate(0, displayedMonth = displayedMonth.clone().add(1, "month")); + } + + function decrementDisplayedMonth() { + $$invalidate(0, displayedMonth = displayedMonth.clone().subtract(1, "month")); + } + + function resetDisplayedMonth() { + $$invalidate(0, displayedMonth = today.clone()); + } + + $$self.$$set = $$props => { + if ("localeData" in $$props) $$invalidate(17, localeData = $$props.localeData); + if ("showWeekNums" in $$props) $$invalidate(1, showWeekNums = $$props.showWeekNums); + if ("onHoverDay" in $$props) $$invalidate(2, onHoverDay = $$props.onHoverDay); + if ("onHoverWeek" in $$props) $$invalidate(3, onHoverWeek = $$props.onHoverWeek); + if ("onContextMenuDay" in $$props) $$invalidate(4, onContextMenuDay = $$props.onContextMenuDay); + if ("onContextMenuWeek" in $$props) $$invalidate(5, onContextMenuWeek = $$props.onContextMenuWeek); + if ("onClickDay" in $$props) $$invalidate(6, onClickDay = $$props.onClickDay); + if ("onClickWeek" in $$props) $$invalidate(7, onClickWeek = $$props.onClickWeek); + if ("sources" in $$props) $$invalidate(8, sources = $$props.sources); + if ("selectedId" in $$props) $$invalidate(9, selectedId = $$props.selectedId); + if ("today" in $$props) $$invalidate(10, today = $$props.today); + if ("displayedMonth" in $$props) $$invalidate(0, displayedMonth = $$props.displayedMonth); + }; + + $$self.$$.update = () => { + if ($$self.$$.dirty & /*displayedMonth, localeData*/ 131073) { + $$invalidate(14, month = getMonth(displayedMonth, localeData)); + } + + if ($$self.$$.dirty & /*today, localeData*/ 132096) { + $$invalidate(15, daysOfWeek = getDaysOfWeek(today, localeData)); + } + }; + + return [ + displayedMonth, + showWeekNums, + onHoverDay, + onHoverWeek, + onContextMenuDay, + onContextMenuWeek, + onClickDay, + onClickWeek, + sources, + selectedId, + today, + incrementDisplayedMonth, + decrementDisplayedMonth, + resetDisplayedMonth, + month, + daysOfWeek, + isMobile, + localeData + ]; +} + +class Calendar$1 extends SvelteComponent { + constructor(options) { + super(); + if (!document.getElementById("svelte-pcimu8-style")) add_css(); + + init(this, options, instance$7, create_fragment$7, not_equal, { + localeData: 17, + showWeekNums: 1, + onHoverDay: 2, + onHoverWeek: 3, + onContextMenuDay: 4, + onContextMenuWeek: 5, + onClickDay: 6, + onClickWeek: 7, + sources: 8, + selectedId: 9, + today: 10, + displayedMonth: 0, + incrementDisplayedMonth: 11, + decrementDisplayedMonth: 12, + resetDisplayedMonth: 13 + }); + } + + get incrementDisplayedMonth() { + return this.$$.ctx[11]; + } + + get decrementDisplayedMonth() { + return this.$$.ctx[12]; + } + + get resetDisplayedMonth() { + return this.$$.ctx[13]; + } +} + +const langToMomentLocale = { + en: "en-gb", + zh: "zh-cn", + "zh-TW": "zh-tw", + ru: "ru", + ko: "ko", + it: "it", + id: "id", + ro: "ro", + "pt-BR": "pt-br", + cz: "cs", + da: "da", + de: "de", + es: "es", + fr: "fr", + no: "nn", + pl: "pl", + pt: "pt", + tr: "tr", + hi: "hi", + nl: "nl", + ar: "ar", + ja: "ja", +}; +const weekdays = [ + "sunday", + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", +]; +function overrideGlobalMomentWeekStart(weekStart) { + const { moment } = window; + const currentLocale = moment.locale(); + // Save the initial locale weekspec so that we can restore + // it when toggling between the different options in settings. + if (!window._bundledLocaleWeekSpec) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + window._bundledLocaleWeekSpec = moment.localeData()._week; + } + if (weekStart === "locale") { + moment.updateLocale(currentLocale, { + week: window._bundledLocaleWeekSpec, + }); + } + else { + moment.updateLocale(currentLocale, { + week: { + dow: weekdays.indexOf(weekStart) || 0, + }, + }); + } +} +/** + * Sets the locale used by the calendar. This allows the calendar to + * default to the user's locale (e.g. Start Week on Sunday/Monday/Friday) + * + * @param localeOverride locale string (e.g. "en-US") + */ +function configureGlobalMomentLocale(localeOverride = "system-default", weekStart = "locale") { + var _a; + const obsidianLang = localStorage.getItem("language") || "en"; + const systemLang = (_a = navigator.language) === null || _a === void 0 ? void 0 : _a.toLowerCase(); + let momentLocale = langToMomentLocale[obsidianLang]; + if (localeOverride !== "system-default") { + momentLocale = localeOverride; + } + else if (systemLang.startsWith(obsidianLang)) { + // If the system locale is more specific (en-gb vs en), use the system locale. + momentLocale = systemLang; + } + const currentLocale = window.moment.locale(momentLocale); + console.debug(`[Calendar] Trying to switch Moment.js global locale to ${momentLocale}, got ${currentLocale}`); + overrideGlobalMomentWeekStart(weekStart); + return currentLocale; +} + +/* src/ui/Calendar.svelte generated by Svelte v3.35.0 */ + +function create_fragment(ctx) { + let calendarbase; + let updating_displayedMonth; + let current; + + function calendarbase_displayedMonth_binding(value) { + /*calendarbase_displayedMonth_binding*/ ctx[12](value); + } + + let calendarbase_props = { + sources: /*sources*/ ctx[1], + today: /*today*/ ctx[9], + onHoverDay: /*onHoverDay*/ ctx[2], + onHoverWeek: /*onHoverWeek*/ ctx[3], + onContextMenuDay: /*onContextMenuDay*/ ctx[6], + onContextMenuWeek: /*onContextMenuWeek*/ ctx[7], + onClickDay: /*onClickDay*/ ctx[4], + onClickWeek: /*onClickWeek*/ ctx[5], + localeData: /*today*/ ctx[9].localeData(), + selectedId: /*$activeFile*/ ctx[10], + showWeekNums: /*$settings*/ ctx[8].showWeeklyNote + }; + + if (/*displayedMonth*/ ctx[0] !== void 0) { + calendarbase_props.displayedMonth = /*displayedMonth*/ ctx[0]; + } + + calendarbase = new Calendar$1({ props: calendarbase_props }); + binding_callbacks$1.push(() => bind(calendarbase, "displayedMonth", calendarbase_displayedMonth_binding)); + + return { + c() { + create_component$1(calendarbase.$$.fragment); + }, + m(target, anchor) { + mount_component$1(calendarbase, target, anchor); + current = true; + }, + p(ctx, [dirty]) { + const calendarbase_changes = {}; + if (dirty & /*sources*/ 2) calendarbase_changes.sources = /*sources*/ ctx[1]; + if (dirty & /*today*/ 512) calendarbase_changes.today = /*today*/ ctx[9]; + if (dirty & /*onHoverDay*/ 4) calendarbase_changes.onHoverDay = /*onHoverDay*/ ctx[2]; + if (dirty & /*onHoverWeek*/ 8) calendarbase_changes.onHoverWeek = /*onHoverWeek*/ ctx[3]; + if (dirty & /*onContextMenuDay*/ 64) calendarbase_changes.onContextMenuDay = /*onContextMenuDay*/ ctx[6]; + if (dirty & /*onContextMenuWeek*/ 128) calendarbase_changes.onContextMenuWeek = /*onContextMenuWeek*/ ctx[7]; + if (dirty & /*onClickDay*/ 16) calendarbase_changes.onClickDay = /*onClickDay*/ ctx[4]; + if (dirty & /*onClickWeek*/ 32) calendarbase_changes.onClickWeek = /*onClickWeek*/ ctx[5]; + if (dirty & /*today*/ 512) calendarbase_changes.localeData = /*today*/ ctx[9].localeData(); + if (dirty & /*$activeFile*/ 1024) calendarbase_changes.selectedId = /*$activeFile*/ ctx[10]; + if (dirty & /*$settings*/ 256) calendarbase_changes.showWeekNums = /*$settings*/ ctx[8].showWeeklyNote; + + if (!updating_displayedMonth && dirty & /*displayedMonth*/ 1) { + updating_displayedMonth = true; + calendarbase_changes.displayedMonth = /*displayedMonth*/ ctx[0]; + add_flush_callback(() => updating_displayedMonth = false); + } + + calendarbase.$set(calendarbase_changes); + }, + i(local) { + if (current) return; + transition_in$1(calendarbase.$$.fragment, local); + current = true; + }, + o(local) { + transition_out$1(calendarbase.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component$1(calendarbase, detaching); + } + }; +} + +function instance($$self, $$props, $$invalidate) { + let $settings; + let $activeFile; + component_subscribe($$self, settings, $$value => $$invalidate(8, $settings = $$value)); + component_subscribe($$self, activeFile, $$value => $$invalidate(10, $activeFile = $$value)); + + + let today; + let { displayedMonth = today } = $$props; + let { sources } = $$props; + let { onHoverDay } = $$props; + let { onHoverWeek } = $$props; + let { onClickDay } = $$props; + let { onClickWeek } = $$props; + let { onContextMenuDay } = $$props; + let { onContextMenuWeek } = $$props; + + function tick() { + $$invalidate(9, today = window.moment()); + } + + function getToday(settings) { + configureGlobalMomentLocale(settings.localeOverride, settings.weekStart); + dailyNotes.reindex(); + weeklyNotes.reindex(); + return window.moment(); + } + + // 1 minute heartbeat to keep `today` reflecting the current day + let heartbeat = setInterval( + () => { + tick(); + const isViewingCurrentMonth = displayedMonth.isSame(today, "day"); + + if (isViewingCurrentMonth) { + // if it's midnight on the last day of the month, this will + // update the display to show the new month. + $$invalidate(0, displayedMonth = today); + } + }, + 1000 * 60 + ); + + onDestroy(() => { + clearInterval(heartbeat); + }); + + function calendarbase_displayedMonth_binding(value) { + displayedMonth = value; + $$invalidate(0, displayedMonth); + } + + $$self.$$set = $$props => { + if ("displayedMonth" in $$props) $$invalidate(0, displayedMonth = $$props.displayedMonth); + if ("sources" in $$props) $$invalidate(1, sources = $$props.sources); + if ("onHoverDay" in $$props) $$invalidate(2, onHoverDay = $$props.onHoverDay); + if ("onHoverWeek" in $$props) $$invalidate(3, onHoverWeek = $$props.onHoverWeek); + if ("onClickDay" in $$props) $$invalidate(4, onClickDay = $$props.onClickDay); + if ("onClickWeek" in $$props) $$invalidate(5, onClickWeek = $$props.onClickWeek); + if ("onContextMenuDay" in $$props) $$invalidate(6, onContextMenuDay = $$props.onContextMenuDay); + if ("onContextMenuWeek" in $$props) $$invalidate(7, onContextMenuWeek = $$props.onContextMenuWeek); + }; + + $$self.$$.update = () => { + if ($$self.$$.dirty & /*$settings*/ 256) { + $$invalidate(9, today = getToday($settings)); + } + }; + + return [ + displayedMonth, + sources, + onHoverDay, + onHoverWeek, + onClickDay, + onClickWeek, + onContextMenuDay, + onContextMenuWeek, + $settings, + today, + $activeFile, + tick, + calendarbase_displayedMonth_binding + ]; +} + +class Calendar extends SvelteComponent$1 { + constructor(options) { + super(); + + init$1(this, options, instance, create_fragment, not_equal$1, { + displayedMonth: 0, + sources: 1, + onHoverDay: 2, + onHoverWeek: 3, + onClickDay: 4, + onClickWeek: 5, + onContextMenuDay: 6, + onContextMenuWeek: 7, + tick: 11 + }); + } + + get tick() { + return this.$$.ctx[11]; + } +} + +function showFileMenu(app, file, position) { + const fileMenu = new obsidian.Menu(app); + fileMenu.addItem((item) => item + .setTitle("Delete") + .setIcon("trash") + .onClick(() => { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + app.fileManager.promptForFileDeletion(file); + })); + app.workspace.trigger("file-menu", fileMenu, file, "calendar-context-menu", null); + fileMenu.showAtPosition(position); +} + +const getStreakClasses = (file) => { + return classList({ + "has-note": !!file, + }); +}; +const streakSource = { + getDailyMetadata: async (date) => { + const file = getDailyNote_1(date, get_store_value(dailyNotes)); + return { + classes: getStreakClasses(file), + dots: [], + }; + }, + getWeeklyMetadata: async (date) => { + const file = getWeeklyNote_1(date, get_store_value(weeklyNotes)); + return { + classes: getStreakClasses(file), + dots: [], + }; + }, +}; + +function getNoteTags(note) { + var _a; + if (!note) { + return []; + } + const { metadataCache } = window.app; + const frontmatter = (_a = metadataCache.getFileCache(note)) === null || _a === void 0 ? void 0 : _a.frontmatter; + const tags = []; + if (frontmatter) { + const frontmatterTags = obsidian.parseFrontMatterTags(frontmatter) || []; + tags.push(...frontmatterTags); + } + // strip the '#' at the beginning + return tags.map((tag) => tag.substring(1)); +} +function getFormattedTagAttributes(note) { + const attrs = {}; + const tags = getNoteTags(note); + const [emojiTags, nonEmojiTags] = partition(tags, (tag) => /(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])/.test(tag)); + if (nonEmojiTags) { + attrs["data-tags"] = nonEmojiTags.join(" "); + } + if (emojiTags) { + attrs["data-emoji-tag"] = emojiTags[0]; + } + return attrs; +} +const customTagsSource = { + getDailyMetadata: async (date) => { + const file = getDailyNote_1(date, get_store_value(dailyNotes)); + return { + dataAttributes: getFormattedTagAttributes(file), + dots: [], + }; + }, + getWeeklyMetadata: async (date) => { + const file = getWeeklyNote_1(date, get_store_value(weeklyNotes)); + return { + dataAttributes: getFormattedTagAttributes(file), + dots: [], + }; + }, +}; + +async function getNumberOfRemainingTasks(note) { + if (!note) { + return 0; + } + const { vault } = window.app; + const fileContents = await vault.cachedRead(note); + return (fileContents.match(/(-|\*) \[ \]/g) || []).length; +} +async function getDotsForDailyNote$1(dailyNote) { + if (!dailyNote) { + return []; + } + const numTasks = await getNumberOfRemainingTasks(dailyNote); + const dots = []; + if (numTasks) { + dots.push({ + className: "task", + color: "default", + isFilled: false, + }); + } + return dots; +} +const tasksSource = { + getDailyMetadata: async (date) => { + const file = getDailyNote_1(date, get_store_value(dailyNotes)); + const dots = await getDotsForDailyNote$1(file); + return { + dots, + }; + }, + getWeeklyMetadata: async (date) => { + const file = getWeeklyNote_1(date, get_store_value(weeklyNotes)); + const dots = await getDotsForDailyNote$1(file); + return { + dots, + }; + }, +}; + +const NUM_MAX_DOTS = 5; +async function getWordLengthAsDots(note) { + const { wordsPerDot = DEFAULT_WORDS_PER_DOT } = get_store_value(settings); + if (!note || wordsPerDot <= 0) { + return 0; + } + const fileContents = await window.app.vault.cachedRead(note); + const wordCount = getWordCount(fileContents); + const numDots = wordCount / wordsPerDot; + return clamp(Math.floor(numDots), 1, NUM_MAX_DOTS); +} +async function getDotsForDailyNote(dailyNote) { + if (!dailyNote) { + return []; + } + const numSolidDots = await getWordLengthAsDots(dailyNote); + const dots = []; + for (let i = 0; i < numSolidDots; i++) { + dots.push({ + color: "default", + isFilled: true, + }); + } + return dots; +} +const wordCountSource = { + getDailyMetadata: async (date) => { + const file = getDailyNote_1(date, get_store_value(dailyNotes)); + const dots = await getDotsForDailyNote(file); + return { + dots, + }; + }, + getWeeklyMetadata: async (date) => { + const file = getWeeklyNote_1(date, get_store_value(weeklyNotes)); + const dots = await getDotsForDailyNote(file); + return { + dots, + }; + }, +}; + +class CalendarView extends obsidian.ItemView { + constructor(leaf) { + super(leaf); + this.openOrCreateDailyNote = this.openOrCreateDailyNote.bind(this); + this.openOrCreateWeeklyNote = this.openOrCreateWeeklyNote.bind(this); + this.onNoteSettingsUpdate = this.onNoteSettingsUpdate.bind(this); + this.onFileCreated = this.onFileCreated.bind(this); + this.onFileDeleted = this.onFileDeleted.bind(this); + this.onFileModified = this.onFileModified.bind(this); + this.onFileOpen = this.onFileOpen.bind(this); + this.onHoverDay = this.onHoverDay.bind(this); + this.onHoverWeek = this.onHoverWeek.bind(this); + this.onContextMenuDay = this.onContextMenuDay.bind(this); + this.onContextMenuWeek = this.onContextMenuWeek.bind(this); + this.registerEvent( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + this.app.workspace.on("periodic-notes:settings-updated", this.onNoteSettingsUpdate)); + this.registerEvent(this.app.vault.on("create", this.onFileCreated)); + this.registerEvent(this.app.vault.on("delete", this.onFileDeleted)); + this.registerEvent(this.app.vault.on("modify", this.onFileModified)); + this.registerEvent(this.app.workspace.on("file-open", this.onFileOpen)); + this.settings = null; + settings.subscribe((val) => { + this.settings = val; + // Refresh the calendar if settings change + if (this.calendar) { + this.calendar.tick(); + } + }); + } + getViewType() { + return VIEW_TYPE_CALENDAR; + } + getDisplayText() { + return "Calendar"; + } + getIcon() { + return "calendar-with-checkmark"; + } + onClose() { + if (this.calendar) { + this.calendar.$destroy(); + } + return Promise.resolve(); + } + async onOpen() { + // Integration point: external plugins can listen for `calendar:open` + // to feed in additional sources. + const sources = [ + customTagsSource, + streakSource, + wordCountSource, + tasksSource, + ]; + this.app.workspace.trigger(TRIGGER_ON_OPEN, sources); + this.calendar = new Calendar({ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + target: this.contentEl, + props: { + onClickDay: this.openOrCreateDailyNote, + onClickWeek: this.openOrCreateWeeklyNote, + onHoverDay: this.onHoverDay, + onHoverWeek: this.onHoverWeek, + onContextMenuDay: this.onContextMenuDay, + onContextMenuWeek: this.onContextMenuWeek, + sources, + }, + }); + } + onHoverDay(date, targetEl, isMetaPressed) { + if (!isMetaPressed) { + return; + } + const { format } = getDailyNoteSettings_1(); + const note = getDailyNote_1(date, get_store_value(dailyNotes)); + this.app.workspace.trigger("link-hover", this, targetEl, date.format(format), note === null || note === void 0 ? void 0 : note.path); + } + onHoverWeek(date, targetEl, isMetaPressed) { + if (!isMetaPressed) { + return; + } + const note = getWeeklyNote_1(date, get_store_value(weeklyNotes)); + const { format } = getWeeklyNoteSettings_1(); + this.app.workspace.trigger("link-hover", this, targetEl, date.format(format), note === null || note === void 0 ? void 0 : note.path); + } + onContextMenuDay(date, event) { + const note = getDailyNote_1(date, get_store_value(dailyNotes)); + if (!note) { + // If no file exists for a given day, show nothing. + return; + } + showFileMenu(this.app, note, { + x: event.pageX, + y: event.pageY, + }); + } + onContextMenuWeek(date, event) { + const note = getWeeklyNote_1(date, get_store_value(weeklyNotes)); + if (!note) { + // If no file exists for a given day, show nothing. + return; + } + showFileMenu(this.app, note, { + x: event.pageX, + y: event.pageY, + }); + } + onNoteSettingsUpdate() { + dailyNotes.reindex(); + weeklyNotes.reindex(); + this.updateActiveFile(); + } + async onFileDeleted(file) { + if (getDateFromFile_1(file, "day")) { + dailyNotes.reindex(); + this.updateActiveFile(); + } + if (getDateFromFile_1(file, "week")) { + weeklyNotes.reindex(); + this.updateActiveFile(); + } + } + async onFileModified(file) { + const date = getDateFromFile_1(file, "day") || getDateFromFile_1(file, "week"); + if (date && this.calendar) { + this.calendar.tick(); + } + } + onFileCreated(file) { + if (this.app.workspace.layoutReady && this.calendar) { + if (getDateFromFile_1(file, "day")) { + dailyNotes.reindex(); + this.calendar.tick(); + } + if (getDateFromFile_1(file, "week")) { + weeklyNotes.reindex(); + this.calendar.tick(); + } + } + } + onFileOpen(_file) { + if (this.app.workspace.layoutReady) { + this.updateActiveFile(); + } + } + updateActiveFile() { + const { view } = this.app.workspace.activeLeaf; + let file = null; + if (view instanceof obsidian.FileView) { + file = view.file; + } + activeFile.setFile(file); + if (this.calendar) { + this.calendar.tick(); + } + } + revealActiveNote() { + const { moment } = window; + const { activeLeaf } = this.app.workspace; + if (activeLeaf.view instanceof obsidian.FileView) { + // Check to see if the active note is a daily-note + let date = getDateFromFile_1(activeLeaf.view.file, "day"); + if (date) { + this.calendar.$set({ displayedMonth: date }); + return; + } + // Check to see if the active note is a weekly-note + const { format } = getWeeklyNoteSettings_1(); + date = moment(activeLeaf.view.file.basename, format, true); + if (date.isValid()) { + this.calendar.$set({ displayedMonth: date }); + return; + } + } + } + async openOrCreateWeeklyNote(date, inNewSplit) { + const { workspace } = this.app; + const startOfWeek = date.clone().startOf("week"); + const existingFile = getWeeklyNote_1(date, get_store_value(weeklyNotes)); + if (!existingFile) { + // File doesn't exist + tryToCreateWeeklyNote(startOfWeek, inNewSplit, this.settings, (file) => { + activeFile.setFile(file); + }); + return; + } + const leaf = inNewSplit + ? workspace.splitActiveLeaf() + : workspace.getUnpinnedLeaf(); + await leaf.openFile(existingFile); + activeFile.setFile(existingFile); + } + async openOrCreateDailyNote(date, inNewSplit) { + const { workspace } = this.app; + const existingFile = getDailyNote_1(date, get_store_value(dailyNotes)); + if (!existingFile) { + // File doesn't exist + tryToCreateDailyNote(date, inNewSplit, this.settings, (dailyNote) => { + activeFile.setFile(dailyNote); + }); + return; + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const mode = this.app.vault.getConfig("defaultViewMode"); + const leaf = inNewSplit + ? workspace.splitActiveLeaf() + : workspace.getUnpinnedLeaf(); + await leaf.openFile(existingFile, { mode }); + activeFile.setFile(existingFile); + } +} + +class CalendarPlugin extends obsidian.Plugin { + onunload() { + this.app.workspace + .getLeavesOfType(VIEW_TYPE_CALENDAR) + .forEach((leaf) => leaf.detach()); + } + async onload() { + this.register(settings.subscribe((value) => { + this.options = value; + })); + this.registerView(VIEW_TYPE_CALENDAR, (leaf) => (this.view = new CalendarView(leaf))); + this.addCommand({ + id: "show-calendar-view", + name: "Open view", + checkCallback: (checking) => { + if (checking) { + return (this.app.workspace.getLeavesOfType(VIEW_TYPE_CALENDAR).length === 0); + } + this.initLeaf(); + }, + }); + this.addCommand({ + id: "open-weekly-note", + name: "Open Weekly Note", + checkCallback: (checking) => { + if (checking) { + return !appHasPeriodicNotesPluginLoaded(); + } + this.view.openOrCreateWeeklyNote(window.moment(), false); + }, + }); + this.addCommand({ + id: "reveal-active-note", + name: "Reveal active note", + callback: () => this.view.revealActiveNote(), + }); + await this.loadOptions(); + this.addSettingTab(new CalendarSettingsTab(this.app, this)); + if (this.app.workspace.layoutReady) { + this.initLeaf(); + } + else { + this.registerEvent(this.app.workspace.on("layout-ready", this.initLeaf.bind(this))); + } + } + initLeaf() { + if (this.app.workspace.getLeavesOfType(VIEW_TYPE_CALENDAR).length) { + return; + } + this.app.workspace.getRightLeaf(false).setViewState({ + type: VIEW_TYPE_CALENDAR, + }); + } + async loadOptions() { + const options = await this.loadData(); + settings.update((old) => { + return Object.assign(Object.assign({}, old), (options || {})); + }); + await this.saveData(this.options); + } + async writeOptions(changeOpts) { + settings.update((old) => (Object.assign(Object.assign({}, old), changeOpts(old)))); + await this.saveData(this.options); + } +} + +module.exports = CalendarPlugin; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/calendar/manifest.json b/.obsidian/plugins/calendar/manifest.json new file mode 100644 index 0000000..028bfa5 --- /dev/null +++ b/.obsidian/plugins/calendar/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "calendar", + "name": "Calendar", + "description": "Calendar view of your daily notes", + "version": "1.5.10", + "author": "Liam Cain", + "authorUrl": "https://github.com/liamcain/", + "isDesktopOnly": false, + "minAppVersion": "0.9.11" +} diff --git a/.obsidian/plugins/hotkey-helper/main.js b/.obsidian/plugins/hotkey-helper/main.js new file mode 100644 index 0000000..b578935 --- /dev/null +++ b/.obsidian/plugins/hotkey-helper/main.js @@ -0,0 +1,4 @@ +var M=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var $=Object.getOwnPropertyNames;var J=Object.prototype.hasOwnProperty;var z=(i,o)=>{for(var t in o)M(i,t,{get:o[t],enumerable:!0})},K=(i,o,t,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let n of $(o))!J.call(i,n)&&n!==t&&M(i,n,{get:()=>o[n],enumerable:!(s=q(o,n))||s.enumerable});return i};var G=i=>K(M({},"__esModule",{value:!0}),i);var it={};z(it,{default:()=>T});module.exports=G(it);var m=require("obsidian");function E(i,o){let t=Object.keys(o).map(s=>U(i,s,o[s]));return t.length===1?t[0]:function(){t.forEach(s=>s())}}function U(i,o,t){let s=i[o],n=i.hasOwnProperty(o),e=t(s);return s&&Object.setPrototypeOf(e,s),Object.setPrototypeOf(r,e),i[o]=r,u;function r(...a){return e===s&&i[o]===r&&u(),e.apply(this,a)}function u(){i[o]===r&&(n?i[o]=s:delete i[o]),e!==s&&(e=s,Object.setPrototypeOf(r,s||Function))}}function j(i,o){return i.then(o,o)}function V(i){let o=Promise.resolve();function t(...s){return o=new Promise((n,e)=>{j(o,()=>{i.apply(this,s).then(n,e)})})}return t.after=function(){return o=new Promise((s,n)=>{j(o,s)})},t}var P=require("obsidian");var B="use.me",R="use.factory",_,O,I=function(){return Object.defineProperties(i(),{this:{get(){if(_)return _;throw new TypeError("No current context")}},me:{value:B},factory:{value:R}});function i(n){let e=new Map;e.prev=n;let r=Object.assign(n?a=>{let l=e.get(a);if(!l){for(let d=e.prev;d;d=d.prev)if(l=d.get(a)){l=Object.assign(Object.assign({},l),{s:l.s||1});break}l=l||{s:2,v:t},e.set(a,l)}let h,y,f;for(;;)switch(l.s){case 0:return _===r&&O&&O.push(a),l.v;case 1:if(h=l.d,!h||u(()=>h.k.every(d=>r(d)===h.c(d)))){l.s=0;break}l.v=h.f;case 2:l.s=4;try{o(e,a,0,u(y=l.v,a,f=[])),f.length&&(l.d={c:r,f:y,k:f});break}catch(d){l.s=3,l.v=d,l.d=null}case 3:throw l.v;case 4:throw new Error(`Factory ${String(l.v)} didn't resolve ${String(a)}`)}}:a=>I.this(a),{def(a,l){return o(e,a,2,l),r},set(a,l){return o(e,a,1,l),r},fork(a){let l=i(e);return a!=null?l(a):l}});return n?r.use=r:r;function u(a,l,h){let y=_,f=O;try{return _=r,O=h,a(l)}finally{_=y,O=f}}}function o(n,e,r,u){if(n.has(e)){let a=n.get(e);if(!a.s)throw new Error(`Already read: ${String(e)}`);a.s=r,a.v=u,a.d=null}else n.set(e,{s:r,v:u})}function t(n){if(typeof n[B]=="function")return n[B](n);if(s(n))return typeof n.prototype[R]=="function"?n.prototype[R]():new n;throw new ReferenceError(`No config for ${String(n)}`)}function s(n){return typeof n=="function"&&n.prototype!==void 0&&(Object.getPrototypeOf(n.prototype)!==Object.prototype||Object.getOwnPropertyNames(n.prototype).length>1||n.toString().startsWith("class"))}}();var Y=(i=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(i,{get:(o,t)=>(typeof require!="undefined"?require:o)[t]}):i)(function(i){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+i+'" is not supported')});var S=typeof queueMicrotask=="function"?queueMicrotask:(i=>o=>i.then(o))(Promise.resolve());var X=2,ft=4|X;function Q(){let i,o,t=new Promise((s,n)=>{i=s,o=n});return{resolve:i,reject:o,promise:t}}function D(i,o,t,s,n){return i.on(o,t,s,n),()=>i.off(o,t,s,n)}var x;(i=>{try{Object.assign(i,Y("obsidian"))}catch(o){}})(x||(x={}));var v,W=(i=>(i.service=function(o){return i(A).addChild(o),i.this},i.plugin=function(o){if(!C)v=o.app,C=i.fork(),C.set(x.Plugin,o),C.set(o.constructor,o),o.addChild(C.use(A));else if(o!==C.use(x.Plugin))throw new TypeError("use.plugin() called on multiple plugins");return C},i.def(x.Plugin,()=>{throw new Error("Plugin not created yet")}),i.def(x.App,()=>i(x.Plugin).app),i))(I),C;var A=class extends P.Component{constructor(){super(...arguments),this.children=new Set([this])}onload(){this.loaded=!0}onunload(){this.loaded=!1,this.children.clear()}addChild(i){return this.children.has(i)||(this.children.add(i),this.loaded?S(()=>super.addChild(i)):super.addChild(i)),i}};function N(i,o,t,s){let{resolve:n,promise:e}=Q(),r=new class extends P.FuzzySuggestModal{getItemText(u){var a;return(a=o==null?void 0:o(u))!=null?a:""+u}getItems(){return i}onChooseItem(u,a){n({item:u,event:a})}onClose(){super.onClose(),S(()=>n({item:null,event:null}))}}(v);return t&&r.setPlaceholder(t),s==null||s(r),r.open(),e}function Z(i){return m.Keymap.compileModifiers(i.modifiers)+","+i.key.toLowerCase()}function tt(i){return i==="plugins"||i==="community-plugins"}function F(){var i;return H()&&tt((i=v.setting.activeTab)==null?void 0:i.id)}function H(){return v.setting.containerEl.parentElement!==null}function et(i){return i instanceof m.Modal&&i.hasOwnProperty("autoload")&&typeof i.showPlugin=="function"&&typeof i.updateSearch=="function"&&typeof i.searchEl=="object"}function nt(i){var o;return i instanceof m.Modal&&typeof i.setAutoOpen=="function"&&typeof((o=i.search)==null?void 0:o.inputEl)=="object"}var T=class extends m.Plugin{constructor(){super(...arguments);this.lastSearch={};this.hotkeyButtons={};this.globalsAdded=!1;this.searchInput=null;this.use=W.plugin(this);this.commandsByPlugin={};this.assignedKeyCount={}}onload(){let t=this.app.workspace,s=this,n=t;this.registerEvent(n.on("plugin-settings:before-display",(u,a)=>{this.hotkeyButtons={},this.globalsAdded=!1,this.searchInput=null;for(let l of[m.SettingGroup,m.Setting].filter(h=>!!h)){let h=E(l.prototype,{addSearch(y){return function(f){return h(),y.call(this,d=>{s.searchInput=d,f==null||f(d)})}}});S(h)}})),this.registerEvent(n.on("plugin-settings:after-display",()=>this.refreshButtons(!0))),this.registerEvent(n.on("plugin-settings:plugin-control",(u,a,l,h)=>{this.globalsAdded||this.addGlobals(h,u.settingEl)}));let e=(0,m.debounce)(this.refreshButtons.bind(this),50,!0);function r(u){return function(...a){return e(),u.apply(this,a)}}this.register(E(v.commands,{addCommand:r,removeCommand:r})),this.register(E(v.setting,{addSettingTab:r,removeSettingTab:r})),t.onLayoutReady(this.whenReady.bind(this)),this.registerObsidianProtocolHandler("goto-plugin",({id:u,show:a})=>{t.onLayoutReady(()=>{this.gotoPlugin(u,a)})})}whenReady(){var y,f;let t=this.app,s=this,n=(f=(y=t.internalPlugins.plugins["command-palette"])==null?void 0:y.instance)==null?void 0:f.modal;if(n){this.register(E(n,{onChooseItem(c){return function(g,b){return m.Keymap.isModEvent(b)?(S(()=>s.showHotkeysFor(g.name)),!1):c.call(this,g,b)}}}));let d=n.modalEl.find(".prompt-instructions .prompt-instruction");d&&d.parentNode.insertBefore(createDiv("prompt-instruction",c=>{c.createSpan({cls:"prompt-instruction-command",text:m.Keymap.compileModifiers(["Mod"])+"+\u21B5"}),c.appendText(" "),c.createSpan({text:"to configure hotkey(s)"}),this.register(()=>c.detach())}),null)}let e=this.getSettingsTab("plugins"),r=this.getSettingsTab("community-plugins");e&&this.register(E(e,{display:this.addPluginSettingEvents.bind(this,e.id)})),r&&this.register(E(r,{display:this.addPluginSettingEvents.bind(this,r.id)}));let u=()=>this.enhanceViewer();r&&this.register(D(r.containerEl,"click",".mod-cta, .installed-plugins-container .setting-item-info",u,!0)),this.register(E(t.workspace.protocolHandlers,{get(d){return function(p){return p==="show-plugin"&&u(),d.call(this,p)}}}));function a(){F()&&t.setting.openTabById(t.setting.activeTab.id)}a(),this.register(()=>S(a));let l=this.getSettingsTab("hotkeys");l&&this.register(E(l,{display(d){return function(){var c,p;d.call(this),(p=(c=this.searchInputEl)!=null?c:this.searchComponent.inputEl)==null||p.focus()}},updateHotkeyVisibility(d){return function(){var b;let c=(b=this.searchInputEl)!=null?b:this.searchComponent.inputEl;if(!c)return d.call(this);let p=c.value,g=t.commands.commands;try{if(p.endsWith(":")&&!p.contains(" ")){let w=g,k=Object.fromEntries(Object.entries(t.commands.commands).filter(([L,st])=>(L+":").startsWith(p)));c.value="",t.commands.commands=new Proxy(g,{ownKeys(){try{return Object.keys(w)}finally{w=k}}})}return d.call(this)}finally{c.value=p,t.commands.commands=g}}}})),this.addCommand({id:"open-plugins",name:"Open the Community Plugins settings",callback:()=>this.showSettings("community-plugins")||!0}),this.addCommand({id:"browse-plugins",name:"Browse or search the Community Plugins catalog",callback:()=>this.gotoPlugin()});let h=new Intl.Collator(void 0,{usage:"sort",sensitivity:"base",numeric:!0}).compare;this.addCommand({id:"open-settings",name:"Open settings for plugin...",callback:async()=>{let{item:d}=await N(t.setting.pluginTabs.concat(t.setting.settingTabs).sort((c,p)=>h(c.name,p.name)),c=>c.name,"Select a plugin to open its settings...");d&&this.showSettings(d.id)}}),this.addCommand({id:"open-hotkeys",name:"Open hotkeys for plugin...",callback:async()=>{var g,b;let d=this.refreshCommands(),c=Object.values(t.plugins.plugins).map(w=>w.manifest).concat(Object.entries(t.internalPlugins.plugins).map(([w,{instance:{name:k},_loaded:L}])=>({id:w,name:k,enabled:L})).filter(w=>w.enabled)).concat([{id:"app",name:"App"},{id:"editor",name:((g=this.getSettingsTab("editor"))==null?void 0:g.name)||"Editor"},{id:"workspace",name:((b=this.getSettingsTab("file"))==null?void 0:b.name)||"Files & Links"}]).filter(w=>{var k;return(k=d[w.id])==null?void 0:k.length}),{item:p}=await N(c.sort((w,k)=>h(w.name,k.name)),w=>w.name,"Select a plugin to open its hotkeys...");p&&this.showHotkeysFor(p.id+":")}})}createExtraButtons(t,s,n){s.id!=="app"&&t.addExtraButton(e=>{e.setIcon("gear"),e.onClick(()=>this.showConfigFor(s.id.replace(/^workspace$/,"file"))),e.setTooltip("Options"),e.extraSettingsEl.toggle(n)}),t.addExtraButton(e=>{e.setIcon("any-key"),e.onClick(()=>this.showHotkeysFor(s.id+":")),e.extraSettingsEl.toggle(n),this.hotkeyButtons[s.id]=e})}addGlobals(t,s){var a,l,h;this.globalsAdded=!0;let n=s.parentElement,e;if(t!=="plugins"||this.searchInput)(a=e=this.searchInput)==null||a.onChange(u);else{let y=new m.Setting(n).addSearch(f=>{e=f,f.setPlaceholder("Filter plugins...").onChange(u)});e.containerEl.style.margin="0",n.createDiv("hotkey-search-container").append(e.containerEl),y.settingEl.detach()}t==="community-plugins"&&e.inputEl.addEventListener("keydown",y=>{if(y.keyCode===13&&!m.Keymap.getModifiers(y))return this.gotoPlugin(),!1});let r=this;function u(y){let f=(r.lastSearch[t]=y).toLowerCase();function d(c){if(!c)return!1;let p=c.textContent=c.textContent,g=p.toLowerCase().indexOf(f);return~g?(c.textContent=p.substr(0,g),c.createSpan("suggestion-highlight").textContent=p.substr(g,f.length),c.insertAdjacentText("beforeend",p.substr(g+f.length)),!0):!1}n.findAll(".setting-item").forEach(c=>{var w;let p=d(c.find(".setting-item-name")),g=d((w=c.find(".setting-item-description > div:last-child:not(.plugin-comment)"))!=null?w:c.find(".setting-item-description > div:nth-child(3):not(.plugin-comment)")),b=d(c.find(".setting-item-description > div:nth-child(2)"));c.toggle(p||g||b)})}if(S(()=>{e&&(e&&typeof r.lastSearch[t]=="string"&&(e.setValue(r.lastSearch[t]),e.onChanged()),m.Platform.isMobile||e.inputEl.select())}),n.append(s),t==="plugins"){let y=((l=this.getSettingsTab("editor"))==null?void 0:l.name)||"Editor",f=((h=this.getSettingsTab("file"))==null?void 0:h.name)||"Files & Links";this.createExtraButtons(new m.Setting(s.parentElement).setName("App").setDesc("Miscellaneous application commands (always enabled)"),{id:"app",name:"App"},!0),this.createExtraButtons(new m.Setting(s.parentElement).setName(y).setDesc("Core editing commands (always enabled)"),{id:"editor",name:y},!0),this.createExtraButtons(new m.Setting(s.parentElement).setName(f).setDesc("Core file and pane management commands (always enabled)"),{id:"workspace",name:f},!0),s.parentElement.append(s)}}enhanceViewer(){let t=this;setTimeout(E(m.Modal.prototype,{open(s){return function(...n){return nt(this)&&(S(()=>{t.lastSearch["community-plugins"]&&(this.search.inputEl.value=t.lastSearch["community-plugins"],this.search.inputEl.dispatchEvent(new Event("input")))}),t.currentViewer=this,E(this,{close(e){return function(...r){return t.currentViewer=null,e.apply(this,r)}},showItem(e){return async function(r){let u=await e.call(this,r);if(t.app.plugins.plugins[r.id]){let a=i18next.t("setting.hotkeys.name"),l=this.detailsEl.find("button").parentElement;for(let h of l.findAll("button"))h.textContent===a&&(t.hotkeyButtons[r.id]={setTooltip(y){return h.title=y,this},extraSettingsEl:h});t.refreshButtons(!0)}return u}}})),et(this)&&(S(()=>{if(t.lastSearch["community-plugins"]){let e=this.searchResultEl.cloneNode();this.searchContainerEl.replaceChild(e,this.searchResultEl),this.searchResultEl=e,this.searchEl.value=t.lastSearch["community-plugins"],this.searchEl.dispatchEvent(new Event("input"))}this.searchEl.select()}),t.currentViewer=this,E(this,{updateSearch:V,close(e){return function(...r){return t.currentViewer=null,e.apply(this,r)}},showPlugin(e){return async function(r){let u=await e.call(this,r);if(t.app.plugins.plugins[r.id]){let a=i18next.t("setting.hotkeys.name"),l=this.pluginContentEl.find("button").parentElement;for(let h of l.findAll("button"))h.textContent===a&&(t.hotkeyButtons[r.id]={setTooltip(y){return h.title=y,this},extraSettingsEl:h});t.refreshButtons(!0)}return u}}})),s.apply(this,n)}}}),0)}getSettingsTab(t){return v.setting.settingTabs.filter(s=>s.id===t).shift()}addPluginSettingEvents(t,s){let n=this.app,e=this,r=!1;function u(a,...l){r=!0;try{n.workspace.trigger(a,...l)}catch(h){console.error(h)}r=!1}return function(...l){if(r)return;u("plugin-settings:before-display",this,t);let h;t==="plugins"?h=Object.entries(n.internalPlugins.plugins).map(([c,{instance:{name:p,hiddenFromList:g},_loaded:b}])=>!g&&{id:c,name:p,enabled:b}).filter(c=>c):h=Object.values(n.plugins.manifests),h.sort((c,p)=>c.name.localeCompare(p.name));let y=0,f="",d=E(m.Setting.prototype,{addExtraButton(c){return function(p){if(!r&&(t==="plugins"||this.descEl.childElementCount)&&(h[y]||{}).name===this.nameEl.textContent){let g=h[y++];f=g.id,u("plugin-settings:plugin-control",this,g,g.enabled,t)}return c.call(this,function(g){p(g),!r&&g.extraSettingsEl.find("svg.any-key, svg.lucide-plus-circle")&&f&&(e.hotkeyButtons[f]=g,g.onClick(e.showHotkeysFor.bind(e,f+":")))})}}});try{return s.apply(this,l)}finally{d(),u("plugin-settings:after-display",this)}}}gotoPlugin(t,s="info"){if(t&&s==="hotkeys")return this.showHotkeysFor(t+":");if(t&&s==="config"){this.showConfigFor(t)||this.app.setting.close();return}if(!this.showSettings("community-plugins"))return;let n=E(m.Modal.prototype,{open(e){return function(...r){var u;return n(),t&&(this.autoload=t,(u=this.setAutoOpen)==null||u.call(this,t)),e.apply(this,r)}}});this.app.setting.activeTab.containerEl.find(".mod-cta").click()}showSettings(t){var s,n,e;if((s=this.currentViewer)==null||s.close(),H()||v.setting.open(),t)return((n=v.setting.activeTab)==null?void 0:n.id)!==t&&v.setting.openTabById(t),((e=v.setting.activeTab)==null?void 0:e.id)===t?v.setting.activeTab:!1}showHotkeysFor(t){var n,e;let s=this.showSettings("hotkeys");s&&((n=s.searchInputEl)!=null?n:s.searchComponent.inputEl)&&s.updateHotkeyVisibility&&(((e=s.searchInputEl)!=null?e:s.searchComponent.inputEl).value=t,s.updateHotkeyVisibility())}showConfigFor(t){return this.showSettings(t)?!0:(new m.Notice(`No settings tab for "${t}": it may not be installed or might not have settings.`),!1)}pluginEnabled(t){var s;return((s=v.internalPlugins.plugins[t])==null?void 0:s._loaded)||v.plugins.plugins[t]}refreshCommands(){let t=v.hotkeyManager;return this.assignedKeyCount={},this.commandsByPlugin=Object.values(v.commands.commands).reduce((s,n)=>{let e=n.id.split(":",2).shift(),r=(t.getHotkeys(n.id)||t.getDefaultHotkeys(n.id)||[]).map(Z);return r.forEach(u=>this.assignedKeyCount[u]=1+(this.assignedKeyCount[u]||0)),(s[e]||(s[e]=[])).push({hotkeys:r,cmd:n}),s},{})}refreshButtons(t=!1){var n;if(!F()&&!t)return;this.refreshCommands();let s=Object.values(v.setting.pluginTabs).reduce((e,r)=>(e[r.id]=r,e),{});s.workspace=s.editor=!0;for(let e of Object.keys(this.hotkeyButtons||{})){let r=this.hotkeyButtons[e];if(!this.commandsByPlugin[e]||((n=v.internalPlugins.plugins[e])==null?void 0:n.enabled)===!1){r.extraSettingsEl.hide();continue}let u=this.commandsByPlugin[e].filter(l=>l.hotkeys.length),a=u.filter(l=>l.hotkeys.filter(h=>this.assignedKeyCount[h]>1).length).length;r.setTooltip(`Configure hotkeys +(${u.length}/${this.commandsByPlugin[e].length} assigned${a?"; "+a+" conflicting":""})`),r.extraSettingsEl.toggleClass("mod-error",!!a),r.extraSettingsEl.show()}}}; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/hotkey-helper/manifest.json b/.obsidian/plugins/hotkey-helper/manifest.json new file mode 100644 index 0000000..cb928a5 --- /dev/null +++ b/.obsidian/plugins/hotkey-helper/manifest.json @@ -0,0 +1,9 @@ +{ + "id": "hotkey-helper", + "name": "Hotkey Helper", + "version": "0.3.21", + "minAppVersion": "1.5.8", + "description": "Easily see and access any plugin's settings or hotkey assignments (and conflicts) from the Community Plugins tab", + "author": "PJ Eby", + "authorUrl": "https://github.com/pjeby" +} \ No newline at end of file diff --git a/.obsidian/plugins/hotkey-helper/styles.css b/.obsidian/plugins/hotkey-helper/styles.css new file mode 100644 index 0000000..5df6d0d --- /dev/null +++ b/.obsidian/plugins/hotkey-helper/styles.css @@ -0,0 +1,7 @@ +.clickable-icon.mod-error, +.modal .community-plugin-info button.mod-error, +.modal-container .mod-community-plugin .community-modal-button-container button.mod-error { + background-color: var(--background-modifier-error); +} + +.community-plugin-info > p > button { margin-top: 6px; margin-bottom: 6px;} \ No newline at end of file diff --git a/.obsidian/plugins/link-favicon/main.js b/.obsidian/plugins/link-favicon/main.js new file mode 100644 index 0000000..97a9749 --- /dev/null +++ b/.obsidian/plugins/link-favicon/main.js @@ -0,0 +1,18 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +https://github.com/joethei/obisidian-link-favicon +*/ + +"use strict";var qe=Object.create;var E=Object.defineProperty;var Je=Object.getOwnPropertyDescriptor;var Ze=Object.getOwnPropertyNames;var $e=Object.getPrototypeOf,Qe=Object.prototype.hasOwnProperty;var ue=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),Xe=(r,e)=>{for(var t in e)E(r,t,{get:e[t],enumerable:!0})},he=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Ze(e))!Qe.call(r,n)&&n!==t&&E(r,n,{get:()=>e[n],enumerable:!(o=Je(e,n))||o.enumerable});return r};var Se=(r,e,t)=>(t=r!=null?qe($e(r)):{},he(e||!r||!r.__esModule?E(t,"default",{value:r,enumerable:!0}):t,r)),Ye=r=>he(E({},"__esModule",{value:!0}),r);var h=(r,e,t)=>new Promise((o,n)=>{var s=c=>{try{a(t.next(c))}catch(p){n(p)}},i=c=>{try{a(t.throw(c))}catch(p){n(p)}},a=c=>c.done?o(c.value):Promise.resolve(c.value).then(s,i);a((t=t.apply(r,e)).next())});var fe=ue((nr,et)=>{et.exports=[{"URI Scheme":"aaa",Template:"",Description:"Diameter Protocol",Status:"Permanent","CRI Scheme Number":"13862","Well-Known URI Support":"-",Reference:"[RFC6733]",Notes:"",schema:"aaa"},{"URI Scheme":"aaas",Template:"",Description:"Diameter Protocol with Secure Transport",Status:"Permanent","CRI Scheme Number":"14526","Well-Known URI Support":"-",Reference:"[RFC6733]",Notes:"",schema:"aaas"},{"URI Scheme":"about",Template:"",Description:"about",Status:"Permanent","CRI Scheme Number":"3786","Well-Known URI Support":"-",Reference:"[RFC6694]",Notes:"",schema:"about"},{"URI Scheme":"acap",Template:"",Description:"application configuration access protocol",Status:"Permanent","CRI Scheme Number":"12705","Well-Known URI Support":"-",Reference:"[RFC2244]",Notes:"",schema:"acap"},{"URI Scheme":"acct",Template:"",Description:"acct",Status:"Permanent","CRI Scheme Number":"10229","Well-Known URI Support":"-",Reference:"[RFC7565]",Notes:"",schema:"acct"},{"URI Scheme":"acd",Template:"prov/acd",Description:"acd",Status:"Provisional","CRI Scheme Number":"6840","Well-Known URI Support":"-",Reference:"[Michael_Hedenus]",Notes:"",schema:"acd"},{"URI Scheme":"acr",Template:"prov/acr",Description:"acr",Status:"Provisional","CRI Scheme Number":"10196","Well-Known URI Support":"-",Reference:"[OMA-OMNA]",Notes:"",schema:"acr"},{"URI Scheme":"adiumxtra",Template:"prov/adiumxtra",Description:"adiumxtra",Status:"Provisional","CRI Scheme Number":"6634","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"adiumxtra"},{"URI Scheme":"adt",Template:"prov/adt",Description:"adt",Status:"Provisional","CRI Scheme Number":"5150","Well-Known URI Support":"-",Reference:"[SAP_SE]",Notes:"",schema:"adt"},{"URI Scheme":"afp",Template:"prov/afp",Description:"afp",Status:"Provisional","CRI Scheme Number":"13404","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"afp"},{"URI Scheme":"afs",Template:"",Description:"Andrew File System global file names",Status:"Provisional","CRI Scheme Number":"10687","Well-Known URI Support":"-",Reference:"[RFC1738]",Notes:"",schema:"afs"},{"URI Scheme":"agtp",Template:"prov/agtp",Description:"agtp",Status:"Provisional","CRI Scheme Number":"1006","Well-Known URI Support":"-",Reference:"[Chris_Hood]",Notes:"",schema:"agtp"},{"URI Scheme":"aim",Template:"prov/aim",Description:"aim",Status:"Provisional","CRI Scheme Number":"10327","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"aim"},{"URI Scheme":"amss",Template:"prov/amss",Description:"amss",Status:"Provisional","CRI Scheme Number":"10831","Well-Known URI Support":"-",Reference:"[RadioDNS_Project]",Notes:"",schema:"amss"},{"URI Scheme":"android",Template:"prov/android",Description:"android",Status:"Provisional","CRI Scheme Number":"15061","Well-Known URI Support":"-",Reference:"[Adam_Barth][https://developer.android.com/guide/topics/manifest/manifest-intro]",Notes:"",schema:"android"},{"URI Scheme":"appdata",Template:"prov/appdata",Description:"appdata",Status:"Provisional","CRI Scheme Number":"7364","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"appdata"},{"URI Scheme":"apt",Template:"prov/apt",Description:"apt",Status:"Provisional","CRI Scheme Number":"7856","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"apt"},{"URI Scheme":"ar",Template:"prov/ar",Description:"ar",Status:"Provisional","CRI Scheme Number":"5099","Well-Known URI Support":"-",Reference:"[Arweave_Team]",Notes:"",schema:"ar"},{"URI Scheme":"ari",Template:"prov/ari",Description:"ari",Status:"Provisional","CRI Scheme Number":"3818","Well-Known URI Support":"-",Reference:"[draft-ietf-dtn-ari-04]",Notes:"",schema:"ari"},{"URI Scheme":"ark",Template:"prov/ark",Description:"ark",Status:"Provisional","CRI Scheme Number":"3018","Well-Known URI Support":"-",Reference:"[ARK_agency][https://n2t.net/ark:/21206/10015]",Notes:"",schema:"ark"},{"URI Scheme":"at",Template:"prov/at",Description:"at (see [reviewer notes])",Status:"Provisional","CRI Scheme Number":"6007","Well-Known URI Support":"-",Reference:"[Bluesky_PBLLC][Paul_Frazee]",Notes:"",schema:"at"},{"URI Scheme":"attachment",Template:"prov/attachment",Description:"attachment",Status:"Provisional","CRI Scheme Number":"8577","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"attachment"},{"URI Scheme":"aw",Template:"prov/aw",Description:"aw",Status:"Provisional","CRI Scheme Number":"16051","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"aw"},{"URI Scheme":"barion",Template:"prov/barion",Description:"barion",Status:"Provisional","CRI Scheme Number":"10225","Well-Known URI Support":"-",Reference:"[B\xEDr\xF3_Tam\xE1s]",Notes:"",schema:"barion"},{"URI Scheme":"bb",Template:"historic/bb",Description:"bb",Status:"Historical","CRI Scheme Number":"5188","Well-Known URI Support":"-",Reference:"[IESG]",Notes:"",schema:"bb"},{"URI Scheme":"beshare",Template:"prov/beshare",Description:"beshare",Status:"Provisional","CRI Scheme Number":"4674","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"beshare"},{"URI Scheme":"bitcoin",Template:"prov/bitcoin",Description:"bitcoin",Status:"Provisional","CRI Scheme Number":"9186","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"bitcoin"},{"URI Scheme":"bitcoincash",Template:"prov/bitcoincash",Description:"bitcoincash",Status:"Provisional","CRI Scheme Number":"7226","Well-Known URI Support":"-",Reference:"[Corentin_Mercier]",Notes:"",schema:"bitcoincash"},{"URI Scheme":"bl",Template:"prov/bl",Description:"bluetooth (shortened)",Status:"Provisional","CRI Scheme Number":"10024","Well-Known URI Support":"-",Reference:"[Daniel_Cowling]",Notes:"",schema:"bl"},{"URI Scheme":"blob",Template:"prov/blob",Description:"blob",Status:"Provisional","CRI Scheme Number":"11060","Well-Known URI Support":"-",Reference:"[W3C_WebApps_Working_Group][Chris_Rebert]",Notes:"",schema:"blob"},{"URI Scheme":"bluetooth",Template:"prov/bluetooth",Description:"bluetooth",Status:"Provisional","CRI Scheme Number":"12052","Well-Known URI Support":"-",Reference:"[Daniel_Cowling]",Notes:"",schema:"bluetooth"},{"URI Scheme":"bolo",Template:"prov/bolo",Description:"bolo",Status:"Provisional","CRI Scheme Number":"8765","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"bolo"},{"URI Scheme":"brid",Template:"prov/brid",Description:"brid",Status:"Provisional","CRI Scheme Number":"8251","Well-Known URI Support":"-",Reference:"[J\xFCrgen_Grupp][Michael_Ranft][Sophie_Schenkel]",Notes:"",schema:"brid"},{"URI Scheme":"browserext",Template:"prov/browserext",Description:"browserext",Status:"Provisional","CRI Scheme Number":"4327","Well-Known URI Support":"-",Reference:"[Mike_Pietraszak]",Notes:"",schema:"browserext"},{"URI Scheme":"cabal",Template:"prov/cabal",Description:"cabal",Status:"Provisional","CRI Scheme Number":"11393","Well-Known URI Support":"-",Reference:"[Fr\xE9d\xE9ric_Wang][Cabal_Club]",Notes:"",schema:"cabal"},{"URI Scheme":"calculator",Template:"prov/calculator",Description:"calculator",Status:"Provisional","CRI Scheme Number":"3783","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"calculator"},{"URI Scheme":"callto",Template:"prov/callto",Description:"callto",Status:"Provisional","CRI Scheme Number":"8713","Well-Known URI Support":"-",Reference:"[Alexey_Melnikov]",Notes:"",schema:"callto"},{"URI Scheme":"cap",Template:"",Description:"Calendar Access Protocol",Status:"Permanent","CRI Scheme Number":"9204","Well-Known URI Support":"-",Reference:"[RFC4324]",Notes:"",schema:"cap"},{"URI Scheme":"caip",Template:"prov/caip",Description:"caip",Status:"Provisional","CRI Scheme Number":"1001","Well-Known URI Support":"-",Reference:"[Patrick_Collins]",Notes:"",schema:"caip"},{"URI Scheme":"cast",Template:"prov/cast",Description:"cast",Status:"Provisional","CRI Scheme Number":"1220","Well-Known URI Support":"-",Reference:"[Adam_Barth][https://developers.google.com/cast/docs/registration]",Notes:"",schema:"cast"},{"URI Scheme":"casts",Template:"prov/casts",Description:"casts",Status:"Provisional","CRI Scheme Number":"12718","Well-Known URI Support":"-",Reference:"[Adam_Barth][https://developers.google.com/cast/docs/registration]",Notes:"",schema:"casts"},{"URI Scheme":"chrome",Template:"prov/chrome",Description:"chrome",Status:"Provisional","CRI Scheme Number":"5728","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"chrome"},{"URI Scheme":"chrome-extension",Template:"prov/chrome-extension",Description:"chrome-extension",Status:"Provisional","CRI Scheme Number":"14667","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"chrome-extension"},{"URI Scheme":"cid",Template:"",Description:"content identifier",Status:"Permanent","CRI Scheme Number":"15202","Well-Known URI Support":"-",Reference:"[RFC2392]",Notes:"",schema:"cid"},{"URI Scheme":"coap",Template:"",Description:"coap",Status:"Permanent","CRI Scheme Number":"0","Well-Known URI Support":"[RFC7252]",Reference:"[RFC7252]",Notes:"",schema:"coap"},{"URI Scheme":"coap+tcp",Template:"",Description:"coap+tcp (see [reviewer notes])",Status:"Permanent","CRI Scheme Number":"6","Well-Known URI Support":"[RFC8323]",Reference:"[RFC8323]",Notes:"",schema:"coap+tcp"},{"URI Scheme":"coap+ws",Template:"",Description:"coap+ws (see [reviewer notes])",Status:"Permanent","CRI Scheme Number":"24","Well-Known URI Support":"[RFC8323]",Reference:"[RFC8323]",Notes:"",schema:"coap+ws"},{"URI Scheme":"coaps",Template:"",Description:"coaps",Status:"Permanent","CRI Scheme Number":"1","Well-Known URI Support":"[RFC7252]",Reference:"[RFC7252]",Notes:"",schema:"coaps"},{"URI Scheme":"coaps+tcp",Template:"",Description:"coaps+tcp (see [reviewer notes])",Status:"Permanent","CRI Scheme Number":"7","Well-Known URI Support":"[RFC8323]",Reference:"[RFC8323]",Notes:"",schema:"coaps+tcp"},{"URI Scheme":"coaps+ws",Template:"",Description:"coaps+ws (see [reviewer notes])",Status:"Permanent","CRI Scheme Number":"25","Well-Known URI Support":"[RFC8323]",Reference:"[RFC8323]",Notes:"",schema:"coaps+ws"},{"URI Scheme":"com-eventbrite-attendee",Template:"prov/com-eventbrite-attendee",Description:"com-eventbrite-attendee",Status:"Provisional","CRI Scheme Number":"9278","Well-Known URI Support":"-",Reference:"[Bob_Van_Zant]",Notes:"",schema:"com-eventbrite-attendee"},{"URI Scheme":"content",Template:"prov/content",Description:"content",Status:"Provisional","CRI Scheme Number":"8387","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"content"},{"URI Scheme":"content-type",Template:"prov/content-type",Description:"content-type",Status:"Provisional","CRI Scheme Number":"6030","Well-Known URI Support":"-",Reference:"[Donald_Eastlake]",Notes:"",schema:"content-type"},{"URI Scheme":"crid",Template:"",Description:"TV-Anytime Content Reference Identifier",Status:"Permanent","CRI Scheme Number":"5990","Well-Known URI Support":"-",Reference:"[RFC4078]",Notes:"",schema:"crid"},{"URI Scheme":"cstr",Template:"prov/cstr",Description:"cstr",Status:"Provisional","CRI Scheme Number":"6730","Well-Known URI Support":"-",Reference:"[Wang_Shu]",Notes:"",schema:"cstr"},{"URI Scheme":"cttps",Template:"prov/cttps",Description:"cttps",Status:"Provisional","CRI Scheme Number":"1007","Well-Known URI Support":"-",Reference:"[Saso_Ahmed]",Notes:"",schema:"cttps"},{"URI Scheme":"cvs",Template:"prov/cvs",Description:"cvs",Status:"Provisional","CRI Scheme Number":"12242","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"cvs"},{"URI Scheme":"dab",Template:"prov/dab",Description:"dab",Status:"Provisional","CRI Scheme Number":"6774","Well-Known URI Support":"-",Reference:"[RadioDNS_Project]",Notes:"",schema:"dab"},{"URI Scheme":"dat",Template:"prov/dat",Description:"dat",Status:"Provisional","CRI Scheme Number":"10583","Well-Known URI Support":"-",Reference:"[Fr\xE9d\xE9ric_Wang][Paul_Frazee]",Notes:"",schema:"dat"},{"URI Scheme":"data",Template:"",Description:"data",Status:"Permanent","CRI Scheme Number":"1946","Well-Known URI Support":"-",Reference:"[RFC2397]",Notes:"",schema:"data"},{"URI Scheme":"dav",Template:"",Description:"dav",Status:"Permanent","CRI Scheme Number":"4373","Well-Known URI Support":"-",Reference:"[RFC4918]",Notes:"",schema:"dav"},{"URI Scheme":"dhttp",Template:"prov/dhttp",Description:"dhttp (see [reviewer notes])",Status:"Provisional","CRI Scheme Number":"4549","Well-Known URI Support":"-",Reference:"[Qi_Zhou]",Notes:"",schema:"dhttp"},{"URI Scheme":"diaspora",Template:"prov/diaspora",Description:"diaspora",Status:"Provisional","CRI Scheme Number":"4598","Well-Known URI Support":"-",Reference:"[Dennis_Schubert]",Notes:"",schema:"diaspora"},{"URI Scheme":"dict",Template:"",Description:"dictionary service protocol",Status:"Permanent","CRI Scheme Number":"3886","Well-Known URI Support":"-",Reference:"[RFC2229]",Notes:"",schema:"dict"},{"URI Scheme":"did",Template:"prov/did",Description:"did",Status:"Provisional","CRI Scheme Number":"5","Well-Known URI Support":"-",Reference:"[W3C_Decentralized_Identifier_Working_Group][Manu_Sporny][Ivan_Herman]",Notes:"",schema:"did"},{"URI Scheme":"dilithium3",Template:"prov/dilithium3",Description:"dilithium3",Status:"Provisional","CRI Scheme Number":"1005","Well-Known URI Support":"-",Reference:"[Juan_Jose_Todoli_de_Torres]",Notes:"",schema:"dilithium3"},{"URI Scheme":"dis",Template:"prov/dis",Description:"dis",Status:"Provisional","CRI Scheme Number":"17134","Well-Known URI Support":"-",Reference:"[Christophe_Meessen]",Notes:"",schema:"dis"},{"URI Scheme":"dlna-playcontainer",Template:"prov/dlna-playcontainer",Description:"dlna-playcontainer",Status:"Provisional","CRI Scheme Number":"5557","Well-Known URI Support":"-",Reference:"[DLNA]",Notes:"",schema:"dlna-playcontainer"},{"URI Scheme":"dlna-playsingle",Template:"prov/dlna-playsingle",Description:"dlna-playsingle",Status:"Provisional","CRI Scheme Number":"6144","Well-Known URI Support":"-",Reference:"[DLNA]",Notes:"",schema:"dlna-playsingle"},{"URI Scheme":"dnp",Template:"prov/dnp",Description:"dnp",Status:"Provisional","CRI Scheme Number":"15819","Well-Known URI Support":"-",Reference:"[Shuai_Wang]",Notes:"",schema:"dnp"},{"URI Scheme":"dns",Template:"",Description:"Domain Name System",Status:"Permanent","CRI Scheme Number":"12932","Well-Known URI Support":"-",Reference:"[RFC4501]",Notes:"",schema:"dns"},{"URI Scheme":"dntp",Template:"prov/dntp",Description:"dntp",Status:"Provisional","CRI Scheme Number":"14347","Well-Known URI Support":"-",Reference:"[Hans-Dieter_A._Hiep]",Notes:"",schema:"dntp"},{"URI Scheme":"doi",Template:"",Description:"doi",Status:"Permanent","CRI Scheme Number":"13014","Well-Known URI Support":"-",Reference:"[DOI URI Scheme][Pierre-Anthony_Lemieux][DOI_Foundation]",Notes:"",schema:"doi"},{"URI Scheme":"donau",Template:"prov/donau",Description:"donau",Status:"Provisional","CRI Scheme Number":"10150","Well-Known URI Support":"-",Reference:"[draft-grothoff-donau-02]",Notes:"",schema:"donau"},{"URI Scheme":"dpp",Template:"prov/dpp",Description:"dpp",Status:"Provisional","CRI Scheme Number":"2442","Well-Known URI Support":"-",Reference:"[Gaurav_Jain][Wi-Fi_Alliance]",Notes:"",schema:"dpp"},{"URI Scheme":"drm",Template:"prov/drm",Description:"drm",Status:"Provisional","CRI Scheme Number":"9859","Well-Known URI Support":"-",Reference:"[RadioDNS_Project]",Notes:"",schema:"drm"},{"URI Scheme":"drop",Template:"historic/drop",Description:"drop",Status:"Historical","CRI Scheme Number":"16138","Well-Known URI Support":"-",Reference:"[IESG]",Notes:"",schema:"drop"},{"URI Scheme":"dtmi",Template:"prov/dtmi",Description:"dtmi",Status:"Provisional","CRI Scheme Number":"17097","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"dtmi"},{"URI Scheme":"dtn",Template:"",Description:"DTNRG research and development",Status:"Permanent","CRI Scheme Number":"7456","Well-Known URI Support":"-",Reference:"[RFC9171]",Notes:"",schema:"dtn"},{"URI Scheme":"dvb",Template:"",Description:"dvb",Status:"Provisional","CRI Scheme Number":"10380","Well-Known URI Support":"-",Reference:"[draft-mcroberts-uri-dvb-09]",Notes:"",schema:"dvb"},{"URI Scheme":"dvx",Template:"prov/dvx",Description:"dvx",Status:"Provisional","CRI Scheme Number":"11645","Well-Known URI Support":"-",Reference:"[Clemens_Bastian]",Notes:"",schema:"dvx"},{"URI Scheme":"dweb",Template:"prov/dweb",Description:"dweb",Status:"Provisional","CRI Scheme Number":"1328","Well-Known URI Support":"-",Reference:"[Fr\xE9d\xE9ric_Wang][Protocol_Labs]",Notes:"",schema:"dweb"},{"URI Scheme":"ed2k",Template:"prov/ed2k",Description:"ed2k",Status:"Provisional","CRI Scheme Number":"2790","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"ed2k"},{"URI Scheme":"eid",Template:"prov/eid",Description:"eid",Status:"Provisional","CRI Scheme Number":"4929","Well-Known URI Support":"-",Reference:"[eSIM_Group_GSM_Association]",Notes:"",schema:"eid"},{"URI Scheme":"elsi",Template:"prov/elsi",Description:"elsi",Status:"Provisional","CRI Scheme Number":"13680","Well-Known URI Support":"-",Reference:"[Kimmo_Lindholm]",Notes:"",schema:"elsi"},{"URI Scheme":"embedded",Template:"prov/embedded",Description:"embedded",Status:"Provisional","CRI Scheme Number":"4193","Well-Known URI Support":"-",Reference:"[Peter_Hoddie]",Notes:"",schema:"embedded"},{"URI Scheme":"ens",Template:"prov/ens",Description:"ens",Status:"Provisional","CRI Scheme Number":"1982","Well-Known URI Support":"-",Reference:"[Ricky_Bloomfield][Bradley_Nelson]",Notes:"",schema:"ens"},{"URI Scheme":"esim",Template:"prov/esim",Description:"esim",Status:"Provisional","CRI Scheme Number":"3032","Well-Known URI Support":"-",Reference:"[eSIM_Group_GSM_Association]",Notes:"",schema:"esim"},{"URI Scheme":"ethereum",Template:"prov/ethereum",Description:"ethereum",Status:"Provisional","CRI Scheme Number":"7913","Well-Known URI Support":"-",Reference:"[Fr\xE9d\xE9ric_Wang][ligi]",Notes:"",schema:"ethereum"},{"URI Scheme":"example",Template:"",Description:"example",Status:"Permanent","CRI Scheme Number":"5296","Well-Known URI Support":"-",Reference:"[RFC7595]",Notes:"",schema:"example"},{"URI Scheme":"facetime",Template:"prov/facetime",Description:"facetime",Status:"Provisional","CRI Scheme Number":"3795","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"facetime"},{"URI Scheme":"fax",Template:"",Description:"fax",Status:"Historical","CRI Scheme Number":"4053","Well-Known URI Support":"-",Reference:"[RFC2806][RFC3966]",Notes:"",schema:"fax"},{"URI Scheme":"feed",Template:"prov/feed",Description:"feed",Status:"Provisional","CRI Scheme Number":"7520","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"feed"},{"URI Scheme":"feedready",Template:"prov/feedready",Description:"feedready",Status:"Provisional","CRI Scheme Number":"11824","Well-Known URI Support":"-",Reference:"[Mirko_Nosenzo]",Notes:"",schema:"feedready"},{"URI Scheme":"fido",Template:"prov/fido",Description:"fido",Status:"Provisional","CRI Scheme Number":"5717","Well-Known URI Support":"-",Reference:"[Adam_Langley]",Notes:"",schema:"fido"},{"URI Scheme":"file",Template:"",Description:"Host-specific file names",Status:"Permanent","CRI Scheme Number":"12068","Well-Known URI Support":"-",Reference:"[RFC8089]",Notes:"",schema:"file"},{"URI Scheme":"filesystem",Template:"historic/filesystem",Description:"filesystem",Status:"Historical","CRI Scheme Number":"3365","Well-Known URI Support":"-",Reference:"[W3C_WebApps_Working_Group][Chris_Rebert]",Notes:"",schema:"filesystem"},{"URI Scheme":"finger",Template:"prov/finger",Description:"finger",Status:"Provisional","CRI Scheme Number":"17315","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"finger"},{"URI Scheme":"first-run-pen-experience",Template:"prov/first-run-pen-experience",Description:"first-run-pen-experience",Status:"Provisional","CRI Scheme Number":"16069","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"first-run-pen-experience"},{"URI Scheme":"fish",Template:"prov/fish",Description:"fish",Status:"Provisional","CRI Scheme Number":"12634","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"fish"},{"URI Scheme":"fm",Template:"prov/fm",Description:"fm",Status:"Provisional","CRI Scheme Number":"2806","Well-Known URI Support":"-",Reference:"[RadioDNS_Project]",Notes:"",schema:"fm"},{"URI Scheme":"ftp",Template:"",Description:"File Transfer Protocol",Status:"Permanent","CRI Scheme Number":"14878","Well-Known URI Support":"-",Reference:"[RFC1738]",Notes:"",schema:"ftp"},{"URI Scheme":"fuchsia-pkg",Template:"prov/fuchsia-pkg",Description:"fuchsia-pkg",Status:"Provisional","CRI Scheme Number":"12806","Well-Known URI Support":"-",Reference:"[Adam_Barth][https://fuchsia.googlesource.com/fuchsia/]",Notes:"",schema:"fuchsia-pkg"},{"URI Scheme":"geo",Template:"",Description:"Geographic Locations",Status:"Permanent","CRI Scheme Number":"3342","Well-Known URI Support":"-",Reference:"[RFC5870]",Notes:"",schema:"geo"},{"URI Scheme":"gg",Template:"prov/gg",Description:"gg",Status:"Provisional","CRI Scheme Number":"11055","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"gg"},{"URI Scheme":"git",Template:"prov/git",Description:"git",Status:"Provisional","CRI Scheme Number":"13068","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"git"},{"URI Scheme":"gitoid",Template:"prov/gitoid",Description:"gitoid",Status:"Provisional","CRI Scheme Number":"3775","Well-Known URI Support":"-",Reference:"[Ed_Warnicke]",Notes:"",schema:"gitoid"},{"URI Scheme":"gizmoproject",Template:"prov/gizmoproject",Description:"gizmoproject",Status:"Provisional","CRI Scheme Number":"10744","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"gizmoproject"},{"URI Scheme":"go",Template:"",Description:"go",Status:"Permanent","CRI Scheme Number":"5705","Well-Known URI Support":"-",Reference:"[RFC3368]",Notes:"",schema:"go"},{"URI Scheme":"gopher",Template:"",Description:"The Gopher Protocol",Status:"Permanent","CRI Scheme Number":"8601","Well-Known URI Support":"-",Reference:"[RFC4266]",Notes:"",schema:"gopher"},{"URI Scheme":"graph",Template:"prov/graph",Description:"graph",Status:"Provisional","CRI Scheme Number":"11583","Well-Known URI Support":"-",Reference:"[Alastair_Green]",Notes:"",schema:"graph"},{"URI Scheme":"grd",Template:"historic/grd",Description:"grd",Status:"Historical","CRI Scheme Number":"9444","Well-Known URI Support":"-",Reference:"[IESG]",Notes:"",schema:"grd"},{"URI Scheme":"gtalk",Template:"prov/gtalk",Description:"gtalk",Status:"Provisional","CRI Scheme Number":"4709","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"gtalk"},{"URI Scheme":"h323",Template:"",Description:"H.323",Status:"Permanent","CRI Scheme Number":"10317","Well-Known URI Support":"-",Reference:"[RFC3508]",Notes:"",schema:"h323"},{"URI Scheme":"ham",Template:"",Description:"ham",Status:"Provisional","CRI Scheme Number":"6503","Well-Known URI Support":"-",Reference:"[RFC7046]",Notes:"",schema:"ham"},{"URI Scheme":"hcap",Template:"prov/hcap",Description:"hcap",Status:"Provisional","CRI Scheme Number":"9875","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"hcap"},{"URI Scheme":"hcp",Template:"prov/hcp",Description:"hcp",Status:"Provisional","CRI Scheme Number":"6024","Well-Known URI Support":"-",Reference:"[Alexey_Melnikov]",Notes:"",schema:"hcp"},{"URI Scheme":"hs20",Template:"prov/hs20",Description:"hs20",Status:"Provisional","CRI Scheme Number":"1273","Well-Known URI Support":"-",Reference:"[Bruno_Tomas]",Notes:"",schema:"hs20"},{"URI Scheme":"http",Template:"",Description:"Hypertext Transfer Protocol",Status:"Permanent","CRI Scheme Number":"2","Well-Known URI Support":"[RFC8615]",Reference:"[RFC9110, Section 4.2.1]",Notes:"",schema:"http"},{"URI Scheme":"https",Template:"",Description:"Hypertext Transfer Protocol Secure",Status:"Permanent","CRI Scheme Number":"3","Well-Known URI Support":"[RFC8615]",Reference:"[RFC9110, Section 4.2.2]",Notes:"",schema:"https"},{"URI Scheme":"hxxp",Template:"prov/hxxp",Description:"hxxp",Status:"Provisional","CRI Scheme Number":"16728","Well-Known URI Support":"-",Reference:"[draft-salgado-hxxp-01]",Notes:"",schema:"hxxp"},{"URI Scheme":"hxxps",Template:"prov/hxxps",Description:"hxxps",Status:"Provisional","CRI Scheme Number":"4714","Well-Known URI Support":"-",Reference:"[draft-salgado-hxxp-01]",Notes:"",schema:"hxxps"},{"URI Scheme":"hydrazone",Template:"prov/hydrazone",Description:"hydrazone",Status:"Provisional","CRI Scheme Number":"6632","Well-Known URI Support":"-",Reference:"[Matthias_Merkel][https://tech.hydrazone.pro/uri/specification/hydrazone.txt]",Notes:"",schema:"hydrazone"},{"URI Scheme":"hyper",Template:"prov/hyper",Description:"hyper",Status:"Provisional","CRI Scheme Number":"12876","Well-Known URI Support":"-",Reference:"[Fr\xE9d\xE9ric_Wang][Paul_Frazee]",Notes:"",schema:"hyper"},{"URI Scheme":"i0",Template:"prov/i0",Description:"i0",Status:"Provisional","CRI Scheme Number":"10328","Well-Known URI Support":"-",Reference:"[Ember_Ana]",Notes:"",schema:"i0"},{"URI Scheme":"iax",Template:"",Description:"Inter-Asterisk eXchange Version 2",Status:"Permanent","CRI Scheme Number":"7126","Well-Known URI Support":"-",Reference:"[RFC5456]",Notes:"",schema:"iax"},{"URI Scheme":"ibi",Template:"prov/ibi",Description:"ibi",Status:"Provisional","CRI Scheme Number":"1002","Well-Known URI Support":"-",Reference:"[Gerald_Jean_Francis_Banon]",Notes:"",schema:"ibi"},{"URI Scheme":"ibi-",Template:"prov/ibi-",Description:"ibi-",Status:"Provisional","CRI Scheme Number":"1003","Well-Known URI Support":"-",Reference:"[Gerald_Jean_Francis_Banon]",Notes:"",schema:"ibi-"},{"URI Scheme":"ilstring",Template:"prov/ilstring",Description:"ilstring",Status:"Provisional","CRI Scheme Number":"12237","Well-Known URI Support":"-",Reference:"[OPC_Foundation][https://webstore.iec.ch/en/publication/77973]",Notes:"",schema:"ilstring"},{"URI Scheme":"icap",Template:"",Description:"Internet Content Adaptation Protocol",Status:"Permanent","CRI Scheme Number":"12566","Well-Known URI Support":"-",Reference:"[RFC3507]",Notes:"",schema:"icap"},{"URI Scheme":"icon",Template:"",Description:"icon",Status:"Provisional","CRI Scheme Number":"14868","Well-Known URI Support":"-",Reference:"[draft-lafayette-icon-uri-scheme-01]",Notes:"",schema:"icon"},{"URI Scheme":"ilstring",Template:"prov/ilstring",Description:"ilstring",Status:"Provisional","CRI Scheme Number":"12237","Well-Known URI Support":"-",Reference:"[OPC_Foundation][https://webstore.iec.ch/en/publication/77973]",Notes:"",schema:"ilstring"},{"URI Scheme":"im",Template:"",Description:"Instant Messaging",Status:"Permanent","CRI Scheme Number":"6883","Well-Known URI Support":"-",Reference:"[RFC3860]",Notes:"",schema:"im"},{"URI Scheme":"imap",Template:"",Description:"internet message access protocol",Status:"Permanent","CRI Scheme Number":"10119","Well-Known URI Support":"-",Reference:"[RFC5092]",Notes:"",schema:"imap"},{"URI Scheme":"info",Template:"",Description:'Information Assets with Identifiers in Public Namespaces. [RFC4452] (section 3) defines an "info" registry of public namespaces, which is maintained by NISO and can be accessed from [http://info-uri.info/].',Status:"Permanent","CRI Scheme Number":"13846","Well-Known URI Support":"-",Reference:"[RFC4452]",Notes:"",schema:"info"},{"URI Scheme":"iotdisco",Template:"prov/iotdisco",Description:"iotdisco",Status:"Provisional","CRI Scheme Number":"17170","Well-Known URI Support":"-",Reference:"[Peter_Waher][https://www.iana.org/assignments/uri-schemes/prov/iotdisco.pdf]",Notes:"",schema:"iotdisco"},{"URI Scheme":"ipfs",Template:"prov/ipfs",Description:"ipfs",Status:"Provisional","CRI Scheme Number":"15972","Well-Known URI Support":"-",Reference:"[Fr\xE9d\xE9ric_Wang][Protocol_Labs]",Notes:"",schema:"ipfs"},{"URI Scheme":"ipn",Template:"",Description:"ipn",Status:"Permanent","CRI Scheme Number":"8775","Well-Known URI Support":"-",Reference:"[RFC9758]",Notes:"",schema:"ipn"},{"URI Scheme":"ipns",Template:"prov/ipns",Description:"ipns",Status:"Provisional","CRI Scheme Number":"16933","Well-Known URI Support":"-",Reference:"[Fr\xE9d\xE9ric_Wang][Protocol_Labs]",Notes:"",schema:"ipns"},{"URI Scheme":"ipp",Template:"",Description:"Internet Printing Protocol",Status:"Permanent","CRI Scheme Number":"9318","Well-Known URI Support":"-",Reference:"[RFC3510]",Notes:"",schema:"ipp"},{"URI Scheme":"ipps",Template:"",Description:"Internet Printing Protocol over HTTPS",Status:"Permanent","CRI Scheme Number":"4419","Well-Known URI Support":"-",Reference:"[RFC7472]",Notes:"",schema:"ipps"},{"URI Scheme":"irc",Template:"prov/irc",Description:"irc",Status:"Provisional","CRI Scheme Number":"5425","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"irc"},{"URI Scheme":"irc6",Template:"prov/irc6",Description:"irc6",Status:"Provisional","CRI Scheme Number":"1905","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"irc6"},{"URI Scheme":"ircs",Template:"prov/ircs",Description:"ircs",Status:"Provisional","CRI Scheme Number":"8687","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"ircs"},{"URI Scheme":"iris",Template:"",Description:"Internet Registry Information Service",Status:"Permanent","CRI Scheme Number":"13986","Well-Known URI Support":"-",Reference:"[RFC3981]",Notes:"",schema:"iris"},{"URI Scheme":"iris.beep",Template:"",Description:"iris.beep",Status:"Permanent","CRI Scheme Number":"15639","Well-Known URI Support":"-",Reference:"[RFC3983]",Notes:"",schema:"iris.beep"},{"URI Scheme":"iris.lwz",Template:"",Description:"iris.lwz",Status:"Permanent","CRI Scheme Number":"4590","Well-Known URI Support":"-",Reference:"[RFC4993]",Notes:"",schema:"iris.lwz"},{"URI Scheme":"iris.xpc",Template:"",Description:"iris.xpc",Status:"Permanent","CRI Scheme Number":"12422","Well-Known URI Support":"-",Reference:"[RFC4992]",Notes:"",schema:"iris.xpc"},{"URI Scheme":"iris.xpcs",Template:"",Description:"iris.xpcs",Status:"Permanent","CRI Scheme Number":"16134","Well-Known URI Support":"-",Reference:"[RFC4992]",Notes:"",schema:"iris.xpcs"},{"URI Scheme":"isostore",Template:"prov/isostore",Description:"isostore",Status:"Provisional","CRI Scheme Number":"7225","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"isostore"},{"URI Scheme":"itms",Template:"prov/itms",Description:"itms",Status:"Provisional","CRI Scheme Number":"14830","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"itms"},{"URI Scheme":"jabber",Template:"perm/jabber",Description:"jabber",Status:"Permanent","CRI Scheme Number":"6109","Well-Known URI Support":"-",Reference:"[Peter_Saint-Andre]",Notes:"",schema:"jabber"},{"URI Scheme":"jar",Template:"prov/jar",Description:"jar",Status:"Provisional","CRI Scheme Number":"1578","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"jar"},{"URI Scheme":"jms",Template:"",Description:"Java Message Service",Status:"Provisional","CRI Scheme Number":"3634","Well-Known URI Support":"-",Reference:"[RFC6167]",Notes:"",schema:"jms"},{"URI Scheme":"keyparc",Template:"prov/keyparc",Description:"keyparc",Status:"Provisional","CRI Scheme Number":"9770","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"keyparc"},{"URI Scheme":"lastfm",Template:"prov/lastfm",Description:"lastfm",Status:"Provisional","CRI Scheme Number":"11742","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"lastfm"},{"URI Scheme":"lbry",Template:"prov/lbry",Description:"lbry",Status:"Provisional","CRI Scheme Number":"14010","Well-Known URI Support":"-",Reference:"[Alex_Grintsvayg]",Notes:"",schema:"lbry"},{"URI Scheme":"ldap",Template:"",Description:"Lightweight Directory Access Protocol",Status:"Permanent","CRI Scheme Number":"13442","Well-Known URI Support":"-",Reference:"[RFC4516]",Notes:"",schema:"ldap"},{"URI Scheme":"ldaps",Template:"prov/ldaps",Description:"ldaps",Status:"Provisional","CRI Scheme Number":"3906","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"ldaps"},{"URI Scheme":"leaptofrogans",Template:"",Description:"leaptofrogans",Status:"Permanent","CRI Scheme Number":"16281","Well-Known URI Support":"-",Reference:"[RFC8589]",Notes:"",schema:"leaptofrogans"},{"URI Scheme":"lid",Template:"prov/lid",Description:"lid",Status:"Provisional","CRI Scheme Number":"10247","Well-Known URI Support":"-",Reference:"[IS4]",Notes:"",schema:"lid"},{"URI Scheme":"linkid",Template:"prov/linkid",Description:"linkid",Status:"Provisional","CRI Scheme Number":"1819","Well-Known URI Support":"-",Reference:"[Christian_Nyffenegger]",Notes:"",schema:"linkid"},{"URI Scheme":"lorawan",Template:"prov/lorawan",Description:"lorawan",Status:"Provisional","CRI Scheme Number":"11718","Well-Known URI Support":"-",Reference:"[OMA-DMSE]",Notes:"",schema:"lorawan"},{"URI Scheme":"lpa",Template:"prov/lpa",Description:"lpa",Status:"Provisional","CRI Scheme Number":"6658","Well-Known URI Support":"-",Reference:"[eSIM_Group_GSM_Association]",Notes:"",schema:"lpa"},{"URI Scheme":"lvlt",Template:"prov/lvlt",Description:"lvlt",Status:"Provisional","CRI Scheme Number":"5480","Well-Known URI Support":"-",Reference:"[Alexander_Shishenko]",Notes:"",schema:"lvlt"},{"URI Scheme":"machineProvisioningProgressReporter",Template:"prov/machineProvisioningProgressReporter",Description:"Windows Autopilot Modern Device Management status updates",Status:"Provisional","CRI Scheme Number":"5477","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"machineProvisioningProgressReporter"},{"URI Scheme":"magnet",Template:"prov/magnet",Description:"magnet",Status:"Provisional","CRI Scheme Number":"9805","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"magnet"},{"URI Scheme":"mailserver",Template:"",Description:"Access to data available from mail servers",Status:"Historical","CRI Scheme Number":"10868","Well-Known URI Support":"-",Reference:"[RFC6196]",Notes:"",schema:"mailserver"},{"URI Scheme":"mailto",Template:"",Description:"Electronic mail address",Status:"Permanent","CRI Scheme Number":"12102","Well-Known URI Support":"-",Reference:"[RFC6068]",Notes:"",schema:"mailto"},{"URI Scheme":"maps",Template:"prov/maps",Description:"maps",Status:"Provisional","CRI Scheme Number":"14153","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"maps"},{"URI Scheme":"market",Template:"prov/market",Description:"market",Status:"Provisional","CRI Scheme Number":"14595","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"market"},{"URI Scheme":"matrix",Template:"prov/matrix",Description:"matrix",Status:"Provisional","CRI Scheme Number":"9487","Well-Known URI Support":"-",Reference:"[Hubert_Chathi]",Notes:"",schema:"matrix"},{"URI Scheme":"message",Template:"prov/message",Description:"message",Status:"Provisional","CRI Scheme Number":"14460","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"message"},{"URI Scheme":"microsoft.windows.camera",Template:"prov/microsoft.windows.camera",Description:"microsoft.windows.camera",Status:"Provisional","CRI Scheme Number":"11857","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"microsoft.windows.camera"},{"URI Scheme":"microsoft.windows.camera.multipicker",Template:"prov/microsoft.windows.camera.multipicker",Description:"microsoft.windows.camera.multipicker",Status:"Provisional","CRI Scheme Number":"7942","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"microsoft.windows.camera.multipicker"},{"URI Scheme":"microsoft.windows.camera.picker",Template:"prov/microsoft.windows.camera.picker",Description:"microsoft.windows.camera.picker",Status:"Provisional","CRI Scheme Number":"5883","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"microsoft.windows.camera.picker"},{"URI Scheme":"mid",Template:"",Description:"message identifier",Status:"Permanent","CRI Scheme Number":"3646","Well-Known URI Support":"-",Reference:"[RFC2392]",Notes:"",schema:"mid"},{"URI Scheme":"mms",Template:"prov/mms",Description:"mms",Status:"Provisional","CRI Scheme Number":"12337","Well-Known URI Support":"-",Reference:"[Alexey_Melnikov]",Notes:"",schema:"mms"},{"URI Scheme":"modem",Template:"",Description:"modem",Status:"Historical","CRI Scheme Number":"9154","Well-Known URI Support":"-",Reference:"[RFC2806][RFC3966]",Notes:"",schema:"modem"},{"URI Scheme":"mongodb",Template:"prov/mongodb",Description:"mongodb",Status:"Provisional","CRI Scheme Number":"13372","Well-Known URI Support":"-",Reference:"[Ignacio_Losiggio][Mongo_DB_Inc]",Notes:"",schema:"mongodb"},{"URI Scheme":"moz",Template:"prov/moz",Description:"moz",Status:"Provisional","CRI Scheme Number":"6808","Well-Known URI Support":"-",Reference:"[Joe_Hildebrand]",Notes:"",schema:"moz"},{"URI Scheme":"mqtt",Template:"prov/mqtt",Description:"mqtt",Status:"Provisional","CRI Scheme Number":"10740","Well-Known URI Support":"-",Reference:"[Mike_Bishop]",Notes:"",schema:"mqtt"},{"URI Scheme":"mqtts",Template:"prov/mqtts",Description:"mqtts",Status:"Provisional","CRI Scheme Number":"14906","Well-Known URI Support":"-",Reference:"[Mike_Bishop]",Notes:"",schema:"mqtts"},{"URI Scheme":"ms-access",Template:"prov/ms-access",Description:"ms-access",Status:"Provisional","CRI Scheme Number":"6863","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-access"},{"URI Scheme":"ms-appinstaller",Template:"prov/ms-appinstaller",Description:"ms-appinstaller",Status:"Provisional","CRI Scheme Number":"5152","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-appinstaller"},{"URI Scheme":"ms-browser-extension",Template:"prov/ms-browser-extension",Description:"ms-browser-extension",Status:"Provisional","CRI Scheme Number":"14090","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-browser-extension"},{"URI Scheme":"ms-calculator",Template:"prov/ms-calculator",Description:"ms-calculator",Status:"Provisional","CRI Scheme Number":"3690","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-calculator"},{"URI Scheme":"ms-drive-to",Template:"prov/ms-drive-to",Description:"ms-drive-to",Status:"Provisional","CRI Scheme Number":"4102","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-drive-to"},{"URI Scheme":"ms-enrollment",Template:"prov/ms-enrollment",Description:"ms-enrollment",Status:"Provisional","CRI Scheme Number":"14310","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-enrollment"},{"URI Scheme":"ms-excel",Template:"prov/ms-excel",Description:"ms-excel",Status:"Provisional","CRI Scheme Number":"5536","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-excel"},{"URI Scheme":"ms-eyecontrolspeech",Template:"prov/ms-eyecontrolspeech",Description:"ms-eyecontrolspeech",Status:"Provisional","CRI Scheme Number":"17381","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-eyecontrolspeech"},{"URI Scheme":"ms-gamebarservices",Template:"prov/ms-gamebarservices",Description:"ms-gamebarservices",Status:"Provisional","CRI Scheme Number":"12823","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-gamebarservices"},{"URI Scheme":"ms-gamingoverlay",Template:"prov/ms-gamingoverlay",Description:"ms-gamingoverlay",Status:"Provisional","CRI Scheme Number":"1059","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-gamingoverlay"},{"URI Scheme":"ms-getoffice",Template:"prov/ms-getoffice",Description:"ms-getoffice",Status:"Provisional","CRI Scheme Number":"14366","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-getoffice"},{"URI Scheme":"ms-help",Template:"prov/ms-help",Description:"ms-help",Status:"Provisional","CRI Scheme Number":"7809","Well-Known URI Support":"-",Reference:"[Alexey_Melnikov]",Notes:"",schema:"ms-help"},{"URI Scheme":"ms-infopath",Template:"prov/ms-infopath",Description:"ms-infopath",Status:"Provisional","CRI Scheme Number":"8830","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-infopath"},{"URI Scheme":"ms-inputapp",Template:"prov/ms-inputapp",Description:"ms-inputapp",Status:"Provisional","CRI Scheme Number":"6792","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-inputapp"},{"URI Scheme":"ms-launchremotedesktop",Template:"prov/ms-launchremotedesktop",Description:"ms-launchremotedesktop",Status:"Provisional","CRI Scheme Number":"12174","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-launchremotedesktop"},{"URI Scheme":"ms-lockscreencomponent-config",Template:"prov/ms-lockscreencomponent-config",Description:"ms-lockscreencomponent-config",Status:"Provisional","CRI Scheme Number":"12525","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-lockscreencomponent-config"},{"URI Scheme":"ms-media-stream-id",Template:"prov/ms-media-stream-id",Description:"ms-media-stream-id",Status:"Provisional","CRI Scheme Number":"6388","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-media-stream-id"},{"URI Scheme":"ms-meetnow",Template:"prov/ms-meetnow",Description:"ms-meetnow",Status:"Provisional","CRI Scheme Number":"15645","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-meetnow"},{"URI Scheme":"ms-mixedrealitycapture",Template:"prov/ms-mixedrealitycapture",Description:"ms-mixedrealitycapture",Status:"Provisional","CRI Scheme Number":"6411","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-mixedrealitycapture"},{"URI Scheme":"ms-mobileplans",Template:"prov/ms-mobileplans",Description:"ms-mobileplans",Status:"Provisional","CRI Scheme Number":"11945","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-mobileplans"},{"URI Scheme":"ms-newsandinterests",Template:"prov/ms-newsandinterests",Description:"ms-newsandinterests",Status:"Provisional","CRI Scheme Number":"2945","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-newsandinterests"},{"URI Scheme":"ms-officeapp",Template:"prov/ms-officeapp",Description:"ms-officeapp",Status:"Provisional","CRI Scheme Number":"14168","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-officeapp"},{"URI Scheme":"ms-people",Template:"prov/ms-people",Description:"ms-people",Status:"Provisional","CRI Scheme Number":"1528","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-people"},{"URI Scheme":"ms-personacard",Template:"prov/ms-personacard",Description:"ms-personacard",Status:"Provisional","CRI Scheme Number":"1562","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-personacard"},{"URI Scheme":"ms-powerpoint",Template:"prov/ms-powerpoint",Description:"ms-powerpoint",Status:"Provisional","CRI Scheme Number":"16645","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-powerpoint"},{"URI Scheme":"ms-project",Template:"prov/ms-project",Description:"ms-project",Status:"Provisional","CRI Scheme Number":"11130","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-project"},{"URI Scheme":"ms-publisher",Template:"prov/ms-publisher",Description:"ms-publisher",Status:"Provisional","CRI Scheme Number":"16194","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-publisher"},{"URI Scheme":"ms-recall",Template:"prov/ms-recall",Description:"ms-recall",Status:"Provisional","CRI Scheme Number":"10183","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-recall"},{"URI Scheme":"ms-remotedesktop",Template:"prov/ms-remotedesktop",Description:"ms-remotedesktop",Status:"Provisional","CRI Scheme Number":"5347","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-remotedesktop"},{"URI Scheme":"ms-remotedesktop-launch",Template:"prov/ms-remotedesktop-launch",Description:"ms-remotedesktop-launch",Status:"Provisional","CRI Scheme Number":"8085","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-remotedesktop-launch"},{"URI Scheme":"ms-restoretabcompanion",Template:"prov/ms-restoretabcompanion",Description:"ms-restoretabcompanion",Status:"Provisional","CRI Scheme Number":"17175","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-restoretabcompanion"},{"URI Scheme":"ms-screenclip",Template:"prov/ms-screenclip",Description:"ms-screenclip",Status:"Provisional","CRI Scheme Number":"10518","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-screenclip"},{"URI Scheme":"ms-screensketch",Template:"prov/ms-screensketch",Description:"ms-screensketch",Status:"Provisional","CRI Scheme Number":"9453","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-screensketch"},{"URI Scheme":"ms-search",Template:"prov/ms-search",Description:"ms-search",Status:"Provisional","CRI Scheme Number":"14034","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-search"},{"URI Scheme":"ms-search-repair",Template:"prov/ms-search-repair",Description:"ms-search-repair",Status:"Provisional","CRI Scheme Number":"15679","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-search-repair"},{"URI Scheme":"ms-secondary-screen-controller",Template:"prov/ms-secondary-screen-controller",Description:"ms-secondary-screen-controller",Status:"Provisional","CRI Scheme Number":"13098","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-secondary-screen-controller"},{"URI Scheme":"ms-secondary-screen-setup",Template:"prov/ms-secondary-screen-setup",Description:"ms-secondary-screen-setup",Status:"Provisional","CRI Scheme Number":"15254","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-secondary-screen-setup"},{"URI Scheme":"ms-settings",Template:"prov/ms-settings",Description:"ms-settings",Status:"Provisional","CRI Scheme Number":"9075","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings"},{"URI Scheme":"ms-settings-airplanemode",Template:"prov/ms-settings-airplanemode",Description:"ms-settings-airplanemode",Status:"Provisional","CRI Scheme Number":"5109","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-airplanemode"},{"URI Scheme":"ms-settings-bluetooth",Template:"prov/ms-settings-bluetooth",Description:"ms-settings-bluetooth",Status:"Provisional","CRI Scheme Number":"14180","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-bluetooth"},{"URI Scheme":"ms-settings-camera",Template:"prov/ms-settings-camera",Description:"ms-settings-camera",Status:"Provisional","CRI Scheme Number":"15773","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-camera"},{"URI Scheme":"ms-settings-cellular",Template:"prov/ms-settings-cellular",Description:"ms-settings-cellular",Status:"Provisional","CRI Scheme Number":"15361","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-cellular"},{"URI Scheme":"ms-settings-cloudstorage",Template:"prov/ms-settings-cloudstorage",Description:"ms-settings-cloudstorage",Status:"Provisional","CRI Scheme Number":"10640","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-cloudstorage"},{"URI Scheme":"ms-settings-connectabledevices",Template:"prov/ms-settings-connectabledevices",Description:"ms-settings-connectabledevices",Status:"Provisional","CRI Scheme Number":"11351","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-connectabledevices"},{"URI Scheme":"ms-settings-displays-topology",Template:"prov/ms-settings-displays-topology",Description:"ms-settings-displays-topology",Status:"Provisional","CRI Scheme Number":"12029","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-displays-topology"},{"URI Scheme":"ms-settings-emailandaccounts",Template:"prov/ms-settings-emailandaccounts",Description:"ms-settings-emailandaccounts",Status:"Provisional","CRI Scheme Number":"11072","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-emailandaccounts"},{"URI Scheme":"ms-settings-language",Template:"prov/ms-settings-language",Description:"ms-settings-language",Status:"Provisional","CRI Scheme Number":"9981","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-language"},{"URI Scheme":"ms-settings-location",Template:"prov/ms-settings-location",Description:"ms-settings-location",Status:"Provisional","CRI Scheme Number":"10373","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-location"},{"URI Scheme":"ms-settings-lock",Template:"prov/ms-settings-lock",Description:"ms-settings-lock",Status:"Provisional","CRI Scheme Number":"11950","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-lock"},{"URI Scheme":"ms-settings-nfctransactions",Template:"prov/ms-settings-nfctransactions",Description:"ms-settings-nfctransactions",Status:"Provisional","CRI Scheme Number":"10591","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-nfctransactions"},{"URI Scheme":"ms-settings-notifications",Template:"prov/ms-settings-notifications",Description:"ms-settings-notifications",Status:"Provisional","CRI Scheme Number":"7868","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-notifications"},{"URI Scheme":"ms-settings-power",Template:"prov/ms-settings-power",Description:"ms-settings-power",Status:"Provisional","CRI Scheme Number":"13026","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-power"},{"URI Scheme":"ms-settings-privacy",Template:"prov/ms-settings-privacy",Description:"ms-settings-privacy",Status:"Provisional","CRI Scheme Number":"9198","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-privacy"},{"URI Scheme":"ms-settings-proximity",Template:"prov/ms-settings-proximity",Description:"ms-settings-proximity",Status:"Provisional","CRI Scheme Number":"3959","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-proximity"},{"URI Scheme":"ms-settings-screenrotation",Template:"prov/ms-settings-screenrotation",Description:"ms-settings-screenrotation",Status:"Provisional","CRI Scheme Number":"6755","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-screenrotation"},{"URI Scheme":"ms-settings-wifi",Template:"prov/ms-settings-wifi",Description:"ms-settings-wifi",Status:"Provisional","CRI Scheme Number":"15994","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-wifi"},{"URI Scheme":"ms-settings-workplace",Template:"prov/ms-settings-workplace",Description:"ms-settings-workplace",Status:"Provisional","CRI Scheme Number":"14936","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-settings-workplace"},{"URI Scheme":"ms-spd",Template:"prov/ms-spd",Description:"ms-spd",Status:"Provisional","CRI Scheme Number":"6189","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-spd"},{"URI Scheme":"ms-stickers",Template:"prov/ms-stickers",Description:"ms-stickers",Status:"Provisional","CRI Scheme Number":"10361","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-stickers"},{"URI Scheme":"ms-sttoverlay",Template:"prov/ms-sttoverlay",Description:"ms-sttoverlay",Status:"Provisional","CRI Scheme Number":"5410","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-sttoverlay"},{"URI Scheme":"ms-transit-to",Template:"prov/ms-transit-to",Description:"ms-transit-to",Status:"Provisional","CRI Scheme Number":"7743","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-transit-to"},{"URI Scheme":"ms-useractivityset",Template:"prov/ms-useractivityset",Description:"ms-useractivityset",Status:"Provisional","CRI Scheme Number":"9136","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-useractivityset"},{"URI Scheme":"ms-uup",Template:"prov/ms-uup",Description:"ms-uup",Status:"Provisional","CRI Scheme Number":"1560","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-uup"},{"URI Scheme":"ms-virtualtouchpad",Template:"prov/ms-virtualtouchpad",Description:"ms-virtualtouchpad",Status:"Provisional","CRI Scheme Number":"15776","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-virtualtouchpad"},{"URI Scheme":"ms-visio",Template:"prov/ms-visio",Description:"ms-visio",Status:"Provisional","CRI Scheme Number":"15163","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-visio"},{"URI Scheme":"ms-walk-to",Template:"prov/ms-walk-to",Description:"ms-walk-to",Status:"Provisional","CRI Scheme Number":"14364","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-walk-to"},{"URI Scheme":"ms-whiteboard",Template:"prov/ms-whiteboard",Description:"ms-whiteboard",Status:"Provisional","CRI Scheme Number":"11467","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-whiteboard"},{"URI Scheme":"ms-whiteboard-cmd",Template:"prov/ms-whiteboard-cmd",Description:"ms-whiteboard-cmd",Status:"Provisional","CRI Scheme Number":"14860","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-whiteboard-cmd"},{"URI Scheme":"ms-widgetboard",Template:"prov/ms-widgetboard",Description:"ms-widgetboard",Status:"Provisional","CRI Scheme Number":"12603","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-widgetboard"},{"URI Scheme":"ms-widgets",Template:"prov/ms-widgets",Description:"ms-widgets",Status:"Provisional","CRI Scheme Number":"4613","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-widgets"},{"URI Scheme":"ms-word",Template:"prov/ms-word",Description:"ms-word",Status:"Provisional","CRI Scheme Number":"16585","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"ms-word"},{"URI Scheme":"msnim",Template:"prov/msnim",Description:"msnim",Status:"Provisional","CRI Scheme Number":"8041","Well-Known URI Support":"-",Reference:"[Alexey_Melnikov]",Notes:"",schema:"msnim"},{"URI Scheme":"msrp",Template:"",Description:"Message Session Relay Protocol",Status:"Permanent","CRI Scheme Number":"11315","Well-Known URI Support":"-",Reference:"[RFC4975]",Notes:"",schema:"msrp"},{"URI Scheme":"msrps",Template:"",Description:"Message Session Relay Protocol Secure",Status:"Permanent","CRI Scheme Number":"13440","Well-Known URI Support":"-",Reference:"[RFC4975][RFC8873]",Notes:"",schema:"msrps"},{"URI Scheme":"mss",Template:"prov/mss",Description:"mss",Status:"Provisional","CRI Scheme Number":"12493","Well-Known URI Support":"-",Reference:"[Jarmo_Miettinen]",Notes:"",schema:"mss"},{"URI Scheme":"mt",Template:"perm/mt",Description:"Matter protocol on-boarding payloads that are encoded for use in QR Codes and/or NFC Tags",Status:"Permanent","CRI Scheme Number":"12699","Well-Known URI Support":"-",Reference:"[Connectivity_Standards_Alliance]",Notes:"",schema:"mt"},{"URI Scheme":"mtqp",Template:"",Description:"Message Tracking Query Protocol",Status:"Permanent","CRI Scheme Number":"3358","Well-Known URI Support":"-",Reference:"[RFC3887]",Notes:"",schema:"mtqp"},{"URI Scheme":"mtrust",Template:"prov/mtrust",Description:"mtrust",Status:"Provisional","CRI Scheme Number":"13062","Well-Known URI Support":"-",Reference:"[Egbert_von_Frankenberg]",Notes:"",schema:"mtrust"},{"URI Scheme":"mumble",Template:"prov/mumble",Description:"mumble",Status:"Provisional","CRI Scheme Number":"11804","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"mumble"},{"URI Scheme":"mupdate",Template:"",Description:"Mailbox Update (MUPDATE) Protocol",Status:"Permanent","CRI Scheme Number":"12569","Well-Known URI Support":"-",Reference:"[RFC3656]",Notes:"",schema:"mupdate"},{"URI Scheme":"mvn",Template:"prov/mvn",Description:"mvn",Status:"Provisional","CRI Scheme Number":"9585","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"mvn"},{"URI Scheme":"mvrp",Template:"prov/mvrp",Description:`mvrp + (see [reviewer notes])`,Status:"Provisional","CRI Scheme Number":"13451","Well-Known URI Support":"-",Reference:"[Antonio_Walker]",Notes:"",schema:"mvrp"},{"URI Scheme":"mvrps",Template:"prov/mvrps",Description:`mvrps + (see [reviewer notes])`,Status:"Provisional","CRI Scheme Number":"13228","Well-Known URI Support":"-",Reference:"[Antonio_Walker]",Notes:"",schema:"mvrps"},{"URI Scheme":"news",Template:"",Description:"USENET news",Status:"Permanent","CRI Scheme Number":"1895","Well-Known URI Support":"-",Reference:"[RFC5538]",Notes:"",schema:"news"},{"URI Scheme":"nfs",Template:"",Description:"network file system protocol",Status:"Permanent","CRI Scheme Number":"6516","Well-Known URI Support":"-",Reference:"[RFC2224]",Notes:"",schema:"nfs"},{"URI Scheme":"ni",Template:"",Description:"ni",Status:"Permanent","CRI Scheme Number":"10926","Well-Known URI Support":"-",Reference:"[RFC6920]",Notes:"",schema:"ni"},{"URI Scheme":"nih",Template:"",Description:"nih",Status:"Permanent","CRI Scheme Number":"11428","Well-Known URI Support":"-",Reference:"[RFC6920]",Notes:"",schema:"nih"},{"URI Scheme":"nntp",Template:"",Description:"USENET news using NNTP access",Status:"Permanent","CRI Scheme Number":"13499","Well-Known URI Support":"-",Reference:"[RFC5538]",Notes:"",schema:"nntp"},{"URI Scheme":"notes",Template:"prov/notes",Description:"notes",Status:"Provisional","CRI Scheme Number":"8766","Well-Known URI Support":"-",Reference:"[draft-dconmy-notes-uri-scheme-02]",Notes:"",schema:"notes"},{"URI Scheme":"num",Template:"prov/num",Description:"Namespace Utility Modules",Status:"Provisional","CRI Scheme Number":"9965","Well-Known URI Support":"-",Reference:"[Elliott_Brown][https://www.numprotocol.com/specification]",Notes:"",schema:"num"},{"URI Scheme":"ocf",Template:"prov/ocf",Description:"ocf",Status:"Provisional","CRI Scheme Number":"10241","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"ocf"},{"URI Scheme":"oid",Template:"prov/oid",Description:"oid",Status:"Provisional","CRI Scheme Number":"16079","Well-Known URI Support":"-",Reference:"[draft-larmouth-oid-iri-04]",Notes:"",schema:"oid"},{"URI Scheme":"onenote",Template:"prov/onenote",Description:"onenote",Status:"Provisional","CRI Scheme Number":"13608","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"onenote"},{"URI Scheme":"onenote-cmd",Template:"prov/onenote-cmd",Description:"onenote-cmd",Status:"Provisional","CRI Scheme Number":"16632","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"onenote-cmd"},{"URI Scheme":"opaquelocktoken",Template:"",Description:"opaquelocktokent",Status:"Permanent","CRI Scheme Number":"6341","Well-Known URI Support":"-",Reference:"[RFC4918]",Notes:"",schema:"opaquelocktoken"},{"URI Scheme":"openid",Template:"prov/openid",Description:"OpenID Connect",Status:"Provisional","CRI Scheme Number":"1242","Well-Known URI Support":"-",Reference:"[OpenID_Foundation_Artifact_Binding_Working_Group][OpenID Connect Core 1.0, Section 7.3]",Notes:"",schema:"openid"},{"URI Scheme":"openpgp4fpr",Template:"prov/openpgp4fpr",Description:"openpgp4fpr",Status:"Provisional","CRI Scheme Number":"13094","Well-Known URI Support":"-",Reference:"[Wiktor_Kwapisiewicz]",Notes:"",schema:"openpgp4fpr"},{"URI Scheme":"otpauth",Template:"prov/otpauth",Description:"otpauth",Status:"Provisional","CRI Scheme Number":"13829","Well-Known URI Support":"-",Reference:"[Fr\xE9d\xE9ric_Wang][Thomas_Habets]",Notes:"",schema:"otpauth"},{"URI Scheme":"p1",Template:"historic/p1",Description:"p1",Status:"Historical","CRI Scheme Number":"14982","Well-Known URI Support":"-",Reference:"[IESG]",Notes:"",schema:"p1"},{"URI Scheme":"pack",Template:"historic/pack",Description:"pack",Status:"Historical","CRI Scheme Number":"13348","Well-Known URI Support":"-",Reference:"[draft-shur-pack-uri-scheme-05]",Notes:"",schema:"pack"},{"URI Scheme":"palm",Template:"prov/palm",Description:"palm",Status:"Provisional","CRI Scheme Number":"10238","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"palm"},{"URI Scheme":"paparazzi",Template:"prov/paparazzi",Description:"paparazzi",Status:"Provisional","CRI Scheme Number":"12599","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"paparazzi"},{"URI Scheme":"payment",Template:"historic/payment",Description:"payment",Status:"Historical","CRI Scheme Number":"1762","Well-Known URI Support":"-",Reference:"[IESG]",Notes:"",schema:"payment"},{"URI Scheme":"payto",Template:"prov/payto",Description:"payto",Status:"Provisional","CRI Scheme Number":"6992","Well-Known URI Support":"-",Reference:"[RFC8905]",Notes:"",schema:"payto"},{"URI Scheme":"pkcs11",Template:"",Description:"PKCS#11",Status:"Permanent","CRI Scheme Number":"9312","Well-Known URI Support":"-",Reference:"[RFC7512]",Notes:"",schema:"pkcs11"},{"URI Scheme":"platform",Template:"prov/platform",Description:"platform",Status:"Provisional","CRI Scheme Number":"2754","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"platform"},{"URI Scheme":"pop",Template:"",Description:"Post Office Protocol v3",Status:"Permanent","CRI Scheme Number":"10551","Well-Known URI Support":"-",Reference:"[RFC2384]",Notes:"",schema:"pop"},{"URI Scheme":"pres",Template:"",Description:"Presence",Status:"Permanent","CRI Scheme Number":"14972","Well-Known URI Support":"-",Reference:"[RFC3859]",Notes:"",schema:"pres"},{"URI Scheme":"prospero",Template:"",Description:"Prospero Directory Service",Status:"Historical","CRI Scheme Number":"14477","Well-Known URI Support":"-",Reference:"[RFC4157]",Notes:"",schema:"prospero"},{"URI Scheme":"proxy",Template:"prov/proxy",Description:"proxy",Status:"Provisional","CRI Scheme Number":"3503","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"proxy"},{"URI Scheme":"psyc",Template:"prov/psyc",Description:"psyc",Status:"Provisional","CRI Scheme Number":"1466","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"psyc"},{"URI Scheme":"pttp",Template:"prov/pttp",Description:"pttp",Status:"Provisional","CRI Scheme Number":"6903","Well-Known URI Support":"-",Reference:"[Tony_Deng][Tuan_Hoang][Bob_Hinkle][Mark_Chen]",Notes:"",schema:"pttp"},{"URI Scheme":"pwid",Template:"prov/pwid",Description:"pwid",Status:"Provisional","CRI Scheme Number":"17068","Well-Known URI Support":"-",Reference:"[Eld_Zierau]",Notes:"",schema:"pwid"},{"URI Scheme":"qb",Template:"prov/qb",Description:"qb",Status:"Provisional","CRI Scheme Number":"12478","Well-Known URI Support":"-",Reference:"[Jan_Pokorny]",Notes:"",schema:"qb"},{"URI Scheme":"query",Template:"prov/query",Description:"query",Status:"Provisional","CRI Scheme Number":"10147","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"query"},{"URI Scheme":"quic-transport",Template:"prov/quic-transport",Description:"quic-transport",Status:"Provisional","CRI Scheme Number":"6462","Well-Known URI Support":"-",Reference:"[draft-vvv-webtransport-quic-00]",Notes:"",schema:"quic-transport"},{"URI Scheme":"redis",Template:"prov/redis",Description:"redis",Status:"Provisional","CRI Scheme Number":"8099","Well-Known URI Support":"-",Reference:"[Chris_Rebert]",Notes:"",schema:"redis"},{"URI Scheme":"rediss",Template:"prov/rediss",Description:"rediss",Status:"Provisional","CRI Scheme Number":"9338","Well-Known URI Support":"-",Reference:"[Chris_Rebert]",Notes:"",schema:"rediss"},{"URI Scheme":"reload",Template:"",Description:"reload",Status:"Permanent","CRI Scheme Number":"12726","Well-Known URI Support":"-",Reference:"[RFC6940]",Notes:"",schema:"reload"},{"URI Scheme":"res",Template:"prov/res",Description:"res",Status:"Provisional","CRI Scheme Number":"4153","Well-Known URI Support":"-",Reference:"[Alexey_Melnikov]",Notes:"",schema:"res"},{"URI Scheme":"resource",Template:"prov/resource",Description:"resource",Status:"Provisional","CRI Scheme Number":"2284","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"resource"},{"URI Scheme":"rmi",Template:"prov/rmi",Description:"rmi",Status:"Provisional","CRI Scheme Number":"16292","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"rmi"},{"URI Scheme":"rsync",Template:"",Description:"rsync",Status:"Provisional","CRI Scheme Number":"16884","Well-Known URI Support":"-",Reference:"[RFC5781]",Notes:"",schema:"rsync"},{"URI Scheme":"rtmfp",Template:"prov/rtmfp",Description:"rtmfp",Status:"Provisional","CRI Scheme Number":"3348","Well-Known URI Support":"-",Reference:"[RFC7425]",Notes:"",schema:"rtmfp"},{"URI Scheme":"rtmp",Template:"prov/rtmp",Description:"rtmp",Status:"Provisional","CRI Scheme Number":"3920","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"rtmp"},{"URI Scheme":"rtsp",Template:"",Description:"Real-Time Streaming Protocol (RTSP)",Status:"Permanent","CRI Scheme Number":"15267","Well-Known URI Support":"-",Reference:"[RFC2326][RFC7826]",Notes:"",schema:"rtsp"},{"URI Scheme":"rtsps",Template:"",Description:"Real-Time Streaming Protocol (RTSP) over TLS",Status:"Permanent","CRI Scheme Number":"4619","Well-Known URI Support":"-",Reference:"[RFC2326][RFC7826]",Notes:"",schema:"rtsps"},{"URI Scheme":"rtspu",Template:"",Description:"Real-Time Streaming Protocol (RTSP) over unreliable datagram transport",Status:"Permanent","CRI Scheme Number":"11999","Well-Known URI Support":"-",Reference:"[RFC2326]",Notes:"",schema:"rtspu"},{"URI Scheme":"sarif",Template:"prov/sarif",Description:"sarif",Status:"Provisional","CRI Scheme Number":"13650","Well-Known URI Support":"-",Reference:"[OASIS_Open][Michael_C_Fanning][David_Keaton]",Notes:"",schema:"sarif"},{"URI Scheme":"secondlife",Template:"prov/secondlife",Description:"query",Status:"Provisional","CRI Scheme Number":"16729","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"secondlife"},{"URI Scheme":"secret-token",Template:"prov/secret-token",Description:"secret-token",Status:"Provisional","CRI Scheme Number":"7074","Well-Known URI Support":"-",Reference:"[RFC8959]",Notes:"",schema:"secret-token"},{"URI Scheme":"service",Template:"",Description:"service location",Status:"Permanent","CRI Scheme Number":"17264","Well-Known URI Support":"-",Reference:"[RFC2609]",Notes:"",schema:"service"},{"URI Scheme":"session",Template:"",Description:"session",Status:"Permanent","CRI Scheme Number":"4355","Well-Known URI Support":"-",Reference:"[RFC6787]",Notes:"",schema:"session"},{"URI Scheme":"sftp",Template:"prov/sftp",Description:"query",Status:"Provisional","CRI Scheme Number":"5492","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"sftp"},{"URI Scheme":"sgn",Template:"prov/sgn",Description:"sgn",Status:"Provisional","CRI Scheme Number":"4882","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"sgn"},{"URI Scheme":"shc",Template:"prov/shc",Description:"shc",Status:"Provisional","CRI Scheme Number":"5823","Well-Known URI Support":"-",Reference:"[Josh_Mandel]",Notes:"",schema:"shc"},{"URI Scheme":"shelter",Template:"prov/shelter",Description:"shelter",Status:"Provisional","CRI Scheme Number":"15461","Well-Known URI Support":"-",Reference:"[okTurtles_Foundation]",Notes:"",schema:"shelter"},{"URI Scheme":"shttp (OBSOLETE)",Template:"",Description:"Secure Hypertext Transfer Protocol",Status:"Permanent","CRI Scheme Number":"7874","Well-Known URI Support":"-",Reference:"[RFC2660][Status change of HTTP experiments to Historic]",Notes:"",schema:"shttp (OBSOLETE)"},{"URI Scheme":"sieve",Template:"",Description:"ManageSieve Protocol",Status:"Permanent","CRI Scheme Number":"5472","Well-Known URI Support":"-",Reference:"[RFC5804]",Notes:"",schema:"sieve"},{"URI Scheme":"simpleledger",Template:"prov/simpleledger",Description:"simpleledger",Status:"Provisional","CRI Scheme Number":"9544","Well-Known URI Support":"-",Reference:"[James_Cramer]",Notes:"",schema:"simpleledger"},{"URI Scheme":"simplex",Template:"prov/simplex",Description:"simplex",Status:"Provisional","CRI Scheme Number":"15118","Well-Known URI Support":"-",Reference:"[Evgeny_Poberezkin]",Notes:"",schema:"simplex"},{"URI Scheme":"sip",Template:"",Description:"session initiation protocol",Status:"Permanent","CRI Scheme Number":"12644","Well-Known URI Support":"-",Reference:"[RFC3261]",Notes:"",schema:"sip"},{"URI Scheme":"sips",Template:"",Description:"secure session initiation protocol",Status:"Permanent","CRI Scheme Number":"9535","Well-Known URI Support":"-",Reference:"[RFC3261]",Notes:"",schema:"sips"},{"URI Scheme":"skype",Template:"prov/skype",Description:"skype",Status:"Provisional","CRI Scheme Number":"2326","Well-Known URI Support":"-",Reference:"[Alexey_Melnikov]",Notes:"",schema:"skype"},{"URI Scheme":"smb",Template:"prov/smb",Description:"smb",Status:"Provisional","CRI Scheme Number":"7285","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"smb"},{"URI Scheme":"smp",Template:"prov/smp",Description:"smp",Status:"Provisional","CRI Scheme Number":"11533","Well-Known URI Support":"-",Reference:"[Evgeny_Poberezkin]",Notes:"",schema:"smp"},{"URI Scheme":"sms",Template:"",Description:"Short Message Service",Status:"Permanent","CRI Scheme Number":"3524","Well-Known URI Support":"-",Reference:"[RFC5724]",Notes:"",schema:"sms"},{"URI Scheme":"smtp",Template:"prov/smtp",Description:"smtp",Status:"Provisional","CRI Scheme Number":"13340","Well-Known URI Support":"-",Reference:"[draft-melnikov-smime-msa-to-mda-03]",Notes:"",schema:"smtp"},{"URI Scheme":"snews",Template:"",Description:"NNTP over SSL/TLS",Status:"Historical","CRI Scheme Number":"13285","Well-Known URI Support":"-",Reference:"[RFC5538]",Notes:"",schema:"snews"},{"URI Scheme":"snmp",Template:"",Description:"Simple Network Management Protocol",Status:"Permanent","CRI Scheme Number":"1165","Well-Known URI Support":"-",Reference:"[RFC4088]",Notes:"",schema:"snmp"},{"URI Scheme":"soap.beep",Template:"",Description:"soap.beep",Status:"Permanent","CRI Scheme Number":"8519","Well-Known URI Support":"-",Reference:"[RFC4227]",Notes:"",schema:"soap.beep"},{"URI Scheme":"soap.beeps",Template:"",Description:"soap.beeps",Status:"Permanent","CRI Scheme Number":"16300","Well-Known URI Support":"-",Reference:"[RFC4227]",Notes:"",schema:"soap.beeps"},{"URI Scheme":"soldat",Template:"prov/soldat",Description:"soldat",Status:"Provisional","CRI Scheme Number":"6349","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"soldat"},{"URI Scheme":"spacify",Template:"prov/spacify",Description:"spacify",Status:"Provisional","CRI Scheme Number":"1000","Well-Known URI Support":"-",Reference:"[Alexander_Forselius]",Notes:"",schema:"spacify"},{"URI Scheme":"spiffe",Template:"prov/spiffe",Description:"spiffe",Status:"Provisional","CRI Scheme Number":"8093","Well-Known URI Support":"-",Reference:"[Evan_Gilman]",Notes:"",schema:"spiffe"},{"URI Scheme":"spotify",Template:"prov/spotify",Description:"spotify",Status:"Provisional","CRI Scheme Number":"12732","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"spotify"},{"URI Scheme":"ssb",Template:"prov/ssb",Description:"ssb",Status:"Provisional","CRI Scheme Number":"12400","Well-Known URI Support":"-",Reference:"[Fr\xE9d\xE9ric_Wang][Secure_Scuttlebutt_Consortium]",Notes:"",schema:"ssb"},{"URI Scheme":"ssh",Template:"prov/ssh",Description:"ssh",Status:"Provisional","CRI Scheme Number":"7667","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"ssh"},{"URI Scheme":"starknet",Template:"prov/starknet",Description:"starknet",Status:"Provisional","CRI Scheme Number":"12458","Well-Known URI Support":"-",Reference:"[Abraham_Makovetsky]",Notes:"",schema:"starknet"},{"URI Scheme":"steam",Template:"prov/steam",Description:"steam",Status:"Provisional","CRI Scheme Number":"5134","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"steam"},{"URI Scheme":"stun",Template:"",Description:"stun",Status:"Permanent","CRI Scheme Number":"14627","Well-Known URI Support":"-",Reference:"[RFC7064]",Notes:"",schema:"stun"},{"URI Scheme":"stuns",Template:"",Description:"stuns",Status:"Permanent","CRI Scheme Number":"14901","Well-Known URI Support":"-",Reference:"[RFC7064]",Notes:"",schema:"stuns"},{"URI Scheme":"submit",Template:"prov/submit",Description:"submit",Status:"Provisional","CRI Scheme Number":"4951","Well-Known URI Support":"-",Reference:"[draft-melnikov-smime-msa-to-mda-03]",Notes:"",schema:"submit"},{"URI Scheme":"svn",Template:"prov/svn",Description:"svn",Status:"Provisional","CRI Scheme Number":"13923","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"svn"},{"URI Scheme":"swh",Template:"prov/swh",Description:"swh",Status:"Provisional","CRI Scheme Number":"17039","Well-Known URI Support":"-",Reference:"[Software_Heritage][Stefano_Zacchiroli]",Notes:"",schema:"swh"},{"URI Scheme":"swid",Template:"prov/swid",Description:"swid (see [reviewer notes])",Status:"Provisional","CRI Scheme Number":"14162","Well-Known URI Support":"-",Reference:"[RFC9393, Section 5.1]",Notes:"",schema:"swid"},{"URI Scheme":"swidpath",Template:"prov/swidpath",Description:"swidpath (see [reviewer notes])",Status:"Provisional","CRI Scheme Number":"5825","Well-Known URI Support":"-",Reference:"[RFC9393, Section 5.2]",Notes:"",schema:"swidpath"},{"URI Scheme":"tag",Template:"",Description:"tag",Status:"Permanent","CRI Scheme Number":"16377","Well-Known URI Support":"-",Reference:"[RFC4151]",Notes:"",schema:"tag"},{"URI Scheme":"taler",Template:"prov/taler",Description:"taler",Status:"Provisional","CRI Scheme Number":"2796","Well-Known URI Support":"-",Reference:"[draft-grothoff-taler-01]",Notes:"",schema:"taler"},{"URI Scheme":"teamspeak",Template:"prov/teamspeak",Description:"teamspeak",Status:"Provisional","CRI Scheme Number":"6924","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"teamspeak"},{"URI Scheme":"teapot",Template:"prov/teapot",Description:"teapot",Status:"Provisional","CRI Scheme Number":"15026","Well-Known URI Support":"-",Reference:"[Karwan_Stark]",Notes:"",schema:"teapot"},{"URI Scheme":"teapots",Template:"prov/teapots",Description:"teapots",Status:"Provisional","CRI Scheme Number":"3375","Well-Known URI Support":"-",Reference:"[Karwan_Stark]",Notes:"",schema:"teapots"},{"URI Scheme":"tel",Template:"",Description:"telephone",Status:"Permanent","CRI Scheme Number":"3143","Well-Known URI Support":"-",Reference:"[RFC3966][RFC5341]",Notes:"",schema:"tel"},{"URI Scheme":"teliaeid",Template:"prov/teliaeid",Description:"teliaeid",Status:"Provisional","CRI Scheme Number":"13362","Well-Known URI Support":"-",Reference:"[Peter_Lewandowski]",Notes:"",schema:"teliaeid"},{"URI Scheme":"telnet",Template:"",Description:"Reference to interactive sessions",Status:"Permanent","CRI Scheme Number":"10995","Well-Known URI Support":"-",Reference:"[RFC4248]",Notes:"",schema:"telnet"},{"URI Scheme":"tftp",Template:"",Description:"Trivial File Transfer Protocol",Status:"Permanent","CRI Scheme Number":"8300","Well-Known URI Support":"-",Reference:"[RFC3617]",Notes:"",schema:"tftp"},{"URI Scheme":"things",Template:"prov/things",Description:"things",Status:"Provisional","CRI Scheme Number":"2154","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"things"},{"URI Scheme":"thismessage",Template:"perm/thismessage",Description:"multipart/related relative reference resolution",Status:"Permanent","CRI Scheme Number":"14367","Well-Known URI Support":"-",Reference:"[RFC2557]",Notes:"",schema:"thismessage"},{"URI Scheme":"thzp",Template:"historic/thzp",Description:"thzp",Status:"Historical","CRI Scheme Number":"11820","Well-Known URI Support":"-",Reference:"[IESG]",Notes:"",schema:"thzp"},{"URI Scheme":"tip",Template:"",Description:"Transaction Internet Protocol",Status:"Permanent","CRI Scheme Number":"6651","Well-Known URI Support":"-",Reference:"[RFC2371]",Notes:"",schema:"tip"},{"URI Scheme":"tn3270",Template:"",Description:"Interactive 3270 emulation sessions",Status:"Permanent","CRI Scheme Number":"14962","Well-Known URI Support":"-",Reference:"[RFC6270]",Notes:"",schema:"tn3270"},{"URI Scheme":"tool",Template:"prov/tool",Description:"tool",Status:"Provisional","CRI Scheme Number":"15230","Well-Known URI Support":"-",Reference:"[Matthias_Merkel]",Notes:"",schema:"tool"},{"URI Scheme":"turn",Template:"",Description:"turn",Status:"Permanent","CRI Scheme Number":"10333","Well-Known URI Support":"-",Reference:"[RFC7065]",Notes:"",schema:"turn"},{"URI Scheme":"turns",Template:"",Description:"turns",Status:"Permanent","CRI Scheme Number":"1926","Well-Known URI Support":"-",Reference:"[RFC7065]",Notes:"",schema:"turns"},{"URI Scheme":"tv",Template:"",Description:"TV Broadcasts",Status:"Permanent","CRI Scheme Number":"7923","Well-Known URI Support":"-",Reference:"[RFC2838]",Notes:"",schema:"tv"},{"URI Scheme":"udp",Template:"prov/udp",Description:"udp",Status:"Provisional","CRI Scheme Number":"5217","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"udp"},{"URI Scheme":"unreal",Template:"prov/unreal",Description:"unreal",Status:"Provisional","CRI Scheme Number":"15206","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"unreal"},{"URI Scheme":"upn",Template:"prov/upn",Description:"upn",Status:"Provisional","CRI Scheme Number":"1004","Well-Known URI Support":"-",Reference:"[Gerald_Jean_Francis_Banon]",Notes:"",schema:"upn"},{"URI Scheme":"upt",Template:"historic/upt",Description:"upt",Status:"Historical","CRI Scheme Number":"2747","Well-Known URI Support":"-",Reference:"[IESG]",Notes:"",schema:"upt"},{"URI Scheme":"urn",Template:"",Description:"Uniform Resource Names",Status:"Permanent","CRI Scheme Number":"4","Well-Known URI Support":"-",Reference:"[RFC8141][IANA registry urn-namespaces]",Notes:"",schema:"urn"},{"URI Scheme":"ut2004",Template:"prov/ut2004",Description:"ut2004",Status:"Provisional","CRI Scheme Number":"6609","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"ut2004"},{"URI Scheme":"uuid-in-package",Template:"prov/uuid-in-package",Description:"uuid-in-package",Status:"Provisional","CRI Scheme Number":"4515","Well-Known URI Support":"-",Reference:"[Kunihiko_Sakamoto]",Notes:"",schema:"uuid-in-package"},{"URI Scheme":"v-event",Template:"prov/v-event",Description:"v-event",Status:"Provisional","CRI Scheme Number":"15579","Well-Known URI Support":"-",Reference:"[draft-menderico-v-event-uri-00]",Notes:"",schema:"v-event"},{"URI Scheme":"vemmi",Template:"",Description:"versatile multimedia interface",Status:"Permanent","CRI Scheme Number":"16918","Well-Known URI Support":"-",Reference:"[RFC2122]",Notes:"",schema:"vemmi"},{"URI Scheme":"ventrilo",Template:"prov/ventrilo",Description:"ventrilo",Status:"Provisional","CRI Scheme Number":"12502","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"ventrilo"},{"URI Scheme":"ves",Template:"prov/ves",Description:"ves",Status:"Provisional","CRI Scheme Number":"10176","Well-Known URI Support":"-",Reference:"[Jim_Zubov]",Notes:"",schema:"ves"},{"URI Scheme":"videotex",Template:"historic/videotex",Description:"videotex",Status:"Historical","CRI Scheme Number":"2406","Well-Known URI Support":"-",Reference:"[draft-mavrakis-videotex-url-spec-01][RFC2122][RFC3986]",Notes:"",schema:"videotex"},{"URI Scheme":"view-source",Template:"prov/view-source",Description:"view-source",Status:"Provisional","CRI Scheme Number":"8506","Well-Known URI Support":"-",Reference:"[Mykyta_Yevstifeyev]",Notes:"",schema:"view-source"},{"URI Scheme":"vnc",Template:"",Description:"Remote Framebuffer Protocol",Status:"Permanent","CRI Scheme Number":"11537","Well-Known URI Support":"-",Reference:"[RFC7869]",Notes:"",schema:"vnc"},{"URI Scheme":"vscode",Template:"prov/vscode",Description:"vscode",Status:"Provisional","CRI Scheme Number":"7812","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"vscode"},{"URI Scheme":"vscode-insiders",Template:"prov/vscode-insiders",Description:"vscode-insiders",Status:"Provisional","CRI Scheme Number":"3255","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"vscode-insiders"},{"URI Scheme":"vsls",Template:"prov/vsls",Description:"vsls",Status:"Provisional","CRI Scheme Number":"9816","Well-Known URI Support":"-",Reference:"[urischemeowners_at_microsoft.com]",Notes:"",schema:"vsls"},{"URI Scheme":"w3",Template:"prov/w3",Description:"w3 (see [reviewer notes])",Status:"Provisional","CRI Scheme Number":"11799","Well-Known URI Support":"-",Reference:"[Qi_Zhou]",Notes:"",schema:"w3"},{"URI Scheme":"wais",Template:"",Description:"Wide Area Information Servers",Status:"Historical","CRI Scheme Number":"8454","Well-Known URI Support":"-",Reference:"[RFC4156]",Notes:"",schema:"wais"},{"URI Scheme":"wasm",Template:"prov/wasm",Description:"wasm",Status:"Provisional","CRI Scheme Number":"15741","Well-Known URI Support":"-",Reference:"[W3C_WebAssembly_Community_Group]",Notes:"",schema:"wasm"},{"URI Scheme":"wasm-js",Template:"prov/wasm-js",Description:"wasm-js",Status:"Provisional","CRI Scheme Number":"14709","Well-Known URI Support":"-",Reference:"[W3C_WebAssembly_Community_Group]",Notes:"",schema:"wasm-js"},{"URI Scheme":"wcr",Template:"prov/wcr",Description:"wcr",Status:"Provisional","CRI Scheme Number":"11892","Well-Known URI Support":"-",Reference:"[Jason_Dzubak]",Notes:"",schema:"wcr"},{"URI Scheme":"web+ap",Template:"prov/web+ap",Description:"web+ap",Status:"Provisional","CRI Scheme Number":"17361","Well-Known URI Support":"-",Reference:"[Soni_L.]",Notes:"",schema:"web+ap"},{"URI Scheme":"web3",Template:"prov/web3",Description:"web3",Status:"Provisional","CRI Scheme Number":"4559","Well-Known URI Support":"-",Reference:"[Qi_Zhou]",Notes:"",schema:"web3"},{"URI Scheme":"webcal",Template:"prov/webcal",Description:"webcal",Status:"Provisional","CRI Scheme Number":"4183","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"webcal"},{"URI Scheme":"wifi",Template:"prov/wifi",Description:"wifi",Status:"Provisional","CRI Scheme Number":"14867","Well-Known URI Support":"-",Reference:"[Wi-Fi_Alliance][Jun_Tian]",Notes:"",schema:"wifi"},{"URI Scheme":"wpid",Template:"prov/wpid",Description:"wpid",Status:"Historical","CRI Scheme Number":"1658","Well-Known URI Support":"-",Reference:"[Eld_Zierau]",Notes:"",schema:"wpid"},{"URI Scheme":"ws",Template:"",Description:"WebSocket connections",Status:"Permanent","CRI Scheme Number":"11962","Well-Known URI Support":"[RFC8307]",Reference:"[RFC6455]",Notes:"",schema:"ws"},{"URI Scheme":"wss",Template:"",Description:"Encrypted WebSocket connections",Status:"Permanent","CRI Scheme Number":"3119","Well-Known URI Support":"[RFC8307]",Reference:"[RFC6455]",Notes:"",schema:"wss"},{"URI Scheme":"wtai",Template:"prov/wtai",Description:"wtai",Status:"Provisional","CRI Scheme Number":"9910","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"wtai"},{"URI Scheme":"wyciwyg",Template:"prov/wyciwyg",Description:"wyciwyg",Status:"Provisional","CRI Scheme Number":"15641","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"wyciwyg"},{"URI Scheme":"xcompute",Template:"prov/xcompute",Description:"xcompute",Status:"Provisional","CRI Scheme Number":"13785","Well-Known URI Support":"-",Reference:"[Graham_Orr]",Notes:"",schema:"xcompute"},{"URI Scheme":"xcon",Template:"",Description:"xcon",Status:"Permanent","CRI Scheme Number":"10467","Well-Known URI Support":"-",Reference:"[RFC6501]",Notes:"",schema:"xcon"},{"URI Scheme":"xcon-userid",Template:"",Description:"xcon-userid",Status:"Permanent","CRI Scheme Number":"9520","Well-Known URI Support":"-",Reference:"[RFC6501]",Notes:"",schema:"xcon-userid"},{"URI Scheme":"xfire",Template:"prov/xfire",Description:"xfire",Status:"Provisional","CRI Scheme Number":"15306","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"xfire"},{"URI Scheme":"xftp",Template:"prov/xftp",Description:"xftp",Status:"Provisional","CRI Scheme Number":"4315","Well-Known URI Support":"-",Reference:"[Evgeny_Poberezkin]",Notes:"",schema:"xftp"},{"URI Scheme":"xmlrpc.beep",Template:"",Description:"xmlrpc.beep",Status:"Permanent","CRI Scheme Number":"3005","Well-Known URI Support":"-",Reference:"[RFC3529]",Notes:"",schema:"xmlrpc.beep"},{"URI Scheme":"xmlrpc.beeps",Template:"",Description:"xmlrpc.beeps",Status:"Permanent","CRI Scheme Number":"15805","Well-Known URI Support":"-",Reference:"[RFC3529]",Notes:"",schema:"xmlrpc.beeps"},{"URI Scheme":"xmpp",Template:"",Description:"Extensible Messaging and Presence Protocol",Status:"Permanent","CRI Scheme Number":"15358","Well-Known URI Support":"-",Reference:"[RFC5122]",Notes:"",schema:"xmpp"},{"URI Scheme":"xrcp",Template:"prov/xrcp",Description:"xrcp",Status:"Provisional","CRI Scheme Number":"4747","Well-Known URI Support":"-",Reference:"[Evgeny_Poberezkin]",Notes:"",schema:"xrcp"},{"URI Scheme":"xri",Template:"prov/xri",Description:"xri",Status:"Provisional","CRI Scheme Number":"11255","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"xri"},{"URI Scheme":"ymsgr",Template:"prov/ymsgr",Description:"ymsgr",Status:"Provisional","CRI Scheme Number":"3837","Well-Known URI Support":"-",Reference:"[Dave_Thaler]",Notes:"",schema:"ymsgr"},{"URI Scheme":"z39.50",Template:"",Description:"Z39.50 information access",Status:"Historical","CRI Scheme Number":"1319","Well-Known URI Support":"-",Reference:"[RFC1738][RFC2056]",Notes:"",schema:"z39.50"},{"URI Scheme":"z39.50r",Template:"",Description:"Z39.50 Retrieval",Status:"Permanent","CRI Scheme Number":"8159","Well-Known URI Support":"-",Reference:"[RFC2056]",Notes:"",schema:"z39.50r"},{"URI Scheme":"z39.50s",Template:"",Description:"Z39.50 Session",Status:"Permanent","CRI Scheme Number":"6380","Well-Known URI Support":"-",Reference:"[RFC2056]",Notes:"",schema:"z39.50s"}]});var ie=ue((K,se)=>{(function(r,e){typeof K=="object"&&typeof se=="object"?se.exports=e():typeof define=="function"&&define.amd?define([],e):typeof K=="object"?K.ls=e():r.ls=e()})(K,(function(){return(()=>{"use strict";var r={d:(m,S)=>{for(var R in S)r.o(S,R)&&!r.o(m,R)&&Object.defineProperty(m,R,{enumerable:!0,get:S[R]})},o:(m,S)=>Object.prototype.hasOwnProperty.call(m,S)},e={};r.d(e,{default:()=>u});let t=(...m)=>{},o=m=>m!==null&&m.constructor.name==="Object",n,s=()=>{if(n!==void 0)return n;n=!0;try{localStorage||(n=!1)}catch(m){n=!1}return p(),n},i="\0",a=(m,S,R=!0)=>R?[...JSON.stringify(m)].map((f=>String.fromCharCode(f.charCodeAt(0)+S))).join(""):JSON.parse([...m].map((f=>String.fromCharCode(f.charCodeAt(0)-S))).join("")),c={ttl:null,encrypt:!1,encrypter:a,decrypter:(m,S)=>a(m,S,!1),secret:75},p=(m=!1)=>{if(!s())return!1;Object.keys(localStorage).forEach((S=>{let R=localStorage.getItem(S);if(!R)return;let f;try{f=JSON.parse(R)}catch(v){return}o(f)&&i in f&&(Date.now()>f.ttl||m)&&localStorage.removeItem(S)}))},u={config:c,set:(m,S,R={})=>{if(!s())return!1;let f=Object.assign(Object.assign(Object.assign({},c),R),{encrypt:R.encrypt!==!1&&(R.encrypt||c.encrypt),ttl:R.ttl===null?null:R.ttl||c.ttl});try{let v=f.ttl&&!isNaN(f.ttl)&&f.ttl>0,b=v?{[i]:S,ttl:Date.now()+1e3*f.ttl}:S;f.encrypt&&(v?b[i]=(f.encrypter||t)(b[i],f.secret):b=(f.encrypter||t)(b,f.secret)),localStorage.setItem(m,JSON.stringify(b))}catch(v){return!1}},get:(m,S={})=>{if(!s())return null;let R=localStorage.getItem(m);if(!R)return null;let f=Object.assign(Object.assign(Object.assign({},c),S),{encrypt:S.encrypt!==!1&&(S.encrypt||c.encrypt),ttl:S.ttl===null?null:S.ttl||c.ttl}),v=JSON.parse(R),b=o(v)&&i in v;if(f.decrypt||f.encrypt)try{b?v[i]=(f.decrypter||t)(v[i],f.secret):v=(f.decrypter||t)(v,f.secret)}catch(W){}return b?Date.now()>v.ttl?(localStorage.removeItem(m),null):v[i]:v},flush:p,clear:()=>{if(!s())return!1;localStorage.clear()},remove:m=>{if(!s())return!1;localStorage.removeItem(m)}};return e.default})()}))});var $t={};Xe($t,{default:()=>oe});module.exports=Ye($t);var je=require("obsidian");var w=require("obsidian");var ne=require("obsidian");var I={google:{name:"Google",url:r=>Promise.resolve("https://www.google.com/s2/favicons?domain="+r)},duckduckgo:{name:"DuckDuckGo",url:r=>Promise.resolve("https://icons.duckduckgo.com/ip3/"+r+".ico")},iconhorse:{name:"Icon Horse",url:r=>Promise.resolve("https://icon.horse/icon/"+r)},splitbee:{name:"Splitbee",url:r=>Promise.resolve("https://favicon.splitbee.io/?url="+r)},besticon:{name:"The Favicon Finder",url:(r,e)=>h(null,null,function*(){try{let t=e.provider==="besticon"?e.providerDomain:e.fallbackProviderDomain,n=(yield(0,ne.requestUrl)({url:t+"/allicons.json?url="+r})).json;if(n.icons.length===0)throw new Error("besticon: no icons for domain "+r);return n.icons[0].url}catch(t){throw console.error(t),new Error("besticon: failed to retrieve icon for "+r)}})},favicongrabber:{name:"Favicon Grabber",url:(r=>h(null,null,function*(){try{let t=(yield(0,ne.requestUrl)({url:"https://favicongrabber.com/api/grab/"+r})).json;return t.length===0?"":t.icons[0].src}catch(e){throw console.error(e),new Error("favicongrabber: failed to retrieve icon for "+r)}}))}};var T=require("obsidian");var er=require("obsidian"),P=r=>{var e;return r?(e=r.app.plugins.plugins["obsidian-icon-shortcodes"])===null||e===void 0?void 0:e.api:window.IconSCAPIv0};var Re=require("obsidian"),M=class extends Re.AbstractInputSuggest{constructor(e,t,o,n){super(e,t),this.content=o,this.descriptions=n}getSuggestions(e){let t=e.toLowerCase(),o=[...this.descriptions].filter(n=>n.name.toLowerCase().contains(t)||n.description.toLowerCase().contains(t));return Object.values(o).map(n=>n.name)}renderSuggestion(e,t){t.createSpan().setText(e+" ");let o=[...this.descriptions].filter(n=>e===n.name)[0].description;o!==e&&t.createEl("small").setText(o)}selectSuggestion(e){this.setValue(e)}};var _=class extends T.Modal{constructor(t,o,n){super(t.app);this.name="Domain";this.plugin=t,n&&(this.name=n),o&&(this.domain=o.domain,this.icon=o.icon)}displayPreview(t){return h(this,null,function*(){if(P(this.plugin)&&this.icon){t.empty();let o=t.createDiv("preview");o.addClass("link-favicon-preview");let s=P(this.plugin).getIcon(this.icon,!1);s!==null&&o.append(s)}})}display(){return h(this,null,function*(){let{contentEl:t}=this;t.empty();let o,n=new T.Setting(t).setName(this.name);if(this.name!=="Domain"){let c=fe();c=c.filter(m=>!m.schema.contains("http"));let p=Object.values(c).map(m=>m.schema),u=Object.values(c).map(m=>({name:m.schema,description:m.Description}));n.addSearch(m=>{new M(this.plugin.app,m.inputEl,new Set(p),new Set(u)),m.setValue(this.domain).onChange(S=>{this.domain=S})})}else n.addText(c=>{c.setValue(this.domain).onChange(p=>{this.domain=p})});let s=P(this.plugin);s&&(s.version.compare(">=","0.6.1")?new T.Setting(t).setName("Icon").addButton(c=>{c.setButtonText("Choose").onClick(()=>h(this,null,function*(){let p=yield s.getIconFromUser();p&&(this.icon=p.id,o&&(yield this.displayPreview(o)))}))}):new T.Setting(t).setName("Icon").addText(c=>{c.setValue(this.icon).onChange(p=>h(this,null,function*(){this.icon=p,o&&(yield this.displayPreview(o))}))})),o=t.createDiv("preview"),yield this.displayPreview(o);let i=t.createDiv(),a=new T.Setting(i);a.addButton(c=>(c.setTooltip("Save").setIcon("checkmark").onClick(()=>h(this,null,function*(){this.icon&&this.domain?(this.saved=!0,this.close()):new T.Notice("Please supply both a "+this.name+" & a icon")})),c)),a.addExtraButton(c=>(c.setIcon("cross").setTooltip("Cancel").onClick(()=>{this.saved=!1,this.close()}),c))})}onOpen(){this.display()}};var y=require("obsidian");var H=class extends y.Modal{constructor(e){super(e.app),this.plugin=e}display(){return h(this,null,function*(){let{contentEl:e}=this;if(e.empty(),e.addClass("link-favicon-scrollable-content"),new y.Setting(e).setName("Link").addText(t=>{t.setValue(this.link).onChange(o=>{this.link=o}),t.inputEl.addEventListener("keydown",o=>{o.key==="Enter"&&this.display()})}),new y.Setting(e).setName("").addButton(t=>{t.setButtonText("Test").onClick(()=>{this.display()})}),this.link){this.link.startsWith("http")||(this.link="http://"+this.link);try{let t=new URL(this.link);for(let o of Object.values(I))e.createEl("h3",{text:o.name}),e.createEl("img",{cls:"provider-preview"}).setAttribute("src",yield o.url(t.hostname,this.plugin.settings))}catch(t){e.createSpan({text:"Could not generate favicon, check your settings"})}}})}onOpen(){this.display()}};var de=Se(ie());var ve={provider:"duckduckgo",fallbackProvider:"google",providerDomain:"",fallbackProviderDomain:"",ignored:"",overwritten:[],protocol:[],showAliased:!0,showLink:!0,enableReading:!0,enableSource:!0,enableLivePreview:!0,debounce:500,iconPosition:"front",colorInversion:!0},L=class extends w.PluginSettingTab{constructor(e,t){super(e,t),this.plugin=t}display(){let{containerEl:e}=this;e.empty(),this.addProviderGroup(e),this.addDesignGroup(e),this.addCustomIconGroups(e),this.addAdvancedGroup(e),this.addDebugGroup(e)}addProviderOptions(e){for(let t in I)Object.prototype.hasOwnProperty.call(I,t)&&e.addOption(t,I[t].name)}addProviderGroup(e){let t=new w.SettingGroup(e).setHeading("Icon providers");t.addSetting(o=>{o.setName("Icon provider").addDropdown(n=>{this.addProviderOptions(n),n.setValue(this.plugin.settings.provider).onChange(s=>h(this,null,function*(){this.plugin.settings.provider=s,yield this.plugin.saveSettings(),this.display()}))})}),Array.of("besticon").includes(this.plugin.settings.provider)&&t.addSetting(o=>{o.setName("Provider domain").setDesc("This provider is selfhosted, please specify your deployment URL. Refer to the readme of the provider for deployment instructions.").addText(n=>n.setValue(this.plugin.settings.providerDomain).onChange(s=>h(this,null,function*(){this.plugin.settings.providerDomain=s,yield this.plugin.saveSettings()})))}),t.addSetting(o=>{o.setName("Fallback icon provider").addDropdown(n=>{this.addProviderOptions(n),n.setValue(this.plugin.settings.fallbackProvider).onChange(s=>h(this,null,function*(){this.plugin.settings.fallbackProvider=s,yield this.plugin.saveSettings(),this.display()}))})}),Array.of("besticon").includes(this.plugin.settings.fallbackProvider)&&t.addSetting(o=>{o.setName("Fallback provider domain").setDesc("This provider is be selfhosted, please specify your deployment URL. Refer to the readme of the provider for deployment instructions.").addText(n=>n.setValue(this.plugin.settings.fallbackProviderDomain).onChange(s=>h(this,null,function*(){this.plugin.settings.fallbackProviderDomain=s,yield this.plugin.saveSettings()})))}),t.addSetting(o=>{o.setName("Not sure which provider to choose?").addButton(n=>n.setButtonText("Test providers").onClick(()=>{new H(this.plugin).open()}))}),t.addSetting(o=>{o.setName("Ignored domains").setDesc("Don't show an favicon for these domains(one per line)").addTextArea(n=>{n.setValue(this.plugin.settings.ignored).onChange(s=>h(this,null,function*(){this.plugin.settings.ignored=s,yield this.plugin.saveSettings()})),n.inputEl.setAttr("rows",8)})})}addDesignGroup(e){let t=new w.SettingGroup(e).setHeading("Design");t.addSetting(o=>{o.setName("Show icon when link has alias").setDesc("When link is formatted like: [Obsidian](HTTPS://Obsidian.md/)").addToggle(n=>{n.setValue(this.plugin.settings.showAliased).onChange(s=>h(this,null,function*(){this.plugin.settings.showAliased=s,yield this.plugin.saveSettings()}))})}),t.addSetting(o=>{o.setName("Show icon when link has no alias").setDesc("When link is formatted like: https://Obsidian.md/").addToggle(n=>{n.setValue(this.plugin.settings.showLink).onChange(s=>h(this,null,function*(){this.plugin.settings.showLink=s,yield this.plugin.saveSettings()}))})}),t.addSetting(o=>{o.setName("Show in reading mode").addToggle(n=>{n.setValue(this.plugin.settings.enableReading).onChange(s=>h(this,null,function*(){this.plugin.settings.enableReading=s,yield this.plugin.saveSettings()}))})}),t.addSetting(o=>{o.setName("Show in source mode").addToggle(n=>{n.setValue(this.plugin.settings.enableSource).onChange(s=>h(this,null,function*(){this.plugin.settings.enableSource=s,yield this.plugin.saveSettings()}))})}),t.addSetting(o=>{o.setName("Show in live preview").addToggle(n=>{n.setValue(this.plugin.settings.enableLivePreview).onChange(s=>h(this,null,function*(){this.plugin.settings.enableLivePreview=s,yield this.plugin.saveSettings()}))})}),t.addSetting(o=>{o.setName("Icon position").addDropdown(n=>{n.addOption("front","Before the link").addOption("back","After the link").setValue(this.plugin.settings.iconPosition).onChange(s=>h(this,null,function*(){this.plugin.settings.iconPosition=s,yield this.plugin.saveSettings()}))})}),t.addSetting(o=>{o.setName("Color inversion").setDesc("Favicon colors will be automatically inverted if the icon is detected to be less readable").addToggle(n=>{n.setValue(this.plugin.settings.colorInversion).onChange(s=>h(this,null,function*(){this.plugin.settings.colorInversion=s,yield this.plugin.saveSettings()}))})})}addCustomIconGroups(e){let t=P(this.plugin);if(!t)return;let o=new w.SettingGroup(e).setHeading("Custom icons for domains");o.addSetting(s=>{s.setName("Add new").setDesc("Add custom icon").addButton(i=>i.setTooltip("Add custom icon").setIcon("plus-with-circle").onClick(()=>{let a=new _(this.plugin);a.onClose=()=>{h(this,null,function*(){a.saved&&(this.plugin.settings.overwritten.push({domain:a.domain,icon:a.icon}),yield this.plugin.saveSettings(),this.display())})},a.open()}))});for(let s of this.plugin.settings.overwritten)o.addSetting(i=>{let a=new DocumentFragment,c=t.getIcon(s.icon),p=a.createEl("p",{text:" "+s.icon});c&&p.prepend(c),i.setName(s.domain).setDesc(a).addExtraButton(u=>{u.setIcon("pencil").setTooltip("Edit").onClick(()=>{let m=new _(this.plugin,s);m.onClose=()=>{h(this,null,function*(){if(m.saved){let S=this.plugin.settings.overwritten.filter(R=>R.domain!==m.domain);S.push({domain:m.domain,icon:m.icon}),this.plugin.settings.overwritten=S,yield this.plugin.saveSettings(),this.display()}})},m.open()})}).addExtraButton(u=>{u.setIcon("trash").setTooltip("Delete").onClick(()=>h(this,null,function*(){this.plugin.settings.overwritten=this.plugin.settings.overwritten.filter(m=>s.domain!==m.domain),yield this.plugin.saveSettings(),this.display()}))})});let n=new w.SettingGroup(e).setHeading("Custom icons for uri schemas");n.addSetting(s=>{s.setName("Add new").setDesc("Add custom icon").addButton(i=>i.setTooltip("Add custom icon").setIcon("plus-with-circle").onClick(()=>{let a=new _(this.plugin,null,"URI Schema");a.onClose=()=>{h(this,null,function*(){a.saved&&(this.plugin.settings.protocol.push({domain:a.domain,icon:a.icon}),yield this.plugin.saveSettings(),this.display())})},a.open()}))});for(let s of this.plugin.settings.protocol)n.addSetting(i=>{let a=new DocumentFragment,c=t.getIcon(s.icon),p=a.createEl("p",{text:" "+s.icon});c&&p.prepend(c),i.setName(s.domain).setDesc(a).addExtraButton(u=>{u.setIcon("pencil").setTooltip("Edit").onClick(()=>{let m=new _(this.plugin,s,"URI Schema");m.onClose=()=>{h(this,null,function*(){if(m.saved){let S=this.plugin.settings.protocol.filter(R=>R.domain!==m.domain);S.push({domain:m.domain,icon:m.icon}),this.plugin.settings.protocol=S,yield this.plugin.saveSettings(),this.display()}})},m.open()})}).addExtraButton(u=>{u.setIcon("trash").setTooltip("Delete").onClick(()=>h(this,null,function*(){this.plugin.settings.protocol=this.plugin.settings.protocol.filter(m=>m.domain!==s.domain),yield this.plugin.saveSettings(),this.display()}))})})}addAdvancedGroup(e){new w.SettingGroup(e).setHeading("Advanced").addSetting(o=>{o.setName("Debounce").setDesc("How fast after editing a link should a icon be displayed(in milliseconds)?").addSlider(n=>{n.setLimits(1,2500,1).setDynamicTooltip().setValue(this.plugin.settings.debounce).onChange(s=>h(this,null,function*(){this.plugin.settings.debounce=s,yield this.plugin.saveSettings()}))})})}addDebugGroup(e){if(this.app.loadLocalStorage("debug-plugin")!=="1")return;let t=activeWindow.localStorage,o=new w.SettingGroup(e).setHeading("Debugging tools");o.addSetting(n=>{n.setName("Cached icons");let s=new DocumentFragment;s.createEl("p",{text:"Only use these tools if you know what you are doing"}),Object.keys(t).forEach(i=>{var a;i.startsWith("lf-")&&(s.createEl("p",{text:i}),s.createEl("img",{attr:{src:(a=de.default.get(i))!=null?a:""}}))}),n.setDesc(s)}),o.addSetting(n=>{n.setName("Clear icon cache").setDesc("Remove all icons from cache").addButton(s=>{s.setButtonText("Clear").onClick(()=>{Object.keys(t).forEach(i=>{i.startsWith("lf-")&&t.removeItem(i)}),new w.Notice("Cleared cache"),this.display()})})})}};var Ie=require("obsidian");var O=class{constructor(e){this.processor=(e,t)=>h(this,null,function*(){if(!this.plugin.settings.enableReading||t.sourcePath.contains("no-favicon"))return;let o=I[this.plugin.settings.provider],n=I[this.plugin.settings.fallbackProvider];if(t.frontmatter){let i=t.frontmatter,a=i["favicon-provider"],c=i["fallback-favicon-provider"],p=typeof a=="string"?I[a]:void 0,u=typeof c=="string"?I[c]:void 0;p&&(o=p),u&&(n=u)}if(!o||!n){console.error("Link Favicons: misconfigured providers"),new Ie.Notice("Link favicons:misconfigured providers, please check the settings");return}window.setTimeout(()=>{this.processLinks(e,o,n)},50)});this.processLinks=(e,t,o)=>h(this,null,function*(){var s;let n=e.querySelectorAll("a.external-link:not([data-favicon])");for(let i=0;i!!(e.getAttribute("data-no-favicon")||e.getAttribute("data-favicon")||!this.plugin.settings.showLink&&e.textContent===e.getAttribute("href")||!this.plugin.settings.showAliased&&e.textContent!==e.getAttribute("href"));this.plugin=e}};var be=require("@codemirror/view");var B=require("@codemirror/state"),z=require("@codemirror/view");function G(){let r=B.StateEffect.define(),e=B.StateField.define({create(){return z.Decoration.none},update(t,o){return o.effects.reduce((n,s)=>s.is(r)?s.value:n,t.map(o.changes))},provide:t=>z.EditorView.decorations.from(t)});return{update:r,field:e}}var j=require("@codemirror/view"),ge=require("obsidian");var V=class{constructor(e,t){this.decoCache=new Map;this.editor=e,this.plugin=t,this.debouncedUpdate=(0,ge.debounce)(this.updateAsyncDecorations.bind(this),this.plugin.settings.debounce,!0)}computeAsyncDecorations(e){return h(this,null,function*(){let t=[];for(let o of e){let n=this.decoCache.get(o.value);n||(n=j.Decoration.replace({}),this.decoCache.set(o.value,n)),t.push(n.range(o.from,o.to))}return j.Decoration.set(t,!0)})}updateAsyncDecorations(e){return h(this,null,function*(){let t=yield this.computeAsyncDecorations(e);(t||this.editor.state.field(q.field).size)&&this.editor.dispatch({effects:q.update.of(t||j.Decoration.none)})})}};var we=require("obsidian"),q=G();function tt(r){return be.ViewPlugin.fromClass(class{constructor(e){this.view=e;this.decoManager=new V(e,r)}update(e){(e.docChanged||e.viewportChanged||e.selectionSet)&&this.buildAsyncDecorations(e.view)}buildAsyncDecorations(e){let t=[];if(!e.state.field(we.editorLivePreviewField)){this.decoManager.debouncedUpdate(t);return}for(let{from:o,to:n}of e.visibleRanges){let s=e.state.sliceDoc(o,n);for(let i of s.matchAll(/\|nofavicon/g)){let a=i.index;if(!a)continue;let c=a+i[0].length,p=!1;for(let u of e.state.selection.ranges)(u.from<=a&&u.to>=c||u.from>=a&&u.to<=c)&&(p=!0);p||t.push({from:a,to:c,value:""})}}this.decoManager.debouncedUpdate(t)}})}function Ne(r){return[q.field,tt(r)]}var pe=Se(ie()),X=require("obsidian");function J(r){"@babel/helpers - typeof";return J=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},J(r)}var rt=/^\s+/,ot=/\s+$/;function l(r,e){if(r=r||"",e=e||{},r instanceof l)return r;if(!(this instanceof l))return new l(r,e);var t=nt(r);this._originalInput=r,this._r=t.r,this._g=t.g,this._b=t.b,this._a=t.a,this._roundA=Math.round(100*this._a)/100,this._format=e.format||t.format,this._gradientType=e.gradientType,this._r<1&&(this._r=Math.round(this._r)),this._g<1&&(this._g=Math.round(this._g)),this._b<1&&(this._b=Math.round(this._b)),this._ok=t.ok}l.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(e.r*299+e.g*587+e.b*114)/1e3},getLuminance:function(){var e=this.toRgb(),t,o,n,s,i,a;return t=e.r/255,o=e.g/255,n=e.b/255,t<=.03928?s=t/12.92:s=Math.pow((t+.055)/1.055,2.4),o<=.03928?i=o/12.92:i=Math.pow((o+.055)/1.055,2.4),n<=.03928?a=n/12.92:a=Math.pow((n+.055)/1.055,2.4),.2126*s+.7152*i+.0722*a},setAlpha:function(e){return this._a=We(e),this._roundA=Math.round(100*this._a)/100,this},toHsv:function(){var e=Ce(this._r,this._g,this._b);return{h:e.h*360,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=Ce(this._r,this._g,this._b),t=Math.round(e.h*360),o=Math.round(e.s*100),n=Math.round(e.v*100);return this._a==1?"hsv("+t+", "+o+"%, "+n+"%)":"hsva("+t+", "+o+"%, "+n+"%, "+this._roundA+")"},toHsl:function(){var e=Ue(this._r,this._g,this._b);return{h:e.h*360,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=Ue(this._r,this._g,this._b),t=Math.round(e.h*360),o=Math.round(e.s*100),n=Math.round(e.l*100);return this._a==1?"hsl("+t+", "+o+"%, "+n+"%)":"hsla("+t+", "+o+"%, "+n+"%, "+this._roundA+")"},toHex:function(e){return Te(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return ct(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:Math.round(this._r),g:Math.round(this._g),b:Math.round(this._b),a:this._a}},toRgbString:function(){return this._a==1?"rgb("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+")":"rgba("+Math.round(this._r)+", "+Math.round(this._g)+", "+Math.round(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:Math.round(d(this._r,255)*100)+"%",g:Math.round(d(this._g,255)*100)+"%",b:Math.round(d(this._b,255)*100)+"%",a:this._a}},toPercentageRgbString:function(){return this._a==1?"rgb("+Math.round(d(this._r,255)*100)+"%, "+Math.round(d(this._g,255)*100)+"%, "+Math.round(d(this._b,255)*100)+"%)":"rgba("+Math.round(d(this._r,255)*100)+"%, "+Math.round(d(this._g,255)*100)+"%, "+Math.round(d(this._b,255)*100)+"%, "+this._roundA+")"},toName:function(){return this._a===0?"transparent":this._a<1?!1:gt[Te(this._r,this._g,this._b,!0)]||!1},toFilter:function(e){var t="#"+De(this._r,this._g,this._b,this._a),o=t,n=this._gradientType?"GradientType = 1, ":"";if(e){var s=l(e);o="#"+De(s._r,s._g,s._b,s._a)}return"progid:DXImageTransform.Microsoft.gradient("+n+"startColorstr="+t+",endColorstr="+o+")"},toString:function(e){var t=!!e;e=e||this._format;var o=!1,n=this._a<1&&this._a>=0,s=!t&&n&&(e==="hex"||e==="hex6"||e==="hex3"||e==="hex4"||e==="hex8"||e==="name");return s?e==="name"&&this._a===0?this.toName():this.toRgbString():(e==="rgb"&&(o=this.toRgbString()),e==="prgb"&&(o=this.toPercentageRgbString()),(e==="hex"||e==="hex6")&&(o=this.toHexString()),e==="hex3"&&(o=this.toHexString(!0)),e==="hex4"&&(o=this.toHex8String(!0)),e==="hex8"&&(o=this.toHex8String()),e==="name"&&(o=this.toName()),e==="hsl"&&(o=this.toHslString()),e==="hsv"&&(o=this.toHsvString()),o||this.toHexString())},clone:function(){return l(this.toString())},_applyModification:function(e,t){var o=e.apply(null,[this].concat([].slice.call(t)));return this._r=o._r,this._g=o._g,this._b=o._b,this.setAlpha(o._a),this},lighten:function(){return this._applyModification(ut,arguments)},brighten:function(){return this._applyModification(ht,arguments)},darken:function(){return this._applyModification(St,arguments)},desaturate:function(){return this._applyModification(mt,arguments)},saturate:function(){return this._applyModification(pt,arguments)},greyscale:function(){return this._applyModification(lt,arguments)},spin:function(){return this._applyModification(Rt,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(vt,arguments)},complement:function(){return this._applyCombination(ft,arguments)},monochromatic:function(){return this._applyCombination(It,arguments)},splitcomplement:function(){return this._applyCombination(dt,arguments)},triad:function(){return this._applyCombination(Pe,[3])},tetrad:function(){return this._applyCombination(Pe,[4])}};l.fromRatio=function(r,e){if(J(r)=="object"){var t={};for(var o in r)r.hasOwnProperty(o)&&(o==="a"?t[o]=r[o]:t[o]=k(r[o]));r=t}return l(r,e)};function nt(r){var e={r:0,g:0,b:0},t=1,o=null,n=null,s=null,i=!1,a=!1;return typeof r=="string"&&(r=Ut(r)),J(r)=="object"&&(D(r.r)&&D(r.g)&&D(r.b)?(e=st(r.r,r.g,r.b),i=!0,a=String(r.r).substr(-1)==="%"?"prgb":"rgb"):D(r.h)&&D(r.s)&&D(r.v)?(o=k(r.s),n=k(r.v),e=at(r.h,o,n),i=!0,a="hsv"):D(r.h)&&D(r.s)&&D(r.l)&&(o=k(r.s),s=k(r.l),e=it(r.h,o,s),i=!0,a="hsl"),r.hasOwnProperty("a")&&(t=r.a)),t=We(t),{ok:i,format:r.format||a,r:Math.min(255,Math.max(e.r,0)),g:Math.min(255,Math.max(e.g,0)),b:Math.min(255,Math.max(e.b,0)),a:t}}function st(r,e,t){return{r:d(r,255)*255,g:d(e,255)*255,b:d(t,255)*255}}function Ue(r,e,t){r=d(r,255),e=d(e,255),t=d(t,255);var o=Math.max(r,e,t),n=Math.min(r,e,t),s,i,a=(o+n)/2;if(o==n)s=i=0;else{var c=o-n;switch(i=a>.5?c/(2-o-n):c/(o+n),o){case r:s=(e-t)/c+(e1&&(m-=1),m<1/6?p+(u-p)*6*m:m<1/2?u:m<2/3?p+(u-p)*(2/3-m)*6:p}if(e===0)o=n=s=t;else{var a=t<.5?t*(1+e):t+e-t*e,c=2*t-a;o=i(c,a,r+1/3),n=i(c,a,r),s=i(c,a,r-1/3)}return{r:o*255,g:n*255,b:s*255}}function Ce(r,e,t){r=d(r,255),e=d(e,255),t=d(t,255);var o=Math.max(r,e,t),n=Math.min(r,e,t),s,i,a=o,c=o-n;if(i=o===0?0:c/o,o==n)s=0;else{switch(o){case r:s=(e-t)/c+(e>1)+720)%360;--e;)o.h=(o.h+n)%360,s.push(l(o));return s}function It(r,e){e=e||6;for(var t=l(r).toHsv(),o=t.h,n=t.s,s=t.v,i=[],a=1/e;e--;)i.push(l({h:o,s:n,v:s})),s=(s+a)%1;return i}l.mix=function(r,e,t){t=t===0?0:t||50;var o=l(r).toRgb(),n=l(e).toRgb(),s=t/100,i={r:(n.r-o.r)*s+o.r,g:(n.g-o.g)*s+o.g,b:(n.b-o.b)*s+o.b,a:(n.a-o.a)*s+o.a};return l(i)};l.readability=function(r,e){var t=l(r),o=l(e);return(Math.max(t.getLuminance(),o.getLuminance())+.05)/(Math.min(t.getLuminance(),o.getLuminance())+.05)};l.isReadable=function(r,e,t){var o=l.readability(r,e),n,s;switch(s=!1,n=Ct(t),n.level+n.size){case"AAsmall":case"AAAlarge":s=o>=4.5;break;case"AAlarge":s=o>=3;break;case"AAAsmall":s=o>=7;break}return s};l.mostReadable=function(r,e,t){var o=null,n=0,s,i,a,c;t=t||{},i=t.includeFallbackColors,a=t.level,c=t.size;for(var p=0;pn&&(n=s,o=l(e[p]));return l.isReadable(r,o,{level:a,size:c})||!i?o:(t.includeFallbackColors=!1,l.mostReadable(r,["#fff","#000"],t))};var ae=l.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},gt=l.hexNames=bt(ae);function bt(r){var e={};for(var t in r)r.hasOwnProperty(t)&&(e[r[t]]=t);return e}function We(r){return r=parseFloat(r),(isNaN(r)||r<0||r>1)&&(r=1),r}function d(r,e){wt(r)&&(r="100%");var t=Nt(r);return r=Math.min(e,Math.max(0,parseFloat(r))),t&&(r=parseInt(r*e,10)/100),Math.abs(r-e)<1e-6?1:r%e/parseFloat(e)}function Z(r){return Math.min(1,Math.max(0,r))}function g(r){return parseInt(r,16)}function wt(r){return typeof r=="string"&&r.indexOf(".")!=-1&&parseFloat(r)===1}function Nt(r){return typeof r=="string"&&r.indexOf("%")!=-1}function U(r){return r.length==1?"0"+r:""+r}function k(r){return r<=1&&(r=r*100+"%"),r}function ye(r){return Math.round(parseFloat(r)*255).toString(16)}function _e(r){return g(r)/255}var N=(function(){var r="[-\\+]?\\d+%?",e="[-\\+]?\\d*\\.\\d+%?",t="(?:"+e+")|(?:"+r+")",o="[\\s|\\(]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")\\s*\\)?",n="[\\s|\\(]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")[,|\\s]+("+t+")\\s*\\)?";return{CSS_UNIT:new RegExp(t),rgb:new RegExp("rgb"+o),rgba:new RegExp("rgba"+n),hsl:new RegExp("hsl"+o),hsla:new RegExp("hsla"+n),hsv:new RegExp("hsv"+o),hsva:new RegExp("hsva"+n),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/}})();function D(r){return!!N.CSS_UNIT.exec(r)}function Ut(r){r=r.replace(rt,"").replace(ot,"").toLowerCase();var e=!1;if(ae[r])r=ae[r],e=!0;else if(r=="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var t;return(t=N.rgb.exec(r))?{r:t[1],g:t[2],b:t[3]}:(t=N.rgba.exec(r))?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=N.hsl.exec(r))?{h:t[1],s:t[2],l:t[3]}:(t=N.hsla.exec(r))?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=N.hsv.exec(r))?{h:t[1],s:t[2],v:t[3]}:(t=N.hsva.exec(r))?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=N.hex8.exec(r))?{r:g(t[1]),g:g(t[2]),b:g(t[3]),a:_e(t[4]),format:e?"name":"hex8"}:(t=N.hex6.exec(r))?{r:g(t[1]),g:g(t[2]),b:g(t[3]),format:e?"name":"hex"}:(t=N.hex4.exec(r))?{r:g(t[1]+""+t[1]),g:g(t[2]+""+t[2]),b:g(t[3]+""+t[3]),a:_e(t[4]+""+t[4]),format:e?"name":"hex8"}:(t=N.hex3.exec(r))?{r:g(t[1]+""+t[1]),g:g(t[2]+""+t[2]),b:g(t[3]+""+t[3]),format:e?"name":"hex"}:!1}function Ct(r){var e,t;return r=r||{level:"AA",size:"small"},e=(r.level||"AA").toUpperCase(),t=(r.size||"small").toLowerCase(),e!=="AA"&&e!=="AAA"&&(e="AA"),t!=="small"&&t!=="large"&&(t="small"),{level:e,size:t}}function Tt(r){var e=r.toString(16);return e.length===1?"0"+e:e}function Ke(r){return"#"+r.map(Tt).join("")}function Dt(r){var e=(r[0]*299+r[1]*587+r[2]*114)/1e3;return e<128}function Pt(r){return r?_t(r)?r:[r]:[]}function _t(r){return Array.isArray(r[0])}function me(r,e,t){for(var o=0;o=e-t&&r<=e+t}function kt(r,e,t){var o=t[0],n=t[1],s=t[2],i=t[3],a=t[4],c=r[e+3],p=$(c,i,a);return i?!!(!c&&p||$(r[e],o,a)&&$(r[e+1],n,a)&&$(r[e+2],s,a)&&p):p}var xt=24;function Ft(r,e,t){for(var o={},n=t.dominantDivider||xt,s=t.ignoredColor,i=t.step,a=[0,0,0,0,0],c=0;cs?(c=n/s,i=ce,a=Math.round(i/c)):(c=s/n,a=ce,i=Math.round(a/c)),(i>n||a>s||i0&&e.naturalHeight>0;if(e.decode)try{return yield e.decode(),e.naturalWidth>0&&e.naturalHeight>0}catch(t){return!1}return new Promise(t=>{let o=()=>{e.removeEventListener("load",n),e.removeEventListener("error",s)},n=()=>{o(),t(e.naturalWidth>0&&e.naturalHeight>0)},s=()=>{o(),t(!1)};e.addEventListener("load",n,{once:!0}),e.addEventListener("error",s,{once:!0}),window.setTimeout(()=>{o(),t(!1)},1e3)})})}setColorAttributes(e){return h(this,null,function*(){let t=activeDocument.getElementsByClassName("theme-dark")[0],o=activeDocument.getElementsByClassName("theme-light")[0],n;if(t!==void 0)try{n=activeWindow.getComputedStyle(t).getPropertyValue("--background-primary")}catch(s){n="000000"}else try{n=activeWindow.getComputedStyle(o).getPropertyValue("--background-primary")}catch(s){n="FFFFFF"}try{if(!(yield this.waitForImageSize(e)))return;let s=yield this.fac.getColorAsync(e);e.dataset.averageColorHex=s.hex,e.dataset.isDark=String(s.isDark),e.dataset.isLight=String(s.isLight);let i=l(n);e.dataset.colorInversion=String(this.plugin.settings.colorInversion),e.dataset.readable=l.readability(s.hex,i).toString(),e.dataset.isReadableAA=String(l.isReadable(s.hex,i)),e.dataset.isReadableAAA=String(l.isReadable(s.hex,i,{level:"AAA"}))}catch(s){console.error("could not extract color information from icon"),console.error(e),console.error(s)}})}};var Be=require("@codemirror/view"),ze=require("@codemirror/language");var ee=require("@codemirror/view"),Le=require("obsidian");var He=require("@codemirror/view"),Y=class extends He.WidgetType{constructor(e,t,o,n,s){super(),this.plugin=e,this.icon=t,this.fallbackIcon=o,this.qualifier=n,this.token=s}eq(e){return e===this}toDOM(){if(!this.icon||this.icon==="")return console.debug("empty icon for "+this.qualifier),activeDocument.createElement("span");if(typeof this.icon!="string")return this.icon.cloneNode(!0);if(!this.icon.startsWith("http")){let t=activeDocument.createElement("span");return t.textContent=this.icon,t}let e=activeDocument.createElement("span");return this.plugin.iconAdder.getImageEl(this.icon,this.qualifier).then(t=>{e.append(t)}).catch(t=>{console.error(t)}),e}ignoreEvent(){return!0}};var te=class{constructor(e,t){this.decoCache=new Map;this.editor=e,this.plugin=t,this.debouncedUpdate=(0,Le.debounce)(this.updateAsyncDecorations.bind(this),this.plugin.settings.debounce,!0)}computeAsyncDecorations(e){return h(this,null,function*(){let t=[];for(let o of e){let n=this.decoCache.get(o.value);if(!n){let s=I[this.plugin.settings.provider],i=I[this.plugin.settings.fallbackProvider];if(!s||!i)continue;let a=yield this.plugin.getIcon(o.value,s),c=yield this.plugin.getIcon(o.value,i),p=this.plugin.iconAdder.constructURL(o.value);if(p){let u=p.protocol.contains("http")?p.hostname:p.protocol;n=ee.Decoration.widget({widget:new Y(this.plugin,a,c,u,o)}),this.decoCache.set(o.value,n)}}n&&t.push(n.range(o.from,o.from))}return ee.Decoration.set(t,!0)})}updateAsyncDecorations(e){return h(this,null,function*(){let t=yield this.computeAsyncDecorations(e);(t||this.editor.state.field(re.field).size)&&this.editor.dispatch({effects:re.update.of(t||ee.Decoration.none)})})}};function Oe(r,e){return Jt(r,e,"[","]")}function Jt(r,e,t,o){if(!r.includes(t))return-1;let n=e,s=r[e]===o?1:0;for(;n>0;){let i=r[--n];if(i==t){if(s--,s===0)return n}else i==o&&s++}return-1}var A=require("obsidian");var re=G();function Zt(r){return Be.ViewPlugin.fromClass(class{constructor(e){this.decoManager=new te(e,r),this.buildAsyncDecorations(e)}update(e){let t=e.startState.field(A.editorLivePreviewField)!=e.state.field(A.editorLivePreviewField);(e.docChanged||e.viewportChanged||t)&&this.buildAsyncDecorations(e.view)}destroy(){}buildAsyncDecorations(e){let t=[];if(e.state.field(A.editorLivePreviewField)&&!r.settings.enableLivePreview){this.decoManager.debouncedUpdate(t);return}if(!e.state.field(A.editorLivePreviewField)&&!r.settings.enableSource){this.decoManager.debouncedUpdate(t);return}for(let{from:o,to:n}of e.visibleRanges)(0,ze.syntaxTree)(e.state).iterate({from:o,to:n,enter:i=>{if(i.name.toLowerCase().includes("url")){let c=e.state.sliceDoc(i.from,i.to);if(c.includes(":")){if(c=c.replace(/[<>]/g,""),e.state.doc.sliceString(i.from-1,i.from)!=="("){if(!r.settings.showLink)return;r.settings.iconPosition==="front"&&t.push({from:i.from,to:i.to,value:c}),r.settings.iconPosition==="back"&&t.push({from:i.to,to:i.to+1,value:c});return}if(!r.settings.showAliased)return;let u=e.state.doc.lineAt(i.from),m=u.to-i.to,S=u.length-m,R=u.text.lastIndexOf("]",S),f=Oe(u.text,R);if(f===-1)return;let v=u.from+f;if(e.state.sliceDoc(v,i.to).contains("|nofavicon"))return;r.settings.iconPosition==="front"&&t.push({from:v,to:i.to,value:c}),r.settings.iconPosition==="back"&&t.push({from:i.to,to:i.to+1,value:c})}}}});this.decoManager.debouncedUpdate(t)}})}function Ge(r){return[re.field,Zt(r)]}var le=require("@codemirror/state");var oe=class extends je.Plugin{getOverwrittenFavicon(e){return h(this,null,function*(){let t=P(this);if(!t)throw new Error("No IconAPI loaded");if(e.length===0)throw new Error("No icons");let o=e[0].icon;if(t.version.satisfies("^0.9.0")){let s=yield t.getSVGIcon(o);if(s)return s;throw new Error("No icon found")}let n=t.getIcon(o);if(n)return n;throw new Error("No icon found")})}getCustomDomainIcon(e){return h(this,null,function*(){let t=this.settings.overwritten.filter(o=>e.match(o.domain));return this.getOverwrittenFavicon(t).then(o=>o).catch(()=>{})})}getCustomSchemeIcon(e){return h(this,null,function*(){let t=this.settings.protocol.filter(o=>e.substring(0,e.length-1).match(o.domain));return this.getOverwrittenFavicon(t).then(o=>o).catch(()=>{})})}getIcon(e,t){return h(this,null,function*(){let o;try{o=new URL(e)}catch(a){throw new Error("Invalid URL")}let n=yield this.getCustomSchemeIcon(o.protocol);if(n)return typeof n!="string"&&(n.addClass("link-favicon"),n.dataset.target=o.href,n.dataset.protocol=o.protocol),n;if(this.settings.ignored.split(` +`).filter(a=>a.length>0).some(a=>o.hostname.match(new RegExp(a))))throw new Error("Ignored domain");let i=yield this.getCustomDomainIcon(o.hostname);if(i)return typeof i!="string"&&(i.addClass("link-favicon"),i.dataset.target=o.href,i.dataset.host=o.hostname),i;try{return yield t.url(o.hostname,this.settings)}catch(a){throw console.error(a),new Error("Provider failed")}return""})}onload(){return h(this,null,function*(){console.debug("enabling plugin: link favicons"),yield this.loadSettings(),this.iconAdder=new Q(this);let e=this.app.vault.configDir+"/favicons/";(yield this.app.vault.adapter.exists(e))&&(yield this.app.vault.adapter.rmdir(e,!0)),this.registerEvent(this.app.workspace.on("css-change",()=>{this.app.workspace.updateOptions()})),this.addSettingTab(new L(this.app,this)),this.registerEditorExtension(le.Prec.lowest(Ge(this))),this.registerEditorExtension(le.Prec.lowest(Ne(this)));let t=new O(this);this.registerMarkdownPostProcessor(t.processor),this.app.workspace.updateOptions()})}onunload(){this.iconAdder.destruct(),console.debug("disabling plugin: link favicons")}loadSettings(){return h(this,null,function*(){this.settings=Object.assign({},ve,yield this.loadData())})}saveSettings(){return h(this,null,function*(){yield this.saveData(this.settings),this.app.workspace.updateOptions()})}}; +/*! Bundled license information: + +fast-average-color/dist/index.esm.js: + (*! Fast Average Color | © 2023 Denis Seleznev | MIT License | https://github.com/fast-average-color/fast-average-color *) +*/ + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/link-favicon/manifest.json b/.obsidian/plugins/link-favicon/manifest.json new file mode 100644 index 0000000..a149ad6 --- /dev/null +++ b/.obsidian/plugins/link-favicon/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "link-favicon", + "name": "Link Favicons", + "version": "1.8.5", + "minAppVersion": "1.12.0", + "description": "See the favicon for a linked website. ", + "author": "Johannes Theiner", + "authorUrl": "https://github.com/joethei", + "isDesktopOnly": false +} diff --git a/.obsidian/plugins/link-favicon/styles.css b/.obsidian/plugins/link-favicon/styles.css new file mode 100644 index 0000000..3abbeb3 --- /dev/null +++ b/.obsidian/plugins/link-favicon/styles.css @@ -0,0 +1,7 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +https://github.com/joethei/obisidian-link-favicon +*/ + +.link-favicon{cursor:pointer!important;image-rendering:-webkit-optimize-contrast;margin-bottom:.3em;margin-left:.1em;margin-right:.1em;max-height:1em;vertical-align:bottom}.link-favicon-preview{font-size:50px;text-align:center}.link-favicon-preview img{height:50px}.link-favicon[data-color-inversion=true][data-is-readable-a-a=false]{filter:hue-rotate(180deg) invert(1)}.link-favicon-scrollable-content{height:60vh;overflow:auto} \ No newline at end of file diff --git a/.obsidian/plugins/nldates-redux/main.js b/.obsidian/plugins/nldates-redux/main.js new file mode 100644 index 0000000..0d7f03e --- /dev/null +++ b/.obsidian/plugins/nldates-redux/main.js @@ -0,0 +1,4 @@ +"use strict";var e=require("obsidian");function t(e,t,n,r){return new(n||(n=Promise))(function(a,s){function i(e){try{u(r.next(e))}catch(e){s(e)}}function o(e){try{u(r.throw(e))}catch(e){s(e)}}function u(e){var t;e.done?a(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(i,o)}u((r=r.apply(e,t||[])).next())})}const n="YYYY-MM-DD";function r(){return window.app}function a(){var e,t;try{const a=r();if(function(e){var t,n;const a=r().plugins.getPlugin("periodic-notes");return Boolean(null===(n=null===(t=null==a?void 0:a.settings)||void 0===t?void 0:t[e])||void 0===n?void 0:n.enabled)}("daily")){const t=a.plugins.getPlugin("periodic-notes"),r=(null===(e=null==t?void 0:t.settings)||void 0===e?void 0:e.daily)||{};return{format:"string"==typeof r.format?r.format:n,folder:"string"==typeof r.folder?r.folder.trim():"",template:"string"==typeof r.template?r.template.trim():""}}const s=a.internalPlugins.getPluginById("daily-notes"),i=null===(t=null==s?void 0:s.instance)||void 0===t?void 0:t.options;return{format:"string"==typeof(null==i?void 0:i.format)?i.format:n,folder:"string"==typeof(null==i?void 0:i.folder)?i.folder.trim():"",template:"string"==typeof(null==i?void 0:i.template)?i.template.trim():""}}catch(e){return console.warn("No custom daily note settings found!",e),{format:n,folder:"",template:""}}}function s(e,t="day"){return`${t}-${e.clone().startOf(t).format()}`}function i(e){return e.replace(/\[[^\]]*\]/g,"")}function o(e,t){const r={day:a,week:a,month:a,quarter:a,year:a}[t]().format.split("/").pop()||n,s=window.moment(e,r,!0);if(!s.isValid())return null;if(function(e,t){if("week"===t){const t=i(e);return/w{1,2}/i.test(t)&&(/M{1,4}/.test(t)||/D{1,4}/.test(t))}return!1}(r,t)&&"week"===t){const t=i(r);if(/w{1,2}/i.test(t))return window.moment(e,r.replace(/M{1,4}/g,"").replace(/D{1,4}/g,""),!1)}return s}function u(...e){const t=[];for(const n of e)t.push(...n.split("/"));const n=[];for(const e of t)e&&"."!==e&&n.push(e);return""===t[0]&&n.unshift(""),n.join("/")}function d(n,a){return t(this,void 0,void 0,function*(){let s=a;s.endsWith(".md")||(s+=".md");const i=e.normalizePath(u(n,s));return yield function(e){return t(this,void 0,void 0,function*(){const t=e.replace(/\\/g,"/").split("/");if(t.pop(),t.length>0){const e=u(...t);r().vault.getAbstractFileByPath(e)||(yield r().vault.createFolder(e))}})}(i),i})}function l(n){return t(this,void 0,void 0,function*(){const s=r(),{vault:i}=s,{template:o,format:u,folder:l}=a(),[c,m]=yield function(n){return t(this,void 0,void 0,function*(){const t=r(),a=e.normalizePath(n);if("/"===a)return["",{folds:[]}];try{const e=t.metadataCache.getFirstLinkpathDest(a,"");if(!e)throw new Error("Template file not found");return[yield t.vault.cachedRead(e),t.foldManager.load(e)]}catch(t){return console.error(`Failed to read the daily note template '${a}'`,t),new e.Notice("Failed to read the daily note template"),["",{folds:[]}]}})}(o),f=n.format(u),h=yield d(l,f);try{const e=yield i.create(h,c.replace(/{{\s*date\s*}}/gi,f).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,f).replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(e,t,r,a,s,i)=>{const o=window.moment(),d=n.clone().set({hour:o.get("hour"),minute:o.get("minute"),second:o.get("second")});return r&&d.add(parseInt(a,10),s),i?d.format(i.substring(1).trim()):d.format(u)}).replace(/{{\s*yesterday\s*}}/gi,n.clone().subtract(1,"day").format(u)).replace(/{{\s*tomorrow\s*}}/gi,n.clone().add(1,"d").format(u)));return s.foldManager.save(e,m),e}catch(t){throw console.error(`Failed to create file: '${h}'`,t),new e.Notice("Unable to create new file."),t}})}function c(){const t=r(),{vault:n}=t,{folder:i}=a(),u=n.getAbstractFileByPath(e.normalizePath(i));if(!u)throw new Error("Failed to find daily notes folder");const d={};return e.Vault.recurseChildren(u,t=>{if(t instanceof e.TFile){const e=(n="day",o(t.basename,n));if(e){const n=s(e,"day");d[n]=t}}var n}),d}const m=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];function f(){const e=window.moment.localeData()._week.dow;return m[e]}function h(t,n,r){const a=t.vault.getConfig("useMarkdownLinks"),s=e.normalizePath(n);return a?r?`[${r}](${s.replace(/ /g,"%20")})`:`[${n}](${s})`:r?`[[${s}|${r}]]`:`[[${s}]]`}function p(e,t,n){if(n)return t;if(e.settings.defaultAlias){const n=e.parseDate(t);return n.moment.isValid()?n.moment.format(e.settings.defaultAlias):void 0}}function g(e){return t(this,void 0,void 0,function*(){const t=function(e,t){var n;return null!==(n=t[s(e,"day")])&&void 0!==n?n:null}(e,c());return t?Promise.resolve(t):l(e)})}const y={first:1,second:2,third:3,fourth:4,fifth:5,sixth:6,seventh:7,eighth:8,ninth:9,tenth:10,eleventh:11,twelfth:12,thirteenth:13,fourteenth:14,fifteenth:15,sixteenth:16,seventeenth:17,eighteenth:18,nineteenth:19,twentieth:20,"twenty first":21,"twenty-first":21,"twenty second":22,"twenty-second":22,"twenty third":23,"twenty-third":23,"twenty fourth":24,"twenty-fourth":24,"twenty fifth":25,"twenty-fifth":25,"twenty sixth":26,"twenty-sixth":26,"twenty seventh":27,"twenty-seventh":27,"twenty eighth":28,"twenty-eighth":28,"twenty ninth":29,"twenty-ninth":29,thirtieth:30,"thirty first":31,"thirty-first":31},T=`(?:${_=y,`(?:${function(e){let t;return t=e instanceof Array?[...e]:e instanceof Map?Array.from(e.keys()):Object.keys(e),t}(_).sort((e,t)=>t.length-e.length).join("|").replace(/\./g,"\\.")})`}|[0-9]{1,2}(?:st|nd|rd|th)?)`;var _;function M(e){let t=e.toLowerCase();return void 0!==y[t]?y[t]:(t=t.replace(/(?:st|nd|rd|th)$/i,""),parseInt(t))}class w extends e.Modal{constructor(e,t){super(e),this.plugin=t}onOpen(){let t,n="",r=this.plugin.settings.modalMomentFormat,a=this.plugin.settings.modalToggleLink;const s=()=>{let e=n,t=!1;n.endsWith("|")&&(t=!0,e=n.slice(0,-1));const s=this.plugin.parseDate(e||"today");let i=s.moment.isValid()?s.moment.format(r):"";if(a){const n=p(this.plugin,e,t);i=h(this.app,i,n)}return i};this.contentEl.createEl("form",{},i=>{const o=new e.Setting(i).setName("Date").setDesc(s()).addText(e=>{e.setPlaceholder("Today"),e.onChange(e=>{n=e,t.setText(s())}),window.setTimeout(()=>e.inputEl.focus(),10)});t=o.descEl,new e.Setting(i).setName("Date format").setDesc("Moment format to be used.").addMomentFormat(e=>{e.setPlaceholder("Enter a moment format"),e.setValue(r),e.onChange(e=>{r=e.trim()||"YYYY-MM-DD HH:mm",this.plugin.settings.modalMomentFormat=r,this.plugin.saveSettings(),t.setText(s())})}),new e.Setting(i).setName("Add as link?").addToggle(e=>{e.setValue(this.plugin.settings.modalToggleLink).onChange(e=>{a=e,this.plugin.settings.modalToggleLink=a,this.plugin.saveSettings(),t.setText(s())})}),i.createDiv("modal-button-container",e=>{e.createEl("button",{attr:{type:"button"},text:"Never mind"}).addEventListener("click",()=>this.close()),e.createEl("button",{attr:{type:"submit"},cls:"mod-cta",text:"Insert date"})});const u=this.app.workspace.getActiveViewOfType(e.MarkdownView).editor;i.addEventListener("submit",e=>{e.preventDefault(),this.close(),u.replaceSelection(s())})})}}var P="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function v(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var b={},C={},A={},E={},D={};function O(e){let t;return t=e instanceof Array?[...e]:e instanceof Map?Array.from(e.keys()):Object.keys(e),t}Object.defineProperty(D,"__esModule",{value:!0}),D.matchAnyPattern=D.extractTerms=D.repeatedTimeunitPattern=void 0,D.repeatedTimeunitPattern=function(e,t){const n=t.replace(/\((?!\?)/g,"(?:");return`${e}${n}\\s{0,5}(?:,?\\s{0,5}${n}){0,10}`},D.extractTerms=O,D.matchAnyPattern=function(e){return`(?:${O(e).sort((e,t)=>t.length-e.length).join("|").replace(/\./g,"\\.")})`};var N={},R={exports:{}};R.exports=function(){var e=1e3,t=6e4,n=36e5,r="millisecond",a="second",s="minute",i="hour",o="day",u="week",d="month",l="quarter",c="year",m="date",f="Invalid Date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,p=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,g={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}},y=function(e,t,n){var r=String(e);return!r||r.length>=t?e:""+Array(t+1-r.length).join(n)+e},T={s:y,z:function(e){var t=-e.utcOffset(),n=Math.abs(t),r=Math.floor(n/60),a=n%60;return(t<=0?"+":"-")+y(r,2,"0")+":"+y(a,2,"0")},m:function e(t,n){if(t.date()1)return e(i[0])}else{var o=t.name;M[o]=t,a=o}return!r&&a&&(_=a),a||!r&&_},b=function(e,t){if(P(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new A(n)},C=T;C.l=v,C.i=P,C.w=function(e,t){return b(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var A=function(){function g(e){this.$L=v(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[w]=!0}var y=g.prototype;return y.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(C.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var r=t.match(h);if(r){var a=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],a,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(t)}(e),this.init()},y.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},y.$utils=function(){return C},y.isValid=function(){return!(this.$d.toString()===f)},y.isSame=function(e,t){var n=b(e);return this.startOf(t)<=n&&n<=this.endOf(t)},y.isAfter=function(e,t){return b(e)50?1900:2e3),e},N.findYearClosestToRef=function(e,t,n){const r=I.default(e);let a=r;a=a.month(n-1),a=a.date(t),a=a.year(r.year());const s=a.add(1,"y"),i=a.add(-1,"y");return Math.abs(s.diff(r))31)return t.index=t.index+t[1].length,null;if(n.start.assign("month",r),n.start.assign("day",a),t[4]){const e=oe.parseYear(t[4]);n.start.assign("year",e)}else{const t=se.findYearClosestToRef(e.refDate,a,r);n.start.imply("year",t)}if(t[2]){const e=ue.parseOrdinalNumberPattern(t[2]);n.end=n.start.clone(),n.end.assign("day",e)}return n}}ae.default=me;var fe={};Object.defineProperty(fe,"__esModule",{value:!0});const he=N,pe=E,ge=E,ye=E,Te=J,_e=new RegExp(`(${D.matchAnyPattern(pe.MONTH_DICTIONARY)})(?:-|/|\\s*,?\\s*)(${ge.ORDINAL_NUMBER_PATTERN})(?!\\s*(?:am|pm))\\s*(?:(?:to|\\-)\\s*(${ge.ORDINAL_NUMBER_PATTERN})\\s*)?(?:(?:-|/|\\s*,?\\s*)(${ye.YEAR_PATTERN}))?(?=\\W|$)(?!\\:\\d)`,"i");class Me extends Te.AbstractParserWithWordBoundaryChecking{innerPattern(){return _e}innerExtract(e,t){const n=pe.MONTH_DICTIONARY[t[1].toLowerCase()],r=ge.parseOrdinalNumberPattern(t[2]);if(r>31)return null;const a=e.createParsingComponents({day:r,month:n});if(t[4]){const e=ye.parseYear(t[4]);a.assign("year",e)}else{const t=he.findYearClosestToRef(e.refDate,r,n);a.imply("year",t)}if(!t[3])return a;const s=ge.parseOrdinalNumberPattern(t[3]),i=e.createParsingResult(t.index,t[0]);return i.start=a,i.end=a.clone(),i.end.assign("day",s),i}}fe.default=Me;var we={};Object.defineProperty(we,"__esModule",{value:!0});const Pe=E,ve=N,be=E,Ce=J,Ae=new RegExp(`((?:in)\\s*)?(${D.matchAnyPattern(Pe.MONTH_DICTIONARY)})\\s*(?:[,-]?\\s*(${be.YEAR_PATTERN})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i");class Ee extends Ce.AbstractParserWithWordBoundaryChecking{innerPattern(){return Ae}innerExtract(e,t){const n=t[2].toLowerCase();if(t[0].length<=3&&!Pe.FULL_MONTH_NAME_DICTIONARY[n])return null;const r=e.createParsingResult(t.index+(t[1]||"").length,t.index+t[0].length);r.start.imply("day",1);const a=Pe.MONTH_DICTIONARY[n];if(r.start.assign("month",a),t[3]){const e=be.parseYear(t[3]);r.start.assign("year",e)}else{const t=ve.findYearClosestToRef(e.refDate,1,a);r.start.imply("year",t)}return r}}we.default=Ee;var De={};Object.defineProperty(De,"__esModule",{value:!0});const Oe=E,Ne=J,Re=new RegExp(`([0-9]{4})[\\.\\/\\s](?:(${D.matchAnyPattern(Oe.MONTH_DICTIONARY)})|([0-9]{1,2}))[\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i");class xe extends Ne.AbstractParserWithWordBoundaryChecking{innerPattern(){return Re}innerExtract(e,t){const n=t[3]?parseInt(t[3]):Oe.MONTH_DICTIONARY[t[2].toLowerCase()];if(n<1||n>12)return null;const r=parseInt(t[1]);return{day:parseInt(t[4]),month:n,year:r}}}De.default=xe;var Ie={};Object.defineProperty(Ie,"__esModule",{value:!0});const Se=J,We=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i");class ke extends Se.AbstractParserWithWordBoundaryChecking{innerPattern(){return We}innerExtract(e,t){const n=parseInt(t[2]),r=parseInt(t[1]);return e.createParsingComponents().imply("day",1).assign("month",r).assign("year",n)}}Ie.default=ke;var $e={},je={};Object.defineProperty(je,"__esModule",{value:!0}),je.AbstractTimeExpressionParser=void 0;const Ye=b;je.AbstractTimeExpressionParser=class{constructor(e=!1){this.cachedPrimaryPrefix=null,this.cachedPrimarySuffix=null,this.cachedPrimaryTimePattern=null,this.cachedFollowingPhase=null,this.cachedFollowingSuffix=null,this.cachedFollowingTimePatten=null,this.strictMode=e}primarySuffix(){return"(?=\\W|$)"}followingSuffix(){return"(?=\\W|$)"}pattern(e){return this.getPrimaryTimePatternThroughCache()}extract(e,t){const n=this.extractPrimaryTimeComponents(e,t);if(!n)return t.index+=t[0].length,null;const r=t.index+t[1].length,a=t[0].substring(t[1].length),s=e.createParsingResult(r,a,n);t.index+=t[0].length;const i=e.text.substring(t.index),o=this.getFollowingTimePatternThroughCache().exec(i);return!o||o[0].match(/^\s*([+-])\s*\d{3,4}$/)?this.checkAndReturnWithoutFollowingPattern(s):(s.end=this.extractFollowingTimeComponents(e,o,s),s.end&&(s.text+=o[0]),this.checkAndReturnWithFollowingPattern(s))}extractPrimaryTimeComponents(e,t,n=!1){const r=e.createParsingComponents();let a=0,s=null,i=parseInt(t[2]);if(i>100){if(this.strictMode||null!=t[3])return null;a=i%100,i=Math.floor(i/100)}if(i>24)return null;if(null!=t[3]){if(1==t[3].length&&!t[6])return null;a=parseInt(t[3])}if(a>=60)return null;if(i>12&&(s=Ye.Meridiem.PM),null!=t[6]){if(i>12)return null;const e=t[6][0].toLowerCase();"a"==e&&(s=Ye.Meridiem.AM,12==i&&(i=0)),"p"==e&&(s=Ye.Meridiem.PM,12!=i&&(i+=12))}if(r.assign("hour",i),r.assign("minute",a),null!==s?r.assign("meridiem",s):i<12?r.imply("meridiem",Ye.Meridiem.AM):r.imply("meridiem",Ye.Meridiem.PM),null!=t[5]){const e=parseInt(t[5].substring(0,3));if(e>=1e3)return null;r.assign("millisecond",e)}if(null!=t[4]){const e=parseInt(t[4]);if(e>=60)return null;r.assign("second",e)}return r}extractFollowingTimeComponents(e,t,n){const r=e.createParsingComponents();if(null!=t[5]){const e=parseInt(t[5].substring(0,3));if(e>=1e3)return null;r.assign("millisecond",e)}if(null!=t[4]){const e=parseInt(t[4]);if(e>=60)return null;r.assign("second",e)}let a=parseInt(t[2]),s=0,i=-1;if(null!=t[3]?s=parseInt(t[3]):a>100&&(s=a%100,a=Math.floor(a/100)),s>=60||a>24)return null;if(a>=12&&(i=Ye.Meridiem.PM),null!=t[6]){if(a>12)return null;const e=t[6][0].toLowerCase();"a"==e&&(i=Ye.Meridiem.AM,12==a&&(a=0,r.isCertain("day")||r.imply("day",r.get("day")+1))),"p"==e&&(i=Ye.Meridiem.PM,12!=a&&(a+=12)),n.start.isCertain("meridiem")||(i==Ye.Meridiem.AM?(n.start.imply("meridiem",Ye.Meridiem.AM),12==n.start.get("hour")&&n.start.assign("hour",0)):(n.start.imply("meridiem",Ye.Meridiem.PM),12!=n.start.get("hour")&&n.start.assign("hour",n.start.get("hour")+12)))}if(r.assign("hour",a),r.assign("minute",s),i>=0)r.assign("meridiem",i);else{n.start.isCertain("meridiem")&&n.start.get("hour")>12?n.start.get("hour")-12>a?r.imply("meridiem",Ye.Meridiem.AM):a<=12&&(r.assign("hour",a+12),r.assign("meridiem",Ye.Meridiem.PM)):a>12?r.imply("meridiem",Ye.Meridiem.PM):a<=12&&r.imply("meridiem",Ye.Meridiem.AM)}return r.date().getTime()24)return null}return e}checkAndReturnWithFollowingPattern(e){if(e.text.match(/^\d+-\d+$/))return null;const t=e.text.match(/[^\d:.](\d[\d.]+)\s*-\s*(\d[\d.]+)$/);if(t){if(this.strictMode)return null;const e=t[1],n=t[2];if(n.includes(".")&&!n.match(/\d(\.\d{2})+$/))return null;const r=parseInt(n),a=parseInt(e);if(r>24||a>24)return null}return e}getPrimaryTimePatternThroughCache(){const e=this.primaryPrefix(),t=this.primarySuffix();return this.cachedPrimaryPrefix===e&&this.cachedPrimarySuffix===t||(this.cachedPrimaryTimePattern=function(e,t){return new RegExp(`(^|\\s|T|\\b)${e}(\\d{1,4})(?:(?:\\.|\\:|\\:)(\\d{1,2})(?:(?:\\:|\\:)(\\d{2})(?:\\.(\\d{1,6}))?)?)?(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?${t}`,"i")}(e,t),this.cachedPrimaryPrefix=e,this.cachedPrimarySuffix=t),this.cachedPrimaryTimePattern}getFollowingTimePatternThroughCache(){const e=this.followingPhase(),t=this.followingSuffix();return this.cachedFollowingPhase===e&&this.cachedFollowingSuffix===t||(this.cachedFollowingTimePatten=function(e,t){return new RegExp(`^(${e})(\\d{1,4})(?:(?:\\.|\\:|\\:)(\\d{1,2})(?:(?:\\.|\\:|\\:)(\\d{1,2})(?:\\.(\\d{1,6}))?)?)?(?:\\s*(a\\.m\\.|p\\.m\\.|am?|pm?))?${t}`,"i")}(e,t),this.cachedFollowingPhase=e,this.cachedFollowingSuffix=t),this.cachedFollowingTimePatten}},Object.defineProperty($e,"__esModule",{value:!0});const Be=b,Fe=je;class Ue extends Fe.AbstractTimeExpressionParser{constructor(e){super(e)}followingPhase(){return"\\s*(?:\\-|\\–|\\~|\\〜|to|\\?)\\s*"}primaryPrefix(){return"(?:(?:at|from)\\s*)??"}primarySuffix(){return"(?:\\s*(?:o\\W*clock|at\\s*night|in\\s*the\\s*(?:morning|afternoon)))?(?!/)(?=\\W|$)"}extractPrimaryTimeComponents(e,t){const n=super.extractPrimaryTimeComponents(e,t);if(n){if(t[0].endsWith("night")){const e=n.get("hour");e>=6&&e<12?(n.assign("hour",n.get("hour")+12),n.assign("meridiem",Be.Meridiem.PM)):e<6&&n.assign("meridiem",Be.Meridiem.AM)}if(t[0].endsWith("afternoon")){n.assign("meridiem",Be.Meridiem.PM);const e=n.get("hour");e>=0&&e<=6&&n.assign("hour",n.get("hour")+12)}if(t[0].endsWith("morning")){n.assign("meridiem",Be.Meridiem.AM);n.get("hour")<12&&n.assign("hour",n.get("hour"))}}return n}}$e.default=Ue;var Le={},ze={};Object.defineProperty(ze,"__esModule",{value:!0}),ze.addImpliedTimeUnits=ze.reverseTimeUnits=void 0,ze.reverseTimeUnits=function(e){const t={};for(const n in e)t[n]=-e[n];return t},ze.addImpliedTimeUnits=function(e,t){const n=e.clone();let r=e.dayjs();for(const e in t)r=r.add(t[e],e);return("day"in t||"d"in t||"week"in t||"month"in t||"year"in t)&&(n.imply("day",r.date()),n.imply("month",r.month()+1),n.imply("year",r.year())),("second"in t||"minute"in t||"hour"in t)&&(n.imply("second",r.second()),n.imply("minute",r.minute()),n.imply("hour",r.hour())),n},Object.defineProperty(Le,"__esModule",{value:!0});const He=E,Ve=k,Ke=J,Ge=ze,qe=new RegExp(`(${He.TIME_UNITS_PATTERN})\\s{0,5}(?:ago|before|earlier)(?=(?:\\W|$))`,"i"),Ze=new RegExp(`(${He.TIME_UNITS_PATTERN})\\s{0,5}ago(?=(?:\\W|$))`,"i");class Je extends Ke.AbstractParserWithWordBoundaryChecking{constructor(e){super(),this.strictMode=e}innerPattern(){return this.strictMode?Ze:qe}innerExtract(e,t){const n=He.parseTimeUnits(t[1]),r=Ge.reverseTimeUnits(n);return Ve.ParsingComponents.createRelativeFromReference(e.reference,r)}}Le.default=Je;var Qe={};Object.defineProperty(Qe,"__esModule",{value:!0});const Xe=E,et=k,tt=J,nt=new RegExp(`(${Xe.TIME_UNITS_PATTERN})\\s{0,5}(?:later|after|from now|henceforth|forward|out)(?=(?:\\W|$))`,"i"),rt=new RegExp("("+Xe.TIME_UNITS_PATTERN+")(later|from now)(?=(?:\\W|$))","i");class at extends tt.AbstractParserWithWordBoundaryChecking{constructor(e){super(),this.strictMode=e}innerPattern(){return this.strictMode?rt:nt}innerExtract(e,t){const n=Xe.parseTimeUnits(t[1]);return et.ParsingComponents.createRelativeFromReference(e.reference,n)}}Qe.default=at;var st={},it={},ot={};Object.defineProperty(ot,"__esModule",{value:!0}),ot.MergingRefiner=ot.Filter=void 0;ot.Filter=class{refine(e,t){return t.filter(t=>this.isValid(e,t))}};ot.MergingRefiner=class{refine(e,t){if(t.length<2)return t;const n=[];let r=t[0],a=null;for(let s=1;s{console.log(`${this.constructor.name} merged ${t} and ${n} into ${s}`)}),r=s}else n.push(r),r=a}return null!=r&&n.push(r),n}},Object.defineProperty(it,"__esModule",{value:!0});const ut=ot;class dt extends ut.MergingRefiner{shouldMergeResults(e,t,n){return!t.end&&!n.end&&null!=e.match(this.patternBetween())}mergeResults(e,t,n){if(t.start.isOnlyWeekdayComponent()||n.start.isOnlyWeekdayComponent()||(n.start.getCertainComponents().forEach(e=>{t.start.isCertain(e)||t.start.assign(e,n.start.get(e))}),t.start.getCertainComponents().forEach(e=>{n.start.isCertain(e)||n.start.assign(e,t.start.get(e))})),t.start.date().getTime()>n.start.date().getTime()){let e=t.start.dayjs(),r=n.start.dayjs();t.start.isOnlyWeekdayComponent()&&e.add(-7,"days").isBefore(r)?(e=e.add(-7,"days"),t.start.imply("day",e.date()),t.start.imply("month",e.month()+1),t.start.imply("year",e.year())):n.start.isOnlyWeekdayComponent()&&r.add(7,"days").isAfter(e)?(r=r.add(7,"days"),n.start.imply("day",r.date()),n.start.imply("month",r.month()+1),n.start.imply("year",r.year())):[n,t]=[t,n]}const r=t.clone();return r.start=t.start,r.end=n.start,r.index=Math.min(t.index,n.index),t.index{var n,a;const s=e.text.substring(t.index+t.text.length),i=At.exec(s);if(!i)return;const o=i[1].toUpperCase(),u=null!==(a=null!==(n=r[o])&&void 0!==n?n:this.timezone[o])&&void 0!==a?a:null;if(null===u)return;e.debug(()=>{console.log(`Extracting timezone: '${o}' into : ${u}`)});const d=t.start.get("timezoneOffset");if(null!==d&&u!=d){if(t.start.isCertain("timezoneOffset"))return;if(o!=i[1])return}t.start.isOnlyDate()&&o!=i[1]||(t.text+=i[0],t.start.isCertain("timezoneOffset")||t.start.assign("timezoneOffset",u),null==t.end||t.end.isCertain("timezoneOffset")||t.end.assign("timezoneOffset",u))}),t}};var Dt={};Object.defineProperty(Dt,"__esModule",{value:!0});const Ot=new RegExp("^\\s*(?:(?:GMT|UTC)\\s?)?([+-])(\\d{1,2})(?::?(\\d{2}))?","i");Dt.default=class{refine(e,t){return t.forEach(function(t){if(t.start.isCertain("timezoneOffset"))return;const n=e.text.substring(t.index+t.text.length),r=Ot.exec(n);if(!r)return;e.debug(()=>{console.log(`Extracting timezone: '${r[0]}' into : ${t}`)});let a=60*parseInt(r[2])+parseInt(r[3]||"0");"-"===r[1]&&(a=-a),null!=t.end&&t.end.assign("timezoneOffset",a),t.start.assign("timezoneOffset",a),t.text+=r[0]}),t}};var Nt={};Object.defineProperty(Nt,"__esModule",{value:!0});Nt.default=class{refine(e,t){if(t.length<2)return t;const n=[];let r=t[0];for(let e=1;er.text.length&&(r=a):(n.push(r),r=a)}return null!=r&&n.push(r),n}};var Rt={},xt=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Rt,"__esModule",{value:!0});const It=xt(R.exports);Rt.default=class{refine(e,t){return e.option.forwardDate?(t.forEach(function(t){let n=It.default(e.refDate);if(t.start.isOnlyDayMonthComponent()&&n.isAfter(t.start.dayjs()))for(let r=0;r<3&&n.isAfter(t.start.dayjs());r++)t.start.imply("year",t.start.get("year")+1),e.debug(()=>{console.log(`Forward yearly adjusted for ${t} (${t.start})`)}),t.end&&!t.end.isCertain("year")&&(t.end.imply("year",t.end.get("year")+1),e.debug(()=>{console.log(`Forward yearly adjusted for ${t} (${t.end})`)}));t.start.isOnlyWeekdayComponent()&&n.isAfter(t.start.dayjs())&&(n=n.day()>=t.start.get("weekday")?n.day(t.start.get("weekday")+7):n.day(t.start.get("weekday")),t.start.imply("day",n.date()),t.start.imply("month",n.month()+1),t.start.imply("year",n.year()),e.debug(()=>{console.log(`Forward weekly adjusted for ${t} (${t.start})`)}),t.end&&t.end.isOnlyWeekdayComponent()&&(n=n.day()>t.end.get("weekday")?n.day(t.end.get("weekday")+7):n.day(t.end.get("weekday")),t.end.imply("day",n.date()),t.end.imply("month",n.month()+1),t.end.imply("year",n.year()),e.debug(()=>{console.log(`Forward weekly adjusted for ${t} (${t.end})`)})))}),t):t}};var St={};Object.defineProperty(St,"__esModule",{value:!0});const Wt=ot;class kt extends Wt.Filter{constructor(e){super(),this.strictMode=e}isValid(e,t){return t.text.replace(" ","").match(/^\d*(\.\d*)?$/)?(e.debug(()=>{console.log(`Removing unlikely result '${t.text}'`)}),!1):t.start.isValidDate()?t.end&&!t.end.isValidDate()?(e.debug(()=>{console.log(`Removing invalid result: ${t} (${t.end})`)}),!1):!this.strictMode||this.isStrictModeValid(e,t):(e.debug(()=>{console.log(`Removing invalid result: ${t} (${t.start})`)}),!1)}isStrictModeValid(e,t){return t.start.isOnlyWeekdayComponent()?(e.debug(()=>{console.log(`(Strict) Removing weekday only component: ${t} (${t.end})`)}),!1):!!(!t.start.isOnlyTime()||t.start.isCertain("hour")&&t.start.isCertain("minute"))||(e.debug(()=>{console.log(`(Strict) Removing uncertain time component: ${t} (${t.end})`)}),!1)}}St.default=kt;var $t={};Object.defineProperty($t,"__esModule",{value:!0});const jt=J,Yt=new RegExp("([0-9]{4})\\-([0-9]{1,2})\\-([0-9]{1,2})(?:T([0-9]{1,2}):([0-9]{1,2})(?::([0-9]{1,2})(?:\\.(\\d{1,4}))?)?(?:Z|([+-]\\d{2}):?(\\d{2})?)?)?(?=\\W|$)","i");class Bt extends jt.AbstractParserWithWordBoundaryChecking{innerPattern(){return Yt}innerExtract(e,t){const n={};if(n.year=parseInt(t[1]),n.month=parseInt(t[2]),n.day=parseInt(t[3]),null!=t[4])if(n.hour=parseInt(t[4]),n.minute=parseInt(t[5]),null!=t[6]&&(n.second=parseInt(t[6])),null!=t[7]&&(n.millisecond=parseInt(t[7])),null==t[8])n.timezoneOffset=0;else{const e=parseInt(t[8]);let r=0;null!=t[9]&&(r=parseInt(t[9]));let a=60*e;a<0?a-=r:a+=r,n.timezoneOffset=a}return n}}$t.default=Bt;var Ft={};Object.defineProperty(Ft,"__esModule",{value:!0});const Ut=ot;class Lt extends Ut.MergingRefiner{mergeResults(e,t,n){const r=n.clone();return r.index=t.index,r.text=t.text+e+r.text,r.start.assign("weekday",t.start.get("weekday")),r.end&&r.end.assign("weekday",t.start.get("weekday")),r}shouldMergeResults(e,t,n){return t.start.isOnlyWeekdayComponent()&&!t.start.isCertain("hour")&&n.start.isCertain("day")&&null!=e.match(/^,?\s*$/)}}Ft.default=Lt;var zt=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(bt,"__esModule",{value:!0}),bt.includeCommonConfiguration=void 0;const Ht=zt(Ct),Vt=zt(Dt),Kt=zt(Nt),Gt=zt(Rt),qt=zt(St),Zt=zt($t),Jt=zt(Ft);bt.includeCommonConfiguration=function(e,t=!1){return e.parsers.unshift(new Zt.default),e.refiners.unshift(new Jt.default),e.refiners.unshift(new Ht.default),e.refiners.unshift(new Vt.default),e.refiners.unshift(new Kt.default),e.refiners.push(new Kt.default),e.refiners.push(new Gt.default),e.refiners.push(new qt.default(t)),e};var Qt={},Xt={},en=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Xt,"__esModule",{value:!0}),Xt.tonight=Xt.tomorrow=Xt.yesterday=Xt.today=Xt.now=void 0;const tn=k,nn=en(R.exports),rn=j,an=b;Xt.now=function(e){const t=nn.default(e.instant),n=new tn.ParsingComponents(e,{});return rn.assignSimilarDate(n,t),rn.assignSimilarTime(n,t),null!==e.timezoneOffset&&n.assign("timezoneOffset",t.utcOffset()),n},Xt.today=function(e){const t=nn.default(e.instant),n=new tn.ParsingComponents(e,{});return rn.assignSimilarDate(n,t),rn.implySimilarTime(n,t),n},Xt.yesterday=function(e){let t=nn.default(e.instant);const n=new tn.ParsingComponents(e,{});return t=t.add(-1,"day"),rn.assignSimilarDate(n,t),rn.implySimilarTime(n,t),n},Xt.tomorrow=function(e){const t=nn.default(e.instant),n=new tn.ParsingComponents(e,{});return rn.assignTheNextDay(n,t),n},Xt.tonight=function(e,t=22){const n=nn.default(e.instant),r=new tn.ParsingComponents(e,{});return r.imply("hour",t),r.imply("meridiem",an.Meridiem.PM),rn.assignSimilarDate(r,n),r};var sn=P&&P.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),on=P&&P.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),un=P&&P.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&sn(t,e,n);return on(t,e),t},dn=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Qt,"__esModule",{value:!0});const ln=dn(R.exports),cn=J,mn=j,fn=un(Xt),hn=/(now|today|tonight|tomorrow|tmr|tmrw|yesterday|last\s*night)(?=\W|$)/i;class pn extends cn.AbstractParserWithWordBoundaryChecking{innerPattern(e){return hn}innerExtract(e,t){let n=ln.default(e.refDate);const r=t[0].toLowerCase(),a=e.createParsingComponents();switch(r){case"now":return fn.now(e.reference);case"today":return fn.today(e.reference);case"yesterday":return fn.yesterday(e.reference);case"tomorrow":case"tmr":case"tmrw":return fn.tomorrow(e.reference);case"tonight":return fn.tonight(e.reference);default:r.match(/last\s*night/)&&(n.hour()>6&&(n=n.add(-1,"day")),mn.assignSimilarDate(a,n),a.imply("hour",0))}return a}}Qt.default=pn;var gn={},yn=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(gn,"__esModule",{value:!0});const Tn=b,_n=J,Mn=yn(R.exports),wn=j,Pn=/(?:this)?\s{0,3}(morning|afternoon|evening|night|midnight|noon)(?=\W|$)/i;class vn extends _n.AbstractParserWithWordBoundaryChecking{innerPattern(){return Pn}innerExtract(e,t){const n=Mn.default(e.refDate),r=e.createParsingComponents();switch(t[1].toLowerCase()){case"afternoon":r.imply("meridiem",Tn.Meridiem.PM),r.imply("hour",15);break;case"evening":case"night":r.imply("meridiem",Tn.Meridiem.PM),r.imply("hour",20);break;case"midnight":wn.assignTheNextDay(r,n),r.imply("hour",0),r.imply("minute",0),r.imply("second",0);break;case"morning":r.imply("meridiem",Tn.Meridiem.AM),r.imply("hour",6);break;case"noon":r.imply("meridiem",Tn.Meridiem.AM),r.imply("hour",12)}return r}}gn.default=vn;var bn={},Cn={},An=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Cn,"__esModule",{value:!0}),Cn.toDayJSClosestWeekday=Cn.toDayJSWeekday=void 0;const En=An(R.exports);function Dn(e,t){let n=En.default(e);const r=n.day();return n=Math.abs(t-7-r)0?r[0].start.date():null}parse(e,t,n){const r=new Vn(e,t,n);let a=[];return this.parsers.forEach(e=>{const t=Hn.executeParser(r,e);a=a.concat(t)}),a.sort((e,t)=>e.index-t.index),this.refiners.forEach(function(e){a=e.refine(r,a)}),a}static executeParser(e,t){const n=[],r=t.pattern(e),a=e.text;let s=e.text,i=r.exec(s);for(;i;){const o=i.index+a.length-s.length;i.index=o;const u=t.extract(e,i);if(!u){s=a.substring(i.index+1),i=r.exec(s);continue}let d=null;u instanceof Ln.ParsingResult?d=u:u instanceof Ln.ParsingComponents?(d=e.createParsingResult(i.index,i[0]),d.start=u):d=e.createParsingResult(i.index,i[0],u),e.debug(()=>console.log(`${t.constructor.name} extracted result ${d}`)),n.push(d),s=a.substring(o+d.text.length),i=r.exec(s)}return n}}Un.Chrono=Hn;class Vn{constructor(e,t,n){this.text=e,this.reference=new Ln.ReferenceWithTimezone(t),this.option=null!=n?n:{},this.refDate=this.reference.instant}createParsingComponents(e){return e instanceof Ln.ParsingComponents?e:new Ln.ParsingComponents(this.reference,e)}createParsingResult(e,t,n,r){const a="string"==typeof t?t:this.text.substring(e,t),s=n?this.createParsingComponents(n):null,i=r?this.createParsingComponents(r):null;return new Ln.ParsingResult(this.reference,e,a,s,i)}debug(e){if(this.option.debug)if(this.option.debug instanceof Function)this.option.debug(e);else{this.option.debug.debug(e)}}}Un.ParsingContext=Vn;var Kn={};Object.defineProperty(Kn,"__esModule",{value:!0});const Gn=N,qn=new RegExp("([^\\d]|^)([0-3]{0,1}[0-9]{1})[\\/\\.\\-]([0-3]{0,1}[0-9]{1})(?:[\\/\\.\\-]([0-9]{4}|[0-9]{2}))?(\\W|$)","i");Kn.default=class{constructor(e){this.groupNumberMonth=e?3:2,this.groupNumberDay=e?2:3}pattern(){return qn}extract(e,t){if("/"==t[1]||"/"==t[5])return void(t.index+=t[0].length);const n=t.index+t[1].length,r=t[0].substr(t[1].length,t[0].length-t[1].length-t[5].length);if(r.match(/^\d\.\d$/)||r.match(/^\d\.\d{1,2}\.\d{1,2}\s*$/))return;if(!t[4]&&t[0].indexOf("/")<0)return;const a=e.createParsingResult(n,r);let s=parseInt(t[this.groupNumberMonth]),i=parseInt(t[this.groupNumberDay]);if((s<1||s>12)&&s>12){if(!(i>=1&&i<=12&&s<=31))return null;[i,s]=[s,i]}if(i<1||i>31)return null;if(a.start.assign("day",i),a.start.assign("month",s),t[4]){const e=parseInt(t[4]),n=Gn.findMostLikelyADYear(e);a.start.assign("year",n)}else{const t=Gn.findYearClosestToRef(e.refDate,i,s);a.start.imply("year",t)}return a}};var Zn={};Object.defineProperty(Zn,"__esModule",{value:!0});const Jn=E,Qn=k,Xn=J,er=ze,tr=new RegExp(`(this|last|past|next|\\+|-)\\s*(${Jn.TIME_UNITS_PATTERN})(?=\\W|$)`,"i");class nr extends Xn.AbstractParserWithWordBoundaryChecking{innerPattern(){return tr}innerExtract(e,t){const n=t[1].toLowerCase();let r=Jn.parseTimeUnits(t[2]);switch(n){case"last":case"past":case"-":r=er.reverseTimeUnits(r)}return Qn.ParsingComponents.createRelativeFromReference(e.reference,r)}}Zn.default=nr,function(e){var t=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.createConfiguration=e.createCasualConfiguration=e.parseDate=e.parse=e.GB=e.strict=e.casual=void 0;const n=t(A),r=t(ae),a=t(fe),s=t(we),i=t(De),o=t(Ie),u=t($e),d=t(Le),l=t(Qe),c=t(st),m=t(ft),f=bt,h=t(Qt),p=t(gn),g=t(bn),y=t(Sn),T=Un,_=t(Kn),M=t(Zn);function w(e=!1){const t=v(!1,e);return t.parsers.unshift(new h.default),t.parsers.unshift(new p.default),t.parsers.unshift(new s.default),t.parsers.unshift(new y.default),t.parsers.unshift(new M.default),t}function v(e=!0,t=!1){return f.includeCommonConfiguration({parsers:[new _.default(t),new n.default,new r.default,new a.default,new g.default,new i.default,new o.default,new u.default(e),new d.default(e),new l.default(e)],refiners:[new m.default,new c.default]},e)}e.casual=new T.Chrono(w(!1)),e.strict=new T.Chrono(v(!0,!1)),e.GB=new T.Chrono(v(!1,!0)),e.parse=function(t,n,r){return e.casual.parse(t,n,r)},e.parseDate=function(t,n,r){return e.casual.parseDate(t,n,r)},e.createCasualConfiguration=w,e.createConfiguration=v}(C);var rr={},ar={};Object.defineProperty(ar,"__esModule",{value:!0});const sr=je,ir=b;class or extends sr.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:um|von)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\–|\\~|\\〜|bis)\\s*"}primarySuffix(){return"(?:\\s*uhr)?(?:\\s*(?:morgens|vormittags|nachmittags|abends|nachts))?(?=\\W|$)"}extractPrimaryTimeComponents(e,t){const n=super.extractPrimaryTimeComponents(e,t);if(n){if(t[0].endsWith("morgens")||t[0].endsWith("vormittags")){n.assign("meridiem",ir.Meridiem.AM);n.get("hour")<12&&n.assign("hour",n.get("hour"))}if(t[0].endsWith("nachmittags")||t[0].endsWith("abends")||t[0].endsWith("nachts")){n.assign("meridiem",ir.Meridiem.PM);n.get("hour")<12&&n.assign("hour",n.get("hour")+12)}}return n}}ar.default=or;var ur={},dr={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.parseTimeUnits=e.TIME_UNITS_PATTERN=e.parseYear=e.YEAR_PATTERN=e.parseNumberPattern=e.NUMBER_PATTERN=e.TIME_UNIT_DICTIONARY=e.INTEGER_WORD_DICTIONARY=e.MONTH_DICTIONARY=e.WEEKDAY_DICTIONARY=void 0;const t=D,n=N;function r(t){const n=t.toLowerCase();return void 0!==e.INTEGER_WORD_DICTIONARY[n]?e.INTEGER_WORD_DICTIONARY[n]:"a"===n||"an"===n?1:n.match(/few/)?3:n.match(/half/)?.5:n.match(/couple/)?2:n.match(/several/)?7:parseFloat(n)}e.WEEKDAY_DICTIONARY={sonntag:0,so:0,montag:1,mo:1,dienstag:2,di:2,mittwoch:3,mi:3,donnerstag:4,do:4,freitag:5,fr:5,samstag:6,sa:6},e.MONTH_DICTIONARY={januar:1,jan:1,"jan.":1,februar:2,feb:2,"feb.":2,"märz":3,maerz:3,"mär":3,"mär.":3,mrz:3,"mrz.":3,april:4,apr:4,"apr.":4,mai:5,juni:6,jun:6,"jun.":6,juli:7,jul:7,"jul.":7,august:8,aug:8,"aug.":8,september:9,sep:9,"sep.":9,sept:9,"sept.":9,oktober:10,okt:10,"okt.":10,november:11,nov:11,"nov.":11,dezember:12,dez:12,"dez.":12},e.INTEGER_WORD_DICTIONARY={eins:1,zwei:2,drei:3,vier:4,"fünf":5,fuenf:5,sechs:6,sieben:7,acht:8,neun:9,zehn:10,elf:11,"zwölf":12,zwoelf:12},e.TIME_UNIT_DICTIONARY={sec:"second",second:"second",seconds:"second",min:"minute",mins:"minute",minute:"minute",minutes:"minute",h:"hour",hr:"hour",hrs:"hour",hour:"hour",hours:"hour",day:"d",days:"d",week:"week",weeks:"week",month:"month",months:"month",y:"year",yr:"year",year:"year",years:"year"},e.NUMBER_PATTERN=`(?:${t.matchAnyPattern(e.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|half(?:\\s*an?)?|an?\\b(?:\\s*few)?|few|several|a?\\s*couple\\s*(?:of)?)`,e.parseNumberPattern=r,e.YEAR_PATTERN="(?:[0-9]{1,4}(?:\\s*[vn]\\.?\\s*C(?:hr)?\\.?)?)",e.parseYear=function(e){if(/v/i.test(e))return-parseInt(e.replace(/[^0-9]+/gi,""));if(/n/i.test(e))return parseInt(e.replace(/[^0-9]+/gi,""));const t=parseInt(e);return n.findMostLikelyADYear(t)};const a=`(${e.NUMBER_PATTERN})\\s{0,5}(${t.matchAnyPattern(e.TIME_UNIT_DICTIONARY)})\\s{0,5}`,s=new RegExp(a,"i");function i(t,n){const a=r(n[1]);t[e.TIME_UNIT_DICTIONARY[n[2].toLowerCase()]]=a}e.TIME_UNITS_PATTERN=t.repeatedTimeunitPattern("",a),e.parseTimeUnits=function(e){const t={};let n=e,r=s.exec(n);for(;r;)i(t,r),n=n.substring(r[0].length),r=s.exec(n);return t}}(dr),Object.defineProperty(ur,"__esModule",{value:!0});const lr=dr,cr=J,mr=Cn,fr=new RegExp(`(?:(?:\\,|\\(|\\()\\s*)?(?:a[mn]\\s*?)?(?:(diese[mn]|letzte[mn]|n(?:ä|ae)chste[mn])\\s*)?(${D.matchAnyPattern(lr.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\)))?(?:\\s*(diese|letzte|n(?:ä|ae)chste)\\s*woche)?(?=\\W|$)`,"i");class hr extends cr.AbstractParserWithWordBoundaryChecking{innerPattern(){return fr}innerExtract(e,t){const n=t[2].toLowerCase(),r=lr.WEEKDAY_DICTIONARY[n],a=t[1],s=t[3];let i=a||s;i=i||"",i=i.toLowerCase();let o=null;i.match(/letzte/)?o="last":i.match(/chste/)?o="next":i.match(/diese/)&&(o="this");const u=mr.toDayJSWeekday(e.refDate,r,o);return e.createParsingComponents().assign("weekday",r).imply("day",u.date()).imply("month",u.month()+1).imply("year",u.year())}}ur.default=hr;var pr={},gr=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(pr,"__esModule",{value:!0});const yr=gr(it);class Tr extends yr.default{patternBetween(){return/^\s*(bis(?:\s*(?:am|zum))?|-)\s*$/i}}pr.default=Tr;var _r={},Mr=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_r,"__esModule",{value:!0});const wr=Mr(ht);class Pr extends wr.default{patternBetween(){return new RegExp("^\\s*(T|um|am|,|-)?\\s*$")}}_r.default=Pr;var vr={},br={},Cr=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(br,"__esModule",{value:!0});const Ar=Cr(R.exports),Er=b,Dr=J,Or=j,Nr=ze;class Rr extends Dr.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(diesen)?\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht)(?=\W|$)/i}innerExtract(e,t){const n=Ar.default(e.refDate),r=t[2].toLowerCase(),a=e.createParsingComponents();return Or.implySimilarTime(a,n),Rr.extractTimeComponents(a,r)}static extractTimeComponents(e,t){switch(t){case"morgen":e.imply("hour",6),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Er.Meridiem.AM);break;case"vormittag":e.imply("hour",9),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Er.Meridiem.AM);break;case"mittag":case"mittags":e.imply("hour",12),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Er.Meridiem.AM);break;case"nachmittag":e.imply("hour",15),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Er.Meridiem.PM);break;case"abend":e.imply("hour",18),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Er.Meridiem.PM);break;case"nacht":e.imply("hour",22),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Er.Meridiem.PM);break;case"mitternacht":e.get("hour")>1&&(e=Nr.addImpliedTimeUnits(e,{day:1})),e.imply("hour",0),e.imply("minute",0),e.imply("second",0),e.imply("meridiem",Er.Meridiem.AM)}return e}}br.default=Rr;var xr=P&&P.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),Ir=P&&P.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Sr=P&&P.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&xr(t,e,n);return Ir(t,e),t},Wr=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(vr,"__esModule",{value:!0});const kr=Wr(R.exports),$r=J,jr=j,Yr=Wr(br),Br=Sr(Xt),Fr=new RegExp("(jetzt|heute|morgen|übermorgen|uebermorgen|gestern|vorgestern|letzte\\s*nacht)(?:\\s*(morgen|vormittag|mittags?|nachmittag|abend|nacht|mitternacht))?(?=\\W|$)","i");class Ur extends $r.AbstractParserWithWordBoundaryChecking{innerPattern(e){return Fr}innerExtract(e,t){let n=kr.default(e.refDate);const r=(t[1]||"").toLowerCase(),a=(t[2]||"").toLowerCase();let s=e.createParsingComponents();switch(r){case"jetzt":s=Br.now(e.reference);break;case"heute":s=Br.today(e.reference);break;case"morgen":jr.assignTheNextDay(s,n);break;case"übermorgen":case"uebermorgen":n=n.add(1,"day"),jr.assignTheNextDay(s,n);break;case"gestern":n=n.add(-1,"day"),jr.assignSimilarDate(s,n),jr.implySimilarTime(s,n);break;case"vorgestern":n=n.add(-2,"day"),jr.assignSimilarDate(s,n),jr.implySimilarTime(s,n);break;default:r.match(/letzte\s*nacht/)&&(n.hour()>6&&(n=n.add(-1,"day")),jr.assignSimilarDate(s,n),s.imply("hour",0))}return a&&(s=Yr.default.extractTimeComponents(s,a)),s}}vr.default=Ur;var Lr={};Object.defineProperty(Lr,"__esModule",{value:!0});const zr=N,Hr=dr,Vr=dr,Kr=J,Gr=new RegExp(`(?:am\\s*?)?(?:den\\s*?)?([0-9]{1,2})\\.(?:\\s*(?:bis(?:\\s*(?:am|zum))?|\\-|\\–|\\s)\\s*([0-9]{1,2})\\.?)?\\s*(${D.matchAnyPattern(Hr.MONTH_DICTIONARY)})(?:(?:-|/|,?\\s*)(${Vr.YEAR_PATTERN}(?![^\\s]\\d)))?(?=\\W|$)`,"i");class qr extends Kr.AbstractParserWithWordBoundaryChecking{innerPattern(){return Gr}innerExtract(e,t){const n=e.createParsingResult(t.index,t[0]),r=Hr.MONTH_DICTIONARY[t[3].toLowerCase()],a=parseInt(t[1]);if(a>31)return t.index=t.index+t[1].length,null;if(n.start.assign("month",r),n.start.assign("day",a),t[4]){const e=Vr.parseYear(t[4]);n.start.assign("year",e)}else{const t=zr.findYearClosestToRef(e.refDate,a,r);n.start.imply("year",t)}if(t[2]){const e=parseInt(t[2]);n.end=n.start.clone(),n.end.assign("day",e)}return n}}Lr.default=qr,function(e){var t=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.createConfiguration=e.createCasualConfiguration=e.parseDate=e.parse=e.strict=e.casual=void 0;const n=bt,r=Un,a=t(Kn),s=t($t),i=t(ar),o=t(ur),u=t(pr),d=t(_r),l=t(vr),c=t(br),m=t(Lr);function f(e=!0){const t=h(!1,e);return t.parsers.unshift(new c.default),t.parsers.unshift(new l.default),t}function h(e=!0,t=!0){return n.includeCommonConfiguration({parsers:[new s.default,new a.default(t),new i.default,new m.default,new o.default],refiners:[new u.default,new d.default]},e)}e.casual=new r.Chrono(f()),e.strict=new r.Chrono(h(!0)),e.parse=function(t,n,r){return e.casual.parse(t,n,r)},e.parseDate=function(t,n,r){return e.casual.parseDate(t,n,r)},e.createCasualConfiguration=f,e.createConfiguration=h}(rr);var Zr={},Jr={},Qr=P&&P.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),Xr=P&&P.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),ea=P&&P.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Qr(t,e,n);return Xr(t,e),t},ta=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Jr,"__esModule",{value:!0});const na=ta(R.exports),ra=b,aa=J,sa=j,ia=ea(Xt);class oa extends aa.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(maintenant|aujourd'hui|demain|hier|cette\s*nuit|la\s*veille)(?=\W|$)/i}innerExtract(e,t){let n=na.default(e.refDate);const r=t[0].toLowerCase(),a=e.createParsingComponents();switch(r){case"maintenant":return ia.now(e.reference);case"aujourd'hui":return ia.today(e.reference);case"hier":return ia.yesterday(e.reference);case"demain":return ia.tomorrow(e.reference);default:r.match(/cette\s*nuit/)?(sa.assignSimilarDate(a,n),a.imply("hour",22),a.imply("meridiem",ra.Meridiem.PM)):r.match(/la\s*veille/)&&(n=n.add(-1,"day"),sa.assignSimilarDate(a,n),a.imply("hour",0))}return a}}Jr.default=oa;var ua={};Object.defineProperty(ua,"__esModule",{value:!0});const da=b,la=J;class ca extends la.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(cet?)?\s*(matin|soir|après-midi|aprem|a midi|à minuit)(?=\W|$)/i}innerExtract(e,t){const n=t[2].toLowerCase(),r=e.createParsingComponents();switch(n){case"après-midi":case"aprem":r.imply("hour",14),r.imply("minute",0),r.imply("meridiem",da.Meridiem.PM);break;case"soir":r.imply("hour",18),r.imply("minute",0),r.imply("meridiem",da.Meridiem.PM);break;case"matin":r.imply("hour",8),r.imply("minute",0),r.imply("meridiem",da.Meridiem.AM);break;case"a midi":r.imply("hour",12),r.imply("minute",0),r.imply("meridiem",da.Meridiem.AM);break;case"à minuit":r.imply("hour",0),r.imply("meridiem",da.Meridiem.AM)}return r}}ua.default=ca;var ma={};Object.defineProperty(ma,"__esModule",{value:!0});const fa=je;class ha extends fa.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:[àa])\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\–|\\~|\\〜|[àa]|\\?)\\s*"}extractPrimaryTimeComponents(e,t){return t[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(e,t)}}ma.default=ha;var pa={},ga=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(pa,"__esModule",{value:!0});const ya=ga(ht);class Ta extends ya.default{patternBetween(){return new RegExp("^\\s*(T|à|a|vers|de|,|-)?\\s*$")}}pa.default=Ta;var _a={},Ma=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(_a,"__esModule",{value:!0});const wa=Ma(it);class Pa extends wa.default{patternBetween(){return/^\s*(à|a|-)\s*$/i}}_a.default=Pa;var va={},ba={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.parseTimeUnits=e.TIME_UNITS_PATTERN=e.parseYear=e.YEAR_PATTERN=e.parseOrdinalNumberPattern=e.ORDINAL_NUMBER_PATTERN=e.parseNumberPattern=e.NUMBER_PATTERN=e.TIME_UNIT_DICTIONARY=e.INTEGER_WORD_DICTIONARY=e.MONTH_DICTIONARY=e.WEEKDAY_DICTIONARY=void 0;const t=D;function n(t){const n=t.toLowerCase();return void 0!==e.INTEGER_WORD_DICTIONARY[n]?e.INTEGER_WORD_DICTIONARY[n]:"une"===n||"un"===n?1:n.match(/quelques?/)?3:n.match(/demi-?/)?.5:parseFloat(n)}e.WEEKDAY_DICTIONARY={dimanche:0,dim:0,lundi:1,lun:1,mardi:2,mar:2,mercredi:3,mer:3,jeudi:4,jeu:4,vendredi:5,ven:5,samedi:6,sam:6},e.MONTH_DICTIONARY={janvier:1,jan:1,"jan.":1,"février":2,"fév":2,"fév.":2,fevrier:2,fev:2,"fev.":2,mars:3,mar:3,"mar.":3,avril:4,avr:4,"avr.":4,mai:5,juin:6,jun:6,juillet:7,juil:7,jul:7,"jul.":7,"août":8,aout:8,septembre:9,sep:9,"sep.":9,sept:9,"sept.":9,octobre:10,oct:10,"oct.":10,novembre:11,nov:11,"nov.":11,"décembre":12,decembre:12,dec:12,"dec.":12},e.INTEGER_WORD_DICTIONARY={un:1,deux:2,trois:3,quatre:4,cinq:5,six:6,sept:7,huit:8,neuf:9,dix:10,onze:11,douze:12,treize:13},e.TIME_UNIT_DICTIONARY={sec:"second",seconde:"second",secondes:"second",min:"minute",mins:"minute",minute:"minute",minutes:"minute",h:"hour",hr:"hour",hrs:"hour",heure:"hour",heures:"hour",jour:"d",jours:"d",semaine:"week",semaines:"week",mois:"month",trimestre:"quarter",trimestres:"quarter",ans:"year","année":"year","années":"year"},e.NUMBER_PATTERN=`(?:${t.matchAnyPattern(e.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+\\.[0-9]+|une?\\b|quelques?|demi-?)`,e.parseNumberPattern=n,e.ORDINAL_NUMBER_PATTERN="(?:[0-9]{1,2}(?:er)?)",e.parseOrdinalNumberPattern=function(e){let t=e.toLowerCase();return t=t.replace(/(?:er)$/i,""),parseInt(t)},e.YEAR_PATTERN="(?:[1-9][0-9]{0,3}\\s*(?:AC|AD|p\\.\\s*C(?:hr?)?\\.\\s*n\\.)|[1-2][0-9]{3}|[5-9][0-9])",e.parseYear=function(e){if(/AC/i.test(e))return e=e.replace(/BC/i,""),-parseInt(e);if(/AD/i.test(e)||/C/i.test(e))return e=e.replace(/[^\d]+/i,""),parseInt(e);let t=parseInt(e);return t<100&&(t+=t>50?1900:2e3),t};const r=`(${e.NUMBER_PATTERN})\\s{0,5}(${t.matchAnyPattern(e.TIME_UNIT_DICTIONARY)})\\s{0,5}`,a=new RegExp(r,"i");function s(t,r){const a=n(r[1]);t[e.TIME_UNIT_DICTIONARY[r[2].toLowerCase()]]=a}e.TIME_UNITS_PATTERN=t.repeatedTimeunitPattern("",r),e.parseTimeUnits=function(e){const t={};let n=e,r=a.exec(n);for(;r;)s(t,r),n=n.substring(r[0].length),r=a.exec(n);return t}}(ba),Object.defineProperty(va,"__esModule",{value:!0});const Ca=ba,Aa=J,Ea=Cn,Da=new RegExp(`(?:(?:\\,|\\(|\\()\\s*)?(?:(?:ce)\\s*)?(${D.matchAnyPattern(Ca.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\)))?(?:\\s*(dernier|prochain)\\s*)?(?=\\W|\\d|$)`,"i");class Oa extends Aa.AbstractParserWithWordBoundaryChecking{innerPattern(){return Da}innerExtract(e,t){const n=t[1].toLowerCase(),r=Ca.WEEKDAY_DICTIONARY[n];if(void 0===r)return null;let a=t[2];a=a||"",a=a.toLowerCase();let s=null;"dernier"==a?s="last":"prochain"==a&&(s="next");const i=Ea.toDayJSWeekday(e.refDate,r,s);return e.createParsingComponents().assign("weekday",r).imply("day",i.date()).imply("month",i.month()+1).imply("year",i.year())}}va.default=Oa;var Na={};Object.defineProperty(Na,"__esModule",{value:!0});const Ra=b,xa=new RegExp("(^|\\s|T)(?:(?:[àa])\\s*)?(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s|:)?)?(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?(?=\\W|$)","i"),Ia=new RegExp("^\\s*(\\-|\\–|\\~|\\〜|[àa]|\\?)\\s*(\\d{1,2})(?:h|:)?(?:(\\d{1,2})(?:m|:)?)?(?:(\\d{1,2})(?:s|:)?)?(?:\\s*(A\\.M\\.|P\\.M\\.|AM?|PM?))?(?=\\W|$)","i");class Sa{pattern(e){return xa}extract(e,t){const n=e.createParsingResult(t.index+t[1].length,t[0].substring(t[1].length));if(n.text.match(/^\d{4}$/))return t.index+=t[0].length,null;if(n.start=Sa.extractTimeComponent(n.start.clone(),t),!n.start)return t.index+=t[0].length,null;const r=e.text.substring(t.index+t[0].length),a=Ia.exec(r);return a&&(n.end=Sa.extractTimeComponent(n.start.clone(),a),n.end&&(n.text+=a[0])),n}static extractTimeComponent(e,t){let n=0,r=0,a=null;if(n=parseInt(t[2]),null!=t[3]&&(r=parseInt(t[3])),r>=60||n>24)return null;if(n>=12&&(a=Ra.Meridiem.PM),null!=t[5]){if(n>12)return null;const e=t[5][0].toLowerCase();"a"==e&&(a=Ra.Meridiem.AM,12==n&&(n=0)),"p"==e&&(a=Ra.Meridiem.PM,12!=n&&(n+=12))}if(e.assign("hour",n),e.assign("minute",r),null!==a?e.assign("meridiem",a):n<12?e.imply("meridiem",Ra.Meridiem.AM):e.imply("meridiem",Ra.Meridiem.PM),null!=t[4]){const n=parseInt(t[4]);if(n>=60)return null;e.assign("second",n)}return e}}Na.default=Sa;var Wa={};Object.defineProperty(Wa,"__esModule",{value:!0});const ka=N,$a=ba,ja=ba,Ya=ba,Ba=D,Fa=J,Ua=new RegExp(`(?:on\\s*?)?(${Ya.ORDINAL_NUMBER_PATTERN})(?:\\s*(?:au|\\-|\\–|jusqu'au?|\\s)\\s*(${Ya.ORDINAL_NUMBER_PATTERN}))?(?:-|/|\\s*(?:de)?\\s*)(${Ba.matchAnyPattern($a.MONTH_DICTIONARY)})(?:(?:-|/|,?\\s*)(${ja.YEAR_PATTERN}(?![^\\s]\\d)))?(?=\\W|$)`,"i");class La extends Fa.AbstractParserWithWordBoundaryChecking{innerPattern(){return Ua}innerExtract(e,t){const n=e.createParsingResult(t.index,t[0]),r=$a.MONTH_DICTIONARY[t[3].toLowerCase()],a=Ya.parseOrdinalNumberPattern(t[1]);if(a>31)return t.index=t.index+t[1].length,null;if(n.start.assign("month",r),n.start.assign("day",a),t[4]){const e=ja.parseYear(t[4]);n.start.assign("year",e)}else{const t=ka.findYearClosestToRef(e.refDate,a,r);n.start.imply("year",t)}if(t[2]){const e=Ya.parseOrdinalNumberPattern(t[2]);n.end=n.start.clone(),n.end.assign("day",e)}return n}}Wa.default=La;var za={};Object.defineProperty(za,"__esModule",{value:!0});const Ha=ba,Va=k,Ka=J,Ga=ze;class qa extends Ka.AbstractParserWithWordBoundaryChecking{constructor(){super()}innerPattern(){return new RegExp(`il y a\\s*(${Ha.TIME_UNITS_PATTERN})(?=(?:\\W|$))`,"i")}innerExtract(e,t){const n=Ha.parseTimeUnits(t[1]),r=Ga.reverseTimeUnits(n);return Va.ParsingComponents.createRelativeFromReference(e.reference,r)}}za.default=qa;var Za={};Object.defineProperty(Za,"__esModule",{value:!0});const Ja=ba,Qa=k,Xa=J;class es extends Xa.AbstractParserWithWordBoundaryChecking{innerPattern(){return new RegExp(`(?:dans|en|pour|pendant)\\s*(${Ja.TIME_UNITS_PATTERN})(?=\\W|$)`,"i")}innerExtract(e,t){const n=Ja.parseTimeUnits(t[1]);return Qa.ParsingComponents.createRelativeFromReference(e.reference,n)}}Za.default=es;var ts={};Object.defineProperty(ts,"__esModule",{value:!0});const ns=ba,rs=k,as=J,ss=ze,is=D;class os extends as.AbstractParserWithWordBoundaryChecking{constructor(){super()}innerPattern(){return new RegExp(`(?:les?|la|l'|du|des?)\\s*(${ns.NUMBER_PATTERN})?(?:\\s*(prochaine?s?|derni[eè]re?s?|pass[ée]e?s?|pr[ée]c[ée]dents?|suivante?s?))?\\s*(${is.matchAnyPattern(ns.TIME_UNIT_DICTIONARY)})(?:\\s*(prochaine?s?|derni[eè]re?s?|pass[ée]e?s?|pr[ée]c[ée]dents?|suivante?s?))?`,"i")}innerExtract(e,t){const n=t[1]?ns.parseNumberPattern(t[1]):1;let r={};r[ns.TIME_UNIT_DICTIONARY[t[3].toLowerCase()]]=n;let a=t[2]||t[4]||"";if(a=a.toLowerCase(),a)return(/derni[eè]re?s?/.test(a)||/pass[ée]e?s?/.test(a)||/pr[ée]c[ée]dents?/.test(a))&&(r=ss.reverseTimeUnits(r)),rs.ParsingComponents.createRelativeFromReference(e.reference,r)}}ts.default=os,function(e){var t=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.createConfiguration=e.createCasualConfiguration=e.parseDate=e.parse=e.strict=e.casual=void 0;const n=bt,r=Un,a=t(Jr),s=t(ua),i=t(Kn),o=t(ma),u=t(pa),d=t(_a),l=t(va),c=t(Na),m=t(Wa),f=t(za),h=t(Za),p=t(ts);function g(e=!0){const t=y(!1,e);return t.parsers.unshift(new a.default),t.parsers.unshift(new s.default),t.parsers.unshift(new p.default),t}function y(e=!0,t=!0){return n.includeCommonConfiguration({parsers:[new i.default(t),new m.default,new o.default,new c.default,new f.default,new h.default,new l.default],refiners:[new u.default,new d.default]},e)}e.casual=new r.Chrono(g()),e.strict=new r.Chrono(y(!0)),e.parse=function(t,n,r){return e.casual.parse(t,n,r)},e.parseDate=function(t,n,r){return e.casual.parseDate(t,n,r)},e.createCasualConfiguration=g,e.createConfiguration=y}(Zr);var us={},ds={},ls={};function cs(e){return String.fromCharCode(e.charCodeAt(0)-65248)}Object.defineProperty(ls,"__esModule",{value:!0}),ls.toHankaku=void 0,ls.toHankaku=function(e){return String(e).replace(/\u2019/g,"'").replace(/\u201D/g,'"').replace(/\u3000/g," ").replace(/\uFFE5/g,"¥").replace(/[\uFF01\uFF03-\uFF06\uFF08\uFF09\uFF0C-\uFF19\uFF1C-\uFF1F\uFF21-\uFF3B\uFF3D\uFF3F\uFF41-\uFF5B\uFF5D\uFF5E]/g,cs)};var ms=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ds,"__esModule",{value:!0});const fs=ls,hs=N,ps=ms(R.exports),gs=/(?:(?:([同今本])|((昭和|平成|令和)?([0-90-9]{1,4}|元)))年\s*)?([0-90-9]{1,2})月\s*([0-90-9]{1,2})日/i;ds.default=class{pattern(){return gs}extract(e,t){const n=parseInt(fs.toHankaku(t[5])),r=parseInt(fs.toHankaku(t[6])),a=e.createParsingComponents({day:r,month:n});if(t[1]&&t[1].match("同|今|本")){const t=ps.default(e.refDate);a.assign("year",t.year())}if(t[2]){const e=t[4];let n="元"==e?1:parseInt(fs.toHankaku(e));"令和"==t[3]?n+=2018:"平成"==t[3]?n+=1988:"昭和"==t[3]&&(n+=1925),a.assign("year",n)}else{const t=hs.findYearClosestToRef(e.refDate,r,n);a.imply("year",t)}return a}};var ys={},Ts=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ys,"__esModule",{value:!0});const _s=Ts(it);class Ms extends _s.default{patternBetween(){return/^\s*(から|ー|-)\s*$/i}}ys.default=Ms;var ws={},Ps=P&&P.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),vs=P&&P.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),bs=P&&P.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Ps(t,e,n);return vs(t,e),t},Cs=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(ws,"__esModule",{value:!0});const As=Cs(R.exports),Es=b,Ds=bs(Xt),Os=/今日|当日|昨日|明日|今夜|今夕|今晩|今朝/i;ws.default=class{pattern(){return Os}extract(e,t){const n=t[0],r=As.default(e.refDate),a=e.createParsingComponents();switch(n){case"昨日":return Ds.yesterday(e.reference);case"明日":return Ds.tomorrow(e.reference);case"今日":case"当日":return Ds.today(e.reference)}return"今夜"==n||"今夕"==n||"今晩"==n?(a.imply("hour",22),a.assign("meridiem",Es.Meridiem.PM)):n.match("今朝")&&(a.imply("hour",6),a.assign("meridiem",Es.Meridiem.AM)),a.assign("day",r.date()),a.assign("month",r.month()+1),a.assign("year",r.year()),a}},function(e){var t=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.createConfiguration=e.createCasualConfiguration=e.parseDate=e.parse=e.strict=e.casual=void 0;const n=t(ds),r=t(ys),a=t(ws),s=Un;function i(){const e=o();return e.parsers.unshift(new a.default),e}function o(){return{parsers:[new n.default],refiners:[new r.default]}}e.casual=new s.Chrono(i()),e.strict=new s.Chrono(o()),e.parse=function(t,n,r){return e.casual.parse(t,n,r)},e.parseDate=function(t,n,r){return e.casual.parseDate(t,n,r)},e.createCasualConfiguration=i,e.createConfiguration=o}(us);var Ns={},Rs={},xs={};Object.defineProperty(xs,"__esModule",{value:!0}),xs.parseYear=xs.YEAR_PATTERN=xs.MONTH_DICTIONARY=xs.WEEKDAY_DICTIONARY=void 0,xs.WEEKDAY_DICTIONARY={domingo:0,dom:0,segunda:1,"segunda-feira":1,seg:1,"terça":2,"terça-feira":2,ter:2,quarta:3,"quarta-feira":3,qua:3,quinta:4,"quinta-feira":4,qui:4,sexta:5,"sexta-feira":5,sex:5,"sábado":6,sabado:6,sab:6},xs.MONTH_DICTIONARY={janeiro:1,jan:1,"jan.":1,fevereiro:2,fev:2,"fev.":2,"março":3,mar:3,"mar.":3,abril:4,abr:4,"abr.":4,maio:5,mai:5,"mai.":5,junho:6,jun:6,"jun.":6,julho:7,jul:7,"jul.":7,agosto:8,ago:8,"ago.":8,setembro:9,set:9,"set.":9,outubro:10,out:10,"out.":10,novembro:11,nov:11,"nov.":11,dezembro:12,dez:12,"dez.":12},xs.YEAR_PATTERN="[0-9]{1,4}(?![^\\s]\\d)(?:\\s*[a|d]\\.?\\s*c\\.?|\\s*a\\.?\\s*d\\.?)?",xs.parseYear=function(e){if(e.match(/^[0-9]{1,4}$/)){let t=parseInt(e);return t<100&&(t+=t>50?1900:2e3),t}return e.match(/a\.?\s*c\.?/i)?(e=e.replace(/a\.?\s*c\.?/i,""),-parseInt(e)):parseInt(e)},Object.defineProperty(Rs,"__esModule",{value:!0});const Is=xs,Ss=J,Ws=Cn,ks=new RegExp(`(?:(?:\\,|\\(|\\()\\s*)?(?:(este|esta|passado|pr[oó]ximo)\\s*)?(${D.matchAnyPattern(Is.WEEKDAY_DICTIONARY)})(?:\\s*(?:\\,|\\)|\\)))?(?:\\s*(este|esta|passado|pr[óo]ximo)\\s*semana)?(?=\\W|\\d|$)`,"i");class $s extends Ss.AbstractParserWithWordBoundaryChecking{innerPattern(){return ks}innerExtract(e,t){const n=t[2].toLowerCase(),r=Is.WEEKDAY_DICTIONARY[n];if(void 0===r)return null;const a=t[1],s=t[3];let i=a||s||"";i=i.toLowerCase();let o=null;"passado"==i?o="this":"próximo"==i||"proximo"==i?o="next":"este"==i&&(o="this");const u=Ws.toDayJSWeekday(e.refDate,r,o);return e.createParsingComponents().assign("weekday",r).imply("day",u.date()).imply("month",u.month()+1).imply("year",u.year())}}Rs.default=$s;var js={};Object.defineProperty(js,"__esModule",{value:!0});const Ys=je;class Bs extends Ys.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:ao?|às?|das|da|de|do)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\–|\\~|\\〜|a(?:o)?|\\?)\\s*"}}js.default=Bs;var Fs={},Us=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Fs,"__esModule",{value:!0});const Ls=Us(ht);class zs extends Ls.default{patternBetween(){return new RegExp("^\\s*(?:,|à)?\\s*$")}}Fs.default=zs;var Hs={},Vs=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Hs,"__esModule",{value:!0});const Ks=Vs(it);class Gs extends Ks.default{patternBetween(){return/^\s*(?:-)\s*$/i}}Hs.default=Gs;var qs={};Object.defineProperty(qs,"__esModule",{value:!0});const Zs=N,Js=xs,Qs=xs,Xs=J,ei=new RegExp(`([0-9]{1,2})(?:º|ª|°)?(?:\\s*(?:desde|de|\\-|\\–|ao?|\\s)\\s*([0-9]{1,2})(?:º|ª|°)?)?\\s*(?:de)?\\s*(?:-|/|\\s*(?:de|,)?\\s*)(${D.matchAnyPattern(Js.MONTH_DICTIONARY)})(?:\\s*(?:de|,)?\\s*(${Qs.YEAR_PATTERN}))?(?=\\W|$)`,"i");class ti extends Xs.AbstractParserWithWordBoundaryChecking{innerPattern(){return ei}innerExtract(e,t){const n=e.createParsingResult(t.index,t[0]),r=Js.MONTH_DICTIONARY[t[3].toLowerCase()],a=parseInt(t[1]);if(a>31)return t.index=t.index+t[1].length,null;if(n.start.assign("month",r),n.start.assign("day",a),t[4]){const e=Qs.parseYear(t[4]);n.start.assign("year",e)}else{const t=Zs.findYearClosestToRef(e.refDate,a,r);n.start.imply("year",t)}if(t[2]){const e=parseInt(t[2]);n.end=n.start.clone(),n.end.assign("day",e)}return n}}qs.default=ti;var ni={},ri=P&&P.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),ai=P&&P.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),si=P&&P.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&ri(t,e,n);return ai(t,e),t};Object.defineProperty(ni,"__esModule",{value:!0});const ii=J,oi=si(Xt);class ui extends ii.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(agora|hoje|amanha|amanhã|ontem)(?=\W|$)/i}innerExtract(e,t){const n=t[0].toLowerCase(),r=e.createParsingComponents();switch(n){case"agora":return oi.now(e.reference);case"hoje":return oi.today(e.reference);case"amanha":case"amanhã":return oi.tomorrow(e.reference);case"ontem":return oi.yesterday(e.reference)}return r}}ni.default=ui;var di={},li=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(di,"__esModule",{value:!0});const ci=b,mi=J,fi=j,hi=li(R.exports);class pi extends mi.AbstractParserWithWordBoundaryChecking{innerPattern(){return/(?:esta\s*)?(manha|manhã|tarde|meia-noite|meio-dia|noite)(?=\W|$)/i}innerExtract(e,t){const n=hi.default(e.refDate),r=e.createParsingComponents();switch(t[1].toLowerCase()){case"tarde":r.imply("meridiem",ci.Meridiem.PM),r.imply("hour",15);break;case"noite":r.imply("meridiem",ci.Meridiem.PM),r.imply("hour",22);break;case"manha":case"manhã":r.imply("meridiem",ci.Meridiem.AM),r.imply("hour",6);break;case"meia-noite":fi.assignTheNextDay(r,n),r.imply("hour",0),r.imply("minute",0),r.imply("second",0);break;case"meio-dia":r.imply("meridiem",ci.Meridiem.AM),r.imply("hour",12)}return r}}di.default=pi,function(e){var t=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.createConfiguration=e.createCasualConfiguration=e.parseDate=e.parse=e.strict=e.casual=void 0;const n=bt,r=Un,a=t(Kn),s=t(Rs),i=t(js),o=t(Fs),u=t(Hs),d=t(qs),l=t(ni),c=t(di);function m(e=!0){const t=f(!1,e);return t.parsers.push(new l.default),t.parsers.push(new c.default),t}function f(e=!0,t=!0){return n.includeCommonConfiguration({parsers:[new a.default(t),new s.default,new i.default,new d.default],refiners:[new o.default,new u.default]},e)}e.casual=new r.Chrono(m()),e.strict=new r.Chrono(f(!0)),e.parse=function(t,n,r){return e.casual.parse(t,n,r)},e.parseDate=function(t,n,r){return e.casual.parseDate(t,n,r)},e.createCasualConfiguration=m,e.createConfiguration=f}(Ns);var gi={},yi={},Ti=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(yi,"__esModule",{value:!0});const _i=Ti(it);class Mi extends _i.default{patternBetween(){return/^\s*(tot|-)\s*$/i}}yi.default=Mi;var wi={},Pi=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(wi,"__esModule",{value:!0});const vi=Pi(ht);class bi extends vi.default{patternBetween(){return new RegExp("^\\s*(om|na|voor|in de|,|-)?\\s*$")}}wi.default=bi;var Ci={},Ai=P&&P.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),Ei=P&&P.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),Di=P&&P.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&Ai(t,e,n);return Ei(t,e),t};Object.defineProperty(Ci,"__esModule",{value:!0});const Oi=J,Ni=Di(Xt);class Ri extends Oi.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(nu|vandaag|morgen|morgend|gisteren)(?=\W|$)/i}innerExtract(e,t){const n=t[0].toLowerCase(),r=e.createParsingComponents();switch(n){case"nu":return Ni.now(e.reference);case"vandaag":return Ni.today(e.reference);case"morgen":case"morgend":return Ni.tomorrow(e.reference);case"gisteren":return Ni.yesterday(e.reference)}return r}}Ci.default=Ri;var xi={},Ii=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(xi,"__esModule",{value:!0});const Si=b,Wi=J,ki=Ii(R.exports),$i=j;class ji extends Wi.AbstractParserWithWordBoundaryChecking{innerPattern(){return/(deze)?\s*(namiddag|avond|middernacht|ochtend|middag|'s middags|'s avonds|'s ochtends)(?=\W|$)/i}innerExtract(e,t){const n=ki.default(e.refDate),r=e.createParsingComponents();switch("deze"===t[1]&&(r.assign("day",e.refDate.getDate()),r.assign("month",e.refDate.getMonth()+1),r.assign("year",e.refDate.getFullYear())),t[2].toLowerCase()){case"namiddag":case"'s namiddags":r.imply("meridiem",Si.Meridiem.PM),r.imply("hour",15);break;case"avond":case"'s avonds'":r.imply("meridiem",Si.Meridiem.PM),r.imply("hour",20);break;case"middernacht":$i.assignTheNextDay(r,n),r.imply("hour",0),r.imply("minute",0),r.imply("second",0);break;case"ochtend":case"'s ochtends":r.imply("meridiem",Si.Meridiem.AM),r.imply("hour",6);break;case"middag":case"'s middags":r.imply("meridiem",Si.Meridiem.AM),r.imply("hour",12)}return r}}xi.default=ji;var Yi={},Bi={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.parseTimeUnits=e.TIME_UNITS_PATTERN=e.parseYear=e.YEAR_PATTERN=e.parseOrdinalNumberPattern=e.ORDINAL_NUMBER_PATTERN=e.parseNumberPattern=e.NUMBER_PATTERN=e.TIME_UNIT_DICTIONARY=e.ORDINAL_WORD_DICTIONARY=e.INTEGER_WORD_DICTIONARY=e.MONTH_DICTIONARY=e.WEEKDAY_DICTIONARY=void 0;const t=D,n=N;function r(t){const n=t.toLowerCase();return void 0!==e.INTEGER_WORD_DICTIONARY[n]?e.INTEGER_WORD_DICTIONARY[n]:"paar"===n?2:"half"===n||n.match(/halve?/)?.5:parseFloat(n.replace(",","."))}e.WEEKDAY_DICTIONARY={zondag:0,zon:0,"zon.":0,zo:0,"zo.":0,maandag:1,ma:1,"ma.":1,dinsdag:2,din:2,"din.":2,di:2,"di.":2,woensdag:3,woe:3,"woe.":3,wo:3,"wo.":3,donderdag:4,dond:4,"dond.":4,do:4,"do.":4,vrijdag:5,vrij:5,"vrij.":5,vr:5,"vr.":5,zaterdag:6,zat:6,"zat.":6,za:6,"za.":6},e.MONTH_DICTIONARY={januari:1,jan:1,"jan.":1,februari:2,feb:2,"feb.":2,maart:3,mar:3,"mar.":3,april:4,apr:4,"apr.":4,mei:5,juni:6,jun:6,"jun.":6,juli:7,jul:7,"jul.":7,augustus:8,aug:8,"aug.":8,september:9,sep:9,"sep.":9,sept:9,"sept.":9,oktober:10,okt:10,"okt.":10,november:11,nov:11,"nov.":11,december:12,dec:12,"dec.":12},e.INTEGER_WORD_DICTIONARY={een:1,twee:2,drie:3,vier:4,vijf:5,zes:6,zeven:7,acht:8,negen:9,tien:10,elf:11,twaalf:12},e.ORDINAL_WORD_DICTIONARY={eerste:1,tweede:2,derde:3,vierde:4,vijfde:5,zesde:6,zevende:7,achtste:8,negende:9,tiende:10,elfde:11,twaalfde:12,dertiende:13,veertiende:14,vijftiende:15,zestiende:16,zeventiende:17,achttiende:18,negentiende:19,twintigste:20,eenentwintigste:21,"tweeëntwintigste":22,drieentwintigste:23,vierentwintigste:24,vijfentwintigste:25,zesentwintigste:26,zevenentwintigste:27,achtentwintig:28,negenentwintig:29,dertigste:30,eenendertigste:31},e.TIME_UNIT_DICTIONARY={sec:"second",second:"second",seconden:"second",min:"minute",mins:"minute",minute:"minute",minuut:"minute",minuten:"minute",minuutje:"minute",h:"hour",hr:"hour",hrs:"hour",uur:"hour",u:"hour",uren:"hour",dag:"d",dagen:"d",week:"week",weken:"week",maand:"month",maanden:"month",jaar:"year",jr:"year",jaren:"year"},e.NUMBER_PATTERN=`(?:${t.matchAnyPattern(e.INTEGER_WORD_DICTIONARY)}|[0-9]+|[0-9]+[\\.,][0-9]+|halve?|half|paar)`,e.parseNumberPattern=r,e.ORDINAL_NUMBER_PATTERN=`(?:${t.matchAnyPattern(e.ORDINAL_WORD_DICTIONARY)}|[0-9]{1,2}(?:ste|de)?)`,e.parseOrdinalNumberPattern=function(t){let n=t.toLowerCase();return void 0!==e.ORDINAL_WORD_DICTIONARY[n]?e.ORDINAL_WORD_DICTIONARY[n]:(n=n.replace(/(?:ste|de)$/i,""),parseInt(n))},e.YEAR_PATTERN="(?:[1-9][0-9]{0,3}\\s*(?:voor Christus|na Christus)|[1-2][0-9]{3}|[5-9][0-9])",e.parseYear=function(e){if(/voor Christus/i.test(e))return e=e.replace(/voor Christus/i,""),-parseInt(e);if(/na Christus/i.test(e))return e=e.replace(/na Christus/i,""),parseInt(e);const t=parseInt(e);return n.findMostLikelyADYear(t)};const a=`(${e.NUMBER_PATTERN})\\s{0,5}(${t.matchAnyPattern(e.TIME_UNIT_DICTIONARY)})\\s{0,5}`,s=new RegExp(a,"i");function i(t,n){const a=r(n[1]);t[e.TIME_UNIT_DICTIONARY[n[2].toLowerCase()]]=a}e.TIME_UNITS_PATTERN=t.repeatedTimeunitPattern("(?:(?:binnen|in)\\s*)?",a),e.parseTimeUnits=function(e){const t={};let n=e,r=s.exec(n);for(;r;)i(t,r),n=n.substring(r[0].length),r=s.exec(n);return t}}(Bi),Object.defineProperty(Yi,"__esModule",{value:!0});const Fi=Bi,Ui=k,Li=J;class zi extends Li.AbstractParserWithWordBoundaryChecking{innerPattern(){return new RegExp("(?:binnen|in|binnen de|voor)\\s*("+Fi.TIME_UNITS_PATTERN+")(?=\\W|$)","i")}innerExtract(e,t){const n=Fi.parseTimeUnits(t[1]);return Ui.ParsingComponents.createRelativeFromReference(e.reference,n)}}Yi.default=zi;var Hi={};Object.defineProperty(Hi,"__esModule",{value:!0});const Vi=Bi,Ki=J,Gi=Cn,qi=new RegExp(`(?:(?:\\,|\\(|\\()\\s*)?(?:op\\s*?)?(?:(deze|vorige|volgende)\\s*(?:week\\s*)?)?(${D.matchAnyPattern(Vi.WEEKDAY_DICTIONARY)})(?=\\W|$)`,"i");class Zi extends Ki.AbstractParserWithWordBoundaryChecking{innerPattern(){return qi}innerExtract(e,t){const n=t[2].toLowerCase(),r=Vi.WEEKDAY_DICTIONARY[n],a=t[1],s=t[3];let i=a||s;i=i||"",i=i.toLowerCase();let o=null;"vorige"==i?o="last":"volgende"==i?o="next":"deze"==i&&(o="this");const u=Gi.toDayJSWeekday(e.refDate,r,o);return e.createParsingComponents().assign("weekday",r).imply("day",u.date()).imply("month",u.month()+1).imply("year",u.year())}}Hi.default=Zi;var Ji={};Object.defineProperty(Ji,"__esModule",{value:!0});const Qi=N,Xi=Bi,eo=Bi,to=Bi,no=D,ro=J,ao=new RegExp(`(?:on\\s*?)?(${eo.ORDINAL_NUMBER_PATTERN})(?:\\s*(?:tot|\\-|\\–|until|through|till|\\s)\\s*(${eo.ORDINAL_NUMBER_PATTERN}))?(?:-|/|\\s*(?:of)?\\s*)(`+no.matchAnyPattern(Xi.MONTH_DICTIONARY)+")(?:(?:-|/|,?\\s*)"+`(${to.YEAR_PATTERN}(?![^\\s]\\d)))?(?=\\W|$)`,"i");class so extends ro.AbstractParserWithWordBoundaryChecking{innerPattern(){return ao}innerExtract(e,t){const n=Xi.MONTH_DICTIONARY[t[3].toLowerCase()],r=eo.parseOrdinalNumberPattern(t[1]);if(r>31)return t.index=t.index+t[1].length,null;const a=e.createParsingComponents({day:r,month:n});if(t[4]){const e=to.parseYear(t[4]);a.assign("year",e)}else{const t=Qi.findYearClosestToRef(e.refDate,r,n);a.imply("year",t)}if(!t[2])return a;const s=eo.parseOrdinalNumberPattern(t[2]),i=e.createParsingResult(t.index,t[0]);return i.start=a,i.end=a.clone(),i.end.assign("day",s),i}}Ji.default=so;var io={};Object.defineProperty(io,"__esModule",{value:!0});const oo=Bi,uo=N,lo=Bi,co=J,mo=new RegExp(`(${D.matchAnyPattern(oo.MONTH_DICTIONARY)})\\s*(?:[,-]?\\s*(${lo.YEAR_PATTERN})?)?(?=[^\\s\\w]|\\s+[^0-9]|\\s+$|$)`,"i");class fo extends co.AbstractParserWithWordBoundaryChecking{innerPattern(){return mo}innerExtract(e,t){const n=e.createParsingComponents();n.imply("day",1);const r=t[1],a=oo.MONTH_DICTIONARY[r.toLowerCase()];if(n.assign("month",a),t[2]){const e=lo.parseYear(t[2]);n.assign("year",e)}else{const t=uo.findYearClosestToRef(e.refDate,1,a);n.imply("year",t)}return n}}io.default=fo;var ho={};Object.defineProperty(ho,"__esModule",{value:!0});const po=J,go=new RegExp("([0-9]|0[1-9]|1[012])/([0-9]{4})","i");class yo extends po.AbstractParserWithWordBoundaryChecking{innerPattern(){return go}innerExtract(e,t){const n=parseInt(t[2]),r=parseInt(t[1]);return e.createParsingComponents().imply("day",1).assign("month",r).assign("year",n)}}ho.default=yo;var To={};Object.defineProperty(To,"__esModule",{value:!0});const _o=je;class Mo extends _o.AbstractTimeExpressionParser{primaryPrefix(){return"(?:(?:om)\\s*)?"}followingPhase(){return"\\s*(?:\\-|\\–|\\~|\\〜|om|\\?)\\s*"}primarySuffix(){return"(?:\\s*(?:uur))?(?!/)(?=\\W|$)"}extractPrimaryTimeComponents(e,t){return t[0].match(/^\s*\d{4}\s*$/)?null:super.extractPrimaryTimeComponents(e,t)}}To.default=Mo;var wo={};Object.defineProperty(wo,"__esModule",{value:!0});const Po=Bi,vo=J,bo=new RegExp(`([0-9]{4})[\\.\\/\\s](?:(${D.matchAnyPattern(Po.MONTH_DICTIONARY)})|([0-9]{1,2}))[\\.\\/\\s]([0-9]{1,2})(?=\\W|$)`,"i");class Co extends vo.AbstractParserWithWordBoundaryChecking{innerPattern(){return bo}innerExtract(e,t){const n=t[3]?parseInt(t[3]):Po.MONTH_DICTIONARY[t[2].toLowerCase()];if(n<1||n>12)return null;const r=parseInt(t[1]);return{day:parseInt(t[4]),month:n,year:r}}}wo.default=Co;var Ao={},Eo=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Ao,"__esModule",{value:!0});const Do=J,Oo=b,No=j,Ro=Eo(R.exports);class xo extends Do.AbstractParserWithWordBoundaryChecking{innerPattern(e){return/(gisteren|morgen|van)(ochtend|middag|namiddag|avond|nacht)(?=\W|$)/i}innerExtract(e,t){const n=t[1].toLowerCase(),r=t[2].toLowerCase(),a=e.createParsingComponents(),s=Ro.default(e.refDate);switch(n){case"gisteren":No.assignSimilarDate(a,s.add(-1,"day"));break;case"van":No.assignSimilarDate(a,s);break;case"morgen":No.assignTheNextDay(a,s)}switch(r){case"ochtend":a.imply("meridiem",Oo.Meridiem.AM),a.imply("hour",6);break;case"middag":a.imply("meridiem",Oo.Meridiem.AM),a.imply("hour",12);break;case"namiddag":a.imply("meridiem",Oo.Meridiem.PM),a.imply("hour",15);break;case"avond":a.imply("meridiem",Oo.Meridiem.PM),a.imply("hour",20)}return a}}Ao.default=xo;var Io={};Object.defineProperty(Io,"__esModule",{value:!0});const So=Bi,Wo=k,ko=J,$o=ze,jo=new RegExp(`(deze|vorige|afgelopen|komende|over|\\+|-)\\s*(${So.TIME_UNITS_PATTERN})(?=\\W|$)`,"i");class Yo extends ko.AbstractParserWithWordBoundaryChecking{innerPattern(){return jo}innerExtract(e,t){const n=t[1].toLowerCase();let r=So.parseTimeUnits(t[2]);switch(n){case"vorige":case"afgelopen":case"-":r=$o.reverseTimeUnits(r)}return Wo.ParsingComponents.createRelativeFromReference(e.reference,r)}}Io.default=Yo;var Bo={},Fo=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(Bo,"__esModule",{value:!0});const Uo=Bi,Lo=k,zo=Fo(R.exports),Ho=J,Vo=new RegExp(`(dit|deze|komende|volgend|volgende|afgelopen|vorige)\\s*(${D.matchAnyPattern(Uo.TIME_UNIT_DICTIONARY)})(?=\\s*)(?=\\W|$)`,"i");class Ko extends Ho.AbstractParserWithWordBoundaryChecking{innerPattern(){return Vo}innerExtract(e,t){const n=t[1].toLowerCase(),r=t[2].toLowerCase(),a=Uo.TIME_UNIT_DICTIONARY[r];if("volgend"==n||"volgende"==n||"komende"==n){const t={};return t[a]=1,Lo.ParsingComponents.createRelativeFromReference(e.reference,t)}if("afgelopen"==n||"vorige"==n){const t={};return t[a]=-1,Lo.ParsingComponents.createRelativeFromReference(e.reference,t)}const s=e.createParsingComponents();let i=zo.default(e.reference.instant);return r.match(/week/i)?(i=i.add(-i.get("d"),"d"),s.imply("day",i.date()),s.imply("month",i.month()+1),s.imply("year",i.year())):r.match(/maand/i)?(i=i.add(1-i.date(),"d"),s.imply("day",i.date()),s.assign("year",i.year()),s.assign("month",i.month()+1)):r.match(/jaar/i)&&(i=i.add(1-i.date(),"d"),i=i.add(-i.month(),"month"),s.imply("day",i.date()),s.imply("month",i.month()+1),s.assign("year",i.year())),s}}Bo.default=Ko;var Go={};Object.defineProperty(Go,"__esModule",{value:!0});const qo=Bi,Zo=k,Jo=J,Qo=ze,Xo=new RegExp("("+qo.TIME_UNITS_PATTERN+")(?:geleden|voor|eerder)(?=(?:\\W|$))","i"),eu=new RegExp("("+qo.TIME_UNITS_PATTERN+")geleden(?=(?:\\W|$))","i");class tu extends Jo.AbstractParserWithWordBoundaryChecking{constructor(e){super(),this.strictMode=e}innerPattern(){return this.strictMode?eu:Xo}innerExtract(e,t){const n=qo.parseTimeUnits(t[1]),r=Qo.reverseTimeUnits(n);return Zo.ParsingComponents.createRelativeFromReference(e.reference,r)}}Go.default=tu;var nu={};Object.defineProperty(nu,"__esModule",{value:!0});const ru=Bi,au=k,su=J,iu=new RegExp("("+ru.TIME_UNITS_PATTERN+")(later|na|vanaf nu|voortaan|vooruit|uit)(?=(?:\\W|$))","i"),ou=new RegExp("("+ru.TIME_UNITS_PATTERN+")(later|vanaf nu)(?=(?:\\W|$))","i");class uu extends su.AbstractParserWithWordBoundaryChecking{constructor(e){super(),this.strictMode=e}innerPattern(){return this.strictMode?ou:iu}innerExtract(e,t){const n=ru.parseTimeUnits(t[1]);return au.ParsingComponents.createRelativeFromReference(e.reference,n)}}nu.default=uu,function(e){var t=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.createConfiguration=e.createCasualConfiguration=e.parseDate=e.parse=e.strict=e.casual=void 0;const n=bt,r=Un,a=t(yi),s=t(wi),i=t(Ci),o=t(xi),u=t(Kn),d=t(Yi),l=t(Hi),c=t(Ji),m=t(io),f=t(ho),h=t(To),p=t(wo),g=t(Ao),y=t(Io),T=t(Bo),_=t(Go),M=t(nu);function w(e=!0){const t=v(!1,e);return t.parsers.unshift(new i.default),t.parsers.unshift(new o.default),t.parsers.unshift(new g.default),t.parsers.unshift(new m.default),t.parsers.unshift(new T.default),t.parsers.unshift(new y.default),t}function v(e=!0,t=!0){return n.includeCommonConfiguration({parsers:[new u.default(t),new d.default,new c.default,new m.default,new l.default,new p.default,new f.default,new h.default(e),new _.default(e),new M.default(e)],refiners:[new s.default,new a.default]},e)}e.casual=new r.Chrono(w()),e.strict=new r.Chrono(v(!0)),e.parse=function(t,n,r){return e.casual.parse(t,n,r)},e.parseDate=function(t,n,r){return e.casual.parseDate(t,n,r)},e.createCasualConfiguration=w,e.createConfiguration=v}(gi);var du={},lu={},cu={},mu=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(cu,"__esModule",{value:!0});const fu=mu(R.exports),hu=J;class pu extends hu.AbstractParserWithWordBoundaryChecking{innerPattern(e){return new RegExp("(而家|立(?:刻|即)|即刻)|(今|明|前|大前|後|大後|聽|昨|尋|琴)(早|朝|晚)|(上(?:午|晝)|朝(?:早)|早(?:上)|下(?:午|晝)|晏(?:晝)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨))|(今|明|前|大前|後|大後|聽|昨|尋|琴)(?:日|天)(?:[\\s|,|,]*)(?:(上(?:午|晝)|朝(?:早)|早(?:上)|下(?:午|晝)|晏(?:晝)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨)))?","i")}innerExtract(e,t){const n=t.index,r=e.createParsingResult(n,t[0]),a=fu.default(e.refDate);let s=a;if(t[1])r.start.imply("hour",a.hour()),r.start.imply("minute",a.minute()),r.start.imply("second",a.second()),r.start.imply("millisecond",a.millisecond());else if(t[2]){const e=t[2],n=t[3];"明"==e||"聽"==e?a.hour()>1&&(s=s.add(1,"day")):"昨"==e||"尋"==e||"琴"==e?s=s.add(-1,"day"):"前"==e?s=s.add(-2,"day"):"大前"==e?s=s.add(-3,"day"):"後"==e?s=s.add(2,"day"):"大後"==e&&(s=s.add(3,"day")),"早"==n||"朝"==n?r.start.imply("hour",6):"晚"==n&&(r.start.imply("hour",22),r.start.imply("meridiem",1))}else if(t[4]){const e=t[4][0];"早"==e||"朝"==e||"上"==e?r.start.imply("hour",6):"下"==e||"晏"==e?(r.start.imply("hour",15),r.start.imply("meridiem",1)):"中"==e?(r.start.imply("hour",12),r.start.imply("meridiem",1)):"夜"==e||"晚"==e?(r.start.imply("hour",22),r.start.imply("meridiem",1)):"凌"==e&&r.start.imply("hour",0)}else if(t[5]){const e=t[5];"明"==e||"聽"==e?a.hour()>1&&(s=s.add(1,"day")):"昨"==e||"尋"==e||"琴"==e?s=s.add(-1,"day"):"前"==e?s=s.add(-2,"day"):"大前"==e?s=s.add(-3,"day"):"後"==e?s=s.add(2,"day"):"大後"==e&&(s=s.add(3,"day"));const n=t[6];if(n){const e=n[0];"早"==e||"朝"==e||"上"==e?r.start.imply("hour",6):"下"==e||"晏"==e?(r.start.imply("hour",15),r.start.imply("meridiem",1)):"中"==e?(r.start.imply("hour",12),r.start.imply("meridiem",1)):"夜"==e||"晚"==e?(r.start.imply("hour",22),r.start.imply("meridiem",1)):"凌"==e&&r.start.imply("hour",0)}}return r.start.assign("day",s.date()),r.start.assign("month",s.month()+1),r.start.assign("year",s.year()),r}}cu.default=pu;var gu={},yu={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.zhStringToYear=e.zhStringToNumber=e.WEEKDAY_OFFSET=e.NUMBER=void 0,e.NUMBER={"零":0,"一":1,"二":2,"兩":2,"三":3,"四":4,"五":5,"六":6,"七":7,"八":8,"九":9,"十":10,"廿":20,"卅":30},e.WEEKDAY_OFFSET={"天":0,"日":0,"一":1,"二":2,"三":3,"四":4,"五":5,"六":6},e.zhStringToNumber=function(t){let n=0;for(let r=0;r上|今|下|這|呢)(?:個)?(?:星期|禮拜|週)(?"+Object.keys(Su.WEEKDAY_OFFSET).join("|")+")");class ku extends Iu.AbstractParserWithWordBoundaryChecking{innerPattern(){return Wu}innerExtract(e,t){const n=e.createParsingResult(t.index,t[0]),r=t.groups.weekday,a=Su.WEEKDAY_OFFSET[r];if(void 0===a)return null;let s=null;const i=t.groups.prefix;"上"==i?s="last":"下"==i?s="next":"今"!=i&&"這"!=i&&"呢"!=i||(s="this");let o=xu.default(e.refDate),u=!1;const d=o.day();return"last"==s||"past"==s?(o=o.day(a-7),u=!0):"next"==s?(o=o.day(a+7),u=!0):o="this"==s?o.day(a):Math.abs(a-7-d)0&&e.text[t.index-1].match(/\w/))return null;const n=Yu.default(e.refDate),r=e.createParsingResult(t.index,t[0]),a=n.clone();if(t[1])"明"==(l=t[1])||"聽"==l?n.hour()>1&&a.add(1,"day"):"昨"==l||"尋"==l||"琴"==l?a.add(-1,"day"):"前"==l?a.add(-2,"day"):"大前"==l?a.add(-3,"day"):"後"==l?a.add(2,"day"):"大後"==l&&a.add(3,"day"),r.start.assign("day",a.date()),r.start.assign("month",a.month()+1),r.start.assign("year",a.year());else if(t[4]){"明"==(c=t[4])||"聽"==c?a.add(1,"day"):"昨"==c||"尋"==c||"琴"==c?a.add(-1,"day"):"前"==c?a.add(-2,"day"):"大前"==c?a.add(-3,"day"):"後"==c?a.add(2,"day"):"大後"==c&&a.add(3,"day"),r.start.assign("day",a.date()),r.start.assign("month",a.month()+1),r.start.assign("year",a.year())}else r.start.imply("day",a.date()),r.start.imply("month",a.month()+1),r.start.imply("year",a.year());let s=0,i=0,o=-1;if(t[8]){var u=parseInt(t[8]);if(isNaN(u)&&(u=Fu.zhStringToNumber(t[8])),u>=60)return null;r.start.assign("second",u)}if(s=parseInt(t[6]),isNaN(s)&&(s=Fu.zhStringToNumber(t[6])),t[7]?"半"==t[7]?i=30:"正"==t[7]||"整"==t[7]?i=0:(i=parseInt(t[7]),isNaN(i)&&(i=Fu.zhStringToNumber(t[7]))):s>100&&(i=s%100,s=Math.floor(s/100)),i>=60)return null;if(s>24)return null;if(s>=12&&(o=1),t[9]){if(s>12)return null;"a"==(m=t[9][0].toLowerCase())&&(o=0,12==s&&(s=0)),"p"==m&&(o=1,12!=s&&(s+=12))}else if(t[2]){"朝"==(f=t[2][0])||"早"==f?(o=0,12==s&&(s=0)):"晚"==f&&(o=1,12!=s&&(s+=12))}else if(t[3]){"上"==(h=t[3][0])||"朝"==h||"早"==h||"凌"==h?(o=0,12==s&&(s=0)):"下"!=h&&"晏"!=h&&"晚"!=h||(o=1,12!=s&&(s+=12))}else if(t[5]){"上"==(p=t[5][0])||"朝"==p||"早"==p||"凌"==p?(o=0,12==s&&(s=0)):"下"!=p&&"晏"!=p&&"晚"!=p||(o=1,12!=s&&(s+=12))}if(r.start.assign("hour",s),r.start.assign("minute",i),o>=0?r.start.assign("meridiem",o):s<12?r.start.imply("meridiem",0):r.start.imply("meridiem",1),!(t=Lu.exec(e.text.substring(r.index+r.text.length))))return r.text.match(/^\d+$/)?null:r;const d=a.clone();var l;if(r.end=e.createParsingComponents(),t[1])"明"==(l=t[1])||"聽"==l?n.hour()>1&&d.add(1,"day"):"昨"==l||"尋"==l||"琴"==l?d.add(-1,"day"):"前"==l?d.add(-2,"day"):"大前"==l?d.add(-3,"day"):"後"==l?d.add(2,"day"):"大後"==l&&d.add(3,"day"),r.end.assign("day",d.date()),r.end.assign("month",d.month()+1),r.end.assign("year",d.year());else if(t[4]){var c;"明"==(c=t[4])||"聽"==c?d.add(1,"day"):"昨"==c||"尋"==c||"琴"==c?d.add(-1,"day"):"前"==c?d.add(-2,"day"):"大前"==c?d.add(-3,"day"):"後"==c?d.add(2,"day"):"大後"==c&&d.add(3,"day"),r.end.assign("day",d.date()),r.end.assign("month",d.month()+1),r.end.assign("year",d.year())}else r.end.imply("day",d.date()),r.end.imply("month",d.month()+1),r.end.imply("year",d.year());if(s=0,i=0,o=-1,t[8]){u=parseInt(t[8]);if(isNaN(u)&&(u=Fu.zhStringToNumber(t[8])),u>=60)return null;r.end.assign("second",u)}if(s=parseInt(t[6]),isNaN(s)&&(s=Fu.zhStringToNumber(t[6])),t[7]?"半"==t[7]?i=30:"正"==t[7]||"整"==t[7]?i=0:(i=parseInt(t[7]),isNaN(i)&&(i=Fu.zhStringToNumber(t[7]))):s>100&&(i=s%100,s=Math.floor(s/100)),i>=60)return null;if(s>24)return null;if(s>=12&&(o=1),t[9]){if(s>12)return null;var m;"a"==(m=t[9][0].toLowerCase())&&(o=0,12==s&&(s=0)),"p"==m&&(o=1,12!=s&&(s+=12)),r.start.isCertain("meridiem")||(0==o?(r.start.imply("meridiem",0),12==r.start.get("hour")&&r.start.assign("hour",0)):(r.start.imply("meridiem",1),12!=r.start.get("hour")&&r.start.assign("hour",r.start.get("hour")+12)))}else if(t[2]){var f;"朝"==(f=t[2][0])||"早"==f?(o=0,12==s&&(s=0)):"晚"==f&&(o=1,12!=s&&(s+=12))}else if(t[3]){var h;"上"==(h=t[3][0])||"朝"==h||"早"==h||"凌"==h?(o=0,12==s&&(s=0)):"下"!=h&&"晏"!=h&&"晚"!=h||(o=1,12!=s&&(s+=12))}else if(t[5]){var p;"上"==(p=t[5][0])||"朝"==p||"早"==p||"凌"==p?(o=0,12==s&&(s=0)):"下"!=p&&"晏"!=p&&"晚"!=p||(o=1,12!=s&&(s+=12))}if(r.text=r.text+t[0],r.end.assign("hour",s),r.end.assign("minute",i),o>=0)r.end.assign("meridiem",o);else{r.start.isCertain("meridiem")&&1==r.start.get("meridiem")&&r.start.get("hour")>s?r.end.imply("meridiem",0):s>12&&r.end.imply("meridiem",1)}return r.end.date().getTime()"+Object.keys(qu.WEEKDAY_OFFSET).join("|")+")");class Ju extends Gu.AbstractParserWithWordBoundaryChecking{innerPattern(){return Zu}innerExtract(e,t){const n=e.createParsingResult(t.index,t[0]),r=t.groups.weekday,a=qu.WEEKDAY_OFFSET[r];if(void 0===a)return null;let s=Ku.default(e.refDate);const i=s.day();return s=Math.abs(a-7-i)!(e instanceof r.default)),e}e.hant=new n.Chrono(f()),e.casual=new n.Chrono(f()),e.strict=new n.Chrono(h()),e.parse=function(t,n,r){return e.casual.parse(t,n,r)},e.parseDate=function(t,n,r){return e.casual.parseDate(t,n,r)},e.createCasualConfiguration=f,e.createConfiguration=h}(lu);var id={},od={},ud=P&&P.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(od,"__esModule",{value:!0});const dd=ud(R.exports),ld=J;class cd extends ld.AbstractParserWithWordBoundaryChecking{innerPattern(e){return new RegExp("(现在|立(?:刻|即)|即刻)|(今|明|前|大前|后|大后|昨)(早|晚)|(上(?:午)|早(?:上)|下(?:午)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨))|(今|明|前|大前|后|大后|昨)(?:日|天)(?:[\\s|,|,]*)(?:(上(?:午)|早(?:上)|下(?:午)|晚(?:上)|夜(?:晚)?|中(?:午)|凌(?:晨)))?","i")}innerExtract(e,t){const n=t.index,r=e.createParsingResult(n,t[0]),a=dd.default(e.refDate);let s=a;if(t[1])r.start.imply("hour",a.hour()),r.start.imply("minute",a.minute()),r.start.imply("second",a.second()),r.start.imply("millisecond",a.millisecond());else if(t[2]){const e=t[2],n=t[3];"明"==e?a.hour()>1&&(s=s.add(1,"day")):"昨"==e?s=s.add(-1,"day"):"前"==e?s=s.add(-2,"day"):"大前"==e?s=s.add(-3,"day"):"后"==e?s=s.add(2,"day"):"大后"==e&&(s=s.add(3,"day")),"早"==n?r.start.imply("hour",6):"晚"==n&&(r.start.imply("hour",22),r.start.imply("meridiem",1))}else if(t[4]){const e=t[4][0];"早"==e||"上"==e?r.start.imply("hour",6):"下"==e?(r.start.imply("hour",15),r.start.imply("meridiem",1)):"中"==e?(r.start.imply("hour",12),r.start.imply("meridiem",1)):"夜"==e||"晚"==e?(r.start.imply("hour",22),r.start.imply("meridiem",1)):"凌"==e&&r.start.imply("hour",0)}else if(t[5]){const e=t[5];"明"==e?a.hour()>1&&(s=s.add(1,"day")):"昨"==e?s=s.add(-1,"day"):"前"==e?s=s.add(-2,"day"):"大前"==e?s=s.add(-3,"day"):"后"==e?s=s.add(2,"day"):"大后"==e&&(s=s.add(3,"day"));const n=t[6];if(n){const e=n[0];"早"==e||"上"==e?r.start.imply("hour",6):"下"==e?(r.start.imply("hour",15),r.start.imply("meridiem",1)):"中"==e?(r.start.imply("hour",12),r.start.imply("meridiem",1)):"夜"==e||"晚"==e?(r.start.imply("hour",22),r.start.imply("meridiem",1)):"凌"==e&&r.start.imply("hour",0)}}return r.start.assign("day",s.date()),r.start.assign("month",s.month()+1),r.start.assign("year",s.year()),r}}od.default=cd;var md={},fd={};!function(e){Object.defineProperty(e,"__esModule",{value:!0}),e.zhStringToYear=e.zhStringToNumber=e.WEEKDAY_OFFSET=e.NUMBER=void 0,e.NUMBER={"零":0,"〇":0,"一":1,"二":2,"两":2,"三":3,"四":4,"五":5,"六":6,"七":7,"八":8,"九":9,"十":10},e.WEEKDAY_OFFSET={"天":0,"日":0,"一":1,"二":2,"三":3,"四":4,"五":5,"六":6},e.zhStringToNumber=function(t){let n=0;for(let r=0;r上|下|这)(?:个)?(?:星期|礼拜|周)(?"+Object.keys(Nd.WEEKDAY_OFFSET).join("|")+")");class xd extends Od.AbstractParserWithWordBoundaryChecking{innerPattern(){return Rd}innerExtract(e,t){const n=e.createParsingResult(t.index,t[0]),r=t.groups.weekday,a=Nd.WEEKDAY_OFFSET[r];if(void 0===a)return null;let s=null;const i=t.groups.prefix;"上"==i?s="last":"下"==i?s="next":"这"==i&&(s="this");let o=Dd.default(e.refDate),u=!1;const d=o.day();return"last"==s||"past"==s?(o=o.day(a-7),u=!0):"next"==s?(o=o.day(a+7),u=!0):o="this"==s?o.day(a):Math.abs(a-7-d)0&&e.text[t.index-1].match(/\w/))return null;const n=Wd.default(e.refDate),r=e.createParsingResult(t.index,t[0]),a=n.clone();if(t[1]){const e=t[1];"明"==e?n.hour()>1&&a.add(1,"day"):"昨"==e?a.add(-1,"day"):"前"==e?a.add(-2,"day"):"大前"==e?a.add(-3,"day"):"后"==e?a.add(2,"day"):"大后"==e&&a.add(3,"day"),r.start.assign("day",a.date()),r.start.assign("month",a.month()+1),r.start.assign("year",a.year())}else if(t[4]){const e=t[4];"明"==e?a.add(1,"day"):"昨"==e?a.add(-1,"day"):"前"==e?a.add(-2,"day"):"大前"==e?a.add(-3,"day"):"后"==e?a.add(2,"day"):"大后"==e&&a.add(3,"day"),r.start.assign("day",a.date()),r.start.assign("month",a.month()+1),r.start.assign("year",a.year())}else r.start.imply("day",a.date()),r.start.imply("month",a.month()+1),r.start.imply("year",a.year());let s=0,i=0,o=-1;if(t[8]){let e=parseInt(t[8]);if(isNaN(e)&&(e=$d.zhStringToNumber(t[8])),e>=60)return null;r.start.assign("second",e)}if(s=parseInt(t[6]),isNaN(s)&&(s=$d.zhStringToNumber(t[6])),t[7]?"半"==t[7]?i=30:"正"==t[7]||"整"==t[7]?i=0:(i=parseInt(t[7]),isNaN(i)&&(i=$d.zhStringToNumber(t[7]))):s>100&&(i=s%100,s=Math.floor(s/100)),i>=60)return null;if(s>24)return null;if(s>=12&&(o=1),t[9]){if(s>12)return null;const e=t[9][0].toLowerCase();"a"==e&&(o=0,12==s&&(s=0)),"p"==e&&(o=1,12!=s&&(s+=12))}else if(t[2]){const e=t[2][0];"早"==e?(o=0,12==s&&(s=0)):"晚"==e&&(o=1,12!=s&&(s+=12))}else if(t[3]){const e=t[3][0];"上"==e||"早"==e||"凌"==e?(o=0,12==s&&(s=0)):"下"!=e&&"晚"!=e||(o=1,12!=s&&(s+=12))}else if(t[5]){const e=t[5][0];"上"==e||"早"==e||"凌"==e?(o=0,12==s&&(s=0)):"下"!=e&&"晚"!=e||(o=1,12!=s&&(s+=12))}if(r.start.assign("hour",s),r.start.assign("minute",i),o>=0?r.start.assign("meridiem",o):s<12?r.start.imply("meridiem",0):r.start.imply("meridiem",1),!(t=Yd.exec(e.text.substring(r.index+r.text.length))))return r.text.match(/^\d+$/)?null:r;const u=a.clone();if(r.end=e.createParsingComponents(),t[1]){const e=t[1];"明"==e?n.hour()>1&&u.add(1,"day"):"昨"==e?u.add(-1,"day"):"前"==e?u.add(-2,"day"):"大前"==e?u.add(-3,"day"):"后"==e?u.add(2,"day"):"大后"==e&&u.add(3,"day"),r.end.assign("day",u.date()),r.end.assign("month",u.month()+1),r.end.assign("year",u.year())}else if(t[4]){const e=t[4];"明"==e?u.add(1,"day"):"昨"==e?u.add(-1,"day"):"前"==e?u.add(-2,"day"):"大前"==e?u.add(-3,"day"):"后"==e?u.add(2,"day"):"大后"==e&&u.add(3,"day"),r.end.assign("day",u.date()),r.end.assign("month",u.month()+1),r.end.assign("year",u.year())}else r.end.imply("day",u.date()),r.end.imply("month",u.month()+1),r.end.imply("year",u.year());if(s=0,i=0,o=-1,t[8]){let e=parseInt(t[8]);if(isNaN(e)&&(e=$d.zhStringToNumber(t[8])),e>=60)return null;r.end.assign("second",e)}if(s=parseInt(t[6]),isNaN(s)&&(s=$d.zhStringToNumber(t[6])),t[7]?"半"==t[7]?i=30:"正"==t[7]||"整"==t[7]?i=0:(i=parseInt(t[7]),isNaN(i)&&(i=$d.zhStringToNumber(t[7]))):s>100&&(i=s%100,s=Math.floor(s/100)),i>=60)return null;if(s>24)return null;if(s>=12&&(o=1),t[9]){if(s>12)return null;const e=t[9][0].toLowerCase();"a"==e&&(o=0,12==s&&(s=0)),"p"==e&&(o=1,12!=s&&(s+=12)),r.start.isCertain("meridiem")||(0==o?(r.start.imply("meridiem",0),12==r.start.get("hour")&&r.start.assign("hour",0)):(r.start.imply("meridiem",1),12!=r.start.get("hour")&&r.start.assign("hour",r.start.get("hour")+12)))}else if(t[2]){const e=t[2][0];"早"==e?(o=0,12==s&&(s=0)):"晚"==e&&(o=1,12!=s&&(s+=12))}else if(t[3]){const e=t[3][0];"上"==e||"早"==e||"凌"==e?(o=0,12==s&&(s=0)):"下"!=e&&"晚"!=e||(o=1,12!=s&&(s+=12))}else if(t[5]){const e=t[5][0];"上"==e||"早"==e||"凌"==e?(o=0,12==s&&(s=0)):"下"!=e&&"晚"!=e||(o=1,12!=s&&(s+=12))}if(r.text=r.text+t[0],r.end.assign("hour",s),r.end.assign("minute",i),o>=0)r.end.assign("meridiem",o);else{r.start.isCertain("meridiem")&&1==r.start.get("meridiem")&&r.start.get("hour")>s?r.end.imply("meridiem",0):s>12&&r.end.imply("meridiem",1)}return r.end.date().getTime()"+Object.keys(Hd.WEEKDAY_OFFSET).join("|")+")");class Kd extends zd.AbstractParserWithWordBoundaryChecking{innerPattern(){return Vd}innerExtract(e,t){const n=e.createParsingResult(t.index,t[0]),r=t.groups.weekday,a=Hd.WEEKDAY_OFFSET[r];if(void 0===a)return null;let s=Ld.default(e.refDate);const i=s.day();return s=Math.abs(a-7-i)!(e instanceof r.default)),e}e.hans=new n.Chrono(f()),e.casual=new n.Chrono(f()),e.strict=new n.Chrono(h()),e.parse=function(t,n,r){return e.casual.parse(t,n,r)},e.parseDate=function(t,n,r){return e.casual.parseDate(t,n,r)},e.createCasualConfiguration=f,e.createConfiguration=h}(id),function(e){var t=P&&P.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=P&&P.__exportStar||function(e,n){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(n,r)||t(n,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.hans=void 0,n(lu,e);var r=id;Object.defineProperty(e,"hans",{enumerable:!0,get:function(){return r.hans}})}(du),function(e){var t=P&&P.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),n=P&&P.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),r=P&&P.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var a in e)"default"!==a&&Object.prototype.hasOwnProperty.call(e,a)&&t(r,e,a);return n(r,e),r};Object.defineProperty(e,"__esModule",{value:!0}),e.parseDate=e.parse=e.casual=e.strict=e.zh=e.nl=e.pt=e.ja=e.fr=e.de=e.Meridiem=e.Chrono=e.en=void 0;const a=r(C);e.en=a;const s=Un;var i;Object.defineProperty(e,"Chrono",{enumerable:!0,get:function(){return s.Chrono}}),(i=e.Meridiem||(e.Meridiem={}))[i.AM=0]="AM",i[i.PM=1]="PM";const o=r(rr);e.de=o;const u=r(Zr);e.fr=u;const d=r(us);e.ja=d;const l=r(Ns);e.pt=l;const c=r(gi);e.nl=c;const m=r(du);e.zh=m,e.strict=a.strict,e.casual=a.casual,e.parse=function(t,n,r){return e.casual.parse(t,n,r)},e.parseDate=function(t,n,r){return e.casual.parseDate(t,n,r)}}(b);var nl=v(b);function rl(){const e="en-gb"===window.moment.locale()?new b.Chrono(nl.en.createCasualConfiguration(!0)):new b.Chrono(nl.en.createCasualConfiguration(!1));return e.parsers.push({pattern:()=>/\bChristmas\b/i,extract:()=>({day:25,month:12})}),e.parsers.push({pattern:()=>new RegExp(T),extract:(e,t)=>({day:M(t[0]),month:window.moment().month()})}),e}class al{constructor(){this.chrono=rl()}getParsedDate(e,t){var n;const r=this.chrono,a=null===(n=r.parse(e)[0])||void 0===n?void 0:n.start.isCertain("weekday"),s="locale-default"===t?f():t,i={weekStart:(o=s,m.indexOf(o))};var o;const u=e.match(/this\s([\w]+)/i),d=e.match(/next\s([\w]+)/i),l=e.match(/(last day of|end of)\s*([^\n\r]*)/i),c=e.match(/mid\s([\w]+)/i),h=a?window.moment().weekday(0).toDate():new Date;if(u&&"week"===u[1])return r.parseDate(`this ${String(s)}`,h);if(d&&"week"===d[1])return r.parseDate(`next ${String(s)}`,h,{forwardDate:!0});if(d&&"month"===d[1]){const t=r.parseDate("this month",new Date,{forwardDate:!0});return r.parseDate(e,t,{forwardDate:!0})}if(d&&"year"===d[1]){const t=r.parseDate("this year",new Date,{forwardDate:!0});return r.parseDate(e,t,{forwardDate:!0})}if(l){const e=r.parse(l[2]),t=e[0].start.get("year"),n=e[0].start.get("month"),a=function(e,t){return new Date(e,t,0).getDate()}(t,n);return r.parseDate(`${t}-${n}-${a}`,new Date,{forwardDate:!0})}return c?r.parseDate(`${c[1]} 15th`,new Date,{forwardDate:!0}):r.parseDate(e,h,{locale:i})}}const sl={autosuggestToggleLink:!0,autocompleteTriggerPhrase:"@",isAutosuggestEnabled:!0,appendTimeToDateWhenRelated:!0,format:"YYYY-MM-DD",defaultAlias:"",timeFormat:"HH:mm",separator:" ",weekStart:"locale-default",modalToggleTime:!1,modalToggleLink:!1,modalMomentFormat:"YYYY-MM-DD HH:mm"},il=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];class ol extends e.PluginSettingTab{constructor(e,t){super(e,t),this.plugin=t}display(){const{containerEl:n}=this,r=window.moment.weekdays(),a=f();n.empty(),new e.Setting(n).setName("Format").setHeading(),new e.Setting(n).setName("Date format").setDesc("Specify the format for displaying dates.").addMomentFormat(e=>e.setDefaultFormat("YYYY-MM-DD").setValue(this.plugin.settings.format).onChange(e=>t(this,void 0,void 0,function*(){this.plugin.settings.format=e||"YYYY-MM-DD",yield this.plugin.saveSettings()}))),new e.Setting(n).setName("Time format").setDesc("Specify the format for displaying time.").addMomentFormat(e=>e.setDefaultFormat("HH:mm").setValue(this.plugin.settings.timeFormat).onChange(e=>t(this,void 0,void 0,function*(){this.plugin.settings.timeFormat=e||"HH:mm",yield this.plugin.saveSettings()}))),new e.Setting(n).setName("Date-time separator").setDesc("Character(s) used to separate date and time (default: space)").addText(e=>e.setPlaceholder("Enter separator").setValue(this.plugin.settings.separator).onChange(e=>t(this,void 0,void 0,function*(){this.plugin.settings.separator=e||" ",yield this.plugin.saveSettings()}))),new e.Setting(n).setName("Append time to date when relevant").setDesc("When enabled, typing @now will insert both date and time, while @today will insert only the date. When disabled, only the date format is used.").addToggle(e=>e.setValue(this.plugin.settings.appendTimeToDateWhenRelated).onChange(e=>t(this,void 0,void 0,function*(){this.plugin.settings.appendTimeToDateWhenRelated=e||!1,yield this.plugin.saveSettings()}))),new e.Setting(n).setName("Week starts on").setDesc("Select the day to be considered as the start of the week").addDropdown(e=>{e.addOption("locale-default",`Locale default (${String(a)})`),r.forEach((t,n)=>{e.addOption(il[n],t)}),e.setValue(this.plugin.settings.weekStart.toLowerCase()),e.onChange(e=>t(this,void 0,void 0,function*(){this.plugin.settings.weekStart=e,yield this.plugin.saveSettings()}))}),new e.Setting(n).setName("Autosuggestion").setHeading(),new e.Setting(n).setName("Enable date autosuggestion").setDesc(`Toggle to enable or disable the autosuggestion menu, triggered by ${this.plugin.settings.autocompleteTriggerPhrase}`).addToggle(e=>e.setValue(this.plugin.settings.isAutosuggestEnabled).onChange(e=>t(this,void 0,void 0,function*(){this.plugin.settings.isAutosuggestEnabled=e,yield this.plugin.saveSettings()}))),new e.Setting(n).setName("Trigger").setDesc("Character(s) to trigger autosuggestion (default: @)").addMomentFormat(e=>e.setPlaceholder(sl.autocompleteTriggerPhrase).setValue(this.plugin.settings.autocompleteTriggerPhrase||"@").onChange(e=>t(this,void 0,void 0,function*(){this.plugin.settings.autocompleteTriggerPhrase=e.trim(),yield this.plugin.saveSettings()}))),new e.Setting(n).setName("Wrap dates in links").setDesc("If enabled, dates created via autosuggestion will be wrapped in [[wikilinks]]").addToggle(e=>e.setValue(this.plugin.settings.autosuggestToggleLink).onChange(e=>t(this,void 0,void 0,function*(){this.plugin.settings.autosuggestToggleLink=e,yield this.plugin.saveSettings()}))),new e.Setting(n).setName("Default alias for links").setDesc("Specify a time format as the default alias when creating wikilink dates.").addText(e=>e.setPlaceholder("Enter an alias format").setValue(this.plugin.settings.defaultAlias).onChange(e=>t(this,void 0,void 0,function*(){this.plugin.settings.defaultAlias=e||"",yield this.plugin.saveSettings()})))}}class ul extends e.EditorSuggest{constructor(e,t){super(e),this.app=e,this.plugin=t,this.scope.register(["Shift"],"Enter",e=>(this.suggestions.useSelectedItem(e),!1)),this.plugin.settings.autosuggestToggleLink&&this.setInstructions([{command:"Shift",purpose:"Keep text as alias"}])}getSuggestions(e){const t=this.getDateSuggestions(e);return t.length?t:[{label:e.query}]}getDateSuggestions(e,t=["Now","Today","Yesterday","Tomorrow","In 1 hour","1 hour ago"]){if(e.query.match(/^time/))return["now","+15 minutes","+1 hour","-15 minutes","-1 hour"].map(e=>({label:`time:${e}`})).filter(t=>t.label.toLowerCase().startsWith(e.query));if(e.query.match(/(next|last|this)/i)){const t=e.query.match(/(next|last|this)/i)[1];return["week","month","year","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"].map(e=>({label:`${t} ${e}`})).filter(t=>t.label.toLowerCase().startsWith(e.query))}const n=e.query.match(/^in ([+-]?\d+)/i)||e.query.match(/^([+-]?\d+)/i);if(n){const t=n[1];return[{label:`in ${t} minutes`},{label:`in ${t} hours`},{label:`in ${t} days`},{label:`in ${t} weeks`},{label:`in ${t} months`},{label:`${t} days ago`},{label:`${t} weeks ago`},{label:`${t} months ago`}].filter(t=>t.label.toLowerCase().startsWith(e.query))}return t.map(e=>({label:e})).filter(t=>t.label.toLowerCase().startsWith(e.query))}renderSuggestion(e,t){t.setText(e.label)}selectSuggestion(e,t){const{editor:n}=this.context,r=t.shiftKey;let a="",s=this.plugin.settings.autosuggestToggleLink;if(e.label.startsWith("time:")){const t=e.label.substring(5);a=this.plugin.parseTime(t).formattedString,s=!1}else a=this.plugin.parseDate(e.label).formattedString;if(s){const t=p(this.plugin,e.label,r);a=h(this.app,a,t)}n.replaceRange(a,this.context.start,this.context.end),this.close()}onTrigger(e,t){var n;if(!this.plugin.settings.isAutosuggestEnabled)return null;const r=this.plugin.settings.autocompleteTriggerPhrase,a=(null===(n=this.context)||void 0===n?void 0:n.start)||{line:e.line,ch:e.ch-r.length};if(!t.getRange(a,e).startsWith(r))return null;const s=t.getRange({line:a.line,ch:a.ch-1},a);if(s&&/[`a-zA-Z0-9]/.test(s))return null;const i=t.getRange(a,e).substring(r.length);return" "===i?null:{start:a,end:e,query:i}}}function dl(t,n){const{workspace:r}=t.app,a=r.getActiveViewOfType(e.MarkdownView);if(!a)return;const s=a.editor,i=s.getCursor(),o=function(e){if(e.somethingSelected())return e.getSelection();{const t=function(e){const t=e.getCursor(),n=e.posToOffset(t),r=e.cm.state.wordAt(n);return{from:e.offsetToPos(r.from),to:e.offsetToPos(r.to)}}(e);return e.setSelection(t.from,t.to),e.getSelection()}}(s),u=t.parseDate(o);if(!u.moment.isValid())return void s.setCursor({line:i.line,ch:i.ch});let d;if("replace"==n){const e=p(t,o,!1);d=e?`[[${u.formattedString}|${e}]]`:`[[${u.formattedString}]]`}else if("link"==n)d=`[${o}](${u.formattedString})`;else if("clean"==n)d=`${u.formattedString}`;else if("time"==n){d=`${t.parseTime(o).formattedString}`}s.replaceSelection(d),function(e,t,n,r){const a=n.length-r.length;e.setCursor({line:t.line,ch:t.ch+a})}(s,i,d,o),s.focus()}function ll(t,n,r){const{workspace:a}=t.app,s=a.getActiveViewOfType(e.MarkdownView);if(s){s.editor.replaceSelection(window.moment(n).format(r))}}class cl extends e.SuggestModal{constructor(e,t){super(e),this.plugin=t}getSuggestions(e){const t=new ul(this.app,this.plugin).getDateSuggestions({query:e},["Today","Yesterday","Tomorrow"]);return t.map(e=>e.label).length?t.map(e=>e.label):[e]}renderSuggestion(e,t){t.createEl("div",{text:e})}onChooseSuggestion(t){const n=this.plugin.parseDate(t),r=n.moment;n.date&&r.isValid()?g(r).then(e=>{this.app.workspace.getLeaf().openFile(e)}):new e.Notice("Unable to parse date")}}class ml extends e.Plugin{onload(){return t(this,void 0,void 0,function*(){yield this.loadSettings(),this.addCommand({id:"nlp-dates",name:"Parse natural language date",callback:()=>dl(this,"replace")}),this.addCommand({id:"nlp-dates-link",name:"Parse natural language date (as link)",callback:()=>dl(this,"link")}),this.addCommand({id:"nlp-date-clean",name:"Parse natural language date (as plain text)",callback:()=>dl(this,"clean")}),this.addCommand({id:"nlp-parse-time",name:"Parse natural language time",callback:()=>dl(this,"time")}),this.addCommand({id:"nlp-now",name:"Insert the current date and time",callback:()=>function(e){const t=`${e.settings.format}${e.settings.separator}${e.settings.timeFormat}`;ll(e,new Date,t)}(this)}),this.addCommand({id:"nlp-today",name:"Insert the current date",callback:()=>function(e){const t=e.settings.format;ll(e,new Date,t)}(this)}),this.addCommand({id:"nlp-time",name:"Insert the current time",callback:()=>function(e){const t=e.settings.timeFormat;ll(e,new Date,t)}(this)}),this.addCommand({id:"nlp-picker",name:"Date picker",checkCallback:t=>{if(t)return!!this.app.workspace.getActiveViewOfType(e.MarkdownView);new w(this.app,this).open()}}),this.addCommand({id:"nlp-open-daily-note",name:"Open daily note using natural language",callback:()=>{new cl(this.app,this).open()}}),this.addSettingTab(new ol(this.app,this)),this.registerObsidianProtocolHandler("nldates",e=>{this.actionHandler(e)}),this.registerEditorSuggest(new ul(this.app,this)),this.app.workspace.onLayoutReady(()=>{this.parser=new al})})}onunload(){console.debug("Unloading natural language date parser plugin")}loadSettings(){return t(this,void 0,void 0,function*(){this.settings=Object.assign({},sl,yield this.loadData())})}saveSettings(){return t(this,void 0,void 0,function*(){yield this.saveData(this.settings)})}parse(e,t){const n=this.parser.getParsedDate(e,this.settings.weekStart),r=function(e,t){return window.moment(e).format(t)}(n,t);return"Invalid date"===r&&console.debug("Input date "+e+" can't be parsed by nldates"),{formattedString:r,date:n,moment:window.moment(n)}}parseDate(e){let t=this.settings.format;if(this.settings.appendTimeToDateWhenRelated){const n=e.match(/\bat\b|\bnow\b|\bin\b|\bago\b/gi),r=e.match(/\b\d{1,2}(?::\d{2})?(?:\s*(?:am|pm|AM|PM))\b|\b\d{1,2}:\d{2}\b/);(n||r)&&(e.match(/\bdays?\b|\bmonths?\b|\byears?\b|\bweeks?\b/gi)||(t+=this.settings.separator+this.settings.timeFormat))}return this.parse(e,t)}parseTime(e){return this.parse(e,this.settings.timeFormat)}actionHandler(e){return t(this,void 0,void 0,function*(){const{workspace:t}=this.app,n=this.parseDate(e.day),r=(a=e.newPane||"yes",["y","yes","1","t","true"].indexOf(a.toLowerCase())>=0);var a;if(n.moment.isValid()){const e=yield g(n.moment);yield t.getLeaf(r).openFile(e)}})}}module.exports=ml; + + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/nldates-redux/manifest.json b/.obsidian/plugins/nldates-redux/manifest.json new file mode 100644 index 0000000..5e8fd4c --- /dev/null +++ b/.obsidian/plugins/nldates-redux/manifest.json @@ -0,0 +1,11 @@ +{ + "id": "nldates-redux", + "name": "Natural Language Dates Redux", + "description": "Work with dates in natural language. Now with Notion-like behavior!", + "version": "0.8.28", + "author": "Tommy Bergeron", + "authorUrl": "https://github.com/tbergeron", + "fundingUrl": "https://www.paypal.com/donate/?hosted_button_id=93Z9BUUD778SG", + "isDesktopOnly": false, + "minAppVersion": "1.4.0" +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-auto-link-title/main.js b/.obsidian/plugins/obsidian-auto-link-title/main.js new file mode 100644 index 0000000..72ffd51 --- /dev/null +++ b/.obsidian/plugins/obsidian-auto-link-title/main.js @@ -0,0 +1,771 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ROLLUP +if you want to view the source visit the plugins github repository +*/ + +'use strict'; + +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()); + }); +} + +typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +const DEFAULT_SETTINGS = { + regex: /^(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})$/i, + lineRegex: /(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/gi, + linkRegex: /^\[([^\[\]]*)\]\((https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})\)$/i, + linkLineRegex: /\[([^\[\]]*)\]\((https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})\)/gi, + imageRegex: /\.(gif|jpe?g|tiff?|png|webp|bmp|tga|psd|ai)$/i, + enhanceDefaultPaste: true, + shouldPreserveSelectionAsTitle: false, + enhanceDropEvents: true, + websiteBlacklist: "", + maximumTitleLength: 0, + useNewScraper: false, + linkPreviewApiKey: "", + useBetterPasteId: false, +}; +class AutoLinkTitleSettingTab extends obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + let { containerEl } = this; + containerEl.empty(); + new obsidian.Setting(containerEl) + .setName("Enhance Default Paste") + .setDesc("Fetch the link title when pasting a link in the editor with the default paste command") + .addToggle((val) => val + .setValue(this.plugin.settings.enhanceDefaultPaste) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + console.log(value); + this.plugin.settings.enhanceDefaultPaste = value; + yield this.plugin.saveSettings(); + }))); + new obsidian.Setting(containerEl) + .setName("Enhance Drop Events") + .setDesc("Fetch the link title when drag and dropping a link from another program") + .addToggle((val) => val + .setValue(this.plugin.settings.enhanceDropEvents) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + console.log(value); + this.plugin.settings.enhanceDropEvents = value; + yield this.plugin.saveSettings(); + }))); + new obsidian.Setting(containerEl) + .setName("Maximum title length") + .setDesc("Set the maximum length of the title. Set to 0 to disable.") + .addText((val) => val + .setValue(this.plugin.settings.maximumTitleLength.toString(10)) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + const titleLength = Number(value); + this.plugin.settings.maximumTitleLength = + isNaN(titleLength) || titleLength < 0 ? 0 : titleLength; + yield this.plugin.saveSettings(); + }))); + new obsidian.Setting(containerEl) + .setName("Preserve selection as title") + .setDesc("Whether to prefer selected text as title over fetched title when pasting") + .addToggle((val) => val + .setValue(this.plugin.settings.shouldPreserveSelectionAsTitle) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + console.log(value); + this.plugin.settings.shouldPreserveSelectionAsTitle = value; + yield this.plugin.saveSettings(); + }))); + new obsidian.Setting(containerEl) + .setName("Website Blacklist") + .setDesc("List of strings (comma separated) that disable autocompleting website titles. Can be URLs or arbitrary text.") + .addTextArea((val) => val + .setValue(this.plugin.settings.websiteBlacklist) + .setPlaceholder("localhost, tiktok.com") + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + this.plugin.settings.websiteBlacklist = value; + yield this.plugin.saveSettings(); + }))); + new obsidian.Setting(containerEl) + .setName("Use New Scraper") + .setDesc("Use experimental new scraper, seems to work well on desktop but not mobile.") + .addToggle((val) => val + .setValue(this.plugin.settings.useNewScraper) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + console.log(value); + this.plugin.settings.useNewScraper = value; + yield this.plugin.saveSettings(); + }))); + new obsidian.Setting(containerEl) + .setName("Use Better Fetching Placeholder") + .setDesc("Use a more readable placeholder when fetching the title of a link.") + .addToggle((val) => val + .setValue(this.plugin.settings.useBetterPasteId) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + console.log(value); + this.plugin.settings.useBetterPasteId = value; + yield this.plugin.saveSettings(); + }))); + new obsidian.Setting(containerEl) + .setName("LinkPreview API Key") + .setDesc("API key for the LinkPreview.net service. Get one at https://my.linkpreview.net/access_keys") + .addText((text) => text + .setValue(this.plugin.settings.linkPreviewApiKey || "") + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + const trimmedValue = value.trim(); + if (trimmedValue.length > 0 && trimmedValue.length !== 32) { + new obsidian.Notice("LinkPreview API key must be 32 characters long"); + this.plugin.settings.linkPreviewApiKey = ""; + } + else { + this.plugin.settings.linkPreviewApiKey = trimmedValue; + } + yield this.plugin.saveSettings(); + }))); + } +} + +class CheckIf { + static isMarkdownLinkAlready(editor) { + let cursor = editor.getCursor(); + // Check if the characters before the url are ]( to indicate a markdown link + var titleEnd = editor.getRange({ ch: cursor.ch - 2, line: cursor.line }, { ch: cursor.ch, line: cursor.line }); + return titleEnd == "]("; + } + static isAfterQuote(editor) { + let cursor = editor.getCursor(); + // Check if the characters before the url are " or ' to indicate we want the url directly + // This is common in elements like + var beforeChar = editor.getRange({ ch: cursor.ch - 1, line: cursor.line }, { ch: cursor.ch, line: cursor.line }); + return beforeChar == "\"" || beforeChar == "'"; + } + static isUrl(text) { + let urlRegex = new RegExp(DEFAULT_SETTINGS.regex); + return urlRegex.test(text); + } + static isImage(text) { + let imageRegex = new RegExp(DEFAULT_SETTINGS.imageRegex); + return imageRegex.test(text); + } + static isLinkedUrl(text) { + let urlRegex = new RegExp(DEFAULT_SETTINGS.linkRegex); + return urlRegex.test(text); + } +} + +class EditorExtensions { + static getSelectedText(editor) { + if (!editor.somethingSelected()) { + let wordBoundaries = this.getWordBoundaries(editor); + editor.setSelection(wordBoundaries.start, wordBoundaries.end); + } + return editor.getSelection(); + } + static cursorWithinBoundaries(cursor, match) { + let startIndex = match.index; + let endIndex = match.index + match[0].length; + return startIndex <= cursor.ch && cursor.ch <= endIndex; + } + static getWordBoundaries(editor) { + let cursor = editor.getCursor(); + // If its a normal URL token this is not a markdown link + // In this case we can simply overwrite the link boundaries as-is + let lineText = editor.getLine(cursor.line); + // First check if we're in a link + let linksInLine = lineText.matchAll(DEFAULT_SETTINGS.linkLineRegex); + for (let match of linksInLine) { + if (this.cursorWithinBoundaries(cursor, match)) { + return { + start: { line: cursor.line, ch: match.index }, + end: { line: cursor.line, ch: match.index + match[0].length }, + }; + } + } + // If not, check if we're in just a standard ol' URL. + let urlsInLine = lineText.matchAll(DEFAULT_SETTINGS.lineRegex); + for (let match of urlsInLine) { + if (this.cursorWithinBoundaries(cursor, match)) { + return { + start: { line: cursor.line, ch: match.index }, + end: { line: cursor.line, ch: match.index + match[0].length }, + }; + } + } + return { + start: cursor, + end: cursor, + }; + } + static getEditorPositionFromIndex(content, index) { + let substr = content.substr(0, index); + let l = 0; + let offset = -1; + let r = -1; + for (; (r = substr.indexOf("\n", r + 1)) !== -1; l++, offset = r) + ; + offset += 1; + let ch = content.substr(offset, index - offset).length; + return { line: l, ch: ch }; + } +} + +function blank$1(text) { + return text === undefined || text === null || text === ''; +} +function notBlank$1(text) { + return !blank$1(text); +} +function scrape(url) { + return __awaiter(this, void 0, void 0, function* () { + try { + const response = yield obsidian.requestUrl(url); + if (!response.headers['content-type'].includes('text/html')) + return getUrlFinalSegment$1(url); + const html = response.text; + const doc = new DOMParser().parseFromString(html, 'text/html'); + const title = doc.querySelector('title'); + if (blank$1(title === null || title === void 0 ? void 0 : title.innerText)) { + // If site is javascript based and has a no-title attribute when unloaded, use it. + var noTitle = title === null || title === void 0 ? void 0 : title.getAttr('no-title'); + if (notBlank$1(noTitle)) { + return noTitle; + } + // Otherwise if the site has no title/requires javascript simply return Title Unknown + return url; + } + return title.innerText; + } + catch (ex) { + console.error(ex); + return ''; + } + }); +} +function getUrlFinalSegment$1(url) { + try { + const segments = new URL(url).pathname.split('/'); + const last = segments.pop() || segments.pop(); // Handle potential trailing slash + return last; + } + catch (_) { + return 'File'; + } +} +function getPageTitle$1(url) { + return __awaiter(this, void 0, void 0, function* () { + if (!(url.startsWith('http') || url.startsWith('https'))) { + url = 'https://' + url; + } + return scrape(url); + }); +} + +const electronPkg = require("electron"); +function blank(text) { + return text === undefined || text === null || text === ""; +} +function notBlank(text) { + return !blank(text); +} +// async wrapper to load a url and settle on load finish or fail +function load(window, url) { + return __awaiter(this, void 0, void 0, function* () { + return new Promise((resolve, reject) => { + window.webContents.on("did-finish-load", (event) => resolve(event)); + window.webContents.on("did-fail-load", (event) => reject(event)); + window.loadURL(url); + }); + }); +} +function electronGetPageTitle(url) { + return __awaiter(this, void 0, void 0, function* () { + const { remote } = electronPkg; + const { BrowserWindow } = remote; + try { + const window = new BrowserWindow({ + width: 1000, + height: 600, + webPreferences: { + webSecurity: false, + nodeIntegration: true, + images: false, + }, + show: false, + }); + window.webContents.setAudioMuted(true); + window.webContents.on("will-navigate", (event, newUrl) => { + event.preventDefault(); + window.loadURL(newUrl); + }); + yield load(window, url); + try { + const title = window.webContents.getTitle(); + window.destroy(); + if (notBlank(title)) { + return title; + } + else { + return url; + } + } + catch (ex) { + window.destroy(); + return url; + } + } + catch (ex) { + console.error(ex); + return ""; + } + }); +} +function nonElectronGetPageTitle(url) { + return __awaiter(this, void 0, void 0, function* () { + try { + const html = yield obsidian.request({ url }); + const doc = new DOMParser().parseFromString(html, "text/html"); + const title = doc.querySelectorAll("title")[0]; + if (title == null || blank(title === null || title === void 0 ? void 0 : title.innerText)) { + // If site is javascript based and has a no-title attribute when unloaded, use it. + var noTitle = title === null || title === void 0 ? void 0 : title.getAttr("no-title"); + if (notBlank(noTitle)) { + return noTitle; + } + // Otherwise if the site has no title/requires javascript simply return Title Unknown + return url; + } + return title.innerText; + } + catch (ex) { + console.error(ex); + return ""; + } + }); +} +function getUrlFinalSegment(url) { + try { + const segments = new URL(url).pathname.split('/'); + const last = segments.pop() || segments.pop(); // Handle potential trailing slash + return last; + } + catch (_) { + return "File"; + } +} +function tryGetFileType(url) { + return __awaiter(this, void 0, void 0, function* () { + try { + const response = yield fetch(url, { method: "HEAD" }); + // Ensure site returns an ok status code before scraping + if (!response.ok) { + return "Site Unreachable"; + } + // Ensure site is an actual HTML page and not a pdf or 3 gigabyte video file. + let contentType = response.headers.get("content-type"); + if (!contentType.includes("text/html")) { + return getUrlFinalSegment(url); + } + return null; + } + catch (err) { + return null; + } + }); +} +function getPageTitle(url) { + return __awaiter(this, void 0, void 0, function* () { + // If we're on Desktop use the Electron scraper + if (!(url.startsWith("http") || url.startsWith("https"))) { + url = "https://" + url; + } + // Try to do a HEAD request to see if the site is reachable and if it's an HTML page + // If we error out due to CORS, we'll just try to scrape the page anyway. + let fileType = yield tryGetFileType(url); + if (fileType) { + return fileType; + } + if (electronPkg != null) { + return electronGetPageTitle(url); + } + else { + return nonElectronGetPageTitle(url); + } + }); +} + +class AutoLinkTitle extends obsidian.Plugin { + constructor() { + super(...arguments); + this.shortTitle = (title) => { + if (this.settings.maximumTitleLength === 0) { + return title; + } + if (title.length < this.settings.maximumTitleLength + 3) { + return title; + } + const shortenedTitle = `${title.slice(0, this.settings.maximumTitleLength)}...`; + return shortenedTitle; + }; + } + onload() { + return __awaiter(this, void 0, void 0, function* () { + console.log("loading obsidian-auto-link-title"); + yield this.loadSettings(); + this.blacklist = this.settings.websiteBlacklist + .split(",") + .map((s) => s.trim()) + .filter((s) => s.length > 0); + // Listen to paste event + this.pasteFunction = this.pasteUrlWithTitle.bind(this); + // Listen to drop event + this.dropFunction = this.dropUrlWithTitle.bind(this); + this.addCommand({ + id: "auto-link-title-paste", + name: "Paste URL and auto fetch title", + editorCallback: (editor) => this.manualPasteUrlWithTitle(editor), + hotkeys: [], + }); + this.addCommand({ + id: "auto-link-title-normal-paste", + name: "Normal paste (no fetching behavior)", + editorCallback: (editor) => this.normalPaste(editor), + hotkeys: [ + { + modifiers: ["Mod", "Shift"], + key: "v", + }, + ], + }); + this.registerEvent(this.app.workspace.on("editor-paste", this.pasteFunction)); + this.registerEvent(this.app.workspace.on("editor-drop", this.dropFunction)); + this.addCommand({ + id: "enhance-url-with-title", + name: "Enhance existing URL with link and title", + editorCallback: (editor) => this.addTitleToLink(editor), + hotkeys: [ + { + modifiers: ["Mod", "Shift"], + key: "e", + }, + ], + }); + this.addSettingTab(new AutoLinkTitleSettingTab(this.app, this)); + }); + } + addTitleToLink(editor) { + // Only attempt fetch if online + if (!navigator.onLine) + return; + let selectedText = (EditorExtensions.getSelectedText(editor) || "").trim(); + // If the cursor is on a raw html link, convert to a markdown link and fetch title + if (CheckIf.isUrl(selectedText)) { + this.convertUrlToTitledLink(editor, selectedText); + } + // If the cursor is on the URL part of a markdown link, fetch title and replace existing link title + else if (CheckIf.isLinkedUrl(selectedText)) { + const link = this.getUrlFromLink(selectedText); + this.convertUrlToTitledLink(editor, link); + } + } + normalPaste(editor) { + return __awaiter(this, void 0, void 0, function* () { + let clipboardText = yield navigator.clipboard.readText(); + if (clipboardText === null || clipboardText === "") + return; + editor.replaceSelection(clipboardText); + }); + } + // Simulate standard paste but using editor.replaceSelection with clipboard text since we can't seem to dispatch a paste event. + manualPasteUrlWithTitle(editor) { + return __awaiter(this, void 0, void 0, function* () { + const clipboardText = yield navigator.clipboard.readText(); + // Only attempt fetch if online + if (!navigator.onLine) { + editor.replaceSelection(clipboardText); + return; + } + if (clipboardText == null || clipboardText == "") + return; + // If its not a URL, we return false to allow the default paste handler to take care of it. + // Similarly, image urls don't have a meaningful attribute so downloading it + // to fetch the title is a waste of bandwidth. + if (!CheckIf.isUrl(clipboardText) || CheckIf.isImage(clipboardText)) { + editor.replaceSelection(clipboardText); + return; + } + // If it looks like we're pasting the url into a markdown link already, don't fetch title + // as the user has already probably put a meaningful title, also it would lead to the title + // being inside the link. + if (CheckIf.isMarkdownLinkAlready(editor) || CheckIf.isAfterQuote(editor)) { + editor.replaceSelection(clipboardText); + return; + } + // If url is pasted over selected text and setting is enabled, no need to fetch title, + // just insert a link + let selectedText = (EditorExtensions.getSelectedText(editor) || "").trim(); + if (selectedText && this.settings.shouldPreserveSelectionAsTitle) { + editor.replaceSelection(`[${selectedText}](${clipboardText})`); + return; + } + // At this point we're just pasting a link in a normal fashion, fetch its title. + this.convertUrlToTitledLink(editor, clipboardText); + return; + }); + } + pasteUrlWithTitle(clipboard, editor) { + return __awaiter(this, void 0, void 0, function* () { + if (!this.settings.enhanceDefaultPaste) { + return; + } + if (clipboard.defaultPrevented) + return; + // Only attempt fetch if online + if (!navigator.onLine) + return; + let clipboardText = clipboard.clipboardData.getData("text/plain"); + if (clipboardText === null || clipboardText === "") + return; + // If its not a URL, we return false to allow the default paste handler to take care of it. + // Similarly, image urls don't have a meaningful <title> attribute so downloading it + // to fetch the title is a waste of bandwidth. + if (!CheckIf.isUrl(clipboardText) || CheckIf.isImage(clipboardText)) { + return; + } + // We've decided to handle the paste, stop propagation to the default handler. + clipboard.stopPropagation(); + clipboard.preventDefault(); + // If it looks like we're pasting the url into a markdown link already, don't fetch title + // as the user has already probably put a meaningful title, also it would lead to the title + // being inside the link. + if (CheckIf.isMarkdownLinkAlready(editor) || CheckIf.isAfterQuote(editor)) { + editor.replaceSelection(clipboardText); + return; + } + // If url is pasted over selected text and setting is enabled, no need to fetch title, + // just insert a link + let selectedText = (EditorExtensions.getSelectedText(editor) || "").trim(); + if (selectedText && this.settings.shouldPreserveSelectionAsTitle) { + editor.replaceSelection(`[${selectedText}](${clipboardText})`); + return; + } + // At this point we're just pasting a link in a normal fashion, fetch its title. + this.convertUrlToTitledLink(editor, clipboardText); + return; + }); + } + dropUrlWithTitle(dropEvent, editor) { + return __awaiter(this, void 0, void 0, function* () { + if (!this.settings.enhanceDropEvents) { + return; + } + if (dropEvent.defaultPrevented) + return; + // Only attempt fetch if online + if (!navigator.onLine) + return; + let dropText = dropEvent.dataTransfer.getData("text/plain"); + if (dropText === null || dropText === "") + return; + // If its not a URL, we return false to allow the default paste handler to take care of it. + // Similarly, image urls don't have a meaningful <title> attribute so downloading it + // to fetch the title is a waste of bandwidth. + if (!CheckIf.isUrl(dropText) || CheckIf.isImage(dropText)) { + return; + } + // We've decided to handle the paste, stop propagation to the default handler. + dropEvent.stopPropagation(); + dropEvent.preventDefault(); + // If it looks like we're pasting the url into a markdown link already, don't fetch title + // as the user has already probably put a meaningful title, also it would lead to the title + // being inside the link. + if (CheckIf.isMarkdownLinkAlready(editor) || CheckIf.isAfterQuote(editor)) { + editor.replaceSelection(dropText); + return; + } + // If url is pasted over selected text and setting is enabled, no need to fetch title, + // just insert a link + let selectedText = (EditorExtensions.getSelectedText(editor) || "").trim(); + if (selectedText && this.settings.shouldPreserveSelectionAsTitle) { + editor.replaceSelection(`[${selectedText}](${dropText})`); + return; + } + // At this point we're just pasting a link in a normal fashion, fetch its title. + this.convertUrlToTitledLink(editor, dropText); + return; + }); + } + isBlacklisted(url) { + return __awaiter(this, void 0, void 0, function* () { + yield this.loadSettings(); + this.blacklist = this.settings.websiteBlacklist + .split(/,|\n/) + .map((s) => s.trim()) + .filter((s) => s.length > 0); + return this.blacklist.some((site) => url.includes(site)); + }); + } + convertUrlToTitledLink(editor, url) { + return __awaiter(this, void 0, void 0, function* () { + if (yield this.isBlacklisted(url)) { + let domain = new URL(url).hostname; + editor.replaceSelection(`[${domain}](${url})`); + return; + } + // Generate a unique id for find/replace operations for the title. + const pasteId = this.getPasteId(); + // Instantly paste so you don't wonder if paste is broken + editor.replaceSelection(`[${pasteId}](${url})`); + // Fetch title from site, replace Fetching Title with actual title + const title = yield this.fetchUrlTitle(url); + const escapedTitle = this.escapeMarkdown(title); + const shortenedTitle = this.shortTitle(escapedTitle); + const text = editor.getValue(); + const start = text.indexOf(pasteId); + if (start < 0) { + console.log(`Unable to find text "${pasteId}" in current editor, bailing out; link ${url}`); + } + else { + const end = start + pasteId.length; + const startPos = EditorExtensions.getEditorPositionFromIndex(text, start); + const endPos = EditorExtensions.getEditorPositionFromIndex(text, end); + editor.replaceRange(shortenedTitle, startPos, endPos); + } + }); + } + escapeMarkdown(text) { + var unescaped = text.replace(/\\(\*|_|`|~|\\|\[|\])/g, "$1"); // unescape any "backslashed" character + var escaped = unescaped.replace(/(\*|_|`|<|>|~|\\|\[|\])/g, "\\$1"); // escape *, _, `, ~, \, [, ], <, and > + var escaped = unescaped.replace(/(\*|_|`|\||<|>|~|\\|\[|\])/g, "\\$1"); // escape *, _, `, ~, \, |, [, ], <, and > + return escaped; + } + fetchUrlTitleViaLinkPreview(url) { + return __awaiter(this, void 0, void 0, function* () { + if (this.settings.linkPreviewApiKey.length !== 32) { + console.error("LinkPreview API key is not 32 characters long, please check your settings"); + return ""; + } + try { + const apiEndpoint = `https://api.linkpreview.net/?q=${encodeURIComponent(url)}`; + const response = yield fetch(apiEndpoint, { + headers: { + "X-Linkpreview-Api-Key": this.settings.linkPreviewApiKey, + }, + }); + const data = yield response.json(); + return data.title; + } + catch (error) { + console.error(error); + return ""; + } + }); + } + fetchUrlTitle(url) { + return __awaiter(this, void 0, void 0, function* () { + try { + let title = ""; + title = yield this.fetchUrlTitleViaLinkPreview(url); + console.log(`Title via Link Preview: ${title}`); + if (title === "") { + console.log("Title via Link Preview failed, falling back to scraper"); + if (this.settings.useNewScraper) { + console.log("Using new scraper"); + title = yield getPageTitle$1(url); + } + else { + console.log("Using old scraper"); + title = yield getPageTitle(url); + } + } + console.log(`Title: ${title}`); + title = + title.replace(/(\r\n|\n|\r)/gm, "").trim() || + "Title Unavailable | Site Unreachable"; + return title; + } + catch (error) { + console.error(error); + return "Error fetching title"; + } + }); + } + getUrlFromLink(link) { + let urlRegex = new RegExp(DEFAULT_SETTINGS.linkRegex); + return urlRegex.exec(link)[2]; + } + getPasteId() { + var base = "Fetching Title"; + if (this.settings.useBetterPasteId) { + return this.getBetterPasteId(base); + } + else { + return `${base}#${this.createBlockHash()}`; + } + } + getBetterPasteId(base) { + // After every character, add 0, 1 or 2 invisible characters + // so that to the user it looks just like the base string. + // The number of combinations is 3^14 = 4782969 + let result = ""; + var invisibleCharacter = "\u200B"; + var maxInvisibleCharacters = 2; + for (var i = 0; i < base.length; i++) { + var count = Math.floor(Math.random() * (maxInvisibleCharacters + 1)); + result += base.charAt(i) + invisibleCharacter.repeat(count); + } + return result; + } + // Custom hashid by @shabegom + createBlockHash() { + let result = ""; + var characters = "abcdefghijklmnopqrstuvwxyz0123456789"; + var charactersLength = characters.length; + for (var i = 0; i < 4; i++) { + result += characters.charAt(Math.floor(Math.random() * charactersLength)); + } + return result; + } + onunload() { + console.log("unloading obsidian-auto-link-title"); + } + loadSettings() { + return __awaiter(this, void 0, void 0, function* () { + this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData()); + }); + } + saveSettings() { + return __awaiter(this, void 0, void 0, function* () { + yield this.saveData(this.settings); + }); + } +} + +module.exports = AutoLinkTitle; + + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-auto-link-title/manifest.json b/.obsidian/plugins/obsidian-auto-link-title/manifest.json new file mode 100644 index 0000000..e3f4db2 --- /dev/null +++ b/.obsidian/plugins/obsidian-auto-link-title/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "obsidian-auto-link-title", + "name": "Auto Link Title", + "version": "1.5.5", + "minAppVersion": "0.12.17", + "description": "This plugin automatically fetches the titles of links from the web", + "author": "Matt Furden", + "authorUrl": "https://github.com/zolrath", + "isDesktopOnly": false +} diff --git a/.obsidian/plugins/obsidian-auto-link-title/styles.css b/.obsidian/plugins/obsidian-auto-link-title/styles.css new file mode 100644 index 0000000..ad3bb8f --- /dev/null +++ b/.obsidian/plugins/obsidian-auto-link-title/styles.css @@ -0,0 +1 @@ +/* no styles */ \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-git/main.js b/.obsidian/plugins/obsidian-git/main.js new file mode 100644 index 0000000..199a1d6 --- /dev/null +++ b/.obsidian/plugins/obsidian-git/main.js @@ -0,0 +1,415 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source visit the plugins github repository (https://github.com/denolehov/obsidian-git) +*/ + +var hF=Object.create;var uc=Object.defineProperty;var pF=Object.getOwnPropertyDescriptor;var mF=Object.getOwnPropertyNames;var gF=Object.getPrototypeOf,vF=Object.prototype.hasOwnProperty;var a_=t=>{throw TypeError(t)};var wF=(t,e,r)=>e in t?uc(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var _F=(t,e)=>()=>(t&&(e=t(t=0)),e);var H=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),bF=(t,e)=>{for(var r in e)uc(t,r,{get:e[r],enumerable:!0})},o_=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of mF(e))!vF.call(t,n)&&n!==r&&uc(t,n,{get:()=>e[n],enumerable:!(i=pF(e,n))||i.enumerable});return t};var Ht=(t,e,r)=>(r=t!=null?hF(gF(t)):{},o_(e||!t||!t.__esModule?uc(r,"default",{value:t,enumerable:!0}):r,t)),yF=t=>o_(uc({},"__esModule",{value:!0}),t);var Ve=(t,e,r)=>wF(t,typeof e!="symbol"?e+"":e,r),Bp=(t,e,r)=>e.has(t)||a_("Cannot "+r);var R=(t,e,r)=>(Bp(t,e,"read from private field"),r?r.call(t):e.get(t)),pe=(t,e,r)=>e.has(t)?a_("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,r),we=(t,e,r,i)=>(Bp(t,e,"write to private field"),i?i.call(t,r):e.set(t,r),r),Me=(t,e,r)=>(Bp(t,e,"access private method"),r);var u_=H(vf=>{"use strict";m();vf.byteLength=EF;vf.toByteArray=kF;vf.fromByteArray=TF;var on=[],mi=[],xF=typeof Uint8Array!="undefined"?Uint8Array:Array,Hp="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";for(Js=0,l_=Hp.length;Js<l_;++Js)on[Js]=Hp[Js],mi[Hp.charCodeAt(Js)]=Js;var Js,l_;mi[45]=62;mi[95]=63;function c_(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");r===-1&&(r=e);var i=r===e?0:4-r%4;return[r,i]}function EF(t){var e=c_(t),r=e[0],i=e[1];return(r+i)*3/4-i}function SF(t,e,r){return(e+r)*3/4-r}function kF(t){var e,r=c_(t),i=r[0],n=r[1],s=new xF(SF(t,i,n)),a=0,o=n>0?i-4:i,l;for(l=0;l<o;l+=4)e=mi[t.charCodeAt(l)]<<18|mi[t.charCodeAt(l+1)]<<12|mi[t.charCodeAt(l+2)]<<6|mi[t.charCodeAt(l+3)],s[a++]=e>>16&255,s[a++]=e>>8&255,s[a++]=e&255;return n===2&&(e=mi[t.charCodeAt(l)]<<2|mi[t.charCodeAt(l+1)]>>4,s[a++]=e&255),n===1&&(e=mi[t.charCodeAt(l)]<<10|mi[t.charCodeAt(l+1)]<<4|mi[t.charCodeAt(l+2)]>>2,s[a++]=e>>8&255,s[a++]=e&255),s}function AF(t){return on[t>>18&63]+on[t>>12&63]+on[t>>6&63]+on[t&63]}function CF(t,e,r){for(var i,n=[],s=e;s<r;s+=3)i=(t[s]<<16&16711680)+(t[s+1]<<8&65280)+(t[s+2]&255),n.push(AF(i));return n.join("")}function TF(t){for(var e,r=t.length,i=r%3,n=[],s=16383,a=0,o=r-i;a<o;a+=s)n.push(CF(t,a,a+s>o?o:a+s));return i===1?(e=t[r-1],n.push(on[e>>2]+on[e<<4&63]+"==")):i===2&&(e=(t[r-2]<<8)+t[r-1],n.push(on[e>>10]+on[e>>4&63]+on[e<<2&63]+"=")),n.join("")}});var f_=H(Up=>{m();Up.read=function(t,e,r,i,n){var s,a,o=n*8-i-1,l=(1<<o)-1,c=l>>1,u=-7,f=r?n-1:0,d=r?-1:1,h=t[e+f];for(f+=d,s=h&(1<<-u)-1,h>>=-u,u+=o;u>0;s=s*256+t[e+f],f+=d,u-=8);for(a=s&(1<<-u)-1,s>>=-u,u+=i;u>0;a=a*256+t[e+f],f+=d,u-=8);if(s===0)s=1-c;else{if(s===l)return a?NaN:(h?-1:1)*(1/0);a=a+Math.pow(2,i),s=s-c}return(h?-1:1)*a*Math.pow(2,s-i)};Up.write=function(t,e,r,i,n,s){var a,o,l,c=s*8-n-1,u=(1<<c)-1,f=u>>1,d=n===23?Math.pow(2,-24)-Math.pow(2,-77):0,h=i?0:s-1,p=i?1:-1,g=e<0||e===0&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(o=isNaN(e)?1:0,a=u):(a=Math.floor(Math.log(e)/Math.LN2),e*(l=Math.pow(2,-a))<1&&(a--,l*=2),a+f>=1?e+=d/l:e+=d*Math.pow(2,1-f),e*l>=2&&(a++,l/=2),a+f>=u?(o=0,a=u):a+f>=1?(o=(e*l-1)*Math.pow(2,n),a=a+f):(o=e*Math.pow(2,f-1)*Math.pow(2,n),a=0));n>=8;t[r+h]=o&255,h+=p,o/=256,n-=8);for(a=a<<n|o,c+=n;c>0;t[r+h]=a&255,h+=p,a/=256,c-=8);t[r+h-p]|=g*128}});var Zp=H(So=>{"use strict";m();var Gp=u_(),xo=f_(),d_=typeof Symbol=="function"&&typeof Symbol.for=="function"?Symbol.for("nodejs.util.inspect.custom"):null;So.Buffer=F;So.SlowBuffer=MF;So.INSPECT_MAX_BYTES=50;var wf=2147483647;So.kMaxLength=wf;F.TYPED_ARRAY_SUPPORT=PF();!F.TYPED_ARRAY_SUPPORT&&typeof console!="undefined"&&typeof console.error=="function"&&console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support.");function PF(){try{let t=new Uint8Array(1),e={foo:function(){return 42}};return Object.setPrototypeOf(e,Uint8Array.prototype),Object.setPrototypeOf(t,e),t.foo()===42}catch(t){return!1}}Object.defineProperty(F.prototype,"parent",{enumerable:!0,get:function(){if(F.isBuffer(this))return this.buffer}});Object.defineProperty(F.prototype,"offset",{enumerable:!0,get:function(){if(F.isBuffer(this))return this.byteOffset}});function jn(t){if(t>wf)throw new RangeError('The value "'+t+'" is invalid for option "size"');let e=new Uint8Array(t);return Object.setPrototypeOf(e,F.prototype),e}function F(t,e,r){if(typeof t=="number"){if(typeof e=="string")throw new TypeError('The "string" argument must be of type string. Received type number');return Wp(t)}return g_(t,e,r)}F.poolSize=8192;function g_(t,e,r){if(typeof t=="string")return $F(t,e);if(ArrayBuffer.isView(t))return FF(t);if(t==null)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(ln(t,ArrayBuffer)||t&&ln(t.buffer,ArrayBuffer)||typeof SharedArrayBuffer!="undefined"&&(ln(t,SharedArrayBuffer)||t&&ln(t.buffer,SharedArrayBuffer)))return Vp(t,e,r);if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type number');let i=t.valueOf&&t.valueOf();if(i!=null&&i!==t)return F.from(i,e,r);let n=IF(t);if(n)return n;if(typeof Symbol!="undefined"&&Symbol.toPrimitive!=null&&typeof t[Symbol.toPrimitive]=="function")return F.from(t[Symbol.toPrimitive]("string"),e,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}F.from=function(t,e,r){return g_(t,e,r)};Object.setPrototypeOf(F.prototype,Uint8Array.prototype);Object.setPrototypeOf(F,Uint8Array);function v_(t){if(typeof t!="number")throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function RF(t,e,r){return v_(t),t<=0?jn(t):e!==void 0?typeof r=="string"?jn(t).fill(e,r):jn(t).fill(e):jn(t)}F.alloc=function(t,e,r){return RF(t,e,r)};function Wp(t){return v_(t),jn(t<0?0:qp(t)|0)}F.allocUnsafe=function(t){return Wp(t)};F.allocUnsafeSlow=function(t){return Wp(t)};function $F(t,e){if((typeof e!="string"||e==="")&&(e="utf8"),!F.isEncoding(e))throw new TypeError("Unknown encoding: "+e);let r=w_(t,e)|0,i=jn(r),n=i.write(t,e);return n!==r&&(i=i.slice(0,n)),i}function jp(t){let e=t.length<0?0:qp(t.length)|0,r=jn(e);for(let i=0;i<e;i+=1)r[i]=t[i]&255;return r}function FF(t){if(ln(t,Uint8Array)){let e=new Uint8Array(t);return Vp(e.buffer,e.byteOffset,e.byteLength)}return jp(t)}function Vp(t,e,r){if(e<0||t.byteLength<e)throw new RangeError('"offset" is outside of buffer bounds');if(t.byteLength<e+(r||0))throw new RangeError('"length" is outside of buffer bounds');let i;return e===void 0&&r===void 0?i=new Uint8Array(t):r===void 0?i=new Uint8Array(t,e):i=new Uint8Array(t,e,r),Object.setPrototypeOf(i,F.prototype),i}function IF(t){if(F.isBuffer(t)){let e=qp(t.length)|0,r=jn(e);return r.length===0||t.copy(r,0,0,e),r}if(t.length!==void 0)return typeof t.length!="number"||Xp(t.length)?jn(0):jp(t);if(t.type==="Buffer"&&Array.isArray(t.data))return jp(t.data)}function qp(t){if(t>=wf)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+wf.toString(16)+" bytes");return t|0}function MF(t){return+t!=t&&(t=0),F.alloc(+t)}F.isBuffer=function(e){return e!=null&&e._isBuffer===!0&&e!==F.prototype};F.compare=function(e,r){if(ln(e,Uint8Array)&&(e=F.from(e,e.offset,e.byteLength)),ln(r,Uint8Array)&&(r=F.from(r,r.offset,r.byteLength)),!F.isBuffer(e)||!F.isBuffer(r))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===r)return 0;let i=e.length,n=r.length;for(let s=0,a=Math.min(i,n);s<a;++s)if(e[s]!==r[s]){i=e[s],n=r[s];break}return i<n?-1:n<i?1:0};F.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}};F.concat=function(e,r){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(e.length===0)return F.alloc(0);let i;if(r===void 0)for(r=0,i=0;i<e.length;++i)r+=e[i].length;let n=F.allocUnsafe(r),s=0;for(i=0;i<e.length;++i){let a=e[i];if(ln(a,Uint8Array))s+a.length>n.length?(F.isBuffer(a)||(a=F.from(a)),a.copy(n,s)):Uint8Array.prototype.set.call(n,a,s);else if(F.isBuffer(a))a.copy(n,s);else throw new TypeError('"list" argument must be an Array of Buffers');s+=a.length}return n};function w_(t,e){if(F.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||ln(t,ArrayBuffer))return t.byteLength;if(typeof t!="string")throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);let r=t.length,i=arguments.length>2&&arguments[2]===!0;if(!i&&r===0)return 0;let n=!1;for(;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return zp(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return r*2;case"hex":return r>>>1;case"base64":return C_(t).length;default:if(n)return i?-1:zp(t).length;e=(""+e).toLowerCase(),n=!0}}F.byteLength=w_;function DF(t,e,r){let i=!1;if((e===void 0||e<0)&&(e=0),e>this.length||((r===void 0||r>this.length)&&(r=this.length),r<=0)||(r>>>=0,e>>>=0,r<=e))return"";for(t||(t="utf8");;)switch(t){case"hex":return zF(this,e,r);case"utf8":case"utf-8":return b_(this,e,r);case"ascii":return jF(this,e,r);case"latin1":case"binary":return VF(this,e,r);case"base64":return UF(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return WF(this,e,r);default:if(i)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),i=!0}}F.prototype._isBuffer=!0;function ea(t,e,r){let i=t[e];t[e]=t[r],t[r]=i}F.prototype.swap16=function(){let e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let r=0;r<e;r+=2)ea(this,r,r+1);return this};F.prototype.swap32=function(){let e=this.length;if(e%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let r=0;r<e;r+=4)ea(this,r,r+3),ea(this,r+1,r+2);return this};F.prototype.swap64=function(){let e=this.length;if(e%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let r=0;r<e;r+=8)ea(this,r,r+7),ea(this,r+1,r+6),ea(this,r+2,r+5),ea(this,r+3,r+4);return this};F.prototype.toString=function(){let e=this.length;return e===0?"":arguments.length===0?b_(this,0,e):DF.apply(this,arguments)};F.prototype.toLocaleString=F.prototype.toString;F.prototype.equals=function(e){if(!F.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e?!0:F.compare(this,e)===0};F.prototype.inspect=function(){let e="",r=So.INSPECT_MAX_BYTES;return e=this.toString("hex",0,r).replace(/(.{2})/g,"$1 ").trim(),this.length>r&&(e+=" ... "),"<Buffer "+e+">"};d_&&(F.prototype[d_]=F.prototype.inspect);F.prototype.compare=function(e,r,i,n,s){if(ln(e,Uint8Array)&&(e=F.from(e,e.offset,e.byteLength)),!F.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(r===void 0&&(r=0),i===void 0&&(i=e?e.length:0),n===void 0&&(n=0),s===void 0&&(s=this.length),r<0||i>e.length||n<0||s>this.length)throw new RangeError("out of range index");if(n>=s&&r>=i)return 0;if(n>=s)return-1;if(r>=i)return 1;if(r>>>=0,i>>>=0,n>>>=0,s>>>=0,this===e)return 0;let a=s-n,o=i-r,l=Math.min(a,o),c=this.slice(n,s),u=e.slice(r,i);for(let f=0;f<l;++f)if(c[f]!==u[f]){a=c[f],o=u[f];break}return a<o?-1:o<a?1:0};function __(t,e,r,i,n){if(t.length===0)return-1;if(typeof r=="string"?(i=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,Xp(r)&&(r=n?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(n)return-1;r=t.length-1}else if(r<0)if(n)r=0;else return-1;if(typeof e=="string"&&(e=F.from(e,i)),F.isBuffer(e))return e.length===0?-1:h_(t,e,r,i,n);if(typeof e=="number")return e=e&255,typeof Uint8Array.prototype.indexOf=="function"?n?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):h_(t,[e],r,i,n);throw new TypeError("val must be string, number or Buffer")}function h_(t,e,r,i,n){let s=1,a=t.length,o=e.length;if(i!==void 0&&(i=String(i).toLowerCase(),i==="ucs2"||i==="ucs-2"||i==="utf16le"||i==="utf-16le")){if(t.length<2||e.length<2)return-1;s=2,a/=2,o/=2,r/=2}function l(u,f){return s===1?u[f]:u.readUInt16BE(f*s)}let c;if(n){let u=-1;for(c=r;c<a;c++)if(l(t,c)===l(e,u===-1?0:c-u)){if(u===-1&&(u=c),c-u+1===o)return u*s}else u!==-1&&(c-=c-u),u=-1}else for(r+o>a&&(r=a-o),c=r;c>=0;c--){let u=!0;for(let f=0;f<o;f++)if(l(t,c+f)!==l(e,f)){u=!1;break}if(u)return c}return-1}F.prototype.includes=function(e,r,i){return this.indexOf(e,r,i)!==-1};F.prototype.indexOf=function(e,r,i){return __(this,e,r,i,!0)};F.prototype.lastIndexOf=function(e,r,i){return __(this,e,r,i,!1)};function OF(t,e,r,i){r=Number(r)||0;let n=t.length-r;i?(i=Number(i),i>n&&(i=n)):i=n;let s=e.length;i>s/2&&(i=s/2);let a;for(a=0;a<i;++a){let o=parseInt(e.substr(a*2,2),16);if(Xp(o))return a;t[r+a]=o}return a}function LF(t,e,r,i){return _f(zp(e,t.length-r),t,r,i)}function NF(t,e,r,i){return _f(ZF(e),t,r,i)}function BF(t,e,r,i){return _f(C_(e),t,r,i)}function HF(t,e,r,i){return _f(KF(e,t.length-r),t,r,i)}F.prototype.write=function(e,r,i,n){if(r===void 0)n="utf8",i=this.length,r=0;else if(i===void 0&&typeof r=="string")n=r,i=this.length,r=0;else if(isFinite(r))r=r>>>0,isFinite(i)?(i=i>>>0,n===void 0&&(n="utf8")):(n=i,i=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");let s=this.length-r;if((i===void 0||i>s)&&(i=s),e.length>0&&(i<0||r<0)||r>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let a=!1;for(;;)switch(n){case"hex":return OF(this,e,r,i);case"utf8":case"utf-8":return LF(this,e,r,i);case"ascii":case"latin1":case"binary":return NF(this,e,r,i);case"base64":return BF(this,e,r,i);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return HF(this,e,r,i);default:if(a)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),a=!0}};F.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function UF(t,e,r){return e===0&&r===t.length?Gp.fromByteArray(t):Gp.fromByteArray(t.slice(e,r))}function b_(t,e,r){r=Math.min(t.length,r);let i=[],n=e;for(;n<r;){let s=t[n],a=null,o=s>239?4:s>223?3:s>191?2:1;if(n+o<=r){let l,c,u,f;switch(o){case 1:s<128&&(a=s);break;case 2:l=t[n+1],(l&192)===128&&(f=(s&31)<<6|l&63,f>127&&(a=f));break;case 3:l=t[n+1],c=t[n+2],(l&192)===128&&(c&192)===128&&(f=(s&15)<<12|(l&63)<<6|c&63,f>2047&&(f<55296||f>57343)&&(a=f));break;case 4:l=t[n+1],c=t[n+2],u=t[n+3],(l&192)===128&&(c&192)===128&&(u&192)===128&&(f=(s&15)<<18|(l&63)<<12|(c&63)<<6|u&63,f>65535&&f<1114112&&(a=f))}}a===null?(a=65533,o=1):a>65535&&(a-=65536,i.push(a>>>10&1023|55296),a=56320|a&1023),i.push(a),n+=o}return GF(i)}var p_=4096;function GF(t){let e=t.length;if(e<=p_)return String.fromCharCode.apply(String,t);let r="",i=0;for(;i<e;)r+=String.fromCharCode.apply(String,t.slice(i,i+=p_));return r}function jF(t,e,r){let i="";r=Math.min(t.length,r);for(let n=e;n<r;++n)i+=String.fromCharCode(t[n]&127);return i}function VF(t,e,r){let i="";r=Math.min(t.length,r);for(let n=e;n<r;++n)i+=String.fromCharCode(t[n]);return i}function zF(t,e,r){let i=t.length;(!e||e<0)&&(e=0),(!r||r<0||r>i)&&(r=i);let n="";for(let s=e;s<r;++s)n+=QF[t[s]];return n}function WF(t,e,r){let i=t.slice(e,r),n="";for(let s=0;s<i.length-1;s+=2)n+=String.fromCharCode(i[s]+i[s+1]*256);return n}F.prototype.slice=function(e,r){let i=this.length;e=~~e,r=r===void 0?i:~~r,e<0?(e+=i,e<0&&(e=0)):e>i&&(e=i),r<0?(r+=i,r<0&&(r=0)):r>i&&(r=i),r<e&&(r=e);let n=this.subarray(e,r);return Object.setPrototypeOf(n,F.prototype),n};function Ut(t,e,r){if(t%1!==0||t<0)throw new RangeError("offset is not uint");if(t+e>r)throw new RangeError("Trying to access beyond buffer length")}F.prototype.readUintLE=F.prototype.readUIntLE=function(e,r,i){e=e>>>0,r=r>>>0,i||Ut(e,r,this.length);let n=this[e],s=1,a=0;for(;++a<r&&(s*=256);)n+=this[e+a]*s;return n};F.prototype.readUintBE=F.prototype.readUIntBE=function(e,r,i){e=e>>>0,r=r>>>0,i||Ut(e,r,this.length);let n=this[e+--r],s=1;for(;r>0&&(s*=256);)n+=this[e+--r]*s;return n};F.prototype.readUint8=F.prototype.readUInt8=function(e,r){return e=e>>>0,r||Ut(e,1,this.length),this[e]};F.prototype.readUint16LE=F.prototype.readUInt16LE=function(e,r){return e=e>>>0,r||Ut(e,2,this.length),this[e]|this[e+1]<<8};F.prototype.readUint16BE=F.prototype.readUInt16BE=function(e,r){return e=e>>>0,r||Ut(e,2,this.length),this[e]<<8|this[e+1]};F.prototype.readUint32LE=F.prototype.readUInt32LE=function(e,r){return e=e>>>0,r||Ut(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+this[e+3]*16777216};F.prototype.readUint32BE=F.prototype.readUInt32BE=function(e,r){return e=e>>>0,r||Ut(e,4,this.length),this[e]*16777216+(this[e+1]<<16|this[e+2]<<8|this[e+3])};F.prototype.readBigUInt64LE=vs(function(e){e=e>>>0,Eo(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&fc(e,this.length-8);let n=r+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24,s=this[++e]+this[++e]*2**8+this[++e]*2**16+i*2**24;return BigInt(n)+(BigInt(s)<<BigInt(32))});F.prototype.readBigUInt64BE=vs(function(e){e=e>>>0,Eo(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&fc(e,this.length-8);let n=r*2**24+this[++e]*2**16+this[++e]*2**8+this[++e],s=this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+i;return(BigInt(n)<<BigInt(32))+BigInt(s)});F.prototype.readIntLE=function(e,r,i){e=e>>>0,r=r>>>0,i||Ut(e,r,this.length);let n=this[e],s=1,a=0;for(;++a<r&&(s*=256);)n+=this[e+a]*s;return s*=128,n>=s&&(n-=Math.pow(2,8*r)),n};F.prototype.readIntBE=function(e,r,i){e=e>>>0,r=r>>>0,i||Ut(e,r,this.length);let n=r,s=1,a=this[e+--n];for(;n>0&&(s*=256);)a+=this[e+--n]*s;return s*=128,a>=s&&(a-=Math.pow(2,8*r)),a};F.prototype.readInt8=function(e,r){return e=e>>>0,r||Ut(e,1,this.length),this[e]&128?(255-this[e]+1)*-1:this[e]};F.prototype.readInt16LE=function(e,r){e=e>>>0,r||Ut(e,2,this.length);let i=this[e]|this[e+1]<<8;return i&32768?i|4294901760:i};F.prototype.readInt16BE=function(e,r){e=e>>>0,r||Ut(e,2,this.length);let i=this[e+1]|this[e]<<8;return i&32768?i|4294901760:i};F.prototype.readInt32LE=function(e,r){return e=e>>>0,r||Ut(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24};F.prototype.readInt32BE=function(e,r){return e=e>>>0,r||Ut(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]};F.prototype.readBigInt64LE=vs(function(e){e=e>>>0,Eo(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&fc(e,this.length-8);let n=this[e+4]+this[e+5]*2**8+this[e+6]*2**16+(i<<24);return(BigInt(n)<<BigInt(32))+BigInt(r+this[++e]*2**8+this[++e]*2**16+this[++e]*2**24)});F.prototype.readBigInt64BE=vs(function(e){e=e>>>0,Eo(e,"offset");let r=this[e],i=this[e+7];(r===void 0||i===void 0)&&fc(e,this.length-8);let n=(r<<24)+this[++e]*2**16+this[++e]*2**8+this[++e];return(BigInt(n)<<BigInt(32))+BigInt(this[++e]*2**24+this[++e]*2**16+this[++e]*2**8+i)});F.prototype.readFloatLE=function(e,r){return e=e>>>0,r||Ut(e,4,this.length),xo.read(this,e,!0,23,4)};F.prototype.readFloatBE=function(e,r){return e=e>>>0,r||Ut(e,4,this.length),xo.read(this,e,!1,23,4)};F.prototype.readDoubleLE=function(e,r){return e=e>>>0,r||Ut(e,8,this.length),xo.read(this,e,!0,52,8)};F.prototype.readDoubleBE=function(e,r){return e=e>>>0,r||Ut(e,8,this.length),xo.read(this,e,!1,52,8)};function Rr(t,e,r,i,n,s){if(!F.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>n||e<s)throw new RangeError('"value" argument is out of bounds');if(r+i>t.length)throw new RangeError("Index out of range")}F.prototype.writeUintLE=F.prototype.writeUIntLE=function(e,r,i,n){if(e=+e,r=r>>>0,i=i>>>0,!n){let o=Math.pow(2,8*i)-1;Rr(this,e,r,i,o,0)}let s=1,a=0;for(this[r]=e&255;++a<i&&(s*=256);)this[r+a]=e/s&255;return r+i};F.prototype.writeUintBE=F.prototype.writeUIntBE=function(e,r,i,n){if(e=+e,r=r>>>0,i=i>>>0,!n){let o=Math.pow(2,8*i)-1;Rr(this,e,r,i,o,0)}let s=i-1,a=1;for(this[r+s]=e&255;--s>=0&&(a*=256);)this[r+s]=e/a&255;return r+i};F.prototype.writeUint8=F.prototype.writeUInt8=function(e,r,i){return e=+e,r=r>>>0,i||Rr(this,e,r,1,255,0),this[r]=e&255,r+1};F.prototype.writeUint16LE=F.prototype.writeUInt16LE=function(e,r,i){return e=+e,r=r>>>0,i||Rr(this,e,r,2,65535,0),this[r]=e&255,this[r+1]=e>>>8,r+2};F.prototype.writeUint16BE=F.prototype.writeUInt16BE=function(e,r,i){return e=+e,r=r>>>0,i||Rr(this,e,r,2,65535,0),this[r]=e>>>8,this[r+1]=e&255,r+2};F.prototype.writeUint32LE=F.prototype.writeUInt32LE=function(e,r,i){return e=+e,r=r>>>0,i||Rr(this,e,r,4,4294967295,0),this[r+3]=e>>>24,this[r+2]=e>>>16,this[r+1]=e>>>8,this[r]=e&255,r+4};F.prototype.writeUint32BE=F.prototype.writeUInt32BE=function(e,r,i){return e=+e,r=r>>>0,i||Rr(this,e,r,4,4294967295,0),this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255,r+4};function y_(t,e,r,i,n){A_(e,i,n,t,r,7);let s=Number(e&BigInt(4294967295));t[r++]=s,s=s>>8,t[r++]=s,s=s>>8,t[r++]=s,s=s>>8,t[r++]=s;let a=Number(e>>BigInt(32)&BigInt(4294967295));return t[r++]=a,a=a>>8,t[r++]=a,a=a>>8,t[r++]=a,a=a>>8,t[r++]=a,r}function x_(t,e,r,i,n){A_(e,i,n,t,r,7);let s=Number(e&BigInt(4294967295));t[r+7]=s,s=s>>8,t[r+6]=s,s=s>>8,t[r+5]=s,s=s>>8,t[r+4]=s;let a=Number(e>>BigInt(32)&BigInt(4294967295));return t[r+3]=a,a=a>>8,t[r+2]=a,a=a>>8,t[r+1]=a,a=a>>8,t[r]=a,r+8}F.prototype.writeBigUInt64LE=vs(function(e,r=0){return y_(this,e,r,BigInt(0),BigInt("0xffffffffffffffff"))});F.prototype.writeBigUInt64BE=vs(function(e,r=0){return x_(this,e,r,BigInt(0),BigInt("0xffffffffffffffff"))});F.prototype.writeIntLE=function(e,r,i,n){if(e=+e,r=r>>>0,!n){let l=Math.pow(2,8*i-1);Rr(this,e,r,i,l-1,-l)}let s=0,a=1,o=0;for(this[r]=e&255;++s<i&&(a*=256);)e<0&&o===0&&this[r+s-1]!==0&&(o=1),this[r+s]=(e/a>>0)-o&255;return r+i};F.prototype.writeIntBE=function(e,r,i,n){if(e=+e,r=r>>>0,!n){let l=Math.pow(2,8*i-1);Rr(this,e,r,i,l-1,-l)}let s=i-1,a=1,o=0;for(this[r+s]=e&255;--s>=0&&(a*=256);)e<0&&o===0&&this[r+s+1]!==0&&(o=1),this[r+s]=(e/a>>0)-o&255;return r+i};F.prototype.writeInt8=function(e,r,i){return e=+e,r=r>>>0,i||Rr(this,e,r,1,127,-128),e<0&&(e=255+e+1),this[r]=e&255,r+1};F.prototype.writeInt16LE=function(e,r,i){return e=+e,r=r>>>0,i||Rr(this,e,r,2,32767,-32768),this[r]=e&255,this[r+1]=e>>>8,r+2};F.prototype.writeInt16BE=function(e,r,i){return e=+e,r=r>>>0,i||Rr(this,e,r,2,32767,-32768),this[r]=e>>>8,this[r+1]=e&255,r+2};F.prototype.writeInt32LE=function(e,r,i){return e=+e,r=r>>>0,i||Rr(this,e,r,4,2147483647,-2147483648),this[r]=e&255,this[r+1]=e>>>8,this[r+2]=e>>>16,this[r+3]=e>>>24,r+4};F.prototype.writeInt32BE=function(e,r,i){return e=+e,r=r>>>0,i||Rr(this,e,r,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[r]=e>>>24,this[r+1]=e>>>16,this[r+2]=e>>>8,this[r+3]=e&255,r+4};F.prototype.writeBigInt64LE=vs(function(e,r=0){return y_(this,e,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});F.prototype.writeBigInt64BE=vs(function(e,r=0){return x_(this,e,r,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function E_(t,e,r,i,n,s){if(r+i>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function S_(t,e,r,i,n){return e=+e,r=r>>>0,n||E_(t,e,r,4,34028234663852886e22,-34028234663852886e22),xo.write(t,e,r,i,23,4),r+4}F.prototype.writeFloatLE=function(e,r,i){return S_(this,e,r,!0,i)};F.prototype.writeFloatBE=function(e,r,i){return S_(this,e,r,!1,i)};function k_(t,e,r,i,n){return e=+e,r=r>>>0,n||E_(t,e,r,8,17976931348623157e292,-17976931348623157e292),xo.write(t,e,r,i,52,8),r+8}F.prototype.writeDoubleLE=function(e,r,i){return k_(this,e,r,!0,i)};F.prototype.writeDoubleBE=function(e,r,i){return k_(this,e,r,!1,i)};F.prototype.copy=function(e,r,i,n){if(!F.isBuffer(e))throw new TypeError("argument should be a Buffer");if(i||(i=0),!n&&n!==0&&(n=this.length),r>=e.length&&(r=e.length),r||(r=0),n>0&&n<i&&(n=i),n===i||e.length===0||this.length===0)return 0;if(r<0)throw new RangeError("targetStart out of bounds");if(i<0||i>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-r<n-i&&(n=e.length-r+i);let s=n-i;return this===e&&typeof Uint8Array.prototype.copyWithin=="function"?this.copyWithin(r,i,n):Uint8Array.prototype.set.call(e,this.subarray(i,n),r),s};F.prototype.fill=function(e,r,i,n){if(typeof e=="string"){if(typeof r=="string"?(n=r,r=0,i=this.length):typeof i=="string"&&(n=i,i=this.length),n!==void 0&&typeof n!="string")throw new TypeError("encoding must be a string");if(typeof n=="string"&&!F.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(e.length===1){let a=e.charCodeAt(0);(n==="utf8"&&a<128||n==="latin1")&&(e=a)}}else typeof e=="number"?e=e&255:typeof e=="boolean"&&(e=Number(e));if(r<0||this.length<r||this.length<i)throw new RangeError("Out of range index");if(i<=r)return this;r=r>>>0,i=i===void 0?this.length:i>>>0,e||(e=0);let s;if(typeof e=="number")for(s=r;s<i;++s)this[s]=e;else{let a=F.isBuffer(e)?e:F.from(e,n),o=a.length;if(o===0)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(s=0;s<i-r;++s)this[s+r]=a[s%o]}return this};var yo={};function Yp(t,e,r){yo[t]=class extends r{constructor(){super(),Object.defineProperty(this,"message",{value:e.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${t}]`,this.stack,delete this.name}get code(){return t}set code(n){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:n,writable:!0})}toString(){return`${this.name} [${t}]: ${this.message}`}}}Yp("ERR_BUFFER_OUT_OF_BOUNDS",function(t){return t?`${t} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"},RangeError);Yp("ERR_INVALID_ARG_TYPE",function(t,e){return`The "${t}" argument must be of type number. Received type ${typeof e}`},TypeError);Yp("ERR_OUT_OF_RANGE",function(t,e,r){let i=`The value of "${t}" is out of range.`,n=r;return Number.isInteger(r)&&Math.abs(r)>2**32?n=m_(String(r)):typeof r=="bigint"&&(n=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(n=m_(n)),n+="n"),i+=` It must be ${e}. Received ${n}`,i},RangeError);function m_(t){let e="",r=t.length,i=t[0]==="-"?1:0;for(;r>=i+4;r-=3)e=`_${t.slice(r-3,r)}${e}`;return`${t.slice(0,r)}${e}`}function qF(t,e,r){Eo(e,"offset"),(t[e]===void 0||t[e+r]===void 0)&&fc(e,t.length-(r+1))}function A_(t,e,r,i,n,s){if(t>r||t<e){let a=typeof e=="bigint"?"n":"",o;throw s>3?e===0||e===BigInt(0)?o=`>= 0${a} and < 2${a} ** ${(s+1)*8}${a}`:o=`>= -(2${a} ** ${(s+1)*8-1}${a}) and < 2 ** ${(s+1)*8-1}${a}`:o=`>= ${e}${a} and <= ${r}${a}`,new yo.ERR_OUT_OF_RANGE("value",o,t)}qF(i,n,s)}function Eo(t,e){if(typeof t!="number")throw new yo.ERR_INVALID_ARG_TYPE(e,"number",t)}function fc(t,e,r){throw Math.floor(t)!==t?(Eo(t,r),new yo.ERR_OUT_OF_RANGE(r||"offset","an integer",t)):e<0?new yo.ERR_BUFFER_OUT_OF_BOUNDS:new yo.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${e}`,t)}var YF=/[^+/0-9A-Za-z-_]/g;function XF(t){if(t=t.split("=")[0],t=t.trim().replace(YF,""),t.length<2)return"";for(;t.length%4!==0;)t=t+"=";return t}function zp(t,e){e=e||1/0;let r,i=t.length,n=null,s=[];for(let a=0;a<i;++a){if(r=t.charCodeAt(a),r>55295&&r<57344){if(!n){if(r>56319){(e-=3)>-1&&s.push(239,191,189);continue}else if(a+1===i){(e-=3)>-1&&s.push(239,191,189);continue}n=r;continue}if(r<56320){(e-=3)>-1&&s.push(239,191,189),n=r;continue}r=(n-55296<<10|r-56320)+65536}else n&&(e-=3)>-1&&s.push(239,191,189);if(n=null,r<128){if((e-=1)<0)break;s.push(r)}else if(r<2048){if((e-=2)<0)break;s.push(r>>6|192,r&63|128)}else if(r<65536){if((e-=3)<0)break;s.push(r>>12|224,r>>6&63|128,r&63|128)}else if(r<1114112){if((e-=4)<0)break;s.push(r>>18|240,r>>12&63|128,r>>6&63|128,r&63|128)}else throw new Error("Invalid code point")}return s}function ZF(t){let e=[];for(let r=0;r<t.length;++r)e.push(t.charCodeAt(r)&255);return e}function KF(t,e){let r,i,n,s=[];for(let a=0;a<t.length&&!((e-=2)<0);++a)r=t.charCodeAt(a),i=r>>8,n=r%256,s.push(n),s.push(i);return s}function C_(t){return Gp.toByteArray(XF(t))}function _f(t,e,r,i){let n;for(n=0;n<i&&!(n+r>=e.length||n>=t.length);++n)e[n+r]=t[n];return n}function ln(t,e){return t instanceof e||t!=null&&t.constructor!=null&&t.constructor.name!=null&&t.constructor.name===e.name}function Xp(t){return t!==t}var QF=function(){let t="0123456789abcdef",e=new Array(256);for(let r=0;r<16;++r){let i=r*16;for(let n=0;n<16;++n)e[i+n]=t[r]+t[n]}return e}();function vs(t){return typeof BigInt=="undefined"?JF:t}function JF(){throw new Error("BigInt not supported")}});var T_,Kp,Buffer,m=_F(()=>{T_=require("obsidian");T_.Platform.isMobileApp?Kp=Zp().Buffer:Kp=global.Buffer;Buffer=Kp});var R_=H((hG,P_)=>{"use strict";m();var Yr=function(t){if(t=t||{},this.Promise=t.Promise||Promise,this.queues=Object.create(null),this.domainReentrant=t.domainReentrant||!1,this.domainReentrant){if(typeof process=="undefined"||typeof process.domain=="undefined")throw new Error("Domain-reentrant locks require `process.domain` to exist. Please flip `opts.domainReentrant = false`, use a NodeJS version that still implements Domain, or install a browser polyfill.");this.domains=Object.create(null)}this.timeout=t.timeout||Yr.DEFAULT_TIMEOUT,this.maxOccupationTime=t.maxOccupationTime||Yr.DEFAULT_MAX_OCCUPATION_TIME,this.maxExecutionTime=t.maxExecutionTime||Yr.DEFAULT_MAX_EXECUTION_TIME,t.maxPending===1/0||Number.isInteger(t.maxPending)&&t.maxPending>=0?this.maxPending=t.maxPending:this.maxPending=Yr.DEFAULT_MAX_PENDING};Yr.DEFAULT_TIMEOUT=0;Yr.DEFAULT_MAX_OCCUPATION_TIME=0;Yr.DEFAULT_MAX_EXECUTION_TIME=0;Yr.DEFAULT_MAX_PENDING=1e3;Yr.prototype.acquire=function(t,e,r,i){if(Array.isArray(t))return this._acquireBatch(t,e,r,i);if(typeof e!="function")throw new Error("You must pass a function to execute");var n=null,s=null,a=null;typeof r!="function"&&(i=r,r=null,a=new this.Promise(function(b,S){n=b,s=S})),i=i||{};var o=!1,l=null,c=null,u=null,f=this,d=function(b,S,k){c&&(clearTimeout(c),c=null),u&&(clearTimeout(u),u=null),b&&(f.queues[t]&&f.queues[t].length===0&&delete f.queues[t],f.domainReentrant&&delete f.domains[t]),o||(a?S?s(S):n(k):typeof r=="function"&&r(S,k),o=!0),b&&f.queues[t]&&f.queues[t].length>0&&f.queues[t].shift()()},h=function(b){if(o)return d(b);l&&(clearTimeout(l),l=null),f.domainReentrant&&b&&(f.domains[t]=process.domain);var S=i.maxExecutionTime||f.maxExecutionTime;if(S&&(u=setTimeout(function(){f.queues[t]&&d(b,new Error("Maximum execution time is exceeded "+t))},S)),e.length===1){var k=!1;try{e(function(E,A){k||(k=!0,d(b,E,A))})}catch(E){k||(k=!0,d(b,E))}}else f._promiseTry(function(){return e()}).then(function(E){d(b,void 0,E)},function(E){d(b,E)})};f.domainReentrant&&process.domain&&(h=process.domain.bind(h));var p=i.maxPending||f.maxPending;if(!f.queues[t])f.queues[t]=[],h(!0);else if(f.domainReentrant&&process.domain&&process.domain===f.domains[t])h(!1);else if(f.queues[t].length>=p)d(!1,new Error("Too many pending tasks in queue "+t));else{var g=function(){h(!0)};i.skipQueue?f.queues[t].unshift(g):f.queues[t].push(g);var v=i.timeout||f.timeout;v&&(l=setTimeout(function(){l=null,d(!1,new Error("async-lock timed out in queue "+t))},v))}var _=i.maxOccupationTime||f.maxOccupationTime;if(_&&(c=setTimeout(function(){f.queues[t]&&d(!1,new Error("Maximum occupation time is exceeded in queue "+t))},_)),a)return a};Yr.prototype._acquireBatch=function(t,e,r,i){typeof r!="function"&&(i=r,r=null);var n=this,s=function(o,l){return function(c){n.acquire(o,l,c,i)}},a=t.reduceRight(function(o,l){return s(l,o)},e);if(typeof r=="function")a(r);else return new this.Promise(function(o,l){a.length===1?a(function(c,u){c?l(c):o(u)}):o(a())})};Yr.prototype.isBusy=function(t){return t?!!this.queues[t]:Object.keys(this.queues).length>0};Yr.prototype._promiseTry=function(t){try{return this.Promise.resolve(t())}catch(e){return this.Promise.reject(e)}};P_.exports=Yr});var F_=H((mG,$_)=>{"use strict";m();$_.exports=R_()});var I_=H((vG,Qp)=>{m();typeof Object.create=="function"?Qp.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:Qp.exports=function(e,r){if(r){e.super_=r;var i=function(){};i.prototype=r.prototype,e.prototype=new i,e.prototype.constructor=e}}});var yf=H((Jp,D_)=>{m();var bf=Zp(),cn=bf.Buffer;function M_(t,e){for(var r in t)e[r]=t[r]}cn.from&&cn.alloc&&cn.allocUnsafe&&cn.allocUnsafeSlow?D_.exports=bf:(M_(bf,Jp),Jp.Buffer=ta);function ta(t,e,r){return cn(t,e,r)}ta.prototype=Object.create(cn.prototype);M_(cn,ta);ta.from=function(t,e,r){if(typeof t=="number")throw new TypeError("Argument must not be a number");return cn(t,e,r)};ta.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError("Argument must be a number");var i=cn(t);return e!==void 0?typeof r=="string"?i.fill(e,r):i.fill(e):i.fill(0),i};ta.allocUnsafe=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return cn(t)};ta.allocUnsafeSlow=function(t){if(typeof t!="number")throw new TypeError("Argument must be a number");return bf.SlowBuffer(t)}});var L_=H((bG,O_)=>{m();var eI={}.toString;O_.exports=Array.isArray||function(t){return eI.call(t)=="[object Array]"}});var ko=H((xG,N_)=>{"use strict";m();N_.exports=TypeError});var em=H((SG,B_)=>{"use strict";m();B_.exports=Object});var U_=H((AG,H_)=>{"use strict";m();H_.exports=Error});var j_=H((TG,G_)=>{"use strict";m();G_.exports=EvalError});var z_=H((RG,V_)=>{"use strict";m();V_.exports=RangeError});var q_=H((FG,W_)=>{"use strict";m();W_.exports=ReferenceError});var tm=H((MG,Y_)=>{"use strict";m();Y_.exports=SyntaxError});var Z_=H((OG,X_)=>{"use strict";m();X_.exports=URIError});var Q_=H((NG,K_)=>{"use strict";m();K_.exports=Math.abs});var eb=H((HG,J_)=>{"use strict";m();J_.exports=Math.floor});var rb=H((GG,tb)=>{"use strict";m();tb.exports=Math.max});var nb=H((VG,ib)=>{"use strict";m();ib.exports=Math.min});var ab=H((WG,sb)=>{"use strict";m();sb.exports=Math.pow});var lb=H((YG,ob)=>{"use strict";m();ob.exports=Math.round});var ub=H((ZG,cb)=>{"use strict";m();cb.exports=Number.isNaN||function(e){return e!==e}});var db=H((QG,fb)=>{"use strict";m();var tI=ub();fb.exports=function(e){return tI(e)||e===0?e:e<0?-1:1}});var pb=H((ej,hb)=>{"use strict";m();hb.exports=Object.getOwnPropertyDescriptor});var Ao=H((rj,mb)=>{"use strict";m();var xf=pb();if(xf)try{xf([],"length")}catch(t){xf=null}mb.exports=xf});var dc=H((nj,gb)=>{"use strict";m();var Ef=Object.defineProperty||!1;if(Ef)try{Ef({},"a",{value:1})}catch(t){Ef=!1}gb.exports=Ef});var rm=H((aj,vb)=>{"use strict";m();vb.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var e={},r=Symbol("test"),i=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(i)!=="[object Symbol]")return!1;var n=42;e[r]=n;for(var s in e)return!1;if(typeof Object.keys=="function"&&Object.keys(e).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(e).length!==0)return!1;var a=Object.getOwnPropertySymbols(e);if(a.length!==1||a[0]!==r||!Object.prototype.propertyIsEnumerable.call(e,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var o=Object.getOwnPropertyDescriptor(e,r);if(o.value!==n||o.enumerable!==!0)return!1}return!0}});var bb=H((lj,_b)=>{"use strict";m();var wb=typeof Symbol!="undefined"&&Symbol,rI=rm();_b.exports=function(){return typeof wb!="function"||typeof Symbol!="function"||typeof wb("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:rI()}});var im=H((uj,yb)=>{"use strict";m();yb.exports=typeof Reflect!="undefined"&&Reflect.getPrototypeOf||null});var nm=H((dj,xb)=>{"use strict";m();var iI=em();xb.exports=iI.getPrototypeOf||null});var kb=H((pj,Sb)=>{"use strict";m();var nI="Function.prototype.bind called on incompatible ",sI=Object.prototype.toString,aI=Math.max,oI="[object Function]",Eb=function(e,r){for(var i=[],n=0;n<e.length;n+=1)i[n]=e[n];for(var s=0;s<r.length;s+=1)i[s+e.length]=r[s];return i},lI=function(e,r){for(var i=[],n=r||0,s=0;n<e.length;n+=1,s+=1)i[s]=e[n];return i},cI=function(t,e){for(var r="",i=0;i<t.length;i+=1)r+=t[i],i+1<t.length&&(r+=e);return r};Sb.exports=function(e){var r=this;if(typeof r!="function"||sI.apply(r)!==oI)throw new TypeError(nI+r);for(var i=lI(arguments,1),n,s=function(){if(this instanceof n){var u=r.apply(this,Eb(i,arguments));return Object(u)===u?u:this}return r.apply(e,Eb(i,arguments))},a=aI(0,r.length-i.length),o=[],l=0;l<a;l++)o[l]="$"+l;if(n=Function("binder","return function ("+cI(o,",")+"){ return binder.apply(this,arguments); }")(s),r.prototype){var c=function(){};c.prototype=r.prototype,n.prototype=new c,c.prototype=null}return n}});var Co=H((gj,Ab)=>{"use strict";m();var uI=kb();Ab.exports=Function.prototype.bind||uI});var Sf=H((wj,Cb)=>{"use strict";m();Cb.exports=Function.prototype.call});var kf=H((bj,Tb)=>{"use strict";m();Tb.exports=Function.prototype.apply});var Rb=H((xj,Pb)=>{"use strict";m();Pb.exports=typeof Reflect!="undefined"&&Reflect&&Reflect.apply});var sm=H((Sj,$b)=>{"use strict";m();var fI=Co(),dI=kf(),hI=Sf(),pI=Rb();$b.exports=pI||fI.call(hI,dI)});var Af=H((Aj,Fb)=>{"use strict";m();var mI=Co(),gI=ko(),vI=Sf(),wI=sm();Fb.exports=function(e){if(e.length<1||typeof e[0]!="function")throw new gI("a function is required");return wI(mI,vI,e)}});var Nb=H((Tj,Lb)=>{"use strict";m();var _I=Af(),Ib=Ao(),Db;try{Db=[].__proto__===Array.prototype}catch(t){if(!t||typeof t!="object"||!("code"in t)||t.code!=="ERR_PROTO_ACCESS")throw t}var am=!!Db&&Ib&&Ib(Object.prototype,"__proto__"),Ob=Object,Mb=Ob.getPrototypeOf;Lb.exports=am&&typeof am.get=="function"?_I([am.get]):typeof Mb=="function"?function(e){return Mb(e==null?e:Ob(e))}:!1});var om=H((Rj,Gb)=>{"use strict";m();var Bb=im(),Hb=nm(),Ub=Nb();Gb.exports=Bb?function(e){return Bb(e)}:Hb?function(e){if(!e||typeof e!="object"&&typeof e!="function")throw new TypeError("getProto: not an object");return Hb(e)}:Ub?function(e){return Ub(e)}:null});var Vb=H((Fj,jb)=>{"use strict";m();var bI=Function.prototype.call,yI=Object.prototype.hasOwnProperty,xI=Co();jb.exports=xI.call(bI,yI)});var um=H((Mj,Zb)=>{"use strict";m();var Ae,EI=em(),SI=U_(),kI=j_(),AI=z_(),CI=q_(),$o=tm(),Ro=ko(),TI=Z_(),PI=Q_(),RI=eb(),$I=rb(),FI=nb(),II=ab(),MI=lb(),DI=db(),Yb=Function,lm=function(t){try{return Yb('"use strict"; return ('+t+").constructor;")()}catch(e){}},hc=Ao(),OI=dc(),cm=function(){throw new Ro},LI=hc?function(){try{return arguments.callee,cm}catch(t){try{return hc(arguments,"callee").get}catch(e){return cm}}}():cm,To=bb()(),Gt=om(),NI=nm(),BI=im(),Xb=kf(),pc=Sf(),Po={},HI=typeof Uint8Array=="undefined"||!Gt?Ae:Gt(Uint8Array),ra={__proto__:null,"%AggregateError%":typeof AggregateError=="undefined"?Ae:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer=="undefined"?Ae:ArrayBuffer,"%ArrayIteratorPrototype%":To&&Gt?Gt([][Symbol.iterator]()):Ae,"%AsyncFromSyncIteratorPrototype%":Ae,"%AsyncFunction%":Po,"%AsyncGenerator%":Po,"%AsyncGeneratorFunction%":Po,"%AsyncIteratorPrototype%":Po,"%Atomics%":typeof Atomics=="undefined"?Ae:Atomics,"%BigInt%":typeof BigInt=="undefined"?Ae:BigInt,"%BigInt64Array%":typeof BigInt64Array=="undefined"?Ae:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array=="undefined"?Ae:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView=="undefined"?Ae:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":SI,"%eval%":eval,"%EvalError%":kI,"%Float16Array%":typeof Float16Array=="undefined"?Ae:Float16Array,"%Float32Array%":typeof Float32Array=="undefined"?Ae:Float32Array,"%Float64Array%":typeof Float64Array=="undefined"?Ae:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry=="undefined"?Ae:FinalizationRegistry,"%Function%":Yb,"%GeneratorFunction%":Po,"%Int8Array%":typeof Int8Array=="undefined"?Ae:Int8Array,"%Int16Array%":typeof Int16Array=="undefined"?Ae:Int16Array,"%Int32Array%":typeof Int32Array=="undefined"?Ae:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":To&&Gt?Gt(Gt([][Symbol.iterator]())):Ae,"%JSON%":typeof JSON=="object"?JSON:Ae,"%Map%":typeof Map=="undefined"?Ae:Map,"%MapIteratorPrototype%":typeof Map=="undefined"||!To||!Gt?Ae:Gt(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":EI,"%Object.getOwnPropertyDescriptor%":hc,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise=="undefined"?Ae:Promise,"%Proxy%":typeof Proxy=="undefined"?Ae:Proxy,"%RangeError%":AI,"%ReferenceError%":CI,"%Reflect%":typeof Reflect=="undefined"?Ae:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set=="undefined"?Ae:Set,"%SetIteratorPrototype%":typeof Set=="undefined"||!To||!Gt?Ae:Gt(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer=="undefined"?Ae:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":To&&Gt?Gt(""[Symbol.iterator]()):Ae,"%Symbol%":To?Symbol:Ae,"%SyntaxError%":$o,"%ThrowTypeError%":LI,"%TypedArray%":HI,"%TypeError%":Ro,"%Uint8Array%":typeof Uint8Array=="undefined"?Ae:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray=="undefined"?Ae:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array=="undefined"?Ae:Uint16Array,"%Uint32Array%":typeof Uint32Array=="undefined"?Ae:Uint32Array,"%URIError%":TI,"%WeakMap%":typeof WeakMap=="undefined"?Ae:WeakMap,"%WeakRef%":typeof WeakRef=="undefined"?Ae:WeakRef,"%WeakSet%":typeof WeakSet=="undefined"?Ae:WeakSet,"%Function.prototype.call%":pc,"%Function.prototype.apply%":Xb,"%Object.defineProperty%":OI,"%Object.getPrototypeOf%":NI,"%Math.abs%":PI,"%Math.floor%":RI,"%Math.max%":$I,"%Math.min%":FI,"%Math.pow%":II,"%Math.round%":MI,"%Math.sign%":DI,"%Reflect.getPrototypeOf%":BI};if(Gt)try{null.error}catch(t){zb=Gt(Gt(t)),ra["%Error.prototype%"]=zb}var zb,UI=function t(e){var r;if(e==="%AsyncFunction%")r=lm("async function () {}");else if(e==="%GeneratorFunction%")r=lm("function* () {}");else if(e==="%AsyncGeneratorFunction%")r=lm("async function* () {}");else if(e==="%AsyncGenerator%"){var i=t("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if(e==="%AsyncIteratorPrototype%"){var n=t("%AsyncGenerator%");n&&Gt&&(r=Gt(n.prototype))}return ra[e]=r,r},Wb={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},mc=Co(),Cf=Vb(),GI=mc.call(pc,Array.prototype.concat),jI=mc.call(Xb,Array.prototype.splice),qb=mc.call(pc,String.prototype.replace),Tf=mc.call(pc,String.prototype.slice),VI=mc.call(pc,RegExp.prototype.exec),zI=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,WI=/\\(\\)?/g,qI=function(e){var r=Tf(e,0,1),i=Tf(e,-1);if(r==="%"&&i!=="%")throw new $o("invalid intrinsic syntax, expected closing `%`");if(i==="%"&&r!=="%")throw new $o("invalid intrinsic syntax, expected opening `%`");var n=[];return qb(e,zI,function(s,a,o,l){n[n.length]=o?qb(l,WI,"$1"):a||s}),n},YI=function(e,r){var i=e,n;if(Cf(Wb,i)&&(n=Wb[i],i="%"+n[0]+"%"),Cf(ra,i)){var s=ra[i];if(s===Po&&(s=UI(i)),typeof s=="undefined"&&!r)throw new Ro("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:n,name:i,value:s}}throw new $o("intrinsic "+e+" does not exist!")};Zb.exports=function(e,r){if(typeof e!="string"||e.length===0)throw new Ro("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new Ro('"allowMissing" argument must be a boolean');if(VI(/^%?[^%]*%?$/,e)===null)throw new $o("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var i=qI(e),n=i.length>0?i[0]:"",s=YI("%"+n+"%",r),a=s.name,o=s.value,l=!1,c=s.alias;c&&(n=c[0],jI(i,GI([0,1],c)));for(var u=1,f=!0;u<i.length;u+=1){var d=i[u],h=Tf(d,0,1),p=Tf(d,-1);if((h==='"'||h==="'"||h==="`"||p==='"'||p==="'"||p==="`")&&h!==p)throw new $o("property names with quotes must have matching quotes");if((d==="constructor"||!f)&&(l=!0),n+="."+d,a="%"+n+"%",Cf(ra,a))o=ra[a];else if(o!=null){if(!(d in o)){if(!r)throw new Ro("base intrinsic for "+e+" exists, but the property is not available.");return}if(hc&&u+1>=i.length){var g=hc(o,d);f=!!g,f&&"get"in g&&!("originalValue"in g.get)?o=g.get:o=o[d]}else f=Cf(o,d),o=o[d];f&&!l&&(ra[a]=o)}}return o}});var fm=H((Oj,Jb)=>{"use strict";m();var Kb=um(),Qb=Af(),XI=Qb([Kb("%String.prototype.indexOf%")]);Jb.exports=function(e,r){var i=Kb(e,!!r);return typeof i=="function"&&XI(e,".prototype.")>-1?Qb([i]):i}});var iy=H((Nj,ry)=>{"use strict";m();var ty=Function.prototype.toString,Fo=typeof Reflect=="object"&&Reflect!==null&&Reflect.apply,hm,Pf;if(typeof Fo=="function"&&typeof Object.defineProperty=="function")try{hm=Object.defineProperty({},"length",{get:function(){throw Pf}}),Pf={},Fo(function(){throw 42},null,hm)}catch(t){t!==Pf&&(Fo=null)}else Fo=null;var ZI=/^\s*class\b/,pm=function(e){try{var r=ty.call(e);return ZI.test(r)}catch(i){return!1}},dm=function(e){try{return pm(e)?!1:(ty.call(e),!0)}catch(r){return!1}},Rf=Object.prototype.toString,KI="[object Object]",QI="[object Function]",JI="[object GeneratorFunction]",eM="[object HTMLAllCollection]",tM="[object HTML document.all class]",rM="[object HTMLCollection]",iM=typeof Symbol=="function"&&!!Symbol.toStringTag,nM=!(0 in[,]),mm=function(){return!1};typeof document=="object"&&(ey=document.all,Rf.call(ey)===Rf.call(document.all)&&(mm=function(e){if((nM||!e)&&(typeof e=="undefined"||typeof e=="object"))try{var r=Rf.call(e);return(r===eM||r===tM||r===rM||r===KI)&&e("")==null}catch(i){}return!1}));var ey;ry.exports=Fo?function(e){if(mm(e))return!0;if(!e||typeof e!="function"&&typeof e!="object")return!1;try{Fo(e,null,hm)}catch(r){if(r!==Pf)return!1}return!pm(e)&&dm(e)}:function(e){if(mm(e))return!0;if(!e||typeof e!="function"&&typeof e!="object")return!1;if(iM)return dm(e);if(pm(e))return!1;var r=Rf.call(e);return r!==QI&&r!==JI&&!/^\[object HTML/.test(r)?!1:dm(e)}});var ay=H((Hj,sy)=>{"use strict";m();var sM=iy(),aM=Object.prototype.toString,ny=Object.prototype.hasOwnProperty,oM=function(e,r,i){for(var n=0,s=e.length;n<s;n++)ny.call(e,n)&&(i==null?r(e[n],n,e):r.call(i,e[n],n,e))},lM=function(e,r,i){for(var n=0,s=e.length;n<s;n++)i==null?r(e.charAt(n),n,e):r.call(i,e.charAt(n),n,e)},cM=function(e,r,i){for(var n in e)ny.call(e,n)&&(i==null?r(e[n],n,e):r.call(i,e[n],n,e))};function uM(t){return aM.call(t)==="[object Array]"}sy.exports=function(e,r,i){if(!sM(r))throw new TypeError("iterator must be a function");var n;arguments.length>=3&&(n=i),uM(e)?oM(e,r,n):typeof e=="string"?lM(e,r,n):cM(e,r,n)}});var ly=H((Gj,oy)=>{"use strict";m();oy.exports=["Float16Array","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array"]});var uy=H((Vj,cy)=>{"use strict";m();var gm=ly(),fM=typeof globalThis=="undefined"?global:globalThis;cy.exports=function(){for(var e=[],r=0;r<gm.length;r++)typeof fM[gm[r]]=="function"&&(e[e.length]=gm[r]);return e}});var py=H((Wj,hy)=>{"use strict";m();var fy=dc(),dM=tm(),Io=ko(),dy=Ao();hy.exports=function(e,r,i){if(!e||typeof e!="object"&&typeof e!="function")throw new Io("`obj` must be an object or a function`");if(typeof r!="string"&&typeof r!="symbol")throw new Io("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new Io("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new Io("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new Io("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new Io("`loose`, if provided, must be a boolean");var n=arguments.length>3?arguments[3]:null,s=arguments.length>4?arguments[4]:null,a=arguments.length>5?arguments[5]:null,o=arguments.length>6?arguments[6]:!1,l=!!dy&&dy(e,r);if(fy)fy(e,r,{configurable:a===null&&l?l.configurable:!a,enumerable:n===null&&l?l.enumerable:!n,value:i,writable:s===null&&l?l.writable:!s});else if(o||!n&&!s&&!a)e[r]=i;else throw new dM("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")}});var vy=H((Yj,gy)=>{"use strict";m();var vm=dc(),my=function(){return!!vm};my.hasArrayLengthDefineBug=function(){if(!vm)return null;try{return vm([],"length",{value:1}).length!==1}catch(e){return!0}};gy.exports=my});var xy=H((Zj,yy)=>{"use strict";m();var hM=um(),wy=py(),pM=vy()(),_y=Ao(),by=ko(),mM=hM("%Math.floor%");yy.exports=function(e,r){if(typeof e!="function")throw new by("`fn` is not a function");if(typeof r!="number"||r<0||r>4294967295||mM(r)!==r)throw new by("`length` must be a positive 32-bit integer");var i=arguments.length>2&&!!arguments[2],n=!0,s=!0;if("length"in e&&_y){var a=_y(e,"length");a&&!a.configurable&&(n=!1),a&&!a.writable&&(s=!1)}return(n||s||!i)&&(pM?wy(e,"length",r,!0,!0):wy(e,"length",r)),e}});var Sy=H((Qj,Ey)=>{"use strict";m();var gM=Co(),vM=kf(),wM=sm();Ey.exports=function(){return wM(gM,vM,arguments)}});var Cy=H((eV,$f)=>{"use strict";m();var _M=xy(),ky=dc(),bM=Af(),Ay=Sy();$f.exports=function(e){var r=bM(arguments),i=1+e.length-(arguments.length-1);return _M(r,i>0?i:0,!0)};ky?ky($f.exports,"apply",{value:Ay}):$f.exports.apply=Ay});var Py=H((rV,Ty)=>{"use strict";m();var yM=rm();Ty.exports=function(){return yM()&&!!Symbol.toStringTag}});var My=H((nV,Iy)=>{"use strict";m();var Mf=ay(),xM=uy(),Ry=Cy(),_m=fm(),If=Ao(),Ff=om(),EM=_m("Object.prototype.toString"),Fy=Py()(),$y=typeof globalThis=="undefined"?global:globalThis,wm=xM(),bm=_m("String.prototype.slice"),SM=_m("Array.prototype.indexOf",!0)||function(e,r){for(var i=0;i<e.length;i+=1)if(e[i]===r)return i;return-1},Df={__proto__:null};Fy&&If&&Ff?Mf(wm,function(t){var e=new $y[t];if(Symbol.toStringTag in e&&Ff){var r=Ff(e),i=If(r,Symbol.toStringTag);if(!i&&r){var n=Ff(r);i=If(n,Symbol.toStringTag)}if(i&&i.get){var s=Ry(i.get);Df["$"+t]=s}}}):Mf(wm,function(t){var e=new $y[t],r=e.slice||e.set;if(r){var i=Ry(r);Df["$"+t]=i}});var kM=function(e){var r=!1;return Mf(Df,function(i,n){if(!r)try{"$"+i(e)===n&&(r=bm(n,1))}catch(s){}}),r},AM=function(e){var r=!1;return Mf(Df,function(i,n){if(!r)try{i(e),r=bm(n,1)}catch(s){}}),r};Iy.exports=function(e){if(!e||typeof e!="object")return!1;if(!Fy){var r=bm(EM(e),8,-1);return SM(wm,r)>-1?r:r!=="Object"?!1:AM(e)}return If?kM(e):null}});var Oy=H((aV,Dy)=>{"use strict";m();var CM=My();Dy.exports=function(e){return!!CM(e)}});var Ny=H((lV,Ly)=>{"use strict";m();var TM=ko(),PM=fm(),RM=PM("TypedArray.prototype.buffer",!0),$M=Oy();Ly.exports=RM||function(e){if(!$M(e))throw new TM("Not a Typed Array");return e.buffer}});var Uy=H((uV,Hy)=>{"use strict";m();var Ni=yf().Buffer,FM=L_(),IM=Ny(),MM=ArrayBuffer.isView||function(e){try{return IM(e),!0}catch(r){return!1}},DM=typeof Uint8Array!="undefined",By=typeof ArrayBuffer!="undefined"&&typeof Uint8Array!="undefined",OM=By&&(Ni.prototype instanceof Uint8Array||Ni.TYPED_ARRAY_SUPPORT);Hy.exports=function(e,r){if(Ni.isBuffer(e))return e.constructor&&!("isBuffer"in e)?Ni.from(e):e;if(typeof e=="string")return Ni.from(e,r);if(By&&MM(e)){if(e.byteLength===0)return Ni.alloc(0);if(OM){var i=Ni.from(e.buffer,e.byteOffset,e.byteLength);if(i.byteLength===e.byteLength)return i}var n=e instanceof Uint8Array?e:new Uint8Array(e.buffer,e.byteOffset,e.byteLength),s=Ni.from(n);if(s.length===e.byteLength)return s}if(DM&&e instanceof Uint8Array)return Ni.from(e);var a=FM(e);if(a)for(var o=0;o<e.length;o+=1){var l=e[o];if(typeof l!="number"||l<0||l>255||~~l!==l)throw new RangeError("Array items must be numbers in the range 0-255.")}if(a||Ni.isBuffer(e)&&e.constructor&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e))return Ni.from(e);throw new TypeError('The "data" argument must be a string, an Array, a Buffer, a Uint8Array, or a DataView.')}});var jy=H((dV,Gy)=>{"use strict";m();var LM=yf().Buffer,NM=Uy();function Of(t,e){this._block=LM.alloc(t),this._finalSize=e,this._blockSize=t,this._len=0}Of.prototype.update=function(t,e){t=NM(t,e||"utf8");for(var r=this._block,i=this._blockSize,n=t.length,s=this._len,a=0;a<n;){for(var o=s%i,l=Math.min(n-a,i-o),c=0;c<l;c++)r[o+c]=t[a+c];s+=l,a+=l,s%i===0&&this._update(r)}return this._len+=n,this};Of.prototype.digest=function(t){var e=this._len%this._blockSize;this._block[e]=128,this._block.fill(0,e+1),e>=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=this._len*8;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var i=(r&4294967295)>>>0,n=(r-i)/4294967296;this._block.writeUInt32BE(n,this._blockSize-8),this._block.writeUInt32BE(i,this._blockSize-4)}this._update(this._block);var s=this._hash();return t?s.toString(t):s};Of.prototype._update=function(){throw new Error("_update must be implemented by subclass")};Gy.exports=Of});var Wy=H((pV,zy)=>{"use strict";m();var BM=I_(),Vy=jy(),HM=yf().Buffer,UM=[1518500249,1859775393,-1894007588,-899497514],GM=new Array(80);function gc(){this.init(),this._w=GM,Vy.call(this,64,56)}BM(gc,Vy);gc.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this};function jM(t){return t<<1|t>>>31}function VM(t){return t<<5|t>>>27}function zM(t){return t<<30|t>>>2}function WM(t,e,r,i){return t===0?e&r|~e&i:t===2?e&r|e&i|r&i:e^r^i}gc.prototype._update=function(t){for(var e=this._w,r=this._a|0,i=this._b|0,n=this._c|0,s=this._d|0,a=this._e|0,o=0;o<16;++o)e[o]=t.readInt32BE(o*4);for(;o<80;++o)e[o]=jM(e[o-3]^e[o-8]^e[o-14]^e[o-16]);for(var l=0;l<80;++l){var c=~~(l/20),u=VM(r)+WM(c,i,n,s)+a+e[l]+UM[c]|0;a=s,s=n,n=zM(i),i=r,r=u}this._a=r+this._a|0,this._b=i+this._b|0,this._c=n+this._c|0,this._d=s+this._d|0,this._e=a+this._e|0};gc.prototype._hash=function(){var t=HM.allocUnsafe(20);return t.writeInt32BE(this._a|0,0),t.writeInt32BE(this._b|0,4),t.writeInt32BE(this._c|0,8),t.writeInt32BE(this._d|0,12),t.writeInt32BE(this._e|0,16),t};zy.exports=gc});var Yy=H(ym=>{m();var qy;(function(t){typeof DO_NOT_EXPORT_CRC=="undefined"?typeof ym=="object"?t(ym):typeof define=="function"&&define.amd?define(function(){var e={};return t(e),e}):t(qy={}):t(qy={})})(function(t){t.version="1.2.2";function e(){for(var w=0,x=new Array(256),y=0;y!=256;++y)w=y,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,w=w&1?-306674912^w>>>1:w>>>1,x[y]=w;return typeof Int32Array!="undefined"?new Int32Array(x):x}var r=e();function i(w){var x=0,y=0,C=0,P=typeof Int32Array!="undefined"?new Int32Array(4096):new Array(4096);for(C=0;C!=256;++C)P[C]=w[C];for(C=0;C!=256;++C)for(y=w[C],x=256+C;x<4096;x+=256)y=P[x]=y>>>8^w[y&255];var L=[];for(C=1;C!=16;++C)L[C-1]=typeof Int32Array!="undefined"?P.subarray(C*256,C*256+256):P.slice(C*256,C*256+256);return L}var n=i(r),s=n[0],a=n[1],o=n[2],l=n[3],c=n[4],u=n[5],f=n[6],d=n[7],h=n[8],p=n[9],g=n[10],v=n[11],_=n[12],b=n[13],S=n[14];function k(w,x){for(var y=x^-1,C=0,P=w.length;C<P;)y=y>>>8^r[(y^w.charCodeAt(C++))&255];return~y}function E(w,x){for(var y=x^-1,C=w.length-15,P=0;P<C;)y=S[w[P++]^y&255]^b[w[P++]^y>>8&255]^_[w[P++]^y>>16&255]^v[w[P++]^y>>>24]^g[w[P++]]^p[w[P++]]^h[w[P++]]^d[w[P++]]^f[w[P++]]^u[w[P++]]^c[w[P++]]^l[w[P++]]^o[w[P++]]^a[w[P++]]^s[w[P++]]^r[w[P++]];for(C+=15;P<C;)y=y>>>8^r[(y^w[P++])&255];return~y}function A(w,x){for(var y=x^-1,C=0,P=w.length,L=0,N=0;C<P;)L=w.charCodeAt(C++),L<128?y=y>>>8^r[(y^L)&255]:L<2048?(y=y>>>8^r[(y^(192|L>>6&31))&255],y=y>>>8^r[(y^(128|L&63))&255]):L>=55296&&L<57344?(L=(L&1023)+64,N=w.charCodeAt(C++)&1023,y=y>>>8^r[(y^(240|L>>8&7))&255],y=y>>>8^r[(y^(128|L>>2&63))&255],y=y>>>8^r[(y^(128|N>>6&15|(L&3)<<4))&255],y=y>>>8^r[(y^(128|N&63))&255]):(y=y>>>8^r[(y^(224|L>>12&15))&255],y=y>>>8^r[(y^(128|L>>6&63))&255],y=y>>>8^r[(y^(128|L&63))&255]);return~y}t.table=r,t.bstr=k,t.buf=E,t.str=A})});var Vn=H(_r=>{"use strict";m();var qM=typeof Uint8Array!="undefined"&&typeof Uint16Array!="undefined"&&typeof Int32Array!="undefined";function YM(t,e){return Object.prototype.hasOwnProperty.call(t,e)}_r.assign=function(t){for(var e=Array.prototype.slice.call(arguments,1);e.length;){var r=e.shift();if(r){if(typeof r!="object")throw new TypeError(r+"must be non-object");for(var i in r)YM(r,i)&&(t[i]=r[i])}}return t};_r.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var XM={arraySet:function(t,e,r,i,n){if(e.subarray&&t.subarray){t.set(e.subarray(r,r+i),n);return}for(var s=0;s<i;s++)t[n+s]=e[r+s]},flattenChunks:function(t){var e,r,i,n,s,a;for(i=0,e=0,r=t.length;e<r;e++)i+=t[e].length;for(a=new Uint8Array(i),n=0,e=0,r=t.length;e<r;e++)s=t[e],a.set(s,n),n+=s.length;return a}},ZM={arraySet:function(t,e,r,i,n){for(var s=0;s<i;s++)t[n+s]=e[r+s]},flattenChunks:function(t){return[].concat.apply([],t)}};_r.setTyped=function(t){t?(_r.Buf8=Uint8Array,_r.Buf16=Uint16Array,_r.Buf32=Int32Array,_r.assign(_r,XM)):(_r.Buf8=Array,_r.Buf16=Array,_r.Buf32=Array,_r.assign(_r,ZM))};_r.setTyped(qM)});var vx=H(Oo=>{"use strict";m();var KM=Vn(),QM=4,Xy=0,Zy=1,JM=2;function Do(t){for(var e=t.length;--e>=0;)t[e]=0}var eD=0,rx=1,tD=2,rD=3,iD=258,Tm=29,xc=256,wc=xc+1+Tm,Mo=30,Pm=19,ix=2*wc+1,ia=15,xm=16,nD=7,Rm=256,nx=16,sx=17,ax=18,Am=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],Lf=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],sD=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],ox=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],aD=512,zn=new Array((wc+2)*2);Do(zn);var vc=new Array(Mo*2);Do(vc);var _c=new Array(aD);Do(_c);var bc=new Array(iD-rD+1);Do(bc);var $m=new Array(Tm);Do($m);var Nf=new Array(Mo);Do(Nf);function Em(t,e,r,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=r,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}var lx,cx,ux;function Sm(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function fx(t){return t<256?_c[t]:_c[256+(t>>>7)]}function yc(t,e){t.pending_buf[t.pending++]=e&255,t.pending_buf[t.pending++]=e>>>8&255}function $r(t,e,r){t.bi_valid>xm-r?(t.bi_buf|=e<<t.bi_valid&65535,yc(t,t.bi_buf),t.bi_buf=e>>xm-t.bi_valid,t.bi_valid+=r-xm):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=r)}function un(t,e,r){$r(t,r[e*2],r[e*2+1])}function dx(t,e){var r=0;do r|=t&1,t>>>=1,r<<=1;while(--e>0);return r>>>1}function oD(t){t.bi_valid===16?(yc(t,t.bi_buf),t.bi_buf=0,t.bi_valid=0):t.bi_valid>=8&&(t.pending_buf[t.pending++]=t.bi_buf&255,t.bi_buf>>=8,t.bi_valid-=8)}function lD(t,e){var r=e.dyn_tree,i=e.max_code,n=e.stat_desc.static_tree,s=e.stat_desc.has_stree,a=e.stat_desc.extra_bits,o=e.stat_desc.extra_base,l=e.stat_desc.max_length,c,u,f,d,h,p,g=0;for(d=0;d<=ia;d++)t.bl_count[d]=0;for(r[t.heap[t.heap_max]*2+1]=0,c=t.heap_max+1;c<ix;c++)u=t.heap[c],d=r[r[u*2+1]*2+1]+1,d>l&&(d=l,g++),r[u*2+1]=d,!(u>i)&&(t.bl_count[d]++,h=0,u>=o&&(h=a[u-o]),p=r[u*2],t.opt_len+=p*(d+h),s&&(t.static_len+=p*(n[u*2+1]+h)));if(g!==0){do{for(d=l-1;t.bl_count[d]===0;)d--;t.bl_count[d]--,t.bl_count[d+1]+=2,t.bl_count[l]--,g-=2}while(g>0);for(d=l;d!==0;d--)for(u=t.bl_count[d];u!==0;)f=t.heap[--c],!(f>i)&&(r[f*2+1]!==d&&(t.opt_len+=(d-r[f*2+1])*r[f*2],r[f*2+1]=d),u--)}}function hx(t,e,r){var i=new Array(ia+1),n=0,s,a;for(s=1;s<=ia;s++)i[s]=n=n+r[s-1]<<1;for(a=0;a<=e;a++){var o=t[a*2+1];o!==0&&(t[a*2]=dx(i[o]++,o))}}function cD(){var t,e,r,i,n,s=new Array(ia+1);for(r=0,i=0;i<Tm-1;i++)for($m[i]=r,t=0;t<1<<Am[i];t++)bc[r++]=i;for(bc[r-1]=i,n=0,i=0;i<16;i++)for(Nf[i]=n,t=0;t<1<<Lf[i];t++)_c[n++]=i;for(n>>=7;i<Mo;i++)for(Nf[i]=n<<7,t=0;t<1<<Lf[i]-7;t++)_c[256+n++]=i;for(e=0;e<=ia;e++)s[e]=0;for(t=0;t<=143;)zn[t*2+1]=8,t++,s[8]++;for(;t<=255;)zn[t*2+1]=9,t++,s[9]++;for(;t<=279;)zn[t*2+1]=7,t++,s[7]++;for(;t<=287;)zn[t*2+1]=8,t++,s[8]++;for(hx(zn,wc+1,s),t=0;t<Mo;t++)vc[t*2+1]=5,vc[t*2]=dx(t,5);lx=new Em(zn,Am,xc+1,wc,ia),cx=new Em(vc,Lf,0,Mo,ia),ux=new Em(new Array(0),sD,0,Pm,nD)}function px(t){var e;for(e=0;e<wc;e++)t.dyn_ltree[e*2]=0;for(e=0;e<Mo;e++)t.dyn_dtree[e*2]=0;for(e=0;e<Pm;e++)t.bl_tree[e*2]=0;t.dyn_ltree[Rm*2]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function mx(t){t.bi_valid>8?yc(t,t.bi_buf):t.bi_valid>0&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function uD(t,e,r,i){mx(t),i&&(yc(t,r),yc(t,~r)),KM.arraySet(t.pending_buf,t.window,e,r,t.pending),t.pending+=r}function Ky(t,e,r,i){var n=e*2,s=r*2;return t[n]<t[s]||t[n]===t[s]&&i[e]<=i[r]}function km(t,e,r){for(var i=t.heap[r],n=r<<1;n<=t.heap_len&&(n<t.heap_len&&Ky(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!Ky(e,i,t.heap[n],t.depth));)t.heap[r]=t.heap[n],r=n,n<<=1;t.heap[r]=i}function Qy(t,e,r){var i,n,s=0,a,o;if(t.last_lit!==0)do i=t.pending_buf[t.d_buf+s*2]<<8|t.pending_buf[t.d_buf+s*2+1],n=t.pending_buf[t.l_buf+s],s++,i===0?un(t,n,e):(a=bc[n],un(t,a+xc+1,e),o=Am[a],o!==0&&(n-=$m[a],$r(t,n,o)),i--,a=fx(i),un(t,a,r),o=Lf[a],o!==0&&(i-=Nf[a],$r(t,i,o)));while(s<t.last_lit);un(t,Rm,e)}function Cm(t,e){var r=e.dyn_tree,i=e.stat_desc.static_tree,n=e.stat_desc.has_stree,s=e.stat_desc.elems,a,o,l=-1,c;for(t.heap_len=0,t.heap_max=ix,a=0;a<s;a++)r[a*2]!==0?(t.heap[++t.heap_len]=l=a,t.depth[a]=0):r[a*2+1]=0;for(;t.heap_len<2;)c=t.heap[++t.heap_len]=l<2?++l:0,r[c*2]=1,t.depth[c]=0,t.opt_len--,n&&(t.static_len-=i[c*2+1]);for(e.max_code=l,a=t.heap_len>>1;a>=1;a--)km(t,r,a);c=s;do a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],km(t,r,1),o=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=o,r[c*2]=r[a*2]+r[o*2],t.depth[c]=(t.depth[a]>=t.depth[o]?t.depth[a]:t.depth[o])+1,r[a*2+1]=r[o*2+1]=c,t.heap[1]=c++,km(t,r,1);while(t.heap_len>=2);t.heap[--t.heap_max]=t.heap[1],lD(t,e),hx(r,l,t.bl_count)}function Jy(t,e,r){var i,n=-1,s,a=e[0*2+1],o=0,l=7,c=4;for(a===0&&(l=138,c=3),e[(r+1)*2+1]=65535,i=0;i<=r;i++)s=a,a=e[(i+1)*2+1],!(++o<l&&s===a)&&(o<c?t.bl_tree[s*2]+=o:s!==0?(s!==n&&t.bl_tree[s*2]++,t.bl_tree[nx*2]++):o<=10?t.bl_tree[sx*2]++:t.bl_tree[ax*2]++,o=0,n=s,a===0?(l=138,c=3):s===a?(l=6,c=3):(l=7,c=4))}function ex(t,e,r){var i,n=-1,s,a=e[0*2+1],o=0,l=7,c=4;for(a===0&&(l=138,c=3),i=0;i<=r;i++)if(s=a,a=e[(i+1)*2+1],!(++o<l&&s===a)){if(o<c)do un(t,s,t.bl_tree);while(--o!==0);else s!==0?(s!==n&&(un(t,s,t.bl_tree),o--),un(t,nx,t.bl_tree),$r(t,o-3,2)):o<=10?(un(t,sx,t.bl_tree),$r(t,o-3,3)):(un(t,ax,t.bl_tree),$r(t,o-11,7));o=0,n=s,a===0?(l=138,c=3):s===a?(l=6,c=3):(l=7,c=4)}}function fD(t){var e;for(Jy(t,t.dyn_ltree,t.l_desc.max_code),Jy(t,t.dyn_dtree,t.d_desc.max_code),Cm(t,t.bl_desc),e=Pm-1;e>=3&&t.bl_tree[ox[e]*2+1]===0;e--);return t.opt_len+=3*(e+1)+5+5+4,e}function dD(t,e,r,i){var n;for($r(t,e-257,5),$r(t,r-1,5),$r(t,i-4,4),n=0;n<i;n++)$r(t,t.bl_tree[ox[n]*2+1],3);ex(t,t.dyn_ltree,e-1),ex(t,t.dyn_dtree,r-1)}function hD(t){var e=4093624447,r;for(r=0;r<=31;r++,e>>>=1)if(e&1&&t.dyn_ltree[r*2]!==0)return Xy;if(t.dyn_ltree[9*2]!==0||t.dyn_ltree[10*2]!==0||t.dyn_ltree[13*2]!==0)return Zy;for(r=32;r<xc;r++)if(t.dyn_ltree[r*2]!==0)return Zy;return Xy}var tx=!1;function pD(t){tx||(cD(),tx=!0),t.l_desc=new Sm(t.dyn_ltree,lx),t.d_desc=new Sm(t.dyn_dtree,cx),t.bl_desc=new Sm(t.bl_tree,ux),t.bi_buf=0,t.bi_valid=0,px(t)}function gx(t,e,r,i){$r(t,(eD<<1)+(i?1:0),3),uD(t,e,r,!0)}function mD(t){$r(t,rx<<1,3),un(t,Rm,zn),oD(t)}function gD(t,e,r,i){var n,s,a=0;t.level>0?(t.strm.data_type===JM&&(t.strm.data_type=hD(t)),Cm(t,t.l_desc),Cm(t,t.d_desc),a=fD(t),n=t.opt_len+3+7>>>3,s=t.static_len+3+7>>>3,s<=n&&(n=s)):n=s=r+5,r+4<=n&&e!==-1?gx(t,e,r,i):t.strategy===QM||s===n?($r(t,(rx<<1)+(i?1:0),3),Qy(t,zn,vc)):($r(t,(tD<<1)+(i?1:0),3),dD(t,t.l_desc.max_code+1,t.d_desc.max_code+1,a+1),Qy(t,t.dyn_ltree,t.dyn_dtree)),px(t),i&&mx(t)}function vD(t,e,r){return t.pending_buf[t.d_buf+t.last_lit*2]=e>>>8&255,t.pending_buf[t.d_buf+t.last_lit*2+1]=e&255,t.pending_buf[t.l_buf+t.last_lit]=r&255,t.last_lit++,e===0?t.dyn_ltree[r*2]++:(t.matches++,e--,t.dyn_ltree[(bc[r]+xc+1)*2]++,t.dyn_dtree[fx(e)*2]++),t.last_lit===t.lit_bufsize-1}Oo._tr_init=pD;Oo._tr_stored_block=gx;Oo._tr_flush_block=gD;Oo._tr_tally=vD;Oo._tr_align=mD});var Fm=H((xV,wx)=>{"use strict";m();function wD(t,e,r,i){for(var n=t&65535|0,s=t>>>16&65535|0,a=0;r!==0;){a=r>2e3?2e3:r,r-=a;do n=n+e[i++]|0,s=s+n|0;while(--a);n%=65521,s%=65521}return n|s<<16|0}wx.exports=wD});var Im=H((SV,_x)=>{"use strict";m();function _D(){for(var t,e=[],r=0;r<256;r++){t=r;for(var i=0;i<8;i++)t=t&1?3988292384^t>>>1:t>>>1;e[r]=t}return e}var bD=_D();function yD(t,e,r,i){var n=bD,s=i+r;t^=-1;for(var a=i;a<s;a++)t=t>>>8^n[(t^e[a])&255];return t^-1}_x.exports=yD});var Bf=H((AV,bx)=>{"use strict";m();bx.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}});var Px=H(hn=>{"use strict";m();var br=Vn(),gi=vx(),Sx=Fm(),ws=Im(),xD=Bf(),oa=0,ED=1,SD=3,Es=4,yx=5,dn=0,xx=1,vi=-2,kD=-3,Mm=-5,AD=-1,CD=1,Hf=2,TD=3,PD=4,RD=0,$D=2,Vf=8,FD=9,ID=15,MD=8,DD=29,OD=256,Om=OD+1+DD,LD=30,ND=19,BD=2*Om+1,HD=15,Pe=3,ys=258,Bi=ys+Pe+1,UD=32,zf=42,Lm=69,Uf=73,Gf=91,jf=103,na=113,Sc=666,$t=1,kc=2,sa=3,Bo=4,GD=3;function xs(t,e){return t.msg=xD[e],e}function Ex(t){return(t<<1)-(t>4?9:0)}function bs(t){for(var e=t.length;--e>=0;)t[e]=0}function _s(t){var e=t.state,r=e.pending;r>t.avail_out&&(r=t.avail_out),r!==0&&(br.arraySet(t.output,e.pending_buf,e.pending_out,r,t.next_out),t.next_out+=r,e.pending_out+=r,t.total_out+=r,t.avail_out-=r,e.pending-=r,e.pending===0&&(e.pending_out=0))}function Xt(t,e){gi._tr_flush_block(t,t.block_start>=0?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,_s(t.strm)}function Ie(t,e){t.pending_buf[t.pending++]=e}function Ec(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=e&255}function jD(t,e,r,i){var n=t.avail_in;return n>i&&(n=i),n===0?0:(t.avail_in-=n,br.arraySet(e,t.input,t.next_in,n,r),t.state.wrap===1?t.adler=Sx(t.adler,e,n,r):t.state.wrap===2&&(t.adler=ws(t.adler,e,n,r)),t.next_in+=n,t.total_in+=n,n)}function kx(t,e){var r=t.max_chain_length,i=t.strstart,n,s,a=t.prev_length,o=t.nice_match,l=t.strstart>t.w_size-Bi?t.strstart-(t.w_size-Bi):0,c=t.window,u=t.w_mask,f=t.prev,d=t.strstart+ys,h=c[i+a-1],p=c[i+a];t.prev_length>=t.good_match&&(r>>=2),o>t.lookahead&&(o=t.lookahead);do if(n=e,!(c[n+a]!==p||c[n+a-1]!==h||c[n]!==c[i]||c[++n]!==c[i+1])){i+=2,n++;do;while(c[++i]===c[++n]&&c[++i]===c[++n]&&c[++i]===c[++n]&&c[++i]===c[++n]&&c[++i]===c[++n]&&c[++i]===c[++n]&&c[++i]===c[++n]&&c[++i]===c[++n]&&i<d);if(s=ys-(d-i),i=d-ys,s>a){if(t.match_start=e,a=s,s>=o)break;h=c[i+a-1],p=c[i+a]}}while((e=f[e&u])>l&&--r!==0);return a<=t.lookahead?a:t.lookahead}function aa(t){var e=t.w_size,r,i,n,s,a;do{if(s=t.window_size-t.lookahead-t.strstart,t.strstart>=e+(e-Bi)){br.arraySet(t.window,t.window,e,e,0),t.match_start-=e,t.strstart-=e,t.block_start-=e,i=t.hash_size,r=i;do n=t.head[--r],t.head[r]=n>=e?n-e:0;while(--i);i=e,r=i;do n=t.prev[--r],t.prev[r]=n>=e?n-e:0;while(--i);s+=e}if(t.strm.avail_in===0)break;if(i=jD(t.strm,t.window,t.strstart+t.lookahead,s),t.lookahead+=i,t.lookahead+t.insert>=Pe)for(a=t.strstart-t.insert,t.ins_h=t.window[a],t.ins_h=(t.ins_h<<t.hash_shift^t.window[a+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[a+Pe-1])&t.hash_mask,t.prev[a&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=a,a++,t.insert--,!(t.lookahead+t.insert<Pe)););}while(t.lookahead<Bi&&t.strm.avail_in!==0)}function VD(t,e){var r=65535;for(r>t.pending_buf_size-5&&(r=t.pending_buf_size-5);;){if(t.lookahead<=1){if(aa(t),t.lookahead===0&&e===oa)return $t;if(t.lookahead===0)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+r;if((t.strstart===0||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,Xt(t,!1),t.strm.avail_out===0)||t.strstart-t.block_start>=t.w_size-Bi&&(Xt(t,!1),t.strm.avail_out===0))return $t}return t.insert=0,e===Es?(Xt(t,!0),t.strm.avail_out===0?sa:Bo):(t.strstart>t.block_start&&(Xt(t,!1),t.strm.avail_out===0),$t)}function Dm(t,e){for(var r,i;;){if(t.lookahead<Bi){if(aa(t),t.lookahead<Bi&&e===oa)return $t;if(t.lookahead===0)break}if(r=0,t.lookahead>=Pe&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+Pe-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),r!==0&&t.strstart-r<=t.w_size-Bi&&(t.match_length=kx(t,r)),t.match_length>=Pe)if(i=gi._tr_tally(t,t.strstart-t.match_start,t.match_length-Pe),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=Pe){t.match_length--;do t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+Pe-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart;while(--t.match_length!==0);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else i=gi._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(Xt(t,!1),t.strm.avail_out===0))return $t}return t.insert=t.strstart<Pe-1?t.strstart:Pe-1,e===Es?(Xt(t,!0),t.strm.avail_out===0?sa:Bo):t.last_lit&&(Xt(t,!1),t.strm.avail_out===0)?$t:kc}function Lo(t,e){for(var r,i,n;;){if(t.lookahead<Bi){if(aa(t),t.lookahead<Bi&&e===oa)return $t;if(t.lookahead===0)break}if(r=0,t.lookahead>=Pe&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+Pe-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=Pe-1,r!==0&&t.prev_length<t.max_lazy_match&&t.strstart-r<=t.w_size-Bi&&(t.match_length=kx(t,r),t.match_length<=5&&(t.strategy===CD||t.match_length===Pe&&t.strstart-t.match_start>4096)&&(t.match_length=Pe-1)),t.prev_length>=Pe&&t.match_length<=t.prev_length){n=t.strstart+t.lookahead-Pe,i=gi._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-Pe),t.lookahead-=t.prev_length-1,t.prev_length-=2;do++t.strstart<=n&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+Pe-1])&t.hash_mask,r=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart);while(--t.prev_length!==0);if(t.match_available=0,t.match_length=Pe-1,t.strstart++,i&&(Xt(t,!1),t.strm.avail_out===0))return $t}else if(t.match_available){if(i=gi._tr_tally(t,0,t.window[t.strstart-1]),i&&Xt(t,!1),t.strstart++,t.lookahead--,t.strm.avail_out===0)return $t}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=gi._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<Pe-1?t.strstart:Pe-1,e===Es?(Xt(t,!0),t.strm.avail_out===0?sa:Bo):t.last_lit&&(Xt(t,!1),t.strm.avail_out===0)?$t:kc}function zD(t,e){for(var r,i,n,s,a=t.window;;){if(t.lookahead<=ys){if(aa(t),t.lookahead<=ys&&e===oa)return $t;if(t.lookahead===0)break}if(t.match_length=0,t.lookahead>=Pe&&t.strstart>0&&(n=t.strstart-1,i=a[n],i===a[++n]&&i===a[++n]&&i===a[++n])){s=t.strstart+ys;do;while(i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&i===a[++n]&&n<s);t.match_length=ys-(s-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=Pe?(r=gi._tr_tally(t,1,t.match_length-Pe),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(r=gi._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),r&&(Xt(t,!1),t.strm.avail_out===0))return $t}return t.insert=0,e===Es?(Xt(t,!0),t.strm.avail_out===0?sa:Bo):t.last_lit&&(Xt(t,!1),t.strm.avail_out===0)?$t:kc}function WD(t,e){for(var r;;){if(t.lookahead===0&&(aa(t),t.lookahead===0)){if(e===oa)return $t;break}if(t.match_length=0,r=gi._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,r&&(Xt(t,!1),t.strm.avail_out===0))return $t}return t.insert=0,e===Es?(Xt(t,!0),t.strm.avail_out===0?sa:Bo):t.last_lit&&(Xt(t,!1),t.strm.avail_out===0)?$t:kc}function fn(t,e,r,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=r,this.max_chain=i,this.func=n}var No;No=[new fn(0,0,0,0,VD),new fn(4,4,8,4,Dm),new fn(4,5,16,8,Dm),new fn(4,6,32,32,Dm),new fn(4,4,16,16,Lo),new fn(8,16,32,32,Lo),new fn(8,16,128,128,Lo),new fn(8,32,128,256,Lo),new fn(32,128,258,1024,Lo),new fn(32,258,258,4096,Lo)];function qD(t){t.window_size=2*t.w_size,bs(t.head),t.max_lazy_match=No[t.level].max_lazy,t.good_match=No[t.level].good_length,t.nice_match=No[t.level].nice_length,t.max_chain_length=No[t.level].max_chain,t.strstart=0,t.block_start=0,t.lookahead=0,t.insert=0,t.match_length=t.prev_length=Pe-1,t.match_available=0,t.ins_h=0}function YD(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Vf,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new br.Buf16(BD*2),this.dyn_dtree=new br.Buf16((2*LD+1)*2),this.bl_tree=new br.Buf16((2*ND+1)*2),bs(this.dyn_ltree),bs(this.dyn_dtree),bs(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new br.Buf16(HD+1),this.heap=new br.Buf16(2*Om+1),bs(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new br.Buf16(2*Om+1),bs(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Ax(t){var e;return!t||!t.state?xs(t,vi):(t.total_in=t.total_out=0,t.data_type=$D,e=t.state,e.pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?zf:na,t.adler=e.wrap===2?0:1,e.last_flush=oa,gi._tr_init(e),dn)}function Cx(t){var e=Ax(t);return e===dn&&qD(t.state),e}function XD(t,e){return!t||!t.state||t.state.wrap!==2?vi:(t.state.gzhead=e,dn)}function Tx(t,e,r,i,n,s){if(!t)return vi;var a=1;if(e===AD&&(e=6),i<0?(a=0,i=-i):i>15&&(a=2,i-=16),n<1||n>FD||r!==Vf||i<8||i>15||e<0||e>9||s<0||s>PD)return xs(t,vi);i===8&&(i=9);var o=new YD;return t.state=o,o.strm=t,o.wrap=a,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+Pe-1)/Pe),o.window=new br.Buf8(o.w_size*2),o.head=new br.Buf16(o.hash_size),o.prev=new br.Buf16(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=o.lit_bufsize*4,o.pending_buf=new br.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=e,o.strategy=s,o.method=r,Cx(t)}function ZD(t,e){return Tx(t,e,Vf,ID,MD,RD)}function KD(t,e){var r,i,n,s;if(!t||!t.state||e>yx||e<0)return t?xs(t,vi):vi;if(i=t.state,!t.output||!t.input&&t.avail_in!==0||i.status===Sc&&e!==Es)return xs(t,t.avail_out===0?Mm:vi);if(i.strm=t,r=i.last_flush,i.last_flush=e,i.status===zf)if(i.wrap===2)t.adler=0,Ie(i,31),Ie(i,139),Ie(i,8),i.gzhead?(Ie(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),Ie(i,i.gzhead.time&255),Ie(i,i.gzhead.time>>8&255),Ie(i,i.gzhead.time>>16&255),Ie(i,i.gzhead.time>>24&255),Ie(i,i.level===9?2:i.strategy>=Hf||i.level<2?4:0),Ie(i,i.gzhead.os&255),i.gzhead.extra&&i.gzhead.extra.length&&(Ie(i,i.gzhead.extra.length&255),Ie(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=ws(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=Lm):(Ie(i,0),Ie(i,0),Ie(i,0),Ie(i,0),Ie(i,0),Ie(i,i.level===9?2:i.strategy>=Hf||i.level<2?4:0),Ie(i,GD),i.status=na);else{var a=Vf+(i.w_bits-8<<4)<<8,o=-1;i.strategy>=Hf||i.level<2?o=0:i.level<6?o=1:i.level===6?o=2:o=3,a|=o<<6,i.strstart!==0&&(a|=UD),a+=31-a%31,i.status=na,Ec(i,a),i.strstart!==0&&(Ec(i,t.adler>>>16),Ec(i,t.adler&65535)),t.adler=1}if(i.status===Lm)if(i.gzhead.extra){for(n=i.pending;i.gzindex<(i.gzhead.extra.length&65535)&&!(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=ws(t.adler,i.pending_buf,i.pending-n,n)),_s(t),n=i.pending,i.pending===i.pending_buf_size));)Ie(i,i.gzhead.extra[i.gzindex]&255),i.gzindex++;i.gzhead.hcrc&&i.pending>n&&(t.adler=ws(t.adler,i.pending_buf,i.pending-n,n)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=Uf)}else i.status=Uf;if(i.status===Uf)if(i.gzhead.name){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=ws(t.adler,i.pending_buf,i.pending-n,n)),_s(t),n=i.pending,i.pending===i.pending_buf_size)){s=1;break}i.gzindex<i.gzhead.name.length?s=i.gzhead.name.charCodeAt(i.gzindex++)&255:s=0,Ie(i,s)}while(s!==0);i.gzhead.hcrc&&i.pending>n&&(t.adler=ws(t.adler,i.pending_buf,i.pending-n,n)),s===0&&(i.gzindex=0,i.status=Gf)}else i.status=Gf;if(i.status===Gf)if(i.gzhead.comment){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=ws(t.adler,i.pending_buf,i.pending-n,n)),_s(t),n=i.pending,i.pending===i.pending_buf_size)){s=1;break}i.gzindex<i.gzhead.comment.length?s=i.gzhead.comment.charCodeAt(i.gzindex++)&255:s=0,Ie(i,s)}while(s!==0);i.gzhead.hcrc&&i.pending>n&&(t.adler=ws(t.adler,i.pending_buf,i.pending-n,n)),s===0&&(i.status=jf)}else i.status=jf;if(i.status===jf&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&_s(t),i.pending+2<=i.pending_buf_size&&(Ie(i,t.adler&255),Ie(i,t.adler>>8&255),t.adler=0,i.status=na)):i.status=na),i.pending!==0){if(_s(t),t.avail_out===0)return i.last_flush=-1,dn}else if(t.avail_in===0&&Ex(e)<=Ex(r)&&e!==Es)return xs(t,Mm);if(i.status===Sc&&t.avail_in!==0)return xs(t,Mm);if(t.avail_in!==0||i.lookahead!==0||e!==oa&&i.status!==Sc){var l=i.strategy===Hf?WD(i,e):i.strategy===TD?zD(i,e):No[i.level].func(i,e);if((l===sa||l===Bo)&&(i.status=Sc),l===$t||l===sa)return t.avail_out===0&&(i.last_flush=-1),dn;if(l===kc&&(e===ED?gi._tr_align(i):e!==yx&&(gi._tr_stored_block(i,0,0,!1),e===SD&&(bs(i.head),i.lookahead===0&&(i.strstart=0,i.block_start=0,i.insert=0))),_s(t),t.avail_out===0))return i.last_flush=-1,dn}return e!==Es?dn:i.wrap<=0?xx:(i.wrap===2?(Ie(i,t.adler&255),Ie(i,t.adler>>8&255),Ie(i,t.adler>>16&255),Ie(i,t.adler>>24&255),Ie(i,t.total_in&255),Ie(i,t.total_in>>8&255),Ie(i,t.total_in>>16&255),Ie(i,t.total_in>>24&255)):(Ec(i,t.adler>>>16),Ec(i,t.adler&65535)),_s(t),i.wrap>0&&(i.wrap=-i.wrap),i.pending!==0?dn:xx)}function QD(t){var e;return!t||!t.state?vi:(e=t.state.status,e!==zf&&e!==Lm&&e!==Uf&&e!==Gf&&e!==jf&&e!==na&&e!==Sc?xs(t,vi):(t.state=null,e===na?xs(t,kD):dn))}function JD(t,e){var r=e.length,i,n,s,a,o,l,c,u;if(!t||!t.state||(i=t.state,a=i.wrap,a===2||a===1&&i.status!==zf||i.lookahead))return vi;for(a===1&&(t.adler=Sx(t.adler,e,r,0)),i.wrap=0,r>=i.w_size&&(a===0&&(bs(i.head),i.strstart=0,i.block_start=0,i.insert=0),u=new br.Buf8(i.w_size),br.arraySet(u,e,r-i.w_size,i.w_size,0),e=u,r=i.w_size),o=t.avail_in,l=t.next_in,c=t.input,t.avail_in=r,t.next_in=0,t.input=e,aa(i);i.lookahead>=Pe;){n=i.strstart,s=i.lookahead-(Pe-1);do i.ins_h=(i.ins_h<<i.hash_shift^i.window[n+Pe-1])&i.hash_mask,i.prev[n&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=n,n++;while(--s);i.strstart=n,i.lookahead=Pe-1,aa(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=Pe-1,i.match_available=0,t.next_in=l,t.input=c,t.avail_in=o,i.wrap=a,dn}hn.deflateInit=ZD;hn.deflateInit2=Tx;hn.deflateReset=Cx;hn.deflateResetKeep=Ax;hn.deflateSetHeader=XD;hn.deflate=KD;hn.deflateEnd=QD;hn.deflateSetDictionary=JD;hn.deflateInfo="pako deflate (from Nodeca project)"});var Nm=H(Ho=>{"use strict";m();var Wf=Vn(),Rx=!0,$x=!0;try{String.fromCharCode.apply(null,[0])}catch(t){Rx=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){$x=!1}var Ac=new Wf.Buf8(256);for(Wn=0;Wn<256;Wn++)Ac[Wn]=Wn>=252?6:Wn>=248?5:Wn>=240?4:Wn>=224?3:Wn>=192?2:1;var Wn;Ac[254]=Ac[254]=1;Ho.string2buf=function(t){var e,r,i,n,s,a=t.length,o=0;for(n=0;n<a;n++)r=t.charCodeAt(n),(r&64512)===55296&&n+1<a&&(i=t.charCodeAt(n+1),(i&64512)===56320&&(r=65536+(r-55296<<10)+(i-56320),n++)),o+=r<128?1:r<2048?2:r<65536?3:4;for(e=new Wf.Buf8(o),s=0,n=0;s<o;n++)r=t.charCodeAt(n),(r&64512)===55296&&n+1<a&&(i=t.charCodeAt(n+1),(i&64512)===56320&&(r=65536+(r-55296<<10)+(i-56320),n++)),r<128?e[s++]=r:r<2048?(e[s++]=192|r>>>6,e[s++]=128|r&63):r<65536?(e[s++]=224|r>>>12,e[s++]=128|r>>>6&63,e[s++]=128|r&63):(e[s++]=240|r>>>18,e[s++]=128|r>>>12&63,e[s++]=128|r>>>6&63,e[s++]=128|r&63);return e};function Fx(t,e){if(e<65534&&(t.subarray&&$x||!t.subarray&&Rx))return String.fromCharCode.apply(null,Wf.shrinkBuf(t,e));for(var r="",i=0;i<e;i++)r+=String.fromCharCode(t[i]);return r}Ho.buf2binstring=function(t){return Fx(t,t.length)};Ho.binstring2buf=function(t){for(var e=new Wf.Buf8(t.length),r=0,i=e.length;r<i;r++)e[r]=t.charCodeAt(r);return e};Ho.buf2string=function(t,e){var r,i,n,s,a=e||t.length,o=new Array(a*2);for(i=0,r=0;r<a;){if(n=t[r++],n<128){o[i++]=n;continue}if(s=Ac[n],s>4){o[i++]=65533,r+=s-1;continue}for(n&=s===2?31:s===3?15:7;s>1&&r<a;)n=n<<6|t[r++]&63,s--;if(s>1){o[i++]=65533;continue}n<65536?o[i++]=n:(n-=65536,o[i++]=55296|n>>10&1023,o[i++]=56320|n&1023)}return Fx(o,i)};Ho.utf8border=function(t,e){var r;for(e=e||t.length,e>t.length&&(e=t.length),r=e-1;r>=0&&(t[r]&192)===128;)r--;return r<0||r===0?e:r+Ac[t[r]]>e?r:e}});var Bm=H((FV,Ix)=>{"use strict";m();function eO(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}Ix.exports=eO});var Lx=H(Pc=>{"use strict";m();var Cc=Px(),Tc=Vn(),Um=Nm(),Gm=Bf(),tO=Bm(),Ox=Object.prototype.toString,rO=0,Hm=4,Uo=0,Mx=1,Dx=2,iO=-1,nO=0,sO=8;function la(t){if(!(this instanceof la))return new la(t);this.options=Tc.assign({level:iO,method:sO,chunkSize:16384,windowBits:15,memLevel:8,strategy:nO,to:""},t||{});var e=this.options;e.raw&&e.windowBits>0?e.windowBits=-e.windowBits:e.gzip&&e.windowBits>0&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new tO,this.strm.avail_out=0;var r=Cc.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(r!==Uo)throw new Error(Gm[r]);if(e.header&&Cc.deflateSetHeader(this.strm,e.header),e.dictionary){var i;if(typeof e.dictionary=="string"?i=Um.string2buf(e.dictionary):Ox.call(e.dictionary)==="[object ArrayBuffer]"?i=new Uint8Array(e.dictionary):i=e.dictionary,r=Cc.deflateSetDictionary(this.strm,i),r!==Uo)throw new Error(Gm[r]);this._dict_set=!0}}la.prototype.push=function(t,e){var r=this.strm,i=this.options.chunkSize,n,s;if(this.ended)return!1;s=e===~~e?e:e===!0?Hm:rO,typeof t=="string"?r.input=Um.string2buf(t):Ox.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;do{if(r.avail_out===0&&(r.output=new Tc.Buf8(i),r.next_out=0,r.avail_out=i),n=Cc.deflate(r,s),n!==Mx&&n!==Uo)return this.onEnd(n),this.ended=!0,!1;(r.avail_out===0||r.avail_in===0&&(s===Hm||s===Dx))&&(this.options.to==="string"?this.onData(Um.buf2binstring(Tc.shrinkBuf(r.output,r.next_out))):this.onData(Tc.shrinkBuf(r.output,r.next_out)))}while((r.avail_in>0||r.avail_out===0)&&n!==Mx);return s===Hm?(n=Cc.deflateEnd(this.strm),this.onEnd(n),this.ended=!0,n===Uo):(s===Dx&&(this.onEnd(Uo),r.avail_out=0),!0)};la.prototype.onData=function(t){this.chunks.push(t)};la.prototype.onEnd=function(t){t===Uo&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Tc.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function jm(t,e){var r=new la(e);if(r.push(t,!0),r.err)throw r.msg||Gm[r.err];return r.result}function aO(t,e){return e=e||{},e.raw=!0,jm(t,e)}function oO(t,e){return e=e||{},e.gzip=!0,jm(t,e)}Pc.Deflate=la;Pc.deflate=jm;Pc.deflateRaw=aO;Pc.gzip=oO});var Bx=H((OV,Nx)=>{"use strict";m();var qf=30,lO=12;Nx.exports=function(e,r){var i,n,s,a,o,l,c,u,f,d,h,p,g,v,_,b,S,k,E,A,w,x,y,C,P;i=e.state,n=e.next_in,C=e.input,s=n+(e.avail_in-5),a=e.next_out,P=e.output,o=a-(r-e.avail_out),l=a+(e.avail_out-257),c=i.dmax,u=i.wsize,f=i.whave,d=i.wnext,h=i.window,p=i.hold,g=i.bits,v=i.lencode,_=i.distcode,b=(1<<i.lenbits)-1,S=(1<<i.distbits)-1;e:do{g<15&&(p+=C[n++]<<g,g+=8,p+=C[n++]<<g,g+=8),k=v[p&b];t:for(;;){if(E=k>>>24,p>>>=E,g-=E,E=k>>>16&255,E===0)P[a++]=k&65535;else if(E&16){A=k&65535,E&=15,E&&(g<E&&(p+=C[n++]<<g,g+=8),A+=p&(1<<E)-1,p>>>=E,g-=E),g<15&&(p+=C[n++]<<g,g+=8,p+=C[n++]<<g,g+=8),k=_[p&S];r:for(;;){if(E=k>>>24,p>>>=E,g-=E,E=k>>>16&255,E&16){if(w=k&65535,E&=15,g<E&&(p+=C[n++]<<g,g+=8,g<E&&(p+=C[n++]<<g,g+=8)),w+=p&(1<<E)-1,w>c){e.msg="invalid distance too far back",i.mode=qf;break e}if(p>>>=E,g-=E,E=a-o,w>E){if(E=w-E,E>f&&i.sane){e.msg="invalid distance too far back",i.mode=qf;break e}if(x=0,y=h,d===0){if(x+=u-E,E<A){A-=E;do P[a++]=h[x++];while(--E);x=a-w,y=P}}else if(d<E){if(x+=u+d-E,E-=d,E<A){A-=E;do P[a++]=h[x++];while(--E);if(x=0,d<A){E=d,A-=E;do P[a++]=h[x++];while(--E);x=a-w,y=P}}}else if(x+=d-E,E<A){A-=E;do P[a++]=h[x++];while(--E);x=a-w,y=P}for(;A>2;)P[a++]=y[x++],P[a++]=y[x++],P[a++]=y[x++],A-=3;A&&(P[a++]=y[x++],A>1&&(P[a++]=y[x++]))}else{x=a-w;do P[a++]=P[x++],P[a++]=P[x++],P[a++]=P[x++],A-=3;while(A>2);A&&(P[a++]=P[x++],A>1&&(P[a++]=P[x++]))}}else if(E&64){e.msg="invalid distance code",i.mode=qf;break e}else{k=_[(k&65535)+(p&(1<<E)-1)];continue r}break}}else if(E&64)if(E&32){i.mode=lO;break e}else{e.msg="invalid literal/length code",i.mode=qf;break e}else{k=v[(k&65535)+(p&(1<<E)-1)];continue t}break}}while(n<s&&a<l);A=g>>3,n-=A,g-=A<<3,p&=(1<<g)-1,e.next_in=n,e.next_out=a,e.avail_in=n<s?5+(s-n):5-(n-s),e.avail_out=a<l?257+(l-a):257-(a-l),i.hold=p,i.bits=g}});var Wx=H((NV,zx)=>{"use strict";m();var Hx=Vn(),Go=15,Ux=852,Gx=592,jx=0,Vm=1,Vx=2,cO=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],uO=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],fO=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],dO=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];zx.exports=function(e,r,i,n,s,a,o,l){var c=l.bits,u=0,f=0,d=0,h=0,p=0,g=0,v=0,_=0,b=0,S=0,k,E,A,w,x,y=null,C=0,P,L=new Hx.Buf16(Go+1),N=new Hx.Buf16(Go+1),B=null,ge=0,Le,ke,ne;for(u=0;u<=Go;u++)L[u]=0;for(f=0;f<n;f++)L[r[i+f]]++;for(p=c,h=Go;h>=1&&L[h]===0;h--);if(p>h&&(p=h),h===0)return s[a++]=1<<24|64<<16|0,s[a++]=1<<24|64<<16|0,l.bits=1,0;for(d=1;d<h&&L[d]===0;d++);for(p<d&&(p=d),_=1,u=1;u<=Go;u++)if(_<<=1,_-=L[u],_<0)return-1;if(_>0&&(e===jx||h!==1))return-1;for(N[1]=0,u=1;u<Go;u++)N[u+1]=N[u]+L[u];for(f=0;f<n;f++)r[i+f]!==0&&(o[N[r[i+f]]++]=f);if(e===jx?(y=B=o,P=19):e===Vm?(y=cO,C-=257,B=uO,ge-=257,P=256):(y=fO,B=dO,P=-1),S=0,f=0,u=d,x=a,g=p,v=0,A=-1,b=1<<p,w=b-1,e===Vm&&b>Ux||e===Vx&&b>Gx)return 1;for(;;){Le=u-v,o[f]<P?(ke=0,ne=o[f]):o[f]>P?(ke=B[ge+o[f]],ne=y[C+o[f]]):(ke=96,ne=0),k=1<<u-v,E=1<<g,d=E;do E-=k,s[x+(S>>v)+E]=Le<<24|ke<<16|ne|0;while(E!==0);for(k=1<<u-1;S&k;)k>>=1;if(k!==0?(S&=k-1,S+=k):S=0,f++,--L[u]===0){if(u===h)break;u=r[i+o[f]]}if(u>p&&(S&w)!==A){for(v===0&&(v=p),x+=d,g=u-v,_=1<<g;g+v<h&&(_-=L[g+v],!(_<=0));)g++,_<<=1;if(b+=1<<g,e===Vm&&b>Ux||e===Vx&&b>Gx)return 1;A=S&w,s[A]=p<<24|g<<16|x-a|0}}return S!==0&&(s[x+S]=u-v<<24|64<<16|0),l.bits=p,0}});var C1=H(Hi=>{"use strict";m();var Xr=Vn(),Zm=Fm(),pn=Im(),hO=Bx(),Rc=Wx(),pO=0,w1=1,_1=2,qx=4,mO=5,Yf=6,ca=0,gO=1,vO=2,wi=-2,b1=-3,Km=-4,wO=-5,Yx=8,y1=1,Xx=2,Zx=3,Kx=4,Qx=5,Jx=6,e1=7,t1=8,r1=9,i1=10,Kf=11,qn=12,zm=13,n1=14,Wm=15,s1=16,a1=17,o1=18,l1=19,Xf=20,Zf=21,c1=22,u1=23,f1=24,d1=25,h1=26,qm=27,p1=28,m1=29,rt=30,Qm=31,_O=32,bO=852,yO=592,xO=15,EO=xO;function g1(t){return(t>>>24&255)+(t>>>8&65280)+((t&65280)<<8)+((t&255)<<24)}function SO(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Xr.Buf16(320),this.work=new Xr.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function x1(t){var e;return!t||!t.state?wi:(e=t.state,t.total_in=t.total_out=e.total=0,t.msg="",e.wrap&&(t.adler=e.wrap&1),e.mode=y1,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Xr.Buf32(bO),e.distcode=e.distdyn=new Xr.Buf32(yO),e.sane=1,e.back=-1,ca)}function E1(t){var e;return!t||!t.state?wi:(e=t.state,e.wsize=0,e.whave=0,e.wnext=0,x1(t))}function S1(t,e){var r,i;return!t||!t.state||(i=t.state,e<0?(r=0,e=-e):(r=(e>>4)+1,e<48&&(e&=15)),e&&(e<8||e>15))?wi:(i.window!==null&&i.wbits!==e&&(i.window=null),i.wrap=r,i.wbits=e,E1(t))}function k1(t,e){var r,i;return t?(i=new SO,t.state=i,i.window=null,r=S1(t,e),r!==ca&&(t.state=null),r):wi}function kO(t){return k1(t,EO)}var v1=!0,Ym,Xm;function AO(t){if(v1){var e;for(Ym=new Xr.Buf32(512),Xm=new Xr.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(Rc(w1,t.lens,0,288,Ym,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;Rc(_1,t.lens,0,32,Xm,0,t.work,{bits:5}),v1=!1}t.lencode=Ym,t.lenbits=9,t.distcode=Xm,t.distbits=5}function A1(t,e,r,i){var n,s=t.state;return s.window===null&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=new Xr.Buf8(s.wsize)),i>=s.wsize?(Xr.arraySet(s.window,e,r-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(n=s.wsize-s.wnext,n>i&&(n=i),Xr.arraySet(s.window,e,r-i,n,s.wnext),i-=n,i?(Xr.arraySet(s.window,e,r-i,i,0),s.wnext=i,s.whave=s.wsize):(s.wnext+=n,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=n))),0}function CO(t,e){var r,i,n,s,a,o,l,c,u,f,d,h,p,g,v=0,_,b,S,k,E,A,w,x,y=new Xr.Buf8(4),C,P,L=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&t.avail_in!==0)return wi;r=t.state,r.mode===qn&&(r.mode=zm),a=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,c=r.hold,u=r.bits,f=o,d=l,x=ca;e:for(;;)switch(r.mode){case y1:if(r.wrap===0){r.mode=zm;break}for(;u<16;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}if(r.wrap&2&&c===35615){r.check=0,y[0]=c&255,y[1]=c>>>8&255,r.check=pn(r.check,y,2,0),c=0,u=0,r.mode=Xx;break}if(r.flags=0,r.head&&(r.head.done=!1),!(r.wrap&1)||(((c&255)<<8)+(c>>8))%31){t.msg="incorrect header check",r.mode=rt;break}if((c&15)!==Yx){t.msg="unknown compression method",r.mode=rt;break}if(c>>>=4,u-=4,w=(c&15)+8,r.wbits===0)r.wbits=w;else if(w>r.wbits){t.msg="invalid window size",r.mode=rt;break}r.dmax=1<<w,t.adler=r.check=1,r.mode=c&512?i1:qn,c=0,u=0;break;case Xx:for(;u<16;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}if(r.flags=c,(r.flags&255)!==Yx){t.msg="unknown compression method",r.mode=rt;break}if(r.flags&57344){t.msg="unknown header flags set",r.mode=rt;break}r.head&&(r.head.text=c>>8&1),r.flags&512&&(y[0]=c&255,y[1]=c>>>8&255,r.check=pn(r.check,y,2,0)),c=0,u=0,r.mode=Zx;case Zx:for(;u<32;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}r.head&&(r.head.time=c),r.flags&512&&(y[0]=c&255,y[1]=c>>>8&255,y[2]=c>>>16&255,y[3]=c>>>24&255,r.check=pn(r.check,y,4,0)),c=0,u=0,r.mode=Kx;case Kx:for(;u<16;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}r.head&&(r.head.xflags=c&255,r.head.os=c>>8),r.flags&512&&(y[0]=c&255,y[1]=c>>>8&255,r.check=pn(r.check,y,2,0)),c=0,u=0,r.mode=Qx;case Qx:if(r.flags&1024){for(;u<16;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}r.length=c,r.head&&(r.head.extra_len=c),r.flags&512&&(y[0]=c&255,y[1]=c>>>8&255,r.check=pn(r.check,y,2,0)),c=0,u=0}else r.head&&(r.head.extra=null);r.mode=Jx;case Jx:if(r.flags&1024&&(h=r.length,h>o&&(h=o),h&&(r.head&&(w=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),Xr.arraySet(r.head.extra,i,s,h,w)),r.flags&512&&(r.check=pn(r.check,i,h,s)),o-=h,s+=h,r.length-=h),r.length))break e;r.length=0,r.mode=e1;case e1:if(r.flags&2048){if(o===0)break e;h=0;do w=i[s+h++],r.head&&w&&r.length<65536&&(r.head.name+=String.fromCharCode(w));while(w&&h<o);if(r.flags&512&&(r.check=pn(r.check,i,h,s)),o-=h,s+=h,w)break e}else r.head&&(r.head.name=null);r.length=0,r.mode=t1;case t1:if(r.flags&4096){if(o===0)break e;h=0;do w=i[s+h++],r.head&&w&&r.length<65536&&(r.head.comment+=String.fromCharCode(w));while(w&&h<o);if(r.flags&512&&(r.check=pn(r.check,i,h,s)),o-=h,s+=h,w)break e}else r.head&&(r.head.comment=null);r.mode=r1;case r1:if(r.flags&512){for(;u<16;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}if(c!==(r.check&65535)){t.msg="header crc mismatch",r.mode=rt;break}c=0,u=0}r.head&&(r.head.hcrc=r.flags>>9&1,r.head.done=!0),t.adler=r.check=0,r.mode=qn;break;case i1:for(;u<32;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}t.adler=r.check=g1(c),c=0,u=0,r.mode=Kf;case Kf:if(r.havedict===0)return t.next_out=a,t.avail_out=l,t.next_in=s,t.avail_in=o,r.hold=c,r.bits=u,vO;t.adler=r.check=1,r.mode=qn;case qn:if(e===mO||e===Yf)break e;case zm:if(r.last){c>>>=u&7,u-=u&7,r.mode=qm;break}for(;u<3;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}switch(r.last=c&1,c>>>=1,u-=1,c&3){case 0:r.mode=n1;break;case 1:if(AO(r),r.mode=Xf,e===Yf){c>>>=2,u-=2;break e}break;case 2:r.mode=a1;break;case 3:t.msg="invalid block type",r.mode=rt}c>>>=2,u-=2;break;case n1:for(c>>>=u&7,u-=u&7;u<32;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){t.msg="invalid stored block lengths",r.mode=rt;break}if(r.length=c&65535,c=0,u=0,r.mode=Wm,e===Yf)break e;case Wm:r.mode=s1;case s1:if(h=r.length,h){if(h>o&&(h=o),h>l&&(h=l),h===0)break e;Xr.arraySet(n,i,s,h,a),o-=h,s+=h,l-=h,a+=h,r.length-=h;break}r.mode=qn;break;case a1:for(;u<14;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}if(r.nlen=(c&31)+257,c>>>=5,u-=5,r.ndist=(c&31)+1,c>>>=5,u-=5,r.ncode=(c&15)+4,c>>>=4,u-=4,r.nlen>286||r.ndist>30){t.msg="too many length or distance symbols",r.mode=rt;break}r.have=0,r.mode=o1;case o1:for(;r.have<r.ncode;){for(;u<3;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}r.lens[L[r.have++]]=c&7,c>>>=3,u-=3}for(;r.have<19;)r.lens[L[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,C={bits:r.lenbits},x=Rc(pO,r.lens,0,19,r.lencode,0,r.work,C),r.lenbits=C.bits,x){t.msg="invalid code lengths set",r.mode=rt;break}r.have=0,r.mode=l1;case l1:for(;r.have<r.nlen+r.ndist;){for(;v=r.lencode[c&(1<<r.lenbits)-1],_=v>>>24,b=v>>>16&255,S=v&65535,!(_<=u);){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}if(S<16)c>>>=_,u-=_,r.lens[r.have++]=S;else{if(S===16){for(P=_+2;u<P;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}if(c>>>=_,u-=_,r.have===0){t.msg="invalid bit length repeat",r.mode=rt;break}w=r.lens[r.have-1],h=3+(c&3),c>>>=2,u-=2}else if(S===17){for(P=_+3;u<P;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}c>>>=_,u-=_,w=0,h=3+(c&7),c>>>=3,u-=3}else{for(P=_+7;u<P;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}c>>>=_,u-=_,w=0,h=11+(c&127),c>>>=7,u-=7}if(r.have+h>r.nlen+r.ndist){t.msg="invalid bit length repeat",r.mode=rt;break}for(;h--;)r.lens[r.have++]=w}}if(r.mode===rt)break;if(r.lens[256]===0){t.msg="invalid code -- missing end-of-block",r.mode=rt;break}if(r.lenbits=9,C={bits:r.lenbits},x=Rc(w1,r.lens,0,r.nlen,r.lencode,0,r.work,C),r.lenbits=C.bits,x){t.msg="invalid literal/lengths set",r.mode=rt;break}if(r.distbits=6,r.distcode=r.distdyn,C={bits:r.distbits},x=Rc(_1,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,C),r.distbits=C.bits,x){t.msg="invalid distances set",r.mode=rt;break}if(r.mode=Xf,e===Yf)break e;case Xf:r.mode=Zf;case Zf:if(o>=6&&l>=258){t.next_out=a,t.avail_out=l,t.next_in=s,t.avail_in=o,r.hold=c,r.bits=u,hO(t,d),a=t.next_out,n=t.output,l=t.avail_out,s=t.next_in,i=t.input,o=t.avail_in,c=r.hold,u=r.bits,r.mode===qn&&(r.back=-1);break}for(r.back=0;v=r.lencode[c&(1<<r.lenbits)-1],_=v>>>24,b=v>>>16&255,S=v&65535,!(_<=u);){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}if(b&&!(b&240)){for(k=_,E=b,A=S;v=r.lencode[A+((c&(1<<k+E)-1)>>k)],_=v>>>24,b=v>>>16&255,S=v&65535,!(k+_<=u);){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}c>>>=k,u-=k,r.back+=k}if(c>>>=_,u-=_,r.back+=_,r.length=S,b===0){r.mode=h1;break}if(b&32){r.back=-1,r.mode=qn;break}if(b&64){t.msg="invalid literal/length code",r.mode=rt;break}r.extra=b&15,r.mode=c1;case c1:if(r.extra){for(P=r.extra;u<P;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}r.length+=c&(1<<r.extra)-1,c>>>=r.extra,u-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=u1;case u1:for(;v=r.distcode[c&(1<<r.distbits)-1],_=v>>>24,b=v>>>16&255,S=v&65535,!(_<=u);){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}if(!(b&240)){for(k=_,E=b,A=S;v=r.distcode[A+((c&(1<<k+E)-1)>>k)],_=v>>>24,b=v>>>16&255,S=v&65535,!(k+_<=u);){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}c>>>=k,u-=k,r.back+=k}if(c>>>=_,u-=_,r.back+=_,b&64){t.msg="invalid distance code",r.mode=rt;break}r.offset=S,r.extra=b&15,r.mode=f1;case f1:if(r.extra){for(P=r.extra;u<P;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}r.offset+=c&(1<<r.extra)-1,c>>>=r.extra,u-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){t.msg="invalid distance too far back",r.mode=rt;break}r.mode=d1;case d1:if(l===0)break e;if(h=d-l,r.offset>h){if(h=r.offset-h,h>r.whave&&r.sane){t.msg="invalid distance too far back",r.mode=rt;break}h>r.wnext?(h-=r.wnext,p=r.wsize-h):p=r.wnext-h,h>r.length&&(h=r.length),g=r.window}else g=n,p=a-r.offset,h=r.length;h>l&&(h=l),l-=h,r.length-=h;do n[a++]=g[p++];while(--h);r.length===0&&(r.mode=Zf);break;case h1:if(l===0)break e;n[a++]=r.length,l--,r.mode=Zf;break;case qm:if(r.wrap){for(;u<32;){if(o===0)break e;o--,c|=i[s++]<<u,u+=8}if(d-=l,t.total_out+=d,r.total+=d,d&&(t.adler=r.check=r.flags?pn(r.check,n,d,a-d):Zm(r.check,n,d,a-d)),d=l,(r.flags?c:g1(c))!==r.check){t.msg="incorrect data check",r.mode=rt;break}c=0,u=0}r.mode=p1;case p1:if(r.wrap&&r.flags){for(;u<32;){if(o===0)break e;o--,c+=i[s++]<<u,u+=8}if(c!==(r.total&4294967295)){t.msg="incorrect length check",r.mode=rt;break}c=0,u=0}r.mode=m1;case m1:x=gO;break e;case rt:x=b1;break e;case Qm:return Km;case _O:default:return wi}return t.next_out=a,t.avail_out=l,t.next_in=s,t.avail_in=o,r.hold=c,r.bits=u,(r.wsize||d!==t.avail_out&&r.mode<rt&&(r.mode<qm||e!==qx))&&A1(t,t.output,t.next_out,d-t.avail_out)?(r.mode=Qm,Km):(f-=t.avail_in,d-=t.avail_out,t.total_in+=f,t.total_out+=d,r.total+=d,r.wrap&&d&&(t.adler=r.check=r.flags?pn(r.check,n,d,t.next_out-d):Zm(r.check,n,d,t.next_out-d)),t.data_type=r.bits+(r.last?64:0)+(r.mode===qn?128:0)+(r.mode===Xf||r.mode===Wm?256:0),(f===0&&d===0||e===qx)&&x===ca&&(x=wO),x)}function TO(t){if(!t||!t.state)return wi;var e=t.state;return e.window&&(e.window=null),t.state=null,ca}function PO(t,e){var r;return!t||!t.state||(r=t.state,!(r.wrap&2))?wi:(r.head=e,e.done=!1,ca)}function RO(t,e){var r=e.length,i,n,s;return!t||!t.state||(i=t.state,i.wrap!==0&&i.mode!==Kf)?wi:i.mode===Kf&&(n=1,n=Zm(n,e,r,0),n!==i.check)?b1:(s=A1(t,e,r,r),s?(i.mode=Qm,Km):(i.havedict=1,ca))}Hi.inflateReset=E1;Hi.inflateReset2=S1;Hi.inflateResetKeep=x1;Hi.inflateInit=kO;Hi.inflateInit2=k1;Hi.inflate=CO;Hi.inflateEnd=TO;Hi.inflateGetHeader=PO;Hi.inflateSetDictionary=RO;Hi.inflateInfo="pako inflate (from Nodeca project)"});var Jm=H((GV,T1)=>{"use strict";m();T1.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}});var R1=H((VV,P1)=>{"use strict";m();function $O(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}P1.exports=$O});var F1=H(Fc=>{"use strict";m();var jo=C1(),$c=Vn(),Qf=Nm(),vt=Jm(),eg=Bf(),FO=Bm(),IO=R1(),$1=Object.prototype.toString;function ua(t){if(!(this instanceof ua))return new ua(t);this.options=$c.assign({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15||(e.windowBits|=15)),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new FO,this.strm.avail_out=0;var r=jo.inflateInit2(this.strm,e.windowBits);if(r!==vt.Z_OK)throw new Error(eg[r]);if(this.header=new IO,jo.inflateGetHeader(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=Qf.string2buf(e.dictionary):$1.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=jo.inflateSetDictionary(this.strm,e.dictionary),r!==vt.Z_OK)))throw new Error(eg[r])}ua.prototype.push=function(t,e){var r=this.strm,i=this.options.chunkSize,n=this.options.dictionary,s,a,o,l,c,u=!1;if(this.ended)return!1;a=e===~~e?e:e===!0?vt.Z_FINISH:vt.Z_NO_FLUSH,typeof t=="string"?r.input=Qf.binstring2buf(t):$1.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;do{if(r.avail_out===0&&(r.output=new $c.Buf8(i),r.next_out=0,r.avail_out=i),s=jo.inflate(r,vt.Z_NO_FLUSH),s===vt.Z_NEED_DICT&&n&&(s=jo.inflateSetDictionary(this.strm,n)),s===vt.Z_BUF_ERROR&&u===!0&&(s=vt.Z_OK,u=!1),s!==vt.Z_STREAM_END&&s!==vt.Z_OK)return this.onEnd(s),this.ended=!0,!1;r.next_out&&(r.avail_out===0||s===vt.Z_STREAM_END||r.avail_in===0&&(a===vt.Z_FINISH||a===vt.Z_SYNC_FLUSH))&&(this.options.to==="string"?(o=Qf.utf8border(r.output,r.next_out),l=r.next_out-o,c=Qf.buf2string(r.output,o),r.next_out=l,r.avail_out=i-l,l&&$c.arraySet(r.output,r.output,o,l,0),this.onData(c)):this.onData($c.shrinkBuf(r.output,r.next_out))),r.avail_in===0&&r.avail_out===0&&(u=!0)}while((r.avail_in>0||r.avail_out===0)&&s!==vt.Z_STREAM_END);return s===vt.Z_STREAM_END&&(a=vt.Z_FINISH),a===vt.Z_FINISH?(s=jo.inflateEnd(this.strm),this.onEnd(s),this.ended=!0,s===vt.Z_OK):(a===vt.Z_SYNC_FLUSH&&(this.onEnd(vt.Z_OK),r.avail_out=0),!0)};ua.prototype.onData=function(t){this.chunks.push(t)};ua.prototype.onEnd=function(t){t===vt.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=$c.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg};function tg(t,e){var r=new ua(e);if(r.push(t,!0),r.err)throw r.msg||eg[r.err];return r.result}function MO(t,e){return e=e||{},e.raw=!0,tg(t,e)}Fc.Inflate=ua;Fc.inflate=tg;Fc.inflateRaw=MO;Fc.ungzip=tg});var D1=H((YV,M1)=>{"use strict";m();var DO=Vn().assign,OO=Lx(),LO=F1(),NO=Jm(),I1={};DO(I1,OO,LO,NO);M1.exports=I1});var N1=H((ZV,L1)=>{"use strict";m();var O1=(t,e)=>function(...r){let i=e.promiseModule;return new i((n,s)=>{e.multiArgs?r.push((...a)=>{e.errorFirst?a[0]?s(a):(a.shift(),n(a)):n(a)}):e.errorFirst?r.push((a,o)=>{a?s(a):n(o)}):r.push(n),t.apply(this,r)})};L1.exports=(t,e)=>{e=Object.assign({exclude:[/.+(Sync|Stream)$/],errorFirst:!0,promiseModule:Promise},e);let r=typeof t;if(!(t!==null&&(r==="object"||r==="function")))throw new TypeError(`Expected \`input\` to be a \`Function\` or \`Object\`, got \`${t===null?"null":r}\``);let i=s=>{let a=o=>typeof o=="string"?s===o:o.test(s);return e.include?e.include.some(a):!e.exclude.some(a)},n;r==="function"?n=function(...s){return e.excludeMain?t(...s):O1(t,e).apply(this,s)}:n=Object.create(Object.getPrototypeOf(t));for(let s in t){let a=t[s];n[s]=typeof a=="function"&&i(s)?O1(a,e):a}return n}});var q1=H((QV,W1)=>{m();function B1(t){return Array.isArray(t)?t:[t]}var ng="",H1=" ",rg="\\",BO=/^\s+$/,HO=/(?:[^\\]|^)\\$/,UO=/^\\!/,GO=/^\\#/,jO=/\r?\n/g,VO=/^\.*\/|^\.+$/,ig="/",j1="node-ignore";typeof Symbol!="undefined"&&(j1=Symbol.for("node-ignore"));var U1=j1,zO=(t,e,r)=>Object.defineProperty(t,e,{value:r}),WO=/([0-z])-([0-z])/g,V1=()=>!1,qO=t=>t.replace(WO,(e,r,i)=>r.charCodeAt(0)<=i.charCodeAt(0)?e:ng),YO=t=>{let{length:e}=t;return t.slice(0,e-e%2)},XO=[[/^\uFEFF/,()=>ng],[/((?:\\\\)*?)(\\?\s+)$/,(t,e,r)=>e+(r.indexOf("\\")===0?H1:ng)],[/(\\+?)\s/g,(t,e)=>{let{length:r}=e;return e.slice(0,r-r%2)+H1}],[/[\\$.|*+(){^]/g,t=>`\\${t}`],[/(?!\\)\?/g,()=>"[^/]"],[/^\//,()=>"^"],[/\//g,()=>"\\/"],[/^\^*\\\*\\\*\\\//,()=>"^(?:.*\\/)?"],[/^(?=[^^])/,function(){return/\/(?!$)/.test(this)?"^":"(?:^|\\/)"}],[/\\\/\\\*\\\*(?=\\\/|$)/g,(t,e,r)=>e+6<r.length?"(?:\\/[^\\/]+)*":"\\/.+"],[/(^|[^\\]+)(\\\*)+(?=.+)/g,(t,e,r)=>{let i=r.replace(/\\\*/g,"[^\\/]*");return e+i}],[/\\\\\\(?=[$.|*+(){^])/g,()=>rg],[/\\\\/g,()=>rg],[/(\\)?\[([^\]/]*?)(\\*)($|\])/g,(t,e,r,i,n)=>e===rg?`\\[${r}${YO(i)}${n}`:n==="]"&&i.length%2===0?`[${qO(r)}${i}]`:"[]"],[/(?:[^*])$/,t=>/\/$/.test(t)?`${t}$`:`${t}(?=$|\\/$)`],[/(\^|\\\/)?\\\*$/,(t,e)=>`${e?`${e}[^/]+`:"[^/]*"}(?=$|\\/$)`]],G1=Object.create(null),ZO=(t,e)=>{let r=G1[t];return r||(r=XO.reduce((i,[n,s])=>i.replace(n,s.bind(t)),t),G1[t]=r),e?new RegExp(r,"i"):new RegExp(r)},og=t=>typeof t=="string",KO=t=>t&&og(t)&&!BO.test(t)&&!HO.test(t)&&t.indexOf("#")!==0,QO=t=>t.split(jO),sg=class{constructor(e,r,i,n){this.origin=e,this.pattern=r,this.negative=i,this.regex=n}},JO=(t,e)=>{let r=t,i=!1;t.indexOf("!")===0&&(i=!0,t=t.substr(1)),t=t.replace(UO,"!").replace(GO,"#");let n=ZO(t,e);return new sg(r,t,i,n)},eL=(t,e)=>{throw new e(t)},Yn=(t,e,r)=>og(t)?t?Yn.isNotRelative(t)?r(`path should be a \`path.relative()\`d string, but got "${e}"`,RangeError):!0:r("path must not be empty",TypeError):r(`path must be a string, but got \`${e}\``,TypeError),z1=t=>VO.test(t);Yn.isNotRelative=z1;Yn.convert=t=>t;var ag=class{constructor({ignorecase:e=!0,ignoreCase:r=e,allowRelativePaths:i=!1}={}){zO(this,U1,!0),this._rules=[],this._ignoreCase=r,this._allowRelativePaths=i,this._initCache()}_initCache(){this._ignoreCache=Object.create(null),this._testCache=Object.create(null)}_addPattern(e){if(e&&e[U1]){this._rules=this._rules.concat(e._rules),this._added=!0;return}if(KO(e)){let r=JO(e,this._ignoreCase);this._added=!0,this._rules.push(r)}}add(e){return this._added=!1,B1(og(e)?QO(e):e).forEach(this._addPattern,this),this._added&&this._initCache(),this}addPattern(e){return this.add(e)}_testOne(e,r){let i=!1,n=!1;return this._rules.forEach(s=>{let{negative:a}=s;if(n===a&&i!==n||a&&!i&&!n&&!r)return;s.regex.test(e)&&(i=!a,n=a)}),{ignored:i,unignored:n}}_test(e,r,i,n){let s=e&&Yn.convert(e);return Yn(s,e,this._allowRelativePaths?V1:eL),this._t(s,r,i,n)}_t(e,r,i,n){if(e in r)return r[e];if(n||(n=e.split(ig)),n.pop(),!n.length)return r[e]=this._testOne(e,i);let s=this._t(n.join(ig)+ig,r,i,n);return r[e]=s.ignored?s:this._testOne(e,i)}ignores(e){return this._test(e,this._ignoreCache,!1).ignored}createFilter(){return e=>!this.ignores(e)}filter(e){return B1(e).filter(this.createFilter())}test(e){return this._test(e,this._testCache,!0)}},Jf=t=>new ag(t),tL=t=>Yn(t&&Yn.convert(t),t,V1);Jf.isPathValid=tL;Jf.default=Jf;W1.exports=Jf;if(typeof process!="undefined"&&(process.env&&process.env.IGNORE_TEST_WIN32||process.platform==="win32")){let t=r=>/^\\\\\?\\/.test(r)||/["<>|\u0000-\u001F]+/u.test(r)?r:r.replace(/\\/g,"/");Yn.convert=t;let e=/^[a-z]:\//i;Yn.isNotRelative=r=>e.test(r)||z1(r)}});var X1=H((ez,Y1)=>{"use strict";m();function rL(t){return t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function mn(t,e,r){return e=e instanceof RegExp?e:new RegExp(rL(e),"g"),t.replace(e,r)}var iL={clean:function(e){if(typeof e!="string")throw new Error("Expected a string, received: "+e);return e=mn(e,"./","/"),e=mn(e,"..","."),e=mn(e," ","-"),e=mn(e,/^[~^:?*\\\-]/g,""),e=mn(e,/[~^:?*\\]/g,"-"),e=mn(e,/[~^:?*\\\-]$/g,""),e=mn(e,"@{","-"),e=mn(e,/\.$/g,""),e=mn(e,/\/$/g,""),e=mn(e,/\.lock$/g,""),e}};Y1.exports=iL});var K1=H((rz,Z1)=>{m();Z1.exports=function(t,e){var r=t,i=e,n=r.length,s=i.length,a=!1,o=null,l=n+1,c=[],u=[],f=[],d="",h=-1,p=0,g=1,v,_,b=function(){n>=s&&(v=r,_=n,r=i,i=v,n=s,s=_,a=!0,l=n+1)},S=function(w,x,y){return{x:w,y:x,k:y}},k=function(w,x){return{elem:w,t:x}},E=function(w,x,y){var C,P,L;for(x>y?C=c[w-1+l]:C=c[w+1+l],L=Math.max(x,y),P=L-w;P<n&&L<s&&r[P]===i[L];)++P,++L;return c[w+l]=u.length,u[u.length]=new S(P,L,C),L},A=function(w){var x,y,C,P,L;for(x=y=1,C=P=0,L=w.length-1;L>=0;--L)for(;C<w[L].x||P<w[L].y;)w[L].y-w[L].x>P-C?(a?f[f.length]=new k(i[P],h):f[f.length]=new k(i[P],g),++y,++P):w[L].y-w[L].x<P-C?(a?f[f.length]=new k(r[C],g):f[f.length]=new k(r[C],h),++x,++C):(f[f.length]=new k(r[C],p),d+=r[C],++x,++y,++C,++P)};return b(),{SES_DELETE:-1,SES_COMMON:0,SES_ADD:1,editdistance:function(){return o},getlcs:function(){return d},getses:function(){return f},compose:function(){var w,x,y,C,P,L,N,B;for(w=s-n,x=n+s+3,y={},N=0;N<x;++N)y[N]=-1,c[N]=-1;C=-1;do{for(++C,B=-C;B<=w-1;++B)y[B+l]=E(B,y[B-1+l]+1,y[B+1+l]);for(B=w+C;B>=w+1;--B)y[B+l]=E(B,y[B-1+l]+1,y[B+1+l]);y[w+l]=E(w,y[w-1+l]+1,y[w+1+l])}while(y[w+l]!==s);for(o=w+2*C,P=c[w+l],L=[];P!==-1;)L[L.length]=new S(u[P].x,u[P].y,null),P=u[P].k;A(L)}}}});var eE=H((nz,J1)=>{m();var nL=K1();function sL(t,e){var r=new nL(t,e);r.compose();for(var i=r.getses(),n,s,a=t.length-1,o=e.length-1,l=i.length-1;l>=0;--l)i[l].t===r.SES_COMMON?(s?(s.chain={file1index:a,file2index:o,chain:null},s=s.chain):(n={file1index:a,file2index:o,chain:null},s=n),a--,o--):i[l].t===r.SES_DELETE?a--:i[l].t===r.SES_ADD&&o--;var c={file1index:-1,file2index:-1,chain:null};return s?(s.chain=c,n):c}function Q1(t,e){for(var r=[],i=t.length,n=e.length,s=sL(t,e);s!==null;s=s.chain){var a=i-s.file1index-1,o=n-s.file2index-1;i=s.file1index,n=s.file2index,(a||o)&&r.push({file1:[i+1,a],file2:[n+1,o]})}return r.reverse(),r}function aL(t,e,r){var i,n=Q1(e,t),s=Q1(e,r),a=[];function o(N,B){a.push([N.file1[0],B,N.file1[1],N.file2[0],N.file2[1]])}for(i=0;i<n.length;i++)o(n[i],0);for(i=0;i<s.length;i++)o(s[i],2);a.sort(function(N,B){return N[0]-B[0]});var l=[],c=0;function u(N){N>c&&(l.push([1,c,N-c]),c=N)}for(var f=0;f<a.length;f++){for(var d=f,h=a[f],p=h[0],g=p+h[2];f<a.length-1;){var v=a[f+1],_=v[0];if(_>g)break;g=Math.max(g,_+v[2]),f++}if(u(p),d==f)h[4]>0&&l.push([h[1],h[3],h[4]]);else{var b={0:[t.length,-1,e.length,-1],2:[r.length,-1,e.length,-1]};for(i=d;i<=f;i++){h=a[i];var S=h[1],k=b[S],E=h[0],A=E+h[2],w=h[3],x=w+h[4];k[0]=Math.min(w,k[0]),k[1]=Math.max(x,k[1]),k[2]=Math.min(E,k[2]),k[3]=Math.max(A,k[3])}var y=b[0][0]+(p-b[0][2]),C=b[0][1]+(g-b[0][3]),P=b[2][0]+(p-b[2][2]),L=b[2][1]+(g-b[2][3]);l.push([-1,y,C-y,p,g-p,P,L-P])}c=g}return u(e.length),l}function oL(t,e,r){var i=[],n=[t,e,r],s=aL(t,e,r),a=[];function o(){a.length&&i.push({ok:a}),a=[]}function l(h){for(var p=0;p<h.length;p++)a.push(h[p])}function c(h){if(h[2]!=h[6])return!0;for(var p=h[1],g=h[5],v=0;v<h[2];v++)if(t[v+p]!=r[v+g])return!0;return!1}for(var u=0;u<s.length;u++){var f=s[u],d=f[0];d==-1?c(f)?(o(),i.push({conflict:{a:t.slice(f[1],f[1]+f[2]),aIndex:f[1],o:e.slice(f[3],f[3]+f[4]),oIndex:f[3],b:r.slice(f[5],f[5]+f[6]),bIndex:f[5]}})):l(n[0].slice(f[1],f[1]+f[2])):l(n[d].slice(f[1],f[1]+f[2]))}return o(),i}J1.exports=oL});var Bg=H(Y=>{"use strict";m();Object.defineProperty(Y,"__esModule",{value:!0});function Fs(t){return t&&typeof t=="object"&&"default"in t?t.default:t}var Mc=Fs(F_()),SE=Fs(Wy()),lL=Fs(Yy()),Fg=Fs(D1()),td=Fs(N1()),cL=Fs(q1()),Dc=Fs(X1()),uL=Fs(eE()),Ce=class t extends Error{constructor(e){super(e),this.caller=""}toJSON(){return{code:this.code,data:this.data,caller:this.caller,message:this.message,stack:this.stack}}fromJSON(e){let r=new t(e.message);return r.code=e.code,r.data=e.data,r.caller=e.caller,r.stack=e.stack,r}get isIsomorphicGitError(){return!0}},Oc=class t extends Ce{constructor(e){super(`Modifying the index is not possible because you have unmerged files: ${e.toString}. Fix them up in the work tree, and then use 'git add/rm as appropriate to mark resolution and make a commit.`),this.code=this.name=t.code,this.data={filepaths:e}}};Oc.code="UnmergedPathsError";var ue=class t extends Ce{constructor(e){super(`An internal error caused this command to fail. + +If you're not a developer, report the bug to the developers of the application you're using. If this is a bug in isomorphic-git then you should create a proper bug yourselves. The bug should include a minimal reproduction and details about the version and environment. + +Please file a bug report at https://github.com/isomorphic-git/isomorphic-git/issues with this error message: ${e}`),this.code=this.name=t.code,this.data={message:e}}};ue.code="InternalError";var zo=class t extends Ce{constructor(e){super(`The filepath "${e}" contains unsafe character sequences`),this.code=this.name=t.code,this.data={filepath:e}}};zo.code="UnsafeFilepathError";var _i=class{constructor(e){this.buffer=e,this._start=0}eof(){return this._start>=this.buffer.length}tell(){return this._start}seek(e){this._start=e}slice(e){let r=this.buffer.slice(this._start,this._start+e);return this._start+=e,r}toString(e,r){let i=this.buffer.toString(e,this._start,this._start+r);return this._start+=r,i}write(e,r,i){let n=this.buffer.write(e,this._start,r,i);return this._start+=r,n}copy(e,r,i){let n=e.copy(this.buffer,this._start,r,i);return this._start+=n,n}readUInt8(){let e=this.buffer.readUInt8(this._start);return this._start+=1,e}writeUInt8(e){let r=this.buffer.writeUInt8(e,this._start);return this._start+=1,r}readUInt16BE(){let e=this.buffer.readUInt16BE(this._start);return this._start+=2,e}writeUInt16BE(e){let r=this.buffer.writeUInt16BE(e,this._start);return this._start+=2,r}readUInt32BE(){let e=this.buffer.readUInt32BE(this._start);return this._start+=4,e}writeUInt32BE(e){let r=this.buffer.writeUInt32BE(e,this._start);return this._start+=4,r}};function pd(t,e){return-(t<e)||+(t>e)}function kE(t,e){return pd(t.path,e.path)}function AE(t){let e=t>0?t>>12:0;e!==4&&e!==8&&e!==10&&e!==14&&(e=8);let r=t&511;return r&73?r=493:r=420,e!==8&&(r=0),(e<<12)+r}var gn=2**32;function tE(t,e,r,i){if(t!==void 0&&e!==void 0)return[t,e];r===void 0&&(r=i.valueOf());let n=Math.floor(r/1e3),s=(r-n*1e3)*1e6;return[n,s]}function Wo(t){let[e,r]=tE(t.ctimeSeconds,t.ctimeNanoseconds,t.ctimeMs,t.ctime),[i,n]=tE(t.mtimeSeconds,t.mtimeNanoseconds,t.mtimeMs,t.mtime);return{ctimeSeconds:e%gn,ctimeNanoseconds:r%gn,mtimeSeconds:i%gn,mtimeNanoseconds:n%gn,dev:t.dev%gn,ino:t.ino%gn,mode:AE(t.mode%gn),uid:t.uid%gn,gid:t.gid%gn,size:t.size>-1?t.size%gn:0}}function fL(t){let e="";for(let r of new Uint8Array(t))r<16&&(e+="0"),e+=r.toString(16);return e}var lg=null;async function wn(t){return lg===null&&(lg=await hL()),lg?CE(t):dL(t)}function dL(t){return new SE().update(t).digest("hex")}async function CE(t){let e=await crypto.subtle.digest("SHA-1",t);return fL(e)}async function hL(){try{return await CE(new Uint8Array([]))==="da39a3ee5e6b4b0d3255bfef95601890afd80709"}catch(t){}return!1}function pL(t){return{assumeValid:!!(t&32768),extended:!!(t&16384),stage:(t&12288)>>12,nameLength:t&4095}}function mL(t){let e=t.flags;return e.extended=!1,e.nameLength=Math.min(Buffer.from(t.path).length,4095),(e.assumeValid?32768:0)+(e.extended?16384:0)+((e.stage&3)<<12)+(e.nameLength&4095)}var bg=class t{constructor(e,r){this._dirty=!1,this._unmergedPaths=r||new Set,this._entries=e||new Map}_addEntry(e){if(e.flags.stage===0)e.stages=[e],this._entries.set(e.path,e),this._unmergedPaths.delete(e.path);else{let r=this._entries.get(e.path);r||(this._entries.set(e.path,e),r=e),r.stages[e.flags.stage]=e,this._unmergedPaths.add(e.path)}}static async from(e){if(Buffer.isBuffer(e))return t.fromBuffer(e);if(e===null)return new t(null);throw new ue("invalid type passed to GitIndex.from")}static async fromBuffer(e){if(e.length===0)throw new ue("Index file is empty (.git/index)");let r=new t,i=new _i(e),n=i.toString("utf8",4);if(n!=="DIRC")throw new ue(`Invalid dircache magic file number: ${n}`);let s=await wn(e.slice(0,-20)),a=e.slice(-20).toString("hex");if(a!==s)throw new ue(`Invalid checksum in GitIndex buffer: expected ${a} but saw ${s}`);let o=i.readUInt32BE();if(o!==2)throw new ue(`Unsupported dircache version: ${o}`);let l=i.readUInt32BE(),c=0;for(;!i.eof()&&c<l;){let u={};u.ctimeSeconds=i.readUInt32BE(),u.ctimeNanoseconds=i.readUInt32BE(),u.mtimeSeconds=i.readUInt32BE(),u.mtimeNanoseconds=i.readUInt32BE(),u.dev=i.readUInt32BE(),u.ino=i.readUInt32BE(),u.mode=i.readUInt32BE(),u.uid=i.readUInt32BE(),u.gid=i.readUInt32BE(),u.size=i.readUInt32BE(),u.oid=i.slice(20).toString("hex");let f=i.readUInt16BE();u.flags=pL(f);let d=e.indexOf(0,i.tell()+1)-i.tell();if(d<1)throw new ue(`Got a path length of: ${d}`);if(u.path=i.toString("utf8",d),u.path.includes("..\\")||u.path.includes("../"))throw new zo(u.path);let h=8-(i.tell()-12)%8;for(h===0&&(h=8);h--;){let p=i.readUInt8();if(p!==0)throw new ue(`Expected 1-8 null characters but got '${p}' after ${u.path}`);if(i.eof())throw new ue("Unexpected end of file")}u.stages=[],r._addEntry(u),c++}return r}get unmergedPaths(){return[...this._unmergedPaths]}get entries(){return[...this._entries.values()].sort(kE)}get entriesMap(){return this._entries}get entriesFlat(){return[...this.entries].flatMap(e=>e.stages.length>1?e.stages.filter(r=>r):e)}*[Symbol.iterator](){for(let e of this.entries)yield e}insert({filepath:e,stats:r,oid:i,stage:n=0}){r||(r={ctimeSeconds:0,ctimeNanoseconds:0,mtimeSeconds:0,mtimeNanoseconds:0,dev:0,ino:0,mode:0,uid:0,gid:0,size:0}),r=Wo(r);let s=Buffer.from(e),a={ctimeSeconds:r.ctimeSeconds,ctimeNanoseconds:r.ctimeNanoseconds,mtimeSeconds:r.mtimeSeconds,mtimeNanoseconds:r.mtimeNanoseconds,dev:r.dev,ino:r.ino,mode:r.mode||33188,uid:r.uid,gid:r.gid,size:r.size,path:e,oid:i,flags:{assumeValid:!1,extended:!1,stage:n,nameLength:s.length<4095?s.length:4095},stages:[]};this._addEntry(a),this._dirty=!0}delete({filepath:e}){if(this._entries.has(e))this._entries.delete(e);else for(let r of this._entries.keys())r.startsWith(e+"/")&&this._entries.delete(r);this._unmergedPaths.has(e)&&this._unmergedPaths.delete(e),this._dirty=!0}clear(){this._entries.clear(),this._dirty=!0}has({filepath:e}){return this._entries.has(e)}render(){return this.entries.map(e=>`${e.mode.toString(8)} ${e.oid} ${e.path}`).join(` +`)}static async _entryToBuffer(e){let r=Buffer.from(e.path),i=Math.ceil((62+r.length+1)/8)*8,n=Buffer.alloc(i),s=new _i(n),a=Wo(e);return s.writeUInt32BE(a.ctimeSeconds),s.writeUInt32BE(a.ctimeNanoseconds),s.writeUInt32BE(a.mtimeSeconds),s.writeUInt32BE(a.mtimeNanoseconds),s.writeUInt32BE(a.dev),s.writeUInt32BE(a.ino),s.writeUInt32BE(a.mode),s.writeUInt32BE(a.uid),s.writeUInt32BE(a.gid),s.writeUInt32BE(a.size),s.write(e.oid,20,"hex"),s.writeUInt16BE(mL(e)),s.write(e.path,r.length,"utf8"),n}async toObject(){let e=Buffer.alloc(12),r=new _i(e);r.write("DIRC",4,"utf8"),r.writeUInt32BE(2),r.writeUInt32BE(this.entriesFlat.length);let i=[];for(let o of this.entries)if(i.push(t._entryToBuffer(o)),o.stages.length>1)for(let l of o.stages)l&&l!==o&&i.push(t._entryToBuffer(l));i=await Promise.all(i);let n=Buffer.concat(i),s=Buffer.concat([e,n]),a=await wn(s);return Buffer.concat([s,Buffer.from(a,"hex")])}};function nd(t,e,r=!0,i=!0){let n=Wo(t),s=Wo(e);return r&&n.mode!==s.mode||n.mtimeSeconds!==s.mtimeSeconds||n.ctimeSeconds!==s.ctimeSeconds||n.uid!==s.uid||n.gid!==s.gid||i&&n.ino!==s.ino||n.size!==s.size}var cg=null,ug=Symbol("IndexCache");function gL(){return{map:new Map,stats:new Map}}async function vL(t,e,r){let[i,n]=await Promise.all([t.lstat(e),t.read(e)]),s=await bg.from(n);r.map.set(e,s),r.stats.set(e,i)}async function wL(t,e,r){let i=r.stats.get(e);if(i===void 0)return!0;if(i===null)return!1;let n=await t.lstat(e);return n===null?!1:nd(i,n)}var ft=class{static async acquire({fs:e,gitdir:r,cache:i,allowUnmerged:n=!0},s){i[ug]||(i[ug]=gL());let a=`${r}/index`;cg===null&&(cg=new Mc({maxPending:1/0}));let o,l=[];return await cg.acquire(a,async()=>{let c=i[ug];await wL(e,a,c)&&await vL(e,a,c);let u=c.map.get(a);if(l=u.unmergedPaths,l.length&&!n)throw new Oc(l);if(o=await s(u),u._dirty){let f=await u.toObject();await e.write(a,f),c.stats.set(a,await e.lstat(a)),u._dirty=!1}}),o}};function sd(t){let e=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return e>-1&&(t=t.slice(e+1)),t}function ha(t){let e=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return e===-1?".":e===0?"/":t.slice(0,e)}function TE(t){let e=new Map,r=function(n){if(!e.has(n)){let s={type:"tree",fullpath:n,basename:sd(n),metadata:{},children:[]};e.set(n,s),s.parent=r(ha(n)),s.parent&&s.parent!==s&&s.parent.children.push(s)}return e.get(n)},i=function(n,s){if(!e.has(n)){let a={type:"blob",fullpath:n,basename:sd(n),metadata:s,parent:r(ha(n)),children:[]};a.parent&&a.parent.children.push(a),e.set(n,a)}return e.get(n)};r(".");for(let n of t)i(n.path,n);return e}function _L(t){switch(t){case 16384:return"tree";case 33188:return"blob";case 33261:return"blob";case 40960:return"blob";case 57344:return"commit"}throw new ue(`Unexpected GitTree entry mode: ${t.toString(8)}`)}var yg=class{constructor({fs:e,gitdir:r,cache:i}){this.treePromise=ft.acquire({fs:e,gitdir:r,cache:i},async function(s){return TE(s.entries)});let n=this;this.ConstructEntry=class{constructor(a){this._fullpath=a,this._type=!1,this._mode=!1,this._stat=!1,this._oid=!1}async type(){return n.type(this)}async mode(){return n.mode(this)}async stat(){return n.stat(this)}async content(){return n.content(this)}async oid(){return n.oid(this)}}}async readdir(e){let r=e._fullpath,n=(await this.treePromise).get(r);if(!n||n.type==="blob")return null;if(n.type!=="tree")throw new Error(`ENOTDIR: not a directory, scandir '${r}'`);let s=n.children.map(a=>a.fullpath);return s.sort(pd),s}async type(e){return e._type===!1&&await e.stat(),e._type}async mode(e){return e._mode===!1&&await e.stat(),e._mode}async stat(e){if(e._stat===!1){let i=(await this.treePromise).get(e._fullpath);if(!i)throw new Error(`ENOENT: no such file or directory, lstat '${e._fullpath}'`);let n=i.type==="tree"?{}:Wo(i.metadata);e._type=i.type==="tree"?"tree":_L(n.mode),e._mode=n.mode,i.type==="tree"?e._stat=void 0:e._stat=n}return e._stat}async content(e){}async oid(e){if(e._oid===!1){let i=(await this.treePromise).get(e._fullpath);e._oid=i.metadata.oid}return e._oid}},md=Symbol("GitWalkSymbol");function _a(){let t=Object.create(null);return Object.defineProperty(t,md,{value:function({fs:e,gitdir:r,cache:i}){return new yg({fs:e,gitdir:r,cache:i})}}),Object.freeze(t),t}var He=class t extends Ce{constructor(e){super(`Could not find ${e}.`),this.code=this.name=t.code,this.data={what:e}}};He.code="NotFoundError";var yr=class t extends Ce{constructor(e,r,i,n){super(`Object ${e} ${n?`at ${n}`:""}was anticipated to be a ${i} but it is a ${r}.`),this.code=this.name=t.code,this.data={oid:e,actual:r,expected:i,filepath:n}}};yr.code="ObjectTypeError";var As=class t extends Ce{constructor(e){super(`Expected a 40-char hex object id but saw "${e}".`),this.code=this.name=t.code,this.data={value:e}}};As.code="InvalidOidError";var Lc=class t extends Ce{constructor(e){super(`Could not find a fetch refspec for remote "${e}". Make sure the config file has an entry like the following: +[remote "${e}"] + fetch = +refs/heads/*:refs/remotes/origin/* +`),this.code=this.name=t.code,this.data={remote:e}}};Lc.code="NoRefspecError";var ad=class t{constructor(e){if(this.refs=new Map,this.parsedConfig=[],e){let r=null;this.parsedConfig=e.trim().split(` +`).map(i=>{if(/^\s*#/.test(i))return{line:i,comment:!0};let n=i.indexOf(" ");if(i.startsWith("^")){let s=i.slice(1);return this.refs.set(r+"^{}",s),{line:i,ref:r,peeled:s}}else{let s=i.slice(0,n);return r=i.slice(n+1),this.refs.set(r,s),{line:i,ref:r,oid:s}}})}return this}static from(e){return new t(e)}delete(e){this.parsedConfig=this.parsedConfig.filter(r=>r.ref!==e),this.refs.delete(e)}toString(){return this.parsedConfig.map(({line:e})=>e).join(` +`)+` +`}},od=class t{constructor({remotePath:e,localPath:r,force:i,matchPrefix:n}){Object.assign(this,{remotePath:e,localPath:r,force:i,matchPrefix:n})}static from(e){let[r,i,n,s,a]=e.match(/^(\+?)(.*?)(\*?):(.*?)(\*?)$/).slice(1),o=r==="+",l=n==="*";if(l!==(a==="*"))throw new ue("Invalid refspec");return new t({remotePath:i,localPath:s,force:o,matchPrefix:l})}translate(e){if(this.matchPrefix){if(e.startsWith(this.remotePath))return this.localPath+e.replace(this.remotePath,"")}else if(e===this.remotePath)return this.localPath;return null}reverseTranslate(e){if(this.matchPrefix){if(e.startsWith(this.localPath))return this.remotePath+e.replace(this.localPath,"")}else if(e===this.localPath)return this.remotePath;return null}},xg=class t{constructor(e=[]){this.rules=e}static from(e){let r=[];for(let i of e)r.push(od.from(i));return new t(r)}add(e){let r=od.from(e);this.rules.push(r)}translate(e){let r=[];for(let i of this.rules)for(let n of e){let s=i.translate(n);s&&r.push([n,s])}return r}translateOne(e){let r=null;for(let i of this.rules){let n=i.translate(e);n&&(r=n)}return r}localNamespaces(){return this.rules.filter(e=>e.matchPrefix).map(e=>e.localPath.replace(/\/$/,""))}};function bL(t,e){let r=t.replace(/\^\{\}$/,""),i=e.replace(/\^\{\}$/,""),n=-(r<i)||+(r>i);return n===0?t.endsWith("^{}")?1:-1:n}function yL(t,e){let r="",i=0,n=-1,s=0,a="\0";for(let o=0;o<=t.length;++o){if(o<t.length)a=t[o];else{if(a==="/")break;a="/"}if(a==="/"){if(!(n===o-1||s===1))if(s===2){if(r.length<2||i!==2||r.at(-1)!=="."||r.at(-2)!=="."){if(r.length>2){let l=r.lastIndexOf("/");l===-1?(r="",i=0):(r=r.slice(0,l),i=r.length-1-r.lastIndexOf("/")),n=o,s=0;continue}else if(r.length!==0){r="",i=0,n=o,s=0;continue}}e&&(r+=r.length>0?"/..":"..",i=2)}else r.length>0?r+="/"+t.slice(n+1,o):r=t.slice(n+1,o),i=o-n-1;n=o,s=0}else a==="."&&s!==-1?++s:s=-1}return r}function xL(t){if(!t.length)return".";let e=t[0]==="/",r=t.at(-1)==="/";return t=yL(t,!e),t.length?(r&&(t+="/"),e?`/${t}`:t):e?"/":r?"./":"."}function O(...t){if(t.length===0)return".";let e;for(let r=0;r<t.length;++r){let i=t[r];i.length>0&&(e===void 0?e=i:e+="/"+i)}return e===void 0?".":xL(e)}var EL=t=>{if(typeof t=="number")return t;t=t.toLowerCase();let e=parseInt(t);return t.endsWith("k")&&(e*=1024),t.endsWith("m")&&(e*=1024*1024),t.endsWith("g")&&(e*=1024*1024*1024),e},Ic=t=>{if(typeof t=="boolean")return t;if(t=t.trim().toLowerCase(),t==="true"||t==="yes"||t==="on")return!0;if(t==="false"||t==="no"||t==="off")return!1;throw Error(`Expected 'true', 'false', 'yes', 'no', 'on', or 'off', but got ${t}`)},rE={core:{filemode:Ic,bare:Ic,logallrefupdates:Ic,symlinks:Ic,ignorecase:Ic,bigFileThreshold:EL}},SL=/^\[([A-Za-z0-9-.]+)(?: "(.*)")?\]$/,kL=/^[A-Za-z0-9-.]+$/,AL=/^([A-Za-z][A-Za-z-]*)(?: *= *(.*))?$/,CL=/^[A-Za-z][A-Za-z-]*$/,TL=/^(.*?)( *[#;].*)$/,PL=t=>{let e=SL.exec(t);if(e!=null){let[r,i]=e.slice(1);return[r,i]}return null},RL=t=>{let e=AL.exec(t);if(e!=null){let[r,i="true"]=e.slice(1),n=$L(i),s=FL(n);return[r,s]}return null},$L=t=>{let e=TL.exec(t);if(e==null)return t;let[r,i]=e.slice(1);return iE(r)&&iE(i)?`${r}${i}`:r},iE=t=>(t.match(/(?:^|[^\\])"/g)||[]).length%2!==0,FL=t=>t.split("").reduce((e,r,i,n)=>{let s=r==='"'&&n[i-1]!=="\\",a=r==="\\"&&n[i+1]==='"';return s||a?e:e+r},""),nE=t=>t!=null?t.toLowerCase():null,Eg=(t,e,r)=>[nE(t),e,nE(r)].filter(i=>i!=null).join("."),sE=t=>{let e=t.split("."),r=e.shift(),i=e.pop(),n=e.length?e.join("."):void 0;return{section:r,subsection:n,name:i,path:Eg(r,n,i),sectionPath:Eg(r,n,null),isSection:!!r}},IL=(t,e)=>t.reduce((r,i,n)=>e(i)?n:r,-1),Sg=class t{constructor(e){let r=null,i=null;this.parsedConfig=e?e.split(` +`).map(n=>{let s=null,a=null,o=n.trim(),l=PL(o),c=l!=null;if(c)[r,i]=l;else{let f=RL(o);f!=null&&([s,a]=f)}let u=Eg(r,i,s);return{line:n,isSection:c,section:r,subsection:i,name:s,value:a,path:u}}):[]}static from(e){return new t(e)}async get(e,r=!1){let i=sE(e).path,n=this.parsedConfig.filter(s=>s.path===i).map(({section:s,name:a,value:o})=>{let l=rE[s]&&rE[s][a];return l?l(o):o});return r?n:n.pop()}async getall(e){return this.get(e,!0)}async getSubsections(e){return this.parsedConfig.filter(r=>r.isSection&&r.section===e).map(r=>r.subsection)}async deleteSection(e,r){this.parsedConfig=this.parsedConfig.filter(i=>!(i.section===e&&i.subsection===r))}async append(e,r){return this.set(e,r,!0)}async set(e,r,i=!1){let{section:n,subsection:s,name:a,path:o,sectionPath:l,isSection:c}=sE(e),u=IL(this.parsedConfig,f=>f.path===o);if(r==null)u!==-1&&this.parsedConfig.splice(u,1);else if(u!==-1){let f=this.parsedConfig[u],d=Object.assign({},f,{name:a,value:r,modified:!0});i?this.parsedConfig.splice(u+1,0,d):this.parsedConfig[u]=d}else{let f=this.parsedConfig.findIndex(h=>h.path===l),d={section:n,subsection:s,name:a,value:r,modified:!0,path:o};if(kL.test(n)&&CL.test(a))if(f>=0)this.parsedConfig.splice(f+1,0,d);else{let h={isSection:c,section:n,subsection:s,modified:!0,path:l};this.parsedConfig.push(h,d)}}}toString(){return this.parsedConfig.map(({line:e,section:r,subsection:i,name:n,value:s,modified:a=!1})=>a?n!=null&&s!=null?typeof s=="string"&&/[#;]/.test(s)?` ${n} = "${s}"`:` ${n} = ${s}`:i!=null?`[${r} "${i}"]`:`[${r}]`:e).join(` +`)}},dt=class{static async get({fs:e,gitdir:r}){let i=await e.read(`${r}/config`,{encoding:"utf8"});return Sg.from(i)}static async save({fs:e,gitdir:r,config:i}){await e.write(`${r}/config`,i.toString(),{encoding:"utf8"})}},rd=t=>[`${t}`,`refs/${t}`,`refs/tags/${t}`,`refs/heads/${t}`,`refs/remotes/${t}`,`refs/remotes/${t}/HEAD`],ML=["config","description","index","shallow","commondir"],fg;async function Ss(t,e){return fg===void 0&&(fg=new Mc),fg.acquire(t,e)}var W=class t{static async updateRemoteRefs({fs:e,gitdir:r,remote:i,refs:n,symrefs:s,tags:a,refspecs:o=void 0,prune:l=!1,pruneTags:c=!1}){for(let v of n.values())if(!v.match(/[0-9a-f]{40}/))throw new As(v);let u=await dt.get({fs:e,gitdir:r});if(!o){if(o=await u.getall(`remote.${i}.fetch`),o.length===0)throw new Lc(i);o.unshift(`+HEAD:refs/remotes/${i}/HEAD`)}let f=xg.from(o),d=new Map;if(c){let v=await t.listRefs({fs:e,gitdir:r,filepath:"refs/tags"});await t.deleteRefs({fs:e,gitdir:r,refs:v.map(_=>`refs/tags/${_}`)})}if(a){for(let v of n.keys())if(v.startsWith("refs/tags")&&!v.endsWith("^{}")&&!await t.exists({fs:e,gitdir:r,ref:v})){let _=n.get(v);d.set(v,_)}}let h=f.translate([...n.keys()]);for(let[v,_]of h){let b=n.get(v);d.set(_,b)}let p=f.translate([...s.keys()]);for(let[v,_]of p){let b=s.get(v),S=f.translateOne(b);S&&d.set(_,`ref: ${S}`)}let g=[];if(l){for(let v of f.localNamespaces()){let _=(await t.listRefs({fs:e,gitdir:r,filepath:v})).map(b=>`${v}/${b}`);for(let b of _)d.has(b)||g.push(b)}g.length>0&&await t.deleteRefs({fs:e,gitdir:r,refs:g})}for(let[v,_]of d)await Ss(v,async()=>e.write(O(r,v),`${_.trim()} +`,"utf8"));return{pruned:g}}static async writeRef({fs:e,gitdir:r,ref:i,value:n}){if(!n.match(/[0-9a-f]{40}/))throw new As(n);await Ss(i,async()=>e.write(O(r,i),`${n.trim()} +`,"utf8"))}static async writeSymbolicRef({fs:e,gitdir:r,ref:i,value:n}){await Ss(i,async()=>e.write(O(r,i),`ref: ${n.trim()} +`,"utf8"))}static async deleteRef({fs:e,gitdir:r,ref:i}){return t.deleteRefs({fs:e,gitdir:r,refs:[i]})}static async deleteRefs({fs:e,gitdir:r,refs:i}){await Promise.all(i.map(o=>e.rm(O(r,o))));let n=await Ss("packed-refs",async()=>e.read(`${r}/packed-refs`,{encoding:"utf8"})),s=ad.from(n),a=s.refs.size;for(let o of i)s.refs.has(o)&&s.delete(o);s.refs.size<a&&(n=s.toString(),await Ss("packed-refs",async()=>e.write(`${r}/packed-refs`,n,{encoding:"utf8"})))}static async resolve({fs:e,gitdir:r,ref:i,depth:n=void 0}){if(n!==void 0&&(n--,n===-1))return i;if(i.startsWith("ref: "))return i=i.slice(5),t.resolve({fs:e,gitdir:r,ref:i,depth:n});if(i.length===40&&/[0-9a-f]{40}/.test(i))return i;let s=await t.packedRefs({fs:e,gitdir:r}),a=rd(i).filter(o=>!ML.includes(o));for(let o of a){let l=await Ss(o,async()=>await e.read(`${r}/${o}`,{encoding:"utf8"})||s.get(o));if(l)return t.resolve({fs:e,gitdir:r,ref:l.trim(),depth:n})}throw new He(i)}static async exists({fs:e,gitdir:r,ref:i}){try{return await t.expand({fs:e,gitdir:r,ref:i}),!0}catch(n){return!1}}static async expand({fs:e,gitdir:r,ref:i}){if(i.length===40&&/[0-9a-f]{40}/.test(i))return i;let n=await t.packedRefs({fs:e,gitdir:r}),s=rd(i);for(let a of s)if(await Ss(a,async()=>e.exists(`${r}/${a}`))||n.has(a))return a;throw new He(i)}static async expandAgainstMap({ref:e,map:r}){let i=rd(e);for(let n of i)if(await r.has(n))return n;throw new He(e)}static resolveAgainstMap({ref:e,fullref:r=e,depth:i=void 0,map:n}){if(i!==void 0&&(i--,i===-1))return{fullref:r,oid:e};if(e.startsWith("ref: "))return e=e.slice(5),t.resolveAgainstMap({ref:e,fullref:r,depth:i,map:n});if(e.length===40&&/[0-9a-f]{40}/.test(e))return{fullref:r,oid:e};let s=rd(e);for(let a of s){let o=n.get(a);if(o)return t.resolveAgainstMap({ref:o.trim(),fullref:a,depth:i,map:n})}throw new He(e)}static async packedRefs({fs:e,gitdir:r}){let i=await Ss("packed-refs",async()=>e.read(`${r}/packed-refs`,{encoding:"utf8"}));return ad.from(i).refs}static async listRefs({fs:e,gitdir:r,filepath:i}){let n=t.packedRefs({fs:e,gitdir:r}),s=null;try{s=await e.readdirDeep(`${r}/${i}`),s=s.map(a=>a.replace(`${r}/${i}/`,""))}catch(a){s=[]}for(let a of(await n).keys())a.startsWith(i)&&(a=a.replace(i+"/",""),s.includes(a)||s.push(a));return s.sort(bL),s}static async listBranches({fs:e,gitdir:r,remote:i}){return i?t.listRefs({fs:e,gitdir:r,filepath:`refs/remotes/${i}`}):t.listRefs({fs:e,gitdir:r,filepath:"refs/heads"})}static async listTags({fs:e,gitdir:r}){return(await t.listRefs({fs:e,gitdir:r,filepath:"refs/tags"})).filter(n=>!n.endsWith("^{}"))}};function DL(t,e){return pd(aE(t),aE(e))}function aE(t){return t.mode==="040000"?t.path+"/":t.path}function PE(t){switch(t){case"040000":return"tree";case"100644":return"blob";case"100755":return"blob";case"120000":return"blob";case"160000":return"commit"}throw new ue(`Unexpected GitTree entry mode: ${t}`)}function OL(t){let e=[],r=0;for(;r<t.length;){let i=t.indexOf(32,r);if(i===-1)throw new ue(`GitTree: Error parsing buffer at byte location ${r}: Could not find the next space character.`);let n=t.indexOf(0,r);if(n===-1)throw new ue(`GitTree: Error parsing buffer at byte location ${r}: Could not find the next null character.`);let s=t.slice(r,i).toString("utf8");s==="40000"&&(s="040000");let a=PE(s),o=t.slice(i+1,n).toString("utf8");if(o.includes("\\")||o.includes("/"))throw new zo(o);let l=t.slice(n+1,n+21).toString("hex");r=n+21,e.push({mode:s,path:o,oid:l,type:a})}return e}function LL(t){if(typeof t=="number"&&(t=t.toString(8)),t.match(/^0?4.*/))return"040000";if(t.match(/^1006.*/))return"100644";if(t.match(/^1007.*/))return"100755";if(t.match(/^120.*/))return"120000";if(t.match(/^160.*/))return"160000";throw new ue(`Could not understand file mode: ${t}`)}function NL(t){return!t.oid&&t.sha&&(t.oid=t.sha),t.mode=LL(t.mode),t.type||(t.type=PE(t.mode)),t}var Ir=class t{constructor(e){if(Buffer.isBuffer(e))this._entries=OL(e);else if(Array.isArray(e))this._entries=e.map(NL);else throw new ue("invalid type passed to GitTree constructor");this._entries.sort(kE)}static from(e){return new t(e)}render(){return this._entries.map(e=>`${e.mode} ${e.type} ${e.oid} ${e.path}`).join(` +`)}toObject(){let e=[...this._entries];return e.sort(DL),Buffer.concat(e.map(r=>{let i=Buffer.from(r.mode.replace(/^0/,"")),n=Buffer.from(" "),s=Buffer.from(r.path,"utf8"),a=Buffer.from([0]),o=Buffer.from(r.oid,"hex");return Buffer.concat([i,n,s,a,o])}))}entries(){return this._entries}*[Symbol.iterator](){for(let e of this._entries)yield e}},Cs=class{static wrap({type:e,object:r}){let i=`${e} ${r.length}\0`,n=i.length,s=n+r.length,a=new Uint8Array(s);for(let o=0;o<n;o++)a[o]=i.charCodeAt(o);return a.set(r,n),a}static unwrap(e){let r=e.indexOf(32),i=e.indexOf(0),n=e.slice(0,r).toString("utf8"),s=e.slice(r+1,i).toString("utf8"),a=e.length-(i+1);if(parseInt(s)!==a)throw new ue(`Length mismatch: expected ${s} bytes but got ${a} instead.`);return{type:n,object:Buffer.from(e.slice(i+1))}}};async function RE({fs:t,gitdir:e,oid:r}){let i=`objects/${r.slice(0,2)}/${r.slice(2)}`,n=await t.read(`${e}/${i}`);return n?{object:n,format:"deflated",source:i}:null}function BL(t,e){let r=new _i(t),i=oE(r);if(i!==e.byteLength)throw new ue(`applyDelta expected source buffer to be ${i} bytes but the provided buffer was ${e.length} bytes`);let n=oE(r),s,a=cE(r,e);if(a.byteLength===n)s=a;else{s=Buffer.alloc(n);let o=new _i(s);for(o.copy(a);!r.eof();)o.copy(cE(r,e));let l=o.tell();if(n!==l)throw new ue(`applyDelta expected target buffer to be ${n} bytes but the resulting buffer was ${l} bytes`)}return s}function oE(t){let e=0,r=0,i=null;do i=t.readUInt8(),e|=(i&127)<<r,r+=7;while(i&128);return e}function lE(t,e,r){let i=0,n=0;for(;r--;)e&1&&(i|=t.readUInt8()<<n),e>>=1,n+=8;return i}function cE(t,e){let r=t.readUInt8(),i=128,n=15,s=112;if(r&i){let a=lE(t,r&n,4),o=lE(t,(r&s)>>4,3);return o===0&&(o=65536),e.slice(a,a+o)}else return t.slice(r)}function HL(t){let e=[t];return{next(){return Promise.resolve({done:e.length===0,value:e.pop()})},return(){return e=[],{}},[Symbol.asyncIterator](){return this}}}function $E(t){return t[Symbol.asyncIterator]?t[Symbol.asyncIterator]():t[Symbol.iterator]?t[Symbol.iterator]():t.next?t:HL(t)}var ld=class{constructor(e){if(typeof Buffer=="undefined")throw new Error("Missing Buffer dependency");this.stream=$E(e),this.buffer=null,this.cursor=0,this.undoCursor=0,this.started=!1,this._ended=!1,this._discardedBytes=0}eof(){return this._ended&&this.cursor===this.buffer.length}tell(){return this._discardedBytes+this.cursor}async byte(){if(!this.eof()&&(this.started||await this._init(),!(this.cursor===this.buffer.length&&(await this._loadnext(),this._ended))))return this._moveCursor(1),this.buffer[this.undoCursor]}async chunk(){if(!this.eof()&&(this.started||await this._init(),!(this.cursor===this.buffer.length&&(await this._loadnext(),this._ended))))return this._moveCursor(this.buffer.length),this.buffer.slice(this.undoCursor,this.cursor)}async read(e){if(!this.eof())return this.started||await this._init(),this.cursor+e>this.buffer.length&&(this._trim(),await this._accumulate(e)),this._moveCursor(e),this.buffer.slice(this.undoCursor,this.cursor)}async skip(e){this.eof()||(this.started||await this._init(),this.cursor+e>this.buffer.length&&(this._trim(),await this._accumulate(e)),this._moveCursor(e))}async undo(){this.cursor=this.undoCursor}async _next(){this.started=!0;let{done:e,value:r}=await this.stream.next();return e&&(this._ended=!0,!r)?Buffer.alloc(0):(r&&(r=Buffer.from(r)),r)}_trim(){this.buffer=this.buffer.slice(this.undoCursor),this.cursor-=this.undoCursor,this._discardedBytes+=this.undoCursor,this.undoCursor=0}_moveCursor(e){this.undoCursor=this.cursor,this.cursor+=e,this.cursor>this.buffer.length&&(this.cursor=this.buffer.length)}async _accumulate(e){if(this._ended)return;let r=[this.buffer];for(;this.cursor+e>UL(r);){let i=await this._next();if(this._ended)break;r.push(i)}this.buffer=Buffer.concat(r)}async _loadnext(){this._discardedBytes+=this.buffer.length,this.undoCursor=0,this.cursor=0,this.buffer=await this._next()}async _init(){this.buffer=await this._next()}};function UL(t){return t.reduce((e,r)=>e+r.length,0)}async function GL(t,e){let r=new ld(t),i=await r.read(4);if(i=i.toString("utf8"),i!=="PACK")throw new ue(`Invalid PACK header '${i}'`);let n=await r.read(4);if(n=n.readUInt32BE(0),n!==2)throw new ue(`Invalid packfile version: ${n}`);let s=await r.read(4);if(s=s.readUInt32BE(0),!(s<1))for(;!r.eof()&&s--;){let a=r.tell(),{type:o,length:l,ofs:c,reference:u}=await jL(r),f=new Fg.Inflate;for(;!f.result;){let d=await r.chunk();if(!d)break;if(f.push(d,!1),f.err)throw new ue(`Pako error: ${f.msg}`);if(f.result){if(f.result.length!==l)throw new ue("Inflated object size is different from that stated in packfile.");await r.undo(),await r.read(d.length-f.strm.avail_in);let h=r.tell();await e({data:f.result,type:o,num:s,offset:a,end:h,reference:u,ofs:c})}}}}async function jL(t){let e=await t.byte(),r=e>>4&7,i=e&15;if(e&128){let a=4;do e=await t.byte(),i|=(e&127)<<a,a+=7;while(e&128)}let n,s;if(r===6){let a=0;n=0;let o=[];do e=await t.byte(),n|=(e&127)<<a,a+=7,o.push(e);while(e&128);s=Buffer.from(o)}return r===7&&(s=await t.read(20)),{type:r,length:i,ofs:n,reference:s}}var dg=!1;async function FE(t){return dg===null&&(dg=zL()),dg?VL(t):Fg.inflate(t)}async function VL(t){let e=new DecompressionStream("deflate"),r=new Blob([t]).stream().pipeThrough(e);return new Uint8Array(await new Response(r).arrayBuffer())}function zL(){try{if(new DecompressionStream("deflate"))return!0}catch(t){}return!1}function WL(t){let e=[],r=0,i=0;do{r=t.readUInt8();let n=r&127;e.push(n),i=r&128}while(i);return e.reduce((n,s)=>n+1<<7|s,-1)}function qL(t,e){let r=e,i=4,n=null;do n=t.readUInt8(),r|=(n&127)<<i,i+=7;while(n&128);return r}var Nc=class t{constructor(e){Object.assign(this,e),this.offsetCache={}}static async fromIdx({idx:e,getExternalRefDelta:r}){let i=new _i(e);if(i.slice(4).toString("hex")!=="ff744f63")return;let s=i.readUInt32BE();if(s!==2)throw new ue(`Unable to read version ${s} packfile IDX. (Only version 2 supported)`);if(e.byteLength>2048*1024*1024)throw new ue("To keep implementation simple, I haven't implemented the layer 5 feature needed to support packfiles > 2GB in size.");i.seek(i.tell()+4*255);let a=i.readUInt32BE(),o=[];for(let u=0;u<a;u++){let f=i.slice(20).toString("hex");o[u]=f}i.seek(i.tell()+4*a);let l=new Map;for(let u=0;u<a;u++)l.set(o[u],i.readUInt32BE());let c=i.slice(20).toString("hex");return new t({hashes:o,crcs:{},offsets:l,packfileSha:c,getExternalRefDelta:r})}static async fromPack({pack:e,getExternalRefDelta:r,onProgress:i}){let n={1:"commit",2:"tree",3:"blob",4:"tag",6:"ofs-delta",7:"ref-delta"},s={},a=e.slice(-20).toString("hex"),o=[],l={},c=new Map,u=null,f=null;await GL([e],async({data:v,type:_,reference:b,offset:S,num:k})=>{u===null&&(u=k);let E=Math.floor((u-k)*100/u);E!==f&&i&&await i({phase:"Receiving objects",loaded:u-k,total:u}),f=E,_=n[_],["commit","tree","blob","tag"].includes(_)?s[S]={type:_,offset:S}:_==="ofs-delta"?s[S]={type:_,offset:S}:_==="ref-delta"&&(s[S]={type:_,offset:S})});let d=Object.keys(s).map(Number);for(let[v,_]of d.entries()){let b=v+1===d.length?e.byteLength-20:d[v+1],S=s[_],k=lL.buf(e.slice(_,b))>>>0;S.end=b,S.crc=k}let h=new t({pack:Promise.resolve(e),packfileSha:a,crcs:l,hashes:o,offsets:c,getExternalRefDelta:r});f=null;let p=0,g=[0,0,0,0,0,0,0,0,0,0,0,0];for(let v in s){v=Number(v);let _=Math.floor(p*100/u);_!==f&&i&&await i({phase:"Resolving deltas",loaded:p,total:u}),p++,f=_;let b=s[v];if(!b.oid)try{h.readDepth=0,h.externalReadDepth=0;let{type:S,object:k}=await h.readSlice({start:v});g[h.readDepth]+=1;let E=await wn(Cs.wrap({type:S,object:k}));b.oid=E,o.push(E),c.set(E,v),l[E]=b.crc}catch(S){continue}}return o.sort(),h}async toBuffer(){let e=[],r=(c,u)=>{e.push(Buffer.from(c,u))};r("ff744f63","hex"),r("00000002","hex");let i=new _i(Buffer.alloc(256*4));for(let c=0;c<256;c++){let u=0;for(let f of this.hashes)parseInt(f.slice(0,2),16)<=c&&u++;i.writeUInt32BE(u)}e.push(i.buffer);for(let c of this.hashes)r(c,"hex");let n=new _i(Buffer.alloc(this.hashes.length*4));for(let c of this.hashes)n.writeUInt32BE(this.crcs[c]);e.push(n.buffer);let s=new _i(Buffer.alloc(this.hashes.length*4));for(let c of this.hashes)s.writeUInt32BE(this.offsets.get(c));e.push(s.buffer),r(this.packfileSha,"hex");let a=Buffer.concat(e),o=await wn(a),l=Buffer.alloc(20);return l.write(o,"hex"),Buffer.concat([a,l])}async load({pack:e}){this.pack=e}async unload(){this.pack=null}async read({oid:e}){if(!this.offsets.get(e)){if(this.getExternalRefDelta)return this.externalReadDepth++,this.getExternalRefDelta(e);throw new ue(`Could not read object ${e} from packfile`)}let r=this.offsets.get(e);return this.readSlice({start:r})}async readSlice({start:e}){if(this.offsetCache[e])return Object.assign({},this.offsetCache[e]);this.readDepth++;let r={16:"commit",32:"tree",48:"blob",64:"tag",96:"ofs_delta",112:"ref_delta"},i=await this.pack;if(!i)throw new ue("Could not read packfile data. The packfile may be missing, corrupted, or too large to read into memory.");let n=i.slice(e),s=new _i(n),a=s.readUInt8(),o=a&112,l=r[o];if(l===void 0)throw new ue("Unrecognized type: 0b"+o.toString(2));let c=a&15,u=c;a&128&&(u=qL(s,c));let d=null,h=null;if(l==="ofs_delta"){let g=WL(s),v=e-g;({object:d,type:l}=await this.readSlice({start:v}))}if(l==="ref_delta"){let g=s.slice(20).toString("hex");({object:d,type:l}=await this.read({oid:g}))}let p=n.slice(s.tell());if(h=Buffer.from(await FE(p)),h.byteLength!==u)throw new ue(`Packfile told us object would have length ${u} but it had length ${h.byteLength}`);return d&&(h=Buffer.from(BL(h,d))),this.readDepth>3&&(this.offsetCache[e]={type:l,object:h}),{type:l,format:"content",object:h}}},id=Symbol("PackfileCache");async function YL({fs:t,filename:e,getExternalRefDelta:r,emitter:i,emitterPrefix:n}){let s=await t.read(e);return Nc.fromIdx({idx:s,getExternalRefDelta:r})}function Ig({fs:t,cache:e,filename:r,getExternalRefDelta:i,emitter:n,emitterPrefix:s}){e[id]||(e[id]=new Map);let a=e[id].get(r);return a||(a=YL({fs:t,filename:r,getExternalRefDelta:i,emitter:n,emitterPrefix:s}),e[id].set(r,a)),a}async function XL({fs:t,cache:e,gitdir:r,oid:i,format:n="content",getExternalRefDelta:s}){let a=await t.readdir(O(r,"objects/pack"));a=a.filter(o=>o.endsWith(".idx"));for(let o of a){let l=`${r}/objects/pack/${o}`,c=await Ig({fs:t,cache:e,filename:l,getExternalRefDelta:s});if(c.error)throw new ue(c.error);if(c.offsets.has(i)){let u=l.replace(/idx$/,"pack");c.pack||(c.pack=t.read(u));let f=await c.pack;if(!f)throw c.pack=null,new ue(`Could not read packfile at ${u}. The file may be missing, corrupted, or too large to read into memory.`);if(!c._checksumVerified){let h=c.packfileSha,p=f.subarray(-20),g=Array.from(p).map(b=>b.toString(16).padStart(2,"0")).join("");if(g!==h)throw new ue(`Packfile trailer mismatch: expected ${h}, got ${g}. The packfile may be corrupted.`);let v=f.subarray(0,-20),_=await wn(v);if(_!==h)throw new ue(`Packfile payload corrupted: calculated ${_} but expected ${h}. The packfile may have been tampered with.`);c._checksumVerified=!0}let d=await c.read({oid:i,getExternalRefDelta:s});return d.format="content",d.source=`objects/pack/${o.replace(/idx$/,"pack")}`,d}}return null}async function Je({fs:t,cache:e,gitdir:r,oid:i,format:n="content"}){let s=u=>Je({fs:t,cache:e,gitdir:r,oid:u}),a;if(i==="4b825dc642cb6eb9a060e54bf8d69288fbee4904"&&(a={format:"wrapped",object:Buffer.from("tree 0\0")}),a||(a=await RE({fs:t,gitdir:r,oid:i})),!a){if(a=await XL({fs:t,cache:e,gitdir:r,oid:i,getExternalRefDelta:s}),!a)throw new He(i);return a}if(n==="deflated"||(a.format==="deflated"&&(a.object=Buffer.from(await FE(a.object)),a.format="wrapped"),n==="wrapped"))return a;let o=await wn(a.object);if(o!==i)throw new ue(`SHA check failed! Expected ${i}, computed ${o}`);let{object:l,type:c}=Cs.unwrap(a.object);if(a.type=c,a.object=l,a.format="content",n==="content")return a;throw new ue(`invalid requested format "${n}"`)}var Ui=class t extends Ce{constructor(e,r,i=!0){super(`Failed to create ${e} at ${r} because it already exists.${i?` (Hint: use 'force: true' parameter to overwrite existing ${e}.)`:""}`),this.code=this.name=t.code,this.data={noun:e,where:r,canForce:i}}};Ui.code="AlreadyExistsError";var Bc=class t extends Ce{constructor(e,r,i){super(`Found multiple ${e} matching "${r}" (${i.join(", ")}). Use a longer abbreviation length to disambiguate them.`),this.code=this.name=t.code,this.data={nouns:e,short:r,matches:i}}};Bc.code="AmbiguousError";var Hc=class t extends Ce{constructor(e){super(`Your local changes to the following files would be overwritten by checkout: ${e.join(", ")}`),this.code=this.name=t.code,this.data={filepaths:e}}};Hc.code="CheckoutConflictError";var Uc=class t extends Ce{constructor(e,r){super(`Cannot cherry-pick merge commit ${e}. Merge commits have ${r} parents and require specifying which parent to use as the base.`),this.code=this.name=t.code,this.data={oid:e,parentCount:r}}};Uc.code="CherryPickMergeCommitError";var Gc=class t extends Ce{constructor(e){super(`Cannot cherry-pick root commit ${e}. Root commits have no parents.`),this.code=this.name=t.code,this.data={oid:e}}};Gc.code="CherryPickRootCommitError";var jc=class t extends Ce{constructor(e,r){super(`Failed to checkout "${e}" because commit ${r} is not available locally. Do a git fetch to make the branch available locally.`),this.code=this.name=t.code,this.data={ref:e,oid:r}}};jc.code="CommitNotFetchedError";var Vc=class t extends Ce{constructor(){super("Empty response from git server."),this.code=this.name=t.code,this.data={}}};Vc.code="EmptyServerResponseError";var zc=class t extends Ce{constructor(){super("A simple fast-forward merge was not possible."),this.code=this.name=t.code,this.data={}}};zc.code="FastForwardError";var Wc=class t extends Ce{constructor(e,r){super(`One or more branches were not updated: ${e}`),this.code=this.name=t.code,this.data={prettyDetails:e,result:r}}};Wc.code="GitPushError";var qo=class t extends Ce{constructor(e,r,i){super(`HTTP Error: ${e} ${r}`),this.code=this.name=t.code,this.data={statusCode:e,statusMessage:r,response:i}}};qo.code="HttpError";var Ts=class t extends Ce{constructor(e){let r="invalid filepath";e==="leading-slash"||e==="trailing-slash"?r='"filepath" parameter should not include leading or trailing directory separators because these can cause problems on some platforms.':e==="directory"&&(r='"filepath" should not be a directory.'),super(r),this.code=this.name=t.code,this.data={reason:e}}};Ts.code="InvalidFilepathError";var Gi=class t extends Ce{constructor(e,r){super(`"${e}" would be an invalid git reference. (Hint: a valid alternative would be "${r}".)`),this.code=this.name=t.code,this.data={ref:e,suggestion:r}}};Gi.code="InvalidRefNameError";var qc=class t extends Ce{constructor(e){super(`Maximum search depth of ${e} exceeded.`),this.code=this.name=t.code,this.data={depth:e}}};qc.code="MaxDepthError";var Yo=class t extends Ce{constructor(){super("Merges with conflicts are not supported yet."),this.code=this.name=t.code,this.data={}}};Yo.code="MergeNotSupportedError";var pa=class t extends Ce{constructor(e,r,i,n){super(`Automatic merge failed with one or more merge conflicts in the following files: ${e.toString()}. Fix conflicts then commit the result.`),this.code=this.name=t.code,this.data={filepaths:e,bothModified:r,deleteByUs:i,deleteByTheirs:n}}};pa.code="MergeConflictError";var Zt=class t extends Ce{constructor(e){super(`No name was provided for ${e} in the argument or in the .git/config file.`),this.code=this.name=t.code,this.data={role:e}}};Zt.code="MissingNameError";var Fr=class t extends Ce{constructor(e){super(`The function requires a "${e}" parameter but none was provided.`),this.code=this.name=t.code,this.data={parameter:e}}};Fr.code="MissingParameterError";var Yc=class t extends Ce{constructor(e){super('There are multiple errors that were thrown by the method. Please refer to the "errors" property to see more'),this.code=this.name=t.code,this.data={errors:e},this.errors=e}};Yc.code="MultipleGitError";var ma=class t extends Ce{constructor(e,r){super(`Expected "${e}" but received "${r}".`),this.code=this.name=t.code,this.data={expected:e,actual:r}}};ma.code="ParseError";var Xo=class t extends Ce{constructor(e){let r="";e==="not-fast-forward"?r=" because it was not a simple fast-forward":e==="tag-exists"&&(r=" because tag already exists"),super(`Push rejected${r}. Use "force: true" to override.`),this.code=this.name=t.code,this.data={reason:e}}};Xo.code="PushRejectedError";var ks=class t extends Ce{constructor(e,r){super(`Remote does not support the "${e}" so the "${r}" parameter cannot be used.`),this.code=this.name=t.code,this.data={capability:e,parameter:r}}};ks.code="RemoteCapabilityError";var Xc=class t extends Ce{constructor(e,r){super(`Remote did not reply using the "smart" HTTP protocol. Expected "001e# service=git-upload-pack" but received: ${e}`),this.code=this.name=t.code,this.data={preview:e,response:r}}};Xc.code="SmartHttpError";var Zc=class t extends Ce{constructor(e,r,i){super(`Git remote "${e}" uses an unrecognized transport protocol: "${r}"`),this.code=this.name=t.code,this.data={url:e,transport:r,suggestion:i}}};Zc.code="UnknownTransportError";var Kc=class t extends Ce{constructor(e){super(`Cannot parse remote URL: "${e}"`),this.code=this.name=t.code,this.data={url:e}}};Kc.code="UrlParseError";var Zo=class t extends Ce{constructor(){super("The operation was canceled."),this.code=this.name=t.code,this.data={}}};Zo.code="UserCanceledError";var Qc=class t extends Ce{constructor(e){super(`Could not merge index: Entry for '${e}' is not up to date. Either reset the index entry to HEAD, or stage your unstaged changes.`),this.code=this.name=t.code,this.data={filepath:e}}};Qc.code="IndexResetError";var Jc=class t extends Ce{constructor(e){super(`"${e}" does not point to any commit. You're maybe working on a repository with no commits yet. `),this.code=this.name=t.code,this.data={ref:e}}};Jc.code="NoCommitError";var IE=Object.freeze({__proto__:null,AlreadyExistsError:Ui,AmbiguousError:Bc,CheckoutConflictError:Hc,CherryPickMergeCommitError:Uc,CherryPickRootCommitError:Gc,CommitNotFetchedError:jc,EmptyServerResponseError:Vc,FastForwardError:zc,GitPushError:Wc,HttpError:qo,InternalError:ue,InvalidFilepathError:Ts,InvalidOidError:As,InvalidRefNameError:Gi,MaxDepthError:qc,MergeNotSupportedError:Yo,MergeConflictError:pa,MissingNameError:Zt,MissingParameterError:Fr,MultipleGitError:Yc,NoRefspecError:Lc,NotFoundError:He,ObjectTypeError:yr,ParseError:ma,PushRejectedError:Xo,RemoteCapabilityError:ks,SmartHttpError:Xc,UnknownTransportError:Zc,UnsafeFilepathError:zo,UrlParseError:Kc,UserCanceledError:Zo,UnmergedPathsError:Oc,IndexResetError:Qc,NoCommitError:Jc});function kg({name:t,email:e,timestamp:r,timezoneOffset:i}){return i=ZL(i),`${t} <${e}> ${r} ${i}`}function ZL(t){let e=KL(QL(t));t=Math.abs(t);let r=Math.floor(t/60);t-=r*60;let i=String(r),n=String(t);return i.length<2&&(i="0"+i),n.length<2&&(n="0"+n),(e===-1?"-":"+")+i+n}function KL(t){return Math.sign(t)||(Object.is(t,-0)?-1:1)}function QL(t){return t===0?t:-t}function Xn(t){return t=t.replace(/\r/g,""),t=t.replace(/^\n+/,""),t=t.replace(/\n+$/,"")+` +`,t}function cd(t){let[,e,r,i,n]=t.match(/^(.*) <(.*)> (.*) (.*)$/);return{name:e,email:r,timestamp:Number(i),timezoneOffset:JL(n)}}function JL(t){let[,e,r,i]=t.match(/(\+|-)(\d\d)(\d\d)/);return i=(e==="+"?1:-1)*(Number(r)*60+Number(i)),eN(i)}function eN(t){return t===0?t:-t}var Kr=class t{constructor(e){if(typeof e=="string")this._tag=e;else if(Buffer.isBuffer(e))this._tag=e.toString("utf8");else if(typeof e=="object")this._tag=t.render(e);else throw new ue("invalid type passed to GitAnnotatedTag constructor")}static from(e){return new t(e)}static render(e){return`object ${e.object} +type ${e.type} +tag ${e.tag} +tagger ${kg(e.tagger)} + +${e.message} +${e.gpgsig?e.gpgsig:""}`}justHeaders(){return this._tag.slice(0,this._tag.indexOf(` + +`))}message(){let e=this.withoutSignature();return e.slice(e.indexOf(` + +`)+2)}parse(){return Object.assign(this.headers(),{message:this.message(),gpgsig:this.gpgsig()})}render(){return this._tag}headers(){let e=this.justHeaders().split(` +`),r=[];for(let n of e)n[0]===" "?r[r.length-1]+=` +`+n.slice(1):r.push(n);let i={};for(let n of r){let s=n.slice(0,n.indexOf(" ")),a=n.slice(n.indexOf(" ")+1);Array.isArray(i[s])?i[s].push(a):i[s]=a}return i.tagger&&(i.tagger=cd(i.tagger)),i.committer&&(i.committer=cd(i.committer)),i}withoutSignature(){let e=Xn(this._tag);return e.indexOf(` +-----BEGIN PGP SIGNATURE-----`)===-1?e:e.slice(0,e.lastIndexOf(` +-----BEGIN PGP SIGNATURE-----`))}gpgsig(){if(this._tag.indexOf(` +-----BEGIN PGP SIGNATURE-----`)===-1)return;let e=this._tag.slice(this._tag.indexOf("-----BEGIN PGP SIGNATURE-----"),this._tag.indexOf("-----END PGP SIGNATURE-----")+27);return Xn(e)}payload(){return this.withoutSignature()+` +`}toObject(){return Buffer.from(this._tag,"utf8")}static async sign(e,r,i){let n=e.payload(),{signature:s}=await r({payload:n,secretKey:i});s=Xn(s);let a=n+s;return t.from(a)}};function hg(t){return t.trim().split(` +`).map(e=>" "+e).join(` +`)+` +`}function tN(t){return t.split(` +`).map(e=>e.replace(/^ /,"")).join(` +`)}var Mr=class t{constructor(e){if(typeof e=="string")this._commit=e;else if(Buffer.isBuffer(e))this._commit=e.toString("utf8");else if(typeof e=="object")this._commit=t.render(e);else throw new ue("invalid type passed to GitCommit constructor")}static fromPayloadSignature({payload:e,signature:r}){let i=t.justHeaders(e),n=t.justMessage(e),s=Xn(i+` +gpgsig`+hg(r)+` +`+n);return new t(s)}static from(e){return new t(e)}toObject(){return Buffer.from(this._commit,"utf8")}headers(){return this.parseHeaders()}message(){return t.justMessage(this._commit)}parse(){return Object.assign({message:this.message()},this.headers())}static justMessage(e){return Xn(e.slice(e.indexOf(` + +`)+2))}static justHeaders(e){return e.slice(0,e.indexOf(` + +`))}parseHeaders(){let e=t.justHeaders(this._commit).split(` +`),r=[];for(let n of e)n[0]===" "?r[r.length-1]+=` +`+n.slice(1):r.push(n);let i={parent:[]};for(let n of r){let s=n.slice(0,n.indexOf(" ")),a=n.slice(n.indexOf(" ")+1);Array.isArray(i[s])?i[s].push(a):i[s]=a}return i.author&&(i.author=cd(i.author)),i.committer&&(i.committer=cd(i.committer)),i}static renderHeaders(e){let r="";if(e.tree?r+=`tree ${e.tree} +`:r+=`tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 +`,e.parent){if(e.parent.length===void 0)throw new ue("commit 'parent' property should be an array");for(let s of e.parent)r+=`parent ${s} +`}let i=e.author;r+=`author ${kg(i)} +`;let n=e.committer||e.author;return r+=`committer ${kg(n)} +`,e.gpgsig&&(r+="gpgsig"+hg(e.gpgsig)),r}static render(e){return t.renderHeaders(e)+` +`+Xn(e.message)}render(){return this._commit}withoutSignature(){let e=Xn(this._commit);if(e.indexOf(` +gpgsig`)===-1)return e;let r=e.slice(0,e.indexOf(` +gpgsig`)),i=e.slice(e.indexOf(`-----END PGP SIGNATURE----- +`)+28);return Xn(r+` +`+i)}isolateSignature(){let e=this._commit.slice(this._commit.indexOf("-----BEGIN PGP SIGNATURE-----"),this._commit.indexOf("-----END PGP SIGNATURE-----")+27);return tN(e)}static async sign(e,r,i){let n=e.withoutSignature(),s=t.justMessage(e._commit),{signature:a}=await r({payload:n,secretKey:i});a=Xn(a);let l=t.justHeaders(e._commit)+` +gpgsig`+hg(a)+` +`+s;return t.from(l)}};async function Ko({fs:t,cache:e,gitdir:r,oid:i}){if(i==="4b825dc642cb6eb9a060e54bf8d69288fbee4904")return{tree:Ir.from([]),oid:i};let{type:n,object:s}=await Je({fs:t,cache:e,gitdir:r,oid:i});if(n==="tag")return i=Kr.from(s).parse().object,Ko({fs:t,cache:e,gitdir:r,oid:i});if(n==="commit")return i=Mr.from(s).parse().tree,Ko({fs:t,cache:e,gitdir:r,oid:i});if(n!=="tree")throw new yr(i,n,"tree");return{tree:Ir.from(s),oid:i}}var Ag=class{constructor({fs:e,gitdir:r,ref:i,cache:n}){this.fs=e,this.cache=n,this.gitdir=r,this.mapPromise=(async()=>{let a=new Map,o;try{o=await W.resolve({fs:e,gitdir:r,ref:i})}catch(c){c instanceof He&&(o="4b825dc642cb6eb9a060e54bf8d69288fbee4904")}let l=await Ko({fs:e,cache:this.cache,gitdir:r,oid:o});return l.type="tree",l.mode="40000",a.set(".",l),a})();let s=this;this.ConstructEntry=class{constructor(o){this._fullpath=o,this._type=!1,this._mode=!1,this._stat=!1,this._content=!1,this._oid=!1}async type(){return s.type(this)}async mode(){return s.mode(this)}async stat(){return s.stat(this)}async content(){return s.content(this)}async oid(){return s.oid(this)}}}async readdir(e){let r=e._fullpath,{fs:i,cache:n,gitdir:s}=this,a=await this.mapPromise,o=a.get(r);if(!o)throw new Error(`No obj for ${r}`);let l=o.oid;if(!l)throw new Error(`No oid for obj ${JSON.stringify(o)}`);if(o.type!=="tree")return null;let{type:c,object:u}=await Je({fs:i,cache:n,gitdir:s,oid:l});if(c!==o.type)throw new yr(l,c,o.type);let f=Ir.from(u);for(let d of f)a.set(O(r,d.path),d);return f.entries().map(d=>O(r,d.path))}async type(e){if(e._type===!1){let r=await this.mapPromise,{type:i}=r.get(e._fullpath);e._type=i}return e._type}async mode(e){if(e._mode===!1){let r=await this.mapPromise,{mode:i}=r.get(e._fullpath);e._mode=AE(parseInt(i,8))}return e._mode}async stat(e){}async content(e){if(e._content===!1){let r=await this.mapPromise,{fs:i,cache:n,gitdir:s}=this,o=r.get(e._fullpath).oid,{type:l,object:c}=await Je({fs:i,cache:n,gitdir:s,oid:o});l!=="blob"?e._content=void 0:e._content=new Uint8Array(c)}return e._content}async oid(e){if(e._oid===!1){let i=(await this.mapPromise).get(e._fullpath);e._oid=i.oid}return e._oid}};function Zr({ref:t="HEAD"}={}){let e=Object.create(null);return Object.defineProperty(e,md,{value:function({fs:r,gitdir:i,cache:n}){return new Ag({fs:r,gitdir:i,ref:t,cache:n})}}),Object.freeze(e),e}var Cg=class{constructor({fs:e,dir:r,gitdir:i,cache:n}){this.fs=e,this.cache=n,this.dir=r,this.gitdir=i,this.config=null;let s=this;this.ConstructEntry=class{constructor(o){this._fullpath=o,this._type=!1,this._mode=!1,this._stat=!1,this._content=!1,this._oid=!1}async type(){return s.type(this)}async mode(){return s.mode(this)}async stat(){return s.stat(this)}async content(){return s.content(this)}async oid(){return s.oid(this)}}}async readdir(e){let r=e._fullpath,{fs:i,dir:n}=this,s=await i.readdir(O(n,r));return s===null?null:s.map(a=>O(r,a))}async type(e){return e._type===!1&&await e.stat(),e._type}async mode(e){return e._mode===!1&&await e.stat(),e._mode}async stat(e){if(e._stat===!1){let{fs:r,dir:i}=this,n=await r.lstat(`${i}/${e._fullpath}`);if(!n)throw new Error(`ENOENT: no such file or directory, lstat '${e._fullpath}'`);let s=n.isDirectory()?"tree":"blob";s==="blob"&&!n.isFile()&&!n.isSymbolicLink()&&(s="special"),e._type=s,n=Wo(n),e._mode=n.mode,n.size===-1&&e._actualSize&&(n.size=e._actualSize),e._stat=n}return e._stat}async content(e){if(e._content===!1){let{fs:r,dir:i,gitdir:n}=this;if(await e.type()==="tree")e._content=void 0;else{let s;if(await e.mode()>>12===10)s=await r.readlink(`${i}/${e._fullpath}`);else{let o=await(await this._getGitConfig(r,n)).get("core.autocrlf");s=await r.read(`${i}/${e._fullpath}`,{autocrlf:o})}e._actualSize=s.length,e._stat&&e._stat.size===-1&&(e._stat.size=e._actualSize),e._content=new Uint8Array(s)}}return e._content}async oid(e){if(e._oid===!1){let r=this,{fs:i,gitdir:n,cache:s}=this,a;await ft.acquire({fs:i,gitdir:n,cache:s},async function(o){let l=o.entriesMap.get(e._fullpath),c=await e.stat(),f=await(await r._getGitConfig(i,n)).get("core.filemode"),d=typeof process!="undefined"?process.platform!=="win32":!0;if(!l||nd(c,l,f,d)){let h=await e.content();h===void 0?a=void 0:(a=await wn(Cs.wrap({type:"blob",object:h})),l&&a===l.oid&&(!f||c.mode===l.mode)&&nd(c,l,f,d)&&o.insert({filepath:e._fullpath,stats:c,oid:a}))}else a=l.oid}),e._oid=a}return e._oid}async _getGitConfig(e,r){return this.config?this.config:(this.config=await dt.get({fs:e,gitdir:r}),this.config)}};function tl(){let t=Object.create(null);return Object.defineProperty(t,md,{value:function({fs:e,dir:r,gitdir:i,cache:n}){return new Cg({fs:e,dir:r,gitdir:i,cache:n})}}),Object.freeze(t),t}function rN(t,e){let r=e-t;return Array.from({length:r},(i,n)=>t+n)}var ME=typeof Array.prototype.flat=="undefined"?t=>t.reduce((e,r)=>e.concat(r),[]):t=>t.flat(),Tg=class{constructor(){this.value=null}consider(e){e!=null&&(this.value===null?this.value=e:e<this.value&&(this.value=e))}reset(){this.value=null}};function*iN(t){let e=new Tg,r,i=[],n=t.length;for(let s=0;s<n;s++)i[s]=t[s].next().value,i[s]!==void 0&&e.consider(i[s]);if(e.value!==null)for(;;){let s=[];r=e.value,e.reset();for(let a=0;a<n;a++)i[a]!==void 0&&i[a]===r?(s[a]=i[a],i[a]=t[a].next().value):s[a]=null,i[a]!==void 0&&e.consider(i[a]);if(yield s,e.value===null)return}}async function Ps({fs:t,cache:e,dir:r,gitdir:i,trees:n,map:s=async(l,c)=>c,reduce:a=async(l,c)=>{let u=ME(c);return l!==void 0&&u.unshift(l),u},iterate:o=(l,c)=>Promise.all([...c].map(l))}){let l=n.map(h=>h[md]({fs:t,dir:r,gitdir:i,cache:e})),c=new Array(l.length).fill("."),u=rN(0,l.length),f=async h=>{u.forEach(v=>{let _=h[v];h[v]=_&&new l[v].ConstructEntry(_)});let g=(await Promise.all(u.map(v=>{let _=h[v];return _?l[v].readdir(_):[]}))).map(v=>(v===null?[]:v)[Symbol.iterator]());return{entries:h,children:iN(g)}},d=async h=>{let{entries:p,children:g}=await f(h),v=p.find(b=>b&&b._fullpath)._fullpath,_=await s(v,p);if(_!==null){let b=await o(d,g);return b=b.filter(S=>S!==void 0),a(_,b)}};return d(c)}async function Pg(t,e){let r=await t.readdir(e);r==null?await t.rm(e):r.length?await Promise.all(r.map(i=>{let n=O(e,i);return t.lstat(n).then(s=>{if(s)return s.isDirectory()?Pg(t,n):t.rm(n)})})).then(()=>t.rmdir(e)):await t.rmdir(e)}function nN(t){return sN(t)&&uE(t.then)&&uE(t.catch)}function sN(t){return t&&typeof t=="object"}function uE(t){return typeof t=="function"}function fE(t){return nN((r=>{try{return r.readFile().catch(i=>i)}catch(i){return i}})(t))}var dE=["readFile","writeFile","mkdir","rmdir","unlink","stat","lstat","readdir","readlink","symlink"];function hE(t,e){if(fE(e))for(let r of dE)t[`_${r}`]=e[r].bind(e);else for(let r of dE)t[`_${r}`]=td(e[r].bind(e));fE(e)?(e.cp&&(t._cp=e.cp.bind(e)),e.rm?t._rm=e.rm.bind(e):e.rmdir.length>1?t._rm=e.rmdir.bind(e):t._rm=Pg.bind(null,t)):(e.cp&&(t._cp=td(e.cp.bind(e))),e.rm?t._rm=td(e.rm.bind(e)):e.rmdir.length>2?t._rm=td(e.rmdir.bind(e)):t._rm=Pg.bind(null,t))}var Q=class{constructor(e){if(typeof e._original_unwrapped_fs!="undefined")return e;let r=Object.getOwnPropertyDescriptor(e,"promises");r&&r.enumerable?hE(this,e.promises):hE(this,e),this._original_unwrapped_fs=e}async exists(e,r={}){try{return await this._stat(e),!0}catch(i){if(i.code==="ENOENT"||i.code==="ENOTDIR"||(i.code||"").includes("ENS"))return!1;throw console.log('Unhandled error in "FileSystem.exists()" function',i),i}}async read(e,r={}){try{let i=await this._readFile(e,r);if(r.autocrlf==="true")try{i=new TextDecoder("utf8",{fatal:!0}).decode(i),i=i.replace(/\r\n/g,` +`),i=new TextEncoder().encode(i)}catch(n){}return typeof i!="string"&&(i=Buffer.from(i)),i}catch(i){return null}}async write(e,r,i={}){try{await this._writeFile(e,r,i)}catch(n){await this.mkdir(ha(e)),await this._writeFile(e,r,i)}}async mkdir(e,r=!1){try{await this._mkdir(e)}catch(i){if(i===null||i.code==="EEXIST")return;if(r)throw i;if(i.code==="ENOENT"){let n=ha(e);if(n==="."||n==="/"||n===e)throw i;await this.mkdir(n),await this.mkdir(e,!0)}}}async rm(e){try{await this._unlink(e)}catch(r){if(r.code!=="ENOENT")throw r}}async rmdir(e,r){try{r&&r.recursive?await this._rm(e,r):await this._rmdir(e)}catch(i){if(i.code!=="ENOENT")throw i}}async readdir(e){try{let r=await this._readdir(e);return r.sort(pd),r}catch(r){return r.code==="ENOTDIR"?null:[]}}async readdirDeep(e){let r=await this._readdir(e);return(await Promise.all(r.map(async n=>{let s=e+"/"+n;return(await this._stat(s)).isDirectory()?this.readdirDeep(s):s}))).reduce((n,s)=>n.concat(s),[])}async lstat(e){try{return await this._lstat(e)}catch(r){if(r.code==="ENOENT"||(r.code||"").includes("ENS"))return null;throw r}}async readlink(e,r={encoding:"buffer"}){try{let i=await this._readlink(e,r);return Buffer.isBuffer(i)?i:Buffer.from(i)}catch(i){if(i.code==="ENOENT"||(i.code||"").includes("ENS"))return null;throw i}}async writelink(e,r){return this._symlink(r.toString("utf8"),e)}};function T(t,e){if(e===void 0)throw new Fr(t)}function aN(t){return t.startsWith("/")||/^[a-zA-Z]:[\\/]/.test(t)}async function ee({fsp:t,dotgit:e}){T("fsp",t),T("dotgit",e);let r=await t._stat(e).catch(()=>({isFile:()=>!1,isDirectory:()=>!1}));return r.isDirectory()?e:r.isFile()?t._readFile(e,"utf8").then(i=>i.trimRight().substr(8)).then(i=>aN(i)?i:O(ha(e),i)):e}async function ud(t,e){return!t&&!e?!1:t&&!e||!t&&e?!0:!(await t.type()==="tree"&&await e.type()==="tree"||await t.type()===await e.type()&&await t.mode()===await e.mode()&&await t.oid()===await e.oid())}async function DE({fs:t,dir:e,gitdir:r=O(e,".git"),commit:i="HEAD",cache:n={}}){try{T("fs",t),T("dir",e),T("gitdir",r);let s=new Q(t),a=[Zr({ref:i}),tl(),_a()],o=[],l=await ee({fsp:s,dotgit:r});await ft.acquire({fs:s,gitdir:l,cache:n},async function(u){o=u.unmergedPaths});let c=await Ps({fs:s,cache:n,dir:e,gitdir:l,trees:a,map:async function(u,[f,d,h]){let p=!await ud(d,h),g=o.includes(u),v=!await ud(h,f);if(p||g)return f?{path:u,mode:await f.mode(),oid:await f.oid(),type:await f.type(),content:await f.content()}:void 0;if(v)return!1;throw new Qc(u)}});await ft.acquire({fs:s,gitdir:l,cache:n},async function(u){for(let f of c)if(f!==!1){if(!f){await s.rmdir(`${e}/${f.path}`,{recursive:!0}),u.delete({filepath:f.path});continue}if(f.type==="blob"){let d=new TextDecoder().decode(f.content);await s.write(`${e}/${f.path}`,d,{mode:f.mode}),u.insert({filepath:f.path,oid:f.oid,stage:0})}}})}catch(s){throw s.caller="git.abortMerge",s}}var Rs=class{static async isIgnored({fs:e,dir:r,gitdir:i=O(r,".git"),filepath:n}){if(sd(n)===".git")return!0;if(n===".")return!1;let s="",a=O(i,"info","exclude");await e.exists(a)&&(s=await e.read(a,"utf8"));let o=[{gitignore:O(r,".gitignore"),filepath:n}],l=n.split("/").filter(Boolean);for(let u=1;u<l.length;u++){let f=l.slice(0,u).join("/"),d=l.slice(u).join("/");o.push({gitignore:O(r,f,".gitignore"),filepath:d})}let c=!1;for(let u of o){let f;try{f=await e.read(u.gitignore,"utf8")}catch(p){if(p.code==="NOENT")continue}let d=cL().add(s);d.add(f);let h=ha(u.filepath);if(h!=="."&&d.ignores(h))return!0;c?c=!d.test(u.filepath).unignored:c=d.test(u.filepath).ignored}return c}};async function oN({fs:t,gitdir:e,object:r,format:i,oid:n}){if(i!=="deflated")throw new ue("GitObjectStoreLoose expects objects to write to be in deflated format");let s=`objects/${n.slice(0,2)}/${n.slice(2)}`,a=`${e}/${s}`;await t.exists(a)||await t.write(a,r)}var pg=null;async function OE(t){return pg===null&&(pg=cN()),pg?lN(t):Fg.deflate(t)}async function lN(t){let e=new CompressionStream("deflate"),r=new Blob([t]).stream().pipeThrough(e);return new Uint8Array(await new Response(r).arrayBuffer())}function cN(){try{return new CompressionStream("deflate").writable.close(),new Blob([]).stream().cancel(),!0}catch(t){return!1}}async function Dr({fs:t,gitdir:e,type:r,object:i,format:n="content",oid:s=void 0,dryRun:a=!1}){return n!=="deflated"&&(n!=="wrapped"&&(i=Cs.wrap({type:r,object:i})),s=await wn(i),i=Buffer.from(await OE(i))),a||await oN({fs:t,gitdir:e,object:i,format:"deflated",oid:s}),s}function LE(t){let e;for(;~(e=t.indexOf(92));)t[e]=47;return t}async function NE({fs:t,dir:e,gitdir:r=O(e,".git"),filepath:i,cache:n={},force:s=!1,parallel:a=!0}){try{T("fs",t),T("dir",e),T("gitdir",r),T("filepath",i);let o=new Q(t),l=await ee({fsp:o,dotgit:r});await ft.acquire({fs:o,gitdir:l,cache:n},async c=>{let f=await(await dt.get({fs:o,gitdir:l})).get("core.autocrlf");return Rg({dir:e,gitdir:l,fs:o,filepath:i,index:c,force:s,parallel:a,autocrlf:f})})}catch(o){throw o.caller="git.add",o}}async function Rg({dir:t,gitdir:e,fs:r,filepath:i,index:n,force:s,parallel:a,autocrlf:o}){i=Array.isArray(i)?i:[i];let l=i.map(async d=>{if(!s&&await Rs.isIgnored({fs:r,dir:t,gitdir:e,filepath:d}))return;let h=await r.lstat(O(t,d));if(!h)throw new He(d);if(h.isDirectory()){let p=await r.readdir(O(t,d));if(a){let g=p.map(v=>Rg({dir:t,gitdir:e,fs:r,filepath:[O(d,v)],index:n,force:s,parallel:a,autocrlf:o}));await Promise.all(g)}else for(let g of p)await Rg({dir:t,gitdir:e,fs:r,filepath:[O(d,g)],index:n,force:s,parallel:a,autocrlf:o})}else{let p=h.isSymbolicLink()?await r.readlink(O(t,d)).then(LE):await r.read(O(t,d),{autocrlf:o});if(p===null)throw new He(d);let g=await Dr({fs:r,gitdir:e,type:"blob",object:p});n.insert({filepath:d,stats:h,oid:g})}}),c=await Promise.allSettled(l),u=c.filter(d=>d.status==="rejected").map(d=>d.reason);if(u.length>1)throw new Yc(u);if(u.length===1)throw u[0];return c.filter(d=>d.status==="fulfilled"&&d.value).map(d=>d.value)}async function eu({fs:t,gitdir:e,path:r}){return(await dt.get({fs:t,gitdir:e})).get(r)}function BE(t,...e){for(let r of e)if(r)for(let i of Object.keys(r)){let n=r[i];n!==void 0&&(t[i]=n)}return t}async function $s({fs:t,gitdir:e,author:r,commit:i}){let n=Math.floor(Date.now()/1e3),s={name:await eu({fs:t,gitdir:e,path:"user.name"}),email:await eu({fs:t,gitdir:e,path:"user.email"})||"",timestamp:n,timezoneOffset:new Date(n*1e3).getTimezoneOffset()},a=BE({},s,i?i.author:void 0,r);if(a.name!==void 0)return a}async function ga({fs:t,gitdir:e,author:r,committer:i,commit:n}){let s=Math.floor(Date.now()/1e3),a={name:await eu({fs:t,gitdir:e,path:"user.name"}),email:await eu({fs:t,gitdir:e,path:"user.email"})||"",timestamp:s,timezoneOffset:new Date(s*1e3).getTimezoneOffset()},o=BE({},a,n?n.committer:void 0,r,i);if(o.name!==void 0)return o}async function HE({fs:t,cache:e,gitdir:r,oid:i}){let{type:n,object:s}=await Je({fs:t,cache:e,gitdir:r,oid:i});if(n==="tag")return i=Kr.from(s).parse().object,HE({fs:t,cache:e,gitdir:r,oid:i});if(n!=="commit")throw new yr(i,n,"commit");return{commit:Mr.from(s),oid:i}}async function vn({fs:t,cache:e,gitdir:r,oid:i}){let{commit:n,oid:s}=await HE({fs:t,cache:e,gitdir:r,oid:i});return{oid:s,commit:n.parse(),payload:n.withoutSignature()}}async function ru({fs:t,cache:e,onSign:r,gitdir:i,message:n,author:s,committer:a,signingKey:o,amend:l=!1,dryRun:c=!1,noUpdateBranch:u=!1,ref:f,parent:d,tree:h}){let p=!1,g=!1;f||(g=!(await t.read(`${i}/HEAD`,{encoding:"utf8"})).startsWith("ref:"),f=await W.resolve({fs:t,gitdir:i,ref:"HEAD",depth:2}));let v,_;try{v=await W.resolve({fs:t,gitdir:i,ref:f}),_=await vn({fs:t,gitdir:i,oid:v,cache:{}})}catch(k){p=!0}if(l&&p)throw new Jc(f);let b=l?await $s({fs:t,gitdir:i,author:s,commit:_.commit}):await $s({fs:t,gitdir:i,author:s});if(!b)throw new Zt("author");let S=l?await ga({fs:t,gitdir:i,author:b,committer:a,commit:_.commit}):await ga({fs:t,gitdir:i,author:b,committer:a});if(!S)throw new Zt("committer");return ft.acquire({fs:t,gitdir:i,cache:e,allowUnmerged:!1},async function(k){let A=TE(k.entries).get(".");if(h||(h=await UE({fs:t,gitdir:i,inode:A,dryRun:c})),d?d=await Promise.all(d.map(y=>W.resolve({fs:t,gitdir:i,ref:y}))):l?d=_.commit.parent:d=v?[v]:[],!n)if(l)n=_.commit.message;else throw new Fr("message");let w=Mr.from({tree:h,parent:d,author:b,committer:S,message:n});o&&(w=await Mr.sign(w,r,o));let x=await Dr({fs:t,gitdir:i,type:"commit",object:w.toObject(),dryRun:c});return!u&&!c&&await W.writeRef({fs:t,gitdir:i,ref:g?"HEAD":f,value:x}),x})}async function UE({fs:t,gitdir:e,inode:r,dryRun:i}){let n=r.children;for(let l of n)l.type==="tree"&&(l.metadata.mode="040000",l.metadata.oid=await UE({fs:t,gitdir:e,inode:l,dryRun:i}));let s=n.map(l=>({mode:l.metadata.mode,path:l.basename,oid:l.metadata.oid,type:l.type})),a=Ir.from(s);return await Dr({fs:t,gitdir:e,type:"tree",object:a.toObject(),dryRun:i})}async function iu({fs:t,cache:e,gitdir:r,oid:i,filepath:n}){if(n.startsWith("/"))throw new Ts("leading-slash");if(n.endsWith("/"))throw new Ts("trailing-slash");let s=i,a=await Ko({fs:t,cache:e,gitdir:r,oid:i}),o=a.tree;if(n==="")i=a.oid;else{let l=n.split("/");i=await GE({fs:t,cache:e,gitdir:r,tree:o,pathArray:l,oid:s,filepath:n})}return i}async function GE({fs:t,cache:e,gitdir:r,tree:i,pathArray:n,oid:s,filepath:a}){let o=n.shift();for(let l of i)if(l.path===o){if(n.length===0)return l.oid;{let{type:c,object:u}=await Je({fs:t,cache:e,gitdir:r,oid:l.oid});if(c!=="tree")throw new yr(s,c,"tree",a);return i=Ir.from(u),GE({fs:t,cache:e,gitdir:r,tree:i,pathArray:n,oid:s,filepath:a})}}throw new He(`file or directory found at "${s}:${a}"`)}async function rl({fs:t,cache:e,gitdir:r,oid:i,filepath:n=void 0}){n!==void 0&&(i=await iu({fs:t,cache:e,gitdir:r,oid:i,filepath:n}));let{tree:s,oid:a}=await Ko({fs:t,cache:e,gitdir:r,oid:i});return{oid:a,tree:s.entries()}}async function nu({fs:t,gitdir:e,tree:r}){let i=Ir.from(r).toObject();return await Dr({fs:t,gitdir:e,type:"tree",object:i,format:"content"})}async function uN({fs:t,cache:e,onSign:r,gitdir:i,ref:n,oid:s,note:a,force:o,author:l,committer:c,signingKey:u}){let f;try{f=await W.resolve({gitdir:i,fs:t,ref:n})}catch(_){if(!(_ instanceof He))throw _}let h=(await rl({fs:t,cache:e,gitdir:i,oid:f||"4b825dc642cb6eb9a060e54bf8d69288fbee4904"})).tree;if(o)h=h.filter(_=>_.path!==s);else for(let _ of h)if(_.path===s)throw new Ui("note",s);typeof a=="string"&&(a=Buffer.from(a,"utf8"));let p=await Dr({fs:t,gitdir:i,type:"blob",object:a,format:"content"});h.push({mode:"100644",path:s,oid:p,type:"blob"});let g=await nu({fs:t,gitdir:i,tree:h});return await ru({fs:t,cache:e,onSign:r,gitdir:i,ref:n,tree:g,parent:f&&[f],message:`Note added by 'isomorphic-git addNote' +`,author:l,committer:c,signingKey:u})}async function jE({fs:t,onSign:e,dir:r,gitdir:i=O(r,".git"),ref:n="refs/notes/commits",oid:s,note:a,force:o,author:l,committer:c,signingKey:u,cache:f={}}){try{T("fs",t),T("gitdir",i),T("oid",s),T("note",a),u&&T("onSign",e);let d=new Q(t),h=await $s({fs:d,gitdir:i,author:l});if(!h)throw new Zt("author");let p=await ga({fs:d,gitdir:i,author:h,committer:c});if(!p)throw new Zt("committer");let g=await ee({fsp:d,dotgit:i});return await uN({fs:d,cache:f,onSign:e,gitdir:g,ref:n,oid:s,note:a,force:o,author:h,committer:p,signingKey:u})}catch(d){throw d.caller="git.addNote",d}}var fN=/(^|[/.])([/.]|$)|^@$|@{|[\x00-\x20\x7f~^:?*[\\]|\.lock(\/|$)/;function tu(t,e){if(typeof t!="string")throw new TypeError("Reference name must be a string");return!fN.test(t)&&(!!e||t.includes("/"))}async function VE({fs:t,gitdir:e,remote:r,url:i,force:n}){if(!tu(r,!0))throw new Gi(r,Dc.clean(r));let s=await dt.get({fs:t,gitdir:e});if(!n&&(await s.getSubsections("remote")).includes(r)&&i!==await s.get(`remote.${r}.url`))throw new Ui("remote",r);await s.set(`remote.${r}.url`,i),await s.set(`remote.${r}.fetch`,`+refs/heads/*:refs/remotes/${r}/*`),await dt.save({fs:t,gitdir:e,config:s})}async function zE({fs:t,dir:e,gitdir:r=O(e,".git"),remote:i,url:n,force:s=!1}){try{T("fs",t),T("gitdir",r),T("remote",i),T("url",n);let a=new Q(t),o=await ee({fsp:a,dotgit:r});return await VE({fs:a,gitdir:o,remote:i,url:n,force:s})}catch(a){throw a.caller="git.addRemote",a}}async function dN({fs:t,cache:e,onSign:r,gitdir:i,ref:n,tagger:s,message:a=n,gpgsig:o,object:l,signingKey:c,force:u=!1}){if(n=n.startsWith("refs/tags/")?n:`refs/tags/${n}`,!u&&await W.exists({fs:t,gitdir:i,ref:n}))throw new Ui("tag",n);let f=await W.resolve({fs:t,gitdir:i,ref:l||"HEAD"}),{type:d}=await Je({fs:t,cache:e,gitdir:i,oid:f}),h=Kr.from({object:f,type:d,tag:n.replace("refs/tags/",""),tagger:s,message:a,gpgsig:o});c&&(h=await Kr.sign(h,r,c));let p=await Dr({fs:t,gitdir:i,type:"tag",object:h.toObject()});await W.writeRef({fs:t,gitdir:i,ref:n,value:p})}async function WE({fs:t,onSign:e,dir:r,gitdir:i=O(r,".git"),ref:n,tagger:s,message:a=n,gpgsig:o,object:l,signingKey:c,force:u=!1,cache:f={}}){try{T("fs",t),T("gitdir",i),T("ref",n),c&&T("onSign",e);let d=new Q(t),h=await ee({fsp:d,dotgit:i}),p=await $s({fs:d,gitdir:h,author:s});if(!p)throw new Zt("tagger");return await dN({fs:d,cache:f,onSign:e,gitdir:h,ref:n,tagger:p,message:a,gpgsig:o,object:l,signingKey:c,force:u})}catch(d){throw d.caller="git.annotatedTag",d}}async function hN({fs:t,gitdir:e,ref:r,object:i,checkout:n=!1,force:s=!1}){if(!tu(r,!0))throw new Gi(r,Dc.clean(r));let a=`refs/heads/${r}`;if(!s&&await W.exists({fs:t,gitdir:e,ref:a}))throw new Ui("branch",r,!1);let o;try{o=await W.resolve({fs:t,gitdir:e,ref:i||"HEAD"})}catch(l){}o&&await W.writeRef({fs:t,gitdir:e,ref:a,value:o}),n&&await W.writeSymbolicRef({fs:t,gitdir:e,ref:"HEAD",value:a})}async function qE({fs:t,dir:e,gitdir:r=O(e,".git"),ref:i,object:n,checkout:s=!1,force:a=!1}){try{T("fs",t),T("gitdir",r),T("ref",i);let o=new Q(t),l=await ee({fsp:o,dotgit:r});return await hN({fs:o,gitdir:l,ref:i,object:n,checkout:s,force:a})}catch(o){throw o.caller="git.branch",o}}var YE=(t,e)=>t==="."||e==null||e.length===0||e==="."?!0:e.length>=t.length?e.startsWith(t):t.startsWith(e);async function Mg({fs:t,cache:e,onProgress:r,onPostCheckout:i,dir:n,gitdir:s,remote:a,ref:o,filepaths:l,noCheckout:c,noUpdateHead:u,dryRun:f,force:d,track:h=!0,nonBlocking:p=!1,batchSize:g=100}){let v;if(i)try{v=await W.resolve({fs:t,gitdir:s,ref:"HEAD"})}catch(b){v="0000000000000000000000000000000000000000"}let _;try{_=await W.resolve({fs:t,gitdir:s,ref:o})}catch(b){if(o==="HEAD")throw b;let S=`${a}/${o}`;if(_=await W.resolve({fs:t,gitdir:s,ref:S}),h){let k=await dt.get({fs:t,gitdir:s});await k.set(`branch.${o}.remote`,a),await k.set(`branch.${o}.merge`,`refs/heads/${o}`),await dt.save({fs:t,gitdir:s,config:k})}await W.writeRef({fs:t,gitdir:s,ref:`refs/heads/${o}`,value:_})}if(!c){let b;try{b=await pN({fs:t,cache:e,onProgress:r,dir:n,gitdir:s,ref:o,force:d,filepaths:l})}catch(w){throw w instanceof He&&w.data.what===_?new jc(o,_):w}let S=b.filter(([w])=>w==="conflict").map(([w,x])=>x);if(S.length>0)throw new Hc(S);let k=b.filter(([w])=>w==="error").map(([w,x])=>x);if(k.length>0)throw new ue(k.join(", "));if(f){i&&await i({previousHead:v,newHead:_,type:l!=null&&l.length>0?"file":"branch"});return}let E=0,A=b.length;if(await ft.acquire({fs:t,gitdir:s,cache:e},async function(w){await Promise.all(b.filter(([x])=>x==="delete"||x==="delete-index").map(async function([x,y]){let C=`${n}/${y}`;x==="delete"&&await t.rm(C),w.delete({filepath:y}),r&&await r({phase:"Updating workdir",loaded:++E,total:A})}))}),await ft.acquire({fs:t,gitdir:s,cache:e},async function(w){for(let[x,y]of b)if(x==="rmdir"||x==="rmdir-index"){let C=`${n}/${y}`;try{x==="rmdir"&&await t.rmdir(C),w.delete({filepath:y}),r&&await r({phase:"Updating workdir",loaded:++E,total:A})}catch(P){if(P.code==="ENOTEMPTY")console.log(`Did not delete ${y} because directory is not empty`);else throw P}}}),await Promise.all(b.filter(([w])=>w==="mkdir"||w==="mkdir-index").map(async function([w,x]){let y=`${n}/${x}`;await t.mkdir(y),r&&await r({phase:"Updating workdir",loaded:++E,total:A})})),p){let w=b.filter(([y])=>y==="create"||y==="create-index"||y==="update"||y==="mkdir-index"),x=await pE("Update Working Dir",w.map(([y,C,P,L,N])=>()=>gN({fs:t,cache:e,gitdir:s,dir:n},[y,C,P,L,N])),r,g);await ft.acquire({fs:t,gitdir:s,cache:e,allowUnmerged:!0},async function(y){await pE("Update Index",x.map(([C,P,L])=>()=>mN({index:y,fullpath:C,oid:P,stats:L})),r,g)})}else await ft.acquire({fs:t,gitdir:s,cache:e,allowUnmerged:!0},async function(w){await Promise.all(b.filter(([x])=>x==="create"||x==="create-index"||x==="update"||x==="mkdir-index").map(async function([x,y,C,P,L]){let N=`${n}/${y}`;try{if(x!=="create-index"&&x!=="mkdir-index"){let{object:ge}=await Je({fs:t,cache:e,gitdir:s,oid:C});if(L&&await t.rm(N),P===33188)await t.write(N,ge);else if(P===33261)await t.write(N,ge,{mode:511});else if(P===40960)await t.writelink(N,ge);else throw new ue(`Invalid mode 0o${P.toString(8)} detected in blob ${C}`)}let B=await t.lstat(N);P===33261&&(B.mode=493),x==="mkdir-index"&&(B.mode=57344),w.insert({filepath:y,stats:B,oid:C}),r&&await r({phase:"Updating workdir",loaded:++E,total:A})}catch(B){console.log(B)}}))});i&&await i({previousHead:v,newHead:_,type:l!=null&&l.length>0?"file":"branch"})}if(!u){let b=await W.expand({fs:t,gitdir:s,ref:o});b.startsWith("refs/heads")?await W.writeSymbolicRef({fs:t,gitdir:s,ref:"HEAD",value:b}):await W.writeRef({fs:t,gitdir:s,ref:"HEAD",value:_})}}async function pN({fs:t,cache:e,onProgress:r,dir:i,gitdir:n,ref:s,force:a,filepaths:o}){let l=0;return Ps({fs:t,cache:e,dir:i,gitdir:n,trees:[Zr({ref:s}),tl(),_a()],map:async function(c,[u,f,d]){if(c===".")return;if(o&&!o.some(p=>YE(c,p)))return null;switch(r&&await r({phase:"Analyzing workdir",loaded:++l}),[!!d,!!u,!!f].map(Number).join("")){case"000":return;case"001":return a&&o&&o.includes(c)?["delete",c]:void 0;case"010":switch(await u.type()){case"tree":return["mkdir",c];case"blob":return["create",c,await u.oid(),await u.mode()];case"commit":return["mkdir-index",c,await u.oid(),await u.mode()];default:return["error",`new entry Unhandled type ${await u.type()}`]}case"011":switch(`${await u.type()}-${await f.type()}`){case"tree-tree":return;case"tree-blob":case"blob-tree":return["conflict",c];case"blob-blob":return await u.oid()!==await f.oid()?a?["update",c,await u.oid(),await u.mode(),await u.mode()!==await f.mode()]:["conflict",c]:await u.mode()!==await f.mode()?a?["update",c,await u.oid(),await u.mode(),!0]:["conflict",c]:["create-index",c,await u.oid(),await u.mode()];case"commit-tree":return;case"commit-blob":return["conflict",c];default:return["error",`new entry Unhandled type ${u.type}`]}case"100":return["delete-index",c];case"101":switch(await d.type()){case"tree":return["rmdir-index",c];case"blob":return await d.oid()!==await f.oid()?a?["delete",c]:["conflict",c]:["delete",c];case"commit":return["rmdir-index",c];default:return["error",`delete entry Unhandled type ${await d.type()}`]}case"110":case"111":switch(`${await d.type()}-${await u.type()}`){case"tree-tree":return;case"blob-blob":{if(await d.oid()===await u.oid()&&await d.mode()===await u.mode()&&!a)return;if(f){if(await f.oid()!==await d.oid()&&await f.oid()!==await u.oid())return a?["update",c,await u.oid(),await u.mode(),await u.mode()!==await f.mode()]:["conflict",c]}else if(a)return["update",c,await u.oid(),await u.mode(),await u.mode()!==await d.mode()];return await u.mode()!==await d.mode()?["update",c,await u.oid(),await u.mode(),!0]:await u.oid()!==await d.oid()?["update",c,await u.oid(),await u.mode(),!1]:void 0}case"tree-blob":return["update-dir-to-blob",c,await u.oid()];case"blob-tree":return["update-blob-to-tree",c];case"commit-commit":return["mkdir-index",c,await u.oid(),await u.mode()];default:return["error",`update entry Unhandled type ${await d.type()}-${await u.type()}`]}}},reduce:async function(c,u){return u=ME(u),c?c&&c[0]==="rmdir"?(u.push(c),u):(u.unshift(c),u):u}})}async function mN({index:t,fullpath:e,stats:r,oid:i}){try{t.insert({filepath:e,stats:r,oid:i})}catch(n){console.warn(`Error inserting ${e} into index:`,n)}}async function gN({fs:t,cache:e,gitdir:r,dir:i},[n,s,a,o,l]){let c=`${i}/${s}`;if(n!=="create-index"&&n!=="mkdir-index"){let{object:f}=await Je({fs:t,cache:e,gitdir:r,oid:a});if(l&&await t.rm(c),o===33188)await t.write(c,f);else if(o===33261)await t.write(c,f,{mode:511});else if(o===40960)await t.writelink(c,f);else throw new ue(`Invalid mode 0o${o.toString(8)} detected in blob ${a}`)}let u=await t.lstat(c);return o===33261&&(u.mode=493),n==="mkdir-index"&&(u.mode=57344),[s,a,u]}async function pE(t,e,r,i){let n=[];try{for(let s=0;s<e.length;s+=i){let a=e.slice(s,s+i).map(l=>l());(await Promise.allSettled(a)).forEach(l=>{l.status==="fulfilled"&&n.push(l.value)}),r&&await r({phase:"Updating workdir",loaded:s+a.length,total:e.length})}return n}catch(s){console.error(`Error during ${t}: ${s}`)}return n}async function Dg({fs:t,onProgress:e,onPostCheckout:r,dir:i,gitdir:n=O(i,".git"),remote:s="origin",ref:a,filepaths:o,noCheckout:l=!1,noUpdateHead:c=a===void 0,dryRun:u=!1,force:f=!1,track:d=!0,cache:h={},nonBlocking:p=!1,batchSize:g=100}){try{T("fs",t),T("dir",i),T("gitdir",n);let v=a||"HEAD",_=new Q(t),b=await ee({fsp:_,dotgit:n});return await Mg({fs:_,cache:h,onProgress:e,onPostCheckout:r,dir:i,gitdir:b,remote:s,ref:v,filepaths:o,noCheckout:l,noUpdateHead:c,dryRun:u,force:f,track:d,nonBlocking:p,batchSize:g})}catch(v){throw v.caller="git.checkout",v}}var mg=/^.*(\r?\n|$)/gm;function vN({branches:t,contents:e}){let r=t[1],i=t[2],n=e[0],s=e[1],a=e[2],o=s.match(mg),l=n.match(mg),c=a.match(mg),u=uL(o,l,c),f=7,d="",h=!0;for(let p of u)p.ok&&(d+=p.ok.join("")),p.conflict&&(h=!1,d+=`${"<".repeat(f)} ${r} +`,d+=p.conflict.a.join(""),d+=`${"=".repeat(f)} +`,d+=p.conflict.b.join(""),d+=`${">".repeat(f)} ${i} +`);return{cleanMerge:h,mergedText:d}}async function XE({fs:t,cache:e,dir:r,gitdir:i=O(r,".git"),index:n,ourOid:s,baseOid:a,theirOid:o,ourName:l="ours",baseName:c="base",theirName:u="theirs",dryRun:f=!1,abortOnConflict:d=!0,mergeDriver:h}){let p=Zr({ref:s}),g=Zr({ref:a}),v=Zr({ref:o}),_=[],b=[],S=[],k=[],E=await Ps({fs:t,cache:e,dir:r,gitdir:i,trees:[p,g,v],map:async function(A,[w,x,y]){let C=sd(A),P=await ud(w,x),L=await ud(y,x);switch(`${P}-${L}`){case"false-false":return{mode:await x.mode(),path:C,oid:await x.oid(),type:await x.type()};case"false-true":return!y&&await w.type()==="tree"?{mode:await w.mode(),path:C,oid:await w.oid(),type:await w.type()}:y?{mode:await y.mode(),path:C,oid:await y.oid(),type:await y.type()}:void 0;case"true-false":return!w&&await y.type()==="tree"?{mode:await y.mode(),path:C,oid:await y.oid(),type:await y.type()}:w?{mode:await w.mode(),path:C,oid:await w.oid(),type:await w.type()}:void 0;case"true-true":{if(w&&y&&await w.type()==="tree"&&await y.type()==="tree")return{mode:await w.mode(),path:C,oid:await w.oid(),type:"tree"};if(w&&y&&await w.type()==="blob"&&await y.type()==="blob")return wN({fs:t,gitdir:i,path:C,ours:w,base:x,theirs:y,ourName:l,baseName:c,theirName:u,mergeDriver:h}).then(async N=>{if(N.cleanMerge)d||n.insert({filepath:A,oid:N.mergeResult.oid,stage:0});else if(_.push(A),b.push(A),!d){let B="";x&&await x.type()==="blob"&&(B=await x.oid());let ge=await w.oid(),Le=await y.oid();n.delete({filepath:A}),B&&n.insert({filepath:A,oid:B,stage:1}),n.insert({filepath:A,oid:ge,stage:2}),n.insert({filepath:A,oid:Le,stage:3})}return N.mergeResult});if(x&&!w&&y&&await x.type()==="blob"&&await y.type()==="blob"){if(_.push(A),S.push(A),!d){let N=await x.oid(),B=await y.oid();n.delete({filepath:A}),n.insert({filepath:A,oid:N,stage:1}),n.insert({filepath:A,oid:B,stage:3})}return{mode:await y.mode(),oid:await y.oid(),type:"blob",path:C}}if(x&&w&&!y&&await x.type()==="blob"&&await w.type()==="blob"){if(_.push(A),k.push(A),!d){let N=await x.oid(),B=await w.oid();n.delete({filepath:A}),n.insert({filepath:A,oid:N,stage:1}),n.insert({filepath:A,oid:B,stage:2})}return{mode:await w.mode(),oid:await w.oid(),type:"blob",path:C}}if(x&&!w&&!y&&(await x.type()==="blob"||await x.type()==="tree"))return;throw new Yo}}},reduce:_.length!==0&&(!r||d)?void 0:async(A,w)=>{let x=w.filter(Boolean);if(A&&!(A&&A.type==="tree"&&x.length===0&&A.path!==".")){if(x.length>0||A.path==="."&&x.length===0){let C=new Ir(x).toObject(),P=await Dr({fs:t,gitdir:i,type:"tree",object:C,dryRun:f});A.oid=P}return A}}});return _.length!==0?(r&&!d&&await Ps({fs:t,cache:e,dir:r,gitdir:i,trees:[Zr({ref:E.oid})],map:async function(A,[w]){let x=`${r}/${A}`;if(await w.type()==="blob"){let y=await w.mode(),C=new TextDecoder().decode(await w.content());await t.write(x,C,{mode:y})}return!0}}),new pa(_,b,S,k)):E.oid}async function wN({fs:t,gitdir:e,path:r,ours:i,base:n,theirs:s,ourName:a,theirName:o,baseName:l,dryRun:c,mergeDriver:u=vN}){let f="blob",d="100755",h="",p="";n&&await n.type()==="blob"&&(d=await n.mode(),h=await n.oid(),p=Buffer.from(await n.content()).toString("utf8"));let g=d===await i.mode()?await s.mode():await i.mode();if(await i.oid()===await s.oid())return{cleanMerge:!0,mergeResult:{mode:g,path:r,oid:await i.oid(),type:f}};if(await i.oid()===h)return{cleanMerge:!0,mergeResult:{mode:g,path:r,oid:await s.oid(),type:f}};if(await s.oid()===h)return{cleanMerge:!0,mergeResult:{mode:g,path:r,oid:await i.oid(),type:f}};let v=Buffer.from(await i.content()).toString("utf8"),_=Buffer.from(await s.content()).toString("utf8"),{mergedText:b,cleanMerge:S}=await u({branches:[l,a,o],contents:[p,v,_],path:r}),k=await Dr({fs:t,gitdir:e,type:"blob",object:Buffer.from(b,"utf8"),dryRun:c});return{cleanMerge:S,mergeResult:{mode:g,path:r,oid:k,type:f}}}var _N={stage:_a,workdir:tl},gg;async function Qo(t,e){return gg===void 0&&(gg=new Mc),gg.acquire(t,e)}async function bN(t,e,r,i,n=null){let s=O(r,i),a=await t.lstat(s);if(!a)throw new He(s);if(a.isDirectory())throw new ue(`${s}: file expected, but found directory`);let o=n?await RE({fs:t,gitdir:e,oid:n}):void 0,l=o?n:void 0;return o||await Qo({fs:t,gitdir:e,currentFilepath:s},async()=>{let c=a.isSymbolicLink()?await t.readlink(s).then(LE):await t.read(s);if(c===null)throw new He(s);l=await Dr({fs:t,gitdir:e,type:"blob",object:c})}),l}async function yN({fs:t,dir:e,gitdir:r,entries:i}){async function n(s){if(s.type==="tree"){if(!s.oid){let a=await Promise.all(s.children.map(n));s.oid=await nu({fs:t,gitdir:r,tree:a}),s.mode=16384}}else s.type==="blob"&&(s.oid=await bN(t,r,e,s.path,s.oid),s.mode=33188);return s.path=s.path.split("/").pop(),s}return Promise.all(i.map(n))}async function mE({fs:t,dir:e,gitdir:r,treePair:i}){let n=i[1]==="stage",s=i.map(h=>typeof h=="string"?_N[h]():h),a=[],u=await Ps({fs:t,cache:{},dir:e,gitdir:r,trees:s,map:async(h,[p,g])=>{if(!(h==="."||await Rs.isIgnored({fs:t,dir:e,gitdir:r,filepath:h}))&&g)return(!p||await p.oid()!==await g.oid()&&await g.oid()!==void 0)&&a.push([p,g]),{mode:await g.mode(),path:h,oid:await g.oid(),type:await g.type()}},reduce:async(h,p)=>(p=p.filter(Boolean),h?(h.children=p,h):p.length>0?p:void 0),iterate:async(h,p)=>{let g=[];for(let v of p){let[_,b]=v;n?b&&(await t.exists(`${e}/${b.toString()}`)?g.push(v):a.push([null,b])):_&&(b?g.push(v):a.push([_,null]))}return g.length?Promise.all(g.map(h)):[]}});if(a.length===0||u.length===0)return null;let d=(await yN({fs:t,dir:e,gitdir:r,entries:u})).filter(Boolean).map(h=>({mode:h.mode,path:h.path,oid:h.oid,type:h.type}));return nu({fs:t,gitdir:r,tree:d})}async function ZE({fs:t,dir:e,gitdir:r,stashCommit:i,parentCommit:n,wasStaged:s}){let a=[],o=[],l=await Ps({fs:t,cache:{},dir:e,gitdir:r,trees:[Zr({ref:n}),Zr({ref:i})],map:async(c,[u,f])=>{if(c==="."||await Rs.isIgnored({fs:t,dir:e,gitdir:r,filepath:c}))return;let d=f?await f.type():await u.type();if(d!=="tree"&&d!=="blob")return;if(!f&&u){let p=d==="tree"?"rmdir":"rm";return d==="tree"&&a.push(c),d==="blob"&&s&&o.push({filepath:c,oid:await u.oid()}),{method:p,filepath:c}}let h=await f.oid();if(!u||await u.oid()!==h)return d==="tree"?{method:"mkdir",filepath:c}:(s&&o.push({filepath:c,oid:h,stats:await t.lstat(O(e,c))}),{method:"write",filepath:c,oid:h})}});await Qo({fs:t,gitdir:r,dirRemoved:a,ops:l},async()=>{for(let c of l){let u=O(e,c.filepath);switch(c.method){case"rmdir":await t.rmdir(u);break;case"mkdir":await t.mkdir(u);break;case"rm":await t.rm(u);break;case"write":if(!a.some(f=>u.startsWith(f))){let{object:f}=await Je({fs:t,cache:{},gitdir:r,oid:c.oid});await t.exists(u)&&await t.rm(u),await t.write(u,f)}break}}}),await ft.acquire({fs:t,gitdir:r,cache:{}},async c=>{o.forEach(({filepath:u,stats:f,oid:d})=>{c.insert({filepath:u,stats:f,oid:d})})})}async function gE({fs:t,cache:e,dir:r,gitdir:i,oid:n,dryRun:s=!1,noUpdateBranch:a=!1,abortOnConflict:o=!0,committer:l,mergeDriver:c}){let{commit:u,oid:f}=await vn({fs:t,cache:e,gitdir:i,oid:n});if(u.parent.length>1)throw new Uc(f,u.parent.length);if(u.parent.length===0)throw new Gc(f);let d=await W.resolve({fs:t,gitdir:i,ref:"HEAD"}),{commit:h}=await vn({fs:t,cache:e,gitdir:i,oid:d}),p=u.parent[0],{commit:g}=await vn({fs:t,cache:e,gitdir:i,oid:p}),v=await ft.acquire({fs:t,gitdir:i,cache:e,allowUnmerged:!1},async b=>XE({fs:t,cache:e,dir:r,gitdir:i,index:b,ourOid:h.tree,baseOid:g.tree,theirOid:u.tree,ourName:"HEAD",baseName:`parent of ${f.slice(0,7)}`,theirName:f.slice(0,7),dryRun:s,abortOnConflict:o,mergeDriver:c}));if(v instanceof pa)throw v;let _=await ru({fs:t,cache:e,gitdir:i,message:u.message,tree:v,parent:[d],author:u.author,committer:l,dryRun:s,noUpdateBranch:a});return r&&!s&&!a&&await ZE({fs:t,dir:r,gitdir:i,stashCommit:_,parentCommit:d,wasStaged:!0}),_}async function KE({fs:t,dir:e,gitdir:r=O(e,".git"),oid:i,cache:n={},committer:s,dryRun:a=!1,noUpdateBranch:o=!1,abortOnConflict:l=!0,mergeDriver:c}){try{T("fs",t),T("gitdir",r),T("oid",i);let u=new Q(t),f=await ee({fsp:u,dotgit:r}),{commit:d}=await vn({fs:u,cache:n,gitdir:f,oid:i});if(d.parent&&d.parent.length>1)return await gE({fs:u,cache:n,dir:e,gitdir:f,oid:i,dryRun:a,noUpdateBranch:o,abortOnConflict:l,committer:void 0,mergeDriver:c});let h=await ga({fs:u,gitdir:f,committer:s});if(!h)throw new Zt("committer");return await gE({fs:u,cache:n,dir:e,gitdir:f,oid:i,dryRun:a,noUpdateBranch:o,abortOnConflict:l,committer:h,mergeDriver:c})}catch(u){throw u.caller="git.cherryPick",u}}var xN=/^refs\/(heads\/|tags\/|remotes\/)?(.*)/;function da(t){let e=xN.exec(t);return e?e[1]==="remotes/"&&t.endsWith("/HEAD")?e[2].slice(0,-5):e[2]:t}async function Is({fs:t,gitdir:e,fullname:r=!1,test:i=!1}){let n=await W.resolve({fs:t,gitdir:e,ref:"HEAD",depth:2});if(i)try{await W.resolve({fs:t,gitdir:e,ref:n})}catch(s){return}if(n.startsWith("refs/"))return r?n:da(n)}function EN(t){return t=t.replace(/^git@([^:]+):/,"https://$1/"),t=t.replace(/^ssh:\/\//,"https://"),t}function QE({username:t="",password:e=""}){return`Basic ${Buffer.from(`${t}:${e}`).toString("base64")}`}async function su(t,e){let r=$E(t);for(;;){let{value:i,done:n}=await r.next();if(i&&await e(i),n)break}r.return&&r.return()}async function fd(t){let e=0,r=[];await su(t,s=>{r.push(s),e+=s.byteLength});let i=new Uint8Array(e),n=0;for(let s of r)i.set(s,n),n+=s.byteLength;return i}function vE(t){let e=t.match(/^https?:\/\/([^/]+)@/);if(e==null)return{url:t,auth:{}};e=e[1];let[r,i]=e.split(":");return t=t.replace(`${e}@`,""),{url:t,auth:{username:r,password:i}}}function $g(t,e){let r=e.toString(16);return"0".repeat(t-r.length)+r}var ot=class{static flush(){return Buffer.from("0000","utf8")}static delim(){return Buffer.from("0001","utf8")}static encode(e){typeof e=="string"&&(e=Buffer.from(e));let r=e.length+4,i=$g(4,r);return Buffer.concat([Buffer.from(i,"utf8"),e])}static streamReader(e){let r=new ld(e);return async function(){try{let n=await r.read(4);if(n==null)return!0;if(n=parseInt(n.toString("utf8"),16),n===0||n===1)return null;let s=await r.read(n-4);return s==null?!0:s}catch(n){return e.error=n,!0}}}};async function wE(t){let e={},r;for(;r=await t(),r!==!0;){if(r===null)continue;r=r.toString("utf8").replace(/\n$/,"");let i=r.indexOf("=");if(i>-1){let n=r.slice(0,i),s=r.slice(i+1);e[n]=s}else e[r]=!0}return{protocolVersion:2,capabilities2:e}}async function _E(t,{service:e}){let r=new Set,i=new Map,n=new Map,s=ot.streamReader(t),a=await s();for(;a===null;)a=await s();if(a===!0)throw new Vc;if(a.includes("version 2"))return wE(s);if(a.toString("utf8").replace(/\n$/,"")!==`# service=${e}`)throw new ma(`# service=${e}\\n`,a.toString("utf8"));let o=await s();for(;o===null;)o=await s();if(o===!0)return{capabilities:r,refs:i,symrefs:n};if(o=o.toString("utf8"),o.includes("version 2"))return wE(s);let[l,c]=vg(o,"\0","\\x00");if(c.split(" ").map(u=>r.add(u)),l!=="0000000000000000000000000000000000000000 capabilities^{}"){let[u,f]=vg(l," "," ");for(i.set(f,u);;){let d=await s();if(d===!0)break;if(d!==null){let[h,p]=vg(d.toString("utf8")," "," ");i.set(p,h)}}}for(let u of r)if(u.startsWith("symref=")){let f=u.match(/symref=([^:]+):(.*)/);f.length===3&&n.set(f[1],f[2])}return{protocolVersion:1,capabilities:r,refs:i,symrefs:n}}function vg(t,e,r){let i=t.trim().split(e);if(i.length!==2)throw new ma(`Two strings separated by '${r}'`,t.toString("utf8"));return i}var bE=(t,e)=>t.endsWith("?")?`${t}${e}`:`${t}/${e.replace(/^https?:\/\//,"")}`,yE=(t,e)=>{(e.username||e.password)&&(t.Authorization=QE(e)),e.headers&&Object.assign(t,e.headers)},wg=async t=>{try{let e=Buffer.from(await fd(t.body)),r=e.toString("utf8");return{preview:r.length<256?r:r.slice(0,256)+"...",response:r,data:e}}catch(e){return{}}},Jo=class{static async capabilities(){return["discover","connect"]}static async discover({http:e,onProgress:r,onAuth:i,onAuthSuccess:n,onAuthFailure:s,corsProxy:a,service:o,url:l,headers:c,protocolVersion:u}){let{url:f,auth:d}=vE(l),h=a?bE(a,f):f;(d.username||d.password)&&(c.Authorization=QE(d)),u===2&&(c["Git-Protocol"]="version=2");let p,g,v=!1;do if(p=await e.request({onProgress:r,method:"GET",url:`${h}/info/refs?service=${o}`,headers:c}),g=!1,p.statusCode===401||p.statusCode===203){let _=v?s:i;if(_){if(d=await _(f,{...d,headers:{...c}}),d&&d.cancel)throw new Zo;d&&(yE(c,d),v=!0,g=!0)}}else p.statusCode===200&&v&&n&&await n(f,d);while(g);if(p.statusCode!==200){let{response:_}=await wg(p);throw new qo(p.statusCode,p.statusMessage,_)}if(p.headers["content-type"]===`application/x-${o}-advertisement`){let _=await _E(p.body,{service:o});return _.auth=d,_}else{let{preview:_,response:b,data:S}=await wg(p);try{let k=await _E([S],{service:o});return k.auth=d,k}catch(k){throw new Xc(_,b)}}}static async connect({http:e,onProgress:r,corsProxy:i,service:n,url:s,auth:a,body:o,headers:l}){let c=vE(s);c&&(s=c.url),i&&(s=bE(i,s)),l["content-type"]=`application/x-${n}-request`,l.accept=`application/x-${n}-result`,yE(l,a);let u=await e.request({onProgress:r,method:"POST",url:`${s}/${n}`,body:o,headers:l});if(u.statusCode!==200){let{response:f}=wg(u);throw new qo(u.statusCode,u.statusMessage,f)}return u}},el=class{static getRemoteHelperFor({url:e}){let r=new Map;r.set("http",Jo),r.set("https",Jo);let i=SN({url:e});if(!i)throw new Kc(e);if(r.has(i.transport))return r.get(i.transport);throw new Zc(e,i.transport,i.transport==="ssh"?EN(e):void 0)}};function SN({url:t}){if(t.startsWith("git@"))return{transport:"ssh",address:t};let e=t.match(/(\w+)(:\/\/|::)(.*)/);if(e!==null){if(e[2]==="://")return{transport:e[1],address:e[0]};if(e[2]==="::")return{transport:e[1],address:e[3]}}}var fa=null,va=class{static async read({fs:e,gitdir:r}){fa===null&&(fa=new Mc);let i=O(r,"shallow"),n=new Set;return await fa.acquire(i,async function(){let s=await e.read(i,{encoding:"utf8"});if(s===null||s.trim()==="")return n;s.trim().split(` +`).map(a=>n.add(a))}),n}static async write({fs:e,gitdir:r,oids:i}){fa===null&&(fa=new Mc);let n=O(r,"shallow");if(i.size>0){let s=[...i].join(` +`)+` +`;await fa.acquire(n,async function(){await e.write(n,s,{encoding:"utf8"})})}else await fa.acquire(n,async function(){await e.rm(n)})}};async function kN({fs:t,gitdir:e,oid:r}){let i=`objects/${r.slice(0,2)}/${r.slice(2)}`;return t.exists(`${e}/${i}`)}async function AN({fs:t,cache:e,gitdir:r,oid:i,getExternalRefDelta:n}){let s=await t.readdir(O(r,"objects/pack"));s=s.filter(a=>a.endsWith(".idx"));for(let a of s){let o=`${r}/objects/pack/${a}`,l=await Ig({fs:t,cache:e,filename:o,getExternalRefDelta:n});if(l.error)throw new ue(l.error);if(l.offsets.has(i))return!0}return!1}async function xE({fs:t,cache:e,gitdir:r,oid:i,format:n="content"}){let s=o=>Je({fs:t,cache:e,gitdir:r,oid:o}),a=await kN({fs:t,gitdir:r,oid:i});return a||(a=await AN({fs:t,cache:e,gitdir:r,oid:i,getExternalRefDelta:s})),a}function CN(t){let n="5041434b"+"00000002"+"00000000";return t.slice(0,12).toString("hex")===n}function JE(t,e){let r=t.map(i=>i.split("=",1)[0]);return e.filter(i=>{let n=i.split("=",1)[0];return r.includes(n)})}var gd={name:"isomorphic-git",version:"1.37.4",agent:"git/isomorphic-git@1.37.4"},Vo=class{constructor(){this._queue=[]}write(e){if(this._ended)throw Error("You cannot write to a FIFO that has already been ended!");if(this._waiting){let r=this._waiting;this._waiting=null,r({value:e})}else this._queue.push(e)}end(){if(this._ended=!0,this._waiting){let e=this._waiting;this._waiting=null,e({done:!0})}}destroy(e){this.error=e,this.end()}async next(){if(this._queue.length>0)return{value:this._queue.shift()};if(this._ended)return{done:!0};if(this._waiting)throw Error("You cannot call read until the previous call to read has returned!");return new Promise(e=>{this._waiting=e})}};function TN(t){let e=t.indexOf("\r"),r=t.indexOf(` +`);return e===-1&&r===-1?-1:e===-1?r+1:r===-1?e+1:r===e+1?r+1:Math.min(e,r)+1}function eS(t){let e=new Vo,r="";return(async()=>(await su(t,i=>{for(i=i.toString("utf8"),r+=i;;){let n=TN(r);if(n===-1)break;e.write(r.slice(0,n)),r=r.slice(n)}}),r.length>0&&e.write(r),e.end()))(),e}var dd=class{static demux(e){let r=ot.streamReader(e),i=new Vo,n=new Vo,s=new Vo,a=async function(){let o=await r();if(o===null)return a();if(o===!0){i.end(),s.end(),e.error?n.destroy(e.error):n.end();return}switch(o[0]){case 1:{n.write(o.slice(1));break}case 2:{s.write(o.slice(1));break}case 3:{let l=o.slice(1);s.write(l),i.end(),s.end(),n.destroy(new Error(l.toString("utf8")));return}default:i.write(o)}a()};return a(),{packetlines:i,packfile:n,progress:s}}};async function PN(t){let{packetlines:e,packfile:r,progress:i}=dd.demux(t),n=[],s=[],a=[],o=!1,l=!1;return new Promise((c,u)=>{su(e,f=>{let d=f.toString("utf8").trim();if(d.startsWith("shallow")){let h=d.slice(-41).trim();h.length!==40&&u(new As(h)),n.push(h)}else if(d.startsWith("unshallow")){let h=d.slice(-41).trim();h.length!==40&&u(new As(h)),s.push(h)}else if(d.startsWith("ACK")){let[,h,p]=d.split(" ");a.push({oid:h,status:p}),p||(l=!0)}else d.startsWith("NAK")?(o=!0,l=!0):(l=!0,o=!0);l&&(t.error?u(t.error):c({shallows:n,unshallows:s,acks:a,nak:o,packfile:r,progress:i}))}).finally(()=>{l||(t.error?u(t.error):c({shallows:n,unshallows:s,acks:a,nak:o,packfile:r,progress:i}))})})}function RN({capabilities:t=[],wants:e=[],haves:r=[],shallows:i=[],depth:n=null,since:s=null,exclude:a=[]}){let o=[];e=[...new Set(e)];let l=` ${t.join(" ")}`;for(let c of e)o.push(ot.encode(`want ${c}${l} +`)),l="";for(let c of i)o.push(ot.encode(`shallow ${c} +`));n!==null&&o.push(ot.encode(`deepen ${n} +`)),s!==null&&o.push(ot.encode(`deepen-since ${Math.floor(s.valueOf()/1e3)} +`));for(let c of a)o.push(ot.encode(`deepen-not ${c} +`));o.push(ot.flush());for(let c of r)o.push(ot.encode(`have ${c} +`));return o.push(ot.encode(`done +`)),o}async function Og({fs:t,cache:e,http:r,onProgress:i,onMessage:n,onAuth:s,onAuthSuccess:a,onAuthFailure:o,gitdir:l,ref:c,remoteRef:u,remote:f,url:d,corsProxy:h,depth:p=null,since:g=null,exclude:v=[],relative:_=!1,tags:b=!1,singleBranch:S=!1,headers:k={},prune:E=!1,pruneTags:A=!1}){let w=c||await Is({fs:t,gitdir:l,test:!0}),x=await dt.get({fs:t,gitdir:l}),y=f||w&&await x.get(`branch.${w}.remote`)||"origin",C=d||await x.get(`remote.${y}.url`);if(typeof C=="undefined")throw new Fr("remote OR url");let P=u||w&&await x.get(`branch.${w}.merge`)||c||"HEAD";h===void 0&&(h=await x.get("http.corsProxy"));let L=el.getRemoteHelperFor({url:C}),N=await L.discover({http:r,onAuth:s,onAuthSuccess:a,onAuthFailure:o,corsProxy:h,service:"git-upload-pack",url:C,headers:k,protocolVersion:1}),B=N.auth,ge=N.refs;if(ge.size===0)return{defaultBranch:null,fetchHead:null,fetchHeadDescription:null};if(p!==null&&!N.capabilities.has("shallow"))throw new ks("shallow","depth");if(g!==null&&!N.capabilities.has("deepen-since"))throw new ks("deepen-since","since");if(v.length>0&&!N.capabilities.has("deepen-not"))throw new ks("deepen-not","exclude");if(_===!0&&!N.capabilities.has("deepen-relative"))throw new ks("deepen-relative","relative");let{oid:Le,fullref:ke}=W.resolveAgainstMap({ref:P,map:ge});for(let D of ge.keys())D===ke||D==="HEAD"||D.startsWith("refs/heads/")||b&&D.startsWith("refs/tags/")||ge.delete(D);let ne=JE([...N.capabilities],["multi_ack_detailed","no-done","side-band-64k","ofs-delta",`agent=${gd.agent}`]);_&&ne.push("deepen-relative");let Ee=S?[Le]:ge.values(),_e=S?[w]:await W.listRefs({fs:t,gitdir:l,filepath:"refs"}),z=[];for(let D of _e)try{D=await W.expand({fs:t,gitdir:l,ref:D});let M=await W.resolve({fs:t,gitdir:l,ref:D});await xE({fs:t,cache:e,gitdir:l,oid:M})&&z.push(M)}catch(M){}z=[...new Set(z)];let X=await va.read({fs:t,gitdir:l}),V=N.capabilities.has("shallow")?[...X]:[],Ne=RN({capabilities:ne,wants:Ee,haves:z,shallows:V,depth:p,since:g,exclude:v}),gr=Buffer.from(await fd(Ne)),Nt=await L.connect({http:r,onProgress:i,corsProxy:h,service:"git-upload-pack",url:C,auth:B,body:[gr],headers:k}),Fe=await PN(Nt.body);Nt.headers&&(Fe.headers=Nt.headers);for(let D of Fe.shallows)if(!X.has(D))try{let{object:M}=await Je({fs:t,cache:e,gitdir:l,oid:D}),ae=new Mr(M),Te=await Promise.all(ae.headers().parent.map(Tr=>xE({fs:t,cache:e,gitdir:l,oid:Tr})));Te.length===0||Te.every(Tr=>Tr)||X.add(D)}catch(M){X.add(D)}for(let D of Fe.unshallows)X.delete(D);if(await va.write({fs:t,gitdir:l,oids:X}),S){let D=new Map([[ke,Le]]),M=new Map,ae=10,Te=ke;for(;ae--;){let vo=N.symrefs.get(Te);if(vo===void 0)break;M.set(Te,vo),Te=vo}let Bt=ge.get(Te);Bt&&D.set(Te,Bt);let{pruned:Tr}=await W.updateRemoteRefs({fs:t,gitdir:l,remote:y,refs:D,symrefs:M,tags:b,prune:E});E&&(Fe.pruned=Tr)}else{let{pruned:D}=await W.updateRemoteRefs({fs:t,gitdir:l,remote:y,refs:ge,symrefs:N.symrefs,tags:b,prune:E,pruneTags:A});E&&(Fe.pruned=D)}if(Fe.HEAD=N.symrefs.get("HEAD"),Fe.HEAD===void 0){let{oid:D}=W.resolveAgainstMap({ref:"HEAD",map:ge});for(let[M,ae]of ge.entries())if(M!=="HEAD"&&ae===D){Fe.HEAD=M;break}}let Pt=ke.startsWith("refs/tags")?"tag":"branch";if(Fe.FETCH_HEAD={oid:Le,description:`${Pt} '${da(ke)}' of ${C}`},i||n){let D=eS(Fe.progress);su(D,async M=>{if(n&&await n(M),i){let ae=M.match(/([^:]*).*\((\d+?)\/(\d+?)\)/);ae&&await i({phase:ae[1].trim(),loaded:parseInt(ae[2],10),total:parseInt(ae[3],10)})}})}let Rt=Buffer.from(await fd(Fe.packfile));if(Nt.body.error)throw Nt.body.error;let Ye=Rt.slice(-20).toString("hex"),J={defaultBranch:Fe.HEAD,fetchHead:Fe.FETCH_HEAD.oid,fetchHeadDescription:Fe.FETCH_HEAD.description};if(Fe.headers&&(J.headers=Fe.headers),E&&(J.pruned=Fe.pruned),Ye!==""&&!CN(Rt)){J.packfile=`objects/pack/pack-${Ye}.pack`;let D=O(l,J.packfile);await t.write(D,Rt);let M=Te=>Je({fs:t,cache:e,gitdir:l,oid:Te}),ae=await Nc.fromPack({pack:Rt,getExternalRefDelta:M,onProgress:i});await t.write(D.replace(/\.pack$/,".idx"),await ae.toBuffer())}return J}async function tS({fs:t,bare:e=!1,dir:r,gitdir:i=e?r:O(r,".git"),defaultBranch:n="master"}){if(await t.exists(i+"/config"))return;let s=["hooks","info","objects/info","objects/pack","refs/heads","refs/tags"];s=s.map(a=>i+"/"+a);for(let a of s)await t.mkdir(a);await t.write(i+"/config",`[core] + repositoryformatversion = 0 + filemode = false + bare = ${e} +`+(e?"":` logallrefupdates = true +`)+` symlinks = false + ignorecase = true +`),await t.write(i+"/HEAD",`ref: refs/heads/${n} +`)}async function $N({fs:t,cache:e,http:r,onProgress:i,onMessage:n,onAuth:s,onAuthSuccess:a,onAuthFailure:o,onPostCheckout:l,dir:c,gitdir:u,url:f,corsProxy:d,ref:h,remote:p,depth:g,since:v,exclude:_,relative:b,singleBranch:S,noCheckout:k,noTags:E,headers:A,nonBlocking:w,batchSize:x=100}){try{if(await tS({fs:t,gitdir:u}),await VE({fs:t,gitdir:u,remote:p,url:f,force:!1}),d){let P=await dt.get({fs:t,gitdir:u});await P.set("http.corsProxy",d),await dt.save({fs:t,gitdir:u,config:P})}let{defaultBranch:y,fetchHead:C}=await Og({fs:t,cache:e,http:r,onProgress:i,onMessage:n,onAuth:s,onAuthSuccess:a,onAuthFailure:o,gitdir:u,ref:h,remote:p,corsProxy:d,depth:g,since:v,exclude:_,relative:b,singleBranch:S,headers:A,tags:!E});if(C===null)return;h=h||y,h=h.replace("refs/heads/",""),await Mg({fs:t,cache:e,onProgress:i,onPostCheckout:l,dir:c,gitdir:u,ref:h,remote:p,noCheckout:k,nonBlocking:w,batchSize:x})}catch(y){throw await t.rmdir(u,{recursive:!0,maxRetries:10}).catch(()=>{}),y}}async function rS({fs:t,http:e,onProgress:r,onMessage:i,onAuth:n,onAuthSuccess:s,onAuthFailure:a,onPostCheckout:o,dir:l,gitdir:c=O(l,".git"),url:u,corsProxy:f=void 0,ref:d=void 0,remote:h="origin",depth:p=void 0,since:g=void 0,exclude:v=[],relative:_=!1,singleBranch:b=!1,noCheckout:S=!1,noTags:k=!1,headers:E={},cache:A={},nonBlocking:w=!1,batchSize:x=100}){try{T("fs",t),T("http",e),T("gitdir",c),S||T("dir",l),T("url",u);let y=new Q(t),C=await ee({fsp:y,dotgit:c});return await $N({fs:y,cache:A,http:e,onProgress:r,onMessage:i,onAuth:n,onAuthSuccess:s,onAuthFailure:a,onPostCheckout:o,dir:l,gitdir:C,url:u,corsProxy:f,ref:d,remote:h,depth:p,since:g,exclude:v,relative:_,singleBranch:b,noCheckout:S,noTags:k,headers:E,nonBlocking:w,batchSize:x})}catch(y){throw y.caller="git.clone",y}}async function iS({fs:t,onSign:e,dir:r,gitdir:i=O(r,".git"),message:n,author:s,committer:a,signingKey:o,amend:l=!1,dryRun:c=!1,noUpdateBranch:u=!1,ref:f,parent:d,tree:h,cache:p={}}){try{T("fs",t),l||T("message",n),o&&T("onSign",e);let g=new Q(t),v=await ee({fsp:g,dotgit:i});return await ru({fs:g,cache:p,onSign:e,gitdir:v,message:n,author:s,committer:a,signingKey:o,amend:l,dryRun:c,noUpdateBranch:u,ref:f,parent:d,tree:h})}catch(g){throw g.caller="git.commit",g}}async function nS({fs:t,dir:e,gitdir:r=O(e,".git"),fullname:i=!1,test:n=!1}){try{T("fs",t),T("gitdir",r);let s=new Q(t),a=await ee({fsp:s,dotgit:r});return await Is({fs:s,gitdir:a,fullname:i,test:n})}catch(s){throw s.caller="git.currentBranch",s}}async function FN({fs:t,gitdir:e,ref:r}){if(r=r.startsWith("refs/heads/")?r:`refs/heads/${r}`,!await W.exists({fs:t,gitdir:e,ref:r}))throw new He(r);let n=await W.expand({fs:t,gitdir:e,ref:r}),s=await Is({fs:t,gitdir:e,fullname:!0});if(n===s){let l=await W.resolve({fs:t,gitdir:e,ref:n});await W.writeRef({fs:t,gitdir:e,ref:"HEAD",value:l})}await W.deleteRef({fs:t,gitdir:e,ref:n});let a=da(r),o=await dt.get({fs:t,gitdir:e});await o.deleteSection("branch",a),await dt.save({fs:t,gitdir:e,config:o})}async function sS({fs:t,dir:e,gitdir:r=O(e,".git"),ref:i}){try{T("fs",t),T("ref",i);let n=new Q(t),s=await ee({fsp:n,dotgit:r});return await FN({fs:n,gitdir:s,ref:i})}catch(n){throw n.caller="git.deleteBranch",n}}async function aS({fs:t,dir:e,gitdir:r=O(e,".git"),ref:i}){try{T("fs",t),T("ref",i);let n=new Q(t),s=await ee({fsp:n,dotgit:r});await W.deleteRef({fs:n,gitdir:s,ref:i})}catch(n){throw n.caller="git.deleteRef",n}}async function IN({fs:t,gitdir:e,remote:r}){let i=await dt.get({fs:t,gitdir:e});await i.deleteSection("remote",r),await dt.save({fs:t,gitdir:e,config:i})}async function oS({fs:t,dir:e,gitdir:r=O(e,".git"),remote:i}){try{T("fs",t),T("remote",i);let n=new Q(t),s=await ee({fsp:n,dotgit:r});return await IN({fs:n,gitdir:s,remote:i})}catch(n){throw n.caller="git.deleteRemote",n}}async function MN({fs:t,gitdir:e,ref:r}){r=r.startsWith("refs/tags/")?r:`refs/tags/${r}`,await W.deleteRef({fs:t,gitdir:e,ref:r})}async function lS({fs:t,dir:e,gitdir:r=O(e,".git"),ref:i}){try{T("fs",t),T("ref",i);let n=new Q(t),s=await ee({fsp:n,dotgit:r});return await MN({fs:n,gitdir:s,ref:i})}catch(n){throw n.caller="git.deleteTag",n}}async function DN({fs:t,gitdir:e,oid:r}){let i=r.slice(0,2);return(await t.readdir(`${e}/objects/${i}`)).map(s=>`${i}${s}`).filter(s=>s.startsWith(r))}async function ON({fs:t,cache:e,gitdir:r,oid:i,getExternalRefDelta:n}){let s=[],a=await t.readdir(O(r,"objects/pack"));a=a.filter(o=>o.endsWith(".idx"));for(let o of a){let l=`${r}/objects/pack/${o}`,c=await Ig({fs:t,cache:e,filename:l,getExternalRefDelta:n});if(c.error)throw new ue(c.error);for(let u of c.offsets.keys())u.startsWith(i)&&s.push(u)}return s}async function LN({fs:t,cache:e,gitdir:r,oid:i}){let n=o=>Je({fs:t,cache:e,gitdir:r,oid:o}),s=await DN({fs:t,gitdir:r,oid:i}),a=await ON({fs:t,cache:e,gitdir:r,oid:i,getExternalRefDelta:n});for(let o of a)s.indexOf(o)===-1&&s.push(o);if(s.length===1)return s[0];throw s.length>1?new Bc("oids",i,s):new He(`an object matching "${i}"`)}async function cS({fs:t,dir:e,gitdir:r=O(e,".git"),oid:i,cache:n={}}){try{T("fs",t),T("gitdir",r),T("oid",i);let s=new Q(t),a=await ee({fsp:s,dotgit:r});return await LN({fs:s,cache:n,gitdir:a,oid:i})}catch(s){throw s.caller="git.expandOid",s}}async function uS({fs:t,dir:e,gitdir:r=O(e,".git"),ref:i}){try{T("fs",t),T("gitdir",r),T("ref",i);let n=new Q(t),s=await ee({fsp:n,dotgit:r});return await W.expand({fs:n,gitdir:s,ref:i})}catch(n){throw n.caller="git.expandRef",n}}async function Lg({fs:t,cache:e,gitdir:r,oids:i}){let n={},s=i.length,a=i.map((o,l)=>({index:l,oid:o}));for(;a.length;){let o=new Set;for(let{oid:c,index:u}of a)n[c]||(n[c]=new Set),n[c].add(u),n[c].size===s&&o.add(c);if(o.size>0)return[...o];let l=new Map;for(let{oid:c,index:u}of a)try{let{object:f}=await Je({fs:t,cache:e,gitdir:r,oid:c}),d=Mr.from(f),{parent:h}=d.parseHeaders();for(let p of h)(!n[p]||!n[p].has(u))&&l.set(p+":"+u,{oid:p,index:u})}catch(f){}a=Array.from(l.values())}return[]}async function fS({fs:t,cache:e,dir:r,gitdir:i,ours:n,theirs:s,fastForward:a=!0,fastForwardOnly:o=!1,dryRun:l=!1,noUpdateBranch:c=!1,abortOnConflict:u=!0,message:f,author:d,committer:h,signingKey:p,onSign:g,mergeDriver:v,allowUnrelatedHistories:_=!1}){n===void 0&&(n=await Is({fs:t,gitdir:i,fullname:!0})),n=await W.expand({fs:t,gitdir:i,ref:n}),s=await W.expand({fs:t,gitdir:i,ref:s});let b=await W.resolve({fs:t,gitdir:i,ref:n}),S=await W.resolve({fs:t,gitdir:i,ref:s}),k=await Lg({fs:t,cache:e,gitdir:i,oids:[b,S]});if(k.length!==1)if(k.length===0&&_)k.push("4b825dc642cb6eb9a060e54bf8d69288fbee4904");else throw new Yo;let E=k[0];if(E===S)return{oid:b,alreadyMerged:!0};if(a&&E===b)return!l&&!c&&await W.writeRef({fs:t,gitdir:i,ref:n,value:S}),{oid:S,fastForward:!0};{if(o)throw new zc;let A=await ft.acquire({fs:t,gitdir:i,cache:e,allowUnmerged:!1},async x=>XE({fs:t,cache:e,dir:r,gitdir:i,index:x,ourOid:b,theirOid:S,baseOid:E,ourName:da(n),baseName:"base",theirName:da(s),dryRun:l,abortOnConflict:u,mergeDriver:v}));if(A instanceof pa)throw A;return f||(f=`Merge branch '${da(s)}' into ${da(n)}`),{oid:await ru({fs:t,cache:e,gitdir:i,message:f,ref:n,tree:A,parent:[b,S],author:d,committer:h,signingKey:p,onSign:g,dryRun:l,noUpdateBranch:c}),tree:A,mergeCommit:!0}}}async function dS({fs:t,cache:e,http:r,onProgress:i,onMessage:n,onAuth:s,onAuthSuccess:a,onAuthFailure:o,dir:l,gitdir:c,ref:u,url:f,remote:d,remoteRef:h,prune:p,pruneTags:g,fastForward:v,fastForwardOnly:_,corsProxy:b,singleBranch:S,headers:k,author:E,committer:A,signingKey:w}){try{if(!u){let C=await Is({fs:t,gitdir:c});if(!C)throw new Fr("ref");u=C}let{fetchHead:x,fetchHeadDescription:y}=await Og({fs:t,cache:e,http:r,onProgress:i,onMessage:n,onAuth:s,onAuthSuccess:a,onAuthFailure:o,gitdir:c,corsProxy:b,ref:u,url:f,remote:d,remoteRef:h,singleBranch:S,headers:k,prune:p,pruneTags:g});await fS({fs:t,cache:e,gitdir:c,ours:u,theirs:x,fastForward:v,fastForwardOnly:_,message:`Merge ${y}`,author:E,committer:A,signingKey:w,dryRun:!1,noUpdateBranch:!1}),await Mg({fs:t,cache:e,onProgress:i,dir:l,gitdir:c,ref:u,remote:d,noCheckout:!1})}catch(x){throw x.caller="git.pull",x}}async function hS({fs:t,http:e,onProgress:r,onMessage:i,onAuth:n,onAuthSuccess:s,onAuthFailure:a,dir:o,gitdir:l=O(o,".git"),ref:c,url:u,remote:f,remoteRef:d,corsProxy:h,singleBranch:p,headers:g={},cache:v={}}){try{T("fs",t),T("http",e),T("gitdir",l);let _={name:"",email:"",timestamp:Date.now(),timezoneOffset:0},b=new Q(t),S=await ee({fsp:b,dotgit:l});return await dS({fs:b,cache:v,http:e,onProgress:r,onMessage:i,onAuth:n,onAuthSuccess:s,onAuthFailure:a,dir:o,gitdir:S,ref:c,url:u,remote:f,remoteRef:d,fastForwardOnly:!0,corsProxy:h,singleBranch:p,headers:g,author:_,committer:_})}catch(_){throw _.caller="git.fastForward",_}}async function pS({fs:t,http:e,onProgress:r,onMessage:i,onAuth:n,onAuthSuccess:s,onAuthFailure:a,dir:o,gitdir:l=O(o,".git"),ref:c,remote:u,remoteRef:f,url:d,corsProxy:h,depth:p=null,since:g=null,exclude:v=[],relative:_=!1,tags:b=!1,singleBranch:S=!1,headers:k={},prune:E=!1,pruneTags:A=!1,cache:w={}}){try{T("fs",t),T("http",e),T("gitdir",l);let x=new Q(t),y=await ee({fsp:x,dotgit:l});return await Og({fs:x,cache:w,http:e,onProgress:r,onMessage:i,onAuth:n,onAuthSuccess:s,onAuthFailure:a,gitdir:y,ref:c,remote:u,remoteRef:f,url:d,corsProxy:h,depth:p,since:g,exclude:v,relative:_,tags:b,singleBranch:S,headers:k,prune:E,pruneTags:A})}catch(x){throw x.caller="git.fetch",x}}async function mS({fs:t,dir:e,gitdir:r=O(e,".git"),oids:i,cache:n={}}){try{T("fs",t),T("gitdir",r),T("oids",i);let s=new Q(t),a=await ee({fsp:s,dotgit:r});return await Lg({fs:s,cache:n,gitdir:a,oids:i})}catch(s){throw s.caller="git.findMergeBase",s}}async function gS({fs:t,filepath:e}){if(await t.exists(O(e,".git")))return e;{let r=ha(e);if(r===e)throw new He(`git root for ${e}`);return gS({fs:t,filepath:r})}}async function vS({fs:t,filepath:e}){try{return T("fs",t),T("filepath",e),await gS({fs:new Q(t),filepath:e})}catch(r){throw r.caller="git.findRoot",r}}async function wS({fs:t,dir:e,gitdir:r=O(e,".git"),path:i}){try{T("fs",t),T("gitdir",r),T("path",i);let n=new Q(t),s=await ee({fsp:n,dotgit:r});return await eu({fs:n,gitdir:s,path:i})}catch(n){throw n.caller="git.getConfig",n}}async function NN({fs:t,gitdir:e,path:r}){return(await dt.get({fs:t,gitdir:e})).getall(r)}async function _S({fs:t,dir:e,gitdir:r=O(e,".git"),path:i}){try{T("fs",t),T("gitdir",r),T("path",i);let n=new Q(t),s=await ee({fsp:n,dotgit:r});return await NN({fs:n,gitdir:s,path:i})}catch(n){throw n.caller="git.getConfigAll",n}}async function bS({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:i,corsProxy:n,url:s,headers:a={},forPush:o=!1}){try{T("http",t),T("url",s);let c=await el.getRemoteHelperFor({url:s}).discover({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:i,corsProxy:n,service:o?"git-receive-pack":"git-upload-pack",url:s,headers:a,protocolVersion:1}),u={capabilities:[...c.capabilities]};for(let[f,d]of c.refs){let h=f.split("/"),p=h.pop(),g=u;for(let v of h)g[v]=g[v]||{},g=g[v];g[p]=d}for(let[f,d]of c.symrefs){let h=f.split("/"),p=h.pop(),g=u;for(let v of h)g[v]=g[v]||{},g=g[v];g[p]=d}return u}catch(l){throw l.caller="git.getRemoteInfo",l}}function yS(t,e,r,i){let n=[];for(let[s,a]of t.refs){if(e&&!s.startsWith(e))continue;if(s.endsWith("^{}")){if(i){let l=s.replace("^{}",""),c=n[n.length-1],u=c.ref===l?c:n.find(f=>f.ref===l);if(u===void 0)throw new Error("I did not expect this to happen");u.peeled=a}continue}let o={ref:s,oid:a};r&&t.symrefs.has(s)&&(o.target=t.symrefs.get(s)),n.push(o)}return n}async function xS({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:i,corsProxy:n,url:s,headers:a={},forPush:o=!1,protocolVersion:l=2}){try{T("http",t),T("url",s);let u=await el.getRemoteHelperFor({url:s}).discover({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:i,corsProxy:n,service:o?"git-receive-pack":"git-upload-pack",url:s,headers:a,protocolVersion:l});if(u.protocolVersion===2)return{protocolVersion:u.protocolVersion,capabilities:u.capabilities2};let f={};for(let d of u.capabilities){let[h,p]=d.split("=");p?f[h]=p:f[h]=!0}return{protocolVersion:1,capabilities:f,refs:yS(u,void 0,!0,!0)}}catch(c){throw c.caller="git.getRemoteInfo2",c}}async function BN({type:t,object:e,format:r="content",oid:i=void 0}){return r!=="deflated"&&(r!=="wrapped"&&(e=Cs.wrap({type:t,object:e})),i=await wn(e)),{oid:i,object:e}}async function ES({object:t}){try{T("object",t),typeof t=="string"?t=Buffer.from(t,"utf8"):t instanceof Uint8Array||(t=new Uint8Array(t));let e="blob",{oid:r,object:i}=await BN({type:e,format:"content",object:t});return{oid:r,type:e,object:i,format:"wrapped"}}catch(e){throw e.caller="git.hashBlob",e}}async function HN({fs:t,cache:e,onProgress:r,dir:i,gitdir:n,filepath:s}){try{s=O(i,s);let a=await t.read(s),o=c=>Je({fs:t,cache:e,gitdir:n,oid:c}),l=await Nc.fromPack({pack:a,getExternalRefDelta:o,onProgress:r});return await t.write(s.replace(/\.pack$/,".idx"),await l.toBuffer()),{oids:[...l.hashes]}}catch(a){throw a.caller="git.indexPack",a}}async function SS({fs:t,onProgress:e,dir:r,gitdir:i=O(r,".git"),filepath:n,cache:s={}}){try{T("fs",t),T("dir",r),T("gitdir",r),T("filepath",n);let a=new Q(t),o=await ee({fsp:a,dotgit:i});return await HN({fs:a,cache:s,onProgress:e,dir:r,gitdir:o,filepath:n})}catch(a){throw a.caller="git.indexPack",a}}async function kS({fs:t,bare:e=!1,dir:r,gitdir:i=e?r:O(r,".git"),defaultBranch:n="master"}){try{T("fs",t),T("gitdir",i),e||T("dir",r);let s=new Q(t),a=await ee({fsp:s,dotgit:i});return await tS({fs:s,bare:e,dir:r,gitdir:a,defaultBranch:n})}catch(s){throw s.caller="git.init",s}}async function AS({fs:t,cache:e,gitdir:r,oid:i,ancestor:n,depth:s}){let a=await va.read({fs:t,gitdir:r});if(!i)throw new Fr("oid");if(!n)throw new Fr("ancestor");if(i===n)return!1;let o=[i],l=new Set,c=0;for(;o.length;){if(c++===s)throw new qc(s);let u=o.shift(),{type:f,object:d}=await Je({fs:t,cache:e,gitdir:r,oid:u});if(f!=="commit")throw new yr(u,f,"commit");let h=Mr.from(d).parse();for(let p of h.parent)if(p===n)return!0;if(!a.has(u))for(let p of h.parent)l.has(p)||(o.push(p),l.add(p))}return!1}async function CS({fs:t,dir:e,gitdir:r=O(e,".git"),oid:i,ancestor:n,depth:s=-1,cache:a={}}){try{T("fs",t),T("gitdir",r),T("oid",i),T("ancestor",n);let o=new Q(t),l=await ee({fsp:o,dotgit:r});return await AS({fs:o,cache:a,gitdir:l,oid:i,ancestor:n,depth:s})}catch(o){throw o.caller="git.isDescendent",o}}async function TS({fs:t,dir:e,gitdir:r=O(e,".git"),filepath:i}){try{T("fs",t),T("dir",e),T("gitdir",r),T("filepath",i);let n=new Q(t),s=await ee({fsp:n,dotgit:r});return Rs.isIgnored({fs:n,dir:e,gitdir:s,filepath:i})}catch(n){throw n.caller="git.isIgnored",n}}async function PS({fs:t,dir:e,gitdir:r=O(e,".git"),remote:i}){try{T("fs",t),T("gitdir",r);let n=new Q(t),s=await ee({fsp:n,dotgit:r});return W.listBranches({fs:n,gitdir:s,remote:i})}catch(n){throw n.caller="git.listBranches",n}}async function UN({fs:t,gitdir:e,ref:r,cache:i}){if(r){let n=await W.resolve({gitdir:e,fs:t,ref:r}),s=[];return await RS({fs:t,cache:i,gitdir:e,oid:n,filenames:s,prefix:""}),s}else return ft.acquire({fs:t,gitdir:e,cache:i},async function(n){return n.entries.map(s=>s.path)})}async function RS({fs:t,cache:e,gitdir:r,oid:i,filenames:n,prefix:s}){let{tree:a}=await rl({fs:t,cache:e,gitdir:r,oid:i});for(let o of a)o.type==="tree"?await RS({fs:t,cache:e,gitdir:r,oid:o.oid,filenames:n,prefix:O(s,o.path)}):n.push(O(s,o.path))}async function $S({fs:t,dir:e,gitdir:r=O(e,".git"),ref:i,cache:n={}}){try{T("fs",t),T("gitdir",r);let s=new Q(t),a=await ee({fsp:s,dotgit:r});return await UN({fs:s,cache:n,gitdir:a,ref:i})}catch(s){throw s.caller="git.listFiles",s}}async function GN({fs:t,cache:e,gitdir:r,ref:i}){let n;try{n=await W.resolve({gitdir:r,fs:t,ref:i})}catch(o){if(o instanceof He)return[]}return(await rl({fs:t,cache:e,gitdir:r,oid:n})).tree.map(o=>({target:o.path,note:o.oid}))}async function FS({fs:t,dir:e,gitdir:r=O(e,".git"),ref:i="refs/notes/commits",cache:n={}}){try{T("fs",t),T("gitdir",r),T("ref",i);let s=new Q(t),a=await ee({fsp:s,dotgit:r});return await GN({fs:s,cache:n,gitdir:a,ref:i})}catch(s){throw s.caller="git.listNotes",s}}async function IS({fs:t,dir:e,gitdir:r=O(e,".git"),filepath:i}){try{T("fs",t),T("gitdir",r);let n=new Q(t),s=await ee({fsp:n,dotgit:r});return W.listRefs({fs:n,gitdir:s,filepath:i})}catch(n){throw n.caller="git.listRefs",n}}async function jN({fs:t,gitdir:e}){let r=await dt.get({fs:t,gitdir:e}),i=await r.getSubsections("remote");return Promise.all(i.map(async s=>{let a=await r.get(`remote.${s}.url`);return{remote:s,url:a}}))}async function MS({fs:t,dir:e,gitdir:r=O(e,".git")}){try{T("fs",t),T("gitdir",r);let i=new Q(t),n=await ee({fsp:i,dotgit:r});return await jN({fs:i,gitdir:n})}catch(i){throw i.caller="git.listRemotes",i}}async function VN(t){let e=ot.streamReader(t),r=[],i;for(;i=await e(),i!==!0;){if(i===null)continue;i=i.toString("utf8").replace(/\n$/,"");let[n,s,...a]=i.split(" "),o={ref:s,oid:n};for(let l of a){let[c,u]=l.split(":");c==="symref-target"?o.target=u:c==="peeled"&&(o.peeled=u)}r.push(o)}return r}async function zN({prefix:t,symrefs:e,peelTags:r}){let i=[];return i.push(ot.encode(`command=ls-refs +`)),i.push(ot.encode(`agent=${gd.agent} +`)),(r||e||t)&&i.push(ot.delim()),r&&i.push(ot.encode("peel")),e&&i.push(ot.encode("symrefs")),t&&i.push(ot.encode(`ref-prefix ${t}`)),i.push(ot.flush()),i}async function DS({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:i,corsProxy:n,url:s,headers:a={},forPush:o=!1,protocolVersion:l=2,prefix:c,symrefs:u,peelTags:f}){try{T("http",t),T("url",s);let d=await Jo.discover({http:t,onAuth:e,onAuthSuccess:r,onAuthFailure:i,corsProxy:n,service:o?"git-receive-pack":"git-upload-pack",url:s,headers:a,protocolVersion:l});if(d.protocolVersion===1)return yS(d,c,u,f);let h=await zN({prefix:c,symrefs:u,peelTags:f}),p=await Jo.connect({http:t,auth:d.auth,headers:a,corsProxy:n,service:o?"git-receive-pack":"git-upload-pack",url:s,body:h});return VN(p.body)}catch(d){throw d.caller="git.listServerRefs",d}}async function OS({fs:t,dir:e,gitdir:r=O(e,".git")}){try{T("fs",t),T("gitdir",r);let i=new Q(t),n=await ee({fsp:i,dotgit:r});return W.listTags({fs:i,gitdir:n})}catch(i){throw i.caller="git.listTags",i}}function WN(t,e){return t.committer.timestamp-e.committer.timestamp}var qN="e69de29bb2d1d6434b8b29ae775ad8c2e48c5391";async function EE({fs:t,cache:e,gitdir:r,oid:i,fileId:n}){if(n===qN)return;let s=i,a,o=await Ko({fs:t,cache:e,gitdir:r,oid:i}),l=o.tree;return n===o.oid?a=o.path:(a=await LS({fs:t,cache:e,gitdir:r,tree:l,fileId:n,oid:s}),Array.isArray(a)&&(a.length===0?a=void 0:a.length===1&&(a=a[0]))),a}async function LS({fs:t,cache:e,gitdir:r,tree:i,fileId:n,oid:s,filepaths:a=[],parentPath:o=""}){let l=i.entries().map(function(c){let u;return c.oid===n?(u=O(o,c.path),a.push(u)):c.type==="tree"&&(u=Je({fs:t,cache:e,gitdir:r,oid:c.oid}).then(function({object:f}){return LS({fs:t,cache:e,gitdir:r,tree:Ir.from(f),fileId:n,oid:s,filepaths:a,parentPath:O(o,c.path)})})),u});return await Promise.all(l),a}async function YN({fs:t,cache:e,gitdir:r,filepath:i,ref:n,depth:s,since:a,force:o,follow:l}){let c=typeof a=="undefined"?void 0:Math.floor(a.valueOf()/1e3),u=[],f=await va.read({fs:t,gitdir:r}),d=await W.resolve({fs:t,gitdir:r,ref:n}),h=[await vn({fs:t,cache:e,gitdir:r,oid:d})],p,g,v;function _(b){v&&i&&u.push(b)}for(;h.length>0;){let b=h.pop();if(c!==void 0&&b.commit.committer.timestamp<=c)break;if(i){let S;try{S=await iu({fs:t,cache:e,gitdir:r,oid:b.commit.tree,filepath:i}),g&&p!==S&&u.push(g),p=S,g=b,v=!0}catch(k){if(k instanceof He){let E=l&&p;if(E&&(E=await EE({fs:t,cache:e,gitdir:r,oid:b.commit.tree,fileId:p}),E))if(Array.isArray(E)){if(g){let A=await EE({fs:t,cache:e,gitdir:r,oid:g.commit.tree,fileId:p});if(Array.isArray(A))if(E=E.filter(w=>A.indexOf(w)===-1),E.length===1)E=E[0],i=E,g&&u.push(g);else{E=!1,g&&u.push(g);break}}}else i=E,g&&u.push(g);if(!E){if(v&&p&&(u.push(g),!o))break;if(!o&&!l)throw k}g=b,v=!1}else throw k}}else u.push(b);if(s!==void 0&&u.length===s){_(b);break}if(!f.has(b.oid))for(let S of b.commit.parent){let k=await vn({fs:t,cache:e,gitdir:r,oid:S});h.map(E=>E.oid).includes(k.oid)||h.push(k)}h.length===0&&_(b),h.sort((S,k)=>WN(S.commit,k.commit))}return u}async function NS({fs:t,dir:e,gitdir:r=O(e,".git"),filepath:i,ref:n="HEAD",depth:s,since:a,force:o,follow:l,cache:c={}}){try{T("fs",t),T("gitdir",r),T("ref",n);let u=new Q(t),f=await ee({fsp:u,dotgit:r});return await YN({fs:u,cache:c,gitdir:f,filepath:i,ref:n,depth:s,since:a,force:o,follow:l})}catch(u){throw u.caller="git.log",u}}async function BS({fs:t,onSign:e,dir:r,gitdir:i=O(r,".git"),ours:n,theirs:s,fastForward:a=!0,fastForwardOnly:o=!1,dryRun:l=!1,noUpdateBranch:c=!1,abortOnConflict:u=!0,message:f,author:d,committer:h,signingKey:p,cache:g={},mergeDriver:v,allowUnrelatedHistories:_=!1}){try{T("fs",t),p&&T("onSign",e);let b=new Q(t),S=await ee({fsp:b,dotgit:i}),k=await $s({fs:b,gitdir:S,author:d});if(!k&&(!o||!a))throw new Zt("author");let E=await ga({fs:b,gitdir:S,author:k,committer:h});if(!E&&(!o||!a))throw new Zt("committer");return await fS({fs:b,cache:g,dir:r,gitdir:S,ours:n,theirs:s,fastForward:a,fastForwardOnly:o,dryRun:l,noUpdateBranch:c,abortOnConflict:u,message:f,author:k,committer:E,signingKey:p,onSign:e,mergeDriver:v,allowUnrelatedHistories:_})}catch(b){throw b.caller="git.merge",b}}var XN={commit:16,tree:32,blob:48,tag:64,ofs_delta:96,ref_delta:112};async function HS({fs:t,cache:e,dir:r,gitdir:i=O(r,".git"),oids:n}){let s=new SE,a=[];function o(u,f){let d=Buffer.from(u,f);a.push(d),s.update(d)}async function l({stype:u,object:f}){let d=XN[u],h=f.length,p=h>15?128:0,g=h&15;h=h>>>4;let v=(p|d|g).toString(16);for(o(v,"hex");p;)p=h>127?128:0,v=p|h&127,o($g(2,v),"hex"),h=h>>>7;o(Buffer.from(await OE(f)))}o("PACK"),o("00000002","hex"),o($g(8,n.length),"hex");for(let u of n){let{type:f,object:d}=await Je({fs:t,cache:e,gitdir:i,oid:u});await l({write:o,object:d,stype:f})}let c=s.digest();return a.push(c),a}async function ZN({fs:t,cache:e,gitdir:r,oids:i,write:n}){let s=await HS({fs:t,cache:e,gitdir:r,oids:i}),a=Buffer.from(await fd(s)),l=`pack-${a.slice(-20).toString("hex")}.pack`;return n?(await t.write(O(r,`objects/pack/${l}`),a),{filename:l}):{filename:l,packfile:new Uint8Array(a)}}async function US({fs:t,dir:e,gitdir:r=O(e,".git"),oids:i,write:n=!1,cache:s={}}){try{T("fs",t),T("gitdir",r),T("oids",i);let a=new Q(t),o=await ee({fsp:a,dotgit:r});return await ZN({fs:a,cache:s,gitdir:o,oids:i,write:n})}catch(a){throw a.caller="git.packObjects",a}}async function GS({fs:t,http:e,onProgress:r,onMessage:i,onAuth:n,onAuthSuccess:s,onAuthFailure:a,dir:o,gitdir:l=O(o,".git"),ref:c,url:u,remote:f,remoteRef:d,prune:h=!1,pruneTags:p=!1,fastForward:g=!0,fastForwardOnly:v=!1,corsProxy:_,singleBranch:b,headers:S={},author:k,committer:E,signingKey:A,cache:w={}}){try{T("fs",t),T("gitdir",l);let x=new Q(t),y=await ee({fsp:x,dotgit:l}),C=await $s({fs:x,gitdir:y,author:k});if(!C)throw new Zt("author");let P=await ga({fs:x,gitdir:y,author:C,committer:E});if(!P)throw new Zt("committer");return await dS({fs:x,cache:w,http:e,onProgress:r,onMessage:i,onAuth:n,onAuthSuccess:s,onAuthFailure:a,dir:o,gitdir:y,ref:c,url:u,remote:f,remoteRef:d,fastForward:g,fastForwardOnly:v,corsProxy:_,singleBranch:b,headers:S,author:C,committer:P,signingKey:A,prune:h,pruneTags:p})}catch(x){throw x.caller="git.pull",x}}async function KN({fs:t,cache:e,dir:r,gitdir:i=O(r,".git"),start:n,finish:s}){let a=await va.read({fs:t,gitdir:i}),o=new Set,l=new Set;for(let f of n)o.add(await W.resolve({fs:t,gitdir:i,ref:f}));for(let f of s)try{let d=await W.resolve({fs:t,gitdir:i,ref:f});l.add(d)}catch(d){}let c=new Set;async function u(f){c.add(f);let{type:d,object:h}=await Je({fs:t,cache:e,gitdir:i,oid:f});if(d==="tag"){let g=Kr.from(h).headers().object;return u(g)}if(d!=="commit")throw new yr(f,d,"commit");if(!a.has(f)){let g=Mr.from(h).headers().parent;for(f of g)!l.has(f)&&!c.has(f)&&await u(f)}}for(let f of o)await u(f);return c}async function _g({fs:t,cache:e,dir:r,gitdir:i=O(r,".git"),oids:n}){let s=new Set;async function a(o){if(s.has(o))return;s.add(o);let{type:l,object:c}=await Je({fs:t,cache:e,gitdir:i,oid:o});if(l==="tag"){let f=Kr.from(c).headers().object;await a(f)}else if(l==="commit"){let f=Mr.from(c).headers().tree;await a(f)}else if(l==="tree"){let u=Ir.from(c);for(let f of u)f.type==="blob"&&s.add(f.oid),f.type==="tree"&&await a(f.oid)}}for(let o of n)await a(o);return s}async function QN(t){let e={},r="",i=ot.streamReader(t),n=await i();for(;n!==!0;)n!==null&&(r+=n.toString("utf8")+` +`),n=await i();let s=r.toString("utf8").split(` +`);if(n=s.shift(),!n.startsWith("unpack "))throw new ma('unpack ok" or "unpack [error message]',n);e.ok=n==="unpack ok",e.ok||(e.error=n.slice(7)),e.refs={};for(let a of s){if(a.trim()==="")continue;let o=a.slice(0,2),l=a.slice(3),c=l.indexOf(" ");c===-1&&(c=l.length);let u=l.slice(0,c),f=l.slice(c+1);e.refs[u]={ok:o==="ok",error:f}}return e}async function JN({capabilities:t=[],triplets:e=[]}){let r=[],i=`\0 ${t.join(" ")}`;for(let n of e)r.push(ot.encode(`${n.oldoid} ${n.oid} ${n.fullRef}${i} +`)),i="";return r.push(ot.flush()),r}async function eB({fs:t,cache:e,http:r,onProgress:i,onMessage:n,onAuth:s,onAuthSuccess:a,onAuthFailure:o,onPrePush:l,gitdir:c,ref:u,remoteRef:f,remote:d,url:h,force:p=!1,delete:g=!1,corsProxy:v,headers:_={}}){let b=u||await Is({fs:t,gitdir:c});if(typeof b=="undefined")throw new Fr("ref");let S=await dt.get({fs:t,gitdir:c});d=d||await S.get(`branch.${b}.pushRemote`)||await S.get("remote.pushDefault")||await S.get(`branch.${b}.remote`)||"origin";let k=h||await S.get(`remote.${d}.pushurl`)||await S.get(`remote.${d}.url`);if(typeof k=="undefined")throw new Fr("remote OR url");let E=f||await S.get(`branch.${b}.merge`);if(typeof k=="undefined")throw new Fr("remoteRef");v===void 0&&(v=await S.get("http.corsProxy"));let A=await W.expand({fs:t,gitdir:c,ref:b}),w=g?"0000000000000000000000000000000000000000":await W.resolve({fs:t,gitdir:c,ref:A}),x=el.getRemoteHelperFor({url:k}),y=await x.discover({http:r,onAuth:s,onAuthSuccess:a,onAuthFailure:o,corsProxy:v,service:"git-receive-pack",url:k,headers:_,protocolVersion:1}),C=y.auth,P;if(!E)P=A;else try{P=await W.expandAgainstMap({ref:E,map:y.refs})}catch(X){if(X instanceof He)P=E.startsWith("refs/")?E:`refs/heads/${E}`;else throw X}let L=y.refs.get(P)||"0000000000000000000000000000000000000000";if(l&&!await l({remote:d,url:k,localRef:{ref:g?"(delete)":A,oid:w},remoteRef:{ref:P,oid:L}}))throw new Zo;let N=!y.capabilities.has("no-thin"),B=new Set;if(!g){let X=[...y.refs.values()],V=new Set;if(L!=="0000000000000000000000000000000000000000"){let Ne=await Lg({fs:t,cache:e,gitdir:c,oids:[w,L]});for(let gr of Ne)X.push(gr);N&&(V=await _g({fs:t,cache:e,gitdir:c,oids:Ne}))}if(!X.includes(w)){let Ne=await KN({fs:t,cache:e,gitdir:c,start:[w],finish:X});B=await _g({fs:t,cache:e,gitdir:c,oids:Ne})}if(N){try{let Ne=await W.resolve({fs:t,gitdir:c,ref:`refs/remotes/${d}/HEAD`,depth:2}),{oid:gr}=await W.resolveAgainstMap({ref:Ne.replace(`refs/remotes/${d}/`,""),fullref:Ne,map:y.refs}),Nt=[gr];for(let Fe of await _g({fs:t,cache:e,gitdir:c,oids:Nt}))V.add(Fe)}catch(Ne){}for(let Ne of V)B.delete(Ne)}if(w===L&&(p=!0),!p){if(A.startsWith("refs/tags")&&L!=="0000000000000000000000000000000000000000")throw new Xo("tag-exists");if(w!=="0000000000000000000000000000000000000000"&&L!=="0000000000000000000000000000000000000000"&&!await AS({fs:t,cache:e,gitdir:c,oid:w,ancestor:L,depth:-1}))throw new Xo("not-fast-forward")}}let ge=JE([...y.capabilities],["report-status","side-band-64k",`agent=${gd.agent}`]),Le=await JN({capabilities:ge,triplets:[{oldoid:L,oid:w,fullRef:P}]}),ke=g?[]:await HS({fs:t,cache:e,gitdir:c,oids:[...B]}),ne=await x.connect({http:r,onProgress:i,corsProxy:v,service:"git-receive-pack",url:k,auth:C,headers:_,body:[...Le,...ke]}),{packfile:Ee,progress:_e}=await dd.demux(ne.body);if(n){let X=eS(_e);su(X,async V=>{await n(V)})}let z=await QN(Ee);if(ne.headers&&(z.headers=ne.headers),d&&z.ok&&z.refs[P].ok&&!A.startsWith("refs/tags")){let X=`refs/remotes/${d}/${P.replace("refs/heads","")}`;g?await W.deleteRef({fs:t,gitdir:c,ref:X}):await W.writeRef({fs:t,gitdir:c,ref:X,value:w})}if(z.ok&&Object.values(z.refs).every(X=>X.ok))return z;{let X=Object.entries(z.refs).filter(([V,Ne])=>!Ne.ok).map(([V,Ne])=>` + - ${V}: ${Ne.error}`).join("");throw new Wc(X,z)}}async function jS({fs:t,http:e,onProgress:r,onMessage:i,onAuth:n,onAuthSuccess:s,onAuthFailure:a,onPrePush:o,dir:l,gitdir:c=O(l,".git"),ref:u,remoteRef:f,remote:d="origin",url:h,force:p=!1,delete:g=!1,corsProxy:v,headers:_={},cache:b={}}){try{T("fs",t),T("http",e),T("gitdir",c);let S=new Q(t),k=await ee({fsp:S,dotgit:c});return await eB({fs:S,cache:b,http:e,onProgress:r,onMessage:i,onAuth:n,onAuthSuccess:s,onAuthFailure:a,onPrePush:o,gitdir:k,ref:u,remoteRef:f,remote:d,url:h,force:p,delete:g,corsProxy:v,headers:_})}catch(S){throw S.caller="git.push",S}}async function VS({fs:t,cache:e,gitdir:r,oid:i}){let{type:n,object:s}=await Je({fs:t,cache:e,gitdir:r,oid:i});if(n==="tag")return i=Kr.from(s).parse().object,VS({fs:t,cache:e,gitdir:r,oid:i});if(n!=="blob")throw new yr(i,n,"blob");return{oid:i,blob:new Uint8Array(s)}}async function zS({fs:t,cache:e,gitdir:r,oid:i,filepath:n=void 0}){return n!==void 0&&(i=await iu({fs:t,cache:e,gitdir:r,oid:i,filepath:n})),await VS({fs:t,cache:e,gitdir:r,oid:i})}async function WS({fs:t,dir:e,gitdir:r=O(e,".git"),oid:i,filepath:n,cache:s={}}){try{T("fs",t),T("gitdir",r),T("oid",i);let a=new Q(t),o=await ee({fsp:a,dotgit:r});return await zS({fs:a,cache:s,gitdir:o,oid:i,filepath:n})}catch(a){throw a.caller="git.readBlob",a}}async function Ng({fs:t,dir:e,gitdir:r=O(e,".git"),oid:i,cache:n={}}){try{T("fs",t),T("gitdir",r),T("oid",i);let s=new Q(t),a=await ee({fsp:s,dotgit:r});return await vn({fs:s,cache:n,gitdir:a,oid:i})}catch(s){throw s.caller="git.readCommit",s}}async function tB({fs:t,cache:e,gitdir:r,ref:i="refs/notes/commits",oid:n}){let s=await W.resolve({gitdir:r,fs:t,ref:i}),{blob:a}=await zS({fs:t,cache:e,gitdir:r,oid:s,filepath:n});return a}async function qS({fs:t,dir:e,gitdir:r=O(e,".git"),ref:i="refs/notes/commits",oid:n,cache:s={}}){try{T("fs",t),T("gitdir",r),T("ref",i),T("oid",n);let a=new Q(t),o=await ee({fsp:a,dotgit:r});return await tB({fs:a,cache:s,gitdir:o,ref:i,oid:n})}catch(a){throw a.caller="git.readNote",a}}async function YS({fs:t,dir:e,gitdir:r=O(e,".git"),oid:i,format:n="parsed",filepath:s=void 0,encoding:a=void 0,cache:o={}}){try{T("fs",t),T("gitdir",r),T("oid",i);let l=new Q(t),c=await ee({fsp:l,dotgit:r});s!==void 0&&(i=await iu({fs:l,cache:o,gitdir:c,oid:i,filepath:s}));let f=await Je({fs:l,cache:o,gitdir:c,oid:i,format:n==="parsed"?"content":n});if(f.oid=i,n==="parsed")switch(f.format="parsed",f.type){case"commit":f.object=Mr.from(f.object).parse();break;case"tree":f.object=Ir.from(f.object).entries();break;case"blob":a?f.object=f.object.toString(a):(f.object=new Uint8Array(f.object),f.format="content");break;case"tag":f.object=Kr.from(f.object).parse();break;default:throw new yr(f.oid,f.type,"blob|commit|tag|tree")}else(f.format==="deflated"||f.format==="wrapped")&&(f.type=f.format);return f}catch(l){throw l.caller="git.readObject",l}}async function rB({fs:t,cache:e,gitdir:r,oid:i}){let{type:n,object:s}=await Je({fs:t,cache:e,gitdir:r,oid:i,format:"content"});if(n!=="tag")throw new yr(i,n,"tag");let a=Kr.from(s);return{oid:i,tag:a.parse(),payload:a.payload()}}async function XS({fs:t,dir:e,gitdir:r=O(e,".git"),oid:i,cache:n={}}){try{T("fs",t),T("gitdir",r),T("oid",i);let s=new Q(t),a=await ee({fsp:s,dotgit:r});return await rB({fs:s,cache:n,gitdir:a,oid:i})}catch(s){throw s.caller="git.readTag",s}}async function ZS({fs:t,dir:e,gitdir:r=O(e,".git"),oid:i,filepath:n=void 0,cache:s={}}){try{T("fs",t),T("gitdir",r),T("oid",i);let a=new Q(t),o=await ee({fsp:a,dotgit:r});return await rl({fs:a,cache:s,gitdir:o,oid:i,filepath:n})}catch(a){throw a.caller="git.readTree",a}}async function KS({fs:t,dir:e,gitdir:r=O(e,".git"),filepath:i,cache:n={}}){try{T("fs",t),T("gitdir",r),T("filepath",i);let s=new Q(t),a=await ee({fsp:s,dotgit:r});await ft.acquire({fs:s,gitdir:a,cache:n},async function(o){o.delete({filepath:i})})}catch(s){throw s.caller="git.remove",s}}async function iB({fs:t,cache:e,onSign:r,gitdir:i,ref:n="refs/notes/commits",oid:s,author:a,committer:o,signingKey:l}){let c;try{c=await W.resolve({gitdir:i,fs:t,ref:n})}catch(p){if(!(p instanceof He))throw p}let f=(await rl({fs:t,cache:e,gitdir:i,oid:c||"4b825dc642cb6eb9a060e54bf8d69288fbee4904"})).tree;f=f.filter(p=>p.path!==s);let d=await nu({fs:t,gitdir:i,tree:f});return await ru({fs:t,cache:e,onSign:r,gitdir:i,ref:n,tree:d,parent:c&&[c],message:`Note removed by 'isomorphic-git removeNote' +`,author:a,committer:o,signingKey:l})}async function QS({fs:t,onSign:e,dir:r,gitdir:i=O(r,".git"),ref:n="refs/notes/commits",oid:s,author:a,committer:o,signingKey:l,cache:c={}}){try{T("fs",t),T("gitdir",i),T("oid",s);let u=new Q(t),f=await ee({fsp:u,dotgit:i}),d=await $s({fs:u,gitdir:f,author:a});if(!d)throw new Zt("author");let h=await ga({fs:u,gitdir:f,author:d,committer:o});if(!h)throw new Zt("committer");return await iB({fs:u,cache:c,onSign:e,gitdir:f,ref:n,oid:s,author:d,committer:h,signingKey:l})}catch(u){throw u.caller="git.removeNote",u}}async function nB({fs:t,gitdir:e,oldref:r,ref:i,checkout:n=!1}){if(!tu(i,!0))throw new Gi(i,Dc.clean(i));if(!tu(r,!0))throw new Gi(r,Dc.clean(r));let s=`refs/heads/${r}`,a=`refs/heads/${i}`;if(await W.exists({fs:t,gitdir:e,ref:a}))throw new Ui("branch",i,!1);let l=await W.resolve({fs:t,gitdir:e,ref:s,depth:1});await W.writeRef({fs:t,gitdir:e,ref:a,value:l}),await W.deleteRef({fs:t,gitdir:e,ref:s});let u=await Is({fs:t,gitdir:e,fullname:!0})===s;(n||u)&&await W.writeSymbolicRef({fs:t,gitdir:e,ref:"HEAD",value:a})}async function JS({fs:t,dir:e,gitdir:r=O(e,".git"),ref:i,oldref:n,checkout:s=!1}){try{T("fs",t),T("gitdir",r),T("ref",i),T("oldref",n);let a=new Q(t),o=await ee({fsp:a,dotgit:r});return await nB({fs:a,gitdir:o,ref:i,oldref:n,checkout:s})}catch(a){throw a.caller="git.renameBranch",a}}async function ek({gitdir:t,type:e,object:r}){return wn(Cs.wrap({type:e,object:r}))}async function tk({fs:t,dir:e,gitdir:r=O(e,".git"),filepath:i,ref:n,cache:s={}}){try{T("fs",t),T("gitdir",r),T("filepath",i);let a=new Q(t),o=await ee({fsp:a,dotgit:r}),l,c;try{l=await W.resolve({fs:a,gitdir:o,ref:n||"HEAD"})}catch(d){if(n)throw d}if(l)try{l=await iu({fs:a,cache:s,gitdir:o,oid:l,filepath:i})}catch(d){l=null}let u={ctime:new Date(0),mtime:new Date(0),dev:0,ino:0,mode:0,uid:0,gid:0,size:0},f=e&&await a.read(O(e,i));f&&(c=await ek({gitdir:o,type:"blob",object:f}),l===c&&(u=await a.lstat(O(e,i)))),await ft.acquire({fs:a,gitdir:o,cache:s},async function(d){d.delete({filepath:i}),l&&d.insert({filepath:i,stats:u,oid:l})})}catch(a){throw a.caller="git.reset",a}}async function rk({fs:t,dir:e,gitdir:r=O(e,".git"),ref:i,depth:n}){try{T("fs",t),T("gitdir",r),T("ref",i);let s=new Q(t),a=await ee({fsp:s,dotgit:r});return await W.resolve({fs:s,gitdir:a,ref:i,depth:n})}catch(s){throw s.caller="git.resolveRef",s}}async function ik({fs:t,dir:e,gitdir:r=O(e,".git"),path:i,value:n,append:s=!1}){try{T("fs",t),T("gitdir",r),T("path",i);let a=new Q(t),o=await ee({fsp:a,dotgit:r}),l=await dt.get({fs:a,gitdir:o});s?await l.append(i,n):await l.set(i,n),await dt.save({fs:a,gitdir:o,config:l})}catch(a){throw a.caller="git.setConfig",a}}async function nk({fs:t,gitdir:e,commit:r}){let i=Mr.from(r).toObject();return await Dr({fs:t,gitdir:e,type:"commit",object:i,format:"content"})}var hd=class t{static get timezoneOffsetForRefLogEntry(){let e=new Date().getTimezoneOffset(),r=Math.abs(Math.floor(e/60)),i=Math.abs(e%60).toString().padStart(2,"0");return`${e>0?"-":"+"}${r.toString().padStart(2,"0")}${i}`}static createStashReflogEntry(e,r,i){let n=e.name.replace(/\s/g,""),s="0000000000000000000000000000000000000000",a=Math.floor(Date.now()/1e3),o=t.timezoneOffsetForRefLogEntry;return`${s} ${r} ${n} ${e.email} ${a} ${o} ${i} +`}static getStashReflogEntry(e,r=!1){return e.split(` +`).filter(s=>s).reverse().map((s,a)=>r?`stash@{${a}}: ${s.split(" ")[1]}`:s)}},wa=class t{constructor({fs:e,dir:r,gitdir:i=O(r,".git")}){Object.assign(this,{fs:e,dir:r,gitdir:i,_author:null})}static get refStash(){return"refs/stash"}static get refLogsStash(){return"logs/refs/stash"}get refStashPath(){return O(this.gitdir,t.refStash)}get refLogsStashPath(){return O(this.gitdir,t.refLogsStash)}async getAuthor(){if(!this._author&&(this._author=await $s({fs:this.fs,gitdir:this.gitdir,author:{}}),!this._author))throw new Zt("author");return this._author}async getStashSHA(e,r){return await this.fs.exists(this.refStashPath)?(r||await this.readStashReflogs({parsed:!1}))[e].split(" ")[1]:null}async writeStashCommit({message:e,tree:r,parent:i}){return nk({fs:this.fs,gitdir:this.gitdir,commit:{message:e,tree:r,parent:i,author:await this.getAuthor(),committer:await this.getAuthor()}})}async readStashCommit(e){let r=await this.readStashReflogs({parsed:!1});if(e!==0&&(e<0||e>r.length-1))throw new Gi(`stash@${e}`,"number that is in range of [0, num of stash pushed]");let i=await this.getStashSHA(e,r);return i?vn({fs:this.fs,cache:{},gitdir:this.gitdir,oid:i}):{}}async writeStashRef(e){return W.writeRef({fs:this.fs,gitdir:this.gitdir,ref:t.refStash,value:e})}async writeStashReflogEntry({stashCommit:e,message:r}){let i=await this.getAuthor(),n=hd.createStashReflogEntry(i,e,r),s=this.refLogsStashPath;await Qo({filepath:s,entry:n},async()=>{let a=await this.fs.exists(s)?await this.fs.read(s,"utf8"):"";await this.fs.write(s,a+n,"utf8")})}async readStashReflogs({parsed:e=!1}){if(!await this.fs.exists(this.refLogsStashPath))return[];let r=await this.fs.read(this.refLogsStashPath,"utf8");return hd.getStashReflogEntry(r,e)}};async function sk({fs:t,dir:e,gitdir:r,message:i=""}){let n=new wa({fs:t,dir:e,gitdir:r});await n.getAuthor();let s=await Is({fs:t,gitdir:r,fullname:!1}),a=await W.resolve({fs:t,gitdir:r,ref:"HEAD"}),l=(await Ng({fs:t,dir:e,gitdir:r,oid:a})).commit.message,c=[a],u=null,f=Zr({ref:"HEAD"}),d=await mE({fs:t,dir:e,gitdir:r,treePair:[Zr({ref:"HEAD"}),"stage"]});if(d){let v=await n.writeStashCommit({message:`stash-Index: WIP on ${s} - ${new Date().toISOString()}`,tree:d,parent:c});c.push(v),u=d,f=_a()}let h=await mE({fs:t,dir:e,gitdir:r,treePair:[f,"workdir"]});if(h){let v=await n.writeStashCommit({message:`stash-WorkDir: WIP on ${s} - ${new Date().toISOString()}`,tree:h,parent:[c[c.length-1]]});c.push(v),u=h}if(!u||!d&&!h)throw new He("changes, nothing to stash");let p=(i.trim()||`WIP on ${s}`)+`: ${a.substring(0,7)} ${l}`;return{stashCommit:await n.writeStashCommit({message:p,tree:u,parent:c}),stashMsg:p,branch:s,stashMgr:n}}async function sB({fs:t,dir:e,gitdir:r,message:i=""}){let{stashCommit:n,stashMsg:s,branch:a,stashMgr:o}=await sk({fs:t,dir:e,gitdir:r,message:i});return await o.writeStashRef(n),await o.writeStashReflogEntry({stashCommit:n,message:s}),await Dg({fs:t,dir:e,gitdir:r,ref:a,track:!1,force:!0}),n}async function aB({fs:t,dir:e,gitdir:r,message:i=""}){let{stashCommit:n}=await sk({fs:t,dir:e,gitdir:r,message:i});return n}async function ak({fs:t,dir:e,gitdir:r,refIdx:i=0}){let s=await new wa({fs:t,dir:e,gitdir:r}).readStashCommit(i),{parent:a=null}=s.commit?s.commit:{};if(!(!a||!Array.isArray(a)))for(let o=0;o<a.length-1;o++){let c=(await vn({fs:t,cache:{},gitdir:r,oid:a[o+1]})).commit.message.startsWith("stash-Index");await ZE({fs:t,dir:e,gitdir:r,stashCommit:a[o+1],parentCommit:a[o],wasStaged:c})}}async function ok({fs:t,dir:e,gitdir:r,refIdx:i=0}){let n=new wa({fs:t,dir:e,gitdir:r});if(!(await n.readStashCommit(i)).commit)return;let a=n.refStashPath;await Qo(a,async()=>{await t.exists(a)&&await t.rm(a)});let o=await n.readStashReflogs({parsed:!1});if(!o.length)return;o.splice(i,1);let l=n.refLogsStashPath;await Qo({reflogEntries:o,stashReflogPath:l,stashMgr:n},async()=>{if(o.length){await t.write(l,o.reverse().join(` +`)+` +`,"utf8");let c=o[o.length-1].split(" ")[1];await n.writeStashRef(c)}else await t.rm(l)})}async function oB({fs:t,dir:e,gitdir:r}){return new wa({fs:t,dir:e,gitdir:r}).readStashReflogs({parsed:!0})}async function lB({fs:t,dir:e,gitdir:r}){let i=new wa({fs:t,dir:e,gitdir:r}),n=[i.refStashPath,i.refLogsStashPath];await Qo(n,async()=>{await Promise.all(n.map(async s=>{if(await t.exists(s))return t.rm(s)}))})}async function cB({fs:t,dir:e,gitdir:r,refIdx:i=0}){await ak({fs:t,dir:e,gitdir:r,refIdx:i}),await ok({fs:t,dir:e,gitdir:r,refIdx:i})}async function lk({fs:t,dir:e,gitdir:r=O(e,".git"),op:i="push",message:n="",refIdx:s=0}){T("fs",t),T("dir",e),T("gitdir",r),T("op",i);let a={push:sB,apply:ak,drop:ok,list:oB,clear:lB,pop:cB,create:aB},o=["apply","drop","pop"];try{let l=new Q(t),c=await ee({fsp:l,dotgit:r});["refs","logs","logs/refs"].map(d=>O(c,d)).forEach(async d=>{await l.exists(d)||await l.mkdir(d)});let f=a[i];if(f){if(o.includes(i)&&s<0)throw new Gi(`stash@${s}`,"number that is in range of [0, num of stash pushed]");return await f({fs:l,dir:e,gitdir:c,message:n,refIdx:s})}throw new Error(`To be implemented: ${i}`)}catch(l){throw l.caller="git.stash",l}}async function ck({fs:t,dir:e,gitdir:r=O(e,".git"),filepath:i,cache:n={}}){try{T("fs",t),T("gitdir",r),T("filepath",i);let s=new Q(t),a=await ee({fsp:s,dotgit:r});if(await Rs.isIgnored({fs:s,gitdir:a,dir:e,filepath:i}))return"ignored";let l=await uB({fs:s,cache:n,gitdir:a}),c=await uk({fs:s,cache:n,gitdir:a,tree:l,path:i}),u=await ft.acquire({fs:s,gitdir:a,cache:n},async function(v){for(let _ of v)if(_.path===i)return _;return null}),f=await s.lstat(O(e,i)),d=c!==null,h=u!==null,p=f!==null,g=async()=>{if(h&&!nd(u,f))return u.oid;{let v=await s.read(O(e,i)),_=await ek({gitdir:a,type:"blob",object:v});return h&&u.oid===_&&f.size!==-1&&ft.acquire({fs:s,gitdir:a,cache:n},async function(b){b.insert({filepath:i,stats:f,oid:_})}),_}};if(!d&&!p&&!h)return"absent";if(!d&&!p&&h)return"*absent";if(!d&&p&&!h)return"*added";if(!d&&p&&h)return await g()===u.oid?"added":"*added";if(d&&!p&&!h)return"deleted";if(d&&!p&&h)return c===u.oid,"*deleted";if(d&&p&&!h)return await g()===c?"*undeleted":"*undeletemodified";if(d&&p&&h){let v=await g();return v===c?v===u.oid?"unmodified":"*unmodified":v===u.oid?"modified":"*modified"}}catch(s){throw s.caller="git.status",s}}async function uk({fs:t,cache:e,gitdir:r,tree:i,path:n}){typeof n=="string"&&(n=n.split("/"));let s=n.shift();for(let a of i)if(a.path===s){if(n.length===0)return a.oid;let{type:o,object:l}=await Je({fs:t,cache:e,gitdir:r,oid:a.oid});if(o==="tree"){let c=Ir.from(l);return uk({fs:t,cache:e,gitdir:r,tree:c,path:n})}if(o==="blob")throw new yr(a.oid,o,"blob",n.join("/"))}return null}async function uB({fs:t,cache:e,gitdir:r}){let i;try{i=await W.resolve({fs:t,gitdir:r,ref:"HEAD"})}catch(s){if(s instanceof He)return[]}let{tree:n}=await rl({fs:t,cache:e,gitdir:r,oid:i});return n}async function fk({fs:t,dir:e,gitdir:r=O(e,".git"),ref:i="HEAD",filepaths:n=["."],filter:s,cache:a={},ignored:o=!1}){try{T("fs",t),T("gitdir",r),T("ref",i);let l=new Q(t),c=await ee({fsp:l,dotgit:r});return await Ps({fs:l,cache:a,dir:e,gitdir:c,trees:[Zr({ref:i}),tl(),_a()],map:async function(u,[f,d,h]){if(!f&&!h&&d&&!o&&await Rs.isIgnored({fs:l,dir:e,filepath:u})||!n.some(w=>YE(u,w)))return null;if(s&&!s(u))return;let[p,g,v]=await Promise.all([f&&f.type(),d&&d.type(),h&&h.type()]),_=[p,g,v].includes("blob");if((p==="tree"||p==="special")&&!_)return;if(p==="commit")return null;if((g==="tree"||g==="special")&&!_)return;if(v==="commit")return null;if((v==="tree"||v==="special")&&!_)return;let b=p==="blob"?await f.oid():void 0,S=v==="blob"?await h.oid():void 0,k;p!=="blob"&&g==="blob"&&v!=="blob"?k="42":g==="blob"&&(k=await d.oid());let E=[void 0,b,k,S],A=E.map(w=>E.indexOf(w));return A.shift(),[u,...A]}})}catch(l){throw l.caller="git.statusMatrix",l}}async function dk({fs:t,dir:e,gitdir:r=O(e,".git"),ref:i,object:n,force:s=!1}){try{T("fs",t),T("gitdir",r),T("ref",i);let a=new Q(t);if(i===void 0)throw new Fr("ref");i=i.startsWith("refs/tags/")?i:`refs/tags/${i}`;let o=await ee({fsp:a,dotgit:r}),l=await W.resolve({fs:a,gitdir:o,ref:n||"HEAD"});if(!s&&await W.exists({fs:a,gitdir:o,ref:i}))throw new Ui("tag",i);await W.writeRef({fs:a,gitdir:o,ref:i,value:l})}catch(a){throw a.caller="git.tag",a}}async function hk({fs:t,dir:e,gitdir:r=O(e,".git"),cache:i={},filepath:n,oid:s,mode:a,add:o,remove:l,force:c}){try{T("fs",t),T("gitdir",r),T("filepath",n);let u=new Q(t),f=await ee({fsp:u,dotgit:r});if(l)return await ft.acquire({fs:u,gitdir:f,cache:i},async function(h){if(!c){let p=await u.lstat(O(e,n));if(p){if(p.isDirectory())throw new Ts("directory");return}}h.has({filepath:n})&&h.delete({filepath:n})});let d;if(!s){if(d=await u.lstat(O(e,n)),!d)throw new He(`file at "${n}" on disk and "remove" not set`);if(d.isDirectory())throw new Ts("directory")}return await ft.acquire({fs:u,gitdir:f,cache:i},async function(h){if(!o&&!h.has({filepath:n}))throw new He(`file at "${n}" in index and "add" not set`);let p;if(s)p={ctime:new Date(0),mtime:new Date(0),dev:0,ino:0,mode:a,uid:0,gid:0,size:0};else{p=d;let g=p.isSymbolicLink()?await u.readlink(O(e,n)):await u.read(O(e,n));s=await Dr({fs:u,gitdir:f,type:"blob",format:"content",object:g})}return h.insert({filepath:n,oid:s,stats:p}),s})}catch(u){throw u.caller="git.updateIndex",u}}function pk(){try{return gd.version}catch(t){throw t.caller="git.version",t}}async function mk({fs:t,dir:e,gitdir:r=O(e,".git"),trees:i,map:n,reduce:s,iterate:a,cache:o={}}){try{T("fs",t),T("gitdir",r),T("trees",i);let l=new Q(t),c=await ee({fsp:l,dotgit:r});return await Ps({fs:l,cache:o,dir:e,gitdir:c,trees:i,map:n,reduce:s,iterate:a})}catch(l){throw l.caller="git.walk",l}}async function gk({fs:t,dir:e,gitdir:r=O(e,".git"),blob:i}){try{T("fs",t),T("gitdir",r),T("blob",i);let n=new Q(t),s=await ee({fsp:n,dotgit:r});return await Dr({fs:n,gitdir:s,type:"blob",object:i,format:"content"})}catch(n){throw n.caller="git.writeBlob",n}}async function vk({fs:t,dir:e,gitdir:r=O(e,".git"),commit:i}){try{T("fs",t),T("gitdir",r),T("commit",i);let n=new Q(t),s=await ee({fsp:n,dotgit:r});return await nk({fs:n,gitdir:s,commit:i})}catch(n){throw n.caller="git.writeCommit",n}}async function wk({fs:t,dir:e,gitdir:r=O(e,".git"),type:i,object:n,format:s="parsed",oid:a,encoding:o=void 0}){try{let l=new Q(t),c=await ee({fsp:l,dotgit:r});if(s==="parsed"){switch(i){case"commit":n=Mr.from(n).toObject();break;case"tree":n=Ir.from(n).toObject();break;case"blob":n=Buffer.from(n,o);break;case"tag":n=Kr.from(n).toObject();break;default:throw new yr(a||"",i,"blob|commit|tag|tree")}s="content"}return a=await Dr({fs:l,gitdir:c,type:i,object:n,oid:a,format:s}),a}catch(l){throw l.caller="git.writeObject",l}}async function _k({fs:t,dir:e,gitdir:r=O(e,".git"),ref:i,value:n,force:s=!1,symbolic:a=!1}){try{T("fs",t),T("gitdir",r),T("ref",i),T("value",n);let o=new Q(t);if(!tu(i,!0))throw new Gi(i,Dc.clean(i));let l=await ee({fsp:o,dotgit:r});if(!s&&await W.exists({fs:o,gitdir:l,ref:i}))throw new Ui("ref",i);a?await W.writeSymbolicRef({fs:o,gitdir:l,ref:i,value:n}):(n=await W.resolve({fs:o,gitdir:l,ref:n}),await W.writeRef({fs:o,gitdir:l,ref:i,value:n}))}catch(o){throw o.caller="git.writeRef",o}}async function fB({fs:t,gitdir:e,tag:r}){let i=Kr.from(r).toObject();return await Dr({fs:t,gitdir:e,type:"tag",object:i,format:"content"})}async function bk({fs:t,dir:e,gitdir:r=O(e,".git"),tag:i}){try{T("fs",t),T("gitdir",r),T("tag",i);let n=new Q(t),s=await ee({fsp:n,dotgit:r});return await fB({fs:n,gitdir:s,tag:i})}catch(n){throw n.caller="git.writeTag",n}}async function yk({fs:t,dir:e,gitdir:r=O(e,".git"),tree:i}){try{T("fs",t),T("gitdir",r),T("tree",i);let n=new Q(t),s=await ee({fsp:n,dotgit:r});return await nu({fs:n,gitdir:s,tree:i})}catch(n){throw n.caller="git.writeTree",n}}var dB={Errors:IE,STAGE:_a,TREE:Zr,WORKDIR:tl,add:NE,abortMerge:DE,addNote:jE,addRemote:zE,annotatedTag:WE,branch:qE,cherryPick:KE,checkout:Dg,clone:rS,commit:iS,getConfig:wS,getConfigAll:_S,setConfig:ik,currentBranch:nS,deleteBranch:sS,deleteRef:aS,deleteRemote:oS,deleteTag:lS,expandOid:cS,expandRef:uS,fastForward:hS,fetch:pS,findMergeBase:mS,findRoot:vS,getRemoteInfo:bS,getRemoteInfo2:xS,hashBlob:ES,indexPack:SS,init:kS,isDescendent:CS,isIgnored:TS,listBranches:PS,listFiles:$S,listNotes:FS,listRefs:IS,listRemotes:MS,listServerRefs:DS,listTags:OS,log:NS,merge:BS,packObjects:US,pull:GS,push:jS,readBlob:WS,readCommit:Ng,readNote:qS,readObject:YS,readTag:XS,readTree:ZS,remove:KS,removeNote:QS,renameBranch:JS,resetIndex:tk,updateIndex:hk,resolveRef:rk,status:ck,statusMatrix:fk,tag:dk,version:pk,walk:mk,writeBlob:gk,writeCommit:vk,writeObject:wk,writeRef:_k,writeTag:bk,writeTree:yk,stash:lk};Y.Errors=IE;Y.STAGE=_a;Y.TREE=Zr;Y.WORKDIR=tl;Y.abortMerge=DE;Y.add=NE;Y.addNote=jE;Y.addRemote=zE;Y.annotatedTag=WE;Y.branch=qE;Y.checkout=Dg;Y.cherryPick=KE;Y.clone=rS;Y.commit=iS;Y.currentBranch=nS;Y.default=dB;Y.deleteBranch=sS;Y.deleteRef=aS;Y.deleteRemote=oS;Y.deleteTag=lS;Y.expandOid=cS;Y.expandRef=uS;Y.fastForward=hS;Y.fetch=pS;Y.findMergeBase=mS;Y.findRoot=vS;Y.getConfig=wS;Y.getConfigAll=_S;Y.getRemoteInfo=bS;Y.getRemoteInfo2=xS;Y.hashBlob=ES;Y.indexPack=SS;Y.init=kS;Y.isDescendent=CS;Y.isIgnored=TS;Y.listBranches=PS;Y.listFiles=$S;Y.listNotes=FS;Y.listRefs=IS;Y.listRemotes=MS;Y.listServerRefs=DS;Y.listTags=OS;Y.log=NS;Y.merge=BS;Y.packObjects=US;Y.pull=GS;Y.push=jS;Y.readBlob=WS;Y.readCommit=Ng;Y.readNote=qS;Y.readObject=YS;Y.readTag=XS;Y.readTree=ZS;Y.remove=KS;Y.removeNote=QS;Y.renameBranch=JS;Y.resetIndex=tk;Y.resolveRef=rk;Y.setConfig=ik;Y.stash=lk;Y.status=ck;Y.statusMatrix=fk;Y.tag=dk;Y.updateIndex=hk;Y.version=pk;Y.walk=mk;Y.writeBlob=gk;Y.writeCommit=vk;Y.writeObject=wk;Y.writeRef=_k;Y.writeTag=bk;Y.writeTree=yk});var Ik=H((zz,Fk)=>{"use strict";m();Fk.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}});var Dk=H((qz,Mk)=>{m();var ev={px:{px:1,cm:37.79527559055118,mm:3.7795275590551185,in:96,pt:1.3333333333333333,pc:16},cm:{px:.026458333333333334,cm:1,mm:.1,in:2.54,pt:.035277777777777776,pc:.42333333333333334},mm:{px:.26458333333333334,cm:10,mm:1,in:25.4,pt:.35277777777777775,pc:4.233333333333333},in:{px:.010416666666666666,cm:.39370078740157477,mm:.03937007874015748,in:1,pt:.013888888888888888,pc:.16666666666666666},pt:{px:.75,cm:28.346456692913385,mm:2.834645669291339,in:72,pt:1,pc:12},pc:{px:.0625,cm:2.3622047244094486,mm:.2362204724409449,in:6,pt:.08333333333333333,pc:1},deg:{deg:1,grad:.9,rad:180/Math.PI,turn:360},grad:{deg:1.1111111111111112,grad:1,rad:200/Math.PI,turn:400},rad:{deg:Math.PI/180,grad:Math.PI/200,rad:1,turn:Math.PI*2},turn:{deg:.002777777777777778,grad:.0025,rad:.5/Math.PI,turn:1},s:{s:1,ms:.001},ms:{s:1e3,ms:1},Hz:{Hz:1,kHz:1e3},kHz:{Hz:.001,kHz:1},dpi:{dpi:1,dpcm:.39370078740157477,dppx:.010416666666666666},dpcm:{dpi:2.54,dpcm:1,dppx:.026458333333333334},dppx:{dpi:96,dpcm:37.79527559055118,dppx:1}};Mk.exports=function(t,e,r,i){if(!ev.hasOwnProperty(r))throw new Error("Cannot convert to "+r);if(!ev[r].hasOwnProperty(e))throw new Error("Cannot convert from "+e+" to "+r);var n=ev[r][e]*t;return i!==!1?(i=Math.pow(10,parseInt(i)||5),Math.round(n*i)/i):n}});var Xk=H(Zn=>{"use strict";m();Object.defineProperty(Zn,"__esModule",{value:!0});Zn.fromRgba=ol;Zn.fromRgb=tv;Zn.fromHsla=Cd;Zn.fromHsl=qk;Zn.fromString=Yk;Zn.default=void 0;var Ok=Bk(Ik()),yB=Bk(Dk());function Bk(t){return t&&t.__esModule?t:{default:t}}function xB(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Lk(t,e){for(var r=0;r<e.length;r++){var i=e[r];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function EB(t,e,r){return e&&Lk(t.prototype,e),r&&Lk(t,r),t}function xr(t,e){return CB(t)||AB(t,e)||kB(t,e)||SB()}function SB(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function kB(t,e){if(t){if(typeof t=="string")return Nk(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);if(r==="Object"&&t.constructor&&(r=t.constructor.name),r==="Map"||r==="Set")return Array.from(t);if(r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return Nk(t,e)}}function Nk(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,i=new Array(e);r<e;r++)i[r]=t[r];return i}function AB(t,e){if(!(typeof Symbol=="undefined"||!(Symbol.iterator in Object(t)))){var r=[],i=!0,n=!1,s=void 0;try{for(var a=t[Symbol.iterator](),o;!(i=(o=a.next()).done)&&(r.push(o.value),!(e&&r.length===e));i=!0);}catch(l){n=!0,s=l}finally{try{!i&&a.return!=null&&a.return()}finally{if(n)throw s}}return r}}function CB(t){if(Array.isArray(t))return t}var Hk=/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})?$/,Uk=/^#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])?$/,Gk=/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*(0|1|0?\.\d+|\d+%))?\s*\)$/,jk=/^rgba?\(\s*(\d+)\s+(\d+)\s+(\d+)(?:\s*\/\s*(0|1|0?\.\d+|\d+%))?\s*\)$/,Vk=/^rgba?\(\s*(\d+%)\s*,\s*(\d+%)\s*,\s*(\d+%)(?:\s*,\s*(0|1|0?\.\d+|\d+%))?\s*\)$/,zk=/^rgba?\(\s*(\d+%)\s+(\d+%)\s+(\d+%)(?:\s*\/\s*(0|1|0?\.\d+|\d+%))?\s*\)$/,Wk=/^hsla?\(\s*(\d+)(deg|rad|grad|turn)?\s*,\s*(\d+)%\s*,\s*(\d+)%(?:\s*,\s*(0|1|0?\.\d+|\d+%))?\s*\)$/;function lu(t,e){return t.indexOf(e)>-1}function TB(t,e,r){var i=t/255,n=e/255,s=r/255,a=Math.max(i,n,s),o=Math.min(i,n,s),l=a-o,c=(a+o)/2;if(l===0)return[0,0,c*100];var u=l/(1-Math.abs(2*c-1)),f=function(){switch(a){case i:return(n-s)/l%6;case n:return(s-i)/l+2;default:return(i-n)/l+4}}();return[f*60,u*100,c*100]}function PB(t,e,r){var i=t/60,n=e/100,s=r/100,a=(1-Math.abs(2*s-1))*n,o=a*(1-Math.abs(i%2-1)),l=s-a/2,c=function(){return i<1?[a,o,0]:i<2?[o,a,0]:i<3?[0,a,o]:i<4?[0,o,a]:i<5?[o,0,a]:[a,0,o]}(),u=xr(c,3),f=u[0],d=u[1],h=u[2];return[(f+l)*255,(d+l)*255,(h+l)*255]}var RB=function(){function t(e){var r=xr(e,4),i=r[0],n=r[1],s=r[2],a=r[3];xB(this,t),this.values=[Math.max(Math.min(parseInt(i,10),255),0),Math.max(Math.min(parseInt(n,10),255),0),Math.max(Math.min(parseInt(s,10),255),0),a==null?1:Math.max(Math.min(parseFloat(a),255),0)]}return EB(t,[{key:"toRgbString",value:function(){var r=xr(this.values,4),i=r[0],n=r[1],s=r[2],a=r[3];return a===1?"rgb(".concat(i,", ").concat(n,", ").concat(s,")"):"rgba(".concat(i,", ").concat(n,", ").concat(s,", ").concat(a,")")}},{key:"toHslString",value:function(){var r=this.toHslaArray(),i=xr(r,4),n=i[0],s=i[1],a=i[2],o=i[3];return o===1?"hsl(".concat(n,", ").concat(s,"%, ").concat(a,"%)"):"hsla(".concat(n,", ").concat(s,"%, ").concat(a,"%, ").concat(o,")")}},{key:"toHexString",value:function(){var r=xr(this.values,4),i=r[0],n=r[1],s=r[2],a=r[3];return i=Number(i).toString(16).padStart(2,"0"),n=Number(n).toString(16).padStart(2,"0"),s=Number(s).toString(16).padStart(2,"0"),a=a<1?parseInt(a*255,10).toString(16).padStart(2,"0"):"","#".concat(i).concat(n).concat(s).concat(a)}},{key:"toRgbaArray",value:function(){return this.values}},{key:"toHslaArray",value:function(){var r=xr(this.values,4),i=r[0],n=r[1],s=r[2],a=r[3],o=TB(i,n,s),l=xr(o,3),c=l[0],u=l[1],f=l[2];return[c,u,f,a]}}]),t}();function ol(t){var e=xr(t,4),r=e[0],i=e[1],n=e[2],s=e[3];return new RB([r,i,n,s])}function tv(t){var e=xr(t,3),r=e[0],i=e[1],n=e[2];return ol([r,i,n,1])}function Cd(t){var e=xr(t,4),r=e[0],i=e[1],n=e[2],s=e[3],a=PB(r,i,n),o=xr(a,3),l=o[0],c=o[1],u=o[2];return ol([l,c,u,s])}function qk(t){var e=xr(t,3),r=e[0],i=e[1],n=e[2];return Cd([r,i,n,1])}function $B(t){var e=Hk.exec(t)||Uk.exec(t),r=xr(e,5),i=r[1],n=r[2],s=r[3],a=r[4];return i=parseInt(i.length<2?i.repeat(2):i,16),n=parseInt(n.length<2?n.repeat(2):n,16),s=parseInt(s.length<2?s.repeat(2):s,16),a=a&&(parseInt(a.length<2?a.repeat(2):a,16)/255).toPrecision(1)||1,ol([i,n,s,a])}function FB(t){var e=Gk.exec(t)||Vk.exec(t)||jk.exec(t)||zk.exec(t),r=xr(e,5),i=r[1],n=r[2],s=r[3],a=r[4];return i=lu(i,"%")?parseInt(i,10)*255/100:parseInt(i,10),n=lu(n,"%")?parseInt(n,10)*255/100:parseInt(n,10),s=lu(s,"%")>0?parseInt(s,10)*255/100:parseInt(s,10),a=a===void 0?1:parseFloat(a)/(lu(a,"%")?100:1),ol([i,n,s,a])}function IB(t){var e=Wk.exec(t),r=xr(e,6),i=r[1],n=r[2],s=r[3],a=r[4],o=r[5];return n=n||"deg",i=(0,yB.default)(parseFloat(i),n,"deg"),s=parseFloat(s),a=parseFloat(a),o=o===void 0?1:parseFloat(o)/(lu(o,"%")?100:1),Cd([i,s,a,o])}function Yk(t){return Ok.default[t]?tv(Ok.default[t]):Hk.test(t)||Uk.test(t)?$B(t):Gk.test(t)||Vk.test(t)||jk.test(t)||zk.test(t)?FB(t):Wk.test(t)?IB(t):null}var MB={fromString:Yk,fromRgb:tv,fromRgba:ol,fromHsl:qk,fromHsla:Cd};Zn.default=MB});var oA=H((n9,aA)=>{m();aA.exports=function(t,e){var r=t,i=e,n=r.length,s=i.length,a=!1,o=n+1,l=[],c=[],u,f,d=function(){n>=s&&(u=r,f=n,r=i,i=u,n=s,s=f,a=!0,o=n+1)},h=function(g,v,_,b,S){return{startX:g,startY:v,endX:_,endY:b,r:S}},p=function(g,v,_){var b,S,k,E,A;for(v>_?b=l[g-1+o]:b=l[g+1+o],A=k=Math.max(v,_),E=S=k-g;S<n&&k<s&&r[S]===i[k];)++S,++k;return E==S&&A==k?l[g+o]=b:(l[g+o]=c.length,c[c.length]=new h(E,A,S,k,b)),k};return d(),{compose:function(){var g,v,_,b,S,k,E,A,w,x;for(g=s-n,v=n+s+3,_={},k=0;k<v;++k)_[k]=-1,l[k]=-1;b=-1;do{for(++b,E=-b;E<=g-1;++E)_[E+o]=p(E,_[E-1+o]+1,_[E+1+o]);for(E=g+b;E>=g+1;--E)_[E+o]=p(E,_[E-1+o]+1,_[E+1+o]);_[g+o]=p(g,_[g-1+o]+1,_[g+1+o])}while(_[g+o]!==s);for(ed=g+2*b,S=l[g+o],A=n,w=s,x=[];S!==-1;){let y=c[S];(n!=y.endX||s!=y.endY)&&x.push({file1:[a?y.endY:y.endX,a?w-y.endY:A-y.endX],file2:[a?y.endX:y.endY,a?A-y.endX:w-y.endY]}),A=y.startX,w=y.startY,S=c[S].r}return(A!=0||w!=0)&&x.push({file1:[0,a?w:A],file2:[0,a?A:w]}),x.reverse(),x}}}});var uA=H((a9,cA)=>{m();var lA=oA();function OB(t,e,r){var i,n=new lA(e,t).compose(),s=new lA(e,r).compose(),a=[];function o(N,B){a.push([N.file1[0],B,N.file1[1],N.file2[0],N.file2[1]])}for(i=0;i<n.length;i++)o(n[i],0);for(i=0;i<s.length;i++)o(s[i],2);a.sort(function(N,B){return N[0]-B[0]});var l=[],c=0;function u(N){N>c&&(l.push([1,c,N-c]),c=N)}for(var f=0;f<a.length;f++){for(var d=f,h=a[f],p=h[0],g=p+h[2];f<a.length-1;){var v=a[f+1],_=v[0];if(_>g)break;g=Math.max(g,_+v[2]),f++}if(u(p),d==f)h[4]>0&&l.push([h[1],h[3],h[4]]);else{var b={0:[t.length,-1,e.length,-1],2:[r.length,-1,e.length,-1]};for(i=d;i<=f;i++){h=a[i];var S=h[1],k=b[S],E=h[0],A=E+h[2],w=h[3],x=w+h[4];k[0]=Math.min(w,k[0]),k[1]=Math.max(x,k[1]),k[2]=Math.min(E,k[2]),k[3]=Math.max(A,k[3])}var y=b[0][0]+(p-b[0][2]),C=b[0][1]+(g-b[0][3]),P=b[2][0]+(p-b[2][2]),L=b[2][1]+(g-b[2][3]);l.push([-1,y,C-y,p,g-p,P,L-P])}c=g}return u(e.length),l}function LB(t,e,r){var i=[],n=[t,e,r],s=OB(t,e,r),a=[];function o(){a.length&&i.push({ok:a}),a=[]}function l(h){for(var p=0;p<h.length;p++)a.push(h[p])}function c(h){if(h[2]!=h[6])return!0;for(var p=h[1],g=h[5],v=0;v<h[2];v++)if(t[v+p]!=r[v+g])return!0;return!1}for(var u=0;u<s.length;u++){var f=s[u],d=f[0];d==-1?c(f)?(o(),i.push({conflict:{a:t.slice(f[1],f[1]+f[2]),aIndex:f[1],o:e.slice(f[3],f[3]+f[4]),oIndex:f[3],b:r.slice(f[5],f[5]+f[6]),bIndex:f[5]}})):l(n[0].slice(f[1],f[1]+f[2])):l(n[d].slice(f[1],f[1]+f[2]))}return o(),i}cA.exports=LB});var hA=H((g9,dA)=>{m();var dl=1e3,hl=dl*60,pl=hl*60,Ea=pl*24,HB=Ea*7,UB=Ea*365.25;dA.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return GB(t);if(r==="number"&&isFinite(t))return e.long?VB(t):jB(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function GB(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),i=(e[2]||"ms").toLowerCase();switch(i){case"years":case"year":case"yrs":case"yr":case"y":return r*UB;case"weeks":case"week":case"w":return r*HB;case"days":case"day":case"d":return r*Ea;case"hours":case"hour":case"hrs":case"hr":case"h":return r*pl;case"minutes":case"minute":case"mins":case"min":case"m":return r*hl;case"seconds":case"second":case"secs":case"sec":case"s":return r*dl;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function jB(t){var e=Math.abs(t);return e>=Ea?Math.round(t/Ea)+"d":e>=pl?Math.round(t/pl)+"h":e>=hl?Math.round(t/hl)+"m":e>=dl?Math.round(t/dl)+"s":t+"ms"}function VB(t){var e=Math.abs(t);return e>=Ea?$d(t,e,Ea,"day"):e>=pl?$d(t,e,pl,"hour"):e>=hl?$d(t,e,hl,"minute"):e>=dl?$d(t,e,dl,"second"):t+" ms"}function $d(t,e,r,i){var n=e>=r*1.5;return Math.round(t/r)+" "+i+(n?"s":"")}});var mA=H((w9,pA)=>{m();function zB(t){r.debug=r,r.default=r,r.coerce=l,r.disable=a,r.enable=n,r.enabled=o,r.humanize=hA(),r.destroy=c,Object.keys(t).forEach(u=>{r[u]=t[u]}),r.names=[],r.skips=[],r.formatters={};function e(u){let f=0;for(let d=0;d<u.length;d++)f=(f<<5)-f+u.charCodeAt(d),f|=0;return r.colors[Math.abs(f)%r.colors.length]}r.selectColor=e;function r(u){let f,d=null,h,p;function g(...v){if(!g.enabled)return;let _=g,b=Number(new Date),S=b-(f||b);_.diff=S,_.prev=f,_.curr=b,f=b,v[0]=r.coerce(v[0]),typeof v[0]!="string"&&v.unshift("%O");let k=0;v[0]=v[0].replace(/%([a-zA-Z%])/g,(A,w)=>{if(A==="%%")return"%";k++;let x=r.formatters[w];if(typeof x=="function"){let y=v[k];A=x.call(_,y),v.splice(k,1),k--}return A}),r.formatArgs.call(_,v),(_.log||r.log).apply(_,v)}return g.namespace=u,g.useColors=r.useColors(),g.color=r.selectColor(u),g.extend=i,g.destroy=r.destroy,Object.defineProperty(g,"enabled",{enumerable:!0,configurable:!1,get:()=>d!==null?d:(h!==r.namespaces&&(h=r.namespaces,p=r.enabled(u)),p),set:v=>{d=v}}),typeof r.init=="function"&&r.init(g),g}function i(u,f){let d=r(this.namespace+(typeof f=="undefined"?":":f)+u);return d.log=this.log,d}function n(u){r.save(u),r.namespaces=u,r.names=[],r.skips=[];let f=(typeof u=="string"?u:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let d of f)d[0]==="-"?r.skips.push(d.slice(1)):r.names.push(d)}function s(u,f){let d=0,h=0,p=-1,g=0;for(;d<u.length;)if(h<f.length&&(f[h]===u[d]||f[h]==="*"))f[h]==="*"?(p=h,g=d,h++):(d++,h++);else if(p!==-1)h=p+1,g++,d=g;else return!1;for(;h<f.length&&f[h]==="*";)h++;return h===f.length}function a(){let u=[...r.names,...r.skips.map(f=>"-"+f)].join(",");return r.enable(""),u}function o(u){for(let f of r.skips)if(s(u,f))return!1;for(let f of r.names)if(s(u,f))return!0;return!1}function l(u){return u instanceof Error?u.stack||u.message:u}function c(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}pA.exports=zB});var Id=H((Or,Fd)=>{m();Or.formatArgs=qB;Or.save=YB;Or.load=XB;Or.useColors=WB;Or.storage=ZB();Or.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();Or.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function WB(){if(typeof window!="undefined"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document!="undefined"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window!="undefined"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator!="undefined"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator!="undefined"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function qB(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+Fd.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let r=0,i=0;t[0].replace(/%[a-zA-Z%]/g,n=>{n!=="%%"&&(r++,n==="%c"&&(i=r))}),t.splice(i,0,e)}Or.log=console.debug||console.log||(()=>{});function YB(t){try{t?Or.storage.setItem("debug",t):Or.storage.removeItem("debug")}catch(e){}}function XB(){let t;try{t=Or.storage.getItem("debug")||Or.storage.getItem("DEBUG")}catch(e){}return!t&&typeof process!="undefined"&&"env"in process&&(t=process.env.DEBUG),t}function ZB(){try{return localStorage}catch(t){}}Fd.exports=mA()(Or);var{formatters:KB}=Fd.exports;KB.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var gA=H(Qr=>{"use strict";m();var QB=Qr&&Qr.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Qr,"__esModule",{value:!0});var JB=require("fs"),eH=QB(Id()),ml=eH.default("@kwsites/file-exists");function tH(t,e,r){ml("checking %s",t);try{let i=JB.statSync(t);return i.isFile()&&e?(ml("[OK] path represents a file"),!0):i.isDirectory()&&r?(ml("[OK] path represents a directory"),!0):(ml("[FAIL] path represents something other than a file or directory"),!1)}catch(i){if(i.code==="ENOENT")return ml("[FAIL] path is not accessible: %o",i),!1;throw ml("[FATAL] %o",i),i}}function rH(t,e=Qr.READABLE){return tH(t,(e&Qr.FILE)>0,(e&Qr.FOLDER)>0)}Qr.exists=rH;Qr.FILE=1;Qr.FOLDER=2;Qr.READABLE=Qr.FILE+Qr.FOLDER});var vA=H(Md=>{"use strict";m();function iH(t){for(var e in t)Md.hasOwnProperty(e)||(Md[e]=t[e])}Object.defineProperty(Md,"__esModule",{value:!0});iH(gA())});var cv=H(Sa=>{"use strict";m();Object.defineProperty(Sa,"__esModule",{value:!0});Sa.createDeferred=Sa.deferred=void 0;function lv(){let t,e,r="pending";return{promise:new Promise((n,s)=>{t=n,e=s}),done(n){r==="pending"&&(r="resolved",t(n))},fail(n){r==="pending"&&(r="rejected",e(n))},get fulfilled(){return r!=="pending"},get status(){return r}}}Sa.deferred=lv;Sa.createDeferred=lv;Sa.default=lv});var tw=H((exports,module)=>{m();(function(){"use strict";var ERROR="input is invalid type",WINDOW=typeof window=="object",root=WINDOW?window:{};root.JS_SHA256_NO_WINDOW&&(WINDOW=!1);var WEB_WORKER=!WINDOW&&typeof self=="object",NODE_JS=!root.JS_SHA256_NO_NODE_JS&&typeof process=="object"&&process.versions&&process.versions.node;NODE_JS?root=global:WEB_WORKER&&(root=self);var COMMON_JS=!root.JS_SHA256_NO_COMMON_JS&&typeof module=="object"&&module.exports,AMD=typeof define=="function"&&define.amd,ARRAY_BUFFER=!root.JS_SHA256_NO_ARRAY_BUFFER&&typeof ArrayBuffer!="undefined",HEX_CHARS="0123456789abcdef".split(""),EXTRA=[-2147483648,8388608,32768,128],SHIFT=[24,16,8,0],K=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],OUTPUT_TYPES=["hex","array","digest","arrayBuffer"],blocks=[];(root.JS_SHA256_NO_NODE_JS||!Array.isArray)&&(Array.isArray=function(t){return Object.prototype.toString.call(t)==="[object Array]"}),ARRAY_BUFFER&&(root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW||!ArrayBuffer.isView)&&(ArrayBuffer.isView=function(t){return typeof t=="object"&&t.buffer&&t.buffer.constructor===ArrayBuffer});var createOutputMethod=function(t,e){return function(r){return new Sha256(e,!0).update(r)[t]()}},createMethod=function(t){var e=createOutputMethod("hex",t);NODE_JS&&(e=nodeWrap(e,t)),e.create=function(){return new Sha256(t)},e.update=function(n){return e.create().update(n)};for(var r=0;r<OUTPUT_TYPES.length;++r){var i=OUTPUT_TYPES[r];e[i]=createOutputMethod(i,t)}return e},nodeWrap=function(method,is224){var crypto=eval("require('crypto')"),Buffer=eval("require('buffer').Buffer"),algorithm=is224?"sha224":"sha256",nodeMethod=function(t){if(typeof t=="string")return crypto.createHash(algorithm).update(t,"utf8").digest("hex");if(t==null)throw new Error(ERROR);return t.constructor===ArrayBuffer&&(t=new Uint8Array(t)),Array.isArray(t)||ArrayBuffer.isView(t)||t.constructor===Buffer?crypto.createHash(algorithm).update(new Buffer(t)).digest("hex"):method(t)};return nodeMethod},createHmacOutputMethod=function(t,e){return function(r,i){return new HmacSha256(r,e,!0).update(i)[t]()}},createHmacMethod=function(t){var e=createHmacOutputMethod("hex",t);e.create=function(n){return new HmacSha256(n,t)},e.update=function(n,s){return e.create(n).update(s)};for(var r=0;r<OUTPUT_TYPES.length;++r){var i=OUTPUT_TYPES[r];e[i]=createHmacOutputMethod(i,t)}return e};function Sha256(t,e){e?(blocks[0]=blocks[16]=blocks[1]=blocks[2]=blocks[3]=blocks[4]=blocks[5]=blocks[6]=blocks[7]=blocks[8]=blocks[9]=blocks[10]=blocks[11]=blocks[12]=blocks[13]=blocks[14]=blocks[15]=0,this.blocks=blocks):this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],t?(this.h0=3238371032,this.h1=914150663,this.h2=812702999,this.h3=4144912697,this.h4=4290775857,this.h5=1750603025,this.h6=1694076839,this.h7=3204075428):(this.h0=1779033703,this.h1=3144134277,this.h2=1013904242,this.h3=2773480762,this.h4=1359893119,this.h5=2600822924,this.h6=528734635,this.h7=1541459225),this.block=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0,this.is224=t}Sha256.prototype.update=function(t){if(!this.finalized){var e,r=typeof t;if(r!=="string"){if(r==="object"){if(t===null)throw new Error(ERROR);if(ARRAY_BUFFER&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!Array.isArray(t)&&(!ARRAY_BUFFER||!ArrayBuffer.isView(t)))throw new Error(ERROR)}else throw new Error(ERROR);e=!0}for(var i,n=0,s,a=t.length,o=this.blocks;n<a;){if(this.hashed&&(this.hashed=!1,o[0]=this.block,o[16]=o[1]=o[2]=o[3]=o[4]=o[5]=o[6]=o[7]=o[8]=o[9]=o[10]=o[11]=o[12]=o[13]=o[14]=o[15]=0),e)for(s=this.start;n<a&&s<64;++n)o[s>>2]|=t[n]<<SHIFT[s++&3];else for(s=this.start;n<a&&s<64;++n)i=t.charCodeAt(n),i<128?o[s>>2]|=i<<SHIFT[s++&3]:i<2048?(o[s>>2]|=(192|i>>6)<<SHIFT[s++&3],o[s>>2]|=(128|i&63)<<SHIFT[s++&3]):i<55296||i>=57344?(o[s>>2]|=(224|i>>12)<<SHIFT[s++&3],o[s>>2]|=(128|i>>6&63)<<SHIFT[s++&3],o[s>>2]|=(128|i&63)<<SHIFT[s++&3]):(i=65536+((i&1023)<<10|t.charCodeAt(++n)&1023),o[s>>2]|=(240|i>>18)<<SHIFT[s++&3],o[s>>2]|=(128|i>>12&63)<<SHIFT[s++&3],o[s>>2]|=(128|i>>6&63)<<SHIFT[s++&3],o[s>>2]|=(128|i&63)<<SHIFT[s++&3]);this.lastByteIndex=s,this.bytes+=s-this.start,s>=64?(this.block=o[16],this.start=s-64,this.hash(),this.hashed=!0):this.start=s}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},Sha256.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[16]=this.block,t[e>>2]|=EXTRA[e&3],this.block=t[16],e>=56&&(this.hashed||this.hash(),t[0]=this.block,t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=this.hBytes<<3|this.bytes>>>29,t[15]=this.bytes<<3,this.hash()}},Sha256.prototype.hash=function(){var t=this.h0,e=this.h1,r=this.h2,i=this.h3,n=this.h4,s=this.h5,a=this.h6,o=this.h7,l=this.blocks,c,u,f,d,h,p,g,v,_,b,S;for(c=16;c<64;++c)h=l[c-15],u=(h>>>7|h<<25)^(h>>>18|h<<14)^h>>>3,h=l[c-2],f=(h>>>17|h<<15)^(h>>>19|h<<13)^h>>>10,l[c]=l[c-16]+u+l[c-7]+f<<0;for(S=e&r,c=0;c<64;c+=4)this.first?(this.is224?(v=300032,h=l[0]-1413257819,o=h-150054599<<0,i=h+24177077<<0):(v=704751109,h=l[0]-210244248,o=h-1521486534<<0,i=h+143694565<<0),this.first=!1):(u=(t>>>2|t<<30)^(t>>>13|t<<19)^(t>>>22|t<<10),f=(n>>>6|n<<26)^(n>>>11|n<<21)^(n>>>25|n<<7),v=t&e,d=v^t&r^S,g=n&s^~n&a,h=o+f+g+K[c]+l[c],p=u+d,o=i+h<<0,i=h+p<<0),u=(i>>>2|i<<30)^(i>>>13|i<<19)^(i>>>22|i<<10),f=(o>>>6|o<<26)^(o>>>11|o<<21)^(o>>>25|o<<7),_=i&t,d=_^i&e^v,g=o&n^~o&s,h=a+f+g+K[c+1]+l[c+1],p=u+d,a=r+h<<0,r=h+p<<0,u=(r>>>2|r<<30)^(r>>>13|r<<19)^(r>>>22|r<<10),f=(a>>>6|a<<26)^(a>>>11|a<<21)^(a>>>25|a<<7),b=r&i,d=b^r&t^_,g=a&o^~a&n,h=s+f+g+K[c+2]+l[c+2],p=u+d,s=e+h<<0,e=h+p<<0,u=(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10),f=(s>>>6|s<<26)^(s>>>11|s<<21)^(s>>>25|s<<7),S=e&r,d=S^e&i^b,g=s&a^~s&o,h=n+f+g+K[c+3]+l[c+3],p=u+d,n=t+h<<0,t=h+p<<0;this.h0=this.h0+t<<0,this.h1=this.h1+e<<0,this.h2=this.h2+r<<0,this.h3=this.h3+i<<0,this.h4=this.h4+n<<0,this.h5=this.h5+s<<0,this.h6=this.h6+a<<0,this.h7=this.h7+o<<0},Sha256.prototype.hex=function(){this.finalize();var t=this.h0,e=this.h1,r=this.h2,i=this.h3,n=this.h4,s=this.h5,a=this.h6,o=this.h7,l=HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[t&15]+HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>4&15]+HEX_CHARS[e&15]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[r&15]+HEX_CHARS[i>>28&15]+HEX_CHARS[i>>24&15]+HEX_CHARS[i>>20&15]+HEX_CHARS[i>>16&15]+HEX_CHARS[i>>12&15]+HEX_CHARS[i>>8&15]+HEX_CHARS[i>>4&15]+HEX_CHARS[i&15]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[n&15]+HEX_CHARS[s>>28&15]+HEX_CHARS[s>>24&15]+HEX_CHARS[s>>20&15]+HEX_CHARS[s>>16&15]+HEX_CHARS[s>>12&15]+HEX_CHARS[s>>8&15]+HEX_CHARS[s>>4&15]+HEX_CHARS[s&15]+HEX_CHARS[a>>28&15]+HEX_CHARS[a>>24&15]+HEX_CHARS[a>>20&15]+HEX_CHARS[a>>16&15]+HEX_CHARS[a>>12&15]+HEX_CHARS[a>>8&15]+HEX_CHARS[a>>4&15]+HEX_CHARS[a&15];return this.is224||(l+=HEX_CHARS[o>>28&15]+HEX_CHARS[o>>24&15]+HEX_CHARS[o>>20&15]+HEX_CHARS[o>>16&15]+HEX_CHARS[o>>12&15]+HEX_CHARS[o>>8&15]+HEX_CHARS[o>>4&15]+HEX_CHARS[o&15]),l},Sha256.prototype.toString=Sha256.prototype.hex,Sha256.prototype.digest=function(){this.finalize();var t=this.h0,e=this.h1,r=this.h2,i=this.h3,n=this.h4,s=this.h5,a=this.h6,o=this.h7,l=[t>>24&255,t>>16&255,t>>8&255,t&255,e>>24&255,e>>16&255,e>>8&255,e&255,r>>24&255,r>>16&255,r>>8&255,r&255,i>>24&255,i>>16&255,i>>8&255,i&255,n>>24&255,n>>16&255,n>>8&255,n&255,s>>24&255,s>>16&255,s>>8&255,s&255,a>>24&255,a>>16&255,a>>8&255,a&255];return this.is224||l.push(o>>24&255,o>>16&255,o>>8&255,o&255),l},Sha256.prototype.array=Sha256.prototype.digest,Sha256.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(this.is224?28:32),e=new DataView(t);return e.setUint32(0,this.h0),e.setUint32(4,this.h1),e.setUint32(8,this.h2),e.setUint32(12,this.h3),e.setUint32(16,this.h4),e.setUint32(20,this.h5),e.setUint32(24,this.h6),this.is224||e.setUint32(28,this.h7),t};function HmacSha256(t,e,r){var i,n=typeof t;if(n==="string"){var s=[],a=t.length,o=0,l;for(i=0;i<a;++i)l=t.charCodeAt(i),l<128?s[o++]=l:l<2048?(s[o++]=192|l>>6,s[o++]=128|l&63):l<55296||l>=57344?(s[o++]=224|l>>12,s[o++]=128|l>>6&63,s[o++]=128|l&63):(l=65536+((l&1023)<<10|t.charCodeAt(++i)&1023),s[o++]=240|l>>18,s[o++]=128|l>>12&63,s[o++]=128|l>>6&63,s[o++]=128|l&63);t=s}else if(n==="object"){if(t===null)throw new Error(ERROR);if(ARRAY_BUFFER&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!Array.isArray(t)&&(!ARRAY_BUFFER||!ArrayBuffer.isView(t)))throw new Error(ERROR)}else throw new Error(ERROR);t.length>64&&(t=new Sha256(e,!0).update(t).array());var c=[],u=[];for(i=0;i<64;++i){var f=t[i]||0;c[i]=92^f,u[i]=54^f}Sha256.call(this,e,r),this.update(u),this.oKeyPad=c,this.inner=!0,this.sharedMemory=r}HmacSha256.prototype=new Sha256,HmacSha256.prototype.finalize=function(){if(Sha256.prototype.finalize.call(this),this.inner){this.inner=!1;var t=this.array();Sha256.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update(t),Sha256.prototype.finalize.call(this)}};var exports=createMethod();exports.sha256=exports,exports.sha224=createMethod(!0),exports.sha256.hmac=createHmacMethod(),exports.sha224.hmac=createHmacMethod(!0),COMMON_JS?module.exports=exports:(root.sha256=exports.sha256,root.sha224=exports.sha224,AMD&&define(function(){return exports}))})()});var HP=H(Mw=>{m();(function(t){var e=/\S/,r=/\"/g,i=/\n/g,n=/\r/g,s=/\\/g,a=/\u2028/,o=/\u2029/;t.tags={"#":1,"^":2,"<":3,$:4,"/":5,"!":6,">":7,"=":8,_v:9,"{":10,"&":11,_t:12},t.scan=function(x,y){var C=x.length,P=0,L=1,N=2,B=P,ge=null,Le=null,ke="",ne=[],Ee=!1,_e=0,z=0,X="{{",V="}}";function Ne(){ke.length>0&&(ne.push({tag:"_t",text:new String(ke)}),ke="")}function gr(){for(var Pt=!0,Rt=z;Rt<ne.length;Rt++)if(Pt=t.tags[ne[Rt].tag]<t.tags._v||ne[Rt].tag=="_t"&&ne[Rt].text.match(e)===null,!Pt)return!1;return Pt}function Nt(Pt,Rt){if(Ne(),Pt&&gr())for(var Ye=z,J;Ye<ne.length;Ye++)ne[Ye].text&&((J=ne[Ye+1])&&J.tag==">"&&(J.indent=ne[Ye].text.toString()),ne.splice(Ye,1));else Rt||ne.push({tag:` +`});Ee=!1,z=ne.length}function Fe(Pt,Rt){var Ye="="+V,J=Pt.indexOf(Ye,Rt),D=c(Pt.substring(Pt.indexOf("=",Rt)+1,J)).split(" ");return X=D[0],V=D[D.length-1],J+Ye.length-1}for(y&&(y=y.split(" "),X=y[0],V=y[1]),_e=0;_e<C;_e++)B==P?u(X,x,_e)?(--_e,Ne(),B=L):x.charAt(_e)==` +`?Nt(Ee):ke+=x.charAt(_e):B==L?(_e+=X.length-1,Le=t.tags[x.charAt(_e+1)],ge=Le?x.charAt(_e+1):"_v",ge=="="?(_e=Fe(x,_e),B=P):(Le&&_e++,B=N),Ee=_e):u(V,x,_e)?(ne.push({tag:ge,n:c(ke),otag:X,ctag:V,i:ge=="/"?Ee-X.length:_e+V.length}),ke="",_e+=V.length-1,B=P,ge=="{"&&(V=="}}"?_e++:l(ne[ne.length-1]))):ke+=x.charAt(_e);return Nt(Ee,!0),ne};function l(w){w.n.substr(w.n.length-1)==="}"&&(w.n=w.n.substring(0,w.n.length-1))}function c(w){return w.trim?w.trim():w.replace(/^\s*|\s*$/g,"")}function u(w,x,y){if(x.charAt(y)!=w.charAt(0))return!1;for(var C=1,P=w.length;C<P;C++)if(x.charAt(y+C)!=w.charAt(C))return!1;return!0}var f={_t:!0,"\n":!0,$:!0,"/":!0};function d(w,x,y,C){var P=[],L=null,N=null,B=null;for(N=y[y.length-1];w.length>0;){if(B=w.shift(),N&&N.tag=="<"&&!(B.tag in f))throw new Error("Illegal content in < super tag.");if(t.tags[B.tag]<=t.tags.$||h(B,C))y.push(B),B.nodes=d(w,B.tag,y,C);else if(B.tag=="/"){if(y.length===0)throw new Error("Closing tag without opener: /"+B.n);if(L=y.pop(),B.n!=L.n&&!p(B.n,L.n,C))throw new Error("Nesting error: "+L.n+" vs. "+B.n);return L.end=B.i,P}else B.tag==` +`&&(B.last=w.length==0||w[0].tag==` +`);P.push(B)}if(y.length>0)throw new Error("missing closing tag: "+y.pop().n);return P}function h(w,x){for(var y=0,C=x.length;y<C;y++)if(x[y].o==w.n)return w.tag="#",!0}function p(w,x,y){for(var C=0,P=y.length;C<P;C++)if(y[C].c==w&&y[C].o==x)return!0}function g(w){var x=[];for(var y in w)x.push('"'+b(y)+'": function(c,p,t,i) {'+w[y]+"}");return"{ "+x.join(",")+" }"}function v(w){var x=[];for(var y in w.partials)x.push('"'+b(y)+'":{name:"'+b(w.partials[y].name)+'", '+v(w.partials[y])+"}");return"partials: {"+x.join(",")+"}, subs: "+g(w.subs)}t.stringify=function(w,x,y){return"{code: function (c,p,i) { "+t.wrapMain(w.code)+" },"+v(w)+"}"};var _=0;t.generate=function(w,x,y){_=0;var C={code:"",subs:{},partials:{}};return t.walk(w,C),y.asString?this.stringify(C,x,y):this.makeTemplate(C,x,y)},t.wrapMain=function(w){return'var t=this;t.b(i=i||"");'+w+"return t.fl();"},t.template=t.Template,t.makeTemplate=function(w,x,y){var C=this.makePartials(w);return C.code=new Function("c","p","i",this.wrapMain(w.code)),new this.template(C,x,this,y)},t.makePartials=function(w){var x,y={subs:{},partials:w.partials,name:w.name};for(x in y.partials)y.partials[x]=this.makePartials(y.partials[x]);for(x in w.subs)y.subs[x]=new Function("c","p","t","i",w.subs[x]);return y};function b(w){return w.replace(s,"\\\\").replace(r,'\\"').replace(i,"\\n").replace(n,"\\r").replace(a,"\\u2028").replace(o,"\\u2029")}function S(w){return~w.indexOf(".")?"d":"f"}function k(w,x){var y="<"+(x.prefix||""),C=y+w.n+_++;return x.partials[C]={name:w.n,partials:{}},x.code+='t.b(t.rp("'+b(C)+'",c,p,"'+(w.indent||"")+'"));',C}t.codegen={"#":function(w,x){x.code+="if(t.s(t."+S(w.n)+'("'+b(w.n)+'",c,p,1),c,p,0,'+w.i+","+w.end+',"'+w.otag+" "+w.ctag+'")){t.rs(c,p,function(c,p,t){',t.walk(w.nodes,x),x.code+="});c.pop();}"},"^":function(w,x){x.code+="if(!t.s(t."+S(w.n)+'("'+b(w.n)+'",c,p,1),c,p,1,0,0,"")){',t.walk(w.nodes,x),x.code+="};"},">":k,"<":function(w,x){var y={partials:{},code:"",subs:{},inPartial:!0};t.walk(w.nodes,y);var C=x.partials[k(w,x)];C.subs=y.subs,C.partials=y.partials},$:function(w,x){var y={subs:{},code:"",partials:x.partials,prefix:w.n};t.walk(w.nodes,y),x.subs[w.n]=y.code,x.inPartial||(x.code+='t.sub("'+b(w.n)+'",c,p,i);')},"\n":function(w,x){x.code+=A('"\\n"'+(w.last?"":" + i"))},_v:function(w,x){x.code+="t.b(t.v(t."+S(w.n)+'("'+b(w.n)+'",c,p,0)));'},_t:function(w,x){x.code+=A('"'+b(w.text)+'"')},"{":E,"&":E};function E(w,x){x.code+="t.b(t.t(t."+S(w.n)+'("'+b(w.n)+'",c,p,0)));'}function A(w){return"t.b("+w+");"}t.walk=function(w,x){for(var y,C=0,P=w.length;C<P;C++)y=t.codegen[w[C].tag],y&&y(w[C],x);return x},t.parse=function(w,x,y){return y=y||{},d(w,"",[],y.sectionTags||[])},t.cache={},t.cacheKey=function(w,x){return[w,!!x.asString,!!x.disableLambda,x.delimiters,!!x.modelGet].join("||")},t.compile=function(w,x){x=x||{};var y=t.cacheKey(w,x),C=this.cache[y];if(C){var P=C.partials;for(var L in P)delete P[L].instance;return C}return C=this.generate(this.parse(this.scan(w,x.delimiters),w,x),w,x),this.cache[y]=C}})(typeof Mw!="undefined"?Mw:Hogan)});var UP=H(Dw=>{m();var z5={};(function(t){t.Template=function(d,h,p,g){d=d||{},this.r=d.code||this.r,this.c=p,this.options=g||{},this.text=h||"",this.partials=d.partials||{},this.subs=d.subs||{},this.buf=""},t.Template.prototype={r:function(d,h,p){return""},v:u,t:c,render:function(h,p,g){return this.ri([h],p||{},g)},ri:function(d,h,p){return this.r(d,h,p)},ep:function(d,h){var p=this.partials[d],g=h[p.name];if(p.instance&&p.base==g)return p.instance;if(typeof g=="string"){if(!this.c)throw new Error("No compiler available.");g=this.c.compile(g,this.options)}if(!g)return null;if(this.partials[d].base=g,p.subs){h.stackText||(h.stackText={});for(key in p.subs)h.stackText[key]||(h.stackText[key]=this.activeSub!==void 0&&h.stackText[this.activeSub]?h.stackText[this.activeSub]:this.text);g=r(g,p.subs,p.partials,this.stackSubs,this.stackPartials,h.stackText)}return this.partials[d].instance=g,g},rp:function(d,h,p,g){var v=this.ep(d,p);return v?v.ri(h,p,g):""},rs:function(d,h,p){var g=d[d.length-1];if(!f(g)){p(d,h,this);return}for(var v=0;v<g.length;v++)d.push(g[v]),p(d,h,this),d.pop()},s:function(d,h,p,g,v,_,b){var S;return f(d)&&d.length===0?!1:(typeof d=="function"&&(d=this.ms(d,h,p,g,v,_,b)),S=!!d,!g&&S&&h&&h.push(typeof d=="object"?d:h[h.length-1]),S)},d:function(d,h,p,g){var v,_=d.split("."),b=this.f(_[0],h,p,g),S=this.options.modelGet,k=null;if(d==="."&&f(h[h.length-2]))b=h[h.length-1];else for(var E=1;E<_.length;E++)v=e(_[E],b,S),v!==void 0?(k=b,b=v):b="";return g&&!b?!1:(!g&&typeof b=="function"&&(h.push(k),b=this.mv(b,h,p),h.pop()),b)},f:function(d,h,p,g){for(var v=!1,_=null,b=!1,S=this.options.modelGet,k=h.length-1;k>=0;k--)if(_=h[k],v=e(d,_,S),v!==void 0){b=!0;break}return b?(!g&&typeof v=="function"&&(v=this.mv(v,h,p)),v):g?!1:""},ls:function(d,h,p,g,v,_){var b=this.options.delimiters;return this.options.delimiters=_,this.b(this.ct(c(d.call(h,v,p)),h,g)),this.options.delimiters=b,!1},ct:function(d,h,p){if(this.options.disableLambda)throw new Error("Lambda features disabled.");return this.c.compile(d,this.options).render(h,p)},b:function(d){this.buf+=d},fl:function(){var d=this.buf;return this.buf="",d},ms:function(d,h,p,g,v,_,b){var S,k=h[h.length-1],E=d.call(k);return typeof E=="function"?g?!0:(S=this.activeSub&&this.subsText&&this.subsText[this.activeSub]?this.subsText[this.activeSub]:this.text,this.ls(E,k,h,p,S.substring(v,_),b)):E},mv:function(d,h,p){var g=h[h.length-1],v=d.call(g);return typeof v=="function"?this.ct(c(v.call(g)),g,p):v},sub:function(d,h,p,g){var v=this.subs[d];v&&(this.activeSub=d,v(h,p,this,g),this.activeSub=!1)}};function e(d,h,p){var g;return h&&typeof h=="object"&&(h[d]!==void 0?g=h[d]:p&&h.get&&typeof h.get=="function"&&(g=h.get(d))),g}function r(d,h,p,g,v,_){function b(){}b.prototype=d;function S(){}S.prototype=d.subs;var k,E=new b;E.subs=new S,E.subsText={},E.buf="",g=g||{},E.stackSubs=g,E.subsText=_;for(k in h)g[k]||(g[k]=h[k]);for(k in g)E.subs[k]=g[k];v=v||{},E.stackPartials=v;for(k in p)v[k]||(v[k]=p[k]);for(k in v)E.partials[k]=v[k];return E}var i=/&/g,n=/</g,s=/>/g,a=/\'/g,o=/\"/g,l=/[&<>\"\']/;function c(d){return String(d==null?"":d)}function u(d){return d=c(d),l.test(d)?d.replace(i,"&").replace(n,"<").replace(s,">").replace(a,"'").replace(o,"""):d}var f=Array.isArray||function(d){return Object.prototype.toString.call(d)==="[object Array]"}})(typeof Dw!="undefined"?Dw:z5)});var Ow=H((zq,GP)=>{m();var Th=HP();Th.Template=UP().Template;Th.template=Th.Template;GP.exports=Th});var zP=H(Ai=>{"use strict";m();Object.defineProperty(Ai,"__esModule",{value:!0});Ai.ColorSchemeType=Ai.DiffStyleType=Ai.LineMatchingType=Ai.OutputFormatType=Ai.LineType=void 0;var jP;(function(t){t.INSERT="insert",t.DELETE="delete",t.CONTEXT="context"})(jP||(Ai.LineType=jP={}));Ai.OutputFormatType={LINE_BY_LINE:"line-by-line",SIDE_BY_SIDE:"side-by-side"};Ai.LineMatchingType={LINES:"lines",WORDS:"words",NONE:"none"};Ai.DiffStyleType={WORD:"word",CHAR:"char"};var VP;(function(t){t.AUTO="auto",t.DARK="dark",t.LIGHT="light"})(VP||(Ai.ColorSchemeType=VP={}))});var iG={};bF(iG,{default:()=>Dp});module.exports=yF(iG);m();var Q$=Ht(Bg(),1),be=require("obsidian"),J$=Ht(require("path"),1),Op=Ht(require("fs/promises"),1);m();var jt={};m();var vd=class{constructor(e){this.plugin=e;this.tasks=[]}addTask(e,r){this.tasks.push({task:e,onFinished:r!=null?r:()=>{}}),this.tasks.length===1&&this.handleTask()}handleTask(){if(this.tasks.length>0){let e=this.tasks[0];e.task().then(r=>{e.onFinished(r),this.tasks.shift(),this.handleTask()},r=>{this.plugin.displayError(r),e.onFinished(void 0),this.tasks.shift(),this.handleTask()})}}clear(){this.tasks=[]}};m();var U=require("obsidian");m();var xk=require("obsidian"),wd="YYYY-MM-DD",Hg=`${wd} HH:mm`,Ug=`${wd} HH:mm:ss`,_d=40,il="conflict-files-obsidian-git.md",ht={commitMessage:"vault backup: {{date}}",autoCommitMessage:"vault backup: {{date}}",commitMessageScript:"",commitDateFormat:Ug,autoSaveInterval:0,autoPushInterval:0,autoPullInterval:0,autoPullOnBoot:!1,autoCommitOnlyStaged:!1,disablePush:!1,pullBeforePush:!0,disablePopups:!1,showErrorNotices:!0,disablePopupsForNoChanges:!1,listChangedFilesInMessageBody:!1,showStatusBar:!0,updateSubmodules:!1,syncMethod:"merge",mergeStrategy:"none",customMessageOnAutoBackup:!1,autoBackupAfterFileChange:!1,treeStructure:!1,refreshSourceControl:xk.Platform.isDesktopApp,basePath:"",differentIntervalCommitAndPush:!1,changedFilesInStatusBar:!1,showedMobileNotice:!1,refreshSourceControlTimer:7e3,showBranchStatusBar:!0,setLastSaveToLastCommit:!1,submoduleRecurseCheckout:!1,gitDir:"",showFileMenu:!0,authorInHistoryView:"hide",dateInHistoryView:!1,diffStyle:"split",hunks:{showSigns:!1,hunkCommands:!1,statusBar:"disabled"},lineAuthor:{show:!1,followMovement:"inactive",authorDisplay:"initials",showCommitHash:!1,dateTimeFormatOptions:"date",dateTimeFormatCustomString:Hg,dateTimeTimezone:"viewer-local",coloringMaxAge:"1y",colorNew:{r:255,g:150,b:150},colorOld:{r:120,g:160,b:255},textColorCss:"var(--text-muted)",ignoreWhitespace:!1}},Kt={type:"git-view",name:"Source Control",icon:"git-pull-request"},bi={type:"git-history-view",name:"History",icon:"history"},Ms={type:"split-diff-view",name:"Diff view",icon:"diff"},Ds={type:"diff-view",name:"Diff View",icon:"git-pull-request"},bd="C:\\Program Files\\Git\\cmd\\git.exe",yd=".git_credentials_input",ba="obsidian_askpass.sh",Ek=`#!/bin/sh + +PROMPT="$1" +TEMP_FILE="$OBSIDIAN_GIT_CREDENTIALS_INPUT" + +cleanup() { + rm -f "$TEMP_FILE" "$TEMP_FILE.response" +} +trap cleanup EXIT + +echo "$PROMPT" > "$TEMP_FILE" + +while [ ! -e "$TEMP_FILE.response" ]; do + if [ ! -e "$TEMP_FILE" ]; then + echo "Trigger file got removed: Abort" >&2 + exit 1 + fi + sleep 0.1 +done + +RESPONSE=$(cat "$TEMP_FILE.response") + +echo "$RESPONSE" +`,Sk=["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"];m();m();m();var _n=class{diff(e,r,i={}){let n;typeof i=="function"?(n=i,i={}):"callback"in i&&(n=i.callback);let s=this.castInput(e,i),a=this.castInput(r,i),o=this.removeEmpty(this.tokenize(s,i)),l=this.removeEmpty(this.tokenize(a,i));return this.diffWithOptionsObj(o,l,i,n)}diffWithOptionsObj(e,r,i,n){var s;let a=b=>{if(b=this.postProcess(b,i),n){setTimeout(function(){n(b)},0);return}else return b},o=r.length,l=e.length,c=1,u=o+l;i.maxEditLength!=null&&(u=Math.min(u,i.maxEditLength));let f=(s=i.timeout)!==null&&s!==void 0?s:1/0,d=Date.now()+f,h=[{oldPos:-1,lastComponent:void 0}],p=this.extractCommon(h[0],r,e,0,i);if(h[0].oldPos+1>=l&&p+1>=o)return a(this.buildValues(h[0].lastComponent,r,e));let g=-1/0,v=1/0,_=()=>{for(let b=Math.max(g,-c);b<=Math.min(v,c);b+=2){let S,k=h[b-1],E=h[b+1];k&&(h[b-1]=void 0);let A=!1;if(E){let x=E.oldPos-b;A=E&&0<=x&&x<o}let w=k&&k.oldPos+1<l;if(!A&&!w){h[b]=void 0;continue}if(!w||A&&k.oldPos<E.oldPos?S=this.addToPath(E,!0,!1,0,i):S=this.addToPath(k,!1,!0,1,i),p=this.extractCommon(S,r,e,b,i),S.oldPos+1>=l&&p+1>=o)return a(this.buildValues(S.lastComponent,r,e))||!0;h[b]=S,S.oldPos+1>=l&&(v=Math.min(v,b-1)),p+1>=o&&(g=Math.max(g,b+1))}c++};if(n)(function b(){setTimeout(function(){if(c>u||Date.now()>d)return n(void 0);_()||b()},0)})();else for(;c<=u&&Date.now()<=d;){let b=_();if(b)return b}}addToPath(e,r,i,n,s){let a=e.lastComponent;return a&&!s.oneChangePerToken&&a.added===r&&a.removed===i?{oldPos:e.oldPos+n,lastComponent:{count:a.count+1,added:r,removed:i,previousComponent:a.previousComponent}}:{oldPos:e.oldPos+n,lastComponent:{count:1,added:r,removed:i,previousComponent:a}}}extractCommon(e,r,i,n,s){let a=r.length,o=i.length,l=e.oldPos,c=l-n,u=0;for(;c+1<a&&l+1<o&&this.equals(i[l+1],r[c+1],s);)c++,l++,u++,s.oneChangePerToken&&(e.lastComponent={count:1,previousComponent:e.lastComponent,added:!1,removed:!1});return u&&!s.oneChangePerToken&&(e.lastComponent={count:u,previousComponent:e.lastComponent,added:!1,removed:!1}),e.oldPos=l,c}equals(e,r,i){return i.comparator?i.comparator(e,r):e===r||!!i.ignoreCase&&e.toLowerCase()===r.toLowerCase()}removeEmpty(e){let r=[];for(let i=0;i<e.length;i++)e[i]&&r.push(e[i]);return r}castInput(e,r){return e}tokenize(e,r){return Array.from(e)}join(e){return e.join("")}postProcess(e,r){return e}get useLongestToken(){return!1}buildValues(e,r,i){let n=[],s;for(;e;)n.push(e),s=e.previousComponent,delete e.previousComponent,e=s;n.reverse();let a=n.length,o=0,l=0,c=0;for(;o<a;o++){let u=n[o];if(u.removed)u.value=this.join(i.slice(c,c+u.count)),c+=u.count;else{if(!u.added&&this.useLongestToken){let f=r.slice(l,l+u.count);f=f.map(function(d,h){let p=i[c+h];return p.length>d.length?p:d}),u.value=this.join(f)}else u.value=this.join(r.slice(l,l+u.count));l+=u.count,u.added||(c+=u.count)}}return n}};m();var Gg=class extends _n{},kk=new Gg;function jg(t,e,r){return kk.diff(t,e,r)}m();m();function Vg(t,e){let r;for(r=0;r<t.length&&r<e.length;r++)if(t[r]!=e[r])return t.slice(0,r);return t.slice(0,r)}function zg(t,e){let r;if(!t||!e||t[t.length-1]!=e[e.length-1])return"";for(r=0;r<t.length&&r<e.length;r++)if(t[t.length-(r+1)]!=e[e.length-(r+1)])return t.slice(-r);return t.slice(-r)}function xd(t,e,r){if(t.slice(0,e.length)!=e)throw Error(`string ${JSON.stringify(t)} doesn't start with prefix ${JSON.stringify(e)}; this is a bug`);return r+t.slice(e.length)}function Ed(t,e,r){if(!e)return t+r;if(t.slice(-e.length)!=e)throw Error(`string ${JSON.stringify(t)} doesn't end with suffix ${JSON.stringify(e)}; this is a bug`);return t.slice(0,-e.length)+r}function nl(t,e){return xd(t,e,"")}function au(t,e){return Ed(t,e,"")}function Wg(t,e){return e.slice(0,hB(t,e))}function hB(t,e){let r=0;t.length>e.length&&(r=t.length-e.length);let i=e.length;t.length<e.length&&(i=t.length);let n=Array(i),s=0;n[0]=0;for(let a=1;a<i;a++){for(e[a]==e[s]?n[a]=n[s]:n[a]=s;s>0&&e[a]!=e[s];)s=n[s];e[a]==e[s]&&s++}s=0;for(let a=r;a<t.length;a++){for(;s>0&&t[a]!=e[s];)s=n[s];t[a]==e[s]&&s++}return s}function qg(t,e){let r=[];for(let i of Array.from(e.segment(t))){let n=i.segment;r.length&&/\s/.test(r[r.length-1])&&/\s/.test(n)?r[r.length-1]+=n:r.push(n)}return r}function Sd(t,e){if(e)return sl(t,e)[1];let r;for(r=t.length-1;r>=0&&t[r].match(/\s/);r--);return t.substring(r+1)}function ya(t,e){if(e)return sl(t,e)[0];let r=t.match(/^\s*/);return r?r[0]:""}function sl(t,e){if(!e)return[ya(t),Sd(t)];if(e.resolvedOptions().granularity!="word")throw new Error('The segmenter passed must have a granularity of "word"');let r=qg(t,e),i=r[0],n=r[r.length-1],s=/\s/.test(i)?i:"",a=/\s/.test(n)?n:"";return[s,a]}var kd="a-zA-Z0-9_\\u{AD}\\u{C0}-\\u{D6}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}",pB=new RegExp(`[${kd}]+|\\s+|[^${kd}]`,"ug"),Yg=class extends _n{equals(e,r,i){return i.ignoreCase&&(e=e.toLowerCase(),r=r.toLowerCase()),e.trim()===r.trim()}tokenize(e,r={}){let i;if(r.intlSegmenter){let a=r.intlSegmenter;if(a.resolvedOptions().granularity!="word")throw new Error('The segmenter passed must have a granularity of "word"');i=qg(e,a)}else i=e.match(pB)||[];let n=[],s=null;return i.forEach(a=>{/\s/.test(a)?s==null?n.push(a):n.push(n.pop()+a):s!=null&&/\s/.test(s)?n[n.length-1]==s?n.push(n.pop()+a):n.push(s+a):n.push(a),s=a}),n}join(e){return e.map((r,i)=>i==0?r:r.replace(/^\s+/,"")).join("")}postProcess(e,r){if(!e||r.oneChangePerToken)return e;let i=null,n=null,s=null;return e.forEach(a=>{a.added?n=a:a.removed?s=a:((n||s)&&Ak(i,s,n,a,r.intlSegmenter),i=a,n=null,s=null)}),(n||s)&&Ak(i,s,n,null,r.intlSegmenter),e}},mB=new Yg;function Ak(t,e,r,i,n){if(e&&r){let[s,a]=sl(e.value,n),[o,l]=sl(r.value,n);if(t){let c=Vg(s,o);t.value=Ed(t.value,o,c),e.value=nl(e.value,c),r.value=nl(r.value,c)}if(i){let c=zg(a,l);i.value=xd(i.value,l,c),e.value=au(e.value,c),r.value=au(r.value,c)}}else if(r){if(t){let s=ya(r.value,n);r.value=r.value.substring(s.length)}if(i){let s=ya(i.value,n);i.value=i.value.substring(s.length)}}else if(t&&i){let s=ya(i.value,n),[a,o]=sl(e.value,n),l=Vg(s,a);e.value=nl(e.value,l);let c=zg(nl(s,l),o);e.value=au(e.value,c),i.value=xd(i.value,s,c),t.value=Ed(t.value,s,s.slice(0,s.length-c.length))}else if(i){let s=ya(i.value,n),a=Sd(e.value,n),o=Wg(a,s);e.value=au(e.value,o)}else if(t){let s=Sd(t.value,n),a=ya(e.value,n),o=Wg(s,a);e.value=nl(e.value,o)}}var Xg=class extends _n{tokenize(e){let r=new RegExp(`(\\r?\\n)|[${kd}]+|[^\\S\\n\\r]+|[^${kd}]`,"ug");return e.match(r)||[]}},Ck=new Xg;function Zg(t,e,r){return Ck.diff(t,e,r)}m();var Kg=class extends _n{constructor(){super(...arguments),this.tokenize=vB}equals(e,r,i){return i.ignoreWhitespace?((!i.newlineIsToken||!e.includes(` +`))&&(e=e.trim()),(!i.newlineIsToken||!r.includes(` +`))&&(r=r.trim())):i.ignoreNewlineAtEof&&!i.newlineIsToken&&(e.endsWith(` +`)&&(e=e.slice(0,-1)),r.endsWith(` +`)&&(r=r.slice(0,-1))),super.equals(e,r,i)}},gB=new Kg;function Qg(t,e,r){return gB.diff(t,e,r)}function vB(t,e){e.stripTrailingCr&&(t=t.replace(/\r\n/g,` +`));let r=[],i=t.split(/(\n|\r\n)/);i[i.length-1]||i.pop();for(let n=0;n<i.length;n++){let s=i[n];n%2&&!e.newlineIsToken?r[r.length-1]+=s:r.push(s)}return r}m();var Tk={includeIndex:!0,includeUnderline:!0,includeFileHeaders:!0};function Jg(t,e,r,i,n,s,a){let o;a?typeof a=="function"?o={callback:a}:o=a:o={},typeof o.context=="undefined"&&(o.context=4);let l=o.context;if(o.newlineIsToken)throw new Error("newlineIsToken may not be used with patch-generation functions, only with diffing functions");if(o.callback){let{callback:u}=o;Qg(r,i,Object.assign(Object.assign({},o),{callback:f=>{let d=c(f);u(d)}}))}else return c(Qg(r,i,o));function c(u){if(!u)return;u.push({value:"",lines:[]});function f(b){return b.map(function(S){return" "+S})}let d=[],h=0,p=0,g=[],v=1,_=1;for(let b=0;b<u.length;b++){let S=u[b],k=S.lines||wB(S.value);if(S.lines=k,S.added||S.removed){if(!h){let E=u[b-1];h=v,p=_,E&&(g=l>0?f(E.lines.slice(-l)):[],h-=g.length,p-=g.length)}for(let E of k)g.push((S.added?"+":"-")+E);S.added?_+=k.length:v+=k.length}else{if(h)if(k.length<=l*2&&b<u.length-2)for(let E of f(k))g.push(E);else{let E=Math.min(k.length,l);for(let w of f(k.slice(0,E)))g.push(w);let A={oldStart:h,oldLines:v-h+E,newStart:p,newLines:_-p+E,lines:g};d.push(A),h=0,p=0,g=[]}v+=k.length,_+=k.length}}for(let b of d)for(let S=0;S<b.lines.length;S++)b.lines[S].endsWith(` +`)?b.lines[S]=b.lines[S].slice(0,-1):(b.lines.splice(S+1,0,"\\ No newline at end of file"),S++);return{oldFileName:t,newFileName:e,oldHeader:n,newHeader:s,hunks:d}}}function Ad(t,e){if(e||(e=Tk),Array.isArray(t)){if(t.length>1&&!e.includeFileHeaders)throw new Error("Cannot omit file headers on a multi-file patch. (The result would be unparseable; how would a tool trying to apply the patch know which changes are to which file?)");return t.map(i=>Ad(i,e)).join(` +`)}let r=[];e.includeIndex&&t.oldFileName==t.newFileName&&r.push("Index: "+t.oldFileName),e.includeUnderline&&r.push("==================================================================="),e.includeFileHeaders&&(r.push("--- "+t.oldFileName+(typeof t.oldHeader=="undefined"?"":" "+t.oldHeader)),r.push("+++ "+t.newFileName+(typeof t.newHeader=="undefined"?"":" "+t.newHeader)));for(let i=0;i<t.hunks.length;i++){let n=t.hunks[i];n.oldLines===0&&(n.oldStart-=1),n.newLines===0&&(n.newStart-=1),r.push("@@ -"+n.oldStart+","+n.oldLines+" +"+n.newStart+","+n.newLines+" @@");for(let s of n.lines)r.push(s)}return r.join(` +`)+` +`}function Pk(t,e,r,i,n,s,a){if(typeof a=="function"&&(a={callback:a}),a!=null&&a.callback){let{callback:o}=a;Jg(t,e,r,i,n,s,Object.assign(Object.assign({},a),{callback:l=>{o(l?Ad(l,a.headerOptions):void 0)}}))}else{let o=Jg(t,e,r,i,n,s,a);return o?Ad(o,a==null?void 0:a.headerOptions):void 0}}function ou(t,e,r,i,n,s){return Pk(t,t,e,r,i,n,s)}function wB(t){let e=t.endsWith(` +`),r=t.split(` +`).map(i=>i+` +`);return e?r.pop():r.push(r.pop().slice(0,-1)),r}var re=Ht(Bg(),1),xa=require("obsidian");m();function Rk(t,e){let r=Object.assign({},t.lineAuthor,e.lineAuthor);return Object.assign({},t,e,{lineAuthor:r})}var al=class extends Error{constructor(r){super("No network connection available");this.originalError=r}};m();var $k=require("obsidian"),bB={options:[],placeholder:"",allowEmpty:!1,onlySelection:!1,initialValue:void 0,obscure:!1},et=class extends $k.SuggestModal{constructor(e,r){if(super(e.app),this.config={...bB,...r},this.setPlaceholder(this.config.placeholder),this.config.obscure){this.inputEl.type="password";let i=this.containerEl.querySelector(".prompt-input-container");i.addClass("git-obscure-prompt"),i.setAttr("git-is-obscured","true");let n=i==null?void 0:i.createDiv({cls:"search-input-clear-button"});n.style.marginRight="32px",n.id="git-show-password",n.addEventListener("click",()=>{i.getAttr("git-is-obscured")==="true"?(this.inputEl.type="text",i.setAttr("git-is-obscured","false")):(this.inputEl.type="password",i.setAttr("git-is-obscured","true"))})}}openAndGetResult(){return new Promise(e=>{this.resolve=e,this.open(),this.config.initialValue!=null&&(this.inputEl.value=this.config.initialValue,this.inputEl.dispatchEvent(new Event("input")))})}onClose(){new Promise(e=>window.setTimeout(e,10)).then(()=>{this.resolve&&this.resolve(void 0)})}getSuggestions(e){return this.config.onlySelection?this.config.options:this.config.allowEmpty?[e.length>0?e:" ",...this.config.options]:[e.length>0?e:"...",...this.config.options]}renderSuggestion(e,r){this.config.obscure?r.hide():r.setText(e)}onChooseSuggestion(e,r){if(this.resolve){let i;this.config.allowEmpty&&e===" "?i="":e==="..."?i=void 0:i=e,this.resolve(i)}}};m();var Zk=Ht(Xk(),1),Kk=require("child_process"),Kn=require("obsidian");function Td(t){throw new Error(`Unexpected object: ${t}`)}function cu(t,e,r){return t===1?`${t} ${e}`:`${t} ${r!=null?r:e+"s"}`}var rv=(t,e)=>t==="."||e==null||e.length===0||e==="."?!0:e.length>=t.length?e.startsWith(t):t.startsWith(e);function ji(t,e){let r;if(e){if(e.button===0||e.button===1){let i=Kn.Keymap.isModEvent(e);r=t.workspace.getLeaf(i)}}else r=t.workspace.getLeaf(!1);return r}function bn(t,e,r,i,n){if(e.button==2){let s=t.vault.getAbstractFileByPath(r);if(s!=null){let a=new Kn.Menu;t.workspace.trigger("file-menu",a,s,n,i),a.showAtPosition({x:e.pageX,y:e.pageY})}else{let a=new Kn.Menu;t.workspace.trigger("obsidian-git:menu",a,r,n,i),a.showAtPosition({x:e.pageX,y:e.pageY})}}}function Os(t){throw new Error("Impossible branch: "+t)}function iv(t){return`rgb(${t.r},${t.g},${t.b})`}function Qk(t){var s;let e=(s=Zk.fromString(t))==null?void 0:s.toRgbaArray();if(e===void 0)return;let[r,i,n]=e;return{r,g:i,b:n}}function Jk(t){return t.diff(Kn.moment.unix(0),"seconds")}function eA(t){if(t.length!==0)return t.slice().sort()[Math.floor(t.length/2)]}function uu(t,e){return new Proxy(t,{get(r,i){return i==="length"?Math.min(e,r.length):r[i]}})}function tA(t,e,r){return t.length<=e?new Array(e-t.length).fill(r).join("")+t:t.substring(t.length-e)}function rA(t,e){if(e<=0)return t;let r=new Array(e).fill(" ").join(""),i=t.substring(e,t.length);return r+i}function nv(t,e,r){return t<=e&&e<=r}function Qn(t){let[e,...r]=t.split("/");return[e,r.length===0?void 0:r.join("/")]}function yn(t){return t.endsWith("/")?t:t.split("/").last().replace(/\.md$/,"")}function iA(t){return t===1?"1 minute":`${t} minutes`}function DB(t){let e=t.lastIndexOf(".");return t.substring(e+1)}function ll(t){if(t.endsWith(".md"))return!1;let e=DB(t);return Sk.includes(e)}function sv(t){return(t.startsWith("https://github.com/")||t.startsWith("https://gitlab.com/"))&&(t.endsWith(".git")||(t=t+".git")),t}function cl(t,e){let r=e.vault.getAbstractFileByPath(t);if(!(r instanceof Kn.TFile))return!1;try{return!!e.viewRegistry.getTypeByExtension(r.extension)}catch(i){return!0}}function nA({isFolder:t,gitRelativePath:e}){let r="/";return r+=e,t&&(r+="/"),r.replace(/([\\!#*?[\]])/g,String.raw`\$1`).replace(/\s(?=\s*$)/g,String.raw`\ `)}function ul(t,e,r,i){let n=e.target;t.workspace.trigger("hover-link",{event:e,source:r.getViewType(),hoverParent:r,targetEl:n,linktext:i})}function fu(t,e,r={}){return new Promise((i,n)=>{let s=(0,Kk.spawn)(t,e,r),a="",o="";s.stdout.on("data",l=>{a+=l.toString()}),s.stderr.on("data",l=>{o+=l.toString()}),s.on("error",l=>{i({error:new Error(l.message),stdout:a,stderr:a,code:1})}),s.on("close",l=>{i({stdout:a,stderr:o,code:l!=null?l:1,error:void 0})})})}m();var sA=require("os"),Pd=require("obsidian"),fl=class{constructor(e){this.plugin=e,this.app=e.app}getRelativeVaultPath(e){return this.plugin.settings.basePath?this.plugin.settings.basePath+"/"+e:e}getRelativeRepoPath(e,r=!0){return r&&this.plugin.settings.basePath.length>0?e.substring(this.plugin.settings.basePath.length+1):e}unload(){}_getTreeStructure(e,r=0){let i=[];for(e=[...e];e.length>0;){let n=e.first(),s=n.path.substring(r);if(s.contains("/")){let a=s.substring(0,s.indexOf("/")),o=e.filter(c=>c.path.substring(r).startsWith(a+"/"));o.forEach(c=>e.remove(c));let l=n.path.substring(0,s.indexOf("/")+r);i.push({title:a,path:l,vaultPath:this.getRelativeVaultPath(l),children:this._getTreeStructure(o,(r>0?r+a.length:a.length)+1)})}else i.push({title:s,data:n,path:n.path,vaultPath:this.getRelativeVaultPath(n.path)}),e.remove(n)}return i}simplify(e){var r,i,n,s;for(let a of e){for(;;){let o=((r=a.children)==null?void 0:r.length)==1,l=((n=(i=a.children)==null?void 0:i.first())==null?void 0:n.data)==null;if(!(a.children!=null&&o&&l))break;let c=a.children.first();a.title+="/"+c.title,a.data=c.data,a.path=c.path,a.vaultPath=c.vaultPath,a.children=c.children}a.children!=null&&this.simplify(a.children),(s=a.children)==null||s.sort((o,l)=>{let c=(l.data==null?1:0)-(o.data==null?1:0);return c!=0?c:o.title.localeCompare(l.title)})}return e.sort((a,o)=>{let l=(o.data==null?1:0)-(a.data==null?1:0);return l!=0?l:a.title.localeCompare(o.title)})}getTreeStructure(e){let r=this._getTreeStructure(e);return this.simplify(r)}async formatCommitMessage(e){let r;if(e.includes("{{numFiles}}")){r=await this.status();let i=r.staged.length;e=e.replace("{{numFiles}}",String(i))}if(e.includes("{{hostname}}")){let i=this.plugin.localStorage.getHostname()||"";!i&&Pd.Platform.isDesktopApp&&(i=(0,sA.hostname)()),e=e.replace("{{hostname}}",i)}if(e.includes("{{files}}")){r=r!=null?r:await this.status();let i={},n="";if(r.staged.length<100){r.staged.forEach(a=>{a.index in i?i[a.index].push(a.path):i[a.index]=[a.path]});let s=[];for(let[a,o]of Object.entries(i))s.push(a+" "+o.join(" "));n=s.join(", ")}else n="Too many files to list";e=e.replace("{{files}}",n)}if(e=e.replace("{{date}}",(0,Pd.moment)().format(this.plugin.settings.commitDateFormat)),this.plugin.settings.listChangedFilesInMessageBody){let i=r!=null?r:await this.status(),n="";i.staged.length<100?n=i.staged.map(s=>s.path).join(` +`):n="Too many files to list",e=e+` + +Affected files: +`+n}return e}};m();var Ls=require("obsidian"),Rd=class{constructor(e,r){this.plugin=r;this.promises={};this.adapter=e.adapter,this.vault=e,this.lastBasePath=this.plugin.settings.basePath,this.promises.readFile=this.readFile.bind(this),this.promises.writeFile=this.writeFile.bind(this),this.promises.readdir=this.readdir.bind(this),this.promises.mkdir=this.mkdir.bind(this),this.promises.rmdir=this.rmdir.bind(this),this.promises.stat=this.stat.bind(this),this.promises.unlink=this.unlink.bind(this),this.promises.lstat=this.lstat.bind(this),this.promises.readlink=this.readlink.bind(this),this.promises.symlink=this.symlink.bind(this)}async readFile(e,r){var i;if(this.maybeLog("Read: "+e+JSON.stringify(r)),r=="utf8"||r.encoding=="utf8"){let n=this.vault.getAbstractFileByPath(e);return n instanceof Ls.TFile?(this.maybeLog("Reuse"),this.vault.read(n)):this.adapter.read(e)}else{if(e.endsWith(this.gitDir+"/index"))return this.plugin.settings.basePath!=this.lastBasePath?(this.clearIndex(),this.lastBasePath=this.plugin.settings.basePath,this.adapter.readBinary(e)):(i=this.index)!=null?i:this.adapter.readBinary(e);let n=this.vault.getAbstractFileByPath(e);return n instanceof Ls.TFile?(this.maybeLog("Reuse"),this.vault.readBinary(n)):this.adapter.readBinary(e)}}async writeFile(e,r){if(this.maybeLog("Write: "+e),typeof r=="string"){let i=this.vault.getAbstractFileByPath(e);return i instanceof Ls.TFile?this.vault.modify(i,r):this.adapter.write(e,r)}else if(e.endsWith(this.gitDir+"/index"))this.index=r,this.indexmtime=Date.now();else{let i=this.vault.getAbstractFileByPath(e);return i instanceof Ls.TFile?this.vault.modifyBinary(i,r):this.adapter.writeBinary(e,r)}}async readdir(e){e==="."&&(e="/");let r=await this.adapter.list(e),i=[...r.files,...r.folders],n;return e!=="/"?n=i.map(s=>(0,Ls.normalizePath)(s.substring(e.length))):n=i,n}async mkdir(e){return this.adapter.mkdir(e)}async rmdir(e,r){var i,n;return this.adapter.rmdir(e,(n=(i=r==null?void 0:r.options)==null?void 0:i.recursive)!=null?n:!1)}async stat(e){if(e.endsWith(this.gitDir+"/index")){if(this.index!==void 0&&this.indexctime!=null&&this.indexmtime!=null)return{isFile:()=>!0,isDirectory:()=>!1,isSymbolicLink:()=>!1,size:this.index.byteLength,type:"file",ctimeMs:this.indexctime,mtimeMs:this.indexmtime};{let i=await this.adapter.stat(e);if(i==null)throw{code:"ENOENT"};return this.indexctime=i.ctime,this.indexmtime=i.mtime,{ctimeMs:i.ctime,mtimeMs:i.mtime,size:i.size,type:"file",isFile:()=>!0,isDirectory:()=>!1,isSymbolicLink:()=>!1}}}e==="."&&(e="/");let r=this.vault.getAbstractFileByPath(e);if(this.maybeLog("Stat: "+e),r instanceof Ls.TFile)return this.maybeLog("Reuse stat"),{ctimeMs:r.stat.ctime,mtimeMs:r.stat.mtime,size:r.stat.size,type:"file",isFile:()=>!0,isDirectory:()=>!1,isSymbolicLink:()=>!1};{let i=await this.adapter.stat(e);if(i)return{ctimeMs:i.ctime,mtimeMs:i.mtime,size:i.size,type:i.type==="folder"?"directory":i.type,isFile:()=>i.type==="file",isDirectory:()=>i.type==="folder",isSymbolicLink:()=>!1};throw{code:"ENOENT"}}}async unlink(e){return this.adapter.remove(e)}async lstat(e){return this.stat(e)}async readlink(e){throw new Error(`readlink of (${e}) is not implemented.`)}async symlink(e){throw new Error(`symlink of (${e}) is not implemented.`)}async saveAndClear(){this.index!==void 0&&await this.adapter.writeBinary(this.plugin.gitManager.getRelativeVaultPath(this.gitDir+"/index"),this.index,{ctime:this.indexctime,mtime:this.indexmtime}),this.clearIndex()}clearIndex(){this.index=void 0,this.indexctime=void 0,this.indexmtime=void 0}get gitDir(){return this.plugin.settings.gitDir||".git"}maybeLog(e){}};var fA=Ht(uA(),1),Vi=class extends fl{constructor(r){super(r);this.FILE=0;this.HEAD=1;this.WORKDIR=2;this.STAGE=3;this.status_mapping={"000":" ","003":"AD","020":"??","022":"A ","023":"AM",100:"D ",101:" D",103:"MD",110:"DA",111:" ",113:"MM",120:"DA",121:" M",122:"M ",123:"MM"};this.noticeLength=999999;this.fs=new Rd(this.app.vault,this.plugin)}getRepo(){return{fs:this.fs,dir:this.plugin.settings.basePath,gitdir:this.plugin.settings.gitDir||void 0,onAuth:()=>{var r,i;return{username:(r=this.plugin.localStorage.getUsername())!=null?r:void 0,password:(i=this.plugin.localStorage.getPassword())!=null?i:void 0}},onAuthFailure:async()=>{new xa.Notice("Authentication failed. Please try with different credentials");let r=await new et(this.plugin,{placeholder:"Specify your username"}).openAndGetResult();if(r){let i=await new et(this.plugin,{placeholder:"Specify your password/personal access token",obscure:!0}).openAndGetResult();if(i)return this.plugin.localStorage.setUsername(r),this.plugin.localStorage.setPassword(i),{username:r,password:i}}return{cancel:!0}},http:{async request({url:r,method:i,headers:n,body:s}){let a;s&&(a=await BB(s));let o=await(0,xa.requestUrl)({url:r,method:i,headers:n,body:a,throw:!1});return{url:r,method:i,headers:o.headers,body:NB(o.arrayBuffer),statusCode:o.status,statusMessage:o.status.toString()}}}}}async wrapFS(r){try{let i=await r;return await this.fs.saveAndClear(),i}catch(i){throw await this.fs.saveAndClear(),i}}async status(r){let i,n=window.setTimeout(()=>{i=new xa.Notice("This takes longer: Getting status",this.noticeLength)},2e4);try{this.plugin.setPluginState({gitAction:1});let s={...this.getRepo()};(r==null?void 0:r.path)!=null&&(s.filepaths=[`${r.path}/`]);let a=(await this.wrapFS(re.default.statusMatrix(s))).map(f=>this.getFileStatusResult(f)),o=[],l=[],c=[];for(let f of a)f.workingDir!==" "&&o.push(f),f.index!==" "&&f.index!=="U"&&l.push(f),(f.index!=" "||f.workingDir!=" ")&&c.push(f);let u=[];return window.clearTimeout(n),i==null||i.hide(),{all:c,changed:o,staged:l,conflicted:u}}catch(s){throw window.clearTimeout(n),i==null||i.hide(),this.plugin.displayError(s),s}}async commitAll({message:r,status:i,unstagedFiles:n}){try{return await this.checkAuthorInfo(),await this.stageAll({status:i,unstagedFiles:n}),this.commit({message:r})}catch(s){throw this.plugin.displayError(s),s}}async commit({message:r}){try{await this.checkAuthorInfo(),this.plugin.setPluginState({gitAction:4});let i=await this.formatCommitMessage(r),n=this.plugin.localStorage.getConflict(),s;if(n){let a=await this.branchInfo();s=[a.current,a.tracking]}await this.wrapFS(re.default.commit({...this.getRepo(),message:i,parent:s})),this.plugin.localStorage.setConflict(!1);return}catch(i){throw this.plugin.displayError(i),i}}async stage(r,i){let n=this.getRelativeRepoPath(r,i),s;i?s=r:s=this.getRelativeVaultPath(r);try{this.plugin.setPluginState({gitAction:3}),await this.app.vault.adapter.exists(s)?await this.wrapFS(re.default.add({...this.getRepo(),filepath:n})):await this.wrapFS(re.default.remove({...this.getRepo(),filepath:n}))}catch(a){throw this.plugin.displayError(a),a}}async stageAll({dir:r,status:i,unstagedFiles:n}){try{if(i)await Promise.all(i.changed.map(s=>s.workingDir!=="D"?this.wrapFS(re.default.add({...this.getRepo(),filepath:s.path})):re.default.remove({...this.getRepo(),filepath:s.path})));else{let s=n!=null?n:await this.getUnstagedFiles(r!=null?r:".");await Promise.all(s.map(({path:a,type:o})=>o=="D"?re.default.remove({...this.getRepo(),filepath:a}):this.wrapFS(re.default.add({...this.getRepo(),filepath:a}))))}}catch(s){throw this.plugin.displayError(s),s}}async unstage(r,i){try{this.plugin.setPluginState({gitAction:3}),r=this.getRelativeRepoPath(r,i),await this.wrapFS(re.default.resetIndex({...this.getRepo(),filepath:r}))}catch(n){throw this.plugin.displayError(n),n}}async unstageAll({dir:r,status:i}){try{let n;i?n=i.staged.map(s=>s.path):n=(await this.getStagedFiles(r!=null?r:".")).map(({path:a})=>a),await this.wrapFS(Promise.all(n.map(s=>re.default.resetIndex({...this.getRepo(),filepath:s}))))}catch(n){throw this.plugin.displayError(n),n}}async discard(r){try{this.plugin.setPluginState({gitAction:3}),await this.wrapFS(re.default.checkout({...this.getRepo(),filepaths:[r],force:!0}))}catch(i){throw this.plugin.displayError(i),i}}async discardAll({dir:r,status:i}){let n=[];i?r!=null?n=i.changed.filter(s=>s.workingDir!="U"&&s.path.startsWith(r)).map(s=>s.path):n=i.changed.filter(s=>s.workingDir!="U").map(s=>s.path):n=(await this.getUnstagedFiles(r)).filter(s=>s.type!="A").map(({path:s})=>s);try{await this.wrapFS(re.default.checkout({...this.getRepo(),filepaths:n,force:!0}))}catch(s){throw this.plugin.displayError(s),s}}async getUntrackedPaths(r){let i=[];if(r.status)for(let n of r.status.changed)n.index=="U"&&n.workingDir==="U"&&n.path.startsWith(r.path!=null?`${r.path}/`:"")&&i.push(n.path);else{let n=await this.status({path:r==null?void 0:r.path});for(let s of n.changed)s.index==="U"&&s.workingDir==="U"&&i.push(s.path)}return i}getProgressText(r,i){let n=`${r} progress:`;return i.phase&&(n=`${n} ${i.phase}:`),i.loaded&&(n=`${n} ${i.loaded}`,i.total&&(n=`${n} of ${i.total}`)),n}resolveRef(r){return this.wrapFS(re.default.resolveRef({...this.getRepo(),ref:r}))}async pull(){let r=this.showNotice("Initializing pull");try{this.plugin.setPluginState({gitAction:2});let i=await this.resolveRef("HEAD");await this.fetch();let n=await this.branchInfo();await this.checkAuthorInfo(),(await this.wrapFS(re.default.merge({...this.getRepo(),ours:n.current,theirs:n.tracking,abortOnConflict:!1,mergeDriver:this.plugin.settings.mergeStrategy!=="none"?({contents:l})=>{var b,S,k;let c=l[0],u=l[1],f=l[2],d=/^.*(\r?\n|$)/gm,h=(b=u.match(d))!=null?b:[],p=(S=c.match(d))!=null?S:[],g=(k=f.match(d))!=null?k:[],v=(0,fA.default)(h,p,g),_="";for(let E of v)E.ok&&(_+=E.ok.join("")),E.conflict&&(_+=this.plugin.settings.mergeStrategy==="ours"?E.conflict.a.join(""):E.conflict.b.join(""));return{cleanMerge:!0,mergedText:_}}:void 0}))).alreadyMerged||await this.wrapFS(re.default.checkout({...this.getRepo(),ref:n.current,onProgress:l=>{r!==void 0&&r.setMessage(this.getProgressText("Checkout",l))},remote:n.remote})),r==null||r.hide();let a=await this.resolveRef("HEAD"),o=await this.getFileChangesCount(i,a);return this.showNotice("Finished pull",!1),o.map(l=>({path:l.path,workingDir:"P",index:"P",vaultPath:this.getRelativeVaultPath(l.path)}))}catch(i){throw r==null||r.hide(),i instanceof re.Errors.MergeConflictError&&await this.plugin.handleConflict(i.data.filepaths.map(n=>this.getRelativeVaultPath(n))),this.plugin.displayError(i),i}}async push(){if(!await this.canPush())return 0;let r=this.showNotice("Initializing push");try{this.plugin.setPluginState({gitAction:1});let i=await this.branchInfo(),n=i.tracking,s=i.current,a=(await this.getFileChangesCount(s,n)).length;this.plugin.setPluginState({gitAction:5});let o=await this.getCurrentRemote();return await this.wrapFS(re.default.push({...this.getRepo(),remote:o,onProgress:l=>{r!==void 0&&r.setMessage(this.getProgressText("Pushing",l))}})),r==null||r.hide(),a}catch(i){throw r==null||r.hide(),this.plugin.displayError(i),i}}async getUnpushedCommits(){let r=await this.branchInfo(),i=r.tracking,n=r.current;if(i==null||n==null)return 0;let s=await this.resolveRef(n),a=await this.resolveRef(i);return(await this.getFileChangesCount(s,a)).length}async canPush(){let r=await this.branchInfo(),i=r.tracking,n=r.current,s=await this.resolveRef(n),a=await this.resolveRef(i);return s!=a}async checkRequirements(){return await this.plugin.app.vault.adapter.exists(`${this.getRepo().dir}/.git/HEAD`)?"valid":"missing-repo"}async branchInfo(){var r,i;try{let n=await re.default.currentBranch(this.getRepo())||"",s=await re.default.listBranches(this.getRepo()),a=(r=await this.getConfig(`branch.${n}.remote`))!=null?r:"origin",o=(i=await this.getConfig(`branch.${n}.merge`))==null?void 0:i.split("refs/heads")[1],l=o?a+o:void 0;return{current:n,tracking:l,branches:s,remote:a}}catch(n){throw this.plugin.displayError(n),n}}async getCurrentRemote(){var n;let r=await re.default.currentBranch(this.getRepo())||"";return(n=await this.getConfig(`branch.${r}.remote`))!=null?n:"origin"}async checkout(r,i){try{return this.wrapFS(re.default.checkout({...this.getRepo(),ref:r,force:!!i,remote:i}))}catch(n){throw this.plugin.displayError(n),n}}async createBranch(r){try{await this.wrapFS(re.default.branch({...this.getRepo(),ref:r,checkout:!0}))}catch(i){throw this.plugin.displayError(i),i}}async deleteBranch(r){try{await this.wrapFS(re.default.deleteBranch({...this.getRepo(),ref:r}))}catch(i){throw this.plugin.displayError(i),i}}branchIsMerged(r){return Promise.resolve(!0)}async init(){try{await this.wrapFS(re.default.init(this.getRepo()))}catch(r){throw this.plugin.displayError(r),r}}async clone(r,i,n){let s=this.showNotice("Initializing clone");try{await this.wrapFS(re.default.clone({...this.getRepo(),dir:i,url:r,depth:n,onProgress:a=>{s!==void 0&&s.setMessage(this.getProgressText("Cloning",a))}})),s==null||s.hide()}catch(a){throw s==null||s.hide(),this.plugin.displayError(a),a}}async setConfig(r,i){try{return this.wrapFS(re.default.setConfig({...this.getRepo(),path:r,value:i}))}catch(n){throw this.plugin.displayError(n),n}}async getConfig(r){try{return this.wrapFS(re.default.getConfig({...this.getRepo(),path:r}))}catch(i){throw this.plugin.displayError(i),i}}async fetch(r){let i=this.showNotice("Initializing fetch");try{let n={...this.getRepo(),onProgress:s=>{i!==void 0&&i.setMessage(this.getProgressText("Fetching",s))},remote:r!=null?r:await this.getCurrentRemote()};await this.wrapFS(re.default.fetch(n)),i==null||i.hide()}catch(n){throw this.plugin.displayError(n),i==null||i.hide(),n}}async setRemote(r,i){try{await this.wrapFS(re.default.addRemote({...this.getRepo(),remote:r,url:i,force:!0}))}catch(n){throw this.plugin.displayError(n),n}}async getRemoteBranches(r){let i=[];return i.push(...await this.wrapFS(re.default.listBranches({...this.getRepo(),remote:r}))),i.remove("HEAD"),i=i.map(n=>`${r}/${n}`),i}async getRemotes(){return(await this.wrapFS(re.default.listRemotes({...this.getRepo()}))).map(r=>r.remote)}async removeRemote(r){await this.wrapFS(re.default.deleteRemote({...this.getRepo(),remote:r}))}async getRemoteUrl(r){var i;return(i=(await this.wrapFS(re.default.listRemotes({...this.getRepo()}))).filter(n=>n.remote==r)[0])==null?void 0:i.url}async log(r,i=!0,n,s){let a=await this.wrapFS(re.default.log({...this.getRepo(),depth:n,ref:s}));return Promise.all(a.map(async o=>{let l=o.commit.message.split(` + +`);return{message:l[0],author:{name:o.commit.author.name,email:o.commit.author.email},body:l.slice(1).join(` + +`),date:new Date(o.commit.committer.timestamp).toDateString(),diff:{changed:0,files:(await this.getFileChangesCount(o.commit.parent.first(),o.oid)).map(c=>({path:c.path,status:c.type,vaultPath:this.getRelativeVaultPath(c.path),hash:o.oid}))},hash:o.oid,refs:[]}}))}updateBasePath(r){return this.getRepo().dir=r,Promise.resolve()}async updateUpstreamBranch(r){let[i,n]=Qn(r),s=await this.branchInfo();await this.wrapFS(re.default.push({...this.getRepo(),remote:i,remoteRef:n})),await this.setConfig(`branch.${s.current}.merge`,`refs/heads/${n}`)}updateGitPath(r){return Promise.resolve()}async getFileChangesCount(r,i){return this.walkDifference({walkers:[re.default.TREE({ref:r}),re.default.TREE({ref:i})]})}async walkDifference({walkers:r,dir:i}){return await this.wrapFS(re.default.walk({...this.getRepo(),trees:r,map:async function(s,[a,o]){if(!rv(s,i))return null;if(await(a==null?void 0:a.type())==="tree"||await(o==null?void 0:o.type())==="tree")return;let l=await(a==null?void 0:a.oid()),c=await(o==null?void 0:o.oid()),u="equal";if(l!==c&&(u="M"),l===void 0&&(u="A"),c===void 0&&(u="D"),l===void 0&&c===void 0&&(console.log("Something weird happened:"),console.log(a),console.log(o)),u!=="equal")return{path:s,type:u}}}))}async getStagedFiles(r="."){return(await this.walkDifference({walkers:[re.default.TREE({ref:"HEAD"}),re.default.STAGE()],dir:r})).map(n=>({vaultPath:this.getRelativeVaultPath(n.path),path:n.path}))}async getUnstagedFiles(r="."){let i,n=window.setTimeout(()=>{i=new xa.Notice("This takes longer: Getting status",this.noticeLength)},2e4);try{let s=this.getRepo(),a=await this.wrapFS(re.default.walk({...s,trees:[re.default.WORKDIR(),re.default.STAGE()],map:async function(o,[l,c]){if(!c&&l&&await re.default.isIgnored({...s,filepath:o})||!rv(o,r))return null;let[u,f]=await Promise.all([l&&l.type(),c&&c.type()]),d=[u,f].includes("blob");if((u==="tree"||u==="special")&&!d)return;if(f==="commit")return null;if((f==="tree"||f==="special")&&!d)return;let h=f==="blob"?await c.oid():void 0,p;return u==="blob"&&f!=="blob"?p="42":u==="blob"&&(p=await l.oid()),p?h?p!==h?{path:o,type:"M"}:null:{path:o,type:"A"}:{path:o,type:"D"}}}));return window.clearTimeout(n),i==null||i.hide(),a}catch(s){throw window.clearTimeout(n),i==null||i.hide(),this.plugin.displayError(s),s}}async getDiffString(r,i=!1,n){let s=this.getRelativeVaultPath(r),a=async(c,[u])=>{if(r==c){let f=await u.oid();return(await re.default.readBlob({...this.getRepo(),oid:f})).blob}};if(n){let c=await(0,re.readBlob)({...this.getRepo(),filepath:r,oid:n}).then(h=>new TextDecoder().decode(h.blob)).catch(h=>{if(!(h instanceof re.default.Errors.NotFoundError))throw h}),u=await re.default.readCommit({...this.getRepo(),oid:n}),f=await(0,re.readBlob)({...this.getRepo(),filepath:r,oid:u.commit.parent.first()}).then(h=>new TextDecoder().decode(h.blob)).catch(h=>{if(!(h instanceof re.default.Errors.NotFoundError))throw h});return ou(s,f!=null?f:"",c!=null?c:"")}let o=(await re.default.walk({...this.getRepo(),trees:[re.default.STAGE()],map:a})).first(),l=new TextDecoder().decode(o);if(i){let c=await this.resolveRef("HEAD").then(f=>(0,re.readBlob)({...this.getRepo(),filepath:r,oid:f})).then(f=>new TextDecoder().decode(f.blob)).catch(f=>{if(!(f instanceof re.default.Errors.NotFoundError))throw f});return ou(s,c!=null?c:"",l)}else{let c;return await this.app.vault.adapter.exists(s)?c=await this.app.vault.adapter.read(s):c="",ou(s,l,c)}}async getLastCommitTime(){let r=this.getRepo(),i=await this.resolveRef("HEAD"),s=(await re.default.readCommit({...r,oid:i})).commit.committer.timestamp;return new Date(s*1e3)}getFileStatusResult(r){let i=this.status_mapping[`${r[this.HEAD]}${r[this.WORKDIR]}${r[this.STAGE]}`];return{index:i[0]=="?"?"U":i[0],workingDir:i[1]=="?"?"U":i[1],path:r[this.FILE],vaultPath:this.getRelativeVaultPath(r[this.FILE])}}async checkAuthorInfo(){let r=await this.getConfig("user.name"),i=await this.getConfig("user.email");if(!r||!i)throw Error("Git author name and email are not set. Please set both fields in the settings.")}showNotice(r,i=!0){if(!this.plugin.settings.disablePopups)return new xa.Notice(r,i?this.noticeLength:void 0)}};async function*NB(t){yield new Uint8Array(t)}async function BB(t){let e=new ReadableStream({async start(i){for await(let n of t)i.enqueue(n);i.close()}});return await new Response(e).arrayBuffer()}m();var o2=Ht(Id(),1),ei=Ht(require("fs/promises"),1),Jn=require("obsidian"),ze=Ht(require("path"),1),yu=require("path");m();var jd=Ht(vA(),1);m();var ov=new WeakMap;function gl(...t){let e=new String(t);return ov.set(e,t),e}function yi(t){return t instanceof String&&ov.has(t)}function vl(t){var e;return(e=ov.get(t))!=null?e:[]}var Ud=Ht(Id(),1),qC=require("child_process");var $T=Ht(cv(),1),GT=require("node:path");m();function*wA(t,e){let r=e==="global";for(let i of t)i.isGlobal===r&&(yield i)}var nH=new Set(["--add","--edit","--remove-section","--rename-section","--replace-all","--unset","--unset-all","-e"]),sH=new Set(["--get","--get-all","--get-color","--get-colorbool","--get-regexp","--get-urlmatch","--list","-l"]),aH=new Set(["edit","remove-section","rename-section","set","unset"]),oH=new Set(["get","get-color","get-colorbool","list"]);function lH(t,e){var i;for(let{name:n}of wA(t,"task")){if(nH.has(n))return wl(!0,e);if(sH.has(n))return wl(!1,e)}let r=(i=e.at(0))==null?void 0:i.toLowerCase();return r===void 0?null:aH.has(r)?wl(!0,e.slice(1)):oH.has(r)?wl(!1,e.slice(1)):e.length===1?wl(!1,e):wl(!0,e)}function wl(t=!1,e=[]){var i;let r=(i=e.at(0))==null?void 0:i.toLowerCase();return r===void 0?null:{isWrite:t,isRead:!t,key:r,value:e.at(1)}}function cH(t,e){return e.isWrite&&e.value!==void 0?{key:e.key,value:e.value,scope:t}:{key:e.key,scope:t}}function uH(t){let e=(t==null?void 0:t.indexOf("="))||-1;return!t||e<0?null:{key:t.slice(0,e).trim().toLowerCase(),value:t.slice(e+1)}}function fH(t){for(let{name:e}of wA(t,"task"))switch(e){case"--global":return"global";case"--system":return"system";case"--worktree":return"worktree";case"--local":return"local";case"--file":case"-f":return"file"}return"local"}function dH({name:t}){if(t==="-c"||t==="--config")return"inline";if(t==="--config-env")return"env"}function*hH(t){for(let e of t){let r=dH(e),i=r&&uH(e.value);i&&(yield{...i,scope:r})}}function pH(t,e,r){let i={read:[],write:[...hH(e)]};return t==="config"&&mH(i,fH(e),lH(e,r)),i}function mH(t,e,r){if(r===null)return;let i=cH(e,r);r.isWrite?t.write.push(i):t.read.push(i)}var _A={short:new Map([["c",!0]])},gH={short:new Map([["C",!0],["P",!1],["h",!1],["p",!1],["v",!1],..._A.short.entries()]),long:new Set(["attr-source","config-env","exec-path","git-dir","list-cmds","namespace","super-prefix","work-tree"])},vH={clone:{short:new Map([["b",!0],["j",!0],["l",!1],["n",!1],["o",!0],["q",!1],["s",!1],["u",!0]]),long:new Set(["branch","config","jobs","origin","upload-pack","u","template"])},commit:{short:new Map([["C",!0],["F",!0],["c",!0],["m",!0],["t",!0]]),long:new Set(["file","message","reedit-message","reuse-message","template"])},config:{short:new Map([["e",!1],["f",!0],["l",!1]]),long:new Set(["blob","comment","default","file","type","value"])},fetch:{short:new Map,long:new Set(["upload-pack"])},init:{short:new Map,long:new Set(["template"])},pull:{short:new Map,long:new Set(["upload-pack"])},push:{short:new Map,long:new Set(["exec","receive-pack"])}},wH={short:new Map,long:new Set};function _H(t){var r;let e=(r=vH[t!=null?t:""])!=null?r:wH;return{short:new Map([..._A.short.entries(),...e.short.entries()]),long:e.long}}function bA(t,e=gH){if(t.startsWith("--")){let r=t.indexOf("=");if(r>2)return[{name:t.slice(0,r),value:t.slice(r+1),needsNext:!1}];let i=t.slice(2);return[{name:t,needsNext:e.long.has(i)}]}if(t.length===2){let r=t.charAt(1),i=e.short.get(r);return[{name:t,needsNext:i===!0}]}return bH(t,e.short)}function bH(t,e){let r=t.slice(1).split(""),i=[];for(let n=0;n<r.length;n++){let s=r[n],a=e.get(s);if(a===void 0)return[{name:t,needsNext:!1}];if(a){let o=r.slice(n+1).join("");if(o&&![...o].every(l=>e.has(l)))return i.push({name:`-${s}`,value:o,needsNext:!1}),i}i.push({name:`-${s}`,needsNext:a})}return i}function yH(t,e=[]){let r=0;for(;r<t.length;){let i=String(t[r]);if(!i.startsWith("-")||i.length<2)break;let n=bA(i),s=r+1;for(let a of n){let o={name:a.name,value:a.value,absorbedNext:!1,isGlobal:!0};a.needsNext&&o.value===void 0&&s<t.length&&(o.value=String(t[s]),o.absorbedNext=!0,s++),e.push(o)}r=s}return{flags:e,taskIndex:r}}function xH(t,e,r=[]){let i=_H(e),n=[],s=[],a=0;for(;a<t.length;){let o=t[a];if(yi(o)){s.push(...vl(o)),a++;continue}let l=String(o);if(l==="--"){for(let f=a+1;f<t.length;f++){let d=t[f];yi(d)?s.push(...vl(d)):s.push(String(d))}break}if(!l.startsWith("-")||l.length<2){n.push(l),a++;continue}let c=bA(l,i),u=a+1;for(let f of c){let d={name:f.name,value:f.value,absorbedNext:!1,isGlobal:!1};f.needsNext&&d.value===void 0&&u<t.length&&!yi(t[u])&&(d.value=String(t[u]),d.absorbedNext=!0,u++),r.push(d)}a=u}return{flags:r,positionals:n,pathspecs:s}}function*EH({write:t}){for(let e of t)for(let r of SH){let i=r(e.key);i&&(yield i)}}function Ei(t,e,r=String(t)){let i=typeof t=="string"?new RegExp(`\\s*${t.toLowerCase()}`):t;return function(n){if(i.test(n))return{category:e,message:`Configuring ${r} is not permitted without enabling ${e}`}}}function xi(t,e){let r=new RegExp(`\\s*${t.toLowerCase().replace(/\./g,"(..+)?.")}`);return Ei(r,e,t)}var SH=[Ei("alias","allowUnsafeAlias"),Ei("core.askPass","allowUnsafeAskPass"),Ei("core.editor","allowUnsafeEditor"),Ei("core.fsmonitor","allowUnsafeFsMonitor"),Ei("core.gitProxy","allowUnsafeGitProxy"),Ei("core.hooksPath","allowUnsafeHooksPath"),Ei("core.pager","allowUnsafePager"),Ei("core.sshCommand","allowUnsafeSshCommand"),xi("credential.helper","allowUnsafeCredentialHelper"),xi("diff.command","allowUnsafeDiffExternal"),Ei("diff.external","allowUnsafeDiffExternal"),xi("diff.textconv","allowUnsafeDiffTextConv"),xi("filter.clean","allowUnsafeFilter"),xi("filter.smudge","allowUnsafeFilter"),xi("gpg.program","allowUnsafeGpgProgram"),Ei("init.templateDir","allowUnsafeTemplateDir"),xi("merge.driver","allowUnsafeMergeDriver"),xi("mergetool.path","allowUnsafeMergeDriver"),xi("mergetool.cmd","allowUnsafeMergeDriver"),xi("protocol.allow","allowUnsafeProtocolOverride"),xi("remote.receivepack","allowUnsafePack"),xi("remote.uploadpack","allowUnsafePack"),Ei("sequence.editor","allowUnsafeEditor")];function*kH(t,e){for(let r of e)for(let i of AH){let n=i(t,r.name);n&&(yield n)}}function du(t,e,r,i=String(e)){let n=typeof e=="string"?new RegExp(`\\s*${e.toLowerCase()}`):e,s=`Use of ${t?`${t} with option `:""}${i} is not permitted without enabling ${r}`;return function(a,o){if((!t||a===t)&&n.test(o))return{category:r,message:s}}}var AH=[du(null,/--(upload|receive)-pack/,"allowUnsafePack","--upload-pack or --receive-pack"),du("clone",/^-\w*u/,"allowUnsafePack"),du("clone","--u","allowUnsafePack"),du("push","--exec","allowUnsafePack"),du(null,"--template","allowUnsafeTemplateDir")];function yA(t,e,r){return[...kH(t,e),...EH(r)]}function CH(...t){let{flags:e,taskIndex:r}=yH(t),i=r<t.length?String(t[r]).toLowerCase():null,n=i!==null?t.slice(r+1):[],{positionals:s,pathspecs:a}=xH(n,i,e),o=pH(i,e,s);return{task:i,flags:e.map(PH),paths:a,config:o,vulnerabilities:TH(yA(i,e,o))}}function TH(t){return Object.defineProperty(t,"vulnerabilities",{value:t})}function PH({value:t,name:e}){return t!==void 0?{name:e,value:t}:{name:e}}var xA={editor:"allowUnsafeEditor",git_askpass:"allowUnsafeAskPass",git_config_global:"allowUnsafeConfigPaths",git_config_system:"allowUnsafeConfigPaths",git_config_count:"allowUnsafeConfigEnvCount",git_config:"allowUnsafeConfigPaths",git_editor:"allowUnsafeEditor",git_exec_path:"allowUnsafeConfigPaths",git_external_diff:"allowUnsafeDiffExternal",git_pager:"allowUnsafePager",git_proxy_command:"allowUnsafeGitProxy",git_template_dir:"allowUnsafeTemplateDir",git_sequence_editor:"allowUnsafeEditor",git_ssh:"allowUnsafeSshCommand",git_ssh_command:"allowUnsafeSshCommand",pager:"allowUnsafePager",prefix:"allowUnsafeConfigPaths",ssh_askpass:"allowUnsafeAskPass"};function*RH(t){var r;let e=parseInt((r=t.git_config_count)!=null?r:"0",10);for(let i=0;i<e;i++){let n=t[`git_config_key_${i}`],s=t[`git_config_value_${i}`];n!==void 0&&(yield{key:n.toLowerCase().trim(),value:s,scope:"env"})}}function*$H(t){for(let e of Object.keys(t))if(EA(e)){let r=xA[e];yield{category:r,message:`Use of "${e.toUpperCase()}" is not permitted without enabling ${r}`}}}function EA(t){return Object.hasOwn(xA,t)}function FH(t){let e={};for(let[r,i]of Object.entries(t)){let n=r.toLowerCase().trim();(EA(n)||n.startsWith("git"))&&(e[n]=String(i))}return e}function IH(t){let e=FH(t),r={read:[],write:[...RH(e)]},i=[...$H(e),...yA(null,[],r)];return{config:r,vulnerabilities:i}}function SA(t,e){return[...CH(...t).vulnerabilities,...IH(e).vulnerabilities]}var _l=Ht(cv(),1),i2=require("node:events");var Rv=Object.defineProperty,MH=Object.getOwnPropertyDescriptor,$v=Object.getOwnPropertyNames,DH=Object.prototype.hasOwnProperty,q=(t,e)=>function(){return t&&(e=(0,t[$v(t)[0]])(t=0)),e},OH=(t,e)=>function(){return e||(0,t[$v(t)[0]])((e={exports:{}}).exports,e),e.exports},xt=(t,e)=>{for(var r in e)Rv(t,r,{get:e[r],enumerable:!0})},LH=(t,e,r,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of $v(e))!DH.call(t,n)&&n!==r&&Rv(t,n,{get:()=>e[n],enumerable:!(i=MH(e,n))||i.enumerable});return t},wt=t=>LH(Rv({},"__esModule",{value:!0}),t),Nr,Bs=q({"src/lib/errors/git-error.ts"(){"use strict";Nr=class extends Error{constructor(t,e){super(e),this.task=t,Object.setPrototypeOf(this,new.target.prototype)}}}}),gu,xl=q({"src/lib/errors/git-response-error.ts"(){"use strict";Bs(),gu=class extends Nr{constructor(t,e){super(void 0,e||String(t)),this.git=t}}}}),rC,iC=q({"src/lib/errors/task-configuration-error.ts"(){"use strict";Bs(),rC=class extends Nr{constructor(t){super(void 0,t)}}}});function nC(t){return typeof t!="function"?Ta:t}function sC(t){return typeof t=="function"&&t!==Ta}function aC(t,e){let r=t.indexOf(e);return r<=0?[t,""]:[t.substr(0,r),t.substr(r+1)]}function oC(t,e=0){return lC(t)&&t.length>e?t[e]:void 0}function Ca(t,e=0){if(lC(t)&&t.length>e)return t[t.length-1-e]}function lC(t){return qd(t)}function vu(t="",e=!0,r=` +`){return t.split(r).reduce((i,n)=>{let s=e?n.trim():n;return s&&i.push(s),i},[])}function Fv(t,e){return vu(t,!0).map(r=>e(r))}function Iv(t){return(0,jd.exists)(t,jd.FOLDER)}function Si(t,e){return Array.isArray(t)?t.includes(e)||t.push(e):t.add(e),e}function cC(t,e){return Array.isArray(t)&&!t.includes(e)&&t.push(e),t}function Vd(t,e){if(Array.isArray(t)){let r=t.indexOf(e);r>=0&&t.splice(r,1)}else t.delete(e);return e}function xn(t){return Array.isArray(t)?t:[t]}function uC(t){return t.replace(/[\s-]+(.)/g,(e,r)=>r.toUpperCase())}function El(t){return xn(t).map(e=>e instanceof String?e:String(e))}function Xe(t,e=0){if(t==null)return e;let r=parseInt(t,10);return Number.isNaN(r)?e:r}function pu(t,e){let r=[];for(let i=0,n=t.length;i<n;i++)r.push(e,t[i]);return r}function mu(t){return(Array.isArray(t)?Buffer.concat(t):t).toString("utf-8")}function fC(t,e){let r={};return e.forEach(i=>{t[i]!==void 0&&(r[i]=t[i])}),r}function gv(t=0){return new Promise(e=>setTimeout(e,t))}function vv(t){if(t!==!1)return t}var bl,Ta,wu,zd=q({"src/lib/utils/util.ts"(){"use strict";Mv(),bl="\0",Ta=()=>{},wu=Object.prototype.toString.call.bind(Object.prototype.toString)}});function ar(t,e,r){return e(t)?t:arguments.length>2?r:void 0}function wv(t,e){let r=yi(t)?"string":typeof t;return/number|string|boolean/.test(r)&&(!e||!e.includes(r))}function Wd(t){return!!t&&wu(t)==="[object Object]"}function dC(t){return typeof t=="function"}var _u,hC,pt,Bd,qd,Mv=q({"src/lib/utils/argument-filters.ts"(){"use strict";zd(),_u=t=>Array.isArray(t),hC=t=>typeof t=="number",pt=t=>typeof t=="string"||yi(t),Bd=t=>pt(t)||Array.isArray(t)&&t.every(pt),qd=t=>t==null||"number|boolean|function".includes(typeof t)?!1:typeof t.length=="number"}}),_v,NH=q({"src/lib/utils/exit-codes.ts"(){"use strict";_v=(t=>(t[t.SUCCESS=0]="SUCCESS",t[t.ERROR=1]="ERROR",t[t.NOT_FOUND=-2]="NOT_FOUND",t[t.UNCLEAN=128]="UNCLEAN",t))(_v||{})}}),Hd,BH=q({"src/lib/utils/git-output-streams.ts"(){"use strict";Hd=class pC{constructor(e,r){this.stdOut=e,this.stdErr=r}asStrings(){return new pC(this.stdOut.toString("utf8"),this.stdErr.toString("utf8"))}}}});function HH(){throw new Error("LineParser:useMatches not implemented")}var ve,Ns,UH=q({"src/lib/utils/line-parser.ts"(){"use strict";ve=class{constructor(t,e){this.matches=[],this.useMatches=HH,this.parse=(r,i)=>(this.resetMatches(),this._regExp.every((n,s)=>this.addMatch(n,s,r(s)))?this.useMatches(i,this.prepareMatches())!==!1:!1),this._regExp=Array.isArray(t)?t:[t],e&&(this.useMatches=e)}resetMatches(){this.matches.length=0}prepareMatches(){return this.matches}addMatch(t,e,r){let i=r&&t.exec(r);return i&&this.pushMatch(e,i),!!i}pushMatch(t,e){this.matches.push(...e.slice(1))}},Ns=class extends ve{addMatch(t,e,r){return/^remote:\s/.test(String(r))&&super.addMatch(t,e,r)}pushMatch(t,e){(t>0||e.length>1)&&super.pushMatch(t,e)}}}});function mC(...t){let e=process.cwd(),r=Object.assign({baseDir:e,...gC},...t.filter(i=>typeof i=="object"&&i));return r.baseDir=r.baseDir||e,r.trimmed=r.trimmed===!0,r}var gC,GH=q({"src/lib/utils/simple-git-options.ts"(){"use strict";gC={binary:"git",maxConcurrentProcesses:5,config:[],trimmed:!1}}});function Dv(t,e=[]){return Wd(t)?Object.keys(t).reduce((r,i)=>{let n=t[i];if(yi(n))r.push(n);else if(wv(n,["boolean"]))r.push(i+"="+n);else if(Array.isArray(n))for(let s of n)wv(s,["string","number"])||r.push(i+"="+s);else r.push(i);return r},e):e}function Er(t,e=0,r=!1){let i=[];for(let n=0,s=e<0?t.length:e;n<s;n++)"string|number".includes(typeof t[n])&&i.push(String(t[n]));return Dv(Ov(t),i),r||i.push(...jH(t)),i}function jH(t){let e=typeof Ca(t)=="function";return El(ar(Ca(t,e?1:0),_u,[]))}function Ov(t){let e=dC(Ca(t));return ar(Ca(t,e?1:0),Wd)}function it(t,e=!0){let r=nC(Ca(t));return e||sC(r)?r:void 0}var VH=q({"src/lib/utils/task-options.ts"(){"use strict";Mv(),zd()}});function bv(t,e){return t(e.stdOut,e.stdErr)}function Br(t,e,r,i=!0){return xn(r).forEach(n=>{for(let s=vu(n,i),a=0,o=s.length;a<o;a++){let l=(c=0)=>{if(!(a+c>=o))return s[a+c]};e.some(({parse:c})=>c(l,t))}}),t}var zH=q({"src/lib/utils/task-parser.ts"(){"use strict";zd()}}),vC={};xt(vC,{ExitCodes:()=>_v,GitOutputStreams:()=>Hd,LineParser:()=>ve,NOOP:()=>Ta,NULL:()=>bl,RemoteLineParser:()=>Ns,append:()=>Si,appendTaskOptions:()=>Dv,asArray:()=>xn,asCamelCase:()=>uC,asFunction:()=>nC,asNumber:()=>Xe,asStringArray:()=>El,bufferToString:()=>mu,callTaskParser:()=>bv,createInstanceConfig:()=>mC,delay:()=>gv,filterArray:()=>_u,filterFunction:()=>dC,filterHasLength:()=>qd,filterNumber:()=>hC,filterPlainObject:()=>Wd,filterPrimitives:()=>wv,filterString:()=>pt,filterStringOrStringArray:()=>Bd,filterType:()=>ar,first:()=>oC,folderExists:()=>Iv,forEachLineWithContent:()=>Fv,getTrailingOptions:()=>Er,including:()=>cC,isUserFunction:()=>sC,last:()=>Ca,objectToString:()=>wu,orVoid:()=>vv,parseStringResponse:()=>Br,pick:()=>fC,prefixedArray:()=>pu,remove:()=>Vd,splitOn:()=>aC,toLinesWithContent:()=>vu,trailingFunctionArgument:()=>it,trailingOptionsArgument:()=>Ov});var fe=q({"src/lib/utils/index.ts"(){"use strict";Mv(),NH(),BH(),UH(),GH(),VH(),zH(),zd()}}),wC={};xt(wC,{CheckRepoActions:()=>yv,checkIsBareRepoTask:()=>bC,checkIsRepoRootTask:()=>_C,checkIsRepoTask:()=>WH});function WH(t){switch(t){case"bare":return bC();case"root":return _C()}return{commands:["rev-parse","--is-inside-work-tree"],format:"utf-8",onError:Yd,parser:Lv}}function _C(){return{commands:["rev-parse","--git-dir"],format:"utf-8",onError:Yd,parser(e){return/^\.(git)?$/.test(e.trim())}}}function bC(){return{commands:["rev-parse","--is-bare-repository"],format:"utf-8",onError:Yd,parser:Lv}}function qH(t){return/(Not a git repository|Kein Git-Repository)/i.test(String(t))}var yv,Yd,Lv,yC=q({"src/lib/tasks/check-is-repo.ts"(){"use strict";fe(),yv=(t=>(t.BARE="bare",t.IN_TREE="tree",t.IS_REPO_ROOT="root",t))(yv||{}),Yd=({exitCode:t},e,r,i)=>{if(t===128&&qH(e))return r(Buffer.from("false"));i(e)},Lv=t=>t.trim()==="true"}});function YH(t,e){let r=new xC(t),i=t?SC:EC;return vu(e).forEach(n=>{let s=n.replace(i,"");r.paths.push(s),(kC.test(s)?r.folders:r.files).push(s)}),r}var xC,EC,SC,kC,XH=q({"src/lib/responses/CleanSummary.ts"(){"use strict";fe(),xC=class{constructor(t){this.dryRun=t,this.paths=[],this.files=[],this.folders=[]}},EC=/^[a-z]+\s*/i,SC=/^[a-z]+\s+[a-z]+\s*/i,kC=/\/$/}}),xv={};xt(xv,{EMPTY_COMMANDS:()=>Xd,adhocExecTask:()=>AC,configurationErrorTask:()=>Lr,isBufferTask:()=>TC,isEmptyTask:()=>PC,straightThroughBufferTask:()=>CC,straightThroughStringTask:()=>Sr});function AC(t){return{commands:Xd,format:"empty",parser:t}}function Lr(t){return{commands:Xd,format:"empty",parser(){throw typeof t=="string"?new rC(t):t}}}function Sr(t,e=!1){return{commands:t,format:"utf-8",parser(r){return e?String(r).trim():r}}}function CC(t){return{commands:t,format:"buffer",parser(e){return e}}}function TC(t){return t.format==="buffer"}function PC(t){return t.format==="empty"||!t.commands.length}var Xd,_t=q({"src/lib/tasks/task.ts"(){"use strict";iC(),Xd=[]}}),RC={};xt(RC,{CONFIG_ERROR_INTERACTIVE_MODE:()=>Nv,CONFIG_ERROR_MODE_REQUIRED:()=>Bv,CONFIG_ERROR_UNKNOWN_OPTION:()=>Hv,CleanOptions:()=>Aa,cleanTask:()=>$C,cleanWithOptionsTask:()=>ZH,isCleanOptionsArray:()=>KH});function ZH(t,e){let{cleanMode:r,options:i,valid:n}=QH(t);return r?n.options?(i.push(...e),i.some(t3)?Lr(Nv):$C(r,i)):Lr(Hv+JSON.stringify(t)):Lr(Bv)}function $C(t,e){return{commands:["clean",`-${t}`,...e],format:"utf-8",parser(i){return YH(t==="n",i)}}}function KH(t){return Array.isArray(t)&&t.every(e=>Uv.has(e))}function QH(t){let e,r=[],i={cleanMode:!1,options:!0};return t.replace(/[^a-z]i/g,"").split("").forEach(n=>{JH(n)?(e=n,i.cleanMode=!0):i.options=i.options&&e3(r[r.length]=`-${n}`)}),{cleanMode:e,options:r,valid:i}}function JH(t){return t==="f"||t==="n"}function e3(t){return/^-[a-z]$/i.test(t)&&Uv.has(t.charAt(1))}function t3(t){return/^-[^\-]/.test(t)?t.indexOf("i")>0:t==="--interactive"}var Nv,Bv,Hv,Aa,Uv,FC=q({"src/lib/tasks/clean.ts"(){"use strict";XH(),fe(),_t(),Nv="Git clean interactive mode is not supported",Bv='Git clean mode parameter ("n" or "f") is required',Hv="Git clean unknown option found in: ",Aa=(t=>(t.DRY_RUN="n",t.FORCE="f",t.IGNORED_INCLUDED="x",t.IGNORED_ONLY="X",t.EXCLUDING="e",t.QUIET="q",t.RECURSIVE="d",t))(Aa||{}),Uv=new Set(["i",...El(Object.values(Aa))])}});function r3(t){let e=new MC;for(let r of IC(t))e.addValue(r.file,String(r.key),r.value);return e}function i3(t,e){let r=null,i=[],n=new Map;for(let s of IC(t,e))s.key===e&&(i.push(r=s.value),n.has(s.file)||n.set(s.file,[]),n.get(s.file).push(r));return{key:e,paths:Array.from(n.keys()),scopes:n,value:r,values:i}}function n3(t){return t.replace(/^(file):/,"")}function*IC(t,e=null){let r=t.split("\0");for(let i=0,n=r.length-1;i<n;){let s=n3(r[i++]),a=r[i++],o=e;if(a.includes(` +`)){let l=aC(a,` +`);o=l[0],a=l[1]}yield{file:s,key:o,value:a}}}var MC,s3=q({"src/lib/responses/ConfigList.ts"(){"use strict";fe(),MC=class{constructor(){this.files=[],this.values=Object.create(null)}get all(){return this._all||(this._all=this.files.reduce((t,e)=>Object.assign(t,this.values[e]),{})),this._all}addFile(t){if(!(t in this.values)){let e=Ca(this.files);this.values[t]=e?Object.create(this.values[e]):{},this.files.push(t)}return this.values[t]}addValue(t,e,r){let i=this.addFile(t);Object.hasOwn(i,e)?Array.isArray(i[e])?i[e].push(r):i[e]=[i[e],r]:i[e]=r,this._all=void 0}}}});function uv(t,e){return typeof t=="string"&&Object.hasOwn(Ev,t)?t:e}function a3(t,e,r,i){let n=["config",`--${i}`];return r&&n.push("--add"),n.push(t,e),{commands:n,format:"utf-8",parser(s){return s}}}function o3(t,e){let r=["config","--null","--show-origin","--get-all",t];return e&&r.splice(1,0,`--${e}`),{commands:r,format:"utf-8",parser(i){return i3(i,t)}}}function l3(t){let e=["config","--list","--show-origin","--null"];return t&&e.push(`--${t}`),{commands:e,format:"utf-8",parser(r){return r3(r)}}}function c3(){return{addConfig(t,e,...r){return this._runTask(a3(t,e,r[0]===!0,uv(r[1],"local")),it(arguments))},getConfig(t,e){return this._runTask(o3(t,uv(e,void 0)),it(arguments))},listConfig(...t){return this._runTask(l3(uv(t[0],void 0)),it(arguments))}}}var Ev,DC=q({"src/lib/tasks/config.ts"(){"use strict";s3(),fe(),Ev=(t=>(t.system="system",t.global="global",t.local="local",t.worktree="worktree",t))(Ev||{})}});function u3(t){return OC.has(t)}var fv,OC,LC=q({"src/lib/tasks/diff-name-status.ts"(){"use strict";fv=(t=>(t.ADDED="A",t.COPIED="C",t.DELETED="D",t.MODIFIED="M",t.RENAMED="R",t.CHANGED="T",t.UNMERGED="U",t.UNKNOWN="X",t.BROKEN="B",t))(fv||{}),OC=new Set(Object.values(fv))}});function f3(...t){return new BC().param(...t)}function d3(t){let e=new Set,r={};return Fv(t,i=>{let[n,s,a]=i.split(bl);e.add(n),(r[n]=r[n]||[]).push({line:Xe(s),path:n,preview:a})}),{paths:e,results:r}}function h3(){return{grep(t){let e=it(arguments),r=Er(arguments);for(let n of NC)if(r.includes(n))return this._runTask(Lr(`git.grep: use of "${n}" is not supported.`),e);typeof t=="string"&&(t=f3().param(t));let i=["grep","--null","-n","--full-name",...r,...t];return this._runTask({commands:i,format:"utf-8",parser(n){return d3(n)}},e)}}}var NC,hu,kA,BC,HC=q({"src/lib/tasks/grep.ts"(){"use strict";fe(),_t(),NC=["-h"],hu=Symbol("grepQuery"),BC=class{constructor(){this[kA]=[]}*[(kA=hu,Symbol.iterator)](){for(let t of this[hu])yield t}and(...t){return t.length&&this[hu].push("--and","(",...pu(t,"-e"),")"),this}param(...t){return this[hu].push(...pu(t,"-e")),this}}}}),UC={};xt(UC,{ResetMode:()=>Od,getResetMode:()=>m3,resetTask:()=>p3});function p3(t,e){let r=["reset"];return GC(t)&&r.push(`--${t}`),r.push(...e),Sr(r)}function m3(t){if(GC(t))return t;switch(typeof t){case"string":case"undefined":return"soft"}}function GC(t){return typeof t=="string"&&jC.includes(t)}var Od,jC,VC=q({"src/lib/tasks/reset.ts"(){"use strict";fe(),_t(),Od=(t=>(t.MIXED="mixed",t.SOFT="soft",t.HARD="hard",t.MERGE="merge",t.KEEP="keep",t))(Od||{}),jC=El(Object.values(Od))}});function g3(){return(0,Ud.default)("simple-git")}function AA(t,e,r){return!e||!String(e).replace(/\s*/,"")?r?(i,...n)=>{t(i,...n),r(i,...n)}:t:(i,...n)=>{t(`%s ${i}`,e,...n),r&&r(i,...n)}}function v3(t,e,{namespace:r}){if(typeof t=="string")return t;let i=e&&e.namespace||"";return i.startsWith(r)?i.substr(r.length+1):i||r}function Gv(t,e,r,i=g3()){let n=t&&`[${t}]`||"",s=[],a=typeof e=="string"?i.extend(e):e,o=v3(ar(e,pt),a,i);return c(r);function l(u,f){return Si(s,Gv(t,o.replace(/^[^:]+/,u),f,i))}function c(u){let f=u&&`[${u}]`||"",d=a&&AA(a,f)||Ta,h=AA(i,`${n} ${f}`,d);return Object.assign(a?d:h,{label:t,sibling:l,info:h,step:c})}}var zC=q({"src/lib/git-logger.ts"(){"use strict";fe(),Ud.default.formatters.L=t=>String(qd(t)?t.length:"-"),Ud.default.formatters.B=t=>Buffer.isBuffer(t)?t.toString("utf8"):wu(t)}}),WC,w3=q({"src/lib/runners/tasks-pending-queue.ts"(){"use strict";var t;Bs(),zC(),WC=(t=class{constructor(r="GitExecutor"){this.logLabel=r,this._queue=new Map}withProgress(r){return this._queue.get(r)}createProgress(r){let i=t.getName(r.commands[0]),n=Gv(this.logLabel,i);return{task:r,logger:n,name:i}}push(r){let i=this.createProgress(r);return i.logger("Adding task to the queue, commands = %o",r.commands),this._queue.set(r,i),i}fatal(r){for(let[i,{logger:n}]of Array.from(this._queue.entries()))i===r.task?(n.info("Failed %o",r),n("Fatal exception, any as-yet un-started tasks run through this executor will not be attempted")):n.info("A fatal exception occurred in a previous task, the queue has been purged: %o",r.message),this.complete(i);if(this._queue.size!==0)throw new Error(`Queue size should be zero after fatal: ${this._queue.size}`)}complete(r){this.withProgress(r)&&this._queue.delete(r)}attempt(r){let i=this.withProgress(r);if(!i)throw new Nr(void 0,"TasksPendingQueue: attempt called for an unknown task");return i.logger("Starting task"),i}static getName(r="empty"){return`task:${r}:${++t.counter}`}},t.counter=0,t)}});function ka(t,e){return{method:oC(t.commands)||"",commands:e}}function _3(t,e){return r=>{e("[ERROR] child process exception %o",r),t.push(Buffer.from(String(r.stack),"ascii"))}}function CA(t,e,r,i){return n=>{r("%s received %L bytes",e,n),i("%B",n),t.push(n)}}var Sv,b3=q({"src/lib/runners/git-executor-chain.ts"(){"use strict";Bs(),_t(),fe(),w3(),Sv=class{constructor(t,e,r){this._executor=t,this._scheduler=e,this._plugins=r,this._chain=Promise.resolve(),this._queue=new WC}get cwd(){return this._cwd||this._executor.cwd}set cwd(t){this._cwd=t}get env(){return this._executor.env}get outputHandler(){return this._executor.outputHandler}chain(){return this}push(t){return this._queue.push(t),this._chain=this._chain.then(()=>this.attemptTask(t))}async attemptTask(t){let e=await this._scheduler.next(),r=()=>this._queue.complete(t);try{let{logger:i}=this._queue.attempt(t);return await(PC(t)?this.attemptEmptyTask(t,i):this.attemptRemoteTask(t,i))}catch(i){throw this.onFatalException(t,i)}finally{r(),e()}}onFatalException(t,e){let r=e instanceof Nr?Object.assign(e,{task:t}):new Nr(t,e&&String(e));return this._chain=Promise.resolve(),this._queue.fatal(r),r}async attemptRemoteTask(t,e){let r=this._plugins.exec("spawn.binary","",ka(t,t.commands)),i=this._plugins.exec("spawn.args",[...t.commands],{...ka(t,t.commands),env:{...this.env}}),n=await this.gitResponse(t,r,i,this.outputHandler,e.step("SPAWN")),s=await this.handleTaskData(t,i,n,e.step("HANDLE"));return e("passing response to task's parser as a %s",t.format),TC(t)?bv(t.parser,s):bv(t.parser,s.asStrings())}async attemptEmptyTask(t,e){return e("empty task bypassing child process to call to task's parser"),t.parser(this)}handleTaskData(t,e,r,i){let{exitCode:n,rejection:s,stdOut:a,stdErr:o}=r;return new Promise((l,c)=>{i("Preparing to handle process response exitCode=%d stdOut=",n);let{error:u}=this._plugins.exec("task.error",{error:s},{...ka(t,e),...r});if(u&&t.onError)return i.info("exitCode=%s handling with custom error handler"),t.onError(r,u,f=>{i.info("custom error handler treated as success"),i("custom error returned a %s",wu(f)),l(new Hd(Array.isArray(f)?Buffer.concat(f):f,Buffer.concat(o)))},c);if(u)return i.info("handling as error: exitCode=%s stdErr=%s rejection=%o",n,o.length,s),c(u);i.info("retrieving task output complete"),l(new Hd(Buffer.concat(a),Buffer.concat(o)))})}async gitResponse(t,e,r,i,n){let s=n.sibling("output"),a=this._plugins.exec("spawn.options",{cwd:this.cwd,env:this.env,windowsHide:!0},ka(t,t.commands));return new Promise(o=>{let l=[],c=[];n.info("%s %o",e,r),n("%O",a);let u=this._beforeSpawn(t,r);if(u)return o({stdOut:l,stdErr:c,exitCode:9901,rejection:u});this._plugins.exec("spawn.before",void 0,{...ka(t,r),kill(d){u=d||u}});let f=(0,qC.spawn)(e,r,a);f.stdout.on("data",CA(l,"stdOut",n,s.step("stdOut"))),f.stderr.on("data",CA(c,"stdErr",n,s.step("stdErr"))),f.on("error",_3(c,n)),i&&(n("Passing child process stdOut/stdErr to custom outputHandler"),i(e,f.stdout,f.stderr,[...r])),this._plugins.exec("spawn.after",void 0,{...ka(t,r),spawned:f,close(d,h){o({stdOut:l,stdErr:c,exitCode:d,rejection:u||h})},kill(d){f.killed||(u=d,f.kill("SIGINT"))}})})}_beforeSpawn(t,e){let r;return this._plugins.exec("spawn.before",void 0,{...ka(t,e),kill(i){r=i||r}}),r}}}}),YC={};xt(YC,{GitExecutor:()=>XC});var XC,y3=q({"src/lib/runners/git-executor.ts"(){"use strict";b3(),XC=class{constructor(t,e,r){this.cwd=t,this._scheduler=e,this._plugins=r,this._chain=new Sv(this,this._scheduler,this._plugins)}chain(){return new Sv(this,this._scheduler,this._plugins)}push(t){return this._chain.push(t)}}}});function x3(t,e,r=Ta){let i=s=>{r(null,s)},n=s=>{(s==null?void 0:s.task)===t&&r(s instanceof gu?E3(s):s,void 0)};e.then(i,n)}function E3(t){let e=i=>{console.warn(`simple-git deprecation notice: accessing GitResponseError.${i} should be GitResponseError.git.${i}, this will no longer be available in version 3`),e=Ta};return Object.create(t,Object.getOwnPropertyNames(t.git).reduce(r,{}));function r(i,n){return n in t||(i[n]={enumerable:!1,configurable:!1,get(){return e(n),t.git[n]}}),i}}var S3=q({"src/lib/task-callback.ts"(){"use strict";xl(),fe()}});function TA(t,e){return AC(r=>{if(!Iv(t))throw new Error(`Git.cwd: cannot change to non-directory "${t}"`);return(e||r).cwd=t})}var k3=q({"src/lib/tasks/change-working-directory.ts"(){"use strict";fe(),_t()}});function dv(t){let e=["checkout",...t];return e[1]==="-b"&&e.includes("-B")&&(e[1]=Vd(e,"-B")),Sr(e)}function A3(){return{checkout(){return this._runTask(dv(Er(arguments,1)),it(arguments))},checkoutBranch(t,e){return this._runTask(dv(["-b",t,e,...Er(arguments)]),it(arguments))},checkoutLocalBranch(t){return this._runTask(dv(["-b",t,...Er(arguments)]),it(arguments))}}}var C3=q({"src/lib/tasks/checkout.ts"(){"use strict";fe(),_t()}});function T3(){return{count:0,garbage:0,inPack:0,packs:0,prunePackable:0,size:0,sizeGarbage:0,sizePack:0}}function P3(){return{countObjects(){return this._runTask({commands:["count-objects","--verbose"],format:"utf-8",parser(t){return Br(T3(),[ZC],t)}})}}}var ZC,R3=q({"src/lib/tasks/count-objects.ts"(){"use strict";fe(),ZC=new ve(/([a-z-]+): (\d+)$/,(t,[e,r])=>{let i=uC(e);Object.hasOwn(t,i)&&(t[i]=Xe(r))})}});function $3(t){return Br({author:null,branch:"",commit:"",root:!1,summary:{changes:0,insertions:0,deletions:0}},KC,t)}var KC,F3=q({"src/lib/parsers/parse-commit.ts"(){"use strict";fe(),KC=[new ve(/^\[([^\s]+)( \([^)]+\))? ([^\]]+)/,(t,[e,r,i])=>{t.branch=e,t.commit=i,t.root=!!r}),new ve(/\s*Author:\s(.+)/i,(t,[e])=>{let r=e.split("<"),i=r.pop();!i||!i.includes("@")||(t.author={email:i.substr(0,i.length-1),name:r.join("<").trim()})}),new ve(/(\d+)[^,]*(?:,\s*(\d+)[^,]*)(?:,\s*(\d+))/g,(t,[e,r,i])=>{t.summary.changes=parseInt(e,10)||0,t.summary.insertions=parseInt(r,10)||0,t.summary.deletions=parseInt(i,10)||0}),new ve(/^(\d+)[^,]*(?:,\s*(\d+)[^(]+\(([+-]))?/,(t,[e,r,i])=>{t.summary.changes=parseInt(e,10)||0;let n=parseInt(r,10)||0;i==="-"?t.summary.deletions=n:i==="+"&&(t.summary.insertions=n)})]}});function I3(t,e,r){return{commands:["-c","core.abbrev=40","commit",...pu(t,"-m"),...e,...r],format:"utf-8",parser:$3}}function M3(){return{commit(e,...r){let i=it(arguments),n=t(e)||I3(xn(e),xn(ar(r[0],Bd,[])),[...El(ar(r[1],_u,[])),...Er(arguments,0,!0)]);return this._runTask(n,i)}};function t(e){return!Bd(e)&&Lr("git.commit: requires the commit message to be supplied as a string/string[]")}}var D3=q({"src/lib/tasks/commit.ts"(){"use strict";F3(),fe(),_t()}});function O3(){return{firstCommit(){return this._runTask(Sr(["rev-list","--max-parents=0","HEAD"],!0),it(arguments))}}}var L3=q({"src/lib/tasks/first-commit.ts"(){"use strict";fe(),_t()}});function N3(t,e){let r=["hash-object",t];return e&&r.push("-w"),Sr(r,!0)}var B3=q({"src/lib/tasks/hash-object.ts"(){"use strict";_t()}});function H3(t,e,r){let i=String(r).trim(),n;if(n=QC.exec(i))return new Ld(t,e,!1,n[1]);if(n=JC.exec(i))return new Ld(t,e,!0,n[1]);let s="",a=i.split(" ");for(;a.length;)if(a.shift()==="in"){s=a.join(" ");break}return new Ld(t,e,/^re/i.test(i),s)}var Ld,QC,JC,U3=q({"src/lib/responses/InitSummary.ts"(){"use strict";Ld=class{constructor(t,e,r,i){this.bare=t,this.path=e,this.existing=r,this.gitDir=i}},QC=/^Init.+ repository in (.+)$/,JC=/^Rein.+ in (.+)$/}});function G3(t){return t.includes(jv)}function j3(t=!1,e,r){let i=["init",...r];return t&&!G3(i)&&i.splice(1,0,jv),{commands:i,format:"utf-8",parser(n){return H3(i.includes("--bare"),e,n)}}}var jv,V3=q({"src/lib/tasks/init.ts"(){"use strict";U3(),jv="--bare"}});function Vv(t){for(let e=0;e<t.length;e++){let r=zv.exec(t[e]);if(r)return`--${r[1]}`}return""}function z3(t){return zv.test(t)}var zv,bu=q({"src/lib/args/log-format.ts"(){"use strict";zv=/^--(stat|numstat|name-only|name-status)(=|$)/}}),eT,W3=q({"src/lib/responses/DiffSummary.ts"(){"use strict";eT=class{constructor(){this.changed=0,this.deletions=0,this.insertions=0,this.files=[]}}}});function tT(t=""){let e=rT[t];return r=>Br(new eT,e,r,!1)}var hv,PA,RA,$A,rT,iT=q({"src/lib/parsers/parse-diff-summary.ts"(){"use strict";bu(),W3(),LC(),fe(),hv=[new ve(/^(.+)\s+\|\s+(\d+)(\s+[+\-]+)?$/,(t,[e,r,i=""])=>{t.files.push({file:e.trim(),changes:Xe(r),insertions:i.replace(/[^+]/g,"").length,deletions:i.replace(/[^-]/g,"").length,binary:!1})}),new ve(/^(.+) \|\s+Bin ([0-9.]+) -> ([0-9.]+) ([a-z]+)/,(t,[e,r,i])=>{t.files.push({file:e.trim(),before:Xe(r),after:Xe(i),binary:!0})}),new ve(/(\d+) files? changed\s*((?:, \d+ [^,]+){0,2})/,(t,[e,r])=>{let i=/(\d+) i/.exec(r),n=/(\d+) d/.exec(r);t.changed=Xe(e),t.insertions=Xe(i==null?void 0:i[1]),t.deletions=Xe(n==null?void 0:n[1])})],PA=[new ve(/(\d+)\t(\d+)\t(.+)$/,(t,[e,r,i])=>{let n=Xe(e),s=Xe(r);t.changed++,t.insertions+=n,t.deletions+=s,t.files.push({file:i,changes:n+s,insertions:n,deletions:s,binary:!1})}),new ve(/-\t-\t(.+)$/,(t,[e])=>{t.changed++,t.files.push({file:e,after:0,before:0,binary:!0})})],RA=[new ve(/(.+)$/,(t,[e])=>{t.changed++,t.files.push({file:e,changes:0,insertions:0,deletions:0,binary:!1})})],$A=[new ve(/([ACDMRTUXB])([0-9]{0,3})\t(.[^\t]*)(\t(.[^\t]*))?$/,(t,[e,r,i,n,s])=>{t.changed++,t.files.push({file:s!=null?s:i,changes:0,insertions:0,deletions:0,binary:!1,status:vv(u3(e)&&e),from:vv(!!s&&i!==s&&i),similarity:Xe(r)})})],rT={"":hv,"--stat":hv,"--numstat":PA,"--name-status":$A,"--name-only":RA}}});function q3(t,e){return e.reduce((r,i,n)=>(r[i]=t[n]||"",r),Object.create({diff:null}))}function nT(t=Yv,e=sT,r=""){let i=tT(r);return function(n){let s=vu(n.trim(),!1,Wv).map(function(a){let o=a.split(qv),l=q3(o[0].split(t),e);return o.length>1&&o[1].trim()&&(l.diff=i(o[1])),l});return{all:s,latest:s.length&&s[0]||null,total:s.length}}}var Wv,qv,Yv,sT,aT=q({"src/lib/parsers/parse-list-log-summary.ts"(){"use strict";fe(),iT(),bu(),Wv="\xF2\xF2\xF2\xF2\xF2\xF2 ",qv=" \xF2\xF2",Yv=" \xF2 ",sT=["hash","date","message","refs","author_name","author_email"]}}),oT={};xt(oT,{diffSummaryTask:()=>Y3,validateLogFormatConfig:()=>Zd});function Y3(t){let e=Vv(t),r=["diff"];return e===""&&(e="--stat",r.push("--stat=4096")),r.push(...t),Zd(r)||{commands:r,format:"utf-8",parser:tT(e)}}function Zd(t){let e=t.filter(z3);if(e.length>1)return Lr(`Summary flags are mutually exclusive - pick one of ${e.join(",")}`);if(e.length&&t.includes("-z"))return Lr(`Summary flag ${e} parsing is not compatible with null termination option '-z'`)}var Xv=q({"src/lib/tasks/diff.ts"(){"use strict";bu(),iT(),_t()}});function X3(t,e){let r=[],i=[];return Object.keys(t).forEach(n=>{r.push(n),i.push(String(t[n]))}),[r,i.join(e)]}function Z3(t){return Object.keys(t).reduce((e,r)=>(r in kv||(e[r]=t[r]),e),{})}function lT(t={},e=[]){let r=ar(t.splitter,pt,Yv),i=Wd(t.format)?t.format:{hash:"%H",date:t.strictDate===!1?"%ai":"%aI",message:"%s",refs:"%D",body:t.multiLine?"%B":"%b",author_name:t.mailMap!==!1?"%aN":"%an",author_email:t.mailMap!==!1?"%aE":"%ae"},[n,s]=X3(i,r),a=[],o=[`--pretty=format:${Wv}${s}${qv}`,...e],l=t.n||t["max-count"]||t.maxCount;if(l&&o.push(`--max-count=${l}`),t.from||t.to){let c=t.symmetric!==!1?"...":"..";a.push(`${t.from||""}${c}${t.to||""}`)}return pt(t.file)&&o.push("--follow",gl(t.file)),Dv(Z3(t),o),{fields:n,splitter:r,commands:[...o,...a]}}function K3(t,e,r){let i=nT(t,e,Vv(r));return{commands:["log",...r],format:"utf-8",parser:i}}function Q3(){return{log(...r){let i=it(arguments),n=lT(Ov(arguments),El(ar(arguments[0],_u,[]))),s=e(...r)||Zd(n.commands)||t(n);return this._runTask(s,i)}};function t(r){return K3(r.splitter,r.fields,r.commands)}function e(r,i){return pt(r)&&pt(i)&&Lr("git.log(string, string) should be replaced with git.log({ from: string, to: string })")}}var kv,cT=q({"src/lib/tasks/log.ts"(){"use strict";bu(),aT(),fe(),_t(),Xv(),kv=(t=>(t[t["--pretty"]=0]="--pretty",t[t["max-count"]=1]="max-count",t[t.maxCount=2]="maxCount",t[t.n=3]="n",t[t.file=4]="file",t[t.format=5]="format",t[t.from=6]="from",t[t.to=7]="to",t[t.splitter=8]="splitter",t[t.symmetric=9]="symmetric",t[t.mailMap=10]="mailMap",t[t.multiLine=11]="multiLine",t[t.strictDate=12]="strictDate",t))(kv||{})}}),Nd,uT,J3=q({"src/lib/responses/MergeSummary.ts"(){"use strict";Nd=class{constructor(t,e=null,r){this.reason=t,this.file=e,this.meta=r}toString(){return`${this.file}:${this.reason}`}},uT=class{constructor(){this.conflicts=[],this.merges=[],this.result="success"}get failed(){return this.conflicts.length>0}get reason(){return this.result}toString(){return this.conflicts.length?`CONFLICTS: ${this.conflicts.join(", ")}`:"OK"}}}}),Av,fT,e8=q({"src/lib/responses/PullSummary.ts"(){"use strict";Av=class{constructor(){this.remoteMessages={all:[]},this.created=[],this.deleted=[],this.files=[],this.deletions={},this.insertions={},this.summary={changes:0,deletions:0,insertions:0}}},fT=class{constructor(){this.remote="",this.hash={local:"",remote:""},this.branch={local:"",remote:""},this.message=""}toString(){return this.message}}}});function pv(t){return t.objects=t.objects||{compressing:0,counting:0,enumerating:0,packReused:0,reused:{count:0,delta:0},total:{count:0,delta:0}}}function FA(t){let e=/^\s*(\d+)/.exec(t),r=/delta (\d+)/i.exec(t);return{count:Xe(e&&e[1]||"0"),delta:Xe(r&&r[1]||"0")}}var dT,t8=q({"src/lib/parsers/parse-remote-objects.ts"(){"use strict";fe(),dT=[new Ns(/^remote:\s*(enumerating|counting|compressing) objects: (\d+),/i,(t,[e,r])=>{let i=e.toLowerCase(),n=pv(t.remoteMessages);Object.assign(n,{[i]:Xe(r)})}),new Ns(/^remote:\s*(enumerating|counting|compressing) objects: \d+% \(\d+\/(\d+)\),/i,(t,[e,r])=>{let i=e.toLowerCase(),n=pv(t.remoteMessages);Object.assign(n,{[i]:Xe(r)})}),new Ns(/total ([^,]+), reused ([^,]+), pack-reused (\d+)/i,(t,[e,r,i])=>{let n=pv(t.remoteMessages);n.total=FA(e),n.reused=FA(r),n.packReused=Xe(i)})]}});function hT(t,e){return Br({remoteMessages:new mT},pT,e)}var pT,mT,gT=q({"src/lib/parsers/parse-remote-messages.ts"(){"use strict";fe(),t8(),pT=[new Ns(/^remote:\s*(.+)$/,(t,[e])=>(t.remoteMessages.all.push(e.trim()),!1)),...dT,new Ns([/create a (?:pull|merge) request/i,/\s(https?:\/\/\S+)$/],(t,[e])=>{t.remoteMessages.pullRequestUrl=e}),new Ns([/found (\d+) vulnerabilities.+\(([^)]+)\)/i,/\s(https?:\/\/\S+)$/],(t,[e,r,i])=>{t.remoteMessages.vulnerabilities={count:Xe(e),summary:r,url:i}})],mT=class{constructor(){this.all=[]}}}});function r8(t,e){let r=Br(new fT,vT,[t,e]);return r.message&&r}var IA,MA,DA,OA,vT,LA,Zv,wT=q({"src/lib/parsers/parse-pull.ts"(){"use strict";e8(),fe(),gT(),IA=/^\s*(.+?)\s+\|\s+\d+\s*(\+*)(-*)/,MA=/(\d+)\D+((\d+)\D+\(\+\))?(\D+(\d+)\D+\(-\))?/,DA=/^(create|delete) mode \d+ (.+)/,OA=[new ve(IA,(t,[e,r,i])=>{t.files.push(e),r&&(t.insertions[e]=r.length),i&&(t.deletions[e]=i.length)}),new ve(MA,(t,[e,,r,,i])=>r!==void 0||i!==void 0?(t.summary.changes=+e||0,t.summary.insertions=+r||0,t.summary.deletions=+i||0,!0):!1),new ve(DA,(t,[e,r])=>{Si(t.files,r),Si(e==="create"?t.created:t.deleted,r)})],vT=[new ve(/^from\s(.+)$/i,(t,[e])=>void(t.remote=e)),new ve(/^fatal:\s(.+)$/,(t,[e])=>void(t.message=e)),new ve(/([a-z0-9]+)\.\.([a-z0-9]+)\s+(\S+)\s+->\s+(\S+)$/,(t,[e,r,i,n])=>{t.branch.local=i,t.hash.local=e,t.branch.remote=n,t.hash.remote=r})],LA=(t,e)=>Br(new Av,OA,[t,e]),Zv=(t,e)=>Object.assign(new Av,LA(t,e),hT(t,e))}}),NA,_T,BA,i8=q({"src/lib/parsers/parse-merge.ts"(){"use strict";J3(),fe(),wT(),NA=[new ve(/^Auto-merging\s+(.+)$/,(t,[e])=>{t.merges.push(e)}),new ve(/^CONFLICT\s+\((.+)\): Merge conflict in (.+)$/,(t,[e,r])=>{t.conflicts.push(new Nd(e,r))}),new ve(/^CONFLICT\s+\((.+\/delete)\): (.+) deleted in (.+) and/,(t,[e,r,i])=>{t.conflicts.push(new Nd(e,r,{deleteRef:i}))}),new ve(/^CONFLICT\s+\((.+)\):/,(t,[e])=>{t.conflicts.push(new Nd(e,null))}),new ve(/^Automatic merge failed;\s+(.+)$/,(t,[e])=>{t.result=e})],_T=(t,e)=>Object.assign(BA(t,e),Zv(t,e)),BA=t=>Br(new uT,NA,t)}});function HA(t){return t.length?{commands:["merge",...t],format:"utf-8",parser(e,r){let i=_T(e,r);if(i.failed)throw new gu(i);return i}}:Lr("Git.merge requires at least one option")}var n8=q({"src/lib/tasks/merge.ts"(){"use strict";xl(),i8(),_t()}});function s8(t,e,r){let i=r.includes("deleted"),n=r.includes("tag")||/^refs\/tags/.test(t),s=!r.includes("new");return{deleted:i,tag:n,branch:!n,new:!s,alreadyUpdated:s,local:t,remote:e}}var UA,bT,GA,a8=q({"src/lib/parsers/parse-push.ts"(){"use strict";fe(),gT(),UA=[new ve(/^Pushing to (.+)$/,(t,[e])=>{t.repo=e}),new ve(/^updating local tracking ref '(.+)'/,(t,[e])=>{t.ref={...t.ref||{},local:e}}),new ve(/^[=*-]\s+([^:]+):(\S+)\s+\[(.+)]$/,(t,[e,r,i])=>{t.pushed.push(s8(e,r,i))}),new ve(/^Branch '([^']+)' set up to track remote branch '([^']+)' from '([^']+)'/,(t,[e,r,i])=>{t.branch={...t.branch||{},local:e,remote:r,remoteName:i}}),new ve(/^([^:]+):(\S+)\s+([a-z0-9]+)\.\.([a-z0-9]+)$/,(t,[e,r,i,n])=>{t.update={head:{local:e,remote:r},hash:{from:i,to:n}}})],bT=(t,e)=>{let r=GA(t,e),i=hT(t,e);return{...r,...i}},GA=(t,e)=>Br({pushed:[]},UA,[t,e])}}),yT={};xt(yT,{pushTagsTask:()=>o8,pushTask:()=>Kv});function o8(t={},e){return Si(e,"--tags"),Kv(t,e)}function Kv(t={},e){let r=["push",...e];return t.branch&&r.splice(1,0,t.branch),t.remote&&r.splice(1,0,t.remote),Vd(r,"-v"),Si(r,"--verbose"),Si(r,"--porcelain"),{commands:r,format:"utf-8",parser:bT}}var xT=q({"src/lib/tasks/push.ts"(){"use strict";a8(),fe()}});function l8(){return{showBuffer(){let t=["show",...Er(arguments,1)];return t.includes("--binary")||t.splice(1,0,"--binary"),this._runTask(CC(t),it(arguments))},show(){let t=["show",...Er(arguments,1)];return this._runTask(Sr(t),it(arguments))}}}var c8=q({"src/lib/tasks/show.ts"(){"use strict";fe(),_t()}}),jA,ET,u8=q({"src/lib/responses/FileStatusSummary.ts"(){"use strict";jA=/^(.+)\0(.+)$/,ET=class{constructor(t,e,r){if(this.path=t,this.index=e,this.working_dir=r,e==="R"||r==="R"){let i=jA.exec(t)||[null,t,t];this.from=i[2]||"",this.path=i[1]||""}}}}});function VA(t){let[e,r]=t.split(bl);return{from:r||e,to:e}}function Jr(t,e,r){return[`${t}${e}`,r]}function mv(t,...e){return e.map(r=>Jr(t,r,(i,n)=>i.conflicted.push(n)))}function f8(t,e){let r=e.trim();switch(" "){case r.charAt(2):return i(r.charAt(0),r.charAt(1),r.slice(3));case r.charAt(1):return i(" ",r.charAt(0),r.slice(2));default:return}function i(n,s,a){let o=`${n}${s}`,l=ST.get(o);l&&l(t,a),o!=="##"&&o!=="!!"&&t.files.push(new ET(a,n,s))}}var zA,ST,kT,d8=q({"src/lib/responses/StatusSummary.ts"(){"use strict";fe(),u8(),zA=class{constructor(){this.not_added=[],this.conflicted=[],this.created=[],this.deleted=[],this.ignored=void 0,this.modified=[],this.renamed=[],this.files=[],this.staged=[],this.ahead=0,this.behind=0,this.current=null,this.tracking=null,this.detached=!1,this.isClean=()=>!this.files.length}},ST=new Map([Jr(" ","A",(t,e)=>t.created.push(e)),Jr(" ","D",(t,e)=>t.deleted.push(e)),Jr(" ","M",(t,e)=>t.modified.push(e)),Jr("A"," ",(t,e)=>{t.created.push(e),t.staged.push(e)}),Jr("A","M",(t,e)=>{t.created.push(e),t.staged.push(e),t.modified.push(e)}),Jr("D"," ",(t,e)=>{t.deleted.push(e),t.staged.push(e)}),Jr("M"," ",(t,e)=>{t.modified.push(e),t.staged.push(e)}),Jr("M","M",(t,e)=>{t.modified.push(e),t.staged.push(e)}),Jr("R"," ",(t,e)=>{t.renamed.push(VA(e))}),Jr("R","M",(t,e)=>{let r=VA(e);t.renamed.push(r),t.modified.push(r.to)}),Jr("!","!",(t,e)=>{(t.ignored=t.ignored||[]).push(e)}),Jr("?","?",(t,e)=>t.not_added.push(e)),...mv("A","A","U"),...mv("D","D","U"),...mv("U","A","D","U"),["##",(t,e)=>{let r=/ahead (\d+)/,i=/behind (\d+)/,n=/^(.+?(?=(?:\.{3}|\s|$)))/,s=/\.{3}(\S*)/,a=/\son\s(\S+?)(?=\.{3}|$)/,o=r.exec(e);t.ahead=o&&+o[1]||0,o=i.exec(e),t.behind=o&&+o[1]||0,o=n.exec(e),t.current=ar(o==null?void 0:o[1],pt,null),o=s.exec(e),t.tracking=ar(o==null?void 0:o[1],pt,null),o=a.exec(e),o&&(t.current=ar(o==null?void 0:o[1],pt,t.current)),t.detached=/\(no branch\)/.test(e)}]]),kT=function(t){let e=t.split(bl),r=new zA;for(let i=0,n=e.length;i<n;){let s=e[i++].trim();s&&(s.charAt(0)==="R"&&(s+=bl+(e[i++]||"")),f8(r,s))}return r}}});function h8(t){return{format:"utf-8",commands:["status","--porcelain","-b","-u","--null",...t.filter(r=>!AT.includes(r))],parser(r){return kT(r)}}}var AT,p8=q({"src/lib/tasks/status.ts"(){"use strict";d8(),AT=["--null","-z"]}});function Gd(t=0,e=0,r=0,i="",n=!0){return Object.defineProperty({major:t,minor:e,patch:r,agent:i,installed:n},"toString",{value(){return`${this.major}.${this.minor}.${this.patch}`},configurable:!1,enumerable:!1})}function m8(){return Gd(0,0,0,"",!1)}function g8(){return{version(){return this._runTask({commands:["--version"],format:"utf-8",parser:v8,onError(t,e,r,i){if(t.exitCode===-2)return r(Buffer.from(Qv));i(e)}})}}}function v8(t){return t===Qv?m8():Br(Gd(0,0,0,t),CT,t)}var Qv,CT,w8=q({"src/lib/tasks/version.ts"(){"use strict";fe(),Qv="installed=false",CT=[new ve(/version (\d+)\.(\d+)\.(\d+)(?:\s*\((.+)\))?/,(t,[e,r,i,n=""])=>{Object.assign(t,Gd(Xe(e),Xe(r),Xe(i),n))}),new ve(/version (\d+)\.(\d+)\.(\D+)(.+)?$/,(t,[e,r,i,n=""])=>{Object.assign(t,Gd(Xe(e),Xe(r),i,n))})]}});function WA(t,e,r,...i){return pt(r)?e(r,ar(i[0],pt),Er(arguments)):Lr(`git.${t}() requires a string 'repoPath'`)}function _8(){return{clone(t,...e){return this._runTask(WA("clone",Cv,ar(t,pt),...e),it(arguments))},mirror(t,...e){return this._runTask(WA("mirror",TT,ar(t,pt),...e),it(arguments))}}}var Cv,TT,b8=q({"src/lib/tasks/clone.ts"(){"use strict";_t(),fe(),Cv=(t,e,r)=>{let i=["clone",...r];return pt(t)&&i.push(gl(t)),pt(e)&&i.push(gl(e)),Sr(i)},TT=(t,e,r)=>(Si(r,"--mirror"),Cv(t,e,r))}}),PT={};xt(PT,{SimpleGitApi:()=>Tv});var Tv,y8=q({"src/lib/simple-git-api.ts"(){"use strict";S3(),k3(),C3(),R3(),D3(),DC(),L3(),HC(),B3(),V3(),cT(),n8(),xT(),c8(),p8(),_t(),w8(),fe(),b8(),Tv=class{constructor(t){this._executor=t}_runTask(t,e){let r=this._executor.chain(),i=r.push(t);return e&&x3(t,i,e),Object.create(this,{then:{value:i.then.bind(i)},catch:{value:i.catch.bind(i)},_executor:{value:r}})}add(t){return this._runTask(Sr(["add",...xn(t)]),it(arguments))}cwd(t){let e=it(arguments);return typeof t=="string"?this._runTask(TA(t,this._executor),e):typeof(t==null?void 0:t.path)=="string"?this._runTask(TA(t.path,t.root&&this._executor||void 0),e):this._runTask(Lr("Git.cwd: workingDirectory must be supplied as a string"),e)}hashObject(t,e){return this._runTask(N3(t,e===!0),it(arguments))}init(t){return this._runTask(j3(t===!0,this._executor.cwd,Er(arguments)),it(arguments))}merge(){return this._runTask(HA(Er(arguments)),it(arguments))}mergeFromTo(t,e){return pt(t)&&pt(e)?this._runTask(HA([t,e,...Er(arguments)]),it(arguments,!1)):this._runTask(Lr("Git.mergeFromTo requires that the 'remote' and 'branch' arguments are supplied as strings"))}outputHandler(t){return this._executor.outputHandler=t,this}push(){let t=Kv({remote:ar(arguments[0],pt),branch:ar(arguments[1],pt)},Er(arguments));return this._runTask(t,it(arguments))}stash(){return this._runTask(Sr(["stash",...Er(arguments)]),it(arguments))}status(){return this._runTask(h8(Er(arguments)),it(arguments))}},Object.assign(Tv.prototype,A3(),_8(),M3(),c3(),P3(),O3(),h3(),Q3(),l8(),g8())}}),RT={};xt(RT,{Scheduler:()=>FT});var qA,FT,x8=q({"src/lib/runners/scheduler.ts"(){"use strict";fe(),zC(),qA=(()=>{let t=0;return()=>{t++;let{promise:e,done:r}=(0,$T.createDeferred)();return{promise:e,done:r,id:t}}})(),FT=class{constructor(t=2){this.concurrency=t,this.logger=Gv("","scheduler"),this.pending=[],this.running=[],this.logger("Constructed, concurrency=%s",t)}schedule(){if(!this.pending.length||this.running.length>=this.concurrency){this.logger("Schedule attempt ignored, pending=%s running=%s concurrency=%s",this.pending.length,this.running.length,this.concurrency);return}let t=Si(this.running,this.pending.shift());this.logger("Attempting id=%s",t.id),t.done(()=>{this.logger("Completing id=",t.id),Vd(this.running,t),this.schedule()})}next(){let{promise:t,id:e}=Si(this.pending,qA());return this.logger("Scheduling id=%s",e),this.schedule(),t}}}}),IT={};xt(IT,{applyPatchTask:()=>E8});function E8(t,e){return Sr(["apply",...e,...t])}var S8=q({"src/lib/tasks/apply-patch.ts"(){"use strict";_t()}});function k8(t,e){return{branch:t,hash:e,success:!0}}function A8(t){return{branch:t,hash:null,success:!1}}var MT,C8=q({"src/lib/responses/BranchDeleteSummary.ts"(){"use strict";MT=class{constructor(){this.all=[],this.branches={},this.errors=[]}get success(){return!this.errors.length}}}});function DT(t,e){return e===1&&Pv.test(t)}var YA,Pv,XA,Kd,T8=q({"src/lib/parsers/parse-branch-delete.ts"(){"use strict";C8(),fe(),YA=/(\S+)\s+\(\S+\s([^)]+)\)/,Pv=/^error[^']+'([^']+)'/m,XA=[new ve(YA,(t,[e,r])=>{let i=k8(e,r);t.all.push(i),t.branches[e]=i}),new ve(Pv,(t,[e])=>{let r=A8(e);t.errors.push(r),t.all.push(r),t.branches[e]=r})],Kd=(t,e)=>Br(new MT,XA,[t,e])}}),OT,P8=q({"src/lib/responses/BranchSummary.ts"(){"use strict";OT=class{constructor(){this.all=[],this.branches={},this.current="",this.detached=!1}push(t,e,r,i,n){t==="*"&&(this.detached=e,this.current=r),this.all.push(r),this.branches[r]={current:t==="*",linkedWorkTree:t==="+",name:r,commit:i,label:n}}}}});function ZA(t){return t?t.charAt(0):""}function LT(t,e=!1){return Br(new OT,e?[BT]:NT,t)}var NT,BT,R8=q({"src/lib/parsers/parse-branch.ts"(){"use strict";P8(),fe(),NT=[new ve(/^([*+]\s)?\((?:HEAD )?detached (?:from|at) (\S+)\)\s+([a-z0-9]+)\s(.*)$/,(t,[e,r,i,n])=>{t.push(ZA(e),!0,r,i,n)}),new ve(/^([*+]\s)?(\S+)\s+([a-z0-9]+)\s?(.*)$/s,(t,[e,r,i,n])=>{t.push(ZA(e),!1,r,i,n)})],BT=new ve(/^(\S+)$/s,(t,[e])=>{t.push("*",!1,e,"","")})}}),HT={};xt(HT,{branchLocalTask:()=>F8,branchTask:()=>$8,containsDeleteBranchCommand:()=>UT,deleteBranchTask:()=>M8,deleteBranchesTask:()=>I8});function UT(t){let e=["-d","-D","--delete"];return t.some(r=>e.includes(r))}function $8(t){let e=UT(t),r=t.includes("--show-current"),i=["branch",...t];return i.length===1&&i.push("-a"),i.includes("-v")||i.splice(1,0,"-v"),{format:"utf-8",commands:i,parser(n,s){return e?Kd(n,s).all[0]:LT(n,r)}}}function F8(){return{format:"utf-8",commands:["branch","-v"],parser(t){return LT(t)}}}function I8(t,e=!1){return{format:"utf-8",commands:["branch","-v",e?"-D":"-d",...t],parser(r,i){return Kd(r,i)},onError({exitCode:r,stdOut:i},n,s,a){if(!DT(String(n),r))return a(n);s(i)}}}function M8(t,e=!1){let r={format:"utf-8",commands:["branch","-v",e?"-D":"-d",t],parser(i,n){return Kd(i,n).branches[t]},onError({exitCode:i,stdErr:n,stdOut:s},a,o,l){if(!DT(String(a),i))return l(a);throw new gu(r.parser(mu(s),mu(n)),String(a))}};return r}var D8=q({"src/lib/tasks/branch.ts"(){"use strict";xl(),T8(),R8(),fe()}});function O8(t){let e=t.trim().replace(/^["']|["']$/g,"");return e&&(0,GT.normalize)(e)}var jT,L8=q({"src/lib/responses/CheckIgnore.ts"(){"use strict";jT=t=>t.split(/\n/g).map(O8).filter(Boolean)}}),VT={};xt(VT,{checkIgnoreTask:()=>N8});function N8(t){return{commands:["check-ignore",...t],format:"utf-8",parser:jT}}var B8=q({"src/lib/tasks/check-ignore.ts"(){"use strict";L8()}});function H8(t,e){return Br({raw:t,remote:null,branches:[],tags:[],updated:[],deleted:[]},zT,[t,e])}var zT,U8=q({"src/lib/parsers/parse-fetch.ts"(){"use strict";fe(),zT=[new ve(/From (.+)$/,(t,[e])=>{t.remote=e}),new ve(/\* \[new branch]\s+(\S+)\s*-> (.+)$/,(t,[e,r])=>{t.branches.push({name:e,tracking:r})}),new ve(/\* \[new tag]\s+(\S+)\s*-> (.+)$/,(t,[e,r])=>{t.tags.push({name:e,tracking:r})}),new ve(/- \[deleted]\s+\S+\s*-> (.+)$/,(t,[e])=>{t.deleted.push({tracking:e})}),new ve(/\s*([^.]+)\.\.(\S+)\s+(\S+)\s*-> (.+)$/,(t,[e,r,i,n])=>{t.updated.push({name:i,tracking:n,to:r,from:e})})]}}),WT={};xt(WT,{fetchTask:()=>j8});function G8(t){return/^--upload-pack(=|$)/.test(t)}function j8(t,e,r){let i=["fetch",...r];return t&&e&&i.push(t,e),i.find(G8)?Lr("git.fetch: potential exploit argument blocked."):{commands:i,format:"utf-8",parser:H8}}var V8=q({"src/lib/tasks/fetch.ts"(){"use strict";U8(),_t()}});function z8(t){return Br({moves:[]},qT,t)}var qT,W8=q({"src/lib/parsers/parse-move.ts"(){"use strict";fe(),qT=[new ve(/^Renaming (.+) to (.+)$/,(t,[e,r])=>{t.moves.push({from:e,to:r})})]}}),YT={};xt(YT,{moveTask:()=>q8});function q8(t,e){return{commands:["mv","-v",...xn(t),e],format:"utf-8",parser:z8}}var Y8=q({"src/lib/tasks/move.ts"(){"use strict";W8(),fe()}}),XT={};xt(XT,{pullTask:()=>X8});function X8(t,e,r){let i=["pull",...r];return t&&e&&i.splice(1,0,t,e),{commands:i,format:"utf-8",parser(n,s){return Zv(n,s)},onError(n,s,a,o){let l=r8(mu(n.stdOut),mu(n.stdErr));if(l)return o(new gu(l));o(s)}}}var Z8=q({"src/lib/tasks/pull.ts"(){"use strict";xl(),wT(),fe()}});function K8(t){let e={};return ZT(t,([r])=>e[r]={name:r}),Object.values(e)}function Q8(t){let e={};return ZT(t,([r,i,n])=>{Object.hasOwn(e,r)||(e[r]={name:r,refs:{fetch:"",push:""}}),n&&i&&(e[r].refs[n.replace(/[^a-z]/g,"")]=i)}),Object.values(e)}function ZT(t,e){Fv(t,r=>e(r.split(/\s+/)))}var J8=q({"src/lib/responses/GetRemoteSummary.ts"(){"use strict";fe()}}),KT={};xt(KT,{addRemoteTask:()=>e6,getRemotesTask:()=>t6,listRemotesTask:()=>r6,remoteTask:()=>i6,removeRemoteTask:()=>n6});function e6(t,e,r){return Sr(["remote","add",...r,t,e])}function t6(t){let e=["remote"];return t&&e.push("-v"),{commands:e,format:"utf-8",parser:t?Q8:K8}}function r6(t){let e=[...t];return e[0]!=="ls-remote"&&e.unshift("ls-remote"),Sr(e)}function i6(t){let e=[...t];return e[0]!=="remote"&&e.unshift("remote"),Sr(e)}function n6(t){return Sr(["remote","remove",t])}var s6=q({"src/lib/tasks/remote.ts"(){"use strict";J8(),_t()}}),QT={};xt(QT,{stashListTask:()=>a6});function a6(t={},e){let r=lT(t),i=["stash","list",...r.commands,...e],n=nT(r.splitter,r.fields,Vv(i));return Zd(i)||{commands:i,format:"utf-8",parser:n}}var o6=q({"src/lib/tasks/stash-list.ts"(){"use strict";bu(),aT(),Xv(),cT()}}),JT={};xt(JT,{addSubModuleTask:()=>l6,initSubModuleTask:()=>c6,subModuleTask:()=>Qd,updateSubModuleTask:()=>u6});function l6(t,e){return Qd(["add",t,e])}function c6(t){return Qd(["init",...t])}function Qd(t){let e=[...t];return e[0]!=="submodule"&&e.unshift("submodule"),Sr(e)}function u6(t){return Qd(["update",...t])}var f6=q({"src/lib/tasks/sub-module.ts"(){"use strict";_t()}});function d6(t,e){let r=Number.isNaN(t),i=Number.isNaN(e);return r!==i?r?1:-1:r?e2(t,e):0}function e2(t,e){return t===e?0:t>e?1:-1}function h6(t){return t.trim()}function Dd(t){return typeof t=="string"&&parseInt(t.replace(/^\D+/g,""),10)||0}var KA,t2,p6=q({"src/lib/responses/TagList.ts"(){"use strict";KA=class{constructor(t,e){this.all=t,this.latest=e}},t2=function(t,e=!1){let r=t.split(` +`).map(h6).filter(Boolean);e||r.sort(function(n,s){let a=n.split("."),o=s.split(".");if(a.length===1||o.length===1)return d6(Dd(a[0]),Dd(o[0]));for(let l=0,c=Math.max(a.length,o.length);l<c;l++){let u=e2(Dd(a[l]),Dd(o[l]));if(u)return u}return 0});let i=e?r[0]:[...r].reverse().find(n=>n.indexOf(".")>=0);return new KA(r,i)}}}),r2={};xt(r2,{addAnnotatedTagTask:()=>v6,addTagTask:()=>g6,tagListTask:()=>m6});function m6(t=[]){let e=t.some(r=>/^--sort=/.test(r));return{format:"utf-8",commands:["tag","-l",...t],parser(r){return t2(r,e)}}}function g6(t){return{format:"utf-8",commands:["tag",t],parser(){return{name:t}}}}function v6(t,e){return{format:"utf-8",commands:["tag","-a","-m",e,t],parser(){return{name:t}}}}var w6=q({"src/lib/tasks/tag.ts"(){"use strict";p6()}}),_6=OH({"src/git.js"(t,e){"use strict";var{GitExecutor:r}=(y3(),wt(YC)),{SimpleGitApi:i}=(y8(),wt(PT)),{Scheduler:n}=(x8(),wt(RT)),{adhocExecTask:s,configurationErrorTask:a}=(_t(),wt(xv)),{asArray:o,filterArray:l,filterPrimitives:c,filterString:u,filterStringOrStringArray:f,filterType:d,getTrailingOptions:h,trailingFunctionArgument:p,trailingOptionsArgument:g}=(fe(),wt(vC)),{applyPatchTask:v}=(S8(),wt(IT)),{branchTask:_,branchLocalTask:b,deleteBranchesTask:S,deleteBranchTask:k}=(D8(),wt(HT)),{checkIgnoreTask:E}=(B8(),wt(VT)),{checkIsRepoTask:A}=(yC(),wt(wC)),{cleanWithOptionsTask:w,isCleanOptionsArray:x}=(FC(),wt(RC)),{diffSummaryTask:y}=(Xv(),wt(oT)),{fetchTask:C}=(V8(),wt(WT)),{moveTask:P}=(Y8(),wt(YT)),{pullTask:L}=(Z8(),wt(XT)),{pushTagsTask:N}=(xT(),wt(yT)),{addRemoteTask:B,getRemotesTask:ge,listRemotesTask:Le,remoteTask:ke,removeRemoteTask:ne}=(s6(),wt(KT)),{getResetMode:Ee,resetTask:_e}=(VC(),wt(UC)),{stashListTask:z}=(o6(),wt(QT)),{addSubModuleTask:X,initSubModuleTask:V,subModuleTask:Ne,updateSubModuleTask:gr}=(f6(),wt(JT)),{addAnnotatedTagTask:Nt,addTagTask:Fe,tagListTask:Pt}=(w6(),wt(r2)),{straightThroughBufferTask:Rt,straightThroughStringTask:Ye}=(_t(),wt(xv));function J(D,M){this._plugins=M,this._executor=new r(D.baseDir,new n(D.maxConcurrentProcesses),M),this._trimmed=D.trimmed}(J.prototype=Object.create(i.prototype)).constructor=J,J.prototype.customBinary=function(D){return this._plugins.reconfigure("binary",D),this},J.prototype.env=function(D,M){return arguments.length===1&&typeof D=="object"?this._executor.env=D:(this._executor.env=this._executor.env||{})[D]=M,this},J.prototype.stashList=function(D){return this._runTask(z(g(arguments)||{},l(D)&&D||[]),p(arguments))},J.prototype.mv=function(D,M){return this._runTask(P(D,M),p(arguments))},J.prototype.checkoutLatestTag=function(D){var M=this;return this.pull(function(){M.tags(function(ae,Te){M.checkout(Te.latest,D)})})},J.prototype.pull=function(D,M,ae,Te){return this._runTask(L(d(D,u),d(M,u),h(arguments)),p(arguments))},J.prototype.fetch=function(D,M){return this._runTask(C(d(D,u),d(M,u),h(arguments)),p(arguments))},J.prototype.silent=function(D){return this._runTask(s(()=>console.warn("simple-git deprecation notice: git.silent: logging should be configured using the `debug` library / `DEBUG` environment variable, this method will be removed.")))},J.prototype.tags=function(D,M){return this._runTask(Pt(h(arguments)),p(arguments))},J.prototype.rebase=function(){return this._runTask(Ye(["rebase",...h(arguments)]),p(arguments))},J.prototype.reset=function(D){return this._runTask(_e(Ee(D),h(arguments)),p(arguments))},J.prototype.revert=function(D){let M=p(arguments);return typeof D!="string"?this._runTask(a("Commit must be a string"),M):this._runTask(Ye(["revert",...h(arguments,0,!0),D]),M)},J.prototype.addTag=function(D){let M=typeof D=="string"?Fe(D):a("Git.addTag requires a tag name");return this._runTask(M,p(arguments))},J.prototype.addAnnotatedTag=function(D,M){return this._runTask(Nt(D,M),p(arguments))},J.prototype.deleteLocalBranch=function(D,M,ae){return this._runTask(k(D,typeof M=="boolean"?M:!1),p(arguments))},J.prototype.deleteLocalBranches=function(D,M,ae){return this._runTask(S(D,typeof M=="boolean"?M:!1),p(arguments))},J.prototype.branch=function(D,M){return this._runTask(_(h(arguments)),p(arguments))},J.prototype.branchLocal=function(D){return this._runTask(b(),p(arguments))},J.prototype.raw=function(D){let M=!Array.isArray(D),ae=[].slice.call(M?arguments:D,0);for(let Bt=0;Bt<ae.length&&M;Bt++)if(!c(ae[Bt])){ae.splice(Bt,ae.length-Bt);break}ae.push(...h(arguments,0,!0));var Te=p(arguments);return ae.length?this._runTask(Ye(ae,this._trimmed),Te):this._runTask(a("Raw: must supply one or more command to execute"),Te)},J.prototype.submoduleAdd=function(D,M,ae){return this._runTask(X(D,M),p(arguments))},J.prototype.submoduleUpdate=function(D,M){return this._runTask(gr(h(arguments,!0)),p(arguments))},J.prototype.submoduleInit=function(D,M){return this._runTask(V(h(arguments,!0)),p(arguments))},J.prototype.subModule=function(D,M){return this._runTask(Ne(h(arguments)),p(arguments))},J.prototype.listRemote=function(){return this._runTask(Le(h(arguments)),p(arguments))},J.prototype.addRemote=function(D,M,ae){return this._runTask(B(D,M,h(arguments)),p(arguments))},J.prototype.removeRemote=function(D,M){return this._runTask(ne(D),p(arguments))},J.prototype.getRemotes=function(D,M){return this._runTask(ge(D===!0),p(arguments))},J.prototype.remote=function(D,M){return this._runTask(ke(h(arguments)),p(arguments))},J.prototype.tag=function(D,M){let ae=h(arguments);return ae[0]!=="tag"&&ae.unshift("tag"),this._runTask(Ye(ae),p(arguments))},J.prototype.updateServerInfo=function(D){return this._runTask(Ye(["update-server-info"]),p(arguments))},J.prototype.pushTags=function(D,M){let ae=N({remote:d(D,u)},h(arguments));return this._runTask(ae,p(arguments))},J.prototype.rm=function(D){return this._runTask(Ye(["rm","-f",...o(D)]),p(arguments))},J.prototype.rmKeepLocal=function(D){return this._runTask(Ye(["rm","--cached",...o(D)]),p(arguments))},J.prototype.catFile=function(D,M){return this._catFile("utf-8",arguments)},J.prototype.binaryCatFile=function(){return this._catFile("buffer",arguments)},J.prototype._catFile=function(D,M){var ae=p(M),Te=["cat-file"],Bt=M[0];if(typeof Bt=="string")return this._runTask(a("Git.catFile: options must be supplied as an array of strings"),ae);Array.isArray(Bt)&&Te.push.apply(Te,Bt);let Tr=D==="buffer"?Rt(Te):Ye(Te);return this._runTask(Tr,ae)},J.prototype.diff=function(D,M){let ae=u(D)?a("git.diff: supplying options as a single string is no longer supported, switch to an array of strings"):Ye(["diff",...h(arguments)]);return this._runTask(ae,p(arguments))},J.prototype.diffSummary=function(){return this._runTask(y(h(arguments,1)),p(arguments))},J.prototype.applyPatch=function(D){let M=f(D)?v(o(D),h([].slice.call(arguments,1))):a("git.applyPatch requires one or more string patches as the first argument");return this._runTask(M,p(arguments))},J.prototype.revparse=function(){let D=["rev-parse",...h(arguments,!0)];return this._runTask(Ye(D,!0),p(arguments))},J.prototype.clean=function(D,M,ae){let Te=x(D),Bt=Te&&D.join("")||d(D,u)||"",Tr=h([].slice.call(arguments,Te?1:0));return this._runTask(w(Bt,Tr),p(arguments))},J.prototype.exec=function(D){let M={commands:[],format:"utf-8",parser(){typeof D=="function"&&D()}};return this._runTask(M)},J.prototype.clearQueue=function(){return this._runTask(s(()=>console.warn("simple-git deprecation notice: clearQueue() is deprecated and will be removed, switch to using the abortPlugin instead.")))},J.prototype.checkIgnore=function(D,M){return this._runTask(E(o(d(D,f,[]))),p(arguments))},J.prototype.checkIsRepo=function(D,M){return this._runTask(A(d(D,u)),p(arguments))},e.exports=J}});Bs();var b6=class extends Nr{constructor(t,e){super(void 0,e),this.config=t}};Bs();Bs();var yl=class extends Nr{constructor(t,e,r){super(t,r),this.task=t,this.plugin=e,Object.setPrototypeOf(this,new.target.prototype)}};xl();iC();yC();FC();DC();LC();HC();VC();function y6(t){return t?[{type:"spawn.before",action(i,n){t.aborted&&n.kill(new yl(void 0,"abort","Abort already signaled"))}},{type:"spawn.after",action(i,n){function s(){n.kill(new yl(void 0,"abort","Abort signal received"))}t.addEventListener("abort",s),n.spawned.on("close",()=>t.removeEventListener("abort",s))}}]:void 0}function x6(t={}){return{type:"spawn.args",action(e,{env:r}){for(let i of SA(e,r))if(t[i.category]!==!0)throw new yl(void 0,"unsafe",i.message);return e}}}fe();function E6(t){let e=pu(t,"-c");return{type:"spawn.args",action(r){return[...e,...r]}}}fe();var QA=(0,_l.deferred)().promise;function S6({onClose:t=!0,onExit:e=50}={}){function r(){let n=-1,s={close:(0,_l.deferred)(),closeTimeout:(0,_l.deferred)(),exit:(0,_l.deferred)(),exitTimeout:(0,_l.deferred)()},a=Promise.race([t===!1?QA:s.closeTimeout.promise,e===!1?QA:s.exitTimeout.promise]);return i(t,s.close,s.closeTimeout),i(e,s.exit,s.exitTimeout),{close(o){n=o,s.close.done()},exit(o){n=o,s.exit.done()},get exitCode(){return n},result:a}}function i(n,s,a){n!==!1&&(n===!0?s.promise:s.promise.then(()=>gv(n))).then(a.done)}return{type:"spawn.after",async action(n,{spawned:s,close:a}){var u,f;let o=r(),l=!0,c=()=>void(l=!1);(u=s.stdout)==null||u.on("data",c),(f=s.stderr)==null||f.on("data",c),s.on("error",c),s.on("close",d=>o.close(d)),s.on("exit",d=>o.exit(d));try{await o.result,l&&await gv(50),a(o.exitCode)}catch(d){a(o.exitCode,d)}}}}fe();var k6="Invalid value supplied for custom binary, requires a single string or an array containing either one or two strings",JA="Invalid value supplied for custom binary, restricted characters must be removed or supply the unsafe.allowUnsafeCustomBinary option";function A6(t){return!t||!/^([a-z]:)?([a-z0-9/.\\_~-]+)$/i.test(t)}function eC(t,e){if(t.length<1||t.length>2)throw new yl(void 0,"binary",k6);if(t.some(A6))if(e)console.warn(JA);else throw new yl(void 0,"binary",JA);let[i,n]=t;return{binary:i,prefix:n}}function C6(t,e=["git"],r=!1){let i=eC(xn(e),r);t.on("binary",n=>{i=eC(xn(n),r)}),t.append("spawn.binary",()=>i.binary),t.append("spawn.args",n=>i.prefix?[i.prefix,...n]:n)}Bs();function T6(t){return!!(t.exitCode&&t.stdErr.length)}function P6(t){return Buffer.concat([...t.stdOut,...t.stdErr])}function R6(t=!1,e=T6,r=P6){return(i,n)=>!t&&i||!e(n)?i:r(n)}function tC(t){return{type:"task.error",action(e,r){let i=t(e.error,{stdErr:r.stdErr,stdOut:r.stdOut,exitCode:r.exitCode});return Buffer.isBuffer(i)?{error:new Nr(void 0,i.toString("utf-8"))}:{error:i}}}}fe();var $6=class{constructor(){this.plugins=new Set,this.events=new i2.EventEmitter}on(t,e){this.events.on(t,e)}reconfigure(t,e){this.events.emit(t,e)}append(t,e){let r=Si(this.plugins,{type:t,action:e});return()=>this.plugins.delete(r)}add(t){let e=[];return xn(t).forEach(r=>r&&this.plugins.add(Si(e,r))),()=>{e.forEach(r=>this.plugins.delete(r))}}exec(t,e,r){let i=e,n=Object.freeze(Object.create(r));for(let s of this.plugins)s.type===t&&(i=s.action(i,n));return i}};fe();function F6(t){let e="--progress",r=["checkout","clone","fetch","pull","push"];return[{type:"spawn.args",action(s,a){return r.includes(a.method)?cC(s,e):s}},{type:"spawn.after",action(s,a){var o;a.commands.includes(e)&&((o=a.spawned.stderr)==null||o.on("data",l=>{let c=/^([\s\S]+?):\s*(\d+)% \((\d+)\/(\d+)\)/.exec(l.toString("utf8"));c&&t({method:a.method,stage:I6(c[1]),progress:Xe(c[2]),processed:Xe(c[3]),total:Xe(c[4])})}))}}]}function I6(t){return String(t.toLowerCase().split(" ",1))||"unknown"}fe();function M6(t){let e=fC(t,["uid","gid"]);return{type:"spawn.options",action(r){return{...e,...r}}}}function D6({block:t,stdErr:e=!0,stdOut:r=!0}){if(t>0)return{type:"spawn.after",action(i,n){var c,u;let s;function a(){s&&clearTimeout(s),s=setTimeout(l,t)}function o(){var f,d;(f=n.spawned.stdout)==null||f.off("data",a),(d=n.spawned.stderr)==null||d.off("data",a),n.spawned.off("exit",o),n.spawned.off("close",o),s&&clearTimeout(s)}function l(){o(),n.kill(new yl(void 0,"timeout","block timeout reached"))}r&&((c=n.spawned.stdout)==null||c.on("data",a)),e&&((u=n.spawned.stderr)==null||u.on("data",a)),n.spawned.on("exit",o),n.spawned.on("close",o),a()}}}function O6(){return{type:"spawn.args",action(t){let e=[],r;function i(n){(r=r||[]).push(...n)}for(let n=0;n<t.length;n++){let s=t[n];if(yi(s)){i(vl(s));continue}if(s==="--"){i(t.slice(n+1).flatMap(a=>yi(a)&&vl(a)||a));break}e.push(s)}return r?[...e,"--",...r.map(String)]:e}}}fe();var L6=_6();function N6(t,e){var n;let r=new $6,i=mC(t&&(typeof t=="string"?{baseDir:t}:t)||{},e);if(!Iv(i.baseDir))throw new b6(i,"Cannot use simple-git on a directory that does not exist");return Array.isArray(i.config)&&r.add(E6(i.config)),r.add(x6(i.unsafe)),r.add(S6(i.completion)),i.abort&&r.add(y6(i.abort)),i.progress&&r.add(F6(i.progress)),i.timeout&&r.add(D6(i.timeout)),i.spawnOptions&&r.add(M6(i.spawnOptions)),r.add(O6()),r.add(tC(R6(!0))),i.errors&&r.add(tC(i.errors)),C6(r,i.binary,(n=i.unsafe)==null?void 0:n.allowUnsafeCustomBinary),new L6(i,r)}xl();var n2=N6;var Se=class extends fl{constructor(r){super(r);this.useDefaultWindowsGitPath=!1}async setGitInstance(r=!1){var i;if(await this.isGitInstalled()){let n=this.app.vault.adapter,s=n.getBasePath(),a=s;this.plugin.settings.basePath&&(await n.exists((0,Jn.normalizePath)(this.plugin.settings.basePath))?a=ze.join(s,this.plugin.settings.basePath):r||new Jn.Notice("ObsidianGit: Base path does not exist")),this.absoluteRepoPath=a,this.git=n2({baseDir:a,binary:this.plugin.localStorage.getGitPath()||(this.useDefaultWindowsGitPath?bd:void 0),config:["core.quotepath=off"],unsafe:{allowUnsafeCustomBinary:!0,allowUnsafeEditor:!0,allowUnsafeAskPass:!0,allowUnsafeConfigEnvCount:!0,allowUnsafeConfigPaths:!0,allowUnsafeCredentialHelper:!0,allowUnsafeGitProxy:!0,allowUnsafeGpgProgram:!0,allowUnsafeHooksPath:!0,allowUnsafeMergeDriver:!0,allowUnsafeSshCommand:!0,allowUnsafePager:!0}});let o=this.plugin.localStorage.getPATHPaths(),l=this.plugin.localStorage.getEnvVars(),c=this.plugin.settings.gitDir,u={...process.env};if(o.length>0){let _=o.join(":")+":"+u.PATH;u.PATH=_}c&&(u.GIT_DIR=c,u.GIT_WORK_TREE=a);for(let _ of l){let[b,S]=_.split("=");u[b]=S}let f="simple-git",d=",",p=((i=localStorage.debug)!=null?i:"").split(d);if(!p.includes(f)&&!p.includes(`-${f}`)&&(p.push(f),o2.default.enable(p.join(d))),await this.git.env(u).checkIsRepo()){let _=await this.git.revparse("--show-cdup"),b=(0,yu.resolve)(a+yu.sep+_);this.absoluteRepoPath=b,await this.git.cwd(b)}let g=ze.join(s,this.app.vault.configDir,"plugins","obsidian-git"),v=ze.join(g,ba);u.SSH_ASKPASS==null&&(u.SSH_ASKPASS=v),u.SSH_ASKPASS_REQUIRE="force",u.OBSIDIAN_GIT_CREDENTIALS_INPUT=ze.join(g,yd),u.SSH_ASKPASS==v&&this.askpass().catch(_=>this.plugin.displayError(_)),u.OBSIDIAN_GIT="1",this.git=this.git.env(u)}}getRelativeVaultPath(r){let n=this.app.vault.adapter.getBasePath(),s=ze.join(this.absoluteRepoPath,r),a=ze.relative(n,s);return Jn.Platform.isWin&&(a=a.replace(/\\/g,"/")),a}getRelativeRepoPath(r,i=!0){if(i){let s=this.plugin.app.vault.adapter.getBasePath(),a=this.absoluteRepoPath,o=ze.join(s,r),l=ze.relative(a,o);return Jn.Platform.isWin&&(l=l.replace(/\\/g,"/")),l}return r}get absPluginConfigPath(){let i=this.app.vault.adapter.getBasePath();return ze.join(i,this.app.vault.configDir,"plugins","obsidian-git")}get relPluginConfigPath(){return ze.join(this.app.vault.configDir,"plugins","obsidian-git")}async askpass(){let r=this.app.vault.adapter,i=this.app.vault.configDir+"/plugins/obsidian-git/";await this.addAskPassScriptToExclude(),await ei.writeFile(ze.join(this.absPluginConfigPath,ba),Ek),await ei.chmod(ze.join(this.absPluginConfigPath,ba),493),this.watchAbortController=new AbortController;let{signal:n}=this.watchAbortController;try{let s=ei.watch(this.absPluginConfigPath,{signal:n});for await(let a of s){if(a.filename!=yd)continue;let o=i+yd;if(await new Promise(d=>window.setTimeout(d,200)),!await r.exists(o))continue;let l=await r.read(o),c;l.length>60&&(c=new Jn.Notice(l,999999));let u=!0;l.contains("Username for")&&(u=!1);let f=await new et(this.plugin,{allowEmpty:!0,obscure:u,placeholder:l.length>60?"Enter a response to the message.":l}).openAndGetResult();c==null||c.hide(),await r.exists(o)&&await r.write(`${o}.response`,f!=null?f:"")}}catch(s){this.plugin.displayError(s),await ei.rm(ze.join(this.absPluginConfigPath,ba),{force:!0}),await ei.rm(ze.join(this.absPluginConfigPath,`${ba}.response`),{force:!0}),await new Promise(a=>window.setTimeout(a,5e3)),this.plugin.log("Retry watch for ask pass"),await this.askpass()}}async addAskPassScriptToExclude(){try{if(!await this.git.checkIsRepo())return;let r=await this.git.revparse(["--path-format=absolute","--git-path","info/exclude"]),i=ze.join(this.app.vault.configDir,"plugins","obsidian-git",ba),n=this.getRelativeRepoPath(i,!0);(await ei.readFile(r,"utf-8")).split(` +`).some(l=>l.contains(n))||await ei.appendFile(r,n+` +`)}catch(r){console.error("Error while adding askpass script to exclude file:",r)}}unload(){var r;(r=this.watchAbortController)==null||r.abort()}async status(r){let i=r==null?void 0:r.path;this.plugin.setPluginState({gitAction:1});let n=await this.git.status(i!=null?["--",i]:[]);this.plugin.setPluginState({gitAction:0});let s=n.files.map(a=>{let o=this.formatPath(a);return{path:o.path,from:o.from,index:a.index==="?"?"U":a.index,workingDir:a.working_dir==="?"?"U":a.working_dir,vaultPath:this.getRelativeVaultPath(o.path)}});return{all:s,changed:s.filter(a=>a.workingDir!==" "),staged:s.filter(a=>a.index!==" "&&a.index!="U"),conflicted:n.conflicted.map(a=>this.formatPath({path:a}).path)}}async submoduleAwareHeadRevisonInContainingDirectory(r){let i=this.getRelativeRepoPath(r),s=["-C",ze.dirname(i),"rev-parse","HEAD"],a=this.git.raw(s);return a.catch(o=>console.warn("obsidian-git: rev-parse error:",o)),(await a).trim()}async getSubmodulePaths(){return new Promise(r=>{this.git.outputHandler((i,n,s,a)=>{if(!(a.contains("submodule")&&a.contains("foreach")))return;let o="",l=this.app.vault.adapter.getBasePath()+(this.plugin.settings.basePath?"/"+this.plugin.settings.basePath:"");n.on("data",c=>{o+=c.toString("utf8")}),n.on("end",()=>{let u=o.split(` +`).map(f=>{let d=f.match(/'([^']*)'/);if(d!=null)return l+"/"+d[1]+yu.sep}).filter(f=>!!f);u.reverse(),r(u)})}),this.git.subModule(["foreach","--recursive",""]).then(()=>{this.git.outputHandler(()=>{})},i=>this.plugin.displayError(i))})}formatPath(r){function i(n){if(n!=null)return n.startsWith('"')&&n.endsWith('"')?n.substring(1,n.length-1):n}return r.from!=null?{from:i(r.from),path:i(r.path)}:{path:i(r.path)}}async blame(r,i,n){if(r=this.getRelativeRepoPath(r),!await this.isTracked(r))return"untracked";let s=await this.getSubmoduleOfFile(r),a=s?["-C",s.submodule]:[],o=s?s.relativeFilepath:r;a.push("blame","--porcelain"),n&&a.push("-w");let l=`-C${_d}`;switch(i){case"inactive":break;case"same-commit":a.push("-C",l);break;case"all-commits":a.push("-C","-C",l);break;default:Os(i)}a.push("--",o);let c=await this.git.raw(a);return B6(c)}async isTracked(r){let i=await this.getSubmoduleOfFile(r),n=i?["-C",i.submodule]:[],s=i?i.relativeFilepath:r;return n.push("ls-files","--",s),this.git.raw(n).then(a=>a.trim()!=="")}async commitAll({message:r}){if(this.plugin.settings.updateSubmodules){this.plugin.setPluginState({gitAction:4});let n=await this.getSubmodulePaths();for(let s of n)await this.git.cwd({path:s,root:!1}).add("-A"),await this.git.cwd({path:s,root:!1}).commit(await this.formatCommitMessage(r))}this.plugin.setPluginState({gitAction:3}),await this.git.add("-A"),this.plugin.setPluginState({gitAction:4});let i=await this.git.commit(await this.formatCommitMessage(r));return this.app.workspace.trigger("obsidian-git:head-change"),i.summary.changes}async commit({message:r,amend:i}){this.plugin.setPluginState({gitAction:4});let n=(await this.git.commit(await this.formatCommitMessage(r),i?["--amend"]:[])).summary.changes;return this.app.workspace.trigger("obsidian-git:head-change"),this.plugin.setPluginState({gitAction:0}),n}async stage(r,i){this.plugin.setPluginState({gitAction:3}),r=this.getRelativeRepoPath(r,i),await this.git.add(["--",r]),this.plugin.setPluginState({gitAction:0})}async stageAll({dir:r}){this.plugin.setPluginState({gitAction:3}),await this.git.add(r!=null?r:"-A"),this.plugin.setPluginState({gitAction:0})}async unstageAll({dir:r}){this.plugin.setPluginState({gitAction:3}),await this.git.reset(r!=null?["--",r]:[]),this.plugin.setPluginState({gitAction:0})}async unstage(r,i){this.plugin.setPluginState({gitAction:3}),r=this.getRelativeRepoPath(r,i),await this.git.reset(["--",r]),this.plugin.setPluginState({gitAction:0})}async discard(r){this.plugin.setPluginState({gitAction:3}),await this.isTracked(r)&&await this.git.checkout(["--",r]),this.plugin.setPluginState({gitAction:0})}async applyPatch(r){let i=ze.join(this.relPluginConfigPath,"patch");await this.app.vault.adapter.write(i,r),await this.git.applyPatch(i,{"--cached":null,"--unidiff-zero":null,"--whitespace":"nowarn"}),await this.app.vault.adapter.remove(i)}async getUntrackedPaths(r){let i=r==null?void 0:r.path;this.plugin.setPluginState({gitAction:1});let n=[];i!=null&&n.push("--",i);let s=await this.git.clean(Aa.RECURSIVE+Aa.DRY_RUN,n);return this.plugin.setPluginState({gitAction:0}),s.paths}async hashObject(r){r=this.getRelativeRepoPath(r);let i=await this.getSubmoduleOfFile(r),n=i?["-C",i.submodule]:[],s=i?i.relativeFilepath:r;return n.push("hash-object","--",s),this.git.raw(n)}async discardAll({dir:r}){return this.discard(r!=null?r:".")}async pull(){this.plugin.setPluginState({gitAction:2});try{this.plugin.settings.updateSubmodules&&await this.git.subModule(["update","--remote","--merge","--recursive"]);let r=await this.branchInfo(),i=await this.git.revparse([r.current]);if(!r.tracking&&this.plugin.settings.updateSubmodules){this.plugin.log("No tracking branch found. Ignoring pull of main repo and updating submodules only.");return}await this.git.fetch();let n=await this.git.revparse([r.tracking]);if(i!==n){if(this.plugin.settings.syncMethod==="merge"||this.plugin.settings.syncMethod==="rebase")try{let o=[r.tracking];switch(this.plugin.settings.mergeStrategy!=="none"&&o.push(`--strategy-option=${this.plugin.settings.mergeStrategy}`),this.plugin.settings.syncMethod){case"merge":await this.git.merge(o);break;case"rebase":await this.git.rebase(o)}}catch(o){this.plugin.displayError(`Pull failed (${this.plugin.settings.syncMethod}): ${"message"in o?o.message:o}`);return}else if(this.plugin.settings.syncMethod==="reset")try{await this.git.raw(["update-ref",`refs/heads/${r.current}`,n]),await this.unstageAll({})}catch(o){this.plugin.displayError(`Sync failed (${this.plugin.settings.syncMethod}): ${"message"in o?o.message:o}`)}this.app.workspace.trigger("obsidian-git:head-change");let s=await this.git.revparse([r.current]);return(await this.git.diff([`${i}..${s}`,"--name-only"])).split(/\r\n|\r|\n/).filter(o=>o.length>0).map(o=>({path:o,workingDir:"P",vaultPath:this.getRelativeVaultPath(o)}))}else return[]}catch(r){this.convertErrors(r)}}async push(){this.plugin.setPluginState({gitAction:5});try{if(this.plugin.settings.updateSubmodules){let a=await this.git.subModule(["foreach","--recursive",`tracking=$(git for-each-ref --format='%(upstream:short)' "$(git symbolic-ref -q HEAD)"); echo $tracking; if [ ! -z "$(git diff --shortstat $tracking)" ]; then git push; fi`]);console.log(a)}let r=await this.git.status(),i=r.tracking,n=r.current;if(!i&&this.plugin.settings.updateSubmodules){this.plugin.log("No tracking branch found. Ignoring push of main repo and updating submodules only.");return}let s=null;return i&&(s=(await this.git.diffSummary([n,i,"--"])).changed),await this.git.push(),s}catch(r){this.convertErrors(r)}}async getUnpushedCommits(){let r=await this.git.status(),i=r.tracking,n=r.current;if(i==null||n==null)return 0;let[s]=Qn(i);return(await this.getRemoteBranches(s)).includes(i)?(await this.git.diffSummary([n,i,"--"])).changed:(this.plugin.log(`Tracking branch ${i} does not exist on remote ${s}.`),0)}async canPush(){if(this.plugin.settings.updateSubmodules===!0)return!0;let r=await this.git.status(),i=r.tracking,n=r.current;return i?(await this.git.diffSummary([n,i,"--"])).changed!==0:!1}async checkRequirements(){return await this.isGitInstalled()?await this.git.checkIsRepo()?"valid":"missing-repo":"missing-git"}async branchInfo(){let r=await this.git.status(),i=await this.git.branch(["--no-color"]);return{current:r.current||void 0,tracking:r.tracking||void 0,branches:i.all}}async getRemoteUrl(r){try{return await this.git.remote(["get-url",r])||void 0}catch(i){if(String(i).contains(r))return;throw i}}async log(r,i=!0,n,s){let a;r&&(a=this.getRelativeRepoPath(r,i));let o={file:a,maxCount:n,"--diff-merges":"first-parent","--name-status":null};return s&&(o[s]=null),(await this.git.log(o)).all.map(c=>{var u,f,d,h;return{...c,author:{name:c.author_name,email:c.author_email},refs:c.refs.split(", ").filter(p=>p.length>0),diff:{...c.diff,files:(f=(u=c.diff)==null?void 0:u.files.map(p=>({...p,status:p.status,path:p.file,hash:c.hash,vaultPath:this.getRelativeVaultPath(p.file),fromPath:p.from,fromVaultPath:p.from!=null?this.getRelativeVaultPath(p.from):void 0,binary:p.binary})))!=null?f:[]},fileName:(h=(d=c.diff)==null?void 0:d.files.first())==null?void 0:h.file}})}async show(r,i,n=!0){let s=this.getRelativeRepoPath(i,n);return this.git.show([r+":"+s])}async getLocalBranchUpstream(r){try{let n=(await this.git.raw(["rev-parse","--abbrev-ref",`${r}@{upstream}`])).trim();return n.length>0?n:void 0}catch(i){return}}getAvailableLocalBranchName(r,i,n){let s=r;if(!n.includes(s))return s;let a=`${r}-${i}`,o=a,l=0;for(;n.includes(o);)l+=1,o=`${a}-${l}`;return o}async checkout(r,i){if(i){let n=`${i}/${r}`,s=await this.branchInfo();if(s.branches.includes(r)&&await this.getLocalBranchUpstream(r)===n)await this.git.checkout(r);else{let l=this.getAvailableLocalBranchName(r,i,s.branches);await this.git.checkout(["-b",l,n])}}else await this.git.checkout(r);if(this.plugin.settings.submoduleRecurseCheckout){let n=await this.getSubmodulePaths();for(let s of n){let a=await this.git.cwd({path:s,root:!1}).branch();Object.keys(a.branches).includes(r)&&await this.git.cwd({path:s,root:!1}).checkout(r)}}}async createBranch(r){await this.git.checkout(["-b",r])}async deleteBranch(r,i){await this.git.branch([i?"-D":"-d",r])}async branchIsMerged(r){return!(await this.git.branch(["--no-merged"])).all.contains(r)}async init(){await this.git.init(!1)}async clone(r,i,n){await this.git.clone(r,ze.join(this.app.vault.adapter.getBasePath(),i),n?["--depth",`${n}`]:[]),await this.setGitInstance()}async setConfig(r,i){i==null?await this.git.raw(["config","--local","--unset",r]):await this.git.addConfig(r,i)}async getConfig(r,i="local"){var s;return(s=(await this.git.getConfig(r.toLowerCase(),i=="all"?void 0:i)).value)!=null?s:void 0}async fetch(r){await this.git.fetch(r!=null?[r]:[])}async setRemote(r,i){(await this.getRemotes()).includes(r)?await this.git.remote(["set-url",r,i]):await this.git.remote(["add",r,i])}async getRemoteBranches(r){let i=await this.git.branch(["-r","--list",`${r}*`]),n=[];for(let s in i.branches)n.push(i.branches[s].name);return n}async getRemotes(){let r=await this.git.remote([]);return r?r.trim().split(` +`):[]}async removeRemote(r){await this.git.removeRemote(r)}async updateUpstreamBranch(r){try{await this.git.branch(["--set-upstream-to",r])}catch(i){try{await this.git.branch(["--set-upstream",r])}catch(n){let[s,a]=Qn(r),o=await this.branchInfo();await this.git.push(["--set-upstream",s,`${o.current}:${a}`])}}}updateGitPath(r){return this.setGitInstance()}updateBasePath(r){return this.setGitInstance(!0)}async getDiffString(r,i=!1,n){return i?await this.git.diff(["--cached","--",r]):n?await this.git.show([`${n}`,"--",r]):await this.git.diff(["--",r])}async diff(r,i,n){return await this.git.diff([`${i}..${n}`,"--",r])}async rawCommand(r){let i=r.split(" ");return await this.git.raw(i[0],...i.slice(1))}async getSubmoduleOfFile(r){if(!await this.app.vault.adapter.exists(ze.dirname(r)))return;let i=await this.git.raw(["-C",ze.dirname(r),"rev-parse","--show-toplevel"],l=>l&&console.warn("get-submodule-of-file",l==null?void 0:l.message));if(i=i.trim(),(await this.git.raw(["-C",ze.dirname(r),"rev-parse","--show-superproject-working-tree"],l=>l&&console.warn("get-submodule-of-file",l==null?void 0:l.message))).trim()==="")return;let a=this.app.vault.adapter.getFullPath(ze.normalize(r)),o=ze.relative(i,a);return{submodule:i,relativeFilepath:o}}async getLastCommitTime(){try{let r=await this.git.log({n:1});if(r!=null&&r.latest!=null)return new Date(r.latest.date)}catch(r){if(r instanceof Nr){if(r.message.contains("does not have any commits yet"))return}else throw r}}async isGitInstalled(){let r=this.plugin.localStorage.getGitPath(),i=await fu(r||"git",["--version"],{});if(i.error)if(Jn.Platform.isWin&&!r){this.plugin.log(`Git not found in PATH. Checking standard installation path(${bd}) of Git for Windows.`);let n=await fu(bd,["--version"]);if(n.error)return console.error(n.error),!1;this.useDefaultWindowsGitPath=!0}else return console.error(i.error),!1;else this.useDefaultWindowsGitPath=!1;return!0}convertErrors(r){if(r instanceof Nr){let i=String(r.message);if(i.contains("Could not resolve host")||i.contains("Unable to resolve host")||i.contains("Unable to open connection")||i.match(/ssh: connect to host .*? port .*?: Operation timed out/)!=null||i.match(/ssh: connect to host .*? port .*?: Network is unreachable/)!=null||i.match(/ssh: connect to host .*? port .*?: Undefined error: 0/)!=null)throw new al(i)}throw r}async isFileTrackedByLFS(r){try{return(await this.git.raw(["check-attr","filter",r])).includes("filter: lfs")}catch(i){let n=i instanceof Error?i.message:String(i);return this.plugin.displayError(`Error checking LFS status: ${n}`),!1}}},l2={hash:"000000",isZeroCommit:!0,summary:""};function B6(t){let r=t.replace(`\r +`,` +`).split(` +`),i={commits:new Map,hashPerLine:[void 0],originalFileLineNrPerLine:[void 0],finalFileLineNrPerLine:[void 0],groupSizePerStartingLine:new Map},n=1;for(let s=0;s<r.length;){if(s2(r[s])){let a=r[s].split(" "),o=H6(a,n,i);for(s++;s2(r[s]);s++){let l=r[s].split(" ");U6(l,i,n)}G6(i.commits.get(o)),n+=1}else if(!(r[s]===""&&s===r.length-1))throw Error(`Expected non-whitespace line or EOF, but found: ${r[s]}`);s++}return i}function H6(t,e,r){let i=t[0];if(r.hashPerLine.push(i),r.originalFileLineNrPerLine.push(parseInt(t[1])),r.finalFileLineNrPerLine.push(parseInt(t[2])),t.length>=4&&r.groupSizePerStartingLine.set(e,parseInt(t[3])),parseInt(t[2])!==e)throw Error(`git-blame output is out of order: ${e} vs ${t[2]}`);return i}function U6(t,e,r){let i=t[0],n=t.slice(1).join(" "),s=e.hashPerLine[r],a=e.commits.get(s)||{hash:s,author:{},committer:{},previous:{}};switch(i){case"summary":a.summary=n;break;case"author":a.author.name=n;break;case"author-mail":a.author.email=a2(n);break;case"author-time":a.author.epochSeconds=parseInt(n);break;case"author-tz":a.author.tz=n;break;case"committer":a.committer.name=n;break;case"committer-mail":a.committer.email=a2(n);break;case"committer-time":a.committer.epochSeconds=parseInt(n);break;case"committer-tz":a.committer.tz=n;break;case"previous":a.previous.commitHash=n;break;case"filename":a.previous.filename=n;break}e.commits.set(s,a)}function G6(t){if(t.summary===void 0)throw Error(`Summary not provided for commit: ${t.hash}`);Jv(t.author)&&(t.author=void 0),Jv(t.committer)&&(t.committer=void 0),Jv(t.previous)&&(t.previous=void 0),t.isZeroCommit=!!t.hash.match(/^0*$/)}function Jv(t){return!t||Object.keys(t).length===0}function s2(t){return t.length>0&&t[0].trim()===t[0]}function a2(t){let e=t.startsWith("<")?t.substring(1):t;return e.endsWith(">")?e.substring(0,e.length-1):e}m();var M2=require("@codemirror/state");m();var ew=class{constructor(){this.eventsPerFilepath=new Map;this.startRemoveStalesSubscribersInterval()}ifFilepathDefinedTransformSubscribers(e,r){if(e)return this.ensureInitialized(e),r(this.eventsPerFilepath.get(e))}forEachSubscriber(e){this.eventsPerFilepath.forEach(r=>r.forEach(e))}ensureInitialized(e){this.eventsPerFilepath.get(e)||this.eventsPerFilepath.set(e,new Set)}startRemoveStalesSubscribersInterval(){this.removeStalesSubscribersTimer=window.setInterval(()=>this==null?void 0:this.forEachSubscriber(e=>e==null?void 0:e.removeIfStale()),6e4)}clear(){window.clearInterval(this.removeStalesSubscribersTimer),this.eventsPerFilepath.clear()}},es=new ew;m();var Jd=require("@codemirror/state"),c2=Ht(tw(),1);function u2(t,e,r){if(!(t===void 0||e===void 0||r===void 0))return`head${t}-obj${e}-path${r}`}var f2=Jd.StateEffect.define();function d2(t,e,r){return r.update({effects:f2.of({key:t,la:e,lineOffsetsFromUnsavedChanges:new Map})})}var Sl=Jd.StateField.define({create:t=>{},update:(t,e)=>{for(let r of e.effects)if(r.is(f2))return r.value;return j6(e,t)},compare:(t,e)=>(t==null?void 0:t.key)===(e==null?void 0:e.key)});function eh(t){var s;let e=c2.sha256.create();if(!t)return e;let{la:r,key:i,lineOffsetsFromUnsavedChanges:n}=t;e.update(r==="untracked"?"t":"f"),e.update(i);for(let[a,o]of(s=n.entries())!=null?s:[])e.update([a,o]);return e}var xu={get:void 0,save:void 0};function h2(t,e){xu.get=t,xu.save=e}function th(t){var e,r;return(r=(e=Eu(t.coloringMaxAge))==null?void 0:e.asDays())!=null?r:Eu(ht.lineAuthor.coloringMaxAge).asDays()}function j6(t,e){if(e)return t.changes.empty||t.changes.iterChanges((r,i,n,s)=>{var p;let a=t.startState.doc,{newDoc:o}=t,l=a.lineAt(r).number,c=a.lineAt(i).number,u=o.lineAt(n).number,f=o.lineAt(s).number,d=c-l+1,h=f-u+1;for(let g=u;g<=f;g++){let v=(p=e.lineOffsetsFromUnsavedChanges.get(g))!=null?p:0,_=f===g,b=h-d;_&&(v+=b),e.lineOffsetsFromUnsavedChanges.set(g,v)}}),e}m();function p2(){kl=void 0,rw=[],rh=0,nh.clear(),sh.clear(),Al.clear()}var kl,ih=()=>kl;function m2(t,e){var n;let r=e.length;if(r<((n=kl==null?void 0:kl.length)!=null?n:0))return;kl={gutter:t,length:r,text:e};let i=jt.plugin.localStorage.getGutterSpacingFallbackLength();r!==i&&jt.plugin.localStorage.setGutterSpacingFallbackLength(r)}var rw=[],V6=15,rh=0;function g2(t){rw[rh]=t,rh=(rh+1)%V6}function v2(){return eA(rw)}var nh=new Map,sh=new Map,Al=new Set;m();var $2=require("@codemirror/state"),F2=require("@codemirror/view");m();var aw=require("@codemirror/view"),A2=Ht(tw(),1),Cl=require("obsidian");m();m();var ah={x:-10,y:-10};function w2(){ah.x===-10&&window.addEventListener("mousedown",t=>{ah.x=t.clientX,ah.y=t.clientY})}function _2(){for(let t of Al)if(z6(t,ah))return t}function z6(t,e){let{x:r,y:i,width:n,height:s}=t.getBoundingClientRect();return r<=e.x&&e.x<=r+n&&i<=e.y&&e.y<=i+s}var b2="data-commit";function y2(t,e,r){if(e.hasFocus())return;let i=_2();if(!i)return;let n=q6(i);n&&(!n.isZeroCommit&&!n.isWaitingGutter&&W6(n,t),iw("showCommitHash",t),iw("authorDisplay",t),iw("dateTimeFormatOptions",t))}function W6(t,e){e.addItem(r=>r.setTitle("Copy commit hash").setIcon("copy").setSection("obs-git-line-author-copy").onClick(i=>navigator.clipboard.writeText(t.hash)))}function iw(t,e){var l,c;let r,i,n=jt.plugin.settings.lineAuthor,s=n[t],a=typeof s=="boolean"?s:s!=="hide",o=ht.lineAuthor[t];if(t==="showCommitHash")r="Show commit hash",i=s;else if(t==="authorDisplay"){let u=(l=n.lastShownAuthorDisplay)!=null?l:o;r="Show author "+(a?s:u),i=a?"hide":u}else if(t==="dateTimeFormatOptions"){let u=(c=n.lastShownDateTimeFormatOptions)!=null?c:o;r="Show "+(a?s:u),r+=r.contains("date")?"":" date",i=a?"hide":u}else Os(t);e.addItem(u=>u.setTitle(r).setSection("obs-git-line-author-configure").setChecked(a).onClick(f=>{var d,h;return(h=(d=jt.plugin)==null?void 0:d.settingsTab)==null?void 0:h.lineAuthorSettingHandler(t,i)}))}function x2(t,e,r){r.setAttr(b2,JSON.stringify({hash:t.hash,isZeroCommit:t.isZeroCommit,isWaitingGutter:e}))}function q6(t){let e=t.getAttr(b2);return e?JSON.parse(e):void 0}m();function lh(t,e){return t==="oldest"?oh(0,!1,e).color:oh(void 0,!0,e).color}function oh(t,e,r){let i=th(r),n=Date.now()/1e3,s=t!=null?t:0,o=(e?0:n-s)/60/60/24,l=Math.pow(Math.clamp(o/i,0,1),1/2.3),c=Y6(),u=r.colorNew,f=r.colorOld,d=c?.4:1,h=nw(u.r,f.r,l)*d,p=nw(u.g,f.g,l)*d,g=nw(u.b,f.b,l)*d;return{color:`rgba(${h},${p},${g},${c?.75:.25})`,daysSinceCommit:o}}function nw(t,e,r){return t+(e-t)*r}function Y6(){var t;return((t=window.app)==null?void 0:t.getTheme())==="obsidian"}function E2(t){activeDocument.body.style.setProperty("--obs-git-gutter-text",t.textColorCss)}m();function S2(t,e,r){let i;for(let n=e;n<=r;n++){let s=t.hashPerLine[n],a=t.commits.get(s);(!i||a.isZeroCommit||X6(a,i))&&(i=a)}return i}function X6(t,e){var n,s,a,o;let r=(s=(n=t.author)==null?void 0:n.epochSeconds)!=null?s:0,i=(o=(a=e.author)==null?void 0:a.epochSeconds)!=null?o:0;return r>i}var C2=require("node:util");var k2="-",Z6="+",K6=3,Q6="*",J6=/\S/g,e5="%",Tl=class t extends aw.GutterMarker{constructor(r){super();this.text=r}eq(r){return r instanceof t&&this.text===r.text}toDOM(){return activeDocument.createTextNode(this.text)}destroy(r){}},sw=class extends aw.GutterMarker{constructor(r,i,n,s,a,o){super();this.lineAuthoring=r;this.startLine=i;this.endLine=n;this.key=s;this.settings=a;this.options=o;this.point=!1;this.elementClass="obs-git-blame-gutter"}eq(r){return this.key===(r==null?void 0:r.key)&&this.startLine===(r==null?void 0:r.startLine)&&this.endLine===(r==null?void 0:r.endLine)&&(this==null?void 0:this.options)===(r==null?void 0:r.options)}toDOM(){var r;return this.precomputedDomProvider=(r=this.precomputedDomProvider)!=null?r:this.computeDom(),this.precomputedDomProvider()}destroy(r){r&&(activeDocument.body.contains(r)||Al.delete(r))}computeDom(){let r=S2(this.lineAuthoring,this.startLine,this.endLine),i=r.isZeroCommit?"":this.renderNonZeroCommit(r);return!r.isZeroCommit&&this.options!=="waiting-for-result"?m2(this,i):i=this.adaptTextForFakeCommit(r,i,this.options),this.createHtmlNode(r,i,this.options==="waiting-for-result")}createHtmlNode(r,i,n){var c,u,f,d,h,p;let s=window.createDiv();s.setText(i);let{color:a,daysSinceCommit:o}=oh((c=r==null?void 0:r.author)==null?void 0:c.epochSeconds,r==null?void 0:r.isZeroCommit,this.settings);s.style.backgroundColor=a,s.setAttribute("data-author",(f=(u=r==null?void 0:r.author)==null?void 0:u.name)!=null?f:""),s.setAttribute("data-author-email",(h=(d=r==null?void 0:r.author)==null?void 0:d.email)!=null?h:""),(0,Cl.setTooltip)(s,(p=r==null?void 0:r.summary)!=null?p:""),x2(r,n,s);function l(){let g=s.cloneNode(!0);return Al.add(g),n||g2(o),g}return l}renderNonZeroCommit(r){let i=this.settings.showCommitHash?this.renderHash(r):"",n=this.settings.authorDisplay==="hide"?"":`${this.renderAuthorName(r,this.settings.authorDisplay)}`,s=this.settings.dateTimeFormatOptions==="hide"?"":`${this.renderAuthoringDate(r,this.settings.dateTimeFormatOptions,this.settings.dateTimeFormatCustomString,this.settings.dateTimeTimezone)}`;return[i,n,s].filter(o=>o.length>=1).join(" ")}renderHash(r){return r.hash.substring(0,6)}renderAuthorName(r,i){var o,l,c,u;let n=(l=(o=r==null?void 0:r.author)==null?void 0:o.name)!=null?l:"",s=n.split(" ").filter(f=>f.length>=1),a;switch(i){case"initials":a=s.map(f=>f[0].toUpperCase()).join("");break;case"first name":a=(c=s.first())!=null?c:k2;break;case"last name":a=(u=s.last())!=null?u:k2;break;case"full":a=n;break;default:return Os(i)}return(0,C2.isDeepStrictEqual)(r==null?void 0:r.author,r==null?void 0:r.committer)||(a=a+Q6),a}renderAuthoringDate(r,i,n,s){var c;let a="?";if(((c=r==null?void 0:r.author)==null?void 0:c.epochSeconds)===void 0)return a;let o;switch(i){case"date":o=wd;break;case"datetime":o=Hg;break;case"custom":o=n;break;case"natural language":o=u=>{let f=u.diff((0,Cl.moment)());return Cl.moment.duration(f).humanize(!0)};break;default:return Os(i)}let l=Cl.moment.unix(r.author.epochSeconds);switch(s){case"viewer-local":break;case"author-local":l=l.utcOffset(r.author.tz),typeof o=="string"&&(o+=" Z");break;case"utc0000":l=l.utc(),typeof o=="string"&&(o+="[Z]");break;default:return Os(s)}return typeof o=="string"?l.format(o):o(l)}adaptTextForFakeCommit(r,i,n){var l,c,u;let s=(c=(l=ih())==null?void 0:l.text)!=null?c:i,a=n!=="waiting-for-result"&&r.isZeroCommit?Z6:e5;i=s.replace(J6,a);let o=(u=jt.plugin.localStorage.getGutterSpacingFallbackLength())!=null?u:i.length;if(i=tA(i,o,a),n!=="waiting-for-result"&&r.isZeroCommit){let f=Math.min(o,K6);i=rA(i,o-f)}return i}};function Pa(t,e,r,i,n,s){let a=A2.sha256.create();a.update(JSON.stringify(n)),a.update(`s${e}-e${r}-k${i}-o${s}`);let o=a.hex(),l=nh.get(o);if(l)return l;let c=new sw(t,e,r,i,n,s);return nh.set(o,c),c}m();var T2=require("obsidian");function ow(){let t=jt.plugin.localStorage.getGutterSpacingFallbackLength();return new Tl(Array(t).fill("-").join(""))}function lw(t){let{lineAuthoring:e,ageForInitialRender:r}=t5(t);return Pa(e,1,1,"initialGutter"+r,t,"waiting-for-result")}function t5(t){var s;let e=(s=v2())!=null?s:th(t)*.25,r=(0,T2.moment)().add(-e,"days"),i={name:"",epochSeconds:Jk(r),tz:"+0000"},n={hash:"waiting-for-result",author:i,committer:i,isZeroCommit:!1};return{lineAuthoring:{hashPerLine:[void 0,"waiting-for-result"],commits:new Map([["waiting-for-result",n]])},ageForInitialRender:e}}m();function P2(t,e){return Pa({hashPerLine:[void 0,"000000"],commits:new Map([["000000",l2]])},1,1,t,e)}var cw=new Tl(""),I2=(0,F2.gutter)({class:"line-author-gutter-container",markers(t){let e=t.state.field(Sl,!1);return r5(t,e)},lineMarkerChange(t){let e=eh(t.state.field(Sl));return eh(t.startState.field(Sl))!==e},renderEmptyElements:!0,initialSpacer:t=>(R2(t),ow()),updateSpacer:(t,e)=>{var r,i;return R2(e.view),(i=(r=ih())==null?void 0:r.gutter)!=null?i:ow()}});function r5(t,e){let r=eh(e),i=t.state.doc,n=new Map;for(let u=1;u<=i.lines;u++){let f=i.line(u).from,d=t.lineBlockAt(f).to;n.set(u,[f,d]),r.update([f,d,0])}let s=xu.get();r.update("s"+Object.values(xu).join(","));let a=r.hex(),o=sh.get(a);if(o)return o;let{result:l,allowCache:c}=i5(i,n,s,e);return c&&sh.set(a,l),l}function i5(t,e,r,i){let n=!0,s=t.lines,a=[];function o(f,d,h){return a.push(h.range(f,d))}let l=n5(s,i),c=t.length===0,u=t.iterLines(s,s+1).next().value==="";for(let f=1;f<=s;f++){let[d,h]=e.get(f),p=t.lineAt(h).number;if(c){o(d,h,cw);continue}if(f===s&&u){o(d,h,cw);continue}if(i===void 0){o(d,h,lw(r)),n=!1;continue}let{key:g,la:v}=i;if(v==="untracked"){o(d,h,P2(v,r));continue}let _=v.hashPerLine.length-1,b=l[f],S=l[p];if(S&&S>_&&o(d,h,cw),b!==void 0&&nv(1,b,_)&&S!==void 0&&nv(1,S,_)){o(d,h,Pa(v,b,S,g,r));continue}if(_<1){o(d,h,lw(r)),n=!1;continue}let k=Math.clamp(b!=null?b:f,1,_),E=Math.clamp(S!=null?S:p,1,_);o(d,h,Pa(v,k,E,g+"computing",r,"waiting-for-result"))}return{result:$2.RangeSet.of(a,!0),allowCache:n}}function n5(t,e){if(!(e!=null&&e.lineOffsetsFromUnsavedChanges))return Array.from(new Array(t+1),n=>n);let r=[void 0],i=0;for(let n=1;n<=t;n++){let s=e.lineOffsetsFromUnsavedChanges.get(n);i+=s!=null?s:0,r[n]=s===void 0?n-i:void 0}return r}function R2(t){t.dom.querySelectorAll(".cm-gutters").forEach(r=>{r!=null&&r.style&&(r.style.marginLeft||(r.style.marginLeft="unset"))})}var ch=class{constructor(e){this.plugin=e;this.lineAuthorings=new Map}async trackChanged(e){return this.trackChangedHelper(e).catch(r=>(console.warn("Git: Error in trackChanged."+r),Promise.reject(r)))}async trackChangedHelper(e){if(e){if(e.path===void 0){console.warn("Git: Attempted to track change of undefined filepath. Unforeseen situation.");return}return this.computeLineAuthorInfo(e.path)}}destroy(){this.lineAuthorings.clear(),p2()}async computeLineAuthorInfo(e){let r=this.plugin.editorIntegration.lineAuthoringFeature.isAvailableOnCurrentPlatform().gitManager,i=await r.submoduleAwareHeadRevisonInContainingDirectory(e),n=await r.hashObject(e),s=u2(i,n,e);if(s!==void 0){if(!this.lineAuthorings.has(s)){let a=await r.blame(e,this.plugin.settings.lineAuthor.followMovement,this.plugin.settings.lineAuthor.ignoreWhitespace);this.lineAuthorings.set(s,a)}this.notifyComputationResultToSubscribers(e,s)}}notifyComputationResultToSubscribers(e,r){es.ifFilepathDefinedTransformSubscribers(e,i=>i.forEach(n=>n.notifyLineAuthoring(r,this.lineAuthorings.get(r))))}},D2=M2.Prec.high([Sl,I2]);var O2="https://momentjs.com/docs/#/parsing/string-format/",s5="https://publish.obsidian.md/git-doc/Line+Authoring",uh=class extends U.PluginSettingTab{constructor(r,i){super(r,i);this.plugin=i;this.lineAuthorColorSettings=new Map;this.icon="git-pull-request"}get settings(){return this.plugin.settings}display(){let{containerEl:r}=this,i=this.plugin,n;i.settings.differentIntervalCommitAndPush?n="commit":n="commit-and-sync";let s=i.gitReady;r.empty(),s||(r.createEl("p",{text:"Git is not ready. When all settings are correct you can configure commit-sync, etc."}),r.createEl("br"));let a;if(s){new U.Setting(r).setName("Automatic").setHeading(),new U.Setting(r).setName("Split timers for automatic commit and sync").setDesc("Enable to use one interval for commit and another for sync.").addToggle(f=>f.setValue(i.settings.differentIntervalCommitAndPush).onChange(async d=>{i.settings.differentIntervalCommitAndPush=d,await i.saveSettings(),i.automaticsManager.reload("commit","push"),this.refreshDisplayWithDelay()})),new U.Setting(r).setName(`Auto ${n} interval (minutes)`).setDesc(`${i.settings.differentIntervalCommitAndPush?"Commit":"Commit and sync"} changes every X minutes. Set to 0 (default) to disable. (See below setting for further configuration!)`).addText(f=>{f.inputEl.type="number",this.setNonDefaultValue({text:f,settingsProperty:"autoSaveInterval"}),f.setPlaceholder(String(ht.autoSaveInterval)),f.onChange(async d=>{d!==""?i.settings.autoSaveInterval=Number(d):i.settings.autoSaveInterval=ht.autoSaveInterval,await i.saveSettings(),i.automaticsManager.reload("commit")})}),a=new U.Setting(r).setName(`Auto ${n} after stopping file edits`).setDesc(`Requires the ${n} interval not to be 0. + If turned on, do auto ${n} every ${iA(i.settings.autoSaveInterval)} after stopping file edits. + This also prevents auto ${n} while editing a file. If turned off, it's independent from the last file edit.`).addToggle(f=>f.setValue(i.settings.autoBackupAfterFileChange).onChange(async d=>{i.settings.autoBackupAfterFileChange=d,this.refreshDisplayWithDelay(),await i.saveSettings(),i.automaticsManager.reload("commit")})),this.mayDisableSetting(a,i.settings.setLastSaveToLastCommit),a=new U.Setting(r).setName(`Auto ${n} after latest commit`).setDesc(`If turned on, sets last auto ${n} timestamp to the latest commit timestamp. This reduces the frequency of auto ${n} when doing manual commits.`).addToggle(f=>f.setValue(i.settings.setLastSaveToLastCommit).onChange(async d=>{i.settings.setLastSaveToLastCommit=d,await i.saveSettings(),i.automaticsManager.reload("commit"),this.refreshDisplayWithDelay()})),this.mayDisableSetting(a,i.settings.autoBackupAfterFileChange),a=new U.Setting(r).setName("Auto push interval (minutes)").setDesc("Push commits every X minutes. Set to 0 (default) to disable.").addText(f=>{f.inputEl.type="number",this.setNonDefaultValue({text:f,settingsProperty:"autoPushInterval"}),f.setPlaceholder(String(ht.autoPushInterval)),f.onChange(async d=>{d!==""?i.settings.autoPushInterval=Number(d):i.settings.autoPushInterval=ht.autoPushInterval,await i.saveSettings(),i.automaticsManager.reload("push")})}),this.mayDisableSetting(a,!i.settings.differentIntervalCommitAndPush),new U.Setting(r).setName("Auto pull interval (minutes)").setDesc("Pull changes every X minutes. Set to 0 (default) to disable.").addText(f=>{f.inputEl.type="number",this.setNonDefaultValue({text:f,settingsProperty:"autoPullInterval"}),f.setPlaceholder(String(ht.autoPullInterval)),f.onChange(async d=>{d!==""?i.settings.autoPullInterval=Number(d):i.settings.autoPullInterval=ht.autoPullInterval,await i.saveSettings(),i.automaticsManager.reload("pull")})}),new U.Setting(r).setName(`Auto ${n} only staged files`).setDesc(`If turned on, only staged files are committed on ${n}. If turned off, all changed files are committed.`).addToggle(f=>f.setValue(i.settings.autoCommitOnlyStaged).onChange(async d=>{i.settings.autoCommitOnlyStaged=d,await i.saveSettings()})),new U.Setting(r).setName(`Specify custom commit message on auto ${n}`).setDesc("You will get a pop up to specify your message.").addToggle(f=>f.setValue(i.settings.customMessageOnAutoBackup).onChange(async d=>{i.settings.customMessageOnAutoBackup=d,await i.saveSettings(),this.refreshDisplayWithDelay()})),a=new U.Setting(r).setName(`Commit message on auto ${n}`).setDesc("Available placeholders: {{date}} (see below), {{hostname}} (see below), {{numFiles}} (number of changed files in the commit) and {{files}} (changed files in commit message).").addTextArea(f=>{f.setPlaceholder(ht.autoCommitMessage).onChange(async d=>{d===""?i.settings.autoCommitMessage=ht.autoCommitMessage:i.settings.autoCommitMessage=d,await i.saveSettings()}),this.setNonDefaultValue({text:f,settingsProperty:"autoCommitMessage"})}),this.mayDisableSetting(a,i.settings.customMessageOnAutoBackup),new U.Setting(r).setName("Commit message").setHeading();let c=new U.Setting(r).setName("Commit message on manual commit").setDesc("Available placeholders: {{date}} (see below), {{hostname}} (see below), {{numFiles}} (number of changed files in the commit) and {{files}} (changed files in commit message). Leave empty to require manual input on each commit.");c.addTextArea(f=>{c.addButton(d=>{d.setIcon("reset").setTooltip(`Set to default: "${ht.commitMessage}"`).onClick(()=>{f.setValue(ht.commitMessage),f.onChanged()})}),f.setValue(i.settings.commitMessage),f.onChange(async d=>{i.settings.commitMessage=d,await i.saveSettings()})}),U.Platform.isDesktopApp&&new U.Setting(r).setName("Commit message script").setDesc("A script that is run using 'sh -c' to generate the commit message. May be used to generate commit messages using AI tools. Available placeholders: {{hostname}}, {{date}}.").addText(f=>{f.onChange(async d=>{d===""?i.settings.commitMessageScript=ht.commitMessageScript:i.settings.commitMessageScript=d,await i.saveSettings()}),this.setNonDefaultValue({text:f,settingsProperty:"commitMessageScript"})});let u=new U.Setting(r).setName("{{date}} placeholder format").addMomentFormat(f=>f.setDefaultFormat(i.settings.commitDateFormat).setValue(i.settings.commitDateFormat).onChange(async d=>{i.settings.commitDateFormat=d,await i.saveSettings()}));u.descEl.createSpan({text:` Specify custom date format. E.g. "${Ug}. See `}),u.descEl.createEl("a",{text:"Moment.js documentation",href:O2,attr:{target:"_blank"}}),u.descEl.createSpan({text:" for more formats."}),new U.Setting(r).setName("{{hostname}} placeholder replacement").setDesc("Specify custom hostname for every device. Defaults to the OS hostname if not set on desktop.").addText(f=>{var d;return f.setValue((d=i.localStorage.getHostname())!=null?d:"").onChange(h=>{i.localStorage.setHostname(h)})}),new U.Setting(r).setName("Preview commit message").addButton(f=>f.setButtonText("Preview").onClick(async()=>{let d=await i.gitManager.formatCommitMessage(i.settings.commitMessage);new U.Notice(`${d}`)})),new U.Setting(r).setName("List filenames affected by commit in the commit body").addToggle(f=>f.setValue(i.settings.listChangedFilesInMessageBody).onChange(async d=>{i.settings.listChangedFilesInMessageBody=d,await i.saveSettings()})),new U.Setting(r).setName("Pull").setHeading(),i.gitManager instanceof Se&&new U.Setting(r).setName("Merge strategy").setDesc("Decide how to integrate commits from your remote branch into your local branch.").addDropdown(f=>{let d={merge:"Merge",rebase:"Rebase",reset:"Other sync service (Only updates the HEAD without touching the working directory)"};f.addOptions(d),f.setValue(i.settings.syncMethod),f.onChange(async h=>{i.settings.syncMethod=h,await i.saveSettings()})}),new U.Setting(r).setName("Merge strategy on conflicts").setDesc("Decide how to solve conflicts when pulling remote changes. This can be used to favor your local changes or the remote changes automatically.").addDropdown(f=>{let d={none:"None (git default)",ours:"Our changes",theirs:"Their changes"};f.addOptions(d),f.setValue(i.settings.mergeStrategy),f.onChange(async h=>{i.settings.mergeStrategy=h,await i.saveSettings()})}),new U.Setting(r).setName("Pull on startup").setDesc("Automatically pull commits when Obsidian starts.").addToggle(f=>f.setValue(i.settings.autoPullOnBoot).onChange(async d=>{i.settings.autoPullOnBoot=d,await i.saveSettings()})),new U.Setting(r).setName("Commit-and-sync").setDesc("Commit-and-sync with default settings means staging everything -> committing -> pulling -> pushing. Ideally this is a single action that you do regularly to keep your local and remote repository in sync.").setHeading(),a=new U.Setting(r).setName("Push on commit-and-sync").setDesc(`Most of the time you want to push after committing. Turning this off turns a commit-and-sync action into commit ${i.settings.pullBeforePush?"and pull ":""}only. It will still be called commit-and-sync.`).addToggle(f=>f.setValue(!i.settings.disablePush).onChange(async d=>{i.settings.disablePush=!d,this.refreshDisplayWithDelay(),await i.saveSettings()})),new U.Setting(r).setName("Pull on commit-and-sync").setDesc(`On commit-and-sync, pull commits as well. Turning this off turns a commit-and-sync action into commit ${i.settings.disablePush?"":"and push "}only.`).addToggle(f=>f.setValue(i.settings.pullBeforePush).onChange(async d=>{i.settings.pullBeforePush=d,this.refreshDisplayWithDelay(),await i.saveSettings()})),i.gitManager instanceof Se&&(new U.Setting(r).setName("Hunk management").setDesc("Hunks are sections of grouped line changes right in your editor.").setHeading(),new U.Setting(r).setName("Signs").setDesc("This allows you to see your changes right in your editor via colored markers and stage/reset/preview individual hunks.").addToggle(f=>f.setValue(i.settings.hunks.showSigns).onChange(async d=>{i.settings.hunks.showSigns=d,await i.saveSettings(),i.editorIntegration.refreshSignsSettings()})),new U.Setting(r).setName("Hunk commands").setDesc("Adds commands to stage/reset individual Git diff hunks and navigate between them via 'Go to next/prev hunk' commands.").addToggle(f=>f.setValue(i.settings.hunks.hunkCommands).onChange(async d=>{i.settings.hunks.hunkCommands=d,await i.saveSettings(),i.editorIntegration.refreshSignsSettings()})),new U.Setting(r).setName("Status bar with summary of line changes").addDropdown(f=>f.addOptions({disabled:"Disabled",colored:"Colored",monochrome:"Monochrome"}).setValue(i.settings.hunks.statusBar).onChange(async d=>{i.settings.hunks.statusBar=d,await i.saveSettings(),i.editorIntegration.refreshSignsSettings()})),new U.Setting(r).setName("Line author information").setHeading(),this.addLineAuthorInfoSettings())}new U.Setting(r).setName("History view").setHeading(),new U.Setting(r).setName("Show Author").setDesc("Show the author of the commit in the history view.").addDropdown(c=>{let u={hide:"Hide",full:"Full",initials:"Initials"};c.addOptions(u),c.setValue(i.settings.authorInHistoryView),c.onChange(async f=>{i.settings.authorInHistoryView=f,await i.saveSettings(),await i.refresh()})}),new U.Setting(r).setName("Show Date").setDesc("Show the date of the commit in the history view. The {{date}} placeholder format is used to display the date.").addToggle(c=>c.setValue(i.settings.dateInHistoryView).onChange(async u=>{i.settings.dateInHistoryView=u,await i.saveSettings(),await i.refresh()})),new U.Setting(r).setName("Source control view").setHeading(),new U.Setting(r).setName("Automatically refresh source control view on file changes").setDesc("On slower machines this may cause lags. If so, just disable this option.").addToggle(c=>c.setValue(i.settings.refreshSourceControl).onChange(async u=>{i.settings.refreshSourceControl=u,await i.saveSettings()})),new U.Setting(r).setName("Source control view refresh interval").setDesc("Milliseconds to wait after file change before refreshing the Source Control View.").addText(c=>{c.inputEl.type="number",this.setNonDefaultValue({text:c,settingsProperty:"refreshSourceControlTimer"}),c.setPlaceholder(String(ht.refreshSourceControlTimer)),c.onChange(async f=>{f!==""&&Number.isInteger(Number(f))?i.settings.refreshSourceControlTimer=Math.max(Number(f),500):i.settings.refreshSourceControlTimer=ht.refreshSourceControlTimer,await i.saveSettings(),i.setRefreshDebouncer()})}),new U.Setting(r).setName("Miscellaneous").setHeading(),i.gitManager instanceof Se&&new U.Setting(r).setName("Diff view style").setDesc('Set the style for the diff view. Note that the actual diff in "Split" mode is not generated by Git, but the editor itself instead so it may differ from the diff generated by Git. One advantage of this is that you can edit the text in that view.').addDropdown(c=>{let u={split:"Split",git_unified:"Unified"};c.addOptions(u),c.setValue(i.settings.diffStyle),c.onChange(async f=>{i.settings.diffStyle=f,await i.saveSettings()})}),new U.Setting(r).setName("Disable informative notifications").setDesc("Disable informative notifications for git operations to minimize distraction (refer to status bar for updates).").addToggle(c=>c.setValue(i.settings.disablePopups).onChange(async u=>{i.settings.disablePopups=u,this.refreshDisplayWithDelay(),await i.saveSettings()})),new U.Setting(r).setName("Disable error notifications").setDesc("Disable error notifications of any kind to minimize distraction (refer to status bar for updates).").addToggle(c=>c.setValue(!i.settings.showErrorNotices).onChange(async u=>{i.settings.showErrorNotices=!u,await i.saveSettings()})),i.settings.disablePopups||new U.Setting(r).setName("Hide notifications for no changes").setDesc("Don't show notifications when there are no changes to commit or push.").addToggle(c=>c.setValue(i.settings.disablePopupsForNoChanges).onChange(async u=>{i.settings.disablePopupsForNoChanges=u,await i.saveSettings()})),new U.Setting(r).setName("Show status bar").setDesc("Obsidian must be restarted for the changes to take affect.").addToggle(c=>c.setValue(i.settings.showStatusBar).onChange(async u=>{i.settings.showStatusBar=u,await i.saveSettings()})),new U.Setting(r).setName("File menu integration").setDesc('Add "Stage", "Unstage" and "Add to .gitignore" actions to the file menu.').addToggle(c=>c.setValue(i.settings.showFileMenu).onChange(async u=>{i.settings.showFileMenu=u,await i.saveSettings()})),new U.Setting(r).setName("Show branch status bar").setDesc("Obsidian must be restarted for the changes to take affect.").addToggle(c=>c.setValue(i.settings.showBranchStatusBar).onChange(async u=>{i.settings.showBranchStatusBar=u,await i.saveSettings()})),new U.Setting(r).setName("Show the count of modified files in the status bar").addToggle(c=>c.setValue(i.settings.changedFilesInStatusBar).onChange(async u=>{i.settings.changedFilesInStatusBar=u,await i.saveSettings()})),i.gitManager instanceof Vi?new U.Setting(r).setName("Authentication/commit author").setHeading():new U.Setting(r).setName("Commit author").setHeading(),i.gitManager instanceof Vi&&new U.Setting(r).setName("Username on your git server. E.g. your username on GitHub").addText(c=>{var u;c.setValue((u=i.localStorage.getUsername())!=null?u:""),c.onChange(f=>{i.localStorage.setUsername(f)})}),i.gitManager instanceof Vi&&new U.Setting(r).setName("Password/Personal access token").setDesc("Type in your password. You won't be able to see it again.").addText(c=>{c.inputEl.autocapitalize="off",c.inputEl.autocomplete="off",c.inputEl.spellcheck=!1,c.onChange(u=>{i.localStorage.setPassword(u)})}),i.gitReady&&new U.Setting(r).setName("Author name for commit").addText(async c=>{var u;c.setValue((u=await i.gitManager.getConfig("user.name"))!=null?u:""),c.onChange(async f=>{await i.gitManager.setConfig("user.name",f==""?void 0:f)})}),i.gitReady&&new U.Setting(r).setName("Author email for commit").addText(async c=>{var u;c.setValue((u=await i.gitManager.getConfig("user.email"))!=null?u:""),c.onChange(async f=>{await i.gitManager.setConfig("user.email",f==""?void 0:f)})}),new U.Setting(r).setName("Advanced").setDesc("These settings usually don't need to be changed, but may be required for special setups.").setHeading(),i.gitManager instanceof Se&&(new U.Setting(r).setName("Update submodules").setDesc('"Commit-and-sync" and "pull" takes care of submodules. Missing features: Conflicted files, count of pulled/pushed/committed files. Tracking branch needs to be set for each submodule.').addToggle(c=>c.setValue(i.settings.updateSubmodules).onChange(async u=>{i.settings.updateSubmodules=u,await i.saveSettings()})),i.settings.updateSubmodules&&new U.Setting(r).setName("Submodule recurse checkout/switch").setDesc("Whenever a checkout happens on the root repository, recurse the checkout on the submodules (if the branches exist).").addToggle(c=>c.setValue(i.settings.submoduleRecurseCheckout).onChange(async u=>{i.settings.submoduleRecurseCheckout=u,await i.saveSettings()}))),i.gitManager instanceof Se&&new U.Setting(r).setName("Custom Git binary path").setDesc("Specify the path to the Git binary/executable. Git should already be in your PATH. Should only be necessary for a custom Git installation.").addText(c=>{var u;c.setValue((u=i.localStorage.getGitPath())!=null?u:""),c.setPlaceholder("git"),c.onChange(f=>{i.localStorage.setGitPath(f),i.gitManager.updateGitPath(f||"git").catch(d=>i.displayError(d))})}),i.gitManager instanceof Se&&new U.Setting(r).setName("Additional environment variables").setDesc("Use each line for a new environment variable in the format KEY=VALUE .").addTextArea(c=>{c.setPlaceholder("GIT_DIR=/path/to/git/dir"),c.setValue(i.localStorage.getEnvVars().join(` +`)),c.onChange(u=>{i.localStorage.setEnvVars(u.split(` +`))})}),i.gitManager instanceof Se&&new U.Setting(r).setName("Additional PATH environment variable paths").setDesc("Use each line for one path").addTextArea(c=>{c.setValue(i.localStorage.getPATHPaths().join(` +`)),c.onChange(u=>{i.localStorage.setPATHPaths(u.split(` +`))})}),i.gitManager instanceof Se&&new U.Setting(r).setName("Reload with new environment variables").setDesc("Removing previously added environment variables will not take effect until Obsidian is restarted.").addButton(c=>{c.setButtonText("Reload"),c.setCta(),c.onClick(async()=>{await i.gitManager.setGitInstance()})}),new U.Setting(r).setName("Custom base path (Git repository path)").setDesc(` + Sets the relative path to the vault from which the Git binary should be executed. + Mostly used to set the path to the Git repository, which is only required if the Git repository is below the vault root directory. Use "\\" instead of "/" on Windows. + `).addText(c=>{c.setValue(i.settings.basePath),c.setPlaceholder("directory/directory-with-git-repo"),c.onChange(async u=>{i.settings.basePath=u,await i.saveSettings(),i.gitManager.updateBasePath(u||"").catch(f=>i.displayError(f))})}),new U.Setting(r).setName("Custom Git directory path (Instead of '.git')").setDesc('Corresponds to the GIT_DIR environment variable. Requires restart of Obsidian to take effect. Use "\\" instead of "/" on Windows.').addText(c=>{c.setValue(i.settings.gitDir),c.setPlaceholder(".git"),c.onChange(async u=>{i.settings.gitDir=u,await i.saveSettings()})}),new U.Setting(r).setName("Disable on this device").setDesc("Disables the plugin on this device. This setting is not synced.").addToggle(c=>c.setValue(i.localStorage.getPluginDisabled()).onChange(u=>{i.localStorage.setPluginDisabled(u),u?i.unloadPlugin():i.init({fromReload:!0}).catch(f=>i.displayError(f)),new U.Notice("Obsidian must be restarted for the changes to take affect.")})),new U.Setting(r).setName("Support").setHeading(),new U.Setting(r).setName("Donate").setDesc("If you like this Plugin, consider donating to support continued development.").addButton(c=>{var f;let u=(f=c.buttonEl.parentElement)==null?void 0:f.createEl("a",{href:"https://ko-fi.com/F1F195IQ5",attr:{target:"_blank"}});u&&(u.createEl("img",{attr:{height:"36",style:"border:0px;height:36px;",src:"https://cdn.ko-fi.com/cdn/kofi3.png?v=3",border:"0",alt:"Buy Me a Coffee at ko-fi.com"}}),c.buttonEl.remove())});let o=r.createDiv();o.setAttr("align","center"),o.setAttr("style","margin: var(--size-4-2)");let l=o.createEl("button");if(l.setText("Copy Debug Information"),l.onclick=async()=>{await window.navigator.clipboard.writeText(JSON.stringify({settings:this.plugin.settings,pluginVersion:this.plugin.manifest.version},null,4)),new U.Notice("Debug information copied to clipboard. May contain sensitive information!")},U.Platform.isDesktopApp){let c=r.createDiv();c.setAttr("align","center"),c.setText(`Debugging and logging: +You can always see the logs of this and every other plugin by opening the console with`);let u=r.createDiv();u.setAttr("align","center"),u.addClass("obsidian-git-shortcuts"),U.Platform.isMacOS===!0?u.createEl("kbd",{text:"CMD (\u2318) + OPTION (\u2325) + I"}):u.createEl("kbd",{text:"CTRL + SHIFT + I"})}}mayDisableSetting(r,i){i&&(r.setDisabled(i),r.setClass("obsidian-git-disabled"))}configureLineAuthorShowStatus(r){this.settings.lineAuthor.show=r,this.plugin.saveSettings(),r?this.plugin.editorIntegration.activateLineAuthoring():this.plugin.editorIntegration.deactiveLineAuthoring()}async lineAuthorSettingHandler(r,i){this.settings.lineAuthor[r]=i,await this.plugin.saveSettings(),this.plugin.editorIntegration.lineAuthoringFeature.refreshLineAuthorViews()}beforeSaveSettings(){let r=this.settings.lineAuthor;r.authorDisplay!=="hide"&&(r.lastShownAuthorDisplay=r.authorDisplay),r.dateTimeFormatOptions!=="hide"&&(r.lastShownDateTimeFormatOptions=r.dateTimeFormatOptions)}addLineAuthorInfoSettings(){let r=new U.Setting(this.containerEl).setName("Show commit authoring information next to each line");if(this.plugin.editorIntegration.lineAuthoringFeature.isAvailableOnCurrentPlatform()||r.setDesc("Only available on desktop currently.").setDisabled(!0),r.descEl.createEl("a",{href:s5,text:"Feature guide and quick examples",attr:{target:"_blank"}}),r.descEl.createEl("br"),r.descEl.createSpan({text:" The commit hash, author name and authoring date can all be individually toggled."}),r.descEl.createEl("br"),r.descEl.createSpan({text:"Hide everything, to only show the age-colored sidebar."}),r.addToggle(i=>i.setValue(this.settings.lineAuthor.show).onChange(n=>{this.configureLineAuthorShowStatus(n),this.refreshDisplayWithDelay()})),this.settings.lineAuthor.show){let i=new U.Setting(this.containerEl).setName("Follow movement and copies across files and commits").addDropdown(l=>{l.addOptions({inactive:"Do not follow (default)","same-commit":"Follow within same commit","all-commits":"Follow within all commits (maybe slow)"}),l.setValue(this.settings.lineAuthor.followMovement),l.onChange(c=>this.lineAuthorSettingHandler("followMovement",c))});if(i.descEl.createSpan({text:"By default (deactivated), each line only shows the newest commit where it was changed."}),i.descEl.createEl("br"),i.descEl.createSpan({text:"With "}),i.descEl.createEl("i",{text:"same commit"}),i.descEl.createSpan({text:", cut-copy-paste-ing of text is followed within the same commit and the original commit of authoring will be shown."}),i.descEl.createEl("br"),i.descEl.createSpan({text:"With "}),i.descEl.createEl("i",{text:"all commits"}),i.descEl.createSpan({text:", cut-copy-paste-ing text inbetween multiple commits will be detected."}),i.descEl.createEl("br"),i.descEl.createSpan({text:"It uses "}),i.descEl.createEl("a",{href:"https://git-scm.com/docs/git-blame",text:"git-blame",attr:{target:"_blank"}}),i.descEl.createSpan({text:` and for matches (at least ${_d} characters) within the same (or all) commit(s), `}),i.descEl.createEl("em",{text:"the originating"}),i.descEl.createSpan({text:" commit's information is shown."}),new U.Setting(this.containerEl).setName("Show commit hash").addToggle(l=>{l.setValue(this.settings.lineAuthor.showCommitHash),l.onChange(c=>this.lineAuthorSettingHandler("showCommitHash",c))}),new U.Setting(this.containerEl).setName("Author name display").setDesc("If and how the author is displayed").addDropdown(l=>{let c={hide:"Hide",initials:"Initials (default)","first name":"First name","last name":"Last name",full:"Full name"};l.addOptions(c),l.setValue(this.settings.lineAuthor.authorDisplay),l.onChange(async u=>this.lineAuthorSettingHandler("authorDisplay",u))}),new U.Setting(this.containerEl).setName("Authoring date display").setDesc("If and how the date and time of authoring the line is displayed").addDropdown(l=>{let c={hide:"Hide",date:"Date (default)",datetime:"Date and time","natural language":"Natural language",custom:"Custom"};l.addOptions(c),l.setValue(this.settings.lineAuthor.dateTimeFormatOptions),l.onChange(async u=>{await this.lineAuthorSettingHandler("dateTimeFormatOptions",u),this.refreshDisplayWithDelay()})}),this.settings.lineAuthor.dateTimeFormatOptions==="custom"){let l=new U.Setting(this.containerEl);l.setName("Custom authoring date format").addText(c=>{c.setValue(this.settings.lineAuthor.dateTimeFormatCustomString),c.setPlaceholder("YYYY-MM-DD HH:mm"),c.onChange(async u=>{await this.lineAuthorSettingHandler("dateTimeFormatCustomString",u),this.setCustomDateTimeDescription(l.descEl,u)})}),this.setCustomDateTimeDescription(l.descEl,this.settings.lineAuthor.dateTimeFormatCustomString)}let n=new U.Setting(this.containerEl).setName("Authoring date display timezone").addDropdown(l=>{let c={"viewer-local":"My local (default)","author-local":"Author's local",utc0000:"UTC+0000/Z"};l.addOptions(c),l.setValue(this.settings.lineAuthor.dateTimeTimezone),l.onChange(async u=>this.lineAuthorSettingHandler("dateTimeTimezone",u))});n.descEl.empty(),n.descEl.createSpan({text:`The time-zone in which the authoring date should be shown. +Either your local time-zone (default), +the author's time-zone during commit creation or +`}),n.descEl.createEl("a",{text:"UTC\xB100:00",href:"https://en.wikipedia.org/wiki/UTC%C2%B100:00"}),n.descEl.createSpan({text:"."});let s=new U.Setting(this.containerEl).setName("Oldest age in coloring");this.setOldestAgeDescription(s.descEl,this.settings.lineAuthor.coloringMaxAge),s.addText(l=>{l.setPlaceholder("1y"),l.setValue(this.settings.lineAuthor.coloringMaxAge),l.onChange(async c=>{let f=Eu(c)!==void 0;this.setOldestAgeDescription(s.descEl,c),f&&(await this.lineAuthorSettingHandler("coloringMaxAge",c),this.refreshColorSettingsName("oldest"))})}),this.createColorSetting("newest"),this.createColorSetting("oldest");let a=new U.Setting(this.containerEl).setName("Text color").addText(l=>{l.setValue(this.settings.lineAuthor.textColorCss),l.onChange(async c=>{await this.lineAuthorSettingHandler("textColorCss",c)})});a.descEl.empty(),a.descEl.createSpan({text:"The CSS color of the gutter text."}),a.descEl.createEl("br"),a.descEl.createEl("br"),a.descEl.createSpan({text:"It is highly recommended to use "}),a.descEl.createEl("a",{text:"CSS variables",href:"https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties"}),a.descEl.createSpan({text:" defined by themes (e.g. "}),a.descEl.createEl("pre",{text:"var(--text-muted)",attr:{style:"display:inline"}}),a.descEl.createSpan({text:" or "}),a.descEl.createEl("pre",{text:"var(--text-on-accent)",attr:{style:"display:inline"}}),a.descEl.createSpan({text:"), because they automatically adapt to theme changes."}),a.descEl.createEl("br"),a.descEl.createEl("br"),a.descEl.createSpan({text:"See: "}),a.descEl.createEl("a",{text:"List of available CSS variables in Obsidian",href:"https://github.com/obsidian-community/obsidian-theme-template/blob/main/obsidian.css"});let o=new U.Setting(this.containerEl).setName("Ignore whitespace and newlines in changes").addToggle(l=>{l.setValue(this.settings.lineAuthor.ignoreWhitespace),l.onChange(c=>this.lineAuthorSettingHandler("ignoreWhitespace",c))});o.descEl.empty(),o.descEl.createSpan({text:"Whitespace and newlines are interpreted as part of the document and in changes by default (hence not ignored). This makes the last line being shown as 'changed' when a new subsequent line is added, even if the previously last line's text is the same."}),o.descEl.createEl("br"),o.descEl.createSpan({text:"If you don't care about purely-whitespace changes (e.g. list nesting / quote indentation changes), then activating this will provide more meaningful change detection."})}}createColorSetting(r){let i=new U.Setting(this.containerEl).setName("").addText(n=>{let s=uw(r,this.settings.lineAuthor),a=uw(r,ht.lineAuthor);n.setPlaceholder(iv(a)),n.setValue(iv(s)),n.onChange(async o=>{let l=Qk(o);if(l!==void 0){let c=r==="newest"?"colorNew":"colorOld";await this.lineAuthorSettingHandler(c,l)}this.refreshColorSettingsDesc(r,l)})});this.lineAuthorColorSettings.set(r,i),this.refreshColorSettingsName(r),this.refreshColorSettingsDesc(r,uw(r,this.settings.lineAuthor))}refreshColorSettingsName(r){let i=this.lineAuthorColorSettings.get(r);if(i){let n=r==="oldest"?`oldest (${this.settings.lineAuthor.coloringMaxAge} or older)`:"newest";i.nameEl.setText(`Color for ${n} commits`)}}refreshColorSettingsDesc(r,i){let n=this.lineAuthorColorSettings.get(r);n&&this.colorSettingPreviewDesc(n.descEl,r,this.settings.lineAuthor,i!==void 0)}colorSettingPreviewDesc(r,i,n,s){r.empty(),r.createSpan({text:"Supports 'rgb(r,g,b)', 'hsl(h,s,l)', hex (#) and named colors (e.g. 'black', 'purple'). Color preview: "});let a=s?lh(i,n):"rgba(127,127,127,0.3)",o=U.moment.unix(U.moment.now()/1e3).format("YYYY-MM-DD"),l=s?`abcdef Author Name ${o}`:"invalid color";r.createEl("div",{text:l,attr:{class:"line-author-settings-preview",style:`background-color: ${a}; width: 30ch;`}})}setCustomDateTimeDescription(r,i){r.empty(),r.createEl("a",{text:"Format string",href:O2}),r.createSpan({text:" to display the authoring date."}),r.createEl("br");let n=(0,U.moment)().format(i);r.createSpan({text:`Currently: ${n}`})}setOldestAgeDescription(r,i){let n=Eu(i),s=n!==void 0?`${n.asDays()} days`:"invalid!";r.empty(),r.createSpan({text:`The oldest age in the line author coloring. Everything older will have the same color. +Smallest valid age is "1d". Currently: ${s}`})}setNonDefaultValue({settingsProperty:r,text:i}){let n=this.plugin.settings[r];ht[r]!==n&&(typeof n=="string"||typeof n=="number"||typeof n=="boolean"?i.setValue(String(n)):i.setValue(JSON.stringify(n)))}refreshDisplayWithDelay(r=80){window.setTimeout(()=>this.display(),r)}};function uw(t,e){return t==="oldest"?e.colorOld:e.colorNew}function Eu(t){let e=U.moment.duration("P"+t.toUpperCase());return e.isValid()&&e.asDays()&&e.asDays()>=1?e:void 0}m();var ti=require("obsidian");var fh=class{constructor(e,r){this.statusBarEl=e;this.plugin=r;this.messages=[];this.base="obsidian-git-statusbar-";this.statusBarEl.setAttribute("data-tooltip-position","top"),r.registerEvent(r.app.workspace.on("obsidian-git:refreshed",()=>{this.refreshCommitTimestamp().catch(console.error)}))}displayMessage(e,r){this.messages.push({message:`Git: ${e.slice(0,100)}`,timeout:r}),this.display()}display(){this.messages.length>0&&!this.currentMessage?(this.currentMessage=this.messages.shift(),this.statusBarEl.addClass(this.base+"message"),this.statusBarEl.ariaLabel="",this.statusBarEl.setText(this.currentMessage.message),this.lastMessageTimestamp=Date.now()):this.currentMessage?Date.now()-this.lastMessageTimestamp>=this.currentMessage.timeout&&(this.currentMessage=null,this.lastMessageTimestamp=null):this.displayState()}displayState(){switch((this.statusBarEl.getText().length>3||!this.statusBarEl.hasChildNodes())&&(this.statusBarEl.empty(),this.conflictEl=this.statusBarEl.createDiv(),this.conflictEl.setAttribute("data-tooltip-position","top"),this.conflictEl.style.float="left",this.pausedEl=this.statusBarEl.createDiv(),this.pausedEl.setAttribute("data-tooltip-position","top"),this.pausedEl.style.float="left",this.iconEl=this.statusBarEl.createDiv(),this.iconEl.style.float="left",this.textEl=this.statusBarEl.createDiv(),this.textEl.style.float="right",this.textEl.style.marginLeft="5px"),this.plugin.localStorage.getConflict()?((0,ti.setIcon)(this.conflictEl,"alert-circle"),this.conflictEl.ariaLabel="You have merge conflicts. Resolve them and commit afterwards.",this.conflictEl.style.marginRight="5px",this.conflictEl.addClass(this.base+"conflict")):(this.conflictEl.empty(),this.conflictEl.style.marginRight=""),this.plugin.localStorage.getPausedAutomatics()?((0,ti.setIcon)(this.pausedEl,"pause-circle"),this.pausedEl.ariaLabel="Automatic routines are currently paused.",this.pausedEl.style.marginRight="5px",this.pausedEl.addClass(this.base+"paused")):(this.pausedEl.empty(),this.pausedEl.style.marginRight=""),this.plugin.state.gitAction){case 0:this.displayFromNow();break;case 1:this.statusBarEl.ariaLabel="Checking repository status...",(0,ti.setIcon)(this.iconEl,"refresh-cw"),this.statusBarEl.addClass(this.base+"status");break;case 3:this.statusBarEl.ariaLabel="Adding files...",(0,ti.setIcon)(this.iconEl,"archive"),this.statusBarEl.addClass(this.base+"add");break;case 4:this.statusBarEl.ariaLabel="Committing changes...",(0,ti.setIcon)(this.iconEl,"git-commit"),this.statusBarEl.addClass(this.base+"commit");break;case 5:this.statusBarEl.ariaLabel="Pushing changes...",(0,ti.setIcon)(this.iconEl,"upload"),this.statusBarEl.addClass(this.base+"push");break;case 2:this.statusBarEl.ariaLabel="Pulling changes...",(0,ti.setIcon)(this.iconEl,"download"),this.statusBarEl.addClass(this.base+"pull");break;default:this.statusBarEl.ariaLabel="Failed on initialization!",(0,ti.setIcon)(this.iconEl,"alert-triangle"),this.statusBarEl.addClass(this.base+"failed-init");break}}displayFromNow(){var i;let e=this.lastCommitTimestamp,r=this.plugin.state.offlineMode;if(e){let n=(0,ti.moment)(e).fromNow();this.statusBarEl.ariaLabel=`${r?"Offline: ":""}Last Commit: ${n}`,((i=this.unPushedCommits)!=null?i:0)>0&&(this.statusBarEl.ariaLabel+=` +(${this.unPushedCommits} unpushed commits)`)}else this.statusBarEl.ariaLabel=r?"Git is offline":"Git is ready";r?(0,ti.setIcon)(this.iconEl,"globe"):(0,ti.setIcon)(this.iconEl,"check"),this.plugin.settings.changedFilesInStatusBar&&this.plugin.cachedStatus&&this.textEl.setText(this.plugin.cachedStatus.changed.length.toString()),this.statusBarEl.addClass(this.base+"idle")}async refreshCommitTimestamp(){this.lastCommitTimestamp=await this.plugin.gitManager.getLastCommitTime(),this.unPushedCommits=await this.plugin.gitManager.getUnpushedCommits()}remove(){this.statusBarEl.remove()}};m();var hh=require("obsidian"),dh=class extends hh.SuggestModal{constructor(r){super(r.app);this.plugin=r;this.resolve=null;this.setPlaceholder("Type your message and select optional the version with the added date.")}openAndGetResult(){return new Promise(r=>{this.resolve=r,this.open()})}onClose(){new Promise(r=>window.setTimeout(r,10)).then(()=>{this.resolve&&this.resolve(void 0)})}getSuggestions(r){let i=(0,hh.moment)().format(this.plugin.settings.commitDateFormat);return r==""&&(r="..."),[r,`${i}: ${r}`,`${r}: ${i}`]}renderSuggestion(r,i){i.innerText=r}onChooseSuggestion(r,i){this.resolve&&this.resolve(r)}};m();var L2=require("obsidian"),Su=class{constructor(e){this.plugin=e}saveLastAuto(e,r){r==="backup"?this.plugin.localStorage.setLastAutoBackup(e.toString()):r==="pull"?this.plugin.localStorage.setLastAutoPull(e.toString()):r==="push"&&this.plugin.localStorage.setLastAutoPush(e.toString())}loadLastAuto(){var e,r,i;return{backup:new Date((e=this.plugin.localStorage.getLastAutoBackup())!=null?e:""),pull:new Date((r=this.plugin.localStorage.getLastAutoPull())!=null?r:""),push:new Date((i=this.plugin.localStorage.getLastAutoPush())!=null?i:"")}}async init(){await this.setUpAutoCommitAndSync();let e=this.loadLastAuto();if(this.plugin.settings.differentIntervalCommitAndPush&&this.plugin.settings.autoPushInterval>0){let r=this.diff(this.plugin.settings.autoPushInterval,e.push);this.startAutoPush(r)}if(this.plugin.settings.autoPullInterval>0){let r=this.diff(this.plugin.settings.autoPullInterval,e.pull);this.startAutoPull(r)}}unload(){this.clearAutoPull(),this.clearAutoPush(),this.clearAutoCommitAndSync()}reload(...e){this.plugin.localStorage.getPausedAutomatics()||(e.contains("commit")&&(this.clearAutoCommitAndSync(),this.plugin.settings.autoSaveInterval>0&&this.startAutoCommitAndSync(this.plugin.settings.autoSaveInterval)),e.contains("push")&&(this.clearAutoPush(),this.plugin.settings.differentIntervalCommitAndPush&&this.plugin.settings.autoPushInterval>0&&this.startAutoPush(this.plugin.settings.autoPushInterval)),e.contains("pull")&&(this.clearAutoPull(),this.plugin.settings.autoPullInterval>0&&this.startAutoPull(this.plugin.settings.autoPullInterval)))}async setUpAutoCommitAndSync(){if(this.plugin.settings.setLastSaveToLastCommit){this.clearAutoCommitAndSync();let e=await this.plugin.gitManager.getLastCommitTime();e&&this.saveLastAuto(e,"backup")}if(!this.timeoutIDCommitAndSync&&!this.plugin.autoCommitDebouncer){let e=this.loadLastAuto();if(this.plugin.settings.autoSaveInterval>0){let r=this.diff(this.plugin.settings.autoSaveInterval,e.backup);this.startAutoCommitAndSync(r)}}}startAutoCommitAndSync(e){let r=(e!=null?e:this.plugin.settings.autoSaveInterval)*6e4;this.plugin.settings.autoBackupAfterFileChange?e===0?this.doAutoCommitAndSync():this.plugin.autoCommitDebouncer=(0,L2.debounce)(()=>this.doAutoCommitAndSync(),r,!0):(r>2147483647&&(r=2147483647),this.timeoutIDCommitAndSync=window.setTimeout(()=>this.doAutoCommitAndSync(),r))}doAutoCommitAndSync(){this.plugin.promiseQueue.addTask(async()=>{if(this.plugin.settings.setLastSaveToLastCommit){let r=await this.plugin.gitManager.getLastCommitTime();if(r){this.saveLastAuto(r,"backup");let i=this.diff(this.plugin.settings.autoSaveInterval,r);if(i>0)return this.startAutoCommitAndSync(i),!1}}let e=this.plugin.settings.autoCommitOnlyStaged;return this.plugin.settings.differentIntervalCommitAndPush?await this.plugin.commit({fromAuto:!0,onlyStaged:e}):await this.plugin.commitAndSync({fromAutoBackup:!0,onlyStaged:e}),!0},e=>{e!==!1&&(this.saveLastAuto(new Date,"backup"),this.startAutoCommitAndSync())})}startAutoPull(e){let r=(e!=null?e:this.plugin.settings.autoPullInterval)*6e4;r>2147483647&&(r=2147483647),this.timeoutIDPull=window.setTimeout(()=>this.doAutoPull(),r)}doAutoPull(){this.plugin.promiseQueue.addTask(()=>this.plugin.pullChangesFromRemote(),()=>{this.saveLastAuto(new Date,"pull"),this.startAutoPull()})}startAutoPush(e){let r=(e!=null?e:this.plugin.settings.autoPushInterval)*6e4;r>2147483647&&(r=2147483647),this.timeoutIDPush=window.setTimeout(()=>this.doAutoPush(),r)}doAutoPush(){this.plugin.promiseQueue.addTask(()=>this.plugin.push(),()=>{this.saveLastAuto(new Date,"push"),this.startAutoPush()})}clearAutoCommitAndSync(){var r;let e=!1;return this.timeoutIDCommitAndSync&&(window.clearTimeout(this.timeoutIDCommitAndSync),this.timeoutIDCommitAndSync=void 0,e=!0),this.plugin.autoCommitDebouncer&&((r=this.plugin.autoCommitDebouncer)==null||r.cancel(),this.plugin.autoCommitDebouncer=void 0,e=!0),e}clearAutoPull(){return this.timeoutIDPull?(window.clearTimeout(this.timeoutIDPull),this.timeoutIDPull=void 0,!0):!1}clearAutoPush(){return this.timeoutIDPush?(window.clearTimeout(this.timeoutIDPush),this.timeoutIDPush=void 0,!0):!1}diff(e,r){let n=e-Math.round((new Date().getTime()-r.getTime())/1e3/60);return Math.max(0,n)}};m();var qi=require("obsidian");m();var ku=require("obsidian");async function N2(t,e,r){let i=await H2(e,r);if(i.result==="failure"){new ku.Notice(i.reason);return}let{isGitHub:n,branch:s,repo:a,user:o,filePath:l}=i;if(n){let c=t.getCursor("from").line+1,u=t.getCursor("to").line+1;c===u?window.open(`https://github.com/${o}/${a}/blob/${s}/${l}?plain=1#L${c}`):window.open(`https://github.com/${o}/${a}/blob/${s}/${l}?plain=1#L${c}-L${u}`)}else new ku.Notice("It seems like you are not using GitHub")}async function B2(t,e){let r=await H2(t,e);if(r.result==="failure"){new ku.Notice(r.reason);return}let{isGitHub:i,branch:n,repo:s,user:a,filePath:o}=r;i?window.open(`https://github.com/${a}/${s}/commits/${n}/${o}`):new ku.Notice("It seems like you are not using GitHub")}async function H2(t,e){let r=await e.branchInfo(),i=r.tracking,n=r.current,s,a=e.getRelativeRepoPath(t.path);if(e instanceof Se){let l=await e.getSubmoduleOfFile(e.getRelativeRepoPath(t.path));if(l){a=l.relativeFilepath;let c=await e.git.cwd({path:l.submodule,root:!1}).status();if(i=c.tracking||void 0,n=c.current||void 0,i){let u=i.substring(0,i.indexOf("/")),f=await e.git.cwd({path:l.submodule,root:!1}).getConfig(`remote.${u}.url`,"local");if(f.value!=null)s=f.value;else return{result:"failure",reason:"Failed to get remote url of submodule"}}}}if(i==null)return{result:"failure",reason:"Remote branch is not configured"};if(n==null)return{result:"failure",reason:"Failed to get current branch name"};if(s==null){let l=i.substring(0,i.indexOf("/"));if(s=await e.getConfig(`remote.${l}.url`),s==null)return{result:"failure",reason:"Failed to get remote url"}}let o=s.match(/(?:^https:\/\/github\.com\/(.+)\/(.+?)(?:\.git)?$)|(?:^[a-zA-Z]+@github\.com:(.+)\/(.+?)(?:\.git)?$)/);if(o==null)return{result:"failure",reason:"Could not parse remote url"};{let[l,c,u,f,d]=o;return{result:"success",isGitHub:!!l,repo:u||d,user:c||f,branch:n,filePath:a}}}m();var U2=require("obsidian"),ph=class extends U2.FuzzySuggestModal{constructor(e,r){super(e.app),this.plugin=e,this.changedFiles=r,this.setPlaceholder("Not supported files will be opened by default app!")}getItems(){return this.changedFiles}getItemText(e){if(e.index=="U"&&e.workingDir=="U")return`Untracked | ${e.vaultPath}`;let r="",i="";return e.workingDir!=" "&&(r=`Working Dir: ${e.workingDir} `),e.index!=" "&&(i=`Index: ${e.index}`),`${r}${i} | ${e.vaultPath}`}onChooseItem(e,r){this.plugin.app.metadataCache.getFirstLinkpathDest(e.vaultPath,"")==null?this.app.openWithDefaultApp(e.vaultPath):this.plugin.app.workspace.openLinkText(e.vaultPath,"/")}};m();var G2=require("obsidian"),mh=class extends G2.Modal{constructor(r,i){super(r);this.content=i;this.resolve=null}openAndGetReslt(){return new Promise(r=>{this.resolve=r,this.open()})}onOpen(){let{contentEl:r,titleEl:i}=this;i.setText("Edit .gitignore");let n=r.createDiv(),s=n.createEl("textarea",{text:this.content,cls:["obsidian-git-textarea"],attr:{rows:10,cols:30,wrap:"off"}});n.createEl("button",{cls:["mod-cta","obsidian-git-center-button"],text:"Save"}).addEventListener("click",()=>{this.resolve(s.value),this.close()})}onClose(){let{contentEl:r}=this;r.empty(),this.resolve&&this.resolve(void 0)}};m();var Du=require("@codemirror/state"),Rh=require("@codemirror/view");m();var $l=require("@codemirror/state");m();var Vt=class t{static createHunk(e,r,i,n){return{removed:{start:e,count:r,lines:[]},added:{start:i,count:n,lines:[]},head:`@@ -${e}${r>0?`,${r}`:""} +${i}${n>0?`,${n}`:""} @@`,vend:i+Math.max(n-1,0),type:n===0?"delete":r===0?"add":"change"}}static createPartialHunk(e,r,i){let n=r,s=i-r+1,a=0;for(let o of e){let l=o.added.count-o.removed.count,c=0;if(o.added.start>=r&&o.vend<=i)c=l;else{let u=Math.max(0,i+1-(o.added.start+o.removed.count)),f=Math.max(0,r-(o.added.start+o.removed.count));o.added.start>=r&&o.added.start<=i?c=u:o.vend>=r&&o.vend<=i?(c=l-f,n=n-f):o.added.start<=r&&o.vend>=i?(c=u-f,n=n-f):a++,r>o.vend&&(n=n-l)}s=s-c}if(a!==e.length)return s===0&&(n=n-1),this.createHunk(n,s,r,i-r+1)}patchLines(e,r=!1){let i=[];for(let n of e.removed.lines)i.push("-"+n);for(let n of e.added.lines)i.push("+"+n);return r?i.map(n=>n.replace(/\r$/,"")):i}static parseDiffLine(e){let n=e.split("@@")[1].trim().split(" "),s=n[0].substring(1).split(","),a=n[1].substring(1).split(","),o=this.createHunk(parseInt(s[0]),parseInt(s[1]||"1"),parseInt(a[0]),parseInt(a[1]||"1"));return o.head=e,o}static changeEnd(e){return e.added.count===0?e.added.start:e.removed.count===0?e.added.start+e.added.count-1:e.added.start+Math.min(e.added.count,e.removed.count)-1}static calcSigns(e,r,i,n=1,s=1/0,a){if(a&&r.type!=="add")return console.error(`Invalid hunk with untracked=${a} hunk="${r.head}"`),[];n=Math.max(1,n);let{start:o,added:l,removed:c}={start:r.added.start,added:r.added.count,removed:r.removed.count},u=this.changeEnd(r),f=r.type==="delete"&&(o===0||e&&this.changeEnd(e)===o)&&(!i||i.added.start!==o+1);f&&n===1&&(n=0);let d=[];for(let h=Math.max(o,n);h<=Math.min(u,s);h++){let p=r.type==="change"&&(c>l&&h===u||e&&e.added.start===0);d.push({type:f?"topdelete":p?"changedelete":a?"untracked":r.type,count:h===o?r.type==="add"?l:c:void 0,lnum:h+(f?1:0)})}if(r.type==="change"&&l>c&&r.vend>=n&&u<=s)for(let h=Math.max(u,n);h<=Math.min(r.vend,s);h++)d.push({type:"add",count:h===r.vend?l-c:void 0,lnum:h});return d}static createPatch(e,r,i,n=!1){let s=[`diff --git a/${e} b/${e}`,`index 000000..000000 ${i}`,`--- a/${e}`,`+++ b/${e}`],a=0;r=structuredClone(r);for(let o of r){let l=o.removed.start,c=o.removed.count,u=o.added.count;o.type==="add"&&(l=l+1);let f=o.removed.lines,d=o.added.lines;n&&([c,u]=[u,c],[f,d]=[d,f]),s.push(`@@ -${l},${c} +${l+a},${u} @@`);for(let h of f)s.push("-"+h);(n?o.added:o.removed).no_nl_at_eof&&s.push("\\ No newline at end of file");for(let h of d)s.push("+"+h);(n?o.removed:o.added).no_nl_at_eof&&s.push("\\ No newline at end of file"),o.removed.start=l+a,a=a+(u-c)}return s}getSummary(e){let r={added:0,changed:0,removed:0};for(let i of e)if(i.type==="add")r.added+=i.added.count;else if(i.type==="delete")r.removed+=i.removed.count;else if(i.type==="change"){let n=i.added.count,s=i.removed.count,a=Math.min(n,s);r.changed+=a,r.added+=n-a,r.removed+=s-a}return r}static findHunk(e,r){if(!r)return[void 0,void 0];for(let i=0;i<r.length;i++){let n=r[i];if(e===1&&n.added.start===0&&n.vend===0)return[n,i];if(n.added.start<=e&&n.vend>=e)return[n,i]}return[void 0,void 0]}static findNearestHunk(e,r,i,n){if(r.length!==0){if(i==="first")return 0;if(i==="last")return r.length-1;if(i==="next"){if(r[0].added.start>e)return 0;for(let s=r.length-1;s>=0;s--)if(r[s].added.start<=e){if(s+1<r.length&&r[s+1].added.start>e)return s+1;if(n)return 0}}else if(i==="prev"){if(Math.max(r[r.length-1].vend)<e)return r.length-1;for(let s=0;s<r.length;s++)if(e<=Math.max(r[s].vend,1)){if(s>0&&Math.max(r[s-1].vend,1)<e)return s-1;if(n)return r.length-1}}}}compareHeads(e,r){if(e===void 0!=(r===void 0))return!0;if(e&&r&&e.length!==r.length)return!0;for(let i=0;i<(e||[]).length;i++)if(r[i].head!==e[i].head)return!0;return!1}static compare(e,r){if(e.added.start!==r.added.start||e.added.count!==r.added.count)return!1;for(let i=0;i<e.added.count;i++)if(e.added.lines[i]!==r.added.lines[i])return!1;return!0}static filterCommon(e,r){if(!e&&!r)return;e=e||[],r=r||[];let i=0,n=0,s=[];for(let a=0;a<Math.max(e.length,r.length)+1;a++){let o=e[i],l=r[n];if(!o)break;if(!l){for(let c=i;c<e.length;c++)s.push(e[c]);break}o.added.start>l.added.start?n++:o.added.start<l.added.start?(s.push(o),i++):(this.compare(o,l)||s.push(o),i++,n++)}return s}static computeStagedHunks(e,r,i){return t.filterCommon(e,r)}};m();m();var De=require("@codemirror/view"),$e=require("@codemirror/state");m();var fw="\u037C",j2=typeof Symbol=="undefined"?"__"+fw:Symbol.for(fw),dw=typeof Symbol=="undefined"?"__styleSet"+Math.floor(Math.random()*1e8):Symbol("styleSet"),V2=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:{},gh=class{constructor(e,r){this.rules=[];let{finish:i}=r||{};function n(a){return/^@/.test(a)?[a]:a.split(/,\s*/)}function s(a,o,l,c){let u=[],f=/^@(\w+)\b/.exec(a[0]),d=f&&f[1]=="keyframes";if(f&&o==null)return l.push(a[0]+";");for(let h in o){let p=o[h];if(/&/.test(h))s(h.split(/,\s*/).map(g=>a.map(v=>g.replace(/&/,v))).reduce((g,v)=>g.concat(v)),p,l);else if(p&&typeof p=="object"){if(!f)throw new RangeError("The value of a property ("+h+") should be a primitive value.");s(n(h),p,u,d)}else p!=null&&u.push(h.replace(/_.*/,"").replace(/[A-Z]/g,g=>"-"+g.toLowerCase())+": "+p+";")}(u.length||d)&&l.push((i&&!f&&!c?a.map(i):a).join(", ")+" {"+u.join(" ")+"}")}for(let a in e)s(n(a),e[a],this.rules)}getRules(){return this.rules.join(` +`)}static newName(){let e=V2[j2]||1;return V2[j2]=e+1,fw+e.toString(36)}static mount(e,r,i){let n=e[dw],s=i&&i.nonce;n?s&&n.setNonce(s):n=new hw(e,s),n.mount(Array.isArray(r)?r:[r],e)}},z2=new Map,hw=class{constructor(e,r){let i=e.ownerDocument||e,n=i.defaultView;if(!e.head&&e.adoptedStyleSheets&&n.CSSStyleSheet){let s=z2.get(i);if(s)return e[dw]=s;this.sheet=new n.CSSStyleSheet,z2.set(i,this)}else this.styleTag=i.createElement("style"),r&&this.styleTag.setAttribute("nonce",r);this.modules=[],e[dw]=this}mount(e,r){let i=this.sheet,n=0,s=0;for(let a=0;a<e.length;a++){let o=e[a],l=this.modules.indexOf(o);if(l<s&&l>-1&&(this.modules.splice(l,1),s--,l=-1),l==-1){if(this.modules.splice(s++,0,o),i)for(let c=0;c<o.rules.length;c++)i.insertRule(o.rules[c],n++)}else{for(;s<l;)n+=this.modules[s++].rules.length;n+=o.rules.length,s++}}if(i)r.adoptedStyleSheets.indexOf(this.sheet)<0&&(r.adoptedStyleSheets=[this.sheet,...r.adoptedStyleSheets]);else{let a="";for(let l=0;l<this.modules.length;l++)a+=this.modules[l].getRules()+` +`;this.styleTag.textContent=a;let o=r.head||r;this.styleTag.parentNode!=o&&o.insertBefore(this.styleTag,o.firstChild)}}setNonce(e){this.styleTag&&this.styleTag.getAttribute("nonce")!=e&&this.styleTag.setAttribute("nonce",e)}};var cP=require("@codemirror/language"),a5=require("@lezer/highlight"),Et=class t{constructor(e,r,i,n){this.fromA=e,this.toA=r,this.fromB=i,this.toB=n}offset(e,r=e){return new t(this.fromA+e,this.toA+e,this.fromB+r,this.toB+r)}};function $a(t,e,r,i,n,s){if(t==i)return[];let a=yw(t,e,r,i,n,s),o=xw(t,e+a,r,i,n+a,s);e+=a,r-=o,n+=a,s-=o;let l=r-e,c=s-n;if(!l||!c)return[new Et(e,r,n,s)];if(l>c){let f=t.slice(e,r).indexOf(i.slice(n,s));if(f>-1)return[new Et(e,e+f,n,n),new Et(e+f+c,r,s,s)]}else if(c>l){let f=i.slice(n,s).indexOf(t.slice(e,r));if(f>-1)return[new Et(e,e,n,n+f),new Et(r,r,n+f+l,s)]}if(l==1||c==1)return[new Et(e,r,n,s)];let u=fP(t,e,r,i,n,s);if(u){let[f,d,h]=u;return $a(t,e,f,i,n,d).concat($a(t,f+h,r,i,d+h,s))}return o5(t,e,r,i,n,s)}var Au=1e9,Cu=0,bw=!1;function o5(t,e,r,i,n,s){let a=r-e,o=s-n;if(Au<1e9&&Math.min(a,o)>Au*16||Cu>0&&Date.now()>Cu)return Math.min(a,o)>Au*64?[new Et(e,r,n,s)]:W2(t,e,r,i,n,s);let l=Math.ceil((a+o)/2);pw.reset(l),mw.reset(l);let c=(h,p)=>t.charCodeAt(e+h)==i.charCodeAt(n+p),u=(h,p)=>t.charCodeAt(r-h-1)==i.charCodeAt(s-p-1),f=(a-o)%2!=0?mw:null,d=f?null:pw;for(let h=0;h<l;h++){if(h>Au||Cu>0&&!(h&63)&&Date.now()>Cu)return W2(t,e,r,i,n,s);let p=pw.advance(h,a,o,l,f,!1,c)||mw.advance(h,a,o,l,d,!0,u);if(p)return l5(t,e,r,e+p[0],i,n,s,n+p[1])}return[new Et(e,r,n,s)]}var yh=class{constructor(){this.vec=[]}reset(e){this.len=e<<1;for(let r=0;r<this.len;r++)this.vec[r]=-1;this.vec[e+1]=0,this.start=this.end=0}advance(e,r,i,n,s,a,o){for(let l=-e+this.start;l<=e-this.end;l+=2){let c=n+l,u=l==-e||l!=e&&this.vec[c-1]<this.vec[c+1]?this.vec[c+1]:this.vec[c-1]+1,f=u-l;for(;u<r&&f<i&&o(u,f);)u++,f++;if(this.vec[c]=u,u>r)this.end+=2;else if(f>i)this.start+=2;else if(s){let d=n+(r-i)-l;if(d>=0&&d<this.len&&s.vec[d]!=-1)if(a){let h=s.vec[d];if(h>=r-u)return[h,n+h-d]}else{let h=r-s.vec[d];if(u>=h)return[u,f]}}}return null}},pw=new yh,mw=new yh;function l5(t,e,r,i,n,s,a,o){let l=!1;return!Rl(t,i)&&++i==r&&(l=!0),!Rl(n,o)&&++o==a&&(l=!0),l?[new Et(e,r,s,a)]:$a(t,e,i,n,s,o).concat($a(t,i,r,n,o,a))}function uP(t,e){let r=1,i=Math.min(t,e);for(;r<i;)r=r<<1;return r}function yw(t,e,r,i,n,s){if(e==r||e==s||t.charCodeAt(e)!=i.charCodeAt(n))return 0;let a=uP(r-e,s-n);for(let o=e,l=n;;){let c=o+a,u=l+a;if(c>r||u>s||t.slice(o,c)!=i.slice(l,u)){if(a==1)return o-e-(Rl(t,o)?0:1);a=a>>1}else{if(c==r||u==s)return c-e;o=c,l=u}}}function xw(t,e,r,i,n,s){if(e==r||n==s||t.charCodeAt(r-1)!=i.charCodeAt(s-1))return 0;let a=uP(r-e,s-n);for(let o=r,l=s;;){let c=o-a,u=l-a;if(c<e||u<n||t.slice(c,o)!=i.slice(u,l)){if(a==1)return r-o-(Rl(t,o)?0:1);a=a>>1}else{if(c==e||u==n)return r-c;o=c,l=u}}}function gw(t,e,r,i,n,s,a,o){let l=i.slice(n,s),c=null;for(;;){if(c||a<o)return c;for(let u=e+a;;){Rl(t,u)||u++;let f=u+a;if(Rl(t,f)||(f+=f==u+1?1:-1),f>=r)break;let d=t.slice(u,f),h=-1;for(;(h=l.indexOf(d,h+1))!=-1;){let p=yw(t,f,r,i,n+h+d.length,s),g=xw(t,e,u,i,n,n+h),v=d.length+p+g;(!c||c[2]<v)&&(c=[u-g,n+h-g,v])}u=f}if(o<0)return c;a=a>>1}}function fP(t,e,r,i,n,s){let a=r-e,o=s-n;if(a<o){let l=fP(i,n,s,t,e,r);return l&&[l[1],l[0],l[2]]}return a<4||o*2<a?null:gw(t,e,r,i,n,s,Math.floor(a/4),-1)}function W2(t,e,r,i,n,s){bw=!0;let a=r-e,o=s-n,l;if(a<o){let d=gw(i,n,s,t,e,r,Math.floor(a/6),50);l=d&&[d[1],d[0],d[2]]}else l=gw(t,e,r,i,n,s,Math.floor(o/6),50);if(!l)return[new Et(e,r,n,s)];let[c,u,f]=l;return $a(t,e,c,i,n,u).concat($a(t,c+f,r,i,u+f,s))}function dP(t,e){for(let r=1;r<t.length;r++){let i=t[r-1],n=t[r];i.toA>n.fromA-e&&i.toB>n.fromB-e&&(t[r-1]=new Et(i.fromA,n.toA,i.fromB,n.toB),t.splice(r--,1))}}function c5(t,e,r){for(;;){dP(r,1);let i=!1;for(let n=0;n<r.length;n++){let s=r[n],a,o;(a=yw(t,s.fromA,s.toA,e,s.fromB,s.toB))&&(s=r[n]=new Et(s.fromA+a,s.toA,s.fromB+a,s.toB)),(o=xw(t,s.fromA,s.toA,e,s.fromB,s.toB))&&(s=r[n]=new Et(s.fromA,s.toA-o,s.fromB,s.toB-o));let l=s.toA-s.fromA,c=s.toB-s.fromB;if(l&&c)continue;let u=s.fromA-(n?r[n-1].toA:0),f=(n<r.length-1?r[n+1].fromA:t.length)-s.toA;if(!u||!f)continue;let d=l?t.slice(s.fromA,s.toA):e.slice(s.fromB,s.toB);u<=d.length&&t.slice(s.fromA-u,s.fromA)==d.slice(d.length-u)?(r[n]=new Et(s.fromA-u,s.toA-u,s.fromB-u,s.toB-u),i=!0):f<=d.length&&t.slice(s.toA,s.toA+f)==d.slice(0,f)&&(r[n]=new Et(s.fromA+f,s.toA+f,s.fromB+f,s.toB+f),i=!0)}if(!i)break}return r}function u5(t,e,r){for(let i=0,n=0;n<t.length;n++){let s=t[n],a=s.toA-s.fromA,o=s.toB-s.fromB;if(a&&o||a>3||o>3){let l=n==t.length-1?e.length:t[n+1].fromA,c=s.fromA-i,u=l-s.toA,f=Y2(e,s.fromA,c),d=q2(e,s.toA,u),h=s.fromA-f,p=d-s.toA;if((!a||!o)&&h&&p){let g=Math.max(a,o),[v,_,b]=a?[e,s.fromA,s.toA]:[r,s.fromB,s.toB];g>h&&e.slice(f,s.fromA)==v.slice(b-h,b)?(s=t[n]=new Et(f,f+a,s.fromB-h,s.toB-h),f=s.fromA,d=q2(e,s.toA,l-s.toA)):g>p&&e.slice(s.toA,d)==v.slice(_,_+p)&&(s=t[n]=new Et(d-a,d,s.fromB+p,s.toB+p),d=s.toA,f=Y2(e,s.fromA,s.fromA-i)),h=s.fromA-f,p=d-s.toA}if(h||p)s=t[n]=new Et(s.fromA-h,s.toA+p,s.fromB-h,s.toB+p);else if(a){if(!o){let g=Z2(e,s.fromA,s.toA),v,_=g<0?-1:X2(e,s.toA,s.fromA);g>-1&&(v=g-s.fromA)<=u&&e.slice(s.fromA,g)==e.slice(s.toA,s.toA+v)?s=t[n]=s.offset(v):_>-1&&(v=s.toA-_)<=c&&e.slice(s.fromA-v,s.fromA)==e.slice(_,s.toA)&&(s=t[n]=s.offset(-v))}}else{let g=Z2(r,s.fromB,s.toB),v,_=g<0?-1:X2(r,s.toB,s.fromB);g>-1&&(v=g-s.fromB)<=u&&r.slice(s.fromB,g)==r.slice(s.toB,s.toB+v)?s=t[n]=s.offset(v):_>-1&&(v=s.toB-_)<=c&&r.slice(s.fromB-v,s.fromB)==r.slice(_,s.toB)&&(s=t[n]=s.offset(-v))}}i=s.toA}return dP(t,3),t}var Ra;try{Ra=new RegExp("[\\p{Alphabetic}\\p{Number}]","u")}catch(t){}function hP(t){return t>48&&t<58||t>64&&t<91||t>96&&t<123}function pP(t,e){if(e==t.length)return 0;let r=t.charCodeAt(e);return r<192?hP(r)?1:0:Ra?!vP(r)||e==t.length-1?Ra.test(String.fromCharCode(r))?1:0:Ra.test(t.slice(e,e+2))?2:0:0}function mP(t,e){if(!e)return 0;let r=t.charCodeAt(e-1);return r<192?hP(r)?1:0:Ra?!wP(r)||e==1?Ra.test(String.fromCharCode(r))?1:0:Ra.test(t.slice(e-2,e))?2:0:0}var gP=8;function q2(t,e,r){if(e==t.length||!mP(t,e))return e;for(let i=e,n=e+r,s=0;s<gP;s++){let a=pP(t,i);if(!a||i+a>n)return i;i+=a}return e}function Y2(t,e,r){if(!e||!pP(t,e))return e;for(let i=e,n=e-r,s=0;s<gP;s++){let a=mP(t,i);if(!a||i-a<n)return i;i-=a}return e}function X2(t,e,r){for(;e!=r;e--)if(t.charCodeAt(e-1)==10)return e;return-1}function Z2(t,e,r){for(;e!=r;e++)if(t.charCodeAt(e)==10)return e;return-1}var vP=t=>t>=55296&&t<=56319,wP=t=>t>=56320&&t<=57343;function Rl(t,e){return!e||e==t.length||!vP(t.charCodeAt(e-1))||!wP(t.charCodeAt(e))}function f5(t,e,r){var i;let n=r==null?void 0:r.override;return n?n(t,e):(Au=((i=r==null?void 0:r.scanLimit)!==null&&i!==void 0?i:1e9)>>1,Cu=r!=null&&r.timeout?Date.now()+r.timeout:0,bw=!1,c5(t,e,$a(t,0,t.length,e,0,e.length)))}function _P(){return!bw}function bP(t,e,r){return u5(f5(t,e,r),t,e)}var zi=$e.Facet.define({combine:t=>t[0]}),vw=$e.StateEffect.define(),d5=$e.Facet.define(),Fa=$e.StateField.define({create(t){return null},update(t,e){for(let r of e.effects)r.is(vw)&&(t=r.value);for(let r of e.state.facet(d5))t=r(t,e);return t}});function Ew(t){let e=t.field(Fa,!1);if(!e)return null;let r=t.facet(zi);return{chunks:e,side:r?r.side:null}}var ts=class t{constructor(e,r,i,n,s,a=!0){this.changes=e,this.fromA=r,this.toA=i,this.fromB=n,this.toB=s,this.precise=a}offset(e,r){return e||r?new t(this.changes,this.fromA+e,this.toA+e,this.fromB+r,this.toB+r,this.precise):this}get endA(){return Math.max(this.fromA,this.toA-1)}get endB(){return Math.max(this.fromB,this.toB-1)}static build(e,r,i){let n=bP(e.toString(),r.toString(),i);return yP(n,e,r,0,0,_P())}static updateA(e,r,i,n,s){return tP(eP(e,n,!0,i.length),e,r,i,s)}static updateB(e,r,i,n,s){return tP(eP(e,n,!1,r.length),e,r,i,s)}};function K2(t,e,r,i){let n=r.lineAt(t),s=i.lineAt(e);return n.to==t&&s.to==e&&t<r.length&&e<i.length?[t+1,e+1]:[n.from,s.from]}function Q2(t,e,r,i){let n=r.lineAt(t),s=i.lineAt(e);return n.from==t&&s.from==e?[t,e]:[n.to+1,s.to+1]}function yP(t,e,r,i,n,s){let a=[];for(let o=0;o<t.length;o++){let l=t[o],[c,u]=K2(l.fromA+i,l.fromB+n,e,r),[f,d]=Q2(l.toA+i,l.toB+n,e,r),h=[l.offset(-c+i,-u+n)];for(;o<t.length-1;){let p=t[o+1],[g,v]=K2(p.fromA+i,p.fromB+n,e,r);if(g>f+1&&v>d+1)break;h.push(p.offset(-c+i,-u+n)),[f,d]=Q2(p.toA+i,p.toB+n,e,r),o++}a.push(new ts(h,c,Math.max(c,f),u,Math.max(u,d),s))}return a}var vh=1e3;function J2(t,e,r,i){let n=0,s=t.length;for(;;){if(n==s){let u=0,f=0;n&&({toA:u,toB:f}=t[n-1]);let d=e-(r?u:f);return[u+d,f+d]}let a=n+s>>1,o=t[a],[l,c]=r?[o.fromA,o.toA]:[o.fromB,o.toB];if(l>e)s=a;else if(c<=e)n=a+1;else return i?[o.fromA,o.fromB]:[o.toA,o.toB]}}function eP(t,e,r,i){let n=[];return e.iterChangedRanges((s,a,o,l)=>{let c=0,u=r?e.length:i,f=0,d=r?i:e.length;s>vh&&([c,f]=J2(t,s-vh,r,!0)),a<e.length-vh&&([u,d]=J2(t,a+vh,r,!1));let h=l-o-(a-s),p,[g,v]=r?[h,0]:[0,h];n.length&&(p=n[n.length-1]).toA>=c?n[n.length-1]={fromA:p.fromA,fromB:p.fromB,toA:u,toB:d,diffA:p.diffA+g,diffB:p.diffB+v}:n.push({fromA:c,toA:u,fromB:f,toB:d,diffA:g,diffB:v})}),n}function tP(t,e,r,i,n){if(!t.length)return e;let s=[];for(let a=0,o=0,l=0,c=0;;a++){let u=a==t.length?null:t[a],f=u?u.fromA+o:r.length,d=u?u.fromB+l:i.length;for(;c<e.length;){let v=e[c];if(u&&(v.toA+o>f||v.toB+l>d))break;s.push(v.offset(o,l)),c++}if(!u)break;let h=u.toA+o+u.diffA,p=u.toB+l+u.diffB,g=bP(r.sliceString(f,h),i.sliceString(d,p),n);for(let v of yP(g,r,i,f,d,_P()))s.push(v);for(o+=u.diffA,l+=u.diffB;c<e.length;){let v=e[c];if(v.fromA+o>h&&v.fromB+l>p)break;c++}}return s}var h5={scanLimit:500},xP=De.ViewPlugin.fromClass(class{constructor(t){({deco:this.deco,gutter:this.gutter}=nP(t))}update(t){(t.docChanged||t.viewportChanged||p5(t.startState,t.state)||m5(t.startState,t.state))&&({deco:this.deco,gutter:this.gutter}=nP(t.view))}},{decorations:t=>t.deco}),wh=$e.Prec.low((0,De.gutter)({class:"cm-changeGutter",markers:t=>{var e;return((e=t.plugin(xP))===null||e===void 0?void 0:e.gutter)||$e.RangeSet.empty}}));function p5(t,e){return t.field(Fa,!1)!=e.field(Fa,!1)}function m5(t,e){return t.facet(zi)!=e.facet(zi)}var rP=De.Decoration.line({class:"cm-changedLine"}),g5=De.Decoration.mark({class:"cm-changedText"}),v5=De.Decoration.mark({tagName:"ins",class:"cm-insertedLine"}),w5=De.Decoration.mark({tagName:"del",class:"cm-deletedLine"}),iP=new class extends De.GutterMarker{constructor(){super(...arguments),this.elementClass="cm-changedLineGutter"}};function _5(t,e,r,i,n,s){let a=r?t.fromA:t.fromB,o=r?t.toA:t.toB,l=0;if(a!=o){n.add(a,a,rP),n.add(a,o,r?w5:v5),s&&s.add(a,a,iP);for(let c=e.iterRange(a,o-1),u=a;!c.next().done;){if(c.lineBreak){u++,n.add(u,u,rP),s&&s.add(u,u,iP);continue}let f=u+c.value.length;if(i)for(;l<t.changes.length;){let d=t.changes[l],h=a+(r?d.fromA:d.fromB),p=a+(r?d.toA:d.toB),g=Math.max(u,h),v=Math.min(f,p);if(g<v&&n.add(g,v,g5),p<f)l++;else break}u=f}}}function nP(t){let e=t.state.field(Fa),{side:r,highlightChanges:i,markGutter:n,overrideChunk:s}=t.state.facet(zi),a=r=="a",o=new $e.RangeSetBuilder,l=n?new $e.RangeSetBuilder:null,{from:c,to:u}=t.viewport;for(let f of e){if((a?f.fromA:f.fromB)>=u)break;(a?f.toA:f.toB)>c&&(!s||!s(t.state,f,o,l))&&_5(f,t.state.doc,a,i,o,l)}return{deco:o.finish(),gutter:l&&l.finish()}}var Pl=class extends De.WidgetType{constructor(e){super(),this.height=e}eq(e){return this.height==e.height}toDOM(){let e=document.createElement("div");return e.className="cm-mergeSpacer",e.style.height=this.height+"px",e}updateDOM(e){return e.style.height=this.height+"px",!0}get estimatedHeight(){return this.height}ignoreEvent(){return!1}},xh=$e.StateEffect.define({map:(t,e)=>t.map(e)}),Tu=$e.StateField.define({create:()=>De.Decoration.none,update:(t,e)=>{for(let r of e.effects)if(r.is(xh))return r.value;return t.map(e.changes)},provide:t=>De.EditorView.decorations.from(t)}),_h=.01;function sP(t,e){if(t.size!=e.size)return!1;let r=t.iter(),i=e.iter();for(;r.value;){if(r.from!=i.from||Math.abs(r.value.spec.widget.height-i.value.spec.widget.height)>1)return!1;r.next(),i.next()}return!0}function b5(t,e,r){let i=new $e.RangeSetBuilder,n=new $e.RangeSetBuilder,s=t.state.field(Tu).iter(),a=e.state.field(Tu).iter(),o=0,l=0,c=0,u=0,f=t.viewport,d=e.viewport;for(let v=0;;v++){let _=v<r.length?r[v]:null,b=_?_.fromA:t.state.doc.length,S=_?_.fromB:e.state.doc.length;if(o<b){let k=t.lineBlockAt(o).top+c,E=e.lineBlockAt(l).top+u,A=k-E;A<-_h?(c-=A,i.add(o,o,De.Decoration.widget({widget:new Pl(-A),block:!0,side:-1}))):A>_h&&(u+=A,n.add(l,l,De.Decoration.widget({widget:new Pl(A),block:!0,side:-1})))}if(b>o+1e3&&o<f.from&&b>f.from&&l<d.from&&S>d.from){let k=Math.min(f.from-o,d.from-l);o+=k,l+=k,v--}else if(_)o=_.toA,l=_.toB;else break;for(;s.value&&s.from<o;)c-=s.value.spec.widget.height,s.next();for(;a.value&&a.from<l;)u-=a.value.spec.widget.height,a.next()}for(;s.value;)c-=s.value.spec.widget.height,s.next();for(;a.value;)u-=a.value.spec.widget.height,a.next();let h=t.contentHeight+c-(e.contentHeight+u);h<_h?i.add(t.state.doc.length,t.state.doc.length,De.Decoration.widget({widget:new Pl(-h),block:!0,side:1})):h>_h&&n.add(e.state.doc.length,e.state.doc.length,De.Decoration.widget({widget:new Pl(h),block:!0,side:1}));let p=i.finish(),g=n.finish();sP(p,t.state.field(Tu))||t.dispatch({effects:xh.of(p)}),sP(g,e.state.field(Tu))||e.dispatch({effects:xh.of(g)})}var ww=$e.StateEffect.define({map:(t,e)=>e.mapPos(t)});var _w=class extends De.WidgetType{constructor(e){super(),this.lines=e}eq(e){return this.lines==e.lines}toDOM(e){let r=document.createElement("div");return r.className="cm-collapsedLines",r.textContent=e.state.phrase("$ unchanged lines",this.lines),r.addEventListener("click",i=>{let n=e.posAtDOM(i.target);e.dispatch({effects:ww.of(n)});let{side:s,sibling:a}=e.state.facet(zi);a&&a().dispatch({effects:ww.of(y5(n,e.state.field(Fa),s=="a"))})}),r}ignoreEvent(e){return e instanceof MouseEvent}get estimatedHeight(){return 27}get type(){return"collapsed-unchanged-code"}};function y5(t,e,r){let i=0,n=0;for(let s=0;;s++){let a=s<e.length?e[s]:null;if(!a||(r?a.fromA:a.fromB)>=t)return n+(t-i);[i,n]=r?[a.toA,a.toB]:[a.toB,a.toA]}}var x5=$e.StateField.define({create(t){return De.Decoration.none},update(t,e){t=t.map(e.changes);for(let r of e.effects)r.is(ww)&&(t=t.update({filter:i=>i!=r.value}));return t},provide:t=>De.EditorView.decorations.from(t)});function aP({margin:t=3,minSize:e=4}){return x5.init(r=>E5(r,t,e))}function E5(t,e,r){let i=new $e.RangeSetBuilder,n=t.facet(zi).side=="a",s=t.field(Fa),a=1;for(let o=0;;o++){let l=o<s.length?s[o]:null,c=o?a+e:1,u=l?t.doc.lineAt(n?l.fromA:l.fromB).number-1-e:t.doc.lines,f=u-c+1;if(f>=r&&i.add(t.doc.line(c).from,t.doc.line(u).to,De.Decoration.replace({widget:new _w(f),block:!0})),!l)break;a=t.doc.lineAt(Math.min(t.doc.length,n?l.toA:l.toB)).number}return i.finish()}var S5=De.EditorView.styleModule.of(new gh({".cm-mergeView":{overflowY:"auto"},".cm-mergeViewEditors":{display:"flex",alignItems:"stretch"},".cm-mergeViewEditor":{flexGrow:1,flexBasis:0,overflow:"hidden"},".cm-merge-revert":{width:"1.6em",flexGrow:0,flexShrink:0,position:"relative"},".cm-merge-revert button":{position:"absolute",display:"block",width:"100%",boxSizing:"border-box",textAlign:"center",background:"none",border:"none",font:"inherit",cursor:"pointer"}})),k5=De.EditorView.baseTheme({".cm-mergeView & .cm-scroller, .cm-mergeView &":{height:"auto !important",overflowY:"visible !important"},"&.cm-merge-a .cm-changedLine, .cm-deletedChunk":{backgroundColor:"rgba(160, 128, 100, .08)"},"&.cm-merge-b .cm-changedLine, .cm-inlineChangedLine":{backgroundColor:"rgba(100, 160, 128, .08)"},"&light.cm-merge-a .cm-changedText, &light .cm-deletedChunk .cm-deletedText":{background:"linear-gradient(#ee443366, #ee443366) bottom/100% 2px no-repeat"},"&dark.cm-merge-a .cm-changedText, &dark .cm-deletedChunk .cm-deletedText":{background:"linear-gradient(#ffaa9966, #ffaa9966) bottom/100% 2px no-repeat"},"&light.cm-merge-b .cm-changedText":{background:"linear-gradient(#22bb22aa, #22bb22aa) bottom/100% 2px no-repeat"},"&dark.cm-merge-b .cm-changedText":{background:"linear-gradient(#88ff88aa, #88ff88aa) bottom/100% 2px no-repeat"},"&.cm-merge-b .cm-deletedText":{background:"#ff000033"},".cm-insertedLine, .cm-deletedLine, .cm-deletedLine del":{textDecoration:"none"},".cm-deletedChunk":{paddingLeft:"6px","& .cm-chunkButtons":{position:"absolute",insetInlineEnd:"5px"},"& button":{border:"none",cursor:"pointer",color:"white",margin:"0 2px",borderRadius:"3px","&[name=accept]":{background:"#2a2"},"&[name=reject]":{background:"#d43"}}},".cm-collapsedLines":{padding:"5px 5px 5px 10px",cursor:"pointer","&:before":{content:'"\u299A"',marginInlineEnd:"7px"},"&:after":{content:'"\u299A"',marginInlineStart:"7px"}},"&light .cm-collapsedLines":{color:"#444",background:"linear-gradient(to bottom, transparent 0, #f3f3f3 30%, #f3f3f3 70%, transparent 100%)"},"&dark .cm-collapsedLines":{color:"#ddd",background:"linear-gradient(to bottom, transparent 0, #222 30%, #222 70%, transparent 100%)"},".cm-changeGutter":{width:"3px",paddingLeft:"1px"},"&light.cm-merge-a .cm-changedLineGutter, &light .cm-deletedLineGutter":{background:"#e43"},"&dark.cm-merge-a .cm-changedLineGutter, &dark .cm-deletedLineGutter":{background:"#fa9"},"&light.cm-merge-b .cm-changedLineGutter":{background:"#2b2"},"&dark.cm-merge-b .cm-changedLineGutter":{background:"#8f8"},".cm-inlineChangedLineGutter":{background:"#75d"}}),oP=new $e.Compartment,bh=new $e.Compartment,Eh=class{constructor(e){this.revertDOM=null,this.revertToA=!1,this.revertToLeft=!1,this.measuring=-1,this.diffConf=e.diffConfig||h5;let r=[$e.Prec.low(xP),k5,S5,Tu,De.EditorView.updateListener.of(f=>{this.measuring<0&&(f.heightChanged||f.viewportChanged)&&!f.transactions.some(d=>d.effects.some(h=>h.is(xh)))&&this.measure()})],i=[zi.of({side:"a",sibling:()=>this.b,highlightChanges:e.highlightChanges!==!1,markGutter:e.gutter!==!1})];e.gutter!==!1&&i.push(wh);let n=$e.EditorState.create({doc:e.a.doc,selection:e.a.selection,extensions:[e.a.extensions||[],De.EditorView.editorAttributes.of({class:"cm-merge-a"}),bh.of(i),r]}),s=[zi.of({side:"b",sibling:()=>this.a,highlightChanges:e.highlightChanges!==!1,markGutter:e.gutter!==!1})];e.gutter!==!1&&s.push(wh);let a=$e.EditorState.create({doc:e.b.doc,selection:e.b.selection,extensions:[e.b.extensions||[],De.EditorView.editorAttributes.of({class:"cm-merge-b"}),bh.of(s),r]});this.chunks=ts.build(n.doc,a.doc,this.diffConf);let o=[Fa.init(()=>this.chunks),oP.of(e.collapseUnchanged?aP(e.collapseUnchanged):[])];n=n.update({effects:$e.StateEffect.appendConfig.of(o)}).state,a=a.update({effects:$e.StateEffect.appendConfig.of(o)}).state,this.dom=document.createElement("div"),this.dom.className="cm-mergeView",this.editorDOM=this.dom.appendChild(document.createElement("div")),this.editorDOM.className="cm-mergeViewEditors";let l=e.orientation||"a-b",c=document.createElement("div");c.className="cm-mergeViewEditor";let u=document.createElement("div");u.className="cm-mergeViewEditor",this.editorDOM.appendChild(l=="a-b"?c:u),this.editorDOM.appendChild(l=="a-b"?u:c),this.a=new De.EditorView({state:n,parent:c,root:e.root,dispatchTransactions:f=>this.dispatch(f,this.a)}),this.b=new De.EditorView({state:a,parent:u,root:e.root,dispatchTransactions:f=>this.dispatch(f,this.b)}),this.setupRevertControls(!!e.revertControls,e.revertControls=="b-to-a",e.renderRevertControl),e.parent&&e.parent.appendChild(this.dom),this.scheduleMeasure()}dispatch(e,r){if(e.some(i=>i.docChanged)){let i=e[e.length-1],n=e.reduce((a,o)=>a.compose(o.changes),$e.ChangeSet.empty(e[0].startState.doc.length));this.chunks=r==this.a?ts.updateA(this.chunks,i.newDoc,this.b.state.doc,n,this.diffConf):ts.updateB(this.chunks,this.a.state.doc,i.newDoc,n,this.diffConf),r.update([...e,i.state.update({effects:vw.of(this.chunks)})]);let s=r==this.a?this.b:this.a;s.update([s.state.update({effects:vw.of(this.chunks)})]),this.scheduleMeasure()}else r.update(e)}reconfigure(e){if("diffConfig"in e&&(this.diffConf=e.diffConfig),"orientation"in e){let s=e.orientation!="b-a";if(s!=(this.editorDOM.firstChild==this.a.dom.parentNode)){let a=this.a.dom.parentNode,o=this.b.dom.parentNode;a.remove(),o.remove(),this.editorDOM.insertBefore(s?a:o,this.editorDOM.firstChild),this.editorDOM.appendChild(s?o:a),this.revertToLeft=!this.revertToLeft,this.revertDOM&&(this.revertDOM.textContent="")}}if("revertControls"in e||"renderRevertControl"in e){let s=!!this.revertDOM,a=this.revertToA,o=this.renderRevert;"revertControls"in e&&(s=!!e.revertControls,a=e.revertControls=="b-to-a"),"renderRevertControl"in e&&(o=e.renderRevertControl),this.setupRevertControls(s,a,o)}let r="highlightChanges"in e,i="gutter"in e,n="collapseUnchanged"in e;if(r||i||n){let s=[],a=[];if(r||i){let o=this.a.state.facet(zi),l=i?e.gutter!==!1:o.markGutter,c=r?e.highlightChanges!==!1:o.highlightChanges;s.push(bh.reconfigure([zi.of({side:"a",sibling:()=>this.b,highlightChanges:c,markGutter:l}),l?wh:[]])),a.push(bh.reconfigure([zi.of({side:"b",sibling:()=>this.a,highlightChanges:c,markGutter:l}),l?wh:[]]))}if(n){let o=oP.reconfigure(e.collapseUnchanged?aP(e.collapseUnchanged):[]);s.push(o),a.push(o)}this.a.dispatch({effects:s}),this.b.dispatch({effects:a})}this.scheduleMeasure()}setupRevertControls(e,r,i){this.revertToA=r,this.revertToLeft=this.revertToA==(this.editorDOM.firstChild==this.a.dom.parentNode),this.renderRevert=i,!e&&this.revertDOM?(this.revertDOM.remove(),this.revertDOM=null):e&&!this.revertDOM?(this.revertDOM=this.editorDOM.insertBefore(document.createElement("div"),this.editorDOM.firstChild.nextSibling),this.revertDOM.addEventListener("mousedown",n=>this.revertClicked(n)),this.revertDOM.className="cm-merge-revert"):this.revertDOM&&(this.revertDOM.textContent="")}scheduleMeasure(){if(this.measuring<0){let e=this.dom.ownerDocument.defaultView||window;this.measuring=e.requestAnimationFrame(()=>{this.measuring=-1,this.measure()})}}measure(){b5(this.a,this.b,this.chunks),this.revertDOM&&this.updateRevertButtons()}updateRevertButtons(){let e=this.revertDOM,r=e.firstChild,i=this.a.viewport,n=this.b.viewport;for(let s=0;s<this.chunks.length;s++){let a=this.chunks[s];if(a.fromA>i.to||a.fromB>n.to)break;if(a.fromA<i.from||a.fromB<n.from)continue;let o=this.a.lineBlockAt(a.fromA).top+"px";for(;r&&+r.dataset.chunk<s;)r=lP(r);r&&r.dataset.chunk==String(s)?(r.style.top!=o&&(r.style.top=o),r=r.nextSibling):e.insertBefore(this.renderRevertButton(o,s),r)}for(;r;)r=lP(r)}renderRevertButton(e,r){let i;if(this.renderRevert)i=this.renderRevert();else{i=document.createElement("button");let n=this.a.state.phrase("Revert this chunk");i.setAttribute("aria-label",n),i.setAttribute("title",n),i.textContent=this.revertToLeft?"\u21DC":"\u21DD"}return i.style.top=e,i.setAttribute("data-chunk",String(r)),i}revertClicked(e){let r=e.target,i;for(;r&&r.parentNode!=this.revertDOM;)r=r.parentNode;if(r&&(i=this.chunks[r.dataset.chunk])){let[n,s,a,o,l,c]=this.revertToA?[this.b,this.a,i.fromB,i.toB,i.fromA,i.toA]:[this.a,this.b,i.fromA,i.toA,i.fromB,i.toB],u=n.state.sliceDoc(a,Math.max(a,o-1));a!=o&&c<=s.state.doc.length&&(u+=n.state.lineBreak),s.dispatch({changes:{from:l,to:Math.min(s.state.doc.length,c),insert:u},userEvent:"revert"}),e.preventDefault()}}destroy(){this.a.destroy(),this.b.destroy(),this.measuring>-1&&(this.dom.ownerDocument.defaultView||window).cancelAnimationFrame(this.measuring),this.dom.remove()}};function lP(t){let e=t.nextSibling;return t.remove(),e}var Sw=require("@codemirror/state");function kw(t,e,r){let i=[],n=t.split(` +`),s=e.split(` +`);for(let a of r){let{oldStart:o,oldLines:l,newStart:c,newLines:u}=a,f=Vt.createHunk(o,l,c,u);if(a.oldLines>0){for(let d=o;d<o+l;d++)f.removed.lines.push(n[d-1]);o+l>n.length&&n.last()!=""&&(f.removed.no_nl_at_eof=!0)}if(a.newLines>0){for(let d=c;d<c+u;d++)f.added.lines.push(s[d-1]);c+u>s.length&&s.last()!=""&&(f.added.no_nl_at_eof=!0)}i.push(f)}return i}function Aw(t,e,r){let i=e.lineAt(t.fromA).number,n=t.fromA==t.toA?0:Sh(e,t.endA)-i+1,s=r.lineAt(t.fromB).number,a=t.fromB==t.toB?0:Sh(r,t.endB)-s+1,o={oldStart:i,oldLines:n,newStart:s,newLines:a};return o.oldLines==0&&(o.oldStart-=1),o.newLines==0&&(o.newStart-=1),o}var EP={scanLimit:1e3,timeout:200};function A5(t,e,r,i){let n=Sw.Text.of(t.split(` +`)),s=Sw.Text.of(e.split(` +`)),a=r&&i?ts.updateB(r,n,s,i,EP):ts.build(n,s,EP),o=[];for(let l=0;l<a.length;l++){let c=a[l],u=Aw(c,n,s);o.push(u)}return{hunks:kw(t,e,o),chunks:a}}function SP(t,e,r,i){return A5(t,e,r,i)}var Fl=require("obsidian");function Sh(t,e){let r=t.lineAt(e);return!(r.text.length==0&&r.number==t.lines)?r.number:r.number-1}var Wi=class{static hasHunksData(e){let r=e.field(Hr,!1);return!!r&&!r.isDirty}static getHunks(e,r){let i=e.field(Hr);return i?r?i.stagedHunks:i.hunks:[]}static getHunkAtPos(e,r,i){if(!e.field(Hr))return;let s=e.doc.lineAt(r).number,a=this.getHunks(e,i);return Vt.findHunk(s,a)[0]}static getCursorHunk(e,r){if(!e.field(Hr))return;let n=e.selection.main.head;return this.getHunkAtPos(e,n,r)}static getHunk(e,r,i){if(i!=null)return this.getHunkAtPos(e,i,r);if(e.selection.main.empty)return this.getCursorHunk(e,r);let n=e.selection.main.from,s=e.selection.main.to,a=e.doc.lineAt(n).number,o=Sh(e.doc,s),l=this.getHunks(e,r),c=Vt.createPartialHunk(l,a,o);if(!c)return;let u=e.field(Hr);if(r){let f=a,d=o;for(let h of u.hunks)a>h.vend&&(f=f-(h.added.count-h.removed.count)),o>h.vend&&(d=d-(h.added.count-h.removed.count));c.added.lines=u.compareText.split(` +`).slice(f-1,d),u.compareTextHead?c.removed.lines=u.compareTextHead.split(` +`).slice(c.removed.start-1,c.removed.start-1+c.removed.count):c.removed.lines=[]}else c.added.lines=e.doc.toString().split(` +`).slice(a-1,o),o===e.doc.lines&&!e.doc.toString().endsWith(` +`)&&(c.added.no_nl_at_eof=!0),c.removed.lines=u.compareText.split(` +`).slice(c.removed.start-1,c.removed.start-1+c.removed.count),c.removed.start+c.removed.count-1===u.compareText.split(` +`).length&&!u.compareText.endsWith(` +`)&&(c.removed.no_nl_at_eof=!0);return c}},Hr=$l.StateField.define({create:t=>{},update:(t,e)=>{let r=t?{...t}:{maxDiffTimeMs:0,hunks:[],stagedHunks:[],chunks:void 0,isDirty:!1},i=!1;for(let n of e.effects)n.is(Il)&&(r.compareText=n.value.compareText,r.compareTextHead=n.value.compareTextHead,i=(t==null?void 0:t.compareText)!==n.value.compareText,i&&(r.chunks=void 0)),n.is(Pu)&&kP(r,n.value,e.state);if(r.compareText!==void 0){if(i||e.docChanged){r.isDirty=!0;let n=C5(e,r.compareText,r.chunks,r.maxDiffTimeMs);n&&kP(r,n,e.state)}}else r.compareText=void 0,r.compareTextHead=void 0,r.chunks=void 0,r.hunks=[],r.stagedHunks=[],r.isDirty=!1;return r}});function kP(t,e,r){var n,s;t.hunks=e.hunks,t.chunks=e.chunks,t.isDirty=!1,t.maxDiffTimeMs=Math.max(.95*t.maxDiffTimeMs,e.diffDuration);let i=r.field(Fl.editorInfoField).file;(s=(n=jt.plugin)==null?void 0:n.editorIntegration.signsFeature.changeStatusBar)==null||s.display(t.hunks,i)}var Cw=$l.StateField.define({create:()=>({debouncer:(0,Fl.debounce)(t=>{let{state:e,compareText:r,previousChunks:i,changeDesc:n}=t,s=AP(e,r,i,n);e.field(Fl.editorEditorField).dispatch({effects:Pu.of(s)})},1e3,!0),maxDiffTimeMs:0}),update:(t,e)=>{var r;for(let i of e.effects)if(i.is(Pu))return t.changeDesc=void 0,t;return!t.changeDesc&&e.changes?t.changeDesc=e.changes:t.changeDesc=(r=t.changeDesc)==null?void 0:r.composeDesc(e.changes),t}});function AP(t,e,r,i){let n=t.doc.toString(),s=performance.now(),{hunks:a,chunks:o}=SP(e,n,r,i),l=performance.now()-s;return{hunks:a,chunks:o,diffDuration:l}}function C5(t,e,r,i){let n=t.state,s=Math.abs(t.changes.length-t.changes.newLength),a=n.field(Cw);if(s>1e3||i>16)a.debouncer({state:n,compareText:e,previousChunks:r,changeDesc:a.changeDesc});else return a.changeDesc=void 0,AP(n,e,r,t.changes)}var Il=$l.StateEffect.define(),Pu=$l.StateEffect.define();function CP(t,e){return e.update({effects:Il.of(t)})}m();m();m();var nt;(function(t){t.INSERT="insert",t.DELETE="delete",t.CONTEXT="context"})(nt||(nt={}));var TP={LINE_BY_LINE:"line-by-line",SIDE_BY_SIDE:"side-by-side"},PP={LINES:"lines",WORDS:"words",NONE:"none"},RP={WORD:"word",CHAR:"char"},Ia;(function(t){t.AUTO="auto",t.DARK="dark",t.LIGHT="light"})(Ia||(Ia={}));m();var T5=["-","[","]","/","{","}","(",")","*","+","?",".","\\","^","$","|"],P5=RegExp("["+T5.join("\\")+"]","g");function $P(t){return t.replace(P5,"\\$&")}function Tw(t){return t&&t.replace(/\\/g,"/")}function FP(t){let e,r,i,n=0;for(e=0,i=t.length;e<i;e++)r=t.charCodeAt(e),n=(n<<5)-n+r,n|=0;return n}function kh(t){let e=t.length,r=-1/0;for(let i=0;i<e;i++)r=Math.max(r,t[i]);return r}function IP(t,e){let r=t.split(".");return r.length>1?r[r.length-1]:e}function MP(t,e){return e.reduce((r,i)=>r||t.startsWith(i),!1)}var DP=["a/","b/","i/","w/","c/","o/"];function Hs(t,e,r){let i=r!==void 0?[...DP,r]:DP,n=e?new RegExp(`^${$P(e)} "?(.+?)"?$`):new RegExp('^"?(.+?)"?$'),[,s=""]=n.exec(t)||[],a=i.find(l=>s.indexOf(l)===0);return(a?s.slice(a.length):s).replace(/\s+\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}(?:\.\d+)? [+-]\d{4}.*$/,"")}function R5(t,e){return Hs(t,"---",e)}function $5(t,e){return Hs(t,"+++",e)}function OP(t,e={}){let r=[],i=null,n=null,s=null,a=null,o=null,l=null,c=null,u="--- ",f="+++ ",d="@@",h=/^old mode (\d{6})/,p=/^new mode (\d{6})/,g=/^deleted file mode (\d{6})/,v=/^new file mode (\d{6})/,_=/^copy from "?(.+)"?/,b=/^copy to "?(.+)"?/,S=/^rename from "?(.+)"?/,k=/^rename to "?(.+)"?/,E=/^similarity index (\d+)%/,A=/^dissimilarity index (\d+)%/,w=/^index ([\da-z]+)\.\.([\da-z]+)\s*(\d{6})?/,x=/^Binary files (.*) and (.*) differ/,y=/^GIT binary patch/,C=/^index ([\da-z]+),([\da-z]+)\.\.([\da-z]+)/,P=/^mode (\d{6}),(\d{6})\.\.(\d{6})/,L=/^new file mode (\d{6})/,N=/^deleted file mode (\d{6}),(\d{6})/,B=t.replace(/\\ No newline at end of file/g,"").replace(/\r\n?/g,` +`).split(` +`);function ge(){n!==null&&i!==null&&(i.blocks.push(n),n=null)}function Le(){i!==null&&(!i.oldName&&l!==null&&(i.oldName=l),!i.newName&&c!==null&&(i.newName=c),i.newName&&(r.push(i),i=null)),l=null,c=null}function ke(){ge(),Le(),i={blocks:[],deletedLines:0,addedLines:0}}function ne(z){ge();let X;i!==null&&((X=/^@@ -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@.*/.exec(z))?(i.isCombined=!1,s=parseInt(X[1],10),o=parseInt(X[2],10)):(X=/^@@@ -(\d+)(?:,\d+)? -(\d+)(?:,\d+)? \+(\d+)(?:,\d+)? @@@.*/.exec(z))?(i.isCombined=!0,s=parseInt(X[1],10),a=parseInt(X[2],10),o=parseInt(X[3],10)):(z.startsWith(d)&&console.error("Failed to parse lines, starting in 0!"),s=0,o=0,i.isCombined=!1)),n={lines:[],oldStartLine:s,oldStartLine2:a,newStartLine:o,header:z}}function Ee(z){if(i===null||n===null||s===null||o===null)return;let X={content:z},V=i.isCombined?["+ "," +","++"]:["+"],Ne=i.isCombined?["- "," -","--"]:["-"];MP(z,V)?(i.addedLines++,X.type=nt.INSERT,X.oldNumber=void 0,X.newNumber=o++):MP(z,Ne)?(i.deletedLines++,X.type=nt.DELETE,X.oldNumber=s++,X.newNumber=void 0):(X.type=nt.CONTEXT,X.oldNumber=s++,X.newNumber=o++),n.lines.push(X)}function _e(z,X){let V=X;for(;V<B.length-3;){if(z.startsWith("diff"))return!1;if(B[V].startsWith(u)&&B[V+1].startsWith(f)&&B[V+2].startsWith(d))return!0;V++}return!1}return B.forEach((z,X)=>{if(!z||z.startsWith("*"))return;let V,Ne=B[X-1],gr=B[X+1],Nt=B[X+2];if(z.startsWith("diff --git")||z.startsWith("diff --combined")){if(ke(),(V=/^diff --git "?([a-ciow]\/.+)"? "?([a-ciow]\/.+)"?/.exec(z))&&(l=Hs(V[1],void 0,e.dstPrefix),c=Hs(V[2],void 0,e.srcPrefix)),i===null)throw new Error("Where is my file !!!");i.isGitDiff=!0;return}if(z.startsWith("Binary files")&&!(i!=null&&i.isGitDiff)){if(ke(),(V=/^Binary files "?([a-ciow]\/.+)"? and "?([a-ciow]\/.+)"? differ/.exec(z))&&(l=Hs(V[1],void 0,e.dstPrefix),c=Hs(V[2],void 0,e.srcPrefix)),i===null)throw new Error("Where is my file !!!");i.isBinary=!0;return}if((!i||!i.isGitDiff&&i&&z.startsWith(u)&&gr.startsWith(f)&&Nt.startsWith(d))&&ke(),i!=null&&i.isTooBig)return;if(i&&(typeof e.diffMaxChanges=="number"&&i.addedLines+i.deletedLines>e.diffMaxChanges||typeof e.diffMaxLineLength=="number"&&z.length>e.diffMaxLineLength)){i.isTooBig=!0,i.addedLines=0,i.deletedLines=0,i.blocks=[],n=null;let Pt=typeof e.diffTooBigMessage=="function"?e.diffTooBigMessage(r.length):"Diff too big to be displayed";ne(Pt);return}if(z.startsWith(u)&&gr.startsWith(f)||z.startsWith(f)&&Ne.startsWith(u)){if(i&&!i.oldName&&z.startsWith("--- ")&&(V=R5(z,e.srcPrefix))){i.oldName=V,i.language=IP(i.oldName,i.language);return}if(i&&!i.newName&&z.startsWith("+++ ")&&(V=$5(z,e.dstPrefix))){i.newName=V,i.language=IP(i.newName,i.language);return}}if(i&&(z.startsWith(d)||i.isGitDiff&&i.oldName&&i.newName&&!n)){ne(z);return}if(n&&(z.startsWith("+")||z.startsWith("-")||z.startsWith(" "))){Ee(z);return}let Fe=!_e(z,X);if(i===null)throw new Error("Where is my file !!!");(V=h.exec(z))?i.oldMode=V[1]:(V=p.exec(z))?i.newMode=V[1]:(V=g.exec(z))?(i.deletedFileMode=V[1],i.isDeleted=!0):(V=v.exec(z))?(i.newFileMode=V[1],i.isNew=!0):(V=_.exec(z))?(Fe&&(i.oldName=V[1]),i.isCopy=!0):(V=b.exec(z))?(Fe&&(i.newName=V[1]),i.isCopy=!0):(V=S.exec(z))?(Fe&&(i.oldName=V[1]),i.isRename=!0):(V=k.exec(z))?(Fe&&(i.newName=V[1]),i.isRename=!0):(V=x.exec(z))?(i.isBinary=!0,i.oldName=Hs(V[1],void 0,e.srcPrefix),i.newName=Hs(V[2],void 0,e.dstPrefix),ne("Binary file")):y.test(z)?(i.isBinary=!0,ne(z)):(V=E.exec(z))?i.unchangedPercentage=parseInt(V[1],10):(V=A.exec(z))?i.changedPercentage=parseInt(V[1],10):(V=w.exec(z))?(i.checksumBefore=V[1],i.checksumAfter=V[2],V[3]&&(i.mode=V[3])):(V=C.exec(z))?(i.checksumBefore=[V[2],V[3]],i.checksumAfter=V[1]):(V=P.exec(z))?(i.oldMode=[V[2],V[3]],i.newMode=V[1]):(V=L.exec(z))?(i.newFileMode=V[1],i.isNew=!0):(V=N.exec(z))&&(i.deletedFileMode=V[1],i.isDeleted=!0)}),ge(),Le(),r}m();m();m();function I5(t,e){if(t.length===0)return e.length;if(e.length===0)return t.length;let r=[],i;for(i=0;i<=e.length;i++)r[i]=[i];let n;for(n=0;n<=t.length;n++)r[0][n]=n;for(i=1;i<=e.length;i++)for(n=1;n<=t.length;n++)e.charAt(i-1)===t.charAt(n-1)?r[i][n]=r[i-1][n-1]:r[i][n]=Math.min(r[i-1][n-1]+1,Math.min(r[i][n-1]+1,r[i-1][n]+1));return r[e.length][t.length]}function Ml(t){return(e,r)=>{let i=t(e).trim(),n=t(r).trim();return I5(i,n)/(i.length+n.length)}}function Dl(t){function e(i,n,s=new Map){let a=1/0,o;for(let l=0;l<i.length;++l)for(let c=0;c<n.length;++c){let u=JSON.stringify([i[l],n[c]]),f;s.has(u)&&(f=s.get(u))||(f=t(i[l],n[c]),s.set(u,f)),f<a&&(a=f,o={indexA:l,indexB:c,score:a})}return o}function r(i,n,s=0,a=new Map){let o=e(i,n,a);if(!o||i.length+n.length<3)return[[i,n]];let l=i.slice(0,o.indexA),c=n.slice(0,o.indexB),u=[i[o.indexA]],f=[n[o.indexB]],d=o.indexA+1,h=o.indexB+1,p=i.slice(d),g=n.slice(h),v=r(l,c,s+1,a),_=r(u,f,s+1,a),b=r(p,g,s+1,a),S=_;return(o.indexA>0||o.indexB>0)&&(S=v.concat(S)),(i.length>d||n.length>h)&&(S=S.concat(b)),S}return r}var Qt={INSERTS:"d2h-ins",DELETES:"d2h-del",CONTEXT:"d2h-cntx",INFO:"d2h-info",INSERT_CHANGES:"d2h-ins d2h-change",DELETE_CHANGES:"d2h-del d2h-change"},Ma={matching:PP.NONE,matchWordsThreshold:.25,maxLineLengthHighlight:1e4,diffStyle:RP.WORD,colorScheme:Ia.LIGHT},En="/",LP=Ml(t=>t.value),M5=Dl(LP);function Rw(t){return t.indexOf("dev/null")!==-1}function D5(t){return t.replace(/(<ins[^>]*>((.|\n)*?)<\/ins>)/g,"")}function O5(t){return t.replace(/(<del[^>]*>((.|\n)*?)<\/del>)/g,"")}function Ol(t){switch(t){case nt.CONTEXT:return Qt.CONTEXT;case nt.INSERT:return Qt.INSERTS;case nt.DELETE:return Qt.DELETES}}function Ll(t){switch(t){case Ia.DARK:return"d2h-dark-color-scheme";case Ia.AUTO:return"d2h-auto-color-scheme";case Ia.LIGHT:default:return"d2h-light-color-scheme"}}function L5(t){return t?2:1}function Us(t){return t.slice(0).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'").replace(/\//g,"/")}function ki(t,e,r=!0){let i=L5(e);return{prefix:t.substring(0,i),content:r?Us(t.substring(i)):t.substring(i)}}function Da(t){let e=Tw(t.oldName),r=Tw(t.newName);if(e!==r&&!Rw(e)&&!Rw(r)){let i=[],n=[],s=e.split(En),a=r.split(En),o=s.length,l=a.length,c=0,u=o-1,f=l-1;for(;c<u&&c<f&&s[c]===a[c];)i.push(a[c]),c+=1;for(;u>c&&f>c&&s[u]===a[f];)n.unshift(a[f]),u-=1,f-=1;let d=i.join(En),h=n.join(En),p=s.slice(c,u+1).join(En),g=a.slice(c,f+1).join(En);return d.length&&h.length?d+En+"{"+p+" \u2192 "+g+"}"+En+h:d.length?d+En+"{"+p+" \u2192 "+g+"}":h.length?"{"+p+" \u2192 "+g+"}"+En+h:e+" \u2192 "+r}else return Rw(r)?e:r}function Nl(t){return`d2h-${FP(Da(t)).toString().slice(-6)}`}function Bl(t){let e="file-changed";return t.isRename||t.isCopy?e="file-renamed":t.isNew?e="file-added":t.isDeleted?e="file-deleted":t.newName!==t.oldName&&(e="file-renamed"),e}function Ah(t,e,r,i={}){let{matching:n,maxLineLengthHighlight:s,matchWordsThreshold:a,diffStyle:o}=Object.assign(Object.assign({},Ma),i),l=ki(t,r,!1),c=ki(e,r,!1);if(l.content.length>s||c.content.length>s)return{oldLine:{prefix:l.prefix,content:Us(l.content)},newLine:{prefix:c.prefix,content:Us(c.content)}};let u=o==="char"?jg(l.content,c.content):Zg(l.content,c.content),f=[];if(o==="word"&&n==="words"){let h=u.filter(v=>v.removed),p=u.filter(v=>v.added);M5(p,h).forEach(v=>{v[0].length===1&&v[1].length===1&&LP(v[0][0],v[1][0])<a&&(f.push(v[0][0]),f.push(v[1][0]))})}let d=u.reduce((h,p)=>{let g=p.added?"ins":p.removed?"del":null,v=f.indexOf(p)>-1?' class="d2h-change"':"",_=Us(p.value);return g!==null?`${h}<${g}${v}>${_}</${g}>`:`${h}${_}`},"");return{oldLine:{prefix:l.prefix,content:D5(d)},newLine:{prefix:c.prefix,content:O5(d)}}}var NP="file-summary",N5="icon",B5={colorScheme:Ma.colorScheme},Ch=class{constructor(e,r={}){this.hoganUtils=e,this.config=Object.assign(Object.assign({},B5),r)}render(e){let r=e.map(i=>this.hoganUtils.render(NP,"line",{fileHtmlId:Nl(i),oldName:i.oldName,newName:i.newName,fileName:Da(i),deletedLines:"-"+i.deletedLines,addedLines:"+"+i.addedLines},{fileIcon:this.hoganUtils.template(N5,Bl(i))})).join(` +`);return this.hoganUtils.render(NP,"wrapper",{colorScheme:Ll(this.config.colorScheme),filesNumber:e.length,files:r})}};m();var Fw=Object.assign(Object.assign({},Ma),{renderNothingWhenEmpty:!1,matchingMaxComparisons:2500,maxLineSizeInBlockForComparison:200}),Ru="generic",BP="line-by-line",H5="icon",U5="tag",$u=class{constructor(e,r={}){this.hoganUtils=e,this.config=Object.assign(Object.assign({},Fw),r)}render(e){let r=e.map(i=>{let n;return i.blocks.length?n=this.generateFileHtml(i):n=this.generateEmptyDiff(),this.makeFileDiffHtml(i,n)}).join(` +`);return this.hoganUtils.render(Ru,"wrapper",{colorScheme:Ll(this.config.colorScheme),content:r})}makeFileDiffHtml(e,r){if(this.config.renderNothingWhenEmpty&&Array.isArray(e.blocks)&&e.blocks.length===0)return"";let i=this.hoganUtils.template(BP,"file-diff"),n=this.hoganUtils.template(Ru,"file-path"),s=this.hoganUtils.template(H5,"file"),a=this.hoganUtils.template(U5,Bl(e));return i.render({file:e,fileHtmlId:Nl(e),diffs:r,filePath:n.render({fileDiffName:Da(e)},{fileIcon:s,fileTag:a})})}generateEmptyDiff(){return this.hoganUtils.render(Ru,"empty-diff",{contentClass:"d2h-code-line",CSSLineClass:Qt})}generateFileHtml(e){let r=Dl(Ml(i=>ki(i.content,e.isCombined).content));return e.blocks.map(i=>{let n=this.hoganUtils.render(Ru,"block-header",{CSSLineClass:Qt,blockHeader:e.isTooBig?i.header:Us(i.header),lineClass:"d2h-code-linenumber",contentClass:"d2h-code-line"});return this.applyLineGroupping(i).forEach(([s,a,o])=>{if(a.length&&o.length&&!s.length)this.applyRematchMatching(a,o,r).map(([l,c])=>{let{left:u,right:f}=this.processChangedLines(e,e.isCombined,l,c);n+=u,n+=f});else if(s.length)s.forEach(l=>{let{prefix:c,content:u}=ki(l.content,e.isCombined);n+=this.generateSingleLineHtml(e,{type:Qt.CONTEXT,prefix:c,content:u,oldNumber:l.oldNumber,newNumber:l.newNumber})});else if(a.length||o.length){let{left:l,right:c}=this.processChangedLines(e,e.isCombined,a,o);n+=l,n+=c}else console.error("Unknown state reached while processing groups of lines",s,a,o)}),n}).join(` +`)}applyLineGroupping(e){let r=[],i=[],n=[];for(let s=0;s<e.lines.length;s++){let a=e.lines[s];(a.type!==nt.INSERT&&n.length||a.type===nt.CONTEXT&&i.length>0)&&(r.push([[],i,n]),i=[],n=[]),a.type===nt.CONTEXT?r.push([[a],[],[]]):a.type===nt.INSERT&&i.length===0?r.push([[],[],[a]]):a.type===nt.INSERT&&i.length>0?n.push(a):a.type===nt.DELETE&&i.push(a)}return(i.length||n.length)&&(r.push([[],i,n]),i=[],n=[]),r}applyRematchMatching(e,r,i){let n=e.length*r.length,s=kh(e.concat(r).map(o=>o.content.length));return n<this.config.matchingMaxComparisons&&s<this.config.maxLineSizeInBlockForComparison&&(this.config.matching==="lines"||this.config.matching==="words")?i(e,r):[[e,r]]}processChangedLines(e,r,i,n){let s={right:"",left:""},a=Math.max(i.length,n.length);for(let o=0;o<a;o++){let l=i[o],c=n[o],u=l!==void 0&&c!==void 0?Ah(l.content,c.content,r,this.config):void 0,f=l!==void 0&&l.oldNumber!==void 0?Object.assign(Object.assign({},u!==void 0?{prefix:u.oldLine.prefix,content:u.oldLine.content,type:Qt.DELETE_CHANGES}:Object.assign(Object.assign({},ki(l.content,r)),{type:Ol(l.type)})),{oldNumber:l.oldNumber,newNumber:l.newNumber}):void 0,d=c!==void 0&&c.newNumber!==void 0?Object.assign(Object.assign({},u!==void 0?{prefix:u.newLine.prefix,content:u.newLine.content,type:Qt.INSERT_CHANGES}:Object.assign(Object.assign({},ki(c.content,r)),{type:Ol(c.type)})),{oldNumber:c.oldNumber,newNumber:c.newNumber}):void 0,{left:h,right:p}=this.generateLineHtml(e,f,d);s.left+=h,s.right+=p}return s}generateLineHtml(e,r,i){return{left:this.generateSingleLineHtml(e,r),right:this.generateSingleLineHtml(e,i)}}generateSingleLineHtml(e,r){if(r===void 0)return"";let i=this.hoganUtils.render(BP,"numbers",{oldNumber:r.oldNumber||"",newNumber:r.newNumber||""});return this.hoganUtils.render(Ru,"line",{type:r.type,lineClass:"d2h-code-linenumber",contentClass:"d2h-code-line",prefix:r.prefix===" "?" ":r.prefix,content:r.content,lineNumber:i,line:r,file:e})}};m();var Iw=Object.assign(Object.assign({},Ma),{renderNothingWhenEmpty:!1,matchingMaxComparisons:2500,maxLineSizeInBlockForComparison:200}),Fu="generic",G5="side-by-side",j5="icon",V5="tag",Iu=class{constructor(e,r={}){this.hoganUtils=e,this.config=Object.assign(Object.assign({},Iw),r)}render(e){let r=e.map(i=>{let n;return i.blocks.length?n=this.generateFileHtml(i):n=this.generateEmptyDiff(),this.makeFileDiffHtml(i,n)}).join(` +`);return this.hoganUtils.render(Fu,"wrapper",{colorScheme:Ll(this.config.colorScheme),content:r})}makeFileDiffHtml(e,r){if(this.config.renderNothingWhenEmpty&&Array.isArray(e.blocks)&&e.blocks.length===0)return"";let i=this.hoganUtils.template(G5,"file-diff"),n=this.hoganUtils.template(Fu,"file-path"),s=this.hoganUtils.template(j5,"file"),a=this.hoganUtils.template(V5,Bl(e));return i.render({file:e,fileHtmlId:Nl(e),diffs:r,filePath:n.render({fileDiffName:Da(e)},{fileIcon:s,fileTag:a})})}generateEmptyDiff(){return{right:"",left:this.hoganUtils.render(Fu,"empty-diff",{contentClass:"d2h-code-side-line",CSSLineClass:Qt})}}generateFileHtml(e){let r=Dl(Ml(i=>ki(i.content,e.isCombined).content));return e.blocks.map(i=>{let n={left:this.makeHeaderHtml(i.header,e),right:this.makeHeaderHtml("")};return this.applyLineGroupping(i).forEach(([s,a,o])=>{if(a.length&&o.length&&!s.length)this.applyRematchMatching(a,o,r).map(([l,c])=>{let{left:u,right:f}=this.processChangedLines(e.isCombined,l,c);n.left+=u,n.right+=f});else if(s.length)s.forEach(l=>{let{prefix:c,content:u}=ki(l.content,e.isCombined),{left:f,right:d}=this.generateLineHtml({type:Qt.CONTEXT,prefix:c,content:u,number:l.oldNumber},{type:Qt.CONTEXT,prefix:c,content:u,number:l.newNumber});n.left+=f,n.right+=d});else if(a.length||o.length){let{left:l,right:c}=this.processChangedLines(e.isCombined,a,o);n.left+=l,n.right+=c}else console.error("Unknown state reached while processing groups of lines",s,a,o)}),n}).reduce((i,n)=>({left:i.left+n.left,right:i.right+n.right}),{left:"",right:""})}applyLineGroupping(e){let r=[],i=[],n=[];for(let s=0;s<e.lines.length;s++){let a=e.lines[s];(a.type!==nt.INSERT&&n.length||a.type===nt.CONTEXT&&i.length>0)&&(r.push([[],i,n]),i=[],n=[]),a.type===nt.CONTEXT?r.push([[a],[],[]]):a.type===nt.INSERT&&i.length===0?r.push([[],[],[a]]):a.type===nt.INSERT&&i.length>0?n.push(a):a.type===nt.DELETE&&i.push(a)}return(i.length||n.length)&&(r.push([[],i,n]),i=[],n=[]),r}applyRematchMatching(e,r,i){let n=e.length*r.length,s=kh(e.concat(r).map(o=>o.content.length));return n<this.config.matchingMaxComparisons&&s<this.config.maxLineSizeInBlockForComparison&&(this.config.matching==="lines"||this.config.matching==="words")?i(e,r):[[e,r]]}makeHeaderHtml(e,r){return this.hoganUtils.render(Fu,"block-header",{CSSLineClass:Qt,blockHeader:r!=null&&r.isTooBig?e:Us(e),lineClass:"d2h-code-side-linenumber",contentClass:"d2h-code-side-line"})}processChangedLines(e,r,i){let n={right:"",left:""},s=Math.max(r.length,i.length);for(let a=0;a<s;a++){let o=r[a],l=i[a],c=o!==void 0&&l!==void 0?Ah(o.content,l.content,e,this.config):void 0,u=o!==void 0&&o.oldNumber!==void 0?Object.assign(Object.assign({},c!==void 0?{prefix:c.oldLine.prefix,content:c.oldLine.content,type:Qt.DELETE_CHANGES}:Object.assign(Object.assign({},ki(o.content,e)),{type:Ol(o.type)})),{number:o.oldNumber}):void 0,f=l!==void 0&&l.newNumber!==void 0?Object.assign(Object.assign({},c!==void 0?{prefix:c.newLine.prefix,content:c.newLine.content,type:Qt.INSERT_CHANGES}:Object.assign(Object.assign({},ki(l.content,e)),{type:Ol(l.type)})),{number:l.newNumber}):void 0,{left:d,right:h}=this.generateLineHtml(u,f);n.left+=d,n.right+=h}return n}generateLineHtml(e,r){return{left:this.generateSingleHtml(e),right:this.generateSingleHtml(r)}}generateSingleHtml(e){let r="d2h-code-side-linenumber",i="d2h-code-side-line";return this.hoganUtils.render(Fu,"line",{type:(e==null?void 0:e.type)||`${Qt.CONTEXT} d2h-emptyplaceholder`,lineClass:e!==void 0?r:`${r} d2h-code-side-emptyplaceholder`,contentClass:e!==void 0?i:`${i} d2h-code-side-emptyplaceholder`,prefix:(e==null?void 0:e.prefix)===" "?" ":e==null?void 0:e.prefix,content:e==null?void 0:e.content,lineNumber:e==null?void 0:e.number})}};m();var Lw=Ht(Ow());m();var St=Ht(Ow()),bt={};bt["file-summary-line"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<li class="d2h-file-list-line">'),i.b(` +`+r),i.b(' <span class="d2h-file-name-wrapper">'),i.b(` +`+r),i.b(i.rp("<fileIcon0",t,e," ")),i.b(' <a href="#'),i.b(i.v(i.f("fileHtmlId",t,e,0))),i.b('" class="d2h-file-name">'),i.b(i.v(i.f("fileName",t,e,0))),i.b("</a>"),i.b(` +`+r),i.b(' <span class="d2h-file-stats">'),i.b(` +`+r),i.b(' <span class="d2h-lines-added">'),i.b(i.v(i.f("addedLines",t,e,0))),i.b("</span>"),i.b(` +`+r),i.b(' <span class="d2h-lines-deleted">'),i.b(i.v(i.f("deletedLines",t,e,0))),i.b("</span>"),i.b(` +`+r),i.b(" </span>"),i.b(` +`+r),i.b(" </span>"),i.b(` +`+r),i.b("</li>"),i.fl()},partials:{"<fileIcon0":{name:"fileIcon",partials:{},subs:{}}},subs:{}});bt["file-summary-wrapper"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<div class="d2h-file-list-wrapper '),i.b(i.v(i.f("colorScheme",t,e,0))),i.b('">'),i.b(` +`+r),i.b(' <div class="d2h-file-list-header">'),i.b(` +`+r),i.b(' <span class="d2h-file-list-title">Files changed ('),i.b(i.v(i.f("filesNumber",t,e,0))),i.b(")</span>"),i.b(` +`+r),i.b(' <a class="d2h-file-switch d2h-hide">hide</a>'),i.b(` +`+r),i.b(' <a class="d2h-file-switch d2h-show">show</a>'),i.b(` +`+r),i.b(" </div>"),i.b(` +`+r),i.b(' <ol class="d2h-file-list">'),i.b(` +`+r),i.b(" "),i.b(i.t(i.f("files",t,e,0))),i.b(` +`+r),i.b(" </ol>"),i.b(` +`+r),i.b("</div>"),i.fl()},partials:{},subs:{}});bt["generic-block-header"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b("<tr>"),i.b(` +`+r),i.b(' <td class="'),i.b(i.v(i.f("lineClass",t,e,0))),i.b(" "),i.b(i.v(i.d("CSSLineClass.INFO",t,e,0))),i.b('"></td>'),i.b(` +`+r),i.b(' <td class="'),i.b(i.v(i.d("CSSLineClass.INFO",t,e,0))),i.b('">'),i.b(` +`+r),i.b(' <div class="'),i.b(i.v(i.f("contentClass",t,e,0))),i.b('">'),i.s(i.f("blockHeader",t,e,1),t,e,0,156,173,"{{ }}")&&(i.rs(t,e,function(n,s,a){a.b(a.t(a.f("blockHeader",n,s,0)))}),t.pop()),i.s(i.f("blockHeader",t,e,1),t,e,1,0,0,"")||i.b(" "),i.b("</div>"),i.b(` +`+r),i.b(" </td>"),i.b(` +`+r),i.b("</tr>"),i.fl()},partials:{},subs:{}});bt["generic-empty-diff"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b("<tr>"),i.b(` +`+r),i.b(' <td class="'),i.b(i.v(i.d("CSSLineClass.INFO",t,e,0))),i.b('">'),i.b(` +`+r),i.b(' <div class="'),i.b(i.v(i.f("contentClass",t,e,0))),i.b('">'),i.b(` +`+r),i.b(" File without changes"),i.b(` +`+r),i.b(" </div>"),i.b(` +`+r),i.b(" </td>"),i.b(` +`+r),i.b("</tr>"),i.fl()},partials:{},subs:{}});bt["generic-file-path"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<span class="d2h-file-name-wrapper">'),i.b(` +`+r),i.b(i.rp("<fileIcon0",t,e," ")),i.b(' <span class="d2h-file-name">'),i.b(i.v(i.f("fileDiffName",t,e,0))),i.b("</span>"),i.b(` +`+r),i.b(i.rp("<fileTag1",t,e," ")),i.b("</span>"),i.b(` +`+r),i.b('<label class="d2h-file-collapse">'),i.b(` +`+r),i.b(' <input class="d2h-file-collapse-input" type="checkbox" name="viewed" value="viewed">'),i.b(` +`+r),i.b(" Viewed"),i.b(` +`+r),i.b("</label>"),i.fl()},partials:{"<fileIcon0":{name:"fileIcon",partials:{},subs:{}},"<fileTag1":{name:"fileTag",partials:{},subs:{}}},subs:{}});bt["generic-line"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b("<tr>"),i.b(` +`+r),i.b(' <td class="'),i.b(i.v(i.f("lineClass",t,e,0))),i.b(" "),i.b(i.v(i.f("type",t,e,0))),i.b('">'),i.b(` +`+r),i.b(" "),i.b(i.t(i.f("lineNumber",t,e,0))),i.b(` +`+r),i.b(" </td>"),i.b(` +`+r),i.b(' <td class="'),i.b(i.v(i.f("type",t,e,0))),i.b('">'),i.b(` +`+r),i.b(' <div class="'),i.b(i.v(i.f("contentClass",t,e,0))),i.b('">'),i.b(` +`+r),i.s(i.f("prefix",t,e,1),t,e,0,162,238,"{{ }}")&&(i.rs(t,e,function(n,s,a){a.b(' <span class="d2h-code-line-prefix">'),a.b(a.t(a.f("prefix",n,s,0))),a.b("</span>"),a.b(` +`+r)}),t.pop()),i.s(i.f("prefix",t,e,1),t,e,1,0,0,"")||(i.b(' <span class="d2h-code-line-prefix"> </span>'),i.b(` +`+r)),i.s(i.f("content",t,e,1),t,e,0,371,445,"{{ }}")&&(i.rs(t,e,function(n,s,a){a.b(' <span class="d2h-code-line-ctn">'),a.b(a.t(a.f("content",n,s,0))),a.b("</span>"),a.b(` +`+r)}),t.pop()),i.s(i.f("content",t,e,1),t,e,1,0,0,"")||(i.b(' <span class="d2h-code-line-ctn"><br></span>'),i.b(` +`+r)),i.b(" </div>"),i.b(` +`+r),i.b(" </td>"),i.b(` +`+r),i.b("</tr>"),i.fl()},partials:{},subs:{}});bt["generic-wrapper"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<div class="d2h-wrapper '),i.b(i.v(i.f("colorScheme",t,e,0))),i.b('">'),i.b(` +`+r),i.b(" "),i.b(i.t(i.f("content",t,e,0))),i.b(` +`+r),i.b("</div>"),i.fl()},partials:{},subs:{}});bt["icon-file-added"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16"'),i.b(` +`+r),i.b(' width="14">'),i.b(` +`+r),i.b(' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path>'),i.b(` +`+r),i.b("</svg>"),i.fl()},partials:{},subs:{}});bt["icon-file-changed"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1"'),i.b(` +`+r),i.b(' viewBox="0 0 14 16" width="14">'),i.b(` +`+r),i.b(' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path>'),i.b(` +`+r),i.b("</svg>"),i.fl()},partials:{},subs:{}});bt["icon-file-deleted"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1"'),i.b(` +`+r),i.b(' viewBox="0 0 14 16" width="14">'),i.b(` +`+r),i.b(' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path>'),i.b(` +`+r),i.b("</svg>"),i.fl()},partials:{},subs:{}});bt["icon-file-renamed"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<svg aria-hidden="true" class="d2h-icon d2h-moved" height="16" title="renamed" version="1.1"'),i.b(` +`+r),i.b(' viewBox="0 0 14 16" width="14">'),i.b(` +`+r),i.b(' <path d="M6 9H3V7h3V4l5 4-5 4V9z m8-7v12c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h12c0.55 0 1 0.45 1 1z m-1 0H1v12h12V2z"></path>'),i.b(` +`+r),i.b("</svg>"),i.fl()},partials:{},subs:{}});bt["icon-file"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">'),i.b(` +`+r),i.b(' <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>'),i.b(` +`+r),i.b("</svg>"),i.fl()},partials:{},subs:{}});bt["line-by-line-file-diff"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<div id="'),i.b(i.v(i.f("fileHtmlId",t,e,0))),i.b('" class="d2h-file-wrapper" data-lang="'),i.b(i.v(i.d("file.language",t,e,0))),i.b('">'),i.b(` +`+r),i.b(' <div class="d2h-file-header">'),i.b(` +`+r),i.b(" "),i.b(i.t(i.f("filePath",t,e,0))),i.b(` +`+r),i.b(" </div>"),i.b(` +`+r),i.b(' <div class="d2h-file-diff">'),i.b(` +`+r),i.b(' <div class="d2h-code-wrapper">'),i.b(` +`+r),i.b(' <table class="d2h-diff-table">'),i.b(` +`+r),i.b(' <tbody class="d2h-diff-tbody">'),i.b(` +`+r),i.b(" "),i.b(i.t(i.f("diffs",t,e,0))),i.b(` +`+r),i.b(" </tbody>"),i.b(` +`+r),i.b(" </table>"),i.b(` +`+r),i.b(" </div>"),i.b(` +`+r),i.b(" </div>"),i.b(` +`+r),i.b("</div>"),i.fl()},partials:{},subs:{}});bt["line-by-line-numbers"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<div class="line-num1">'),i.b(i.v(i.f("oldNumber",t,e,0))),i.b("</div>"),i.b(` +`+r),i.b('<div class="line-num2">'),i.b(i.v(i.f("newNumber",t,e,0))),i.b("</div>"),i.fl()},partials:{},subs:{}});bt["side-by-side-file-diff"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<div id="'),i.b(i.v(i.f("fileHtmlId",t,e,0))),i.b('" class="d2h-file-wrapper" data-lang="'),i.b(i.v(i.d("file.language",t,e,0))),i.b('">'),i.b(` +`+r),i.b(' <div class="d2h-file-header">'),i.b(` +`+r),i.b(" "),i.b(i.t(i.f("filePath",t,e,0))),i.b(` +`+r),i.b(" </div>"),i.b(` +`+r),i.b(' <div class="d2h-files-diff">'),i.b(` +`+r),i.b(' <div class="d2h-file-side-diff">'),i.b(` +`+r),i.b(' <div class="d2h-code-wrapper">'),i.b(` +`+r),i.b(' <table class="d2h-diff-table">'),i.b(` +`+r),i.b(' <tbody class="d2h-diff-tbody">'),i.b(` +`+r),i.b(" "),i.b(i.t(i.d("diffs.left",t,e,0))),i.b(` +`+r),i.b(" </tbody>"),i.b(` +`+r),i.b(" </table>"),i.b(` +`+r),i.b(" </div>"),i.b(` +`+r),i.b(" </div>"),i.b(` +`+r),i.b(' <div class="d2h-file-side-diff">'),i.b(` +`+r),i.b(' <div class="d2h-code-wrapper">'),i.b(` +`+r),i.b(' <table class="d2h-diff-table">'),i.b(` +`+r),i.b(' <tbody class="d2h-diff-tbody">'),i.b(` +`+r),i.b(" "),i.b(i.t(i.d("diffs.right",t,e,0))),i.b(` +`+r),i.b(" </tbody>"),i.b(` +`+r),i.b(" </table>"),i.b(` +`+r),i.b(" </div>"),i.b(` +`+r),i.b(" </div>"),i.b(` +`+r),i.b(" </div>"),i.b(` +`+r),i.b("</div>"),i.fl()},partials:{},subs:{}});bt["tag-file-added"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<span class="d2h-tag d2h-added d2h-added-tag">ADDED</span>'),i.fl()},partials:{},subs:{}});bt["tag-file-changed"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span>'),i.fl()},partials:{},subs:{}});bt["tag-file-deleted"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<span class="d2h-tag d2h-deleted d2h-deleted-tag">DELETED</span>'),i.fl()},partials:{},subs:{}});bt["tag-file-renamed"]=new St.Template({code:function(t,e,r){var i=this;return i.b(r=r||""),i.b('<span class="d2h-tag d2h-moved d2h-moved-tag">RENAMED</span>'),i.fl()},partials:{},subs:{}});var Mu=class{constructor({compiledTemplates:e={},rawTemplates:r={}}){let i=Object.entries(r).reduce((n,[s,a])=>{let o=Lw.compile(a,{asString:!1});return Object.assign(Object.assign({},n),{[s]:o})},{});this.preCompiledTemplates=Object.assign(Object.assign(Object.assign({},bt),e),i)}static compile(e){return Lw.compile(e,{asString:!1})}render(e,r,i,n,s){let a=this.templateKey(e,r);try{return this.preCompiledTemplates[a].render(i,n,s)}catch(o){throw new Error(`Could not find template to render '${a}'`)}}template(e,r){return this.preCompiledTemplates[this.templateKey(e,r)]}templateKey(e,r){return`${e}-${r}`}};var W5=Object.assign(Object.assign(Object.assign({},Fw),Iw),{outputFormat:TP.LINE_BY_LINE,drawFileList:!0});function Ph(t,e={}){let r=Object.assign(Object.assign({},W5),e),i=typeof t=="string"?OP(t,r):t,n=new Mu(r),{colorScheme:s}=r,a={colorScheme:s},o=r.drawFileList?new Ch(n,a).render(i):"",l=r.outputFormat==="side-by-side"?new Iu(n,r).render(i):new $u(n,r).render(i);return o+l}var qP=Ht(zP(),1);var Oa=require("obsidian"),Nw=Du.StateEffect.define();function Gs(t,e){let r=t.state,i=r.field($h),n=r.field(Hr),s=r.doc.lineAt(e!=null?e:r.selection.main.head).number,a=Vt.findHunk(s,n==null?void 0:n.hunks)[0];if(!a)return;let o=r.doc.line(Math.max(1,a.added.start)).from,l=i.has(o);return r.field(Oa.editorEditorField).dispatch({effects:Nw.of({pos:o,add:!l})})}var $h=Du.StateField.define({create:()=>new Set,update(t,e){let r=new Set;for(let i of e.effects)i.is(Nw)&&(i.value.add?t.add(i.value.pos):t.delete(i.value.pos));for(let i of t)r.add(e.changes.mapPos(i));return r}}),YP=Du.StateField.define({create:t=>WP(t),update(t,e){return e.docChanged||e.effects.some(r=>r.is(Il)||r.is(Nw))?WP(e.state):t},provide:t=>Rh.showTooltip.computeN([t],e=>e.field(t))}),XP=Rh.EditorView.baseTheme({".cm-tooltip.git-diff-tooltip":{"z-index":"var(--layer-popover)",backgroundColor:"var(--background-primary-alt)",border:"var(--border-width) solid var(--background-primary-alt)",borderRadius:"var(--radius-s)"},".cm-tooltip.git-diff-tooltip .tooltip-toolbar":{display:"flex",padding:"var(--size-2-1)"}});function WP(t){let e=t.field(Hr);return e?[...t.field($h)].map(i=>{let n=t.doc.lineAt(i),s=Vt.findHunk(n.number,e.hunks)[0];if(s)return{pos:i,above:!1,arrow:!1,strictSide:!0,clip:!1,create:()=>q5(s,t,i)}}).filter(i=>i!==void 0):[]}function q5(t,e,r){var g,v;let i=Vt.createPatch("file",[t],"10064",!1).join(` +`)+` +`,n=Ph(i,{colorScheme:qP.ColorSchemeType.AUTO,diffStyle:"word",drawFileList:!1}),s=new DOMParser().parseFromString(n,"text/html").querySelector(".d2h-file-diff"),a=activeDocument.createDiv(),o=activeDocument.createDiv();o.addClass("tooltip-toolbar");let l=(_,b)=>{let S=activeDocument.createDiv();return(0,Oa.setIcon)(S,_),S.setAttr("aria-label",b),S.addClass("clickable-icon"),S},c=l("x","Close hunk"),u=l("plus","Stage hunk"),f=l("undo","Reset hunk");o.appendChild(c),o.appendChild(u),o.appendChild(f),a.appendChild(o),a.appendChild(s),a.addClass("git-diff-tooltip","git-diff");let d=e.field(Oa.editorEditorField);c.onclick=()=>{Gs(d,r)},u.onclick=()=>{let _=jt.plugin;_&&(_.promiseQueue.addTask(()=>_.hunkActions.stageHunk(r)),Gs(d,r))},f.onclick=()=>{let _=jt.plugin;_&&(_.hunkActions.resetHunk(r),Gs(d,r))};let h=(v=(g=jt.plugin)==null?void 0:g.app.workspace.getActiveViewOfType(Oa.MarkdownView))==null?void 0:v.scope,p=h==null?void 0:h.register(null,"Escape",(_,b)=>{Gs(d,r)});return{dom:a,destroy:()=>{p&&(h==null||h.unregister(p))},update:_=>{r=_.changes.mapPos(r)}}}function ZP(t){let e=t.app;t.addCommand({id:"edit-gitignore",name:"Edit .gitignore",callback:async()=>{let r=t.gitManager.getRelativeVaultPath(".gitignore");await e.vault.adapter.exists(r)||await e.vault.adapter.write(r,"");let i=await e.vault.adapter.read(r),s=await new mh(e,i).openAndGetReslt();s!==void 0&&(await e.vault.adapter.write(r,s),await t.refresh())}}),t.addCommand({id:"open-git-view",name:"Open source control view",callback:async()=>{var n;let r=e.workspace.getLeavesOfType(Kt.type),i;r.length===0?(i=(n=e.workspace.getRightLeaf(!1))!=null?n:e.workspace.getLeaf(),await i.setViewState({type:Kt.type})):i=r.first(),await e.workspace.revealLeaf(i),e.workspace.trigger("obsidian-git:refresh")}}),t.addCommand({id:"open-history-view",name:"Open history view",callback:async()=>{var n;let r=e.workspace.getLeavesOfType(bi.type),i;r.length===0?(i=(n=e.workspace.getRightLeaf(!1))!=null?n:e.workspace.getLeaf(),await i.setViewState({type:bi.type})):i=r.first(),await e.workspace.revealLeaf(i),e.workspace.trigger("obsidian-git:refresh")}}),t.addCommand({id:"open-diff-view",name:"Open diff view",checkCallback:r=>{let i=e.workspace.getActiveFile();if(r)return i!==null;{let n=t.gitManager.getRelativeRepoPath(i.path,!0);t.tools.openDiff({aFile:n,aRef:""})}}}),t.addCommand({id:"view-file-on-github",name:"Open file on GitHub",editorCallback:(r,{file:i})=>{if(i)return N2(r,i,t.gitManager)}}),t.addCommand({id:"view-history-on-github",name:"Open file history on GitHub",editorCallback:(r,{file:i})=>{if(i)return B2(i,t.gitManager)}}),t.addCommand({id:"pull",name:"Pull",callback:()=>t.promiseQueue.addTask(()=>t.pullChangesFromRemote())}),t.addCommand({id:"fetch",name:"Fetch",callback:()=>t.promiseQueue.addTask(()=>t.fetch())}),t.addCommand({id:"switch-to-remote-branch",name:"Switch to remote branch",callback:()=>t.promiseQueue.addTask(()=>t.switchRemoteBranch())}),t.addCommand({id:"add-to-gitignore",name:"Add file to .gitignore",checkCallback:r=>{let i=e.workspace.getActiveFile();if(r)return i!==null;t.addFileToGitignore(i.path,i instanceof qi.TFolder).catch(n=>t.displayError(n))}}),t.addCommand({id:"push",name:"Commit-and-sync",callback:()=>t.promiseQueue.addTask(()=>t.commitAndSync({fromAutoBackup:!1}))}),t.addCommand({id:"backup-and-close",name:"Commit-and-sync and then close Obsidian",callback:()=>t.promiseQueue.addTask(async()=>{await t.commitAndSync({fromAutoBackup:!1}),window.close()})}),t.addCommand({id:"commit-push-specified-message",name:"Commit-and-sync with specific message",callback:()=>t.promiseQueue.addTask(()=>t.commitAndSync({fromAutoBackup:!1,requestCustomMessage:!0}))}),t.addCommand({id:"commit",name:"Commit all changes",callback:()=>t.promiseQueue.addTask(()=>t.commit({fromAuto:!1}))}),t.addCommand({id:"commit-specified-message",name:"Commit all changes with specific message",callback:()=>t.promiseQueue.addTask(()=>t.commit({fromAuto:!1,requestCustomMessage:!0}))}),t.addCommand({id:"commit-smart",name:"Commit",callback:()=>t.promiseQueue.addTask(async()=>{let i=(await t.updateCachedStatus()).staged.length>0;return t.commit({fromAuto:!1,requestCustomMessage:!1,onlyStaged:i})})}),t.addCommand({id:"commit-staged",name:"Commit staged",checkCallback:function(r){if(r)return!1;t.promiseQueue.addTask(async()=>t.commit({fromAuto:!1,requestCustomMessage:!1}))}}),qi.Platform.isDesktopApp&&t.addCommand({id:"commit-amend-staged-specified-message",name:"Amend staged",callback:()=>t.promiseQueue.addTask(()=>t.commit({fromAuto:!1,requestCustomMessage:!0,onlyStaged:!0,amend:!0}))}),t.addCommand({id:"commit-smart-specified-message",name:"Commit with specific message",callback:()=>t.promiseQueue.addTask(async()=>{let i=(await t.updateCachedStatus()).staged.length>0;return t.commit({fromAuto:!1,requestCustomMessage:!0,onlyStaged:i})})}),t.addCommand({id:"commit-staged-specified-message",name:"Commit staged with specific message",checkCallback:function(r){return r?!1:t.promiseQueue.addTask(()=>t.commit({fromAuto:!1,requestCustomMessage:!0,onlyStaged:!0}))}}),t.addCommand({id:"push2",name:"Push",callback:()=>t.promiseQueue.addTask(()=>t.push())}),t.addCommand({id:"stage-current-file",name:"Stage current file",checkCallback:r=>{let i=e.workspace.getActiveFile();if(r)return i!==null;t.promiseQueue.addTask(()=>t.stageFile(i))}}),t.addCommand({id:"unstage-current-file",name:"Unstage current file",checkCallback:r=>{let i=e.workspace.getActiveFile();if(r)return i!==null;t.promiseQueue.addTask(()=>t.unstageFile(i))}}),t.addCommand({id:"edit-remotes",name:"Edit remotes",callback:()=>t.editRemotes().catch(r=>t.displayError(r))}),t.addCommand({id:"remove-remote",name:"Remove remote",callback:()=>t.removeRemote().catch(r=>t.displayError(r))}),t.addCommand({id:"set-upstream-branch",name:"Set upstream branch",callback:()=>t.setUpstreamBranch().catch(r=>t.displayError(r))}),t.addCommand({id:"delete-repo",name:"CAUTION: Delete repository",callback:async()=>{await e.vault.adapter.exists(`${t.settings.basePath}/.git`)?await new et(t,{options:["NO","YES"],placeholder:"Do you really want to delete the repository (.git directory)? plugin action cannot be undone.",onlySelection:!0}).openAndGetResult()==="YES"&&(await e.vault.adapter.rmdir(`${t.settings.basePath}/.git`,!0),new qi.Notice("Successfully deleted repository. Reloading plugin..."),t.unloadPlugin(),await t.init({fromReload:!0})):new qi.Notice("No repository found")}}),t.addCommand({id:"init-repo",name:"Initialize a new repo",callback:()=>t.createNewRepo().catch(r=>t.displayError(r))}),t.addCommand({id:"clone-repo",name:"Clone an existing remote repo",callback:()=>t.cloneNewRepo().catch(r=>t.displayError(r))}),t.addCommand({id:"list-changed-files",name:"List changed files",callback:async()=>{if(await t.isAllInitialized())try{let r=await t.updateCachedStatus();if(r.changed.length+r.staged.length>500){t.displayError("Too many changes to display");return}new ph(t,r.all).open()}catch(r){t.displayError(r)}}}),t.addCommand({id:"switch-branch",name:"Switch branch",callback:()=>{t.switchBranch().catch(r=>t.displayError(r))}}),t.addCommand({id:"create-branch",name:"Create new branch",callback:()=>{t.createBranch().catch(r=>t.displayError(r))}}),t.addCommand({id:"delete-branch",name:"Delete branch",callback:()=>{t.deleteBranch().catch(r=>t.displayError(r))}}),t.addCommand({id:"discard-all",name:"CAUTION: Discard all changes",callback:async()=>{let r=await t.discardAll();switch(r){case"discard":new qi.Notice("Discarded all changes in tracked files.");break;case"delete":new qi.Notice("Discarded all files.");break;case!1:break;default:Td(r)}}}),t.addCommand({id:"pause-automatic-routines",name:"Pause/Resume automatic routines",callback:()=>{let r=!t.localStorage.getPausedAutomatics();t.localStorage.setPausedAutomatics(r),r?(t.automaticsManager.unload(),new qi.Notice("Paused automatic routines.")):(t.automaticsManager.reload("commit","push","pull"),new qi.Notice("Resumed automatic routines."))}}),t.addCommand({id:"raw-command",name:"Raw command",checkCallback:r=>{let i=t.gitManager;if(r)return i instanceof Se;t.tools.runRawCommand().catch(n=>t.displayError(n))}}),t.addCommand({id:"toggle-line-author-info",name:"Toggle line author information",callback:()=>{var r;return(r=t.settingsTab)==null?void 0:r.configureLineAuthorShowStatus(!t.settings.lineAuthor.show)}}),t.addCommand({id:"reset-hunk",name:"Reset hunk",editorCheckCallback(r,i,n){if(r)return t.settings.hunks.hunkCommands&&t.hunkActions.editor!==void 0;t.hunkActions.resetHunk()}}),t.addCommand({id:"stage-hunk",name:"Stage hunk",editorCheckCallback:(r,i,n)=>{if(r)return t.settings.hunks.hunkCommands&&t.hunkActions.editor!==void 0;t.promiseQueue.addTask(()=>t.hunkActions.stageHunk())}}),t.addCommand({id:"preview-hunk",name:"Preview hunk",editorCheckCallback:(r,i,n)=>{if(r)return t.settings.hunks.hunkCommands&&t.hunkActions.editor!==void 0;let s=t.hunkActions.editor.editor;Gs(s)}}),t.addCommand({id:"next-hunk",name:"Go to next hunk",editorCheckCallback:(r,i,n)=>{if(r)return t.settings.hunks.hunkCommands&&t.hunkActions.editor!==void 0;t.hunkActions.goToHunk("next")}}),t.addCommand({id:"prev-hunk",name:"Go to previous hunk",editorCheckCallback:(r,i,n)=>{if(r)return t.settings.hunks.hunkCommands&&t.hunkActions.editor!==void 0;t.hunkActions.goToHunk("prev")}})}m();var Fh=class{constructor(e){this.plugin=e;this.prefix=this.plugin.manifest.id+":",this.app=e.app}migrate(){let e=["password","hostname","conflict","lastAutoPull","lastAutoBackup","lastAutoPush","gitPath","pluginDisabled"];for(let r of e){let i=localStorage.getItem(this.prefix+r);this.app.loadLocalStorage(this.prefix+r)==null&&i!=null&&i!=null&&(this.app.saveLocalStorage(this.prefix+r,i),localStorage.removeItem(this.prefix+r))}}getPassword(){return this.app.loadLocalStorage(this.prefix+"password")}setPassword(e){return this.app.saveLocalStorage(this.prefix+"password",e)}getUsername(){return this.app.loadLocalStorage(this.prefix+"username")}setUsername(e){return this.app.saveLocalStorage(this.prefix+"username",e)}getHostname(){return this.app.loadLocalStorage(this.prefix+"hostname")}setHostname(e){return this.app.saveLocalStorage(this.prefix+"hostname",e)}getConflict(){return this.app.loadLocalStorage(this.prefix+"conflict")=="true"}setConflict(e){return this.app.saveLocalStorage(this.prefix+"conflict",`${e}`)}getLastAutoPull(){return this.app.loadLocalStorage(this.prefix+"lastAutoPull")}setLastAutoPull(e){return this.app.saveLocalStorage(this.prefix+"lastAutoPull",e)}getLastAutoBackup(){return this.app.loadLocalStorage(this.prefix+"lastAutoBackup")}setLastAutoBackup(e){return this.app.saveLocalStorage(this.prefix+"lastAutoBackup",e)}getLastAutoPush(){return this.app.loadLocalStorage(this.prefix+"lastAutoPush")}setLastAutoPush(e){return this.app.saveLocalStorage(this.prefix+"lastAutoPush",e)}getGitPath(){return this.app.loadLocalStorage(this.prefix+"gitPath")}setGitPath(e){return this.app.saveLocalStorage(this.prefix+"gitPath",e)}getPATHPaths(){var e,r;return(r=(e=this.app.loadLocalStorage(this.prefix+"PATHPaths"))==null?void 0:e.split(":"))!=null?r:[]}setPATHPaths(e){return this.app.saveLocalStorage(this.prefix+"PATHPaths",e.join(":"))}getEnvVars(){var e;return JSON.parse((e=this.app.loadLocalStorage(this.prefix+"envVars"))!=null?e:"[]")}setEnvVars(e){return this.app.saveLocalStorage(this.prefix+"envVars",JSON.stringify(e))}getPluginDisabled(){return this.app.loadLocalStorage(this.prefix+"pluginDisabled")=="true"}setPluginDisabled(e){return this.app.saveLocalStorage(this.prefix+"pluginDisabled",`${e}`)}getPausedAutomatics(){return this.app.loadLocalStorage(this.prefix+"pausedAutomatics")=="true"}setPausedAutomatics(e){return this.app.saveLocalStorage(this.prefix+"pausedAutomatics",`${e}`)}getGutterSpacingFallbackLength(){var e;return(e=this.app.loadLocalStorage(this.prefix+"gutterSpacingFallbackLength"))!=null?e:5}setGutterSpacingFallbackLength(e){return this.app.saveLocalStorage(this.prefix+"gutterSpacingFallbackLength",e)}};m();var Hl=require("obsidian");var Ou=class{constructor(e){this.plugin=e}async hasTooBigFiles(e){let r=await this.plugin.gitManager.branchInfo(),i=r.tracking?Qn(r.tracking)[0]:null;if(!i)return!1;let n=await this.plugin.gitManager.getRemoteUrl(i);if(n!=null&&n.includes("github.com")){let s=[],a=this.plugin.gitManager;for(let o of e){let l=this.plugin.app.vault.getAbstractFileByPath(o.vaultPath),c=!1;if(l instanceof Hl.TFile)l.stat.size>=1e8&&(c=!0);else{let u=await this.plugin.app.vault.adapter.stat(o.vaultPath);u&&u.size>=1e8&&(c=!0)}if(c){let u=!1;a instanceof Se&&(u=await a.isFileTrackedByLFS(o.path)),u||s.push(o)}}if(s.length>0)return this.plugin.displayError(`Aborted commit, because the following files are too big: +- ${s.map(o=>o.vaultPath).join(` +- `)} +Please remove them or add to .gitignore.`),!0}return!1}async writeAndOpenFile(e){e!==void 0&&await this.plugin.app.vault.adapter.write(il,e);let r=!1;this.plugin.app.workspace.iterateAllLeaves(i=>{i.getDisplayText()!=""&&il.startsWith(i.getDisplayText())&&(r=!0)}),r||await this.plugin.app.workspace.openLinkText(il,"/",!0)}openDiff({aFile:e,bFile:r,aRef:i,bRef:n,event:s}){var l,c;let a=this.plugin.settings.diffStyle;Hl.Platform.isMobileApp&&(a="git_unified");let o={aFile:e,bFile:r!=null?r:e,aRef:i,bRef:n};a=="split"?(l=ji(this.plugin.app,s))==null||l.setViewState({type:Ms.type,active:!0,state:o}):a=="git_unified"&&((c=ji(this.plugin.app,s))==null||c.setViewState({type:Ds.type,active:!0,state:o}))}async runRawCommand(){let e=this.plugin.gitManager;if(!(e instanceof Se))return;let i=await new et(this.plugin,{placeholder:"push origin master",allowEmpty:!1}).openAndGetResult();i!==void 0&&this.plugin.promiseQueue.addTask(async()=>{let n=new Hl.Notice(`Running '${i}'...`,999999);try{let s=await e.rawCommand(i);s?(n.setMessage(s),window.setTimeout(()=>n.hide(),5e3)):n.hide()}catch(s){throw n.hide(),s}})}};m();var Ih=require("obsidian");var La=class extends Ih.ItemView{constructor(r,i){super(r);this.plugin=i;this.gettingDiff=!1;this.parser=new DOMParser,this.navigation=!0,this.contentEl.addClass("git-diff"),this.gitRefreshRef=this.app.workspace.on("obsidian-git:status-changed",()=>{this.refresh().catch(console.error)})}getViewType(){return Ds.type}getDisplayText(){var r;if(((r=this.state)==null?void 0:r.bFile)!=null){let i=this.state.bFile.split("/").last();return i!=null&&i.endsWith(".md")&&(i=i.slice(0,-3)),`Diff: ${i}`}return Ds.name}getIcon(){return Ds.icon}async setState(r,i){this.state=r,Ih.Platform.isMobile&&(this.leaf.view.titleEl.textContent=this.getDisplayText()),await this.refresh()}getState(){return this.state}onClose(){return this.app.workspace.offref(this.gitRefreshRef),this.app.workspace.offref(this.gitViewRefreshRef),super.onClose()}async onOpen(){return await this.refresh(),super.onOpen()}async refresh(){var r;if((r=this.state)!=null&&r.bFile&&!this.gettingDiff&&this.plugin.gitManager){this.gettingDiff=!0;try{let i=await this.plugin.gitManager.getDiffString(this.state.bFile,this.state.aRef=="HEAD",this.state.bRef);this.contentEl.empty();let n=this.plugin.gitManager.getRelativeVaultPath(this.state.bFile);if(!i){if(this.plugin.gitManager instanceof Se&&await this.plugin.gitManager.isTracked(this.state.bFile))i=[`--- ${this.state.aFile}`,`+++ ${this.state.bFile}`,""].join(` +`);else if(await this.app.vault.adapter.exists(n)){let s=await this.app.vault.adapter.read(n);i=[...`--- /dev/null ++++ ${this.state.bFile} +@@ -0,0 +1,${s.split(` +`).length} @@`.split(` +`),...s.split(` +`).map(o=>`+${o}`)].join(` +`)}}if(i){let s=this.parser.parseFromString(Ph(i),"text/html").querySelector(".d2h-file-diff");this.contentEl.append(s)}else{let s=this.contentEl.createDiv({cls:"obsidian-git-center"});s.createSpan({text:"\u26A0\uFE0F",attr:{style:"font-size: 2em"}}),s.createEl("br"),s.createSpan({text:"File not found: "+this.state.bFile})}}finally{this.gettingDiff=!1}}}};m();var rs=require("obsidian");var Gl=require("@codemirror/commands");var Mh=require("@codemirror/search"),Ul=require("@codemirror/state"),Ci=require("@codemirror/view");var Na=class extends rs.ItemView{constructor(r,i){super(r);this.plugin=i;this.refreshing=!1;this.ignoreNextModification=!1;this.navigation=!0,this.registerEvent(this.app.workspace.on("obsidian-git:status-changed",()=>{this.mergeView?this.updateRefEditors().catch(console.error):this.createMergeView().catch(console.error)})),this.intervalRef=window.setInterval(()=>{this.mergeView&&this.updateRefEditors().catch(console.error)},30*1e3),this.registerEvent(this.app.vault.on("modify",n=>{this.state.bRef==null&&n.path===this.state.bFile&&(this.ignoreNextModification?this.ignoreNextModification=!1:this.updateModifiableEditor().catch(console.error))})),this.registerEvent(this.app.vault.on("delete",n=>{this.state.bRef==null&&n.path===this.state.bFile&&this.createMergeView().catch(console.error)})),this.registerEvent(this.app.vault.on("create",n=>{this.state.bRef==null&&n.path===this.state.bFile&&this.createMergeView().catch(console.error)})),this.registerEvent(this.app.vault.on("rename",(n,s)=>{this.state.bRef==null&&(n.path===this.state.bFile||s===this.state.bFile)&&this.createMergeView().catch(console.error)})),this.fileSaveDebouncer=(0,rs.debounce)(n=>{let s=this.state.bFile;s&&(this.ignoreNextModification=!0,this.plugin.app.vault.adapter.write(this.plugin.gitManager.getRelativeVaultPath(s),n).catch(a=>this.plugin.displayError(a)))},1e3,!1)}getViewType(){return Ms.type}getDisplayText(){var r;if(((r=this.state)==null?void 0:r.bFile)!=null){let i=this.state.bFile.split("/").last();i!=null&&i.endsWith(".md")&&(i=i.slice(0,-3));let n;return this.state.bRef==null?n=" (Working Tree)":this.state.bRef==""?n=" (Index)":n="("+this.state.bRef.substring(0,7)+")",`Diff: ${i} ${n}`}return Ms.name}getIcon(){return Ms.icon}async setState(r,i){this.state=r,rs.Platform.isMobile&&(this.leaf.view.titleEl.textContent=this.getDisplayText()),await super.setState(r,i),await this.createMergeView()}getState(){return this.state}onClose(){return window.clearInterval(this.intervalRef),super.onClose()}async onOpen(){return await this.createMergeView(),super.onOpen()}async gitShow(r,i){try{return await this.plugin.gitManager.show(r,i,!1)}catch(n){if(n instanceof Nr&&(n.message.includes("does not exist")||n.message.includes("unknown revision or path")||n.message.includes("exists on disk, but not in")||n.message.includes("fatal: bad object")))return n.message.includes("fatal: bad object")&&this.plugin.displayError(n.message),"";throw n}}async bShouldBeEditable(){if(this.state.bRef!=null)return!1;let r=this.plugin.gitManager.getRelativeVaultPath(this.state.bFile);return await this.app.vault.adapter.exists(r)}async updateModifiableEditor(){if(!this.mergeView||this.refreshing)return;let r=this.mergeView.b;this.refreshing=!0;let i=await this.app.vault.adapter.read(this.state.bFile);if(i!=r.state.doc.toString()){let n=r.state.update({changes:{from:0,to:r.state.doc.length,insert:i},annotations:[Ul.Transaction.remote.of(!0)]});r.dispatch(n)}this.refreshing=!1}async updateRefEditors(){if(!this.mergeView||this.refreshing)return;let r=this.mergeView.a,i=this.mergeView.b;this.refreshing=!0;let n=await this.gitShow(this.state.aRef,this.state.aFile),s;if(this.state.bRef!=null&&(s=await this.gitShow(this.state.bRef,this.state.bFile)),n!=r.state.doc.toString()){let a=r.state.update({changes:{from:0,to:r.state.doc.length,insert:n}});r.dispatch(a)}if(s!=null&&s!=i.state.doc.toString()){let a=i.state.update({changes:{from:0,to:i.state.doc.length,insert:s}});i.dispatch(a)}this.refreshing=!1}renderButtons(){let r=activeDocument.createDiv(),i=r.createDiv();if(i.addClass("clickable-icon"),i.setAttr("aria-label",this.state.bRef==null?"Stage hunk":"Unstage hunk"),(0,rs.setIcon)(i,this.state.bRef==null?"plus":"minus"),i.onmousedown=async n=>{var h;let s=this.mergeView.b,a=this.mergeView.a,o=Ew(s.state),l=(h=r.parentElement)==null?void 0:h.indexOf(r),c=o.chunks[l],u=Aw(c,a.state.doc,s.state.doc),f=kw(this.mergeView.a.state.doc.toString(),this.mergeView.b.state.doc.toString(),[u])[0],d=Vt.createPatch(this.state.bFile,[f],"100644",this.state.bRef!=null).join(` +`)+` +`;await this.plugin.gitManager.applyPatch(d),this.plugin.app.workspace.trigger("obsidian-git:refresh")},this.state.bRef==null){let n=r.createDiv();n.addClass("clickable-icon"),n.setAttr("aria-label","Reset hunk"),(0,rs.setIcon)(n,"undo"),n.onmousedown=s=>{var f;let a=this.mergeView.a,o=this.mergeView.b,l=Ew(o.state),c=(f=r.parentElement)==null?void 0:f.indexOf(r),u=l.chunks[c];if(u){let d=u.fromA,h=u.toA,p=u.fromB,g=u.toB,v=a.state.sliceDoc(d,Math.max(d,h-1));d!=h&&g<=o.state.doc.length&&(v+=a.state.lineBreak),o.dispatch({changes:{from:p,to:Math.min(o.state.doc.length,g),insert:v},userEvent:"revert"})}}}return r.onmousedown=n=>{n.preventDefault(),n.stopPropagation()},r}async createMergeView(){var r,i,n;if((r=this.state)!=null&&r.aFile&&((i=this.state)!=null&&i.bFile)&&!this.refreshing&&this.plugin.gitManager){this.refreshing=!0,(n=this.mergeView)==null||n.destroy();let s=this.containerEl.children[1];s.empty(),this.contentEl.addClass("git-split-diff-view","git-diff"),this.bIsEditable=await this.bShouldBeEditable();let a=await this.gitShow(this.state.aRef,this.state.aFile),o;if(this.state.bRef!=null)o=await this.gitShow(this.state.bRef,this.state.bFile);else{let g=this.plugin.gitManager.getRelativeVaultPath(this.state.bFile);await this.app.vault.adapter.exists(g)?o=await this.app.vault.adapter.read(g):o=""}let l=[(0,Ci.lineNumbers)(),(0,Mh.highlightSelectionMatches)(),(0,Ci.drawSelection)(),Ci.keymap.of([...Gl.standardKeymap,Gl.indentWithTab]),(0,Gl.history)(),(0,Mh.search)(),Ci.EditorView.lineWrapping],c=this,u=Ci.ViewPlugin.define(g=>({update(v){if(v.docChanged&&!v.transactions.some(_=>_.annotation(Ul.Transaction.remote))){let _=g.state.doc.toString();c.fileSaveDebouncer(_)}}})),f={doc:a,extensions:[...l,Ci.EditorView.editable.of(!1),Ul.EditorState.readOnly.of(!0)]},d=[...l];this.bIsEditable?d.push(u):d.push(Ci.EditorView.editable.of(!1),Ul.EditorState.readOnly.of(!0));let h={doc:o,extensions:d};s.addClasses(["cm-s-obsidian","mod-cm6","markdown-source-view","cm-content"]);let p=this.plugin.gitManager instanceof Se&&(this.state.bRef===void 0||this.state.bRef==="");this.mergeView=new Eh({b:h,a:f,collapseUnchanged:{minSize:6,margin:4},renderRevertControl:p?()=>this.renderButtons():void 0,revertControls:p?"a-to-b":void 0,diffConfig:{scanLimit:this.bIsEditable?1e3:1e4},parent:s}),this.refreshing=!1}}};m();var U$=require("obsidian");m();m();m();var KP="5";var QP,JP,eR;typeof window!="undefined"&&((eR=(JP=(QP=window.__svelte)!=null?QP:window.__svelte={}).v)!=null?eR:JP.v=new Set).add(KP);m();m();m();var jl="[",Ba="[!",Bw="[?",Ha="]",is={};var Ze=Symbol(),Ti=Symbol("filename"),tR=Symbol("hmr"),Dh="http://www.w3.org/1999/xhtml";m();m();m();m();var Oh=!0;m();var I=!1;m();var ns=Array.isArray,rR=Array.prototype.indexOf,Yi=Array.prototype.includes,Vl=Array.from,Hw=Object.keys,or=Object.defineProperty,Ur=Object.getOwnPropertyDescriptor,Uw=Object.getOwnPropertyDescriptors,Gw=Object.prototype,iR=Array.prototype,zl=Object.getPrototypeOf,jw=Object.isExtensible;function Vw(t){return typeof t=="function"}var lr=()=>{};function Lh(t){for(var e=0;e<t.length;e++)t[e]()}function Nh(){var t,e,r=new Promise((i,n)=>{t=i,e=n});return{promise:r,resolve:t,reject:e}}m();m();var Jt=Symbol("$state"),Lu=Symbol("legacy props"),sR=Symbol(""),Bh=Symbol("proxy path"),zw=Symbol("hmr anchor"),ri=new class extends Error{constructor(){super(...arguments);Ve(this,"name","StaleReactionError");Ve(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}},nR,Ww=!!((nR=globalThis.document)!=null&&nR.contentType)&&globalThis.document.contentType.includes("xml");var Wl=3,Pi=8;m();m();function aR(t){if(I){let e=new Error(`invariant_violation +An invariant violation occurred, meaning Svelte's internal assumptions were flawed. This is a bug in Svelte, not your app \u2014 please open an issue at https://github.com/sveltejs/svelte, citing the following message: "${t}" +https://svelte.dev/e/invariant_violation`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/invariant_violation")}function Hh(t){if(I){let e=new Error(`lifecycle_outside_component +\`${t}(...)\` can only be used during component initialisation +https://svelte.dev/e/lifecycle_outside_component`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/lifecycle_outside_component")}function lR(){if(I){let t=new Error("async_derived_orphan\nCannot create a `$derived(...)` with an `await` expression outside of an effect tree\nhttps://svelte.dev/e/async_derived_orphan");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/async_derived_orphan")}function qw(){if(I){let t=new Error("bind_invalid_checkbox_value\nUsing `bind:value` together with a checkbox input is not allowed. Use `bind:checked` instead\nhttps://svelte.dev/e/bind_invalid_checkbox_value");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/bind_invalid_checkbox_value")}function cR(){if(I){let t=new Error(`derived_references_self +A derived value cannot reference itself recursively +https://svelte.dev/e/derived_references_self`);throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/derived_references_self")}function Yw(t,e,r){if(I){let i=new Error(`each_key_duplicate +${r?`Keyed each block has duplicate key \`${r}\` at indexes ${t} and ${e}`:`Keyed each block has duplicate key at indexes ${t} and ${e}`} +https://svelte.dev/e/each_key_duplicate`);throw i.name="Svelte error",i}else throw new Error("https://svelte.dev/e/each_key_duplicate")}function uR(t,e,r){if(I){let i=new Error(`each_key_volatile +Keyed each block has key that is not idempotent \u2014 the key for item at index ${t} was \`${e}\` but is now \`${r}\`. Keys must be the same each time for a given item +https://svelte.dev/e/each_key_volatile`);throw i.name="Svelte error",i}else throw new Error("https://svelte.dev/e/each_key_volatile")}function fR(t){if(I){let e=new Error(`effect_in_teardown +\`${t}\` cannot be used inside an effect cleanup function +https://svelte.dev/e/effect_in_teardown`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/effect_in_teardown")}function dR(){if(I){let t=new Error("effect_in_unowned_derived\nEffect cannot be created inside a `$derived` value that was not itself created inside an effect\nhttps://svelte.dev/e/effect_in_unowned_derived");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function hR(t){if(I){let e=new Error(`effect_orphan +\`${t}\` can only be used inside an effect (e.g. during component initialisation) +https://svelte.dev/e/effect_orphan`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/effect_orphan")}function pR(){if(I){let t=new Error(`effect_update_depth_exceeded +Maximum update depth exceeded. This typically indicates that an effect reads and writes the same piece of state +https://svelte.dev/e/effect_update_depth_exceeded`);throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function mR(){if(I){let t=new Error(`hydration_failed +Failed to hydrate the application +https://svelte.dev/e/hydration_failed`);throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/hydration_failed")}function gR(t){if(I){let e=new Error(`props_invalid_value +Cannot do \`bind:${t}={undefined}\` when \`${t}\` has a fallback value +https://svelte.dev/e/props_invalid_value`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/props_invalid_value")}function vR(t){if(I){let e=new Error(`rune_outside_svelte +The \`${t}\` rune is only available inside \`.svelte\` and \`.svelte.js/ts\` files +https://svelte.dev/e/rune_outside_svelte`);throw e.name="Svelte error",e}else throw new Error("https://svelte.dev/e/rune_outside_svelte")}function wR(){if(I){let t=new Error("state_descriptors_fixed\nProperty descriptors defined on `$state` objects must contain `value` and always be `enumerable`, `configurable` and `writable`.\nhttps://svelte.dev/e/state_descriptors_fixed");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function _R(){if(I){let t=new Error("state_prototype_fixed\nCannot set prototype of `$state` object\nhttps://svelte.dev/e/state_prototype_fixed");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/state_prototype_fixed")}function bR(){if(I){let t=new Error("state_unsafe_mutation\nUpdating state inside `$derived(...)`, `$inspect(...)` or a template expression is forbidden. If the value should not be reactive, declare it without `$state`\nhttps://svelte.dev/e/state_unsafe_mutation");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function yR(){if(I){let t=new Error("svelte_boundary_reset_onerror\nA `<svelte:boundary>` `reset` function cannot be called while an error is still being handled\nhttps://svelte.dev/e/svelte_boundary_reset_onerror");throw t.name="Svelte error",t}else throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}m();m();m();var Sn="font-weight: bold",kn="font-weight: normal";function xR(t){I?console.warn(`%c[svelte] await_reactivity_loss +%cDetected reactivity loss when reading \`${t}\`. This happens when state is read in an async function after an earlier \`await\` +https://svelte.dev/e/await_reactivity_loss`,Sn,kn):console.warn("https://svelte.dev/e/await_reactivity_loss")}function ER(t,e){I?console.warn(`%c[svelte] await_waterfall +%cAn async derived, \`${t}\` (${e}) was not read immediately after it resolved. This often indicates an unnecessary waterfall, which can slow down your app +https://svelte.dev/e/await_waterfall`,Sn,kn):console.warn("https://svelte.dev/e/await_waterfall")}function SR(){I?console.warn(`%c[svelte] derived_inert +%cReading a derived belonging to a now-destroyed effect may result in stale values +https://svelte.dev/e/derived_inert`,Sn,kn):console.warn("https://svelte.dev/e/derived_inert")}function kR(t,e,r){I?console.warn(`%c[svelte] hydration_attribute_changed +%cThe \`${t}\` attribute on \`${e}\` changed its value between server and client renders. The client value, \`${r}\`, will be ignored in favour of the server value +https://svelte.dev/e/hydration_attribute_changed`,Sn,kn):console.warn("https://svelte.dev/e/hydration_attribute_changed")}function Ua(t){I?console.warn(`%c[svelte] hydration_mismatch +%c${t?`Hydration failed because the initial UI does not match what was rendered on the server. The error occurred near ${t}`:"Hydration failed because the initial UI does not match what was rendered on the server"} +https://svelte.dev/e/hydration_mismatch`,Sn,kn):console.warn("https://svelte.dev/e/hydration_mismatch")}function AR(){I?console.warn(`%c[svelte] lifecycle_double_unmount +%cTried to unmount a component that was not mounted +https://svelte.dev/e/lifecycle_double_unmount`,Sn,kn):console.warn("https://svelte.dev/e/lifecycle_double_unmount")}function Uh(t){I?console.warn(`%c[svelte] state_proxy_equality_mismatch +%cReactive \`$state(...)\` proxies and the values they proxy have different identities. Because of this, comparisons with \`${t}\` will produce unexpected results +https://svelte.dev/e/state_proxy_equality_mismatch`,Sn,kn):console.warn("https://svelte.dev/e/state_proxy_equality_mismatch")}function CR(){I?console.warn(`%c[svelte] state_proxy_unmount +%cTried to unmount a state proxy, rather than a component +https://svelte.dev/e/state_proxy_unmount`,Sn,kn):console.warn("https://svelte.dev/e/state_proxy_unmount")}function TR(){I?console.warn("%c[svelte] svelte_boundary_reset_noop\n%cA `<svelte:boundary>` `reset` function only resets the boundary the first time it is called\nhttps://svelte.dev/e/svelte_boundary_reset_noop",Sn,kn):console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function PR(t){I?console.warn(`%c[svelte] transition_slide_display +%cThe \`slide\` transition does not work correctly for elements with \`display: ${t}\` +https://svelte.dev/e/transition_slide_display`,Sn,kn):console.warn("https://svelte.dev/e/transition_slide_display")}var ie=!1;function Ft(t){ie=t}var me;function Ue(t){if(t===null)throw Ua(),is;return me=t}function cr(){return Ue(tr(me))}function G(t){if(ie){if(tr(me)!==null)throw Ua(),is;me=t}}function Ga(t=1){if(ie){for(var e=t,r=me;e--;)r=tr(r);me=r}}function An(t=!0){for(var e=0,r=me;;){if(r.nodeType===Pi){var i=r.data;if(i===Ha){if(e===0)return r;e-=1}else(i===jl||i===Ba||i[0]==="["&&!isNaN(Number(i.slice(1))))&&(e+=1)}var n=tr(r);t&&r.remove(),r=n}}function Nu(t){if(!t||t.nodeType!==Pi)throw Ua(),is;return t.data}m();m();m();m();function Gh(t){return t===this.v}function Xw(t,e){return t!=t?e==e:t!==e||t!==null&&typeof t=="object"||typeof t=="function"}function jh(t){return!Xw(t,this.v)}m();var kt=!1,ss=!1,Xi=!1;m();m();m();var Bu=null;function ur(t,e){return t.label=e,zh(t.v,e),t}function zh(t,e){var r;return(r=t==null?void 0:t[Bh])==null||r.call(t,e),t}m();function Ki(t){let e=new Error,r=Y5();return r.length===0?null:(r.unshift(` +`),or(e,"stack",{value:r.join(` +`)}),or(e,"name",{value:t}),e)}function Y5(){let t=Error.stackTraceLimit;Error.stackTraceLimit=1/0;let e=new Error().stack;if(Error.stackTraceLimit=t,!e)return[];let r=e.split(` +`),i=[];for(let n=0;n<r.length;n++){let s=r[n],a=s.replaceAll("\\","/");if(s.trim()!=="Error"){if(s.includes("validate_each_keys"))return[];a.includes("svelte/src/internal")||a.includes("node_modules/.vite")||i.push(s)}}return i}function $R(t,e){if(!I)throw new Error("invariant(...) was not guarded by if (DEV)");t||aR(e)}m();var ye=null;function as(t){ye=t}var Cn=null;function ql(t){Cn=t}var Qi=null;function Wh(t){Qi=t}function lt(t,e=!1,r){ye={p:ye,i:!1,c:null,e:null,s:t,x:null,r:Z,l:ss&&!e?{s:null,u:null,$:[]}:null},I&&(ye.function=r,Qi=r)}function ct(t){var n;var e=ye,r=e.e;if(r!==null){e.e=null;for(var i of r)Zw(i)}return t!==void 0&&(e.x=t),e.i=!0,ye=e.p,I&&(Qi=(n=ye==null?void 0:ye.function)!=null?n:null),t!=null?t:{}}function Tn(){return!ss||ye!==null&&ye.l===null}m();m();var ja=[];function FR(){var t=ja;ja=[],Lh(t)}function It(t){if(ja.length===0&&!Va){var e=ja;queueMicrotask(()=>{e===ja&&FR()})}ja.push(t)}function IR(){for(;ja.length>0;)FR()}m();var Kw=new WeakMap;function qh(t){var e=Z;if(e===null)return oe.f|=8388608,t;if(I&&t instanceof Error&&!Kw.has(t)&&Kw.set(t,X5(t,e)),!(e.f&32768)&&!(e.f&4))throw I&&!e.parent&&t instanceof Error&&MR(t),t;Ri(t,e)}function Ri(t,e){for(;e!==null;){if(e.f&128){if(!(e.f&32768))throw t;try{e.b.error(t);return}catch(r){t=r}}e=e.parent}throw I&&t instanceof Error&&MR(t),t}function X5(t,e){var a,o,l;let r=Ur(t,"message");if(!(r&&!r.configurable)){for(var i=Uu?" ":" ",n=` +${i}in ${((a=e.fn)==null?void 0:a.name)||"<unknown>"}`,s=e.ctx;s!==null;)n+=` +${i}in ${(o=s.function)==null?void 0:o[Ti].split("/").pop()}`,s=s.p;return{message:t.message+` +${n} +`,stack:(l=t.stack)==null?void 0:l.split(` +`).filter(c=>!c.includes("svelte/src/internal")).join(` +`)}}}function MR(t){let e=Kw.get(t);e&&(or(t,"message",{value:e.message}),or(t,"stack",{value:e.stack}))}m();m();var Z5=-7169;function Ge(t,e){t.f=t.f&Z5|e}function Yl(t){t.f&512||t.deps===null?Ge(t,1024):Ge(t,4096)}function DR(t){if(t!==null)for(let e of t)!(e.f&2)||!(e.f&65536)||(e.f^=65536,DR(e.deps))}function Yh(t,e,r){t.f&2048?e.add(t):t.f&4096&&r.add(t),DR(t.deps),Ge(t,1024)}m();m();m();var OR=!1,Xh=!1,UZ=Symbol();function Qw(t){var e=Xh;try{return Xh=!1,[t(),Xh]}finally{Xh=e}}m();var Pn=new Set,le=null,ju=null,Ct=null,e0=null,Va=!1,Jw=!1,qa=null,Gu=null,LR=0,J5=I?new Set:null,e4=1,Zl,Kl,Ya,ls,Rn,Vu,Gr,zu,Vs,cs,$n,Ql,Jl,zs,yt,Zh,BR,Kh,t0,Qh,HR,Jh=class Jh{constructor(){pe(this,yt);Ve(this,"id",e4++);Ve(this,"current",new Map);Ve(this,"previous",new Map);pe(this,Zl,new Set);pe(this,Kl,new Set);pe(this,Ya,new Set);pe(this,ls,new Map);pe(this,Rn,new Map);pe(this,Vu,null);pe(this,Gr,[]);pe(this,zu,[]);pe(this,Vs,new Set);pe(this,cs,new Set);pe(this,$n,new Map);pe(this,Ql,new Set);Ve(this,"is_fork",!1);pe(this,Jl,!1);pe(this,zs,new Set)}skip_effect(e){R(this,$n).has(e)||R(this,$n).set(e,{d:[],m:[]}),R(this,Ql).delete(e)}unskip_effect(e,r=i=>this.schedule(i)){var i=R(this,$n).get(e);if(i){R(this,$n).delete(e);for(var n of i.d)Ge(n,2048),r(n);for(n of i.m)Ge(n,4096),r(n)}R(this,Ql).add(e)}capture(e,r,i=!1){e.v!==Ze&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[r,i]),Ct==null||Ct.set(e,r)),this.is_fork||(e.v=r)}activate(){le=this}deactivate(){le=null,Ct=null}flush(){var e=I?new Set:null;try{Jw=!0,le=this,Me(this,yt,Kh).call(this)}finally{if(LR=0,e0=null,qa=null,Gu=null,Jw=!1,le=null,Ct=null,us.clear(),I)for(let r of e)r.updated=null}}discard(){for(let e of R(this,Kl))e(this);R(this,Kl).clear(),R(this,Ya).clear(),Pn.delete(this)}register_created_effect(e){R(this,zu).push(e)}increment(e,r){var n,s;let i=(n=R(this,ls).get(r))!=null?n:0;if(R(this,ls).set(r,i+1),e){let a=(s=R(this,Rn).get(r))!=null?s:0;R(this,Rn).set(r,a+1)}}decrement(e,r,i){var s,a;let n=(s=R(this,ls).get(r))!=null?s:0;if(n===1?R(this,ls).delete(r):R(this,ls).set(r,n-1),e){let o=(a=R(this,Rn).get(r))!=null?a:0;o===1?R(this,Rn).delete(r):R(this,Rn).set(r,o-1)}R(this,Jl)||i||(we(this,Jl,!0),It(()=>{we(this,Jl,!1),this.flush()}))}transfer_effects(e,r){for(let i of e)R(this,Vs).add(i);for(let i of r)R(this,cs).add(i);e.clear(),r.clear()}oncommit(e){R(this,Zl).add(e)}ondiscard(e){R(this,Kl).add(e)}on_fork_commit(e){R(this,Ya).add(e)}run_fork_commit_callbacks(){for(let e of R(this,Ya))e(this);R(this,Ya).clear()}settled(){var e;return((e=R(this,Vu))!=null?e:we(this,Vu,Nh())).promise}static ensure(){if(le===null){let e=le=new Jh;Jw||(Pn.add(le),Va||It(()=>{le===e&&e.flush()}))}return le}apply(){if(!kt||!this.is_fork&&Pn.size===1){Ct=null;return}Ct=new Map;for(let[i,[n]]of this.current)Ct.set(i,n);for(let i of Pn)if(!(i===this||i.is_fork)){var e=!1,r=!1;if(i.id<this.id)for(let[n,[,s]]of i.current)s||(e||(e=this.current.has(n)),r||(r=!this.current.has(n)));if(e&&r)R(this,zs).add(i);else for(let[n,s]of i.previous)Ct.has(n)||Ct.set(n,s)}}schedule(e){var n;if(e0=e,(n=e.b)!=null&&n.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var r=e;r.parent!==null;){r=r.parent;var i=r.f;if(qa!==null&&r===Z&&(kt||(oe===null||!(oe.f&2))&&!OR))return;if(i&96){if(!(i&1024))return;r.f^=1024}}R(this,Gr).push(r)}};Zl=new WeakMap,Kl=new WeakMap,Ya=new WeakMap,ls=new WeakMap,Rn=new WeakMap,Vu=new WeakMap,Gr=new WeakMap,zu=new WeakMap,Vs=new WeakMap,cs=new WeakMap,$n=new WeakMap,Ql=new WeakMap,Jl=new WeakMap,zs=new WeakMap,yt=new WeakSet,Zh=function(){return this.is_fork||R(this,Rn).size>0},BR=function(){for(let i of R(this,zs))for(let n of R(i,Rn).keys()){for(var e=!1,r=n;r.parent!==null;){if(R(this,$n).has(r)){e=!0;break}r=r.parent}if(!e)return!0}return!1},Kh=function(){var o,l;if(LR++>1e3&&(Pn.delete(this),t4()),!Me(this,yt,Zh).call(this)){for(let c of R(this,Vs))R(this,cs).delete(c),Ge(c,2048),this.schedule(c);for(let c of R(this,cs))Ge(c,4096),this.schedule(c)}let e=R(this,Gr);we(this,Gr,[]),this.apply();var r=qa=[],i=[],n=Gu=[];for(let c of e)try{Me(this,yt,t0).call(this,c,r,i)}catch(u){throw jR(c),u}if(le=null,n.length>0){var s=Jh.ensure();for(let c of n)s.schedule(c)}if(qa=null,Gu=null,Me(this,yt,Zh).call(this)||Me(this,yt,BR).call(this)){Me(this,yt,Qh).call(this,i),Me(this,yt,Qh).call(this,r);for(let[c,u]of R(this,$n))GR(c,u)}else{R(this,ls).size===0&&Pn.delete(this),R(this,Vs).clear(),R(this,cs).clear();for(let c of R(this,Zl))c(this);R(this,Zl).clear(),ju=this,NR(i),NR(r),ju=null,(o=R(this,Vu))==null||o.resolve()}var a=le;if(R(this,Gr).length>0){let c=a!=null?a:a=this;R(c,Gr).push(...R(this,Gr).filter(u=>!R(c,Gr).includes(u)))}if(a!==null){if(Pn.add(a),I)for(let c of this.current.keys())J5.add(c);Me(l=a,yt,Kh).call(l)}kt&&!Pn.has(this)&&Me(this,yt,HR).call(this)},t0=function(e,r,i){e.f^=1024;for(var n=e.first;n!==null;){var s=n.f,a=(s&96)!==0,o=a&&(s&1024)!==0,l=o||(s&8192)!==0||R(this,$n).has(n);if(!l&&n.fn!==null){a?n.f^=1024:s&4?r.push(n):kt&&s&16777224?i.push(n):Ws(n)&&(s&16&&R(this,cs).add(n),Fn(n));var c=n.first;if(c!==null){n=c;continue}}for(;n!==null;){var u=n.next;if(u!==null){n=u;break}n=n.parent}}},Qh=function(e){for(var r=0;r<e.length;r+=1)Yh(e[r],R(this,Vs),R(this,cs))},HR=function(){var u,f,d;for(let h of Pn){var e=h.id<this.id,r=[];for(let[p,[g,v]]of this.current){if(h.current.has(p)){var i=h.current.get(p)[0];if(e&&g!==i)h.current.set(p,[g,v]);else continue}r.push(p)}var n=[...h.current.keys()].filter(p=>!this.current.has(p));if(n.length===0)e&&h.discard();else if(r.length>0){if(I&&$R(R(h,Gr).length===0,"Batch has scheduled roots"),e)for(let p of R(this,Ql))h.unskip_effect(p,g=>{var v;g.f&4194320?h.schedule(g):Me(v=h,yt,Qh).call(v,[g])});h.activate();var s=new Set,a=new Map;for(var o of r)UR(o,n,s,a);a=new Map;var l=[...h.current.keys()].filter(p=>this.current.has(p)?this.current.get(p)[0]!==p:!0);for(let p of R(this,zu))!(p.f&155648)&&r0(p,l,a)&&(p.f&4194320?(Ge(p,2048),h.schedule(p)):R(h,Vs).add(p));if(R(h,Gr).length>0){h.apply();for(var c of R(h,Gr))Me(u=h,yt,t0).call(u,c,[],[]);we(h,Gr,[])}h.deactivate()}}for(let h of Pn)R(h,zs).has(this)&&(R(h,zs).delete(this),R(h,zs).size===0&&!Me(f=h,yt,Zh).call(f)&&(h.activate(),Me(d=h,yt,Kh).call(d)))};var ni=Jh;function Za(t){var e=Va;Va=!0;try{var r;for(t&&(le!==null&&!le.is_fork&&le.flush(),r=t());;){if(IR(),le===null)return r;le.flush()}}finally{Va=e}}function t4(){var r;if(I){var t=new Map;for(let i of le.current.keys())for(let[n,s]of(r=i.updated)!=null?r:[]){var e=t.get(n);e||(e={error:s.error,count:0},t.set(n,e)),e.count+=s.count}for(let i of t.values())i.error&&console.error(i.error)}try{pR()}catch(i){I&&or(i,"stack",{value:""}),Ri(i,e0)}}var jr=null;function NR(t){var e=t.length;if(e!==0){for(var r=0;r<e;){var i=t[r++];if(!(i.f&24576)&&Ws(i)&&(jr=new Set,Fn(i),i.deps===null&&i.first===null&&i.nodes===null&&i.teardown===null&&i.ac===null&&i0(i),(jr==null?void 0:jr.size)>0)){us.clear();for(let n of jr){if(n.f&24576)continue;let s=[n],a=n.parent;for(;a!==null;)jr.has(a)&&(jr.delete(a),s.push(a)),a=a.parent;for(let o=s.length-1;o>=0;o--){let l=s[o];l.f&24576||Fn(l)}}jr.clear()}}jr=null}}function UR(t,e,r,i){if(!r.has(t)&&(r.add(t),t.reactions!==null))for(let n of t.reactions){let s=n.f;s&2?UR(n,e,r,i):s&4194320&&!(s&2048)&&r0(n,e,i)&&(Ge(n,2048),Wu(n))}}function r0(t,e,r){let i=r.get(t);if(i!==void 0)return i;if(t.deps!==null)for(let n of t.deps){if(Yi.call(e,n))return!0;if(n.f&2&&r0(n,e,r))return r.set(n,!0),!0}return r.set(t,!1),!1}function Wu(t){le.schedule(t)}function GR(t,e){if(!(t.f&32&&t.f&1024)){t.f&2048?e.d.push(t):t.f&4096&&e.m.push(t),Ge(t,1024);for(var r=t.first;r!==null;)GR(r,e),r=r.next}}function jR(t){Ge(t,1024);for(var e=t.first;e!==null;)jR(e),e=e.next}m();m();m();m();function zR(t){let e=0,r=pr(0),i;return I&&ur(r,"createSubscriber version"),()=>{js()&&($(r),nr(()=>(e===0&&(i=We(()=>t(()=>Ka(r)))),e+=1,()=>{It(()=>{e-=1,e===0&&(i==null||i(),i=void 0,Ka(r))})})))}}var i4=589824;function l0(t,e,r,i){new n0(t,e,r,i)}var si,qu,Fi,Qa,Vr,Ii,kr,ai,fs,Ja,qs,tc,Yu,Xu,In,np,tt,WR,qR,YR,s0,rp,ip,a0,o0,n0=class{constructor(e,r,i,n){pe(this,tt);Ve(this,"parent");Ve(this,"is_pending",!1);Ve(this,"transform_error");pe(this,si);pe(this,qu,ie?me:null);pe(this,Fi);pe(this,Qa);pe(this,Vr);pe(this,Ii,null);pe(this,kr,null);pe(this,ai,null);pe(this,fs,null);pe(this,Ja,0);pe(this,qs,0);pe(this,tc,!1);pe(this,Yu,new Set);pe(this,Xu,new Set);pe(this,In,null);pe(this,np,zR(()=>(we(this,In,pr(R(this,Ja))),I&&ur(R(this,In),"$effect.pending()"),()=>{we(this,In,null)})));var s,a;we(this,si,e),we(this,Fi,r),we(this,Qa,o=>{var l=Z;l.b=this,l.f|=128,i(o)}),this.parent=Z.b,this.transform_error=(a=n!=null?n:(s=this.parent)==null?void 0:s.transform_error)!=null?a:o=>o,we(this,Vr,oi(()=>{if(ie){let o=R(this,qu);cr();let l=o.data===Ba;if(o.data.startsWith(Bw)){let u=JSON.parse(o.data.slice(Bw.length));Me(this,tt,qR).call(this,u)}else l?Me(this,tt,YR).call(this):Me(this,tt,WR).call(this)}else Me(this,tt,s0).call(this)},i4)),ie&&we(this,si,me)}defer_effect(e){Yh(e,R(this,Yu),R(this,Xu))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!R(this,Fi).pending}update_pending_count(e,r){Me(this,tt,a0).call(this,e,r),we(this,Ja,R(this,Ja)+e),!(!R(this,In)||R(this,tc))&&(we(this,tc,!0),It(()=>{we(this,tc,!1),R(this,In)&&en(R(this,In),R(this,Ja))}))}get_effect_pending(){return R(this,np).call(this),$(R(this,In))}error(e){var r;if(!R(this,Fi).onerror&&!R(this,Fi).failed)throw e;(r=le)!=null&&r.is_fork?(R(this,Ii)&&le.skip_effect(R(this,Ii)),R(this,kr)&&le.skip_effect(R(this,kr)),R(this,ai)&&le.skip_effect(R(this,ai)),le.on_fork_commit(()=>{Me(this,tt,o0).call(this,e)})):Me(this,tt,o0).call(this,e)}};si=new WeakMap,qu=new WeakMap,Fi=new WeakMap,Qa=new WeakMap,Vr=new WeakMap,Ii=new WeakMap,kr=new WeakMap,ai=new WeakMap,fs=new WeakMap,Ja=new WeakMap,qs=new WeakMap,tc=new WeakMap,Yu=new WeakMap,Xu=new WeakMap,In=new WeakMap,np=new WeakMap,tt=new WeakSet,WR=function(){try{we(this,Ii,qt(()=>R(this,Qa).call(this,R(this,si))))}catch(e){this.error(e)}},qR=function(e){let r=R(this,Fi).failed;r&&we(this,ai,qt(()=>{r(R(this,si),()=>e,()=>()=>{})}))},YR=function(){let e=R(this,Fi).pending;e&&(this.is_pending=!0,we(this,kr,qt(()=>e(R(this,si)))),It(()=>{var r=we(this,fs,document.createDocumentFragment()),i=Lt();r.append(i),we(this,Ii,Me(this,tt,ip).call(this,()=>qt(()=>R(this,Qa).call(this,i)))),R(this,qs)===0&&(R(this,si).before(r),we(this,fs,null),Mn(R(this,kr),()=>{we(this,kr,null)}),Me(this,tt,rp).call(this,le))}))},s0=function(){try{if(this.is_pending=this.has_pending_snippet(),we(this,qs,0),we(this,Ja,0),we(this,Ii,qt(()=>{R(this,Qa).call(this,R(this,si))})),R(this,qs)>0){var e=we(this,fs,document.createDocumentFragment());rc(R(this,Ii),e);let r=R(this,Fi).pending;we(this,kr,qt(()=>r(R(this,si))))}else Me(this,tt,rp).call(this,le)}catch(r){this.error(r)}},rp=function(e){this.is_pending=!1,e.transfer_effects(R(this,Yu),R(this,Xu))},ip=function(e){var r=Z,i=oe,n=ye;Ot(R(this,Vr)),Dt(R(this,Vr)),as(R(this,Vr).ctx);try{return ni.ensure(),e()}catch(s){return qh(s),null}finally{Ot(r),Dt(i),as(n)}},a0=function(e,r){var i;if(!this.has_pending_snippet()){this.parent&&Me(i=this.parent,tt,a0).call(i,e,r);return}we(this,qs,R(this,qs)+e),R(this,qs)===0&&(Me(this,tt,rp).call(this,r),R(this,kr)&&Mn(R(this,kr),()=>{we(this,kr,null)}),R(this,fs)&&(R(this,si).before(R(this,fs)),we(this,fs,null)))},o0=function(e){R(this,Ii)&&(mt(R(this,Ii)),we(this,Ii,null)),R(this,kr)&&(mt(R(this,kr)),we(this,kr,null)),R(this,ai)&&(mt(R(this,ai)),we(this,ai,null)),ie&&(Ue(R(this,qu)),Ga(),Ue(An()));var r=R(this,Fi).onerror;let i=R(this,Fi).failed;var n=!1,s=!1;let a=()=>{if(n){TR();return}n=!0,s&&yR(),R(this,ai)!==null&&Mn(R(this,ai),()=>{we(this,ai,null)}),Me(this,tt,ip).call(this,()=>{Me(this,tt,s0).call(this)})},o=l=>{try{s=!0,r==null||r(l,a),s=!1}catch(c){Ri(c,R(this,Vr)&&R(this,Vr).parent)}i&&we(this,ai,Me(this,tt,ip).call(this,()=>{try{return qt(()=>{var c=Z;c.b=this,c.f|=128,i(R(this,si),()=>l,()=>a)})}catch(c){return Ri(c,R(this,Vr).parent),null}}))};It(()=>{var l;try{l=this.transform_error(e)}catch(c){Ri(c,R(this,Vr)&&R(this,Vr).parent);return}l!==null&&typeof l=="object"&&typeof l.then=="function"?l.then(o,c=>Ri(c,R(this,Vr)&&R(this,Vr).parent)):o(l)})};function sp(t,e,r,i){let n=Tn()?eo:to;var s=t.filter(d=>!d.settled);if(r.length===0&&s.length===0){i(e.map(n));return}var a=Z,o=XR(),l=s.length===1?s[0].promise:s.length>1?Promise.all(s.map(d=>d.promise)):null;function c(d){o();try{i(d)}catch(h){a.f&16384||Ri(h,a)}ic()}if(r.length===0){l.then(()=>c(e.map(n)));return}var u=Zu();function f(){Promise.all(r.map(d=>u0(d))).then(d=>c([...e.map(n),...d])).catch(d=>Ri(d,a)).finally(()=>u())}l?l.then(()=>{o(),f(),ic()}):f()}function XR(){var t=Z,e=oe,r=ye,i=le;if(I)var n=Cn;return function(a=!0){Ot(t),Dt(e),as(r),a&&!(t.f&16384)&&(i==null||i.activate(),i==null||i.apply()),I&&(c0(null),ql(n))}}function ic(t=!0){var e;Ot(null),Dt(null),as(null),t&&((e=le)==null||e.deactivate()),I&&(c0(null),ql(null))}function Zu(){var t=Z,e=t.b,r=le,i=e.is_rendered();return e.update_pending_count(1,r),r.increment(i,t),(n=!1)=>{e.update_pending_count(-1,r),r.decrement(i,t,n)}}var Wr=null;function c0(t){Wr=t}var Ku=new Set;function eo(t){var e=2050;Z!==null&&(Z.f|=524288);let r={ctx:ye,deps:null,effects:null,equals:Gh,f:e,fn:t,reactions:null,rv:0,v:Ze,wv:0,parent:Z,ac:null};return I&&Xi&&(r.created=Ki("created at")),r}function u0(t,e,r){let i=Z;i===null&&lR();var n=void 0,s=pr(Ze);I&&(s.label=e);var a=!oe,o=new Map;return QR(()=>{var h;var l=Z;I&&(Wr={effect:l,effect_deps:new Set,warned:!1});var c=Nh();n=c.promise;try{Promise.resolve(t()).then(c.resolve,c.reject).finally(ic)}catch(p){c.reject(p),ic()}if(I){if(Wr){if(l.deps!==null)for(let p=0;p<Ar;p+=1)Wr.effect_deps.add(l.deps[p]);if(Yt!==null)for(let p=0;p<Yt.length;p+=1)Wr.effect_deps.add(Yt[p])}Wr=null}var u=le;if(a){if(l.f&32768)var f=Zu();if(i.b.is_rendered())(h=o.get(u))==null||h.reject(ri),o.delete(u);else{for(let p of o.values())p.reject(ri);o.clear()}o.set(u,c)}let d=(p,g=void 0)=>{if(I&&(Wr=null),f){var v=g===ri;f(v)}if(!(g===ri||l.f&16384)){if(u.activate(),g)s.f|=8388608,en(s,g);else{s.f&8388608&&(s.f^=8388608),en(s,p);for(let[_,b]of o){if(o.delete(_),_===u)break;b.reject(ri)}I&&r!==void 0&&(Ku.add(s),setTimeout(()=>{Ku.has(s)&&(ER(s.label,r),Ku.delete(s))}))}u.deactivate()}};c.promise.then(d,p=>d(null,p||"unknown"))}),dr(()=>{for(let l of o.values())l.reject(ri)}),I&&(s.f|=4194304),new Promise(l=>{function c(u){function f(){u===n?l(s):c(n)}u.then(f,f)}c(n)})}function ut(t){let e=eo(t);return kt||op(e),e}function to(t){let e=eo(t);return e.equals=jh,e}function ZR(t){var e=t.effects;if(e!==null){t.effects=null;for(var r=0;r<e.length;r+=1)mt(e[r])}}var f0=[];function Qu(t){var e,r=Z,i=t.parent;if(!li&&i!==null&&i.f&24576)return SR(),t.v;if(Ot(i),I){let n=ro;ep(new Set);try{Yi.call(f0,t)&&cR(),f0.push(t),t.f&=-65537,ZR(t),e=ap(t)}finally{Ot(r),ep(n),f0.pop()}}else try{t.f&=-65537,ZR(t),e=ap(t)}finally{Ot(r)}return e}function d0(t){var r,i;var e=Qu(t);if(!t.equals(e)&&(t.wv=ec(),(!((r=le)!=null&&r.is_fork)||t.deps===null)&&(le!==null?le.capture(t,e,!0):t.v=e,t.deps===null))){Ge(t,1024);return}li||(Ct!==null?(js()||(i=le)!=null&&i.is_fork)&&Ct.set(t,e):Yl(t))}function KR(t){var e,r;if(t.effects!==null)for(let i of t.effects)(i.teardown||i.ac)&&((e=i.teardown)==null||e.call(i),(r=i.ac)==null||r.abort(ri),i.teardown=lr,i.ac=null,io(i,0),Ju(i))}function h0(t){if(t.effects!==null)for(let e of t.effects)e.teardown&&Fn(e)}var ro=new Set,us=new Map;function ep(t){ro=t}var p0=!1;function JR(){p0=!0}function pr(t,e){var r={f:0,v:t,reactions:null,equals:Gh,rv:0,wv:0};return I&&Xi&&(r.created=e!=null?e:Ki("created at"),r.updated=null,r.set_during_effect=!1,r.trace=null),r}function Oe(t,e){let r=pr(t,e);return op(r),r}function za(t,e=!1,r=!0){var n,s;let i=pr(t);return e||(i.equals=jh),ss&&r&&ye!==null&&ye.l!==null&&((s=(n=ye.l).s)!=null?s:n.s=[]).push(i),i}function se(t,e,r=!1){oe!==null&&(!Cr||oe.f&131072)&&Tn()&&oe.f&4325394&&(ci===null||!Yi.call(ci,t))&&bR();let i=r?Qe(e):e;return I&&zh(i,t.label),en(t,i,Gu)}function en(t,e,r=null){var n,s,a;if(!t.equals(e)){us.set(t,li?e:t.v);var i=ni.ensure();if(i.capture(t,e),I){if(Xi||Z!==null){(n=t.updated)!=null||(t.updated=new Map);let o=((a=(s=t.updated.get(""))==null?void 0:s.count)!=null?a:0)+1;if(t.updated.set("",{error:null,count:o}),Xi||o>5){let l=Ki("updated at");if(l!==null){let c=t.updated.get(l.stack);c||(c={error:l,count:0},t.updated.set(l.stack,c)),c.count++}}}Z!==null&&(t.set_during_effect=!0)}if(t.f&2){let o=t;t.f&2048&&Qu(o),Ct===null&&Yl(o)}t.wv=ec(),e$(t,2048,r),Tn()&&Z!==null&&Z.f&1024&&!(Z.f&96)&&(ui===null?t$([t]):ui.push(t)),!i.is_fork&&ro.size>0&&!p0&&tp()}return e}function tp(){p0=!1;for(let t of ro)t.f&1024&&Ge(t,4096),Ws(t)&&Fn(t);ro.clear()}function Ka(t){se(t,t.v+1)}function e$(t,e,r){var d;var i=t.reactions;if(i!==null)for(var n=Tn(),s=i.length,a=0;a<s;a++){var o=i[a],l=o.f;if(!(!n&&o===Z)){if(I&&l&131072){ro.add(o);continue}var c=(l&2048)===0;if(c&&Ge(o,e),l&2){var u=o;(d=Ct)==null||d.delete(u),l&65536||(l&512&&(Z===null||!(Z.f&2097152))&&(o.f|=65536),e$(u,4096,r))}else if(c){var f=o;l&16&&jr!==null&&jr.add(f),r!==null?r.push(f):Wu(f)}}}}var s4=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;function Qe(t){if(typeof t!="object"||t===null||Jt in t)return t;let e=zl(t);if(e!==Gw&&e!==iR)return t;var r=new Map,i=ns(t),n=Oe(0),s=I&&Xi?Ki("created at"):null,a=Ys,o=f=>{if(Ys===a)return f();var d=oe,h=Ys;Dt(null),m0(a);var p=f();return Dt(d),m0(h),p};i&&(r.set("length",Oe(t.length,s)),I&&(t=o4(t)));var l="";let c=!1;function u(f){if(!c){c=!0,l=f,ur(n,`${l} version`);for(let[d,h]of r)ur(h,no(l,d));c=!1}}return new Proxy(t,{defineProperty(f,d,h){(!("value"in h)||h.configurable===!1||h.enumerable===!1||h.writable===!1)&&wR();var p=r.get(d);return p===void 0?o(()=>{var g=Oe(h.value,s);return r.set(d,g),I&&typeof d=="string"&&ur(g,no(l,d)),g}):se(p,h.value,!0),!0},deleteProperty(f,d){var h=r.get(d);if(h===void 0){if(d in f){let p=o(()=>Oe(Ze,s));r.set(d,p),Ka(n),I&&ur(p,no(l,d))}}else se(h,Ze),Ka(n);return!0},get(f,d,h){var _;if(d===Jt)return t;if(I&&d===Bh)return u;var p=r.get(d),g=d in f;if(p===void 0&&(!g||(_=Ur(f,d))!=null&&_.writable)&&(p=o(()=>{var b=Qe(g?f[d]:Ze),S=Oe(b,s);return I&&ur(S,no(l,d)),S}),r.set(d,p)),p!==void 0){var v=$(p);return v===Ze?void 0:v}return Reflect.get(f,d,h)},getOwnPropertyDescriptor(f,d){var h=Reflect.getOwnPropertyDescriptor(f,d);if(h&&"value"in h){var p=r.get(d);p&&(h.value=$(p))}else if(h===void 0){var g=r.get(d),v=g==null?void 0:g.v;if(g!==void 0&&v!==Ze)return{enumerable:!0,configurable:!0,value:v,writable:!0}}return h},has(f,d){var v;if(d===Jt)return!0;var h=r.get(d),p=h!==void 0&&h.v!==Ze||Reflect.has(f,d);if(h!==void 0||Z!==null&&(!p||(v=Ur(f,d))!=null&&v.writable)){h===void 0&&(h=o(()=>{var _=p?Qe(f[d]):Ze,b=Oe(_,s);return I&&ur(b,no(l,d)),b}),r.set(d,h));var g=$(h);if(g===Ze)return!1}return p},set(f,d,h,p){var w;var g=r.get(d),v=d in f;if(i&&d==="length")for(var _=h;_<g.v;_+=1){var b=r.get(_+"");b!==void 0?se(b,Ze):_ in f&&(b=o(()=>Oe(Ze,s)),r.set(_+"",b),I&&ur(b,no(l,_)))}if(g===void 0)(!v||(w=Ur(f,d))!=null&&w.writable)&&(g=o(()=>Oe(void 0,s)),I&&ur(g,no(l,d)),se(g,Qe(h)),r.set(d,g));else{v=g.v!==Ze;var S=o(()=>Qe(h));se(g,S)}var k=Reflect.getOwnPropertyDescriptor(f,d);if(k!=null&&k.set&&k.set.call(p,h),!v){if(i&&typeof d=="string"){var E=r.get("length"),A=Number(d);Number.isInteger(A)&&A>=E.v&&se(E,A+1)}Ka(n)}return!0},ownKeys(f){$(n);var d=Reflect.ownKeys(f).filter(g=>{var v=r.get(g);return v===void 0||v.v!==Ze});for(var[h,p]of r)p.v!==Ze&&!(h in f)&&d.push(h);return d},setPrototypeOf(){_R()}})}function no(t,e){var r;return typeof e=="symbol"?`${t}[Symbol(${(r=e.description)!=null?r:""})]`:s4.test(e)?`${t}.${e}`:/^\d+$/.test(e)?`${t}[${e}]`:`${t}['${e}']`}function lp(t){try{if(t!==null&&typeof t=="object"&&Jt in t)return t[Jt]}catch(e){}return t}var a4=new Set(["copyWithin","fill","pop","push","reverse","shift","sort","splice","unshift"]);function o4(t){return new Proxy(t,{get(e,r,i){var n=Reflect.get(e,r,i);return a4.has(r)?function(...s){JR();var a=n.apply(this,s);return tp(),a}:n}})}function r$(){let t=Array.prototype,e=Array.__svelte_cleanup;e&&e();let{indexOf:r,lastIndexOf:i,includes:n}=t;t.indexOf=function(s,a){let o=r.call(this,s,a);if(o===-1){for(let l=a!=null?a:0;l<this.length;l+=1)if(lp(this[l])===s){Uh("array.indexOf(...)");break}}return o},t.lastIndexOf=function(s,a){let o=i.call(this,s,a!=null?a:this.length-1);if(o===-1){for(let l=0;l<=(a!=null?a:this.length-1);l+=1)if(lp(this[l])===s){Uh("array.lastIndexOf(...)");break}}return o},t.includes=function(s,a){let o=n.call(this,s,a);if(!o){for(let l=0;l<this.length;l+=1)if(lp(this[l])===s){Uh("array.includes(...)");break}}return o},Array.__svelte_cleanup=()=>{t.indexOf=r,t.lastIndexOf=i,t.includes=n}}var g0,i$,Uu,n$,s$;function cp(){if(g0===void 0){g0=window,i$=document,Uu=/Firefox/.test(navigator.userAgent);var t=Element.prototype,e=Node.prototype,r=Text.prototype;n$=Ur(e,"firstChild").get,s$=Ur(e,"nextSibling").get,jw(t)&&(t.__click=void 0,t.__className=void 0,t.__attributes=null,t.__style=void 0,t.__e=void 0),jw(r)&&(r.__t=void 0),I&&(t.__svelte_meta=null,r$())}}function Lt(t=""){return document.createTextNode(t)}function sr(t){return n$.call(t)}function tr(t){return s$.call(t)}function j(t,e){if(!ie)return sr(t);var r=sr(me);if(r===null)r=me.appendChild(Lt());else if(e&&r.nodeType!==Wl){var i=Lt();return r==null||r.before(i),Ue(i),i}return e&&fp(r),Ue(r),r}function Mi(t,e=!1){var n,s;if(!ie){var r=sr(t);return r instanceof Comment&&r.data===""?tr(r):r}if(e){if(((n=me)==null?void 0:n.nodeType)!==Wl){var i=Lt();return(s=me)==null||s.before(i),Ue(i),i}fp(me)}return me}function te(t,e=1,r=!1){let i=ie?me:t;for(var n;e--;)n=i,i=tr(i);if(!ie)return i;if(r){if((i==null?void 0:i.nodeType)!==Wl){var s=Lt();return i===null?n==null||n.after(s):i.before(s),Ue(s),s}fp(i)}return Ue(i),i}function sc(t){t.textContent=""}function up(){if(!kt||jr!==null)return!1;var t=Z.f;return(t&32768)!==0}function On(t,e,r){let i=r?{is:r}:void 0;return document.createElementNS(e!=null?e:Dh,t,i)}function fp(t){if(t.nodeValue.length<65536)return;let e=t.nextSibling;for(;e!==null&&e.nodeType===Wl;)e.remove(),t.nodeValue+=e.nodeValue,e=t.nextSibling}m();m();function v0(t){ie&&sr(t)!==null&&sc(t)}var a$=!1;function w0(){a$||(a$=!0,document.addEventListener("reset",t=>{Promise.resolve().then(()=>{var e;if(!t.defaultPrevented)for(let r of t.target.elements)(e=r.__on_r)==null||e.call(r)})},{capture:!0}))}function tn(t){var e=oe,r=Z;Dt(null),Ot(null);try{return t()}finally{Dt(e),Ot(r)}}function _0(t,e,r,i=r){t.addEventListener(e,()=>tn(r));let n=t.__on_r;n?t.__on_r=()=>{n(),i(!0)}:t.__on_r=()=>i(!0),w0()}function l$(t){Z===null&&(oe===null&&hR(t),dR()),li&&fR(t)}function c4(t,e){var r=e.last;r===null?e.last=e.first=t:(r.next=t,t.prev=r,e.last=t)}function Ln(t,e){var a,o;var r=Z;if(I)for(;r!==null&&r.f&131072;)r=r.parent;r!==null&&r.f&8192&&(t|=8192);var i={ctx:ye,deps:null,nodes:null,f:t|2048|512,first:null,fn:e,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};I&&(i.component_function=Qi),(a=le)==null||a.register_created_effect(i);var n=i;if(t&4)qa!==null?qa.push(i):ni.ensure().schedule(i);else if(e!==null){try{Fn(i)}catch(l){throw mt(i),l}n.deps===null&&n.teardown===null&&n.nodes===null&&n.first===n.last&&!(n.f&524288)&&(n=n.first,t&16&&t&65536&&n!==null&&(n.f|=65536))}if(n!==null&&(n.parent=r,r!==null&&c4(n,r),oe!==null&&oe.f&2&&!(t&64))){var s=oe;((o=s.effects)!=null?o:s.effects=[]).push(n)}return i}function js(){return oe!==null&&!Cr}function dr(t){let e=Ln(8,null);return Ge(e,1024),e.teardown=t,e}function mr(t){var n;l$("$effect"),I&&or(t,"name",{value:"$effect"});var e=Z.f,r=!oe&&(e&32)!==0&&(e&32768)===0;if(r){var i=ye;((n=i.e)!=null?n:i.e=[]).push(t)}else return Zw(t)}function Zw(t){return Ln(1048580,t)}function y0(t){ni.ensure();let e=Ln(524352,t);return()=>{mt(e)}}function c$(t){ni.ensure();let e=Ln(524352,t);return(r={})=>new Promise(i=>{r.outro?Mn(e,()=>{mt(e),i(void 0)}):(mt(e),i(void 0))})}function qr(t){return Ln(4,t)}function QR(t){return Ln(4718592,t)}function nr(t,e=0){return Ln(8|e,t)}function Be(t,e=[],r=[],i=[]){sp(i,e,r,n=>{Ln(8,()=>t(...n.map($)))})}function oi(t,e=0){var r=Ln(16|e,t);return I&&(r.dev_stack=Cn),r}function qt(t){return Ln(524320,t)}function x0(t){var e=t.teardown;if(e!==null){let r=li,i=oe;b0(!0),Dt(null);try{e.call(null)}finally{b0(r),Dt(i)}}}function Ju(t,e=!1){var r=t.first;for(t.first=t.last=null;r!==null;){let n=r.ac;n!==null&&tn(()=>{n.abort(ri)});var i=r.next;r.f&64?r.parent=null:mt(r,e),r=i}}function u$(t){for(var e=t.first;e!==null;){var r=e.next;e.f&32||mt(e),e=r}}function mt(t,e=!0){var r=!1;(e||t.f&262144)&&t.nodes!==null&&t.nodes.end!==null&&(f$(t.nodes.start,t.nodes.end),r=!0),Ge(t,33554432),Ju(t,e&&!r),io(t,0);var i=t.nodes&&t.nodes.t;if(i!==null)for(let s of i)s.stop();x0(t),t.f^=33554432,t.f|=16384;var n=t.parent;n!==null&&n.first!==null&&i0(t),I&&(t.component_function=null),t.next=t.prev=t.teardown=t.ctx=t.deps=t.fn=t.nodes=t.ac=t.b=null}function f$(t,e){for(;t!==null;){var r=t===e?null:tr(t);t.remove(),t=r}}function i0(t){var e=t.parent,r=t.prev,i=t.next;r!==null&&(r.next=i),i!==null&&(i.prev=r),e!==null&&(e.first===t&&(e.first=i),e.last===t&&(e.last=r))}function Mn(t,e,r=!0){var i=[];d$(t,i,!0);var n=()=>{r&&mt(t),e&&e()},s=i.length;if(s>0){var a=()=>--s||n();for(var o of i)o.out(a)}else n()}function d$(t,e,r){if(!(t.f&8192)){t.f^=8192;var i=t.nodes&&t.nodes.t;if(i!==null)for(let o of i)(o.is_global||r)&&e.push(o);for(var n=t.first;n!==null;){var s=n.next;if(!(n.f&64)){var a=(n.f&65536)!==0||(n.f&32)!==0&&(t.f&16)!==0;d$(n,e,a?r:!1)}n=s}}}function ef(t){h$(t,!0)}function h$(t,e){if(t.f&8192){t.f^=8192,t.f&1024||(Ge(t,2048),ni.ensure().schedule(t));for(var r=t.first;r!==null;){var i=r.next,n=(r.f&65536)!==0||(r.f&32)!==0;h$(r,n?e:!1),r=i}var s=t.nodes&&t.nodes.t;if(s!==null)for(let a of s)(a.is_global||e)&&a.in()}}function rc(t,e){if(t.nodes)for(var r=t.nodes.start,i=t.nodes.end;r!==null;){var n=r===i?null:tr(r);e.append(r),r=n}}m();var p$=null;var hp=!1,li=!1;function b0(t){li=t}var oe=null,Cr=!1;function Dt(t){oe=t}var Z=null;function Ot(t){Z=t}var ci=null;function op(t){oe!==null&&(!kt||oe.f&2)&&(ci===null?ci=[t]:ci.push(t))}var Yt=null,Ar=0,ui=null;function t$(t){ui=t}var m$=1,so=0,Ys=so;function m0(t){Ys=t}function ec(){return++m$}function Ws(t){var e=t.f;if(e&2048)return!0;if(e&2&&(t.f&=-65537),e&4096){for(var r=t.deps,i=r.length,n=0;n<i;n++){var s=r[n];if(Ws(s)&&d0(s),s.wv>t.wv)return!0}e&512&&Ct===null&&Ge(t,1024)}return!1}function g$(t,e,r=!0){var i=t.reactions;if(i!==null&&!(!kt&&ci!==null&&Yi.call(ci,t)))for(var n=0;n<i.length;n++){var s=i[n];s.f&2?g$(s,e,!1):e===s&&(r?Ge(s,2048):s.f&1024&&Ge(s,4096),Wu(s))}}function ap(t){var g,v,_;var e=Yt,r=Ar,i=ui,n=oe,s=ci,a=ye,o=Cr,l=Ys,c=t.f;Yt=null,Ar=0,ui=null,oe=c&96?null:t,ci=null,as(t.ctx),Cr=!1,Ys=++so,t.ac!==null&&(tn(()=>{t.ac.abort(ri)}),t.ac=null);try{t.f|=2097152;var u=t.fn,f=u();t.f|=32768;var d=t.deps,h=(g=le)==null?void 0:g.is_fork;if(Yt!==null){var p;if(h||io(t,Ar),d!==null&&Ar>0)for(d.length=Ar+Yt.length,p=0;p<Yt.length;p++)d[Ar+p]=Yt[p];else t.deps=d=Yt;if(js()&&t.f&512)for(p=Ar;p<d.length;p++)((_=(v=d[p]).reactions)!=null?_:v.reactions=[]).push(t)}else!h&&d!==null&&Ar<d.length&&(io(t,Ar),d.length=Ar);if(Tn()&&ui!==null&&!Cr&&d!==null&&!(t.f&6146))for(p=0;p<ui.length;p++)g$(ui[p],t);if(n!==null&&n!==t){if(so++,n.deps!==null)for(let b=0;b<r;b+=1)n.deps[b].rv=so;if(e!==null)for(let b of e)b.rv=so;ui!==null&&(i===null?i=ui:i.push(...ui))}return t.f&8388608&&(t.f^=8388608),f}catch(b){return qh(b)}finally{t.f^=2097152,Yt=e,Ar=r,ui=i,oe=n,ci=s,as(a),Cr=o,Ys=l}}function u4(t,e){let r=e.reactions;if(r!==null){var i=rR.call(r,t);if(i!==-1){var n=r.length-1;n===0?r=e.reactions=null:(r[i]=r[n],r.pop())}}if(r===null&&e.f&2&&(Yt===null||!Yi.call(Yt,e))){var s=e;s.f&512&&(s.f^=512,s.f&=-65537),s.v!==Ze&&Yl(s),KR(s),io(s,0)}}function io(t,e){var r=t.deps;if(r!==null)for(var i=e;i<r.length;i++)u4(t,r[i])}function Fn(t){var l;var e=t.f;if(!(e&16384)){Ge(t,1024);var r=Z,i=hp;if(Z=t,hp=!0,I){var n=Qi;Wh(t.component_function);var s=Cn;ql((l=t.dev_stack)!=null?l:Cn)}try{e&16777232?u$(t):Ju(t),x0(t);var a=ap(t);if(t.teardown=typeof a=="function"?a:null,t.wv=m$,I&&Xi&&t.f&2048&&t.deps!==null)for(var o of t.deps)o.set_during_effect&&(o.wv=ec(),o.set_during_effect=!1)}finally{hp=i,Z=r,I&&(Wh(n),ql(s))}}}async function pp(){if(kt)return new Promise(t=>{requestAnimationFrame(()=>t()),setTimeout(()=>t())});await Promise.resolve(),Za()}function $(t){var h,p,g;var e=t.f,r=(e&2)!==0;if((h=p$)==null||h.add(t),oe!==null&&!Cr){var i=Z!==null&&(Z.f&16384)!==0;if(!i&&(ci===null||!Yi.call(ci,t))){var n=oe.deps;if(oe.f&2097152)t.rv<so&&(t.rv=so,Yt===null&&n!==null&&n[Ar]===t?Ar++:Yt===null?Yt=[t]:Yt.push(t));else{((p=oe.deps)!=null?p:oe.deps=[]).push(t);var s=t.reactions;s===null?t.reactions=[oe]:Yi.call(s,oe)||s.push(oe)}}}if(I){if(!Cr&&Wr&&!Wr.warned&&!(Wr.effect.f&2097152)&&!Wr.effect_deps.has(t)){Wr.warned=!0,xR(t.label);var a=Ki("traced at");a&&console.warn(a)}if(Ku.delete(t),Xi&&!Cr&&Bu!==null&&oe!==null&&Bu.reaction===oe){if(t.trace)t.trace();else if(a=Ki("traced at"),a){var o=Bu.entries.get(t);o===void 0&&(o={traces:[]},Bu.entries.set(t,o));var l=o.traces[o.traces.length-1];a.stack!==(l==null?void 0:l.stack)&&o.traces.push(a)}}}if(li&&us.has(t))return us.get(t);if(r){var c=t;if(li){var u=c.v;return(!(c.f&1024)&&c.reactions!==null||w$(c))&&(u=Qu(c)),us.set(c,u),u}var f=(c.f&512)===0&&!Cr&&oe!==null&&(hp||(oe.f&512)!==0),d=(c.f&32768)===0;Ws(c)&&(f&&(c.f|=512),d0(c)),f&&!d&&(h0(c),v$(c))}if((g=Ct)!=null&&g.has(t))return Ct.get(t);if(t.f&8388608)throw t.v;return t.v}function v$(t){var e;if(t.f|=512,t.deps!==null)for(let r of t.deps)((e=r.reactions)!=null?e:r.reactions=[]).push(t),r.f&2&&!(r.f&512)&&(h0(r),v$(r))}function w$(t){if(t.v===Ze)return!0;if(t.deps===null)return!1;for(let e of t.deps)if(us.has(e)||e.f&2&&w$(e))return!0;return!1}function We(t){var e=Cr;try{return Cr=!0,t()}finally{Cr=e}}m();m();m();var ao=Symbol("events"),E0=new Set,mp=new Set;function b$(t,e,r,i={}){function n(s){if(i.capture||gp.call(e,s),!s.cancelBubble)return tn(()=>r==null?void 0:r.call(this,s))}return t.startsWith("pointer")||t.startsWith("touch")||t==="wheel"?It(()=>{e.addEventListener(t,n,i)}):e.addEventListener(t,n,i),n}function fi(t,e,r,i,n){var s={capture:i,passive:n},a=b$(t,e,r,s);(e===document.body||e===window||e===document||e instanceof HTMLMediaElement)&&dr(()=>{e.removeEventListener(t,a,s)})}function de(t,e,r){var i;((i=e[ao])!=null?i:e[ao]={})[t]=r}function Tt(t){for(var e=0;e<t.length;e++)E0.add(t[e]);for(var r of mp)r(t)}var _$=null;function gp(t){var v,_;var e=this,r=e.ownerDocument,i=t.type,n=((v=t.composedPath)==null?void 0:v.call(t))||[],s=n[0]||t.target;_$=t;var a=0,o=_$===t&&t[ao];if(o){var l=n.indexOf(o);if(l!==-1&&(e===document||e===window)){t[ao]=e;return}var c=n.indexOf(e);if(c===-1)return;l<=c&&(a=l)}if(s=n[a]||t.target,s!==e){or(t,"currentTarget",{configurable:!0,get(){return s||r}});var u=oe,f=Z;Dt(null),Ot(null);try{for(var d,h=[];s!==null;){var p=s.assignedSlot||s.parentNode||s.host||null;try{var g=(_=s[ao])==null?void 0:_[i];g!=null&&(!s.disabled||t.target===s)&&g.call(s,t)}catch(b){d?h.push(b):d=b}if(t.cancelBubble||p===e||p===null)break;s=p}if(d){for(let b of h)queueMicrotask(()=>{throw b});throw d}}finally{t[ao]=e,delete t.currentTarget,Dt(u),Ot(f)}}}m();m();var y$,S0=((y$=globalThis==null?void 0:globalThis.window)==null?void 0:y$.trustedTypes)&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:t=>t});function x$(t){var e;return(e=S0==null?void 0:S0.createHTML(t))!=null?e:t}function k0(t){var e=On("template");return e.innerHTML=x$(t.replaceAll("<!>","<!---->")),e.content}function Nn(t,e){var r=Z;r.nodes===null&&(r.nodes={start:t,end:e,a:null,t:null})}function he(t,e){var r=(e&1)!==0,i=(e&2)!==0,n,s=!t.startsWith("<!>");return()=>{if(ie)return Nn(me,null),me;n===void 0&&(n=k0(s?t:"<!>"+t),r||(n=sr(n)));var a=i||Uu?document.importNode(n,!0):n.cloneNode(!0);if(r){var o=sr(a),l=a.lastChild;Nn(o,l)}else Nn(a,a);return a}}function oo(){if(ie)return Nn(me,null),me;var t=document.createDocumentFragment(),e=document.createComment(""),r=Lt();return t.append(e,r),Nn(e,r),t}function ce(t,e){if(ie){var r=Z;(!(r.f&32768)||r.nodes.end===null)&&(r.nodes.end=me),cr();return}t!==null&&t.before(e)}m();var g4=["allowfullscreen","async","autofocus","autoplay","checked","controls","default","disabled","formnovalidate","indeterminate","inert","ismap","loop","multiple","muted","nomodule","novalidate","open","playsinline","readonly","required","reversed","seamless","selected","webkitdirectory","defer","disablepictureinpicture","disableremoteplayback"];var Mee=[...g4,"formNoValidate","isMap","noModule","playsInline","readOnly","value","volume","defaultValue","defaultChecked","srcObject","noValidate","allowFullscreen","disablePictureInPicture","disableRemotePlayback"];var v4=["touchstart","touchmove"];function E$(t){return v4.includes(t)}var w4=["$state","$state.raw","$derived","$derived.by"],Dee=[...w4,"$state.eager","$state.snapshot","$props","$props.id","$bindable","$effect","$effect.pre","$effect.tracking","$effect.root","$effect.pending","$inspect","$inspect().with","$inspect.trace","$host"];var wp=!0;function je(t,e){var i;var r=e==null?"":typeof e=="object"?`${e}`:e;r!==((i=t.__t)!=null?i:t.__t=t.nodeValue)&&(t.__t=r,t.nodeValue=`${r}`)}function Xs(t,e){return S$(t,e)}function T0(t,e){var a;cp(),e.intro=(a=e.intro)!=null?a:!1;let r=e.target,i=ie,n=me;try{for(var s=sr(r);s&&(s.nodeType!==Pi||s.data!==jl);)s=tr(s);if(!s)throw is;Ft(!0),Ue(s);let o=S$(t,{...e,anchor:s});return Ft(!1),o}catch(o){if(o instanceof Error&&o.message.split(` +`).some(l=>l.startsWith("https://svelte.dev/e/")))throw o;return o!==is&&console.warn("Failed to hydrate: ",o),e.recover===!1&&mR(),cp(),sc(r),Ft(!1),Xs(t,e)}finally{Ft(i),Ue(n)}}var vp=new Map;function S$(t,{target:e,anchor:r,props:i={},events:n,context:s,intro:a=!0,transformError:o}){cp();var l=void 0,c=c$(()=>{var u=r!=null?r:e.appendChild(Lt());l0(u,{pending:()=>{}},h=>{lt({});var p=ye;if(s&&(p.c=s),n&&(i.$$events=n),ie&&Nn(h,null),wp=a,l=t(h,i)||{},wp=!0,ie&&(Z.nodes.end=me,me===null||me.nodeType!==Pi||me.data!==Ha))throw Ua(),is;ct()},o);var f=new Set,d=h=>{for(var p=0;p<h.length;p++){var g=h[p];if(!f.has(g)){f.add(g);var v=E$(g);for(let S of[e,document]){var _=vp.get(S);_===void 0&&(_=new Map,vp.set(S,_));var b=_.get(g);b===void 0?(S.addEventListener(g,gp,{passive:v}),_.set(g,1)):_.set(g,b+1)}}}};return d(Vl(E0)),mp.add(d),()=>{var v;for(var h of f)for(let _ of[e,document]){var p=vp.get(_),g=p.get(h);--g==0?(_.removeEventListener(h,gp),p.delete(h),p.size===0&&vp.delete(_)):p.set(h,g)}mp.delete(d),u!==r&&((v=u.parentNode)==null||v.removeChild(u))}});return C0.set(l,c),l}var C0=new WeakMap;function ds(t,e){let r=C0.get(t);return r?(C0.delete(t),r(e)):(I&&(Jt in t?CR():AR()),Promise.resolve())}m();m();m();var rn,Bn,di,lo,tf,rf,_p,hs=class{constructor(e,r=!0){Ve(this,"anchor");pe(this,rn,new Map);pe(this,Bn,new Map);pe(this,di,new Map);pe(this,lo,new Set);pe(this,tf,!0);pe(this,rf,e=>{if(R(this,rn).has(e)){var r=R(this,rn).get(e),i=R(this,Bn).get(r);if(i)ef(i),R(this,lo).delete(r);else{var n=R(this,di).get(r);n&&(R(this,Bn).set(r,n.effect),R(this,di).delete(r),I&&(n.fragment.lastChild[zw]=this.anchor),n.fragment.lastChild.remove(),this.anchor.before(n.fragment),i=n.effect)}for(let[s,a]of R(this,rn)){if(R(this,rn).delete(s),s===e)break;let o=R(this,di).get(a);o&&(mt(o.effect),R(this,di).delete(a))}for(let[s,a]of R(this,Bn)){if(s===r||R(this,lo).has(s))continue;let o=()=>{if(Array.from(R(this,rn).values()).includes(s)){var c=document.createDocumentFragment();rc(a,c),c.append(Lt()),R(this,di).set(s,{effect:a,fragment:c})}else mt(a);R(this,lo).delete(s),R(this,Bn).delete(s)};R(this,tf)||!i?(R(this,lo).add(s),Mn(a,o,!1)):o()}}});pe(this,_p,e=>{R(this,rn).delete(e);let r=Array.from(R(this,rn).values());for(let[i,n]of R(this,di))r.includes(i)||(mt(n.effect),R(this,di).delete(i))});this.anchor=e,we(this,tf,r)}ensure(e,r){var i=le,n=up();if(r&&!R(this,Bn).has(e)&&!R(this,di).has(e))if(n){var s=document.createDocumentFragment(),a=Lt();s.append(a),R(this,di).set(e,{effect:qt(()=>r(a)),fragment:s})}else R(this,Bn).set(e,qt(()=>r(this.anchor)));if(R(this,rn).set(i,e),n){for(let[o,l]of R(this,Bn))o===e?i.unskip_effect(l):i.skip_effect(l);for(let[o,l]of R(this,di))o===e?i.unskip_effect(l.effect):i.skip_effect(l.effect);i.oncommit(R(this,rf)),i.ondiscard(R(this,_p))}else ie&&(this.anchor=me),R(this,rf).call(this,i)}};rn=new WeakMap,Bn=new WeakMap,di=new WeakMap,lo=new WeakMap,tf=new WeakMap,rf=new WeakMap,_p=new WeakMap;if(I){let t=function(e){if(!(e in globalThis)){let r;Object.defineProperty(globalThis,e,{configurable:!0,get:()=>{if(r!==void 0)return r;vR(e)},set:i=>{r=i}})}};t("$state"),t("$effect"),t("$derived"),t("$inspect"),t("$props"),t("$bindable")}function co(t){ye===null&&Hh("onMount"),ss&&ye.l!==null?y4(ye).m.push(t):mr(()=>{let e=We(t);if(typeof e=="function")return e})}function y4(t){var r;var e=t.l;return(r=e.u)!=null?r:e.u={a:[],b:[],m:[]}}m();m();var C$=new Map;function T$(t,e){var r=C$.get(t);r||(r=new Set,C$.set(t,r)),r.add(e)}m();m();m();m();m();m();m();m();m();function Re(t,e,r=!1){var i;ie&&(i=me,cr());var n=new hs(t),s=r?65536:0;function a(o,l){if(ie){var c=Nu(i);if(o!==parseInt(c.substring(1))){var u=An();Ue(u),n.anchor=u,Ft(!1),n.ensure(o,l),Ft(!0);return}}n.ensure(o,l)}oi(()=>{var o=!1;e((l,c=0)=>{o=!0,a(c,l)}),o||a(-1,null)},s)}m();var $ie=Symbol("NaN");m();m();function hi(t,e){return e}function T4(t,e,r){var f;for(var i=[],n=e.length,s,a=e.length,o=0;o<n;o++){let d=e[o];Mn(d,()=>{if(s){if(s.pending.delete(d),s.done.add(d),s.pending.size===0){var h=t.outrogroups;P0(t,Vl(s.done)),h.delete(s),h.size===0&&(t.outrogroups=null)}}else a-=1},!1)}if(a===0){var l=i.length===0&&r!==null;if(l){var c=r,u=c.parentNode;sc(u),u.append(c),t.items.clear()}P0(t,e,!l)}else s={pending:new Set(e),done:new Set},((f=t.outrogroups)!=null?f:t.outrogroups=new Set).add(s)}function P0(t,e,r=!0){var i;if(t.pending.size>0){i=new Set;for(let a of t.pending.values())for(let o of a)i.add(t.items.get(o).e)}for(var n=0;n<e.length;n++){var s=e[n];if(i!=null&&i.has(s)){s.f|=33554432;let a=document.createDocumentFragment();rc(s,a)}else mt(e[n],r)}}var ac;function pi(t,e,r,i,n,s=null){var a=t,o=new Map,l=(e&4)!==0;if(l){var c=t;a=ie?Ue(sr(c)):c.appendChild(Lt())}ie&&cr();var u=null,f=to(()=>{var S=r();return ns(S)?S:S==null?[]:Vl(S)});I&&ur(f,"{#each ...}");var d,h=new Map,p=!0;function g(S){b.effect.f&16384||(b.pending.delete(S),b.fallback=u,P4(b,d,a,e,i),u!==null&&(d.length===0?u.f&33554432?(u.f^=33554432,sf(u,null,a)):ef(u):Mn(u,()=>{u=null})))}function v(S){b.pending.delete(S)}var _=oi(()=>{d=$(f);var S=d.length;let k=!1;if(ie){var E=Nu(a)===Ba;E!==(S===0)&&(a=An(),Ue(a),Ft(!1),k=!0)}for(var A=new Set,w=le,x=up(),y=0;y<S;y+=1){ie&&me.nodeType===Pi&&me.data===Ha&&(a=me,k=!0,Ft(!1));var C=d[y],P=i(C,y);if(I){var L=i(C,y);P!==L&&uR(String(y),String(P),String(L))}var N=p?null:o.get(P);N?(N.v&&en(N.v,C),N.i&&en(N.i,y),x&&w.unskip_effect(N.e)):(N=R4(o,p?a:ac!=null?ac:ac=Lt(),C,P,y,n,e,r),p||(N.e.f|=33554432),o.set(P,N)),A.add(P)}if(S===0&&s&&!u&&(p?u=qt(()=>s(a)):(u=qt(()=>s(ac!=null?ac:ac=Lt())),u.f|=33554432)),S>A.size&&(I?$4(d,i):Yw("","","")),ie&&S>0&&Ue(An()),!p)if(h.set(w,A),x){for(let[B,ge]of o)A.has(B)||w.skip_effect(ge.e);w.oncommit(g),w.ondiscard(v)}else g(w);k&&Ft(!0),$(f)}),b={effect:_,flags:e,items:o,pending:h,outrogroups:null,fallback:u};p=!1,ie&&(a=me)}function nf(t){for(;t!==null&&!(t.f&32);)t=t.next;return t}function P4(t,e,r,i,n){var C,P,L,N,B,ge,Le,ke,ne;var s=(i&8)!==0,a=e.length,o=t.items,l=nf(t.effect.first),c,u=null,f,d=[],h=[],p,g,v,_;if(s)for(_=0;_<a;_+=1)p=e[_],g=n(p,_),v=o.get(g).e,v.f&33554432||((P=(C=v.nodes)==null?void 0:C.a)==null||P.measure(),(f!=null?f:f=new Set).add(v));for(_=0;_<a;_+=1){if(p=e[_],g=n(p,_),v=o.get(g).e,t.outrogroups!==null)for(let Ee of t.outrogroups)Ee.pending.delete(v),Ee.done.delete(v);if(v.f&8192&&(ef(v),s&&((N=(L=v.nodes)==null?void 0:L.a)==null||N.unfix(),(f!=null?f:f=new Set).delete(v))),v.f&33554432)if(v.f^=33554432,v===l)sf(v,null,r);else{var b=u?u.next:l;v===t.effect.last&&(t.effect.last=v.prev),v.prev&&(v.prev.next=v.next),v.next&&(v.next.prev=v.prev),Zs(t,u,v),Zs(t,v,b),sf(v,b,r),u=v,d=[],h=[],l=nf(u.next);continue}if(v!==l){if(c!==void 0&&c.has(v)){if(d.length<h.length){var S=h[0],k;u=S.prev;var E=d[0],A=d[d.length-1];for(k=0;k<d.length;k+=1)sf(d[k],S,r);for(k=0;k<h.length;k+=1)c.delete(h[k]);Zs(t,E.prev,A.next),Zs(t,u,E),Zs(t,A,S),l=S,u=A,_-=1,d=[],h=[]}else c.delete(v),sf(v,l,r),Zs(t,v.prev,v.next),Zs(t,v,u===null?t.effect.first:u.next),Zs(t,u,v),u=v;continue}for(d=[],h=[];l!==null&&l!==v;)(c!=null?c:c=new Set).add(l),h.push(l),l=nf(l.next);if(l===null)continue}v.f&33554432||d.push(v),u=v,l=nf(v.next)}if(t.outrogroups!==null){for(let Ee of t.outrogroups)Ee.pending.size===0&&(P0(t,Vl(Ee.done)),(B=t.outrogroups)==null||B.delete(Ee));t.outrogroups.size===0&&(t.outrogroups=null)}if(l!==null||c!==void 0){var w=[];if(c!==void 0)for(v of c)v.f&8192||w.push(v);for(;l!==null;)!(l.f&8192)&&l!==t.fallback&&w.push(l),l=nf(l.next);var x=w.length;if(x>0){var y=i&4&&a===0?r:null;if(s){for(_=0;_<x;_+=1)(Le=(ge=w[_].nodes)==null?void 0:ge.a)==null||Le.measure();for(_=0;_<x;_+=1)(ne=(ke=w[_].nodes)==null?void 0:ke.a)==null||ne.fix()}T4(t,w,y)}}s&&It(()=>{var Ee,_e;if(f!==void 0)for(v of f)(_e=(Ee=v.nodes)==null?void 0:Ee.a)==null||_e.apply()})}function R4(t,e,r,i,n,s,a,o){var l=a&1?a&16?pr(r):za(r,!1,!1):null,c=a&2?pr(n):null;return I&&l&&(l.trace=()=>{var u;o()[(u=c==null?void 0:c.v)!=null?u:n]}),{v:l,i:c,e:qt(()=>(s(e,l!=null?l:r,c!=null?c:n,o),()=>{t.delete(i)}))}}function sf(t,e,r){if(t.nodes)for(var i=t.nodes.start,n=t.nodes.end,s=e&&!(e.f&33554432)?e.nodes.start:r;i!==null;){var a=tr(i);if(s.before(i),i===n)return;i=a}}function Zs(t,e,r){e===null?t.effect.first=r:e.next=r,r===null?t.effect.last=e:r.prev=e}function $4(t,e){let r=new Map,i=t.length;for(let n=0;n<i;n++){let s=e(t[n],n);if(r.has(s)){let a=String(r.get(s)),o=String(n),l=String(s);l.startsWith("[object ")&&(l=null),Yw(a,o,l)}r.set(s,n)}}m();m();m();m();m();m();m();var F4=Oh?()=>performance.now():()=>Date.now(),nn={tick:t=>(Oh?requestAnimationFrame:lr)(t),now:()=>F4(),tasks:new Set};function R$(){let t=nn.now();nn.tasks.forEach(e=>{e.c(t)||(nn.tasks.delete(e),e.f())}),nn.tasks.size!==0&&nn.tick(R$)}function $$(t){let e;return nn.tasks.size===0&&nn.tick(R$),{promise:new Promise(r=>{nn.tasks.add(e={c:t,f:r})}),abort(){nn.tasks.delete(e)}}}function bp(t,e){tn(()=>{t.dispatchEvent(new CustomEvent(e))})}function O4(t){if(t==="float")return"cssFloat";if(t==="offset")return"cssOffset";if(t.startsWith("--"))return t;let e=t.split("-");return e.length===1?e[0]:e[0]+e.slice(1).map(r=>r[0].toUpperCase()+r.slice(1)).join("")}function F$(t){let e={},r=t.split(";");for(let i of r){let[n,s]=i.split(":");if(!n||s===void 0)break;let a=O4(n.trim());e[a]=s.trim()}return e}var L4=t=>t;function sn(t,e,r,i){var S,k;var n=(t&1)!==0,s=(t&2)!==0,a=n&&s,o=(t&4)!==0,l=a?"both":n?"in":"out",c,u=e.inert,f=e.style.overflow,d,h;function p(){return tn(()=>{var E;return c!=null?c:c=r()(e,(E=i==null?void 0:i())!=null?E:{},{direction:l})})}var g={is_global:o,in(){var E;if(e.inert=u,!n){h==null||h.abort(),(E=h==null?void 0:h.reset)==null||E.call(h);return}s||d==null||d.abort(),d=R0(e,p(),h,1,()=>{bp(e,"introstart")},()=>{bp(e,"introend"),d==null||d.abort(),d=c=void 0,e.style.overflow=f})},out(E){if(!s){E==null||E(),c=void 0;return}e.inert=!0,h=R0(e,p(),d,0,()=>{bp(e,"outrostart")},()=>{bp(e,"outroend"),E==null||E()})},stop:()=>{d==null||d.abort(),h==null||h.abort()}},v=Z;if(((k=(S=v.nodes).t)!=null?k:S.t=[]).push(g),n&&wp){var _=o;if(!_){for(var b=v.parent;b&&b.f&65536;)for(;(b=b.parent)&&!(b.f&16););_=!b||(b.f&32768)!==0}_&&qr(()=>{We(()=>g.in())})}}function R0(t,e,r,i,n,s){var a=i===1;if(Vw(e)){var o,l=!1;return It(()=>{if(!l){var _=e({direction:a?"in":"out"});o=R0(t,_,r,i,n,s)}}),{abort:()=>{l=!0,o==null||o.abort()},deactivate:()=>o.deactivate(),reset:()=>o.reset(),t:()=>o.t()}}if(r==null||r.deactivate(),!(e!=null&&e.duration)&&!(e!=null&&e.delay))return n(),s(),{abort:lr,deactivate:lr,reset:lr,t:()=>i};let{delay:c=0,css:u,tick:f,easing:d=L4}=e;var h=[];if(a&&r===void 0&&(f&&f(0,1),u)){var p=F$(u(0,1));h.push(p,p)}var g=()=>1-i,v=t.animate(h,{duration:c,fill:"forwards"});return v.onfinish=()=>{var C;v.cancel(),n();var _=(C=r==null?void 0:r.t())!=null?C:1-i;r==null||r.abort();var b=i-_,S=e.duration*Math.abs(b),k=[];if(S>0){var E=!1;if(u)for(var A=Math.ceil(S/16.666666666666668),w=0;w<=A;w+=1){var x=_+b*d(w/A),y=F$(u(x,1-x));k.push(y),E||(E=y.overflow==="hidden")}E&&(t.style.overflow="hidden"),g=()=>{var P=v.currentTime;return _+b*d(P/S)},f&&$$(()=>{if(v.playState!=="running")return!1;var P=g();return f(P,1-P),!0})}v=t.animate(k,{duration:S,fill:"forwards"}),v.onfinish=()=>{g=()=>i,f==null||f(i,1-i),s()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=lr)},deactivate:()=>{s=lr},reset:()=>{i===0&&(f==null||f(1,0))},t:()=>g()}}m();m();function an(t,e){qr(()=>{var n;var r=t.getRootNode(),i=r.host?r:(n=r.head)!=null?n:r.ownerDocument.head;if(!i.querySelector("#"+e.hash)){let s=On("style");s.id=e.hash,s.textContent=e.code,i.appendChild(s),I&&T$(e.hash,s)}})}m();m();m();m();m();m();var M$=[...` +\r\f\xA0\v\uFEFF`];function D$(t,e,r){var i=t==null?"":""+t;if(e&&(i=i?i+" "+e:e),r){for(var n of Object.keys(r))if(r[n])i=i?i+" "+n:n;else if(i.length)for(var s=n.length,a=0;(a=i.indexOf(n,a))>=0;){var o=a+s;(a===0||M$.includes(i[a-1]))&&(o===i.length||M$.includes(i[o]))?i=(a===0?"":i.substring(0,a))+i.substring(o+1):a=o}}return i===""?null:i}m();function gt(t,e,r,i,n,s){var a=t.__className;if(ie||a!==r||a===void 0){var o=D$(r,i,s);(!ie||o!==t.getAttribute("class"))&&(o==null?t.removeAttribute("class"):e?t.className=o:t.setAttribute("class",o)),t.__className=r}else if(s&&n!==s)for(var l in s){var c=!!s[l];(n==null||c!==!!n[l])&&t.classList.toggle(l,c)}return s}m();m();var z4=Symbol("class"),W4=Symbol("style"),q4=Symbol("is custom element"),Y4=Symbol("is html"),X4=Ww?"link":"LINK";function xe(t,e,r,i){var n=Z4(t);if(ie&&(n[e]=t.getAttribute(e),e==="src"||e==="srcset"||e==="href"&&t.nodeName===X4)){i||Q4(t,e,r!=null?r:"");return}n[e]!==(n[e]=r)&&(e==="loading"&&(t[sR]=r),r==null?t.removeAttribute(e):typeof r!="string"&&K4(t).includes(e)?t[e]=r:t.setAttribute(e,r))}function Z4(t){var e;return(e=t.__attributes)!=null?e:t.__attributes={[q4]:t.nodeName.includes("-"),[Y4]:t.namespaceURI===Dh}}var O$=new Map;function K4(t){var e=t.getAttribute("is")||t.nodeName,r=O$.get(e);if(r)return r;O$.set(e,r=[]);for(var i,n=t,s=Element.prototype;s!==n;){i=Uw(n);for(var a in i)i[a].set&&r.push(a);n=zl(n)}return r}function Q4(t,e,r){var i;I&&(e==="srcset"&&J4(t,r)||$0((i=t.getAttribute(e))!=null?i:"",r)||kR(e,t.outerHTML.replace(t.innerHTML,t.innerHTML&&"..."),String(r)))}function $0(t,e){return t===e?!0:new URL(t,document.baseURI).href===new URL(e,document.baseURI).href}function L$(t){return t.split(",").map(e=>e.trim().split(" ").filter(Boolean))}function J4(t,e){var r=L$(t.srcset),i=L$(e);return i.length===r.length&&i.every(([n,s],a)=>s===r[a][1]&&($0(r[a][0],n)||$0(n,r[a][0])))}m();m();m();function M0(t,e,r=e){var i=new WeakSet;_0(t,"input",async n=>{I&&t.type==="checkbox"&&qw();var s=n?t.defaultValue:t.value;if(s=F0(t)?I0(s):s,r(s),le!==null&&i.add(le),await pp(),s!==(s=e())){var a=t.selectionStart,o=t.selectionEnd,l=t.value.length;if(t.value=s!=null?s:"",o!==null){var c=t.value.length;a===o&&o===l&&c>l?(t.selectionStart=c,t.selectionEnd=c):(t.selectionStart=a,t.selectionEnd=Math.min(o,c))}}}),(ie&&t.defaultValue!==t.value||We(e)==null&&t.value)&&(r(F0(t)?I0(t.value):t.value),le!==null&&i.add(le)),nr(()=>{I&&t.type==="checkbox"&&qw();var n=e();if(t===document.activeElement){var s=kt?ju:le;if(i.has(s))return}F0(t)&&n===I0(t.value)||t.type==="date"&&!n&&!t.value||n!==t.value&&(t.value=n!=null?n:"")})}function F0(t){var e=t.type;return e==="number"||e==="range"}function I0(t){return t===""?null:+t}m();m();m();m();m();function B$(t,e){return t===e||(t==null?void 0:t[Jt])===e}function at(t={},e,r,i){var n=ye.r,s=Z;return qr(()=>{var a,o;return nr(()=>{a=o,o=(i==null?void 0:i())||[],We(()=>{t!==r(...o)&&(e(t,...o),a&&B$(r(...a),t)&&e(null,...a))})}),()=>{let l=s;for(;l!==n&&l.parent!==null&&l.parent.f&33554432;)l=l.parent;let c=()=>{o&&B$(r(...o),t)&&e(null,...o)},u=l.teardown;l.teardown=()=>{c(),u==null||u()}}}),t}m();m();m();m();m();m();function Di(t,e,r,i){var S,k;var n=!ss||(r&2)!==0,s=(r&8)!==0,a=(r&16)!==0,o=i,l=!0,c=()=>(l&&(l=!1,o=a?We(i):i),o);let u;if(s){var f=Jt in t||Lu in t;u=(k=(S=Ur(t,e))==null?void 0:S.set)!=null?k:f&&e in t?E=>t[e]=E:void 0}var d,h=!1;s?[d,h]=Qw(()=>t[e]):d=t[e],d===void 0&&i!==void 0&&(d=c(),u&&(n&&gR(e),u(d)));var p;if(n?p=()=>{var E=t[e];return E===void 0?c():(l=!0,E)}:p=()=>{var E=t[e];return E!==void 0&&(o=void 0),E===void 0?o:E},n&&!(r&4))return p;if(u){var g=t.$$legacy;return function(E,A){return arguments.length>0?((!n||!A||g||h)&&u(A?p():E),E):p()}}var v=!1,_=(r&1?eo:to)(()=>(v=!1,p()));I&&(_.label=e),s&&$(_);var b=Z;return function(E,A){if(arguments.length>0){let w=A?$(_):n&&s?Qe(E):E;return se(_,w),v=!0,o!==void 0&&(o=w),E}return li&&v||b.f&16384?_.v:$(_)}}m();m();m();function H$(t){return new O0(t)}var ps,Oi,O0=class{constructor(e){pe(this,ps);pe(this,Oi);var s,a;var r=new Map,i=(o,l)=>{var c=za(l,!1,!1);return r.set(o,c),c};let n=new Proxy({...e.props||{},$$events:{}},{get(o,l){var c;return $((c=r.get(l))!=null?c:i(l,Reflect.get(o,l)))},has(o,l){var c;return l===Lu?!0:($((c=r.get(l))!=null?c:i(l,Reflect.get(o,l))),Reflect.has(o,l))},set(o,l,c){var u;return se((u=r.get(l))!=null?u:i(l,c),c),Reflect.set(o,l,c)}});we(this,Oi,(e.hydrate?T0:Xs)(e.component,{target:e.target,anchor:e.anchor,props:n,context:e.context,intro:(s=e.intro)!=null?s:!1,recover:e.recover,transformError:e.transformError})),!kt&&(!((a=e==null?void 0:e.props)!=null&&a.$$host)||e.sync===!1)&&Za(),we(this,ps,n.$$events);for(let o of Object.keys(R(this,Oi)))o==="$set"||o==="$destroy"||o==="$on"||or(this,o,{get(){return R(this,Oi)[o]},set(l){R(this,Oi)[o]=l},enumerable:!0});R(this,Oi).$set=o=>{Object.assign(n,o)},R(this,Oi).$destroy=()=>{ds(R(this,Oi))}}$set(e){R(this,Oi).$set(e)}$on(e,r){R(this,ps)[e]=R(this,ps)[e]||[];let i=(...n)=>r.call(this,...n);return R(this,ps)[e].push(i),()=>{R(this,ps)[e]=R(this,ps)[e].filter(n=>n!==i)}}$destroy(){R(this,Oi).$destroy()}};ps=new WeakMap,Oi=new WeakMap;var dU;typeof HTMLElement=="function"&&(dU=class extends HTMLElement{constructor(e,r,i){super();Ve(this,"$$ctor");Ve(this,"$$s");Ve(this,"$$c");Ve(this,"$$cn",!1);Ve(this,"$$d",{});Ve(this,"$$r",!1);Ve(this,"$$p_d",{});Ve(this,"$$l",{});Ve(this,"$$l_u",new Map);Ve(this,"$$me");Ve(this,"$$shadowRoot",null);this.$$ctor=e,this.$$s=r,i&&(this.$$shadowRoot=this.attachShadow(i))}addEventListener(e,r,i){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(r),this.$$c){let n=this.$$c.$on(e,r);this.$$l_u.set(r,n)}super.addEventListener(e,r,i)}removeEventListener(e,r,i){if(super.removeEventListener(e,r,i),this.$$c){let n=this.$$l_u.get(r);n&&(n(),this.$$l_u.delete(r))}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(n){return s=>{let a=On("slot");n!=="default"&&(a.name=n),ce(s,a)}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;let r={},i=hU(this);for(let n of this.$$s)n in i&&(n==="default"&&!this.$$d.children?(this.$$d.children=e(n),r.default=!0):r[n]=e(n));for(let n of this.attributes){let s=this.$$g_p(n.name);s in this.$$d||(this.$$d[s]=L0(s,n.value,this.$$p_d,"toProp"))}for(let n in this.$$p_d)!(n in this.$$d)&&this[n]!==void 0&&(this.$$d[n]=this[n],delete this[n]);this.$$c=H$({component:this.$$ctor,target:this.$$shadowRoot||this,props:{...this.$$d,$$slots:r,$$host:this}}),this.$$me=y0(()=>{nr(()=>{var n;this.$$r=!0;for(let s of Hw(this.$$c)){if(!((n=this.$$p_d[s])!=null&&n.reflect))continue;this.$$d[s]=this.$$c[s];let a=L0(s,this.$$d[s],this.$$p_d,"toAttribute");a==null?this.removeAttribute(this.$$p_d[s].attribute||s):this.setAttribute(this.$$p_d[s].attribute||s,a)}this.$$r=!1})});for(let n in this.$$l)for(let s of this.$$l[n]){let a=this.$$c.$on(n,s);this.$$l_u.set(s,a)}this.$$l={}}}attributeChangedCallback(e,r,i){var n;this.$$r||(e=this.$$g_p(e),this.$$d[e]=L0(e,i,this.$$p_d,"toProp"),(n=this.$$c)==null||n.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$me(),this.$$c=void 0)})}$$g_p(e){return Hw(this.$$p_d).find(r=>this.$$p_d[r].attribute===e||!this.$$p_d[r].attribute&&r.toLowerCase()===e)||e}});function L0(t,e,r,i){var s;let n=(s=r[t])==null?void 0:s.type;if(e=n==="Boolean"&&typeof e!="boolean"?e!=null:e,!i||!r[t])return e;if(i==="toAttribute")switch(n){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e==null?null:e;default:return e}else switch(n){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function hU(t){let e={};return t.childNodes.forEach(r=>{e[r.slot||"default"]=!0}),e}m();m();function uo(t,e,r,i){function n(s){return s instanceof r?s:new r(function(a){a(s)})}return new(r||(r=Promise))(function(s,a){function o(u){try{c(i.next(u))}catch(f){a(f)}}function l(u){try{c(i.throw(u))}catch(f){a(f)}}function c(u){u.done?s(u.value):n(u.value).then(o,l)}c((i=i.apply(t,e||[])).next())})}var U0=require("obsidian");m();var B0=require("obsidian");m();function pU(t){let e=t-1;return e*e*e+1}var N0=!1;function Gn(t,{delay:e=0,duration:r=400,easing:i=pU,axis:n="y"}={}){let s=getComputedStyle(t);I&&!N0&&/(contents|inline|table)/.test(s.display)&&(N0=!0,Promise.resolve().then(()=>N0=!1),PR(s.display));let a=+s.opacity,o=n==="y"?"height":"width",l=parseFloat(s[o]),c=n==="y"?["top","bottom"]:["left","right"],u=c.map(_=>`${_[0].toUpperCase()}${_.slice(1)}`),f=parseFloat(s[`padding${u[0]}`]),d=parseFloat(s[`padding${u[1]}`]),h=parseFloat(s[`margin${u[0]}`]),p=parseFloat(s[`margin${u[1]}`]),g=parseFloat(s[`border${u[0]}Width`]),v=parseFloat(s[`border${u[1]}Width`]);return{delay:e,duration:r,easing:i,css:_=>`overflow: hidden;opacity: ${Math.min(_*20,1)*a};${o}: ${_*l}px;padding-${c[0]}: ${_*f}px;padding-${c[1]}: ${_*d}px;margin-${c[0]}: ${_*h}px;margin-${c[1]}: ${_*p}px;border-${c[0]}-width: ${_*g}px;border-${c[1]}-width: ${_*v}px;min-${o}: 0`}}m();var xp=require("obsidian");var mU=he('<div data-icon="go-to-file" aria-label="Open File" class="clickable-icon"></div>'),gU=he('<main class="tree-item nav-file svelte-1c0jiav"><div class="tree-item-self is-clickable nav-file-title svelte-1c0jiav"><div class="tree-item-inner nav-file-title-content"> </div> <div class="git-tools"><div class="buttons"><!></div> <span class="type"> </span></div></div></main>'),vU={hash:"svelte-1c0jiav",code:"main.svelte-1c0jiav .nav-file-title:where(.svelte-1c0jiav) {align-items:center;}"};function af(t,e){lt(e,!0),an(t,vU);let r=Qe([]),i=ut(()=>e.view.leaf.getRoot().side=="left"?"right":"left");mr(()=>{for(let b of r)b&&(0,xp.setIcon)(b,b.getAttr("data-icon"))});function n(b){b.stopPropagation(),ll(e.diff.path)?s(b):a(b)}function s(b){var S;b.stopPropagation();let k=e.view.app.vault.getAbstractFileByPath(e.diff.vaultPath);k instanceof xp.TFile&&((S=ji(e.view.app,b))===null||S===void 0||S.openFile(k).catch(E=>e.view.plugin.displayError(E)))}function a(b){var S;e.view.plugin.tools.openDiff({event:b,aFile:(S=e.diff.fromPath)!==null&&S!==void 0?S:e.diff.path,aRef:`${e.diff.hash}^`,bFile:e.diff.path,bRef:e.diff.hash})}var o=gU(),l=j(o),c=j(l),u=j(c,!0);G(c);var f=te(c,2),d=j(f),h=j(d);{var p=b=>{var S=mU();at(S,k=>r[0]=k,()=>r==null?void 0:r[0]),fi("auxclick",S,s),de("click",S,s),ce(b,S)},g=ut(()=>cl(e.diff.vaultPath,e.view.app));Re(h,b=>{$(g)&&b(p)})}G(d);var v=te(d,2),_=j(v,!0);G(v),G(f),G(l),G(o),Be(b=>{xe(l,"data-path",e.diff.vaultPath),xe(l,"data-tooltip-position",$(i)),xe(l,"aria-label",e.diff.vaultPath),je(u,b),xe(v,"data-type",e.diff.status),je(_,e.diff.status)},[()=>yn(e.diff.vaultPath)]),de("click",o,n),fi("auxclick",o,b=>{b.stopPropagation(),b.button==2?bn(e.view.app,b,e.diff.vaultPath,e.view.leaf,"git-history"):n(b)}),ce(t,o),ct()}Tt(["click"]);m();var wU=he("<div><!></div>"),_U=he('<div class="tree-item-children nav-folder-children"><!></div>'),bU=he('<div><div class="tree-item-self is-clickable nav-folder-title"><div data-icon="folder" style="padding-right: 5px; display: flex; "></div> <div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon right-triangle"><path d="M3 8L12 17L21 8"></path></svg></div> <div class="tree-item-inner nav-folder-title-content svelte-d9h7mp"> </div></div> <!></div>'),yU=he("<main></main>"),xU={hash:"svelte-d9h7mp",code:"main.svelte-d9h7mp .nav-folder-title-content:where(.svelte-d9h7mp) {display:flex;align-items:center;}"};function of(t,e){lt(e,!0),an(t,xU);let r=Di(e,"topLevel",3,!1),i=Di(e,"closed",15),n=ut(()=>e.view.leaf.getRoot().side=="left"?"right":"left");function s(l,c){l.stopPropagation(),i(i()[c.path]=!i()[c.path],!0)}var a=yU();let o;pi(a,21,()=>e.hierarchy.children,hi,(l,c)=>{var u=oo(),f=Mi(u);{var d=p=>{var g=wU(),v=j(g);af(v,{get diff(){return $(c).data},get view(){return e.view}}),G(g),ce(p,g)},h=p=>{var g=bU();let v;var _=j(g),b=te(j(_),2);let S;var k=te(b,2),E=j(k,!0);G(k),G(_);var A=te(_,2);{var w=x=>{var y=_U(),C=j(y);of(C,{get hierarchy(){return $(c)},get plugin(){return e.plugin},get view(){return e.view},get closed(){return i()},set closed(P){i(P)}}),G(y),sn(3,y,()=>Gn,()=>({duration:150})),ce(x,y)};Re(A,x=>{i()[$(c).path]||x(w)})}G(g),Be(()=>{v=gt(g,1,"tree-item nav-folder",null,v,{"is-collapsed":i()[$(c).path]}),xe(_,"data-tooltip-position",$(n)),xe(_,"aria-label",$(c).vaultPath),S=gt(b,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,S,{"is-collapsed":i()[$(c).path]}),je(E,$(c).title)}),de("click",_,x=>s(x,$(c))),ce(p,g)};Re(f,p=>{$(c).data?p(d):p(h,-1)})}ce(l,u)}),G(a),Be(()=>o=gt(a,1,"svelte-d9h7mp",null,o,{topLevel:r()})),ce(t,a),ct()}Tt(["click"]);var EU=he('<div class="git-ref"> </div>'),SU=he('<div class="git-author"> </div>'),kU=he('<div class="git-date"> </div>'),AU=he('<div class="tree-item-children nav-folder-children"><!></div>'),CU=he('<main><div><div class="tree-item-self is-clickable nav-folder-title"><div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon right-triangle"><path d="M3 8L12 17L21 8"></path></svg></div> <div><!> <!> <!> <div class="tree-item-inner nav-folder-title-content"> </div></div></div> <!></div></main>'),TU={hash:"svelte-1edsiy5",code:""};function H0(t,e){lt(e,!0),an(t,TU);let r=ut(()=>({title:"",path:"",vaultPath:"",children:e.plugin.gitManager.getTreeStructure(e.log.diff.files)})),i=ut(()=>e.view.leaf.getRoot().side=="left"?"right":"left"),n=Oe(!0),s=Oe(Qe({}));function a(x){let y=x.author.name;if(e.plugin.settings.authorInHistoryView=="full")return y;if(e.plugin.settings.authorInHistoryView=="initials")return y.split(" ").filter(P=>P.length>0).map(P=>P[0].toUpperCase()).join("")}var o=CU(),l=j(o);let c;var u=j(l),f=j(u);let d;var h=te(f,2),p=j(h);{var g=x=>{var y=EU(),C=j(y,!0);G(y),Be(P=>je(C,P),[()=>e.log.refs.join(", ")]),ce(x,y)};Re(p,x=>{e.log.refs.length>0&&x(g)})}var v=te(p,2);{var _=x=>{var y=SU(),C=j(y,!0);G(y),Be(P=>je(C,P),[()=>a(e.log)]),ce(x,y)};Re(v,x=>{var y;e.plugin.settings.authorInHistoryView!="hide"&&((y=e.log.author)!=null&&y.name)&&x(_)})}var b=te(v,2);{var S=x=>{var y=kU(),C=j(y,!0);G(y),Be(P=>je(C,P),[()=>(0,B0.moment)(e.log.date).format(e.plugin.settings.commitDateFormat)]),ce(x,y)};Re(b,x=>{e.plugin.settings.dateInHistoryView&&x(S)})}var k=te(b,2),E=j(k,!0);G(k),G(h),G(u);var A=te(u,2);{var w=x=>{var y=AU(),C=j(y);{var P=N=>{of(N,{get hierarchy(){return $(r)},get plugin(){return e.plugin},get view(){return e.view},topLevel:!0,get closed(){return $(s)},set closed(B){se(s,B,!0)}})},L=N=>{var B=oo(),ge=Mi(B);pi(ge,17,()=>e.log.diff.files,hi,(Le,ke)=>{af(Le,{get view(){return e.view},get diff(){return $(ke)}})}),ce(N,B)};Re(C,N=>{e.showTree?N(P):N(L,-1)})}G(y),sn(3,y,()=>Gn,()=>({duration:150})),ce(x,y)};Re(A,x=>{$(n)||x(w)})}G(l),G(o),Be(x=>{c=gt(l,1,"tree-item nav-folder",null,c,{"is-collapsed":$(n)}),xe(u,"aria-label",x),xe(u,"data-tooltip-position",$(i)),d=gt(f,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,d,{"is-collapsed":$(n)}),je(E,e.log.message)},[()=>{var x;return`${e.log.refs.length>0?e.log.refs.join(", ")+` +`:""}${(x=e.log.author)==null?void 0:x.name} +${(0,B0.moment)(e.log.date).format(e.plugin.settings.commitDateFormat)} +${e.log.message}`}]),de("click",u,()=>se(n,!$(n))),ce(t,o),ct()}Tt(["click"]);var PU=he('<div class="tree-item nav-folder mod-root"></div>'),RU=he('<main class="git-view"><div class="nav-header"><div class="nav-buttons-container"><div id="layoutChange" class="clickable-icon nav-action-button" aria-label="Change Layout"></div> <div id="refresh" data-icon="refresh-cw" aria-label="Refresh"></div></div></div> <div class="nav-files-container" style="position: relative;"><!> <div id="sentinel"></div> <div style="margin-bottom:40px"></div></div></main>'),$U={hash:"svelte-12n6twc",code:""};function G0(t,e){lt(e,!0),an(t,$U);let r=Di(e,"plugin",15),i=Oe(!1),n=Qe([]),s=Oe(void 0),a=Oe(Qe(r().settings.treeStructure)),o;mr(()=>{o&&o.empty()}),co(()=>{e.view.registerEvent(e.view.app.workspace.on("obsidian-git:head-change",()=>void c().catch(console.error)))}),mr(()=>{n.forEach(k=>(0,U0.setIcon)(k,k.getAttr("data-icon")))}),co(()=>{let k=new IntersectionObserver(A=>{A[0].isIntersecting&&!$(i)&&u().catch(console.error)}),E=activeDocument.querySelector("#sentinel");return E&&k.observe(E),()=>{k.disconnect()}}),c().catch(console.error);function l(){c().catch(console.error)}function c(){return uo(this,void 0,void 0,function*(){var k;if(!r().gitReady){se(s,void 0);return}se(i,!0);let E=r().gitManager instanceof Se,A;((k=$(s)===null||$(s)===void 0?void 0:$(s).length)!==null&&k!==void 0?k:0)==0?A=E?50:10:A=$(s).length,se(s,yield r().gitManager.log(void 0,!1,A),!0),se(i,!1)})}function u(){return uo(this,void 0,void 0,function*(){var k;if(!r().gitReady||$(s)===void 0)return;se(i,!0);let A=r().gitManager instanceof Se?50:10,w=yield r().gitManager.log(void 0,!1,A,(k=$(s).last())===null||k===void 0?void 0:k.hash);$(s).push(...w.slice(1)),se(i,!1)})}var f=RU(),d=j(f),h=j(d),p=j(h);at(p,k=>n[0]=k,()=>n==null?void 0:n[0]);var g=te(p,2);let v;at(g,k=>n[1]=k,()=>n==null?void 0:n[1]),G(h),G(d);var _=te(d,2),b=j(_);{var S=k=>{var E=PU();pi(E,21,()=>$(s),hi,(A,w)=>{H0(A,{get view(){return e.view},get showTree(){return $(a)},get log(){return $(w)},get plugin(){return r()}})}),G(E),ce(k,E)};Re(b,k=>{$(s)&&k(S)})}Ga(4),G(_),G(f),Be(()=>{xe(p,"data-icon",$(a)?"list":"folder"),v=gt(g,1,"clickable-icon nav-action-button",null,v,{loading:$(i)})}),de("click",p,()=>{se(a,!$(a)),(0,U0.setIcon)(n[0],$(a)?"list":"folder"),r(r().settings.treeStructure=$(a),!0),r().saveSettings()}),de("click",g,l),ce(t,f),ct()}Tt(["click"]);var lf=class extends U$.ItemView{constructor(e,r){super(e),this.plugin=r,this.hoverPopover=null}getViewType(){return bi.type}getDisplayText(){return bi.name}getIcon(){return bi.icon}onClose(){return this._view&&ds(this._view),super.onClose()}reload(){this._view&&ds(this._view),this._view=Xs(G0,{target:this.contentEl,props:{plugin:this.plugin,view:this}})}onOpen(){return this.reload(),super.onOpen()}};m();var G$=require("obsidian"),Ep=class extends G$.FuzzySuggestModal{constructor(r,i){super(r.app);this.branches=i;this.setPlaceholder("Select branch to checkout")}getItems(){return this.branches}getItemText(r){return r}onChooseItem(r,i){this.resolve(r)}openAndGetReslt(){return new Promise(r=>{this.resolve=r,this.open()})}onClose(){new Promise(r=>window.setTimeout(r,10)).then(()=>{this.resolve&&this.resolve(void 0)})}};m();var z$=require("obsidian");m();var po=require("obsidian");m();var cf=require("obsidian");m();var j$=require("obsidian");var oc=class extends j$.Modal{constructor({app:r,path:i,filesToDeleteCount:n,filesToDiscardCount:s}){super(r);this.resolve=null;this.path=i,this.deleteCount=n,this.discardCount=s}openAndGetResult(){return this.open(),new Promise(r=>{this.resolve=r})}onOpen(){let r=this.deleteCount+this.discardCount,{contentEl:i,titleEl:n}=this,s="";this.path!=""&&(r>1?s=`files in "${this.path}"`:s=`"${this.path}"`),n.setText(`${this.discardCount==0?"Delete":"Discard"} ${s}`),this.deleteCount>0&&i.createEl("p").setText(`Are you sure you want to DELETE the ${cu(this.deleteCount,"untracked file")}? They are deleted according to your Obsidian trash settting.`),this.discardCount>0&&i.createEl("p").setText(`Are you sure you want to discard ALL changes in ${cu(this.discardCount,"tracked file")}?`);let a=i.createDiv({cls:"modal-button-container"});if(this.deleteCount>0){let l=a.createEl("button",{cls:"mod-warning",text:`${this.discardCount>0?"Discard":"Delete"} all ${cu(r,"file")}`});l.addEventListener("click",()=>{this.resolve&&this.resolve("delete"),this.close()}),l.addEventListener("keypress",()=>{this.resolve&&this.resolve("delete"),this.close()})}if(this.discardCount>0){let l=a.createEl("button",{cls:"mod-warning",text:`Discard all ${cu(this.discardCount,"tracked file")}`});l.addEventListener("click",()=>{this.resolve&&this.resolve("discard"),this.close()}),l.addEventListener("keypress",()=>{this.resolve&&this.resolve("discard"),this.close()})}let o=a.createEl("button",{text:"Cancel"});o.addEventListener("click",()=>(this.resolve&&this.resolve(!1),this.close())),o.addEventListener("keypress",()=>(this.resolve&&this.resolve(!1),this.close()))}onClose(){let{contentEl:r}=this;r.empty()}};var FU=he('<div data-icon="go-to-file" aria-label="Open File" class="clickable-icon"></div>'),IU=he('<main class="tree-item nav-file"><div class="tree-item-self is-clickable nav-file-title"><div class="tree-item-inner nav-file-title-content"> </div> <div class="git-tools"><div class="buttons"><!> <div data-icon="undo" aria-label="Discard" class="clickable-icon"></div> <div data-icon="plus" aria-label="Stage" class="clickable-icon"></div></div> <div class="type"> </div></div></div></main>');function uf(t,e){lt(e,!0);let r=Qe([]),i=ut(()=>e.view.leaf.getRoot().side=="left"?"right":"left");mr(()=>{for(let w of r)w&&(0,cf.setIcon)(w,w.getAttr("data-icon"))});function n(w){w.stopPropagation(),ll(e.change.path)?a(w):l(w)}function s(w){e.view.app.vault.getAbstractFileByPath(e.change.vaultPath)&&ul(e.view.app,w,e.view,e.change.vaultPath)}function a(w){var x;w.stopPropagation();let y=e.view.app.vault.getAbstractFileByPath(e.change.vaultPath);y instanceof cf.TFile&&((x=ji(e.view.app,w))===null||x===void 0||x.openFile(y).catch(C=>e.view.plugin.displayError(C)))}function o(w){w.stopPropagation(),e.manager.stage(e.change.path,!1).catch(x=>e.view.plugin.displayError(x)).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")})}function l(w){w.stopPropagation(),e.view.plugin.tools.openDiff({aFile:e.change.path,aRef:"",event:w})}function c(w){w.stopPropagation();let x=e.change.workingDir=="U";new oc({app:e.view.app,filesToDeleteCount:x?1:0,filesToDiscardCount:x?0:1,path:e.change.vaultPath}).openAndGetResult().then(y=>uo(this,void 0,void 0,function*(){if(y=="delete"){let C=e.view.app.vault.getAbstractFileByPath(e.change.vaultPath);C instanceof cf.TFile?yield e.view.app.fileManager.trashFile(C):yield e.view.app.vault.adapter.remove(e.change.vaultPath)}else y=="discard"&&(yield e.manager.discard(e.change.path).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")}));e.view.app.workspace.trigger("obsidian-git:refresh")}),y=>e.view.plugin.displayError(y))}var u=IU(),f=j(u),d=j(f),h=j(d,!0);G(d);var p=te(d,2),g=j(p),v=j(g);{var _=w=>{var x=FU();at(x,y=>r[0]=y,()=>r==null?void 0:r[0]),fi("auxclick",x,a),de("click",x,a),ce(w,x)},b=ut(()=>cl(e.change.vaultPath,e.view.app));Re(v,w=>{$(b)&&w(_)})}var S=te(v,2);at(S,w=>r[1]=w,()=>r==null?void 0:r[1]);var k=te(S,2);at(k,w=>r[2]=w,()=>r==null?void 0:r[2]),G(g);var E=te(g,2),A=j(E,!0);G(E),G(p),G(f),G(u),Be(w=>{xe(f,"data-path",e.change.vaultPath),xe(f,"data-tooltip-position",$(i)),xe(f,"aria-label",e.change.vaultPath),je(h,w),xe(E,"data-type",e.change.workingDir),je(A,e.change.workingDir)},[()=>yn(e.change.vaultPath)]),de("mouseover",u,s),de("click",u,n),fi("auxclick",u,w=>{w.stopPropagation(),w.button==2?bn(e.view.app,w,e.change.vaultPath,e.view.leaf,"git-source-control"):n(w)}),de("click",S,c),de("click",k,o),ce(t,u),ct()}Tt(["mouseover","click"]);m();var V$=require("obsidian");var MU=he('<main class="tree-item nav-file"><div class="tree-item-self is-clickable nav-file-title"><div class="tree-item-inner nav-file-title-content"> </div> <div class="git-tools"><span class="type"> </span></div></div></main>');function ff(t,e){lt(e,!0);let r=ut(()=>e.view.leaf.getRoot().side=="left"?"right":"left");function i(d){e.view.app.vault.getAbstractFileByPath(e.change.vaultPath)&&ul(e.view.app,d,e.view,e.change.vaultPath)}function n(d){var h;d.stopPropagation();let p=e.view.app.vault.getAbstractFileByPath(e.change.vaultPath);p instanceof V$.TFile&&((h=ji(e.view.app,d))===null||h===void 0||h.openFile(p).catch(g=>e.view.plugin.displayError(g)))}var s=MU(),a=j(s),o=j(a),l=j(o,!0);G(o);var c=te(o,2),u=j(c),f=j(u,!0);G(u),G(c),G(a),G(s),Be(d=>{xe(a,"data-path",e.change.vaultPath),xe(a,"data-tooltip-position",$(r)),xe(a,"aria-label",e.change.vaultPath),je(l,d),xe(u,"data-type",e.change.workingDir),je(f,e.change.workingDir)},[()=>yn(e.change.vaultPath)]),de("mouseover",s,i),de("click",s,n),fi("auxclick",s,d=>{d.stopPropagation(),d.button==2?bn(e.view.app,d,e.change.vaultPath,e.view.leaf,"git-source-control"):n(d)}),ce(t,s),ct()}Tt(["mouseover","click"]);m();var Sp=require("obsidian");var DU=he('<div data-icon="go-to-file" aria-label="Open File" class="clickable-icon"></div>'),OU=he('<main class="tree-item nav-file"><div class="tree-item-self is-clickable nav-file-title"><div class="tree-item-inner nav-file-title-content"> </div> <div class="git-tools"><div class="buttons"><!> <div data-icon="minus" aria-label="Unstage" class="clickable-icon"></div></div> <div class="type"> </div></div></div></main>');function df(t,e){lt(e,!0);let r=Qe([]),i=ut(()=>e.view.leaf.getRoot().side=="left"?"right":"left");mr(()=>{for(let E of r)E&&(0,Sp.setIcon)(E,E.getAttr("data-icon"))});function n(E){E.stopPropagation(),ll(e.change.path)?a(E):o(E)}function s(E){e.view.app.vault.getFileByPath(e.change.vaultPath)&&ul(e.view.app,E,e.view,e.change.vaultPath)}function a(E){var A;E.stopPropagation();let w=e.view.app.vault.getAbstractFileByPath(e.change.vaultPath);w instanceof Sp.TFile&&((A=ji(e.view.app,E))===null||A===void 0||A.openFile(w).catch(x=>e.view.plugin.displayError(x)))}function o(E){var A;E.stopPropagation(),e.view.plugin.tools.openDiff({aFile:(A=e.change.from)!==null&&A!==void 0?A:e.change.path,bFile:e.change.path,aRef:"HEAD",bRef:"",event:E})}function l(E){E.stopPropagation(),e.manager.unstage(e.change.path,!1).catch(A=>e.view.plugin.displayError(A)).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")})}var c=OU(),u=j(c),f=j(u),d=j(f,!0);G(f);var h=te(f,2),p=j(h),g=j(p);{var v=E=>{var A=DU();at(A,w=>r[0]=w,()=>r==null?void 0:r[0]),de("click",A,a),ce(E,A)},_=ut(()=>cl(e.change.vaultPath,e.view.app));Re(g,E=>{$(_)&&E(v)})}var b=te(g,2);at(b,E=>r[1]=E,()=>r==null?void 0:r[1]),G(p);var S=te(p,2),k=j(S,!0);G(S),G(h),G(u),G(c),Be(E=>{xe(u,"data-path",e.change.vaultPath),xe(u,"data-tooltip-position",$(i)),xe(u,"aria-label",e.change.vaultPath),je(d,E),xe(S,"data-type",e.change.index),je(k,e.change.index)},[()=>yn(e.change.vaultPath)]),de("mouseover",c,s),de("click",c,n),fi("auxclick",c,E=>{E.stopPropagation(),E.button==2?bn(e.view.app,E,e.change.vaultPath,e.view.leaf,"git-source-control"):n(E)}),de("click",b,l),ce(t,c),ct()}Tt(["mouseover","click"]);m();m();var LU=he('<div class="tree-item nav-file"><div class="tree-item-self nav-file-title"><div class="tree-item-inner nav-file-title-content"> </div></div></div>'),NU=he("<main><!></main>");function fo(t,e){lt(e,!0);var r=NU(),i=j(r);{var n=s=>{var a=LU(),o=j(a),l=j(o),c=j(l,!0);G(l),G(o),G(a),Be(()=>{xe(o,"aria-label","And "+(e.files.length-500)+" more files"),je(c,"And "+(e.files.length-500)+" more files")}),ce(s,a)};Re(i,s=>{e.files.length>500&&s(n)})}G(r),ce(t,r),ct()}var HU=he("<div><!></div>"),UU=he('<div data-icon="minus" aria-label="Unstage" class="clickable-icon"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-minus"><line x1="4" y1="9" x2="14" y2="9"></line></svg></div>'),GU=he('<div data-icon="undo" aria-label="Discard" class="clickable-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-undo"><path d="M3 7v6h6"></path><path d="M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13"></path></svg></div> <div data-icon="plus" aria-label="Stage" class="clickable-icon"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-plus"><line x1="9" y1="4" x2="9" y2="14"></line><line x1="4" y1="9" x2="14" y2="9"></line></svg></div>',1),jU=he('<div class="tree-item-children nav-folder-children"><!></div>'),VU=he('<div><div class="tree-item-self is-clickable nav-folder-title"><div data-icon="folder" style="padding-right: 5px; display: flex; "></div> <div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon right-triangle"><path d="M3 8L12 17L21 8"></path></svg></div> <div class="tree-item-inner nav-folder-title-content"> </div> <div class="git-tools"><div class="buttons"><!> <div style="width:11px"></div></div></div></div> <!></div>'),zU=he("<main><!> <!></main>");function ho(t,e){lt(e,!0);let r=Di(e,"topLevel",3,!1),i=Di(e,"closed",15);co(()=>{var h,p;for(let g of e.hierarchy.children)((p=(h=g.children)===null||h===void 0?void 0:h.length)!==null&&p!==void 0?p:0)>100&&i(i()[g.title]=!0,!0)});let n=ut(()=>e.view.leaf.getRoot().side=="left"?"right":"left");function s(h,p){h.stopPropagation(),e.plugin.gitManager.stageAll({dir:p}).catch(g=>e.plugin.displayError(g)).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")})}function a(h,p){h.stopPropagation(),e.plugin.gitManager.unstageAll({dir:p}).catch(g=>e.plugin.displayError(g)).finally(()=>{e.view.app.workspace.trigger("obsidian-git:refresh")})}function o(h,p){h.stopPropagation(),e.plugin.discardAll(p.vaultPath)}function l(h,p){h.stopPropagation(),i(i()[p.path]=!i()[p.path],!0)}var c=zU();let u;var f=j(c);pi(f,17,()=>uu(e.hierarchy.children,500),hi,(h,p)=>{var g=oo(),v=Mi(g);{var _=S=>{var k=HU(),E=j(k);{var A=y=>{df(y,{get change(){return $(p).data},get manager(){return e.plugin.gitManager},get view(){return e.view}})},w=y=>{uf(y,{get change(){return $(p).data},get manager(){return e.plugin.gitManager},get view(){return e.view}})},x=y=>{ff(y,{get change(){return $(p).data},get view(){return e.view}})};Re(E,y=>{e.fileType==0?y(A):e.fileType==1?y(w,1):e.fileType==2&&y(x,2)})}G(k),ce(S,k)},b=S=>{var k=VU();let E;var A=j(k),w=te(j(A),2);let x;var y=te(w,2),C=j(y,!0);G(y);var P=te(y,2),L=j(P),N=j(L);{var B=ne=>{var Ee=UU();de("click",Ee,_e=>a(_e,$(p).path)),ce(ne,Ee)},ge=ne=>{var Ee=GU(),_e=Mi(Ee),z=te(_e,2);de("click",_e,X=>o(X,$(p))),de("click",z,X=>s(X,$(p).path)),ce(ne,Ee)};Re(N,ne=>{e.fileType==0?ne(B):ne(ge,-1)})}Ga(2),G(L),G(P),G(A);var Le=te(A,2);{var ke=ne=>{var Ee=jU(),_e=j(Ee);ho(_e,{get hierarchy(){return $(p)},get plugin(){return e.plugin},get view(){return e.view},get fileType(){return e.fileType},get closed(){return i()},set closed(z){i(z)}}),G(Ee),sn(3,Ee,()=>Gn,()=>({duration:150})),ce(ne,Ee)};Re(Le,ne=>{i()[$(p).path]||ne(ke)})}G(k),Be(()=>{E=gt(k,1,"tree-item nav-folder",null,E,{"is-collapsed":i()[$(p).path]}),xe(A,"data-tooltip-position",$(n)),xe(A,"aria-label",$(p).vaultPath),x=gt(w,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,x,{"is-collapsed":i()[$(p).path]}),je(C,$(p).title)}),fi("auxclick",k,ne=>bn(e.view.app,ne,$(p).vaultPath,e.view.leaf,"git-source-control")),de("click",A,ne=>l(ne,$(p))),ce(S,k)};Re(v,S=>{$(p).data?S(_):S(b,-1)})}ce(h,g)});var d=te(f,2);fo(d,{get files(){return e.hierarchy.children}}),G(c),Be(()=>u=gt(c,1,"",null,u,{topLevel:r()})),ce(t,c),ct()}Tt(["click"]);var WU=he('<div class="git-commit-msg-clear-button svelte-5wq9p"></div>'),qU=he("<!> <!>",1),YU=he('<div class="tree-item-children nav-folder-children"><!></div>'),XU=he("<!> <!>",1),ZU=he('<div class="tree-item-children nav-folder-children"><!></div>'),KU=he("<!> <!>",1),QU=he('<div class="tree-item-children nav-folder-children"><!></div>'),JU=he('<div><div class="tree-item-self is-clickable nav-folder-title svelte-5wq9p"><div class="tree-item-icon nav-folder-collapse-indicator collapse-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon right-triangle"><path d="M3 8L12 17L21 8"></path></svg></div> <div class="tree-item-inner nav-folder-title-content">Recently Pulled Files</div> <span class="tree-item-flair"> </span></div> <!></div>'),eG=he('<div class="tree-item nav-folder mod-root"><div><div class="tree-item-self is-clickable nav-folder-title svelte-5wq9p"><div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon right-triangle"><path d="M3 8L12 17L21 8"></path></svg></div> <div class="tree-item-inner nav-folder-title-content">Staged Changes</div> <div class="git-tools svelte-5wq9p"><div class="buttons"><div data-icon="minus" aria-label="Unstage" class="clickable-icon"><svg width="18" height="18" viewBox="0 0 18 18" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-minus"><line x1="4" y1="9" x2="14" y2="9"></line></svg></div></div> <div class="files-count svelte-5wq9p"> </div></div></div> <!></div> <div><div class="tree-item-self is-clickable nav-folder-title svelte-5wq9p"><div><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon right-triangle"><path d="M3 8L12 17L21 8"></path></svg></div> <div class="tree-item-inner nav-folder-title-content">Changes</div> <div class="git-tools svelte-5wq9p"><div class="buttons"><div data-icon="undo" aria-label="Discard" class="clickable-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-undo"><path d="M3 7v6h6"></path><path d="M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13"></path></svg></div> <div data-icon="plus" aria-label="Stage" class="clickable-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-plus"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div></div> <div class="files-count svelte-5wq9p"> </div></div></div> <!></div> <!></div>'),tG=he('<main class="git-view svelte-5wq9p"><div class="nav-header"><div class="nav-buttons-container"><div id="backup-btn" data-icon="arrow-up-circle" class="clickable-icon nav-action-button" aria-label="Commit-and-sync"></div> <div id="commit-btn" data-icon="check" class="clickable-icon nav-action-button" aria-label="Commit"></div> <div id="stage-all" class="clickable-icon nav-action-button" data-icon="plus-circle" aria-label="Stage all"></div> <div id="unstage-all" class="clickable-icon nav-action-button" data-icon="minus-circle" aria-label="Unstage all"></div> <div id="push" class="clickable-icon nav-action-button" data-icon="upload" aria-label="Push"></div> <div id="pull" class="clickable-icon nav-action-button" data-icon="download" aria-label="Pull"></div> <div id="layoutChange" class="clickable-icon nav-action-button" aria-label="Change Layout"></div> <div id="refresh" data-icon="refresh-cw" aria-label="Refresh"></div></div></div> <div class="git-commit-msg svelte-5wq9p"><textarea class="commit-msg-input svelte-5wq9p" spellcheck="true" placeholder="Commit Message"></textarea> <!></div> <div class="nav-files-container" style="position: relative;"><!></div></main>'),rG={hash:"svelte-5wq9p",code:`.commit-msg-input.svelte-5wq9p {width:100%;overflow:hidden;resize:none;padding:7px 5px;background-color:var(--background-modifier-form-field);}.git-commit-msg.svelte-5wq9p {position:relative;padding:0;width:calc(100% - var(--size-4-8));margin:4px auto;}main.svelte-5wq9p .git-tools:where(.svelte-5wq9p) .files-count:where(.svelte-5wq9p) {padding-left:var(--size-2-1);width:11px;display:flex;align-items:center;justify-content:center;}.nav-folder-title.svelte-5wq9p {align-items:center;}.git-commit-msg-clear-button.svelte-5wq9p {position:absolute;background:transparent;border-radius:50%;color:var(--search-clear-button-color);cursor:var(--cursor);top:-4px;right:2px;bottom:0px;line-height:0;height:var(--input-height);width:28px;margin:auto;padding:0 0;text-align:center;display:flex;justify-content:center;align-items:center;transition:color 0.15s ease-in-out;}.git-commit-msg-clear-button.svelte-5wq9p:after {content:"";height:var(--search-clear-button-size);width:var(--search-clear-button-size);display:block;background-color:currentColor;mask-image:url("data:image/svg+xml,<svg viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6 12C9.31371 12 12 9.31371 12 6C12 2.68629 9.31371 0 6 0C2.68629 0 0 2.68629 0 6C0 9.31371 2.68629 12 6 12ZM3.8705 3.09766L6.00003 5.22718L8.12955 3.09766L8.9024 3.8705L6.77287 6.00003L8.9024 8.12955L8.12955 8.9024L6.00003 6.77287L3.8705 8.9024L3.09766 8.12955L5.22718 6.00003L3.09766 3.8705L3.8705 3.09766Z' fill='currentColor'/></svg>");mask-repeat:no-repeat;-webkit-mask-image:url("data:image/svg+xml,<svg viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M6 12C9.31371 12 12 9.31371 12 6C12 2.68629 9.31371 0 6 0C2.68629 0 0 2.68629 0 6C0 9.31371 2.68629 12 6 12ZM3.8705 3.09766L6.00003 5.22718L8.12955 3.09766L8.9024 3.8705L6.77287 6.00003L8.9024 8.12955L8.12955 8.9024L6.00003 6.77287L3.8705 8.9024L3.09766 8.12955L5.22718 6.00003L3.09766 3.8705L3.8705 3.09766Z' fill='currentColor'/></svg>");-webkit-mask-repeat:no-repeat;}`};function j0(t,e){lt(e,!0),an(t,rG);let r=Di(e,"plugin",7),i=Di(e,"view",7),n=Oe(!1),s=Oe(void 0),a=Oe(Qe([])),o=ut(()=>r().settings.commitMessage),l=Qe([]),c=Oe(void 0),u=Oe(void 0),f=Oe(void 0),d=Oe(!0),h=Oe(!0),p=Oe(!0),g=Oe(0),v=Oe(Qe({})),_=Oe(Qe({})),b=Oe(Qe({})),S=ut(()=>r().settings.treeStructure);co(()=>{i().registerEvent(i().app.workspace.on("obsidian-git:loading-status",()=>se(n,!0))),i().registerEvent(i().app.workspace.on("obsidian-git:status-changed",()=>void A().catch(console.error))),i().plugin.cachedStatus==null?i().plugin.refresh().catch(console.error):A().catch(console.error),i().scope=new po.Scope(r().app.scope),i().scope.register(["Ctrl"],"Enter",M=>E())}),mr(()=>{l.forEach(M=>(0,po.setIcon)(M,M.getAttr("data-icon")))}),mr(()=>{l.forEach(M=>{var ae,Te;!M||M.id!="push"||(po.Platform.isMobile?(M.removeClass("button-border"),$(g)>0&&M.addClass("button-border")):((ae=M.firstElementChild)===null||ae===void 0||ae.removeAttribute("color"),$(g)>0&&((Te=M.firstElementChild)===null||Te===void 0||Te.setAttr("color","var(--text-accent)"))))})});function k(){if(se(n,!0),$(s)){let M=$(s).staged.length>0;r().promiseQueue.addTask(()=>r().commit({fromAuto:!1,commitMessage:$(o),onlyStaged:M}).then(()=>se(o,r().settings.commitMessage)).finally(w))}}function E(){if(se(n,!0),$(s)){let M=$(s).staged.length>0;r().promiseQueue.addTask(()=>r().commitAndSync({fromAutoBackup:!1,commitMessage:$(o),onlyStaged:M}).then(()=>{se(o,r().settings.commitMessage)}).finally(w))}}function A(){return uo(this,void 0,void 0,function*(){if(!r().gitReady){se(s,void 0);return}if(se(g,yield r().gitManager.getUnpushedCommits(),!0),se(s,r().cachedStatus,!0),se(n,!1),r().lastPulledFiles&&r().lastPulledFiles!=$(a)&&(se(a,r().lastPulledFiles,!0),se(f,{title:"",path:"",vaultPath:"",children:r().gitManager.getTreeStructure($(a))},!0)),$(s)){let M=(ae,Te)=>ae.vaultPath.split("/").last().localeCompare(yn(Te.vaultPath));$(s).changed.sort(M),$(s).staged.sort(M),se(c,{title:"",path:"",vaultPath:"",children:r().gitManager.getTreeStructure($(s).changed)},!0),se(u,{title:"",path:"",vaultPath:"",children:r().gitManager.getTreeStructure($(s).staged)},!0)}else se(c,void 0),se(u,void 0)})}function w(){i().app.workspace.trigger("obsidian-git:refresh")}function x(M){M.stopPropagation(),se(n,!0),r().promiseQueue.addTask(()=>r().gitManager.stageAll({status:$(s)}).finally(w))}function y(M){M.stopPropagation(),se(n,!0),r().promiseQueue.addTask(()=>r().gitManager.unstageAll({status:$(s)}).finally(w))}function C(){se(n,!0),r().promiseQueue.addTask(()=>r().push().finally(w))}function P(){se(n,!0),r().promiseQueue.addTask(()=>r().pullChangesFromRemote().finally(w))}function L(M){M.stopPropagation(),r().discardAll()}let N=ut(()=>($(o).match(/\n/g)||[]).length+1||1);var B=tG(),ge=j(B),Le=j(ge),ke=j(Le);at(ke,M=>l[0]=M,()=>l==null?void 0:l[0]);var ne=te(ke,2);at(ne,M=>l[1]=M,()=>l==null?void 0:l[1]);var Ee=te(ne,2);at(Ee,M=>l[2]=M,()=>l==null?void 0:l[2]);var _e=te(Ee,2);at(_e,M=>l[3]=M,()=>l==null?void 0:l[3]);var z=te(_e,2);at(z,M=>l[4]=M,()=>l==null?void 0:l[4]);var X=te(z,2);at(X,M=>l[5]=M,()=>l==null?void 0:l[5]);var V=te(X,2);at(V,M=>l[6]=M,()=>l==null?void 0:l[6]);var Ne=te(V,2);let gr;at(Ne,M=>l[7]=M,()=>l==null?void 0:l[7]),G(Le),G(ge);var Nt=te(ge,2),Fe=j(Nt);v0(Fe);var Pt=te(Fe,2);{var Rt=M=>{var ae=WU();xe(ae,"aria-label","Clear"),de("click",ae,()=>se(o,"")),ce(M,ae)};Re(Pt,M=>{$(o)&&M(Rt)})}G(Nt);var Ye=te(Nt,2),J=j(Ye);{var D=M=>{var ae=eG(),Te=j(ae);let Bt;var Tr=j(Te),vo=j(Tr);let Y0;var X0=te(vo,4),Lp=j(X0),Z0=j(Lp);at(Z0,vr=>l[8]=vr,()=>l==null?void 0:l[8]),G(Lp);var K0=te(Lp,2),eF=j(K0,!0);G(K0),G(X0),G(Tr);var tF=te(Tr,2);{var rF=vr=>{var Pr=YU(),wo=j(Pr);{var ms=wr=>{ho(wr,{get hierarchy(){return $(u)},get plugin(){return r()},get view(){return i()},get fileType(){return 0},topLevel:!0,get closed(){return $(v)},set closed(Li){se(v,Li,!0)}})},_o=wr=>{var Li=qU(),Ks=Mi(Li);pi(Ks,17,()=>uu($(s).staged,500),hi,(gs,cc)=>{df(gs,{get change(){return $(cc)},get view(){return i()},get manager(){return r().gitManager}})});var Qs=te(Ks,2);fo(Qs,{get files(){return $(s).staged}}),ce(wr,Li)};Re(wo,wr=>{$(S)?wr(ms):wr(_o,-1)})}G(Pr),sn(3,Pr,()=>Gn,()=>({duration:150})),ce(vr,Pr)};Re(tF,vr=>{$(h)&&vr(rF)})}G(Te);var pf=te(Te,2);let Q0;var mf=j(pf),J0=j(mf);let e_;var t_=te(J0,4),Np=j(t_),r_=j(Np),i_=te(r_,2);at(i_,vr=>l[9]=vr,()=>l==null?void 0:l[9]),G(Np);var n_=te(Np,2),iF=j(n_,!0);G(n_),G(t_),G(mf);var nF=te(mf,2);{var sF=vr=>{var Pr=ZU(),wo=j(Pr);{var ms=wr=>{ho(wr,{get hierarchy(){return $(c)},get plugin(){return r()},get view(){return i()},get fileType(){return 1},topLevel:!0,get closed(){return $(_)},set closed(Li){se(_,Li,!0)}})},_o=wr=>{var Li=XU(),Ks=Mi(Li);pi(Ks,17,()=>uu($(s).changed,500),hi,(gs,cc)=>{uf(gs,{get change(){return $(cc)},get view(){return i()},get manager(){return r().gitManager}})});var Qs=te(Ks,2);fo(Qs,{get files(){return $(s).changed}}),ce(wr,Li)};Re(wo,wr=>{$(S)?wr(ms):wr(_o,-1)})}G(Pr),sn(3,Pr,()=>Gn,()=>({duration:150})),ce(vr,Pr)};Re(nF,vr=>{$(d)&&vr(sF)})}G(pf);var aF=te(pf,2);{var oF=vr=>{var Pr=JU();let wo;var ms=j(Pr),_o=te(j(ms),4),wr=j(_o,!0);G(_o),G(ms);var Li=te(ms,2);{var Ks=Qs=>{var gs=QU(),cc=j(gs);{var lF=bo=>{ho(bo,{get hierarchy(){return $(f)},get plugin(){return r()},get view(){return i()},get fileType(){return 2},topLevel:!0,get closed(){return $(b)},set closed(gf){se(b,gf,!0)}})},cF=bo=>{var gf=KU(),s_=Mi(gf);pi(s_,17,()=>$(a),hi,(fF,dF)=>{ff(fF,{get change(){return $(dF)},get view(){return i()}})});var uF=te(s_,2);fo(uF,{get files(){return $(a)}}),ce(bo,gf)};Re(cc,bo=>{$(S)?bo(lF):bo(cF,-1)})}G(gs),sn(3,gs,()=>Gn,()=>({duration:150})),ce(Qs,gs)};Re(Li,Qs=>{$(p)&&Qs(Ks)})}G(Pr),Be(()=>{wo=gt(Pr,1,"pulled nav-folder",null,wo,{"is-collapsed":!$(p)}),je(wr,$(a).length)}),de("click",ms,()=>se(p,!$(p))),ce(vr,Pr)};Re(aF,vr=>{$(a).length>0&&$(f)&&vr(oF)})}G(ae),Be(()=>{Bt=gt(Te,1,"staged tree-item nav-folder",null,Bt,{"is-collapsed":!$(h)}),Y0=gt(vo,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,Y0,{"is-collapsed":!$(h)}),je(eF,$(s).staged.length),Q0=gt(pf,1,"changes tree-item nav-folder",null,Q0,{"is-collapsed":!$(d)}),e_=gt(J0,1,"tree-item-icon nav-folder-collapse-indicator collapse-icon",null,e_,{"is-collapsed":!$(d)}),je(iF,$(s).changed.length)}),de("click",Tr,()=>se(h,!$(h))),de("click",Z0,y),de("click",mf,()=>se(d,!$(d))),de("click",r_,L),de("click",i_,x),ce(M,ae)};Re(J,M=>{$(s)&&$(u)&&$(c)&&M(D)})}G(Ye),G(B),Be(()=>{xe(B,"data-type",Kt.type),xe(V,"data-icon",$(S)?"list":"folder"),gr=gt(Ne,1,"clickable-icon nav-action-button",null,gr,{loading:$(n)}),xe(Fe,"rows",$(N))}),de("click",ke,E),de("click",ne,k),de("click",Ee,x),de("click",_e,y),de("click",z,C),de("click",X,P),de("click",V,()=>{se(S,!$(S)),(0,po.setIcon)(l[6],$(S)?"list":"folder"),r().settings.treeStructure=$(S),r().saveSettings()}),de("click",Ne,w),M0(Fe,()=>$(o),M=>se(o,M)),ce(t,B),ct()}Tt(["click"]);var hf=class extends z$.ItemView{constructor(e,r){super(e),this.plugin=r,this.hoverPopover=null}getViewType(){return Kt.type}getDisplayText(){return Kt.name}getIcon(){return Kt.icon}onClose(){return this._view&&ds(this._view),super.onClose()}reload(){this._view&&ds(this._view),this._view=Xs(j0,{target:this.contentEl,props:{plugin:this.plugin,view:this}})}onOpen(){return this.reload(),super.onOpen()}};m();var kp=class{constructor(e,r){this.statusBarEl=e;this.plugin=r;this.statusBarEl.addClass("mod-clickable"),this.statusBarEl.onClickEvent(i=>{this.plugin.switchBranch().catch(n=>r.displayError(n))})}async display(){if(this.plugin.gitReady){let e=await this.plugin.gitManager.branchInfo();e.current!=null?this.statusBarEl.setText(e.current):this.statusBarEl.empty()}else this.statusBarEl.empty()}remove(){this.statusBarEl.remove()}};m();var W$=require("obsidian");var Ap=class{constructor(e){this.plugin=e}get editor(){var i;let e=(i=this.plugin.app.workspace.activeEditor)==null?void 0:i.editor,r=e==null?void 0:e.cm;if(!(!e||!Wi.hasHunksData(r.state)))return{editor:r,obEditor:e}}get gitManager(){return this.plugin.gitManager}resetHunk(e){if(!this.editor)return;let{editor:r,obEditor:i}=this.editor,n=Wi.getHunk(r.state,!1,e);if(n){let s,a;n.type==="delete"?(s=n.added.start+1,a=n.added.start+1):(s=n.added.start-0,a=n.added.start-1+n.added.count);let o=r.state.doc.line(s).from,l=n.type==="delete"?r.state.doc.line(a).from:r.state.doc.line(a).to+1,c=n.removed.lines.join(` +`);n.removed.lines.length>0&&!n.removed.no_nl_at_eof&&(c+=` +`),i.replaceRange(c,i.offsetToPos(o),i.offsetToPos(l)),i.setSelection(i.offsetToPos(o))}}async stageHunk(e){if(!await this.plugin.isAllInitialized()||!this.editor)return;let{editor:r}=this.editor,i=Wi.getHunk(r.state,!1,e),n=!1;if(i||(i=Wi.getHunk(r.state,!0,e),n=!0),!i)return;let s=r.state.field(W$.editorInfoField).file.path,a=Vt.createPatch(s,[i],"100644",n).join(` +`)+` +`;await this.gitManager.applyPatch(a),this.plugin.app.workspace.trigger("obsidian-git:refresh")}goToHunk(e){if(!this.editor)return;let{editor:r,obEditor:i}=this.editor,n=Wi.getHunks(r.state,!1),s=i.getCursor().line+1,a=Vt.findNearestHunk(s,n,e,!0);if(a==null)return;let o=n[a];if(o){let l=o.added.start-1;i.setCursor(l,0),i.scrollIntoView({from:{line:l,ch:0},to:{line:l+1,ch:0}},!0)}}};m();m();var mo=require("obsidian");var Cp=class{constructor(e){this.plg=e;this.codeMirrorExtensions=[];this.handleWorkspaceLeaf=e=>{if(!this.lineAuthorInfoProvider){console.warn("Git: undefined lineAuthorInfoProvider. Unexpected situation.");return}let r=e==null?void 0:e.view;!(r instanceof mo.MarkdownView)||r.file==null||(r==null?void 0:r.allowNoFile)===!0||this.lineAuthorInfoProvider.trackChanged(r.file).catch(console.error)}}onLoadPlugin(){this.plg.registerEditorExtension(this.codeMirrorExtensions),h2(()=>this.plg.settings.lineAuthor,e=>{this.plg.settings.lineAuthor=e,this.plg.saveSettings()})}conditionallyActivateBySettings(){this.plg.settings.lineAuthor.show&&this.activateFeature()}activateFeature(){try{if(!this.isAvailableOnCurrentPlatform().available)return;E2(this.plg.settings.lineAuthor),this.lineAuthorInfoProvider=new ch(this.plg),this.createEventHandlers(),this.activateCodeMirrorExtensions(),console.log(this.plg.manifest.name+": Enabled line authoring.")}catch(e){console.warn("Git: Error while loading line authoring feature.",e),this.deactivateFeature()}}deactivateFeature(){var e;this.destroyEventHandlers(),this.deactivateCodeMirrorExtensions(),(e=this.lineAuthorInfoProvider)==null||e.destroy(),this.lineAuthorInfoProvider=void 0,console.log(this.plg.manifest.name+": Disabled line authoring.")}isAvailableOnCurrentPlatform(){return{available:this.plg.useSimpleGit&&mo.Platform.isDesktopApp,gitManager:this.plg.gitManager instanceof Se?this.plg.gitManager:void 0}}refreshLineAuthorViews(){this.plg.settings.lineAuthor.show&&(this.deactivateFeature(),this.activateFeature())}activateCodeMirrorExtensions(){this.codeMirrorExtensions.push(D2),this.plg.app.workspace.updateOptions(),this.plg.app.workspace.iterateAllLeaves(this.handleWorkspaceLeaf)}deactivateCodeMirrorExtensions(){for(let e of this.codeMirrorExtensions)this.codeMirrorExtensions.remove(e);this.plg.app.workspace.updateOptions()}createEventHandlers(){this.gutterContextMenuEvent=this.createGutterContextMenuHandler(),this.fileOpenEvent=this.createFileOpenEvent(),this.workspaceLeafChangeEvent=this.createWorkspaceLeafChangeEvent(),this.fileModificationEvent=this.createVaultFileModificationHandler(),this.headChangeEvent=this.createHeadChangeEvent(),this.refreshOnCssChangeEvent=this.createCssRefreshHandler(),this.fileRenameEvent=this.createFileRenameEvent(),w2(),this.plg.registerEvent(this.gutterContextMenuEvent),this.plg.registerEvent(this.refreshOnCssChangeEvent),this.plg.registerEvent(this.fileOpenEvent),this.plg.registerEvent(this.workspaceLeafChangeEvent),this.plg.registerEvent(this.fileModificationEvent),this.plg.registerEvent(this.headChangeEvent),this.plg.registerEvent(this.fileRenameEvent)}destroyEventHandlers(){this.plg.app.workspace.offref(this.gutterContextMenuEvent),this.plg.app.workspace.offref(this.refreshOnCssChangeEvent),this.plg.app.workspace.offref(this.fileOpenEvent),this.plg.app.workspace.offref(this.workspaceLeafChangeEvent),this.plg.app.workspace.offref(this.refreshOnCssChangeEvent),this.plg.app.vault.offref(this.fileModificationEvent),this.plg.app.workspace.offref(this.headChangeEvent),this.plg.app.vault.offref(this.fileRenameEvent)}createFileOpenEvent(){return this.plg.app.workspace.on("file-open",e=>{var r;return void((r=this.lineAuthorInfoProvider)==null?void 0:r.trackChanged(e).catch(console.error))})}createWorkspaceLeafChangeEvent(){return this.plg.app.workspace.on("active-leaf-change",this.handleWorkspaceLeaf)}createFileRenameEvent(){return this.plg.app.vault.on("rename",(e,r)=>{var i;return e instanceof mo.TFile&&((i=this.lineAuthorInfoProvider)==null?void 0:i.trackChanged(e))})}createVaultFileModificationHandler(){return this.plg.app.vault.on("modify",e=>{var r;return e instanceof mo.TFile&&((r=this.lineAuthorInfoProvider)==null?void 0:r.trackChanged(e))})}createHeadChangeEvent(){return this.plg.app.workspace.on("obsidian-git:head-change",()=>{this.refreshLineAuthorViews()})}createCssRefreshHandler(){return this.plg.app.workspace.on("css-change",()=>this.refreshLineAuthorViews())}createGutterContextMenuHandler(){return this.plg.app.workspace.on("editor-menu",y2)}};m();var lc=require("obsidian");m();m();var go=require("@codemirror/state"),Pp=require("@codemirror/view");var Tp=class extends Pp.GutterMarker{constructor(r,i){super();this.type=r;this.staged=i}toDOM(r){let i=activeDocument.createElement("div");return i.className=`git-gutter-marker git-${this.type} ${this.staged?"staged":"unstaged"}`,this.type=="changedelete"&&i.setText("~"),i}},V0=go.StateField.define({create:()=>go.RangeSet.empty,update:(t,e)=>{let r=e.state.field(Hr,!1);if(!r)return go.RangeSet.empty;let i=e.effects.some(s=>s.is(Pu)),n=e.effects.some(s=>s.is(Il));if(i||n||(e.docChanged||t.size==0)&&r.isDirty==!1){let s=new Set,a=q$(e,r.hunks,!1,s),o=q$(e,r.stagedHunks,!0,s);return t=go.RangeSet.of([...a,...o],!0),t}else e.docChanged&&(t=t.map(e.changes));return t}});function q$(t,e,r,i){let n=[];for(let a=0;a<e.length;a++){let o=a>0?e[a-1]:void 0,l=a<e.length-1?e[a+1]:void 0,c=e[a];n.push(...Vt.calcSigns(o,c,l))}let s=[];for(let a of n){if(i.has(a.lnum))continue;let o=t.state.doc.line(a.lnum);i.add(a.lnum),s.push(new Tp(a.type,r).range(o.from,o.to))}return s}var Y$=(0,Pp.gutter)({class:"git-signs-gutter",markers:t=>{var e;return(e=t.state.field(V0,!1))!=null?e:go.RangeSet.empty},initialSpacer:t=>new Tp("delete",!1),domEventHandlers:{click:(t,e,r)=>{var n;return((n=Wi.getHunkAtPos(t.state,e.from,!1))!=null?n:Wi.getHunkAtPos(t.state,e.from,!0))&&(Gs(t,e.from),r.preventDefault()),!1}}});var Rp=class{constructor(e){this.plugin=e}async trackChanged(e){return this.trackChangedHelper(e).catch(r=>(console.warn("Git: Error in trackChanged."+r),Promise.reject(r)))}async trackChangedHelper(e){if(e){if(e.path===void 0){console.warn("Git: Attempted to track change of undefined filepath. Unforeseen situation.");return}return this.computeSigns(e.path)}}destroy(){}async computeSigns(e){let i=await this.plugin.editorIntegration.lineAuthoringFeature.isAvailableOnCurrentPlatform().gitManager.show("",e).catch(()=>{});this.notifySignComputationResultToSubscribers(e,{compareText:i,compareTextHead:void 0})}notifySignComputationResultToSubscribers(e,r){es.ifFilepathDefinedTransformSubscribers(e,i=>i.forEach(n=>n.notifyGitCompare(r)))}},X$=[YP,XP,Y$,V0,$h],Z$=[Hr,Cw];m();var z0=require("obsidian"),$p=class{constructor(e,r){this.statusBarEl=e;this.plugin=r;e.addClass("git-changes-status-bar"),r.settings.hunks.statusBar==="colored"&&e.addClass("git-changes-status-bar-colored"),e.setAttr("aria-label","Git diff of the current editor"),this.statusBarEl.setAttribute("data-tooltip-position","top"),r.app.workspace.on("active-leaf-change",i=>{(!i||i.getRoot()==r.app.workspace.rootSplit&&!(i.view instanceof z0.MarkdownView))&&this.statusBarEl.empty()})}display(e,r){var o;let i=this.plugin.app.workspace.getActiveViewOfType(z0.MarkdownView);if(!i||((o=i.file)==null?void 0:o.path)!==(r==null?void 0:r.path))return;let n=0,s=0,a=0;for(let l of e)n+=Math.max(0,l.added.count-l.removed.count),s+=Math.min(l.added.count,l.removed.count),a+=Math.max(0,l.removed.count-l.added.count);this.statusBarEl.empty(),n>0&&this.statusBarEl.createSpan({text:`+${n} `,cls:"git-add"}),s>0&&this.statusBarEl.createSpan({text:`~${s} `,cls:"git-change"}),a>0&&this.statusBarEl.createSpan({text:`-${a}`,cls:"git-delete"})}remove(){this.statusBarEl.remove()}};var Fp=class{constructor(e){this.plg=e;this.codeMirrorExtensions=[];this.handleWorkspaceLeaf=e=>{if(!this.signsProvider){console.warn("Git: undefined signsProvider. Unexpected situation.");return}let r=e==null?void 0:e.view;!(r instanceof lc.MarkdownView)||r.file==null||(r==null?void 0:r.allowNoFile)===!0||this.signsProvider.trackChanged(r.file).catch(console.error)}}onLoadPlugin(){this.plg.registerEditorExtension(this.codeMirrorExtensions)}conditionallyActivateBySettings(){(this.plg.settings.hunks.showSigns||this.plg.settings.hunks.statusBar!="disabled"||this.plg.settings.hunks.hunkCommands)&&this.activateFeature()}activateFeature(){try{if(!this.isAvailableOnCurrentPlatform().available)return;if(this.signsProvider=new Rp(this.plg),this.createEventHandlers(),this.activateCodeMirrorExtensions(),this.plg.settings.hunks.statusBar!="disabled"){let e=this.plg.addStatusBarItem();this.changeStatusBar=new $p(e,this.plg)}}catch(e){console.warn("Git: Error while loading signs feature.",e),this.deactivateFeature()}}deactivateFeature(){var e,r;this.destroyEventHandlers(),this.deactivateCodeMirrorExtensions(),(e=this.signsProvider)==null||e.destroy(),this.signsProvider=void 0,(r=this.changeStatusBar)==null||r.remove(),this.changeStatusBar=void 0}isAvailableOnCurrentPlatform(){return{available:this.plg.useSimpleGit&&lc.Platform.isDesktopApp,gitManager:this.plg.gitManager instanceof Se?this.plg.gitManager:void 0}}refresh(){this.plg.settings.hunks.showSigns&&this.plg.app.workspace.iterateAllLeaves(this.handleWorkspaceLeaf)}activateCodeMirrorExtensions(){this.codeMirrorExtensions.push(Z$),this.plg.settings.hunks.showSigns&&this.codeMirrorExtensions.push(...X$),this.plg.app.workspace.updateOptions(),this.plg.app.workspace.iterateAllLeaves(this.handleWorkspaceLeaf)}deactivateCodeMirrorExtensions(){for(let e of this.codeMirrorExtensions)this.codeMirrorExtensions.remove(e);this.plg.app.workspace.updateOptions()}createEventHandlers(){this.workspaceLeafChangeEvent=this.createWorkspaceLeafChangeEvent(),this.fileRenameEvent=this.createFileRenameEvent(),this.pluginRefreshedEvent=this.createPluginRefreshedEvent(),this.intervalRefreshEvent=this.createIntervalRefreshEvent(),this.plg.registerEvent(this.workspaceLeafChangeEvent),this.plg.registerEvent(this.fileRenameEvent),this.plg.registerEvent(this.pluginRefreshedEvent),this.plg.registerInterval(this.intervalRefreshEvent)}destroyEventHandlers(){this.plg.app.workspace.offref(this.workspaceLeafChangeEvent),this.plg.app.vault.offref(this.fileRenameEvent),this.plg.app.workspace.offref(this.pluginRefreshedEvent),this.plg.app.workspace.offref(this.gutterContextMenuEvent),window.clearInterval(this.intervalRefreshEvent)}createWorkspaceLeafChangeEvent(){return this.plg.app.workspace.on("active-leaf-change",this.handleWorkspaceLeaf)}createFileRenameEvent(){return this.plg.app.vault.on("rename",(e,r)=>{var i;return es.ifFilepathDefinedTransformSubscribers(r,n=>n.forEach(s=>{s.changeToNewFilepath(e.path)})),e instanceof lc.TFile&&((i=this.signsProvider)==null?void 0:i.trackChanged(e))})}createPluginRefreshedEvent(){return this.plg.app.workspace.on("obsidian-git:refresh",()=>{this.refresh()})}createIntervalRefreshEvent(){return window.setInterval(()=>{var e,r;(e=this.plg.app.workspace.activeEditor)!=null&&e.file&&((r=this.signsProvider)==null||r.trackChanged(this.plg.app.workspace.activeEditor.file).catch(console.error))},10*1e3)}};m();var K$=require("@codemirror/state"),Ip=require("obsidian");var W0=class{constructor(e){this.state=e;this.subscribeMe()}notifyLineAuthoring(e,r){if(this.view===void 0){console.warn(`Git: View is not defined for editor cache key. Unforeseen situation. id: ${e}`);return}let i=this.view.state,n=d2(e,r,i);this.view.dispatch(n)}notifyGitCompare(e){if(this.view===void 0){console.warn("Git: View is not defined for editor cache key. Unforeseen situation. id: ");return}if(this.removeIfStale())return;let r=this.view.state,i=r.field(Hr);if(!i||i.compareText!=e.compareText||i.compareTextHead!=e.compareTextHead){let n=CP(e,r);this.view.dispatch(n)}}updateToNewState(e){return this.state=e,!this.lastSeenPath&&this.filepath&&this.subscribeMe(),this}removeIfStale(){var e;return((e=this.view)==null?void 0:e.state.field(q0,!1))!=this||this.view.destroyed?(this.unsubscribeMe(this.lastSeenPath),!0):!1}changeToNewFilepath(e){this.unsubscribeMe(this.lastSeenPath),this.subscribeMe(e)}subscribeMe(e){e!=null||(e=this.filepath),e!==void 0&&(es.ifFilepathDefinedTransformSubscribers(e,r=>r.add(this)),this.lastSeenPath=e)}unsubscribeMe(e){es.ifFilepathDefinedTransformSubscribers(e,r=>r.delete(this))}get filepath(){var e,r;return(r=(e=this.state.field(Ip.editorInfoField))==null?void 0:e.file)==null?void 0:r.path}get view(){return this.state.field(Ip.editorEditorField)}},q0=K$.StateField.define({create:t=>new W0(t),update:(t,e)=>t.updateToNewState(e.state),compare:(t,e)=>t===e});var Mp=class{constructor(e){this.plg=e;this.lineAuthoringFeature=new Cp(this.plg);this.signsFeature=new Fp(this.plg)}onUnloadPlugin(){this.lineAuthoringFeature.deactivateFeature(),this.signsFeature.deactivateFeature()}onLoadPlugin(){this.plg.registerEditorExtension(q0),this.lineAuthoringFeature.onLoadPlugin(),this.signsFeature.onLoadPlugin()}onReady(){this.lineAuthoringFeature.conditionallyActivateBySettings(),this.signsFeature.conditionallyActivateBySettings()}activateLineAuthoring(){this.lineAuthoringFeature.activateFeature()}deactiveLineAuthoring(){this.lineAuthoringFeature.deactivateFeature()}refreshSignsSettings(){let e=this.plg.settings.hunks;e.showSigns||e.statusBar!="disabled"||e.hunkCommands?(this.signsFeature.deactivateFeature(),this.signsFeature.activateFeature()):this.signsFeature.deactivateFeature()}};var Dp=class extends be.Plugin{constructor(){super(...arguments);this.automaticsManager=new Su(this);this.tools=new Ou(this);this.localStorage=new Fh(this);this.state={gitAction:0,offlineMode:!1};this.gitReady=!1;this.promiseQueue=new vd(this);this.intervalsToClear=[];this.editorIntegration=new Mp(this);this.hunkActions=new Ap(this)}setPluginState(r){var i;this.state=Object.assign(this.state,r),(i=this.statusBar)==null||i.display()}async updateCachedStatus(){var r,i;return this.app.workspace.trigger("obsidian-git:loading-status"),this.cachedStatus=await this.gitManager.status(),this.cachedStatus.conflicted.length>0?(this.localStorage.setConflict(!0),await((r=this.branchBar)==null?void 0:r.display())):(this.localStorage.setConflict(!1),await((i=this.branchBar)==null?void 0:i.display())),this.app.workspace.trigger("obsidian-git:status-changed",this.cachedStatus),this.cachedStatus}async refresh(){if(!this.gitReady)return;let r=this.app.workspace.getLeavesOfType(Kt.type),i=this.app.workspace.getLeavesOfType(bi.type);(this.settings.changedFilesInStatusBar||r.some(n=>{var s;return!((s=n.isDeferred)!=null&&s)})||i.some(n=>{var s;return!((s=n.isDeferred)!=null&&s)}))&&await this.updateCachedStatus().catch(n=>this.displayError(n)),this.app.workspace.trigger("obsidian-git:refreshed")}refreshUpdatedHead(){}async onload(){console.log("loading "+this.manifest.name+" plugin: v"+this.manifest.version),jt.plugin=this,this.localStorage.migrate(),await this.loadSettings(),await this.migrateSettings(),this.settingsTab=new uh(this.app,this),this.addSettingTab(this.settingsTab),this.localStorage.getPluginDisabled()||(this.registerStuff(),this.app.workspace.onLayoutReady(()=>this.init({fromReload:!1}).catch(r=>this.displayError(r))))}onExternalSettingsChange(){this.reloadSettings().catch(r=>this.displayError(r))}async reloadSettings(){let r=JSON.stringify(this.settings);await this.loadSettings();let i=JSON.stringify(this.settings);r!==i&&(this.log("Reloading settings"),this.unloadPlugin(),await this.init({fromReload:!0}),this.app.workspace.getLeavesOfType(Kt.type).forEach(n=>{var s;if(!((s=n.isDeferred)!=null&&s))return n.view.reload()}),this.app.workspace.getLeavesOfType(bi.type).forEach(n=>{var s;if(!((s=n.isDeferred)!=null&&s))return n.view.reload()}))}registerStuff(){this.registerEvent(this.app.workspace.on("obsidian-git:refresh",()=>{this.refresh().catch(r=>this.displayError(r))})),this.registerEvent(this.app.workspace.on("obsidian-git:head-change",()=>{this.refreshUpdatedHead()})),this.registerEvent(this.app.workspace.on("file-menu",(r,i,n)=>{this.handleFileMenu(r,i,n,"file-manu")})),this.registerEvent(this.app.workspace.on("obsidian-git:menu",(r,i,n)=>{this.handleFileMenu(r,i,n,"obsidian-git:menu")})),this.registerEvent(this.app.workspace.on("active-leaf-change",r=>{this.onActiveLeafChange(r)})),this.registerEvent(this.app.vault.on("modify",()=>{var r;this.debRefresh(),(r=this.autoCommitDebouncer)==null||r.call(this)})),this.registerEvent(this.app.vault.on("delete",()=>{var r;this.debRefresh(),(r=this.autoCommitDebouncer)==null||r.call(this)})),this.registerEvent(this.app.vault.on("create",()=>{var r;this.debRefresh(),(r=this.autoCommitDebouncer)==null||r.call(this)})),this.registerEvent(this.app.vault.on("rename",()=>{var r;this.debRefresh(),(r=this.autoCommitDebouncer)==null||r.call(this)})),this.registerView(Kt.type,r=>new hf(r,this)),this.registerView(bi.type,r=>new lf(r,this)),this.registerView(Ds.type,r=>new La(r,this)),this.registerView(Ms.type,r=>new Na(r,this)),this.addRibbonIcon("git-pull-request","Open Git source control",async()=>{var n;let r=this.app.workspace.getLeavesOfType(Kt.type),i;r.length===0?(i=(n=this.app.workspace.getRightLeaf(!1))!=null?n:this.app.workspace.getLeaf(),await i.setViewState({type:Kt.type})):i=r.first(),await this.app.workspace.revealLeaf(i)}),this.registerHoverLinkSource(Kt.type,{display:"Git View",defaultMod:!0}),this.editorIntegration.onLoadPlugin(),this.setRefreshDebouncer(),ZP(this)}setRefreshDebouncer(){var r;(r=this.debRefresh)==null||r.cancel(),this.debRefresh=(0,be.debounce)(()=>{this.settings.refreshSourceControl&&this.refresh().catch(console.error)},this.settings.refreshSourceControlTimer,!0)}async addFileToGitignore(r,i){let n=this.gitManager.getRelativeRepoPath(r,!0),s=nA({isFolder:i,gitRelativePath:n});await this.app.vault.adapter.append(this.gitManager.getRelativeVaultPath(".gitignore"),` +`+s),this.app.workspace.trigger("obsidian-git:refresh")}handleFileMenu(r,i,n,s){if(!this.gitReady||!this.settings.showFileMenu||!i)return;let a;if(typeof i=="string"?a=i:a=i.path,n=="file-explorer-context-menu"&&(r.addItem(o=>{o.setTitle("Git: Stage").setIcon("plus-circle").setSection("action").onClick(l=>{this.promiseQueue.addTask(async()=>{i instanceof be.TFile?await this.stageFile(i):(await this.gitManager.stageAll({dir:this.gitManager.getRelativeRepoPath(a,!0)}),this.app.workspace.trigger("obsidian-git:refresh"))})})}),r.addItem(o=>{o.setTitle("Git: Unstage").setIcon("minus-circle").setSection("action").onClick(l=>{this.promiseQueue.addTask(async()=>{i instanceof be.TFile?await this.unstageFile(i):(await this.gitManager.unstageAll({dir:this.gitManager.getRelativeRepoPath(a,!0)}),this.app.workspace.trigger("obsidian-git:refresh"))})})}),r.addItem(o=>{o.setTitle("Git: Add to .gitignore").setIcon("file-x").setSection("action").onClick(l=>{this.addFileToGitignore(a,i instanceof be.TFolder).catch(c=>this.displayError(c))})})),n=="git-source-control"){r.addItem(l=>{l.setTitle("Git: Add to .gitignore").setIcon("file-x").setSection("action").onClick(c=>{this.addFileToGitignore(a,i instanceof be.TFolder).catch(u=>this.displayError(u))})});let o=this.app.vault.adapter;s==="obsidian-git:menu"&&o instanceof be.FileSystemAdapter&&(r.addItem(l=>{l.setTitle("Open in default app").setIcon("arrow-up-right").setSection("action").onClick(c=>{this.app.openWithDefaultApp(a)})}),r.addItem(l=>{l.setTitle("Show in system explorer").setIcon("arrow-up-right").setSection("action").onClick(c=>{window.electron.shell.showItemInFolder(J$.join(o.getBasePath(),a))})}))}}async migrateSettings(){this.settings.mergeOnPull!=null&&(this.settings.syncMethod=this.settings.mergeOnPull?"merge":"rebase",this.settings.mergeOnPull=void 0,await this.saveSettings()),this.settings.autoCommitMessage===void 0&&(this.settings.autoCommitMessage=this.settings.commitMessage,await this.saveSettings()),this.settings.gitPath!=null&&(this.localStorage.setGitPath(this.settings.gitPath),this.settings.gitPath=void 0,await this.saveSettings()),this.settings.username!=null&&(this.localStorage.setPassword(this.settings.username),this.settings.username=void 0,await this.saveSettings())}unloadPlugin(){var r,i;this.gitReady=!1,this.editorIntegration.onUnloadPlugin(),this.automaticsManager.unload(),(r=this.branchBar)==null||r.remove(),(i=this.statusBar)==null||i.remove(),this.statusBar=void 0,this.branchBar=void 0,this.gitManager.unload(),this.promiseQueue.clear();for(let n of this.intervalsToClear)window.clearInterval(n);this.intervalsToClear=[],this.debRefresh.cancel()}onunload(){this.unloadPlugin(),console.log("unloading "+this.manifest.name+" plugin")}async loadSettings(){let r=await this.loadData();r==null&&(r={showedMobileNotice:!0}),this.settings=Rk(ht,r)}async saveSettings(){var r;(r=this.settingsTab)==null||r.beforeSaveSettings(),await this.saveData(this.settings)}get useSimpleGit(){return be.Platform.isDesktopApp}async init({fromReload:r=!1}){var i;if(this.settings.showStatusBar&&!this.statusBar){let n=this.addStatusBarItem();this.statusBar=new fh(n,this),this.intervalsToClear.push(window.setInterval(()=>{var s;return(s=this.statusBar)==null?void 0:s.display()},1e3))}try{this.useSimpleGit?(this.gitManager=new Se(this),await this.gitManager.setGitInstance()):this.gitManager=new Vi(this);let n=await this.gitManager.checkRequirements(),s=this.localStorage.getPausedAutomatics();switch(n){case"missing-git":this.displayError(`Cannot run git command. Trying to run: '${this.localStorage.getGitPath()||"git"}' .`);break;case"missing-repo":new be.Notice("Can't find a valid git repository. Please create one via the given command or clone an existing repo.",1e4);break;case"valid":if(this.gitReady=!0,this.setPluginState({gitAction:0}),be.Platform.isDesktop&&this.settings.showBranchStatusBar&&!this.branchBar){let a=this.addStatusBarItem();this.branchBar=new kp(a,this),this.intervalsToClear.push(window.setInterval(()=>{var o;return void((o=this.branchBar)==null?void 0:o.display().catch(console.error))},6e4))}await((i=this.branchBar)==null?void 0:i.display()),this.editorIntegration.onReady(),this.app.workspace.trigger("obsidian-git:refresh"),this.app.workspace.trigger("obsidian-git:head-change"),!r&&this.settings.autoPullOnBoot&&!s&&this.promiseQueue.addTask(()=>this.pullChangesFromRemote()),s||await this.automaticsManager.init(),s&&new be.Notice("Automatic routines are currently paused.");break;default:this.log("Something weird happened. The 'checkRequirements' result is "+n)}}catch(n){this.displayError(n),console.error(n)}}async createNewRepo(){try{await this.gitManager.init(),new be.Notice("Initialized new repo"),await this.init({fromReload:!0})}catch(r){this.displayError(r)}}async cloneNewRepo(){let i=await new et(this,{placeholder:"Enter remote URL"}).openAndGetResult();if(i){let n="Vault Root",s=await new et(this,{options:this.gitManager instanceof Vi?[n]:[],placeholder:"Enter directory for clone. It needs to be empty or not existent.",allowEmpty:this.gitManager instanceof Vi}).openAndGetResult();if(s==null)return;if(s===n&&(s="."),s=(0,be.normalizePath)(s),s==="/"&&(s="."),s==="."){let f=await new et(this,{options:["NO","YES"],placeholder:`Does your remote repo contain a ${this.app.vault.configDir} directory at the root?`,onlySelection:!0}).openAndGetResult();if(f===void 0){new be.Notice("Aborted clone");return}else if(f==="YES"){let d="DELETE ALL YOUR LOCAL CONFIG AND PLUGINS";if(await new et(this,{options:["Abort clone",d],placeholder:`To avoid conflicts, the local ${this.app.vault.configDir} directory needs to be deleted.`,onlySelection:!0}).openAndGetResult()===d)await this.app.vault.adapter.rmdir(this.app.vault.configDir,!0);else{new be.Notice("Aborted clone");return}}}let a=await new et(this,{placeholder:"Specify depth of clone. Leave empty for full clone.",allowEmpty:!0}).openAndGetResult(),o;if(a===void 0){new be.Notice("Aborted clone");return}if(a!==""&&(o=parseInt(a),isNaN(o))){new be.Notice("Invalid depth. Aborting clone.");return}new be.Notice(`Cloning new repo into "${s}"`);let l=this.settings.basePath,c=s&&s!==".";c&&(this.settings.basePath=s);try{await this.gitManager.clone(sv(i),s,o),new be.Notice("Cloned new repo."),new be.Notice("Please restart Obsidian"),c&&await this.saveSettings()}catch(u){this.displayError(u),this.settings.basePath=l,await this.saveSettings()}}}async isAllInitialized(){return this.gitReady||await this.init({fromReload:!0}),this.gitReady}async pullChangesFromRemote(){if(!await this.isAllInitialized())return;let r=await this.pull();if(r!==!1){if(r||this.displayMessage("Pull: Everything is up-to-date"),this.gitManager instanceof Se){let i=await this.updateCachedStatus();i.conflicted.length>0&&(this.displayError(`You have conflicts in ${i.conflicted.length} ${i.conflicted.length==1?"file":"files"}`),await this.handleConflict(i.conflicted))}this.app.workspace.trigger("obsidian-git:refresh"),this.setPluginState({gitAction:0})}}async commitAndSync({fromAutoBackup:r,requestCustomMessage:i=!1,commitMessage:n,onlyStaged:s=!1}){!await this.isAllInitialized()||(this.settings.syncMethod=="reset"&&this.settings.pullBeforePush&&await this.pull(),!await this.commit({fromAuto:r,requestCustomMessage:i,commitMessage:n,onlyStaged:s}))||(this.settings.syncMethod!="reset"&&this.settings.pullBeforePush&&await this.pull(),this.settings.disablePush||(await this.remotesAreSet()&&await this.gitManager.canPush()?await this.push():this.displayMessage("No commits to push")),this.setPluginState({gitAction:0}))}async commit({fromAuto:r,requestCustomMessage:i=!1,onlyStaged:n=!1,commitMessage:s,amend:a=!1}){if(!await this.isAllInitialized())return!1;try{let o=this.localStorage.getConflict(),l,c=[],u=[];if(this.gitManager instanceof Se){if(await this.mayDeleteConflictFile(),l=await this.updateCachedStatus(),l.conflicted.length==0&&(o=!1),r&&l.conflicted.length>0)return this.displayError(`Did not commit, because you have conflicts in ${l.conflicted.length} ${l.conflicted.length==1?"file":"files"}. Please resolve them and commit per command.`),await this.handleConflict(l.conflicted),!1;c=l.staged,u=l.changed}else{if(r&&o)return this.displayError("Did not commit, because you have conflicts. Please resolve them and commit per command."),!1;{o&&await this.mayDeleteConflictFile();let f=this.gitManager;n?c=await f.getStagedFiles():u=(await f.getUnstagedFiles()).map(({path:h,type:p})=>({vaultPath:this.gitManager.getRelativeVaultPath(h),path:h,type:p}))}}if(await this.tools.hasTooBigFiles(n?c:[...c,...u]))return this.setPluginState({gitAction:0}),!1;if(u.length+c.length!==0||o){let f=s!=null?s:s=r?this.settings.autoCommitMessage:this.settings.commitMessage;if(r&&this.settings.customMessageOnAutoBackup||i){!this.settings.disablePopups&&r&&new be.Notice("Auto backup: Please enter a custom commit message. Leave empty to abort");let p=await new dh(this).openAndGetResult();if(p!=null&&p!=""&&p!="...")f=p;else return this.setPluginState({gitAction:0}),!1}else if(this.gitManager instanceof Se&&this.settings.commitMessageScript){let p=this.settings.commitMessageScript,g=this.localStorage.getHostname()||"",v=p.replace("{{hostname}}",g);v=v.replace("{{date}}",(0,be.moment)().format(this.settings.commitDateFormat));let _="sh";if(be.Platform.isWin){_=process.env.PROGRAMFILES+"\\Git\\bin\\sh.exe";let S=!1;try{await Op.access(_,Op.constants.X_OK),S=!0}catch(k){S=!1}if(!S)return this.displayError(`Cannot find sh.exe at ${_}. Please make sure Git is properly installed.`),!1}let b=await fu(_,["-c",v],{cwd:this.gitManager.absoluteRepoPath});b.code!=0?this.displayError(b.stderr):b.stdout.trim().length==0?this.displayMessage("Stdout from commit message script is empty. Using default message."):f=b.stdout}if(!f||f.trim()==="")return new be.Notice("Commit aborted: No commit message provided"),this.setPluginState({gitAction:0}),!1;let d;n?d=await this.gitManager.commit({message:f,amend:a}):d=await this.gitManager.commitAll({message:f,status:l,unstagedFiles:u,amend:a}),this.gitManager instanceof Se&&await this.updateCachedStatus();let h=!1;d===void 0&&(h=!0,d=u.length+c.length||0),this.displayMessage(`Committed${h?" approx.":""} ${d} ${d==1?"file":"files"}`)}else this.displayMessage("No changes to commit");return this.app.workspace.trigger("obsidian-git:refresh"),!0}catch(o){return this.displayError(o),!1}}async push(){if(!await this.isAllInitialized()||!await this.remotesAreSet())return!1;let r=this.localStorage.getConflict();try{this.gitManager instanceof Se&&await this.mayDeleteConflictFile();let i;if(this.gitManager instanceof Se&&(i=await this.updateCachedStatus()).conflicted.length>0)return this.displayError(`Cannot push. You have conflicts in ${i.conflicted.length} ${i.conflicted.length==1?"file":"files"}`),await this.handleConflict(i.conflicted),!1;if(this.gitManager instanceof Vi&&r)return this.displayError("Cannot push. You have conflicts"),!1;this.log("Pushing....");let n=await this.gitManager.push();return n!==void 0&&(n===null?this.displayMessage("Pushed to remote"):n>0?this.displayMessage(`Pushed ${n} ${n==1?"file":"files"} to remote`):this.displayMessage("No commits to push")),this.setPluginState({offlineMode:!1}),this.app.workspace.trigger("obsidian-git:refresh"),!0}catch(i){return i instanceof al?this.handleNoNetworkError(i):this.displayError(i),!1}}async pull(){if(!await this.remotesAreSet())return!1;try{this.log("Pulling....");let r=await this.gitManager.pull()||[];return this.setPluginState({offlineMode:!1}),r.length>0&&(this.displayMessage(`Pulled ${r.length} ${r.length==1?"file":"files"} from remote`),this.lastPulledFiles=r),r.length}catch(r){return this.displayError(r),!1}}async fetch(){if(await this.remotesAreSet())try{await this.gitManager.fetch(),this.displayMessage("Fetched from remote"),this.setPluginState({offlineMode:!1}),this.app.workspace.trigger("obsidian-git:refresh")}catch(r){this.displayError(r)}}async mayDeleteConflictFile(){let r=this.app.vault.getAbstractFileByPath(il);r&&(this.app.workspace.iterateAllLeaves(i=>{var n;i.view instanceof be.MarkdownView&&((n=i.view.file)==null?void 0:n.path)==r.path&&i.detach()}),await this.app.vault.delete(r))}async stageFile(r){return await this.isAllInitialized()?(await this.gitManager.stage(r.path,!0),this.app.workspace.trigger("obsidian-git:refresh"),this.setPluginState({gitAction:0}),!0):!1}async unstageFile(r){return await this.isAllInitialized()?(await this.gitManager.unstage(r.path,!0),this.app.workspace.trigger("obsidian-git:refresh"),this.setPluginState({gitAction:0}),!0):!1}async switchBranch(){var n;if(!await this.isAllInitialized())return;let r=await this.gitManager.branchInfo(),i=await new Ep(this,r.branches).openAndGetReslt();if(i!=null)return await this.gitManager.checkout(i),this.displayMessage(`Switched to ${i}`),this.app.workspace.trigger("obsidian-git:refresh"),await((n=this.branchBar)==null?void 0:n.display()),i}async switchRemoteBranch(){var s;if(!await this.isAllInitialized())return;let r=await this.selectRemoteBranch()||"",[i,n]=Qn(r);if(n!=null&&i!=null)return await this.gitManager.checkout(n,i),this.displayMessage(`Switched to ${r}`),await((s=this.branchBar)==null?void 0:s.display()),r}async createBranch(){var i;if(!await this.isAllInitialized())return;let r=await new et(this,{placeholder:"Create new branch"}).openAndGetResult();if(r!=null)return await this.gitManager.createBranch(r),this.displayMessage(`Created new branch ${r}`),await((i=this.branchBar)==null?void 0:i.display()),r}async deleteBranch(){var n;if(!await this.isAllInitialized())return;let r=await this.gitManager.branchInfo();r.current&&r.branches.remove(r.current);let i=await new et(this,{options:r.branches,placeholder:"Delete branch",onlySelection:!0}).openAndGetResult();if(i!=null){let s=!1;if(!await this.gitManager.branchIsMerged(i)){let o=await new et(this,{options:["YES","NO"],placeholder:"This branch isn't merged into HEAD. Force delete?",onlySelection:!0}).openAndGetResult();if(o!=="YES")return;s=o==="YES"}return await this.gitManager.deleteBranch(i,s),this.displayMessage(`Deleted branch ${i}`),await((n=this.branchBar)==null?void 0:n.display()),i}}async remotesAreSet(){return this.settings.updateSubmodules||this.gitManager instanceof Se&&await this.gitManager.getConfig("push.autoSetupRemote","all")=="true"||(await this.gitManager.branchInfo()).tracking?!0:(new be.Notice("No upstream branch is set. Please select one."),await this.setUpstreamBranch())}async setUpstreamBranch(){let r=await this.selectRemoteBranch();return r==null?(this.displayError("Aborted. No upstream-branch is set!",1e4),this.setPluginState({gitAction:0}),!1):(await this.gitManager.updateUpstreamBranch(r),this.displayMessage(`Set upstream branch to ${r}`),this.setPluginState({gitAction:0}),!0)}async discardAll(r){if(!await this.isAllInitialized())return!1;let i=await this.gitManager.status({path:r}),n=0,s=0;for(let o of i.changed)o.workingDir=="U"?n++:s++;if(n+s==0)return!1;let a=await new oc({app:this.app,filesToDeleteCount:n,filesToDiscardCount:s,path:r!=null?r:""}).openAndGetResult();switch(a){case!1:return a;case"discard":await this.gitManager.discardAll({dir:r,status:this.cachedStatus});break;case"delete":{await this.gitManager.discardAll({dir:r,status:this.cachedStatus});let o=await this.gitManager.getUntrackedPaths({path:r,status:this.cachedStatus});for(let l of o){let c=this.gitManager.getRelativeVaultPath(l),u=this.app.vault.getAbstractFileByPath(c);u?await this.app.fileManager.trashFile(u):l.endsWith("/")?await this.app.vault.adapter.rmdir(c,!0):await this.app.vault.adapter.remove(c)}break}default:Td(a)}return this.app.workspace.trigger("obsidian-git:refresh"),a}async handleConflict(r){this.localStorage.setConflict(!0);let i;r!==void 0&&(i=["# Conflicts","Please resolve them and commit them using the commands `Git: Commit all changes` followed by `Git: Push`","(This file will automatically be deleted before commit)","[[#Additional Instructions]] available below file list","",...r.map(n=>{let s=this.app.vault.getAbstractFileByPath(n);return s instanceof be.TFile?`- [[${this.app.metadataCache.fileToLinktext(s,"/")}]]`:`- Not a file: ${n}`}),` +# Additional Instructions +I strongly recommend to use "Source mode" for viewing the conflicted files. For simple conflicts, in each file listed above replace every occurrence of the following text blocks with the desired text. + +\`\`\`diff +<<<<<<< HEAD + File changes in local repository +======= + File changes in remote repository +>>>>>>> origin/main +\`\`\``]),await this.tools.writeAndOpenFile(i==null?void 0:i.join(` +`))}async editRemotes(){if(!await this.isAllInitialized())return;let r=await this.gitManager.getRemotes(),n=await new et(this,{options:r,placeholder:"Select or create a new remote by typing its name and selecting it"}).openAndGetResult();if(n){let s=await this.gitManager.getRemoteUrl(n),o=await new et(this,{initialValue:s,placeholder:"Enter remote URL"}).openAndGetResult();if(o)return await this.gitManager.setRemote(n,sv(o)),n}}async selectRemoteBranch(){let r=await this.gitManager.getRemotes(),i;r.length===0&&(i=await this.editRemotes(),i==null&&(r=await this.gitManager.getRemotes()));let n=new et(this,{options:r,placeholder:"Select or create a new remote by typing its name and selecting it"}),s=i!=null?i:await n.openAndGetResult();if(s){this.displayMessage("Fetching remote branches"),await this.gitManager.fetch(s);let a=await this.gitManager.getRemoteBranches(s),l=await new et(this,{options:a,placeholder:"Select or create a new remote branch by typing its name and selecting it"}).openAndGetResult();return l==null?void 0:l.startsWith(s+"/")?l:`${s}/${l}`}}async removeRemote(){if(!await this.isAllInitialized())return;let r=await this.gitManager.getRemotes(),n=await new et(this,{options:r,placeholder:"Select a remote"}).openAndGetResult();n&&await this.gitManager.removeRemote(n)}onActiveLeafChange(r){var a,o;let i=r==null?void 0:r.view;if(!(i!=null&&i.getState().file)&&!(i instanceof La||i instanceof Na))return;let n=this.app.workspace.getLeavesOfType(Kt.type).first(),s=this.app.workspace.getLeavesOfType(bi.type).first();if((a=n==null?void 0:n.view.containerEl.querySelector("div.tree-item-self.is-active"))==null||a.removeClass("is-active"),(o=s==null?void 0:s.view.containerEl.querySelector("div.tree-item-self.is-active"))==null||o.removeClass("is-active"),(r==null?void 0:r.view)instanceof La||(r==null?void 0:r.view)instanceof Na){let c=r.view.state.bFile.replace(/["\\]/g,"\\$&");this.lastDiffViewState=r.view.getState();let u;n&&r.view.state.aRef=="HEAD"?u=n.view.containerEl.querySelector(`div.staged div.tree-item-self[data-path="${c}"]`):n&&r.view.state.aRef==""?u=n.view.containerEl.querySelector(`div.changes div.tree-item-self[data-path="${c}"]`):s&&(u=s.view.containerEl.querySelector(`div.tree-item-self[data-path='${c}']`)),u==null||u.addClass("is-active")}else this.lastDiffViewState=void 0}handleNoNetworkError(r){this.state.offlineMode?this.log("Encountered network error, but already in offline mode"):this.displayError("Git: Going into offline mode. Future network errors will no longer be displayed.",2e3),this.setPluginState({gitAction:0,offlineMode:!0})}displayMessage(r,i=4*1e3){var n;(n=this.statusBar)==null||n.displayMessage(r.toLowerCase(),i),this.settings.disablePopups||(!this.settings.disablePopupsForNoChanges||!r.startsWith("No changes"))&&new be.Notice(r,5*1e3),this.log(r)}displayError(r,i=10*1e3){var s;if(r instanceof Q$.Errors.UserCanceledError){new be.Notice("Aborted");return}let n;r instanceof Error?n=r:n=new Error(String(r)),this.setPluginState({gitAction:0}),this.settings.showErrorNotices&&new be.Notice(n.message,i),console.error(`${this.manifest.id}:`,n.stack),(s=this.statusBar)==null||s.displayMessage(n.message.toLowerCase(),i)}log(...r){console.log(`${this.manifest.id}:`,...r)}}; +/*! Bundled license information: + +ieee754/index.js: + (*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> *) + +buffer/index.js: + (*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh <https://feross.org> + * @license MIT + *) + +safe-buffer/index.js: + (*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *) + +crc-32/crc32.js: + (*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com *) + +isomorphic-git/index.cjs: + (*! + * This code for `path.join` is directly copied from @zenfs/core/path for bundle size improvements. + * SPDX-License-Identifier: LGPL-3.0-or-later + * Copyright (c) James Prevett and other ZenFS contributors. + *) + +js-sha256/src/sha256.js: + (** + * [js-sha256]{@link https://github.com/emn178/js-sha256} + * + * @version 0.9.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + *) +*/ + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-git/manifest.json b/.obsidian/plugins/obsidian-git/manifest.json new file mode 100644 index 0000000..4030cb5 --- /dev/null +++ b/.obsidian/plugins/obsidian-git/manifest.json @@ -0,0 +1,10 @@ +{ + "author": "Vinzent", + "authorUrl": "https://github.com/Vinzent03", + "id": "obsidian-git", + "name": "Git", + "description": "Integrate Git version control with automatic backup and other advanced features.", + "isDesktopOnly": false, + "fundingUrl": "https://ko-fi.com/vinzent", + "version": "2.38.3" +} diff --git a/.obsidian/plugins/obsidian-git/obsidian_askpass.sh b/.obsidian/plugins/obsidian-git/obsidian_askpass.sh new file mode 100644 index 0000000..2e5eb5d --- /dev/null +++ b/.obsidian/plugins/obsidian-git/obsidian_askpass.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +PROMPT="$1" +TEMP_FILE="$OBSIDIAN_GIT_CREDENTIALS_INPUT" + +cleanup() { + rm -f "$TEMP_FILE" "$TEMP_FILE.response" +} +trap cleanup EXIT + +echo "$PROMPT" > "$TEMP_FILE" + +while [ ! -e "$TEMP_FILE.response" ]; do + if [ ! -e "$TEMP_FILE" ]; then + echo "Trigger file got removed: Abort" >&2 + exit 1 + fi + sleep 0.1 +done + +RESPONSE=$(cat "$TEMP_FILE.response") + +echo "$RESPONSE" diff --git a/.obsidian/plugins/obsidian-git/styles.css b/.obsidian/plugins/obsidian-git/styles.css new file mode 100644 index 0000000..7dee885 --- /dev/null +++ b/.obsidian/plugins/obsidian-git/styles.css @@ -0,0 +1,705 @@ +@keyframes loading { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} + +.workspace-leaf-content[data-type="git-view"] .button-border { + border: 2px solid var(--interactive-accent); + border-radius: var(--radius-s); +} + +.workspace-leaf-content[data-type="git-view"] .view-content { + padding-left: 0; + padding-top: 0; + padding-right: 0; +} + +.workspace-leaf-content[data-type="git-history-view"] .view-content { + padding-left: 0; + padding-top: 0; + padding-right: 0; +} + +.loading { + overflow: hidden; +} + +.loading > svg { + animation: 2s linear infinite loading; + transform-origin: 50% 50%; + display: inline-block; +} + +.obsidian-git-center { + margin: auto; + text-align: center; + width: 50%; +} + +.obsidian-git-textarea { + display: block; + margin-left: auto; + margin-right: auto; +} + +.obsidian-git-disabled { + opacity: 0.5; +} + +.obsidian-git-center-button { + display: block; + margin: 20px auto; +} + +.tooltip.mod-left { + overflow-wrap: break-word; +} + +.tooltip.mod-right { + overflow-wrap: break-word; +} + +/* Limits the scrollbar to the view body */ +.git-view { + display: flex; + flex-direction: column; + position: relative; + height: 100%; +} + +/* Re-enable wrapping of nav buttns to prevent overflow on smaller screens #*/ +.workspace-drawer .git-view .nav-buttons-container { + flex-wrap: wrap; +} + +.git-tools { + display: flex; + margin-left: auto; +} +.git-tools .type { + padding-left: var(--size-2-1); + display: flex; + align-items: center; + justify-content: center; + width: 11px; +} + +.git-tools .type[data-type="M"] { + color: orange; +} +.git-tools .type[data-type="D"] { + color: red; +} +.git-tools .buttons { + display: flex; +} +.git-tools .buttons > * { + padding: 0; + height: auto; +} + +.workspace-leaf-content[data-type="git-view"] .tree-item-self, +.workspace-leaf-content[data-type="git-history-view"] .tree-item-self { + align-items: center; +} + +.workspace-leaf-content[data-type="git-view"] + .tree-item-self:hover + .clickable-icon, +.workspace-leaf-content[data-type="git-history-view"] + .tree-item-self:hover + .clickable-icon { + color: var(--icon-color-hover); +} + +/* Highlight an item as active if it's diff is currently opened */ +.is-active .git-tools .buttons > * { + color: var(--nav-item-color-active); +} + +.git-author { + color: var(--text-accent); +} + +.git-date { + color: var(--text-accent); +} + +.git-ref { + color: var(--text-accent); +} + +/* ====== diff2html ====== +The following styles are adapted from the obsidian-version-history plugin by +@kometenstaub https://github.com/kometenstaub/obsidian-version-history-diff/blob/main/src/styles.scss +which itself is adapted from the diff2html library with the following original license: + + https://github.com/rtfpessoa/diff2html/blob/master/LICENSE.md + + Copyright 2014-2016 Rodrigo Fernandes https://rtfpessoa.github.io/ + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated + documentation files (the "Software"), to deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the + Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE + WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +*/ + +.theme-dark, +.theme-light { + --git-delete-bg: #ff475040; + --git-delete-hl: #96050a75; + --git-insert-bg: #68d36840; + --git-insert-hl: #23c02350; + --git-change-bg: #ffd55840; + --git-selected: #3572b0; + + --git-delete: #cc3333; + --git-insert: #399839; + --git-change: #d0b44c; + --git-move: #3572b0; +} + +.git-diff { + .d2h-d-none { + display: none; + } + .d2h-wrapper { + text-align: left; + border-radius: 0.25em; + overflow: auto; + } + .d2h-file-header.d2h-file-header { + background-color: var(--background-secondary); + border-bottom: 1px solid var(--background-modifier-border); + font-family: + Source Sans Pro, + Helvetica Neue, + Helvetica, + Arial, + sans-serif; + height: 35px; + padding: 5px 10px; + } + .d2h-file-header, + .d2h-file-stats { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + } + .d2h-file-header { + display: none; + } + .d2h-file-stats { + font-size: 14px; + margin-left: auto; + } + .d2h-lines-added { + border: 1px solid var(--color-green); + border-radius: 5px 0 0 5px; + color: var(--color-green); + padding: 2px; + text-align: right; + vertical-align: middle; + } + .d2h-lines-deleted { + border: 1px solid var(--color-red); + border-radius: 0 5px 5px 0; + color: var(--color-red); + margin-left: 1px; + padding: 2px; + text-align: left; + vertical-align: middle; + } + .d2h-file-name-wrapper { + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 15px; + width: 100%; + } + .d2h-file-name { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + color: var(--text-normal); + font-size: var(--h5-size); + } + .d2h-file-wrapper { + border: 1px solid var(--background-secondary-alt); + border-radius: 3px; + margin-bottom: 1em; + max-height: 100%; + } + .d2h-file-collapse { + -webkit-box-pack: end; + -ms-flex-pack: end; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + border: 1px solid var(--background-secondary-alt); + border-radius: 3px; + cursor: pointer; + display: none; + font-size: 12px; + justify-content: flex-end; + padding: 4px 8px; + } + .d2h-file-collapse.d2h-selected { + background-color: var(--git-selected); + } + .d2h-file-collapse-input { + margin: 0 4px 0 0; + } + .d2h-diff-table { + border-collapse: collapse; + font-family: var(--font-monospace); + font-size: var(--code-size); + width: 100%; + } + .d2h-files-diff { + width: 100%; + } + .d2h-file-diff { + /* + overflow-y: scroll; + */ + border-radius: 5px; + font-size: var(--font-text-size); + line-height: var(--line-height-normal); + } + .d2h-file-side-diff { + display: inline-block; + margin-bottom: -8px; + margin-right: -4px; + overflow-x: scroll; + overflow-y: hidden; + width: 50%; + } + .d2h-code-line { + padding-left: 6em; + padding-right: 1.5em; + } + .d2h-code-line, + .d2h-code-side-line { + display: inline-block; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + white-space: nowrap; + width: 100%; + } + .d2h-code-side-line { + /* needed to be changed */ + padding-left: 0.5em; + padding-right: 0.5em; + } + .d2h-code-line-ctn { + word-wrap: normal; + background: none; + display: inline-block; + padding: 0; + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; + vertical-align: middle; + width: 100%; + /* only works for line-by-line */ + white-space: pre-wrap; + } + .d2h-code-line del, + .d2h-code-side-line del { + background-color: var(--git-delete-hl); + color: var(--text-normal); + } + .d2h-code-line del, + .d2h-code-line ins, + .d2h-code-side-line del, + .d2h-code-side-line ins { + border-radius: 0.2em; + display: inline-block; + margin-top: -1px; + text-decoration: none; + vertical-align: middle; + } + .d2h-code-line ins, + .d2h-code-side-line ins { + background-color: var(--git-insert-hl); + text-align: left; + } + .d2h-code-line-prefix { + word-wrap: normal; + background: none; + display: inline; + padding: 0; + white-space: pre; + } + .line-num1 { + float: left; + } + .line-num1, + .line-num2 { + -webkit-box-sizing: border-box; + box-sizing: border-box; + overflow: hidden; + /* + padding: 0 0.5em; + */ + text-overflow: ellipsis; + width: 2.5em; + padding-left: 0; + } + .line-num2 { + float: right; + } + .d2h-code-linenumber { + background-color: var(--background-primary); + border: solid var(--background-modifier-border); + border-width: 0 1px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: var(--text-faint); + cursor: pointer; + display: inline-block; + position: absolute; + text-align: right; + width: 5.5em; + } + .d2h-code-linenumber:after { + content: "\200b"; + } + .d2h-code-side-linenumber { + background-color: var(--background-primary); + border: solid var(--background-modifier-border); + border-width: 0 1px; + -webkit-box-sizing: border-box; + box-sizing: border-box; + color: var(--text-faint); + cursor: pointer; + overflow: hidden; + padding: 0 0.5em; + text-align: right; + text-overflow: ellipsis; + width: 4em; + /* needed to be changed */ + display: table-cell; + position: relative; + } + .d2h-code-side-linenumber:after { + content: "\200b"; + } + .d2h-code-side-emptyplaceholder, + .d2h-emptyplaceholder { + background-color: var(--background-primary); + border-color: var(--background-modifier-border); + } + .d2h-code-line-prefix, + .d2h-code-linenumber, + .d2h-code-side-linenumber, + .d2h-emptyplaceholder { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } + .d2h-code-linenumber, + .d2h-code-side-linenumber { + direction: rtl; + } + .d2h-del { + background-color: var(--git-delete-bg); + border-color: var(--git-delete-hl); + } + .d2h-ins { + background-color: var(--git-insert-bg); + border-color: var(--git-insert-hl); + } + .d2h-info { + background-color: var(--background-primary); + border-color: var(--background-modifier-border); + color: var(--text-faint); + } + .d2h-del, + .d2h-ins, + .d2h-file-diff .d2h-change { + color: var(--text-normal); + } + .d2h-file-diff .d2h-del.d2h-change { + background-color: var(--git-change-bg); + } + .d2h-file-diff .d2h-ins.d2h-change { + background-color: var(--git-insert-bg); + } + .d2h-file-list-wrapper { + a { + text-decoration: none; + cursor: default; + -webkit-user-drag: none; + } + + svg { + display: none; + } + } + .d2h-file-list-header { + text-align: left; + } + .d2h-file-list-title { + display: none; + } + .d2h-file-list-line { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + text-align: left; + } + .d2h-file-list { + } + .d2h-file-list > li { + border-bottom: 1px solid var(--background-modifier-border); + margin: 0; + padding: 5px 10px; + } + .d2h-file-list > li:last-child { + border-bottom: none; + } + .d2h-file-switch { + cursor: pointer; + display: none; + font-size: 10px; + } + .d2h-icon { + fill: currentColor; + margin-right: 10px; + vertical-align: middle; + } + .d2h-deleted { + color: var(--git-delete); + } + .d2h-added { + color: var(--git-insert); + } + .d2h-changed { + color: var(--git-change); + } + .d2h-moved { + color: var(--git-move); + } + .d2h-tag { + background-color: var(--background-secondary); + display: -webkit-box; + display: -ms-flexbox; + display: flex; + font-size: 10px; + margin-left: 5px; + padding: 0 2px; + } + .d2h-deleted-tag { + border: 1px solid var(--git-delete); + } + .d2h-added-tag { + border: 1px solid var(--git-insert); + } + .d2h-changed-tag { + border: 1px solid var(--git-change); + } + .d2h-moved-tag { + border: 1px solid var(--git-move); + } + + /* needed for line-by-line*/ + + .d2h-diff-tbody { + position: relative; + } + + /* My additions */ + .cm-merge-revert { + width: 4em; + } + /* Ensure that merge revert markers are positioned correctly */ + .cm-merge-revert > * { + position: absolute; + background-color: var(--background-secondary); + display: flex; + } +} + +/* ====================== Line Authoring Information ====================== */ + +.cm-gutterElement.obs-git-blame-gutter { + /* Add background color to spacing inbetween and around the gutter for better aesthetics */ + border-width: 0px 2px 0.2px; + border-style: solid; + border-color: var(--background-secondary); + background-color: var(--background-secondary); +} + +.cm-gutterElement.obs-git-blame-gutter > div, +.line-author-settings-preview { + /* delegate text color to settings */ + color: var(--obs-git-gutter-text); + font-family: monospace; + height: 100%; /* ensure, that age-based background color occupies entire parent */ + text-align: right; + padding: 0px 6px; + white-space: pre; /* Keep spaces and do not collapse them. */ +} + +@media (max-width: 800px) { + /* hide git blame gutter not to superpose text */ + .cm-gutterElement.obs-git-blame-gutter { + display: none; + } +} + +.git-unified-diff-view, +.git-split-diff-view .cm-deletedLine .cm-changedText { + background-color: #ee443330; +} + +.git-unified-diff-view, +.git-split-diff-view .cm-insertedLine .cm-changedText { + background-color: #22bb2230; +} + +.git-obscure-prompt[git-is-obscured="true"] #git-show-password:after { + -webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye"><path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"></path><circle cx="12" cy="12" r="3"></circle></svg>'); +} + +.git-obscure-prompt[git-is-obscured="false"] #git-show-password:after { + -webkit-mask-image: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="svg-icon lucide-eye-off"><path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"></path><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"></path><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"></path><path d="m2 2 20 20"></path></svg>'); +} + +/* Override styling of Codemirror merge view "collapsed lines" indicator */ +.git-split-diff-view .ͼ2 .cm-collapsedLines { + background: var(--interactive-normal); + border-radius: var(--radius-m); + color: var(--text-accent); + font-size: var(--font-small); + padding: var(--size-4-1) var(--size-4-1); +} +.git-split-diff-view .ͼ2 .cm-collapsedLines:hover { + background: var(--interactive-hover); + color: var(--text-accent-hover); +} + +.git-signs-gutter { + .cm-gutterElement { + display: grid; + + /* Needed to align the sign properly for different line heigts. Such as + * when having a heading or list item. + */ + padding-top: 0 !important; + } +} + +.git-gutter-marker:hover { + border-radius: 2px; +} + +.git-gutter-marker.git-add { + background-color: var(--color-green); + justify-self: center; + height: inherit; + width: 0.2rem; +} + +.git-gutter-marker.git-change { + background-color: var(--color-yellow); + justify-self: center; + height: inherit; + width: 0.2rem; +} + +.git-gutter-marker.git-changedelete { + color: var(--color-yellow); + font-weight: var(--font-bold); + font-size: 1rem; + justify-self: center; + height: inherit; +} + +.git-gutter-marker.git-delete { + background-color: var(--color-red); + height: 0.2rem; + width: 0.8rem; + align-self: end; +} + +.git-gutter-marker.git-topdelete { + background-color: var(--color-red); + height: 0.2rem; + width: 0.8rem; + align-self: start; +} + +div:hover > .git-gutter-marker.git-change { + width: 0.6rem; +} + +div:hover > .git-gutter-marker.git-add { + width: 0.6rem; +} + +div:hover > .git-gutter-marker.git-delete { + height: 0.6rem; +} + +div:hover > .git-gutter-marker.git-topdelete { + height: 0.6rem; +} + +div:hover > .git-gutter-marker.git-changedelete { + font-weight: var(--font-bold); +} + +.git-gutter-marker.staged { + opacity: 0.5; +} + +/* Prevent shifting of the editor when git signs gutter is the only gutter present */ +.cm-gutters.cm-gutters-before:has(> .git-signs-gutter:only-child) { + margin-inline-end: 0; + .git-signs-gutter { + margin-inline-start: -1rem; + } +} + +.git-changes-status-bar-colored { + .git-add { + color: var(--color-green); + } + .git-change { + color: var(--color-yellow); + } + .git-delete { + color: var(--color-red); + } +} + +.git-changes-status-bar .git-add { + margin-right: 0.3em; +} + +.git-changes-status-bar .git-change { + margin-right: 0.3em; +} diff --git a/.obsidian/plugins/obsidian-hover-editor/main.js b/.obsidian/plugins/obsidian-hover-editor/main.js new file mode 100644 index 0000000..ada007d --- /dev/null +++ b/.obsidian/plugins/obsidian-hover-editor/main.js @@ -0,0 +1,20 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var Oa=Object.create;var Jt=Object.defineProperty;var Ta=Object.getOwnPropertyDescriptor;var Ma=Object.getOwnPropertyNames;var Ca=Object.getPrototypeOf,Aa=Object.prototype.hasOwnProperty;var Or=f=>Jt(f,"__esModule",{value:!0});var Tr=(f,o)=>()=>(o||f((o={exports:{}}).exports,o),o.exports),Da=(f,o)=>{Or(f);for(var l in o)Jt(f,l,{get:o[l],enumerable:!0})},Ia=(f,o,l)=>{if(o&&typeof o=="object"||typeof o=="function")for(let h of Ma(o))!Aa.call(f,h)&&h!=="default"&&Jt(f,h,{get:()=>o[h],enumerable:!(l=Ta(o,h))||l.enumerable});return f},Ge=f=>Ia(Or(Jt(f!=null?Oa(Ca(f)):{},"default",f&&f.__esModule&&"default"in f?{get:()=>f.default,enumerable:!0}:{value:f,enumerable:!0})),f);var Cr=Tr((Qa,Mr)=>{Mr.exports=function(o,l){l||(l=[0,""]),o=String(o);var h=parseFloat(o,10);return l[0]=h,l[1]=o.match(/[\d.\-\+]*\s*(.*)/)[1]||"",l}});var Ur=Tr(($r,ei)=>{(function(f){typeof $r=="object"&&typeof ei!="undefined"?ei.exports=f():typeof define=="function"&&define.amd?define([],f):(typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:this).interact=f()})(function(){var f={};Object.defineProperty(f,"__esModule",{value:!0}),f.default=void 0,f.default=function(e){return!(!e||!e.Window)&&e instanceof e.Window};var o={};Object.defineProperty(o,"__esModule",{value:!0}),o.init=g,o.getWindow=function(e){return(0,f.default)(e)?e:(e.ownerDocument||e).defaultView||h.window},o.window=o.realWindow=void 0;var l=void 0;o.realWindow=l;var h=void 0;function g(e){o.realWindow=l=e;var t=e.document.createTextNode("");t.ownerDocument!==e.document&&typeof e.wrap=="function"&&e.wrap(t)===t&&(e=e.wrap(e)),o.window=h=e}o.window=h,typeof window!="undefined"&&window&&g(window);var d={};function w(e){return(w=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}Object.defineProperty(d,"__esModule",{value:!0}),d.default=void 0;var k=function(e){return!!e&&w(e)==="object"},S=function(e){return typeof e=="function"},O={window:function(e){return e===o.window||(0,f.default)(e)},docFrag:function(e){return k(e)&&e.nodeType===11},object:k,func:S,number:function(e){return typeof e=="number"},bool:function(e){return typeof e=="boolean"},string:function(e){return typeof e=="string"},element:function(e){if(!e||w(e)!=="object")return!1;var t=o.getWindow(e)||o.window;return/object|function/.test(w(t.Element))?e instanceof t.Element:e.nodeType===1&&typeof e.nodeName=="string"},plainObject:function(e){return k(e)&&!!e.constructor&&/function Object\b/.test(e.constructor.toString())},array:function(e){return k(e)&&e.length!==void 0&&S(e.splice)}};d.default=O;var T={};function _(e){var t=e.interaction;if(t.prepared.name==="drag"){var i=t.prepared.axis;i==="x"?(t.coords.cur.page.y=t.coords.start.page.y,t.coords.cur.client.y=t.coords.start.client.y,t.coords.velocity.client.y=0,t.coords.velocity.page.y=0):i==="y"&&(t.coords.cur.page.x=t.coords.start.page.x,t.coords.cur.client.x=t.coords.start.client.x,t.coords.velocity.client.x=0,t.coords.velocity.page.x=0)}}function H(e){var t=e.iEvent,i=e.interaction;if(i.prepared.name==="drag"){var n=i.prepared.axis;if(n==="x"||n==="y"){var r=n==="x"?"y":"x";t.page[r]=i.coords.start.page[r],t.client[r]=i.coords.start.client[r],t.delta[r]=0}}}Object.defineProperty(T,"__esModule",{value:!0}),T.default=void 0;var j={id:"actions/drag",install:function(e){var t=e.actions,i=e.Interactable,n=e.defaults;i.prototype.draggable=j.draggable,t.map.drag=j,t.methodDict.drag="draggable",n.actions.drag=j.defaults},listeners:{"interactions:before-action-move":_,"interactions:action-resume":_,"interactions:action-move":H,"auto-start:check":function(e){var t=e.interaction,i=e.interactable,n=e.buttons,r=i.options.drag;if(r&&r.enabled&&(!t.pointerIsDown||!/mouse|pointer/.test(t.pointerType)||(n&i.options.drag.mouseButtons)!=0))return e.action={name:"drag",axis:r.lockAxis==="start"?r.startAxis:r.lockAxis},!1}},draggable:function(e){return d.default.object(e)?(this.options.drag.enabled=e.enabled!==!1,this.setPerAction("drag",e),this.setOnEvents("drag",e),/^(xy|x|y|start)$/.test(e.lockAxis)&&(this.options.drag.lockAxis=e.lockAxis),/^(xy|x|y)$/.test(e.startAxis)&&(this.options.drag.startAxis=e.startAxis),this):d.default.bool(e)?(this.options.drag.enabled=e,this):this.options.drag},beforeMove:_,move:H,defaults:{startAxis:"xy",lockAxis:"xy"},getCursor:function(){return"move"}},q=j;T.default=q;var L={};Object.defineProperty(L,"__esModule",{value:!0}),L.default=void 0;var F={init:function(e){var t=e;F.document=t.document,F.DocumentFragment=t.DocumentFragment||J,F.SVGElement=t.SVGElement||J,F.SVGSVGElement=t.SVGSVGElement||J,F.SVGElementInstance=t.SVGElementInstance||J,F.Element=t.Element||J,F.HTMLElement=t.HTMLElement||F.Element,F.Event=t.Event,F.Touch=t.Touch||J,F.PointerEvent=t.PointerEvent||t.MSPointerEvent},document:null,DocumentFragment:null,SVGElement:null,SVGSVGElement:null,SVGElementInstance:null,Element:null,HTMLElement:null,Event:null,Touch:null,PointerEvent:null};function J(){}var le=F;L.default=le;var G={};Object.defineProperty(G,"__esModule",{value:!0}),G.default=void 0;var Q={init:function(e){var t=L.default.Element,i=e.navigator||{};Q.supportsTouch="ontouchstart"in e||d.default.func(e.DocumentTouch)&&L.default.document instanceof e.DocumentTouch,Q.supportsPointerEvent=i.pointerEnabled!==!1&&!!L.default.PointerEvent,Q.isIOS=/iP(hone|od|ad)/.test(i.platform),Q.isIOS7=/iP(hone|od|ad)/.test(i.platform)&&/OS 7[^\d]/.test(i.appVersion),Q.isIe9=/MSIE 9/.test(i.userAgent),Q.isOperaMobile=i.appName==="Opera"&&Q.supportsTouch&&/Presto/.test(i.userAgent),Q.prefixedMatchesSelector="matches"in t.prototype?"matches":"webkitMatchesSelector"in t.prototype?"webkitMatchesSelector":"mozMatchesSelector"in t.prototype?"mozMatchesSelector":"oMatchesSelector"in t.prototype?"oMatchesSelector":"msMatchesSelector",Q.pEventTypes=Q.supportsPointerEvent?L.default.PointerEvent===e.MSPointerEvent?{up:"MSPointerUp",down:"MSPointerDown",over:"mouseover",out:"mouseout",move:"MSPointerMove",cancel:"MSPointerCancel"}:{up:"pointerup",down:"pointerdown",over:"pointerover",out:"pointerout",move:"pointermove",cancel:"pointercancel"}:null,Q.wheelEvent=L.default.document&&"onmousewheel"in L.default.document?"mousewheel":"wheel"},supportsTouch:null,supportsPointerEvent:null,isIOS7:null,isIOS:null,isIe9:null,isOperaMobile:null,prefixedMatchesSelector:null,pEventTypes:null,wheelEvent:null},an=Q;G.default=an;var I={};function mt(e){var t=e.parentNode;if(d.default.docFrag(t)){for(;(t=t.host)&&d.default.docFrag(t););return t}return t}function yt(e,t){return o.window!==o.realWindow&&(t=t.replace(/\/deep\//g," ")),e[G.default.prefixedMatchesSelector](t)}Object.defineProperty(I,"__esModule",{value:!0}),I.nodeContains=function(e,t){if(e.contains)return e.contains(t);for(;t;){if(t===e)return!0;t=t.parentNode}return!1},I.closest=function(e,t){for(;d.default.element(e);){if(yt(e,t))return e;e=mt(e)}return null},I.parentNode=mt,I.matchesSelector=yt,I.indexOfDeepestElement=function(e){for(var t,i=[],n=0;n<e.length;n++){var r=e[n],a=e[t];if(r&&n!==t)if(a){var u=sn(r),s=sn(a);if(u!==r.ownerDocument)if(s!==r.ownerDocument)if(u!==s){i=i.length?i:ni(a);var c=void 0;if(a instanceof L.default.HTMLElement&&r instanceof L.default.SVGElement&&!(r instanceof L.default.SVGSVGElement)){if(r===s)continue;c=r.ownerSVGElement}else c=r;for(var p=ni(c,a.ownerDocument),v=0;p[v]&&p[v]===i[v];)v++;var m=[p[v-1],p[v],i[v]];if(m[0])for(var b=m[0].lastChild;b;){if(b===m[1]){t=n,i=p;break}if(b===m[2])break;b=b.previousSibling}}else E=r,y=a,(parseInt(o.getWindow(E).getComputedStyle(E).zIndex,10)||0)>=(parseInt(o.getWindow(y).getComputedStyle(y).zIndex,10)||0)&&(t=n);else t=n}else t=n}var E,y;return t},I.matchesUpTo=function(e,t,i){for(;d.default.element(e);){if(yt(e,t))return!0;if((e=mt(e))===i)return yt(e,t)}return!1},I.getActualElement=function(e){return e.correspondingUseElement||e},I.getScrollXY=ii,I.getElementClientRect=ri,I.getElementRect=function(e){var t=ri(e);if(!G.default.isIOS7&&t){var i=ii(o.getWindow(e));t.left+=i.x,t.right+=i.x,t.top+=i.y,t.bottom+=i.y}return t},I.getPath=function(e){for(var t=[];e;)t.push(e),e=mt(e);return t},I.trySelector=function(e){return!!d.default.string(e)&&(L.default.document.querySelector(e),!0)};var sn=function(e){return e.parentNode||e.host};function ni(e,t){for(var i,n=[],r=e;(i=sn(r))&&r!==t&&i!==r.ownerDocument;)n.unshift(r),r=i;return n}function ii(e){return{x:(e=e||o.window).scrollX||e.document.documentElement.scrollLeft,y:e.scrollY||e.document.documentElement.scrollTop}}function ri(e){var t=e instanceof L.default.SVGElement?e.getBoundingClientRect():e.getClientRects()[0];return t&&{left:t.left,right:t.right,top:t.top,bottom:t.bottom,width:t.width||t.right-t.left,height:t.height||t.bottom-t.top}}var D={};Object.defineProperty(D,"__esModule",{value:!0}),D.default=function(e,t){for(var i in t)e[i]=t[i];return e};var K={};function ln(e,t){(t==null||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}function oi(e,t,i){return e==="parent"?(0,I.parentNode)(i):e==="self"?t.getRect(i):(0,I.closest)(i,e)}Object.defineProperty(K,"__esModule",{value:!0}),K.getStringOptionResult=oi,K.resolveRectLike=function(e,t,i,n){var r,a=e;return d.default.string(a)?a=oi(a,t,i):d.default.func(a)&&(a=a.apply(void 0,function(u){if(Array.isArray(u))return ln(u)}(r=n)||function(u){if(typeof Symbol!="undefined"&&Symbol.iterator in Object(u))return Array.from(u)}(r)||function(u,s){if(u){if(typeof u=="string")return ln(u,s);var c=Object.prototype.toString.call(u).slice(8,-1);return c==="Object"&&u.constructor&&(c=u.constructor.name),c==="Map"||c==="Set"?Array.from(u):c==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?ln(u,s):void 0}}(r)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}())),d.default.element(a)&&(a=(0,I.getElementRect)(a)),a},K.rectToXY=function(e){return e&&{x:"x"in e?e.x:e.left,y:"y"in e?e.y:e.top}},K.xywhToTlbr=function(e){return!e||"left"in e&&"top"in e||((e=(0,D.default)({},e)).left=e.x||0,e.top=e.y||0,e.right=e.right||e.left+e.width,e.bottom=e.bottom||e.top+e.height),e},K.tlbrToXywh=function(e){return!e||"x"in e&&"y"in e||((e=(0,D.default)({},e)).x=e.left||0,e.y=e.top||0,e.width=e.width||(e.right||0)-e.x,e.height=e.height||(e.bottom||0)-e.y),e},K.addEdges=function(e,t,i){e.left&&(t.left+=i.x),e.right&&(t.right+=i.x),e.top&&(t.top+=i.y),e.bottom&&(t.bottom+=i.y),t.width=t.right-t.left,t.height=t.bottom-t.top};var Oe={};Object.defineProperty(Oe,"__esModule",{value:!0}),Oe.default=function(e,t,i){var n=e.options[i],r=n&&n.origin||e.options.origin,a=(0,K.resolveRectLike)(r,e,t,[e&&t]);return(0,K.rectToXY)(a)||{x:0,y:0}};var ze={};function ai(e){return e.trim().split(/ +/)}Object.defineProperty(ze,"__esModule",{value:!0}),ze.default=function e(t,i,n){if(n=n||{},d.default.string(t)&&t.search(" ")!==-1&&(t=ai(t)),d.default.array(t))return t.reduce(function(c,p){return(0,D.default)(c,e(p,i,n))},n);if(d.default.object(t)&&(i=t,t=""),d.default.func(i))n[t]=n[t]||[],n[t].push(i);else if(d.default.array(i))for(var r=0;r<i.length;r++){var a;a=i[r],e(t,a,n)}else if(d.default.object(i))for(var u in i){var s=ai(u).map(function(c){return"".concat(t).concat(c)});e(s,i[u],n)}return n};var be={};Object.defineProperty(be,"__esModule",{value:!0}),be.default=void 0,be.default=function(e,t){return Math.sqrt(e*e+t*t)};var et={};function cn(e,t){for(var i in t){var n=cn.prefixedPropREs,r=!1;for(var a in n)if(i.indexOf(a)===0&&n[a].test(i)){r=!0;break}r||typeof t[i]=="function"||(e[i]=t[i])}return e}Object.defineProperty(et,"__esModule",{value:!0}),et.default=void 0,cn.prefixedPropREs={webkit:/(Movement[XY]|Radius[XY]|RotationAngle|Force)$/,moz:/(Pressure)$/};var Kr=cn;et.default=Kr;var A={};function un(e){return e instanceof L.default.Event||e instanceof L.default.Touch}function tt(e,t,i){return e=e||"page",(i=i||{}).x=t[e+"X"],i.y=t[e+"Y"],i}function si(e,t){return t=t||{x:0,y:0},G.default.isOperaMobile&&un(e)?(tt("screen",e,t),t.x+=window.scrollX,t.y+=window.scrollY):tt("page",e,t),t}function li(e,t){return t=t||{},G.default.isOperaMobile&&un(e)?tt("screen",e,t):tt("client",e,t),t}function bt(e){var t=[];return d.default.array(e)?(t[0]=e[0],t[1]=e[1]):e.type==="touchend"?e.touches.length===1?(t[0]=e.touches[0],t[1]=e.changedTouches[0]):e.touches.length===0&&(t[0]=e.changedTouches[0],t[1]=e.changedTouches[1]):(t[0]=e.touches[0],t[1]=e.touches[1]),t}function ci(e){for(var t={pageX:0,pageY:0,clientX:0,clientY:0,screenX:0,screenY:0},i=0;i<e.length;i++){var n=e[i];for(var r in t)t[r]+=n[r]}for(var a in t)t[a]/=e.length;return t}Object.defineProperty(A,"__esModule",{value:!0}),A.copyCoords=function(e,t){e.page=e.page||{},e.page.x=t.page.x,e.page.y=t.page.y,e.client=e.client||{},e.client.x=t.client.x,e.client.y=t.client.y,e.timeStamp=t.timeStamp},A.setCoordDeltas=function(e,t,i){e.page.x=i.page.x-t.page.x,e.page.y=i.page.y-t.page.y,e.client.x=i.client.x-t.client.x,e.client.y=i.client.y-t.client.y,e.timeStamp=i.timeStamp-t.timeStamp},A.setCoordVelocity=function(e,t){var i=Math.max(t.timeStamp/1e3,.001);e.page.x=t.page.x/i,e.page.y=t.page.y/i,e.client.x=t.client.x/i,e.client.y=t.client.y/i,e.timeStamp=i},A.setZeroCoords=function(e){e.page.x=0,e.page.y=0,e.client.x=0,e.client.y=0},A.isNativePointer=un,A.getXY=tt,A.getPageXY=si,A.getClientXY=li,A.getPointerId=function(e){return d.default.number(e.pointerId)?e.pointerId:e.identifier},A.setCoords=function(e,t,i){var n=t.length>1?ci(t):t[0];si(n,e.page),li(n,e.client),e.timeStamp=i},A.getTouchPair=bt,A.pointerAverage=ci,A.touchBBox=function(e){if(!e.length)return null;var t=bt(e),i=Math.min(t[0].pageX,t[1].pageX),n=Math.min(t[0].pageY,t[1].pageY),r=Math.max(t[0].pageX,t[1].pageX),a=Math.max(t[0].pageY,t[1].pageY);return{x:i,y:n,left:i,top:n,right:r,bottom:a,width:r-i,height:a-n}},A.touchDistance=function(e,t){var i=t+"X",n=t+"Y",r=bt(e),a=r[0][i]-r[1][i],u=r[0][n]-r[1][n];return(0,be.default)(a,u)},A.touchAngle=function(e,t){var i=t+"X",n=t+"Y",r=bt(e),a=r[1][i]-r[0][i],u=r[1][n]-r[0][n];return 180*Math.atan2(u,a)/Math.PI},A.getPointerType=function(e){return d.default.string(e.pointerType)?e.pointerType:d.default.number(e.pointerType)?[void 0,void 0,"touch","pen","mouse"][e.pointerType]:/touch/.test(e.type||"")||e instanceof L.default.Touch?"touch":"mouse"},A.getEventTargets=function(e){var t=d.default.func(e.composedPath)?e.composedPath():e.path;return[I.getActualElement(t?t[0]:e.target),I.getActualElement(e.currentTarget)]},A.newCoords=function(){return{page:{x:0,y:0},client:{x:0,y:0},timeStamp:0}},A.coordsToEvent=function(e){return{coords:e,get page(){return this.coords.page},get client(){return this.coords.client},get timeStamp(){return this.coords.timeStamp},get pageX(){return this.coords.page.x},get pageY(){return this.coords.page.y},get clientX(){return this.coords.client.x},get clientY(){return this.coords.client.y},get pointerId(){return this.coords.pointerId},get target(){return this.coords.target},get type(){return this.coords.type},get pointerType(){return this.coords.pointerType},get buttons(){return this.coords.buttons},preventDefault:function(){}}},Object.defineProperty(A,"pointerExtend",{enumerable:!0,get:function(){return et.default}});var He={};function Zr(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}Object.defineProperty(He,"__esModule",{value:!0}),He.BaseEvent=void 0;var ui=function(){function e(n){(function(r,a){if(!(r instanceof a))throw new TypeError("Cannot call a class as a function")})(this,e),this.type=void 0,this.target=void 0,this.currentTarget=void 0,this.interactable=void 0,this._interaction=void 0,this.timeStamp=void 0,this.immediatePropagationStopped=!1,this.propagationStopped=!1,this._interaction=n}var t,i;return t=e,(i=[{key:"preventDefault",value:function(){}},{key:"stopPropagation",value:function(){this.propagationStopped=!0}},{key:"stopImmediatePropagation",value:function(){this.immediatePropagationStopped=this.propagationStopped=!0}}])&&Zr(t.prototype,i),e}();He.BaseEvent=ui,Object.defineProperty(ui.prototype,"interaction",{get:function(){return this._interaction._proxy},set:function(){}});var U={};Object.defineProperty(U,"__esModule",{value:!0}),U.find=U.findIndex=U.from=U.merge=U.remove=U.contains=void 0,U.contains=function(e,t){return e.indexOf(t)!==-1},U.remove=function(e,t){return e.splice(e.indexOf(t),1)};var di=function(e,t){for(var i=0;i<t.length;i++){var n=t[i];e.push(n)}return e};U.merge=di,U.from=function(e){return di([],e)};var pi=function(e,t){for(var i=0;i<e.length;i++)if(t(e[i],i,e))return i;return-1};U.findIndex=pi,U.find=function(e,t){return e[pi(e,t)]};var he={};function fi(e){return(fi=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function Jr(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function hi(e,t){return(hi=Object.setPrototypeOf||function(i,n){return i.__proto__=n,i})(e,t)}function Qr(e,t){return!t||fi(t)!=="object"&&typeof t!="function"?function(i){if(i===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return i}(e):t}function dn(e){return(dn=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(e)}Object.defineProperty(he,"__esModule",{value:!0}),he.DropEvent=void 0;var eo=function(e){(function(s,c){if(typeof c!="function"&&c!==null)throw new TypeError("Super expression must either be null or a function");s.prototype=Object.create(c&&c.prototype,{constructor:{value:s,writable:!0,configurable:!0}}),c&&hi(s,c)})(u,e);var t,i,n,r,a=(n=u,r=function(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(s){return!1}}(),function(){var s,c=dn(n);if(r){var p=dn(this).constructor;s=Reflect.construct(c,arguments,p)}else s=c.apply(this,arguments);return Qr(this,s)});function u(s,c,p){var v;(function(y,P){if(!(y instanceof P))throw new TypeError("Cannot call a class as a function")})(this,u),(v=a.call(this,c._interaction)).target=void 0,v.dropzone=void 0,v.dragEvent=void 0,v.relatedTarget=void 0,v.draggable=void 0,v.timeStamp=void 0,v.propagationStopped=!1,v.immediatePropagationStopped=!1;var m=p==="dragleave"?s.prev:s.cur,b=m.element,E=m.dropzone;return v.type=p,v.target=b,v.currentTarget=b,v.dropzone=E,v.dragEvent=c,v.relatedTarget=c.target,v.draggable=c.interactable,v.timeStamp=c.timeStamp,v}return t=u,(i=[{key:"reject",value:function(){var s=this,c=this._interaction.dropState;if(this.type==="dropactivate"||this.dropzone&&c.cur.dropzone===this.dropzone&&c.cur.element===this.target)if(c.prev.dropzone=this.dropzone,c.prev.element=this.target,c.rejected=!0,c.events.enter=null,this.stopImmediatePropagation(),this.type==="dropactivate"){var p=c.activeDrops,v=U.findIndex(p,function(b){var E=b.dropzone,y=b.element;return E===s.dropzone&&y===s.target});c.activeDrops.splice(v,1);var m=new u(c,this.dragEvent,"dropdeactivate");m.dropzone=this.dropzone,m.target=this.target,this.dropzone.fire(m)}else this.dropzone.fire(new u(c,this.dragEvent,"dragleave"))}},{key:"preventDefault",value:function(){}},{key:"stopPropagation",value:function(){this.propagationStopped=!0}},{key:"stopImmediatePropagation",value:function(){this.immediatePropagationStopped=this.propagationStopped=!0}}])&&Jr(t.prototype,i),u}(He.BaseEvent);he.DropEvent=eo;var wt={};function vi(e,t){for(var i=0;i<e.slice().length;i++){var n=e.slice()[i],r=n.dropzone,a=n.element;t.dropzone=r,t.target=a,r.fire(t),t.propagationStopped=t.immediatePropagationStopped=!1}}function pn(e,t){for(var i=function(a,u){for(var s=a.interactables,c=[],p=0;p<s.list.length;p++){var v=s.list[p];if(v.options.drop.enabled){var m=v.options.drop.accept;if(!(d.default.element(m)&&m!==u||d.default.string(m)&&!I.matchesSelector(u,m)||d.default.func(m)&&!m({dropzone:v,draggableElement:u})))for(var b=d.default.string(v.target)?v._context.querySelectorAll(v.target):d.default.array(v.target)?v.target:[v.target],E=0;E<b.length;E++){var y=b[E];y!==u&&c.push({dropzone:v,element:y,rect:v.getRect(y)})}}}return c}(e,t),n=0;n<i.length;n++){var r=i[n];r.rect=r.dropzone.getRect(r.element)}return i}function gi(e,t,i){for(var n=e.dropState,r=e.interactable,a=e.element,u=[],s=0;s<n.activeDrops.length;s++){var c=n.activeDrops[s],p=c.dropzone,v=c.element,m=c.rect;u.push(p.dropCheck(t,i,r,a,v,m)?v:null)}var b=I.indexOfDeepestElement(u);return n.activeDrops[b]||null}function fn(e,t,i){var n=e.dropState,r={enter:null,leave:null,activate:null,deactivate:null,move:null,drop:null};return i.type==="dragstart"&&(r.activate=new he.DropEvent(n,i,"dropactivate"),r.activate.target=null,r.activate.dropzone=null),i.type==="dragend"&&(r.deactivate=new he.DropEvent(n,i,"dropdeactivate"),r.deactivate.target=null,r.deactivate.dropzone=null),n.rejected||(n.cur.element!==n.prev.element&&(n.prev.dropzone&&(r.leave=new he.DropEvent(n,i,"dragleave"),i.dragLeave=r.leave.target=n.prev.element,i.prevDropzone=r.leave.dropzone=n.prev.dropzone),n.cur.dropzone&&(r.enter=new he.DropEvent(n,i,"dragenter"),i.dragEnter=n.cur.element,i.dropzone=n.cur.dropzone)),i.type==="dragend"&&n.cur.dropzone&&(r.drop=new he.DropEvent(n,i,"drop"),i.dropzone=n.cur.dropzone,i.relatedTarget=n.cur.element),i.type==="dragmove"&&n.cur.dropzone&&(r.move=new he.DropEvent(n,i,"dropmove"),r.move.dragmove=i,i.dropzone=n.cur.dropzone)),r}function hn(e,t){var i=e.dropState,n=i.activeDrops,r=i.cur,a=i.prev;t.leave&&a.dropzone.fire(t.leave),t.enter&&r.dropzone.fire(t.enter),t.move&&r.dropzone.fire(t.move),t.drop&&r.dropzone.fire(t.drop),t.deactivate&&vi(n,t.deactivate),i.prev.dropzone=r.dropzone,i.prev.element=r.element}function mi(e,t){var i=e.interaction,n=e.iEvent,r=e.event;if(n.type==="dragmove"||n.type==="dragend"){var a=i.dropState;t.dynamicDrop&&(a.activeDrops=pn(t,i.element));var u=n,s=gi(i,u,r);a.rejected=a.rejected&&!!s&&s.dropzone===a.cur.dropzone&&s.element===a.cur.element,a.cur.dropzone=s&&s.dropzone,a.cur.element=s&&s.element,a.events=fn(i,0,u)}}Object.defineProperty(wt,"__esModule",{value:!0}),wt.default=void 0;var yi={id:"actions/drop",install:function(e){var t=e.actions,i=e.interactStatic,n=e.Interactable,r=e.defaults;e.usePlugin(T.default),n.prototype.dropzone=function(a){return function(u,s){if(d.default.object(s)){if(u.options.drop.enabled=s.enabled!==!1,s.listeners){var c=(0,ze.default)(s.listeners),p=Object.keys(c).reduce(function(v,m){return v[/^(enter|leave)/.test(m)?"drag".concat(m):/^(activate|deactivate|move)/.test(m)?"drop".concat(m):m]=c[m],v},{});u.off(u.options.drop.listeners),u.on(p),u.options.drop.listeners=p}return d.default.func(s.ondrop)&&u.on("drop",s.ondrop),d.default.func(s.ondropactivate)&&u.on("dropactivate",s.ondropactivate),d.default.func(s.ondropdeactivate)&&u.on("dropdeactivate",s.ondropdeactivate),d.default.func(s.ondragenter)&&u.on("dragenter",s.ondragenter),d.default.func(s.ondragleave)&&u.on("dragleave",s.ondragleave),d.default.func(s.ondropmove)&&u.on("dropmove",s.ondropmove),/^(pointer|center)$/.test(s.overlap)?u.options.drop.overlap=s.overlap:d.default.number(s.overlap)&&(u.options.drop.overlap=Math.max(Math.min(1,s.overlap),0)),"accept"in s&&(u.options.drop.accept=s.accept),"checker"in s&&(u.options.drop.checker=s.checker),u}return d.default.bool(s)?(u.options.drop.enabled=s,u):u.options.drop}(this,a)},n.prototype.dropCheck=function(a,u,s,c,p,v){return function(m,b,E,y,P,M,x){var C=!1;if(!(x=x||m.getRect(M)))return!!m.options.drop.checker&&m.options.drop.checker(b,E,C,m,M,y,P);var R=m.options.drop.overlap;if(R==="pointer"){var N=(0,Oe.default)(y,P,"drag"),X=A.getPageXY(b);X.x+=N.x,X.y+=N.y;var Z=X.x>x.left&&X.x<x.right,B=X.y>x.top&&X.y<x.bottom;C=Z&&B}var Y=y.getRect(P);if(Y&&R==="center"){var ue=Y.left+Y.width/2,ye=Y.top+Y.height/2;C=ue>=x.left&&ue<=x.right&&ye>=x.top&&ye<=x.bottom}return Y&&d.default.number(R)&&(C=Math.max(0,Math.min(x.right,Y.right)-Math.max(x.left,Y.left))*Math.max(0,Math.min(x.bottom,Y.bottom)-Math.max(x.top,Y.top))/(Y.width*Y.height)>=R),m.options.drop.checker&&(C=m.options.drop.checker(b,E,C,m,M,y,P)),C}(this,a,u,s,c,p,v)},i.dynamicDrop=function(a){return d.default.bool(a)?(e.dynamicDrop=a,i):e.dynamicDrop},(0,D.default)(t.phaselessTypes,{dragenter:!0,dragleave:!0,dropactivate:!0,dropdeactivate:!0,dropmove:!0,drop:!0}),t.methodDict.drop="dropzone",e.dynamicDrop=!1,r.actions.drop=yi.defaults},listeners:{"interactions:before-action-start":function(e){var t=e.interaction;t.prepared.name==="drag"&&(t.dropState={cur:{dropzone:null,element:null},prev:{dropzone:null,element:null},rejected:null,events:null,activeDrops:[]})},"interactions:after-action-start":function(e,t){var i=e.interaction,n=(e.event,e.iEvent);if(i.prepared.name==="drag"){var r=i.dropState;r.activeDrops=null,r.events=null,r.activeDrops=pn(t,i.element),r.events=fn(i,0,n),r.events.activate&&(vi(r.activeDrops,r.events.activate),t.fire("actions/drop:start",{interaction:i,dragEvent:n}))}},"interactions:action-move":mi,"interactions:after-action-move":function(e,t){var i=e.interaction,n=e.iEvent;i.prepared.name==="drag"&&(hn(i,i.dropState.events),t.fire("actions/drop:move",{interaction:i,dragEvent:n}),i.dropState.events={})},"interactions:action-end":function(e,t){if(e.interaction.prepared.name==="drag"){var i=e.interaction,n=e.iEvent;mi(e,t),hn(i,i.dropState.events),t.fire("actions/drop:end",{interaction:i,dragEvent:n})}},"interactions:stop":function(e){var t=e.interaction;if(t.prepared.name==="drag"){var i=t.dropState;i&&(i.activeDrops=null,i.events=null,i.cur.dropzone=null,i.cur.element=null,i.prev.dropzone=null,i.prev.element=null,i.rejected=!1)}}},getActiveDrops:pn,getDrop:gi,getDropEvents:fn,fireDropEvents:hn,defaults:{enabled:!1,accept:null,overlap:"pointer"}},to=yi;wt.default=to;var Et={};function vn(e){var t=e.interaction,i=e.iEvent,n=e.phase;if(t.prepared.name==="gesture"){var r=t.pointers.map(function(p){return p.pointer}),a=n==="start",u=n==="end",s=t.interactable.options.deltaSource;if(i.touches=[r[0],r[1]],a)i.distance=A.touchDistance(r,s),i.box=A.touchBBox(r),i.scale=1,i.ds=0,i.angle=A.touchAngle(r,s),i.da=0,t.gesture.startDistance=i.distance,t.gesture.startAngle=i.angle;else if(u){var c=t.prevEvent;i.distance=c.distance,i.box=c.box,i.scale=c.scale,i.ds=0,i.angle=c.angle,i.da=0}else i.distance=A.touchDistance(r,s),i.box=A.touchBBox(r),i.scale=i.distance/t.gesture.startDistance,i.angle=A.touchAngle(r,s),i.ds=i.scale-t.gesture.scale,i.da=i.angle-t.gesture.angle;t.gesture.distance=i.distance,t.gesture.angle=i.angle,d.default.number(i.scale)&&i.scale!==1/0&&!isNaN(i.scale)&&(t.gesture.scale=i.scale)}}Object.defineProperty(Et,"__esModule",{value:!0}),Et.default=void 0;var gn={id:"actions/gesture",before:["actions/drag","actions/resize"],install:function(e){var t=e.actions,i=e.Interactable,n=e.defaults;i.prototype.gesturable=function(r){return d.default.object(r)?(this.options.gesture.enabled=r.enabled!==!1,this.setPerAction("gesture",r),this.setOnEvents("gesture",r),this):d.default.bool(r)?(this.options.gesture.enabled=r,this):this.options.gesture},t.map.gesture=gn,t.methodDict.gesture="gesturable",n.actions.gesture=gn.defaults},listeners:{"interactions:action-start":vn,"interactions:action-move":vn,"interactions:action-end":vn,"interactions:new":function(e){e.interaction.gesture={angle:0,distance:0,scale:1,startAngle:0,startDistance:0}},"auto-start:check":function(e){if(!(e.interaction.pointers.length<2)){var t=e.interactable.options.gesture;if(t&&t.enabled)return e.action={name:"gesture"},!1}}},defaults:{},getCursor:function(){return""}},no=gn;Et.default=no;var xt={};function io(e,t,i,n,r,a,u){if(!t)return!1;if(t===!0){var s=d.default.number(a.width)?a.width:a.right-a.left,c=d.default.number(a.height)?a.height:a.bottom-a.top;if(u=Math.min(u,Math.abs((e==="left"||e==="right"?s:c)/2)),s<0&&(e==="left"?e="right":e==="right"&&(e="left")),c<0&&(e==="top"?e="bottom":e==="bottom"&&(e="top")),e==="left")return i.x<(s>=0?a.left:a.right)+u;if(e==="top")return i.y<(c>=0?a.top:a.bottom)+u;if(e==="right")return i.x>(s>=0?a.right:a.left)-u;if(e==="bottom")return i.y>(c>=0?a.bottom:a.top)-u}return!!d.default.element(n)&&(d.default.element(t)?t===n:I.matchesUpTo(n,t,r))}function bi(e){var t=e.iEvent,i=e.interaction;if(i.prepared.name==="resize"&&i.resizeAxes){var n=t;i.interactable.options.resize.square?(i.resizeAxes==="y"?n.delta.x=n.delta.y:n.delta.y=n.delta.x,n.axes="xy"):(n.axes=i.resizeAxes,i.resizeAxes==="x"?n.delta.y=0:i.resizeAxes==="y"&&(n.delta.x=0))}}Object.defineProperty(xt,"__esModule",{value:!0}),xt.default=void 0;var ve={id:"actions/resize",before:["actions/drag"],install:function(e){var t=e.actions,i=e.browser,n=e.Interactable,r=e.defaults;ve.cursors=function(a){return a.isIe9?{x:"e-resize",y:"s-resize",xy:"se-resize",top:"n-resize",left:"w-resize",bottom:"s-resize",right:"e-resize",topleft:"se-resize",bottomright:"se-resize",topright:"ne-resize",bottomleft:"ne-resize"}:{x:"ew-resize",y:"ns-resize",xy:"nwse-resize",top:"ns-resize",left:"ew-resize",bottom:"ns-resize",right:"ew-resize",topleft:"nwse-resize",bottomright:"nwse-resize",topright:"nesw-resize",bottomleft:"nesw-resize"}}(i),ve.defaultMargin=i.supportsTouch||i.supportsPointerEvent?20:10,n.prototype.resizable=function(a){return function(u,s,c){return d.default.object(s)?(u.options.resize.enabled=s.enabled!==!1,u.setPerAction("resize",s),u.setOnEvents("resize",s),d.default.string(s.axis)&&/^x$|^y$|^xy$/.test(s.axis)?u.options.resize.axis=s.axis:s.axis===null&&(u.options.resize.axis=c.defaults.actions.resize.axis),d.default.bool(s.preserveAspectRatio)?u.options.resize.preserveAspectRatio=s.preserveAspectRatio:d.default.bool(s.square)&&(u.options.resize.square=s.square),u):d.default.bool(s)?(u.options.resize.enabled=s,u):u.options.resize}(this,a,e)},t.map.resize=ve,t.methodDict.resize="resizable",r.actions.resize=ve.defaults},listeners:{"interactions:new":function(e){e.interaction.resizeAxes="xy"},"interactions:action-start":function(e){(function(t){var i=t.iEvent,n=t.interaction;if(n.prepared.name==="resize"&&n.prepared.edges){var r=i,a=n.rect;n._rects={start:(0,D.default)({},a),corrected:(0,D.default)({},a),previous:(0,D.default)({},a),delta:{left:0,right:0,width:0,top:0,bottom:0,height:0}},r.edges=n.prepared.edges,r.rect=n._rects.corrected,r.deltaRect=n._rects.delta}})(e),bi(e)},"interactions:action-move":function(e){(function(t){var i=t.iEvent,n=t.interaction;if(n.prepared.name==="resize"&&n.prepared.edges){var r=i,a=n.interactable.options.resize.invert,u=a==="reposition"||a==="negate",s=n.rect,c=n._rects,p=c.start,v=c.corrected,m=c.delta,b=c.previous;if((0,D.default)(b,v),u){if((0,D.default)(v,s),a==="reposition"){if(v.top>v.bottom){var E=v.top;v.top=v.bottom,v.bottom=E}if(v.left>v.right){var y=v.left;v.left=v.right,v.right=y}}}else v.top=Math.min(s.top,p.bottom),v.bottom=Math.max(s.bottom,p.top),v.left=Math.min(s.left,p.right),v.right=Math.max(s.right,p.left);for(var P in v.width=v.right-v.left,v.height=v.bottom-v.top,v)m[P]=v[P]-b[P];r.edges=n.prepared.edges,r.rect=v,r.deltaRect=m}})(e),bi(e)},"interactions:action-end":function(e){var t=e.iEvent,i=e.interaction;if(i.prepared.name==="resize"&&i.prepared.edges){var n=t;n.edges=i.prepared.edges,n.rect=i._rects.corrected,n.deltaRect=i._rects.delta}},"auto-start:check":function(e){var t=e.interaction,i=e.interactable,n=e.element,r=e.rect,a=e.buttons;if(r){var u=(0,D.default)({},t.coords.cur.page),s=i.options.resize;if(s&&s.enabled&&(!t.pointerIsDown||!/mouse|pointer/.test(t.pointerType)||(a&s.mouseButtons)!=0)){if(d.default.object(s.edges)){var c={left:!1,right:!1,top:!1,bottom:!1};for(var p in c)c[p]=io(p,s.edges[p],u,t._latestPointer.eventTarget,n,r,s.margin||ve.defaultMargin);c.left=c.left&&!c.right,c.top=c.top&&!c.bottom,(c.left||c.right||c.top||c.bottom)&&(e.action={name:"resize",edges:c})}else{var v=s.axis!=="y"&&u.x>r.right-ve.defaultMargin,m=s.axis!=="x"&&u.y>r.bottom-ve.defaultMargin;(v||m)&&(e.action={name:"resize",axes:(v?"x":"")+(m?"y":"")})}return!e.action&&void 0}}}},defaults:{square:!1,preserveAspectRatio:!1,axis:"xy",margin:NaN,edges:null,invert:"none"},cursors:null,getCursor:function(e){var t=e.edges,i=e.axis,n=e.name,r=ve.cursors,a=null;if(i)a=r[n+i];else if(t){for(var u="",s=["top","bottom","left","right"],c=0;c<s.length;c++){var p=s[c];t[p]&&(u+=p)}a=r[u]}return a},defaultMargin:null},ro=ve;xt.default=ro;var St={};Object.defineProperty(St,"__esModule",{value:!0}),St.default=void 0;var oo={id:"actions",install:function(e){e.usePlugin(Et.default),e.usePlugin(xt.default),e.usePlugin(T.default),e.usePlugin(wt.default)}};St.default=oo;var pe={};Object.defineProperty(pe,"__esModule",{value:!0}),pe.default=void 0;var ge,Te,wi=0,ao={request:function(e){return ge(e)},cancel:function(e){return Te(e)},init:function(e){if(ge=e.requestAnimationFrame,Te=e.cancelAnimationFrame,!ge)for(var t=["ms","moz","webkit","o"],i=0;i<t.length;i++){var n=t[i];ge=e["".concat(n,"RequestAnimationFrame")],Te=e["".concat(n,"CancelAnimationFrame")]||e["".concat(n,"CancelRequestAnimationFrame")]}ge=ge&&ge.bind(e),Te=Te&&Te.bind(e),ge||(ge=function(r){var a=Date.now(),u=Math.max(0,16-(a-wi)),s=e.setTimeout(function(){r(a+u)},u);return wi=a+u,s},Te=function(r){return clearTimeout(r)})}};pe.default=ao;var we={};Object.defineProperty(we,"__esModule",{value:!0}),we.getContainer=Pt,we.getScroll=nt,we.getScrollSize=function(e){return d.default.window(e)&&(e=window.document.body),{x:e.scrollWidth,y:e.scrollHeight}},we.getScrollSizeDelta=function(e,t){var i=e.interaction,n=e.element,r=i&&i.interactable.options[i.prepared.name].autoScroll;if(!r||!r.enabled)return t(),{x:0,y:0};var a=Pt(r.container,i.interactable,n),u=nt(a);t();var s=nt(a);return{x:s.x-u.x,y:s.y-u.y}},we.default=void 0;var z={defaults:{enabled:!1,margin:60,container:null,speed:300},now:Date.now,interaction:null,i:0,x:0,y:0,isScrolling:!1,prevTime:0,margin:0,speed:0,start:function(e){z.isScrolling=!0,pe.default.cancel(z.i),e.autoScroll=z,z.interaction=e,z.prevTime=z.now(),z.i=pe.default.request(z.scroll)},stop:function(){z.isScrolling=!1,z.interaction&&(z.interaction.autoScroll=null),pe.default.cancel(z.i)},scroll:function(){var e=z.interaction,t=e.interactable,i=e.element,n=e.prepared.name,r=t.options[n].autoScroll,a=Pt(r.container,t,i),u=z.now(),s=(u-z.prevTime)/1e3,c=r.speed*s;if(c>=1){var p={x:z.x*c,y:z.y*c};if(p.x||p.y){var v=nt(a);d.default.window(a)?a.scrollBy(p.x,p.y):a&&(a.scrollLeft+=p.x,a.scrollTop+=p.y);var m=nt(a),b={x:m.x-v.x,y:m.y-v.y};(b.x||b.y)&&t.fire({type:"autoscroll",target:i,interactable:t,delta:b,interaction:e,container:a})}z.prevTime=u}z.isScrolling&&(pe.default.cancel(z.i),z.i=pe.default.request(z.scroll))},check:function(e,t){var i;return(i=e.options[t].autoScroll)==null?void 0:i.enabled},onInteractionMove:function(e){var t=e.interaction,i=e.pointer;if(t.interacting()&&z.check(t.interactable,t.prepared.name))if(t.simulation)z.x=z.y=0;else{var n,r,a,u,s=t.interactable,c=t.element,p=t.prepared.name,v=s.options[p].autoScroll,m=Pt(v.container,s,c);if(d.default.window(m))u=i.clientX<z.margin,n=i.clientY<z.margin,r=i.clientX>m.innerWidth-z.margin,a=i.clientY>m.innerHeight-z.margin;else{var b=I.getElementClientRect(m);u=i.clientX<b.left+z.margin,n=i.clientY<b.top+z.margin,r=i.clientX>b.right-z.margin,a=i.clientY>b.bottom-z.margin}z.x=r?1:u?-1:0,z.y=a?1:n?-1:0,z.isScrolling||(z.margin=v.margin,z.speed=v.speed,z.start(t))}}};function Pt(e,t,i){return(d.default.string(e)?(0,K.getStringOptionResult)(e,t,i):e)||(0,o.getWindow)(i)}function nt(e){return d.default.window(e)&&(e=window.document.body),{x:e.scrollLeft,y:e.scrollTop}}var so={id:"auto-scroll",install:function(e){var t=e.defaults,i=e.actions;e.autoScroll=z,z.now=function(){return e.now()},i.phaselessTypes.autoscroll=!0,t.perAction.autoScroll=z.defaults},listeners:{"interactions:new":function(e){e.interaction.autoScroll=null},"interactions:destroy":function(e){e.interaction.autoScroll=null,z.stop(),z.interaction&&(z.interaction=null)},"interactions:stop":z.stop,"interactions:action-move":function(e){return z.onInteractionMove(e)}}};we.default=so;var se={};Object.defineProperty(se,"__esModule",{value:!0}),se.warnOnce=function(e,t){var i=!1;return function(){return i||(o.window.console.warn(t),i=!0),e.apply(this,arguments)}},se.copyAction=function(e,t){return e.name=t.name,e.axis=t.axis,e.edges=t.edges,e},se.sign=void 0,se.sign=function(e){return e>=0?1:-1};var kt={};function lo(e){return d.default.bool(e)?(this.options.styleCursor=e,this):e===null?(delete this.options.styleCursor,this):this.options.styleCursor}function co(e){return d.default.func(e)?(this.options.actionChecker=e,this):e===null?(delete this.options.actionChecker,this):this.options.actionChecker}Object.defineProperty(kt,"__esModule",{value:!0}),kt.default=void 0;var uo={id:"auto-start/interactableMethods",install:function(e){var t=e.Interactable;t.prototype.getAction=function(i,n,r,a){var u=function(s,c,p,v,m){var b=s.getRect(v),E={action:null,interactable:s,interaction:p,element:v,rect:b,buttons:c.buttons||{0:1,1:4,3:8,4:16}[c.button]};return m.fire("auto-start:check",E),E.action}(this,n,r,a,e);return this.options.actionChecker?this.options.actionChecker(i,n,u,this,a,r):u},t.prototype.ignoreFrom=(0,se.warnOnce)(function(i){return this._backCompatOption("ignoreFrom",i)},"Interactable.ignoreFrom() has been deprecated. Use Interactble.draggable({ignoreFrom: newValue})."),t.prototype.allowFrom=(0,se.warnOnce)(function(i){return this._backCompatOption("allowFrom",i)},"Interactable.allowFrom() has been deprecated. Use Interactble.draggable({allowFrom: newValue})."),t.prototype.actionChecker=co,t.prototype.styleCursor=lo}};kt.default=uo;var Fe={};function Ei(e,t,i,n,r){return t.testIgnoreAllow(t.options[e.name],i,n)&&t.options[e.name].enabled&&_t(t,i,e,r)?e:null}function po(e,t,i,n,r,a,u){for(var s=0,c=n.length;s<c;s++){var p=n[s],v=r[s],m=p.getAction(t,i,e,v);if(m){var b=Ei(m,p,v,a,u);if(b)return{action:b,interactable:p,element:v}}}return{action:null,interactable:null,element:null}}function xi(e,t,i,n,r){var a=[],u=[],s=n;function c(v){a.push(v),u.push(s)}for(;d.default.element(s);){a=[],u=[],r.interactables.forEachMatch(s,c);var p=po(e,t,i,a,u,n,r);if(p.action&&!p.interactable.options[p.action.name].manualStart)return p;s=I.parentNode(s)}return{action:null,interactable:null,element:null}}function Si(e,t,i){var n=t.action,r=t.interactable,a=t.element;n=n||{name:null},e.interactable=r,e.element=a,(0,se.copyAction)(e.prepared,n),e.rect=r&&n.name?r.getRect(a):null,ki(e,i),i.fire("autoStart:prepared",{interaction:e})}function _t(e,t,i,n){var r=e.options,a=r[i.name].max,u=r[i.name].maxPerElement,s=n.autoStart.maxInteractions,c=0,p=0,v=0;if(!(a&&u&&s))return!1;for(var m=0;m<n.interactions.list.length;m++){var b=n.interactions.list[m],E=b.prepared.name;if(b.interacting()&&(++c>=s||b.interactable===e&&((p+=E===i.name?1:0)>=a||b.element===t&&(v++,E===i.name&&v>=u))))return!1}return s>0}function Pi(e,t){return d.default.number(e)?(t.autoStart.maxInteractions=e,this):t.autoStart.maxInteractions}function mn(e,t,i){var n=i.autoStart.cursorElement;n&&n!==e&&(n.style.cursor=""),e.ownerDocument.documentElement.style.cursor=t,e.style.cursor=t,i.autoStart.cursorElement=t?e:null}function ki(e,t){var i=e.interactable,n=e.element,r=e.prepared;if(e.pointerType==="mouse"&&i&&i.options.styleCursor){var a="";if(r.name){var u=i.options[r.name].cursorChecker;a=d.default.func(u)?u(r,i,n,e._interacting):t.actions.map[r.name].getCursor(r)}mn(e.element,a||"",t)}else t.autoStart.cursorElement&&mn(t.autoStart.cursorElement,"",t)}Object.defineProperty(Fe,"__esModule",{value:!0}),Fe.default=void 0;var fo={id:"auto-start/base",before:["actions"],install:function(e){var t=e.interactStatic,i=e.defaults;e.usePlugin(kt.default),i.base.actionChecker=null,i.base.styleCursor=!0,(0,D.default)(i.perAction,{manualStart:!1,max:1/0,maxPerElement:1,allowFrom:null,ignoreFrom:null,mouseButtons:1}),t.maxInteractions=function(n){return Pi(n,e)},e.autoStart={maxInteractions:1/0,withinInteractionLimit:_t,cursorElement:null}},listeners:{"interactions:down":function(e,t){var i=e.interaction,n=e.pointer,r=e.event,a=e.eventTarget;i.interacting()||Si(i,xi(i,n,r,a,t),t)},"interactions:move":function(e,t){(function(i,n){var r=i.interaction,a=i.pointer,u=i.event,s=i.eventTarget;r.pointerType!=="mouse"||r.pointerIsDown||r.interacting()||Si(r,xi(r,a,u,s,n),n)})(e,t),function(i,n){var r=i.interaction;if(r.pointerIsDown&&!r.interacting()&&r.pointerWasMoved&&r.prepared.name){n.fire("autoStart:before-start",i);var a=r.interactable,u=r.prepared.name;u&&a&&(a.options[u].manualStart||!_t(a,r.element,r.prepared,n)?r.stop():(r.start(r.prepared,a,r.element),ki(r,n)))}}(e,t)},"interactions:stop":function(e,t){var i=e.interaction,n=i.interactable;n&&n.options.styleCursor&&mn(i.element,"",t)}},maxInteractions:Pi,withinInteractionLimit:_t,validateAction:Ei};Fe.default=fo;var Ot={};Object.defineProperty(Ot,"__esModule",{value:!0}),Ot.default=void 0;var ho={id:"auto-start/dragAxis",listeners:{"autoStart:before-start":function(e,t){var i=e.interaction,n=e.eventTarget,r=e.dx,a=e.dy;if(i.prepared.name==="drag"){var u=Math.abs(r),s=Math.abs(a),c=i.interactable.options.drag,p=c.startAxis,v=u>s?"x":u<s?"y":"xy";if(i.prepared.axis=c.lockAxis==="start"?v[0]:c.lockAxis,v!=="xy"&&p!=="xy"&&p!==v){i.prepared.name=null;for(var m=n,b=function(y){if(y!==i.interactable){var P=i.interactable.options.drag;if(!P.manualStart&&y.testIgnoreAllow(P,m,n)){var M=y.getAction(i.downPointer,i.downEvent,i,m);if(M&&M.name==="drag"&&function(x,C){if(!C)return!1;var R=C.options.drag.startAxis;return x==="xy"||R==="xy"||R===x}(v,y)&&Fe.default.validateAction(M,y,m,n,t))return y}}};d.default.element(m);){var E=t.interactables.forEachMatch(m,b);if(E){i.prepared.name="drag",i.interactable=E,i.element=m;break}m=(0,I.parentNode)(m)}}}}}};Ot.default=ho;var Tt={};function yn(e){var t=e.prepared&&e.prepared.name;if(!t)return null;var i=e.interactable.options;return i[t].hold||i[t].delay}Object.defineProperty(Tt,"__esModule",{value:!0}),Tt.default=void 0;var vo={id:"auto-start/hold",install:function(e){var t=e.defaults;e.usePlugin(Fe.default),t.perAction.hold=0,t.perAction.delay=0},listeners:{"interactions:new":function(e){e.interaction.autoStartHoldTimer=null},"autoStart:prepared":function(e){var t=e.interaction,i=yn(t);i>0&&(t.autoStartHoldTimer=setTimeout(function(){t.start(t.prepared,t.interactable,t.element)},i))},"interactions:move":function(e){var t=e.interaction,i=e.duplicate;t.autoStartHoldTimer&&t.pointerWasMoved&&!i&&(clearTimeout(t.autoStartHoldTimer),t.autoStartHoldTimer=null)},"autoStart:before-start":function(e){var t=e.interaction;yn(t)>0&&(t.prepared.name=null)}},getHoldDuration:yn};Tt.default=vo;var Mt={};Object.defineProperty(Mt,"__esModule",{value:!0}),Mt.default=void 0;var go={id:"auto-start",install:function(e){e.usePlugin(Fe.default),e.usePlugin(Tt.default),e.usePlugin(Ot.default)}};Mt.default=go;var We={};function mo(e){return/^(always|never|auto)$/.test(e)?(this.options.preventDefault=e,this):d.default.bool(e)?(this.options.preventDefault=e?"always":"never",this):this.options.preventDefault}function yo(e){var t=e.interaction,i=e.event;t.interactable&&t.interactable.checkAndPreventDefault(i)}function _i(e){var t=e.Interactable;t.prototype.preventDefault=mo,t.prototype.checkAndPreventDefault=function(i){return function(n,r,a){var u=n.options.preventDefault;if(u!=="never")if(u!=="always"){if(r.events.supportsPassive&&/^touch(start|move)$/.test(a.type)){var s=(0,o.getWindow)(a.target).document,c=r.getDocOptions(s);if(!c||!c.events||c.events.passive!==!1)return}/^(mouse|pointer|touch)*(down|start)/i.test(a.type)||d.default.element(a.target)&&(0,I.matchesSelector)(a.target,"input,select,textarea,[contenteditable=true],[contenteditable=true] *")||a.preventDefault()}else a.preventDefault()}(this,e,i)},e.interactions.docEvents.push({type:"dragstart",listener:function(i){for(var n=0;n<e.interactions.list.length;n++){var r=e.interactions.list[n];if(r.element&&(r.element===i.target||(0,I.nodeContains)(r.element,i.target)))return void r.interactable.checkAndPreventDefault(i)}}})}Object.defineProperty(We,"__esModule",{value:!0}),We.install=_i,We.default=void 0;var bo={id:"core/interactablePreventDefault",install:_i,listeners:["down","move","up","cancel"].reduce(function(e,t){return e["interactions:".concat(t)]=yo,e},{})};We.default=bo;var Ct={};Object.defineProperty(Ct,"__esModule",{value:!0}),Ct.default=void 0,Ct.default={};var Ve,At={};function bn(e,t){(t==null||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}Object.defineProperty(At,"__esModule",{value:!0}),At.default=void 0,function(e){e.touchAction="touchAction",e.boxSizing="boxSizing",e.noListeners="noListeners"}(Ve||(Ve={}));var Oi="[interact.js] ",wn={touchAction:"https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action",boxSizing:"https://developer.mozilla.org/en-US/docs/Web/CSS/box-sizing"},En=[{name:Ve.touchAction,perform:function(e){return!function(t,i,n){for(var r=t;d.default.element(r);){if(Ti(r,"touchAction",n))return!0;r=(0,I.parentNode)(r)}return!1}(e.element,0,/pan-|pinch|none/)},getInfo:function(e){return[e.element,wn.touchAction]},text:`Consider adding CSS "touch-action: none" to this element +`},{name:Ve.boxSizing,perform:function(e){var t=e.element;return e.prepared.name==="resize"&&t instanceof L.default.HTMLElement&&!Ti(t,"boxSizing",/border-box/)},text:'Consider adding CSS "box-sizing: border-box" to this resizable element',getInfo:function(e){return[e.element,wn.boxSizing]}},{name:Ve.noListeners,perform:function(e){var t=e.prepared.name;return!(e.interactable.events.types["".concat(t,"move")]||[]).length},getInfo:function(e){return[e.prepared.name,e.interactable]},text:"There are no listeners set for this action"}];function Ti(e,t,i){var n=e.style[t]||o.window.getComputedStyle(e)[t];return i.test((n||"").toString())}var wo={id:"dev-tools",install:function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=t.logger,n=e.Interactable,r=e.defaults;e.logger=i||console,r.base.devTools={ignore:{}},n.prototype.devTools=function(a){return a?((0,D.default)(this.options.devTools,a),this):this.options.devTools},e.usePlugin(Ct.default)},listeners:{"interactions:action-start":function(e,t){for(var i=e.interaction,n=0;n<En.length;n++){var r,a=En[n],u=i.interactable&&i.interactable.options;u&&u.devTools&&u.devTools.ignore[a.name]||!a.perform(i)||(r=t.logger).warn.apply(r,[Oi+a.text].concat(function(c){if(Array.isArray(c))return bn(c)}(s=a.getInfo(i))||function(c){if(typeof Symbol!="undefined"&&Symbol.iterator in Object(c))return Array.from(c)}(s)||function(c,p){if(c){if(typeof c=="string")return bn(c,p);var v=Object.prototype.toString.call(c).slice(8,-1);return v==="Object"&&c.constructor&&(v=c.constructor.name),v==="Map"||v==="Set"?Array.from(c):v==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(v)?bn(c,p):void 0}}(s)||function(){throw new TypeError(`Invalid attempt to spread non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()))}var s}},checks:En,CheckName:Ve,links:wn,prefix:Oi};At.default=wo;var Me={};Object.defineProperty(Me,"__esModule",{value:!0}),Me.default=function e(t){var i={};for(var n in t){var r=t[n];d.default.plainObject(r)?i[n]=e(r):d.default.array(r)?i[n]=U.from(r):i[n]=r}return i};var Ce={};function Mi(e,t){return function(i){if(Array.isArray(i))return i}(e)||function(i,n){if(typeof Symbol!="undefined"&&Symbol.iterator in Object(i)){var r=[],a=!0,u=!1,s=void 0;try{for(var c,p=i[Symbol.iterator]();!(a=(c=p.next()).done)&&(r.push(c.value),!n||r.length!==n);a=!0);}catch(v){u=!0,s=v}finally{try{a||p.return==null||p.return()}finally{if(u)throw s}}return r}}(e,t)||function(i,n){if(i){if(typeof i=="string")return Ci(i,n);var r=Object.prototype.toString.call(i).slice(8,-1);return r==="Object"&&i.constructor&&(r=i.constructor.name),r==="Map"||r==="Set"?Array.from(i):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ci(i,n):void 0}}(e,t)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Ci(e,t){(t==null||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}function Eo(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}Object.defineProperty(Ce,"__esModule",{value:!0}),Ce.getRectOffset=Ai,Ce.default=void 0;var xo=function(){function e(n){(function(r,a){if(!(r instanceof a))throw new TypeError("Cannot call a class as a function")})(this,e),this.states=[],this.startOffset={left:0,right:0,top:0,bottom:0},this.startDelta=void 0,this.result=void 0,this.endResult=void 0,this.edges=void 0,this.interaction=void 0,this.interaction=n,this.result=Dt()}var t,i;return t=e,(i=[{key:"start",value:function(n,r){var a=n.phase,u=this.interaction,s=function(p){var v=p.interactable.options[p.prepared.name],m=v.modifiers;return m&&m.length?m:["snap","snapSize","snapEdges","restrict","restrictEdges","restrictSize"].map(function(b){var E=v[b];return E&&E.enabled&&{options:E,methods:E._methods}}).filter(function(b){return!!b})}(u);this.prepareStates(s),this.edges=(0,D.default)({},u.edges),this.startOffset=Ai(u.rect,r),this.startDelta={x:0,y:0};var c=this.fillArg({phase:a,pageCoords:r,preEnd:!1});return this.result=Dt(),this.startAll(c),this.result=this.setAll(c)}},{key:"fillArg",value:function(n){var r=this.interaction;return n.interaction=r,n.interactable=r.interactable,n.element=r.element,n.rect=n.rect||r.rect,n.edges=this.edges,n.startOffset=this.startOffset,n}},{key:"startAll",value:function(n){for(var r=0;r<this.states.length;r++){var a=this.states[r];a.methods.start&&(n.state=a,a.methods.start(n))}}},{key:"setAll",value:function(n){var r=n.phase,a=n.preEnd,u=n.skipModifiers,s=n.rect;n.coords=(0,D.default)({},n.pageCoords),n.rect=(0,D.default)({},s);for(var c=u?this.states.slice(u):this.states,p=Dt(n.coords,n.rect),v=0;v<c.length;v++){var m,b=c[v],E=b.options,y=(0,D.default)({},n.coords),P=null;(m=b.methods)!=null&&m.set&&this.shouldDo(E,a,r)&&(n.state=b,P=b.methods.set(n),K.addEdges(this.interaction.edges,n.rect,{x:n.coords.x-y.x,y:n.coords.y-y.y})),p.eventProps.push(P)}p.delta.x=n.coords.x-n.pageCoords.x,p.delta.y=n.coords.y-n.pageCoords.y,p.rectDelta.left=n.rect.left-s.left,p.rectDelta.right=n.rect.right-s.right,p.rectDelta.top=n.rect.top-s.top,p.rectDelta.bottom=n.rect.bottom-s.bottom;var M=this.result.coords,x=this.result.rect;if(M&&x){var C=p.rect.left!==x.left||p.rect.right!==x.right||p.rect.top!==x.top||p.rect.bottom!==x.bottom;p.changed=C||M.x!==p.coords.x||M.y!==p.coords.y}return p}},{key:"applyToInteraction",value:function(n){var r=this.interaction,a=n.phase,u=r.coords.cur,s=r.coords.start,c=this.result,p=this.startDelta,v=c.delta;a==="start"&&(0,D.default)(this.startDelta,c.delta);for(var m=[[s,p],[u,v]],b=0;b<m.length;b++){var E=Mi(m[b],2),y=E[0],P=E[1];y.page.x+=P.x,y.page.y+=P.y,y.client.x+=P.x,y.client.y+=P.y}var M=this.result.rectDelta,x=n.rect||r.rect;x.left+=M.left,x.right+=M.right,x.top+=M.top,x.bottom+=M.bottom,x.width=x.right-x.left,x.height=x.bottom-x.top}},{key:"setAndApply",value:function(n){var r=this.interaction,a=n.phase,u=n.preEnd,s=n.skipModifiers,c=this.setAll(this.fillArg({preEnd:u,phase:a,pageCoords:n.modifiedCoords||r.coords.cur.page}));if(this.result=c,!c.changed&&(!s||s<this.states.length)&&r.interacting())return!1;if(n.modifiedCoords){var p=r.coords.cur.page,v={x:n.modifiedCoords.x-p.x,y:n.modifiedCoords.y-p.y};c.coords.x+=v.x,c.coords.y+=v.y,c.delta.x+=v.x,c.delta.y+=v.y}this.applyToInteraction(n)}},{key:"beforeEnd",value:function(n){var r=n.interaction,a=n.event,u=this.states;if(u&&u.length){for(var s=!1,c=0;c<u.length;c++){var p=u[c];n.state=p;var v=p.options,m=p.methods,b=m.beforeEnd&&m.beforeEnd(n);if(b)return this.endResult=b,!1;s=s||!s&&this.shouldDo(v,!0,n.phase,!0)}s&&r.move({event:a,preEnd:!0})}}},{key:"stop",value:function(n){var r=n.interaction;if(this.states&&this.states.length){var a=(0,D.default)({states:this.states,interactable:r.interactable,element:r.element,rect:null},n);this.fillArg(a);for(var u=0;u<this.states.length;u++){var s=this.states[u];a.state=s,s.methods.stop&&s.methods.stop(a)}this.states=null,this.endResult=null}}},{key:"prepareStates",value:function(n){this.states=[];for(var r=0;r<n.length;r++){var a=n[r],u=a.options,s=a.methods,c=a.name;this.states.push({options:u,methods:s,index:r,name:c})}return this.states}},{key:"restoreInteractionCoords",value:function(n){var r=n.interaction,a=r.coords,u=r.rect,s=r.modification;if(s.result){for(var c=s.startDelta,p=s.result,v=p.delta,m=p.rectDelta,b=[[a.start,c],[a.cur,v]],E=0;E<b.length;E++){var y=Mi(b[E],2),P=y[0],M=y[1];P.page.x-=M.x,P.page.y-=M.y,P.client.x-=M.x,P.client.y-=M.y}u.left-=m.left,u.right-=m.right,u.top-=m.top,u.bottom-=m.bottom}}},{key:"shouldDo",value:function(n,r,a,u){return!(!n||n.enabled===!1||u&&!n.endOnly||n.endOnly&&!r||a==="start"&&!n.setStart)}},{key:"copyFrom",value:function(n){this.startOffset=n.startOffset,this.startDelta=n.startDelta,this.edges=n.edges,this.states=n.states.map(function(r){return(0,Me.default)(r)}),this.result=Dt((0,D.default)({},n.result.coords),(0,D.default)({},n.result.rect))}},{key:"destroy",value:function(){for(var n in this)this[n]=null}}])&&Eo(t.prototype,i),e}();function Dt(e,t){return{rect:t,coords:e,delta:{x:0,y:0},rectDelta:{left:0,right:0,top:0,bottom:0},eventProps:[],changed:!0}}function Ai(e,t){return e?{left:t.x-e.left,top:t.y-e.top,right:e.right-t.x,bottom:e.bottom-t.y}:{left:0,top:0,right:0,bottom:0}}Ce.default=xo;var ne={};function It(e){var t=e.iEvent,i=e.interaction.modification.result;i&&(t.modifiers=i.eventProps)}Object.defineProperty(ne,"__esModule",{value:!0}),ne.makeModifier=function(e,t){var i=e.defaults,n={start:e.start,set:e.set,beforeEnd:e.beforeEnd,stop:e.stop},r=function(a){var u=a||{};for(var s in u.enabled=u.enabled!==!1,i)s in u||(u[s]=i[s]);var c={options:u,methods:n,name:t,enable:function(){return u.enabled=!0,c},disable:function(){return u.enabled=!1,c}};return c};return t&&typeof t=="string"&&(r._defaults=i,r._methods=n),r},ne.addEventModifiers=It,ne.default=void 0;var So={id:"modifiers/base",before:["actions"],install:function(e){e.defaults.perAction.modifiers=[]},listeners:{"interactions:new":function(e){var t=e.interaction;t.modification=new Ce.default(t)},"interactions:before-action-start":function(e){var t=e.interaction.modification;t.start(e,e.interaction.coords.start.page),e.interaction.edges=t.edges,t.applyToInteraction(e)},"interactions:before-action-move":function(e){return e.interaction.modification.setAndApply(e)},"interactions:before-action-end":function(e){return e.interaction.modification.beforeEnd(e)},"interactions:action-start":It,"interactions:action-move":It,"interactions:action-end":It,"interactions:after-action-start":function(e){return e.interaction.modification.restoreInteractionCoords(e)},"interactions:after-action-move":function(e){return e.interaction.modification.restoreInteractionCoords(e)},"interactions:stop":function(e){return e.interaction.modification.stop(e)}}};ne.default=So;var it={};Object.defineProperty(it,"__esModule",{value:!0}),it.defaults=void 0,it.defaults={base:{preventDefault:"auto",deltaSource:"page"},perAction:{enabled:!1,origin:{x:0,y:0}},actions:{}};var rt={};function Di(e){return(Di=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function Po(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function Ii(e,t){return(Ii=Object.setPrototypeOf||function(i,n){return i.__proto__=n,i})(e,t)}function ko(e,t){return!t||Di(t)!=="object"&&typeof t!="function"?Li(e):t}function Li(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function xn(e){return(xn=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(e)}Object.defineProperty(rt,"__esModule",{value:!0}),rt.InteractEvent=void 0;var ji=function(e){(function(s,c){if(typeof c!="function"&&c!==null)throw new TypeError("Super expression must either be null or a function");s.prototype=Object.create(c&&c.prototype,{constructor:{value:s,writable:!0,configurable:!0}}),c&&Ii(s,c)})(u,e);var t,i,n,r,a=(n=u,r=function(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(s){return!1}}(),function(){var s,c=xn(n);if(r){var p=xn(this).constructor;s=Reflect.construct(c,arguments,p)}else s=c.apply(this,arguments);return ko(this,s)});function u(s,c,p,v,m,b,E){var y;(function(Z,B){if(!(Z instanceof B))throw new TypeError("Cannot call a class as a function")})(this,u),(y=a.call(this,s)).target=void 0,y.currentTarget=void 0,y.relatedTarget=null,y.screenX=void 0,y.screenY=void 0,y.button=void 0,y.buttons=void 0,y.ctrlKey=void 0,y.shiftKey=void 0,y.altKey=void 0,y.metaKey=void 0,y.page=void 0,y.client=void 0,y.delta=void 0,y.rect=void 0,y.x0=void 0,y.y0=void 0,y.t0=void 0,y.dt=void 0,y.duration=void 0,y.clientX0=void 0,y.clientY0=void 0,y.velocity=void 0,y.speed=void 0,y.swipe=void 0,y.timeStamp=void 0,y.axes=void 0,y.preEnd=void 0,m=m||s.element;var P=s.interactable,M=(P&&P.options||it.defaults).deltaSource,x=(0,Oe.default)(P,m,p),C=v==="start",R=v==="end",N=C?Li(y):s.prevEvent,X=C?s.coords.start:R?{page:N.page,client:N.client,timeStamp:s.coords.cur.timeStamp}:s.coords.cur;return y.page=(0,D.default)({},X.page),y.client=(0,D.default)({},X.client),y.rect=(0,D.default)({},s.rect),y.timeStamp=X.timeStamp,R||(y.page.x-=x.x,y.page.y-=x.y,y.client.x-=x.x,y.client.y-=x.y),y.ctrlKey=c.ctrlKey,y.altKey=c.altKey,y.shiftKey=c.shiftKey,y.metaKey=c.metaKey,y.button=c.button,y.buttons=c.buttons,y.target=m,y.currentTarget=m,y.preEnd=b,y.type=E||p+(v||""),y.interactable=P,y.t0=C?s.pointers[s.pointers.length-1].downTime:N.t0,y.x0=s.coords.start.page.x-x.x,y.y0=s.coords.start.page.y-x.y,y.clientX0=s.coords.start.client.x-x.x,y.clientY0=s.coords.start.client.y-x.y,y.delta=C||R?{x:0,y:0}:{x:y[M].x-N[M].x,y:y[M].y-N[M].y},y.dt=s.coords.delta.timeStamp,y.duration=y.timeStamp-y.t0,y.velocity=(0,D.default)({},s.coords.velocity[M]),y.speed=(0,be.default)(y.velocity.x,y.velocity.y),y.swipe=R||v==="inertiastart"?y.getSwipe():null,y}return t=u,(i=[{key:"getSwipe",value:function(){var s=this._interaction;if(s.prevEvent.speed<600||this.timeStamp-s.prevEvent.timeStamp>150)return null;var c=180*Math.atan2(s.prevEvent.velocityY,s.prevEvent.velocityX)/Math.PI;c<0&&(c+=360);var p=112.5<=c&&c<247.5,v=202.5<=c&&c<337.5;return{up:v,down:!v&&22.5<=c&&c<157.5,left:p,right:!p&&(292.5<=c||c<67.5),angle:c,speed:s.prevEvent.speed,velocity:{x:s.prevEvent.velocityX,y:s.prevEvent.velocityY}}}},{key:"preventDefault",value:function(){}},{key:"stopImmediatePropagation",value:function(){this.immediatePropagationStopped=this.propagationStopped=!0}},{key:"stopPropagation",value:function(){this.propagationStopped=!0}}])&&Po(t.prototype,i),u}(He.BaseEvent);rt.InteractEvent=ji,Object.defineProperties(ji.prototype,{pageX:{get:function(){return this.page.x},set:function(e){this.page.x=e}},pageY:{get:function(){return this.page.y},set:function(e){this.page.y=e}},clientX:{get:function(){return this.client.x},set:function(e){this.client.x=e}},clientY:{get:function(){return this.client.y},set:function(e){this.client.y=e}},dx:{get:function(){return this.delta.x},set:function(e){this.delta.x=e}},dy:{get:function(){return this.delta.y},set:function(e){this.delta.y=e}},velocityX:{get:function(){return this.velocity.x},set:function(e){this.velocity.x=e}},velocityY:{get:function(){return this.velocity.y},set:function(e){this.velocity.y=e}}});var ot={};Object.defineProperty(ot,"__esModule",{value:!0}),ot.PointerInfo=void 0,ot.PointerInfo=function e(t,i,n,r,a){(function(u,s){if(!(u instanceof s))throw new TypeError("Cannot call a class as a function")})(this,e),this.id=void 0,this.pointer=void 0,this.event=void 0,this.downTime=void 0,this.downTarget=void 0,this.id=t,this.pointer=i,this.event=n,this.downTime=r,this.downTarget=a};var Lt,jt,oe={};function _o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}Object.defineProperty(oe,"__esModule",{value:!0}),Object.defineProperty(oe,"PointerInfo",{enumerable:!0,get:function(){return ot.PointerInfo}}),oe.default=oe.Interaction=oe._ProxyMethods=oe._ProxyValues=void 0,oe._ProxyValues=Lt,function(e){e.interactable="",e.element="",e.prepared="",e.pointerIsDown="",e.pointerWasMoved="",e._proxy=""}(Lt||(oe._ProxyValues=Lt={})),oe._ProxyMethods=jt,function(e){e.start="",e.move="",e.end="",e.stop="",e.interacting=""}(jt||(oe._ProxyMethods=jt={}));var Oo=0,Ri=function(){function e(n){var r=this,a=n.pointerType,u=n.scopeFire;(function(b,E){if(!(b instanceof E))throw new TypeError("Cannot call a class as a function")})(this,e),this.interactable=null,this.element=null,this.rect=void 0,this._rects=void 0,this.edges=void 0,this._scopeFire=void 0,this.prepared={name:null,axis:null,edges:null},this.pointerType=void 0,this.pointers=[],this.downEvent=null,this.downPointer={},this._latestPointer={pointer:null,event:null,eventTarget:null},this.prevEvent=null,this.pointerIsDown=!1,this.pointerWasMoved=!1,this._interacting=!1,this._ending=!1,this._stopped=!0,this._proxy=null,this.simulation=null,this.doMove=(0,se.warnOnce)(function(b){this.move(b)},"The interaction.doMove() method has been renamed to interaction.move()"),this.coords={start:A.newCoords(),prev:A.newCoords(),cur:A.newCoords(),delta:A.newCoords(),velocity:A.newCoords()},this._id=Oo++,this._scopeFire=u,this.pointerType=a;var s=this;this._proxy={};var c=function(b){Object.defineProperty(r._proxy,b,{get:function(){return s[b]}})};for(var p in Lt)c(p);var v=function(b){Object.defineProperty(r._proxy,b,{value:function(){return s[b].apply(s,arguments)}})};for(var m in jt)v(m);this._scopeFire("interactions:new",{interaction:this})}var t,i;return t=e,(i=[{key:"pointerMoveTolerance",get:function(){return 1}},{key:"pointerDown",value:function(n,r,a){var u=this.updatePointer(n,r,a,!0),s=this.pointers[u];this._scopeFire("interactions:down",{pointer:n,event:r,eventTarget:a,pointerIndex:u,pointerInfo:s,type:"down",interaction:this})}},{key:"start",value:function(n,r,a){return!(this.interacting()||!this.pointerIsDown||this.pointers.length<(n.name==="gesture"?2:1)||!r.options[n.name].enabled)&&((0,se.copyAction)(this.prepared,n),this.interactable=r,this.element=a,this.rect=r.getRect(a),this.edges=this.prepared.edges?(0,D.default)({},this.prepared.edges):{left:!0,right:!0,top:!0,bottom:!0},this._stopped=!1,this._interacting=this._doPhase({interaction:this,event:this.downEvent,phase:"start"})&&!this._stopped,this._interacting)}},{key:"pointerMove",value:function(n,r,a){this.simulation||this.modification&&this.modification.endResult||this.updatePointer(n,r,a,!1);var u,s,c=this.coords.cur.page.x===this.coords.prev.page.x&&this.coords.cur.page.y===this.coords.prev.page.y&&this.coords.cur.client.x===this.coords.prev.client.x&&this.coords.cur.client.y===this.coords.prev.client.y;this.pointerIsDown&&!this.pointerWasMoved&&(u=this.coords.cur.client.x-this.coords.start.client.x,s=this.coords.cur.client.y-this.coords.start.client.y,this.pointerWasMoved=(0,be.default)(u,s)>this.pointerMoveTolerance);var p=this.getPointerIndex(n),v={pointer:n,pointerIndex:p,pointerInfo:this.pointers[p],event:r,type:"move",eventTarget:a,dx:u,dy:s,duplicate:c,interaction:this};c||A.setCoordVelocity(this.coords.velocity,this.coords.delta),this._scopeFire("interactions:move",v),c||this.simulation||(this.interacting()&&(v.type=null,this.move(v)),this.pointerWasMoved&&A.copyCoords(this.coords.prev,this.coords.cur))}},{key:"move",value:function(n){n&&n.event||A.setZeroCoords(this.coords.delta),(n=(0,D.default)({pointer:this._latestPointer.pointer,event:this._latestPointer.event,eventTarget:this._latestPointer.eventTarget,interaction:this},n||{})).phase="move",this._doPhase(n)}},{key:"pointerUp",value:function(n,r,a,u){var s=this.getPointerIndex(n);s===-1&&(s=this.updatePointer(n,r,a,!1));var c=/cancel$/i.test(r.type)?"cancel":"up";this._scopeFire("interactions:".concat(c),{pointer:n,pointerIndex:s,pointerInfo:this.pointers[s],event:r,eventTarget:a,type:c,curEventTarget:u,interaction:this}),this.simulation||this.end(r),this.removePointer(n,r)}},{key:"documentBlur",value:function(n){this.end(n),this._scopeFire("interactions:blur",{event:n,type:"blur",interaction:this})}},{key:"end",value:function(n){var r;this._ending=!0,n=n||this._latestPointer.event,this.interacting()&&(r=this._doPhase({event:n,interaction:this,phase:"end"})),this._ending=!1,r===!0&&this.stop()}},{key:"currentAction",value:function(){return this._interacting?this.prepared.name:null}},{key:"interacting",value:function(){return this._interacting}},{key:"stop",value:function(){this._scopeFire("interactions:stop",{interaction:this}),this.interactable=this.element=null,this._interacting=!1,this._stopped=!0,this.prepared.name=this.prevEvent=null}},{key:"getPointerIndex",value:function(n){var r=A.getPointerId(n);return this.pointerType==="mouse"||this.pointerType==="pen"?this.pointers.length-1:U.findIndex(this.pointers,function(a){return a.id===r})}},{key:"getPointerInfo",value:function(n){return this.pointers[this.getPointerIndex(n)]}},{key:"updatePointer",value:function(n,r,a,u){var s=A.getPointerId(n),c=this.getPointerIndex(n),p=this.pointers[c];return u=u!==!1&&(u||/(down|start)$/i.test(r.type)),p?p.pointer=n:(p=new ot.PointerInfo(s,n,r,null,null),c=this.pointers.length,this.pointers.push(p)),A.setCoords(this.coords.cur,this.pointers.map(function(v){return v.pointer}),this._now()),A.setCoordDeltas(this.coords.delta,this.coords.prev,this.coords.cur),u&&(this.pointerIsDown=!0,p.downTime=this.coords.cur.timeStamp,p.downTarget=a,A.pointerExtend(this.downPointer,n),this.interacting()||(A.copyCoords(this.coords.start,this.coords.cur),A.copyCoords(this.coords.prev,this.coords.cur),this.downEvent=r,this.pointerWasMoved=!1)),this._updateLatestPointer(n,r,a),this._scopeFire("interactions:update-pointer",{pointer:n,event:r,eventTarget:a,down:u,pointerInfo:p,pointerIndex:c,interaction:this}),c}},{key:"removePointer",value:function(n,r){var a=this.getPointerIndex(n);if(a!==-1){var u=this.pointers[a];this._scopeFire("interactions:remove-pointer",{pointer:n,event:r,eventTarget:null,pointerIndex:a,pointerInfo:u,interaction:this}),this.pointers.splice(a,1),this.pointerIsDown=!1}}},{key:"_updateLatestPointer",value:function(n,r,a){this._latestPointer.pointer=n,this._latestPointer.event=r,this._latestPointer.eventTarget=a}},{key:"destroy",value:function(){this._latestPointer.pointer=null,this._latestPointer.event=null,this._latestPointer.eventTarget=null}},{key:"_createPreparedEvent",value:function(n,r,a,u){return new rt.InteractEvent(this,n,this.prepared.name,r,this.element,a,u)}},{key:"_fireEvent",value:function(n){this.interactable.fire(n),(!this.prevEvent||n.timeStamp>=this.prevEvent.timeStamp)&&(this.prevEvent=n)}},{key:"_doPhase",value:function(n){var r=n.event,a=n.phase,u=n.preEnd,s=n.type,c=this.rect;if(c&&a==="move"&&(K.addEdges(this.edges,c,this.coords.delta[this.interactable.options.deltaSource]),c.width=c.right-c.left,c.height=c.bottom-c.top),this._scopeFire("interactions:before-action-".concat(a),n)===!1)return!1;var p=n.iEvent=this._createPreparedEvent(r,a,u,s);return this._scopeFire("interactions:action-".concat(a),n),a==="start"&&(this.prevEvent=p),this._fireEvent(p),this._scopeFire("interactions:after-action-".concat(a),n),!0}},{key:"_now",value:function(){return Date.now()}}])&&_o(t.prototype,i),e}();oe.Interaction=Ri;var To=Ri;oe.default=To;var Ae={};function zi(e){e.pointerIsDown&&(Pn(e.coords.cur,e.offset.total),e.offset.pending.x=0,e.offset.pending.y=0)}function Hi(e){Sn(e.interaction)}function Sn(e){if(!function(i){return!(!i.offset.pending.x&&!i.offset.pending.y)}(e))return!1;var t=e.offset.pending;return Pn(e.coords.cur,t),Pn(e.coords.delta,t),K.addEdges(e.edges,e.rect,t),t.x=0,t.y=0,!0}function Mo(e){var t=e.x,i=e.y;this.offset.pending.x+=t,this.offset.pending.y+=i,this.offset.total.x+=t,this.offset.total.y+=i}function Pn(e,t){var i=e.page,n=e.client,r=t.x,a=t.y;i.x+=r,i.y+=a,n.x+=r,n.y+=a}Object.defineProperty(Ae,"__esModule",{value:!0}),Ae.addTotal=zi,Ae.applyPending=Sn,Ae.default=void 0,oe._ProxyMethods.offsetBy="";var Co={id:"offset",before:["modifiers","pointer-events","actions","inertia"],install:function(e){e.Interaction.prototype.offsetBy=Mo},listeners:{"interactions:new":function(e){e.interaction.offset={total:{x:0,y:0},pending:{x:0,y:0}}},"interactions:update-pointer":function(e){return zi(e.interaction)},"interactions:before-action-start":Hi,"interactions:before-action-move":Hi,"interactions:before-action-end":function(e){var t=e.interaction;if(Sn(t))return t.move({offset:!0}),t.end(),!1},"interactions:stop":function(e){var t=e.interaction;t.offset.total.x=0,t.offset.total.y=0,t.offset.pending.x=0,t.offset.pending.y=0}}};Ae.default=Co;var Ne={};function Ao(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}Object.defineProperty(Ne,"__esModule",{value:!0}),Ne.default=Ne.InertiaState=void 0;var Fi=function(){function e(n){(function(r,a){if(!(r instanceof a))throw new TypeError("Cannot call a class as a function")})(this,e),this.active=!1,this.isModified=!1,this.smoothEnd=!1,this.allowResume=!1,this.modification=void 0,this.modifierCount=0,this.modifierArg=void 0,this.startCoords=void 0,this.t0=0,this.v0=0,this.te=0,this.targetOffset=void 0,this.modifiedOffset=void 0,this.currentOffset=void 0,this.lambda_v0=0,this.one_ve_v0=0,this.timeout=void 0,this.interaction=void 0,this.interaction=n}var t,i;return t=e,(i=[{key:"start",value:function(n){var r=this.interaction,a=Rt(r);if(!a||!a.enabled)return!1;var u=r.coords.velocity.client,s=(0,be.default)(u.x,u.y),c=this.modification||(this.modification=new Ce.default(r));if(c.copyFrom(r.modification),this.t0=r._now(),this.allowResume=a.allowResume,this.v0=s,this.currentOffset={x:0,y:0},this.startCoords=r.coords.cur.page,this.modifierArg=c.fillArg({pageCoords:this.startCoords,preEnd:!0,phase:"inertiastart"}),this.t0-r.coords.cur.timeStamp<50&&s>a.minSpeed&&s>a.endSpeed)this.startInertia();else{if(c.result=c.setAll(this.modifierArg),!c.result.changed)return!1;this.startSmoothEnd()}return r.modification.result.rect=null,r.offsetBy(this.targetOffset),r._doPhase({interaction:r,event:n,phase:"inertiastart"}),r.offsetBy({x:-this.targetOffset.x,y:-this.targetOffset.y}),r.modification.result.rect=null,this.active=!0,r.simulation=this,!0}},{key:"startInertia",value:function(){var n=this,r=this.interaction.coords.velocity.client,a=Rt(this.interaction),u=a.resistance,s=-Math.log(a.endSpeed/this.v0)/u;this.targetOffset={x:(r.x-s)/u,y:(r.y-s)/u},this.te=s,this.lambda_v0=u/this.v0,this.one_ve_v0=1-a.endSpeed/this.v0;var c=this.modification,p=this.modifierArg;p.pageCoords={x:this.startCoords.x+this.targetOffset.x,y:this.startCoords.y+this.targetOffset.y},c.result=c.setAll(p),c.result.changed&&(this.isModified=!0,this.modifiedOffset={x:this.targetOffset.x+c.result.delta.x,y:this.targetOffset.y+c.result.delta.y}),this.onNextFrame(function(){return n.inertiaTick()})}},{key:"startSmoothEnd",value:function(){var n=this;this.smoothEnd=!0,this.isModified=!0,this.targetOffset={x:this.modification.result.delta.x,y:this.modification.result.delta.y},this.onNextFrame(function(){return n.smoothEndTick()})}},{key:"onNextFrame",value:function(n){var r=this;this.timeout=pe.default.request(function(){r.active&&n()})}},{key:"inertiaTick",value:function(){var n,r,a,u,s,c=this,p=this.interaction,v=Rt(p).resistance,m=(p._now()-this.t0)/1e3;if(m<this.te){var b,E=1-(Math.exp(-v*m)-this.lambda_v0)/this.one_ve_v0;this.isModified?(n=this.targetOffset.x,r=this.targetOffset.y,a=this.modifiedOffset.x,u=this.modifiedOffset.y,b={x:Wi(s=E,0,n,a),y:Wi(s,0,r,u)}):b={x:this.targetOffset.x*E,y:this.targetOffset.y*E};var y={x:b.x-this.currentOffset.x,y:b.y-this.currentOffset.y};this.currentOffset.x+=y.x,this.currentOffset.y+=y.y,p.offsetBy(y),p.move(),this.onNextFrame(function(){return c.inertiaTick()})}else p.offsetBy({x:this.modifiedOffset.x-this.currentOffset.x,y:this.modifiedOffset.y-this.currentOffset.y}),this.end()}},{key:"smoothEndTick",value:function(){var n=this,r=this.interaction,a=r._now()-this.t0,u=Rt(r).smoothEndDuration;if(a<u){var s={x:Vi(a,0,this.targetOffset.x,u),y:Vi(a,0,this.targetOffset.y,u)},c={x:s.x-this.currentOffset.x,y:s.y-this.currentOffset.y};this.currentOffset.x+=c.x,this.currentOffset.y+=c.y,r.offsetBy(c),r.move({skipModifiers:this.modifierCount}),this.onNextFrame(function(){return n.smoothEndTick()})}else r.offsetBy({x:this.targetOffset.x-this.currentOffset.x,y:this.targetOffset.y-this.currentOffset.y}),this.end()}},{key:"resume",value:function(n){var r=n.pointer,a=n.event,u=n.eventTarget,s=this.interaction;s.offsetBy({x:-this.currentOffset.x,y:-this.currentOffset.y}),s.updatePointer(r,a,u,!0),s._doPhase({interaction:s,event:a,phase:"resume"}),(0,A.copyCoords)(s.coords.prev,s.coords.cur),this.stop()}},{key:"end",value:function(){this.interaction.move(),this.interaction.end(),this.stop()}},{key:"stop",value:function(){this.active=this.smoothEnd=!1,this.interaction.simulation=null,pe.default.cancel(this.timeout)}}])&&Ao(t.prototype,i),e}();function Rt(e){var t=e.interactable,i=e.prepared;return t&&t.options&&i.name&&t.options[i.name].inertia}function Wi(e,t,i,n){var r=1-e;return r*r*t+2*r*e*i+e*e*n}function Vi(e,t,i,n){return-i*(e/=n)*(e-2)+t}Ne.InertiaState=Fi;var Do={id:"inertia",before:["modifiers","actions"],install:function(e){var t=e.defaults;e.usePlugin(Ae.default),e.usePlugin(ne.default),e.actions.phases.inertiastart=!0,e.actions.phases.resume=!0,t.perAction.inertia={enabled:!1,resistance:10,minSpeed:100,endSpeed:10,allowResume:!0,smoothEndDuration:300}},listeners:{"interactions:new":function(e){var t=e.interaction;t.inertia=new Fi(t)},"interactions:before-action-end":function(e){var t=e.interaction,i=e.event;return(!t._interacting||t.simulation||!t.inertia.start(i))&&null},"interactions:down":function(e){var t=e.interaction,i=e.eventTarget,n=t.inertia;if(n.active)for(var r=i;d.default.element(r);){if(r===t.element){n.resume(e);break}r=I.parentNode(r)}},"interactions:stop":function(e){var t=e.interaction.inertia;t.active&&t.stop()},"interactions:before-action-resume":function(e){var t=e.interaction.modification;t.stop(e),t.start(e,e.interaction.coords.cur.page),t.applyToInteraction(e)},"interactions:before-action-inertiastart":function(e){return e.interaction.modification.setAndApply(e)},"interactions:action-resume":ne.addEventModifiers,"interactions:action-inertiastart":ne.addEventModifiers,"interactions:after-action-inertiastart":function(e){return e.interaction.modification.restoreInteractionCoords(e)},"interactions:after-action-resume":function(e){return e.interaction.modification.restoreInteractionCoords(e)}}};Ne.default=Do;var at={};function Io(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function Ni(e,t){for(var i=0;i<t.length;i++){var n=t[i];if(e.immediatePropagationStopped)break;n(e)}}Object.defineProperty(at,"__esModule",{value:!0}),at.Eventable=void 0;var Lo=function(){function e(n){(function(r,a){if(!(r instanceof a))throw new TypeError("Cannot call a class as a function")})(this,e),this.options=void 0,this.types={},this.propagationStopped=!1,this.immediatePropagationStopped=!1,this.global=void 0,this.options=(0,D.default)({},n||{})}var t,i;return t=e,(i=[{key:"fire",value:function(n){var r,a=this.global;(r=this.types[n.type])&&Ni(n,r),!n.propagationStopped&&a&&(r=a[n.type])&&Ni(n,r)}},{key:"on",value:function(n,r){var a=(0,ze.default)(n,r);for(n in a)this.types[n]=U.merge(this.types[n]||[],a[n])}},{key:"off",value:function(n,r){var a=(0,ze.default)(n,r);for(n in a){var u=this.types[n];if(u&&u.length)for(var s=0;s<a[n].length;s++){var c=a[n][s],p=u.indexOf(c);p!==-1&&u.splice(p,1)}}}},{key:"getRect",value:function(n){return null}}])&&Io(t.prototype,i),e}();at.Eventable=Lo;var st={};Object.defineProperty(st,"__esModule",{value:!0}),st.default=function(e,t){if(t.phaselessTypes[e])return!0;for(var i in t.map)if(e.indexOf(i)===0&&e.substr(i.length)in t.phases)return!0;return!1};var kn={};Object.defineProperty(kn,"__esModule",{value:!0}),kn.createInteractStatic=function(e){var t=function i(n,r){var a=e.interactables.get(n,r);return a||((a=e.interactables.new(n,r)).events.global=i.globalEvents),a};return t.getPointerAverage=A.pointerAverage,t.getTouchBBox=A.touchBBox,t.getTouchDistance=A.touchDistance,t.getTouchAngle=A.touchAngle,t.getElementRect=I.getElementRect,t.getElementClientRect=I.getElementClientRect,t.matchesSelector=I.matchesSelector,t.closest=I.closest,t.globalEvents={},t.version="1.10.11",t.scope=e,t.use=function(i,n){return this.scope.usePlugin(i,n),this},t.isSet=function(i,n){return!!this.scope.interactables.get(i,n&&n.context)},t.on=(0,se.warnOnce)(function(i,n,r){if(d.default.string(i)&&i.search(" ")!==-1&&(i=i.trim().split(/ +/)),d.default.array(i)){for(var a=0;a<i.length;a++){var u=i[a];this.on(u,n,r)}return this}if(d.default.object(i)){for(var s in i)this.on(s,i[s],n);return this}return(0,st.default)(i,this.scope.actions)?this.globalEvents[i]?this.globalEvents[i].push(n):this.globalEvents[i]=[n]:this.scope.events.add(this.scope.document,i,n,{options:r}),this},"The interact.on() method is being deprecated"),t.off=(0,se.warnOnce)(function(i,n,r){if(d.default.string(i)&&i.search(" ")!==-1&&(i=i.trim().split(/ +/)),d.default.array(i)){for(var a=0;a<i.length;a++){var u=i[a];this.off(u,n,r)}return this}if(d.default.object(i)){for(var s in i)this.off(s,i[s],n);return this}var c;return(0,st.default)(i,this.scope.actions)?i in this.globalEvents&&(c=this.globalEvents[i].indexOf(n))!==-1&&this.globalEvents[i].splice(c,1):this.scope.events.remove(this.scope.document,i,n,r),this},"The interact.off() method is being deprecated"),t.debug=function(){return this.scope},t.supportsTouch=function(){return G.default.supportsTouch},t.supportsPointerEvent=function(){return G.default.supportsPointerEvent},t.stop=function(){for(var i=0;i<this.scope.interactions.list.length;i++)this.scope.interactions.list[i].stop();return this},t.pointerMoveTolerance=function(i){return d.default.number(i)?(this.scope.interactions.pointerMoveTolerance=i,this):this.scope.interactions.pointerMoveTolerance},t.addDocument=function(i,n){this.scope.addDocument(i,n)},t.removeDocument=function(i){this.scope.removeDocument(i)},t};var zt={};function jo(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}Object.defineProperty(zt,"__esModule",{value:!0}),zt.Interactable=void 0;var Ro=function(){function e(n,r,a,u){(function(s,c){if(!(s instanceof c))throw new TypeError("Cannot call a class as a function")})(this,e),this.options=void 0,this._actions=void 0,this.target=void 0,this.events=new at.Eventable,this._context=void 0,this._win=void 0,this._doc=void 0,this._scopeEvents=void 0,this._rectChecker=void 0,this._actions=r.actions,this.target=n,this._context=r.context||a,this._win=(0,o.getWindow)((0,I.trySelector)(n)?this._context:n),this._doc=this._win.document,this._scopeEvents=u,this.set(r)}var t,i;return t=e,(i=[{key:"_defaults",get:function(){return{base:{},perAction:{},actions:{}}}},{key:"setOnEvents",value:function(n,r){return d.default.func(r.onstart)&&this.on("".concat(n,"start"),r.onstart),d.default.func(r.onmove)&&this.on("".concat(n,"move"),r.onmove),d.default.func(r.onend)&&this.on("".concat(n,"end"),r.onend),d.default.func(r.oninertiastart)&&this.on("".concat(n,"inertiastart"),r.oninertiastart),this}},{key:"updatePerActionListeners",value:function(n,r,a){(d.default.array(r)||d.default.object(r))&&this.off(n,r),(d.default.array(a)||d.default.object(a))&&this.on(n,a)}},{key:"setPerAction",value:function(n,r){var a=this._defaults;for(var u in r){var s=u,c=this.options[n],p=r[s];s==="listeners"&&this.updatePerActionListeners(n,c.listeners,p),d.default.array(p)?c[s]=U.from(p):d.default.plainObject(p)?(c[s]=(0,D.default)(c[s]||{},(0,Me.default)(p)),d.default.object(a.perAction[s])&&"enabled"in a.perAction[s]&&(c[s].enabled=p.enabled!==!1)):d.default.bool(p)&&d.default.object(a.perAction[s])?c[s].enabled=p:c[s]=p}}},{key:"getRect",value:function(n){return n=n||(d.default.element(this.target)?this.target:null),d.default.string(this.target)&&(n=n||this._context.querySelector(this.target)),(0,I.getElementRect)(n)}},{key:"rectChecker",value:function(n){var r=this;return d.default.func(n)?(this._rectChecker=n,this.getRect=function(a){var u=(0,D.default)({},r._rectChecker(a));return"width"in u||(u.width=u.right-u.left,u.height=u.bottom-u.top),u},this):n===null?(delete this.getRect,delete this._rectChecker,this):this.getRect}},{key:"_backCompatOption",value:function(n,r){if((0,I.trySelector)(r)||d.default.object(r)){for(var a in this.options[n]=r,this._actions.map)this.options[a][n]=r;return this}return this.options[n]}},{key:"origin",value:function(n){return this._backCompatOption("origin",n)}},{key:"deltaSource",value:function(n){return n==="page"||n==="client"?(this.options.deltaSource=n,this):this.options.deltaSource}},{key:"context",value:function(){return this._context}},{key:"inContext",value:function(n){return this._context===n.ownerDocument||(0,I.nodeContains)(this._context,n)}},{key:"testIgnoreAllow",value:function(n,r,a){return!this.testIgnore(n.ignoreFrom,r,a)&&this.testAllow(n.allowFrom,r,a)}},{key:"testAllow",value:function(n,r,a){return!n||!!d.default.element(a)&&(d.default.string(n)?(0,I.matchesUpTo)(a,n,r):!!d.default.element(n)&&(0,I.nodeContains)(n,a))}},{key:"testIgnore",value:function(n,r,a){return!(!n||!d.default.element(a))&&(d.default.string(n)?(0,I.matchesUpTo)(a,n,r):!!d.default.element(n)&&(0,I.nodeContains)(n,a))}},{key:"fire",value:function(n){return this.events.fire(n),this}},{key:"_onOff",value:function(n,r,a,u){d.default.object(r)&&!d.default.array(r)&&(u=a,a=null);var s=n==="on"?"add":"remove",c=(0,ze.default)(r,a);for(var p in c){p==="wheel"&&(p=G.default.wheelEvent);for(var v=0;v<c[p].length;v++){var m=c[p][v];(0,st.default)(p,this._actions)?this.events[n](p,m):d.default.string(this.target)?this._scopeEvents["".concat(s,"Delegate")](this.target,this._context,p,m,u):this._scopeEvents[s](this.target,p,m,u)}}return this}},{key:"on",value:function(n,r,a){return this._onOff("on",n,r,a)}},{key:"off",value:function(n,r,a){return this._onOff("off",n,r,a)}},{key:"set",value:function(n){var r=this._defaults;for(var a in d.default.object(n)||(n={}),this.options=(0,Me.default)(r.base),this._actions.methodDict){var u=a,s=this._actions.methodDict[u];this.options[u]={},this.setPerAction(u,(0,D.default)((0,D.default)({},r.perAction),r.actions[u])),this[s](n[u])}for(var c in n)d.default.func(this[c])&&this[c](n[c]);return this}},{key:"unset",value:function(){if(d.default.string(this.target))for(var n in this._scopeEvents.delegatedEvents)for(var r=this._scopeEvents.delegatedEvents[n],a=r.length-1;a>=0;a--){var u=r[a],s=u.selector,c=u.context,p=u.listeners;s===this.target&&c===this._context&&r.splice(a,1);for(var v=p.length-1;v>=0;v--)this._scopeEvents.removeDelegate(this.target,this._context,n,p[v][0],p[v][1])}else this._scopeEvents.remove(this.target,"all")}}])&&jo(t.prototype,i),e}();zt.Interactable=Ro;var Ht={};function zo(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}Object.defineProperty(Ht,"__esModule",{value:!0}),Ht.InteractableSet=void 0;var Ho=function(){function e(n){var r=this;(function(a,u){if(!(a instanceof u))throw new TypeError("Cannot call a class as a function")})(this,e),this.list=[],this.selectorMap={},this.scope=void 0,this.scope=n,n.addListeners({"interactable:unset":function(a){var u=a.interactable,s=u.target,c=u._context,p=d.default.string(s)?r.selectorMap[s]:s[r.scope.id],v=U.findIndex(p,function(m){return m.context===c});p[v]&&(p[v].context=null,p[v].interactable=null),p.splice(v,1)}})}var t,i;return t=e,(i=[{key:"new",value:function(n,r){r=(0,D.default)(r||{},{actions:this.scope.actions});var a=new this.scope.Interactable(n,r,this.scope.document,this.scope.events),u={context:a._context,interactable:a};return this.scope.addDocument(a._doc),this.list.push(a),d.default.string(n)?(this.selectorMap[n]||(this.selectorMap[n]=[]),this.selectorMap[n].push(u)):(a.target[this.scope.id]||Object.defineProperty(n,this.scope.id,{value:[],configurable:!0}),n[this.scope.id].push(u)),this.scope.fire("interactable:new",{target:n,options:r,interactable:a,win:this.scope._win}),a}},{key:"get",value:function(n,r){var a=r&&r.context||this.scope.document,u=d.default.string(n),s=u?this.selectorMap[n]:n[this.scope.id];if(!s)return null;var c=U.find(s,function(p){return p.context===a&&(u||p.interactable.inContext(n))});return c&&c.interactable}},{key:"forEachMatch",value:function(n,r){for(var a=0;a<this.list.length;a++){var u=this.list[a],s=void 0;if((d.default.string(u.target)?d.default.element(n)&&I.matchesSelector(n,u.target):n===u.target)&&u.inContext(n)&&(s=r(u)),s!==void 0)return s}}}])&&zo(t.prototype,i),e}();Ht.InteractableSet=Ho;var Ft={};function Fo(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _n(e,t){return function(i){if(Array.isArray(i))return i}(e)||function(i,n){if(typeof Symbol!="undefined"&&Symbol.iterator in Object(i)){var r=[],a=!0,u=!1,s=void 0;try{for(var c,p=i[Symbol.iterator]();!(a=(c=p.next()).done)&&(r.push(c.value),!n||r.length!==n);a=!0);}catch(v){u=!0,s=v}finally{try{a||p.return==null||p.return()}finally{if(u)throw s}}return r}}(e,t)||function(i,n){if(i){if(typeof i=="string")return Bi(i,n);var r=Object.prototype.toString.call(i).slice(8,-1);return r==="Object"&&i.constructor&&(r=i.constructor.name),r==="Map"||r==="Set"?Array.from(i):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Bi(i,n):void 0}}(e,t)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function Bi(e,t){(t==null||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}Object.defineProperty(Ft,"__esModule",{value:!0}),Ft.default=void 0;var Wo=function(){function e(n){(function(r,a){if(!(r instanceof a))throw new TypeError("Cannot call a class as a function")})(this,e),this.currentTarget=void 0,this.originalEvent=void 0,this.type=void 0,this.originalEvent=n,(0,et.default)(this,n)}var t,i;return t=e,(i=[{key:"preventOriginalDefault",value:function(){this.originalEvent.preventDefault()}},{key:"stopPropagation",value:function(){this.originalEvent.stopPropagation()}},{key:"stopImmediatePropagation",value:function(){this.originalEvent.stopImmediatePropagation()}}])&&Fo(t.prototype,i),e}();function lt(e){if(!d.default.object(e))return{capture:!!e,passive:!1};var t=(0,D.default)({},e);return t.capture=!!e.capture,t.passive=!!e.passive,t}var Vo={id:"events",install:function(e){var t,i=[],n={},r=[],a={add:u,remove:s,addDelegate:function(v,m,b,E,y){var P=lt(y);if(!n[b]){n[b]=[];for(var M=0;M<r.length;M++){var x=r[M];u(x,b,c),u(x,b,p,!0)}}var C=n[b],R=U.find(C,function(N){return N.selector===v&&N.context===m});R||(R={selector:v,context:m,listeners:[]},C.push(R)),R.listeners.push([E,P])},removeDelegate:function(v,m,b,E,y){var P,M=lt(y),x=n[b],C=!1;if(x)for(P=x.length-1;P>=0;P--){var R=x[P];if(R.selector===v&&R.context===m){for(var N=R.listeners,X=N.length-1;X>=0;X--){var Z=_n(N[X],2),B=Z[0],Y=Z[1],ue=Y.capture,ye=Y.passive;if(B===E&&ue===M.capture&&ye===M.passive){N.splice(X,1),N.length||(x.splice(P,1),s(m,b,c),s(m,b,p,!0)),C=!0;break}}if(C)break}}},delegateListener:c,delegateUseCapture:p,delegatedEvents:n,documents:r,targets:i,supportsOptions:!1,supportsPassive:!1};function u(v,m,b,E){var y=lt(E),P=U.find(i,function(M){return M.eventTarget===v});P||(P={eventTarget:v,events:{}},i.push(P)),P.events[m]||(P.events[m]=[]),v.addEventListener&&!U.contains(P.events[m],b)&&(v.addEventListener(m,b,a.supportsOptions?y:y.capture),P.events[m].push(b))}function s(v,m,b,E){var y=lt(E),P=U.findIndex(i,function(X){return X.eventTarget===v}),M=i[P];if(M&&M.events)if(m!=="all"){var x=!1,C=M.events[m];if(C){if(b==="all"){for(var R=C.length-1;R>=0;R--)s(v,m,C[R],y);return}for(var N=0;N<C.length;N++)if(C[N]===b){v.removeEventListener(m,b,a.supportsOptions?y:y.capture),C.splice(N,1),C.length===0&&(delete M.events[m],x=!0);break}}x&&!Object.keys(M.events).length&&i.splice(P,1)}else for(m in M.events)M.events.hasOwnProperty(m)&&s(v,m,"all")}function c(v,m){for(var b=lt(m),E=new Wo(v),y=n[v.type],P=_n(A.getEventTargets(v),1)[0],M=P;d.default.element(M);){for(var x=0;x<y.length;x++){var C=y[x],R=C.selector,N=C.context;if(I.matchesSelector(M,R)&&I.nodeContains(N,P)&&I.nodeContains(N,M)){var X=C.listeners;E.currentTarget=M;for(var Z=0;Z<X.length;Z++){var B=_n(X[Z],2),Y=B[0],ue=B[1],ye=ue.capture,Wn=ue.passive;ye===b.capture&&Wn===b.passive&&Y(E)}}}M=I.parentNode(M)}}function p(v){return c(v,!0)}return(t=e.document)==null||t.createElement("div").addEventListener("test",null,{get capture(){return a.supportsOptions=!0},get passive(){return a.supportsPassive=!0}}),e.events=a,a}};Ft.default=Vo;var Wt={};Object.defineProperty(Wt,"__esModule",{value:!0}),Wt.default=void 0;var Vt={methodOrder:["simulationResume","mouseOrPen","hasPointer","idle"],search:function(e){for(var t=0;t<Vt.methodOrder.length;t++){var i;i=Vt.methodOrder[t];var n=Vt[i](e);if(n)return n}return null},simulationResume:function(e){var t=e.pointerType,i=e.eventType,n=e.eventTarget,r=e.scope;if(!/down|start/i.test(i))return null;for(var a=0;a<r.interactions.list.length;a++){var u=r.interactions.list[a],s=n;if(u.simulation&&u.simulation.allowResume&&u.pointerType===t)for(;s;){if(s===u.element)return u;s=I.parentNode(s)}}return null},mouseOrPen:function(e){var t,i=e.pointerId,n=e.pointerType,r=e.eventType,a=e.scope;if(n!=="mouse"&&n!=="pen")return null;for(var u=0;u<a.interactions.list.length;u++){var s=a.interactions.list[u];if(s.pointerType===n){if(s.simulation&&!qi(s,i))continue;if(s.interacting())return s;t||(t=s)}}if(t)return t;for(var c=0;c<a.interactions.list.length;c++){var p=a.interactions.list[c];if(!(p.pointerType!==n||/down/i.test(r)&&p.simulation))return p}return null},hasPointer:function(e){for(var t=e.pointerId,i=e.scope,n=0;n<i.interactions.list.length;n++){var r=i.interactions.list[n];if(qi(r,t))return r}return null},idle:function(e){for(var t=e.pointerType,i=e.scope,n=0;n<i.interactions.list.length;n++){var r=i.interactions.list[n];if(r.pointers.length===1){var a=r.interactable;if(a&&(!a.options.gesture||!a.options.gesture.enabled))continue}else if(r.pointers.length>=2)continue;if(!r.interacting()&&t===r.pointerType)return r}return null}};function qi(e,t){return e.pointers.some(function(i){return i.id===t})}var No=Vt;Wt.default=No;var Nt={};function Xi(e){return(Xi=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function Yi(e,t){return function(i){if(Array.isArray(i))return i}(e)||function(i,n){if(typeof Symbol!="undefined"&&Symbol.iterator in Object(i)){var r=[],a=!0,u=!1,s=void 0;try{for(var c,p=i[Symbol.iterator]();!(a=(c=p.next()).done)&&(r.push(c.value),!n||r.length!==n);a=!0);}catch(v){u=!0,s=v}finally{try{a||p.return==null||p.return()}finally{if(u)throw s}}return r}}(e,t)||function(i,n){if(i){if(typeof i=="string")return $i(i,n);var r=Object.prototype.toString.call(i).slice(8,-1);return r==="Object"&&i.constructor&&(r=i.constructor.name),r==="Map"||r==="Set"?Array.from(i):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?$i(i,n):void 0}}(e,t)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function $i(e,t){(t==null||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}function Bo(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function qo(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function Ui(e,t){return(Ui=Object.setPrototypeOf||function(i,n){return i.__proto__=n,i})(e,t)}function Xo(e,t){return!t||Xi(t)!=="object"&&typeof t!="function"?function(i){if(i===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return i}(e):t}function On(e){return(On=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(e)}Object.defineProperty(Nt,"__esModule",{value:!0}),Nt.default=void 0;var Tn=["pointerDown","pointerMove","pointerUp","updatePointer","removePointer","windowBlur"];function Gi(e,t){return function(i){var n=t.interactions.list,r=A.getPointerType(i),a=Yi(A.getEventTargets(i),2),u=a[0],s=a[1],c=[];if(/^touch/.test(i.type)){t.prevTouchTime=t.now();for(var p=0;p<i.changedTouches.length;p++){var v=i.changedTouches[p],m={pointer:v,pointerId:A.getPointerId(v),pointerType:r,eventType:i.type,eventTarget:u,curEventTarget:s,scope:t},b=Ki(m);c.push([m.pointer,m.eventTarget,m.curEventTarget,b])}}else{var E=!1;if(!G.default.supportsPointerEvent&&/mouse/.test(i.type)){for(var y=0;y<n.length&&!E;y++)E=n[y].pointerType!=="mouse"&&n[y].pointerIsDown;E=E||t.now()-t.prevTouchTime<500||i.timeStamp===0}if(!E){var P={pointer:i,pointerId:A.getPointerId(i),pointerType:r,eventType:i.type,curEventTarget:s,eventTarget:u,scope:t},M=Ki(P);c.push([P.pointer,P.eventTarget,P.curEventTarget,M])}}for(var x=0;x<c.length;x++){var C=Yi(c[x],4),R=C[0],N=C[1],X=C[2];C[3][e](R,i,N,X)}}}function Ki(e){var t=e.pointerType,i=e.scope,n={interaction:Wt.default.search(e),searchDetails:e};return i.fire("interactions:find",n),n.interaction||i.interactions.new({pointerType:t})}function Mn(e,t){var i=e.doc,n=e.scope,r=e.options,a=n.interactions.docEvents,u=n.events,s=u[t];for(var c in n.browser.isIOS&&!r.events&&(r.events={passive:!1}),u.delegatedEvents)s(i,c,u.delegateListener),s(i,c,u.delegateUseCapture,!0);for(var p=r&&r.events,v=0;v<a.length;v++){var m=a[v];s(i,m.type,m.listener,p)}}var Yo={id:"core/interactions",install:function(e){for(var t={},i=0;i<Tn.length;i++){var n=Tn[i];t[n]=Gi(n,e)}var r,a=G.default.pEventTypes;function u(){for(var s=0;s<e.interactions.list.length;s++){var c=e.interactions.list[s];if(c.pointerIsDown&&c.pointerType==="touch"&&!c._interacting)for(var p=function(){var m=c.pointers[v];e.documents.some(function(b){var E=b.doc;return(0,I.nodeContains)(E,m.downTarget)})||c.removePointer(m.pointer,m.event)},v=0;v<c.pointers.length;v++)p()}}(r=L.default.PointerEvent?[{type:a.down,listener:u},{type:a.down,listener:t.pointerDown},{type:a.move,listener:t.pointerMove},{type:a.up,listener:t.pointerUp},{type:a.cancel,listener:t.pointerUp}]:[{type:"mousedown",listener:t.pointerDown},{type:"mousemove",listener:t.pointerMove},{type:"mouseup",listener:t.pointerUp},{type:"touchstart",listener:u},{type:"touchstart",listener:t.pointerDown},{type:"touchmove",listener:t.pointerMove},{type:"touchend",listener:t.pointerUp},{type:"touchcancel",listener:t.pointerUp}]).push({type:"blur",listener:function(s){for(var c=0;c<e.interactions.list.length;c++)e.interactions.list[c].documentBlur(s)}}),e.prevTouchTime=0,e.Interaction=function(s){(function(y,P){if(typeof P!="function"&&P!==null)throw new TypeError("Super expression must either be null or a function");y.prototype=Object.create(P&&P.prototype,{constructor:{value:y,writable:!0,configurable:!0}}),P&&Ui(y,P)})(E,s);var c,p,v,m,b=(v=E,m=function(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(y){return!1}}(),function(){var y,P=On(v);if(m){var M=On(this).constructor;y=Reflect.construct(P,arguments,M)}else y=P.apply(this,arguments);return Xo(this,y)});function E(){return Bo(this,E),b.apply(this,arguments)}return c=E,(p=[{key:"pointerMoveTolerance",get:function(){return e.interactions.pointerMoveTolerance},set:function(y){e.interactions.pointerMoveTolerance=y}},{key:"_now",value:function(){return e.now()}}])&&qo(c.prototype,p),E}(oe.default),e.interactions={list:[],new:function(s){s.scopeFire=function(p,v){return e.fire(p,v)};var c=new e.Interaction(s);return e.interactions.list.push(c),c},listeners:t,docEvents:r,pointerMoveTolerance:1},e.usePlugin(We.default)},listeners:{"scope:add-document":function(e){return Mn(e,"add")},"scope:remove-document":function(e){return Mn(e,"remove")},"interactable:unset":function(e,t){for(var i=e.interactable,n=t.interactions.list.length-1;n>=0;n--){var r=t.interactions.list[n];r.interactable===i&&(r.stop(),t.fire("interactions:destroy",{interaction:r}),r.destroy(),t.interactions.list.length>2&&t.interactions.list.splice(n,1))}}},onDocSignal:Mn,doOnInteractions:Gi,methodNames:Tn};Nt.default=Yo;var ct={};function Zi(e){return(Zi=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function Cn(e,t,i){return(Cn=typeof Reflect!="undefined"&&Reflect.get?Reflect.get:function(n,r,a){var u=function(c,p){for(;!Object.prototype.hasOwnProperty.call(c,p)&&(c=Be(c))!==null;);return c}(n,r);if(u){var s=Object.getOwnPropertyDescriptor(u,r);return s.get?s.get.call(a):s.value}})(e,t,i||e)}function Ji(e,t){return(Ji=Object.setPrototypeOf||function(i,n){return i.__proto__=n,i})(e,t)}function $o(e,t){return!t||Zi(t)!=="object"&&typeof t!="function"?function(i){if(i===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return i}(e):t}function Be(e){return(Be=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(e)}function Qi(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function er(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function tr(e,t,i){return t&&er(e.prototype,t),i&&er(e,i),e}Object.defineProperty(ct,"__esModule",{value:!0}),ct.initScope=nr,ct.Scope=void 0;var Uo=function(){function e(){var t=this;Qi(this,e),this.id="__interact_scope_".concat(Math.floor(100*Math.random())),this.isInitialized=!1,this.listenerMaps=[],this.browser=G.default,this.defaults=(0,Me.default)(it.defaults),this.Eventable=at.Eventable,this.actions={map:{},phases:{start:!0,move:!0,end:!0},methodDict:{},phaselessTypes:{}},this.interactStatic=(0,kn.createInteractStatic)(this),this.InteractEvent=rt.InteractEvent,this.Interactable=void 0,this.interactables=new Ht.InteractableSet(this),this._win=void 0,this.document=void 0,this.window=void 0,this.documents=[],this._plugins={list:[],map:{}},this.onWindowUnload=function(n){return t.removeDocument(n.target)};var i=this;this.Interactable=function(n){(function(c,p){if(typeof p!="function"&&p!==null)throw new TypeError("Super expression must either be null or a function");c.prototype=Object.create(p&&p.prototype,{constructor:{value:c,writable:!0,configurable:!0}}),p&&Ji(c,p)})(s,n);var r,a,u=(r=s,a=function(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(c){return!1}}(),function(){var c,p=Be(r);if(a){var v=Be(this).constructor;c=Reflect.construct(p,arguments,v)}else c=p.apply(this,arguments);return $o(this,c)});function s(){return Qi(this,s),u.apply(this,arguments)}return tr(s,[{key:"_defaults",get:function(){return i.defaults}},{key:"set",value:function(c){return Cn(Be(s.prototype),"set",this).call(this,c),i.fire("interactable:set",{options:c,interactable:this}),this}},{key:"unset",value:function(){Cn(Be(s.prototype),"unset",this).call(this),i.interactables.list.splice(i.interactables.list.indexOf(this),1),i.fire("interactable:unset",{interactable:this})}}]),s}(zt.Interactable)}return tr(e,[{key:"addListeners",value:function(t,i){this.listenerMaps.push({id:i,map:t})}},{key:"fire",value:function(t,i){for(var n=0;n<this.listenerMaps.length;n++){var r=this.listenerMaps[n].map[t];if(r&&r(i,this,t)===!1)return!1}}},{key:"init",value:function(t){return this.isInitialized?this:nr(this,t)}},{key:"pluginIsInstalled",value:function(t){return this._plugins.map[t.id]||this._plugins.list.indexOf(t)!==-1}},{key:"usePlugin",value:function(t,i){if(!this.isInitialized)return this;if(this.pluginIsInstalled(t))return this;if(t.id&&(this._plugins.map[t.id]=t),this._plugins.list.push(t),t.install&&t.install(this,i),t.listeners&&t.before){for(var n=0,r=this.listenerMaps.length,a=t.before.reduce(function(s,c){return s[c]=!0,s[ir(c)]=!0,s},{});n<r;n++){var u=this.listenerMaps[n].id;if(a[u]||a[ir(u)])break}this.listenerMaps.splice(n,0,{id:t.id,map:t.listeners})}else t.listeners&&this.listenerMaps.push({id:t.id,map:t.listeners});return this}},{key:"addDocument",value:function(t,i){if(this.getDocIndex(t)!==-1)return!1;var n=o.getWindow(t);i=i?(0,D.default)({},i):{},this.documents.push({doc:t,options:i}),this.events.documents.push(t),t!==this.document&&this.events.add(n,"unload",this.onWindowUnload),this.fire("scope:add-document",{doc:t,window:n,scope:this,options:i})}},{key:"removeDocument",value:function(t){var i=this.getDocIndex(t),n=o.getWindow(t),r=this.documents[i].options;this.events.remove(n,"unload",this.onWindowUnload),this.documents.splice(i,1),this.events.documents.splice(i,1),this.fire("scope:remove-document",{doc:t,window:n,scope:this,options:r})}},{key:"getDocIndex",value:function(t){for(var i=0;i<this.documents.length;i++)if(this.documents[i].doc===t)return i;return-1}},{key:"getDocOptions",value:function(t){var i=this.getDocIndex(t);return i===-1?null:this.documents[i].options}},{key:"now",value:function(){return(this.window.Date||Date).now()}}]),e}();function nr(e,t){return e.isInitialized=!0,d.default.window(t)&&o.init(t),L.default.init(t),G.default.init(t),pe.default.init(t),e.window=t,e.document=t.document,e.usePlugin(Nt.default),e.usePlugin(Ft.default),e}function ir(e){return e&&e.replace(/\/.*$/,"")}ct.Scope=Uo;var ie={};Object.defineProperty(ie,"__esModule",{value:!0}),ie.default=void 0;var rr=new ct.Scope,Go=rr.interactStatic;ie.default=Go;var Ko=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:void 0;rr.init(Ko);var Bt={};Object.defineProperty(Bt,"__esModule",{value:!0}),Bt.default=void 0,Bt.default=function(){};var qt={};Object.defineProperty(qt,"__esModule",{value:!0}),qt.default=void 0,qt.default=function(){};var Xt={};function or(e,t){return function(i){if(Array.isArray(i))return i}(e)||function(i,n){if(typeof Symbol!="undefined"&&Symbol.iterator in Object(i)){var r=[],a=!0,u=!1,s=void 0;try{for(var c,p=i[Symbol.iterator]();!(a=(c=p.next()).done)&&(r.push(c.value),!n||r.length!==n);a=!0);}catch(v){u=!0,s=v}finally{try{a||p.return==null||p.return()}finally{if(u)throw s}}return r}}(e,t)||function(i,n){if(i){if(typeof i=="string")return ar(i,n);var r=Object.prototype.toString.call(i).slice(8,-1);return r==="Object"&&i.constructor&&(r=i.constructor.name),r==="Map"||r==="Set"?Array.from(i):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ar(i,n):void 0}}(e,t)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()}function ar(e,t){(t==null||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}Object.defineProperty(Xt,"__esModule",{value:!0}),Xt.default=void 0,Xt.default=function(e){var t=[["x","y"],["left","top"],["right","bottom"],["width","height"]].filter(function(n){var r=or(n,2),a=r[0],u=r[1];return a in e||u in e}),i=function(n,r){for(var a=e.range,u=e.limits,s=u===void 0?{left:-1/0,right:1/0,top:-1/0,bottom:1/0}:u,c=e.offset,p=c===void 0?{x:0,y:0}:c,v={range:a,grid:e,x:null,y:null},m=0;m<t.length;m++){var b=or(t[m],2),E=b[0],y=b[1],P=Math.round((n-p.x)/e[E]),M=Math.round((r-p.y)/e[y]);v[E]=Math.max(s.left,Math.min(s.right,P*e[E]+p.x)),v[y]=Math.max(s.top,Math.min(s.bottom,M*e[y]+p.y))}return v};return i.grid=e,i.coordFields=t,i};var ut={};Object.defineProperty(ut,"__esModule",{value:!0}),Object.defineProperty(ut,"edgeTarget",{enumerable:!0,get:function(){return Bt.default}}),Object.defineProperty(ut,"elements",{enumerable:!0,get:function(){return qt.default}}),Object.defineProperty(ut,"grid",{enumerable:!0,get:function(){return Xt.default}});var Yt={};Object.defineProperty(Yt,"__esModule",{value:!0}),Yt.default=void 0;var Zo={id:"snappers",install:function(e){var t=e.interactStatic;t.snappers=(0,D.default)(t.snappers||{},ut),t.createSnapGrid=t.snappers.grid}};Yt.default=Zo;var qe={};function sr(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),i.push.apply(i,n)}return i}function An(e){for(var t=1;t<arguments.length;t++){var i=arguments[t]!=null?arguments[t]:{};t%2?sr(Object(i),!0).forEach(function(n){Jo(e,n,i[n])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):sr(Object(i)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(i,n))})}return e}function Jo(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}Object.defineProperty(qe,"__esModule",{value:!0}),qe.aspectRatio=qe.default=void 0;var lr={start:function(e){if(!e.state.options.enabled)return!1;var t=e.state,i=e.rect,n=e.edges,r=e.pageCoords,a=t.options.ratio,u=t.options,s=u.equalDelta,c=u.modifiers;a==="preserve"&&(a=i.width/i.height),t.startCoords=(0,D.default)({},r),t.startRect=(0,D.default)({},i),t.ratio=a,t.equalDelta=s;var p=t.linkedEdges={top:n.top||n.left&&!n.bottom,left:n.left||n.top&&!n.right,bottom:n.bottom||n.right&&!n.top,right:n.right||n.bottom&&!n.left};if(t.xIsPrimaryAxis=!(!n.left&&!n.right),t.equalDelta)t.edgeSign=(p.left?1:-1)*(p.top?1:-1);else{var v=t.xIsPrimaryAxis?p.top:p.left;t.edgeSign=v?-1:1}if((0,D.default)(e.edges,p),c&&c.length){var m=new Ce.default(e.interaction);m.copyFrom(e.interaction.modification),m.prepareStates(c),t.subModification=m,m.startAll(An({},e))}},set:function(e){if(e.state.options.enabled===!1)return!1;var t=e.state,i=e.rect,n=e.coords,r=(0,D.default)({},n),a=t.equalDelta?Qo:ea;if(a(t,t.xIsPrimaryAxis,n,i),!t.subModification)return null;var u=(0,D.default)({},i);(0,K.addEdges)(t.linkedEdges,u,{x:n.x-r.x,y:n.y-r.y});var s=t.subModification.setAll(An(An({},e),{},{rect:u,edges:t.linkedEdges,pageCoords:n,prevCoords:n,prevRect:u})),c=s.delta;return s.changed&&(a(t,Math.abs(c.x)>Math.abs(c.y),s.coords,s.rect),(0,D.default)(n,s.coords)),s.eventProps},defaults:{ratio:"preserve",equalDelta:!1,modifiers:[],enabled:!1}};function Qo(e,t,i){var n=e.startCoords,r=e.edgeSign;t?i.y=n.y+(i.x-n.x)*r:i.x=n.x+(i.y-n.y)*r}function ea(e,t,i,n){var r=e.startRect,a=e.startCoords,u=e.ratio,s=e.edgeSign;if(t){var c=n.width/u;i.y=a.y+(c-r.height)*s}else{var p=n.height*u;i.x=a.x+(p-r.width)*s}}qe.aspectRatio=lr;var ta=(0,ne.makeModifier)(lr,"aspectRatio");qe.default=ta;var De={};Object.defineProperty(De,"__esModule",{value:!0}),De.default=void 0;var cr=function(){};cr._defaults={};var na=cr;De.default=na;var Dn={};Object.defineProperty(Dn,"__esModule",{value:!0}),Object.defineProperty(Dn,"default",{enumerable:!0,get:function(){return De.default}});var re={};function In(e,t,i){return d.default.func(e)?K.resolveRectLike(e,t.interactable,t.element,[i.x,i.y,t]):K.resolveRectLike(e,t.interactable,t.element)}Object.defineProperty(re,"__esModule",{value:!0}),re.getRestrictionRect=In,re.restrict=re.default=void 0;var ur={start:function(e){var t=e.rect,i=e.startOffset,n=e.state,r=e.interaction,a=e.pageCoords,u=n.options,s=u.elementRect,c=(0,D.default)({left:0,top:0,right:0,bottom:0},u.offset||{});if(t&&s){var p=In(u.restriction,r,a);if(p){var v=p.right-p.left-t.width,m=p.bottom-p.top-t.height;v<0&&(c.left+=v,c.right+=v),m<0&&(c.top+=m,c.bottom+=m)}c.left+=i.left-t.width*s.left,c.top+=i.top-t.height*s.top,c.right+=i.right-t.width*(1-s.right),c.bottom+=i.bottom-t.height*(1-s.bottom)}n.offset=c},set:function(e){var t=e.coords,i=e.interaction,n=e.state,r=n.options,a=n.offset,u=In(r.restriction,i,t);if(u){var s=K.xywhToTlbr(u);t.x=Math.max(Math.min(s.right-a.right,t.x),s.left+a.left),t.y=Math.max(Math.min(s.bottom-a.bottom,t.y),s.top+a.top)}},defaults:{restriction:null,elementRect:null,offset:null,endOnly:!1,enabled:!1}};re.restrict=ur;var ia=(0,ne.makeModifier)(ur,"restrict");re.default=ia;var fe={};Object.defineProperty(fe,"__esModule",{value:!0}),fe.restrictEdges=fe.default=void 0;var dr={top:1/0,left:1/0,bottom:-1/0,right:-1/0},pr={top:-1/0,left:-1/0,bottom:1/0,right:1/0};function fr(e,t){for(var i=["top","left","bottom","right"],n=0;n<i.length;n++){var r=i[n];r in e||(e[r]=t[r])}return e}var hr={noInner:dr,noOuter:pr,start:function(e){var t,i=e.interaction,n=e.startOffset,r=e.state,a=r.options;if(a){var u=(0,re.getRestrictionRect)(a.offset,i,i.coords.start.page);t=K.rectToXY(u)}t=t||{x:0,y:0},r.offset={top:t.y+n.top,left:t.x+n.left,bottom:t.y-n.bottom,right:t.x-n.right}},set:function(e){var t=e.coords,i=e.edges,n=e.interaction,r=e.state,a=r.offset,u=r.options;if(i){var s=(0,D.default)({},t),c=(0,re.getRestrictionRect)(u.inner,n,s)||{},p=(0,re.getRestrictionRect)(u.outer,n,s)||{};fr(c,dr),fr(p,pr),i.top?t.y=Math.min(Math.max(p.top+a.top,s.y),c.top+a.top):i.bottom&&(t.y=Math.max(Math.min(p.bottom+a.bottom,s.y),c.bottom+a.bottom)),i.left?t.x=Math.min(Math.max(p.left+a.left,s.x),c.left+a.left):i.right&&(t.x=Math.max(Math.min(p.right+a.right,s.x),c.right+a.right))}},defaults:{inner:null,outer:null,offset:null,endOnly:!1,enabled:!1}};fe.restrictEdges=hr;var ra=(0,ne.makeModifier)(hr,"restrictEdges");fe.default=ra;var Xe={};Object.defineProperty(Xe,"__esModule",{value:!0}),Xe.restrictRect=Xe.default=void 0;var oa=(0,D.default)({get elementRect(){return{top:0,left:0,bottom:1,right:1}},set elementRect(e){}},re.restrict.defaults),vr={start:re.restrict.start,set:re.restrict.set,defaults:oa};Xe.restrictRect=vr;var aa=(0,ne.makeModifier)(vr,"restrictRect");Xe.default=aa;var Ye={};Object.defineProperty(Ye,"__esModule",{value:!0}),Ye.restrictSize=Ye.default=void 0;var sa={width:-1/0,height:-1/0},la={width:1/0,height:1/0},gr={start:function(e){return fe.restrictEdges.start(e)},set:function(e){var t=e.interaction,i=e.state,n=e.rect,r=e.edges,a=i.options;if(r){var u=K.tlbrToXywh((0,re.getRestrictionRect)(a.min,t,e.coords))||sa,s=K.tlbrToXywh((0,re.getRestrictionRect)(a.max,t,e.coords))||la;i.options={endOnly:a.endOnly,inner:(0,D.default)({},fe.restrictEdges.noInner),outer:(0,D.default)({},fe.restrictEdges.noOuter)},r.top?(i.options.inner.top=n.bottom-u.height,i.options.outer.top=n.bottom-s.height):r.bottom&&(i.options.inner.bottom=n.top+u.height,i.options.outer.bottom=n.top+s.height),r.left?(i.options.inner.left=n.right-u.width,i.options.outer.left=n.right-s.width):r.right&&(i.options.inner.right=n.left+u.width,i.options.outer.right=n.left+s.width),fe.restrictEdges.set(e),i.options=a}},defaults:{min:null,max:null,endOnly:!1,enabled:!1}};Ye.restrictSize=gr;var ca=(0,ne.makeModifier)(gr,"restrictSize");Ye.default=ca;var Ln={};Object.defineProperty(Ln,"__esModule",{value:!0}),Object.defineProperty(Ln,"default",{enumerable:!0,get:function(){return De.default}});var Ee={};Object.defineProperty(Ee,"__esModule",{value:!0}),Ee.snap=Ee.default=void 0;var mr={start:function(e){var t,i=e.interaction,n=e.interactable,r=e.element,a=e.rect,u=e.state,s=e.startOffset,c=u.options,p=c.offsetWithOrigin?function(b){var E=b.interaction.element;return(0,K.rectToXY)((0,K.resolveRectLike)(b.state.options.origin,null,null,[E]))||(0,Oe.default)(b.interactable,E,b.interaction.prepared.name)}(e):{x:0,y:0};if(c.offset==="startCoords")t={x:i.coords.start.page.x,y:i.coords.start.page.y};else{var v=(0,K.resolveRectLike)(c.offset,n,r,[i]);(t=(0,K.rectToXY)(v)||{x:0,y:0}).x+=p.x,t.y+=p.y}var m=c.relativePoints;u.offsets=a&&m&&m.length?m.map(function(b,E){return{index:E,relativePoint:b,x:s.left-a.width*b.x+t.x,y:s.top-a.height*b.y+t.y}}):[{index:0,relativePoint:null,x:t.x,y:t.y}]},set:function(e){var t=e.interaction,i=e.coords,n=e.state,r=n.options,a=n.offsets,u=(0,Oe.default)(t.interactable,t.element,t.prepared.name),s=(0,D.default)({},i),c=[];r.offsetWithOrigin||(s.x-=u.x,s.y-=u.y);for(var p=0;p<a.length;p++)for(var v=a[p],m=s.x-v.x,b=s.y-v.y,E=0,y=r.targets.length;E<y;E++){var P,M=r.targets[E];(P=d.default.func(M)?M(m,b,t._proxy,v,E):M)&&c.push({x:(d.default.number(P.x)?P.x:m)+v.x,y:(d.default.number(P.y)?P.y:b)+v.y,range:d.default.number(P.range)?P.range:r.range,source:M,index:E,offset:v})}for(var x={target:null,inRange:!1,distance:0,range:0,delta:{x:0,y:0}},C=0;C<c.length;C++){var R=c[C],N=R.range,X=R.x-s.x,Z=R.y-s.y,B=(0,be.default)(X,Z),Y=B<=N;N===1/0&&x.inRange&&x.range!==1/0&&(Y=!1),x.target&&!(Y?x.inRange&&N!==1/0?B/N<x.distance/x.range:N===1/0&&x.range!==1/0||B<x.distance:!x.inRange&&B<x.distance)||(x.target=R,x.distance=B,x.range=N,x.inRange=Y,x.delta.x=X,x.delta.y=Z)}return x.inRange&&(i.x=x.target.x,i.y=x.target.y),n.closest=x,x},defaults:{range:1/0,targets:null,offset:null,offsetWithOrigin:!0,origin:null,relativePoints:null,endOnly:!1,enabled:!1}};Ee.snap=mr;var ua=(0,ne.makeModifier)(mr,"snap");Ee.default=ua;var me={};function yr(e,t){(t==null||t>e.length)&&(t=e.length);for(var i=0,n=Array(t);i<t;i++)n[i]=e[i];return n}Object.defineProperty(me,"__esModule",{value:!0}),me.snapSize=me.default=void 0;var br={start:function(e){var t=e.state,i=e.edges,n=t.options;if(!i)return null;e.state={options:{targets:null,relativePoints:[{x:i.left?0:1,y:i.top?0:1}],offset:n.offset||"self",origin:{x:0,y:0},range:n.range}},t.targetFields=t.targetFields||[["width","height"],["x","y"]],Ee.snap.start(e),t.offsets=e.state.offsets,e.state=t},set:function(e){var t,i,n=e.interaction,r=e.state,a=e.coords,u=r.options,s=r.offsets,c={x:a.x-s[0].x,y:a.y-s[0].y};r.options=(0,D.default)({},u),r.options.targets=[];for(var p=0;p<(u.targets||[]).length;p++){var v=(u.targets||[])[p],m=void 0;if(m=d.default.func(v)?v(c.x,c.y,n):v){for(var b=0;b<r.targetFields.length;b++){var E=(t=r.targetFields[b],i=2,function(x){if(Array.isArray(x))return x}(t)||function(x,C){if(typeof Symbol!="undefined"&&Symbol.iterator in Object(x)){var R=[],N=!0,X=!1,Z=void 0;try{for(var B,Y=x[Symbol.iterator]();!(N=(B=Y.next()).done)&&(R.push(B.value),!C||R.length!==C);N=!0);}catch(ue){X=!0,Z=ue}finally{try{N||Y.return==null||Y.return()}finally{if(X)throw Z}}return R}}(t,i)||function(x,C){if(x){if(typeof x=="string")return yr(x,C);var R=Object.prototype.toString.call(x).slice(8,-1);return R==="Object"&&x.constructor&&(R=x.constructor.name),R==="Map"||R==="Set"?Array.from(x):R==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(R)?yr(x,C):void 0}}(t,i)||function(){throw new TypeError(`Invalid attempt to destructure non-iterable instance. +In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}()),y=E[0],P=E[1];if(y in m||P in m){m.x=m[y],m.y=m[P];break}}r.options.targets.push(m)}}var M=Ee.snap.set(e);return r.options=u,M},defaults:{range:1/0,targets:null,offset:null,endOnly:!1,enabled:!1}};me.snapSize=br;var da=(0,ne.makeModifier)(br,"snapSize");me.default=da;var $e={};Object.defineProperty($e,"__esModule",{value:!0}),$e.snapEdges=$e.default=void 0;var wr={start:function(e){var t=e.edges;return t?(e.state.targetFields=e.state.targetFields||[[t.left?"left":"right",t.top?"top":"bottom"]],me.snapSize.start(e)):null},set:me.snapSize.set,defaults:(0,D.default)((0,Me.default)(me.snapSize.defaults),{targets:null,range:null,offset:{x:0,y:0}})};$e.snapEdges=wr;var pa=(0,ne.makeModifier)(wr,"snapEdges");$e.default=pa;var jn={};Object.defineProperty(jn,"__esModule",{value:!0}),Object.defineProperty(jn,"default",{enumerable:!0,get:function(){return De.default}});var Rn={};Object.defineProperty(Rn,"__esModule",{value:!0}),Object.defineProperty(Rn,"default",{enumerable:!0,get:function(){return De.default}});var Ue={};Object.defineProperty(Ue,"__esModule",{value:!0}),Ue.default=void 0;var fa={aspectRatio:qe.default,restrictEdges:fe.default,restrict:re.default,restrictRect:Xe.default,restrictSize:Ye.default,snapEdges:$e.default,snap:Ee.default,snapSize:me.default,spring:jn.default,avoid:Dn.default,transform:Rn.default,rubberband:Ln.default};Ue.default=fa;var $t={};Object.defineProperty($t,"__esModule",{value:!0}),$t.default=void 0;var ha={id:"modifiers",install:function(e){var t=e.interactStatic;for(var i in e.usePlugin(ne.default),e.usePlugin(Yt.default),t.modifiers=Ue.default,Ue.default){var n=Ue.default[i],r=n._defaults,a=n._methods;r._methods=a,e.defaults.perAction[i]=r}}};$t.default=ha;var Ie={};function Er(e){return(Er=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function va(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function xr(e,t){return(xr=Object.setPrototypeOf||function(i,n){return i.__proto__=n,i})(e,t)}function ga(e,t){return!t||Er(t)!=="object"&&typeof t!="function"?zn(e):t}function zn(e){if(e===void 0)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Hn(e){return(Hn=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(e)}Object.defineProperty(Ie,"__esModule",{value:!0}),Ie.PointerEvent=Ie.default=void 0;var ma=function(e){(function(s,c){if(typeof c!="function"&&c!==null)throw new TypeError("Super expression must either be null or a function");s.prototype=Object.create(c&&c.prototype,{constructor:{value:s,writable:!0,configurable:!0}}),c&&xr(s,c)})(u,e);var t,i,n,r,a=(n=u,r=function(){if(typeof Reflect=="undefined"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(s){return!1}}(),function(){var s,c=Hn(n);if(r){var p=Hn(this).constructor;s=Reflect.construct(c,arguments,p)}else s=c.apply(this,arguments);return ga(this,s)});function u(s,c,p,v,m,b){var E;if(function(M,x){if(!(M instanceof x))throw new TypeError("Cannot call a class as a function")}(this,u),(E=a.call(this,m)).type=void 0,E.originalEvent=void 0,E.pointerId=void 0,E.pointerType=void 0,E.double=void 0,E.pageX=void 0,E.pageY=void 0,E.clientX=void 0,E.clientY=void 0,E.dt=void 0,E.eventable=void 0,A.pointerExtend(zn(E),p),p!==c&&A.pointerExtend(zn(E),c),E.timeStamp=b,E.originalEvent=p,E.type=s,E.pointerId=A.getPointerId(c),E.pointerType=A.getPointerType(c),E.target=v,E.currentTarget=null,s==="tap"){var y=m.getPointerIndex(c);E.dt=E.timeStamp-m.pointers[y].downTime;var P=E.timeStamp-m.tapTime;E.double=!!(m.prevTap&&m.prevTap.type!=="doubletap"&&m.prevTap.target===E.target&&P<500)}else s==="doubletap"&&(E.dt=c.timeStamp-m.tapTime);return E}return t=u,(i=[{key:"_subtractOrigin",value:function(s){var c=s.x,p=s.y;return this.pageX-=c,this.pageY-=p,this.clientX-=c,this.clientY-=p,this}},{key:"_addOrigin",value:function(s){var c=s.x,p=s.y;return this.pageX+=c,this.pageY+=p,this.clientX+=c,this.clientY+=p,this}},{key:"preventDefault",value:function(){this.originalEvent.preventDefault()}}])&&va(t.prototype,i),u}(He.BaseEvent);Ie.PointerEvent=Ie.default=ma;var dt={};Object.defineProperty(dt,"__esModule",{value:!0}),dt.default=void 0;var Ut={id:"pointer-events/base",before:["inertia","modifiers","auto-start","actions"],install:function(e){e.pointerEvents=Ut,e.defaults.actions.pointerEvents=Ut.defaults,(0,D.default)(e.actions.phaselessTypes,Ut.types)},listeners:{"interactions:new":function(e){var t=e.interaction;t.prevTap=null,t.tapTime=0},"interactions:update-pointer":function(e){var t=e.down,i=e.pointerInfo;!t&&i.hold||(i.hold={duration:1/0,timeout:null})},"interactions:move":function(e,t){var i=e.interaction,n=e.pointer,r=e.event,a=e.eventTarget;e.duplicate||i.pointerIsDown&&!i.pointerWasMoved||(i.pointerIsDown&&Fn(e),xe({interaction:i,pointer:n,event:r,eventTarget:a,type:"move"},t))},"interactions:down":function(e,t){(function(i,n){for(var r=i.interaction,a=i.pointer,u=i.event,s=i.eventTarget,c=i.pointerIndex,p=r.pointers[c].hold,v=I.getPath(s),m={interaction:r,pointer:a,event:u,eventTarget:s,type:"hold",targets:[],path:v,node:null},b=0;b<v.length;b++){var E=v[b];m.node=E,n.fire("pointerEvents:collect-targets",m)}if(m.targets.length){for(var y=1/0,P=0;P<m.targets.length;P++){var M=m.targets[P].eventable.options.holdDuration;M<y&&(y=M)}p.duration=y,p.timeout=setTimeout(function(){xe({interaction:r,eventTarget:s,pointer:a,event:u,type:"hold"},n)},y)}})(e,t),xe(e,t)},"interactions:up":function(e,t){Fn(e),xe(e,t),function(i,n){var r=i.interaction,a=i.pointer,u=i.event,s=i.eventTarget;r.pointerWasMoved||xe({interaction:r,eventTarget:s,pointer:a,event:u,type:"tap"},n)}(e,t)},"interactions:cancel":function(e,t){Fn(e),xe(e,t)}},PointerEvent:Ie.PointerEvent,fire:xe,collectEventTargets:Sr,defaults:{holdDuration:600,ignoreFrom:null,allowFrom:null,origin:{x:0,y:0}},types:{down:!0,move:!0,up:!0,cancel:!0,tap:!0,doubletap:!0,hold:!0}};function xe(e,t){var i=e.interaction,n=e.pointer,r=e.event,a=e.eventTarget,u=e.type,s=e.targets,c=s===void 0?Sr(e,t):s,p=new Ie.PointerEvent(u,n,r,a,i,t.now());t.fire("pointerEvents:new",{pointerEvent:p});for(var v={interaction:i,pointer:n,event:r,eventTarget:a,targets:c,type:u,pointerEvent:p},m=0;m<c.length;m++){var b=c[m];for(var E in b.props||{})p[E]=b.props[E];var y=(0,Oe.default)(b.eventable,b.node);if(p._subtractOrigin(y),p.eventable=b.eventable,p.currentTarget=b.node,b.eventable.fire(p),p._addOrigin(y),p.immediatePropagationStopped||p.propagationStopped&&m+1<c.length&&c[m+1].node!==p.currentTarget)break}if(t.fire("pointerEvents:fired",v),u==="tap"){var P=p.double?xe({interaction:i,pointer:n,event:r,eventTarget:a,type:"doubletap"},t):p;i.prevTap=P,i.tapTime=P.timeStamp}return p}function Sr(e,t){var i=e.interaction,n=e.pointer,r=e.event,a=e.eventTarget,u=e.type,s=i.getPointerIndex(n),c=i.pointers[s];if(u==="tap"&&(i.pointerWasMoved||!c||c.downTarget!==a))return[];for(var p=I.getPath(a),v={interaction:i,pointer:n,event:r,eventTarget:a,type:u,path:p,targets:[],node:null},m=0;m<p.length;m++){var b=p[m];v.node=b,t.fire("pointerEvents:collect-targets",v)}return u==="hold"&&(v.targets=v.targets.filter(function(E){var y;return E.eventable.options.holdDuration===((y=i.pointers[s])==null?void 0:y.hold.duration)})),v.targets}function Fn(e){var t=e.interaction,i=e.pointerIndex,n=t.pointers[i].hold;n&&n.timeout&&(clearTimeout(n.timeout),n.timeout=null)}var ya=Ut;dt.default=ya;var Gt={};function ba(e){var t=e.interaction;t.holdIntervalHandle&&(clearInterval(t.holdIntervalHandle),t.holdIntervalHandle=null)}Object.defineProperty(Gt,"__esModule",{value:!0}),Gt.default=void 0;var wa={id:"pointer-events/holdRepeat",install:function(e){e.usePlugin(dt.default);var t=e.pointerEvents;t.defaults.holdRepeatInterval=0,t.types.holdrepeat=e.actions.phaselessTypes.holdrepeat=!0},listeners:["move","up","cancel","endall"].reduce(function(e,t){return e["pointerEvents:".concat(t)]=ba,e},{"pointerEvents:new":function(e){var t=e.pointerEvent;t.type==="hold"&&(t.count=(t.count||0)+1)},"pointerEvents:fired":function(e,t){var i=e.interaction,n=e.pointerEvent,r=e.eventTarget,a=e.targets;if(n.type==="hold"&&a.length){var u=a[0].eventable.options.holdRepeatInterval;u<=0||(i.holdIntervalHandle=setTimeout(function(){t.pointerEvents.fire({interaction:i,eventTarget:r,type:"hold",pointer:n,event:n},t)},u))}}})};Gt.default=wa;var Kt={};function Ea(e){return(0,D.default)(this.events.options,e),this}Object.defineProperty(Kt,"__esModule",{value:!0}),Kt.default=void 0;var xa={id:"pointer-events/interactableTargets",install:function(e){var t=e.Interactable;t.prototype.pointerEvents=Ea;var i=t.prototype._backCompatOption;t.prototype._backCompatOption=function(n,r){var a=i.call(this,n,r);return a===this&&(this.events.options[n]=r),a}},listeners:{"pointerEvents:collect-targets":function(e,t){var i=e.targets,n=e.node,r=e.type,a=e.eventTarget;t.interactables.forEachMatch(n,function(u){var s=u.events,c=s.options;s.types[r]&&s.types[r].length&&u.testIgnoreAllow(c,n,a)&&i.push({node:n,eventable:s,props:{interactable:u}})})},"interactable:new":function(e){var t=e.interactable;t.events.getRect=function(i){return t.getRect(i)}},"interactable:set":function(e,t){var i=e.interactable,n=e.options;(0,D.default)(i.events.options,t.pointerEvents.defaults),(0,D.default)(i.events.options,n.pointerEvents||{})}}};Kt.default=xa;var Zt={};Object.defineProperty(Zt,"__esModule",{value:!0}),Zt.default=void 0;var Sa={id:"pointer-events",install:function(e){e.usePlugin(dt),e.usePlugin(Gt.default),e.usePlugin(Kt.default)}};Zt.default=Sa;var pt={};function Pr(e){var t=e.Interactable;e.actions.phases.reflow=!0,t.prototype.reflow=function(i){return function(n,r,a){for(var u=d.default.string(n.target)?U.from(n._context.querySelectorAll(n.target)):[n.target],s=a.window.Promise,c=s?[]:null,p=function(){var m=u[v],b=n.getRect(m);if(!b)return"break";var E=U.find(a.interactions.list,function(C){return C.interacting()&&C.interactable===n&&C.element===m&&C.prepared.name===r.name}),y=void 0;if(E)E.move(),c&&(y=E._reflowPromise||new s(function(C){E._reflowResolve=C}));else{var P=(0,K.tlbrToXywh)(b),M={page:{x:P.x,y:P.y},client:{x:P.x,y:P.y},timeStamp:a.now()},x=A.coordsToEvent(M);y=function(C,R,N,X,Z){var B=C.interactions.new({pointerType:"reflow"}),Y={interaction:B,event:Z,pointer:Z,eventTarget:N,phase:"reflow"};B.interactable=R,B.element=N,B.prevEvent=Z,B.updatePointer(Z,Z,N,!0),A.setZeroCoords(B.coords.delta),(0,se.copyAction)(B.prepared,X),B._doPhase(Y);var ue=C.window.Promise,ye=ue?new ue(function(Wn){B._reflowResolve=Wn}):void 0;return B._reflowPromise=ye,B.start(X,R,N),B._interacting?(B.move(Y),B.end(Z)):(B.stop(),B._reflowResolve()),B.removePointer(Z,Z),ye}(a,n,m,r,x)}c&&c.push(y)},v=0;v<u.length&&p()!=="break";v++);return c&&s.all(c).then(function(){return n})}(this,i,e)}}Object.defineProperty(pt,"__esModule",{value:!0}),pt.install=Pr,pt.default=void 0;var Pa={id:"reflow",install:Pr,listeners:{"interactions:stop":function(e,t){var i=e.interaction;i.pointerType==="reflow"&&(i._reflowResolve&&i._reflowResolve(),U.remove(t.interactions.list,i))}}};pt.default=Pa;var ce={exports:{}};function kr(e){return(kr=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}Object.defineProperty(ce.exports,"__esModule",{value:!0}),ce.exports.default=void 0,ie.default.use(We.default),ie.default.use(Ae.default),ie.default.use(Zt.default),ie.default.use(Ne.default),ie.default.use($t.default),ie.default.use(Mt.default),ie.default.use(St.default),ie.default.use(we.default),ie.default.use(pt.default),ie.default.use(At.default);var ka=ie.default;if(ce.exports.default=ka,kr(ce)==="object"&&ce)try{ce.exports=ie.default}catch(e){}ie.default.default=ie.default,ce=ce.exports;var Le={exports:{}};function _r(e){return(_r=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}Object.defineProperty(Le.exports,"__esModule",{value:!0}),Le.exports.default=void 0;var _a=ce.default;if(Le.exports.default=_a,_r(Le)==="object"&&Le)try{Le.exports=ce.default}catch(e){}return ce.default.default=ce.default,Le.exports})});Da(exports,{default:()=>on,genId:()=>Jn});function te(f,o){let l=Object.keys(o).map(h=>La(f,h,o[h]));return l.length===1?l[0]:function(){l.forEach(h=>h())}}function La(f,o,l){let h=f[o],g=f.hasOwnProperty(o),d=g?h:function(){return Object.getPrototypeOf(f)[o].apply(this,arguments)},w=l(d);return h&&Object.setPrototypeOf(w,h),Object.setPrototypeOf(k,w),f[o]=k,S;function k(...O){return w===d&&f[o]===k&&S(),w.apply(this,O)}function S(){f[o]===k&&(g?f[o]=d:delete f[o]),w!==d&&(w=d,Object.setPrototypeOf(k,h||Function))}}var V=Ge(require("obsidian"));var _e=Ge(require("obsidian"));var W=Ge(require("obsidian"));function Vn(f){let o=Cr(),[l,h]=o(f);if(!l)return!1;if(h||(h="px"),["em","ex","ch","rem","vw","vh","vmin","vmax","%","cm","mm","in","px","pt","pc"].contains(h))return l+h}function de(f,o){var l;return f instanceof o||((l=f==null?void 0:f.instanceOf)==null?void 0:l.call(f,o))}var Ar=10,Nn=60;function Ke(f){let o=f.body.querySelector(".app-container, .workspace-split"),l=f.body.querySelector(".mod-left.workspace-ribbon"),h=o.offsetTop,g=f.body.hasClass("hider-ribbon")?0:l?l.offsetWidth:0;return{top:h,left:g}}function ja(f){let o=f.getAttribute("data-orig-height"),l=f.getAttribute("data-orig-width"),h=parseFloat(f.getAttribute("data-orig-pos-left")||"0"),g=parseFloat(f.getAttribute("data-orig-pos-top")||"0"),d=Ke(f.ownerDocument).top;return g<d&&(g=d),{height:o,width:l,top:g,left:h}}function Ze(f,o){let{height:l,width:h,top:g,left:d}=ja(f);o||(f.removeAttribute("data-orig-width"),f.removeAttribute("data-orig-height"),f.removeAttribute("data-orig-pos-left"),f.removeAttribute("data-orig-pos-top")),h&&(f.style.width=h+"px"),l&&(f.style.height=l+"px"),g&&(f.style.top=g+"px",f.setAttribute("data-y",String(g))),d&&(f.style.left=d+"px")}function Qt(f){if(f.hasClass("snap-to-viewport")){f.removeClass("snap-to-viewport"),Ze(f);return}}function Bn(f,o){let l=f.querySelector(".view-content").offsetHeight;l=o?-l:l;let h=parseFloat(f.getAttribute("data-y")||"0")+l;f.style.top=h+"px",f.setAttribute("data-y",String(h))}function ft(f){f.hasAttribute("data-orig-width")||f.setAttribute("data-orig-width",String(f.offsetWidth)),f.hasAttribute("data-orig-height")||f.setAttribute("data-orig-height",String(f.offsetHeight)),f.hasAttribute("data-orig-pos-left")||f.setAttribute("data-orig-pos-left",String(parseFloat(f.style.left))),f.hasAttribute("data-orig-pos-top")||f.setAttribute("data-orig-pos-top",String(parseFloat(f.style.top)))}function Dr(f){return f.hasAttribute("data-orig-width")&&f.hasAttribute("data-orig-height")&&f.hasAttribute("data-orig-pos-left")&&f.hasAttribute("data-orig-pos-top")}function qn(f){let o=f.target,l=f.client.x-f.rect.left,h=f.rect.width,g=l/h,d=o.offsetWidth,w=String(f.client.x-g*d),k=String(f.client.y);o.setAttribute("data-x",String(w)),o.setAttribute("data-y",String(k))}function je(f,o,l){f.addClass(`snap-to-${o}`),f.style.top=l.top+"px",f.style.height=`calc(100vh - ${l.top}px)`,f.style.left=o==="right"?"unset":l.left+"px",o==="viewport"&&(f.style.width=`calc(100vw - ${l.left}px)`)}function Ir(f){let o=f.target,{x:l,y:h}=o.dataset;if(l=l||o.style.left,h=h||o.style.top,l=String((parseFloat(l)||0)+f.dx),h=String((parseFloat(h)||0)+f.dy),this.plugin.settings.snapToEdges){let g,d=o.ownerDocument,w=f.client.x<Ar,k=f.client.x>d.body.offsetWidth-Ar,S=f.client.y<30;if((w||k||S)&&(g=Ke(d),ft(o)),w&&f.buttons){je(o,"left",g);return}else if(k&&f.buttons){je(o,"right",g);return}else if(S&&f.buttons){je(o,"viewport",g);return}else if(o.hasClass("snap-to-viewport")){if(f.client.y<Nn)return;o.removeClass("snap-to-viewport"),Ze(o),qn(f);return}else if(o.hasClass("snap-to-left")){if(f.client.y<Nn)return;o.removeClass("snap-to-left"),Ze(o),qn(f);return}else if(o.hasClass("snap-to-right")){if(f.client.y<Nn)return;o.removeClass("snap-to-right"),Ze(o),qn(f);return}}o.style.top=h?h+"px":o.style.top,o.style.left=l?l+"px":o.style.left,o.setAttribute("data-x",String(l)),o.setAttribute("data-y",String(h))}var Lr=["left","right","viewport"],jr=(f,o)=>{var h;let l=(h=$.activePopover)==null?void 0:h.hoverEl;if(l&&de(l,HTMLElement)){if(!o){Dr(l)?Ze(l,!0):ft(l),l.removeClasses(["snap-to-left","snap-to-right","snap-to-viewport"]);let g=Ke(l.ownerDocument);je(l,f,g)}return!0}return!1},Rr=f=>{var l;let o=(l=$.activePopover)==null?void 0:l.hoverEl;return o&&de(o,HTMLElement)?(f||Dr(o)&&(o.removeClasses(["snap-to-left","snap-to-right","snap-to-viewport"]),Ze(o)),!0):!1},zr=f=>{var h;let o=(h=$.activePopover)==null?void 0:h.hoverEl,l=$.activePopovers().find(g=>g.hoverEl===o);return l?(f||l.toggleMinimized(),!0):!1};var Se=Ge(require("obsidian"));var Xn="use.me",Yn="use.factory",Je,ht,$n=function(){return Object.defineProperties(f(),{this:{get(){if(Je)return Je;throw new TypeError("No current context")}},me:{value:Xn},factory:{value:Yn}});function f(g){let d=new Map;d.prev=g;let w=Object.assign(g?S=>{let O=d.get(S);if(!O){for(let j=d.prev;j;j=j.prev)if(O=j.get(S)){O=Object.assign(Object.assign({},O),{s:O.s||1});break}O=O||{s:2,v:l},d.set(S,O)}let T,_,H;for(;;)switch(O.s){case 0:return Je===w&&ht&&ht.push(S),O.v;case 1:if(T=O.d,!T||k(()=>T.k.every(j=>w(j)===T.c(j)))){O.s=0;break}O.v=T.f;case 2:O.s=4;try{o(d,S,0,k(_=O.v,S,H=[])),H.length&&(O.d={c:w,f:_,k:H});break}catch(j){O.s=3,O.v=j,O.d=null}case 3:throw O.v;case 4:throw new Error(`Factory ${String(O.v)} didn't resolve ${String(S)}`)}}:S=>$n.this(S),{def(S,O){return o(d,S,2,O),w},set(S,O){return o(d,S,1,O),w},fork(S){let O=f(d);return S!=null?O(S):O}});return g?w.use=w:w;function k(S,O,T){let _=Je,H=ht;try{return Je=w,ht=T,S(O)}finally{Je=_,ht=H}}}function o(g,d,w,k){if(g.has(d)){let S=g.get(d);if(!S.s)throw new Error(`Already read: ${String(d)}`);S.s=w,S.v=k,S.d=null}else g.set(d,{s:w,v:k})}function l(g){if(typeof g[Xn]=="function")return g[Xn](g);if(h(g))return typeof g.prototype[Yn]=="function"?g.prototype[Yn]():new g;throw new ReferenceError(`No config for ${String(g)}`)}function h(g){return typeof g=="function"&&g.prototype!==void 0&&(Object.getPrototypeOf(g.prototype)!==Object.prototype||Object.getOwnPropertyNames(g.prototype).length>1||g.toString().startsWith("class"))}}();var os=new Set(["__proto__","prototype","constructor"]);var Ra=(f=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(f,{get:(o,l)=>(typeof require!="undefined"?require:o)[l]}):f)(function(f){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+f+'" is not supported')});var Qe=typeof queueMicrotask=="function"?queueMicrotask:(f=>o=>f.then(o))(Promise.resolve());var za=2,ps=4|za;var Pe;(f=>{try{Object.assign(f,Ra("obsidian"))}catch(o){}})(Pe||(Pe={}));var ae,Un=(f=>(f.service=function o(o){return f(Hr).addChild(o),f.this},f.plugin=function o(o){if(!Re)ae=o.app,Re=f.fork(),Re.set(Pe.Plugin,o),Re.set(o.constructor,o),o.addChild(Re.use(Hr));else if(o!==Re.use(Pe.Plugin))throw new TypeError("use.plugin() called on multiple plugins");return Re},f.def(Pe.Plugin,()=>{throw new Error("Plugin not created yet")}),f.def(Pe.App,()=>f(Pe.Plugin).app),f))($n),Re;var Ha=class extends Se.Component{constructor(){super(...arguments);this.use=Un.service(this)}},Hr=class extends Se.Component{constructor(){super(...arguments);this.children=new Set([this])}onload(){this.loaded=!0}onunload(){this.loaded=!1,this.children.clear()}addChild(f){return this.children.has(f)||(this.children.add(f),this.loaded?Qe(()=>super.addChild(f)):super.addChild(f)),f}};function Gn(f,o){Qe(()=>f.removeChild(o))}function Fa(f,o){let l=new Pe.Component;l.onload=()=>{Gn(f,l),f=null,o()},f.addChild(l)}function Wa(f){let o=ae.workspace;switch(f==null?void 0:f.getRoot()){case o.rootSplit:case o.floatingSplit:case o.leftSplit:case o.rightSplit:return!0;default:return!1}}var Fr=class extends Se.Component{constructor(f,o){super();this.use=f,this.container=o,this.win=this.container.win}"use.factory"(){return new Va(this.constructor)}static onload(f){}static onunload(f){}},Va=class extends Ha{constructor(f){super();this.factory=f,this.instances=new Map,this.watching=!1,this.layoutReadyCallbacks=[]}onload(){var f,o;this.registerEvent(ae.workspace.on("layout-change",()=>{ae.workspace.layoutReady&&this.layoutReadyCallbacks.length&&(this.layoutReadyCallbacks.forEach(Qe),this.layoutReadyCallbacks=[])})),(o=(f=this.factory).onload)==null||o.call(f,this.use)}onLeafChange(f,o){return this.onLayoutReady(()=>f.call(o,ae.workspace.activeLeaf)),ae.workspace.on("active-leaf-change",l=>{ae.workspace.layoutReady&&f.call(o,l)})}onLayoutReady(f){ae.workspace.layoutReady?Qe(f):this.layoutReadyCallbacks.push(f)}onunload(){var f,o;(o=(f=this.factory).onunload)==null||o.call(f,this.use)}watch(){if(!this._loaded)Fa(this,()=>this.watch());else if(!this.watching){let{workspace:f}=ae,o=this;this.watching=!0,this.registerEvent(f.on("window-open",l=>{this.onLayoutReady(()=>this.forContainer(l))})),this.register(te(f,{clearLayout(l){return async function(){try{return await l.call(this)}finally{o.onLayoutReady(()=>o.forAll())}}}})),this.onLayoutReady(()=>this.forAll())}return this}forWindow(f=(l=>(l=window.activeWindow)!=null?l:window)(),o=!0){let l=qa(f);if(l)return this.forContainer(l,o)}forContainer(f,o=!0){f=f.getContainer();let l=this.instances.get(f);return!l&&o&&(l=new this.factory(this.use,f),l&&(this.instances.set(f,l),this.addChild(l),f.component.addChild(l),l.register(()=>{Gn(this,l),Gn(f.component,l),this.instances.delete(f)}))),l}forDom(f,o=!0){return this.forWindow(Ba(f),o)}forLeaf(f=ae.workspace.activeLeaf,o=!0){if(Wa(f))return this.forContainer(f.getContainer(),o)}forView(f,o=!0){return this.forLeaf(f.leaf,o)}forAll(f=!0){return Na().map(o=>this.forContainer(o,f)).filter(o=>o)}};function Na(){return[ae.workspace.rootSplit].concat(ae.workspace.floatingSplit.children)}function Ba(f){return f.win||(f.ownerDocument||f).defaultView||window}function qa(f){if(f===window)return ae.workspace.rootSplit;let{floatingSplit:o}=ae.workspace;if(o){for(let l of o.children)if(f===l.win)return l}}var en=new WeakMap,ke={x:0,y:0};function Xa(f){let o=function(){return Object.setPrototypeOf(new W.Component,new.target.prototype)};return o.prototype=f.prototype,Object.setPrototypeOf(o,f)}var Kn=new WeakMap,Nr,Br,qr,Xr,$=class extends Xa(W.HoverPopover){constructor(o,l,h,g,d){super();this.targetEl=l;this.plugin=h;this.onShowCallback=d;this.isPinned=this.plugin.settings.autoPin==="always";this.abortController=this.addChild(new W.Component);this.detaching=!1;this.opening=!1;this.rootSplit=new W.WorkspaceSplit(window.app.workspace,"vertical");this.targetRect=Vr(this.targetEl);this.oldPopover=(Nr=this.parent)==null?void 0:Nr.hoverPopover;this.document=Ua((Xr=(qr=(Br=this.targetEl)==null?void 0:Br.win)!=null?qr:activeWindow)!=null?Xr:window).document;this.interactStatic=this.plugin.interact.forDom(this.document.body).interact;this.id=Jn(8);this.hoverEl=this.document.defaultView.createDiv({cls:"popover hover-popover",attr:{id:"he"+this.id}});this.activate=(0,W.debounce)(()=>{let{win:o}=this.document,l=Kn.get(o);l||Kn.set(o,l=new Set),l.delete(this),l.add(this),o.requestAnimationFrame(()=>{let h=41;Array.from(l).reverse().forEach(g=>{g.hoverEl.style.setProperty("--he-popover-layer-inactive",""+h),h>31&&h--})})},100);g===void 0&&(g=300),this.onTarget=!0,this.onHover=!1,this.shownPos=null,this.parent=o,this.waitTime=g,this.state=W.PopoverState.Showing;let{hoverEl:w}=this;this.onMouseIn=this._onMouseIn.bind(this),this.onMouseOut=this._onMouseOut.bind(this),this.abortController.load(),l&&(l.addEventListener("mouseover",this.onMouseIn),l.addEventListener("mouseout",this.onMouseOut)),w.addEventListener("mouseover",S=>{tn(S,w)&&(this.onHover=!0,this.onTarget=!1,this.transition())}),w.addEventListener("mouseout",S=>{tn(S,w)&&(this.onHover=!1,this.onTarget=!1,this.transition())}),this.timer=window.setTimeout(this.show.bind(this),g),this.document.addEventListener("mousemove",gt),en.set(this.hoverEl,this),this.hoverEl.addClass("hover-editor"),this.containerEl=this.hoverEl.createDiv("popover-content"),this.buildWindowControls(),this.setInitialDimensions();let k=this.pinEl=this.document.defaultView.createEl("a","popover-header-icon mod-pin-popover");this.titleEl.prepend(this.pinEl),k.onclick=()=>{this.togglePin()},(0,W.setIcon)(k,"lucide-pin"),this.createResizeHandles(),this.plugin.settings.imageZoom&&this.registerZoomImageHandlers()}static activeWindows(){let o=[window],{floatingSplit:l}=app.workspace;if(l)for(let h of l.children)h.win&&o.push(h.win);return o}static containerForDocument(o){if(o!==document&&app.workspace.floatingSplit){for(let l of app.workspace.floatingSplit.children)if(l.doc===o)return l}return app.workspace.rootSplit}static activePopovers(){return this.activeWindows().flatMap(this.popoversForWindow)}static popoversForWindow(o){var l,h;return Array.prototype.slice.call((h=(l=o==null?void 0:o.document)==null?void 0:l.body.querySelectorAll(".hover-popover"))!=null?h:[]).map(g=>en.get(g)).filter(g=>g)}static forLeaf(o){let l=o&&document.body.matchParent.call(o.containerEl,".hover-popover");return l?en.get(l):void 0}static iteratePopoverLeaves(o,l){for(let h of this.activePopovers())if(h.rootSplit&&o.iterateLeaves(l,h.rootSplit))return!0;return!1}adopt(o){if(this.targetEl===o)return!0;let l=Vr(o);if(Wr(this.targetRect,l)){this.targetEl.removeEventListener("mouseover",this.onMouseIn),this.targetEl.removeEventListener("mouseout",this.onMouseOut),o.addEventListener("mouseover",this.onMouseIn),o.addEventListener("mouseout",this.onMouseOut),this.targetEl=o,this.targetRect=l;let{x:h,y:g}=ke;return this.onTarget=Wr(l,{left:h,right:h,top:g,bottom:g}),this.transition(),!0}else this.onTarget=!1,this.transition();return!1}onZoomOut(){this.document.body.removeEventListener("mouseup",this.boundOnZoomOut),this.document.body.removeEventListener("dragend",this.boundOnZoomOut),this.hoverEl.hasClass("do-not-restore")?this.hoverEl.removeClass("do-not-restore"):Qt(this.hoverEl)}onZoomIn(o){if(o.button!==0)return;this.hoverEl.hasClass("snap-to-viewport")&&this.hoverEl.addClass("do-not-restore"),this.document.body.addEventListener("mouseup",this.boundOnZoomOut,{once:!0}),this.document.body.addEventListener("dragend",this.boundOnZoomOut,{once:!0});let l=Ke(this.document);return ft(this.hoverEl),je(this.hoverEl,"viewport",l),!1}registerZoomImageHandlers(){this.hoverEl.addClass("image-zoom"),this.boundOnZoomOut=this.onZoomOut.bind(this),this.hoverEl.on("mousedown","img",this.onZoomIn.bind(this))}togglePin(o){var l;this.activate(),o===void 0&&(o=!this.isPinned),o&&((l=this.abortController)==null||l.unload()),this.hoverEl.toggleClass("is-pinned",o),this.pinEl.toggleClass("is-active",o),this.isPinned=o}getDefaultMode(){var o,l;return((l=(o=this.parent)==null?void 0:o.view)==null?void 0:l.getMode)?this.parent.view.getMode():"preview"}updateLeaves(){this.onTarget&&this.targetEl&&!this.targetEl.isConnected&&(this.onTarget=!1,this.transition());let o=0;this.plugin.app.workspace.iterateLeaves(l=>{o++},this.rootSplit),o===0?this.hide():o>1&&this.toggleConstrainAspectRatio(!1),this.hoverEl.setAttribute("data-leaf-count",o.toString())}get headerHeight(){let o=this.hoverEl;return this.titleEl.getBoundingClientRect().bottom-o.getBoundingClientRect().top}toggleMinimized(){var h;this.activate();let o=this.hoverEl,l=this.headerHeight;if(!o.hasAttribute("data-restore-height"))this.plugin.settings.rollDown&&Bn(o,!1),o.setAttribute("data-restore-height",String(o.offsetHeight)),o.style.minHeight=l+"px",o.style.maxHeight=l+"px",o.toggleClass("is-minimized",!0);else{let g=o.getAttribute("data-restore-height");g&&(o.removeAttribute("data-restore-height"),o.style.height=g+"px"),o.style.removeProperty("max-height"),o.toggleClass("is-minimized",!1),this.plugin.settings.rollDown&&Bn(o,!0)}(h=this.interact)==null||h.reflow({name:"drag",axis:"xy"})}attachLeaf(){this.rootSplit.getRoot=()=>app.workspace[this.document===document?"rootSplit":"floatingSplit"],this.rootSplit.getContainer=()=>$.containerForDocument(this.document),this.titleEl.insertAdjacentElement("afterend",this.rootSplit.containerEl);let o=te(this.plugin.app.workspace,{setActiveLeaf(){return()=>{}}}),l;try{l=this.plugin.app.workspace.createLeafInParent(this.rootSplit,0)}finally{o()}return this.updateLeaves(),l}onload(){super.onload(),this.registerEvent(this.plugin.app.workspace.on("layout-change",this.updateLeaves,this)),this.registerEvent(app.workspace.on("layout-change",()=>{this.rootSplit.children.forEach((o,l)=>{o instanceof W.WorkspaceTabs&&this.rootSplit.replaceChild(l,o.children[0])})}))}leaves(){let o=[];return this.plugin.app.workspace.iterateLeaves(l=>{o.push(l)},this.rootSplit),o}setInitialDimensions(){this.hoverEl.style.height=this.plugin.settings.initialHeight,this.hoverEl.style.width=this.plugin.settings.initialWidth}adjustHeight(o){this.hoverEl.style.height=this.hoverEl.offsetHeight+o+"px"}toggleViewHeader(o,l){var d;this.activate(),o===void 0&&(o=!this.hoverEl.hasClass("show-navbar")),(d=this.hideNavBarEl)==null||d.toggleClass("is-active",o),this.hoverEl.toggleClass("show-navbar",o);let h=this.hoverEl.querySelector(".view-header");if(!h||l)return;let g=parseFloat(getComputedStyle(h).getPropertyValue("--he-view-header-height"));this.hoverEl.style.transition="height 0.2s",this.adjustHeight(o?g:-g),setTimeout(()=>{this.hoverEl.style.removeProperty("transition"),this.requestLeafMeasure()},200)}buildWindowControls(){this.titleEl=this.document.defaultView.createDiv("popover-titlebar"),this.titleEl.createDiv("popover-title");let o=this.titleEl.createDiv("popover-actions"),l=this.hideNavBarEl=o.createEl("a","popover-action mod-show-navbar");(0,W.setIcon)(l,"sidebar-open"),l.addEventListener("click",w=>{this.toggleViewHeader()}),this.plugin.settings.showViewHeader&&this.toggleViewHeader(!0,!0);let h=o.createEl("a","popover-action mod-minimize");(0,W.setIcon)(h,"minus"),h.addEventListener("click",w=>{Qt(this.hoverEl),this.toggleMinimized()});let g=o.createEl("a","popover-action mod-maximize");(0,W.setIcon)(g,"maximize"),g.addEventListener("click",w=>{if(this.activate(),this.hoverEl.hasClass("snap-to-viewport")){(0,W.setIcon)(g,"maximize"),Qt(this.hoverEl);return}(0,W.setIcon)(g,"minimize");let k=Ke(this.document);ft(this.hoverEl),je(this.hoverEl,"viewport",k)});let d=o.createEl("a","popover-action mod-close");(0,W.setIcon)(d,"x"),d.addEventListener("click",w=>{this.hide()}),this.containerEl.prepend(this.titleEl)}requestLeafMeasure(){this.leaves().forEach(o=>o.onResize())}onShow(){var l,h;let{closeDelay:o}=this.plugin.settings;setTimeout(()=>this.waitTime=o,o),(l=this.oldPopover)==null||l.hide(),this.oldPopover=null,this.activate(),this.hoverEl.toggleClass("is-new",!0),this.document.body.addEventListener("click",()=>{this.hoverEl.toggleClass("is-new",!1)},{once:!0,capture:!0}),this.parent&&(this.parent.hoverPopover=this),(0,W.requireApiVersion)("0.15.1")&&!(0,W.requireApiVersion)("0.15.7")&&app.workspace.iterateLeaves(g=>{var d,w;g.view instanceof W.MarkdownView&&((w=(d=g.view.editMode).reinit)==null||w.call(d))},this.rootSplit),this.togglePin(this.isPinned),(h=this.onShowCallback)==null||h.call(this),this.onShowCallback=void 0}startBounce(){this.bounce=setTimeout(()=>{this.hoverEl.style.left=parseFloat(this.hoverEl.style.left)+this.xspeed+"px",this.hoverEl.style.top=parseFloat(this.hoverEl.style.top)+this.yspeed+"px",this.checkHitBox(),this.startBounce()},20)}toggleBounce(){if(this.xspeed=7,this.yspeed=7,this.bounce){clearTimeout(this.bounce),this.bounce=void 0;let o=this.hoverEl.querySelector(".view-content");(o==null?void 0:o.style)&&o.style.removeProperty("backgroundColor")}else this.startBounce()}checkHitBox(){let o=parseFloat(this.hoverEl.style.left),l=parseFloat(this.hoverEl.style.top),h=parseFloat(this.hoverEl.style.width),g=parseFloat(this.hoverEl.style.height);(o<=0||o+h>=this.document.body.offsetWidth)&&(this.xspeed*=-1,this.pickColor()),(l<=0||l+g>=this.document.body.offsetHeight)&&(this.yspeed*=-1,this.pickColor())}pickColor(){let o=Math.random()*(254-0)+0,l=Math.random()*(254-0)+0,h=Math.random()*(254-0)+0,g=this.hoverEl.querySelector(".view-content");(g==null?void 0:g.style)&&(g.style.backgroundColor="rgb("+o+","+l+", "+h+")")}transition(){this.shouldShow()?this.state===W.PopoverState.Hiding&&(this.state=W.PopoverState.Shown,clearTimeout(this.timer)):this.state===W.PopoverState.Showing?this.hide():this.state===W.PopoverState.Shown&&(this.state=W.PopoverState.Hiding,this.timer=window.setTimeout(()=>{this.shouldShow()?this.transition():this.hide()},this.waitTime))}detect(o){let{targetEl:l,hoverEl:h}=this;l&&(this.onTarget=o===l||l.contains(o)),this.onHover=o===h||h.contains(o)}_onMouseIn(o){this.targetEl&&!tn(o,this.targetEl)||(this.onTarget=!0,this.transition())}_onMouseOut(o){this.targetEl&&!tn(o,this.targetEl)||(this.onTarget=!1,this.transition())}position(o){o===void 0&&(o=this.shownPos);let l;if(o)l={top:o.y-10,bottom:o.y+10,left:o.x,right:o.x};else if(this.targetEl){let h=$a(this.targetEl,this.document.body);l={top:h.top,bottom:h.top+this.targetEl.offsetHeight,left:h.left,right:h.left+this.targetEl.offsetWidth}}else l={top:0,bottom:0,left:0,right:0};this.document.body.appendChild(this.hoverEl),Ya(l,this.hoverEl,{gap:10},this.document),o&&setTimeout(()=>{let h=parseFloat(this.hoverEl.style.left),g=parseFloat(this.hoverEl.style.top);this.hoverEl.setAttribute("data-x",String(h)),this.hoverEl.setAttribute("data-y",String(g))},0)}shouldShow(){return this.shouldShowSelf()||this.shouldShowChild()}shouldShowChild(){return $.activePopovers().some(o=>o!==this&&o.targetEl&&this.hoverEl.contains(o.targetEl)?o.shouldShow():!1)}shouldShowSelf(){return!this.detaching&&!!(this.onTarget||this.onHover||this.state==W.PopoverState.Shown&&this.isPinned||this.document.querySelector(`body>.modal-container, body > #he${this.id} ~ .menu, body > #he${this.id} ~ .suggestion-container`))}calculateMinSize(){return{width:40,height:this.headerHeight}}calculateBoundaries(o,l,h){let g=h.element.closest("body"),d=(g==null?void 0:g.querySelector(".workspace"))||(g==null?void 0:g.querySelector(".workspace-window"));return d==null?void 0:d.getBoundingClientRect()}calculateMaxSize(o,l,h){return{width:this.document.body.offsetWidth,height:this.document.body.offsetHeight}}toggleConstrainAspectRatio(o,l){let h=this.resizeModifiers.find(g=>g.name=="aspectRatio");!h||(o===void 0&&(o=!h.options.enabled),o?(h.enable(),this.constrainAspectRatio=!0,l!==void 0&&h.options.ratio!==l&&(h.options.ratio=l)):(h.disable(),this.constrainAspectRatio=!1))}registerInteract(){var O,T;let o=this.document.querySelector("div.app-container, div.workspace-split"),l=this,h=function(_,H,j){let{top:q,right:L,bottom:F,left:J,x:le,y:G,width:Q,height:an}=o.getBoundingClientRect(),I={top:q,right:L,bottom:F,left:J,x:le,y:G,width:Q,height:an};return j.pointerType==="reflow"?l.dragElementRect.bottom=1:l.dragElementRect.bottom=0,l.plugin.settings.snapToEdges&&(I.top=q-30),I.bottom=F-l.headerHeight,I},g=!0,d,w=((O=this.hoverEl.dataset)==null?void 0:O.imgRatio)?parseFloat((T=this.hoverEl.dataset)==null?void 0:T.imgRatio):void 0;this.resizeModifiers=[this.interactStatic.modifiers.restrictEdges({outer:l.calculateBoundaries.bind(this)}),this.interactStatic.modifiers.restrictSize({min:l.calculateMinSize.bind(this),max:l.calculateMaxSize.bind(this)}),this.interactStatic.modifiers.aspectRatio({ratio:w||"preserve",enabled:!1})],this.dragElementRect={top:0,left:1,bottom:0,right:0};let k=[this.interactStatic.modifiers.restrict({restriction:h,offset:{top:0,left:40,bottom:0,right:40},elementRect:this.dragElementRect,endOnly:!1})];this.constrainAspectRatio&&w!==void 0&&this.toggleConstrainAspectRatio(!0,w);let S=this.interactStatic(this.hoverEl).preventDefault("always").on("doubletap",this.onDoubleTap.bind(this)).draggable({modifiers:k,allowFrom:".popover-titlebar",listeners:{start(_){_.buttons&&l.togglePin(!0),_.buttons&&de(_.target,HTMLElement)&&(_.target.addClass("is-dragging"),l.activate())},end(_){de(_.target,HTMLElement)&&_.target.removeClass("is-dragging"),l.requestLeafMeasure()},move:Ir.bind(l)}}).resizable({edges:{top:".top-left, .top-right, .top",left:".top-left, .bottom-left, .left",bottom:".bottom-left, .bottom-right, .bottom",right:".top-right, .bottom-right, .right"},modifiers:this.resizeModifiers,listeners:{start(_){var L;let H=_.target;l.activate(),H.style.removeProperty("max-height");let j=(L=l.hoverEl.querySelector(".view-header"))==null?void 0:L.offsetHeight;d=l.titleEl.offsetHeight+j,g=!0,_.buttons&&l.togglePin(!0)},move:function(_){var J,le,G;if(!(_==null?void 0:_.deltaRect)||!_.edges)return;let{target:H}=_,{x:j,y:q}=H.dataset,L=_.rect.height,F=_.rect.width;j=j||H.style.left,q=q||H.style.top,j=String((parseFloat(j)||0)+((J=_.deltaRect)==null?void 0:J.left)),q=String((parseFloat(q)||0)+((le=_.deltaRect)==null?void 0:le.top)),l.constrainAspectRatio&&w&&_.buttons!==void 0?(g&&(_.edges.top&&(_.edges.right||_.edges.left)?q=String(parseFloat(q)-d):_.edges.top?j=String(parseFloat(j)+d*w):_.edges.left&&!(_.edges.top||_.edges.bottom)&&(q=String(parseFloat(q)-d))),g=!1,(_.edges.top&&!(_.edges.right||_.edges.left)||_.edges.bottom&&!(_.edges.right||_.edges.left))&&(L=L-d,F=F-d*w),L=L+d,(H.hasClass("snap-to-left")||H.hasClass("snap-to-right"))&&(q=String(parseFloat(H.style.top)),j=String(parseFloat(H.style.left)))):w&&L>((G=this==null?void 0:this.document)==null?void 0:G.body.offsetHeight)&&(L=L/1.5,F=L*w),Object.assign(H.style,{width:`${F}px`,height:`${L}px`,top:`${q}px`,left:j==="NaN"?"unset":`${j}px`}),Object.assign(H.dataset,{x:j,y:q})},end:function(_){_.rect.height>l.headerHeight&&_.target.removeAttribute("data-restore-height"),S.reflow({name:"drag",axis:"xy"})}}});this.interact=S}createResizeHandles(){this.hoverEl.createDiv("resize-handle bottom-left"),this.hoverEl.createDiv("resize-handle bottom-right"),this.hoverEl.createDiv("resize-handle top-left"),this.hoverEl.createDiv("resize-handle top-right"),this.hoverEl.createDiv("resize-handle right"),this.hoverEl.createDiv("resize-handle left"),this.hoverEl.createDiv("resize-handle bottom"),this.hoverEl.createDiv("resize-handle top")}onDoubleTap(o){o.target.tagName==="DIV"&&o.target.closest(".popover-titlebar")&&(o.preventDefault(),this.togglePin(!0),this.toggleMinimized())}show(){var o,l;!this.targetEl||this.targetEl.isConnected?(this.state=W.PopoverState.Shown,this.timer=0,this.shownPos=ke,this.position(ke),this.document.removeEventListener("mousemove",gt),this.onShow(),app.workspace.onLayoutChange(),this.load()):this.hide(),this.hoverEl.dataset.imgHeight&&this.hoverEl.dataset.imgWidth&&(this.hoverEl.style.height=parseFloat(this.hoverEl.dataset.imgHeight)+this.titleEl.offsetHeight+"px",this.hoverEl.style.width=parseFloat(this.hoverEl.dataset.imgWidth)+"px"),this.registerInteract(),(o=this.interact)==null||o.reflow({name:"resize",edges:{right:!0,bottom:!0}}),(l=this.interact)==null||l.reflow({name:"drag",axis:"xy"})}onHide(){var o;this.oldPopover=null,((o=this.parent)==null?void 0:o.hoverPopover)===this&&(this.parent.hoverPopover=null)}hide(){var l,h,g;if(this.onTarget=this.onHover=!1,this.isPinned=!1,this.detaching=!0,(l=Kn.get(this.document.win))==null||l.delete(this),this.document.removeEventListener("mousemove",gt),this.timer&&(clearTimeout(this.timer),this.timer=0),this.hoverEl.hide(),this.opening)return;let o=this.leaves();if(o.length)o.forEach(d=>{d.view instanceof W.MarkdownView&&!this._loaded&&(d.view.onMarkdownFold=()=>null),d.detach(),d===app.workspace.activeLeaf&&(app.workspace.activeLeaf=null)});else return this.parent=null,((h=this.interact)==null?void 0:h.unset)&&this.interact.unset(),(g=this.abortController)==null||g.unload(),this.abortController=void 0,this.interact=void 0,this.nativeHide()}nativeHide(){var h;let{hoverEl:o,targetEl:l}=this;if(this.state=W.PopoverState.Hidden,o.detach(),l){let g=l.matchParent(".hover-popover");g&&((h=en.get(g))==null||h.transition()),l.removeEventListener("mouseover",this.onMouseIn),l.removeEventListener("mouseout",this.onMouseOut)}this.onHide(),this.unload()}resolveLink(o,l){let h=(0,W.parseLinktext)(o);return h?this.plugin.app.metadataCache.getFirstLinkpathDest(h.path,l):null}async openLink(o,l,h,g){var j,q,L;let d=this.resolveLink(o,l),w=(0,W.parseLinktext)(o);if(!d&&g){let F=this.plugin.app.fileManager.getNewFileParent(l);d=await this.plugin.app.fileManager.createNewMarkdownFile(F,w.path)}if(!d){this.displayCreateFileAction(o,l,h);return}let{viewRegistry:k}=this.plugin.app,S=k.typeByExtension[d.extension];if(!S||!k.viewByType[S]){this.displayOpenFileAction(d);return}h=Object.assign(this.buildEphemeralState(d,w),h);let O=this.getDefaultMode(),T=this.buildState(O,h),_=await this.openFile(d,T,g),H=(j=_==null?void 0:_.view)==null?void 0:j.getViewType();if(H==="image"){this.plugin.settings.autoFocus&&((q=this.parent)==null?void 0:q.hasOwnProperty("editorEl"))&&this.parent.editorEl.hasClass("is-live-preview")&&(this.waitTime=3e3),this.constrainAspectRatio=!0;let F=_.view.contentEl.querySelector("img");this.hoverEl.dataset.imgHeight=String(F.naturalHeight),this.hoverEl.dataset.imgWidth=String(F.naturalWidth),this.hoverEl.dataset.imgRatio=String(F.naturalWidth/F.naturalHeight)}else H==="pdf"&&(this.hoverEl.style.height="800px",this.hoverEl.style.width="600px");((L=T.state)==null?void 0:L.mode)==="source"&&this.whenShown(()=>{var F,J,le,G;(0,W.requireApiVersion)("1.0")&&((le=(J=(F=_==null?void 0:_.view)==null?void 0:F.editMode)==null?void 0:J.reinit)==null||le.call(J)),(G=_==null?void 0:_.view)==null||G.setEphemeralState(T.eState)})}displayOpenFileAction(o){let h=this.attachLeaf().view;h.emptyTitleEl.hide(),h.actionListEl.empty();let{actionListEl:g}=h;g.createDiv({cls:"file-embed-title"},d=>{d.createSpan({cls:"file-embed-icon"},w=>(0,W.setIcon)(w,"document")),d.appendText(" "+o.name)}),g.addEventListener("click",()=>this.plugin.app.openWithDefaultApp(o.path)),g.setAttribute("aria-label",i18next.t("interface.embed-open-in-default-app-tooltip"))}displayCreateFileAction(o,l,h){var w,k,S;let g=this.attachLeaf(),d=g.view;if(d){(w=d.emptyTitleEl)==null||w.hide(),(k=d.actionListEl)==null||k.empty();let O=(S=d.actionListEl)==null?void 0:S.createEl("button","empty-state-action");if(!O)return;O.textContent=`${o} is not yet created. Click to create.`,this.plugin.settings.autoFocus&&setTimeout(()=>{O==null||O.focus()},200),O.addEventListener("click",async()=>{this.togglePin(!0),await this.openLink(o,l,h,g)},{once:!0})}}whenShown(o){if(this.detaching)return;let l=this.onShowCallback;this.onShowCallback=()=>{this.detaching||(o(),typeof l=="function"&&l())},this.state===W.PopoverState.Shown&&(this.onShowCallback(),this.onShowCallback=void 0)}async openFile(o,l,h){var d,w,k;if(this.detaching)return;let g=h!=null?h:this.attachLeaf();this.opening=!0;try{if(await g.openFile(o,l),this.plugin.settings.autoFocus&&!this.detaching)this.whenShown(()=>{var O;app.workspace.setActiveLeaf(g,!1,!1),app.workspace.activeLeaf===g&&g.setEphemeralState({focus:!0}),setTimeout(te(W.Workspace.prototype,{recordMostRecentOpenedFile(T){return function(_){if(_!==o)return T.call(this,_)}}}),1);let S=this.plugin.app.plugins.plugins["recent-files-obsidian"];if(S){let T=(O=this.plugin.app.workspace.getLeavesOfType("recent-files").first())==null?void 0:O.view;setTimeout(te(S,{shouldAddFile(_){return function(H){return H!==o&&_.call(this,H)}},update(_){return function(H){return T&&H===o&&Qe(te(T,{redraw(j){}})),_.call(this,H===o?null:H)}}}),1)}});else if(!this.plugin.settings.autoFocus&&!this.detaching){let S=this.hoverEl.querySelector(".popover-title");if(!S)return;S.textContent=(d=g.view)==null?void 0:d.getDisplayText(),S.setAttribute("data-path",(k=(w=g.view)==null?void 0:w.file)==null?void 0:k.path)}}catch(S){console.error(S)}finally{this.opening=!1,this.detaching&&this.hide()}return g}buildState(o,l){let g=this.plugin.settings.defaultMode==="match"?o:this.plugin.settings.defaultMode;return{active:!1,state:{mode:g},eState:l}}buildEphemeralState(o,l){let h=this.plugin.app.metadataCache.getFileCache(o),g=h?(0,W.resolveSubpath)(h,(l==null?void 0:l.subpath)||""):void 0,d={subpath:l==null?void 0:l.subpath};return g&&(d.line=g.start.line,d.startLoc=g.start,d.endLoc=g.end||void 0),d}};function vt(f){return f.containerEl.matches(".popover.hover-popover.hover-editor .workspace-leaf")}function Ya(f,o,l,h){l=l||{},o.show();let g=l.gap||0,d=l.preference||"bottom",w=l.offsetParent||o.offsetParent||h.documentElement,k=l.horizontalAlignment||"left",S=w.scrollTop+10,O=w.scrollTop+w.clientHeight-10,T=Math.min(f.top,O),_=Math.max(f.bottom,S),H=o.offsetHeight,j=f.top-S>=H+g,q=O-f.bottom>=H+g,L=0,F="";!j||d!=="top"&&q?!q||d!=="bottom"&&j?w.clientHeight<H+g?(L=S,F="overlap"):d==="top"?(L=S+g,F="overlap"):(L=O-H,F="overlap"):(L=_+g,F="bottom"):(L=T-g-H,F="top");let J=w.scrollLeft+10,le=w.scrollLeft+w.clientWidth-10,G=o.offsetWidth,Q=k==="left"?f.left:f.right-G;return Q<J?Q=J:Q>le-G&&(Q=le-G),o.style.top="".concat(L.toString(),"px"),o.style.left="".concat(Q.toString(),"px"),{top:L,left:Q,vresult:F}}function $a(f,o){let l=0,h=0;for(let g=o?o.offsetParent:null;f&&f!==o&&f!==g;){l+=f.offsetTop,h+=f.offsetLeft;let d=f.offsetParent;for(let w=f.parentElement;w&&w!==d;)l-=w.scrollTop,h-=w.scrollLeft,w=w.parentElement;d&&d!==o&&d!==g&&(l-=d.scrollTop,h-=d.scrollLeft),f=d}return{top:l,left:h}}function gt(f){if(ke={x:f.clientX,y:f.clientY},f.win.frameElement){let{x:o,y:l,scale:h}=Zn(f.win);ke.x=o+ke.x*h,ke.y=l+ke.y*h}}function tn(f,o){let l=f.relatedTarget;return!(de(l,Node)&&o.contains(l))}function Wr(f,o){return!!(f&&o&&f.right>o.left&&f.left<o.right&&f.bottom>o.top&&f.top<o.bottom)}function Vr(f){let o=f==null?void 0:f.getBoundingClientRect();if(f==null?void 0:f.win.frameElement){let{x:l,y:h,scale:g}=Zn(f.win);return{left:l+o.left*g,right:l+o.right*g,top:h+o.top*g,bottom:h+o.bottom*g}}return o}function Ua(f){return f.frameElement?Zn(f).win:f}function Zn(f){let o=0,l=0,h=1;for(var g;g=f.frameElement;f=g.win){let d=g.getBoundingClientRect(),w=d.width/g.clientWidth;h*=w,o=d.x+o*w,l=d.y+l*w}return{x:o,y:l,scale:h,win:f}}var nn=new WeakMap;function Yr(f,o,l,h,g,d,...w){var O;l&&l.matches('.workspace-leaf-content[data-type="calendar"] table.calendar td > div')&&(l=l.parentElement),d&&"scroll"in d&&!("line"in d)&&l&&l.matches(".search-result-file-match")&&(d.line=d.scroll,delete d.scroll),l&&l.matches(".bookmark .tree-item-inner")&&(o&&o.innerEl===l&&(o=o.tree),l=(O=l.parentElement)!=null?O:l);let k=nn.has(l)?nn.get(l):o.hoverPopover;if(k==null?void 0:k.lockedOut)return;if(k&&k.state!==_e.PopoverState.Hidden&&(!k.isPinned||f.settings.autoPin==="always")&&k.targetEl!==null&&k.originalLinkText===h&&k.originalPath===g&&l&&k.adopt(l))nn.set(l,k);else{let T=new $(o,l,f,f.settings.triggerDelay);l&&nn.set(l,T),T.originalLinkText=h,T.originalPath=g,o.hoverPopover=T;let _=T.abortController,H=function(){!T||(T.lockedOut=!1)},j=function(F){!T||de(F.target,HTMLElement)&&!F.target.closest(".hover-editor, .menu")&&(T.state=_e.PopoverState.Hidden,T.hide(),T.lockedOut=!0,setTimeout(H,1e3))},{document:q}=T,L=function(F){if(!T)return;let J=_e.Platform.isMacOS?"Meta":"Control";!T.onHover&&T.state!==_e.PopoverState.Shown&&F.key!==J?(T.state=_e.PopoverState.Hidden,T.hide(),T.lockedOut=!0,setTimeout(H,1e3)):q.body.removeEventListener("keyup",L,!0)};q.addEventListener("pointerdown",j,!0),q.addEventListener("mousedown",j,!0),q.body.addEventListener("keyup",L,!0),_.register(()=>{q.removeEventListener("pointerdown",j,!0),q.removeEventListener("mousedown",j,!0),q.body.removeEventListener("keyup",L,!0)}),setTimeout(()=>{(T==null?void 0:T.state)!=_e.PopoverState.Hidden&&(T==null||T.openLink(h,g,d))},0)}}var ee=Ge(require("obsidian"));var rn={defaultMode:"preview",autoPin:"onMove",triggerDelay:300,closeDelay:600,autoFocus:!0,rollDown:!1,snapToEdges:!1,initialHeight:"340px",initialWidth:"400px",showViewHeader:!1,imageZoom:!0,hoverEmbeds:!1,footnotes:(0,ee.requireApiVersion)("1.6")?"never":"always",headings:"always",blocks:(0,ee.requireApiVersion)("1.6")?"never":"always"},Ga={preview:"Reading view",source:"Editing view",match:"Match current view"},Ka={onMove:"On drag or resize",always:"Always"},Qn=class extends ee.PluginSettingTab{constructor(o,l){super(o,l);this.plugin=l}hide(){}display(){let{containerEl:o}=this;o.empty(),new ee.Setting(o).setName("Default Mode").addDropdown(l=>{l.addOptions(Ga),l.setValue(this.plugin.settings.defaultMode),l.onChange(async h=>{this.plugin.settings.defaultMode=h,await this.plugin.saveSettings()})}),new ee.Setting(o).setName("Auto Pin").addDropdown(l=>{l.addOptions(Ka),l.setValue(this.plugin.settings.autoPin),l.onChange(async h=>{this.plugin.settings.autoPin=h,await this.plugin.saveSettings()})}),new ee.Setting(o).setName("Trigger hover preview on embeds").setDesc("Allow hover preview to trigger when hovering over any type of rendered embed such as images or block references").addToggle(l=>l.setValue(this.plugin.settings.hoverEmbeds).onChange(h=>{this.plugin.settings.hoverEmbeds=h,this.plugin.saveSettings()})),new ee.Setting(o).setName("Trigger hover preview on sub-heading links").setDesc("Use hover editor for links to subheadings, instead of the built-in preview/editor").addToggle(l=>l.setValue(this.plugin.settings.headings==="always").onChange(h=>{this.plugin.settings.headings=h?"always":"never",this.plugin.saveSettings()})),new ee.Setting(o).setName("Trigger hover preview on block links").setDesc("Use hover editor for links to blocks, instead of the built-in preview/editor").addToggle(l=>l.setValue(this.plugin.settings.blocks==="always").onChange(h=>{this.plugin.settings.blocks=h?"always":"never",this.plugin.saveSettings()})),new ee.Setting(o).setName("Trigger hover preview on footnotes").setDesc("Use hover editor for footnotes, instead of the built-in preview/editor").addToggle(l=>l.setValue(this.plugin.settings.footnotes==="always").onChange(h=>{this.plugin.settings.footnotes=h?"always":"never",this.plugin.saveSettings()})),new ee.Setting(o).setName("Auto Focus").setDesc("Set the hover editor as the active pane when opened").addToggle(l=>l.setValue(this.plugin.settings.autoFocus).onChange(h=>{this.plugin.settings.autoFocus=h,this.plugin.saveSettings()})),new ee.Setting(o).setName("Minimize downwards").setDesc("When double clicking to minimize, the window will roll down instead of rolling up").addToggle(l=>l.setValue(this.plugin.settings.rollDown).onChange(h=>{this.plugin.settings.rollDown=h,this.plugin.saveSettings()})),new ee.Setting(o).setName("Snap to edges").setDesc(`Quickly arrange popovers by dragging them to the edges of the screen. The left and right edges + will maximize the popover vertically. The top edge will maximize the popover to fill the entire + screen. Dragging the popovers away from the edges will restore the popver to its original size.`).addToggle(l=>l.setValue(this.plugin.settings.snapToEdges).onChange(h=>{this.plugin.settings.snapToEdges=h,this.plugin.saveSettings()})),new ee.Setting(o).setName("Show view header by default").setDesc(`Show the view header by default when triggering a hover editor. + When disabled, view headers will only show if you click the view header icon to the left of the minimize button.`).addToggle(l=>l.setValue(this.plugin.settings.showViewHeader).onChange(h=>{this.plugin.settings.showViewHeader=h,this.plugin.saveSettings()})),new ee.Setting(o).setName("Click to zoom image").setDesc(`Click and hold an image within a hover editor to temporarily maximize the popover and image to fill the entire viewport. + On mouse up, the hover editor will restore to its original size.`).addToggle(l=>l.setValue(this.plugin.settings.imageZoom).onChange(h=>{this.plugin.settings.imageZoom=h,this.plugin.saveSettings()})),new ee.Setting(o).setName("Initial popover width").setDesc("Enter any valid CSS unit").addText(l=>{l.setPlaceholder(this.plugin.settings.initialWidth),l.inputEl.type="text",l.setValue(this.plugin.settings.initialWidth),l.onChange(async h=>{h=Vn(h),h||(h=rn.initialWidth),this.plugin.settings.initialWidth=h,this.plugin.saveSettings()})}),new ee.Setting(o).setName("Initial popover height").setDesc("Enter any valid CSS unit").addText(l=>{l.setPlaceholder(String(this.plugin.settings.initialHeight)),l.inputEl.type="text",l.setValue(String(this.plugin.settings.initialHeight)),l.onChange(async h=>{h=Vn(h),h||(h=rn.initialHeight),this.plugin.settings.initialHeight=h,this.plugin.saveSettings()})}),new ee.Setting(o).setName("Hover Trigger Delay (ms)").setDesc("How long to wait before showing a Hover Editor when hovering over a link").addText(l=>{l.setPlaceholder(String(this.plugin.settings.triggerDelay)),l.inputEl.type="number",l.setValue(String(this.plugin.settings.triggerDelay)),l.onChange(async h=>{this.plugin.settings.triggerDelay=Number(h),this.plugin.saveSettings()})}),new ee.Setting(o).setName("Hover Close Delay (ms)").setDesc("How long to wait before closing a Hover Editor once the mouse leaves").addText(l=>{l.setPlaceholder(String(this.plugin.settings.closeDelay)),l.inputEl.type="number",l.setValue(String(this.plugin.settings.closeDelay)),l.onChange(async h=>{this.plugin.settings.closeDelay=Number(h),this.plugin.saveSettings()})})}};var ti=Ge(Ur());var Gr=class extends Fr{constructor(){super(...arguments);this.interact=this.createInteractor();this.plugin=this.use(on)}createInteractor(){if(this.win===window)return ti.default;let o=ti.default.scope,h=new o.constructor().init(this.win).interactStatic;for(let g of o._plugins.list)h.use(g);return h}onload(){this.win.addEventListener("resize",this.plugin.debouncedPopoverReflow)}onunload(){this.win.removeEventListener("resize",this.plugin.debouncedPopoverReflow);try{this.interact.removeDocument(this.win.document)}catch(o){console.error(o)}}},on=class extends V.Plugin{constructor(){super(...arguments);this.use=Un.plugin(this);this.interact=this.use(Gr);this.debouncedPopoverReflow=(0,V.debounce)(()=>{$.activePopovers().forEach(o=>{var l;(l=o.interact)==null||l.reflow({name:"drag",axis:"xy"})})},100,!0)}async onload(){this.registerActivePopoverHandler(),this.registerFileRenameHandler(),this.registerContextMenuHandler(),this.registerCommands(),this.patchUnresolvedGraphNodeHover(),this.patchWorkspace(),this.patchQuickSwitcher(),this.patchWorkspaceLeaf(),this.patchItemView(),this.patchMarkdownPreviewRenderer(),this.patchMarkdownPreviewView(),await this.loadSettings(),this.registerSettingsTab(),this.app.workspace.onLayoutReady(()=>{this.patchSlidingPanes(),this.patchLinkHover(),setTimeout(()=>{this.app.workspace.trigger("css-change")},2e3)})}get activePopovers(){return $.activePopovers()}patchWorkspaceLeaf(){this.register(te(V.WorkspaceLeaf.prototype,{getRoot(o){return function(){let l=o.call(this);return l.getRoot===this.getRoot?l:l.getRoot()}},onResize(o){return function(){var l;(l=this.view)==null||l.onResize()}},setViewState(o){return async function(l,h){var d,w,k;let g=await o.call(this,l,h);try{let S=$.forLeaf(this);if(S){l.type&&S.hoverEl.setAttribute("data-active-view-type",l.type);let O=S.hoverEl.querySelector(".popover-title");O&&(O.textContent=(d=this.view)==null?void 0:d.getDisplayText(),((k=(w=this.view)==null?void 0:w.file)==null?void 0:k.path)?O.setAttribute("data-path",this.view.file.path):O.removeAttribute("data-path"))}}catch(S){}return g}},setEphemeralState(o){return function(l){var h;o.call(this,l),l.focus&&((h=this.view)==null?void 0:h.getViewType())==="empty"&&(this.view.contentEl.tabIndex=-1,this.view.contentEl.focus())}}})),this.register(te(V.WorkspaceItem.prototype,{getContainer(o){return function(){if(!!o)return!this.parentSplit||this instanceof V.WorkspaceContainer?o.call(this):this.parentSplit.getContainer()}}}))}patchQuickSwitcher(){let o=this,{QuickSwitcherModal:l}=this.app.internalPlugins.plugins.switcher.instance,h=te(l.prototype,{open(g){return function(){let d=g.call(this);return this.instructionsEl&&setTimeout(te(this.instructionsEl,{empty(w){return()=>{}}}),0),this.setInstructions([{command:V.Platform.isMacOS?"cmd p":"ctrl p",purpose:"to open in new popover"}]),this.scope.register(["Mod"],"p",w=>{this.close();let k=this.chooser.values[this.chooser.selectedItem];if(!(k==null?void 0:k.file))return;let S=o.spawnPopover(void 0,()=>this.app.workspace.setActiveLeaf(S,!1,!0));return S.openFile(k.file),!1}),d}}});this.register(h)}patchItemView(){let o=this,[l,h]=V.View.prototype.onPaneMenu?[V.View,"onPaneMenu"]:[V.ItemView,"onMoreOptionsMenu"],g=te(l.prototype,{[h](d){return function(w,...k){return(this.leaf?$.forLeaf(this.leaf):void 0)?w.addItem(O=>{var T,_;(_=(T=O.setIcon("popup-open").setTitle("Dock Hover Editor to workspace").onClick(()=>{o.dockPopoverToWorkspace(this.leaf)})).setSection)==null||_.call(T,"open")}):(w.addItem(O=>{var T,_;(_=(T=O.setIcon("popup-open").setTitle("Open in Hover Editor").onClick(async()=>{let H=o.spawnPopover(),{autoFocus:j}=o.settings;await H.setViewState({...this.leaf.getViewState(),active:j},{focus:j}),j&&(await sleep(200),this.app.workspace.setActiveLeaf(H,{focus:!0}))})).setSection)==null||_.call(T,"open")}),w.addItem(O=>{var T,_;(_=(T=O.setIcon("popup-open").setTitle("Convert to Hover Editor").onClick(()=>{o.convertLeafToPopover(this.leaf)})).setSection)==null||_.call(T,"open")})),d.call(this,w,...k)}}});this.register(g),this.register(te(V.ItemView.prototype,{load(d){return function(){if(!this.iconEl){let w=this.iconEl=this.headerEl.createDiv("clickable-icon view-header-icon");this.headerEl.prepend(w),w.draggable=!0,w.addEventListener("dragstart",k=>{this.app.workspace.onDragLeaf(k,this.leaf)}),(0,V.setIcon)(w,this.getIcon()),(0,V.setTooltip)(w,"Drag to rearrange")}return d.call(this)}}}))}patchMarkdownPreviewView(){this.register(te(V.MarkdownPreviewView.prototype,{onResize(o){return function(){this.renderer.onResize(),this.view.scroll!==null&&this.view.scroll!==this.getScroll()&&this.renderer.applyScrollDelayed(this.view.scroll)}}}))}patchMarkdownPreviewRenderer(){let o=this,l=te(V.MarkdownPreviewRenderer,{registerDomEvents(h){return function(g,d,...w){return g==null||g.on("mouseover",".internal-embed.is-loaded",(k,S)=>{var O,T,_,H,j;S&&o.settings.hoverEmbeds&&app.workspace.trigger("hover-link",{event:k,source:S.matchParent(".markdown-source-view")?"editor":"preview",hoverParent:(O=d.hoverParent)!=null?O:d.info,targetEl:S,linktext:S.getAttribute("src"),sourcePath:((j=(H=(_=(T=d.info)!=null?T:d).getFile)==null?void 0:H.call(_))==null?void 0:j.path)||""})}),h.call(this,g,d,...w)}}});this.register(l)}patchWorkspace(){let o=!1,l=te(V.Workspace.prototype,{changeLayout(h){return async function(g){o=!0;try{await h.call(this,g)}finally{o=!1}}},recordHistory(h){return function(g,d,...w){var S;if(!(!((S=this.app.plugins.plugins["pane-relief"])==null?void 0:S._loaded)&&vt(g)))return h.call(this,g,d,...w)}},iterateLeaves(h){return function(g,d){if(h.call(this,g,d))return!0;let w=typeof g=="function"?g:d,k=typeof g=="function"?d:g;if(!k||o)return!1;if(k===app.workspace.rootSplit||V.WorkspaceContainer&&k instanceof V.WorkspaceContainer){for(let S of $.popoversForWindow(k.win))if(h.call(this,w,S.rootSplit))return!0}return!1}},getDropLocation(h){return function(d){for(let w of $.activePopovers()){let k=this.recursiveGetTarget(d,w.rootSplit);if(k)return V.requireApiVersion&&(0,V.requireApiVersion)("0.15.3")?k:{target:k,sidedock:!1}}return h.call(this,d)}},onDragLeaf(h){return function(g,d){let w=$.forLeaf(d);return w==null||w.togglePin(!0),h.call(this,g,d)}}});this.register(l)}patchSlidingPanes(){var l;let o=(l=this.app.plugins.plugins["sliding-panes-obsidian"])==null?void 0:l.constructor;if(o){let h=te(o.prototype,{handleFileOpen(g){return function(...d){if(!vt(this.app.workspace.activeLeaf))return g.call(this,...d)}},handleLayoutChange(g){return function(...d){if(!vt(this.app.workspace.activeLeaf))return g.call(this,...d)}},focusActiveLeaf(g){return function(...d){if(!vt(this.app.workspace.activeLeaf))return g.call(this,...d)}}});this.register(h)}}patchLinkHover(){let o=this,l=this.app.internalPlugins.plugins["page-preview"];if(!l.enabled)return;let h=te(l.instance.constructor.prototype,{onHoverLink(g){return function(d,...w){return d&&de(d.event,MouseEvent)&>(d.event),g.call(this,d,...w)}},onLinkHover(g){return function(d,w,k,S,O,...T){let{subpath:_}=(0,V.parseLinktext)(k);if(_&&_[0]==="#"){if(_.startsWith("#[^")){if(o.settings.footnotes!=="always")return g.call(this,d,w,k,S,O,...T)}else if(_.startsWith("#^")){if(o.settings.blocks!=="always")return g.call(this,d,w,k,S,O,...T)}else if(o.settings.headings!=="always")return g.call(this,d,w,k,S,O,...T)}Yr(o,d,w,k,S,O,...T)}}});this.register(h),l.disable(),l.enable(),o.register(function(){!l.enabled||(l.disable(),l.enable())})}registerContextMenuHandler(){this.registerEvent(this.app.workspace.on("file-menu",(o,l,h,g)=>{let d=g?$.forLeaf(g):void 0;l instanceof V.TFile&&!d&&!g&&o.addItem(w=>{var k,S;(S=(k=w.setIcon("popup-open").setTitle("Open in Hover Editor").onClick(()=>{this.spawnPopover().openFile(l)})).setSection)==null||S.call(k,"open")})}))}registerActivePopoverHandler(){this.registerEvent(this.app.workspace.on("active-leaf-change",o=>{var h,g,d,w,k;(h=$.activePopover)==null||h.hoverEl.removeClass("is-active");let l=$.activePopover=o?$.forLeaf(o):void 0;if(l&&o){l.activate(),l.hoverEl.addClass("is-active");let S=l.hoverEl.querySelector(".popover-title");if(!S)return;S.textContent=(g=o.view)==null?void 0:g.getDisplayText(),((d=o==null?void 0:o.view)==null?void 0:d.getViewType())&&l.hoverEl.setAttribute("data-active-view-type",o.view.getViewType()),((k=(w=o.view)==null?void 0:w.file)==null?void 0:k.path)?S.setAttribute("data-path",o.view.file.path):S.removeAttribute("data-path")}}))}registerFileRenameHandler(){this.app.vault.on("rename",(o,l)=>{$.iteratePopoverLeaves(this.app.workspace,h=>{var g,d;if(o===((g=h==null?void 0:h.view)==null?void 0:g.file)&&o instanceof V.TFile){let w=$.forLeaf(h);if(w==null?void 0:w.hoverEl){let k=w.hoverEl.querySelector(".popover-title");if(!k)return;let S=k.getAttribute("data-path");l===S&&(k.textContent=(d=h.view)==null?void 0:d.getDisplayText(),k.setAttribute("data-path",o.path))}}})})}patchUnresolvedGraphNodeHover(){var d,w;let o=new V.WorkspaceLeaf(this.app),l=this.app.internalPlugins.plugins.graph.views.localgraph(o),h=l.engine.constructor;o.detach(),(w=(d=l.renderer)==null?void 0:d.worker)==null||w.terminate();let g=te(h.prototype,{onNodeHover(k){return function(S,O,T,..._){if(T==="unresolved"){if(this.onNodeUnhover(),de(S,MouseEvent)){if(this.hoverPopover&&this.hoverPopover.state!==V.PopoverState.Hidden&&this.lastHoverLink===O)return this.hoverPopover.onTarget=!0,void this.hoverPopover.transition();this.lastHoverLink=O,this.app.workspace.trigger("hover-link",{event:S,source:"graph",hoverParent:this,targetEl:null,linktext:O})}}else return k.call(this,S,O,T,..._)}}});this.register(g),o.detach()}onunload(){$.activePopovers().forEach(o=>o.hide())}async loadSettings(){this.settings=Object.assign({},rn,await this.loadData())}async saveSettings(){await this.saveData(this.settings)}registerCommands(){this.addCommand({id:"bounce-popovers",name:"Toggle bouncing popovers",callback:()=>{this.activePopovers.forEach(o=>{o.toggleBounce()})}}),this.addCommand({id:"open-new-popover",name:"Open new Hover Editor",callback:()=>{let o=this.spawnPopover(void 0,()=>this.app.workspace.setActiveLeaf(o,!1,!0))}}),this.addCommand({id:"open-link-in-new-popover",name:"Open link under cursor in new Hover Editor",checkCallback:o=>{let l=this.app.workspace.getActiveViewOfType(V.MarkdownView);if(l){if(!o){let h=l.editor.getClickableTokenAt(l.editor.getCursor());if((h==null?void 0:h.type)==="internal-link"){let g=this.spawnPopover(void 0,()=>this.app.workspace.setActiveLeaf(g,!1,!0));g.openLinkText(h.text,l.file.path)}}return!0}return!1}}),this.addCommand({id:"open-current-file-in-new-popover",name:"Open current file in new Hover Editor",checkCallback:o=>{var h,g;let l=(g=(h=this.app.workspace.activeEditor)==null?void 0:h.file)!=null?g:this.app.workspace.getActiveFile();if(l){if(!o){let d=this.spawnPopover(void 0,()=>this.app.workspace.setActiveLeaf(d,!1,!0));d.openFile(l)}return!0}return!1}}),this.addCommand({id:"convert-active-pane-to-popover",name:"Convert active pane to Hover Editor",checkCallback:o=>{let{activeLeaf:l}=this.app.workspace;return l?(o||this.convertLeafToPopover(l),!0):!1}}),this.addCommand({id:"dock-active-popover-to-workspace",name:"Dock active Hover Editor to workspace",checkCallback:o=>{let{activeLeaf:l}=this.app.workspace;return l&&$.forLeaf(l)?(o||this.dockPopoverToWorkspace(l),!0):!1}}),this.addCommand({id:"restore-active-popover",name:"Restore active Hover Editor",checkCallback:o=>Rr(o)}),this.addCommand({id:"minimize-active-popover",name:"Minimize active Hover Editor",checkCallback:o=>zr(o)}),Lr.forEach(o=>{this.addCommand({id:`snap-active-popover-to-${o}`,name:`Snap active Hover Editor to ${o}`,checkCallback:l=>jr(o,l)})})}convertLeafToPopover(o){if(!o)return;let l=this.spawnPopover(void 0,()=>{let{parentSplit:h}=l,{parentSplit:g}=o;g.removeChild(o),h.replaceChild(0,o,!0),this.app.workspace.setActiveLeaf(o,{focus:!0})});return l}dockPopoverToWorkspace(o){if(!o)return;o.parentSplit.removeChild(o);let{rootSplit:l}=this.app.workspace;return this.app.workspace.iterateLeaves(l,h=>(h.parentSplit.insertChild(-1,o),!0)),this.app.workspace.activeLeaf=null,this.app.workspace.setActiveLeaf(o,{focus:!0}),o}spawnPopover(o,l){let h=this.app.workspace.activeLeaf;o||(o=h.containerEl);let g=new $(h,o,this,void 0,l);return g.togglePin(!0),g.attachLeaf()}registerSettingsTab(){this.settingsTab=new Qn(this.app,this),this.addSettingTab(this.settingsTab)}};function Jn(f){let o=[];for(let l=0;l<f;l++)o.push((16*Math.random()|0).toString(16));return o.join("")} + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-hover-editor/manifest.json b/.obsidian/plugins/obsidian-hover-editor/manifest.json new file mode 100644 index 0000000..518b0b6 --- /dev/null +++ b/.obsidian/plugins/obsidian-hover-editor/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "obsidian-hover-editor", + "name": "Hover Editor", + "version": "0.11.29", + "minAppVersion": "1.10.6", + "description": "Transform the Page Preview hover popover into a floating tab", + "author": "NothingIsLost", + "authorUrl": "https://github.com/nothingislost", + "isDesktopOnly": false +} diff --git a/.obsidian/plugins/obsidian-hover-editor/styles.css b/.obsidian/plugins/obsidian-hover-editor/styles.css new file mode 100644 index 0000000..b30c718 --- /dev/null +++ b/.obsidian/plugins/obsidian-hover-editor/styles.css @@ -0,0 +1,582 @@ +/* @settings + +name: Hover Editor +id: hover-editor +settings: + - + id: titlebar-heading + title: Title bar + type: heading + level: 1 + collapsed: true + - + id: titlebar-heading + title: Title bar background/foreground + type: heading + level: 2 + collapsed: true + - + id: he-title-bar-active-bg + title: Active unpinned title bar background color + type: variable-themed-color + format: hex + default-light: '#' + default-dark: '#' + - + id: he-title-bar-inactive-bg + title: Inactive unpinned title bar background color + type: variable-themed-color + format: hex + default-light: '#' + default-dark: '#' + - + id: he-title-bar-active-pinned-bg + title: Active pinned title bar background color + type: variable-themed-color + format: hex + default-light: '#' + default-dark: '#' + - + id: he-title-bar-inactive-pinned-bg + title: Inactive pinned title bar background color + type: variable-themed-color + format: hex + default-light: '#' + default-dark: '#' + - + id: he-title-bar-active-fg + title: Active title bar foreground color + type: variable-themed-color + format: hex + default-light: '#' + default-dark: '#' + - + id: he-title-bar-inactive-fg + title: Inactive title bar foreground color + type: variable-themed-color + format: hex + default-light: '#' + default-dark: '#' + - + id: titlebar-action-heading + title: Title bar icons + type: heading + level: 2 + collapsed: true + - + id: he-title-bar-inactive-action + title: Title bar inactive icon color + type: variable-themed-color + format: hex + default-light: '#' + default-dark: '#' + - + id: he-title-bar-active-action + title: Titlebar active icon color + type: variable-themed-color + format: hex + default-light: '#' + default-dark: '#' + - + id: titlebar-text-heading + title: Title bar text + type: heading + level: 2 + collapsed: true + - + id: he-title-bar-font-size + title: Title bar Font size + type: variable-text + description: Accepts any CSS font-size value + default: 15px + - + id: titlebar-height-heading + title: Title bar height + type: heading + level: 2 + collapsed: true + - + id: he-title-bar-height + title: Title bar height + type: variable-text + description: Accepts any CSS font-size value + default: 28px +*/ + +:root { + /* general styling */ + --he-popover-opacity-while-dragging: 0.8; + --he-popover-border-radius: 6px; + --he-popover-header-transition-speed: 0.3s; + --he-popover-snap-to-edge-transition-speed: 0.3s; + /* resize handle sizing */ + --he-resize-handle-side-size: 12px; + --he-resize-handle-corner-size: 18px; + /* view header height */ + --he-view-header-height: 36px; +} + +body { + --he-text-on-accent-inactive: var(--text-on-accent); /* couldn't find a good variable that worked across themes */ + --he-text-on-accent-active: #fff; + /* z-index layer settings, probably not a good idea to mess with these */ + --he-popover-layer-inactive: calc(var(--layer-slides) - 4); + --he-popover-layer-active: calc(var(--he-popover-layer-inactive) + 1); + --he-popover-layer-new: calc(var(--he-popover-layer-inactive) + 2); + --he-leaf-drag-overlay: calc(var(--he-popover-layer-inactive) + 3); + /* calculated variables, do not modify */ + --he-resize-handle-side-offset: calc((var(--he-resize-handle-side-size) - 3px) * -1); + --he-resize-handle-corner-offset: calc((var(--he-resize-handle-corner-size) / 2) * -1); + --he-resize-handle-side-length: calc(100% - var(--he-resize-handle-corner-size)); + /* title bar colors */ + --he-title-bar-active-bg: var(--interactive-accent); + --he-title-bar-inactive-bg: #777777; + --he-title-bar-inactive-pinned-bg: #777777; + --he-title-bar-active-pinned-bg: var(--interactive-accent); + + --he-title-bar-active-fg: var(--he-text-on-accent-active); + --he-title-bar-inactive-fg: var(--he-text-on-accent-inactive); + /* title bar action/icon colors */ + --he-title-bar-inactive-action: var(--he-text-on-accent-inactive); + --he-title-bar-active-action: var(--he-text-on-accent-active); + /* titlebar sizing */ + --he-title-bar-height: 28px; + --he-title-bar-font-size: 15px; +} + +.popover.hover-editor .workspace-leaf, +.popover.hover-editor .workspace-split { + height: 100%; + width: 100%; +} + +/* +Obsidian 1.6 sets a different background for non-root splits, +then uses primary as an override at root. Since hover editors +don't live in a root split, we have to copy the override: +*/ +.popover.hover-editor .workspace-split .view-content { + background-color: var(--background-primary); +} + +.popover.hover-editor { + min-height: unset; + max-height: unset; + /* touch action none fixes dragging and resizing on mobile */ + touch-action: none; + /* this is set to allow the drag/resize handles to overflow the popover frame */ + overflow: visible; + border: none; + padding: 0; + z-index: var(--he-popover-layer-inactive); + border-radius: var(--he-popover-border-radius); + + /* Prevent snagging on titlebar */ + -webkit-app-region: no-drag; +} + +.popover.hover-editor .markdown-preview-view { + font-size: inherit; +} + +.popover.hover-editor.is-active { + z-index: var(--he-popover-layer-active); +} + +.popover.hover-editor.is-new { + z-index: var(--he-popover-layer-new); +} + +/* Drag/link overlay needs to overlay popups */ +.workspace-fake-target-overlay, +.workspace-drop-overlay { + z-index: var(--he-leaf-drag-overlay); +} + +.popover.hover-editor .resize-handle { + position: absolute; + touch-action: none; +} + +.popover.hover-editor .resize-handle.top { + top: var(--he-resize-handle-side-offset); + height: var(--he-resize-handle-side-size); + left: calc(var(--he-resize-handle-corner-offset) * -1); + width: var(--he-resize-handle-side-length); +} + +.popover.hover-editor .resize-handle.left { + height: var(--he-resize-handle-side-length); + left: var(--he-resize-handle-side-offset); + top: calc(var(--he-resize-handle-corner-offset) * -1); + width: var(--he-resize-handle-side-size); +} + +.popover.hover-editor .resize-handle.right { + height: var(--he-resize-handle-side-length); + right: var(--he-resize-handle-side-offset); + top: calc(var(--he-resize-handle-corner-offset) * -1); + width: var(--he-resize-handle-side-size); +} + +.popover.hover-editor .resize-handle.bottom { + bottom: var(--he-resize-handle-side-offset); + height: var(--he-resize-handle-side-size); + left: calc(var(--he-resize-handle-corner-offset) * -1); + width: var(--he-resize-handle-side-length); +} + +.popover.hover-editor .resize-handle.bottom-left { + bottom: var(--he-resize-handle-corner-offset); + height: var(--he-resize-handle-corner-size); + left: var(--he-resize-handle-corner-offset); + width: var(--he-resize-handle-corner-size); +} + +.popover.hover-editor .resize-handle.bottom-right { + bottom: var(--he-resize-handle-corner-offset); + height: var(--he-resize-handle-corner-size); + right: var(--he-resize-handle-corner-offset); + width: var(--he-resize-handle-corner-size); +} + +.popover.hover-editor .resize-handle.top-left { + top: var(--he-resize-handle-corner-offset); + height: var(--he-resize-handle-corner-size); + left: var(--he-resize-handle-corner-offset); + width: var(--he-resize-handle-corner-size); +} + +.popover.hover-editor .resize-handle.top-right { + top: var(--he-resize-handle-corner-offset); + height: var(--he-resize-handle-corner-size); + right: var(--he-resize-handle-corner-offset); + width: var(--he-resize-handle-corner-size); +} + +/* body.is-dragging-popover .tooltip { + opacity: 0; +} */ + +.popover-header-icon { + width: fit-content; +} + +.mod-pin-popover > svg { + transform: rotate(45deg); +} + +.mod-pin-popover.is-active > svg { + transform: rotate(0deg); +} + +.popover-action, +.popover-header-icon { + margin: 0 8px; + cursor: pointer; + color: var(--he-title-bar-inactive-action); + position: relative; + display: flex; + align-items: center; +} + +.popover-action.is-active, +.mod-pin-popover.is-active { + color: var(--he-title-bar-active-action); +} + +.popover-action:hover, +.popover-header-icon:hover { + color: var(--he-title-bar-active-action); +} + +.popover-action.is-active svg, +.mod-pin-popover.is-active svg { +} + +.mod-pin-popover.is-active > svg { + transform: unset; +} + +.popover.hover-editor .workspace-leaf-content[data-type="empty"] .view-header { + /* ensures that minimal theme doesn't hide the popover header */ + display: flex; +} + +.popover.hover-editor .workspace-split > .workspace-leaf:last-child > .workspace-leaf-resize-handle { + /* this hides the leaf resize handles that touch the edge of the popover */ + /* without this the leaf resize handles conflict with the popover resize handles */ + display: none; +} + +.popover.hover-editor.is-dragging { + opacity: var(--he-popover-opacity-while-dragging); +} + +.popover.hover-editor:is(.snap-to-viewport, .snap-to-left, .snap-to-right) .resize-handle { + display: none; +} + +.popover.hover-editor.snap-to-right .resize-handle.left, +.popover.hover-editor.snap-to-left .resize-handle.right { + display: block; +} + +.popover.hover-editor.is-dragging.snap-to-left, +.popover.hover-editor.is-dragging.snap-to-right, +.popover.hover-editor.is-dragging.snap-to-viewport { + transition: width var(--he-popover-snap-to-edge-transition-speed), + height var(--he-popover-snap-to-edge-transition-speed), top var(--he-popover-snap-to-edge-transition-speed), + left var(--he-popover-snap-to-edge-transition-speed); +} + +.hover-popover.is-dragging.snap-to-left::after, +.hover-popover.is-dragging.snap-to-right::after, +.hover-popover.is-dragging.snap-to-viewport::after { + position: absolute; + content: ""; + width: 100%; + height: 100%; + top: 0; + border-radius: var(--he-popover-border-radius); + box-shadow: inset 0px 0px 0px 4px var(--interactive-accent); + pointer-events: none; +} + +.popover.hover-editor.snap-to-left { + max-height: unset !important; +} + +.popover.hover-editor.snap-to-right { + right: 0 !important; + max-height: unset !important; +} + +.popover.hover-editor.snap-to-viewport { + max-height: unset !important; + max-width: unset !important; +} + +.popover.hover-editor .popover-titlebar { + display: flex; + height: var(--he-title-bar-height); + width: 100%; + background-color: var(--he-title-bar-inactive-bg); +} + +.popover.hover-editor.is-active .popover-titlebar { + background-color: var(--he-title-bar-active-bg); +} + +.popover.hover-editor.is-pinned.is-pinned .popover-titlebar { + background-color: var(--he-title-bar-inactive-pinned-bg); +} + +.popover.hover-editor.is-pinned.is-pinned.is-active .popover-titlebar { + background-color: var(--he-title-bar-active-pinned-bg); +} + +.popover.hover-editor .popover-titlebar .popover-actions { + display: flex; + justify-content: flex-end; +} + +.popover.hover-editor > .popover-content { + margin: 0; + border-radius: var(--he-popover-border-radius); + overflow: hidden; + height: 100%; + width: 100%; +} + +.popover.hover-popover.hover-editor .pdf-toolbar:not(.pdf-findbar.mod-hidden) { + /* Show PDF toolbar in hover editor */ + display: flex; +} + +.popover.hover-editor .popover-titlebar .popover-title { + display: block; + flex-grow: 1; + transition: all 0.3s; + align-self: center; + font-size: var(--he-title-bar-font-size); + font-weight: 500; + white-space: pre; + word-wrap: normal; + color: var(--he-title-bar-inactive-fg); + overflow: hidden; + position: relative; +} + +.popover.hover-editor.is-active .popover-title { + color: var(--he-title-bar-active-fg); +} + +.popover.hover-editor.is-active .popover-title:after { + background: linear-gradient(to right, transparent, var(--he-title-bar-active-bg)); +} + +.popover.hover-editor.is-pinned.is-pinned.is-active .popover-title:after { + background: linear-gradient(to right, transparent, var(--he-title-bar-active-pinned-bg)); +} + +.popover.hover-editor.is-pinned.is-pinned .popover-title:after { + background: linear-gradient(to right, transparent, var(--he-title-bar-inactive-pinned-bg)); +} + +.popover.hover-editor .popover-title:after { + content: " "; + position: absolute; + top: 0; + right: 0; + width: 30px; + height: 100%; + background: linear-gradient(to right, transparent, var(--he-title-bar-inactive-bg)); +} + +.popover.hover-editor .mod-show-navbar svg { + transform: rotate(90deg); +} + +.popover.hover-editor > .popover-content > .workspace-split { + height: calc(100% - var(--he-title-bar-height)); +} + +.popover.hover-editor .view-header { + border-top: none; + transition: all var(--he-popover-header-transition-speed); + display: flex; +} + +/* Restore 1.5.x view header icons */ +.view-header .view-header-icon { + display: none; + padding: var(--size-2-2); + margin-right: var(--size-2-3); + color: var(--text-muted); + align-self: center; + cursor: grab; +} +.view-header .view-header-icon:active { + cursor: grabbing; +} + +.popover.hover-editor .view-header .view-header-icon { + display: flex; +} + +.popover.hover-editor.show-navbar:not(.is-minimized) .popover-title { + opacity: 0; +} + +.popover.hover-editor:not(.show-navbar) .view-header { + height: 0px; + overflow: hidden; +} + +.popover.hover-editor.show-navbar .view-header { + /* theme devs: if you want to change the header height, you must do so by setting the --he-view-header-height variable */ + /* if you don't use the variable, you will break internal measurement logic */ + height: var(--he-view-header-height); + overflow: unset; +} + +.popover.hover-editor:not(.show-navbar) .view-content { + height: 100%; +} + +.popover.hover-editor .workspace-leaf-content[data-type="image"] .view-content { + padding: 0; + position: relative; + overflow: hidden; +} + +.popover.hover-editor .workspace-leaf-content[data-type="image"] img { + display: block; + position: relative; + height: 100%; + width: 100%; + max-width: unset; + border-radius: 0; +} + +body .popover.hover-editor .view-content { + /* theme devs: if you want to change the header height, you must do so by setting the --he-view-header-height variable */ + /* if you don't use the variable, you will break internal measurement logic */ + height: calc(100% - var(--he-view-header-height)); +} + +/* start: zoomable images feature */ + +.popover.hover-editor.image-zoom .view-content .image-embed:active { + aspect-ratio: unset; + cursor: zoom-out; + display: block; + z-index: 200; + position: fixed; + max-height: calc(100% + 1px); + max-width: 100%; + height: calc(100% + 1px); + width: 100%; + object-fit: contain; + margin: -0.5px auto 0; + text-align: center; + padding: 0; + left: 0; + right: 0; + bottom: 0; + max-width: unset; +} + +/* extra specificity to override some community theme styles that cause issues */ +.popover.hover-editor.image-zoom .view-content .image-embed img:active { + top: 50%; + z-index: 99; + transform: translateY(-50%); + padding: 0; + margin: 0 auto; + width: calc(100% - 20px); + height: unset; + max-height: 95vh; + object-fit: contain; + left: 0; + right: 0; + bottom: 0; + position: absolute; + opacity: 1; + max-width: unset; + max-height: 100%; +} + +.popover.hover-editor.image-zoom .view-content .image-embed:active:after { + background-color: var(--background-primary); + opacity: 0.9; + content: " "; + height: calc(100% + 1px); + width: 100%; + position: fixed; + left: 0; + right: 1px; + z-index: 0; +} + +.popover.hover-editor.image-zoom .view-content img { + cursor: zoom-in; +} + +/* extra specificity to override some community theme styles that cause issues */ +.popover.hover-editor.image-zoom .workspace-leaf-content[data-type="image"] img { + cursor: zoom-in; + top: 50%; + transform: translateY(-50%); + object-fit: contain; + height: unset; + left: 0; + right: 0; + bottom: 0; + position: absolute; + opacity: 1; + max-height: 100%; +} + +/* end: zoomable images feature */ diff --git a/.obsidian/plugins/obsidian-style-settings/data.json b/.obsidian/plugins/obsidian-style-settings/data.json new file mode 100644 index 0000000..73f3783 --- /dev/null +++ b/.obsidian/plugins/obsidian-style-settings/data.json @@ -0,0 +1,74 @@ +{ + "anuppuccin-theme-settings@@anuppuccin-theme-light": "ctp-rosepine-light", + "anuppuccin-theme-settings@@anuppuccin-theme-dark": "ctp-frappe", + "anuppuccin-theme-settings@@anuppuccin-light-theme-accents": "ctp-accent-light-teal", + "anuppuccin-theme-settings@@anuppuccin-theme-accents": "ctp-accent-teal", + "anuppuccin-theme-settings@@anuppuccin-accent-toggle": true, + "anuppuccin-theme-settings@@ctp-custom-peach@@light": "#DD7F67", + "anuppuccin-theme-settings@@ctp-custom-teal@@dark": "#11B7C5", + "anuppuccin-theme-settings@@ctp-custom-teal@@light": "#1A7DA4", + "anuppuccin-theme-settings@@ctp-custom-subtext1@@light": "#EE653A", + "anuppuccin-theme-settings@@ctp-custom-subtext0@@dark": "#FB35D8", + "anuppuccin-theme-settings@@ctp-custom-subtext0@@light": "#0C9FCE", + "anuppuccin-theme-settings@@ctp-custom-overlay2@@dark": "#0AD1D0", + "anuppuccin-theme-settings@@ctp-custom-overlay2@@light": "#525252", + "anuppuccin-theme-settings@@ctp-custom-overlay1@@dark": "#FFA600", + "anuppuccin-theme-settings@@ctp-custom-overlay1@@light": "#CCCCCC", + "anuppuccin-theme-settings@@ctp-custom-overlay0@@dark": "#4CFFD2", + "anuppuccin-theme-settings@@ctp-custom-overlay0@@light": "#0C9FCE", + "anuppuccin-theme-settings@@anp-active-line": "anp-no-highlight", + "anuppuccin-theme-settings@@anp-callout-select": "anp-callout-sleek", + "anuppuccin-theme-settings@@anp-callout-color-toggle": true, + "anuppuccin-theme-settings@@anp-custom-checkboxes": true, + "anuppuccin-theme-settings@@anp-speech-bubble": true, + "anuppuccin-theme-settings@@tag-radius": 2, + "anuppuccin-theme-settings@@cards-border-width": "4px", + "anuppuccin-theme-settings@@anp-color-transition-toggle": true, + "anuppuccin-theme-settings@@anp-cursor": "pointer", + "anuppuccin-theme-settings@@anp-toggle-scrollbars": true, + "anuppuccin-theme-settings@@anp-editor-font-source": "\"\"", + "anuppuccin-theme-settings@@anp-editor-font-lp": "\"New York\"", + "anuppuccin-theme-settings@@bold-weight": "700", + "anuppuccin-theme-settings@@anp-font-live-preview-wt": "400", + "anuppuccin-theme-settings@@anp-header-color-toggle": true, + "anuppuccin-theme-settings@@anp-header-divider-color-toggle": true, + "anuppuccin-theme-settings@@h1-weight": 900, + "anuppuccin-theme-settings@@h1-line-height": 1.2, + "anuppuccin-theme-settings@@anp-h1-divider": true, + "anuppuccin-theme-settings@@h2-size": 1.9, + "anuppuccin-theme-settings@@h2-weight": 100, + "anuppuccin-theme-settings@@h3-size": 1.6, + "anuppuccin-theme-settings@@h3-weight": 700, + "anuppuccin-theme-settings@@anp-h3-color-custom": "anp-h3-green", + "anuppuccin-theme-settings@@h4-weight": 700, + "anuppuccin-theme-settings@@h5-weight": 700, + "anuppuccin-theme-settings@@h6-size": 1.1, + "anuppuccin-theme-settings@@h6-weight": 700, + "anuppuccin-theme-settings@@anp-decoration-toggle": true, + "anuppuccin-theme-settings@@anp-colorful-frame": true, + "anuppuccin-theme-settings@@anp-colorful-frame-opacity": 1, + "anuppuccin-theme-settings@@anp-file-icons": true, + "anuppuccin-theme-settings@@anp-file-label-align": "0", + "anuppuccin-theme-settings@@anp-alt-rainbow-style": "anp-full-rainbow-color-toggle", + "anuppuccin-theme-settings@@anp-rainbow-file-toggle": true, + "anuppuccin-theme-settings@@anp-rainbow-folder-bg-opacity": 0.9, + "anuppuccin-theme-settings@@anp-simple-rainbow-title-toggle": true, + "anuppuccin-theme-settings@@anp-simple-rainbow-indentation-toggle": true, + "anuppuccin-theme-settings@@anp-stacked-header-width": 30, + "anuppuccin-theme-settings@@anp-alt-tab-style": "anp-safari-tab-toggle", + "anuppuccin-theme-settings@@anp-alt-tab-custom-height": 40, + "anuppuccin-theme-settings@@anp-disable-newtab-align": true, + "anuppuccin-theme-settings@@anp-depth-tab-opacity": 0.6, + "anuppuccin-theme-settings@@anp-depth-tab-gap": 10, + "anuppuccin-theme-settings@@anp-safari-tab-radius": 5, + "anuppuccin-theme-settings@@anp-safari-tab-gap": 3, + "anuppuccin-theme-settings@@anp-safari-tab-animated": true, + "anuppuccin-theme-settings@@anp-layout-select": "anp-card-layout", + "anuppuccin-theme-settings@@anp-card-radius": 8, + "anuppuccin-theme-settings@@anp-card-layout-padding": 1, + "anuppuccin-theme-settings@@anp-card-shadows": true, + "anuppuccin-theme-settings@@anp-card-layout-actions": true, + "anuppuccin-theme-settings@@anp-card-layout-filebrowser": true, + "anuppuccin-theme-settings@@anp-border-radius": 16, + "anuppuccin-theme-settings@@anp-border-padding": 20 +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-style-settings/main.js b/.obsidian/plugins/obsidian-style-settings/main.js new file mode 100644 index 0000000..3a82c68 --- /dev/null +++ b/.obsidian/plugins/obsidian-style-settings/main.js @@ -0,0 +1,165 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var al=Object.create;var Kt=Object.defineProperty;var sl=Object.getOwnPropertyDescriptor;var ol=Object.getOwnPropertyNames;var ll=Object.getPrototypeOf,cl=Object.prototype.hasOwnProperty;var Zr=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),ul=(e,n)=>{for(var t in n)Kt(e,t,{get:n[t],enumerable:!0})},Zn=(e,n,t,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let i of ol(n))!cl.call(e,i)&&i!==t&&Kt(e,i,{get:()=>n[i],enumerable:!(a=sl(n,i))||a.enumerable});return e};var Xt=(e,n,t)=>(t=e!=null?al(ll(e)):{},Zn(n||!e||!e.__esModule?Kt(t,"default",{value:e,enumerable:!0}):t,e)),fl=e=>Zn(Kt({},"__esModule",{value:!0}),e);var Jn=Zr((Jr,en)=>{(function(e,n){typeof Jr=="object"&&typeof en!="undefined"?en.exports=n():typeof define=="function"&&define.amd?define(n):e.chroma=n()})(Jr,function(){"use strict";for(var e=function(r,s,o){return s===void 0&&(s=0),o===void 0&&(o=1),r<s?s:r>o?o:r},n=function(r){r._clipped=!1,r._unclipped=r.slice(0);for(var s=0;s<=3;s++)s<3?((r[s]<0||r[s]>255)&&(r._clipped=!0),r[s]=e(r[s],0,255)):s===3&&(r[s]=e(r[s],0,1));return r},t={},a=0,i=["Boolean","Number","String","Function","Array","Date","RegExp","Undefined","Null"];a<i.length;a+=1){var l=i[a];t["[object "+l+"]"]=l.toLowerCase()}var c=function(r){return t[Object.prototype.toString.call(r)]||"object"},f=function(r,s){return s===void 0&&(s=null),r.length>=3?Array.prototype.slice.call(r):c(r[0])=="object"&&s?s.split("").filter(function(o){return r[0][o]!==void 0}).map(function(o){return r[0][o]}):r[0]},p=function(r){if(r.length<2)return null;var s=r.length-1;return c(r[s])=="string"?r[s].toLowerCase():null},w=Math.PI,S={clip_rgb:n,limit:e,type:c,unpack:f,last:p,PI:w,TWOPI:w*2,PITHIRD:w/3,DEG2RAD:w/180,RAD2DEG:180/w},E={format:{},autodetect:[]},B=S.last,Y=S.clip_rgb,K=S.type,Q=function(){for(var s=[],o=arguments.length;o--;)s[o]=arguments[o];var g=this;if(K(s[0])==="object"&&s[0].constructor&&s[0].constructor===this.constructor)return s[0];var b=B(s),y=!1;if(!b){y=!0,E.sorted||(E.autodetect=E.autodetect.sort(function(R,O){return O.p-R.p}),E.sorted=!0);for(var d=0,A=E.autodetect;d<A.length;d+=1){var k=A[d];if(b=k.test.apply(k,s),b)break}}if(E.format[b]){var N=E.format[b].apply(null,y?s:s.slice(0,-1));g._rgb=Y(N)}else throw new Error("unknown format: "+s);g._rgb.length===3&&g._rgb.push(1)};Q.prototype.toString=function(){return K(this.hex)=="function"?this.hex():"["+this._rgb.join(",")+"]"};var L=Q,re=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(re.Color,[null].concat(r)))};re.Color=L,re.version="2.1.2";var F=re,oe=S.unpack,ke=Math.max,Ye=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=oe(r,"rgb"),g=o[0],b=o[1],y=o[2];g=g/255,b=b/255,y=y/255;var d=1-ke(g,ke(b,y)),A=d<1?1/(1-d):0,k=(1-g-d)*A,N=(1-b-d)*A,R=(1-y-d)*A;return[k,N,R,d]},qe=Ye,Te=S.unpack,xe=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];r=Te(r,"cmyk");var o=r[0],g=r[1],b=r[2],y=r[3],d=r.length>4?r[4]:1;return y===1?[0,0,0,d]:[o>=1?0:255*(1-o)*(1-y),g>=1?0:255*(1-g)*(1-y),b>=1?0:255*(1-b)*(1-y),d]},Pe=xe,Qe=S.unpack,ie=S.type;L.prototype.cmyk=function(){return qe(this._rgb)},F.cmyk=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["cmyk"])))},E.format.cmyk=Pe,E.autodetect.push({p:2,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r=Qe(r,"cmyk"),ie(r)==="array"&&r.length===4)return"cmyk"}});var Tt=S.unpack,Ve=S.last,V=function(r){return Math.round(r*100)/100},M=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=Tt(r,"hsla"),g=Ve(r)||"lsa";return o[0]=V(o[0]||0),o[1]=V(o[1]*100)+"%",o[2]=V(o[2]*100)+"%",g==="hsla"||o.length>3&&o[3]<1?(o[3]=o.length>3?o[3]:1,g="hsla"):o.length=3,g+"("+o.join(",")+")"},_=M,u=S.unpack,h=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];r=u(r,"rgba");var o=r[0],g=r[1],b=r[2];o/=255,g/=255,b/=255;var y=Math.min(o,g,b),d=Math.max(o,g,b),A=(d+y)/2,k,N;return d===y?(k=0,N=Number.NaN):k=A<.5?(d-y)/(d+y):(d-y)/(2-d-y),o==d?N=(g-b)/(d-y):g==d?N=2+(b-o)/(d-y):b==d&&(N=4+(o-g)/(d-y)),N*=60,N<0&&(N+=360),r.length>3&&r[3]!==void 0?[N,k,A,r[3]]:[N,k,A]},m=h,C=S.unpack,v=S.last,x=Math.round,T=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=C(r,"rgba"),g=v(r)||"rgb";return g.substr(0,3)=="hsl"?_(m(o),g):(o[0]=x(o[0]),o[1]=x(o[1]),o[2]=x(o[2]),(g==="rgba"||o.length>3&&o[3]<1)&&(o[3]=o.length>3?o[3]:1,g="rgba"),g+"("+o.slice(0,g==="rgb"?3:4).join(",")+")")},I=T,D=S.unpack,P=Math.round,G=function(){for(var r,s=[],o=arguments.length;o--;)s[o]=arguments[o];s=D(s,"hsl");var g=s[0],b=s[1],y=s[2],d,A,k;if(b===0)d=A=k=y*255;else{var N=[0,0,0],R=[0,0,0],O=y<.5?y*(1+b):y+b-y*b,j=2*y-O,H=g/360;N[0]=H+1/3,N[1]=H,N[2]=H-1/3;for(var X=0;X<3;X++)N[X]<0&&(N[X]+=1),N[X]>1&&(N[X]-=1),6*N[X]<1?R[X]=j+(O-j)*6*N[X]:2*N[X]<1?R[X]=O:3*N[X]<2?R[X]=j+(O-j)*(2/3-N[X])*6:R[X]=j;r=[P(R[0]*255),P(R[1]*255),P(R[2]*255)],d=r[0],A=r[1],k=r[2]}return s.length>3?[d,A,k,s[3]]:[d,A,k,1]},q=G,U=/^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/,fe=/^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/,le=/^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Oe=/^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,ye=/^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/,Se=/^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/,ae=Math.round,Re=function(r){r=r.toLowerCase().trim();var s;if(E.format.named)try{return E.format.named(r)}catch(X){}if(s=r.match(U)){for(var o=s.slice(1,4),g=0;g<3;g++)o[g]=+o[g];return o[3]=1,o}if(s=r.match(fe)){for(var b=s.slice(1,5),y=0;y<4;y++)b[y]=+b[y];return b}if(s=r.match(le)){for(var d=s.slice(1,4),A=0;A<3;A++)d[A]=ae(d[A]*2.55);return d[3]=1,d}if(s=r.match(Oe)){for(var k=s.slice(1,5),N=0;N<3;N++)k[N]=ae(k[N]*2.55);return k[3]=+k[3],k}if(s=r.match(ye)){var R=s.slice(1,4);R[1]*=.01,R[2]*=.01;var O=q(R);return O[3]=1,O}if(s=r.match(Se)){var j=s.slice(1,4);j[1]*=.01,j[2]*=.01;var H=q(j);return H[3]=+s[4],H}};Re.test=function(r){return U.test(r)||fe.test(r)||le.test(r)||Oe.test(r)||ye.test(r)||Se.test(r)};var _e=Re,Ke=S.type;L.prototype.css=function(r){return I(this._rgb,r)},F.css=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["css"])))},E.format.css=_e,E.autodetect.push({p:5,test:function(r){for(var s=[],o=arguments.length-1;o-- >0;)s[o]=arguments[o+1];if(!s.length&&Ke(r)==="string"&&_e.test(r))return"css"}});var Le=S.unpack;E.format.gl=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=Le(r,"rgba");return o[0]*=255,o[1]*=255,o[2]*=255,o},F.gl=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["gl"])))},L.prototype.gl=function(){var r=this._rgb;return[r[0]/255,r[1]/255,r[2]/255,r[3]]};var et=S.unpack,gt=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=et(r,"rgb"),g=o[0],b=o[1],y=o[2],d=Math.min(g,b,y),A=Math.max(g,b,y),k=A-d,N=k*100/255,R=d/(255-k)*100,O;return k===0?O=Number.NaN:(g===A&&(O=(b-y)/k),b===A&&(O=2+(y-g)/k),y===A&&(O=4+(g-b)/k),O*=60,O<0&&(O+=360)),[O,N,R]},tt=gt,Ar=S.unpack,kr=Math.floor,Tr=function(){for(var r,s,o,g,b,y,d=[],A=arguments.length;A--;)d[A]=arguments[A];d=Ar(d,"hcg");var k=d[0],N=d[1],R=d[2],O,j,H;R=R*255;var X=N*255;if(N===0)O=j=H=R;else{k===360&&(k=0),k>360&&(k-=360),k<0&&(k+=360),k/=60;var ee=kr(k),Z=k-ee,se=R*(1-N),ge=se+X*(1-Z),Me=se+X*Z,Ie=se+X;switch(ee){case 0:r=[Ie,Me,se],O=r[0],j=r[1],H=r[2];break;case 1:s=[ge,Ie,se],O=s[0],j=s[1],H=s[2];break;case 2:o=[se,Ie,Me],O=o[0],j=o[1],H=o[2];break;case 3:g=[se,ge,Ie],O=g[0],j=g[1],H=g[2];break;case 4:b=[Me,se,Ie],O=b[0],j=b[1],H=b[2];break;case 5:y=[Ie,se,ge],O=y[0],j=y[1],H=y[2];break}}return[O,j,H,d.length>3?d[3]:1]},Lr=Tr,Mr=S.unpack,Ir=S.type;L.prototype.hcg=function(){return tt(this._rgb)},F.hcg=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["hcg"])))},E.format.hcg=Lr,E.autodetect.push({p:1,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r=Mr(r,"hcg"),Ir(r)==="array"&&r.length===3)return"hcg"}});var jt=S.unpack,Lt=S.last,Gt=Math.round,ja=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=jt(r,"rgba"),g=o[0],b=o[1],y=o[2],d=o[3],A=Lt(r)||"auto";d===void 0&&(d=1),A==="auto"&&(A=d<1?"rgba":"rgb"),g=Gt(g),b=Gt(b),y=Gt(y);var k=g<<16|b<<8|y,N="000000"+k.toString(16);N=N.substr(N.length-6);var R="0"+Gt(d*255).toString(16);switch(R=R.substr(R.length-2),A.toLowerCase()){case"rgba":return"#"+N+R;case"argb":return"#"+R+N;default:return"#"+N}},An=ja,Ga=/^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,Ya=/^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/,Ua=function(r){if(r.match(Ga)){(r.length===4||r.length===7)&&(r=r.substr(1)),r.length===3&&(r=r.split(""),r=r[0]+r[0]+r[1]+r[1]+r[2]+r[2]);var s=parseInt(r,16),o=s>>16,g=s>>8&255,b=s&255;return[o,g,b,1]}if(r.match(Ya)){(r.length===5||r.length===9)&&(r=r.substr(1)),r.length===4&&(r=r.split(""),r=r[0]+r[0]+r[1]+r[1]+r[2]+r[2]+r[3]+r[3]);var y=parseInt(r,16),d=y>>24&255,A=y>>16&255,k=y>>8&255,N=Math.round((y&255)/255*100)/100;return[d,A,k,N]}throw new Error("unknown hex color: "+r)},kn=Ua,Wa=S.type;L.prototype.hex=function(r){return An(this._rgb,r)},F.hex=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["hex"])))},E.format.hex=kn,E.autodetect.push({p:4,test:function(r){for(var s=[],o=arguments.length-1;o-- >0;)s[o]=arguments[o+1];if(!s.length&&Wa(r)==="string"&&[3,4,5,6,7,8,9].indexOf(r.length)>=0)return"hex"}});var qa=S.unpack,Tn=S.TWOPI,za=Math.min,Ka=Math.sqrt,Xa=Math.acos,Qa=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=qa(r,"rgb"),g=o[0],b=o[1],y=o[2];g/=255,b/=255,y/=255;var d,A=za(g,b,y),k=(g+b+y)/3,N=k>0?1-A/k:0;return N===0?d=NaN:(d=(g-b+(g-y))/2,d/=Ka((g-b)*(g-b)+(g-y)*(b-y)),d=Xa(d),y>b&&(d=Tn-d),d/=Tn),[d*360,N,k]},Za=Qa,Ja=S.unpack,Fr=S.limit,pt=S.TWOPI,Nr=S.PITHIRD,ht=Math.cos,es=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];r=Ja(r,"hsi");var o=r[0],g=r[1],b=r[2],y,d,A;return isNaN(o)&&(o=0),isNaN(g)&&(g=0),o>360&&(o-=360),o<0&&(o+=360),o/=360,o<1/3?(A=(1-g)/3,y=(1+g*ht(pt*o)/ht(Nr-pt*o))/3,d=1-(A+y)):o<2/3?(o-=1/3,y=(1-g)/3,d=(1+g*ht(pt*o)/ht(Nr-pt*o))/3,A=1-(y+d)):(o-=2/3,d=(1-g)/3,A=(1+g*ht(pt*o)/ht(Nr-pt*o))/3,y=1-(d+A)),y=Fr(b*y*3),d=Fr(b*d*3),A=Fr(b*A*3),[y*255,d*255,A*255,r.length>3?r[3]:1]},ts=es,rs=S.unpack,ns=S.type;L.prototype.hsi=function(){return Za(this._rgb)},F.hsi=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["hsi"])))},E.format.hsi=ts,E.autodetect.push({p:2,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r=rs(r,"hsi"),ns(r)==="array"&&r.length===3)return"hsi"}});var is=S.unpack,as=S.type;L.prototype.hsl=function(){return m(this._rgb)},F.hsl=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["hsl"])))},E.format.hsl=q,E.autodetect.push({p:2,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r=is(r,"hsl"),as(r)==="array"&&r.length===3)return"hsl"}});var ss=S.unpack,os=Math.min,ls=Math.max,cs=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];r=ss(r,"rgb");var o=r[0],g=r[1],b=r[2],y=os(o,g,b),d=ls(o,g,b),A=d-y,k,N,R;return R=d/255,d===0?(k=Number.NaN,N=0):(N=A/d,o===d&&(k=(g-b)/A),g===d&&(k=2+(b-o)/A),b===d&&(k=4+(o-g)/A),k*=60,k<0&&(k+=360)),[k,N,R]},us=cs,fs=S.unpack,gs=Math.floor,ps=function(){for(var r,s,o,g,b,y,d=[],A=arguments.length;A--;)d[A]=arguments[A];d=fs(d,"hsv");var k=d[0],N=d[1],R=d[2],O,j,H;if(R*=255,N===0)O=j=H=R;else{k===360&&(k=0),k>360&&(k-=360),k<0&&(k+=360),k/=60;var X=gs(k),ee=k-X,Z=R*(1-N),se=R*(1-N*ee),ge=R*(1-N*(1-ee));switch(X){case 0:r=[R,ge,Z],O=r[0],j=r[1],H=r[2];break;case 1:s=[se,R,Z],O=s[0],j=s[1],H=s[2];break;case 2:o=[Z,R,ge],O=o[0],j=o[1],H=o[2];break;case 3:g=[Z,se,R],O=g[0],j=g[1],H=g[2];break;case 4:b=[ge,Z,R],O=b[0],j=b[1],H=b[2];break;case 5:y=[R,Z,se],O=y[0],j=y[1],H=y[2];break}}return[O,j,H,d.length>3?d[3]:1]},hs=ps,ds=S.unpack,vs=S.type;L.prototype.hsv=function(){return us(this._rgb)},F.hsv=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["hsv"])))},E.format.hsv=hs,E.autodetect.push({p:2,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r=ds(r,"hsv"),vs(r)==="array"&&r.length===3)return"hsv"}});var Be={Kn:18,Xn:.95047,Yn:1,Zn:1.08883,t0:.137931034,t1:.206896552,t2:.12841855,t3:.008856452},ms=S.unpack,Ln=Math.pow,bs=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=ms(r,"rgb"),g=o[0],b=o[1],y=o[2],d=ys(g,b,y),A=d[0],k=d[1],N=d[2],R=116*k-16;return[R<0?0:R,500*(A-k),200*(k-N)]},Or=function(r){return(r/=255)<=.04045?r/12.92:Ln((r+.055)/1.055,2.4)},Dr=function(r){return r>Be.t3?Ln(r,1/3):r/Be.t2+Be.t0},ys=function(r,s,o){r=Or(r),s=Or(s),o=Or(o);var g=Dr((.4124564*r+.3575761*s+.1804375*o)/Be.Xn),b=Dr((.2126729*r+.7151522*s+.072175*o)/Be.Yn),y=Dr((.0193339*r+.119192*s+.9503041*o)/Be.Zn);return[g,b,y]},Mn=bs,Ss=S.unpack,Cs=Math.pow,xs=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];r=Ss(r,"lab");var o=r[0],g=r[1],b=r[2],y,d,A,k,N,R;return d=(o+16)/116,y=isNaN(g)?d:d+g/500,A=isNaN(b)?d:d-b/200,d=Be.Yn*$r(d),y=Be.Xn*$r(y),A=Be.Zn*$r(A),k=Rr(3.2404542*y-1.5371385*d-.4985314*A),N=Rr(-.969266*y+1.8760108*d+.041556*A),R=Rr(.0556434*y-.2040259*d+1.0572252*A),[k,N,R,r.length>3?r[3]:1]},Rr=function(r){return 255*(r<=.00304?12.92*r:1.055*Cs(r,1/2.4)-.055)},$r=function(r){return r>Be.t1?r*r*r:Be.t2*(r-Be.t0)},In=xs,ws=S.unpack,Es=S.type;L.prototype.lab=function(){return Mn(this._rgb)},F.lab=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["lab"])))},E.format.lab=In,E.autodetect.push({p:2,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r=ws(r,"lab"),Es(r)==="array"&&r.length===3)return"lab"}});var _s=S.unpack,As=S.RAD2DEG,ks=Math.sqrt,Ts=Math.atan2,Ls=Math.round,Ms=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=_s(r,"lab"),g=o[0],b=o[1],y=o[2],d=ks(b*b+y*y),A=(Ts(y,b)*As+360)%360;return Ls(d*1e4)===0&&(A=Number.NaN),[g,d,A]},Is=Ms,Fs=S.unpack,Ns=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=Fs(r,"rgb"),g=o[0],b=o[1],y=o[2],d=Mn(g,b,y),A=d[0],k=d[1],N=d[2];return Is(A,k,N)},Fn=Ns,Os=S.unpack,Ds=S.DEG2RAD,Rs=Math.sin,$s=Math.cos,Ps=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=Os(r,"lch"),g=o[0],b=o[1],y=o[2];return isNaN(y)&&(y=0),y=y*Ds,[g,$s(y)*b,Rs(y)*b]},Vs=Ps,Bs=S.unpack,Hs=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];r=Bs(r,"lch");var o=r[0],g=r[1],b=r[2],y=Vs(o,g,b),d=y[0],A=y[1],k=y[2],N=In(d,A,k),R=N[0],O=N[1],j=N[2];return[R,O,j,r.length>3?r[3]:1]},Nn=Hs,js=S.unpack,Gs=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=js(r,"hcl").reverse();return Nn.apply(void 0,o)},Ys=Gs,Us=S.unpack,Ws=S.type;L.prototype.lch=function(){return Fn(this._rgb)},L.prototype.hcl=function(){return Fn(this._rgb).reverse()},F.lch=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["lch"])))},F.hcl=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["hcl"])))},E.format.lch=Nn,E.format.hcl=Ys,["lch","hcl"].forEach(function(r){return E.autodetect.push({p:2,test:function(){for(var s=[],o=arguments.length;o--;)s[o]=arguments[o];if(s=Us(s,r),Ws(s)==="array"&&s.length===3)return r}})});var qs={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflower:"#6495ed",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",laserlemon:"#ffff54",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrod:"#fafad2",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",maroon2:"#7f0000",maroon3:"#b03060",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",purple2:"#7f007f",purple3:"#a020f0",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},dt=qs,zs=S.type;L.prototype.name=function(){for(var r=An(this._rgb,"rgb"),s=0,o=Object.keys(dt);s<o.length;s+=1){var g=o[s];if(dt[g]===r)return g.toLowerCase()}return r},E.format.named=function(r){if(r=r.toLowerCase(),dt[r])return kn(dt[r]);throw new Error("unknown color name: "+r)},E.autodetect.push({p:5,test:function(r){for(var s=[],o=arguments.length-1;o-- >0;)s[o]=arguments[o+1];if(!s.length&&zs(r)==="string"&&dt[r.toLowerCase()])return"named"}});var Ks=S.unpack,Xs=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=Ks(r,"rgb"),g=o[0],b=o[1],y=o[2];return(g<<16)+(b<<8)+y},Qs=Xs,Zs=S.type,Js=function(r){if(Zs(r)=="number"&&r>=0&&r<=16777215){var s=r>>16,o=r>>8&255,g=r&255;return[s,o,g,1]}throw new Error("unknown num color: "+r)},eo=Js,to=S.type;L.prototype.num=function(){return Qs(this._rgb)},F.num=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["num"])))},E.format.num=eo,E.autodetect.push({p:5,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r.length===1&&to(r[0])==="number"&&r[0]>=0&&r[0]<=16777215)return"num"}});var On=S.unpack,Dn=S.type,Rn=Math.round;L.prototype.rgb=function(r){return r===void 0&&(r=!0),r===!1?this._rgb.slice(0,3):this._rgb.slice(0,3).map(Rn)},L.prototype.rgba=function(r){return r===void 0&&(r=!0),this._rgb.slice(0,4).map(function(s,o){return o<3?r===!1?s:Rn(s):s})},F.rgb=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["rgb"])))},E.format.rgb=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];var o=On(r,"rgba");return o[3]===void 0&&(o[3]=1),o},E.autodetect.push({p:3,test:function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];if(r=On(r,"rgba"),Dn(r)==="array"&&(r.length===3||r.length===4&&Dn(r[3])=="number"&&r[3]>=0&&r[3]<=1))return"rgb"}});var Yt=Math.log,ro=function(r){var s=r/100,o,g,b;return s<66?(o=255,g=-155.25485562709179-.44596950469579133*(g=s-2)+104.49216199393888*Yt(g),b=s<20?0:-254.76935184120902+.8274096064007395*(b=s-10)+115.67994401066147*Yt(b)):(o=351.97690566805693+.114206453784165*(o=s-55)-40.25366309332127*Yt(o),g=325.4494125711974+.07943456536662342*(g=s-50)-28.0852963507957*Yt(g),b=255),[o,g,b,1]},$n=ro,no=S.unpack,io=Math.round,ao=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];for(var o=no(r,"rgb"),g=o[0],b=o[2],y=1e3,d=4e4,A=.4,k;d-y>A;){k=(d+y)*.5;var N=$n(k);N[2]/N[0]>=b/g?d=k:y=k}return io(k)},so=ao;L.prototype.temp=L.prototype.kelvin=L.prototype.temperature=function(){return so(this._rgb)},F.temp=F.kelvin=F.temperature=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];return new(Function.prototype.bind.apply(L,[null].concat(r,["temp"])))},E.format.temp=E.format.kelvin=E.format.temperature=$n;var oo=S.type;L.prototype.alpha=function(r,s){return s===void 0&&(s=!1),r!==void 0&&oo(r)==="number"?s?(this._rgb[3]=r,this):new L([this._rgb[0],this._rgb[1],this._rgb[2],r],"rgb"):this._rgb[3]},L.prototype.clipped=function(){return this._rgb._clipped||!1},L.prototype.darken=function(r){r===void 0&&(r=1);var s=this,o=s.lab();return o[0]-=Be.Kn*r,new L(o,"lab").alpha(s.alpha(),!0)},L.prototype.brighten=function(r){return r===void 0&&(r=1),this.darken(-r)},L.prototype.darker=L.prototype.darken,L.prototype.brighter=L.prototype.brighten,L.prototype.get=function(r){var s=r.split("."),o=s[0],g=s[1],b=this[o]();if(g){var y=o.indexOf(g);if(y>-1)return b[y];throw new Error("unknown channel "+g+" in mode "+o)}else return b};var lo=S.type,co=Math.pow,uo=1e-7,fo=20;L.prototype.luminance=function(r){if(r!==void 0&&lo(r)==="number"){if(r===0)return new L([0,0,0,this._rgb[3]],"rgb");if(r===1)return new L([255,255,255,this._rgb[3]],"rgb");var s=this.luminance(),o="rgb",g=fo,b=function(d,A){var k=d.interpolate(A,.5,o),N=k.luminance();return Math.abs(r-N)<uo||!g--?k:N>r?b(d,k):b(k,A)},y=(s>r?b(new L([0,0,0]),this):b(this,new L([255,255,255]))).rgb();return new L(y.concat([this._rgb[3]]))}return go.apply(void 0,this._rgb.slice(0,3))};var go=function(r,s,o){return r=Pr(r),s=Pr(s),o=Pr(o),.2126*r+.7152*s+.0722*o},Pr=function(r){return r/=255,r<=.03928?r/12.92:co((r+.055)/1.055,2.4)},He={},Pn=S.type,Vn=function(r,s,o){o===void 0&&(o=.5);for(var g=[],b=arguments.length-3;b-- >0;)g[b]=arguments[b+3];var y=g[0]||"lrgb";if(!He[y]&&!g.length&&(y=Object.keys(He)[0]),!He[y])throw new Error("interpolation mode "+y+" is not defined");return Pn(r)!=="object"&&(r=new L(r)),Pn(s)!=="object"&&(s=new L(s)),He[y](r,s,o).alpha(r.alpha()+o*(s.alpha()-r.alpha()))};L.prototype.mix=L.prototype.interpolate=function(r,s){s===void 0&&(s=.5);for(var o=[],g=arguments.length-2;g-- >0;)o[g]=arguments[g+2];return Vn.apply(void 0,[this,r,s].concat(o))},L.prototype.premultiply=function(r){r===void 0&&(r=!1);var s=this._rgb,o=s[3];return r?(this._rgb=[s[0]*o,s[1]*o,s[2]*o,o],this):new L([s[0]*o,s[1]*o,s[2]*o,o],"rgb")},L.prototype.saturate=function(r){r===void 0&&(r=1);var s=this,o=s.lch();return o[1]+=Be.Kn*r,o[1]<0&&(o[1]=0),new L(o,"lch").alpha(s.alpha(),!0)},L.prototype.desaturate=function(r){return r===void 0&&(r=1),this.saturate(-r)};var Bn=S.type;L.prototype.set=function(r,s,o){o===void 0&&(o=!1);var g=r.split("."),b=g[0],y=g[1],d=this[b]();if(y){var A=b.indexOf(y);if(A>-1){if(Bn(s)=="string")switch(s.charAt(0)){case"+":d[A]+=+s;break;case"-":d[A]+=+s;break;case"*":d[A]*=+s.substr(1);break;case"/":d[A]/=+s.substr(1);break;default:d[A]=+s}else if(Bn(s)==="number")d[A]=s;else throw new Error("unsupported value for Color.set");var k=new L(d,b);return o?(this._rgb=k._rgb,this):k}throw new Error("unknown channel "+y+" in mode "+b)}else return d};var po=function(r,s,o){var g=r._rgb,b=s._rgb;return new L(g[0]+o*(b[0]-g[0]),g[1]+o*(b[1]-g[1]),g[2]+o*(b[2]-g[2]),"rgb")};He.rgb=po;var Vr=Math.sqrt,vt=Math.pow,ho=function(r,s,o){var g=r._rgb,b=g[0],y=g[1],d=g[2],A=s._rgb,k=A[0],N=A[1],R=A[2];return new L(Vr(vt(b,2)*(1-o)+vt(k,2)*o),Vr(vt(y,2)*(1-o)+vt(N,2)*o),Vr(vt(d,2)*(1-o)+vt(R,2)*o),"rgb")};He.lrgb=ho;var vo=function(r,s,o){var g=r.lab(),b=s.lab();return new L(g[0]+o*(b[0]-g[0]),g[1]+o*(b[1]-g[1]),g[2]+o*(b[2]-g[2]),"lab")};He.lab=vo;var Mt=function(r,s,o,g){var b,y,d,A;g==="hsl"?(d=r.hsl(),A=s.hsl()):g==="hsv"?(d=r.hsv(),A=s.hsv()):g==="hcg"?(d=r.hcg(),A=s.hcg()):g==="hsi"?(d=r.hsi(),A=s.hsi()):(g==="lch"||g==="hcl")&&(g="hcl",d=r.hcl(),A=s.hcl());var k,N,R,O,j,H;g.substr(0,1)==="h"&&(b=d,k=b[0],R=b[1],j=b[2],y=A,N=y[0],O=y[1],H=y[2]);var X,ee,Z,se;return!isNaN(k)&&!isNaN(N)?(N>k&&N-k>180?se=N-(k+360):N<k&&k-N>180?se=N+360-k:se=N-k,ee=k+o*se):isNaN(k)?isNaN(N)?ee=Number.NaN:(ee=N,(j==1||j==0)&&g!="hsv"&&(X=O)):(ee=k,(H==1||H==0)&&g!="hsv"&&(X=R)),X===void 0&&(X=R+o*(O-R)),Z=j+o*(H-j),new L([ee,X,Z],g)},Hn=function(r,s,o){return Mt(r,s,o,"lch")};He.lch=Hn,He.hcl=Hn;var mo=function(r,s,o){var g=r.num(),b=s.num();return new L(g+o*(b-g),"num")};He.num=mo;var bo=function(r,s,o){return Mt(r,s,o,"hcg")};He.hcg=bo;var yo=function(r,s,o){return Mt(r,s,o,"hsi")};He.hsi=yo;var So=function(r,s,o){return Mt(r,s,o,"hsl")};He.hsl=So;var Co=function(r,s,o){return Mt(r,s,o,"hsv")};He.hsv=Co;var xo=S.clip_rgb,Br=Math.pow,Hr=Math.sqrt,jr=Math.PI,jn=Math.cos,Gn=Math.sin,wo=Math.atan2,Eo=function(r,s,o){s===void 0&&(s="lrgb"),o===void 0&&(o=null);var g=r.length;o||(o=Array.from(new Array(g)).map(function(){return 1}));var b=g/o.reduce(function(ee,Z){return ee+Z});if(o.forEach(function(ee,Z){o[Z]*=b}),r=r.map(function(ee){return new L(ee)}),s==="lrgb")return _o(r,o);for(var y=r.shift(),d=y.get(s),A=[],k=0,N=0,R=0;R<d.length;R++)if(d[R]=(d[R]||0)*o[0],A.push(isNaN(d[R])?0:o[0]),s.charAt(R)==="h"&&!isNaN(d[R])){var O=d[R]/180*jr;k+=jn(O)*o[0],N+=Gn(O)*o[0]}var j=y.alpha()*o[0];r.forEach(function(ee,Z){var se=ee.get(s);j+=ee.alpha()*o[Z+1];for(var ge=0;ge<d.length;ge++)if(!isNaN(se[ge]))if(A[ge]+=o[Z+1],s.charAt(ge)==="h"){var Me=se[ge]/180*jr;k+=jn(Me)*o[Z+1],N+=Gn(Me)*o[Z+1]}else d[ge]+=se[ge]*o[Z+1]});for(var H=0;H<d.length;H++)if(s.charAt(H)==="h"){for(var X=wo(N/A[H],k/A[H])/jr*180;X<0;)X+=360;for(;X>=360;)X-=360;d[H]=X}else d[H]=d[H]/A[H];return j/=g,new L(d,s).alpha(j>.99999?1:j,!0)},_o=function(r,s){for(var o=r.length,g=[0,0,0,0],b=0;b<r.length;b++){var y=r[b],d=s[b]/o,A=y._rgb;g[0]+=Br(A[0],2)*d,g[1]+=Br(A[1],2)*d,g[2]+=Br(A[2],2)*d,g[3]+=A[3]*d}return g[0]=Hr(g[0]),g[1]=Hr(g[1]),g[2]=Hr(g[2]),g[3]>.9999999&&(g[3]=1),new L(xo(g))},mt=S.type,Ao=Math.pow,Ut=function(r){var s="rgb",o=F("#ccc"),g=0,b=[0,1],y=[],d=[0,0],A=!1,k=[],N=!1,R=0,O=1,j=!1,H={},X=!0,ee=1,Z=function($){if($=$||["#fff","#000"],$&&mt($)==="string"&&F.brewer&&F.brewer[$.toLowerCase()]&&($=F.brewer[$.toLowerCase()]),mt($)==="array"){$.length===1&&($=[$[0],$[0]]),$=$.slice(0);for(var z=0;z<$.length;z++)$[z]=F($[z]);y.length=0;for(var te=0;te<$.length;te++)y.push(te/($.length-1))}return Ue(),k=$},se=function($){if(A!=null){for(var z=A.length-1,te=0;te<z&&$>=A[te];)te++;return te-1}return 0},ge=function($){return $},Me=function($){return $},Ie=function($,z){var te,J;if(z==null&&(z=!1),isNaN($)||$===null)return o;if(z)J=$;else if(A&&A.length>2){var je=se($);J=je/(A.length-2)}else O!==R?J=($-R)/(O-R):J=1;J=Me(J),z||(J=ge(J)),ee!==1&&(J=Ao(J,ee)),J=d[0]+J*(1-d[0]-d[1]),J=Math.min(1,Math.max(0,J));var be=Math.floor(J*1e4);if(X&&H[be])te=H[be];else{if(mt(k)==="array")for(var ce=0;ce<y.length;ce++){var ue=y[ce];if(J<=ue){te=k[ce];break}if(J>=ue&&ce===y.length-1){te=k[ce];break}if(J>ue&&J<y[ce+1]){J=(J-ue)/(y[ce+1]-ue),te=F.interpolate(k[ce],k[ce+1],J,s);break}}else mt(k)==="function"&&(te=k(J));X&&(H[be]=te)}return te},Ue=function(){return H={}};Z(r);var ne=function($){var z=F(Ie($));return N&&z[N]?z[N]():z};return ne.classes=function($){if($!=null){if(mt($)==="array")A=$,b=[$[0],$[$.length-1]];else{var z=F.analyze(b);$===0?A=[z.min,z.max]:A=F.limits(z,"e",$)}return ne}return A},ne.domain=function($){if(!arguments.length)return b;R=$[0],O=$[$.length-1],y=[];var z=k.length;if($.length===z&&R!==O)for(var te=0,J=Array.from($);te<J.length;te+=1){var je=J[te];y.push((je-R)/(O-R))}else{for(var be=0;be<z;be++)y.push(be/(z-1));if($.length>2){var ce=$.map(function(we,pe){return pe/($.length-1)}),ue=$.map(function(we){return(we-R)/(O-R)});ue.every(function(we,pe){return ce[pe]===we})||(Me=function(we){if(we<=0||we>=1)return we;for(var pe=0;we>=ue[pe+1];)pe++;var it=(we-ue[pe])/(ue[pe+1]-ue[pe]),bt=ce[pe]+it*(ce[pe+1]-ce[pe]);return bt})}}return b=[R,O],ne},ne.mode=function($){return arguments.length?(s=$,Ue(),ne):s},ne.range=function($,z){return Z($,z),ne},ne.out=function($){return N=$,ne},ne.spread=function($){return arguments.length?(g=$,ne):g},ne.correctLightness=function($){return $==null&&($=!0),j=$,Ue(),j?ge=function(z){for(var te=Ie(0,!0).lab()[0],J=Ie(1,!0).lab()[0],je=te>J,be=Ie(z,!0).lab()[0],ce=te+(J-te)*z,ue=be-ce,we=0,pe=1,it=20;Math.abs(ue)>.01&&it-- >0;)(function(){return je&&(ue*=-1),ue<0?(we=z,z+=(pe-z)*.5):(pe=z,z+=(we-z)*.5),be=Ie(z,!0).lab()[0],ue=be-ce})();return z}:ge=function(z){return z},ne},ne.padding=function($){return $!=null?(mt($)==="number"&&($=[$,$]),d=$,ne):d},ne.colors=function($,z){arguments.length<2&&(z="hex");var te=[];if(arguments.length===0)te=k.slice(0);else if($===1)te=[ne(.5)];else if($>1){var J=b[0],je=b[1]-J;te=ko(0,$,!1).map(function(pe){return ne(J+pe/($-1)*je)})}else{r=[];var be=[];if(A&&A.length>2)for(var ce=1,ue=A.length,we=1<=ue;we?ce<ue:ce>ue;we?ce++:ce--)be.push((A[ce-1]+A[ce])*.5);else be=b;te=be.map(function(pe){return ne(pe)})}return F[z]&&(te=te.map(function(pe){return pe[z]()})),te},ne.cache=function($){return $!=null?(X=$,ne):X},ne.gamma=function($){return $!=null?(ee=$,ne):ee},ne.nodata=function($){return $!=null?(o=F($),ne):o},ne};function ko(r,s,o){for(var g=[],b=r<s,y=o?b?s+1:s-1:s,d=r;b?d<y:d>y;b?d++:d--)g.push(d);return g}var Gr=function(r){var s,o,g,b,y,d,A;if(r=r.map(function(O){return new L(O)}),r.length===2)s=r.map(function(O){return O.lab()}),y=s[0],d=s[1],b=function(O){var j=[0,1,2].map(function(H){return y[H]+O*(d[H]-y[H])});return new L(j,"lab")};else if(r.length===3)o=r.map(function(O){return O.lab()}),y=o[0],d=o[1],A=o[2],b=function(O){var j=[0,1,2].map(function(H){return(1-O)*(1-O)*y[H]+2*(1-O)*O*d[H]+O*O*A[H]});return new L(j,"lab")};else if(r.length===4){var k;g=r.map(function(O){return O.lab()}),y=g[0],d=g[1],A=g[2],k=g[3],b=function(O){var j=[0,1,2].map(function(H){return(1-O)*(1-O)*(1-O)*y[H]+3*(1-O)*(1-O)*O*d[H]+3*(1-O)*O*O*A[H]+O*O*O*k[H]});return new L(j,"lab")}}else if(r.length===5){var N=Gr(r.slice(0,3)),R=Gr(r.slice(2,5));b=function(O){return O<.5?N(O*2):R((O-.5)*2)}}return b},To=function(r){var s=Gr(r);return s.scale=function(){return Ut(s)},s},ze=function(r,s,o){if(!ze[o])throw new Error("unknown blend mode "+o);return ze[o](r,s)},rt=function(r){return function(s,o){var g=F(o).rgb(),b=F(s).rgb();return F.rgb(r(g,b))}},nt=function(r){return function(s,o){var g=[];return g[0]=r(s[0],o[0]),g[1]=r(s[1],o[1]),g[2]=r(s[2],o[2]),g}},Lo=function(r){return r},Mo=function(r,s){return r*s/255},Io=function(r,s){return r>s?s:r},Fo=function(r,s){return r>s?r:s},No=function(r,s){return 255*(1-(1-r/255)*(1-s/255))},Oo=function(r,s){return s<128?2*r*s/255:255*(1-2*(1-r/255)*(1-s/255))},Do=function(r,s){return 255*(1-(1-s/255)/(r/255))},Ro=function(r,s){return r===255?255:(r=255*(s/255)/(1-r/255),r>255?255:r)};ze.normal=rt(nt(Lo)),ze.multiply=rt(nt(Mo)),ze.screen=rt(nt(No)),ze.overlay=rt(nt(Oo)),ze.darken=rt(nt(Io)),ze.lighten=rt(nt(Fo)),ze.dodge=rt(nt(Ro)),ze.burn=rt(nt(Do));for(var $o=ze,Yr=S.type,Po=S.clip_rgb,Vo=S.TWOPI,Bo=Math.pow,Ho=Math.sin,jo=Math.cos,Go=function(r,s,o,g,b){r===void 0&&(r=300),s===void 0&&(s=-1.5),o===void 0&&(o=1),g===void 0&&(g=1),b===void 0&&(b=[0,1]);var y=0,d;Yr(b)==="array"?d=b[1]-b[0]:(d=0,b=[b,b]);var A=function(k){var N=Vo*((r+120)/360+s*k),R=Bo(b[0]+d*k,g),O=y!==0?o[0]+k*y:o,j=O*R*(1-R)/2,H=jo(N),X=Ho(N),ee=R+j*(-.14861*H+1.78277*X),Z=R+j*(-.29227*H-.90649*X),se=R+j*(1.97294*H);return F(Po([ee*255,Z*255,se*255,1]))};return A.start=function(k){return k==null?r:(r=k,A)},A.rotations=function(k){return k==null?s:(s=k,A)},A.gamma=function(k){return k==null?g:(g=k,A)},A.hue=function(k){return k==null?o:(o=k,Yr(o)==="array"?(y=o[1]-o[0],y===0&&(o=o[1])):y=0,A)},A.lightness=function(k){return k==null?b:(Yr(k)==="array"?(b=k,d=k[1]-k[0]):(b=[k,k],d=0),A)},A.scale=function(){return F.scale(A)},A.hue(o),A},Yo="0123456789abcdef",Uo=Math.floor,Wo=Math.random,qo=function(){for(var r="#",s=0;s<6;s++)r+=Yo.charAt(Uo(Wo()*16));return new L(r,"hex")},Yn=Math.log,zo=Math.pow,Ko=Math.floor,Xo=Math.abs,Un=function(r,s){s===void 0&&(s=null);var o={min:Number.MAX_VALUE,max:Number.MAX_VALUE*-1,sum:0,values:[],count:0};return c(r)==="object"&&(r=Object.values(r)),r.forEach(function(g){s&&c(g)==="object"&&(g=g[s]),g!=null&&!isNaN(g)&&(o.values.push(g),o.sum+=g,g<o.min&&(o.min=g),g>o.max&&(o.max=g),o.count+=1)}),o.domain=[o.min,o.max],o.limits=function(g,b){return Wn(o,g,b)},o},Wn=function(r,s,o){s===void 0&&(s="equal"),o===void 0&&(o=7),c(r)=="array"&&(r=Un(r));var g=r.min,b=r.max,y=r.values.sort(function(Xr,Qr){return Xr-Qr});if(o===1)return[g,b];var d=[];if(s.substr(0,1)==="c"&&(d.push(g),d.push(b)),s.substr(0,1)==="e"){d.push(g);for(var A=1;A<o;A++)d.push(g+A/o*(b-g));d.push(b)}else if(s.substr(0,1)==="l"){if(g<=0)throw new Error("Logarithmic scales are only possible for values > 0");var k=Math.LOG10E*Yn(g),N=Math.LOG10E*Yn(b);d.push(g);for(var R=1;R<o;R++)d.push(zo(10,k+R/o*(N-k)));d.push(b)}else if(s.substr(0,1)==="q"){d.push(g);for(var O=1;O<o;O++){var j=(y.length-1)*O/o,H=Ko(j);if(H===j)d.push(y[H]);else{var X=j-H;d.push(y[H]*(1-X)+y[H+1]*X)}}d.push(b)}else if(s.substr(0,1)==="k"){var ee,Z=y.length,se=new Array(Z),ge=new Array(o),Me=!0,Ie=0,Ue=null;Ue=[],Ue.push(g);for(var ne=1;ne<o;ne++)Ue.push(g+ne/o*(b-g));for(Ue.push(b);Me;){for(var $=0;$<o;$++)ge[$]=0;for(var z=0;z<Z;z++)for(var te=y[z],J=Number.MAX_VALUE,je=void 0,be=0;be<o;be++){var ce=Xo(Ue[be]-te);ce<J&&(J=ce,je=be),ge[je]++,se[z]=je}for(var ue=new Array(o),we=0;we<o;we++)ue[we]=null;for(var pe=0;pe<Z;pe++)ee=se[pe],ue[ee]===null?ue[ee]=y[pe]:ue[ee]+=y[pe];for(var it=0;it<o;it++)ue[it]*=1/ge[it];Me=!1;for(var bt=0;bt<o;bt++)if(ue[bt]!==Ue[bt]){Me=!0;break}Ue=ue,Ie++,Ie>200&&(Me=!1)}for(var It={},qr=0;qr<o;qr++)It[qr]=[];for(var zt=0;zt<Z;zt++)ee=se[zt],It[ee].push(y[zt]);for(var lt=[],Ft=0;Ft<o;Ft++)lt.push(It[Ft][0]),lt.push(It[Ft][It[Ft].length-1]);lt=lt.sort(function(Xr,Qr){return Xr-Qr}),d.push(lt[0]);for(var zr=1;zr<lt.length;zr+=2){var Kr=lt[zr];!isNaN(Kr)&&d.indexOf(Kr)===-1&&d.push(Kr)}}return d},qn={analyze:Un,limits:Wn},Qo=function(r,s){r=new L(r),s=new L(s);var o=r.luminance(),g=s.luminance();return o>g?(o+.05)/(g+.05):(g+.05)/(o+.05)},Wt=Math.sqrt,Zo=Math.atan2,zn=Math.abs,Kn=Math.cos,Ur=Math.PI,Jo=function(r,s,o,g){o===void 0&&(o=1),g===void 0&&(g=1),r=new L(r),s=new L(s);for(var b=Array.from(r.lab()),y=b[0],d=b[1],A=b[2],k=Array.from(s.lab()),N=k[0],R=k[1],O=k[2],j=Wt(d*d+A*A),H=Wt(R*R+O*O),X=y<16?.511:.040975*y/(1+.01765*y),ee=.0638*j/(1+.0131*j)+.638,Z=j<1e-6?0:Zo(A,d)*180/Ur;Z<0;)Z+=360;for(;Z>=360;)Z-=360;var se=Z>=164&&Z<=345?.56+zn(.2*Kn(Ur*(Z+168)/180)):.36+zn(.4*Kn(Ur*(Z+35)/180)),ge=j*j*j*j,Me=Wt(ge/(ge+1900)),Ie=ee*(Me*se+1-Me),Ue=y-N,ne=j-H,$=d-R,z=A-O,te=$*$+z*z-ne*ne,J=Ue/(o*X),je=ne/(g*ee),be=Ie;return Wt(J*J+je*je+te/(be*be))},el=function(r,s,o){o===void 0&&(o="lab"),r=new L(r),s=new L(s);var g=r.get(o),b=s.get(o),y=0;for(var d in g){var A=(g[d]||0)-(b[d]||0);y+=A*A}return Math.sqrt(y)},tl=function(){for(var r=[],s=arguments.length;s--;)r[s]=arguments[s];try{return new(Function.prototype.bind.apply(L,[null].concat(r))),!0}catch(o){return!1}},rl={cool:function(){return Ut([F.hsl(180,1,.9),F.hsl(250,.7,.4)])},hot:function(){return Ut(["#000","#f00","#ff0","#fff"],[0,.25,.75,1]).mode("rgb")}},qt={OrRd:["#fff7ec","#fee8c8","#fdd49e","#fdbb84","#fc8d59","#ef6548","#d7301f","#b30000","#7f0000"],PuBu:["#fff7fb","#ece7f2","#d0d1e6","#a6bddb","#74a9cf","#3690c0","#0570b0","#045a8d","#023858"],BuPu:["#f7fcfd","#e0ecf4","#bfd3e6","#9ebcda","#8c96c6","#8c6bb1","#88419d","#810f7c","#4d004b"],Oranges:["#fff5eb","#fee6ce","#fdd0a2","#fdae6b","#fd8d3c","#f16913","#d94801","#a63603","#7f2704"],BuGn:["#f7fcfd","#e5f5f9","#ccece6","#99d8c9","#66c2a4","#41ae76","#238b45","#006d2c","#00441b"],YlOrBr:["#ffffe5","#fff7bc","#fee391","#fec44f","#fe9929","#ec7014","#cc4c02","#993404","#662506"],YlGn:["#ffffe5","#f7fcb9","#d9f0a3","#addd8e","#78c679","#41ab5d","#238443","#006837","#004529"],Reds:["#fff5f0","#fee0d2","#fcbba1","#fc9272","#fb6a4a","#ef3b2c","#cb181d","#a50f15","#67000d"],RdPu:["#fff7f3","#fde0dd","#fcc5c0","#fa9fb5","#f768a1","#dd3497","#ae017e","#7a0177","#49006a"],Greens:["#f7fcf5","#e5f5e0","#c7e9c0","#a1d99b","#74c476","#41ab5d","#238b45","#006d2c","#00441b"],YlGnBu:["#ffffd9","#edf8b1","#c7e9b4","#7fcdbb","#41b6c4","#1d91c0","#225ea8","#253494","#081d58"],Purples:["#fcfbfd","#efedf5","#dadaeb","#bcbddc","#9e9ac8","#807dba","#6a51a3","#54278f","#3f007d"],GnBu:["#f7fcf0","#e0f3db","#ccebc5","#a8ddb5","#7bccc4","#4eb3d3","#2b8cbe","#0868ac","#084081"],Greys:["#ffffff","#f0f0f0","#d9d9d9","#bdbdbd","#969696","#737373","#525252","#252525","#000000"],YlOrRd:["#ffffcc","#ffeda0","#fed976","#feb24c","#fd8d3c","#fc4e2a","#e31a1c","#bd0026","#800026"],PuRd:["#f7f4f9","#e7e1ef","#d4b9da","#c994c7","#df65b0","#e7298a","#ce1256","#980043","#67001f"],Blues:["#f7fbff","#deebf7","#c6dbef","#9ecae1","#6baed6","#4292c6","#2171b5","#08519c","#08306b"],PuBuGn:["#fff7fb","#ece2f0","#d0d1e6","#a6bddb","#67a9cf","#3690c0","#02818a","#016c59","#014636"],Viridis:["#440154","#482777","#3f4a8a","#31678e","#26838f","#1f9d8a","#6cce5a","#b6de2b","#fee825"],Spectral:["#9e0142","#d53e4f","#f46d43","#fdae61","#fee08b","#ffffbf","#e6f598","#abdda4","#66c2a5","#3288bd","#5e4fa2"],RdYlGn:["#a50026","#d73027","#f46d43","#fdae61","#fee08b","#ffffbf","#d9ef8b","#a6d96a","#66bd63","#1a9850","#006837"],RdBu:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#f7f7f7","#d1e5f0","#92c5de","#4393c3","#2166ac","#053061"],PiYG:["#8e0152","#c51b7d","#de77ae","#f1b6da","#fde0ef","#f7f7f7","#e6f5d0","#b8e186","#7fbc41","#4d9221","#276419"],PRGn:["#40004b","#762a83","#9970ab","#c2a5cf","#e7d4e8","#f7f7f7","#d9f0d3","#a6dba0","#5aae61","#1b7837","#00441b"],RdYlBu:["#a50026","#d73027","#f46d43","#fdae61","#fee090","#ffffbf","#e0f3f8","#abd9e9","#74add1","#4575b4","#313695"],BrBG:["#543005","#8c510a","#bf812d","#dfc27d","#f6e8c3","#f5f5f5","#c7eae5","#80cdc1","#35978f","#01665e","#003c30"],RdGy:["#67001f","#b2182b","#d6604d","#f4a582","#fddbc7","#ffffff","#e0e0e0","#bababa","#878787","#4d4d4d","#1a1a1a"],PuOr:["#7f3b08","#b35806","#e08214","#fdb863","#fee0b6","#f7f7f7","#d8daeb","#b2abd2","#8073ac","#542788","#2d004b"],Set2:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],Accent:["#7fc97f","#beaed4","#fdc086","#ffff99","#386cb0","#f0027f","#bf5b17","#666666"],Set1:["#e41a1c","#377eb8","#4daf4a","#984ea3","#ff7f00","#ffff33","#a65628","#f781bf","#999999"],Set3:["#8dd3c7","#ffffb3","#bebada","#fb8072","#80b1d3","#fdb462","#b3de69","#fccde5","#d9d9d9","#bc80bd","#ccebc5","#ffed6f"],Dark2:["#1b9e77","#d95f02","#7570b3","#e7298a","#66a61e","#e6ab02","#a6761d","#666666"],Paired:["#a6cee3","#1f78b4","#b2df8a","#33a02c","#fb9a99","#e31a1c","#fdbf6f","#ff7f00","#cab2d6","#6a3d9a","#ffff99","#b15928"],Pastel2:["#b3e2cd","#fdcdac","#cbd5e8","#f4cae4","#e6f5c9","#fff2ae","#f1e2cc","#cccccc"],Pastel1:["#fbb4ae","#b3cde3","#ccebc5","#decbe4","#fed9a6","#ffffcc","#e5d8bd","#fddaec","#f2f2f2"]},Wr=0,Xn=Object.keys(qt);Wr<Xn.length;Wr+=1){var Qn=Xn[Wr];qt[Qn.toLowerCase()]=qt[Qn]}var nl=qt;F.average=Eo,F.bezier=To,F.blend=$o,F.cubehelix=Go,F.mix=F.interpolate=Vn,F.random=qo,F.scale=Ut,F.analyze=qn.analyze,F.contrast=Qo,F.deltaE=Jo,F.distance=el,F.limits=qn.limits,F.valid=tl,F.scales=rl,F.colors=dt,F.brewer=nl;var il=F;return il})});var Ai=Zr((_i,er)=>{((e,n)=>{typeof define=="function"&&define.amd?define([],n):typeof er=="object"&&er.exports?er.exports=n():e.fuzzysort=n()})(_i,e=>{"use strict";var n=(V,M)=>{if(V=="farzher")return{target:"farzher was here (^-^*)/",score:0,_indexes:[0]};if(!V||!M)return ie;var _=w(V);Te(M)||(M=p(M));var u=_.bitflags;return(u&M._bitflags)!==u?ie:E(_,M)},t=(V,M,_)=>{if(V=="farzher")return[{target:"farzher was here (^-^*)/",score:0,_indexes:[0],obj:M?M[0]:ie}];if(!V)return _&&_.all?S(V,M,_):Qe;var u=w(V),h=u.bitflags,m=u.containsSpace,C=_&&_.threshold||Pe,v=_&&_.limit||xe,x=0,T=0,I=M.length;if(_&&_.key)for(var D=_.key,P=0;P<I;++P){var G=M[P],q=qe(G,D);if(q&&(Te(q)||(q=p(q)),(h&q._bitflags)===h)){var U=E(u,q);U!==ie&&(U.score<C||(U={target:U.target,_targetLower:"",_targetLowerCodes:ie,_nextBeginningIndexes:ie,_bitflags:0,score:U.score,_indexes:U._indexes,obj:G},x<v?(Ve.add(U),++x):(++T,U.score>Ve.peek().score&&Ve.replaceTop(U))))}}else if(_&&_.keys)for(var fe=_.scoreFn||Ye,le=_.keys,Oe=le.length,P=0;P<I;++P){for(var G=M[P],ye=new Array(Oe),Se=0;Se<Oe;++Se){var D=le[Se],q=qe(G,D);if(!q){ye[Se]=ie;continue}Te(q)||(q=p(q)),(h&q._bitflags)!==h?ye[Se]=ie:ye[Se]=E(u,q)}ye.obj=G;var ae=fe(ye);ae!==ie&&(ae<C||(ye.score=ae,x<v?(Ve.add(ye),++x):(++T,ae>Ve.peek().score&&Ve.replaceTop(ye))))}else for(var P=0;P<I;++P){var q=M[P];if(q&&(Te(q)||(q=p(q)),(h&q._bitflags)===h)){var U=E(u,q);U!==ie&&(U.score<C||(x<v?(Ve.add(U),++x):(++T,U.score>Ve.peek().score&&Ve.replaceTop(U))))}}if(x===0)return Qe;for(var Re=new Array(x),P=x-1;P>=0;--P)Re[P]=Ve.poll();return Re.total=x+T,Re},a=(V,M,_)=>{if(typeof M=="function")return i(V,M);if(V===ie)return ie;M===void 0&&(M="<b>"),_===void 0&&(_="</b>");var u="",h=0,m=!1,C=V.target,v=C.length,x=V._indexes;x=x.slice(0,x.len).sort((D,P)=>D-P);for(var T=0;T<v;++T){var I=C[T];if(x[h]===T){if(++h,m||(m=!0,u+=M),h===x.length){u+=I+_+C.substr(T+1);break}}else m&&(m=!1,u+=_);u+=I}return u},i=(T,M)=>{if(T===ie)return ie;var _=T.target,u=_.length,h=T._indexes;h=h.slice(0,h.len).sort((P,G)=>P-G);for(var m="",C=0,v=0,x=!1,T=[],I=0;I<u;++I){var D=_[I];if(h[v]===I){if(++v,x||(x=!0,T.push(m),m=""),v===h.length){m+=D,T.push(M(m,C++)),m="",T.push(_.substr(I+1));break}}else x&&(x=!1,T.push(M(m,C++)),m="");m+=D}return T},l=V=>V._indexes.slice(0,V._indexes.len).sort((M,_)=>M-_),c=V=>{typeof V!="string"&&(V="");var M=Y(V);return{target:V,_targetLower:M._lower,_targetLowerCodes:M.lowerCodes,_nextBeginningIndexes:ie,_bitflags:M.bitflags,score:ie,_indexes:[0],obj:ie}},f=V=>{typeof V!="string"&&(V=""),V=V.trim();var M=Y(V),_=[];if(M.containsSpace){var u=V.split(/\s+/);u=[...new Set(u)];for(var h=0;h<u.length;h++)if(u[h]!==""){var m=Y(u[h]);_.push({lowerCodes:m.lowerCodes,_lower:u[h].toLowerCase(),containsSpace:!1})}}return{lowerCodes:M.lowerCodes,bitflags:M.bitflags,containsSpace:M.containsSpace,_lower:M._lower,spaceSearches:_}},p=V=>{if(V.length>999)return c(V);var M=re.get(V);return M!==void 0||(M=c(V),re.set(V,M)),M},w=V=>{if(V.length>999)return f(V);var M=F.get(V);return M!==void 0||(M=f(V),F.set(V,M)),M},S=(V,M,_)=>{var u=[];u.total=M.length;var h=_&&_.limit||xe;if(_&&_.key)for(var m=0;m<M.length;m++){var C=M[m],v=qe(C,_.key);if(v){Te(v)||(v=p(v)),v.score=Pe,v._indexes.len=0;var x=v;if(x={target:x.target,_targetLower:"",_targetLowerCodes:ie,_nextBeginningIndexes:ie,_bitflags:0,score:v.score,_indexes:ie,obj:C},u.push(x),u.length>=h)return u}}else if(_&&_.keys)for(var m=0;m<M.length;m++){for(var C=M[m],T=new Array(_.keys.length),I=_.keys.length-1;I>=0;--I){var v=qe(C,_.keys[I]);if(!v){T[I]=ie;continue}Te(v)||(v=p(v)),v.score=Pe,v._indexes.len=0,T[I]=v}if(T.obj=C,T.score=Pe,u.push(T),u.length>=h)return u}else for(var m=0;m<M.length;m++){var v=M[m];if(v&&(Te(v)||(v=p(v)),v.score=Pe,v._indexes.len=0,u.push(v),u.length>=h))return u}return u},E=(V,M,_=!1)=>{if(_===!1&&V.containsSpace)return B(V,M);for(var u=V._lower,h=V.lowerCodes,m=h[0],C=M._targetLowerCodes,v=h.length,x=C.length,P=0,T=0,I=0;;){var D=m===C[T];if(D){if(oe[I++]=T,++P,P===v)break;m=h[P]}if(++T,T>=x)return ie}var P=0,G=!1,q=0,U=M._nextBeginningIndexes;U===ie&&(U=M._nextBeginningIndexes=Q(M.target));var fe=T=oe[0]===0?0:U[oe[0]-1],le=0;if(T!==x)for(;;)if(T>=x){if(P<=0||(++le,le>200))break;--P;var Oe=ke[--q];T=U[Oe]}else{var D=h[P]===C[T];if(D){if(ke[q++]=T,++P,P===v){G=!0;break}++T}else T=U[T]}var ye=M._targetLower.indexOf(u,oe[0]),Se=~ye;if(Se&&!G)for(var ae=0;ae<I;++ae)oe[ae]=ye+ae;var Re=!1;Se&&(Re=M._nextBeginningIndexes[ye-1]===ye);{if(G)var _e=ke,Ke=q;else var _e=oe,Ke=I;for(var Le=0,et=0,ae=1;ae<v;++ae)_e[ae]-_e[ae-1]!==1&&(Le-=_e[ae],++et);var gt=_e[v-1]-_e[0]-(v-1);if(Le-=(12+gt)*et,_e[0]!==0&&(Le-=_e[0]*_e[0]*.2),!G)Le*=1e3;else{for(var tt=1,ae=U[0];ae<x;ae=U[ae])++tt;tt>24&&(Le*=(tt-24)*10)}Se&&(Le/=1+v*v*1),Re&&(Le/=1+v*v*1),Le-=x-v,M.score=Le;for(var ae=0;ae<Ke;++ae)M._indexes[ae]=_e[ae];return M._indexes.len=Ke,M}},B=(V,M)=>{for(var _=new Set,u=0,h=ie,m=0,C=V.spaceSearches,I=0;I<C.length;++I){var v=C[I];if(h=E(v,M),h===ie)return ie;u+=h.score,h._indexes[0]<m&&(u-=m-h._indexes[0]),m=h._indexes[0];for(var x=0;x<h._indexes.len;++x)_.add(h._indexes[x])}var T=E(V,M,!0);if(T!==ie&&T.score>u)return T;h.score=u;var I=0;for(let D of _)h._indexes[I++]=D;return h._indexes.len=I,h},Y=V=>{for(var M=V.length,_=V.toLowerCase(),u=[],h=0,m=!1,C=0;C<M;++C){var v=u[C]=_.charCodeAt(C);if(v===32){m=!0;continue}var x=v>=97&&v<=122?v-97:v>=48&&v<=57?26:v<=127?30:31;h|=1<<x}return{lowerCodes:u,bitflags:h,containsSpace:m,_lower:_}},K=V=>{for(var M=V.length,_=[],u=0,h=!1,m=!1,C=0;C<M;++C){var v=V.charCodeAt(C),x=v>=65&&v<=90,T=x||v>=97&&v<=122||v>=48&&v<=57,I=x&&!h||!m||!T;h=x,m=T,I&&(_[u++]=C)}return _},Q=V=>{for(var M=V.length,_=K(V),u=[],h=_[0],m=0,C=0;C<M;++C)h>C?u[C]=h:(h=_[++m],u[C]=h===void 0?M:h);return u},L=()=>{re.clear(),F.clear(),oe=[],ke=[]},re=new Map,F=new Map,oe=[],ke=[],Ye=V=>{for(var M=Pe,_=V.length,u=0;u<_;++u){var h=V[u];if(h!==ie){var m=h.score;m>M&&(M=m)}}return M===Pe?ie:M},qe=(V,M)=>{var _=V[M];if(_!==void 0)return _;var u=M;Array.isArray(M)||(u=M.split("."));for(var h=u.length,m=-1;V&&++m<h;)V=V[u[m]];return V},Te=V=>typeof V=="object",xe=1/0,Pe=-xe,Qe=[];Qe.total=0;var ie=null,Tt=V=>{var M=[],_=0,u={},h=m=>{for(var C=0,v=M[C],x=1;x<_;){var T=x+1;C=x,T<_&&M[T].score<M[x].score&&(C=T),M[C-1>>1]=M[C],x=1+(C<<1)}for(var I=C-1>>1;C>0&&v.score<M[I].score;I=(C=I)-1>>1)M[C]=M[I];M[C]=v};return u.add=m=>{var C=_;M[_++]=m;for(var v=C-1>>1;C>0&&m.score<M[v].score;v=(C=v)-1>>1)M[C]=M[v];M[C]=m},u.poll=m=>{if(_!==0){var C=M[0];return M[0]=M[--_],h(),C}},u.peek=m=>{if(_!==0)return M[0]},u.replaceTop=m=>{M[0]=m,h()},u},Ve=Tt();return{single:n,go:t,highlight:a,prepare:c,indexes:l,cleanup:L}})});var cn=Zr((ar,ln)=>{(function(e,n){typeof ar=="object"&&typeof ln=="object"?ln.exports=n():typeof define=="function"&&define.amd?define([],n):typeof ar=="object"?ar.Pickr=n():e.Pickr=n()})(self,function(){return(()=>{"use strict";var e={d:(_,u)=>{for(var h in u)e.o(u,h)&&!e.o(_,h)&&Object.defineProperty(_,h,{enumerable:!0,get:u[h]})},o:(_,u)=>Object.prototype.hasOwnProperty.call(_,u),r:_=>{typeof Symbol!="undefined"&&Symbol.toStringTag&&Object.defineProperty(_,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(_,"__esModule",{value:!0})}},n={};e.d(n,{default:()=>M});var t={};function a(_,u,h,m){let C=arguments.length>4&&arguments[4]!==void 0?arguments[4]:{};u instanceof HTMLCollection||u instanceof NodeList?u=Array.from(u):Array.isArray(u)||(u=[u]),Array.isArray(h)||(h=[h]);for(let v of u)for(let x of h)v[_](x,m,{capture:!1,...C});return Array.prototype.slice.call(arguments,1)}e.r(t),e.d(t,{adjustableInputNumbers:()=>S,createElementFromString:()=>c,createFromTemplate:()=>f,eventPath:()=>p,off:()=>l,on:()=>i,resolveElement:()=>w});let i=a.bind(null,"addEventListener"),l=a.bind(null,"removeEventListener");function c(_){let u=document.createElement("div");return u.innerHTML=_.trim(),u.firstElementChild}function f(_){let u=(m,C)=>{let v=m.getAttribute(C);return m.removeAttribute(C),v},h=function(m){let C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},v=u(m,":obj"),x=u(m,":ref"),T=v?C[v]={}:C;x&&(C[x]=m);for(let I of Array.from(m.children)){let D=u(I,":arr"),P=h(I,D?{}:T);D&&(T[D]||(T[D]=[])).push(Object.keys(P).length?P:I)}return C};return h(c(_))}function p(_){let u=_.path||_.composedPath&&_.composedPath();if(u)return u;let h=_.target.parentElement;for(u=[_.target,h];h=h.parentElement;)u.push(h);return u.push(document,window),u}function w(_){return _ instanceof Element?_:typeof _=="string"?_.split(/>>/g).reduce((u,h,m,C)=>(u=u.querySelector(h),m<C.length-1?u.shadowRoot:u),document):null}function S(_){let u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:m=>m;function h(m){let C=[.001,.01,.1][Number(m.shiftKey||2*m.ctrlKey)]*(m.deltaY<0?1:-1),v=0,x=_.selectionStart;_.value=_.value.replace(/[\d.]+/g,(T,I)=>I<=x&&I+T.length>=x?(x=I,u(Number(T),C,v)):(v++,T)),_.focus(),_.setSelectionRange(x,x),m.preventDefault(),_.dispatchEvent(new Event("input"))}i(_,"focus",()=>i(window,"wheel",h,{passive:!1})),i(_,"blur",()=>l(window,"wheel",h))}let{min:E,max:B,floor:Y,round:K}=Math;function Q(_,u,h){u/=100,h/=100;let m=Y(_=_/360*6),C=_-m,v=h*(1-u),x=h*(1-C*u),T=h*(1-(1-C)*u),I=m%6;return[255*[h,x,v,v,T,h][I],255*[T,h,h,x,v,v][I],255*[v,v,T,h,h,x][I]]}function L(_,u,h){return Q(_,u,h).map(m=>K(m).toString(16).padStart(2,"0"))}function re(_,u,h){let m=Q(_,u,h),C=m[0]/255,v=m[1]/255,x=m[2]/255,T=E(1-C,1-v,1-x);return[100*(T===1?0:(1-C-T)/(1-T)),100*(T===1?0:(1-v-T)/(1-T)),100*(T===1?0:(1-x-T)/(1-T)),100*T]}function F(_,u,h){let m=(2-(u/=100))*(h/=100)/2;return m!==0&&(u=m===1?0:m<.5?u*h/(2*m):u*h/(2-2*m)),[_,100*u,100*m]}function oe(_,u,h){let m=E(_/=255,u/=255,h/=255),C=B(_,u,h),v=C-m,x,T;if(v===0)x=T=0;else{T=v/C;let I=((C-_)/6+v/2)/v,D=((C-u)/6+v/2)/v,P=((C-h)/6+v/2)/v;_===C?x=P-D:u===C?x=1/3+I-P:h===C&&(x=2/3+D-I),x<0?x+=1:x>1&&(x-=1)}return[360*x,100*T,100*C]}function ke(_,u,h,m){return u/=100,h/=100,[...oe(255*(1-E(1,(_/=100)*(1-(m/=100))+m)),255*(1-E(1,u*(1-m)+m)),255*(1-E(1,h*(1-m)+m)))]}function Ye(_,u,h){u/=100;let m=2*(u*=(h/=100)<.5?h:1-h)/(h+u)*100,C=100*(h+u);return[_,isNaN(m)?0:m,C]}function qe(_){return oe(..._.match(/.{2}/g).map(u=>parseInt(u,16)))}function Te(_){_=_.match(/^[a-zA-Z]+$/)?function(C){if(C.toLowerCase()==="black")return"#000";let v=document.createElement("canvas").getContext("2d");return v.fillStyle=C,v.fillStyle==="#000"?null:v.fillStyle}(_):_;let u={cmyk:/^cmyk[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)/i,rgba:/^((rgba)|rgb)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hsla:/^((hsla)|hsl)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hsva:/^((hsva)|hsv)[\D]+([\d.]+)[\D]+([\d.]+)[\D]+([\d.]+)[\D]*?([\d.]+|$)/i,hexa:/^#?(([\dA-Fa-f]{3,4})|([\dA-Fa-f]{6})|([\dA-Fa-f]{8}))$/i},h=C=>C.map(v=>/^(|\d+)\.\d+|\d+$/.test(v)?Number(v):void 0),m;e:for(let C in u){if(!(m=u[C].exec(_)))continue;let v=x=>!!m[2]==(typeof x=="number");switch(C){case"cmyk":{let[,x,T,I,D]=h(m);if(x>100||T>100||I>100||D>100)break e;return{values:ke(x,T,I,D),type:C}}case"rgba":{let[,,,x,T,I,D]=h(m);if(x>255||T>255||I>255||D<0||D>1||!v(D))break e;return{values:[...oe(x,T,I),D],a:D,type:C}}case"hexa":{let[,x]=m;x.length!==4&&x.length!==3||(x=x.split("").map(D=>D+D).join(""));let T=x.substring(0,6),I=x.substring(6);return I=I?parseInt(I,16)/255:void 0,{values:[...qe(T),I],a:I,type:C}}case"hsla":{let[,,,x,T,I,D]=h(m);if(x>360||T>100||I>100||D<0||D>1||!v(D))break e;return{values:[...Ye(x,T,I),D],a:D,type:C}}case"hsva":{let[,,,x,T,I,D]=h(m);if(x>360||T>100||I>100||D<0||D>1||!v(D))break e;return{values:[x,T,I,D],a:D,type:C}}}}return{values:null,type:null}}function xe(){let _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,u=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,m=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1,C=(x,T)=>function(){let I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:-1;return T(~I?x.map(D=>Number(D.toFixed(I))):x)},v={h:_,s:u,v:h,a:m,toHSVA(){let x=[v.h,v.s,v.v,v.a];return x.toString=C(x,T=>`hsva(${T[0]}, ${T[1]}%, ${T[2]}%, ${v.a})`),x},toHSLA(){let x=[...F(v.h,v.s,v.v),v.a];return x.toString=C(x,T=>`hsla(${T[0]}, ${T[1]}%, ${T[2]}%, ${v.a})`),x},toRGBA(){let x=[...Q(v.h,v.s,v.v),v.a];return x.toString=C(x,T=>`rgba(${T[0]}, ${T[1]}, ${T[2]}, ${v.a})`),x},toCMYK(){let x=re(v.h,v.s,v.v);return x.toString=C(x,T=>`cmyk(${T[0]}%, ${T[1]}%, ${T[2]}%, ${T[3]}%)`),x},toHEXA(){let x=L(v.h,v.s,v.v),T=v.a>=1?"":Number((255*v.a).toFixed(0)).toString(16).toUpperCase().padStart(2,"0");return T&&x.push(T),x.toString=()=>`#${x.join("").toUpperCase()}`,x},clone:()=>xe(v.h,v.s,v.v,v.a)};return v}let Pe=_=>Math.max(Math.min(_,1),0);function Qe(_){let u={options:Object.assign({lock:null,onchange:()=>0,onstop:()=>0},_),_keyboard(v){let{options:x}=u,{type:T,key:I}=v;if(document.activeElement===x.wrapper){let{lock:D}=u.options,P=I==="ArrowUp",G=I==="ArrowRight",q=I==="ArrowDown",U=I==="ArrowLeft";if(T==="keydown"&&(P||G||q||U)){let fe=0,le=0;D==="v"?fe=P||G?1:-1:D==="h"?fe=P||G?-1:1:(le=P?-1:q?1:0,fe=U?-1:G?1:0),u.update(Pe(u.cache.x+.01*fe),Pe(u.cache.y+.01*le)),v.preventDefault()}else I.startsWith("Arrow")&&(u.options.onstop(),v.preventDefault())}},_tapstart(v){i(document,["mouseup","touchend","touchcancel"],u._tapstop),i(document,["mousemove","touchmove"],u._tapmove),v.cancelable&&v.preventDefault(),u._tapmove(v)},_tapmove(v){let{options:x,cache:T}=u,{lock:I,element:D,wrapper:P}=x,G=P.getBoundingClientRect(),q=0,U=0;if(v){let Oe=v&&v.touches&&v.touches[0];q=v?(Oe||v).clientX:0,U=v?(Oe||v).clientY:0,q<G.left?q=G.left:q>G.left+G.width&&(q=G.left+G.width),U<G.top?U=G.top:U>G.top+G.height&&(U=G.top+G.height),q-=G.left,U-=G.top}else T&&(q=T.x*G.width,U=T.y*G.height);I!=="h"&&(D.style.left=`calc(${q/G.width*100}% - ${D.offsetWidth/2}px)`),I!=="v"&&(D.style.top=`calc(${U/G.height*100}% - ${D.offsetHeight/2}px)`),u.cache={x:q/G.width,y:U/G.height};let fe=Pe(q/G.width),le=Pe(U/G.height);switch(I){case"v":return x.onchange(fe);case"h":return x.onchange(le);default:return x.onchange(fe,le)}},_tapstop(){u.options.onstop(),l(document,["mouseup","touchend","touchcancel"],u._tapstop),l(document,["mousemove","touchmove"],u._tapmove)},trigger(){u._tapmove()},update(){let v=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,x=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,{left:T,top:I,width:D,height:P}=u.options.wrapper.getBoundingClientRect();u.options.lock==="h"&&(x=v),u._tapmove({clientX:T+D*v,clientY:I+P*x})},destroy(){let{options:v,_tapstart:x,_keyboard:T}=u;l(document,["keydown","keyup"],T),l([v.wrapper,v.element],"mousedown",x),l([v.wrapper,v.element],"touchstart",x,{passive:!1})}},{options:h,_tapstart:m,_keyboard:C}=u;return i([h.wrapper,h.element],"mousedown",m),i([h.wrapper,h.element],"touchstart",m,{passive:!1}),i(document,["keydown","keyup"],C),u}function ie(){let _=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};_=Object.assign({onchange:()=>0,className:"",elements:[]},_);let u=i(_.elements,"click",h=>{_.elements.forEach(m=>m.classList[h.target===m?"add":"remove"](_.className)),_.onchange(h),h.stopPropagation()});return{destroy:()=>l(...u)}}let Tt={variantFlipOrder:{start:"sme",middle:"mse",end:"ems"},positionFlipOrder:{top:"tbrl",right:"rltb",bottom:"btrl",left:"lrbt"},position:"bottom",margin:8},Ve=(_,u,h)=>{let{container:m,margin:C,position:v,variantFlipOrder:x,positionFlipOrder:T}={container:document.documentElement.getBoundingClientRect(),...Tt,...h},{left:I,top:D}=u.style;u.style.left="0",u.style.top="0";let P=_.getBoundingClientRect(),G=u.getBoundingClientRect(),q={t:P.top-G.height-C,b:P.bottom+C,r:P.right+C,l:P.left-G.width-C},U={vs:P.left,vm:P.left+P.width/2+-G.width/2,ve:P.left+P.width-G.width,hs:P.top,hm:P.bottom-P.height/2-G.height/2,he:P.bottom-G.height},[fe,le="middle"]=v.split("-"),Oe=T[fe],ye=x[le],{top:Se,left:ae,bottom:Re,right:_e}=m;for(let Ke of Oe){let Le=Ke==="t"||Ke==="b",et=q[Ke],[gt,tt]=Le?["top","left"]:["left","top"],[Ar,kr]=Le?[G.height,G.width]:[G.width,G.height],[Tr,Lr]=Le?[Re,_e]:[_e,Re],[Mr,Ir]=Le?[Se,ae]:[ae,Se];if(!(et<Mr||et+Ar>Tr))for(let jt of ye){let Lt=U[(Le?"v":"h")+jt];if(!(Lt<Ir||Lt+kr>Lr))return u.style[tt]=Lt-G[tt]+"px",u.style[gt]=et-G[gt]+"px",Ke+jt}}return u.style.left=I,u.style.top=D,null};function V(_,u,h){return u in _?Object.defineProperty(_,u,{value:h,enumerable:!0,configurable:!0,writable:!0}):_[u]=h,_}class M{constructor(u){V(this,"_initializingActive",!0),V(this,"_recalc",!0),V(this,"_nanopop",null),V(this,"_root",null),V(this,"_color",xe()),V(this,"_lastColor",xe()),V(this,"_swatchColors",[]),V(this,"_setupAnimationFrame",null),V(this,"_eventListener",{init:[],save:[],hide:[],show:[],clear:[],change:[],changestop:[],cancel:[],swatchselect:[]}),this.options=u=Object.assign({...M.DEFAULT_OPTIONS},u);let{swatches:h,components:m,theme:C,sliders:v,lockOpacity:x,padding:T}=u;["nano","monolith"].includes(C)&&!v&&(u.sliders="h"),m.interaction||(m.interaction={});let{preview:I,opacity:D,hue:P,palette:G}=m;m.opacity=!x&&D,m.palette=G||I||D||P,this._preBuild(),this._buildComponents(),this._bindEvents(),this._finalBuild(),h&&h.length&&h.forEach(le=>this.addSwatch(le));let{button:q,app:U}=this._root;this._nanopop=((le,Oe,ye)=>{let Se=typeof le!="object"||le instanceof HTMLElement?{reference:le,popper:Oe,...ye}:le;return{update(){let ae=arguments.length>0&&arguments[0]!==void 0?arguments[0]:Se,{reference:Re,popper:_e}=Object.assign(Se,ae);if(!_e||!Re)throw new Error("Popper- or reference-element missing.");return Ve(Re,_e,Se)}}})(q,U,{margin:T}),q.setAttribute("role","button"),q.setAttribute("aria-label",this._t("btn:toggle"));let fe=this;this._setupAnimationFrame=requestAnimationFrame(function le(){if(!U.offsetWidth)return fe._setupAnimationFrame=requestAnimationFrame(le);fe.setColor(u.default),fe._rePositioningPicker(),u.defaultRepresentation&&(fe._representation=u.defaultRepresentation,fe.setColorRepresentation(fe._representation)),u.showAlways&&fe.show(),fe._initializingActive=!1,fe._emit("init")})}_preBuild(){let{options:u}=this;for(let h of["el","container"])u[h]=w(u[h]);this._root=(h=>{let{components:m,useAsButton:C,inline:v,appClass:x,theme:T,lockOpacity:I}=h.options,D=U=>U?"":'style="display:none" hidden',P=U=>h._t(U),G=f(` + <div :ref="root" class="pickr"> + + ${C?"":'<button type="button" :ref="button" class="pcr-button"></button>'} + + <div :ref="app" class="pcr-app ${x||""}" data-theme="${T}" ${v?'style="position: unset"':""} aria-label="${P("ui:dialog")}" role="window"> + <div class="pcr-selection" ${D(m.palette)}> + <div :obj="preview" class="pcr-color-preview" ${D(m.preview)}> + <button type="button" :ref="lastColor" class="pcr-last-color" aria-label="${P("btn:last-color")}"></button> + <div :ref="currentColor" class="pcr-current-color"></div> + </div> + + <div :obj="palette" class="pcr-color-palette"> + <div :ref="picker" class="pcr-picker"></div> + <div :ref="palette" class="pcr-palette" tabindex="0" aria-label="${P("aria:palette")}" role="listbox"></div> + </div> + + <div :obj="hue" class="pcr-color-chooser" ${D(m.hue)}> + <div :ref="picker" class="pcr-picker"></div> + <div :ref="slider" class="pcr-hue pcr-slider" tabindex="0" aria-label="${P("aria:hue")}" role="slider"></div> + </div> + + <div :obj="opacity" class="pcr-color-opacity" ${D(m.opacity)}> + <div :ref="picker" class="pcr-picker"></div> + <div :ref="slider" class="pcr-opacity pcr-slider" tabindex="0" aria-label="${P("aria:opacity")}" role="slider"></div> + </div> + </div> + + <div class="pcr-swatches ${m.palette?"":"pcr-last"}" :ref="swatches"></div> + + <div :obj="interaction" class="pcr-interaction" ${D(Object.keys(m.interaction).length)}> + <input :ref="result" class="pcr-result" type="text" spellcheck="false" ${D(m.interaction.input)} aria-label="${P("aria:input")}"> + + <input :arr="options" class="pcr-type" data-type="HEXA" value="${I?"HEX":"HEXA"}" type="button" ${D(m.interaction.hex)}> + <input :arr="options" class="pcr-type" data-type="RGBA" value="${I?"RGB":"RGBA"}" type="button" ${D(m.interaction.rgba)}> + <input :arr="options" class="pcr-type" data-type="HSLA" value="${I?"HSL":"HSLA"}" type="button" ${D(m.interaction.hsla)}> + <input :arr="options" class="pcr-type" data-type="HSVA" value="${I?"HSV":"HSVA"}" type="button" ${D(m.interaction.hsva)}> + <input :arr="options" class="pcr-type" data-type="CMYK" value="CMYK" type="button" ${D(m.interaction.cmyk)}> + + <input :ref="save" class="pcr-save" value="${P("btn:save")}" type="button" ${D(m.interaction.save)} aria-label="${P("aria:btn:save")}"> + <input :ref="cancel" class="pcr-cancel" value="${P("btn:cancel")}" type="button" ${D(m.interaction.cancel)} aria-label="${P("aria:btn:cancel")}"> + <input :ref="clear" class="pcr-clear" value="${P("btn:clear")}" type="button" ${D(m.interaction.clear)} aria-label="${P("aria:btn:clear")}"> + </div> + </div> + </div> + `),q=G.interaction;return q.options.find(U=>!U.hidden&&!U.classList.add("active")),q.type=()=>q.options.find(U=>U.classList.contains("active")),G})(this),u.useAsButton&&(this._root.button=u.el),u.container.appendChild(this._root.root)}_finalBuild(){let u=this.options,h=this._root;if(u.container.removeChild(h.root),u.inline){let m=u.el.parentElement;u.el.nextSibling?m.insertBefore(h.app,u.el.nextSibling):m.appendChild(h.app)}else u.container.appendChild(h.app);u.useAsButton?u.inline&&u.el.remove():u.el.parentNode.replaceChild(h.root,u.el),u.disabled&&this.disable(),u.comparison||(h.button.style.transition="none",u.useAsButton||(h.preview.lastColor.style.transition="none")),this.hide()}_buildComponents(){let u=this,h=this.options.components,m=(u.options.sliders||"v").repeat(2),[C,v]=m.match(/^[vh]+$/g)?m:[],x=()=>this._color||(this._color=this._lastColor.clone()),T={palette:Qe({element:u._root.palette.picker,wrapper:u._root.palette.palette,onstop:()=>u._emit("changestop","slider",u),onchange(I,D){if(!h.palette)return;let P=x(),{_root:G,options:q}=u,{lastColor:U,currentColor:fe}=G.preview;u._recalc&&(P.s=100*I,P.v=100-100*D,P.v<0&&(P.v=0),u._updateOutput("slider"));let le=P.toRGBA().toString(0);this.element.style.background=le,this.wrapper.style.background=` + linear-gradient(to top, rgba(0, 0, 0, ${P.a}), transparent), + linear-gradient(to left, hsla(${P.h}, 100%, 50%, ${P.a}), rgba(255, 255, 255, ${P.a})) + `,q.comparison?q.useAsButton||u._lastColor||U.style.setProperty("--pcr-color",le):(G.button.style.setProperty("--pcr-color",le),G.button.classList.remove("clear"));let Oe=P.toHEXA().toString();for(let{el:ye,color:Se}of u._swatchColors)ye.classList[Oe===Se.toHEXA().toString()?"add":"remove"]("pcr-active");fe.style.setProperty("--pcr-color",le)}}),hue:Qe({lock:v==="v"?"h":"v",element:u._root.hue.picker,wrapper:u._root.hue.slider,onstop:()=>u._emit("changestop","slider",u),onchange(I){if(!h.hue||!h.palette)return;let D=x();u._recalc&&(D.h=360*I),this.element.style.backgroundColor=`hsl(${D.h}, 100%, 50%)`,T.palette.trigger()}}),opacity:Qe({lock:C==="v"?"h":"v",element:u._root.opacity.picker,wrapper:u._root.opacity.slider,onstop:()=>u._emit("changestop","slider",u),onchange(I){if(!h.opacity||!h.palette)return;let D=x();u._recalc&&(D.a=Math.round(100*I)/100),this.element.style.background=`rgba(0, 0, 0, ${D.a})`,T.palette.trigger()}}),selectable:ie({elements:u._root.interaction.options,className:"active",onchange(I){u._representation=I.target.getAttribute("data-type").toUpperCase(),u._recalc&&u._updateOutput("swatch")}})};this._components=T}_bindEvents(){let{_root:u,options:h}=this,m=[i(u.interaction.clear,"click",()=>this._clearColor()),i([u.interaction.cancel,u.preview.lastColor],"click",()=>{this.setHSVA(...(this._lastColor||this._color).toHSVA(),!0),this._emit("cancel")}),i(u.interaction.save,"click",()=>{!this.applyColor()&&!h.showAlways&&this.hide()}),i(u.interaction.result,["keyup","input"],C=>{this.setColor(C.target.value,!0)&&!this._initializingActive&&(this._emit("change",this._color,"input",this),this._emit("changestop","input",this)),C.stopImmediatePropagation()}),i(u.interaction.result,["focus","blur"],C=>{this._recalc=C.type==="blur",this._recalc&&this._updateOutput(null)}),i([u.palette.palette,u.palette.picker,u.hue.slider,u.hue.picker,u.opacity.slider,u.opacity.picker],["mousedown","touchstart"],()=>this._recalc=!0,{passive:!0})];if(!h.showAlways){let C=h.closeWithKey;m.push(i(u.button,"click",()=>this.isOpen()?this.hide():this.show()),i(document,"keyup",v=>this.isOpen()&&(v.key===C||v.code===C)&&this.hide()),i(document,["touchstart","mousedown"],v=>{this.isOpen()&&!p(v).some(x=>x===u.app||x===u.button)&&this.hide()},{capture:!0}))}if(h.adjustableNumbers){let C={rgba:[255,255,255,1],hsva:[360,100,100,1],hsla:[360,100,100,1],cmyk:[100,100,100,100]};S(u.interaction.result,(v,x,T)=>{let I=C[this.getColorRepresentation().toLowerCase()];if(I){let D=I[T],P=v+(D>=100?1e3*x:x);return P<=0?0:Number((P<D?P:D).toPrecision(3))}return v})}if(h.autoReposition&&!h.inline){let C=null,v=this;m.push(i(window,["scroll","resize"],()=>{v.isOpen()&&(h.closeOnScroll&&v.hide(),C===null?(C=setTimeout(()=>C=null,100),requestAnimationFrame(function x(){v._rePositioningPicker(),C!==null&&requestAnimationFrame(x)})):(clearTimeout(C),C=setTimeout(()=>C=null,100)))},{capture:!0}))}this._eventBindings=m}_rePositioningPicker(){let{options:u}=this;if(!u.inline&&!this._nanopop.update({container:document.body.getBoundingClientRect(),position:u.position})){let h=this._root.app,m=h.getBoundingClientRect();h.style.top=(window.innerHeight-m.height)/2+"px",h.style.left=(window.innerWidth-m.width)/2+"px"}}_updateOutput(u){let{_root:h,_color:m,options:C}=this;if(h.interaction.type()){let v=`to${h.interaction.type().getAttribute("data-type")}`;h.interaction.result.value=typeof m[v]=="function"?m[v]().toString(C.outputPrecision):""}!this._initializingActive&&this._recalc&&this._emit("change",m,u,this)}_clearColor(){let u=arguments.length>0&&arguments[0]!==void 0&&arguments[0],{_root:h,options:m}=this;m.useAsButton||h.button.style.setProperty("--pcr-color","rgba(0, 0, 0, 0.15)"),h.button.classList.add("clear"),m.showAlways||this.hide(),this._lastColor=null,this._initializingActive||u||(this._emit("save",null),this._emit("clear"))}_parseLocalColor(u){let{values:h,type:m,a:C}=Te(u),{lockOpacity:v}=this.options,x=C!==void 0&&C!==1;return h&&h.length===3&&(h[3]=void 0),{values:!h||v&&x?null:h,type:m}}_t(u){return this.options.i18n[u]||M.I18N_DEFAULTS[u]}_emit(u){for(var h=arguments.length,m=new Array(h>1?h-1:0),C=1;C<h;C++)m[C-1]=arguments[C];this._eventListener[u].forEach(v=>v(...m,this))}on(u,h){return this._eventListener[u].push(h),this}off(u,h){let m=this._eventListener[u]||[],C=m.indexOf(h);return~C&&m.splice(C,1),this}addSwatch(u){let{values:h}=this._parseLocalColor(u);if(h){let{_swatchColors:m,_root:C}=this,v=xe(...h),x=c(`<button type="button" style="--pcr-color: ${v.toRGBA().toString(0)}" aria-label="${this._t("btn:swatch")}"/>`);return C.swatches.appendChild(x),m.push({el:x,color:v}),this._eventBindings.push(i(x,"click",()=>{this.setHSVA(...v.toHSVA(),!0),this._emit("swatchselect",v),this._emit("change",v,"swatch",this)})),!0}return!1}removeSwatch(u){let h=this._swatchColors[u];if(h){let{el:m}=h;return this._root.swatches.removeChild(m),this._swatchColors.splice(u,1),!0}return!1}applyColor(){let u=arguments.length>0&&arguments[0]!==void 0&&arguments[0],{preview:h,button:m}=this._root,C=this._color.toRGBA().toString(0);return h.lastColor.style.setProperty("--pcr-color",C),this.options.useAsButton||m.style.setProperty("--pcr-color",C),m.classList.remove("clear"),this._lastColor=this._color.clone(),this._initializingActive||u||this._emit("save",this._color),this}destroy(){cancelAnimationFrame(this._setupAnimationFrame),this._eventBindings.forEach(u=>l(...u)),Object.keys(this._components).forEach(u=>this._components[u].destroy())}destroyAndRemove(){this.destroy();let{root:u,app:h}=this._root;u.parentElement&&u.parentElement.removeChild(u),h.parentElement.removeChild(h),Object.keys(this).forEach(m=>this[m]=null)}hide(){return!!this.isOpen()&&(this._root.app.classList.remove("visible"),this._emit("hide"),!0)}show(){return!this.options.disabled&&!this.isOpen()&&(this._root.app.classList.add("visible"),this._rePositioningPicker(),this._emit("show",this._color),this)}isOpen(){return this._root.app.classList.contains("visible")}setHSVA(){let u=arguments.length>0&&arguments[0]!==void 0?arguments[0]:360,h=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,m=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,C=arguments.length>3&&arguments[3]!==void 0?arguments[3]:1,v=arguments.length>4&&arguments[4]!==void 0&&arguments[4],x=this._recalc;if(this._recalc=!1,u<0||u>360||h<0||h>100||m<0||m>100||C<0||C>1)return!1;this._color=xe(u,h,m,C);let{hue:T,opacity:I,palette:D}=this._components;return T.update(u/360),I.update(C),D.update(h/100,1-m/100),v||this.applyColor(),x&&this._updateOutput(),this._recalc=x,!0}setColor(u){let h=arguments.length>1&&arguments[1]!==void 0&&arguments[1];if(u===null)return this._clearColor(h),!0;let{values:m,type:C}=this._parseLocalColor(u);if(m){let v=C.toUpperCase(),{options:x}=this._root.interaction,T=x.find(I=>I.getAttribute("data-type")===v);if(T&&!T.hidden)for(let I of x)I.classList[I===T?"add":"remove"]("active");return!!this.setHSVA(...m,h)&&this.setColorRepresentation(v)}return!1}setColorRepresentation(u){return u=u.toUpperCase(),!!this._root.interaction.options.find(h=>h.getAttribute("data-type").startsWith(u)&&!h.click())}getColorRepresentation(){return this._representation}getColor(){return this._color}getSelectedColor(){return this._lastColor}getRoot(){return this._root}disable(){return this.hide(),this.options.disabled=!0,this._root.button.classList.add("disabled"),this}enable(){return this.options.disabled=!1,this._root.button.classList.remove("disabled"),this}}return V(M,"utils",t),V(M,"version","1.8.4"),V(M,"I18N_DEFAULTS",{"ui:dialog":"color picker dialog","btn:toggle":"toggle color picker dialog","btn:swatch":"color swatch","btn:last-color":"use previous color","btn:save":"Save","btn:cancel":"Cancel","btn:clear":"Clear","aria:btn:save":"save and close","aria:btn:cancel":"cancel and close","aria:btn:clear":"clear and close","aria:input":"color input field","aria:palette":"color selection area","aria:hue":"hue selection slider","aria:opacity":"selection slider"}),V(M,"DEFAULT_OPTIONS",{appClass:null,theme:"classic",useAsButton:!1,padding:8,disabled:!1,comparison:!0,closeOnScroll:!1,outputPrecision:0,lockOpacity:!1,autoReposition:!0,container:"body",components:{interaction:{}},i18n:{},swatches:null,inline:!1,sliders:null,default:"#42445a",defaultRepresentation:null,position:"bottom-middle",adjustableNumbers:!0,showAlways:!1,closeWithKey:"Escape"}),V(M,"create",_=>new M(_)),n=n.default})()})});var Bu={};ul(Bu,{default:()=>_r});module.exports=fl(Bu);var yt=require("obsidian"),Qt=class extends yt.Modal{constructor(t,a,i,l){super(t);this.plugin=a,this.config=l,this.section=i}onOpen(){let{contentEl:t,modalEl:a}=this;a.addClass("modal-style-settings"),new yt.Setting(t).setName(`Export settings for: ${this.section}`).then(i=>{let l=JSON.stringify(this.config,null,2);i.controlEl.createEl("a",{cls:"style-settings-copy",text:"Copy to clipboard",href:"#"},c=>{new yt.TextAreaComponent(t).setValue(l).then(f=>{c.addEventListener("click",p=>{p.preventDefault(),f.inputEl.select(),f.inputEl.setSelectionRange(0,99999),document.execCommand("copy"),c.addClass("success"),setTimeout(()=>{c.parentNode&&c.removeClass("success")},2e3)})})}),i.controlEl.createEl("a",{cls:"style-settings-download",text:"Download",attr:{download:"style-settings.json",href:`data:application/json;charset=utf-8,${encodeURIComponent(l)}`}})})}onClose(){let{contentEl:t}=this;t.empty()}};var Ze=require("obsidian"),Zt=class extends Ze.Modal{constructor(t,a){super(t);this.plugin=a}onOpen(){let{contentEl:t,modalEl:a}=this;a.addClass("modal-style-settings"),new Ze.Setting(t).setName("Import style setting").setDesc("Import an entire or partial configuration. Warning: this may override existing settings"),new Ze.Setting(t).then(i=>{let l=createSpan({cls:"style-settings-import-error",text:"Error importing config"});i.nameEl.appendChild(l);let c=async f=>{if(f)try{let p=JSON.parse(f);await this.plugin.settingsManager.setSettings(p),this.plugin.settingsTab.display(),this.close()}catch(p){l.addClass("active"),l.setText(`Error importing style settings: ${p}`)}else l.addClass("active"),l.setText("Error importing style settings: config is empty")};i.controlEl.createEl("input",{cls:"style-settings-import-input",attr:{id:"style-settings-import-input",name:"style-settings-import-input",type:"file",accept:".json"}},f=>{f.addEventListener("change",p=>{if(!p.target)return;let w=new FileReader;w.onload=async E=>{var B;(B=E.target)!=null&&B.result&&await c(E.target.result.toString().trim())};let S=p.target;S.files&&w.readAsText(S.files[0])})}),i.controlEl.createEl("label",{cls:"style-settings-import-label",text:"Import from file",attr:{for:"style-settings-import-input"}}),new Ze.TextAreaComponent(t).setPlaceholder("Paste config here...").then(f=>{new Ze.ButtonComponent(t).setButtonText("Save").onClick(async()=>{await c(f.getValue().trim())})})})}onClose(){let{contentEl:t}=this;t.empty()}};var he={HEADING:"heading",INFO_TEXT:"info-text",CLASS_TOGGLE:"class-toggle",CLASS_SELECT:"class-select",VARIABLE_TEXT:"variable-text",VARIABLE_NUMBER:"variable-number",VARIABLE_NUMBER_SLIDER:"variable-number-slider",VARIABLE_SELECT:"variable-select",VARIABLE_COLOR:"variable-color",VARIABLE_THEMED_COLOR:"variable-themed-color",COLOR_GRADIENT:"color-gradient"};var rn=Xt(Jn());function St(e,n,t,a,i=[]){let l=(0,rn.default)(t),c=i.reduce((f,p)=>(f.push(...St(p.id,p.format,t,a)),f),[]);switch(n){case"hex":return[{key:e,value:t},...c];case"hsl":return[{key:e,value:l.css("hsl")},...c];case"hsl-values":{let f=l.hsl(),p=a?`,${l.alpha()}`:"",w=isNaN(f[0])?0:f[0];return[{key:e,value:`${w},${f[1]*100}%,${f[2]*100}%${p}`},...c]}case"hsl-split":{let f=l.hsl(),p=isNaN(f[0])?0:f[0],w=[{key:`${e}-h`,value:p.toString()},{key:`${e}-s`,value:(f[1]*100).toString()+"%"},{key:`${e}-l`,value:(f[2]*100).toString()+"%"},...c];return a&&w.push({key:`${e}-a`,value:l.alpha().toString()}),w}case"hsl-split-decimal":{let f=l.hsl(),p=isNaN(f[0])?0:f[0],w=[{key:`${e}-h`,value:p.toString()},{key:`${e}-s`,value:f[1].toString()},{key:`${e}-l`,value:f[2].toString()},...c];return a&&w.push({key:`${e}-a`,value:l.alpha().toString()}),w}case"rgb":return[{key:e,value:l.css()},...c];case"rgb-values":{let f=l.rgb(),p=a?`,${l.alpha()}`:"";return[{key:e,value:`${f[0]},${f[1]},${f[2]}${p}`},...c]}case"rgb-split":{let f=l.rgb(),p=[{key:`${e}-r`,value:f[0].toString()},{key:`${e}-g`,value:f[1].toString()},{key:`${e}-b`,value:f[2].toString()},...c];return a&&p.push({key:`${e}-a`,value:l.alpha().toString()}),p}}}function tn(e,n,t,a,i,l,c){let f=rn.default.scale([t.trim(),a.trim()]).domain([0,100]);for(let p=0;p<=100;p++)if(p%l===0){let w=f(p);e.push(...St(`${n}-${p.toString().padStart(c,"0")}`,i,w.css(),w.alpha()!==1))}}function gl(e,n,t,a){let i=[],l=[],c=[],f={},p={},w={},S=new Set;for(let E in e){let[B,Y,K]=E.split("@@");if(!n[B])continue;let L=n[B][Y];if(!L)continue;let re=e[E];switch(L.type){case he.VARIABLE_NUMBER:case he.VARIABLE_NUMBER_SLIDER:{let F=L.format,oe=re!==void 0?re:L.default;i.push({key:L.id,value:`${oe}${F||""}`});continue}case he.VARIABLE_TEXT:case he.VARIABLE_SELECT:{let F=L,oe=re!==void 0?re.toString():F.default.toString();F.quotes&&(oe!=='""'?oe=`'${oe}'`:oe=""),i.push({key:L.id,value:oe});continue}case he.VARIABLE_COLOR:{S.has(B)||S.add(B);let F=L,oe=re!==void 0?re.toString():F.default;oe&&(i.push(...St(L.id,F.format,oe,F.opacity,F["alt-format"])),St(L.id,"rgb",oe,F.opacity).forEach(ke=>{f[ke.key]=ke.value}));continue}case he.VARIABLE_THEMED_COLOR:{S.has(B)||S.add(B);let F=L,ke=re!==void 0?re.toString():F[K==="light"?"default-light":"default-dark"];(K==="light"?l:c).push(...St(L.id,F.format,ke,F.opacity,F["alt-format"])),St(L.id,"rgb",ke,F.opacity).forEach(Ye=>{K==="light"?p[Ye.key]=Ye.value:w[Ye.key]=Ye.value});continue}}}return S.forEach(E=>{let B=t[E];B&&B.forEach(Y=>{var ke,Ye,qe;let{from:K,to:Q,format:L,step:re,id:F,pad:oe=0}=Y;if(p[K]){let Te=p[K],xe=p[Q]||((ke=a.plugin.getCSSVar(Q).light)==null?void 0:ke.trim());xe&&tn(l,F,Te,xe,L,re,oe)}if(w[K]){let Te=w[K],xe=w[Q]||((Ye=a.plugin.getCSSVar(Q).dark)==null?void 0:Ye.trim());xe&&tn(c,F,Te,xe,L,re,oe)}if(f[K]){let Te=f[K],xe=f[Q]||((qe=a.plugin.getCSSVar(Q).current)==null?void 0:qe.trim());xe&&tn(i,F,Te,xe,L,re,oe)}})}),[i,l,c]}var Jt=class{constructor(n){this.config={};this.gradients={};this.plugin=n,this.settings={},this.styleTag=document.createElement("style"),this.styleTag.id="css-settings-manager",document.getElementsByTagName("head")[0].appendChild(this.styleTag)}cleanup(){this.styleTag.remove(),this.removeClasses()}async save(){await this.plugin.saveData(this.settings),this.setCSSVariables()}async load(){this.settings=Object.assign({},await this.plugin.loadData())}initClasses(){Object.keys(this.config).forEach(n=>{let t=this.config[n];Object.keys(t).forEach(a=>{let i=t[a];if(i.type===he.CLASS_TOGGLE){let l=i,c=this.getSetting(n,a);(c===!0||c===void 0&&l.default===!0)&&document.body.classList.add(i.id)}else if(i.type===he.CLASS_SELECT){let l=i,c=this.getSetting(n,a);c===void 0&&l.default?c=l.default:c===void 0&&(c="none"),c!=="none"&&document.body.classList.add(c)}})})}removeClasses(){Object.keys(this.config).forEach(n=>{let t=this.config[n];Object.keys(t).forEach(a=>{let i=t[a];i.type===he.CLASS_TOGGLE?document.body.classList.remove(i.id):i.type===he.CLASS_SELECT&&i.options.forEach(c=>{typeof c=="string"?document.body.classList.remove(c):document.body.classList.remove(c.value)})})})}setCSSVariables(){let[n,t,a]=gl(this.settings,this.config,this.gradients,this);this.styleTag.innerText=` + body.css-settings-manager { + ${n.reduce((i,l)=>i+`--${l.key}: ${l.value}; `,"")} + } + + body.theme-light.css-settings-manager { + ${t.reduce((i,l)=>i+`--${l.key}: ${l.value}; `,"")} + } + + body.theme-dark.css-settings-manager { + ${a.reduce((i,l)=>i+`--${l.key}: ${l.value}; `,"")} + } + `.trim().replace(/[\r\n\s]+/g," "),this.plugin.app.workspace.trigger("css-change",{source:"style-settings"})}setConfig(n){this.config={},this.gradients={},n.forEach(a=>{this.config[a.id]={},a.settings.forEach(i=>{this.config[a.id][i.id]=i,i.type===he.COLOR_GRADIENT&&(this.gradients[a.id]||(this.gradients[a.id]=[]),this.gradients[a.id].push(i))})});let t=!1;for(let a in this.settings){let[i,l]=a.split("@@");this.config[i]&&!this.config[i][l]&&(delete this.settings[a],t=!0)}t?this.save():this.setCSSVariables()}getSetting(n,t){return this.settings[`${n}@@${t}`]}getSettings(n,t){return t.reduce((a,i)=>{let l=`${n}@@${i}`,c=["dark","light"];return this.settings[l]&&(a[l]=this.settings[l]),c.forEach(f=>{let p=`${l}@@${f}`;this.settings[p]&&(a[p]=this.settings[p])}),a},{})}setSetting(n,t,a){this.settings[`${n}@@${t}`]=a,this.save(),this.removeClasses(),this.initClasses()}setSettings(n){return Object.keys(n).forEach(t=>{this.settings[t]=n[t]}),this.removeClasses(),this.initClasses(),this.save()}clearSetting(n,t){delete this.settings[`${n}@@${t}`],this.save(),this.removeClasses(),this.initClasses()}clearSection(n){Object.keys(this.settings).forEach(t=>{let[a]=t.split("@@");a===n&&delete this.settings[t]}),this.save(),this.removeClasses(),this.initClasses()}export(n,t){new Qt(this.plugin.app,this.plugin,n,t).open()}import(){new Zt(this.plugin.app,this.plugin).open()}};var ei={};var ti={};var ri={};var ni={"Default:":"Standard:","Error:":"Fehler:","missing default light value, or value is not in a valid color format":"Fehlender heller standard Wert oder Wert ist in keinem validen Farb-Format","missing default dark value, or value is not in a valid color format":"Fehlender dunkler standard Wert oder Wert ist in keinem validen Farb-Format","missing default value, or value is not in a valid color format":"Fehlender standard Wert oder Wert ist in keinem validen Farb-Format","missing default value":"Fehlender standard Wert"};var nn={"Default:":"Default:","Error:":"Error:","missing default light value, or value is not in a valid color format":"missing default light value, or value is not in a valid color format","missing default dark value, or value is not in a valid color format":"missing default dark value, or value is not in a valid color format","missing default value, or value is not in a valid color format":"missing default value, or value is not in a valid color format","missing default value":"missing default value"};var ii={};var ai={};var si={};var oi={};var li={};var ci={};var ui={};var fi={"Default:":"Standaard:","Error:":"Error:","missing default light value, or value is not in a valid color format":"Geen standaard waarde voor het lichte thema, of de waarde is niet in het goede formaat","missing default dark value, or value is not in a valid color format":"Geen standaard waarde voor het donkere thema, of de waarde is niet in het goede formaat","missing default value, or value is not in a valid color format":"Geen standaard waarde, of de waarde is niet in het goede formaat","missing default value":"Geen standaard waarde"};var gi={};var pi={};var hi={};var di={};var vi={};var mi={};var bi={};var yi={};var Si={};var Ci={"Default:":"\u9ED8\u8BA4\uFF1A","Error:":"\u9519\u8BEF\uFF1A","missing default light value, or value is not in a valid color format":"\u7F3A\u5C11\u9ED8\u8BA4\u7684\u6D45\u8272\u6A21\u5F0F\u8272\u503C\uFF0C\u6216\u8BE5\u8272\u503C\u6CA1\u6709\u91C7\u7528\u4E00\u4E2A\u6709\u6548\u7684\u989C\u8272\u683C\u5F0F","missing default dark value, or value is not in a valid color format":"\u7F3A\u5C11\u9ED8\u8BA4\u7684\u6DF1\u8272\u6A21\u5F0F\u8272\u503C\uFF0C\u6216\u8BE5\u8272\u503C\u6CA1\u6709\u91C7\u7528\u4E00\u4E2A\u6709\u6548\u7684\u989C\u8272\u683C\u5F0F","missing default value, or value is not in a valid color format":"\u7F3A\u5C11\u9ED8\u8BA4\u8272\u503C\uFF0C\u6216\u8BE5\u8272\u503C\u6CA1\u6709\u91C7\u7528\u4E00\u4E2A\u6709\u6548\u7684\u989C\u8272\u683C\u5F0F","missing default value":"\u7F3A\u5C11\u9ED8\u8BA4\u8272\u503C"};var xi={};var ct=window.localStorage.getItem("language"),pl={ar:ei,cz:ti,da:ri,de:ni,en:nn,es:ii,fr:ai,hi:si,id:oi,it:li,ja:ci,ko:ui,nl:fi,no:gi,pl:pi,"pt-BR":di,pt:hi,ro:vi,ru:mi,sq:bi,tr:yi,uk:Si,"zh-TW":xi,zh:Ci},an=pl[ct||"en"];function de(e){return an||console.error("Error: Style Settings locale not found",ct),an&&an[e]||nn[e]}var sn=/\/\*!?\s*@settings[\r\n]+?([\s\S]+?)\*\//g,wi=/^name:\s*(.+)$/m;function ve(e){return ct&&e[`title.${ct}`]||e.title}function me(e){return ct&&e[`description.${ct}`]||e.description}function Ct(e){return/^(#|rgb|hsl)/.test(e)}function Nt(e){let{el:n,isView:t,containerEl:a,swatches:i,opacity:l,defaultColor:c}=e;return{el:n,container:t?document.body:a,theme:"nano",swatches:i,lockOpacity:!l,default:c,position:"left-middle",components:{preview:!0,hue:!0,opacity:!!l,interaction:{hex:!0,rgba:!0,hsla:!0,input:!0,cancel:!0,save:!0}}}}function Ot(e){e.hide()}function Ei(e){return e===""?'""':e.replace(/[;<>]/g,"")}function We(e,n,t){let a=createFragment();if(e&&a.appendChild(document.createTextNode(e)),n){let i=createEl("small");i.appendChild(createEl("strong",{text:`${de("Default:")} `})),i.appendChild(document.createTextNode(t||n));let l=createEl("div");l.appendChild(i),a.appendChild(l)}return a}var on=Xt(Ai()),ki=require("obsidian"),Ce=class extends ki.Component{constructor(t,a,i,l,c,f){super();this.childEl=null;this.parent=t,this.sectionId=a,this.sectionName=i,this.setting=l,this.settingsManager=c,this.isView=f}get containerEl(){return this.parent instanceof HTMLElement?this.parent:this.parent.childEl}onload(){this.render()}onunload(){this.destroy()}match(t){var l,c,f,p;if(!t)return Number.NEGATIVE_INFINITY;let a=ve(this.setting),i=me(this.setting)||"";return Math.max((c=(l=on.default.single(t,a))==null?void 0:l.score)!=null?c:Number.NEGATIVE_INFINITY,(p=(f=on.default.single(t,i))==null?void 0:f.score)!=null?p:Number.NEGATIVE_INFINITY)}decisiveMatch(t){return this.match(t)>-1e5}};var Fe="Restore default";var Ti=require("obsidian"),tr=class extends Ce{render(){if(!this.containerEl)return;let t=ve(this.setting),a=me(this.setting);if(typeof this.setting.default!="string")return console.error(`${de("Error:")} ${t} ${de("missing default value")}`);let i=this.getPreviousValue(),l=this.getDefaultOptionLabel();this.settingEl=new Ti.Setting(this.containerEl),this.settingEl.setName(t),this.settingEl.setDesc(We(a,this.setting.default,l)),this.settingEl.addDropdown(c=>{this.setting.allowEmpty&&c.addOption("none","");for(let f of this.setting.options)typeof f=="string"?c.addOption(f,f):c.addOption(f.value,f.label);c.setValue(i),c.onChange(f=>{this.settingsManager.setSetting(this.sectionId,this.setting.id,f),i=f}),this.dropdownComponent=c}),this.settingEl.addExtraButton(c=>{c.setIcon("reset"),c.onClick(()=>{this.dropdownComponent.setValue(this.setting.default||"none"),this.settingsManager.clearSetting(this.sectionId,this.setting.id)}),c.setTooltip(Fe)}),this.settingEl.settingEl.dataset.id=this.setting.id}destroy(){var t;(t=this.settingEl)==null||t.settingEl.remove()}getDefaultOption(){if(this.setting.default)return this.setting.options.find(t=>typeof t=="string"?t===this.setting.default:t.value===this.setting.default)}getDefaultOptionLabel(){let t=this.getDefaultOption();if(t)return typeof t=="string"?t:t.label}getPreviousValue(){let t=this.settingsManager.getSetting(this.sectionId,this.setting.id);return t===void 0?this.setting.default?this.setting.default:"none":t}};var Li=require("obsidian"),rr=class extends Ce{render(){if(!this.containerEl)return;let t=ve(this.setting),a=me(this.setting);this.settingEl=new Li.Setting(this.containerEl),this.settingEl.setName(t),this.settingEl.setDesc(a!=null?a:""),this.settingEl.addToggle(i=>{let l=this.settingsManager.getSetting(this.sectionId,this.setting.id);i.setValue(l!==void 0?!!l:!!this.setting.default),i.onChange(c=>{this.settingsManager.setSetting(this.sectionId,this.setting.id,c)}),this.toggleComponent=i}),this.settingEl.addExtraButton(i=>{i.setIcon("reset"),i.onClick(()=>{let l=!!this.setting.default;this.toggleComponent.setValue(l),this.settingsManager.clearSetting(this.sectionId,this.setting.id)}),i.setTooltip(Fe)}),this.settingEl.settingEl.dataset.id=this.setting.id}destroy(){var t;(t=this.settingEl)==null||t.settingEl.remove()}};var ir=require("obsidian"),nr=class extends Ce{render(){if(!this.containerEl)return;let t=ve(this.setting),a=me(this.setting);this.settingEl=new ir.Setting(this.containerEl),this.settingEl.setClass("style-settings-info-text"),t&&this.settingEl.setName(t),a&&(this.setting.markdown?(ir.MarkdownRenderer.renderMarkdown(a,this.settingEl.descEl,"",this),this.settingEl.descEl.addClass("style-settings-markdown")):this.settingEl.setDesc(a)),this.settingEl.settingEl.dataset.id=this.setting.id}destroy(){var t;(t=this.settingEl)==null||t.settingEl.remove()}};var Mi=Xt(cn()),Ii=require("obsidian"),sr=class extends Ce{render(){var p;if(!this.containerEl)return;let t=ve(this.setting),a=me(this.setting);if((typeof this.setting.default!="string"||!Ct(this.setting.default))&&(this.setting.default=(p=this.settingsManager.plugin.getCSSVar(this.setting.id).current)==null?void 0:p.trim()),typeof this.setting.default!="string"||!Ct(this.setting.default))return console.error(`${de("Error:")} ${t} ${de("missing default value, or value is not in a valid color format")}`);let i=this.settingsManager.getSetting(this.sectionId,this.setting.id),l=[];this.setting.default&&l.push(this.setting.default),i!==void 0&&l.push(i),this.settingEl=new Ii.Setting(this.containerEl),this.settingEl.setName(t),this.settingEl.setDesc(We(a,this.setting.default));let c=i!==void 0?i:this.setting.default;this.containerEl.style.setProperty("--pcr-color",c);let f=this.pickr=Mi.default.create(Nt({isView:this.isView,el:this.settingEl.controlEl.createDiv({cls:"picker"}),containerEl:this.containerEl,swatches:l,opacity:this.setting.opacity,defaultColor:c}));f.on("save",(w,S)=>{w&&(this.settingsManager.setSetting(this.sectionId,this.setting.id,w.toHEXA().toString()),S.hide(),S.addSwatch(w.toHEXA().toString()))}),f.on("show",()=>{let{result:w}=f.getRoot().interaction;activeWindow.requestAnimationFrame(()=>{activeWindow.requestAnimationFrame(()=>w.select())})}),f.on("cancel",Ot),this.settingEl.addExtraButton(w=>{w.setIcon("reset"),w.onClick(()=>{f.setColor(this.setting.default||null),this.settingsManager.clearSetting(this.sectionId,this.setting.id)}),w.setTooltip(Fe)}),this.settingEl.settingEl.dataset.id=this.setting.id}destroy(){var t,a;(t=this.pickr)==null||t.destroyAndRemove(),this.pickr=null,(a=this.settingEl)==null||a.settingEl.remove()}};var lr=require("obsidian"),or=class extends Ce{render(){if(!this.containerEl)return;let t=ve(this.setting),a=me(this.setting);if(typeof this.setting.default!="number")return console.error(`${de("Error:")} ${t} ${de("missing default value")}`);this.settingEl=new lr.Setting(this.containerEl),this.settingEl.setName(t),this.settingEl.setDesc(We(a,this.setting.default.toString(10))),this.settingEl.addText(i=>{let l=this.settingsManager.getSetting(this.sectionId,this.setting.id),c=(0,lr.debounce)(f=>{let p=/\./.test(f);this.settingsManager.setSetting(this.sectionId,this.setting.id,p?parseFloat(f):parseInt(f,10))},250,!0);i.setValue(l!==void 0?l.toString():this.setting.default.toString()),i.onChange(c),this.textComponent=i}),this.settingEl.addExtraButton(i=>{i.setIcon("reset"),i.onClick(()=>{this.textComponent.setValue(this.setting.default.toString()),this.settingsManager.clearSetting(this.sectionId,this.setting.id)}),i.setTooltip(Fe)}),this.settingEl.settingEl.dataset.id=this.setting.id}destroy(){var t;(t=this.settingEl)==null||t.settingEl.remove()}};var ur=require("obsidian"),cr=class extends Ce{render(){if(!this.containerEl)return;let t=ve(this.setting),a=me(this.setting);if(typeof this.setting.default!="number")return console.error(`${de("Error:")} ${t} ${de("missing default value")}`);this.settingEl=new ur.Setting(this.containerEl),this.settingEl.setName(t),this.settingEl.setDesc(We(a,this.setting.default.toString(10))),this.settingEl.addSlider(i=>{let l=this.settingsManager.getSetting(this.sectionId,this.setting.id),c=(0,ur.debounce)(f=>{this.settingsManager.setSetting(this.sectionId,this.setting.id,f)},250,!0);i.setDynamicTooltip(),i.setLimits(this.setting.min,this.setting.max,this.setting.step),i.setValue(l!==void 0?l:this.setting.default),i.onChange(c),this.sliderComponent=i}),this.settingEl.addExtraButton(i=>{i.setIcon("reset"),i.onClick(()=>{this.sliderComponent.setValue(this.setting.default),this.settingsManager.clearSetting(this.sectionId,this.setting.id)}),i.setTooltip(Fe)}),this.settingEl.settingEl.dataset.id=this.setting.id}destroy(){var t;(t=this.settingEl)==null||t.settingEl.remove()}};var Fi=require("obsidian"),fr=class extends Ce{render(){if(!this.containerEl)return;let t=ve(this.setting),a=me(this.setting);if(typeof this.setting.default!="string")return console.error(`${de("Error:")} ${t} ${de("missing default value")}`);let i=this.getDefaultOptionLabel();this.settingEl=new Fi.Setting(this.containerEl),this.settingEl.setName(t),this.settingEl.setDesc(We(a,this.setting.default,i)),this.settingEl.addDropdown(l=>{let c=this.settingsManager.getSetting(this.sectionId,this.setting.id);for(let f of this.setting.options)typeof f=="string"?l.addOption(f,f):l.addOption(f.value,f.label);l.setValue(c!==void 0?c:this.setting.default),l.onChange(f=>{this.settingsManager.setSetting(this.sectionId,this.setting.id,f)}),this.dropdownComponent=l}),this.settingEl.addExtraButton(l=>{l.setIcon("reset"),l.onClick(()=>{this.dropdownComponent.setValue(this.setting.default),this.settingsManager.clearSetting(this.sectionId,this.setting.id)}),l.setTooltip(Fe)}),this.settingEl.settingEl.dataset.id=this.setting.id}destroy(){var t;(t=this.settingEl)==null||t.settingEl.remove()}getDefaultOption(){if(this.setting.default)return this.setting.options.find(t=>typeof t=="string"?t===this.setting.default:t.value===this.setting.default)}getDefaultOptionLabel(){let t=this.getDefaultOption();if(t)return typeof t=="string"?t:t.label}};var pr=require("obsidian"),gr=class extends Ce{render(){if(!this.containerEl)return;let t=ve(this.setting),a=me(this.setting);if(typeof this.setting.default!="string")return console.error(`${de("Error:")} ${t} ${de("missing default value")}`);this.settingEl=new pr.Setting(this.containerEl),this.settingEl.setName(t),this.settingEl.setDesc(We(a,this.setting.default)),this.settingEl.addText(i=>{let l=this.settingsManager.getSetting(this.sectionId,this.setting.id),c=(0,pr.debounce)(f=>{this.settingsManager.setSetting(this.sectionId,this.setting.id,Ei(f))},250,!0);this.setting.quotes&&l==='""'&&(l=""),i.setValue(l?l.toString():this.setting.default),i.onChange(c),this.textComponent=i}),this.settingEl.addExtraButton(i=>{i.setIcon("reset"),i.onClick(()=>{this.textComponent.setValue(this.setting.default),this.settingsManager.clearSetting(this.sectionId,this.setting.id)}),i.setTooltip(Fe)}),this.settingEl.settingEl.dataset.id=this.setting.id}destroy(){var t;(t=this.settingEl)==null||t.settingEl.remove()}};var un=Xt(cn()),Dt=require("obsidian"),hr=class extends Ce{render(){if(!this.containerEl)return;let t=ve(this.setting),a=me(this.setting);if(typeof this.setting["default-light"]!="string"||!Ct(this.setting["default-light"]))return console.error(`${de("Error:")} ${t} ${de("missing default light value, or value is not in a valid color format")}`);if(typeof this.setting["default-dark"]!="string"||!Ct(this.setting["default-dark"]))return console.error(`${de("Error:")} ${t} ${de("missing default dark value, or value is not in a valid color format")}`);let i=`${this.setting.id}@@light`,l=`${this.setting.id}@@dark`,c=this.settingsManager.getSetting(this.sectionId,i),f=this.settingsManager.getSetting(this.sectionId,l),p=[],w=[];this.setting["default-light"]&&p.push(this.setting["default-light"]),c!==void 0&&p.push(c),this.setting["default-dark"]&&w.push(this.setting["default-dark"]),f!==void 0&&w.push(f),this.settingEl=new Dt.Setting(this.containerEl),this.settingEl.setName(t),this.settingEl.descEl.createSpan({},E=>{a&&E.appendChild(document.createTextNode(a))}),this.settingEl.descEl.createDiv({},E=>{E.createEl("small",{},B=>{B.appendChild(createEl("strong",{text:"Default (light): "})),B.appendChild(document.createTextNode(this.setting["default-light"]))}),E.createEl("br"),E.createEl("small",{},B=>{B.appendChild(createEl("strong",{text:"Default (dark): "})),B.appendChild(document.createTextNode(this.setting["default-dark"]))})});let S=this.settingEl.controlEl.createDiv({cls:"themed-color-wrapper"});this.createColorPickerLight(S,this.containerEl,p,c||"",i),this.createColorPickerDark(S,this.containerEl,w,f||"",l),this.settingEl.settingEl.dataset.id=this.setting.id}destroy(){var t,a,i;(t=this.pickrLight)==null||t.destroyAndRemove(),(a=this.pickrDark)==null||a.destroyAndRemove(),this.pickrLight=null,this.pickrDark=null,(i=this.settingEl)==null||i.settingEl.remove()}createColorPickerLight(t,a,i,l,c){let f=t.createDiv({cls:"theme-light"}),p=l!==void 0?l:this.setting["default-light"];f.style.setProperty("--pcr-color",p);let w=this.pickrLight=un.default.create(Nt({isView:this.isView,el:f.createDiv({cls:"picker"}),containerEl:a,swatches:i,opacity:this.setting.opacity,defaultColor:p}));w.on("show",()=>{let{result:E}=w.getRoot().interaction;activeWindow.requestAnimationFrame(()=>activeWindow.requestAnimationFrame(()=>E.select()))}),w.on("save",(E,B)=>this.onSave(c,E,B)),w.on("cancel",Ot);let S=new Dt.ButtonComponent(f.createDiv({cls:"pickr-reset"}));S.setIcon("reset"),S.onClick(()=>{w.setColor(this.setting["default-light"]),this.settingsManager.clearSetting(this.sectionId,c)}),S.setTooltip(Fe)}createColorPickerDark(t,a,i,l,c){let f=t.createDiv({cls:"theme-dark"}),p=l!==void 0?l:this.setting["default-dark"];f.style.setProperty("--pcr-color",p);let w=this.pickrDark=un.default.create(Nt({isView:this.isView,el:f.createDiv({cls:"picker"}),containerEl:a,swatches:i,opacity:this.setting.opacity,defaultColor:p}));w.on("show",()=>{let{result:E}=w.getRoot().interaction;activeWindow.requestAnimationFrame(()=>activeWindow.requestAnimationFrame(()=>E.select()))}),w.on("save",(E,B)=>this.onSave(c,E,B)),w.on("cancel",Ot);let S=new Dt.ButtonComponent(f.createDiv({cls:"pickr-reset"}));S.setIcon("reset"),S.onClick(()=>{w.setColor(this.setting["default-dark"]),this.settingsManager.clearSetting(this.sectionId,c)}),S.setTooltip(Fe)}onSave(t,a,i){a&&(this.settingsManager.setSetting(this.sectionId,t,a.toHEXA().toString()),i.hide(),i.addSwatch(a.toHEXA().toString()))}};var vr=require("obsidian");function hl(e,n,t,a,i,l){return a.type===he.HEADING?new dr(e,n,t,a,i,l):a.type===he.INFO_TEXT?new nr(e,n,t,a,i,l):a.type===he.CLASS_TOGGLE?new rr(e,n,t,a,i,l):a.type===he.CLASS_SELECT?new tr(e,n,t,a,i,l):a.type===he.VARIABLE_TEXT?new gr(e,n,t,a,i,l):a.type===he.VARIABLE_NUMBER?new or(e,n,t,a,i,l):a.type===he.VARIABLE_NUMBER_SLIDER?new cr(e,n,t,a,i,l):a.type===he.VARIABLE_SELECT?new fr(e,n,t,a,i,l):a.type===he.VARIABLE_COLOR?new sr(e,n,t,a,i,l):a.type===he.VARIABLE_THEMED_COLOR?new hr(e,n,t,a,i,l):void 0}function Ni(e){let{containerEl:n,isView:t,sectionId:a,settings:i,settingsManager:l,sectionName:c}=e,f=new dr(n,a,c,i[0],l,t),p=f;for(let w of i.splice(1))if(w.type==="heading"){let S=w;if(S.level<p.setting.level){for(;S.level<p.setting.level;)p=p.parent;p.setting.id===f.setting.id?p=p.addSettingChild(S):p=p.parent.addSettingChild(S)}else S.level===p.setting.level?p=p.parent.addSettingChild(S):p=p.addSettingChild(S)}else p.addSettingChild(w);return f}var dr=class extends Ce{constructor(){super(...arguments);this.children=[];this.filteredChildren=[];this.filterMode=!1;this.filterResultCount=0}render(){if(!this.containerEl)return;let t=ve(this.setting),a=me(this.setting);this.settingEl=new vr.Setting(this.containerEl),this.settingEl.setHeading(),this.settingEl.setClass("style-settings-heading"),this.settingEl.setName(t),this.settingEl.setDesc(a!=null?a:""),this.settingEl.settingEl.dataset.level=this.setting.level.toString(),this.settingEl.settingEl.dataset.id=this.setting.id;let i=createSpan({cls:"style-settings-collapse-indicator"});(0,vr.setIcon)(i,"right-triangle"),this.settingEl.nameEl.prepend(i),this.resultsEl=this.settingEl.nameEl.createSpan({cls:"style-settings-filter-result-count",text:this.filterMode?`${this.filterResultCount} Results`:void 0}),this.settingEl.settingEl.addEventListener("click",()=>{this.toggleVisible()}),this.addResetButton(),this.addExportButton(),this.childEl=this.containerEl.createDiv({cls:"style-settings-container"}),this.setCollapsed(!!this.setting.collapsed)}destroy(){var t,a;this.removeChildren(),(t=this.settingEl)==null||t.settingEl.remove(),(a=this.childEl)==null||a.remove()}filter(t){var a;this.filteredChildren=[],this.filterResultCount=0;for(let i of this.children)if(i.setting.type===he.HEADING){let l=i.filter(t);l>0&&(this.filterResultCount+=l,this.filteredChildren.push(i))}else i.decisiveMatch(t)&&(this.filteredChildren.push(i),this.filterResultCount+=1);return this.filterMode=!0,this.filterResultCount?this.setCollapsed(!1):this.setCollapsed(!0),this.renderChildren(),(a=this.resultsEl)==null||a.setText(`${this.filterResultCount} Results`),this.filterResultCount}clearFilter(){var t;this.filteredChildren=[];for(let a of this.children)a.setting.type===he.HEADING&&a.clearFilter();this.filterMode=!1,this.setCollapsed(!0),this.renderChildren(),(t=this.resultsEl)==null||t.empty()}renderChildren(){if(this.removeChildren(),this.filterMode)for(let t of this.filteredChildren)this.addChild(t);else for(let t of this.children)this.addChild(t)}removeChildren(){for(let t of this.children)this.removeChild(t)}toggleVisible(){this.setCollapsed(!this.setting.collapsed)}setCollapsed(t){var a;this.setting.collapsed=t,(a=this.settingEl)==null||a.settingEl.toggleClass("is-collapsed",t),t?this.removeChildren():this.renderChildren()}addResetButton(){let{resetFn:t}=this.setting;t&&this.settingEl.addExtraButton(a=>{a.setIcon("reset").setTooltip("Reset all settings to default").onClick(t)})}addExportButton(){this.settingEl.addExtraButton(t=>{t.setIcon("install"),t.setTooltip("Export settings"),t.extraSettingsEl.onClickEvent(a=>{a.stopPropagation();let i=ve(this.setting);i=this.sectionName===i?i:`${this.sectionName} > ${i}`,this.settingsManager.export(i,this.settingsManager.getSettings(this.sectionId,this.getAllChildrenIds()))})})}addSettingChild(t){let a=hl(this,this.sectionId,this.sectionName,t,this.settingsManager,this.isView);if(a)return this.children.push(a),a}getAllChildrenIds(){let t=[];for(let a of this.children)t.push(a.setting.id),a.setting.type==="heading"&&t.push(...a.getAllChildrenIds());return t}};var wt=require("obsidian"),xt=class extends wt.Component{constructor(t,a,i,l){super();this.settingsComponentTrees=[];this.filterString="";this.settings=[];this.errorList=[];this.app=t,this.plugin=a,this.containerEl=i,this.isView=!!l}onload(){this.display()}onunload(){this.settingsComponentTrees=[]}display(){this.generate(this.settings)}removeChildren(){for(let t of this.settingsComponentTrees)this.removeChild(t)}cleanup(){var t;this.removeChildren(),(t=this.settingsContainerEl)==null||t.empty()}setSettings(t,a){this.settings=t,this.errorList=a,this.containerEl.parentNode&&this.generate(t)}displayErrors(){let{containerEl:t,errorList:a}=this;a.forEach(i=>{t.createDiv({cls:"style-settings-error"},l=>{l.createDiv({cls:"style-settings-error-name",text:`Error: ${i.name}`}),l.createDiv({cls:"style-settings-error-desc",text:i.error})})})}displayEmpty(){let{containerEl:t}=this;t.createDiv({cls:"style-settings-empty"},a=>{a.createDiv({cls:"style-settings-empty-name",text:"No style settings found"}),a.createDiv({cls:"style-settings-empty-desc"}).appendChild(createFragment(i=>{i.appendText("Style settings configured by theme and plugin authors will show up here. You can also create your own configuration by creating a CSS snippet in your vault. "),i.createEl("a",{text:"Click here for details and examples.",href:"https://github.com/mgmeyers/obsidian-style-settings#obsidian-style-settings-plugin"})}))})}generate(t){var l;let{containerEl:a,plugin:i}=this;if(a.empty(),this.cleanup(),this.displayErrors(),t.length===0)return this.displayEmpty();new wt.Setting(a).then(c=>{c.controlEl.createEl("a",{cls:"style-settings-import",text:"Import",href:"#"},f=>{f.addEventListener("click",p=>{p.preventDefault(),this.plugin.settingsManager.import()})}),c.controlEl.createEl("a",{cls:"style-settings-export",text:"Export",href:"#"},f=>{f.addEventListener("click",p=>{p.preventDefault(),this.plugin.settingsManager.export("All settings",this.plugin.settingsManager.settings)})}),c.addSearch(f=>{f.setValue(this.filterString),f.onChange((0,wt.debounce)(p=>{this.filterString=p,p?this.filter():this.clearFilter()},250,!0)),f.setPlaceholder("Search Style Settings..."),c.controlEl.lastChild&&c.nameEl.appendChild(c.controlEl.lastChild)})}),this.settingsContainerEl=a.createDiv(),this.settingsComponentTrees=[];for(let c of t){let f=[{id:c.id,type:"heading",title:c.name,level:0,collapsed:(l=c.collapsed)!=null?l:!0,resetFn:()=>{i.settingsManager.clearSection(c.id),this.rerender()}},...c.settings];try{let p=Ni({containerEl:this.settingsContainerEl,isView:this.isView,sectionId:c.id,sectionName:c.name,settings:f,settingsManager:i.settingsManager});this.addChild(p),this.settingsComponentTrees.push(p)}catch(p){console.error("Style Settings | Failed to render section",p)}}}filter(){for(let t of this.settingsComponentTrees)t.filter(this.filterString)}clearFilter(){for(let t of this.settingsComponentTrees)t.clearFilter()}rerender(){this.cleanup(),this.display()}};var Oi=require("obsidian"),mr=class extends Oi.PluginSettingTab{constructor(t,a){super(t,a);this.plugin=a}rerender(){var t;(t=this.settingsMarkup)==null||t.rerender()}setSettings(t,a){this.settings=t,this.errorList=a,this.settingsMarkup&&this.settingsMarkup.setSettings(t,a)}display(){this.settingsMarkup=this.plugin.addChild(new xt(this.app,this.plugin,this.containerEl)),this.settings&&this.settingsMarkup.setSettings(this.settings,this.errorList)}hide(){this.settingsMarkup&&this.plugin.removeChild(this.settingsMarkup),this.settingsMarkup=null}};var Di=require("obsidian"),at="style-settings",br=class extends Di.ItemView{constructor(t,a){super(a);this.plugin=t}rerender(){var t;(t=this.settingsMarkup)==null||t.rerender()}setSettings(t,a){this.settings=t,this.errorList=a,this.settingsMarkup&&this.settingsMarkup.setSettings(t,a)}onload(){this.settingsMarkup=this.addChild(new xt(this.plugin.app,this.plugin,this.contentEl,!0)),this.settings&&this.settingsMarkup.setSettings(this.settings,this.errorList)}onunload(){this.settingsMarkup=null}getViewType(){return at}getIcon(){return"gear"}getDisplayText(){return"Style Settings"}};var dl=/^(?:( )+|\t+)/,Rt="space",$i="tab";function Ri(e,n){let t=new Map,a=0,i,l;for(let c of e.split(/\n/g)){if(!c)continue;let f,p,w,S,E=c.match(dl);if(E===null)a=0,i="";else{if(f=E[0].length,p=E[1]?Rt:$i,n&&p===Rt&&f===1)continue;p!==i&&(a=0),i=p,w=0;let B=f-a;if(a=f,B===0)w++;else{let Y=B>0?B:-B;l=vl(p,Y)}S=t.get(l),S=S===void 0?[1,0]:[++S[0],S[1]+w],t.set(l,S)}}return t}function vl(e,n){return(e===Rt?"s":"t")+String(n)}function ml(e){let t=e[0]==="s"?Rt:$i,a=Number(e.slice(1));return{type:t,amount:a}}function bl(e){let n,t=0,a=0;for(let[i,[l,c]]of e)(l>t||l===t&&c>a)&&(t=l,a=c,n=i);return n}function yl(e,n){return(e===Rt?" ":" ").repeat(n)}function fn(e){if(typeof e!="string")throw new TypeError("Expected a string");let n=Ri(e,!0);n.size===0&&(n=Ri(e,!1));let t=bl(n),a,i=0,l="";return t!==void 0&&({type:a,amount:i}=ml(t),l=yl(a,i)),{amount:i,type:a,indent:l}}function Ji(e){return typeof e=="undefined"||e===null}function Sl(e){return typeof e=="object"&&e!==null}function Cl(e){return Array.isArray(e)?e:Ji(e)?[]:[e]}function xl(e,n){var t,a,i,l;if(n)for(l=Object.keys(n),t=0,a=l.length;t<a;t+=1)i=l[t],e[i]=n[i];return e}function wl(e,n){var t="",a;for(a=0;a<n;a+=1)t+=e;return t}function El(e){return e===0&&Number.NEGATIVE_INFINITY===1/e}var _l=Ji,Al=Sl,kl=Cl,Tl=wl,Ll=El,Ml=xl,Ae={isNothing:_l,isObject:Al,toArray:kl,repeat:Tl,isNegativeZero:Ll,extend:Ml};function ea(e,n){var t="",a=e.reason||"(unknown reason)";return e.mark?(e.mark.name&&(t+='in "'+e.mark.name+'" '),t+="("+(e.mark.line+1)+":"+(e.mark.column+1)+")",!n&&e.mark.snippet&&(t+=` + +`+e.mark.snippet),a+" "+t):a}function Pt(e,n){Error.call(this),this.name="YAMLException",this.reason=e,this.mark=n,this.message=ea(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack||""}Pt.prototype=Object.create(Error.prototype);Pt.prototype.constructor=Pt;Pt.prototype.toString=function(n){return this.name+": "+ea(this,n)};var $e=Pt;function gn(e,n,t,a,i){var l="",c="",f=Math.floor(i/2)-1;return a-n>f&&(l=" ... ",n=a-f+l.length),t-a>f&&(c=" ...",t=a+f-c.length),{str:l+e.slice(n,t).replace(/\t/g,"\u2192")+c,pos:a-n+l.length}}function pn(e,n){return Ae.repeat(" ",n-e.length)+e}function Il(e,n){if(n=Object.create(n||null),!e.buffer)return null;n.maxLength||(n.maxLength=79),typeof n.indent!="number"&&(n.indent=1),typeof n.linesBefore!="number"&&(n.linesBefore=3),typeof n.linesAfter!="number"&&(n.linesAfter=2);for(var t=/\r?\n|\r|\0/g,a=[0],i=[],l,c=-1;l=t.exec(e.buffer);)i.push(l.index),a.push(l.index+l[0].length),e.position<=l.index&&c<0&&(c=a.length-2);c<0&&(c=a.length-1);var f="",p,w,S=Math.min(e.line+n.linesAfter,i.length).toString().length,E=n.maxLength-(n.indent+S+3);for(p=1;p<=n.linesBefore&&!(c-p<0);p++)w=gn(e.buffer,a[c-p],i[c-p],e.position-(a[c]-a[c-p]),E),f=Ae.repeat(" ",n.indent)+pn((e.line-p+1).toString(),S)+" | "+w.str+` +`+f;for(w=gn(e.buffer,a[c],i[c],e.position,E),f+=Ae.repeat(" ",n.indent)+pn((e.line+1).toString(),S)+" | "+w.str+` +`,f+=Ae.repeat("-",n.indent+S+3+w.pos)+`^ +`,p=1;p<=n.linesAfter&&!(c+p>=i.length);p++)w=gn(e.buffer,a[c+p],i[c+p],e.position-(a[c]-a[c+p]),E),f+=Ae.repeat(" ",n.indent)+pn((e.line+p+1).toString(),S)+" | "+w.str+` +`;return f.replace(/\n$/,"")}var Fl=Il,Nl=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],Ol=["scalar","sequence","mapping"];function Dl(e){var n={};return e!==null&&Object.keys(e).forEach(function(t){e[t].forEach(function(a){n[String(a)]=t})}),n}function Rl(e,n){if(n=n||{},Object.keys(n).forEach(function(t){if(Nl.indexOf(t)===-1)throw new $e('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')}),this.options=n,this.tag=e,this.kind=n.kind||null,this.resolve=n.resolve||function(){return!0},this.construct=n.construct||function(t){return t},this.instanceOf=n.instanceOf||null,this.predicate=n.predicate||null,this.represent=n.represent||null,this.representName=n.representName||null,this.defaultStyle=n.defaultStyle||null,this.multi=n.multi||!1,this.styleAliases=Dl(n.styleAliases||null),Ol.indexOf(this.kind)===-1)throw new $e('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')}var Ne=Rl;function Pi(e,n){var t=[];return e[n].forEach(function(a){var i=t.length;t.forEach(function(l,c){l.tag===a.tag&&l.kind===a.kind&&l.multi===a.multi&&(i=c)}),t[i]=a}),t}function $l(){var e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}},n,t;function a(i){i.multi?(e.multi[i.kind].push(i),e.multi.fallback.push(i)):e[i.kind][i.tag]=e.fallback[i.tag]=i}for(n=0,t=arguments.length;n<t;n+=1)arguments[n].forEach(a);return e}function dn(e){return this.extend(e)}dn.prototype.extend=function(n){var t=[],a=[];if(n instanceof Ne)a.push(n);else if(Array.isArray(n))a=a.concat(n);else if(n&&(Array.isArray(n.implicit)||Array.isArray(n.explicit)))n.implicit&&(t=t.concat(n.implicit)),n.explicit&&(a=a.concat(n.explicit));else throw new $e("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");t.forEach(function(l){if(!(l instanceof Ne))throw new $e("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(l.loadKind&&l.loadKind!=="scalar")throw new $e("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(l.multi)throw new $e("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")}),a.forEach(function(l){if(!(l instanceof Ne))throw new $e("Specified list of YAML types (or a single Type object) contains a non-Type object.")});var i=Object.create(dn.prototype);return i.implicit=(this.implicit||[]).concat(t),i.explicit=(this.explicit||[]).concat(a),i.compiledImplicit=Pi(i,"implicit"),i.compiledExplicit=Pi(i,"explicit"),i.compiledTypeMap=$l(i.compiledImplicit,i.compiledExplicit),i};var ta=dn,ra=new Ne("tag:yaml.org,2002:str",{kind:"scalar",construct:function(e){return e!==null?e:""}}),na=new Ne("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(e){return e!==null?e:[]}}),ia=new Ne("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return e!==null?e:{}}}),aa=new ta({explicit:[ra,na,ia]});function Pl(e){if(e===null)return!0;var n=e.length;return n===1&&e==="~"||n===4&&(e==="null"||e==="Null"||e==="NULL")}function Vl(){return null}function Bl(e){return e===null}var sa=new Ne("tag:yaml.org,2002:null",{kind:"scalar",resolve:Pl,construct:Vl,predicate:Bl,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"},empty:function(){return""}},defaultStyle:"lowercase"});function Hl(e){if(e===null)return!1;var n=e.length;return n===4&&(e==="true"||e==="True"||e==="TRUE")||n===5&&(e==="false"||e==="False"||e==="FALSE")}function jl(e){return e==="true"||e==="True"||e==="TRUE"}function Gl(e){return Object.prototype.toString.call(e)==="[object Boolean]"}var oa=new Ne("tag:yaml.org,2002:bool",{kind:"scalar",resolve:Hl,construct:jl,predicate:Gl,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"});function Yl(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function Ul(e){return 48<=e&&e<=55}function Wl(e){return 48<=e&&e<=57}function ql(e){if(e===null)return!1;var n=e.length,t=0,a=!1,i;if(!n)return!1;if(i=e[t],(i==="-"||i==="+")&&(i=e[++t]),i==="0"){if(t+1===n)return!0;if(i=e[++t],i==="b"){for(t++;t<n;t++)if(i=e[t],i!=="_"){if(i!=="0"&&i!=="1")return!1;a=!0}return a&&i!=="_"}if(i==="x"){for(t++;t<n;t++)if(i=e[t],i!=="_"){if(!Yl(e.charCodeAt(t)))return!1;a=!0}return a&&i!=="_"}if(i==="o"){for(t++;t<n;t++)if(i=e[t],i!=="_"){if(!Ul(e.charCodeAt(t)))return!1;a=!0}return a&&i!=="_"}}if(i==="_")return!1;for(;t<n;t++)if(i=e[t],i!=="_"){if(!Wl(e.charCodeAt(t)))return!1;a=!0}return!(!a||i==="_")}function zl(e){var n=e,t=1,a;if(n.indexOf("_")!==-1&&(n=n.replace(/_/g,"")),a=n[0],(a==="-"||a==="+")&&(a==="-"&&(t=-1),n=n.slice(1),a=n[0]),n==="0")return 0;if(a==="0"){if(n[1]==="b")return t*parseInt(n.slice(2),2);if(n[1]==="x")return t*parseInt(n.slice(2),16);if(n[1]==="o")return t*parseInt(n.slice(2),8)}return t*parseInt(n,10)}function Kl(e){return Object.prototype.toString.call(e)==="[object Number]"&&e%1===0&&!Ae.isNegativeZero(e)}var la=new Ne("tag:yaml.org,2002:int",{kind:"scalar",resolve:ql,construct:zl,predicate:Kl,represent:{binary:function(e){return e>=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),Xl=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");function Ql(e){return!(e===null||!Xl.test(e)||e[e.length-1]==="_")}function Zl(e){var n,t;return n=e.replace(/_/g,"").toLowerCase(),t=n[0]==="-"?-1:1,"+-".indexOf(n[0])>=0&&(n=n.slice(1)),n===".inf"?t===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:n===".nan"?NaN:t*parseFloat(n,10)}var Jl=/^[-+]?[0-9]+e/;function ec(e,n){var t;if(isNaN(e))switch(n){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(n){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(n){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(Ae.isNegativeZero(e))return"-0.0";return t=e.toString(10),Jl.test(t)?t.replace("e",".e"):t}function tc(e){return Object.prototype.toString.call(e)==="[object Number]"&&(e%1!==0||Ae.isNegativeZero(e))}var ca=new Ne("tag:yaml.org,2002:float",{kind:"scalar",resolve:Ql,construct:Zl,predicate:tc,represent:ec,defaultStyle:"lowercase"}),ua=aa.extend({implicit:[sa,oa,la,ca]}),fa=ua,ga=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),pa=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");function rc(e){return e===null?!1:ga.exec(e)!==null||pa.exec(e)!==null}function nc(e){var n,t,a,i,l,c,f,p=0,w=null,S,E,B;if(n=ga.exec(e),n===null&&(n=pa.exec(e)),n===null)throw new Error("Date resolve error");if(t=+n[1],a=+n[2]-1,i=+n[3],!n[4])return new Date(Date.UTC(t,a,i));if(l=+n[4],c=+n[5],f=+n[6],n[7]){for(p=n[7].slice(0,3);p.length<3;)p+="0";p=+p}return n[9]&&(S=+n[10],E=+(n[11]||0),w=(S*60+E)*6e4,n[9]==="-"&&(w=-w)),B=new Date(Date.UTC(t,a,i,l,c,f,p)),w&&B.setTime(B.getTime()-w),B}function ic(e){return e.toISOString()}var ha=new Ne("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:rc,construct:nc,instanceOf:Date,represent:ic});function ac(e){return e==="<<"||e===null}var da=new Ne("tag:yaml.org,2002:merge",{kind:"scalar",resolve:ac}),Sn=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/= +\r`;function sc(e){if(e===null)return!1;var n,t,a=0,i=e.length,l=Sn;for(t=0;t<i;t++)if(n=l.indexOf(e.charAt(t)),!(n>64)){if(n<0)return!1;a+=6}return a%8===0}function oc(e){var n,t,a=e.replace(/[\r\n=]/g,""),i=a.length,l=Sn,c=0,f=[];for(n=0;n<i;n++)n%4===0&&n&&(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)),c=c<<6|l.indexOf(a.charAt(n));return t=i%4*6,t===0?(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)):t===18?(f.push(c>>10&255),f.push(c>>2&255)):t===12&&f.push(c>>4&255),new Uint8Array(f)}function lc(e){var n="",t=0,a,i,l=e.length,c=Sn;for(a=0;a<l;a++)a%3===0&&a&&(n+=c[t>>18&63],n+=c[t>>12&63],n+=c[t>>6&63],n+=c[t&63]),t=(t<<8)+e[a];return i=l%3,i===0?(n+=c[t>>18&63],n+=c[t>>12&63],n+=c[t>>6&63],n+=c[t&63]):i===2?(n+=c[t>>10&63],n+=c[t>>4&63],n+=c[t<<2&63],n+=c[64]):i===1&&(n+=c[t>>2&63],n+=c[t<<4&63],n+=c[64],n+=c[64]),n}function cc(e){return Object.prototype.toString.call(e)==="[object Uint8Array]"}var va=new Ne("tag:yaml.org,2002:binary",{kind:"scalar",resolve:sc,construct:oc,predicate:cc,represent:lc}),uc=Object.prototype.hasOwnProperty,fc=Object.prototype.toString;function gc(e){if(e===null)return!0;var n=[],t,a,i,l,c,f=e;for(t=0,a=f.length;t<a;t+=1){if(i=f[t],c=!1,fc.call(i)!=="[object Object]")return!1;for(l in i)if(uc.call(i,l))if(!c)c=!0;else return!1;if(!c)return!1;if(n.indexOf(l)===-1)n.push(l);else return!1}return!0}function pc(e){return e!==null?e:[]}var ma=new Ne("tag:yaml.org,2002:omap",{kind:"sequence",resolve:gc,construct:pc}),hc=Object.prototype.toString;function dc(e){if(e===null)return!0;var n,t,a,i,l,c=e;for(l=new Array(c.length),n=0,t=c.length;n<t;n+=1){if(a=c[n],hc.call(a)!=="[object Object]"||(i=Object.keys(a),i.length!==1))return!1;l[n]=[i[0],a[i[0]]]}return!0}function vc(e){if(e===null)return[];var n,t,a,i,l,c=e;for(l=new Array(c.length),n=0,t=c.length;n<t;n+=1)a=c[n],i=Object.keys(a),l[n]=[i[0],a[i[0]]];return l}var ba=new Ne("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:dc,construct:vc}),mc=Object.prototype.hasOwnProperty;function bc(e){if(e===null)return!0;var n,t=e;for(n in t)if(mc.call(t,n)&&t[n]!==null)return!1;return!0}function yc(e){return e!==null?e:{}}var ya=new Ne("tag:yaml.org,2002:set",{kind:"mapping",resolve:bc,construct:yc}),Cn=fa.extend({implicit:[ha,da],explicit:[va,ma,ba,ya]}),ot=Object.prototype.hasOwnProperty,yr=1,Sa=2,Ca=3,Sr=4,hn=1,Sc=2,Vi=3,Cc=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,xc=/[\x85\u2028\u2029]/,wc=/[,\[\]\{\}]/,xa=/^(?:!|!!|![a-z\-]+!)$/i,wa=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i;function Bi(e){return Object.prototype.toString.call(e)}function Xe(e){return e===10||e===13}function ft(e){return e===9||e===32}function Ge(e){return e===9||e===32||e===10||e===13}function _t(e){return e===44||e===91||e===93||e===123||e===125}function Ec(e){var n;return 48<=e&&e<=57?e-48:(n=e|32,97<=n&&n<=102?n-97+10:-1)}function _c(e){return e===120?2:e===117?4:e===85?8:0}function Ac(e){return 48<=e&&e<=57?e-48:-1}function Hi(e){return e===48?"\0":e===97?"\x07":e===98?"\b":e===116||e===9?" ":e===110?` +`:e===118?"\v":e===102?"\f":e===114?"\r":e===101?"\x1B":e===32?" ":e===34?'"':e===47?"/":e===92?"\\":e===78?"\x85":e===95?"\xA0":e===76?"\u2028":e===80?"\u2029":""}function kc(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}var Ea=new Array(256),_a=new Array(256);for(ut=0;ut<256;ut++)Ea[ut]=Hi(ut)?1:0,_a[ut]=Hi(ut);var ut;function Tc(e,n){this.input=e,this.filename=n.filename||null,this.schema=n.schema||Cn,this.onWarning=n.onWarning||null,this.legacy=n.legacy||!1,this.json=n.json||!1,this.listener=n.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function Aa(e,n){var t={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return t.snippet=Fl(t),new $e(n,t)}function W(e,n){throw Aa(e,n)}function Cr(e,n){e.onWarning&&e.onWarning.call(null,Aa(e,n))}var ji={YAML:function(n,t,a){var i,l,c;n.version!==null&&W(n,"duplication of %YAML directive"),a.length!==1&&W(n,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(a[0]),i===null&&W(n,"ill-formed argument of the YAML directive"),l=parseInt(i[1],10),c=parseInt(i[2],10),l!==1&&W(n,"unacceptable YAML version of the document"),n.version=a[0],n.checkLineBreaks=c<2,c!==1&&c!==2&&Cr(n,"unsupported YAML version of the document")},TAG:function(n,t,a){var i,l;a.length!==2&&W(n,"TAG directive accepts exactly two arguments"),i=a[0],l=a[1],xa.test(i)||W(n,"ill-formed tag handle (first argument) of the TAG directive"),ot.call(n.tagMap,i)&&W(n,'there is a previously declared suffix for "'+i+'" tag handle'),wa.test(l)||W(n,"ill-formed tag prefix (second argument) of the TAG directive");try{l=decodeURIComponent(l)}catch(c){W(n,"tag prefix is malformed: "+l)}n.tagMap[i]=l}};function st(e,n,t,a){var i,l,c,f;if(n<t){if(f=e.input.slice(n,t),a)for(i=0,l=f.length;i<l;i+=1)c=f.charCodeAt(i),c===9||32<=c&&c<=1114111||W(e,"expected valid JSON character");else Cc.test(f)&&W(e,"the stream contains non-printable characters");e.result+=f}}function Gi(e,n,t,a){var i,l,c,f;for(Ae.isObject(t)||W(e,"cannot merge mappings; the provided source object is unacceptable"),i=Object.keys(t),c=0,f=i.length;c<f;c+=1)l=i[c],ot.call(n,l)||(n[l]=t[l],a[l]=!0)}function At(e,n,t,a,i,l,c,f,p){var w,S;if(Array.isArray(i))for(i=Array.prototype.slice.call(i),w=0,S=i.length;w<S;w+=1)Array.isArray(i[w])&&W(e,"nested arrays are not supported inside keys"),typeof i=="object"&&Bi(i[w])==="[object Object]"&&(i[w]="[object Object]");if(typeof i=="object"&&Bi(i)==="[object Object]"&&(i="[object Object]"),i=String(i),n===null&&(n={}),a==="tag:yaml.org,2002:merge")if(Array.isArray(l))for(w=0,S=l.length;w<S;w+=1)Gi(e,n,l[w],t);else Gi(e,n,l,t);else!e.json&&!ot.call(t,i)&&ot.call(n,i)&&(e.line=c||e.line,e.lineStart=f||e.lineStart,e.position=p||e.position,W(e,"duplicated mapping key")),i==="__proto__"?Object.defineProperty(n,i,{configurable:!0,enumerable:!0,writable:!0,value:l}):n[i]=l,delete t[i];return n}function xn(e){var n;n=e.input.charCodeAt(e.position),n===10?e.position++:n===13?(e.position++,e.input.charCodeAt(e.position)===10&&e.position++):W(e,"a line break is expected"),e.line+=1,e.lineStart=e.position,e.firstTabInLine=-1}function Ee(e,n,t){for(var a=0,i=e.input.charCodeAt(e.position);i!==0;){for(;ft(i);)i===9&&e.firstTabInLine===-1&&(e.firstTabInLine=e.position),i=e.input.charCodeAt(++e.position);if(n&&i===35)do i=e.input.charCodeAt(++e.position);while(i!==10&&i!==13&&i!==0);if(Xe(i))for(xn(e),i=e.input.charCodeAt(e.position),a++,e.lineIndent=0;i===32;)e.lineIndent++,i=e.input.charCodeAt(++e.position);else break}return t!==-1&&a!==0&&e.lineIndent<t&&Cr(e,"deficient indentation"),a}function Er(e){var n=e.position,t;return t=e.input.charCodeAt(n),!!((t===45||t===46)&&t===e.input.charCodeAt(n+1)&&t===e.input.charCodeAt(n+2)&&(n+=3,t=e.input.charCodeAt(n),t===0||Ge(t)))}function wn(e,n){n===1?e.result+=" ":n>1&&(e.result+=Ae.repeat(` +`,n-1))}function Lc(e,n,t){var a,i,l,c,f,p,w,S,E=e.kind,B=e.result,Y;if(Y=e.input.charCodeAt(e.position),Ge(Y)||_t(Y)||Y===35||Y===38||Y===42||Y===33||Y===124||Y===62||Y===39||Y===34||Y===37||Y===64||Y===96||(Y===63||Y===45)&&(i=e.input.charCodeAt(e.position+1),Ge(i)||t&&_t(i)))return!1;for(e.kind="scalar",e.result="",l=c=e.position,f=!1;Y!==0;){if(Y===58){if(i=e.input.charCodeAt(e.position+1),Ge(i)||t&&_t(i))break}else if(Y===35){if(a=e.input.charCodeAt(e.position-1),Ge(a))break}else{if(e.position===e.lineStart&&Er(e)||t&&_t(Y))break;if(Xe(Y))if(p=e.line,w=e.lineStart,S=e.lineIndent,Ee(e,!1,-1),e.lineIndent>=n){f=!0,Y=e.input.charCodeAt(e.position);continue}else{e.position=c,e.line=p,e.lineStart=w,e.lineIndent=S;break}}f&&(st(e,l,c,!1),wn(e,e.line-p),l=c=e.position,f=!1),ft(Y)||(c=e.position+1),Y=e.input.charCodeAt(++e.position)}return st(e,l,c,!1),e.result?!0:(e.kind=E,e.result=B,!1)}function Mc(e,n){var t,a,i;if(t=e.input.charCodeAt(e.position),t!==39)return!1;for(e.kind="scalar",e.result="",e.position++,a=i=e.position;(t=e.input.charCodeAt(e.position))!==0;)if(t===39)if(st(e,a,e.position,!0),t=e.input.charCodeAt(++e.position),t===39)a=e.position,e.position++,i=e.position;else return!0;else Xe(t)?(st(e,a,i,!0),wn(e,Ee(e,!1,n)),a=i=e.position):e.position===e.lineStart&&Er(e)?W(e,"unexpected end of the document within a single quoted scalar"):(e.position++,i=e.position);W(e,"unexpected end of the stream within a single quoted scalar")}function Ic(e,n){var t,a,i,l,c,f;if(f=e.input.charCodeAt(e.position),f!==34)return!1;for(e.kind="scalar",e.result="",e.position++,t=a=e.position;(f=e.input.charCodeAt(e.position))!==0;){if(f===34)return st(e,t,e.position,!0),e.position++,!0;if(f===92){if(st(e,t,e.position,!0),f=e.input.charCodeAt(++e.position),Xe(f))Ee(e,!1,n);else if(f<256&&Ea[f])e.result+=_a[f],e.position++;else if((c=_c(f))>0){for(i=c,l=0;i>0;i--)f=e.input.charCodeAt(++e.position),(c=Ec(f))>=0?l=(l<<4)+c:W(e,"expected hexadecimal character");e.result+=kc(l),e.position++}else W(e,"unknown escape sequence");t=a=e.position}else Xe(f)?(st(e,t,a,!0),wn(e,Ee(e,!1,n)),t=a=e.position):e.position===e.lineStart&&Er(e)?W(e,"unexpected end of the document within a double quoted scalar"):(e.position++,a=e.position)}W(e,"unexpected end of the stream within a double quoted scalar")}function Fc(e,n){var t=!0,a,i,l,c=e.tag,f,p=e.anchor,w,S,E,B,Y,K=Object.create(null),Q,L,re,F;if(F=e.input.charCodeAt(e.position),F===91)S=93,Y=!1,f=[];else if(F===123)S=125,Y=!0,f={};else return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=f),F=e.input.charCodeAt(++e.position);F!==0;){if(Ee(e,!0,n),F=e.input.charCodeAt(e.position),F===S)return e.position++,e.tag=c,e.anchor=p,e.kind=Y?"mapping":"sequence",e.result=f,!0;t?F===44&&W(e,"expected the node content, but found ','"):W(e,"missed comma between flow collection entries"),L=Q=re=null,E=B=!1,F===63&&(w=e.input.charCodeAt(e.position+1),Ge(w)&&(E=B=!0,e.position++,Ee(e,!0,n))),a=e.line,i=e.lineStart,l=e.position,kt(e,n,yr,!1,!0),L=e.tag,Q=e.result,Ee(e,!0,n),F=e.input.charCodeAt(e.position),(B||e.line===a)&&F===58&&(E=!0,F=e.input.charCodeAt(++e.position),Ee(e,!0,n),kt(e,n,yr,!1,!0),re=e.result),Y?At(e,f,K,L,Q,re,a,i,l):E?f.push(At(e,null,K,L,Q,re,a,i,l)):f.push(Q),Ee(e,!0,n),F=e.input.charCodeAt(e.position),F===44?(t=!0,F=e.input.charCodeAt(++e.position)):t=!1}W(e,"unexpected end of the stream within a flow collection")}function Nc(e,n){var t,a,i=hn,l=!1,c=!1,f=n,p=0,w=!1,S,E;if(E=e.input.charCodeAt(e.position),E===124)a=!1;else if(E===62)a=!0;else return!1;for(e.kind="scalar",e.result="";E!==0;)if(E=e.input.charCodeAt(++e.position),E===43||E===45)hn===i?i=E===43?Vi:Sc:W(e,"repeat of a chomping mode identifier");else if((S=Ac(E))>=0)S===0?W(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):c?W(e,"repeat of an indentation width identifier"):(f=n+S-1,c=!0);else break;if(ft(E)){do E=e.input.charCodeAt(++e.position);while(ft(E));if(E===35)do E=e.input.charCodeAt(++e.position);while(!Xe(E)&&E!==0)}for(;E!==0;){for(xn(e),e.lineIndent=0,E=e.input.charCodeAt(e.position);(!c||e.lineIndent<f)&&E===32;)e.lineIndent++,E=e.input.charCodeAt(++e.position);if(!c&&e.lineIndent>f&&(f=e.lineIndent),Xe(E)){p++;continue}if(e.lineIndent<f){i===Vi?e.result+=Ae.repeat(` +`,l?1+p:p):i===hn&&l&&(e.result+=` +`);break}for(a?ft(E)?(w=!0,e.result+=Ae.repeat(` +`,l?1+p:p)):w?(w=!1,e.result+=Ae.repeat(` +`,p+1)):p===0?l&&(e.result+=" "):e.result+=Ae.repeat(` +`,p):e.result+=Ae.repeat(` +`,l?1+p:p),l=!0,c=!0,p=0,t=e.position;!Xe(E)&&E!==0;)E=e.input.charCodeAt(++e.position);st(e,t,e.position,!1)}return!0}function Yi(e,n){var t,a=e.tag,i=e.anchor,l=[],c,f=!1,p;if(e.firstTabInLine!==-1)return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=l),p=e.input.charCodeAt(e.position);p!==0&&(e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,W(e,"tab characters must not be used in indentation")),!(p!==45||(c=e.input.charCodeAt(e.position+1),!Ge(c))));){if(f=!0,e.position++,Ee(e,!0,-1)&&e.lineIndent<=n){l.push(null),p=e.input.charCodeAt(e.position);continue}if(t=e.line,kt(e,n,Ca,!1,!0),l.push(e.result),Ee(e,!0,-1),p=e.input.charCodeAt(e.position),(e.line===t||e.lineIndent>n)&&p!==0)W(e,"bad indentation of a sequence entry");else if(e.lineIndent<n)break}return f?(e.tag=a,e.anchor=i,e.kind="sequence",e.result=l,!0):!1}function Oc(e,n,t){var a,i,l,c,f,p,w=e.tag,S=e.anchor,E={},B=Object.create(null),Y=null,K=null,Q=null,L=!1,re=!1,F;if(e.firstTabInLine!==-1)return!1;for(e.anchor!==null&&(e.anchorMap[e.anchor]=E),F=e.input.charCodeAt(e.position);F!==0;){if(!L&&e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,W(e,"tab characters must not be used in indentation")),a=e.input.charCodeAt(e.position+1),l=e.line,(F===63||F===58)&&Ge(a))F===63?(L&&(At(e,E,B,Y,K,null,c,f,p),Y=K=Q=null),re=!0,L=!0,i=!0):L?(L=!1,i=!0):W(e,"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line"),e.position+=1,F=a;else{if(c=e.line,f=e.lineStart,p=e.position,!kt(e,t,Sa,!1,!0))break;if(e.line===l){for(F=e.input.charCodeAt(e.position);ft(F);)F=e.input.charCodeAt(++e.position);if(F===58)F=e.input.charCodeAt(++e.position),Ge(F)||W(e,"a whitespace character is expected after the key-value separator within a block mapping"),L&&(At(e,E,B,Y,K,null,c,f,p),Y=K=Q=null),re=!0,L=!1,i=!1,Y=e.tag,K=e.result;else if(re)W(e,"can not read an implicit mapping pair; a colon is missed");else return e.tag=w,e.anchor=S,!0}else if(re)W(e,"can not read a block mapping entry; a multiline key may not be an implicit key");else return e.tag=w,e.anchor=S,!0}if((e.line===l||e.lineIndent>n)&&(L&&(c=e.line,f=e.lineStart,p=e.position),kt(e,n,Sr,!0,i)&&(L?K=e.result:Q=e.result),L||(At(e,E,B,Y,K,Q,c,f,p),Y=K=Q=null),Ee(e,!0,-1),F=e.input.charCodeAt(e.position)),(e.line===l||e.lineIndent>n)&&F!==0)W(e,"bad indentation of a mapping entry");else if(e.lineIndent<n)break}return L&&At(e,E,B,Y,K,null,c,f,p),re&&(e.tag=w,e.anchor=S,e.kind="mapping",e.result=E),re}function Dc(e){var n,t=!1,a=!1,i,l,c;if(c=e.input.charCodeAt(e.position),c!==33)return!1;if(e.tag!==null&&W(e,"duplication of a tag property"),c=e.input.charCodeAt(++e.position),c===60?(t=!0,c=e.input.charCodeAt(++e.position)):c===33?(a=!0,i="!!",c=e.input.charCodeAt(++e.position)):i="!",n=e.position,t){do c=e.input.charCodeAt(++e.position);while(c!==0&&c!==62);e.position<e.length?(l=e.input.slice(n,e.position),c=e.input.charCodeAt(++e.position)):W(e,"unexpected end of the stream within a verbatim tag")}else{for(;c!==0&&!Ge(c);)c===33&&(a?W(e,"tag suffix cannot contain exclamation marks"):(i=e.input.slice(n-1,e.position+1),xa.test(i)||W(e,"named tag handle cannot contain such characters"),a=!0,n=e.position+1)),c=e.input.charCodeAt(++e.position);l=e.input.slice(n,e.position),wc.test(l)&&W(e,"tag suffix cannot contain flow indicator characters")}l&&!wa.test(l)&&W(e,"tag name cannot contain such characters: "+l);try{l=decodeURIComponent(l)}catch(f){W(e,"tag name is malformed: "+l)}return t?e.tag=l:ot.call(e.tagMap,i)?e.tag=e.tagMap[i]+l:i==="!"?e.tag="!"+l:i==="!!"?e.tag="tag:yaml.org,2002:"+l:W(e,'undeclared tag handle "'+i+'"'),!0}function Rc(e){var n,t;if(t=e.input.charCodeAt(e.position),t!==38)return!1;for(e.anchor!==null&&W(e,"duplication of an anchor property"),t=e.input.charCodeAt(++e.position),n=e.position;t!==0&&!Ge(t)&&!_t(t);)t=e.input.charCodeAt(++e.position);return e.position===n&&W(e,"name of an anchor node must contain at least one character"),e.anchor=e.input.slice(n,e.position),!0}function $c(e){var n,t,a;if(a=e.input.charCodeAt(e.position),a!==42)return!1;for(a=e.input.charCodeAt(++e.position),n=e.position;a!==0&&!Ge(a)&&!_t(a);)a=e.input.charCodeAt(++e.position);return e.position===n&&W(e,"name of an alias node must contain at least one character"),t=e.input.slice(n,e.position),ot.call(e.anchorMap,t)||W(e,'unidentified alias "'+t+'"'),e.result=e.anchorMap[t],Ee(e,!0,-1),!0}function kt(e,n,t,a,i){var l,c,f,p=1,w=!1,S=!1,E,B,Y,K,Q,L;if(e.listener!==null&&e.listener("open",e),e.tag=null,e.anchor=null,e.kind=null,e.result=null,l=c=f=Sr===t||Ca===t,a&&Ee(e,!0,-1)&&(w=!0,e.lineIndent>n?p=1:e.lineIndent===n?p=0:e.lineIndent<n&&(p=-1)),p===1)for(;Dc(e)||Rc(e);)Ee(e,!0,-1)?(w=!0,f=l,e.lineIndent>n?p=1:e.lineIndent===n?p=0:e.lineIndent<n&&(p=-1)):f=!1;if(f&&(f=w||i),(p===1||Sr===t)&&(yr===t||Sa===t?Q=n:Q=n+1,L=e.position-e.lineStart,p===1?f&&(Yi(e,L)||Oc(e,L,Q))||Fc(e,Q)?S=!0:(c&&Nc(e,Q)||Mc(e,Q)||Ic(e,Q)?S=!0:$c(e)?(S=!0,(e.tag!==null||e.anchor!==null)&&W(e,"alias node should not have any properties")):Lc(e,Q,yr===t)&&(S=!0,e.tag===null&&(e.tag="?")),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):p===0&&(S=f&&Yi(e,L))),e.tag===null)e.anchor!==null&&(e.anchorMap[e.anchor]=e.result);else if(e.tag==="?"){for(e.result!==null&&e.kind!=="scalar"&&W(e,'unacceptable node kind for !<?> tag; it should be "scalar", not "'+e.kind+'"'),E=0,B=e.implicitTypes.length;E<B;E+=1)if(K=e.implicitTypes[E],K.resolve(e.result)){e.result=K.construct(e.result),e.tag=K.tag,e.anchor!==null&&(e.anchorMap[e.anchor]=e.result);break}}else if(e.tag!=="!"){if(ot.call(e.typeMap[e.kind||"fallback"],e.tag))K=e.typeMap[e.kind||"fallback"][e.tag];else for(K=null,Y=e.typeMap.multi[e.kind||"fallback"],E=0,B=Y.length;E<B;E+=1)if(e.tag.slice(0,Y[E].tag.length)===Y[E].tag){K=Y[E];break}K||W(e,"unknown tag !<"+e.tag+">"),e.result!==null&&K.kind!==e.kind&&W(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+K.kind+'", not "'+e.kind+'"'),K.resolve(e.result,e.tag)?(e.result=K.construct(e.result,e.tag),e.anchor!==null&&(e.anchorMap[e.anchor]=e.result)):W(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return e.listener!==null&&e.listener("close",e),e.tag!==null||e.anchor!==null||S}function Pc(e){var n=e.position,t,a,i,l=!1,c;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(c=e.input.charCodeAt(e.position))!==0&&(Ee(e,!0,-1),c=e.input.charCodeAt(e.position),!(e.lineIndent>0||c!==37));){for(l=!0,c=e.input.charCodeAt(++e.position),t=e.position;c!==0&&!Ge(c);)c=e.input.charCodeAt(++e.position);for(a=e.input.slice(t,e.position),i=[],a.length<1&&W(e,"directive name must not be less than one character in length");c!==0;){for(;ft(c);)c=e.input.charCodeAt(++e.position);if(c===35){do c=e.input.charCodeAt(++e.position);while(c!==0&&!Xe(c));break}if(Xe(c))break;for(t=e.position;c!==0&&!Ge(c);)c=e.input.charCodeAt(++e.position);i.push(e.input.slice(t,e.position))}c!==0&&xn(e),ot.call(ji,a)?ji[a](e,a,i):Cr(e,'unknown document directive "'+a+'"')}if(Ee(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,Ee(e,!0,-1)):l&&W(e,"directives end mark is expected"),kt(e,e.lineIndent-1,Sr,!1,!0),Ee(e,!0,-1),e.checkLineBreaks&&xc.test(e.input.slice(n,e.position))&&Cr(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&Er(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,Ee(e,!0,-1));return}if(e.position<e.length-1)W(e,"end of the stream or a document separator is expected");else return}function ka(e,n){e=String(e),n=n||{},e.length!==0&&(e.charCodeAt(e.length-1)!==10&&e.charCodeAt(e.length-1)!==13&&(e+=` +`),e.charCodeAt(0)===65279&&(e=e.slice(1)));var t=new Tc(e,n),a=e.indexOf("\0");for(a!==-1&&(t.position=a,W(t,"null byte is not allowed in input")),t.input+="\0";t.input.charCodeAt(t.position)===32;)t.lineIndent+=1,t.position+=1;for(;t.position<t.length-1;)Pc(t);return t.documents}function Vc(e,n,t){n!==null&&typeof n=="object"&&typeof t=="undefined"&&(t=n,n=null);var a=ka(e,t);if(typeof n!="function")return a;for(var i=0,l=a.length;i<l;i+=1)n(a[i])}function Bc(e,n){var t=ka(e,n);if(t.length!==0){if(t.length===1)return t[0];throw new $e("expected a single document in the stream, but found more")}}var Hc=Vc,jc=Bc,Ta={loadAll:Hc,load:jc},La=Object.prototype.toString,Ma=Object.prototype.hasOwnProperty,En=65279,Gc=9,Vt=10,Yc=13,Uc=32,Wc=33,qc=34,vn=35,zc=37,Kc=38,Xc=39,Qc=42,Ia=44,Zc=45,xr=58,Jc=61,eu=62,tu=63,ru=64,Fa=91,Na=93,nu=96,Oa=123,iu=124,Da=125,De={};De[0]="\\0";De[7]="\\a";De[8]="\\b";De[9]="\\t";De[10]="\\n";De[11]="\\v";De[12]="\\f";De[13]="\\r";De[27]="\\e";De[34]='\\"';De[92]="\\\\";De[133]="\\N";De[160]="\\_";De[8232]="\\L";De[8233]="\\P";var au=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],su=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function ou(e,n){var t,a,i,l,c,f,p;if(n===null)return{};for(t={},a=Object.keys(n),i=0,l=a.length;i<l;i+=1)c=a[i],f=String(n[c]),c.slice(0,2)==="!!"&&(c="tag:yaml.org,2002:"+c.slice(2)),p=e.compiledTypeMap.fallback[c],p&&Ma.call(p.styleAliases,f)&&(f=p.styleAliases[f]),t[c]=f;return t}function lu(e){var n,t,a;if(n=e.toString(16).toUpperCase(),e<=255)t="x",a=2;else if(e<=65535)t="u",a=4;else if(e<=4294967295)t="U",a=8;else throw new $e("code point within a string may not be greater than 0xFFFFFFFF");return"\\"+t+Ae.repeat("0",a-n.length)+n}var cu=1,Bt=2;function uu(e){this.schema=e.schema||Cn,this.indent=Math.max(1,e.indent||2),this.noArrayIndent=e.noArrayIndent||!1,this.skipInvalid=e.skipInvalid||!1,this.flowLevel=Ae.isNothing(e.flowLevel)?-1:e.flowLevel,this.styleMap=ou(this.schema,e.styles||null),this.sortKeys=e.sortKeys||!1,this.lineWidth=e.lineWidth||80,this.noRefs=e.noRefs||!1,this.noCompatMode=e.noCompatMode||!1,this.condenseFlow=e.condenseFlow||!1,this.quotingType=e.quotingType==='"'?Bt:cu,this.forceQuotes=e.forceQuotes||!1,this.replacer=typeof e.replacer=="function"?e.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result="",this.duplicates=[],this.usedDuplicates=null}function Ui(e,n){for(var t=Ae.repeat(" ",n),a=0,i=-1,l="",c,f=e.length;a<f;)i=e.indexOf(` +`,a),i===-1?(c=e.slice(a),a=f):(c=e.slice(a,i+1),a=i+1),c.length&&c!==` +`&&(l+=t),l+=c;return l}function mn(e,n){return` +`+Ae.repeat(" ",e.indent*n)}function fu(e,n){var t,a,i;for(t=0,a=e.implicitTypes.length;t<a;t+=1)if(i=e.implicitTypes[t],i.resolve(n))return!0;return!1}function wr(e){return e===Uc||e===Gc}function Ht(e){return 32<=e&&e<=126||161<=e&&e<=55295&&e!==8232&&e!==8233||57344<=e&&e<=65533&&e!==En||65536<=e&&e<=1114111}function Wi(e){return Ht(e)&&e!==En&&e!==Yc&&e!==Vt}function qi(e,n,t){var a=Wi(e),i=a&&!wr(e);return(t?a:a&&e!==Ia&&e!==Fa&&e!==Na&&e!==Oa&&e!==Da)&&e!==vn&&!(n===xr&&!i)||Wi(n)&&!wr(n)&&e===vn||n===xr&&i}function gu(e){return Ht(e)&&e!==En&&!wr(e)&&e!==Zc&&e!==tu&&e!==xr&&e!==Ia&&e!==Fa&&e!==Na&&e!==Oa&&e!==Da&&e!==vn&&e!==Kc&&e!==Qc&&e!==Wc&&e!==iu&&e!==Jc&&e!==eu&&e!==Xc&&e!==qc&&e!==zc&&e!==ru&&e!==nu}function pu(e){return!wr(e)&&e!==xr}function $t(e,n){var t=e.charCodeAt(n),a;return t>=55296&&t<=56319&&n+1<e.length&&(a=e.charCodeAt(n+1),a>=56320&&a<=57343)?(t-55296)*1024+a-56320+65536:t}function Ra(e){var n=/^\n* /;return n.test(e)}var $a=1,bn=2,Pa=3,Va=4,Et=5;function hu(e,n,t,a,i,l,c,f){var p,w=0,S=null,E=!1,B=!1,Y=a!==-1,K=-1,Q=gu($t(e,0))&&pu($t(e,e.length-1));if(n||c)for(p=0;p<e.length;w>=65536?p+=2:p++){if(w=$t(e,p),!Ht(w))return Et;Q=Q&&qi(w,S,f),S=w}else{for(p=0;p<e.length;w>=65536?p+=2:p++){if(w=$t(e,p),w===Vt)E=!0,Y&&(B=B||p-K-1>a&&e[K+1]!==" ",K=p);else if(!Ht(w))return Et;Q=Q&&qi(w,S,f),S=w}B=B||Y&&p-K-1>a&&e[K+1]!==" "}return!E&&!B?Q&&!c&&!i(e)?$a:l===Bt?Et:bn:t>9&&Ra(e)?Et:c?l===Bt?Et:bn:B?Va:Pa}function du(e,n,t,a,i){e.dump=function(){if(n.length===0)return e.quotingType===Bt?'""':"''";if(!e.noCompatMode&&(au.indexOf(n)!==-1||su.test(n)))return e.quotingType===Bt?'"'+n+'"':"'"+n+"'";var l=e.indent*Math.max(1,t),c=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-l),f=a||e.flowLevel>-1&&t>=e.flowLevel;function p(w){return fu(e,w)}switch(hu(n,f,e.indent,c,p,e.quotingType,e.forceQuotes&&!a,i)){case $a:return n;case bn:return"'"+n.replace(/'/g,"''")+"'";case Pa:return"|"+zi(n,e.indent)+Ki(Ui(n,l));case Va:return">"+zi(n,e.indent)+Ki(Ui(vu(n,c),l));case Et:return'"'+mu(n)+'"';default:throw new $e("impossible error: invalid scalar style")}}()}function zi(e,n){var t=Ra(e)?String(n):"",a=e[e.length-1]===` +`,i=a&&(e[e.length-2]===` +`||e===` +`),l=i?"+":a?"":"-";return t+l+` +`}function Ki(e){return e[e.length-1]===` +`?e.slice(0,-1):e}function vu(e,n){for(var t=/(\n+)([^\n]*)/g,a=function(){var w=e.indexOf(` +`);return w=w!==-1?w:e.length,t.lastIndex=w,Xi(e.slice(0,w),n)}(),i=e[0]===` +`||e[0]===" ",l,c;c=t.exec(e);){var f=c[1],p=c[2];l=p[0]===" ",a+=f+(!i&&!l&&p!==""?` +`:"")+Xi(p,n),i=l}return a}function Xi(e,n){if(e===""||e[0]===" ")return e;for(var t=/ [^ ]/g,a,i=0,l,c=0,f=0,p="";a=t.exec(e);)f=a.index,f-i>n&&(l=c>i?c:f,p+=` +`+e.slice(i,l),i=l+1),c=f;return p+=` +`,e.length-i>n&&c>i?p+=e.slice(i,c)+` +`+e.slice(c+1):p+=e.slice(i),p.slice(1)}function mu(e){for(var n="",t=0,a,i=0;i<e.length;t>=65536?i+=2:i++)t=$t(e,i),a=De[t],!a&&Ht(t)?(n+=e[i],t>=65536&&(n+=e[i+1])):n+=a||lu(t);return n}function bu(e,n,t){var a="",i=e.tag,l,c,f;for(l=0,c=t.length;l<c;l+=1)f=t[l],e.replacer&&(f=e.replacer.call(t,String(l),f)),(Je(e,n,f,!1,!1)||typeof f=="undefined"&&Je(e,n,null,!1,!1))&&(a!==""&&(a+=","+(e.condenseFlow?"":" ")),a+=e.dump);e.tag=i,e.dump="["+a+"]"}function Qi(e,n,t,a){var i="",l=e.tag,c,f,p;for(c=0,f=t.length;c<f;c+=1)p=t[c],e.replacer&&(p=e.replacer.call(t,String(c),p)),(Je(e,n+1,p,!0,!0,!1,!0)||typeof p=="undefined"&&Je(e,n+1,null,!0,!0,!1,!0))&&((!a||i!=="")&&(i+=mn(e,n)),e.dump&&Vt===e.dump.charCodeAt(0)?i+="-":i+="- ",i+=e.dump);e.tag=l,e.dump=i||"[]"}function yu(e,n,t){var a="",i=e.tag,l=Object.keys(t),c,f,p,w,S;for(c=0,f=l.length;c<f;c+=1)S="",a!==""&&(S+=", "),e.condenseFlow&&(S+='"'),p=l[c],w=t[p],e.replacer&&(w=e.replacer.call(t,p,w)),Je(e,n,p,!1,!1)&&(e.dump.length>1024&&(S+="? "),S+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Je(e,n,w,!1,!1)&&(S+=e.dump,a+=S));e.tag=i,e.dump="{"+a+"}"}function Su(e,n,t,a){var i="",l=e.tag,c=Object.keys(t),f,p,w,S,E,B;if(e.sortKeys===!0)c.sort();else if(typeof e.sortKeys=="function")c.sort(e.sortKeys);else if(e.sortKeys)throw new $e("sortKeys must be a boolean or a function");for(f=0,p=c.length;f<p;f+=1)B="",(!a||i!=="")&&(B+=mn(e,n)),w=c[f],S=t[w],e.replacer&&(S=e.replacer.call(t,w,S)),Je(e,n+1,w,!0,!0,!0)&&(E=e.tag!==null&&e.tag!=="?"||e.dump&&e.dump.length>1024,E&&(e.dump&&Vt===e.dump.charCodeAt(0)?B+="?":B+="? "),B+=e.dump,E&&(B+=mn(e,n)),Je(e,n+1,S,!0,E)&&(e.dump&&Vt===e.dump.charCodeAt(0)?B+=":":B+=": ",B+=e.dump,i+=B));e.tag=l,e.dump=i||"{}"}function Zi(e,n,t){var a,i,l,c,f,p;for(i=t?e.explicitTypes:e.implicitTypes,l=0,c=i.length;l<c;l+=1)if(f=i[l],(f.instanceOf||f.predicate)&&(!f.instanceOf||typeof n=="object"&&n instanceof f.instanceOf)&&(!f.predicate||f.predicate(n))){if(t?f.multi&&f.representName?e.tag=f.representName(n):e.tag=f.tag:e.tag="?",f.represent){if(p=e.styleMap[f.tag]||f.defaultStyle,La.call(f.represent)==="[object Function]")a=f.represent(n,p);else if(Ma.call(f.represent,p))a=f.represent[p](n,p);else throw new $e("!<"+f.tag+'> tag resolver accepts not "'+p+'" style');e.dump=a}return!0}return!1}function Je(e,n,t,a,i,l,c){e.tag=null,e.dump=t,Zi(e,t,!1)||Zi(e,t,!0);var f=La.call(e.dump),p=a,w;a&&(a=e.flowLevel<0||e.flowLevel>n);var S=f==="[object Object]"||f==="[object Array]",E,B;if(S&&(E=e.duplicates.indexOf(t),B=E!==-1),(e.tag!==null&&e.tag!=="?"||B||e.indent!==2&&n>0)&&(i=!1),B&&e.usedDuplicates[E])e.dump="*ref_"+E;else{if(S&&B&&!e.usedDuplicates[E]&&(e.usedDuplicates[E]=!0),f==="[object Object]")a&&Object.keys(e.dump).length!==0?(Su(e,n,e.dump,i),B&&(e.dump="&ref_"+E+e.dump)):(yu(e,n,e.dump),B&&(e.dump="&ref_"+E+" "+e.dump));else if(f==="[object Array]")a&&e.dump.length!==0?(e.noArrayIndent&&!c&&n>0?Qi(e,n-1,e.dump,i):Qi(e,n,e.dump,i),B&&(e.dump="&ref_"+E+e.dump)):(bu(e,n,e.dump),B&&(e.dump="&ref_"+E+" "+e.dump));else if(f==="[object String]")e.tag!=="?"&&du(e,e.dump,n,l,p);else{if(f==="[object Undefined]")return!1;if(e.skipInvalid)return!1;throw new $e("unacceptable kind of an object to dump "+f)}e.tag!==null&&e.tag!=="?"&&(w=encodeURI(e.tag[0]==="!"?e.tag.slice(1):e.tag).replace(/!/g,"%21"),e.tag[0]==="!"?w="!"+w:w.slice(0,18)==="tag:yaml.org,2002:"?w="!!"+w.slice(18):w="!<"+w+">",e.dump=w+" "+e.dump)}return!0}function Cu(e,n){var t=[],a=[],i,l;for(yn(e,t,a),i=0,l=a.length;i<l;i+=1)n.duplicates.push(t[a[i]]);n.usedDuplicates=new Array(l)}function yn(e,n,t){var a,i,l;if(e!==null&&typeof e=="object")if(i=n.indexOf(e),i!==-1)t.indexOf(i)===-1&&t.push(i);else if(n.push(e),Array.isArray(e))for(i=0,l=e.length;i<l;i+=1)yn(e[i],n,t);else for(a=Object.keys(e),i=0,l=a.length;i<l;i+=1)yn(e[a[i]],n,t)}function xu(e,n){n=n||{};var t=new uu(n);t.noRefs||Cu(e,t);var a=e;return t.replacer&&(a=t.replacer.call({"":a},"",a)),Je(t,0,a,!0,!0)?t.dump+` +`:""}var wu=xu,Eu={dump:wu};function _n(e,n){return function(){throw new Error("Function yaml."+e+" is removed in js-yaml 4. Use yaml."+n+" instead, which is now safe by default.")}}var _u=Ne,Au=ta,ku=aa,Tu=ua,Lu=fa,Mu=Cn,Iu=Ta.load,Fu=Ta.loadAll,Nu=Eu.dump,Ou=$e,Du={binary:va,float:ca,map:ia,null:sa,pairs:ba,set:ya,timestamp:ha,bool:oa,int:la,merge:da,omap:ma,seq:na,str:ra},Ru=_n("safeLoad","load"),$u=_n("safeLoadAll","loadAll"),Pu=_n("safeDump","dump"),Vu={Type:_u,Schema:Au,FAILSAFE_SCHEMA:ku,JSON_SCHEMA:Tu,CORE_SCHEMA:Lu,DEFAULT_SCHEMA:Mu,load:Iu,loadAll:Fu,dump:Nu,YAMLException:Ou,types:Du,safeLoad:Ru,safeLoadAll:$u,safeDump:Pu},Ba=Vu;var Ha=require("obsidian"),_r=class extends Ha.Plugin{constructor(){super(...arguments);this.settingsList=[];this.errorList=[];this.commandList=[];this.debounceTimer=0}async onload(){this.settingsManager=new Jt(this),await this.settingsManager.load(),this.settingsTab=new mr(this.app,this),this.addSettingTab(this.settingsTab),this.registerView(at,t=>new br(this,t)),this.addCommand({id:"show-style-settings-leaf",name:"Show style settings view",callback:()=>{this.activateView()}}),this.registerEvent(this.app.workspace.on("css-change",t=>{(t==null?void 0:t.source)!=="style-settings"&&this.parseCSS()})),this.registerEvent(this.app.workspace.on("parse-style-settings",()=>{this.parseCSS()})),this.lightEl=document.body.createDiv("theme-light style-settings-ref"),this.darkEl=document.body.createDiv("theme-dark style-settings-ref"),document.body.classList.add("css-settings-manager"),this.parseCSS(),this.app.workspace.onLayoutReady(()=>{this.settingsList&&this.app.workspace.getLeavesOfType(at).forEach(t=>{t.view.setSettings(this.settingsList,this.errorList)})})}getCSSVar(t){let a=getComputedStyle(this.lightEl).getPropertyValue(`--${t}`),i=getComputedStyle(this.darkEl).getPropertyValue(`--${t}`),l=getComputedStyle(document.body).getPropertyValue(`--${t}`);return{light:a,dark:i,current:l}}parseCSS(){clearTimeout(this.debounceTimer),this.debounceTimer=activeWindow.setTimeout(()=>{this.settingsList=[],this.errorList=[];for(let a of this.commandList)this.app.commands.removeCommand(a.id);this.commandList=[],this.settingsManager.removeClasses();let t=document.styleSheets;for(let a=0,i=t.length;a<i;a++){let l=t.item(a);l&&this.parseCSSStyleSheet(l)}this.registerSettingsToSettingsSearch(),this.settingsTab.setSettings(this.settingsList,this.errorList),this.app.workspace.getLeavesOfType(at).forEach(a=>{a.view.setSettings(this.settingsList,this.errorList)}),this.settingsManager.setConfig(this.settingsList),this.settingsManager.initClasses(),this.registerSettingCommands()},100)}registerSettingsToSettingsSearch(){var a;let t=()=>{if(window.SettingsSearch){let i=window.SettingsSearch;i.removeTabResources("obsidian-style-settings");for(let l of this.settingsList)i.addResources(...l.settings.map(c=>{var p,w;return{tab:"obsidian-style-settings",name:"Style Settings",text:(p=ve(c))!=null?p:"",desc:(w=me(c))!=null?w:""}}))}};(a=this.app.plugins.plugins["settings-search"])!=null&&a.loaded?t():this.app.workspace.on("settings-search-loaded",()=>{t()})}unregisterSettingsFromSettingsSearch(){var t;(t=this.app.plugins.plugins["settings-search"])!=null&&t.loaded&&window.SettingsSearch.removeTabResources("obsidian-style-settings")}parseCSSStyleSheet(t){var l,c;let a=(c=(l=t==null?void 0:t.ownerNode)==null?void 0:l.textContent)==null?void 0:c.trim();if(!a)return;let i=sn.exec(a);if(i!=null&&i.length)do{let f=a.match(wi);if(!f)continue;let p=f[1];try{let w=i[1].trim(),S=this.parseCSSSettings(w,p);S&&typeof S=="object"&&S.name&&S.id&&S.settings&&S.settings.length&&this.settingsList.push(S)}catch(w){this.errorList.push({name:p,error:`${w}`})}}while((i=sn.exec(a))!==null)}parseCSSSettings(t,a){let i=fn(t),l=Ba.load(t.replace(/\t/g,i.type==="space"?i.indent:" "),{filename:a});if(l.settings)return l.settings=l.settings.filter(c=>c),l}registerSettingCommands(){for(let t of this.settingsList)for(let a of t.settings)a.type===he.CLASS_TOGGLE&&a.addCommand&&this.addClassToggleCommand(t,a)}addClassToggleCommand(t,a){this.commandList.push(this.addCommand({id:`style-settings-class-toggle-${t.id}-${a.id}`,name:`Toggle ${a.title}`,callback:()=>{let i=!this.settingsManager.getSetting(t.id,a.id);this.settingsManager.setSetting(t.id,a.id,i),this.settingsTab.rerender();for(let l of this.app.workspace.getLeavesOfType(at))l.view.rerender()}}))}onunload(){this.lightEl.remove(),this.darkEl.remove(),document.body.classList.remove("css-settings-manager"),this.settingsManager.cleanup(),this.deactivateView(),this.unregisterSettingsFromSettingsSearch()}deactivateView(){this.app.workspace.detachLeavesOfType(at)}async activateView(){this.deactivateView();let t=this.app.workspace.getLeaf("tab");await t.setViewState({type:at,active:!0}),t.view.setSettings(this.settingsList,this.errorList)}}; +/*! Bundled license information: + +chroma-js/chroma.js: + (** + * chroma.js - JavaScript library for color conversions + * + * Copyright (c) 2011-2019, Gregor Aisch + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. The name Gregor Aisch may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * ------------------------------------------------------- + * + * chroma.js includes colors from colorbrewer2.org, which are released under + * the following license: + * + * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, + * and The Pennsylvania State University. + * + * 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. + * + * ------------------------------------------------------ + * + * Named colors are taken from X11 Color Names. + * http://www.w3.org/TR/css3-color/#svg-color + * + * @preserve + *) + +@simonwep/pickr/dist/pickr.min.js: + (*! Pickr 1.8.4 MIT | https://github.com/Simonwep/pickr *) + +js-yaml/dist/js-yaml.mjs: + (*! js-yaml 4.1.0 https://github.com/nodeca/js-yaml @license MIT *) +*/ + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-style-settings/manifest.json b/.obsidian/plugins/obsidian-style-settings/manifest.json new file mode 100644 index 0000000..1d347c9 --- /dev/null +++ b/.obsidian/plugins/obsidian-style-settings/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "obsidian-style-settings", + "name": "Style Settings", + "version": "1.0.9", + "minAppVersion": "0.11.5", + "description": "Offers controls for adjusting theme, plugin, and snippet CSS variables.", + "author": "mgmeyers", + "authorUrl": "https://github.com/mgmeyers/obsidian-style-settings", + "isDesktopOnly": false +} diff --git a/.obsidian/plugins/obsidian-style-settings/styles.css b/.obsidian/plugins/obsidian-style-settings/styles.css new file mode 100644 index 0000000..2971809 --- /dev/null +++ b/.obsidian/plugins/obsidian-style-settings/styles.css @@ -0,0 +1,243 @@ +.style-settings-heading { + cursor: pointer; + margin-bottom: 18px; + padding-bottom: 6px; + border-bottom: 1px solid var(--background-modifier-border); +} + +.style-settings-heading[data-level="0"] { + margin-bottom: 26px; +} + +.style-settings-container { + padding-bottom: 16px; +} + +.style-settings-heading[data-level="0"] + .style-settings-container { + padding-left: 34px; +} + +.style-settings-heading.is-collapsed { + margin-bottom: 0; +} + +.style-settings-heading.is-collapsed + .style-settings-container { + display: none; +} + +.style-settings-collapse-indicator { + color: var(--text-faint); + display: inline-block; + margin-right: 8px; + position: relative; + top: -1px; +} + +.style-settings-heading[data-level="0"] ++ .style-settings-container +.style-settings-collapse-indicator { + margin-left: -17px; +} + +.style-settings-collapse-indicator > svg { + height: 9px; + width: 9px; +} + +.style-settings-heading.is-collapsed .style-settings-collapse-indicator > svg { + transform: rotate(-90deg); +} + +.style-settings-filter-result-count { + color: var(--text-faint); + line-height: var(--line-height-tight); + margin-inline: var(--size-4-2); +} + +.style-settings-error { + font-size: 14px; + border-radius: 6px; + background: rgba(var(--background-modifier-error-rgb), 0.2); + color: var(--text-error); + padding: 10px; + margin-bottom: 1rem; +} + +.style-settings-error-name { + font-weight: bold; + margin-bottom: 5px; +} + +.style-settings-error-desc { + white-space: pre; +} + +.style-settings-empty { + font-size: 14px; + background: var(--background-secondary); + padding: 10px; +} + +.style-settings-empty-name { + font-weight: bold; + margin-bottom: 5px; +} + +.style-settings-import-input { + width: 0.1px; + height: 0.1px; + opacity: 0; + overflow: hidden; + position: absolute; + z-index: -1; +} + +.style-settings-import-label { + cursor: pointer; + color: var(--text-accent); + text-decoration: underline; +} + +.style-settings-import-label:hover { + color: var(--text-accent-hover); +} + +.style-settings-export, +.style-settings-import { + display: inline-block; + margin-right: 10px; +} + +.style-settings-copy, +.style-settings-download { + position: relative; + display: inline-block; + margin-left: 10px; +} + +.style-settings-copy:before { + color: var(--interactive-success); + content: "✓"; + position: absolute; + left: -18px; + font-weight: bold; + opacity: 0; + transition: 150ms opacity ease-in-out; +} + +.style-settings-copy.success:before { + opacity: 1; +} + +.modal-style-settings { + height: 70vh; + display: flex; + flex-direction: column; +} + +.modal-style-settings .modal-content { + flex-grow: 1; + margin: 0; + display: flex; + flex-direction: column; +} + +.modal-style-settings textarea { + display: block; + width: 100%; + height: 100%; + font-family: var(--font-monospace) !important; + font-size: 12px; + white-space: pre; + overflow-wrap: normal; + overflow-x: scroll; + margin-bottom: 5px; +} + +.modal-style-settings .setting-item { + align-items: flex-start; +} + +.modal-style-settings button { + margin: 10px 0 0; +} + +.style-settings-import-error { + display: none; + color: var(--text-error); +} + +.style-settings-import-error.active { + display: block; +} + +.view-content .style-settings-container .setting-item:not(.setting-item-heading) { + flex-direction: column; + align-items: flex-start; +} + +.view-content .style-settings-container .setting-item:not(.setting-item-heading) .setting-item-control { + padding-top: 0.5em; +} + +.view-content .style-settings-container .setting-item:not(.setting-item-heading) .themed-color-wrapper { + display: flex; +} + +.style-settings-ref { + position: absolute; + width: 0 !important; + height: 0 !important; + pointer-events: none; +} + +.style-settings-info-text .style-settings-markdown :first-child { + margin-top: 0; +} + +.style-settings-info-text .style-settings-markdown :last-child { + margin-bottom: 0; +}.style-settings-container .pcr-app { + display: none; +} + +.style-settings-container .pcr-app.visible { + display: flex; +} + +.pcr-app .pcr-swatches > button { + padding: 0; +} + +.pickr .pcr-button { + margin-right: 0; +} + +.themed-color-wrapper > div { + background: var(--background-primary); + padding: 10px; + display: flex; + align-items: center; + border-radius: 4px; +} + +.themed-color-wrapper > div + div { + margin-top: 6px; +} + +.themed-color-wrapper button { + display: block; +} + +.themed-color-wrapper .pickr-reset > button { + margin: 0 0 0 10px; + padding: 9px; + line-height: 1; +} + +.themed-color-wrapper .pickr-reset > button > svg { + display: block; +} +/*! Pickr 1.8.4 MIT | https://github.com/Simonwep/pickr */ +.pickr{position:relative;overflow:visible;transform:translateY(0)}.pickr *{box-sizing:border-box;outline:none;border:none;-webkit-appearance:none}.pickr .pcr-button{position:relative;height:2em;width:2em;padding:0.5em;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Helvetica Neue",Arial,sans-serif;border-radius:.15em;background:url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" stroke="%2342445A" stroke-width="5px" stroke-linecap="round"><path d="M45,45L5,5"></path><path d="M45,5L5,45"></path></svg>') no-repeat center;background-size:0;transition:all 0.3s}.pickr .pcr-button::before{position:absolute;content:'';top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');background-size:.5em;border-radius:.15em;z-index:-1}.pickr .pcr-button::before{z-index:initial}.pickr .pcr-button::after{position:absolute;content:'';top:0;left:0;height:100%;width:100%;transition:background 0.3s;background:var(--pcr-color);border-radius:.15em}.pickr .pcr-button.clear{background-size:70%}.pickr .pcr-button.clear::before{opacity:0}.pickr .pcr-button.clear:focus{box-shadow:0 0 0 1px rgba(255,255,255,0.85),0 0 0 3px var(--pcr-color)}.pickr .pcr-button.disabled{cursor:not-allowed}.pickr *,.pcr-app *{box-sizing:border-box;outline:none;border:none;-webkit-appearance:none}.pickr input:focus,.pickr input.pcr-active,.pickr button:focus,.pickr button.pcr-active,.pcr-app input:focus,.pcr-app input.pcr-active,.pcr-app button:focus,.pcr-app button.pcr-active{box-shadow:0 0 0 1px rgba(255,255,255,0.85),0 0 0 3px var(--pcr-color)}.pickr .pcr-palette,.pickr .pcr-slider,.pcr-app .pcr-palette,.pcr-app .pcr-slider{transition:box-shadow 0.3s}.pickr .pcr-palette:focus,.pickr .pcr-slider:focus,.pcr-app .pcr-palette:focus,.pcr-app .pcr-slider:focus{box-shadow:0 0 0 1px rgba(255,255,255,0.85),0 0 0 3px rgba(0,0,0,0.25)}.pcr-app{position:fixed;display:flex;flex-direction:column;z-index:10000;border-radius:0.1em;background:#fff;opacity:0;visibility:hidden;transition:opacity 0.3s, visibility 0s 0.3s;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Helvetica Neue",Arial,sans-serif;box-shadow:0 0.15em 1.5em 0 rgba(0,0,0,0.1),0 0 1em 0 rgba(0,0,0,0.03);left:0;top:0}.pcr-app.visible{transition:opacity 0.3s;visibility:visible;opacity:1}.pcr-app .pcr-swatches{display:flex;flex-wrap:wrap;margin-top:0.75em}.pcr-app .pcr-swatches.pcr-last{margin:0}@supports (display: grid){.pcr-app .pcr-swatches{display:grid;align-items:center;grid-template-columns:repeat(auto-fit, 1.75em)}}.pcr-app .pcr-swatches>button{font-size:1em;position:relative;width:calc(1.75em - 5px);height:calc(1.75em - 5px);border-radius:0.15em;cursor:pointer;margin:2.5px;flex-shrink:0;justify-self:center;transition:all 0.15s;overflow:hidden;background:transparent;z-index:1}.pcr-app .pcr-swatches>button::before{position:absolute;content:'';top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');background-size:6px;border-radius:.15em;z-index:-1}.pcr-app .pcr-swatches>button::after{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background:var(--pcr-color);border:1px solid rgba(0,0,0,0.05);border-radius:0.15em;box-sizing:border-box}.pcr-app .pcr-swatches>button:hover{filter:brightness(1.05)}.pcr-app .pcr-swatches>button:not(.pcr-active){box-shadow:none}.pcr-app .pcr-interaction{display:flex;flex-wrap:wrap;align-items:center;margin:0 -0.2em 0 -0.2em}.pcr-app .pcr-interaction>*{margin:0 0.2em}.pcr-app .pcr-interaction input{letter-spacing:0.07em;font-size:0.75em;text-align:center;cursor:pointer;color:#75797e;background:#f1f3f4;border-radius:.15em;transition:all 0.15s;padding:0.45em 0.5em;margin-top:0.75em}.pcr-app .pcr-interaction input:hover{filter:brightness(0.975)}.pcr-app .pcr-interaction input:focus{box-shadow:0 0 0 1px rgba(255,255,255,0.85),0 0 0 3px rgba(66,133,244,0.75)}.pcr-app .pcr-interaction .pcr-result{color:#75797e;text-align:left;flex:1 1 8em;min-width:8em;transition:all 0.2s;border-radius:.15em;background:#f1f3f4;cursor:text}.pcr-app .pcr-interaction .pcr-result::-moz-selection{background:#4285f4;color:#fff}.pcr-app .pcr-interaction .pcr-result::selection{background:#4285f4;color:#fff}.pcr-app .pcr-interaction .pcr-type.active{color:#fff;background:#4285f4}.pcr-app .pcr-interaction .pcr-save,.pcr-app .pcr-interaction .pcr-cancel,.pcr-app .pcr-interaction .pcr-clear{color:#fff;width:auto}.pcr-app .pcr-interaction .pcr-save,.pcr-app .pcr-interaction .pcr-cancel,.pcr-app .pcr-interaction .pcr-clear{color:#fff}.pcr-app .pcr-interaction .pcr-save:hover,.pcr-app .pcr-interaction .pcr-cancel:hover,.pcr-app .pcr-interaction .pcr-clear:hover{filter:brightness(0.925)}.pcr-app .pcr-interaction .pcr-save{background:#4285f4}.pcr-app .pcr-interaction .pcr-clear,.pcr-app .pcr-interaction .pcr-cancel{background:#f44250}.pcr-app .pcr-interaction .pcr-clear:focus,.pcr-app .pcr-interaction .pcr-cancel:focus{box-shadow:0 0 0 1px rgba(255,255,255,0.85),0 0 0 3px rgba(244,66,80,0.75)}.pcr-app .pcr-selection .pcr-picker{position:absolute;height:18px;width:18px;border:2px solid #fff;border-radius:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.pcr-app .pcr-selection .pcr-color-palette,.pcr-app .pcr-selection .pcr-color-chooser,.pcr-app .pcr-selection .pcr-color-opacity{position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;display:flex;flex-direction:column;cursor:grab;cursor:-webkit-grab}.pcr-app .pcr-selection .pcr-color-palette:active,.pcr-app .pcr-selection .pcr-color-chooser:active,.pcr-app .pcr-selection .pcr-color-opacity:active{cursor:grabbing;cursor:-webkit-grabbing}.pcr-app[data-theme='nano']{width:14.25em;max-width:95vw}.pcr-app[data-theme='nano'] .pcr-swatches{margin-top:.6em;padding:0 .6em}.pcr-app[data-theme='nano'] .pcr-interaction{padding:0 .6em .6em .6em}.pcr-app[data-theme='nano'] .pcr-selection{display:grid;grid-gap:.6em;grid-template-columns:1fr 4fr;grid-template-rows:5fr auto auto;align-items:center;height:10.5em;width:100%;align-self:flex-start}.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview{grid-area:2 / 1 / 4 / 1;height:100%;width:100%;display:flex;flex-direction:row;justify-content:center;margin-left:.6em}.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-last-color{display:none}.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-current-color{position:relative;background:var(--pcr-color);width:2em;height:2em;border-radius:50em;overflow:hidden}.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-preview .pcr-current-color::before{position:absolute;content:'';top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');background-size:.5em;border-radius:.15em;z-index:-1}.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette{grid-area:1 / 1 / 2 / 3;width:100%;height:100%;z-index:1}.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette .pcr-palette{border-radius:.15em;width:100%;height:100%}.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-palette .pcr-palette::before{position:absolute;content:'';top:0;left:0;width:100%;height:100%;background:url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');background-size:.5em;border-radius:.15em;z-index:-1}.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser{grid-area:2 / 2 / 2 / 2}.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity{grid-area:3 / 2 / 3 / 2}.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser,.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity{height:0.5em;margin:0 .6em}.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-picker,.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-picker{top:50%;transform:translateY(-50%)}.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-slider,.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-slider{flex-grow:1;border-radius:50em}.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-chooser .pcr-slider{background:linear-gradient(to right, red, #ff0, lime, cyan, blue, #f0f, red)}.pcr-app[data-theme='nano'] .pcr-selection .pcr-color-opacity .pcr-slider{background:linear-gradient(to right, transparent, black),url('data:image/svg+xml;utf8, <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2 2"><path fill="white" d="M1,0H2V1H1V0ZM0,1H1V2H0V1Z"/><path fill="gray" d="M0,0H1V1H0V0ZM1,1H2V2H1V1Z"/></svg>');background-size:100%, 0.25em} + diff --git a/.obsidian/plugins/obsidian42-brat/brat-migrations.json b/.obsidian/plugins/obsidian42-brat/brat-migrations.json new file mode 100644 index 0000000..e51fb8b --- /dev/null +++ b/.obsidian/plugins/obsidian42-brat/brat-migrations.json @@ -0,0 +1,5 @@ +{ + "appliedMigrations": [ + "tokens-to-secretstorage-v1" + ] +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian42-brat/data.json b/.obsidian/plugins/obsidian42-brat/data.json new file mode 100644 index 0000000..00008b7 --- /dev/null +++ b/.obsidian/plugins/obsidian42-brat/data.json @@ -0,0 +1,24 @@ +{ + "pluginList": [ + "samwarnick/obsidian-simple-embeds" + ], + "pluginSubListFrozenVersion": [ + { + "repo": "samwarnick/obsidian-simple-embeds", + "version": "latest" + } + ], + "themesList": [], + "updateAtStartup": true, + "updateThemesAtStartup": true, + "enableAfterInstall": true, + "loggingEnabled": false, + "loggingPath": "BRAT-log", + "loggingVerboseEnabled": false, + "debuggingMode": false, + "notificationsEnabled": true, + "globalTokenName": "", + "personalAccessToken": "", + "selectLatestPluginVersionByDefault": false, + "allowIncompatiblePlugins": false +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian42-brat/main.js b/.obsidian/plugins/obsidian42-brat/main.js new file mode 100644 index 0000000..94501dd --- /dev/null +++ b/.obsidian/plugins/obsidian42-brat/main.js @@ -0,0 +1,45 @@ +"use strict";var nn=Object.create;var pe=Object.defineProperty;var sn=Object.getOwnPropertyDescriptor;var on=Object.getOwnPropertyNames;var rn=Object.getPrototypeOf,an=Object.prototype.hasOwnProperty;var x=(s,e)=>()=>(e||s((e={exports:{}}).exports,e),e.exports),ln=(s,e)=>{for(var t in e)pe(s,t,{get:e[t],enumerable:!0})},Ze=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of on(e))!an.call(s,i)&&i!==t&&pe(s,i,{get:()=>e[i],enumerable:!(n=sn(e,i))||n.enumerable});return s};var un=(s,e,t)=>(t=s!=null?nn(rn(s)):{},Ze(e||!s||!s.__esModule?pe(t,"default",{value:s,enumerable:!0}):t,s)),cn=s=>Ze(pe({},"__esModule",{value:!0}),s);var $e=x((ms,et)=>{"use strict";var gn=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...s)=>console.error("SEMVER",...s):()=>{};et.exports=gn});var xe=x((hs,tt)=>{"use strict";var dn="2.0.0",pn=Number.MAX_SAFE_INTEGER||9007199254740991,mn=16,hn=250,fn=["major","premajor","minor","preminor","patch","prepatch","prerelease"];tt.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:mn,MAX_SAFE_BUILD_LENGTH:hn,MAX_SAFE_INTEGER:pn,RELEASE_TYPES:fn,SEMVER_SPEC_VERSION:dn,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var Be=x((F,nt)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:Oe,MAX_SAFE_BUILD_LENGTH:bn,MAX_LENGTH:wn}=xe(),Tn=$e();F=nt.exports={};var En=F.re=[],yn=F.safeRe=[],h=F.src=[],vn=F.safeSrc=[],f=F.t={},Pn=0,Fe="[a-zA-Z0-9-]",Rn=[["\\s",1],["\\d",wn],[Fe,bn]],In=s=>{for(let[e,t]of Rn)s=s.split(`${e}*`).join(`${e}{0,${t}}`).split(`${e}+`).join(`${e}{1,${t}}`);return s},y=(s,e,t)=>{let n=In(e),i=Pn++;Tn(s,i,e),f[s]=i,h[i]=e,vn[i]=n,En[i]=new RegExp(e,t?"g":void 0),yn[i]=new RegExp(n,t?"g":void 0)};y("NUMERICIDENTIFIER","0|[1-9]\\d*");y("NUMERICIDENTIFIERLOOSE","\\d+");y("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${Fe}*`);y("MAINVERSION",`(${h[f.NUMERICIDENTIFIER]})\\.(${h[f.NUMERICIDENTIFIER]})\\.(${h[f.NUMERICIDENTIFIER]})`);y("MAINVERSIONLOOSE",`(${h[f.NUMERICIDENTIFIERLOOSE]})\\.(${h[f.NUMERICIDENTIFIERLOOSE]})\\.(${h[f.NUMERICIDENTIFIERLOOSE]})`);y("PRERELEASEIDENTIFIER",`(?:${h[f.NONNUMERICIDENTIFIER]}|${h[f.NUMERICIDENTIFIER]})`);y("PRERELEASEIDENTIFIERLOOSE",`(?:${h[f.NONNUMERICIDENTIFIER]}|${h[f.NUMERICIDENTIFIERLOOSE]})`);y("PRERELEASE",`(?:-(${h[f.PRERELEASEIDENTIFIER]}(?:\\.${h[f.PRERELEASEIDENTIFIER]})*))`);y("PRERELEASELOOSE",`(?:-?(${h[f.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${h[f.PRERELEASEIDENTIFIERLOOSE]})*))`);y("BUILDIDENTIFIER",`${Fe}+`);y("BUILD",`(?:\\+(${h[f.BUILDIDENTIFIER]}(?:\\.${h[f.BUILDIDENTIFIER]})*))`);y("FULLPLAIN",`v?${h[f.MAINVERSION]}${h[f.PRERELEASE]}?${h[f.BUILD]}?`);y("FULL",`^${h[f.FULLPLAIN]}$`);y("LOOSEPLAIN",`[v=\\s]*${h[f.MAINVERSIONLOOSE]}${h[f.PRERELEASELOOSE]}?${h[f.BUILD]}?`);y("LOOSE",`^${h[f.LOOSEPLAIN]}$`);y("GTLT","((?:<|>)?=?)");y("XRANGEIDENTIFIERLOOSE",`${h[f.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);y("XRANGEIDENTIFIER",`${h[f.NUMERICIDENTIFIER]}|x|X|\\*`);y("XRANGEPLAIN",`[v=\\s]*(${h[f.XRANGEIDENTIFIER]})(?:\\.(${h[f.XRANGEIDENTIFIER]})(?:\\.(${h[f.XRANGEIDENTIFIER]})(?:${h[f.PRERELEASE]})?${h[f.BUILD]}?)?)?`);y("XRANGEPLAINLOOSE",`[v=\\s]*(${h[f.XRANGEIDENTIFIERLOOSE]})(?:\\.(${h[f.XRANGEIDENTIFIERLOOSE]})(?:\\.(${h[f.XRANGEIDENTIFIERLOOSE]})(?:${h[f.PRERELEASELOOSE]})?${h[f.BUILD]}?)?)?`);y("XRANGE",`^${h[f.GTLT]}\\s*${h[f.XRANGEPLAIN]}$`);y("XRANGELOOSE",`^${h[f.GTLT]}\\s*${h[f.XRANGEPLAINLOOSE]}$`);y("COERCEPLAIN",`(^|[^\\d])(\\d{1,${Oe}})(?:\\.(\\d{1,${Oe}}))?(?:\\.(\\d{1,${Oe}}))?`);y("COERCE",`${h[f.COERCEPLAIN]}(?:$|[^\\d])`);y("COERCEFULL",h[f.COERCEPLAIN]+`(?:${h[f.PRERELEASE]})?(?:${h[f.BUILD]})?(?:$|[^\\d])`);y("COERCERTL",h[f.COERCE],!0);y("COERCERTLFULL",h[f.COERCEFULL],!0);y("LONETILDE","(?:~>?)");y("TILDETRIM",`(\\s*)${h[f.LONETILDE]}\\s+`,!0);F.tildeTrimReplace="$1~";y("TILDE",`^${h[f.LONETILDE]}${h[f.XRANGEPLAIN]}$`);y("TILDELOOSE",`^${h[f.LONETILDE]}${h[f.XRANGEPLAINLOOSE]}$`);y("LONECARET","(?:\\^)");y("CARETTRIM",`(\\s*)${h[f.LONECARET]}\\s+`,!0);F.caretTrimReplace="$1^";y("CARET",`^${h[f.LONECARET]}${h[f.XRANGEPLAIN]}$`);y("CARETLOOSE",`^${h[f.LONECARET]}${h[f.XRANGEPLAINLOOSE]}$`);y("COMPARATORLOOSE",`^${h[f.GTLT]}\\s*(${h[f.LOOSEPLAIN]})$|^$`);y("COMPARATOR",`^${h[f.GTLT]}\\s*(${h[f.FULLPLAIN]})$|^$`);y("COMPARATORTRIM",`(\\s*)${h[f.GTLT]}\\s*(${h[f.LOOSEPLAIN]}|${h[f.XRANGEPLAIN]})`,!0);F.comparatorTrimReplace="$1$2$3";y("HYPHENRANGE",`^\\s*(${h[f.XRANGEPLAIN]})\\s+-\\s+(${h[f.XRANGEPLAIN]})\\s*$`);y("HYPHENRANGELOOSE",`^\\s*(${h[f.XRANGEPLAINLOOSE]})\\s+-\\s+(${h[f.XRANGEPLAINLOOSE]})\\s*$`);y("STAR","(<|>)?=?\\s*\\*");y("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");y("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var it=x((fs,st)=>{"use strict";var Nn=Object.freeze({loose:!0}),An=Object.freeze({}),Cn=s=>s?typeof s!="object"?Nn:s:An;st.exports=Cn});var lt=x((bs,at)=>{"use strict";var ot=/^[0-9]+$/,rt=(s,e)=>{if(typeof s=="number"&&typeof e=="number")return s===e?0:s<e?-1:1;let t=ot.test(s),n=ot.test(e);return t&&n&&(s=+s,e=+e),s===e?0:t&&!n?-1:n&&!t?1:s<e?-1:1},Ln=(s,e)=>rt(e,s);at.exports={compareIdentifiers:rt,rcompareIdentifiers:Ln}});var we=x((ws,ct)=>{"use strict";var me=$e(),{MAX_LENGTH:ut,MAX_SAFE_INTEGER:he}=xe(),{safeRe:fe,t:be}=Be(),kn=it(),{compareIdentifiers:Me}=lt(),Ve=class s{constructor(e,t){if(t=kn(t),e instanceof s){if(e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>ut)throw new TypeError(`version is longer than ${ut} characters`);me("SemVer",e,t),this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease;let n=e.trim().match(t.loose?fe[be.LOOSE]:fe[be.FULL]);if(!n)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>he||this.major<0)throw new TypeError("Invalid major version");if(this.minor>he||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>he||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(i=>{if(/^[0-9]+$/.test(i)){let o=+i;if(o>=0&&o<he)return o}return i}):this.prerelease=[],this.build=n[5]?n[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(me("SemVer.compare",this.version,this.options,e),!(e instanceof s)){if(typeof e=="string"&&e===this.version)return 0;e=new s(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof s||(e=new s(e,this.options)),this.major<e.major?-1:this.major>e.major?1:this.minor<e.minor?-1:this.minor>e.minor?1:this.patch<e.patch?-1:this.patch>e.patch?1:0}comparePre(e){if(e instanceof s||(e=new s(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let t=0;do{let n=this.prerelease[t],i=e.prerelease[t];if(me("prerelease compare",t,n,i),n===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(n===void 0)return-1;if(n===i)continue;return Me(n,i)}while(++t)}compareBuild(e){e instanceof s||(e=new s(e,this.options));let t=0;do{let n=this.build[t],i=e.build[t];if(me("build compare",t,n,i),n===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(n===void 0)return-1;if(n===i)continue;return Me(n,i)}while(++t)}inc(e,t,n){if(e.startsWith("pre")){if(!t&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(t){let i=`-${t}`.match(this.options.loose?fe[be.PRERELEASELOOSE]:fe[be.PRERELEASE]);if(!i||i[1]!==t)throw new Error(`invalid identifier: ${t}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",t,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",t,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",t,n),this.inc("pre",t,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",t,n),this.inc("pre",t,n);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let i=Number(n)?1:0;if(this.prerelease.length===0)this.prerelease=[i];else{let o=this.prerelease.length;for(;--o>=0;)typeof this.prerelease[o]=="number"&&(this.prerelease[o]++,o=-2);if(o===-1){if(t===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(i)}}if(t){let o=[t,i];n===!1&&(o=[t]),Me(this.prerelease[0],t)===0?isNaN(this.prerelease[1])&&(this.prerelease=o):this.prerelease=o}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};ct.exports=Ve});var Ue=x((Ts,dt)=>{"use strict";var gt=we(),Sn=(s,e,t)=>new gt(s,t).compare(new gt(e,t));dt.exports=Sn});var ht=x((Es,mt)=>{"use strict";var pt=we(),Dn=(s,e,t=!1)=>{if(s instanceof pt)return s;try{return new pt(s,e)}catch(n){if(!t)return null;throw n}};mt.exports=Dn});var _e=x((ys,ft)=>{"use strict";var $n=we(),xn=ht(),{safeRe:Te,t:Ee}=Be(),On=(s,e)=>{if(s instanceof $n)return s;if(typeof s=="number"&&(s=String(s)),typeof s!="string")return null;e=e||{};let t=null;if(!e.rtl)t=s.match(e.includePrerelease?Te[Ee.COERCEFULL]:Te[Ee.COERCE]);else{let u=e.includePrerelease?Te[Ee.COERCERTLFULL]:Te[Ee.COERCERTL],g;for(;(g=u.exec(s))&&(!t||t.index+t[0].length!==s.length);)(!t||g.index+g[0].length!==t.index+t[0].length)&&(t=g),u.lastIndex=g.index+g[1].length+g[2].length;u.lastIndex=-1}if(t===null)return null;let n=t[2],i=t[3]||"0",o=t[4]||"0",a=e.includePrerelease&&t[5]?`-${t[5]}`:"",c=e.includePrerelease&&t[6]?`+${t[6]}`:"";return xn(`${n}.${i}.${o}${a}${c}`,e)};ft.exports=On});var Qt=x(v=>{"use strict";Object.defineProperty(v,"__esModule",{value:!0});var I=require("obsidian"),qe="YYYY-MM-DD",Ye="gggg-[W]ww",Vt="YYYY-MM",Ut="YYYY-[Q]Q",_t="YYYY";function re(s){var t,n;let e=window.app.plugins.getPlugin("periodic-notes");return e&&((n=(t=e.settings)==null?void 0:t[s])==null?void 0:n.enabled)}function ae(){var s,e,t,n;try{let{internalPlugins:i,plugins:o}=window.app;if(re("daily")){let{format:g,folder:m,template:l}=((e=(s=o.getPlugin("periodic-notes"))==null?void 0:s.settings)==null?void 0:e.daily)||{};return{format:g||qe,folder:(m==null?void 0:m.trim())||"",template:(l==null?void 0:l.trim())||""}}let{folder:a,format:c,template:u}=((n=(t=i.getPluginById("daily-notes"))==null?void 0:t.instance)==null?void 0:n.options)||{};return{format:c||qe,folder:(a==null?void 0:a.trim())||"",template:(u==null?void 0:u.trim())||""}}catch(i){console.info("No custom daily note settings found!",i)}}function le(){var s,e,t,n,i,o,a;try{let c=window.app.plugins,u=(s=c.getPlugin("calendar"))==null?void 0:s.options,g=(t=(e=c.getPlugin("periodic-notes"))==null?void 0:e.settings)==null?void 0:t.weekly;if(re("weekly"))return{format:g.format||Ye,folder:((n=g.folder)==null?void 0:n.trim())||"",template:((i=g.template)==null?void 0:i.trim())||""};let m=u||{};return{format:m.weeklyNoteFormat||Ye,folder:((o=m.weeklyNoteFolder)==null?void 0:o.trim())||"",template:((a=m.weeklyNoteTemplate)==null?void 0:a.trim())||""}}catch(c){console.info("No custom weekly note settings found!",c)}}function ue(){var e,t,n,i;let s=window.app.plugins;try{let o=re("monthly")&&((t=(e=s.getPlugin("periodic-notes"))==null?void 0:e.settings)==null?void 0:t.monthly)||{};return{format:o.format||Vt,folder:((n=o.folder)==null?void 0:n.trim())||"",template:((i=o.template)==null?void 0:i.trim())||""}}catch(o){console.info("No custom monthly note settings found!",o)}}function ce(){var e,t,n,i;let s=window.app.plugins;try{let o=re("quarterly")&&((t=(e=s.getPlugin("periodic-notes"))==null?void 0:e.settings)==null?void 0:t.quarterly)||{};return{format:o.format||Ut,folder:((n=o.folder)==null?void 0:n.trim())||"",template:((i=o.template)==null?void 0:i.trim())||""}}catch(o){console.info("No custom quarterly note settings found!",o)}}function ge(){var e,t,n,i;let s=window.app.plugins;try{let o=re("yearly")&&((t=(e=s.getPlugin("periodic-notes"))==null?void 0:e.settings)==null?void 0:t.yearly)||{};return{format:o.format||_t,folder:((n=o.folder)==null?void 0:n.trim())||"",template:((i=o.template)==null?void 0:i.trim())||""}}catch(o){console.info("No custom yearly note settings found!",o)}}function Ht(...s){let e=[];for(let n=0,i=s.length;n<i;n++)e=e.concat(s[n].split("/"));let t=[];for(let n=0,i=e.length;n<i;n++){let o=e[n];!o||o==="."||t.push(o)}return e[0]===""&&t.unshift(""),t.join("/")}function Gn(s){let e=s.substring(s.lastIndexOf("/")+1);return e.lastIndexOf(".")!=-1&&(e=e.substring(0,e.lastIndexOf("."))),e}async function jn(s){let e=s.replace(/\\/g,"/").split("/");if(e.pop(),e.length){let t=Ht(...e);window.app.vault.getAbstractFileByPath(t)||await window.app.vault.createFolder(t)}}async function de(s,e){e.endsWith(".md")||(e+=".md");let t=I.normalizePath(Ht(s,e));return await jn(t),t}async function Y(s){let{metadataCache:e,vault:t}=window.app,n=I.normalizePath(s);if(n==="/")return Promise.resolve(["",null]);try{let i=e.getFirstLinkpathDest(n,""),o=await t.cachedRead(i),a=window.app.foldManager.load(i);return[o,a]}catch(i){return console.error(`Failed to read the daily note template '${n}'`,i),new I.Notice("Failed to read the daily note template"),["",null]}}function $(s,e="day"){let t=s.clone().startOf(e).format();return`${e}-${t}`}function Gt(s){return s.replace(/\[[^\]]*\]/g,"")}function zn(s,e){if(e==="week"){let t=Gt(s);return/w{1,2}/i.test(t)&&(/M{1,4}/.test(t)||/D{1,4}/.test(t))}return!1}function X(s,e){return jt(s.basename,e)}function qn(s,e){return jt(Gn(s),e)}function jt(s,e){let n={day:ae,week:le,month:ue,quarter:ce,year:ge}[e]().format.split("/").pop(),i=window.moment(s,n,!0);if(!i.isValid())return null;if(zn(n,e)&&e==="week"){let o=Gt(n);if(/w{1,2}/i.test(o))return window.moment(s,n.replace(/M{1,4}/g,"").replace(/D{1,4}/g,""),!1)}return i}var Xe=class extends Error{};async function zt(s){let e=window.app,{vault:t}=e,n=window.moment,{template:i,format:o,folder:a}=ae(),[c,u]=await Y(i),g=s.format(o),m=await de(a,g);try{let l=await t.create(m,c.replace(/{{\s*date\s*}}/gi,g).replace(/{{\s*time\s*}}/gi,n().format("HH:mm")).replace(/{{\s*title\s*}}/gi,g).replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(r,d,b,w,p,T)=>{let C=n(),N=s.clone().set({hour:C.get("hour"),minute:C.get("minute"),second:C.get("second")});return b&&N.add(parseInt(w,10),p),T?N.format(T.substring(1).trim()):N.format(o)}).replace(/{{\s*yesterday\s*}}/gi,s.clone().subtract(1,"day").format(o)).replace(/{{\s*tomorrow\s*}}/gi,s.clone().add(1,"d").format(o)));return e.foldManager.save(l,u),l}catch(l){console.error(`Failed to create file: '${m}'`,l),new I.Notice("Unable to create new file.")}}function Yn(s,e){var t;return(t=e[$(s,"day")])!=null?t:null}function Xn(){let{vault:s}=window.app,{folder:e}=ae(),t=s.getAbstractFileByPath(I.normalizePath(e));if(!t)throw new Xe("Failed to find daily notes folder");let n={};return I.Vault.recurseChildren(t,i=>{if(i instanceof I.TFile){let o=X(i,"day");if(o){let a=$(o,"day");n[a]=i}}}),n}var We=class extends Error{};function Wn(){let{moment:s}=window,e=s.localeData()._week.dow,t=["sunday","monday","tuesday","wednesday","thursday","friday","saturday"];for(;e;)t.push(t.shift()),e--;return t}function Jn(s){return Wn().indexOf(s.toLowerCase())}async function qt(s){let{vault:e}=window.app,{template:t,format:n,folder:i}=le(),[o,a]=await Y(t),c=s.format(n),u=await de(i,c);try{let g=await e.create(u,o.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(m,l,r,d,b,w)=>{let p=window.moment(),T=s.clone().set({hour:p.get("hour"),minute:p.get("minute"),second:p.get("second")});return r&&T.add(parseInt(d,10),b),w?T.format(w.substring(1).trim()):T.format(n)}).replace(/{{\s*title\s*}}/gi,c).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi,(m,l,r)=>{let d=Jn(l);return s.weekday(d).format(r.trim())}));return window.app.foldManager.save(g,a),g}catch(g){console.error(`Failed to create file: '${u}'`,g),new I.Notice("Unable to create new file.")}}function Kn(s,e){var t;return(t=e[$(s,"week")])!=null?t:null}function Qn(){let s={};if(!Xt())return s;let{vault:e}=window.app,{folder:t}=le(),n=e.getAbstractFileByPath(I.normalizePath(t));if(!n)throw new We("Failed to find weekly notes folder");return I.Vault.recurseChildren(n,i=>{if(i instanceof I.TFile){let o=X(i,"week");if(o){let a=$(o,"week");s[a]=i}}}),s}var Je=class extends Error{};async function Yt(s){let{vault:e}=window.app,{template:t,format:n,folder:i}=ue(),[o,a]=await Y(t),c=s.format(n),u=await de(i,c);try{let g=await e.create(u,o.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(m,l,r,d,b,w)=>{let p=window.moment(),T=s.clone().set({hour:p.get("hour"),minute:p.get("minute"),second:p.get("second")});return r&&T.add(parseInt(d,10),b),w?T.format(w.substring(1).trim()):T.format(n)}).replace(/{{\s*date\s*}}/gi,c).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,c));return window.app.foldManager.save(g,a),g}catch(g){console.error(`Failed to create file: '${u}'`,g),new I.Notice("Unable to create new file.")}}function Zn(s,e){var t;return(t=e[$(s,"month")])!=null?t:null}function es(){let s={};if(!Wt())return s;let{vault:e}=window.app,{folder:t}=ue(),n=e.getAbstractFileByPath(I.normalizePath(t));if(!n)throw new Je("Failed to find monthly notes folder");return I.Vault.recurseChildren(n,i=>{if(i instanceof I.TFile){let o=X(i,"month");if(o){let a=$(o,"month");s[a]=i}}}),s}var Ke=class extends Error{};async function ts(s){let{vault:e}=window.app,{template:t,format:n,folder:i}=ce(),[o,a]=await Y(t),c=s.format(n),u=await de(i,c);try{let g=await e.create(u,o.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(m,l,r,d,b,w)=>{let p=window.moment(),T=s.clone().set({hour:p.get("hour"),minute:p.get("minute"),second:p.get("second")});return r&&T.add(parseInt(d,10),b),w?T.format(w.substring(1).trim()):T.format(n)}).replace(/{{\s*date\s*}}/gi,c).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,c));return window.app.foldManager.save(g,a),g}catch(g){console.error(`Failed to create file: '${u}'`,g),new I.Notice("Unable to create new file.")}}function ns(s,e){var t;return(t=e[$(s,"quarter")])!=null?t:null}function ss(){let s={};if(!Jt())return s;let{vault:e}=window.app,{folder:t}=ce(),n=e.getAbstractFileByPath(I.normalizePath(t));if(!n)throw new Ke("Failed to find quarterly notes folder");return I.Vault.recurseChildren(n,i=>{if(i instanceof I.TFile){let o=X(i,"quarter");if(o){let a=$(o,"quarter");s[a]=i}}}),s}var Qe=class extends Error{};async function is(s){let{vault:e}=window.app,{template:t,format:n,folder:i}=ge(),[o,a]=await Y(t),c=s.format(n),u=await de(i,c);try{let g=await e.create(u,o.replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi,(m,l,r,d,b,w)=>{let p=window.moment(),T=s.clone().set({hour:p.get("hour"),minute:p.get("minute"),second:p.get("second")});return r&&T.add(parseInt(d,10),b),w?T.format(w.substring(1).trim()):T.format(n)}).replace(/{{\s*date\s*}}/gi,c).replace(/{{\s*time\s*}}/gi,window.moment().format("HH:mm")).replace(/{{\s*title\s*}}/gi,c));return window.app.foldManager.save(g,a),g}catch(g){console.error(`Failed to create file: '${u}'`,g),new I.Notice("Unable to create new file.")}}function os(s,e){var t;return(t=e[$(s,"year")])!=null?t:null}function rs(){let s={};if(!Kt())return s;let{vault:e}=window.app,{folder:t}=ge(),n=e.getAbstractFileByPath(I.normalizePath(t));if(!n)throw new Qe("Failed to find yearly notes folder");return I.Vault.recurseChildren(n,i=>{if(i instanceof I.TFile){let o=X(i,"year");if(o){let a=$(o,"year");s[a]=i}}}),s}function as(){var n,i;let{app:s}=window,e=s.internalPlugins.plugins["daily-notes"];if(e&&e.enabled)return!0;let t=s.plugins.getPlugin("periodic-notes");return t&&((i=(n=t.settings)==null?void 0:n.daily)==null?void 0:i.enabled)}function Xt(){var t,n;let{app:s}=window;if(s.plugins.getPlugin("calendar"))return!0;let e=s.plugins.getPlugin("periodic-notes");return e&&((n=(t=e.settings)==null?void 0:t.weekly)==null?void 0:n.enabled)}function Wt(){var t,n;let{app:s}=window,e=s.plugins.getPlugin("periodic-notes");return e&&((n=(t=e.settings)==null?void 0:t.monthly)==null?void 0:n.enabled)}function Jt(){var t,n;let{app:s}=window,e=s.plugins.getPlugin("periodic-notes");return e&&((n=(t=e.settings)==null?void 0:t.quarterly)==null?void 0:n.enabled)}function Kt(){var t,n;let{app:s}=window,e=s.plugins.getPlugin("periodic-notes");return e&&((n=(t=e.settings)==null?void 0:t.yearly)==null?void 0:n.enabled)}function ls(s){let e={day:ae,week:le,month:ue,quarter:ce,year:ge}[s];return e()}function us(s,e){return{day:zt,month:Yt,week:qt}[s](e)}v.DEFAULT_DAILY_NOTE_FORMAT=qe;v.DEFAULT_MONTHLY_NOTE_FORMAT=Vt;v.DEFAULT_QUARTERLY_NOTE_FORMAT=Ut;v.DEFAULT_WEEKLY_NOTE_FORMAT=Ye;v.DEFAULT_YEARLY_NOTE_FORMAT=_t;v.appHasDailyNotesPluginLoaded=as;v.appHasMonthlyNotesPluginLoaded=Wt;v.appHasQuarterlyNotesPluginLoaded=Jt;v.appHasWeeklyNotesPluginLoaded=Xt;v.appHasYearlyNotesPluginLoaded=Kt;v.createDailyNote=zt;v.createMonthlyNote=Yt;v.createPeriodicNote=us;v.createQuarterlyNote=ts;v.createWeeklyNote=qt;v.createYearlyNote=is;v.getAllDailyNotes=Xn;v.getAllMonthlyNotes=es;v.getAllQuarterlyNotes=ss;v.getAllWeeklyNotes=Qn;v.getAllYearlyNotes=rs;v.getDailyNote=Yn;v.getDailyNoteSettings=ae;v.getDateFromFile=X;v.getDateFromPath=qn;v.getDateUID=$;v.getMonthlyNote=Zn;v.getMonthlyNoteSettings=ue;v.getPeriodicNoteSettings=ls;v.getQuarterlyNote=ns;v.getQuarterlyNoteSettings=ce;v.getTemplateInfo=Y;v.getWeeklyNote=Kn;v.getWeeklyNoteSettings=le;v.getYearlyNote=os;v.getYearlyNoteSettings=ge});var cs={};ln(cs,{default:()=>ke});module.exports=cn(cs);var tn=require("obsidian");var k=require("obsidian");var K=require("obsidian"),Se=class extends K.Modal{constructor(t,n){super(t.app);this.resolve=n;this.isConfirmed=!1;let i={app:t.app,cancelButtonText:"Cancel",cssClass:"",message:t.message,okButtonText:"OK",title:""};this.options={...i,...t},this.containerEl.addClass("confirm-modal")}onClose(){super.onClose(),this.resolve(this.isConfirmed)}onOpen(){super.onOpen(),this.titleEl.setText(this.options.title),this.contentEl.createEl("p",{text:this.options.message});let t=new K.ButtonComponent(this.contentEl);t.setClass("ok-button"),t.setButtonText(this.options.okButtonText),t.setCta(),t.onClick(()=>{this.isConfirmed=!0,this.close()});let n=new K.ButtonComponent(this.contentEl);n.setButtonText(this.options.cancelButtonText),n.onClick(this.close.bind(this))}};async function De(s){return await new Promise(e=>{new Se(s,e).open()})}var D=class extends Error{constructor(t,n,i,o){let a=Math.ceil((i-Math.floor(Date.now()/1e3))/60);super(`GitHub API rate limit exceeded. Reset in ${a} minutes.`);this.limit=t;this.remaining=n;this.reset=i;this.requestUrl=o}getMinutesToReset(){return Math.ceil((this.reset-Math.floor(Date.now()/1e3))/60)}},O=class extends Error{constructor(e){var n,i;super(`GitHub API error ${e}: ${e.message}`),this.message=e.message;let t=e;this.status=(n=t.status)!=null?n:400,this.headers=(i=t.headers)!=null?i:{},this.name="GitHubResponseError"}};var V=require("obsidian");var Fn=Ue(),bt=_e();var ye=s=>{let e=s.replace(/https?:\/\/github\.com\//i,"");return e.endsWith("/")&&(e=e.slice(0,-1)),e.toLowerCase().endsWith(".git")&&(e=e.slice(0,-4)),e},wt=["ghp_","github_pat_"],Bn=/^(gh[ps]_[a-zA-Z0-9]{36}|github_pat_[a-zA-Z0-9]{22}_[a-zA-Z0-9]{59})$/,Tt=s=>Object.keys(s).reduce((e,t)=>(e[t.toLowerCase()]=s[t],e),{}),Et=async(s,e)=>{var o,a,c,u,g,m,l,r,d,b,w;let t=["repo","public_repo","metadata=read"],n=wt.some(p=>s.toLowerCase().startsWith(p.toLowerCase())),i=Bn.test(s);if(!n||!i)return{validToken:!1,currentScopes:[],acceptedScopes:[],acceptedPermissions:[],expirationDate:null,rateLimit:{limit:0,remaining:0,reset:0,resource:"",used:0},error:{type:n?"invalid_format":"invalid_prefix",message:"Invalid token format",details:{validPrefixes:wt}}};try{let p=Date.now()%1e3,T=e||`user${p}/repo${p%100}`;if(await ve({url:`https://api.github.com/repos/${T}`,headers:{Authorization:`Token ${s}`,Accept:"application/vnd.github.v3+json"}}),e)return{validToken:!0,currentScopes:[],acceptedScopes:[],acceptedPermissions:[],expirationDate:null,rateLimit:{limit:0,remaining:0,reset:0,resource:"",used:0},error:{type:"none",message:"No error",details:{}}};throw new Error("Expected request to fail")}catch(p){if(!(p instanceof O))throw p;let T=Tt(p.headers);if(!T)throw new Error("No headers in GitHub response");let C=T["github-authentication-token-expiration"],N=C?new Date(C):null,R=N&&!Number.isNaN(N.getTime())?N.toISOString():null,P={validToken:!1,currentScopes:(a=(o=T["x-oauth-scopes"])==null?void 0:o.split(", "))!=null?a:[],acceptedScopes:(u=(c=T["x-accepted-oauth-scopes"])==null?void 0:c.split(", "))!=null?u:[],acceptedPermissions:(m=(g=T["x-accepted-github-permissions"])==null?void 0:g.split(", "))!=null?m:[],expirationDate:R,rateLimit:{limit:Number.parseInt((l=T["x-ratelimit-limit"])!=null?l:"0",10),remaining:Number.parseInt((r=T["x-ratelimit-remaining"])!=null?r:"0",10),reset:Number.parseInt((d=T["x-ratelimit-reset"])!=null?d:"0",10),resource:(b=T["x-ratelimit-resource"])!=null?b:"",used:Number.parseInt((w=T["x-ratelimit-used"])!=null?w:"0",10)},error:{type:"none",message:"No error",details:{}}};return P.expirationDate&&new Date(P.expirationDate)<new Date?(P.error={type:"expired",message:"Token has expired",details:{expirationDate:P.expirationDate}},P):P.currentScopes.some(M=>t.includes(M))||P.acceptedPermissions.some(M=>t.includes(M))?(P.validToken=p.status===404,P):(P.error={type:"insufficient_scope",message:"Token lacks required scopes. Check documentation for requirements.",details:{currentScopes:[...P.acceptedScopes,...P.acceptedPermissions]}},P)}},He=async(s,e=!0,t="")=>{let n=`https://api.github.com/repos/${s}`;try{return(await ve({url:n,headers:t?{Authorization:`Token ${t}`}:{}})).json.private}catch(i){if(i instanceof D)throw i;return e&&console.log("error in isPrivateRepo",n,i),!1}},yt=async(s,e=!0,t="")=>{let n=`https://api.github.com/repos/${s}/releases`;try{return(await ve({url:`${n}?per_page=100`,headers:t?{Authorization:`Token ${t}`}:{}})).json.map(a=>({version:a.tag_name,prerelease:a.prerelease}))}catch(i){if(i instanceof D||i instanceof O)throw i;return e&&console.log("Error in fetchReleaseVersions",n,i),null}},Q=async(s,e,t=!0,n=!1,i="")=>{try{let o=s.assets.find(g=>g.name===e);if(!o)return null;let a={Accept:"application/octet-stream"};n&&i&&(a.Authorization=`Token ${i}`);let c=n?o.url:o.browser_download_url,u=await(0,V.requestUrl)({url:c,headers:a});return u.status!==200?null:u.text}catch(o){if(o instanceof D)throw o;return t&&console.log("error in grabReleaseFileFromRepository",s,o),null}},vt=async(s=!0)=>{let e="https://raw.githubusercontent.com/obsidianmd/obsidian-releases/HEAD/community-plugins.json";try{let t=await(0,V.requestUrl)({url:e});return t.status===404?null:t.json}catch(t){return s&&console.log("error in grabCommmunityPluginList",t),null}},Pt=async(s=!0)=>{let e="https://raw.githubusercontent.com/obsidianmd/obsidian-releases/HEAD/community-css-themes.json";try{let t=await(0,V.requestUrl)({url:e});return t.status===404?null:t.json}catch(t){return s&&console.log("error in grabCommmunityThemesList",t),null}},G=async(s,e=!1,t=!1)=>{let n=`https://raw.githubusercontent.com/${s}/HEAD/theme${e?"-beta":""}.css`;try{let i=await(0,V.requestUrl)({url:n});return i.status===404?null:i.text}catch(i){return t&&console.log("error in grabCommmunityThemeCssFile",i),null}},Rt=async(s,e=!0)=>{let t=`https://raw.githubusercontent.com/${s}/HEAD/manifest.json`;try{let n=await(0,V.requestUrl)({url:t});return n.status===404?null:n.text}catch(n){return e&&console.log("error in grabCommmunityThemeManifestFile",n),null}},Mn=s=>{let e=0;for(let t=0;t<s.length;t++)e+=s.charCodeAt(t);return e},Z=s=>Mn(s).toString(),ee=async(s,e,t)=>{let n=await G(s,e,t);return n?Z(n):"0"},Vn=async(s,e,t=!0)=>{let n=`https://api.github.com/repos/${s}/commits?path=${e}&page=1&per_page=1`;try{let i=await(0,V.requestUrl)({url:n});return i.status===404?null:i.json}catch(i){return t&&console.log("error in grabLastCommitInfoForAFile",i),null}},It=async(s,e)=>{var n;let t=await Vn(s,e);return t&&t.length>0&&((n=t[0].commit.committer)!=null&&n.date)?t[0].commit.committer.date:""},Ge=async(s,e,t=!1,n=!1,i=!1,o)=>{var a;try{let c=e&&e!=="latest"?`https://api.github.com/repos/${s}/releases/tags/${e}`:`https://api.github.com/repos/${s}/releases`,u={Accept:"application/vnd.github.v3+json"};(i&&o||o)&&(u.Authorization=`Token ${o}`);let g=await ve({url:c,headers:u});if(g.status===404)return null;let m=e&&e!=="latest"?[g.json]:g.json;return n&&console.log(`grabReleaseFromRepository for ${s}:`,m),(a=m.sort((l,r)=>{try{let d=bt(l.tag_name,{includePrerelease:!0,loose:!0}),b=bt(r.tag_name,{includePrerelease:!0,loose:!0});return Fn(b,d)}catch(d){let b=new Date(l.published_at).getTime(),w=new Date(r.published_at).getTime();return b<w?1:b>w?-1:0}}).filter(l=>t||!l.prerelease)[0])!=null?a:null}catch(c){throw n&&console.log(`Error in grabReleaseFromRepository for ${s}:`,c),c}},ve=async(s,e)=>{let t=0,n=0,i=0;s.headers={...s.headers,"User-Agent":"Obsidian/BRAT-Plugin"};try{return await(0,V.requestUrl)(s)}catch(o){let a=new O(o),c=Tt(a.headers);if(c&&(t=Number.parseInt(c["x-ratelimit-limit"],10),n=Number.parseInt(c["x-ratelimit-remaining"],10),i=Number.parseInt(c["x-ratelimit-reset"],10)),a.status===403&&n===0){let u=new D(t,n,i,s.url);throw e&&console.error(`BRAT +GitHub API rate limit exceeded:`,` +Request: ${u.requestUrl}`,` +Rate limits - Remaining: ${u.remaining}`,` +Reset in: ${u.getMinutesToReset()} minutes`),u}throw e&&console.log("GitHub request failed:",o),a}};var je={pluginList:[],pluginSubListFrozenVersion:[],themesList:[],updateAtStartup:!0,updateThemesAtStartup:!0,enableAfterInstall:!0,loggingEnabled:!1,loggingPath:"BRAT-log",loggingVerboseEnabled:!1,debuggingMode:!1,notificationsEnabled:!0,globalTokenName:"",personalAccessToken:"",selectLatestPluginVersionByDefault:!1,allowIncompatiblePlugins:!1};function Nt(s,e,t="latest",n=!1,i=""){let o=!1;s.settings.pluginList.contains(e)||(s.settings.pluginList.unshift(e),o=!0);let a=s.settings.pluginSubListFrozenVersion.find(c=>c.repo===e);a?(Object.assign(a,{repo:e,version:t,token:void 0,tokenName:i||a.tokenName,isIncompatible:n||void 0}),o=!0):(s.settings.pluginSubListFrozenVersion.unshift({repo:e,version:t,token:void 0,tokenName:i||void 0,isIncompatible:n||void 0}),o=!0),o&&s.saveSettings()}function Pe(s,e){return s.settings.pluginList.contains(e)}function At(s,e,t){let n={repo:e,lastUpdate:Z(t)};s.settings.themesList.unshift(n),s.saveSettings()}function Ct(s,e){return!!s.settings.themesList.find(n=>n.repo===e)}function ze(s,e,t){let n=s.settings.pluginSubListFrozenVersion.find(i=>i.repo===e);n&&(n.tokenName=t||void 0,s.saveSettings())}function Lt(s,e,t){for(let n of s.settings.themesList)n.repo===e&&(n.lastUpdate=t,s.saveSettings())}var L=require("obsidian");var j=class{constructor(e){this.statusEl=e}async validateToken(e,t){var n,i,o,a,c,u,g,m,l;if(!e)return(n=this.statusEl)==null||n.setText("No token provided"),(i=this.statusEl)==null||i.addClass("invalid"),(o=this.statusEl)==null||o.removeClass("valid"),!1;try{let r=await Et(e,t);return(a=this.statusEl)==null||a.removeClass("invalid","valid"),(c=this.statusEl)==null||c.empty(),r.validToken?((u=this.statusEl)==null||u.addClass("valid"),this.showValidTokenInfo(r),!0):((g=this.statusEl)==null||g.addClass("invalid"),this.showErrorMessage(r.error),!1)}catch(r){return console.error("Token validation error:",r),(m=this.statusEl)==null||m.setText("Failed to validate token"),(l=this.statusEl)==null||l.addClass("invalid"),!1}}showValidTokenInfo(e){var n,i;let t=(n=this.statusEl)==null?void 0:n.createDiv({cls:"brat-token-details"});if(t&&(t.createDiv({text:"\u2713 Valid token",cls:"brat-token-status valid"}),(i=e.currentScopes)!=null&&i.length&&t.createDiv({text:`Scopes: ${e.currentScopes.join(", ")}`,cls:"brat-token-scopes"}),e.rateLimit&&t.createDiv({text:`Rate Limit: ${e.rateLimit.remaining}/${e.rateLimit.limit}`,cls:"brat-token-rate"}),e.expirationDate)){let o=new Date(e.expirationDate),a=Math.ceil((o.getTime()-Date.now())/(1e3*60*60*24));a<7&&t.createDiv({text:`\u26A0\uFE0F Token expires in ${a} days`,cls:"brat-token-warning"})}}showErrorMessage(e){var n,i,o;let t=(n=this.statusEl)==null?void 0:n.createDiv({cls:"brat-token-error"});if(t&&(t.createDiv({text:e.message}),e.details))switch(e.type){case"invalid_prefix":t.createDiv({text:`Valid prefixes: ${(i=e.details.validPrefixes)==null?void 0:i.join(", ")}`});break;case"insufficient_scope":t.createDiv({text:`Required scopes: ${(o=e.details.requiredScopes)==null?void 0:o.join(", ")}`});break}}};function te(s,e){let t=new DocumentFragment,n=document.createElement("a");if(n.textContent=s,n.href=`https://github.com/${s}`,n.target="_blank",t.appendChild(n),e){let i=document.createTextNode(e);t.appendChild(i)}return t}function kt({prependText:s,url:e,text:t,appendText:n}){let i=new DocumentFragment,o=document.createElement("a");if(o.textContent=t,o.href=e,s){let a=document.createTextNode(s);i.appendChild(a)}if(i.appendChild(o),n){let a=document.createTextNode(n);i.appendChild(a)}return i}var Re=require("obsidian");function E(s,e,t=10,n){if(!s.settings.notificationsEnabled)return;let i=n?Re.Platform.isDesktop?"(click=dismiss, right-click=Info)":"(click=dismiss)":"",o=new Re.Notice(`BRAT +${e} +${i}`,t*1e3);n&&(o.noticeEl.oncontextmenu=()=>{n()})}var z=(s,e=!0)=>{let t=s.createEl("div");t.style.float="right",e?(t.style.padding="15px",t.style.paddingLeft="15px",t.style.paddingRight="15px",t.style.marginLeft="15px"):(t.style.padding="10px",t.style.paddingLeft="15px",t.style.paddingRight="15px");let n=t.createDiv("coffee");n.addClass("ex-twitter-span"),n.style.paddingLeft="10px";let i=n.createDiv();i.innerText="Learn more about my work at:",n.appendChild(i);let o=n.createEl("a",{href:"https://tfthacker.com"});return o.innerText="https://tfthacker.com",t};var St=require("obsidian"),Ie=class extends St.SuggestModal{constructor(e,t,n,i,o){super(e),this.versions=n,this.selected=i,this.onChoose=o,this.setTitle("Select a version"),this.setPlaceholder(`Type to search for a version for ${t}`),this.setInstructions([{command:"\u2191\u2193",purpose:"Navigate versions"},{command:"\u21B5",purpose:"Select version"},{command:"esc",purpose:"Dismiss modal"}])}getSuggestions(e){let t=e.toLowerCase();return this.versions.filter(n=>n.version.toLowerCase().contains(t))}renderSuggestion(e,t){t.createEl("div",{text:`${e.version} ${e.prerelease?"(Prerelease)":""}`})}onChooseSuggestion(e){this.onChoose(e.version)}onNoSuggestion(){this.onChoose(this.selected?this.selected:""),this.close()}};var U=class extends L.Modal{constructor(t,n,i=!1,o=!1,a="",c="",u=""){super(t.app);this.versionSetting=null;this.repositoryAddressEl=null;this.tokenInputEl=null;this.validateButton=null;this.validator=null;this.addPluginButton=null;this.cancelButton=null;this.plugin=t,this.betaPlugins=n,this.address=a,this.version=c,this.secretName=u,this.openSettingsTabAfterwards=i,this.updateVersion=o,this.enableAfterInstall=t.settings.enableAfterInstall}async submitForm(){var o,a,c,u,g,m,l,r;if(this.address==="")return;let t=ye(this.address);if(this.plugin.settings.pluginSubListFrozenVersion.find(d=>d.repo===t)){await this.betaPlugins.addPlugin(t,!1,!1,!1,this.version,!0,this.enableAfterInstall,this.secretName)&&this.close(),(o=this.cancelButton)==null||o.setDisabled(!1),(a=this.addPluginButton)==null||a.setDisabled(!1),(c=this.addPluginButton)==null||c.setButtonText("Add Plugin"),(u=this.versionSetting)==null||u.setDisabled(!1);return}if(!this.version&&Pe(this.plugin,t)){E(this.plugin,"This plugin is already in the list for beta testing",10);return}await this.betaPlugins.addPlugin(t,!1,!1,!1,this.version,!1,this.enableAfterInstall,this.secretName)&&this.close(),(g=this.cancelButton)==null||g.setDisabled(!1),(m=this.addPluginButton)==null||m.setDisabled(!1),(l=this.addPluginButton)==null||l.setButtonText("Add Plugin"),(r=this.versionSetting)==null||r.setDisabled(!1)}updateVersionDropdown(t,n,i=""){let o;t.clear(),n.length>0&&!i&&this.plugin.settings.selectLatestPluginVersionByDefault?(o="latest",this.version="latest"):o=i,n.length<20||L.Platform.isMobile?t.addDropdown(c=>{c.addOption("","Select a version"),c.addOption("latest","Latest version");for(let u of n)c.addOption(u.version,`${u.version} ${u.prerelease?"(Prerelease)":""}`);c.onChange(u=>{var g;this.version=u,(g=this.addPluginButton)==null||g.setDisabled(this.version==="")}),c.setValue(o),c.selectEl.addClass("brat-version-selector"),c.selectEl.style.width="100%"}):t.addButton(c=>{c.setButtonText(o==="latest"?"Latest version":o||"Select a version...").setClass("brat-version-selector").setClass("button").onClick(()=>{let g=[{version:"latest",prerelease:!1},...n];new Ie(this.app,this.address,g,o,l=>{var r;this.version=l,c.setButtonText(l==="latest"?"Latest version":l||"Select a version..."),(r=this.addPluginButton)==null||r.setDisabled(this.version==="")}).open()})})}onOpen(){let t=this.contentEl.createEl("h4");this.address?(t.appendText("Change plugin version: "),t.appendChild(te(this.address))):t.setText("Github repository for beta plugin:"),this.contentEl.createEl("form",{},n=>{var g;n.addClass("brat-modal"),(!this.address||!this.updateVersion)&&new L.Setting(n).setClass("repository-setting").then(l=>{l.addText(r=>{this.repositoryAddressEl=r,r.setPlaceholder("Repository (example: https://github.com/GitHubUserName/repository-name)"),r.setValue(this.address),r.onChange(d=>{var b,w;this.address=ye(d.trim()),this.version!==""&&(!this.address||!this.isGitHubRepositoryMatch(this.address))&&this.versionSetting&&(this.updateVersionDropdown(this.versionSetting,[]),this.versionSetting.settingEl.classList.add("disabled-setting"),this.versionSetting.setDisabled(!0),r.inputEl.classList.remove("valid-repository"),r.inputEl.classList.remove("invalid-repository")),this.version||(this.isGitHubRepositoryMatch(this.address)?(b=this.addPluginButton)==null||b.setDisabled(!1):(w=this.addPluginButton)==null||w.setDisabled(!0))}),r.inputEl.addEventListener("keydown",async d=>{var b,w,p;d.key==="Enter"&&(this.address&&(this.updateVersion&&this.version!==""||!this.updateVersion)&&(d.preventDefault(),(b=this.addPluginButton)==null||b.setDisabled(!0),(w=this.cancelButton)==null||w.setDisabled(!0),(p=this.versionSetting)==null||p.setDisabled(!0),this.submitForm()),await this.updateRepositoryVersionInfo(this.version,i))}),r.inputEl.addEventListener("blur",async()=>{await this.updateRepositoryVersionInfo(this.version,i)}),l.setDesc("Repository"),r.inputEl.style.width="100%"})});let i=n.createDiv("validation-status");this.address||i.setText("Enter a GitHub repository address to validate it."),this.versionSetting=new L.Setting(n).setClass("version-setting").setClass("disabled-setting"),this.updateVersionDropdown(this.versionSetting,[],this.version),this.versionSetting.setDisabled(!0);let o=n.createDiv("token-setting");if(new L.Setting(o).setName("GitHub Token").setDesc("Select a secret as token for this repository (optional)").addComponent(m=>new L.SecretComponent(this.plugin.app,m).setValue(this.secretName).onChange(async l=>{var d,b,w,p,T;if(this.secretName=(l==null?void 0:l.trim())||"",!this.secretName){this.address&&Pe(this.plugin,this.address)&&(ze(this.plugin,this.address,""),E(this.plugin,`Token setting cleared for ${this.address}`,3)),this.updateRepositoryVersionInfo(this.version,i);return}let r=this.secretName?this.plugin.app.secretStorage.getSecret(this.secretName):null;r&&(this.validToken=await((d=this.validator)==null?void 0:d.validateToken(r,this.address)),this.validToken?((p=this.validateButton)==null||p.setButtonText("Valid"),(T=this.validateButton)==null||T.setDisabled(!0),this.address&&(await this.updateRepositoryVersionInfo(this.version,i),Pe(this.plugin,this.address)&&(ze(this.plugin,this.address,this.secretName),E(this.plugin,`Token setting updated for ${this.address}`,3)))):((b=this.validateButton)==null||b.setButtonText("Invalid"),(w=this.validateButton)==null||w.setDisabled(!1)))})),this.validator=new j,this.secretName){let m=this.plugin.app.secretStorage.getSecret(this.secretName);m&&((g=this.validator)==null||g.validateToken(m,this.address).then(l=>{var r,d;this.validToken=l,this.validToken&&((r=this.validateButton)==null||r.setButtonText("Valid"),(d=this.validateButton)==null||d.setDisabled(!0))}))}n.createDiv("modal-button-container",m=>{var l;m.createEl("label",{cls:"mod-checkbox"},r=>{let d=r.createEl("input",{attr:{tabindex:-1},type:"checkbox"});d.checked=this.enableAfterInstall,d.addEventListener("click",()=>{this.enableAfterInstall=d.checked}),r.appendText("Enable after installing the plugin")}),this.cancelButton=new L.ButtonComponent(m).setButtonText("Never mind").setClass("mod-cancel").onClick(()=>{this.close()}),this.addPluginButton=new L.ButtonComponent(m).setButtonText(this.updateVersion&&this.address?"Change version":"Add plugin").setCta().onClick(()=>{var r,d,b,w;this.address!==""&&(this.updateVersion&&this.version!==""||!this.updateVersion)&&((r=this.addPluginButton)==null||r.setDisabled(!0),(d=this.addPluginButton)==null||d.setButtonText("Installing \u2026"),(b=this.cancelButton)==null||b.setDisabled(!0),(w=this.versionSetting)==null||w.setDisabled(!0),this.submitForm())}),(this.updateVersion||this.address==="")&&((l=this.addPluginButton)==null||l.setDisabled(!0))});let a=n.createDiv();a.style.borderTop="1px solid #ccc",a.style.marginTop="30px";let c=a.createSpan();c.createEl("a",{href:"https://bit.ly/o42-twitter",text:"TFTHacker"}),c.appendText(" and "),c.createEl("a",{href:"https://github.com/johannrichard",text:"johannrichard"}),c.style.fontStyle="italic",a.appendChild(c),z(a,!1);let u=n.querySelectorAll("button");for(let m of Array.from(u))m.setAttribute("type","button");n.addEventListener("submit",m=>{m.preventDefault(),m.stopPropagation()})}),this.address&&window.setTimeout(async()=>{await this.updateRepositoryVersionInfo(this.version)},100)}async updateRepositoryVersionInfo(t="",n){var a,c,u,g,m,l;let i=this.repositoryAddressEl;if(this.plugin.settings.debuggingMode&&console.log(`[BRAT] Updating version dropdown for ${this.address} with selected version ${t}`),!this.address){n==null||n.setText("Repository address is required."),n==null||n.addClass("validation-status-error");return}n==null||n.setText("Validating repository address..."),n==null||n.removeClass("validation-status-error"),this.versionSetting&&this.updateVersion&&this.updateVersionDropdown(this.versionSetting,[]);let o=ye(this.address);try{let r="";if(this.secretName){let b=this.plugin.app.secretStorage.getSecret(this.secretName);b&&(r=b)}else if(this.plugin.settings.globalTokenName){let b=this.plugin.app.secretStorage.getSecret(this.plugin.settings.globalTokenName);b&&(r=b)}let d=await yt(o,this.plugin.settings.debuggingMode,r);d&&d.length>0?(i==null||i.inputEl.classList.remove("invalid-repository"),i==null||i.inputEl.classList.add("valid-repository"),n==null||n.setText(""),this.versionSetting&&(this.versionSetting.settingEl.classList.remove("disabled-setting"),this.versionSetting.setDisabled(!1),this.updateVersionDropdown(this.versionSetting,d,t))):(i==null||i.inputEl.classList.remove("valid-repository"),i==null||i.inputEl.classList.add("invalid-repository"),n==null||n.setText("Error: No releases found in this repository."),n==null||n.addClass("validation-status-error"),(a=this.versionSetting)==null||a.settingEl.classList.add("disabled-setting"),(c=this.versionSetting)==null||c.setDisabled(!0),(u=this.addPluginButton)==null||u.setDisabled(!0))}catch(r){if(r instanceof D&&(i==null||i.inputEl.classList.remove("valid-repository"),i==null||i.inputEl.classList.add("validation-error"),n==null||n.setText(`GitHub API rate limit exceeded. Try again in ${r.getMinutesToReset()} minutes.`),this.versionSetting&&(this.versionSetting.settingEl.classList.add("disabled-setting"),this.versionSetting.setDisabled(!0),(g=this.addPluginButton)==null||g.setDisabled(!0)),E(this.plugin,`${r.message} Consider adding a personal access token in BRAT settings for higher limits. See documentation for details.`,20,()=>{window.open("https://github.com/TfTHacker/obsidian42-brat/blob/main/BRAT-DEVELOPER-GUIDE.md#github-api-rate-limits")})),r instanceof O){let d=r;switch(d.status){case 404:n==null||n.setText("Repository not found. Check the address or provide a valid token for access to a private repository.");break;case 403:n==null||n.setText("Access denied. Check your personal access token.");break;default:n==null||n.setText(`Error: ${d.message}`);break}n==null||n.addClass("validation-status-error"),(m=this.versionSetting)==null||m.setDisabled(!0),(l=this.addPluginButton)==null||l.setDisabled(!0),E(this.plugin,`${d.message} `,20)}}}onClose(){this.openSettingsTabAfterwards&&(this.plugin.app.setting.open(),this.plugin.app.setting.openTabById(this.plugin.APP_ID))}isGitHubRepositoryMatch(t){let n=t.trim().replace(/\.git$/,"").toLowerCase();return/^(?:https?:\/\/github\.com\/)?([a-zA-Z0-9._-]+)\/([a-zA-Z0-9._-]+)$/i.test(n)}};var Dt=require("obsidian");async function Ne(){try{let s=await(0,Dt.requestUrl)(`https://obsidian.md/?${Math.random()}`);return s.status>=200&&s.status<300}catch(s){return!1}}var $t=Ue(),Ae=_e(),ne=class{constructor(e){this.plugin=e}displayAddNewPluginModal(e=!1,t=!1,n="",i="",o=""){new U(this.plugin,this,e,t,n,i,o).open()}async validateRepository(e,t=!1,n=!1,i="",o=""){let c=o;try{let u=await He(e,this.plugin.settings.debuggingMode,c),g=await Ge(e,i,t,this.plugin.settings.debuggingMode,u,c);if(!g)return n&&(E(this.plugin,`${e} +This does not seem to be an obsidian plugin with valid releases, as there are no releases available.`,15),console.error("BRAT: validateRepository",e,t,n)),null;let m=await Q(g,"manifest.json",this.plugin.settings.debuggingMode,u,c);if(!m)return n&&(E(this.plugin,`${e} +This does not seem to be an obsidian plugin, as there is no manifest.json file.`,15),console.error("BRAT: validateRepository",e,t,n)),null;let l=JSON.parse(m);if(!("id"in l))return n&&E(this.plugin,`${e} +The plugin id attribute for the release is missing from the manifest file`,15),null;if(!("version"in l))return n&&E(this.plugin,`${e} +The version attribute for the release is missing from the manifest file`,15),null;try{let r=Ae(g.tag_name,{includePrerelease:!0,loose:!0}),d=Ae(l.version,{includePrerelease:!0,loose:!0});$t(r,d)!==0&&(n&&E(this.plugin,`${e} +Version mismatch detected: +Release tag version: ${g.tag_name} +Manifest version: ${l.version} + +The release tag version will be used to ensure consistency.`,15),l.version=r.version)}catch(r){}return l}catch(u){if(u instanceof D){let g=`GitHub API rate limit exceeded. Reset in ${u.getMinutesToReset()} minutes.`;throw n&&E(this.plugin,g,15),console.error(`BRAT: validateRepository ${u}`),E(this.plugin,`${u.message} Consider adding a personal access token in BRAT settings for higher limits. See documentation for details.`,20,()=>{window.open("https://github.com/TfTHacker/obsidian42-brat/blob/main/BRAT-DEVELOPER-GUIDE.md#github-api-rate-limits")}),u}if(u instanceof O)throw n&&(u.status===401?E(this.plugin,`${e} +GitHub API Authentication error. Please verify that your personal access token is valid and set correctly.`,15):E(this.plugin,`${e} +GitHub API error ${u.status}: ${u.message}`,15)),console.error(`BRAT: validateRepository ${u}`),u;return n&&E(this.plugin,`${e} +Unspecified error encountered: ${u}, verify debug for more information.`,15),null}}async getAllReleaseFiles(e,t,n="",i=""){let o=i,a=await He(e,this.plugin.settings.debuggingMode,o),c=await Ge(e,n,t,this.plugin.settings.debuggingMode,a,o);if(!c)return Promise.reject("No release found");let u=t||n!=="";return console.log({reallyGetManifestOrNot:u,version:c.tag_name}),{mainJs:await Q(c,"main.js",this.plugin.settings.debuggingMode,a,o),manifest:u?await Q(c,"manifest.json",this.plugin.settings.debuggingMode,a,o):"",styles:await Q(c,"styles.css",this.plugin.settings.debuggingMode,a,o)}}async writeReleaseFilesToPluginFolder(e,t){var o,a;let n=`${(0,k.normalizePath)(`${this.plugin.app.vault.configDir}/plugins/${e}`)}/`,{adapter:i}=this.plugin.app.vault;await i.exists(n)||await i.mkdir(n),await i.write(`${n}main.js`,(o=t.mainJs)!=null?o:""),await i.write(`${n}manifest.json`,(a=t.manifest)!=null?a:""),t.styles&&await i.write(`${n}styles.css`,t.styles)}async addPlugin(e,t=!1,n=!1,i=!1,o="",a=!1,c=this.plugin.settings.enableAfterInstall,u=""){try{this.plugin.settings.debuggingMode&&console.log("BRAT: addPlugin",e,t,n,i,o,a,c,u?"with secret":"public");let g="";u&&u.trim()!==""?(g=await this.plugin.app.secretStorage.getSecret(u)||"",g||E(this.plugin,`Secret not found for token name: ${u}. Please add it to SecretStorage or clear the token name for this plugin.`,10)):this.plugin.settings.globalTokenName&&(g=await this.plugin.app.secretStorage.getSecret(this.plugin.settings.globalTokenName)||"");let m=10,l=await this.validateRepository(e,!0,!0,o,g),r=!!l;if(r||(l=await this.validateRepository(e,!1,!0,o,g)),l===null){let w=`${e} +A manifest.json file does not exist in the latest release of the repository. This plugin cannot be installed.`;return await this.plugin.log(w,!0),E(this.plugin,w,m),!1}if(!Object.hasOwn(l,"version")){let w=`${e} +The manifest.json file in the latest release or pre-release of the repository does not have a version number in the file. This plugin cannot be installed.`;return await this.plugin.log(w,!0),E(this.plugin,w,m),!1}let d=!1;if(Object.hasOwn(l,"minAppVersion")&&!(0,k.requireApiVersion)(l.minAppVersion)){if(o===""||o==="latest"||!this.plugin.settings.allowIncompatiblePlugins){let p=`Plugin: ${e} + +The manifest.json for this plugin indicates that the Obsidian version of the app needs to be ${l.minAppVersion}, but this installation of Obsidian is ${k.apiVersion}. + +You will need to update your Obsidian to use this plugin or contact the plugin developer for more information.`;return await this.plugin.log(p,!0),E(this.plugin,p,30),!1}if(!await De({app:this.plugin.app,message:createFragment(p=>{p.appendText("Plugin: "),p.createEl("code",{text:e}),p.createEl("br"),p.appendText("The "),p.createEl("code",{text:"manifest.json"}),p.appendText(" for this plugin indicates that the Obsidian version of the app needs to be "),p.createEl("code",{text:l.minAppVersion}),p.appendText(", but this installation of Obsidian is "),p.createEl("code",{text:k.apiVersion}),p.appendText("."),p.createEl("br"),p.appendText("Using this plugin is not recommended and may not work as expected. Use at your own risk."),p.createEl("br"),p.appendText("Do you want to install it anyways?")})}))return!1;d=!0}let b=async()=>{var T,C;let w=await this.getAllReleaseFiles(e,r,o,g);console.log("rFiles",w),(r||w.manifest==="")&&(w.manifest=JSON.stringify(l));let p=JSON.parse((T=w.manifest)!=null?T:"");if(d&&(p.brat={isIncompatible:!0,minAppVersionOriginal:p.minAppVersion},p.minAppVersion=k.apiVersion),k.Platform.isMobile&&p.isDesktopOnly)if(this.plugin.settings.allowIncompatiblePlugins){if(!await De({app:this.plugin.app,message:createFragment(R=>{R.appendText("Plugin: "),R.createEl("code",{text:e}),R.createEl("br"),R.appendText("The "),R.createEl("code",{text:"manifest.json"}),R.appendText(" for this plugin indicates that the plugin has "),R.createEl("code",{text:"isDesktopOnly: true"}),R.appendText(", but you are using a mobile device."),R.createEl("br"),R.appendText("Using this plugin is not recommended and may not work as expected. Use at your own risk."),R.createEl("br"),R.appendText("Do you want to forcefully run it on mobile anyways?")})}))return null;p.isDesktopOnly=!1,(C=p.brat)!=null||(p.brat={}),p.brat.isDesktopOnlyOriginal=!0,p.brat.isIncompatible=!0,d=!0}else{let N=`Plugin: ${e} + +The manifest.json for this plugin indicates that the plugin has isDesktopOnly: true, but you are using a mobile device. + +The plugin will not be installed.`;return await this.plugin.log(N,!0),E(this.plugin,N,30),null}if(d&&(w.manifest=JSON.stringify(p)),this.plugin.settings.debuggingMode&&console.log("BRAT: rFiles.manifest",r,w),w.mainJs===null){let N=`${e} +The release is not complete and cannot be downloaded. main.js is missing from the Release`;return await this.plugin.log(N,!0),E(this.plugin,N,m),null}return w};if(!t||a){let w=await b();if(w===null)return!1;if(await this.writeReleaseFilesToPluginFolder(l.id,w),Nt(this.plugin,e,o,d,u),c){let{plugins:p}=this.plugin.app,T=(0,k.normalizePath)(`${p.getPluginFolder()}/${l.id}`);await p.loadManifest(T),await p.enablePluginAndSave(l.id)}if(await this.plugin.app.plugins.loadManifests(),a)await this.reloadPlugin(l.id),await this.plugin.log(`${e} reinstalled`,!0),E(this.plugin,`${e} +Plugin has been reinstalled and reloaded with version ${l.version}`,m);else{let p=o===""?"":` (version: ${o})`,T=`${e}${p} +The plugin has been registered with BRAT.`;c||(T+=" You may still need to enable it the Community Plugin List."),await this.plugin.log(T,!0),E(this.plugin,T,m)}}else{let w=`${this.plugin.app.vault.configDir}/plugins/${l.id}/`,p="";try{p=await this.plugin.app.vault.adapter.read(`${w}manifest.json`)}catch(R){if(R.errno===-4058||R.errno===-2)return await this.addPlugin(e,!1,r,!1,o,!1,c,u),!0;console.log("BRAT - Local Manifest Load",l.id,JSON.stringify(R,null,2))}if(o!==""&&o!=="latest")return E(this.plugin,`The version of ${e} is frozen, not updating.`,3),!1;let T=await JSON.parse(p),C=Ae(T.version,{includePrerelease:!0,loose:!0}),N=Ae(l.version,{includePrerelease:!0,loose:!0});if($t(C,N)===-1){let R=await b();if(R===null)return!1;if(n){let J=`There is an update available for ${l.id} from version ${T.version} to ${l.version}. `;return await this.plugin.log(`${J}[Release Info](https://github.com/${e}/releases/tag/${l.version})`,!0),E(this.plugin,J,30,()=>{l&&window.open(`https://github.com/${e}/releases/tag/${l.version}`)}),!1}await this.writeReleaseFilesToPluginFolder(l.id,R),await this.plugin.app.plugins.loadManifests(),await this.reloadPlugin(l.id);let P=`${l.id} +Plugin has been updated from version ${T.version} to ${l.version}. `;return await this.plugin.log(`${P}[Release Info](https://github.com/${e}/releases/tag/${l.version})`,!0),E(this.plugin,P,30,()=>{l&&window.open(`https://github.com/${e}/releases/tag/${l.version}`)}),!0}return i&&E(this.plugin,`No update available for ${e}`,3),!0}}catch(g){console.error(`BRAT: Error adding plugin ${e}:`,{error:g,updatePluginFiles:t,seeIfUpdatedOnly:n,specifyVersion:o,forceReinstall:a});let m=g instanceof Error?g.message:"Unknown error occurred";return await this.plugin.log(`Error ${t?"updating":"adding"} plugin ${e}: ${m}`,!0),!1}return!0}async reloadPlugin(e){let{plugins:t}=this.plugin.app;try{await t.disablePlugin(e),await t.enablePlugin(e)}catch(n){this.plugin.settings.debuggingMode&&console.log("reload plugin",n)}}async updatePlugin(e,t=!1,n=!1,i=!1,o=""){let a=await this.addPlugin(e,!0,t,n,"",i,!1,o);return!a&&!t&&E(this.plugin,`${e} +Update of plugin failed.`),a}async checkForPluginUpdatesAndInstallUpdates(e=!1,t=!1){if(!await Ne()){console.log("BRAT: No internet detected.");return}let n,i="Checking for plugin updates STARTED";await this.plugin.log(i,!0),e&&this.plugin.settings.notificationsEnabled&&(n=new k.Notice(`BRAT +${i}`,3e4));let o=new Map(this.plugin.settings.pluginSubListFrozenVersion.map(u=>[u.repo,u.version])),a=new Map(this.plugin.settings.pluginSubListFrozenVersion.map(u=>[u.repo,u.tokenName||""]));for(let u of this.plugin.settings.pluginList){let g=o.get(u);g&&g!=="latest"||await this.updatePlugin(u,t,!1,!1,a.get(u)||"")}let c="Checking for plugin updates COMPLETED";await this.plugin.log(c,!0),e&&(n&&n.hide(),E(this.plugin,c,10))}deletePlugin(e){let t=`Removed ${e} from BRAT plugin list`;this.plugin.log(t,!0),this.plugin.settings.pluginList=this.plugin.settings.pluginList.filter(n=>n!==e),this.plugin.settings.pluginSubListFrozenVersion=this.plugin.settings.pluginSubListFrozenVersion.filter(n=>n.repo!==e),this.plugin.saveSettings()}getEnabledDisabledPlugins(e){let t=this.plugin.app.plugins,n=Object.values(t.manifests),i=Object.values(t.plugins).map(o=>o.manifest);return e?n.filter(o=>i.find(a=>o.id===a.id)):n.filter(o=>!i.find(a=>o.id===a.id))}checkIncompatiblePlugins(){let e=this.plugin.settings.pluginSubListFrozenVersion.filter(t=>t.isIncompatible).map(t=>t.repo);e.length>0&&E(this.plugin,`The following incompatible plugins were forcefully installed by BRAT and may not work as expected: +${e.join(` +`)}`,30)}};var _=require("obsidian");var se=async(s,e,t)=>{let n=await G(e,!0,s.settings.debuggingMode);if(n||(n=await G(e,!1,s.settings.debuggingMode)),!n)return E(s,"There is no theme.css or theme-beta.css file in the root path of this repository, so there is no theme to install."),!1;let i=await Rt(e,s.settings.debuggingMode);if(!i)return E(s,"There is no manifest.json file in the root path of this repository, so theme cannot be installed."),!1;let o=await JSON.parse(i),a=(0,_.normalizePath)(Un(s)+o.name),{adapter:c}=s.app.vault;await c.exists(a)||await c.mkdir(a),await c.write((0,_.normalizePath)(`${a}/theme.css`),n),await c.write((0,_.normalizePath)(`${a}/manifest.json`),i),Lt(s,e,Z(n));let u="";return t?(At(s,e,n),u=`${o.name} theme installed from ${e}. `,setTimeout(()=>{s.app.customCss.setTheme(o.name)},500)):u=`${o.name} theme updated from ${e}.`,s.log(`${u}[Theme Info](https://github.com/${e})`,!1),E(s,u,20,()=>{window.open(`https://github.com/${e}`)}),!0},q=async(s,e)=>{if(!await Ne()){console.log("BRAT: No internet detected.");return}let t,n="Checking for beta theme updates STARTED";await s.log(n,!0),e&&s.settings.notificationsEnabled&&(t=new _.Notice(`BRAT +${n}`,3e4));for(let o of s.settings.themesList){let a=await ee(o.repo,!0,s.settings.debuggingMode);a==="0"&&(a=await ee(o.repo,!1,s.settings.debuggingMode)),console.log("BRAT: lastUpdateOnline",a),a!==o.lastUpdate&&await se(s,o.repo,!1)}let i="Checking for beta theme updates COMPLETED";(async()=>await s.log(i,!0))(),e&&(s.settings.notificationsEnabled&&t&&t.hide(),E(s,i))},Ce=(s,e)=>{s.settings.themesList=s.settings.themesList.filter(n=>n.repo!==e),s.saveSettings();let t=`Removed ${e} from BRAT themes list and will no longer be updated. However, the theme files still exist in the vault. To remove them, go into Settings > Appearance and remove the theme.`;s.log(t,!0),E(s,t)},Un=s=>`${(0,_.normalizePath)(`${s.app.vault.configDir}/themes`)}/`;var xt="brat-migrations";async function _n(s,e){try{let t=await s.vault.adapter.read(`${s.vault.configDir}/plugins/obsidian42-brat/${xt}.json`);return JSON.parse(t).appliedMigrations.includes(e)}catch(t){return!1}}async function Hn(s,e){try{let t=`${s.vault.configDir}/plugins/obsidian42-brat/${xt}.json`,n={appliedMigrations:[]};try{let i=await s.vault.adapter.read(t);n=JSON.parse(i)}catch(i){}n.appliedMigrations.includes(e)||(n.appliedMigrations.push(e),await s.vault.adapter.write(t,JSON.stringify(n,null,2)))}catch(t){console.error(`BRAT: Failed to mark migration ${e} complete:`,t)}}async function Ot(s,e,t){let n="tokens-to-secretstorage-v1";if(!await _n(s,n))try{let i=0,o=u=>{let m=`brat-gh-${u.toLowerCase().replace(/[^a-z0-9-]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"")}`;return m.length>64?m.substring(0,64).replace(/-$/,""):m},a=u=>{let g=s.secretStorage.listSecrets();for(let m of g)if(s.secretStorage.getSecret(m)===u)return m;return null},c=(u,g)=>{let m=a(u);return m?(console.log(`BRAT: Reusing existing secret "${m}"`),m):(s.secretStorage.setSecret(g,u),console.log(`BRAT: Created new secret "${g}"`),g)};if(e.personalAccessToken&&e.personalAccessToken.trim()!==""){let u=e.personalAccessToken.trim(),m=c(u,"brat-gh-global");e.globalTokenName=m,e.personalAccessToken="",i++}if(e.pluginSubListFrozenVersion){for(let u of e.pluginSubListFrozenVersion)if(u.token&&u.token.trim()!==""){let g=u.token.trim(),m=o(u.repo),l=c(g,m);u.tokenName=l,u.token=void 0,i++}}i>0&&(await t(),console.log(`BRAT: Migrated ${i} token(s) to SecretStorage`)),await Hn(s,n)}catch(i){console.error("BRAT: Failed to migrate tokens to SecretStorage:",i)}}var H=require("obsidian");var B=class extends H.Modal{constructor(e,t=!1){super(e.app),this.plugin=e,this.address="",this.openSettingsTabAfterwards=t}async submitForm(){if(this.address==="")return;let e=this.address.replace("https://github.com/","");if(Ct(this.plugin,e)){E(this.plugin,"This theme is already in the list for beta testing",10);return}await se(this.plugin,e,!0)&&this.close()}onOpen(){this.contentEl.createEl("h4",{text:"Github repository for beta theme:"}),this.contentEl.createEl("form",{},e=>{e.addClass("brat-modal"),new H.Setting(e).addText(i=>{i.setPlaceholder("Repository (example: https://github.com/GitHubUserName/repository-name"),i.setValue(this.address),i.onChange(o=>{this.address=o.trim()}),i.inputEl.addEventListener("keydown",o=>{o.key==="Enter"&&this.address!==" "&&(o.preventDefault(),this.submitForm())}),i.inputEl.style.width="100%",window.setTimeout(()=>{let o=document.querySelector(".setting-item-info");o&&o.remove(),i.inputEl.focus()},10)}),e.createDiv("modal-button-container",i=>{new H.ButtonComponent(i).setButtonText("Never mind").onClick(()=>{this.close()}),new H.ButtonComponent(i).setButtonText("Add theme").setCta().onClick(o=>{o.preventDefault(),console.log("Add theme button clicked"),this.address!==""&&this.submitForm()})});let t=e.createDiv();t.style.borderTop="1px solid #ccc",t.style.marginTop="30px";let n=t.createSpan();n.createEl("a",{href:"https://bit.ly/o42-twitter",text:"TFTHacker"}),n.appendText(" and "),n.createEl("a",{href:"https://github.com/johannrichard",text:"johannrichard"}),n.style.fontStyle="italic",t.appendChild(n),z(t,!1),window.setTimeout(()=>{let i=e.querySelectorAll(".brat-modal .setting-item-info");for(let o of Array.from(i))o.remove()},50)})}onClose(){this.openSettingsTabAfterwards&&(this.plugin.app.setting.openTab(),this.plugin.app.setting.openTabById(this.plugin.APP_ID))}};var Ft=require("obsidian");function Bt(){(0,Ft.addIcon)("BratIcon",'<path fill="currentColor" stroke="currentColor" d="M 41.667969 41.667969 C 41.667969 39.367188 39.800781 37.5 37.5 37.5 C 35.199219 37.5 33.332031 39.367188 33.332031 41.667969 C 33.332031 43.96875 35.199219 45.832031 37.5 45.832031 C 39.800781 45.832031 41.667969 43.96875 41.667969 41.667969 Z M 60.417969 58.582031 C 59.460938 58.023438 58.320312 57.867188 57.25 58.148438 C 56.179688 58.429688 55.265625 59.125 54.707031 60.082031 C 53.746094 61.777344 51.949219 62.820312 50 62.820312 C 48.050781 62.820312 46.253906 61.777344 45.292969 60.082031 C 44.734375 59.125 43.820312 58.429688 42.75 58.148438 C 41.679688 57.867188 40.539062 58.023438 39.582031 58.582031 C 37.597656 59.726562 36.910156 62.257812 38.042969 64.25 C 40.5 68.53125 45.0625 71.171875 50 71.171875 C 54.9375 71.171875 59.5 68.53125 61.957031 64.25 C 63.089844 62.257812 62.402344 59.726562 60.417969 58.582031 Z M 62.5 37.5 C 60.199219 37.5 58.332031 39.367188 58.332031 41.667969 C 58.332031 43.96875 60.199219 45.832031 62.5 45.832031 C 64.800781 45.832031 66.667969 43.96875 66.667969 41.667969 C 66.667969 39.367188 64.800781 37.5 62.5 37.5 Z M 50 8.332031 C 26.988281 8.332031 8.332031 26.988281 8.332031 50 C 8.332031 73.011719 26.988281 91.667969 50 91.667969 C 73.011719 91.667969 91.667969 73.011719 91.667969 50 C 91.667969 26.988281 73.011719 8.332031 50 8.332031 Z M 50 83.332031 C 33.988281 83.402344 20.191406 72.078125 17.136719 56.363281 C 14.078125 40.644531 22.628906 24.976562 37.5 19.042969 C 37.457031 19.636719 37.457031 20.238281 37.5 20.832031 C 37.5 27.738281 43.097656 33.332031 50 33.332031 C 52.300781 33.332031 54.167969 31.46875 54.167969 29.167969 C 54.167969 26.867188 52.300781 25 50 25 C 47.699219 25 45.832031 23.132812 45.832031 20.832031 C 45.832031 18.53125 47.699219 16.667969 50 16.667969 C 68.410156 16.667969 83.332031 31.589844 83.332031 50 C 83.332031 68.410156 68.410156 83.332031 50 83.332031 Z M 50 83.332031 " />')}var Mt=require("obsidian"),S=class extends Mt.FuzzySuggestModal{constructor(t){super(t.app);this.data=[];this.scope.register(["Shift"],"Enter",n=>{this.enterTrigger(n)}),this.scope.register(["Ctrl"],"Enter",n=>{this.enterTrigger(n)})}setSuggesterData(t){this.data=t}display(t){this.callbackFunction=t,this.open()}getItems(){return this.data}getItemText(t){return t.display}onChooseItem(){}renderSuggestion(t,n){n.createEl("div",{text:t.item.display})}enterTrigger(t){var o;let n=(o=document.querySelector(".suggestion-item.is-selected div"))==null?void 0:o.textContent,i=this.data.find(a=>a.display===n);i&&(this.invokeCallback(i,t),this.close())}onChooseSuggestion(t,n){this.invokeCallback(t.item,n)}invokeCallback(t,n){typeof this.callbackFunction=="function"&&this.callbackFunction(t,n)}};var ie=class{constructor(e){this.bratCommands=[{id:"AddBetaPlugin",icon:"BratIcon",name:"Plugins: Add a beta plugin for testing (with or without version)",showInRibbon:!0,callback:()=>{this.plugin.betaPlugins.displayAddNewPluginModal(!1,!0)}},{id:"checkForUpdatesAndUpdate",icon:"BratIcon",name:"Plugins: Check for updates to all beta plugins and UPDATE",showInRibbon:!0,callback:async()=>{await this.plugin.betaPlugins.checkForPluginUpdatesAndInstallUpdates(!0,!1)}},{id:"checkForUpdatesAndDontUpdate",icon:"BratIcon",name:"Plugins: Only check for updates to beta plugins, but don't Update",showInRibbon:!0,callback:async()=>{await this.plugin.betaPlugins.checkForPluginUpdatesAndInstallUpdates(!0,!0)}},{id:"updateOnePlugin",icon:"BratIcon",name:"Plugins: Choose a single plugin version to update",showInRibbon:!0,callback:()=>{let e=new Map(this.plugin.settings.pluginSubListFrozenVersion.map(i=>[i.repo,{version:i.version,token:i.token}])),t=Object.values(this.plugin.settings.pluginList).filter(i=>{let o=e.get(i);return!(o!=null&&o.version)||o.version==="latest"}).map(i=>({display:i,info:i})),n=new S(this.plugin);n.setSuggesterData(t),n.display(i=>{let o=`Checking for updates for ${i.info}`,a=e.get(i.info);this.plugin.log(o,!0),E(this.plugin,` +${o}`,3),this.plugin.betaPlugins.updatePlugin(i.info,!1,!0,!1,a==null?void 0:a.token)})}},{id:"reinstallOnePlugin",icon:"BratIcon",name:"Plugins: Choose a single plugin to reinstall",showInRibbon:!0,callback:()=>{let e=new Set(this.plugin.settings.pluginSubListFrozenVersion.map(i=>i.repo)),t=Object.values(this.plugin.settings.pluginList).filter(i=>!e.has(i)).map(i=>({display:i,info:i})),n=new S(this.plugin);n.setSuggesterData(t),n.display(i=>{let o=`Reinstalling ${i.info}`;E(this.plugin,` +${o}`,3),this.plugin.log(o,!0),this.plugin.betaPlugins.updatePlugin(i.info,!1,!1,!0)})}},{id:"restartPlugin",icon:"BratIcon",name:"Plugins: Restart a plugin that is already installed",showInRibbon:!0,callback:()=>{let e=Object.values(this.plugin.app.plugins.manifests).map(n=>({display:n.id,info:n.id})),t=new S(this.plugin);t.setSuggesterData(e),t.display(n=>{E(this.plugin,`${n.info} +Plugin reloading .....`,5),this.plugin.betaPlugins.reloadPlugin(n.info)})}},{id:"disablePlugin",icon:"BratIcon",name:"Plugins: Disable a plugin - toggle it off",showInRibbon:!0,callback:()=>{let e=this.plugin.betaPlugins.getEnabledDisabledPlugins(!0).map(n=>({display:`${n.name} (${n.id})`,info:n.id})),t=new S(this.plugin);t.setSuggesterData(e),t.display(n=>{this.plugin.log(`${n.display} plugin disabled`,!1),this.plugin.settings.debuggingMode&&console.log(n.info),this.plugin.app.plugins.disablePluginAndSave(n.info)})}},{id:"enablePlugin",icon:"BratIcon",name:"Plugins: Enable a plugin - toggle it on",showInRibbon:!0,callback:()=>{let e=this.plugin.betaPlugins.getEnabledDisabledPlugins(!1).map(n=>({display:`${n.name} (${n.id})`,info:n.id})),t=new S(this.plugin);t.setSuggesterData(e),t.display(n=>{this.plugin.log(`${n.display} plugin enabled`,!1),this.plugin.app.plugins.enablePluginAndSave(n.info)})}},{id:"openGitHubZRepository",icon:"BratIcon",name:"Plugins: Open the GitHub repository for a plugin",showInRibbon:!0,callback:async()=>{let e=await vt(this.plugin.settings.debuggingMode);if(e){let t=Object.values(e).map(o=>({display:`Plugin: ${o.name} (${o.repo})`,info:o.repo})),n=Object.values(this.plugin.settings.pluginList).map(o=>({display:`BRAT: ${o}`,info:o}));for(let o of t)n.push(o);let i=new S(this.plugin);i.setSuggesterData(n),i.display(o=>{o.info&&window.open(`https://github.com/${o.info}`)})}}},{id:"openGitHubRepoTheme",icon:"BratIcon",name:"Themes: Open the GitHub repository for a theme (appearance)",showInRibbon:!0,callback:async()=>{let e=await Pt(this.plugin.settings.debuggingMode);if(e){let t=Object.values(e).map(i=>({display:`Theme: ${i.name} (${i.repo})`,info:i.repo})),n=new S(this.plugin);n.setSuggesterData(t),n.display(i=>{i.info&&window.open(`https://github.com/${i.info}`)})}}},{id:"opentPluginSettings",icon:"BratIcon",name:"Plugins: Open Plugin Settings Tab",showInRibbon:!0,callback:()=>{let e=this.plugin.app.setting,t=Object.values(e.pluginTabs).map(o=>({display:`Plugin: ${o.name}`,info:o.id})),n=new S(this.plugin),i=Object.values(e.settingTabs).map(o=>({display:`Core: ${o.name}`,info:o.id}));for(let o of t)i.push(o);n.setSuggesterData(i),n.display(o=>{e.open(),e.openTabById(o.info)})}},{id:"GrabBetaTheme",icon:"BratIcon",name:"Themes: Grab a beta theme for testing from a Github repository",showInRibbon:!0,callback:()=>{new B(this.plugin).open()}},{id:"updateBetaThemes",icon:"BratIcon",name:"Themes: Update beta themes",showInRibbon:!0,callback:async()=>{await q(this.plugin,!0)}},{id:"allCommands",icon:"BratIcon",name:"All Commands list",showInRibbon:!1,callback:()=>{this.ribbonDisplayCommands()}}];this.plugin=e;for(let t of this.bratCommands)this.plugin.addCommand({id:t.id,name:t.name,icon:t.icon,callback:()=>{t.callback()}})}ribbonDisplayCommands(){let e=[];for(let a of this.bratCommands)a.showInRibbon&&e.push({display:a.name,info:a.callback});let t=new S(this.plugin),n=this.plugin.app.setting,i=Object.values(n.settingTabs).map(a=>({display:`Core: ${a.name}`,info:()=>{n.open(),n.openTabById(a.id)}})),o=Object.values(n.pluginTabs).map(a=>({display:`Plugin: ${a.name}`,info:()=>{n.open(),n.openTabById(a.id)}}));e.push({display:"---- Core Plugin Settings ----",info:()=>{this.ribbonDisplayCommands()}});for(let a of i)e.push(a);e.push({display:"---- Plugin Settings ----",info:()=>{this.ribbonDisplayCommands()}});for(let a of o)e.push(a);t.setSuggesterData(e),t.display(a=>{typeof a.info=="function"&&a.info()})}};var A=require("obsidian");var Le=class extends A.PluginSettingTab{constructor(t,n){super(t,n);this.accessTokenSetting=null;this.accessTokenButton=null;this.tokenInfo=null;this.validator=null;this.plugin=n}display(){let{containerEl:t}=this;t.empty(),t.addClass("brat-settings"),new A.Setting(t).setName("Auto-enable plugins after installation").setDesc('If enabled beta plugins will be automatically enabled after installtion by default. Note: you can toggle this on and off for each plugin in the "Add Plugin" form.').addToggle(l=>{l.setValue(this.plugin.settings.enableAfterInstall).onChange(async r=>{this.plugin.settings.enableAfterInstall=r,await this.plugin.saveSettings()})}),new A.Setting(t).setName("Auto-update plugins at startup").setDesc("If enabled all beta plugins will be checked for updates each time Obsidian starts. Note: this does not update frozen version plugins.").addToggle(l=>{l.setValue(this.plugin.settings.updateAtStartup).onChange(async r=>{this.plugin.settings.updateAtStartup=r,await this.plugin.saveSettings()})}),new A.Setting(t).setName("Auto-update themes at startup").setDesc("If enabled all beta themes will be checked for updates each time Obsidian starts.").addToggle(l=>{l.setValue(this.plugin.settings.updateThemesAtStartup).onChange(async r=>{this.plugin.settings.updateThemesAtStartup=r,await this.plugin.saveSettings()})}),new A.Setting(t).setName("Select latest plugin version by default").setDesc("If enabled the latest version will be selected by default when adding a new plugin.").addToggle(l=>{l.setValue(this.plugin.settings.selectLatestPluginVersionByDefault).onChange(async r=>{this.plugin.settings.selectLatestPluginVersionByDefault=r,await this.plugin.saveSettings()})}),new A.Setting(t).setName("Allow incompatible plugins").setDesc("If enabled, plugins with higher app versions will be allowed to be installed. Also it allows desktop-only plugins to be installed on mobile devices.").addToggle(l=>{l.setValue(this.plugin.settings.allowIncompatiblePlugins).onChange(async r=>{this.plugin.settings.allowIncompatiblePlugins=r,await this.plugin.saveSettings()})}),z(t,!0),t.createEl("hr");let n=new Map(this.plugin.settings.pluginSubListFrozenVersion.map(l=>[l.repo,l])),i=new Map,o=new A.SettingGroup(t).setHeading("Beta plugin list");o.addSearch(l=>{l.setPlaceholder("Filter plugins"),l.onChange(r=>{let d=r.toLowerCase().trim();i.forEach(({container:b,pluginName:w})=>{d===""||w.includes(d)?b.removeAttribute("hidden"):b.setAttribute("hidden","true")})})}),o.addSetting(l=>{let r=document.createDocumentFragment();r.createEl("div",{text:'The following is a list of beta plugins added via the command "Add a beta plugin for testing". You can chose to add the latest version or a frozen version. A frozen version is a specific release of a plugin based on its release tag.'}),r.createEl("p"),r.createEl("div",{text:"Click the 'Edit' button next to a plugin to change the installed version and the x button next to a plugin to remove it from the list."}),r.createEl("p"),r.createEl("span").createEl("b",{text:"Note: "}),r.createSpan({text:"Removing from the list does not delete the plugin, this should be done from the Community Plugins tab in Settings."}),l.setDesc(r),l.addButton(d=>{d.setButtonText("Add beta plugin").setCta().onClick(()=>{this.plugin.betaPlugins.displayAddNewPluginModal(!0)})})});for(let l of this.plugin.settings.pluginList){let r=n.get(l);o.addSetting(d=>{let b=(r==null?void 0:r.tokenName)||"",w=b?this.plugin.app.secretStorage.getSecret(b):"",p=!!(b&&!w),T=document.createDocumentFragment(),C=r!=null&&r.version?` Tracked version: ${r.version} ${r.version==="latest"?"":"(frozen)"}`:"",N=r!=null&&r.isIncompatible?" (incompatible)":"";T.createDiv({text:`${C}${N}`}),p&&T.createDiv({text:` Secret not defined or empty: ${b}`,cls:"mod-warning",title:"Token name configured but secret is missing. Add the secret or update the plugin configuration."}),d.setName(te(l)).setDesc(T);let R=d.settingEl;R.addClass("brat-plugin-item"),i.set(l,{container:R,pluginName:l.toLowerCase()}),(!(r!=null&&r.version)||r.version==="latest")&&d.addButton(P=>{p?P.setIcon("sync").setTooltip(`Secret missing: ${b}. Please add the secret or update the plugin configuration.`).setWarning().setDisabled(!0):P.setIcon("sync").setTooltip("Check and update plugin").onClick(async()=>{await this.plugin.betaPlugins.updatePlugin(l,!1,!0,!1,(r==null?void 0:r.tokenName)||"")})}),d.addButton(P=>{P.setIcon("edit").setTooltip("Change version and update settings"),p&&P.setWarning(),P.onClick(()=>{this.plugin.betaPlugins.displayAddNewPluginModal(!0,!0,l,r==null?void 0:r.version,(r==null?void 0:r.tokenName)||""),this.plugin.app.setting.updatePluginSection()})}).addButton(P=>{P.setIcon("cross").setTooltip("Remove this beta plugin").setWarning().onClick(()=>{if(P.buttonEl.textContent==="")P.setButtonText("Click once more to confirm removal");else{let{buttonEl:J}=P,{parentElement:M}=J;M!=null&&M.parentElement&&(M.parentElement.remove(),this.plugin.betaPlugins.deletePlugin(l))}})})})}let a=new Map,c=new A.SettingGroup(t).setHeading("Beta themes list");c.addSetting(l=>l.addButton(r=>{r.setButtonText("Add beta theme").setCta().onClick(()=>{this.plugin.app.setting.close(),new B(this.plugin).open()})})),c.addSearch(l=>{l.setPlaceholder("Filter themes"),l.onChange(r=>{let d=r.toLowerCase().trim();a.forEach(({container:b,themeName:w})=>{d===""||w.includes(d)?b.removeAttribute("hidden"):b.setAttribute("hidden","true")})})});for(let l of this.plugin.settings.themesList)c.addSetting(r=>{r.setName(te(l.repo));let d=r.settingEl;d.addClass("brat-theme-item"),a.set(l.repo,{container:d,themeName:l.repo.toLowerCase()}),r.addButton(b=>{b.setIcon("cross").setTooltip("Delete this beta theme").onClick(()=>{if(b.buttonEl.textContent==="")b.setButtonText("Click once more to confirm removal");else{let{buttonEl:w}=b,{parentElement:p}=w;p!=null&&p.parentElement&&(p.parentElement.remove(),Ce(this.plugin,l.repo))}})})});new A.SettingGroup(t).setHeading("Monitoring").addSetting(l=>l.setName("Enable notifications").setDesc("BRAT will provide popup notifications for its various activities. Turn this off means no notifications from BRAT.").addToggle(r=>{r.setValue(this.plugin.settings.notificationsEnabled),r.onChange(async d=>{this.plugin.settings.notificationsEnabled=d,await this.plugin.saveSettings()})})).addSetting(l=>l.setName("Enable logging").setDesc("Plugin updates will be logged to a file in the log file.").addToggle(r=>{r.setValue(this.plugin.settings.loggingEnabled).onChange(async d=>{this.plugin.settings.loggingEnabled=d,await this.plugin.saveSettings()})})).addSetting(l=>l.setName("BRAT log file location").setDesc("Logs will be saved to this file. Don't add .md to the file name.").addSearch(r=>{r.setPlaceholder("Example: BRAT-log").setValue(this.plugin.settings.loggingPath).onChange(async d=>{this.plugin.settings.loggingPath=d,await this.plugin.saveSettings()})})).addSetting(l=>l.setName("Enable verbose logging").setDesc("Get a lot more information in the log.").addToggle(r=>{r.setValue(this.plugin.settings.loggingVerboseEnabled).onChange(async d=>{this.plugin.settings.loggingVerboseEnabled=d,await this.plugin.saveSettings()})})).addSetting(l=>l.setName("Debugging mode").setDesc("Atomic Bomb level console logging. Can be used for troubleshooting and development.").addToggle(r=>{r.setValue(this.plugin.settings.debuggingMode).onChange(async d=>{this.plugin.settings.debuggingMode=d,await this.plugin.saveSettings()})}));let g=new A.SettingGroup(t).setHeading("GitHub Personal Access Token"),m="";g.addSetting(l=>{l.setName("Personal access token").setDesc(kt({prependText:"Set a personal access token to increase rate limits for public repositories on GitHub. You can create one in ",url:"https://github.com/settings/tokens/new?scopes=public_repo",text:"your GitHub account settings",appendText:" and then add it here. Please consult the documentation for more details."})),this.accessTokenSetting=new A.SecretComponent(this.plugin.app,l.controlEl),this.accessTokenSetting.setValue(this.plugin.settings.globalTokenName||"").onChange(async r=>{var b,w,p;let d=(r==null?void 0:r.trim())||"";this.plugin.settings.globalTokenName=d,await this.plugin.saveSettings(),d?(m=this.plugin.app.secretStorage.getSecret(d)||"",(b=this.accessTokenButton)==null||b.setDisabled(!1)):(m="",(w=this.accessTokenButton)==null||w.setDisabled(!0),await((p=this.validator)==null?void 0:p.validateToken("")))}),this.plugin.settings.globalTokenName&&(m=this.plugin.app.secretStorage.getSecret(this.plugin.settings.globalTokenName)||""),l.addExtraButton(r=>{r.setIcon("cross").setTooltip("Clear personal access token").onClick(async()=>{var d,b;this.plugin.settings.globalTokenName="",await this.plugin.saveSettings(),(d=this.accessTokenSetting)==null||d.setValue(""),m="",await((b=this.validator)==null?void 0:b.validateToken(""))})}).addButton(r=>{this.accessTokenButton=r,r.setButtonText("Validate").setCta().onClick(async()=>{var d;m&&await((d=this.validator)==null?void 0:d.validateToken(m))})}).then(()=>{var r;this.tokenInfo=this.createTokenInfoElement(t),this.validator=new j(this.tokenInfo),(r=this.validator)==null||r.validateToken(m).then(d=>{var b;(b=this.accessTokenButton)==null||b.setDisabled(d||!this.plugin.settings.globalTokenName)})})})}createTokenInfoElement(t){let n=t.createDiv({cls:"brat-token-info"});return n.createDiv({cls:"brat-token-status"}),n.createDiv({cls:"brat-token-details"}),n}};var oe=class{constructor(e){this.console=(e,...t)=>{console.log(`BRAT: ${e}`,...t)};this.themes={themeseCheckAndUpates:async e=>{await q(this.plugin,e)},themeInstallTheme:async e=>{let t=e.replace("https://github.com/","");await se(this.plugin,t,!0)},themesDelete:e=>{let t=e.replace("https://github.com/","");Ce(this.plugin,t)},grabCommmunityThemeCssFile:async(e,t=!1)=>await G(e,t,this.plugin.settings.debuggingMode),grabChecksumOfThemeCssFile:async(e,t=!1)=>await ee(e,t,this.plugin.settings.debuggingMode),grabLastCommitDateForFile:async(e,t)=>await It(e,t)};this.plugin=e}};var W=require("obsidian"),Zt=un(Qt());async function en(s,e,t=!1){if(s.settings.debuggingMode&&console.log(`BRAT: ${e}`),s.settings.loggingEnabled){if(!s.settings.loggingVerboseEnabled&&t)return;let n=`${s.settings.loggingPath}.md`,i=`[[${(0,W.moment)().format((0,Zt.getDailyNoteSettings)().format).toString()}]] ${(0,W.moment)().format("HH:mm")}`,o=W.Platform.isDesktop?window.require("os"):null,a=W.Platform.isDesktop?o==null?void 0:o.hostname():"MOBILE",c=`${i} ${a} ${e.replace(` +`," ")} +`,u=s.app.vault.getAbstractFileByPath(n);u?await s.app.vault.append(u,c):u=await s.app.vault.create(n,c)}}var ke=class extends tn.Plugin{constructor(){super(...arguments);this.APP_NAME="BRAT";this.APP_ID="obsidian42-brat";this.settings=je;this.betaPlugins=new ne(this);this.commands=new ie(this);this.bratApi=new oe(this);this.obsidianProtocolHandler=t=>{if(!t.plugin&&!t.theme){E(this,"Could not locate the repository from the URL.",10);return}for(let n of["plugin","theme"])if(t[n]){let i;switch(n){case"plugin":i=new U(this,this.betaPlugins,!0,!1,t[n],t.version?t.version:void 0),i.open();break;case"theme":i=new B(this),i.address=t[n],i.open();break}return}}}onload(){console.log(`loading ${this.APP_NAME}`),Bt(),this.addRibbonIcon("BratIcon","BRAT",()=>{this.commands.ribbonDisplayCommands()}),this.loadSettings().then(async()=>{await Ot(this.app,this.settings,()=>this.saveSettings()),this.app.workspace.onLayoutReady(()=>{this.addSettingTab(new Le(this.app,this)),this.registerObsidianProtocolHandler("brat",this.obsidianProtocolHandler),this.betaPlugins.checkIncompatiblePlugins(),this.settings.updateAtStartup&&setTimeout(()=>{this.betaPlugins.checkForPluginUpdatesAndInstallUpdates(!1)},6e4),this.settings.updateThemesAtStartup&&setTimeout(()=>{q(this,!1)},12e4),setTimeout(()=>{window.bratAPI=this.bratApi},500)})}).catch(t=>{console.error("Failed to load settings:",t)})}async log(t,n=!1){await en(this,t,n)}onunload(){console.log(`unloading ${this.APP_NAME}`)}async loadSettings(){this.settings=Object.assign({},je,await this.loadData())}async saveSettings(){await this.saveData(this.settings)}}; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/obsidian42-brat/manifest.json b/.obsidian/plugins/obsidian42-brat/manifest.json new file mode 100644 index 0000000..f67a1e5 --- /dev/null +++ b/.obsidian/plugins/obsidian42-brat/manifest.json @@ -0,0 +1,14 @@ +{ + "id": "obsidian42-brat", + "name": "BRAT", + "version": "2.0.4", + "minAppVersion": "1.11.4", + "description": "Easily install a beta version of a plugin for testing.", + "author": "TfTHacker", + "authorUrl": "https://github.com/TfTHacker/obsidian42-brat", + "helpUrl": "https://tfthacker.com/BRAT", + "isDesktopOnly": false, + "fundingUrl": { + "Visit my site": "https://tfthacker.com" + } +} diff --git a/.obsidian/plugins/obsidian42-brat/styles.css b/.obsidian/plugins/obsidian42-brat/styles.css new file mode 100644 index 0000000..b9a3684 --- /dev/null +++ b/.obsidian/plugins/obsidian42-brat/styles.css @@ -0,0 +1,152 @@ +.brat-modal .modal-button-container { + margin-top: 5px; +} + +.brat-modal .disabled-setting { + opacity: 0.5; +} + +.brat-modal .disabled-setting:hover { + cursor: not-allowed; +} + +/* Input validation styles */ +.brat-settings .valid-input, +.brat-modal .valid-repository { + border-color: var(--color-green); +} +.brat-settings .invalid-input, +.brat-modal .invalid-repository { + border-color: var(--color-red); +} +.brat-settings .validation-error, +.brat-modal .validation-error { + border-color: var(--color-orange); +} + +/* Version selector */ +.brat-version-selector { + width: 100%; + max-width: 400px; + justify-content: left; +} + +.brat-token-input { + min-width: 33%; +} + +/* Token info container styles */ +.brat-token-info { + margin-top: 8px; + font-size: 0.8em; + padding: 8px; + border-radius: 4px; + background-color: var(--background-secondary); +} + +/* Token status indicators */ +.brat-token-info.valid, +.brat-token-status.valid { + color: var(--color-green); +} + +.brat-token-info.invalid, +.brat-token-status.invalid { + color: var(--color-red); +} + +.brat-token-info.valid { + border-left: 3px solid var(--color-green); +} + +.brat-token-info.invalid { + border-left: 3px solid var(--color-red); +} + +/* Token details and status */ +.brat-token-status { + margin-bottom: 4px; +} + +.brat-token-details { + margin-top: 4px; + color: var(--text-muted); +} + +/* Token warnings */ +.brat-token-warning { + color: var(--color-orange); + margin-top: 4px; +} + +/* Token additional info */ +.brat-token-scopes, +.brat-token-rate { + color: var(--text-muted); + margin-top: 2px; +} + +/* Flex break utility */ +.brat-modal .break { + flex-basis: 100%; + height: 0; +} + +/* Validation status */ +.brat-modal .validation-status-error { + color: var(--text-error); +} + +.brat-modal .validation-status { + margin-top: 0.5em; + margin-bottom: 0.5em; + font-size: 0.8em; + text-align: left; +} + +.confirm-modal .ok-button { + margin-right: 10px; + margin-top: 20px; +} + +/* Hide filtered plugin items */ +.brat-plugin-item[hidden] { + display: none !important; +} + +/* Hide filtered theme items */ +.brat-theme-item[hidden] { + display: none !important; +} + +/* Filter and button layout */ +.brat-filter-and-button { + display: flex; + align-items: center; + justify-content: space-between; + gap: 10px; + margin: 0.75em 0; +} + +.brat-filter-input { + max-width: 300px; + padding: 4px 8px; + border: 1px solid var(--background-modifier-border); + border-radius: 4px; + background-color: var(--background-secondary); + color: var(--text-normal); +} + +.brat-filter-input:focus { + outline: none; + border-color: var(--interactive-accent); +} + +.brat-filter-and-button .setting-item { + border: none; + padding: 0; +} + +.brat-filter-and-button .setting-item-control { + justify-content: flex-end; +} diff --git a/.obsidian/plugins/periodic-notes/data.json b/.obsidian/plugins/periodic-notes/data.json new file mode 100644 index 0000000..90877c4 --- /dev/null +++ b/.obsidian/plugins/periodic-notes/data.json @@ -0,0 +1,33 @@ +{ + "showGettingStartedBanner": true, + "hasMigratedDailyNoteSettings": false, + "hasMigratedWeeklyNoteSettings": false, + "daily": { + "format": "YYYY-MM-DD", + "template": "", + "folder": "Logs/Daily", + "enabled": true + }, + "weekly": { + "format": "", + "template": "", + "folder": "Logs/Weekly", + "enabled": true + }, + "monthly": { + "format": "YYYY-MM", + "template": "", + "folder": "Logs/Monthly", + "enabled": true + }, + "quarterly": { + "format": "", + "template": "", + "folder": "" + }, + "yearly": { + "format": "", + "template": "", + "folder": "" + } +} \ No newline at end of file diff --git a/.obsidian/plugins/periodic-notes/main.js b/.obsidian/plugins/periodic-notes/main.js new file mode 100644 index 0000000..64325e6 --- /dev/null +++ b/.obsidian/plugins/periodic-notes/main.js @@ -0,0 +1,5561 @@ +'use strict'; + +var obsidian = require('obsidian'); + +function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + +var obsidian__default = /*#__PURE__*/_interopDefaultLegacy(obsidian); + +const DEFAULT_DAILY_NOTE_FORMAT = "YYYY-MM-DD"; +const DEFAULT_WEEKLY_NOTE_FORMAT = "gggg-[W]ww"; +const DEFAULT_MONTHLY_NOTE_FORMAT = "YYYY-MM"; +const DEFAULT_QUARTERLY_NOTE_FORMAT = "YYYY-[Q]Q"; +const DEFAULT_YEARLY_NOTE_FORMAT = "YYYY"; + +function shouldUsePeriodicNotesSettings(periodicity) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const periodicNotes = window.app.plugins.getPlugin("periodic-notes"); + return periodicNotes && periodicNotes.settings?.[periodicity]?.enabled; +} +/** + * Read the user settings for the `daily-notes` plugin + * to keep behavior of creating a new note in-sync. + */ +function getDailyNoteSettings() { + try { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const { internalPlugins, plugins } = window.app; + if (shouldUsePeriodicNotesSettings("daily")) { + const { format, folder, template } = plugins.getPlugin("periodic-notes")?.settings?.daily || {}; + return { + format: format || DEFAULT_DAILY_NOTE_FORMAT, + folder: folder?.trim() || "", + template: template?.trim() || "", + }; + } + const { folder, format, template } = internalPlugins.getPluginById("daily-notes")?.instance?.options || {}; + return { + format: format || DEFAULT_DAILY_NOTE_FORMAT, + folder: folder?.trim() || "", + template: template?.trim() || "", + }; + } + catch (err) { + console.info("No custom daily note settings found!", err); + } +} +/** + * Read the user settings for the `weekly-notes` plugin + * to keep behavior of creating a new note in-sync. + */ +function getWeeklyNoteSettings() { + try { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const pluginManager = window.app.plugins; + const calendarSettings = pluginManager.getPlugin("calendar")?.options; + const periodicNotesSettings = pluginManager.getPlugin("periodic-notes")?.settings?.weekly; + if (shouldUsePeriodicNotesSettings("weekly")) { + return { + format: periodicNotesSettings.format || DEFAULT_WEEKLY_NOTE_FORMAT, + folder: periodicNotesSettings.folder?.trim() || "", + template: periodicNotesSettings.template?.trim() || "", + }; + } + const settings = calendarSettings || {}; + return { + format: settings.weeklyNoteFormat || DEFAULT_WEEKLY_NOTE_FORMAT, + folder: settings.weeklyNoteFolder?.trim() || "", + template: settings.weeklyNoteTemplate?.trim() || "", + }; + } + catch (err) { + console.info("No custom weekly note settings found!", err); + } +} +/** + * Read the user settings for the `periodic-notes` plugin + * to keep behavior of creating a new note in-sync. + */ +function getMonthlyNoteSettings() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const pluginManager = window.app.plugins; + try { + const settings = (shouldUsePeriodicNotesSettings("monthly") && + pluginManager.getPlugin("periodic-notes")?.settings?.monthly) || + {}; + return { + format: settings.format || DEFAULT_MONTHLY_NOTE_FORMAT, + folder: settings.folder?.trim() || "", + template: settings.template?.trim() || "", + }; + } + catch (err) { + console.info("No custom monthly note settings found!", err); + } +} +/** + * Read the user settings for the `periodic-notes` plugin + * to keep behavior of creating a new note in-sync. + */ +function getQuarterlyNoteSettings() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const pluginManager = window.app.plugins; + try { + const settings = (shouldUsePeriodicNotesSettings("quarterly") && + pluginManager.getPlugin("periodic-notes")?.settings?.quarterly) || + {}; + return { + format: settings.format || DEFAULT_QUARTERLY_NOTE_FORMAT, + folder: settings.folder?.trim() || "", + template: settings.template?.trim() || "", + }; + } + catch (err) { + console.info("No custom quarterly note settings found!", err); + } +} +/** + * Read the user settings for the `periodic-notes` plugin + * to keep behavior of creating a new note in-sync. + */ +function getYearlyNoteSettings() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const pluginManager = window.app.plugins; + try { + const settings = (shouldUsePeriodicNotesSettings("yearly") && + pluginManager.getPlugin("periodic-notes")?.settings?.yearly) || + {}; + return { + format: settings.format || DEFAULT_YEARLY_NOTE_FORMAT, + folder: settings.folder?.trim() || "", + template: settings.template?.trim() || "", + }; + } + catch (err) { + console.info("No custom yearly note settings found!", err); + } +} + +// Credit: @creationix/path.js +function join(...partSegments) { + // Split the inputs into a list of path commands. + let parts = []; + for (let i = 0, l = partSegments.length; i < l; i++) { + parts = parts.concat(partSegments[i].split("/")); + } + // Interpret the path commands to get the new resolved path. + const newParts = []; + for (let i = 0, l = parts.length; i < l; i++) { + const part = parts[i]; + // Remove leading and trailing slashes + // Also remove "." segments + if (!part || part === ".") + continue; + // Push new path segments. + else + newParts.push(part); + } + // Preserve the initial slash if there was one. + if (parts[0] === "") + newParts.unshift(""); + // Turn back into a single string path. + return newParts.join("/"); +} +async function ensureFolderExists(path) { + const dirs = path.replace(/\\/g, "/").split("/"); + dirs.pop(); // remove basename + if (dirs.length) { + const dir = join(...dirs); + if (!window.app.vault.getAbstractFileByPath(dir)) { + await window.app.vault.createFolder(dir); + } + } +} +async function getNotePath(directory, filename) { + if (!filename.endsWith(".md")) { + filename += ".md"; + } + const path = obsidian__default['default'].normalizePath(join(directory, filename)); + await ensureFolderExists(path); + return path; +} +async function getTemplateInfo(template) { + const { metadataCache, vault } = window.app; + const templatePath = obsidian__default['default'].normalizePath(template); + if (templatePath === "/") { + return Promise.resolve(["", null]); + } + try { + const templateFile = metadataCache.getFirstLinkpathDest(templatePath, ""); + const contents = await vault.cachedRead(templateFile); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const IFoldInfo = window.app.foldManager.load(templateFile); + return [contents, IFoldInfo]; + } + catch (err) { + console.error(`Failed to read the daily note template '${templatePath}'`, err); + new obsidian__default['default'].Notice("Failed to read the daily note template"); + return ["", null]; + } +} + +/** + * dateUID is a way of weekly identifying daily/weekly/monthly notes. + * They are prefixed with the granularity to avoid ambiguity. + */ +function getDateUID(date, granularity = "day") { + const ts = date.clone().startOf(granularity).format(); + return `${granularity}-${ts}`; +} +function removeEscapedCharacters(format) { + return format.replace(/\[[^\]]*\]/g, ""); // remove everything within brackets +} +/** + * XXX: When parsing dates that contain both week numbers and months, + * Moment choses to ignore the week numbers. For the week dateUID, we + * want the opposite behavior. Strip the MMM from the format to patch. + */ +function isFormatAmbiguous(format, granularity) { + if (granularity === "week") { + const cleanFormat = removeEscapedCharacters(format); + return (/w{1,2}/i.test(cleanFormat) && + (/M{1,4}/.test(cleanFormat) || /D{1,4}/.test(cleanFormat))); + } + return false; +} +function getDateFromFile(file, granularity) { + return getDateFromFilename(file.basename, granularity); +} +function getDateFromFilename(filename, granularity) { + const getSettings = { + day: getDailyNoteSettings, + week: getWeeklyNoteSettings, + month: getMonthlyNoteSettings, + quarter: getQuarterlyNoteSettings, + year: getYearlyNoteSettings, + }; + const format = getSettings[granularity]().format.split("/").pop(); + const noteDate = window.moment(filename, format, true); + if (!noteDate.isValid()) { + return null; + } + if (isFormatAmbiguous(format, granularity)) { + if (granularity === "week") { + const cleanFormat = removeEscapedCharacters(format); + if (/w{1,2}/i.test(cleanFormat)) { + return window.moment(filename, + // If format contains week, remove day & month formatting + format.replace(/M{1,4}/g, "").replace(/D{1,4}/g, ""), false); + } + } + } + return noteDate; +} + +class DailyNotesFolderMissingError extends Error { +} +/** + * This function mimics the behavior of the daily-notes plugin + * so it will replace {{date}}, {{title}}, and {{time}} with the + * formatted timestamp. + * + * Note: it has an added bonus that it's not 'today' specific. + */ +async function createDailyNote(date) { + const app = window.app; + const { vault } = app; + const moment = window.moment; + const { template, format, folder } = getDailyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents + .replace(/{{\s*date\s*}}/gi, filename) + .replace(/{{\s*time\s*}}/gi, moment().format("HH:mm")) + .replace(/{{\s*title\s*}}/gi, filename) + .replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second"), + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }) + .replace(/{{\s*yesterday\s*}}/gi, date.clone().subtract(1, "day").format(format)) + .replace(/{{\s*tomorrow\s*}}/gi, date.clone().add(1, "d").format(format))); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } + catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian__default['default'].Notice("Unable to create new file."); + } +} +function getDailyNote(date, dailyNotes) { + return dailyNotes[getDateUID(date, "day")] ?? null; +} +function getAllDailyNotes() { + /** + * Find all daily notes in the daily note folder + */ + const { vault } = window.app; + const { folder } = getDailyNoteSettings(); + const dailyNotesFolder = vault.getAbstractFileByPath(obsidian__default['default'].normalizePath(folder)); + if (!dailyNotesFolder) { + throw new DailyNotesFolderMissingError("Failed to find daily notes folder"); + } + const dailyNotes = {}; + obsidian__default['default'].Vault.recurseChildren(dailyNotesFolder, (note) => { + if (note instanceof obsidian__default['default'].TFile) { + const date = getDateFromFile(note, "day"); + if (date) { + const dateString = getDateUID(date, "day"); + dailyNotes[dateString] = note; + } + } + }); + return dailyNotes; +} + +class WeeklyNotesFolderMissingError extends Error { +} +function getDaysOfWeek() { + const { moment } = window; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let weekStart = moment.localeData()._week.dow; + const daysOfWeek = [ + "sunday", + "monday", + "tuesday", + "wednesday", + "thursday", + "friday", + "saturday", + ]; + while (weekStart) { + daysOfWeek.push(daysOfWeek.shift()); + weekStart--; + } + return daysOfWeek; +} +function getDayOfWeekNumericalValue(dayOfWeekName) { + return getDaysOfWeek().indexOf(dayOfWeekName.toLowerCase()); +} +async function createWeeklyNote(date) { + const { vault } = window.app; + const { template, format, folder } = getWeeklyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents + .replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second"), + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }) + .replace(/{{\s*title\s*}}/gi, filename) + .replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")) + .replace(/{{\s*(sunday|monday|tuesday|wednesday|thursday|friday|saturday)\s*:(.*?)}}/gi, (_, dayOfWeek, momentFormat) => { + const day = getDayOfWeekNumericalValue(dayOfWeek); + return date.weekday(day).format(momentFormat.trim()); + })); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } + catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian__default['default'].Notice("Unable to create new file."); + } +} +function getWeeklyNote(date, weeklyNotes) { + return weeklyNotes[getDateUID(date, "week")] ?? null; +} +function getAllWeeklyNotes() { + const weeklyNotes = {}; + if (!appHasWeeklyNotesPluginLoaded()) { + return weeklyNotes; + } + const { vault } = window.app; + const { folder } = getWeeklyNoteSettings(); + const weeklyNotesFolder = vault.getAbstractFileByPath(obsidian__default['default'].normalizePath(folder)); + if (!weeklyNotesFolder) { + throw new WeeklyNotesFolderMissingError("Failed to find weekly notes folder"); + } + obsidian__default['default'].Vault.recurseChildren(weeklyNotesFolder, (note) => { + if (note instanceof obsidian__default['default'].TFile) { + const date = getDateFromFile(note, "week"); + if (date) { + const dateString = getDateUID(date, "week"); + weeklyNotes[dateString] = note; + } + } + }); + return weeklyNotes; +} + +class MonthlyNotesFolderMissingError extends Error { +} +/** + * This function mimics the behavior of the daily-notes plugin + * so it will replace {{date}}, {{title}}, and {{time}} with the + * formatted timestamp. + * + * Note: it has an added bonus that it's not 'today' specific. + */ +async function createMonthlyNote(date) { + const { vault } = window.app; + const { template, format, folder } = getMonthlyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents + .replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second"), + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }) + .replace(/{{\s*date\s*}}/gi, filename) + .replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")) + .replace(/{{\s*title\s*}}/gi, filename)); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } + catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian__default['default'].Notice("Unable to create new file."); + } +} +function getMonthlyNote(date, monthlyNotes) { + return monthlyNotes[getDateUID(date, "month")] ?? null; +} +function getAllMonthlyNotes() { + const monthlyNotes = {}; + if (!appHasMonthlyNotesPluginLoaded()) { + return monthlyNotes; + } + const { vault } = window.app; + const { folder } = getMonthlyNoteSettings(); + const monthlyNotesFolder = vault.getAbstractFileByPath(obsidian__default['default'].normalizePath(folder)); + if (!monthlyNotesFolder) { + throw new MonthlyNotesFolderMissingError("Failed to find monthly notes folder"); + } + obsidian__default['default'].Vault.recurseChildren(monthlyNotesFolder, (note) => { + if (note instanceof obsidian__default['default'].TFile) { + const date = getDateFromFile(note, "month"); + if (date) { + const dateString = getDateUID(date, "month"); + monthlyNotes[dateString] = note; + } + } + }); + return monthlyNotes; +} + +class QuarterlyNotesFolderMissingError extends Error { +} +/** + * This function mimics the behavior of the daily-notes plugin + * so it will replace {{date}}, {{title}}, and {{time}} with the + * formatted timestamp. + * + * Note: it has an added bonus that it's not 'today' specific. + */ +async function createQuarterlyNote(date) { + const { vault } = window.app; + const { template, format, folder } = getQuarterlyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents + .replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second"), + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }) + .replace(/{{\s*date\s*}}/gi, filename) + .replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")) + .replace(/{{\s*title\s*}}/gi, filename)); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } + catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian__default['default'].Notice("Unable to create new file."); + } +} +function getQuarterlyNote(date, quarterly) { + return quarterly[getDateUID(date, "quarter")] ?? null; +} +function getAllQuarterlyNotes() { + const quarterly = {}; + if (!appHasQuarterlyNotesPluginLoaded()) { + return quarterly; + } + const { vault } = window.app; + const { folder } = getQuarterlyNoteSettings(); + const quarterlyFolder = vault.getAbstractFileByPath(obsidian__default['default'].normalizePath(folder)); + if (!quarterlyFolder) { + throw new QuarterlyNotesFolderMissingError("Failed to find quarterly notes folder"); + } + obsidian__default['default'].Vault.recurseChildren(quarterlyFolder, (note) => { + if (note instanceof obsidian__default['default'].TFile) { + const date = getDateFromFile(note, "quarter"); + if (date) { + const dateString = getDateUID(date, "quarter"); + quarterly[dateString] = note; + } + } + }); + return quarterly; +} + +class YearlyNotesFolderMissingError extends Error { +} +/** + * This function mimics the behavior of the daily-notes plugin + * so it will replace {{date}}, {{title}}, and {{time}} with the + * formatted timestamp. + * + * Note: it has an added bonus that it's not 'today' specific. + */ +async function createYearlyNote(date) { + const { vault } = window.app; + const { template, format, folder } = getYearlyNoteSettings(); + const [templateContents, IFoldInfo] = await getTemplateInfo(template); + const filename = date.format(format); + const normalizedPath = await getNotePath(folder, filename); + try { + const createdFile = await vault.create(normalizedPath, templateContents + .replace(/{{\s*(date|time)\s*(([+-]\d+)([yqmwdhs]))?\s*(:.+?)?}}/gi, (_, _timeOrDate, calc, timeDelta, unit, momentFormat) => { + const now = window.moment(); + const currentDate = date.clone().set({ + hour: now.get("hour"), + minute: now.get("minute"), + second: now.get("second"), + }); + if (calc) { + currentDate.add(parseInt(timeDelta, 10), unit); + } + if (momentFormat) { + return currentDate.format(momentFormat.substring(1).trim()); + } + return currentDate.format(format); + }) + .replace(/{{\s*date\s*}}/gi, filename) + .replace(/{{\s*time\s*}}/gi, window.moment().format("HH:mm")) + .replace(/{{\s*title\s*}}/gi, filename)); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + window.app.foldManager.save(createdFile, IFoldInfo); + return createdFile; + } + catch (err) { + console.error(`Failed to create file: '${normalizedPath}'`, err); + new obsidian__default['default'].Notice("Unable to create new file."); + } +} +function getYearlyNote(date, yearlyNotes) { + return yearlyNotes[getDateUID(date, "year")] ?? null; +} +function getAllYearlyNotes() { + const yearlyNotes = {}; + if (!appHasYearlyNotesPluginLoaded()) { + return yearlyNotes; + } + const { vault } = window.app; + const { folder } = getYearlyNoteSettings(); + const yearlyNotesFolder = vault.getAbstractFileByPath(obsidian__default['default'].normalizePath(folder)); + if (!yearlyNotesFolder) { + throw new YearlyNotesFolderMissingError("Failed to find yearly notes folder"); + } + obsidian__default['default'].Vault.recurseChildren(yearlyNotesFolder, (note) => { + if (note instanceof obsidian__default['default'].TFile) { + const date = getDateFromFile(note, "year"); + if (date) { + const dateString = getDateUID(date, "year"); + yearlyNotes[dateString] = note; + } + } + }); + return yearlyNotes; +} + +function appHasDailyNotesPluginLoaded() { + const { app } = window; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const dailyNotesPlugin = app.internalPlugins.plugins["daily-notes"]; + if (dailyNotesPlugin && dailyNotesPlugin.enabled) { + return true; + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && periodicNotes.settings?.daily?.enabled; +} +/** + * XXX: "Weekly Notes" live in either the Calendar plugin or the periodic-notes plugin. + * Check both until the weekly notes feature is removed from the Calendar plugin. + */ +function appHasWeeklyNotesPluginLoaded() { + const { app } = window; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + if (app.plugins.getPlugin("calendar")) { + return true; + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && periodicNotes.settings?.weekly?.enabled; +} +function appHasMonthlyNotesPluginLoaded() { + const { app } = window; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && periodicNotes.settings?.monthly?.enabled; +} +function appHasQuarterlyNotesPluginLoaded() { + const { app } = window; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && periodicNotes.settings?.quarterly?.enabled; +} +function appHasYearlyNotesPluginLoaded() { + const { app } = window; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const periodicNotes = app.plugins.getPlugin("periodic-notes"); + return periodicNotes && periodicNotes.settings?.yearly?.enabled; +} + +var DEFAULT_DAILY_NOTE_FORMAT_1 = DEFAULT_DAILY_NOTE_FORMAT; +var DEFAULT_MONTHLY_NOTE_FORMAT_1 = DEFAULT_MONTHLY_NOTE_FORMAT; +var DEFAULT_QUARTERLY_NOTE_FORMAT_1 = DEFAULT_QUARTERLY_NOTE_FORMAT; +var DEFAULT_WEEKLY_NOTE_FORMAT_1 = DEFAULT_WEEKLY_NOTE_FORMAT; +var DEFAULT_YEARLY_NOTE_FORMAT_1 = DEFAULT_YEARLY_NOTE_FORMAT; +var appHasDailyNotesPluginLoaded_1 = appHasDailyNotesPluginLoaded; +var createDailyNote_1 = createDailyNote; +var createMonthlyNote_1 = createMonthlyNote; +var createQuarterlyNote_1 = createQuarterlyNote; +var createWeeklyNote_1 = createWeeklyNote; +var createYearlyNote_1 = createYearlyNote; +var getAllDailyNotes_1 = getAllDailyNotes; +var getAllMonthlyNotes_1 = getAllMonthlyNotes; +var getAllQuarterlyNotes_1 = getAllQuarterlyNotes; +var getAllWeeklyNotes_1 = getAllWeeklyNotes; +var getAllYearlyNotes_1 = getAllYearlyNotes; +var getDailyNote_1 = getDailyNote; +var getDateFromFile_1 = getDateFromFile; +var getMonthlyNote_1 = getMonthlyNote; +var getQuarterlyNote_1 = getQuarterlyNote; +var getWeeklyNote_1 = getWeeklyNote; +var getYearlyNote_1 = getYearlyNote; + +const wrapAround = (value, size) => { + return ((value % size) + size) % size; +}; +function orderedValues(unordered) { + return Object.keys(unordered) + .sort() + .reduce((acc, key) => { + acc.push(unordered[key]); + return acc; + }, []); +} +function getCalendarPlugin() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + return window.app.plugins.getPlugin("calendar"); +} +function getDailyNotesPlugin() { + var _a; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const { internalPlugins } = window.app; + return (_a = internalPlugins.getPluginById("daily-notes")) === null || _a === void 0 ? void 0 : _a.instance; +} +function capitalize(text) { + return text.charAt(0).toUpperCase() + text.slice(1); +} +function hasLegacyDailyNoteSettings() { + var _a; + if (!appHasDailyNotesPluginLoaded_1()) { + return false; + } + const options = (_a = getDailyNotesPlugin()) === null || _a === void 0 ? void 0 : _a.options; + return !!(options.format || options.folder || options.template); +} +function getLegacyDailyNoteSettings() { + var _a, _b; + const options = getDailyNotesPlugin().options || {}; + return { + format: options.format, + folder: (_a = options.folder) === null || _a === void 0 ? void 0 : _a.trim(), + template: (_b = options.template) === null || _b === void 0 ? void 0 : _b.trim(), + }; +} +function hasLegacyWeeklyNoteSettings() { + const calendarPlugin = getCalendarPlugin(); + if (!calendarPlugin) { + return false; + } + const options = calendarPlugin.options || {}; + return !!(options.weeklyNoteFormat || + options.weeklyNoteFolder || + options.weeklyNoteTemplate); +} +function getLegacyWeeklyNoteSettings() { + var _a, _b; + const options = getCalendarPlugin().options || {}; + return { + format: options.weeklyNoteFormat || "", + folder: ((_a = options.weeklyNoteFolder) === null || _a === void 0 ? void 0 : _a.trim()) || "", + template: ((_b = options.weeklyNoteTemplate) === null || _b === void 0 ? void 0 : _b.trim()) || "", + }; +} +function isMacOS() { + return navigator.appVersion.indexOf("Mac") !== -1; +} +function isMetaPressed(e) { + return isMacOS() ? e.metaKey : e.ctrlKey; +} + +const periodConfigs = { + daily: { + unitOfTime: "day", + relativeUnit: "today", + createNote: createDailyNote_1, + getNote: getDailyNote_1, + getAllNotes: getAllDailyNotes_1, + }, + weekly: { + unitOfTime: "week", + relativeUnit: "this week", + createNote: createWeeklyNote_1, + getNote: getWeeklyNote_1, + getAllNotes: getAllWeeklyNotes_1, + }, + monthly: { + unitOfTime: "month", + relativeUnit: "this month", + createNote: createMonthlyNote_1, + getNote: getMonthlyNote_1, + getAllNotes: getAllMonthlyNotes_1, + }, + quarterly: { + unitOfTime: "quarter", + relativeUnit: "this quarter", + createNote: createQuarterlyNote_1, + getNote: getQuarterlyNote_1, + getAllNotes: getAllQuarterlyNotes_1, + }, + yearly: { + unitOfTime: "year", + relativeUnit: "this year", + createNote: createYearlyNote_1, + getNote: getYearlyNote_1, + getAllNotes: getAllYearlyNotes_1, + }, +}; +async function openPeriodicNote(periodicity, date, inNewSplit) { + const config = periodConfigs[periodicity]; + const startOfPeriod = date.clone().startOf(config.unitOfTime); + let allNotes; + try { + allNotes = config.getAllNotes(); + } + catch (err) { + console.error(`failed to find your ${periodicity} notes folder`, err); + new obsidian.Notice(`Failed to find your ${periodicity} notes folder`); + return; + } + let periodicNote = config.getNote(startOfPeriod, allNotes); + if (!periodicNote) { + periodicNote = await config.createNote(startOfPeriod); + } + await openFile(periodicNote, inNewSplit); +} +function getActiveFile() { + const { workspace } = window.app; + const activeView = workspace.getActiveViewOfType(obsidian.MarkdownView); + return activeView === null || activeView === void 0 ? void 0 : activeView.file; +} +async function openFile(file, inNewSplit) { + const { workspace } = window.app; + const leaf = inNewSplit + ? workspace.splitActiveLeaf() + : workspace.getUnpinnedLeaf(); + await leaf.openFile(file, { active: true }); +} +async function openNextNote(periodicity) { + const config = periodConfigs[periodicity]; + const activeFile = getActiveFile(); + try { + const allNotes = orderedValues(config.getAllNotes()); + const activeNoteIndex = allNotes.findIndex((file) => file === activeFile); + const nextNote = allNotes[activeNoteIndex + 1]; + if (nextNote) { + await openFile(nextNote, false); + } + } + catch (err) { + console.error(`failed to find your ${periodicity} notes folder`, err); + new obsidian.Notice(`Failed to find your ${periodicity} notes folder`); + } +} +async function openPrevNote(periodicity) { + const config = periodConfigs[periodicity]; + const activeFile = getActiveFile(); + try { + const allNotes = orderedValues(config.getAllNotes()); + const activeNoteIndex = allNotes.findIndex((file) => file === activeFile); + const prevNote = allNotes[activeNoteIndex - 1]; + if (prevNote) { + await openFile(prevNote, false); + } + } + catch (err) { + console.error(`failed to find your ${periodicity} notes folder`, err); + new obsidian.Notice(`Failed to find your ${periodicity} notes folder`); + } +} +function getCommands(periodicity) { + const config = periodConfigs[periodicity]; + return [ + { + id: `open-${periodicity}-note`, + name: `Open ${periodicity} note`, + callback: () => openPeriodicNote(periodicity, window.moment(), false), + }, + { + id: `next-${periodicity}-note`, + name: `Open next ${periodicity} note`, + checkCallback: (checking) => { + if (checking) { + const activeFile = getActiveFile(); + return !!(activeFile && getDateFromFile_1(activeFile, config.unitOfTime)); + } + openNextNote(periodicity); + }, + }, + { + id: `prev-${periodicity}-note`, + name: `Open previous ${periodicity} note`, + checkCallback: (checking) => { + if (checking) { + const activeFile = getActiveFile(); + return !!(activeFile && getDateFromFile_1(activeFile, config.unitOfTime)); + } + openPrevNote(periodicity); + }, + }, + ]; +} + +const SETTINGS_UPDATED = "periodic-notes:settings-updated"; + +const calendarDayIcon = ` +<g> +<path d="M24.78 3C22.646 3 20.9 4.746 20.9 6.88V10.76H9.26C7.223 10.76 5.38 12.312 5.38 14.543V92.628C5.38 93.695 6.059 94.859 6.835 95.344C7.611 95.926 8.387 96.12 9.26 96.12H90.74C91.613 96.12 92.389 95.926 93.165 95.344C93.941 94.762 94.62 93.695 94.62 92.628V14.543C94.62 12.506 92.971 10.76 90.934 10.76H79.1V6.88C79.1 4.746 77.354 3 75.22 3H71.34C69.206 3 67.46 4.746 67.46 6.88V10.76H32.54V6.88C32.54 4.746 30.794 3 28.66 3H24.78ZM24.78 6.88H28.66V18.52H24.78V6.88ZM71.34 6.88H75.22V18.52H71.34V6.88ZM9.26 14.64H20.9V18.52C20.9 20.654 22.646 22.4 24.78 22.4H28.66C30.794 22.4 32.54 20.654 32.54 18.52V14.64H67.46V18.52C67.46 20.654 69.206 22.4 71.34 22.4H75.22C77.354 22.4 79.1 20.654 79.1 18.52V14.64H90.74V28.22H9.26V14.64ZM9.26 32.1H90.74V92.24H9.26V32.1Z" fill="currentColor" stroke-width="1" stroke="currentColor"/> +<path d="M55.2539 79.0024H49.3613V55.3319C49.3613 52.5068 49.4282 50.2668 49.5619 48.6119C49.1775 49.0131 48.701 49.4561 48.1327 49.9408C47.581 50.4256 45.7088 51.9635 42.516 54.5546L39.5571 50.8185L50.3393 42.3432H55.2539V79.0024Z" fill="currentColor"/> +</g> +`; +const calendarWeekIcon = ` +<g> +<path d="M24.78 3C22.646 3 20.9 4.746 20.9 6.88V10.76H9.26C7.223 10.76 5.38 12.312 5.38 14.543V92.628C5.38 93.695 6.059 94.859 6.835 95.344C7.611 95.926 8.387 96.12 9.26 96.12H90.74C91.613 96.12 92.389 95.926 93.165 95.344C93.941 94.762 94.62 93.695 94.62 92.628V14.543C94.62 12.506 92.971 10.76 90.934 10.76H79.1V6.88C79.1 4.746 77.354 3 75.22 3H71.34C69.206 3 67.46 4.746 67.46 6.88V10.76H32.54V6.88C32.54 4.746 30.794 3 28.66 3H24.78ZM24.78 6.88H28.66V18.52H24.78V6.88ZM71.34 6.88H75.22V18.52H71.34V6.88ZM9.26 14.64H20.9V18.52C20.9 20.654 22.646 22.4 24.78 22.4H28.66C30.794 22.4 32.54 20.654 32.54 18.52V14.64H67.46V18.52C67.46 20.654 69.206 22.4 71.34 22.4H75.22C77.354 22.4 79.1 20.654 79.1 18.52V14.64H90.74V28.22H9.26V14.64ZM9.26 32.1H90.74V92.24H9.26V32.1Z" fill="currentColor" stroke-width="1" stroke="currentColor"/> +<path d="M42.8799 78.3604L56.5679 48.6873H38.5698V43.7852H62.512V47.669L48.895 78.3604H42.8799Z" fill="currentColor"/> +</g> +`; +const calendarMonthIcon = ` +<g> +<path d="M24.78 3C22.646 3 20.9 4.746 20.9 6.88V10.76H9.26C7.223 10.76 5.38 12.312 5.38 14.543V92.628C5.38 93.695 6.059 94.859 6.835 95.344C7.611 95.926 8.387 96.12 9.26 96.12H90.74C91.613 96.12 92.389 95.926 93.165 95.344C93.941 94.762 94.62 93.695 94.62 92.628V14.543C94.62 12.506 92.971 10.76 90.934 10.76H79.1V6.88C79.1 4.746 77.354 3 75.22 3H71.34C69.206 3 67.46 4.746 67.46 6.88V10.76H32.54V6.88C32.54 4.746 30.794 3 28.66 3H24.78ZM24.78 6.88H28.66V18.52H24.78V6.88ZM71.34 6.88H75.22V18.52H71.34V6.88ZM9.26 14.64H20.9V18.52C20.9 20.654 22.646 22.4 24.78 22.4H28.66C30.794 22.4 32.54 20.654 32.54 18.52V14.64H67.46V18.52C67.46 20.654 69.206 22.4 71.34 22.4H75.22C77.354 22.4 79.1 20.654 79.1 18.52V14.64H90.74V28.22H9.26V14.64ZM9.26 32.1H90.74V92.24H9.26V32.1Z" fill="currentColor" stroke-width="1" stroke="currentColor"/> +<path d="M51.3075 52.8546C51.3075 54.9201 50.7057 56.6437 49.5022 58.0256C48.2986 59.3926 46.6046 60.3139 44.4204 60.7894V60.9677C47.0356 61.2946 48.9969 62.1118 50.3045 63.4194C51.6121 64.7122 52.2659 66.4358 52.2659 68.5904C52.2659 71.7257 51.1589 74.1477 48.9449 75.8565C46.7309 77.5504 43.5808 78.3974 39.4946 78.3974C35.8838 78.3974 32.8377 77.8105 30.3562 76.6366V71.9783C31.7381 72.6618 33.2018 73.1893 34.7471 73.5608C36.2924 73.9322 37.7784 74.118 39.2048 74.118C41.7309 74.118 43.618 73.6499 44.8661 72.7138C46.1143 71.7777 46.7384 70.3289 46.7384 68.3675C46.7384 66.629 46.0474 65.3511 44.6655 64.5339C43.2836 63.7166 41.1142 63.308 38.1573 63.308H35.3266V59.0509H38.2018C43.4025 59.0509 46.0028 57.2529 46.0028 53.657C46.0028 52.2603 45.5496 51.183 44.6432 50.4252C43.7368 49.6674 42.3995 49.2885 40.6313 49.2885C39.398 49.2885 38.2093 49.4668 37.0651 49.8234C35.921 50.1652 34.5688 50.8412 33.0086 51.8517L30.4454 48.1963C33.4321 45.9972 36.9017 44.8976 40.8542 44.8976C44.138 44.8976 46.7012 45.6034 48.5437 47.015C50.3863 48.4266 51.3075 50.3732 51.3075 52.8546Z" fill="currentColor"/> +<path d="M69.6199 77.9516H64.382V56.9112C64.382 54.4 64.4415 52.4089 64.5603 50.9378C64.2186 51.2944 63.7951 51.6882 63.2899 52.1191C62.7995 52.55 61.1353 53.9171 58.2972 56.2202L55.6672 52.8992L65.2513 45.3657H69.6199V77.9516Z" fill="currentColor"/> +</g> +`; +const calendarQuarterIcon = ` +<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M24.768 3C22.634 3 20.888 4.746 20.888 6.88V10.76H9.24804C7.21104 10.76 5.36804 12.312 5.36804 14.543V92.628C5.36804 93.695 6.04704 94.859 6.82304 95.344C7.59904 95.926 8.37504 96.12 9.24804 96.12H90.728C91.601 96.12 92.377 95.926 93.153 95.344C93.929 94.762 94.608 93.695 94.608 92.628V14.543C94.608 12.506 92.959 10.76 90.922 10.76H79.088V6.88C79.088 4.746 77.342 3 75.208 3H71.328C69.194 3 67.448 4.746 67.448 6.88V10.76H32.528V6.88C32.528 4.746 30.782 3 28.648 3H24.768ZM24.768 6.88H28.648V18.52H24.768V6.88ZM71.328 6.88H75.208V18.52H71.328V6.88ZM9.24804 14.64H20.888V18.52C20.888 20.654 22.634 22.4 24.768 22.4H28.648C30.782 22.4 32.528 20.654 32.528 18.52V14.64H67.448V18.52C67.448 20.654 69.194 22.4 71.328 22.4H75.208C77.342 22.4 79.088 20.654 79.088 18.52V14.64H90.728V28.22H9.24804V14.64ZM9.24804 32.1H90.728V92.24H9.24804V32.1Z" fill="currentColor" stroke="currentColor" stroke-width="0.17"/> +<path d="M63.2498 61.614C63.2498 65.5665 62.492 68.8949 60.9764 71.5993C59.4756 74.3036 57.2839 76.2056 54.4012 77.3052L62.2022 85.708H55.0253L48.8737 78.3973H48.0044C43.086 78.3973 39.3044 76.9411 36.6595 74.0287C34.0294 71.1015 32.7144 66.9484 32.7144 61.5694C32.7144 56.1904 34.0369 52.0596 36.6818 49.1769C39.3416 46.2943 43.1306 44.853 48.049 44.853C52.893 44.853 56.6375 46.3166 59.2824 49.2438C61.9273 52.171 63.2498 56.2944 63.2498 61.614ZM38.3757 61.614C38.3757 65.6259 39.1855 68.672 40.8052 70.7523C42.4248 72.8177 44.8246 73.8504 48.0044 73.8504C51.1694 73.8504 53.5543 72.8251 55.159 70.7746C56.7787 68.724 57.5885 65.6705 57.5885 61.614C57.5885 57.6169 56.7861 54.5856 55.1813 52.5202C53.5914 50.4548 51.214 49.4221 48.049 49.4221C44.8543 49.4221 42.4397 50.4548 40.8052 52.5202C39.1855 54.5856 38.3757 57.6169 38.3757 61.614Z" fill="currentColor"/> +</svg> +`; +const calendarYearIcon = ` +<svg width="100" height="100" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M24.768 3C22.634 3 20.888 4.746 20.888 6.88V10.76H9.24804C7.21104 10.76 5.36804 12.312 5.36804 14.543V92.628C5.36804 93.695 6.04704 94.859 6.82304 95.344C7.59904 95.926 8.37504 96.12 9.24804 96.12H90.728C91.601 96.12 92.377 95.926 93.153 95.344C93.929 94.762 94.608 93.695 94.608 92.628V14.543C94.608 12.506 92.959 10.76 90.922 10.76H79.088V6.88C79.088 4.746 77.342 3 75.208 3H71.328C69.194 3 67.448 4.746 67.448 6.88V10.76H32.528V6.88C32.528 4.746 30.782 3 28.648 3H24.768ZM24.768 6.88H28.648V18.52H24.768V6.88ZM71.328 6.88H75.208V18.52H71.328V6.88ZM9.24804 14.64H20.888V18.52C20.888 20.654 22.634 22.4 24.768 22.4H28.648C30.782 22.4 32.528 20.654 32.528 18.52V14.64H67.448V18.52C67.448 20.654 69.194 22.4 71.328 22.4H75.208C77.342 22.4 79.088 20.654 79.088 18.52V14.64H90.728V28.22H9.24804V14.64ZM9.24804 32.1H90.728V92.24H9.24804V32.1Z" fill="currentColor" stroke="currentColor" stroke-width="0.17"/> +<path d="M49.2303 60.2321L56.9421 45.3656H62.7371L51.8826 65.3139V77.9515H46.5333V65.4922L35.7234 45.3656H41.5184L49.2303 60.2321Z" fill="currentColor"/> +</svg> +`; + +function showFileMenu(app, settings, position) { + const contextMenu = new obsidian.Menu(app); + ["daily", "weekly", "monthly"] + .filter((periodicity) => settings[periodicity].enabled) + .forEach((periodicity) => { + const config = periodConfigs[periodicity]; + contextMenu.addItem((item) => item + .setTitle(`Open ${config.relativeUnit}`) + .setIcon(`calendar-${config.unitOfTime}`) + .onClick(() => { + openPeriodicNote(periodicity, window.moment(), false); + })); + }); + contextMenu.showAtPosition(position); +} + +function noop() { } +const identity = x => x; +function run(fn) { + return fn(); +} +function blank_object() { + return Object.create(null); +} +function run_all(fns) { + fns.forEach(run); +} +function is_function(thing) { + return typeof thing === 'function'; +} +function safe_not_equal(a, b) { + return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function'); +} +function is_empty(obj) { + return Object.keys(obj).length === 0; +} +function subscribe(store, ...callbacks) { + if (store == null) { + return noop; + } + const unsub = store.subscribe(...callbacks); + return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub; +} +function component_subscribe(component, store, callback) { + component.$$.on_destroy.push(subscribe(store, callback)); +} +function set_store_value(store, ret, value = ret) { + store.set(value); + return ret; +} + +const is_client = typeof window !== 'undefined'; +let now = is_client + ? () => window.performance.now() + : () => Date.now(); +let raf = is_client ? cb => requestAnimationFrame(cb) : noop; + +const tasks = new Set(); +function run_tasks(now) { + tasks.forEach(task => { + if (!task.c(now)) { + tasks.delete(task); + task.f(); + } + }); + if (tasks.size !== 0) + raf(run_tasks); +} +/** + * Creates a new task that runs on each raf frame + * until it returns a falsy value or is aborted + */ +function loop(callback) { + let task; + if (tasks.size === 0) + raf(run_tasks); + return { + promise: new Promise(fulfill => { + tasks.add(task = { c: callback, f: fulfill }); + }), + abort() { + tasks.delete(task); + } + }; +} + +function append(target, node) { + target.appendChild(node); +} +function insert(target, node, anchor) { + target.insertBefore(node, anchor || null); +} +function detach(node) { + node.parentNode.removeChild(node); +} +function destroy_each(iterations, detaching) { + for (let i = 0; i < iterations.length; i += 1) { + if (iterations[i]) + iterations[i].d(detaching); + } +} +function element(name) { + return document.createElement(name); +} +function svg_element(name) { + return document.createElementNS('http://www.w3.org/2000/svg', name); +} +function text(data) { + return document.createTextNode(data); +} +function space() { + return text(' '); +} +function empty() { + return text(''); +} +function listen(node, event, handler, options) { + node.addEventListener(event, handler, options); + return () => node.removeEventListener(event, handler, options); +} +function attr(node, attribute, value) { + if (value == null) + node.removeAttribute(attribute); + else if (node.getAttribute(attribute) !== value) + node.setAttribute(attribute, value); +} +function children(element) { + return Array.from(element.childNodes); +} +function set_data(text, data) { + data = '' + data; + if (text.wholeText !== data) + text.data = data; +} +function set_input_value(input, value) { + input.value = value == null ? '' : value; +} +function toggle_class(element, name, toggle) { + element.classList[toggle ? 'add' : 'remove'](name); +} +function custom_event(type, detail) { + const e = document.createEvent('CustomEvent'); + e.initCustomEvent(type, false, false, detail); + return e; +} + +const active_docs = new Set(); +let active = 0; +// https://github.com/darkskyapp/string-hash/blob/master/index.js +function hash$2(str) { + let hash = 5381; + let i = str.length; + while (i--) + hash = ((hash << 5) - hash) ^ str.charCodeAt(i); + return hash >>> 0; +} +function create_rule(node, a, b, duration, delay, ease, fn, uid = 0) { + const step = 16.666 / duration; + let keyframes = '{\n'; + for (let p = 0; p <= 1; p += step) { + const t = a + (b - a) * ease(p); + keyframes += p * 100 + `%{${fn(t, 1 - t)}}\n`; + } + const rule = keyframes + `100% {${fn(b, 1 - b)}}\n}`; + const name = `__svelte_${hash$2(rule)}_${uid}`; + const doc = node.ownerDocument; + active_docs.add(doc); + const stylesheet = doc.__svelte_stylesheet || (doc.__svelte_stylesheet = doc.head.appendChild(element('style')).sheet); + const current_rules = doc.__svelte_rules || (doc.__svelte_rules = {}); + if (!current_rules[name]) { + current_rules[name] = true; + stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length); + } + const animation = node.style.animation || ''; + node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`; + active += 1; + return name; +} +function delete_rule(node, name) { + const previous = (node.style.animation || '').split(', '); + const next = previous.filter(name + ? anim => anim.indexOf(name) < 0 // remove specific animation + : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations + ); + const deleted = previous.length - next.length; + if (deleted) { + node.style.animation = next.join(', '); + active -= deleted; + if (!active) + clear_rules(); + } +} +function clear_rules() { + raf(() => { + if (active) + return; + active_docs.forEach(doc => { + const stylesheet = doc.__svelte_stylesheet; + let i = stylesheet.cssRules.length; + while (i--) + stylesheet.deleteRule(i); + doc.__svelte_rules = {}; + }); + active_docs.clear(); + }); +} + +let current_component; +function set_current_component(component) { + current_component = component; +} +function get_current_component() { + if (!current_component) + throw new Error('Function called outside component initialization'); + return current_component; +} +function onMount(fn) { + get_current_component().$$.on_mount.push(fn); +} +function onDestroy(fn) { + get_current_component().$$.on_destroy.push(fn); +} + +const dirty_components = []; +const binding_callbacks = []; +const render_callbacks = []; +const flush_callbacks = []; +const resolved_promise = Promise.resolve(); +let update_scheduled = false; +function schedule_update() { + if (!update_scheduled) { + update_scheduled = true; + resolved_promise.then(flush); + } +} +function add_render_callback(fn) { + render_callbacks.push(fn); +} +let flushing = false; +const seen_callbacks = new Set(); +function flush() { + if (flushing) + return; + flushing = true; + do { + // first, call beforeUpdate functions + // and update components + for (let i = 0; i < dirty_components.length; i += 1) { + const component = dirty_components[i]; + set_current_component(component); + update(component.$$); + } + set_current_component(null); + dirty_components.length = 0; + while (binding_callbacks.length) + binding_callbacks.pop()(); + // then, once components are updated, call + // afterUpdate functions. This may cause + // subsequent updates... + for (let i = 0; i < render_callbacks.length; i += 1) { + const callback = render_callbacks[i]; + if (!seen_callbacks.has(callback)) { + // ...so guard against infinite loops + seen_callbacks.add(callback); + callback(); + } + } + render_callbacks.length = 0; + } while (dirty_components.length); + while (flush_callbacks.length) { + flush_callbacks.pop()(); + } + update_scheduled = false; + flushing = false; + seen_callbacks.clear(); +} +function update($$) { + if ($$.fragment !== null) { + $$.update(); + run_all($$.before_update); + const dirty = $$.dirty; + $$.dirty = [-1]; + $$.fragment && $$.fragment.p($$.ctx, dirty); + $$.after_update.forEach(add_render_callback); + } +} + +let promise; +function wait() { + if (!promise) { + promise = Promise.resolve(); + promise.then(() => { + promise = null; + }); + } + return promise; +} +function dispatch(node, direction, kind) { + node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`)); +} +const outroing = new Set(); +let outros; +function group_outros() { + outros = { + r: 0, + c: [], + p: outros // parent group + }; +} +function check_outros() { + if (!outros.r) { + run_all(outros.c); + } + outros = outros.p; +} +function transition_in(block, local) { + if (block && block.i) { + outroing.delete(block); + block.i(local); + } +} +function transition_out(block, local, detach, callback) { + if (block && block.o) { + if (outroing.has(block)) + return; + outroing.add(block); + outros.c.push(() => { + outroing.delete(block); + if (callback) { + if (detach) + block.d(1); + callback(); + } + }); + block.o(local); + } +} +const null_transition = { duration: 0 }; +function create_in_transition(node, fn, params) { + let config = fn(node, params); + let running = false; + let animation_name; + let task; + let uid = 0; + function cleanup() { + if (animation_name) + delete_rule(node, animation_name); + } + function go() { + const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition; + if (css) + animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++); + tick(0, 1); + const start_time = now() + delay; + const end_time = start_time + duration; + if (task) + task.abort(); + running = true; + add_render_callback(() => dispatch(node, true, 'start')); + task = loop(now => { + if (running) { + if (now >= end_time) { + tick(1, 0); + dispatch(node, true, 'end'); + cleanup(); + return running = false; + } + if (now >= start_time) { + const t = easing((now - start_time) / duration); + tick(t, 1 - t); + } + } + return running; + }); + } + let started = false; + return { + start() { + if (started) + return; + delete_rule(node); + if (is_function(config)) { + config = config(); + wait().then(go); + } + else { + go(); + } + }, + invalidate() { + started = false; + }, + end() { + if (running) { + cleanup(); + running = false; + } + } + }; +} +function create_out_transition(node, fn, params) { + let config = fn(node, params); + let running = true; + let animation_name; + const group = outros; + group.r += 1; + function go() { + const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition; + if (css) + animation_name = create_rule(node, 1, 0, duration, delay, easing, css); + const start_time = now() + delay; + const end_time = start_time + duration; + add_render_callback(() => dispatch(node, false, 'start')); + loop(now => { + if (running) { + if (now >= end_time) { + tick(0, 1); + dispatch(node, false, 'end'); + if (!--group.r) { + // this will result in `end()` being called, + // so we don't need to clean up here + run_all(group.c); + } + return false; + } + if (now >= start_time) { + const t = easing((now - start_time) / duration); + tick(1 - t, t); + } + } + return running; + }); + } + if (is_function(config)) { + wait().then(() => { + // @ts-ignore + config = config(); + go(); + }); + } + else { + go(); + } + return { + end(reset) { + if (reset && config.tick) { + config.tick(1, 0); + } + if (running) { + if (animation_name) + delete_rule(node, animation_name); + running = false; + } + } + }; +} +function create_component(block) { + block && block.c(); +} +function mount_component(component, target, anchor, customElement) { + const { fragment, on_mount, on_destroy, after_update } = component.$$; + fragment && fragment.m(target, anchor); + if (!customElement) { + // onMount happens before the initial afterUpdate + add_render_callback(() => { + const new_on_destroy = on_mount.map(run).filter(is_function); + if (on_destroy) { + on_destroy.push(...new_on_destroy); + } + else { + // Edge case - component was destroyed immediately, + // most likely as a result of a binding initialising + run_all(new_on_destroy); + } + component.$$.on_mount = []; + }); + } + after_update.forEach(add_render_callback); +} +function destroy_component(component, detaching) { + const $$ = component.$$; + if ($$.fragment !== null) { + run_all($$.on_destroy); + $$.fragment && $$.fragment.d(detaching); + // TODO null out other refs, including component.$$ (but need to + // preserve final state?) + $$.on_destroy = $$.fragment = null; + $$.ctx = []; + } +} +function make_dirty(component, i) { + if (component.$$.dirty[0] === -1) { + dirty_components.push(component); + schedule_update(); + component.$$.dirty.fill(0); + } + component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31)); +} +function init(component, options, instance, create_fragment, not_equal, props, dirty = [-1]) { + const parent_component = current_component; + set_current_component(component); + const $$ = component.$$ = { + fragment: null, + ctx: null, + // state + props, + update: noop, + not_equal, + bound: blank_object(), + // lifecycle + on_mount: [], + on_destroy: [], + on_disconnect: [], + before_update: [], + after_update: [], + context: new Map(parent_component ? parent_component.$$.context : []), + // everything else + callbacks: blank_object(), + dirty, + skip_bound: false + }; + let ready = false; + $$.ctx = instance + ? instance(component, options.props || {}, (i, ret, ...rest) => { + const value = rest.length ? rest[0] : ret; + if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) { + if (!$$.skip_bound && $$.bound[i]) + $$.bound[i](value); + if (ready) + make_dirty(component, i); + } + return ret; + }) + : []; + $$.update(); + ready = true; + run_all($$.before_update); + // `false` as a special case of no DOM component + $$.fragment = create_fragment ? create_fragment($$.ctx) : false; + if (options.target) { + if (options.hydrate) { + const nodes = children(options.target); + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.l(nodes); + nodes.forEach(detach); + } + else { + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + $$.fragment && $$.fragment.c(); + } + if (options.intro) + transition_in(component.$$.fragment); + mount_component(component, options.target, options.anchor, options.customElement); + flush(); + } + set_current_component(parent_component); +} +/** + * Base class for Svelte components. Used when dev=false. + */ +class SvelteComponent { + $destroy() { + destroy_component(this, 1); + this.$destroy = noop; + } + $on(type, callback) { + const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = [])); + callbacks.push(callback); + return () => { + const index = callbacks.indexOf(callback); + if (index !== -1) + callbacks.splice(index, 1); + }; + } + $set($$props) { + if (this.$$set && !is_empty($$props)) { + this.$$.skip_bound = true; + this.$$set($$props); + this.$$.skip_bound = false; + } + } +} + +const subscriber_queue = []; +/** + * Create a `Writable` store that allows both updating and reading by subscription. + * @param {*=}value initial value + * @param {StartStopNotifier=}start start and stop notifications for subscriptions + */ +function writable(value, start = noop) { + let stop; + const subscribers = []; + function set(new_value) { + if (safe_not_equal(value, new_value)) { + value = new_value; + if (stop) { // store is ready + const run_queue = !subscriber_queue.length; + for (let i = 0; i < subscribers.length; i += 1) { + const s = subscribers[i]; + s[1](); + subscriber_queue.push(s, value); + } + if (run_queue) { + for (let i = 0; i < subscriber_queue.length; i += 2) { + subscriber_queue[i][0](subscriber_queue[i + 1]); + } + subscriber_queue.length = 0; + } + } + } + } + function update(fn) { + set(fn(value)); + } + function subscribe(run, invalidate = noop) { + const subscriber = [run, invalidate]; + subscribers.push(subscriber); + if (subscribers.length === 1) { + stop = start(set) || noop; + } + run(value); + return () => { + const index = subscribers.indexOf(subscriber); + if (index !== -1) { + subscribers.splice(index, 1); + } + if (subscribers.length === 0) { + stop(); + stop = null; + } + }; + } + return { set, update, subscribe }; +} + +function cubicOut(t) { + const f = t - 1.0; + return f * f * f + 1.0; +} + +function slide(node, { delay = 0, duration = 400, easing = cubicOut } = {}) { + const style = getComputedStyle(node); + const opacity = +style.opacity; + const height = parseFloat(style.height); + const padding_top = parseFloat(style.paddingTop); + const padding_bottom = parseFloat(style.paddingBottom); + const margin_top = parseFloat(style.marginTop); + const margin_bottom = parseFloat(style.marginBottom); + const border_top_width = parseFloat(style.borderTopWidth); + const border_bottom_width = parseFloat(style.borderBottomWidth); + return { + delay, + duration, + easing, + css: t => 'overflow: hidden;' + + `opacity: ${Math.min(t * 20, 1) * opacity};` + + `height: ${t * height}px;` + + `padding-top: ${t * padding_top}px;` + + `padding-bottom: ${t * padding_bottom}px;` + + `margin-top: ${t * margin_top}px;` + + `margin-bottom: ${t * margin_bottom}px;` + + `border-top-width: ${t * border_top_width}px;` + + `border-bottom-width: ${t * border_bottom_width}px;` + }; +} + +/* src/settings/Checkmark.svelte generated by Svelte v3.35.0 */ + +function add_css$1() { + var style = element("style"); + style.id = "svelte-1q3q9tf-style"; + style.textContent = ".check.svelte-1q3q9tf{margin-left:6px;width:12px;height:12px}"; + append(document.head, style); +} + +function create_fragment$5(ctx) { + let svg; + let path; + + return { + c() { + svg = svg_element("svg"); + path = svg_element("path"); + attr(path, "fill", "currentColor"); + attr(path, "d", "M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z"); + attr(svg, "aria-hidden", "true"); + attr(svg, "focusable", "false"); + attr(svg, "class", "check svelte-1q3q9tf"); + attr(svg, "data-icon", "check"); + attr(svg, "role", "img"); + attr(svg, "xmlns", "http://www.w3.org/2000/svg"); + attr(svg, "viewBox", "0 0 512 512"); + }, + m(target, anchor) { + insert(target, svg, anchor); + append(svg, path); + }, + p: noop, + i: noop, + o: noop, + d(detaching) { + if (detaching) detach(svg); + } + }; +} + +class Checkmark extends SvelteComponent { + constructor(options) { + super(); + if (!document.getElementById("svelte-1q3q9tf-style")) add_css$1(); + init(this, options, null, create_fragment$5, safe_not_equal, {}); + } +} + +/* src/settings/GettingStartedBanner.svelte generated by Svelte v3.35.0 */ + +function add_css() { + var style = element("style"); + style.id = "svelte-1alo0m9-style"; + style.textContent = "button.svelte-1alo0m9{display:flex;align-items:center}"; + append(document.head, style); +} + +// (20:2) {#if hasDailyNoteSettings} +function create_if_block_3(ctx) { + let div2; + let div0; + let h4; + let t1; + let t2; + let div1; + let current_block_type_index; + let if_block1; + let current; + + function select_block_type(ctx, dirty) { + if (/*$settings*/ ctx[5].hasMigratedDailyNoteSettings) return create_if_block_5; + return create_else_block_2; + } + + let current_block_type = select_block_type(ctx); + let if_block0 = current_block_type(ctx); + const if_block_creators = [create_if_block_4, create_else_block_1]; + const if_blocks = []; + + function select_block_type_1(ctx, dirty) { + if (/*$settings*/ ctx[5].hasMigratedDailyNoteSettings) return 0; + return 1; + } + + current_block_type_index = select_block_type_1(ctx); + if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + + return { + c() { + div2 = element("div"); + div0 = element("div"); + h4 = element("h4"); + h4.textContent = "Daily Notes plugin is enabled"; + t1 = space(); + if_block0.c(); + t2 = space(); + div1 = element("div"); + if_block1.c(); + attr(div0, "class", "setting-item-info"); + attr(div1, "class", "setting-item-control"); + attr(div2, "class", "setting-item"); + }, + m(target, anchor) { + insert(target, div2, anchor); + append(div2, div0); + append(div0, h4); + append(div0, t1); + if_block0.m(div0, null); + append(div2, t2); + append(div2, div1); + if_blocks[current_block_type_index].m(div1, null); + current = true; + }, + p(ctx, dirty) { + if (current_block_type !== (current_block_type = select_block_type(ctx))) { + if_block0.d(1); + if_block0 = current_block_type(ctx); + + if (if_block0) { + if_block0.c(); + if_block0.m(div0, null); + } + } + + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type_1(ctx); + + if (current_block_type_index === previous_block_index) { + if_blocks[current_block_type_index].p(ctx, dirty); + } else { + group_outros(); + + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + + check_outros(); + if_block1 = if_blocks[current_block_type_index]; + + if (!if_block1) { + if_block1 = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + if_block1.c(); + } else { + if_block1.p(ctx, dirty); + } + + transition_in(if_block1, 1); + if_block1.m(div1, null); + } + }, + i(local) { + if (current) return; + transition_in(if_block1); + current = true; + }, + o(local) { + transition_out(if_block1); + current = false; + }, + d(detaching) { + if (detaching) detach(div2); + if_block0.d(); + if_blocks[current_block_type_index].d(); + } + }; +} + +// (31:8) {:else} +function create_else_block_2(ctx) { + let p; + + return { + c() { + p = element("p"); + p.textContent = "You are currently using the core Daily Notes plugin. You can migrate\n those settings over to Periodic Notes to enjoy the same\n functionality as well as some notable improvements"; + attr(p, "class", "setting-item-description"); + }, + m(target, anchor) { + insert(target, p, anchor); + }, + d(detaching) { + if (detaching) detach(p); + } + }; +} + +// (24:8) {#if $settings.hasMigratedDailyNoteSettings} +function create_if_block_5(ctx) { + let p; + + return { + c() { + p = element("p"); + + p.innerHTML = `You have successfully migrated your daily notes settings. You can + now disable the Daily Notes core plugin to avoid any confusion.<br/>If you have an custom hotkeys for daily notes, make sure to update + them to use the new "Periodic Notes" commands.`; + + attr(p, "class", "setting-item-description"); + }, + m(target, anchor) { + insert(target, p, anchor); + }, + d(detaching) { + if (detaching) detach(p); + } + }; +} + +// (42:8) {:else} +function create_else_block_1(ctx) { + let button; + let mounted; + let dispose; + + return { + c() { + button = element("button"); + button.textContent = "Migrate"; + attr(button, "class", "mod-cta svelte-1alo0m9"); + }, + m(target, anchor) { + insert(target, button, anchor); + + if (!mounted) { + dispose = listen(button, "click", function () { + if (is_function(/*migrateDailyNoteSettings*/ ctx[2])) /*migrateDailyNoteSettings*/ ctx[2].apply(this, arguments); + }); + + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) detach(button); + mounted = false; + dispose(); + } + }; +} + +// (40:8) {#if $settings.hasMigratedDailyNoteSettings} +function create_if_block_4(ctx) { + let button; + let t; + let checkmark; + let current; + checkmark = new Checkmark({}); + + return { + c() { + button = element("button"); + t = text("Migrated "); + create_component(checkmark.$$.fragment); + button.disabled = true; + attr(button, "class", "svelte-1alo0m9"); + }, + m(target, anchor) { + insert(target, button, anchor); + append(button, t); + mount_component(checkmark, button, null); + current = true; + }, + p: noop, + i(local) { + if (current) return; + transition_in(checkmark.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(checkmark.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) detach(button); + destroy_component(checkmark); + } + }; +} + +// (51:2) {#if hasWeeklyNoteSettings} +function create_if_block_1$2(ctx) { + let div2; + let div0; + let t3; + let div1; + let current_block_type_index; + let if_block; + let current; + const if_block_creators = [create_if_block_2, create_else_block]; + const if_blocks = []; + + function select_block_type_2(ctx, dirty) { + if (/*$settings*/ ctx[5].hasMigratedWeeklyNoteSettings) return 0; + return 1; + } + + current_block_type_index = select_block_type_2(ctx); + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + + return { + c() { + div2 = element("div"); + div0 = element("div"); + + div0.innerHTML = `<h4>Weekly Note settings migrated</h4> + <p class="setting-item-description">Your existing weekly-note settings from the Calendar plugin have been + migrated over automatically. The functionality will be removed from + the Calendar plugin in the future.</p>`; + + t3 = space(); + div1 = element("div"); + if_block.c(); + attr(div0, "class", "setting-item-info"); + attr(div1, "class", "setting-item-control"); + attr(div2, "class", "setting-item"); + }, + m(target, anchor) { + insert(target, div2, anchor); + append(div2, div0); + append(div2, t3); + append(div2, div1); + if_blocks[current_block_type_index].m(div1, null); + current = true; + }, + p(ctx, dirty) { + let previous_block_index = current_block_type_index; + current_block_type_index = select_block_type_2(ctx); + + if (current_block_type_index !== previous_block_index) { + group_outros(); + + transition_out(if_blocks[previous_block_index], 1, 1, () => { + if_blocks[previous_block_index] = null; + }); + + check_outros(); + if_block = if_blocks[current_block_type_index]; + + if (!if_block) { + if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx); + if_block.c(); + } + + transition_in(if_block, 1); + if_block.m(div1, null); + } + }, + i(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) detach(div2); + if_blocks[current_block_type_index].d(); + } + }; +} + +// (67:8) {:else} +function create_else_block(ctx) { + let button; + + return { + c() { + button = element("button"); + button.textContent = "Migrate"; + attr(button, "class", "mod-cta svelte-1alo0m9"); + }, + m(target, anchor) { + insert(target, button, anchor); + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) detach(button); + } + }; +} + +// (62:8) {#if $settings.hasMigratedWeeklyNoteSettings} +function create_if_block_2(ctx) { + let button; + let t; + let checkmark; + let current; + checkmark = new Checkmark({}); + + return { + c() { + button = element("button"); + t = text("Migrated\n "); + create_component(checkmark.$$.fragment); + button.disabled = true; + attr(button, "class", "svelte-1alo0m9"); + }, + m(target, anchor) { + insert(target, button, anchor); + append(button, t); + mount_component(checkmark, button, null); + current = true; + }, + i(local) { + if (current) return; + transition_in(checkmark.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(checkmark.$$.fragment, local); + current = false; + }, + d(detaching) { + if (detaching) detach(button); + destroy_component(checkmark); + } + }; +} + +// (74:2) {#if !hasDailyNoteSettings && !hasWeeklyNoteSettings} +function create_if_block$4(ctx) { + let p; + + return { + c() { + p = element("p"); + p.textContent = "With this plugin, you can quickly create and navigate to daily, weekly,\n and monthly notes. Enable them below to get started."; + }, + m(target, anchor) { + insert(target, p, anchor); + }, + d(detaching) { + if (detaching) detach(p); + } + }; +} + +function create_fragment$4(ctx) { + let div; + let h3; + let t1; + let t2; + let t3; + let t4; + let button; + let div_outro; + let current; + let mounted; + let dispose; + let if_block0 = /*hasDailyNoteSettings*/ ctx[3] && create_if_block_3(ctx); + let if_block1 = /*hasWeeklyNoteSettings*/ ctx[4] && create_if_block_1$2(ctx); + let if_block2 = !/*hasDailyNoteSettings*/ ctx[3] && !/*hasWeeklyNoteSettings*/ ctx[4] && create_if_block$4(); + + return { + c() { + div = element("div"); + h3 = element("h3"); + h3.textContent = "Getting Started"; + t1 = space(); + if (if_block0) if_block0.c(); + t2 = space(); + if (if_block1) if_block1.c(); + t3 = space(); + if (if_block2) if_block2.c(); + t4 = space(); + button = element("button"); + button.textContent = "Dismiss"; + attr(button, "class", "svelte-1alo0m9"); + attr(div, "class", "settings-banner"); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, h3); + append(div, t1); + if (if_block0) if_block0.m(div, null); + append(div, t2); + if (if_block1) if_block1.m(div, null); + append(div, t3); + if (if_block2) if_block2.m(div, null); + append(div, t4); + append(div, button); + current = true; + + if (!mounted) { + dispose = listen(button, "click", function () { + if (is_function(/*handleTeardown*/ ctx[1])) /*handleTeardown*/ ctx[1].apply(this, arguments); + }); + + mounted = true; + } + }, + p(new_ctx, [dirty]) { + ctx = new_ctx; + + if (/*hasDailyNoteSettings*/ ctx[3]) { + if (if_block0) { + if_block0.p(ctx, dirty); + + if (dirty & /*hasDailyNoteSettings*/ 8) { + transition_in(if_block0, 1); + } + } else { + if_block0 = create_if_block_3(ctx); + if_block0.c(); + transition_in(if_block0, 1); + if_block0.m(div, t2); + } + } else if (if_block0) { + group_outros(); + + transition_out(if_block0, 1, 1, () => { + if_block0 = null; + }); + + check_outros(); + } + + if (/*hasWeeklyNoteSettings*/ ctx[4]) { + if (if_block1) { + if_block1.p(ctx, dirty); + + if (dirty & /*hasWeeklyNoteSettings*/ 16) { + transition_in(if_block1, 1); + } + } else { + if_block1 = create_if_block_1$2(ctx); + if_block1.c(); + transition_in(if_block1, 1); + if_block1.m(div, t3); + } + } else if (if_block1) { + group_outros(); + + transition_out(if_block1, 1, 1, () => { + if_block1 = null; + }); + + check_outros(); + } + + if (!/*hasDailyNoteSettings*/ ctx[3] && !/*hasWeeklyNoteSettings*/ ctx[4]) { + if (if_block2) ; else { + if_block2 = create_if_block$4(); + if_block2.c(); + if_block2.m(div, t4); + } + } else if (if_block2) { + if_block2.d(1); + if_block2 = null; + } + }, + i(local) { + if (current) return; + transition_in(if_block0); + transition_in(if_block1); + if (div_outro) div_outro.end(1); + current = true; + }, + o(local) { + transition_out(if_block0); + transition_out(if_block1); + div_outro = create_out_transition(div, slide, {}); + current = false; + }, + d(detaching) { + if (detaching) detach(div); + if (if_block0) if_block0.d(); + if (if_block1) if_block1.d(); + if (if_block2) if_block2.d(); + if (detaching && div_outro) div_outro.end(); + mounted = false; + dispose(); + } + }; +} + +function instance$4($$self, $$props, $$invalidate) { + let $settings, + $$unsubscribe_settings = noop, + $$subscribe_settings = () => ($$unsubscribe_settings(), $$unsubscribe_settings = subscribe(settings, $$value => $$invalidate(5, $settings = $$value)), settings); + + $$self.$$.on_destroy.push(() => $$unsubscribe_settings()); + + + let { settings } = $$props; + $$subscribe_settings(); + let { handleTeardown } = $$props; + let { migrateDailyNoteSettings } = $$props; + let hasDailyNoteSettings; + let hasWeeklyNoteSettings; + + $$self.$$set = $$props => { + if ("settings" in $$props) $$subscribe_settings($$invalidate(0, settings = $$props.settings)); + if ("handleTeardown" in $$props) $$invalidate(1, handleTeardown = $$props.handleTeardown); + if ("migrateDailyNoteSettings" in $$props) $$invalidate(2, migrateDailyNoteSettings = $$props.migrateDailyNoteSettings); + }; + + { + $$invalidate(3, hasDailyNoteSettings = hasLegacyDailyNoteSettings()); + $$invalidate(4, hasWeeklyNoteSettings = hasLegacyWeeklyNoteSettings()); + } + + return [ + settings, + handleTeardown, + migrateDailyNoteSettings, + hasDailyNoteSettings, + hasWeeklyNoteSettings, + $settings + ]; +} + +class GettingStartedBanner extends SvelteComponent { + constructor(options) { + super(); + if (!document.getElementById("svelte-1alo0m9-style")) add_css(); + + init(this, options, instance$4, create_fragment$4, safe_not_equal, { + settings: 0, + handleTeardown: 1, + migrateDailyNoteSettings: 2 + }); + } +} + +function getBasename(format) { + const isTemplateNested = format.indexOf("/") !== -1; + return isTemplateNested ? format.split("/").pop() : format; +} +function isValidFilename(filename) { + const illegalRe = /[?<>\\:*|"]/g; + const controlRe = /[\x00-\x1f\x80-\x9f]/g; + const reservedRe = /^\.+$/; + const windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i; + return (!illegalRe.test(filename) && + !controlRe.test(filename) && + !reservedRe.test(filename) && + !windowsReservedRe.test(filename)); +} +function validateFormat(format, periodicity) { + if (!format) { + return ""; + } + if (!isValidFilename(format)) { + return "Format contains illegal characters"; + } + if (periodicity === "daily" && + !["m", "d", "y"].every((requiredChar) => getBasename(format) + .replace(/\[[^\]]*\]/g, "") // remove everything within brackets + .toLowerCase() + .indexOf(requiredChar) !== -1)) { + return "Filename must be unique"; + } +} +function validateTemplate(template) { + if (!template) { + return ""; + } + const { metadataCache } = window.app; + const file = metadataCache.getFirstLinkpathDest(template, ""); + if (!file) { + return "Template file not found"; + } + return ""; +} +function validateFolder(folder) { + if (!folder || folder === "/") { + return ""; + } + const { vault } = window.app; + if (!vault.getAbstractFileByPath(obsidian.normalizePath(folder))) { + return "Folder not found in vault"; + } + return ""; +} + +/* src/settings/NoteFormatSetting.svelte generated by Svelte v3.35.0 */ + +function create_if_block_1$1(ctx) { + let div; + let t0; + let strong0; + let t1; + let br; + let t2; + let strong1; + let t3; + + return { + c() { + div = element("div"); + t0 = text("New files will be created at "); + strong0 = element("strong"); + t1 = text(/*value*/ ctx[2]); + br = element("br"); + t2 = text("\n Format: "); + strong1 = element("strong"); + t3 = text(/*basename*/ ctx[7]); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, t0); + append(div, strong0); + append(strong0, t1); + append(div, br); + append(div, t2); + append(div, strong1); + append(strong1, t3); + }, + p(ctx, dirty) { + if (dirty & /*value*/ 4) set_data(t1, /*value*/ ctx[2]); + if (dirty & /*basename*/ 128) set_data(t3, /*basename*/ ctx[7]); + }, + d(detaching) { + if (detaching) detach(div); + } + }; +} + +// (56:4) {#if error} +function create_if_block$3(ctx) { + let div; + let t; + + return { + c() { + div = element("div"); + t = text(/*error*/ ctx[5]); + attr(div, "class", "has-error"); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, t); + }, + p(ctx, dirty) { + if (dirty & /*error*/ 32) set_data(t, /*error*/ ctx[5]); + }, + d(detaching) { + if (detaching) detach(div); + } + }; +} + +function create_fragment$3(ctx) { + let div5; + let div3; + let div0; + let t1; + let div2; + let a; + let t3; + let div1; + let t4; + let b; + let t5_value = window.moment().format(/*value*/ ctx[2] || /*defaultFormat*/ ctx[8]) + ""; + let t5; + let t6; + let t7; + let t8; + let div4; + let input; + let mounted; + let dispose; + let if_block0 = /*isTemplateNested*/ ctx[6] && create_if_block_1$1(ctx); + let if_block1 = /*error*/ ctx[5] && create_if_block$3(ctx); + + return { + c() { + div5 = element("div"); + div3 = element("div"); + div0 = element("div"); + div0.textContent = "Format"; + t1 = space(); + div2 = element("div"); + a = element("a"); + a.textContent = "Syntax Reference"; + t3 = space(); + div1 = element("div"); + t4 = text("Your current syntax looks like this: "); + b = element("b"); + t5 = text(t5_value); + t6 = space(); + if (if_block0) if_block0.c(); + t7 = space(); + if (if_block1) if_block1.c(); + t8 = space(); + div4 = element("div"); + input = element("input"); + attr(div0, "class", "setting-item-name"); + attr(a, "href", "https://momentjs.com/docs/#/displaying/format/"); + attr(b, "class", "u-pop"); + attr(div2, "class", "setting-item-description"); + attr(div3, "class", "setting-item-info"); + attr(input, "type", "text"); + attr(input, "spellcheck", false); + attr(input, "placeholder", /*defaultFormat*/ ctx[8]); + toggle_class(input, "has-error", !!/*error*/ ctx[5]); + attr(div4, "class", "setting-item-control"); + attr(div5, "class", "setting-item"); + }, + m(target, anchor) { + insert(target, div5, anchor); + append(div5, div3); + append(div3, div0); + append(div3, t1); + append(div3, div2); + append(div2, a); + append(div2, t3); + append(div2, div1); + append(div1, t4); + append(div1, b); + append(b, t5); + append(div2, t6); + if (if_block0) if_block0.m(div2, null); + append(div3, t7); + if (if_block1) if_block1.m(div3, null); + append(div5, t8); + append(div5, div4); + append(div4, input); + set_input_value(input, /*$settings*/ ctx[3][/*periodicity*/ ctx[1]].format); + /*input_binding*/ ctx[12](input); + + if (!mounted) { + dispose = [ + listen(input, "input", /*input_input_handler*/ ctx[11]), + listen(input, "change", /*onChange*/ ctx[10]), + listen(input, "input", /*clearError*/ ctx[9]) + ]; + + mounted = true; + } + }, + p(ctx, [dirty]) { + if (dirty & /*value*/ 4 && t5_value !== (t5_value = window.moment().format(/*value*/ ctx[2] || /*defaultFormat*/ ctx[8]) + "")) set_data(t5, t5_value); + + if (/*isTemplateNested*/ ctx[6]) { + if (if_block0) { + if_block0.p(ctx, dirty); + } else { + if_block0 = create_if_block_1$1(ctx); + if_block0.c(); + if_block0.m(div2, null); + } + } else if (if_block0) { + if_block0.d(1); + if_block0 = null; + } + + if (/*error*/ ctx[5]) { + if (if_block1) { + if_block1.p(ctx, dirty); + } else { + if_block1 = create_if_block$3(ctx); + if_block1.c(); + if_block1.m(div3, null); + } + } else if (if_block1) { + if_block1.d(1); + if_block1 = null; + } + + if (dirty & /*$settings, periodicity*/ 10 && input.value !== /*$settings*/ ctx[3][/*periodicity*/ ctx[1]].format) { + set_input_value(input, /*$settings*/ ctx[3][/*periodicity*/ ctx[1]].format); + } + + if (dirty & /*error*/ 32) { + toggle_class(input, "has-error", !!/*error*/ ctx[5]); + } + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) detach(div5); + if (if_block0) if_block0.d(); + if (if_block1) if_block1.d(); + /*input_binding*/ ctx[12](null); + mounted = false; + run_all(dispose); + } + }; +} + +function instance$3($$self, $$props, $$invalidate) { + let $settings, + $$unsubscribe_settings = noop, + $$subscribe_settings = () => ($$unsubscribe_settings(), $$unsubscribe_settings = subscribe(settings, $$value => $$invalidate(3, $settings = $$value)), settings); + + $$self.$$.on_destroy.push(() => $$unsubscribe_settings()); + + + let { settings } = $$props; + $$subscribe_settings(); + let { periodicity } = $$props; + + const DEFAULT_FORMATS = { + daily: DEFAULT_DAILY_NOTE_FORMAT_1, + weekly: DEFAULT_WEEKLY_NOTE_FORMAT_1, + monthly: DEFAULT_MONTHLY_NOTE_FORMAT_1, + quarterly: DEFAULT_QUARTERLY_NOTE_FORMAT_1, + yearly: DEFAULT_YEARLY_NOTE_FORMAT_1 + }; + + const defaultFormat = DEFAULT_FORMATS[periodicity]; + let inputEl; + let value; + let error; + let isTemplateNested; + let basename; + + onMount(() => { + $$invalidate(5, error = validateFormat(inputEl.value, periodicity)); + }); + + function clearError() { + $$invalidate(5, error = ""); + } + + function onChange() { + $$invalidate(5, error = validateFormat(inputEl.value, periodicity)); + } + + function input_input_handler() { + $settings[periodicity].format = this.value; + settings.set($settings); + $$invalidate(1, periodicity); + } + + function input_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + inputEl = $$value; + $$invalidate(4, inputEl); + }); + } + + $$self.$$set = $$props => { + if ("settings" in $$props) $$subscribe_settings($$invalidate(0, settings = $$props.settings)); + if ("periodicity" in $$props) $$invalidate(1, periodicity = $$props.periodicity); + }; + + $$self.$$.update = () => { + if ($$self.$$.dirty & /*$settings, periodicity, value*/ 14) { + { + $$invalidate(2, value = $settings[periodicity].format || ""); + $$invalidate(6, isTemplateNested = value.indexOf("/") !== -1); + $$invalidate(7, basename = getBasename(value)); + } + } + }; + + return [ + settings, + periodicity, + value, + $settings, + inputEl, + error, + isTemplateNested, + basename, + defaultFormat, + clearError, + onChange, + input_input_handler, + input_binding + ]; +} + +class NoteFormatSetting extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$3, create_fragment$3, safe_not_equal, { settings: 0, periodicity: 1 }); + } +} + +var top = 'top'; +var bottom = 'bottom'; +var right = 'right'; +var left = 'left'; +var auto = 'auto'; +var basePlacements = [top, bottom, right, left]; +var start = 'start'; +var end = 'end'; +var clippingParents = 'clippingParents'; +var viewport = 'viewport'; +var popper = 'popper'; +var reference = 'reference'; +var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { + return acc.concat([placement + "-" + start, placement + "-" + end]); +}, []); +var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { + return acc.concat([placement, placement + "-" + start, placement + "-" + end]); +}, []); // modifiers that need to read the DOM + +var beforeRead = 'beforeRead'; +var read = 'read'; +var afterRead = 'afterRead'; // pure-logic modifiers + +var beforeMain = 'beforeMain'; +var main = 'main'; +var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) + +var beforeWrite = 'beforeWrite'; +var write = 'write'; +var afterWrite = 'afterWrite'; +var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; + +function getNodeName(element) { + return element ? (element.nodeName || '').toLowerCase() : null; +} + +function getWindow(node) { + if (node == null) { + return window; + } + + if (node.toString() !== '[object Window]') { + var ownerDocument = node.ownerDocument; + return ownerDocument ? ownerDocument.defaultView || window : window; + } + + return node; +} + +function isElement(node) { + var OwnElement = getWindow(node).Element; + return node instanceof OwnElement || node instanceof Element; +} + +function isHTMLElement(node) { + var OwnElement = getWindow(node).HTMLElement; + return node instanceof OwnElement || node instanceof HTMLElement; +} + +function isShadowRoot(node) { + // IE 11 has no ShadowRoot + if (typeof ShadowRoot === 'undefined') { + return false; + } + + var OwnElement = getWindow(node).ShadowRoot; + return node instanceof OwnElement || node instanceof ShadowRoot; +} + +// and applies them to the HTMLElements such as popper and arrow + +function applyStyles(_ref) { + var state = _ref.state; + Object.keys(state.elements).forEach(function (name) { + var style = state.styles[name] || {}; + var attributes = state.attributes[name] || {}; + var element = state.elements[name]; // arrow is optional + virtual elements + + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } // Flow doesn't support to extend this property, but it's the most + // effective way to apply styles to an HTMLElement + // $FlowFixMe[cannot-write] + + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (name) { + var value = attributes[name]; + + if (value === false) { + element.removeAttribute(name); + } else { + element.setAttribute(name, value === true ? '' : value); + } + }); + }); +} + +function effect$2(_ref2) { + var state = _ref2.state; + var initialStyles = { + popper: { + position: state.options.strategy, + left: '0', + top: '0', + margin: '0' + }, + arrow: { + position: 'absolute' + }, + reference: {} + }; + Object.assign(state.elements.popper.style, initialStyles.popper); + state.styles = initialStyles; + + if (state.elements.arrow) { + Object.assign(state.elements.arrow.style, initialStyles.arrow); + } + + return function () { + Object.keys(state.elements).forEach(function (name) { + var element = state.elements[name]; + var attributes = state.attributes[name] || {}; + var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them + + var style = styleProperties.reduce(function (style, property) { + style[property] = ''; + return style; + }, {}); // arrow is optional + virtual elements + + if (!isHTMLElement(element) || !getNodeName(element)) { + return; + } + + Object.assign(element.style, style); + Object.keys(attributes).forEach(function (attribute) { + element.removeAttribute(attribute); + }); + }); + }; +} // eslint-disable-next-line import/no-unused-modules + + +var applyStyles$1 = { + name: 'applyStyles', + enabled: true, + phase: 'write', + fn: applyStyles, + effect: effect$2, + requires: ['computeStyles'] +}; + +function getBasePlacement(placement) { + return placement.split('-')[0]; +} + +function getBoundingClientRect(element) { + var rect = element.getBoundingClientRect(); + return { + width: rect.width, + height: rect.height, + top: rect.top, + right: rect.right, + bottom: rect.bottom, + left: rect.left, + x: rect.left, + y: rect.top + }; +} + +// means it doesn't take into account transforms. + +function getLayoutRect(element) { + var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed. + // Fixes https://github.com/popperjs/popper-core/issues/1223 + + var width = element.offsetWidth; + var height = element.offsetHeight; + + if (Math.abs(clientRect.width - width) <= 1) { + width = clientRect.width; + } + + if (Math.abs(clientRect.height - height) <= 1) { + height = clientRect.height; + } + + return { + x: element.offsetLeft, + y: element.offsetTop, + width: width, + height: height + }; +} + +function contains(parent, child) { + var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method + + if (parent.contains(child)) { + return true; + } // then fallback to custom implementation with Shadow DOM support + else if (rootNode && isShadowRoot(rootNode)) { + var next = child; + + do { + if (next && parent.isSameNode(next)) { + return true; + } // $FlowFixMe[prop-missing]: need a better way to handle this... + + + next = next.parentNode || next.host; + } while (next); + } // Give up, the result is false + + + return false; +} + +function getComputedStyle$1(element) { + return getWindow(element).getComputedStyle(element); +} + +function isTableElement(element) { + return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0; +} + +function getDocumentElement(element) { + // $FlowFixMe[incompatible-return]: assume body is always available + return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] + element.document) || window.document).documentElement; +} + +function getParentNode(element) { + if (getNodeName(element) === 'html') { + return element; + } + + return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle + // $FlowFixMe[incompatible-return] + // $FlowFixMe[prop-missing] + element.assignedSlot || // step into the shadow DOM of the parent of a slotted node + element.parentNode || ( // DOM Element detected + isShadowRoot(element) ? element.host : null) || // ShadowRoot detected + // $FlowFixMe[incompatible-call]: HTMLElement is a Node + getDocumentElement(element) // fallback + + ); +} + +function getTrueOffsetParent(element) { + if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837 + getComputedStyle$1(element).position === 'fixed') { + return null; + } + + return element.offsetParent; +} // `.offsetParent` reports `null` for fixed elements, while absolute elements +// return the containing block + + +function getContainingBlock(element) { + var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') !== -1; + var currentNode = getParentNode(element); + + while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) { + var css = getComputedStyle$1(currentNode); // This is non-exhaustive but covers the most common CSS properties that + // create a containing block. + // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block + + if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { + return currentNode; + } else { + currentNode = currentNode.parentNode; + } + } + + return null; +} // Gets the closest ancestor positioned element. Handles some edge cases, +// such as table ancestors and cross browser bugs. + + +function getOffsetParent(element) { + var window = getWindow(element); + var offsetParent = getTrueOffsetParent(element); + + while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') { + offsetParent = getTrueOffsetParent(offsetParent); + } + + if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static')) { + return window; + } + + return offsetParent || getContainingBlock(element) || window; +} + +function getMainAxisFromPlacement(placement) { + return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; +} + +var max = Math.max; +var min = Math.min; +var round = Math.round; + +function within(min$1, value, max$1) { + return max(min$1, min(value, max$1)); +} + +function getFreshSideObject() { + return { + top: 0, + right: 0, + bottom: 0, + left: 0 + }; +} + +function mergePaddingObject(paddingObject) { + return Object.assign({}, getFreshSideObject(), paddingObject); +} + +function expandToHashMap(value, keys) { + return keys.reduce(function (hashMap, key) { + hashMap[key] = value; + return hashMap; + }, {}); +} + +var toPaddingObject = function toPaddingObject(padding, state) { + padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { + placement: state.placement + })) : padding; + return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); +}; + +function arrow(_ref) { + var _state$modifiersData$; + + var state = _ref.state, + name = _ref.name, + options = _ref.options; + var arrowElement = state.elements.arrow; + var popperOffsets = state.modifiersData.popperOffsets; + var basePlacement = getBasePlacement(state.placement); + var axis = getMainAxisFromPlacement(basePlacement); + var isVertical = [left, right].indexOf(basePlacement) >= 0; + var len = isVertical ? 'height' : 'width'; + + if (!arrowElement || !popperOffsets) { + return; + } + + var paddingObject = toPaddingObject(options.padding, state); + var arrowRect = getLayoutRect(arrowElement); + var minProp = axis === 'y' ? top : left; + var maxProp = axis === 'y' ? bottom : right; + var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; + var startDiff = popperOffsets[axis] - state.rects.reference[axis]; + var arrowOffsetParent = getOffsetParent(arrowElement); + var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; + var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is + // outside of the popper bounds + + var min = paddingObject[minProp]; + var max = clientSize - arrowRect[len] - paddingObject[maxProp]; + var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; + var offset = within(min, center, max); // Prevents breaking syntax highlighting... + + var axisProp = axis; + state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); +} + +function effect$1(_ref2) { + var state = _ref2.state, + options = _ref2.options; + var _options$element = options.element, + arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; + + if (arrowElement == null) { + return; + } // CSS selector + + + if (typeof arrowElement === 'string') { + arrowElement = state.elements.popper.querySelector(arrowElement); + + if (!arrowElement) { + return; + } + } + + if (process.env.NODE_ENV !== "production") { + if (!isHTMLElement(arrowElement)) { + console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' ')); + } + } + + if (!contains(state.elements.popper, arrowElement)) { + if (process.env.NODE_ENV !== "production") { + console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' ')); + } + + return; + } + + state.elements.arrow = arrowElement; +} // eslint-disable-next-line import/no-unused-modules + + +var arrow$1 = { + name: 'arrow', + enabled: true, + phase: 'main', + fn: arrow, + effect: effect$1, + requires: ['popperOffsets'], + requiresIfExists: ['preventOverflow'] +}; + +var unsetSides = { + top: 'auto', + right: 'auto', + bottom: 'auto', + left: 'auto' +}; // Round the offsets to the nearest suitable subpixel based on the DPR. +// Zooming can change the DPR, but it seems to report a value that will +// cleanly divide the values into the appropriate subpixels. + +function roundOffsetsByDPR(_ref) { + var x = _ref.x, + y = _ref.y; + var win = window; + var dpr = win.devicePixelRatio || 1; + return { + x: round(round(x * dpr) / dpr) || 0, + y: round(round(y * dpr) / dpr) || 0 + }; +} + +function mapToStyles(_ref2) { + var _Object$assign2; + + var popper = _ref2.popper, + popperRect = _ref2.popperRect, + placement = _ref2.placement, + offsets = _ref2.offsets, + position = _ref2.position, + gpuAcceleration = _ref2.gpuAcceleration, + adaptive = _ref2.adaptive, + roundOffsets = _ref2.roundOffsets; + + var _ref3 = roundOffsets === true ? roundOffsetsByDPR(offsets) : typeof roundOffsets === 'function' ? roundOffsets(offsets) : offsets, + _ref3$x = _ref3.x, + x = _ref3$x === void 0 ? 0 : _ref3$x, + _ref3$y = _ref3.y, + y = _ref3$y === void 0 ? 0 : _ref3$y; + + var hasX = offsets.hasOwnProperty('x'); + var hasY = offsets.hasOwnProperty('y'); + var sideX = left; + var sideY = top; + var win = window; + + if (adaptive) { + var offsetParent = getOffsetParent(popper); + var heightProp = 'clientHeight'; + var widthProp = 'clientWidth'; + + if (offsetParent === getWindow(popper)) { + offsetParent = getDocumentElement(popper); + + if (getComputedStyle$1(offsetParent).position !== 'static') { + heightProp = 'scrollHeight'; + widthProp = 'scrollWidth'; + } + } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it + + + offsetParent = offsetParent; + + if (placement === top) { + sideY = bottom; // $FlowFixMe[prop-missing] + + y -= offsetParent[heightProp] - popperRect.height; + y *= gpuAcceleration ? 1 : -1; + } + + if (placement === left) { + sideX = right; // $FlowFixMe[prop-missing] + + x -= offsetParent[widthProp] - popperRect.width; + x *= gpuAcceleration ? 1 : -1; + } + } + + var commonStyles = Object.assign({ + position: position + }, adaptive && unsetSides); + + if (gpuAcceleration) { + var _Object$assign; + + return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) < 2 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); + } + + return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); +} + +function computeStyles(_ref4) { + var state = _ref4.state, + options = _ref4.options; + var _options$gpuAccelerat = options.gpuAcceleration, + gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, + _options$adaptive = options.adaptive, + adaptive = _options$adaptive === void 0 ? true : _options$adaptive, + _options$roundOffsets = options.roundOffsets, + roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + + if (process.env.NODE_ENV !== "production") { + var transitionProperty = getComputedStyle$1(state.elements.popper).transitionProperty || ''; + + if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) { + return transitionProperty.indexOf(property) >= 0; + })) { + console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' ')); + } + } + + var commonStyles = { + placement: getBasePlacement(state.placement), + popper: state.elements.popper, + popperRect: state.rects.popper, + gpuAcceleration: gpuAcceleration + }; + + if (state.modifiersData.popperOffsets != null) { + state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.popperOffsets, + position: state.options.strategy, + adaptive: adaptive, + roundOffsets: roundOffsets + }))); + } + + if (state.modifiersData.arrow != null) { + state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { + offsets: state.modifiersData.arrow, + position: 'absolute', + adaptive: false, + roundOffsets: roundOffsets + }))); + } + + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-placement': state.placement + }); +} // eslint-disable-next-line import/no-unused-modules + + +var computeStyles$1 = { + name: 'computeStyles', + enabled: true, + phase: 'beforeWrite', + fn: computeStyles, + data: {} +}; + +var passive = { + passive: true +}; + +function effect(_ref) { + var state = _ref.state, + instance = _ref.instance, + options = _ref.options; + var _options$scroll = options.scroll, + scroll = _options$scroll === void 0 ? true : _options$scroll, + _options$resize = options.resize, + resize = _options$resize === void 0 ? true : _options$resize; + var window = getWindow(state.elements.popper); + var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); + + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.addEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.addEventListener('resize', instance.update, passive); + } + + return function () { + if (scroll) { + scrollParents.forEach(function (scrollParent) { + scrollParent.removeEventListener('scroll', instance.update, passive); + }); + } + + if (resize) { + window.removeEventListener('resize', instance.update, passive); + } + }; +} // eslint-disable-next-line import/no-unused-modules + + +var eventListeners = { + name: 'eventListeners', + enabled: true, + phase: 'write', + fn: function fn() {}, + effect: effect, + data: {} +}; + +var hash$1 = { + left: 'right', + right: 'left', + bottom: 'top', + top: 'bottom' +}; +function getOppositePlacement(placement) { + return placement.replace(/left|right|bottom|top/g, function (matched) { + return hash$1[matched]; + }); +} + +var hash = { + start: 'end', + end: 'start' +}; +function getOppositeVariationPlacement(placement) { + return placement.replace(/start|end/g, function (matched) { + return hash[matched]; + }); +} + +function getWindowScroll(node) { + var win = getWindow(node); + var scrollLeft = win.pageXOffset; + var scrollTop = win.pageYOffset; + return { + scrollLeft: scrollLeft, + scrollTop: scrollTop + }; +} + +function getWindowScrollBarX(element) { + // If <html> has a CSS width greater than the viewport, then this will be + // incorrect for RTL. + // Popper 1 is broken in this case and never had a bug report so let's assume + // it's not an issue. I don't think anyone ever specifies width on <html> + // anyway. + // Browsers where the left scrollbar doesn't cause an issue report `0` for + // this (e.g. Edge 2019, IE11, Safari) + return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft; +} + +function getViewportRect(element) { + var win = getWindow(element); + var html = getDocumentElement(element); + var visualViewport = win.visualViewport; + var width = html.clientWidth; + var height = html.clientHeight; + var x = 0; + var y = 0; // NB: This isn't supported on iOS <= 12. If the keyboard is open, the popper + // can be obscured underneath it. + // Also, `html.clientHeight` adds the bottom bar height in Safari iOS, even + // if it isn't open, so if this isn't available, the popper will be detected + // to overflow the bottom of the screen too early. + + if (visualViewport) { + width = visualViewport.width; + height = visualViewport.height; // Uses Layout Viewport (like Chrome; Safari does not currently) + // In Chrome, it returns a value very close to 0 (+/-) but contains rounding + // errors due to floating point numbers, so we need to check precision. + // Safari returns a number <= 0, usually < -1 when pinch-zoomed + // Feature detection fails in mobile emulation mode in Chrome. + // Math.abs(win.innerWidth / visualViewport.scale - visualViewport.width) < + // 0.001 + // Fallback here: "Not Safari" userAgent + + if (!/^((?!chrome|android).)*safari/i.test(navigator.userAgent)) { + x = visualViewport.offsetLeft; + y = visualViewport.offsetTop; + } + } + + return { + width: width, + height: height, + x: x + getWindowScrollBarX(element), + y: y + }; +} + +// of the `<html>` and `<body>` rect bounds if horizontally scrollable + +function getDocumentRect(element) { + var _element$ownerDocumen; + + var html = getDocumentElement(element); + var winScroll = getWindowScroll(element); + var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; + var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); + var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); + var x = -winScroll.scrollLeft + getWindowScrollBarX(element); + var y = -winScroll.scrollTop; + + if (getComputedStyle$1(body || html).direction === 'rtl') { + x += max(html.clientWidth, body ? body.clientWidth : 0) - width; + } + + return { + width: width, + height: height, + x: x, + y: y + }; +} + +function isScrollParent(element) { + // Firefox wants us to check `-x` and `-y` variations as well + var _getComputedStyle = getComputedStyle$1(element), + overflow = _getComputedStyle.overflow, + overflowX = _getComputedStyle.overflowX, + overflowY = _getComputedStyle.overflowY; + + return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); +} + +function getScrollParent(node) { + if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) { + // $FlowFixMe[incompatible-return]: assume body is always available + return node.ownerDocument.body; + } + + if (isHTMLElement(node) && isScrollParent(node)) { + return node; + } + + return getScrollParent(getParentNode(node)); +} + +/* +given a DOM element, return the list of all scroll parents, up the list of ancesors +until we get to the top window object. This list is what we attach scroll listeners +to, because if any of these parent elements scroll, we'll need to re-calculate the +reference element's position. +*/ + +function listScrollParents(element, list) { + var _element$ownerDocumen; + + if (list === void 0) { + list = []; + } + + var scrollParent = getScrollParent(element); + var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); + var win = getWindow(scrollParent); + var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent; + var updatedList = list.concat(target); + return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here + updatedList.concat(listScrollParents(getParentNode(target))); +} + +function rectToClientRect(rect) { + return Object.assign({}, rect, { + left: rect.x, + top: rect.y, + right: rect.x + rect.width, + bottom: rect.y + rect.height + }); +} + +function getInnerBoundingClientRect(element) { + var rect = getBoundingClientRect(element); + rect.top = rect.top + element.clientTop; + rect.left = rect.left + element.clientLeft; + rect.bottom = rect.top + element.clientHeight; + rect.right = rect.left + element.clientWidth; + rect.width = element.clientWidth; + rect.height = element.clientHeight; + rect.x = rect.left; + rect.y = rect.top; + return rect; +} + +function getClientRectFromMixedType(element, clippingParent) { + return clippingParent === viewport ? rectToClientRect(getViewportRect(element)) : isHTMLElement(clippingParent) ? getInnerBoundingClientRect(clippingParent) : rectToClientRect(getDocumentRect(getDocumentElement(element))); +} // A "clipping parent" is an overflowable container with the characteristic of +// clipping (or hiding) overflowing elements with a position different from +// `initial` + + +function getClippingParents(element) { + var clippingParents = listScrollParents(getParentNode(element)); + var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle$1(element).position) >= 0; + var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element; + + if (!isElement(clipperElement)) { + return []; + } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 + + + return clippingParents.filter(function (clippingParent) { + return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body'; + }); +} // Gets the maximum area that the element is visible in due to any number of +// clipping parents + + +function getClippingRect(element, boundary, rootBoundary) { + var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); + var clippingParents = [].concat(mainClippingParents, [rootBoundary]); + var firstClippingParent = clippingParents[0]; + var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { + var rect = getClientRectFromMixedType(element, clippingParent); + accRect.top = max(rect.top, accRect.top); + accRect.right = min(rect.right, accRect.right); + accRect.bottom = min(rect.bottom, accRect.bottom); + accRect.left = max(rect.left, accRect.left); + return accRect; + }, getClientRectFromMixedType(element, firstClippingParent)); + clippingRect.width = clippingRect.right - clippingRect.left; + clippingRect.height = clippingRect.bottom - clippingRect.top; + clippingRect.x = clippingRect.left; + clippingRect.y = clippingRect.top; + return clippingRect; +} + +function getVariation(placement) { + return placement.split('-')[1]; +} + +function computeOffsets(_ref) { + var reference = _ref.reference, + element = _ref.element, + placement = _ref.placement; + var basePlacement = placement ? getBasePlacement(placement) : null; + var variation = placement ? getVariation(placement) : null; + var commonX = reference.x + reference.width / 2 - element.width / 2; + var commonY = reference.y + reference.height / 2 - element.height / 2; + var offsets; + + switch (basePlacement) { + case top: + offsets = { + x: commonX, + y: reference.y - element.height + }; + break; + + case bottom: + offsets = { + x: commonX, + y: reference.y + reference.height + }; + break; + + case right: + offsets = { + x: reference.x + reference.width, + y: commonY + }; + break; + + case left: + offsets = { + x: reference.x - element.width, + y: commonY + }; + break; + + default: + offsets = { + x: reference.x, + y: reference.y + }; + } + + var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null; + + if (mainAxis != null) { + var len = mainAxis === 'y' ? 'height' : 'width'; + + switch (variation) { + case start: + offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); + break; + + case end: + offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); + break; + } + } + + return offsets; +} + +function detectOverflow(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + _options$placement = _options.placement, + placement = _options$placement === void 0 ? state.placement : _options$placement, + _options$boundary = _options.boundary, + boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, + _options$rootBoundary = _options.rootBoundary, + rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, + _options$elementConte = _options.elementContext, + elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, + _options$altBoundary = _options.altBoundary, + altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, + _options$padding = _options.padding, + padding = _options$padding === void 0 ? 0 : _options$padding; + var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements)); + var altContext = elementContext === popper ? reference : popper; + var referenceElement = state.elements.reference; + var popperRect = state.rects.popper; + var element = state.elements[altBoundary ? altContext : elementContext]; + var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary); + var referenceClientRect = getBoundingClientRect(referenceElement); + var popperOffsets = computeOffsets({ + reference: referenceClientRect, + element: popperRect, + strategy: 'absolute', + placement: placement + }); + var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets)); + var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect + // 0 or negative = within the clipping rect + + var overflowOffsets = { + top: clippingClientRect.top - elementClientRect.top + paddingObject.top, + bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, + left: clippingClientRect.left - elementClientRect.left + paddingObject.left, + right: elementClientRect.right - clippingClientRect.right + paddingObject.right + }; + var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element + + if (elementContext === popper && offsetData) { + var offset = offsetData[placement]; + Object.keys(overflowOffsets).forEach(function (key) { + var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1; + var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x'; + overflowOffsets[key] += offset[axis] * multiply; + }); + } + + return overflowOffsets; +} + +function computeAutoPlacement(state, options) { + if (options === void 0) { + options = {}; + } + + var _options = options, + placement = _options.placement, + boundary = _options.boundary, + rootBoundary = _options.rootBoundary, + padding = _options.padding, + flipVariations = _options.flipVariations, + _options$allowedAutoP = _options.allowedAutoPlacements, + allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP; + var variation = getVariation(placement); + var placements$1 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) { + return getVariation(placement) === variation; + }) : basePlacements; + var allowedPlacements = placements$1.filter(function (placement) { + return allowedAutoPlacements.indexOf(placement) >= 0; + }); + + if (allowedPlacements.length === 0) { + allowedPlacements = placements$1; + + if (process.env.NODE_ENV !== "production") { + console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' ')); + } + } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... + + + var overflows = allowedPlacements.reduce(function (acc, placement) { + acc[placement] = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding + })[getBasePlacement(placement)]; + return acc; + }, {}); + return Object.keys(overflows).sort(function (a, b) { + return overflows[a] - overflows[b]; + }); +} + +function getExpandedFallbackPlacements(placement) { + if (getBasePlacement(placement) === auto) { + return []; + } + + var oppositePlacement = getOppositePlacement(placement); + return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)]; +} + +function flip(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + + if (state.modifiersData[name]._skip) { + return; + } + + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, + specifiedFallbackPlacements = options.fallbackPlacements, + padding = options.padding, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + _options$flipVariatio = options.flipVariations, + flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, + allowedAutoPlacements = options.allowedAutoPlacements; + var preferredPlacement = state.options.placement; + var basePlacement = getBasePlacement(preferredPlacement); + var isBasePlacement = basePlacement === preferredPlacement; + var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); + var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { + return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + flipVariations: flipVariations, + allowedAutoPlacements: allowedAutoPlacements + }) : placement); + }, []); + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var checksMap = new Map(); + var makeFallbackChecks = true; + var firstFittingPlacement = placements[0]; + + for (var i = 0; i < placements.length; i++) { + var placement = placements[i]; + + var _basePlacement = getBasePlacement(placement); + + var isStartVariation = getVariation(placement) === start; + var isVertical = [top, bottom].indexOf(_basePlacement) >= 0; + var len = isVertical ? 'width' : 'height'; + var overflow = detectOverflow(state, { + placement: placement, + boundary: boundary, + rootBoundary: rootBoundary, + altBoundary: altBoundary, + padding: padding + }); + var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top; + + if (referenceRect[len] > popperRect[len]) { + mainVariationSide = getOppositePlacement(mainVariationSide); + } + + var altVariationSide = getOppositePlacement(mainVariationSide); + var checks = []; + + if (checkMainAxis) { + checks.push(overflow[_basePlacement] <= 0); + } + + if (checkAltAxis) { + checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); + } + + if (checks.every(function (check) { + return check; + })) { + firstFittingPlacement = placement; + makeFallbackChecks = false; + break; + } + + checksMap.set(placement, checks); + } + + if (makeFallbackChecks) { + // `2` may be desired in some cases – research later + var numberOfChecks = flipVariations ? 3 : 1; + + var _loop = function _loop(_i) { + var fittingPlacement = placements.find(function (placement) { + var checks = checksMap.get(placement); + + if (checks) { + return checks.slice(0, _i).every(function (check) { + return check; + }); + } + }); + + if (fittingPlacement) { + firstFittingPlacement = fittingPlacement; + return "break"; + } + }; + + for (var _i = numberOfChecks; _i > 0; _i--) { + var _ret = _loop(_i); + + if (_ret === "break") break; + } + } + + if (state.placement !== firstFittingPlacement) { + state.modifiersData[name]._skip = true; + state.placement = firstFittingPlacement; + state.reset = true; + } +} // eslint-disable-next-line import/no-unused-modules + + +var flip$1 = { + name: 'flip', + enabled: true, + phase: 'main', + fn: flip, + requiresIfExists: ['offset'], + data: { + _skip: false + } +}; + +function getSideOffsets(overflow, rect, preventedOffsets) { + if (preventedOffsets === void 0) { + preventedOffsets = { + x: 0, + y: 0 + }; + } + + return { + top: overflow.top - rect.height - preventedOffsets.y, + right: overflow.right - rect.width + preventedOffsets.x, + bottom: overflow.bottom - rect.height + preventedOffsets.y, + left: overflow.left - rect.width - preventedOffsets.x + }; +} + +function isAnySideFullyClipped(overflow) { + return [top, right, bottom, left].some(function (side) { + return overflow[side] >= 0; + }); +} + +function hide(_ref) { + var state = _ref.state, + name = _ref.name; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var preventedOffsets = state.modifiersData.preventOverflow; + var referenceOverflow = detectOverflow(state, { + elementContext: 'reference' + }); + var popperAltOverflow = detectOverflow(state, { + altBoundary: true + }); + var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); + var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); + var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); + var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); + state.modifiersData[name] = { + referenceClippingOffsets: referenceClippingOffsets, + popperEscapeOffsets: popperEscapeOffsets, + isReferenceHidden: isReferenceHidden, + hasPopperEscaped: hasPopperEscaped + }; + state.attributes.popper = Object.assign({}, state.attributes.popper, { + 'data-popper-reference-hidden': isReferenceHidden, + 'data-popper-escaped': hasPopperEscaped + }); +} // eslint-disable-next-line import/no-unused-modules + + +var hide$1 = { + name: 'hide', + enabled: true, + phase: 'main', + requiresIfExists: ['preventOverflow'], + fn: hide +}; + +function distanceAndSkiddingToXY(placement, rects, offset) { + var basePlacement = getBasePlacement(placement); + var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1; + + var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { + placement: placement + })) : offset, + skidding = _ref[0], + distance = _ref[1]; + + skidding = skidding || 0; + distance = (distance || 0) * invertDistance; + return [left, right].indexOf(basePlacement) >= 0 ? { + x: distance, + y: skidding + } : { + x: skidding, + y: distance + }; +} + +function offset(_ref2) { + var state = _ref2.state, + options = _ref2.options, + name = _ref2.name; + var _options$offset = options.offset, + offset = _options$offset === void 0 ? [0, 0] : _options$offset; + var data = placements.reduce(function (acc, placement) { + acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); + return acc; + }, {}); + var _data$state$placement = data[state.placement], + x = _data$state$placement.x, + y = _data$state$placement.y; + + if (state.modifiersData.popperOffsets != null) { + state.modifiersData.popperOffsets.x += x; + state.modifiersData.popperOffsets.y += y; + } + + state.modifiersData[name] = data; +} // eslint-disable-next-line import/no-unused-modules + + +var offset$1 = { + name: 'offset', + enabled: true, + phase: 'main', + requires: ['popperOffsets'], + fn: offset +}; + +function popperOffsets(_ref) { + var state = _ref.state, + name = _ref.name; + // Offsets are the actual position the popper needs to have to be + // properly positioned near its reference element + // This is the most basic placement, and will be adjusted by + // the modifiers in the next step + state.modifiersData[name] = computeOffsets({ + reference: state.rects.reference, + element: state.rects.popper, + strategy: 'absolute', + placement: state.placement + }); +} // eslint-disable-next-line import/no-unused-modules + + +var popperOffsets$1 = { + name: 'popperOffsets', + enabled: true, + phase: 'read', + fn: popperOffsets, + data: {} +}; + +function getAltAxis(axis) { + return axis === 'x' ? 'y' : 'x'; +} + +function preventOverflow(_ref) { + var state = _ref.state, + options = _ref.options, + name = _ref.name; + var _options$mainAxis = options.mainAxis, + checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, + _options$altAxis = options.altAxis, + checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, + boundary = options.boundary, + rootBoundary = options.rootBoundary, + altBoundary = options.altBoundary, + padding = options.padding, + _options$tether = options.tether, + tether = _options$tether === void 0 ? true : _options$tether, + _options$tetherOffset = options.tetherOffset, + tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; + var overflow = detectOverflow(state, { + boundary: boundary, + rootBoundary: rootBoundary, + padding: padding, + altBoundary: altBoundary + }); + var basePlacement = getBasePlacement(state.placement); + var variation = getVariation(state.placement); + var isBasePlacement = !variation; + var mainAxis = getMainAxisFromPlacement(basePlacement); + var altAxis = getAltAxis(mainAxis); + var popperOffsets = state.modifiersData.popperOffsets; + var referenceRect = state.rects.reference; + var popperRect = state.rects.popper; + var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { + placement: state.placement + })) : tetherOffset; + var data = { + x: 0, + y: 0 + }; + + if (!popperOffsets) { + return; + } + + if (checkMainAxis || checkAltAxis) { + var mainSide = mainAxis === 'y' ? top : left; + var altSide = mainAxis === 'y' ? bottom : right; + var len = mainAxis === 'y' ? 'height' : 'width'; + var offset = popperOffsets[mainAxis]; + var min$1 = popperOffsets[mainAxis] + overflow[mainSide]; + var max$1 = popperOffsets[mainAxis] - overflow[altSide]; + var additive = tether ? -popperRect[len] / 2 : 0; + var minLen = variation === start ? referenceRect[len] : popperRect[len]; + var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go + // outside the reference bounds + + var arrowElement = state.elements.arrow; + var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : { + width: 0, + height: 0 + }; + var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject(); + var arrowPaddingMin = arrowPaddingObject[mainSide]; + var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want + // to include its full size in the calculation. If the reference is small + // and near the edge of a boundary, the popper can overflow even if the + // reference is not overflowing as well (e.g. virtual elements with no + // width or height) + + var arrowLen = within(0, referenceRect[len], arrowRect[len]); + var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - tetherOffsetValue : minLen - arrowLen - arrowPaddingMin - tetherOffsetValue; + var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + tetherOffsetValue : maxLen + arrowLen + arrowPaddingMax + tetherOffsetValue; + var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow); + var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; + var offsetModifierValue = state.modifiersData.offset ? state.modifiersData.offset[state.placement][mainAxis] : 0; + var tetherMin = popperOffsets[mainAxis] + minOffset - offsetModifierValue - clientOffset; + var tetherMax = popperOffsets[mainAxis] + maxOffset - offsetModifierValue; + + if (checkMainAxis) { + var preventedOffset = within(tether ? min(min$1, tetherMin) : min$1, offset, tether ? max(max$1, tetherMax) : max$1); + popperOffsets[mainAxis] = preventedOffset; + data[mainAxis] = preventedOffset - offset; + } + + if (checkAltAxis) { + var _mainSide = mainAxis === 'x' ? top : left; + + var _altSide = mainAxis === 'x' ? bottom : right; + + var _offset = popperOffsets[altAxis]; + + var _min = _offset + overflow[_mainSide]; + + var _max = _offset - overflow[_altSide]; + + var _preventedOffset = within(tether ? min(_min, tetherMin) : _min, _offset, tether ? max(_max, tetherMax) : _max); + + popperOffsets[altAxis] = _preventedOffset; + data[altAxis] = _preventedOffset - _offset; + } + } + + state.modifiersData[name] = data; +} // eslint-disable-next-line import/no-unused-modules + + +var preventOverflow$1 = { + name: 'preventOverflow', + enabled: true, + phase: 'main', + fn: preventOverflow, + requiresIfExists: ['offset'] +}; + +function getHTMLElementScroll(element) { + return { + scrollLeft: element.scrollLeft, + scrollTop: element.scrollTop + }; +} + +function getNodeScroll(node) { + if (node === getWindow(node) || !isHTMLElement(node)) { + return getWindowScroll(node); + } else { + return getHTMLElementScroll(node); + } +} + +// Composite means it takes into account transforms as well as layout. + +function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { + if (isFixed === void 0) { + isFixed = false; + } + + var documentElement = getDocumentElement(offsetParent); + var rect = getBoundingClientRect(elementOrVirtualElement); + var isOffsetParentAnElement = isHTMLElement(offsetParent); + var scroll = { + scrollLeft: 0, + scrollTop: 0 + }; + var offsets = { + x: 0, + y: 0 + }; + + if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { + if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 + isScrollParent(documentElement)) { + scroll = getNodeScroll(offsetParent); + } + + if (isHTMLElement(offsetParent)) { + offsets = getBoundingClientRect(offsetParent); + offsets.x += offsetParent.clientLeft; + offsets.y += offsetParent.clientTop; + } else if (documentElement) { + offsets.x = getWindowScrollBarX(documentElement); + } + } + + return { + x: rect.left + scroll.scrollLeft - offsets.x, + y: rect.top + scroll.scrollTop - offsets.y, + width: rect.width, + height: rect.height + }; +} + +function order(modifiers) { + var map = new Map(); + var visited = new Set(); + var result = []; + modifiers.forEach(function (modifier) { + map.set(modifier.name, modifier); + }); // On visiting object, check for its dependencies and visit them recursively + + function sort(modifier) { + visited.add(modifier.name); + var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); + requires.forEach(function (dep) { + if (!visited.has(dep)) { + var depModifier = map.get(dep); + + if (depModifier) { + sort(depModifier); + } + } + }); + result.push(modifier); + } + + modifiers.forEach(function (modifier) { + if (!visited.has(modifier.name)) { + // check for visited object + sort(modifier); + } + }); + return result; +} + +function orderModifiers(modifiers) { + // order based on dependencies + var orderedModifiers = order(modifiers); // order based on phase + + return modifierPhases.reduce(function (acc, phase) { + return acc.concat(orderedModifiers.filter(function (modifier) { + return modifier.phase === phase; + })); + }, []); +} + +function debounce(fn) { + var pending; + return function () { + if (!pending) { + pending = new Promise(function (resolve) { + Promise.resolve().then(function () { + pending = undefined; + resolve(fn()); + }); + }); + } + + return pending; + }; +} + +function format(str) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + return [].concat(args).reduce(function (p, c) { + return p.replace(/%s/, c); + }, str); +} + +var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; +var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; +var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options']; +function validateModifiers(modifiers) { + modifiers.forEach(function (modifier) { + Object.keys(modifier).forEach(function (key) { + switch (key) { + case 'name': + if (typeof modifier.name !== 'string') { + console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\"")); + } + + break; + + case 'enabled': + if (typeof modifier.enabled !== 'boolean') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\"")); + } + + case 'phase': + if (modifierPhases.indexOf(modifier.phase) < 0) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\"")); + } + + break; + + case 'fn': + if (typeof modifier.fn !== 'function') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\"")); + } + + break; + + case 'effect': + if (typeof modifier.effect !== 'function') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\"")); + } + + break; + + case 'requires': + if (!Array.isArray(modifier.requires)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\"")); + } + + break; + + case 'requiresIfExists': + if (!Array.isArray(modifier.requiresIfExists)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\"")); + } + + break; + + case 'options': + case 'data': + break; + + default: + console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) { + return "\"" + s + "\""; + }).join(', ') + "; but \"" + key + "\" was provided."); + } + + modifier.requires && modifier.requires.forEach(function (requirement) { + if (modifiers.find(function (mod) { + return mod.name === requirement; + }) == null) { + console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); + } + }); + }); + }); +} + +function uniqueBy(arr, fn) { + var identifiers = new Set(); + return arr.filter(function (item) { + var identifier = fn(item); + + if (!identifiers.has(identifier)) { + identifiers.add(identifier); + return true; + } + }); +} + +function mergeByName(modifiers) { + var merged = modifiers.reduce(function (merged, current) { + var existing = merged[current.name]; + merged[current.name] = existing ? Object.assign({}, existing, current, { + options: Object.assign({}, existing.options, current.options), + data: Object.assign({}, existing.data, current.data) + }) : current; + return merged; + }, {}); // IE11 does not support Object.values + + return Object.keys(merged).map(function (key) { + return merged[key]; + }); +} + +var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.'; +var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.'; +var DEFAULT_OPTIONS = { + placement: 'bottom', + modifiers: [], + strategy: 'absolute' +}; + +function areValidElements() { + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + return !args.some(function (element) { + return !(element && typeof element.getBoundingClientRect === 'function'); + }); +} + +function popperGenerator(generatorOptions) { + if (generatorOptions === void 0) { + generatorOptions = {}; + } + + var _generatorOptions = generatorOptions, + _generatorOptions$def = _generatorOptions.defaultModifiers, + defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, + _generatorOptions$def2 = _generatorOptions.defaultOptions, + defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; + return function createPopper(reference, popper, options) { + if (options === void 0) { + options = defaultOptions; + } + + var state = { + placement: 'bottom', + orderedModifiers: [], + options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), + modifiersData: {}, + elements: { + reference: reference, + popper: popper + }, + attributes: {}, + styles: {} + }; + var effectCleanupFns = []; + var isDestroyed = false; + var instance = { + state: state, + setOptions: function setOptions(options) { + cleanupModifierEffects(); + state.options = Object.assign({}, defaultOptions, state.options, options); + state.scrollParents = { + reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [], + popper: listScrollParents(popper) + }; // Orders the modifiers based on their dependencies and `phase` + // properties + + var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers + + state.orderedModifiers = orderedModifiers.filter(function (m) { + return m.enabled; + }); // Validate the provided modifiers so that the consumer will get warned + // if one of the modifiers is invalid for any reason + + if (process.env.NODE_ENV !== "production") { + var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) { + var name = _ref.name; + return name; + }); + validateModifiers(modifiers); + + if (getBasePlacement(state.options.placement) === auto) { + var flipModifier = state.orderedModifiers.find(function (_ref2) { + var name = _ref2.name; + return name === 'flip'; + }); + + if (!flipModifier) { + console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' ')); + } + } + + var _getComputedStyle = getComputedStyle$1(popper), + marginTop = _getComputedStyle.marginTop, + marginRight = _getComputedStyle.marginRight, + marginBottom = _getComputedStyle.marginBottom, + marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can + // cause bugs with positioning, so we'll warn the consumer + + + if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) { + return parseFloat(margin); + })) { + console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' ')); + } + } + + runModifierEffects(); + return instance.update(); + }, + // Sync update – it will always be executed, even if not necessary. This + // is useful for low frequency updates where sync behavior simplifies the + // logic. + // For high frequency updates (e.g. `resize` and `scroll` events), always + // prefer the async Popper#update method + forceUpdate: function forceUpdate() { + if (isDestroyed) { + return; + } + + var _state$elements = state.elements, + reference = _state$elements.reference, + popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements + // anymore + + if (!areValidElements(reference, popper)) { + if (process.env.NODE_ENV !== "production") { + console.error(INVALID_ELEMENT_ERROR); + } + + return; + } // Store the reference and popper rects to be read by modifiers + + + state.rects = { + reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'), + popper: getLayoutRect(popper) + }; // Modifiers have the ability to reset the current update cycle. The + // most common use case for this is the `flip` modifier changing the + // placement, which then needs to re-run all the modifiers, because the + // logic was previously ran for the previous placement and is therefore + // stale/incorrect + + state.reset = false; + state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier + // is filled with the initial data specified by the modifier. This means + // it doesn't persist and is fresh on each update. + // To ensure persistent data, use `${name}#persistent` + + state.orderedModifiers.forEach(function (modifier) { + return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); + }); + var __debug_loops__ = 0; + + for (var index = 0; index < state.orderedModifiers.length; index++) { + if (process.env.NODE_ENV !== "production") { + __debug_loops__ += 1; + + if (__debug_loops__ > 100) { + console.error(INFINITE_LOOP_ERROR); + break; + } + } + + if (state.reset === true) { + state.reset = false; + index = -1; + continue; + } + + var _state$orderedModifie = state.orderedModifiers[index], + fn = _state$orderedModifie.fn, + _state$orderedModifie2 = _state$orderedModifie.options, + _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, + name = _state$orderedModifie.name; + + if (typeof fn === 'function') { + state = fn({ + state: state, + options: _options, + name: name, + instance: instance + }) || state; + } + } + }, + // Async and optimistically optimized update – it will not be executed if + // not necessary (debounced to run at most once-per-tick) + update: debounce(function () { + return new Promise(function (resolve) { + instance.forceUpdate(); + resolve(state); + }); + }), + destroy: function destroy() { + cleanupModifierEffects(); + isDestroyed = true; + } + }; + + if (!areValidElements(reference, popper)) { + if (process.env.NODE_ENV !== "production") { + console.error(INVALID_ELEMENT_ERROR); + } + + return instance; + } + + instance.setOptions(options).then(function (state) { + if (!isDestroyed && options.onFirstUpdate) { + options.onFirstUpdate(state); + } + }); // Modifiers have the ability to execute arbitrary code before the first + // update cycle runs. They will be executed in the same order as the update + // cycle. This is useful when a modifier adds some persistent data that + // other modifiers need to use, but the modifier is run after the dependent + // one. + + function runModifierEffects() { + state.orderedModifiers.forEach(function (_ref3) { + var name = _ref3.name, + _ref3$options = _ref3.options, + options = _ref3$options === void 0 ? {} : _ref3$options, + effect = _ref3.effect; + + if (typeof effect === 'function') { + var cleanupFn = effect({ + state: state, + name: name, + instance: instance, + options: options + }); + + var noopFn = function noopFn() {}; + + effectCleanupFns.push(cleanupFn || noopFn); + } + }); + } + + function cleanupModifierEffects() { + effectCleanupFns.forEach(function (fn) { + return fn(); + }); + effectCleanupFns = []; + } + + return instance; + }; +} + +var defaultModifiers = [eventListeners, popperOffsets$1, computeStyles$1, applyStyles$1, offset$1, flip$1, preventOverflow$1, arrow$1, hide$1]; +var createPopper = /*#__PURE__*/popperGenerator({ + defaultModifiers: defaultModifiers +}); // eslint-disable-next-line import/no-unused-modules + +class Suggest { + constructor(owner, containerEl, scope) { + this.owner = owner; + this.containerEl = containerEl; + containerEl.on("click", ".suggestion-item", this.onSuggestionClick.bind(this)); + containerEl.on("mousemove", ".suggestion-item", this.onSuggestionMouseover.bind(this)); + scope.register([], "ArrowUp", (event) => { + if (!event.isComposing) { + this.setSelectedItem(this.selectedItem - 1, true); + return false; + } + }); + scope.register([], "ArrowDown", (event) => { + if (!event.isComposing) { + this.setSelectedItem(this.selectedItem + 1, true); + return false; + } + }); + scope.register([], "Enter", (event) => { + if (!event.isComposing) { + this.useSelectedItem(event); + return false; + } + }); + } + onSuggestionClick(event, el) { + event.preventDefault(); + const item = this.suggestions.indexOf(el); + this.setSelectedItem(item, false); + this.useSelectedItem(event); + } + onSuggestionMouseover(_event, el) { + const item = this.suggestions.indexOf(el); + this.setSelectedItem(item, false); + } + setSuggestions(values) { + this.containerEl.empty(); + const suggestionEls = []; + values.forEach((value) => { + const suggestionEl = this.containerEl.createDiv("suggestion-item"); + this.owner.renderSuggestion(value, suggestionEl); + suggestionEls.push(suggestionEl); + }); + this.values = values; + this.suggestions = suggestionEls; + this.setSelectedItem(0, false); + } + useSelectedItem(event) { + const currentValue = this.values[this.selectedItem]; + if (currentValue) { + this.owner.selectSuggestion(currentValue, event); + } + } + setSelectedItem(selectedIndex, scrollIntoView) { + const normalizedIndex = wrapAround(selectedIndex, this.suggestions.length); + const prevSelectedSuggestion = this.suggestions[this.selectedItem]; + const selectedSuggestion = this.suggestions[normalizedIndex]; + prevSelectedSuggestion === null || prevSelectedSuggestion === void 0 ? void 0 : prevSelectedSuggestion.removeClass("is-selected"); + selectedSuggestion === null || selectedSuggestion === void 0 ? void 0 : selectedSuggestion.addClass("is-selected"); + this.selectedItem = normalizedIndex; + if (scrollIntoView) { + selectedSuggestion.scrollIntoView(false); + } + } +} +class TextInputSuggest { + constructor(app, inputEl) { + this.app = app; + this.inputEl = inputEl; + this.scope = new obsidian.Scope(); + this.suggestEl = createDiv("suggestion-container"); + const suggestion = this.suggestEl.createDiv("suggestion"); + this.suggest = new Suggest(this, suggestion, this.scope); + this.scope.register([], "Escape", this.close.bind(this)); + this.inputEl.addEventListener("input", this.onInputChanged.bind(this)); + this.inputEl.addEventListener("focus", this.onInputChanged.bind(this)); + this.inputEl.addEventListener("blur", this.close.bind(this)); + this.suggestEl.on("mousedown", ".suggestion-container", (event) => { + event.preventDefault(); + }); + } + onInputChanged() { + const inputStr = this.inputEl.value; + const suggestions = this.getSuggestions(inputStr); + if (suggestions.length > 0) { + this.suggest.setSuggestions(suggestions); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + this.open(this.app.dom.appContainerEl, this.inputEl); + } + } + open(container, inputEl) { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + this.app.keymap.pushScope(this.scope); + container.appendChild(this.suggestEl); + this.popper = createPopper(inputEl, this.suggestEl, { + placement: "bottom-start", + modifiers: [ + { + name: "sameWidth", + enabled: true, + fn: ({ state, instance }) => { + // Note: positioning needs to be calculated twice - + // first pass - positioning it according to the width of the popper + // second pass - position it with the width bound to the reference element + // we need to early exit to avoid an infinite loop + const targetWidth = `${state.rects.reference.width}px`; + if (state.styles.popper.width === targetWidth) { + return; + } + state.styles.popper.width = targetWidth; + instance.update(); + }, + phase: "beforeWrite", + requires: ["computeStyles"], + }, + ], + }); + } + close() { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + this.app.keymap.popScope(this.scope); + this.suggest.setSuggestions([]); + this.popper.destroy(); + this.suggestEl.detach(); + } +} + +class FileSuggest extends TextInputSuggest { + getSuggestions(inputStr) { + const abstractFiles = this.app.vault.getAllLoadedFiles(); + const files = []; + const lowerCaseInputStr = inputStr.toLowerCase(); + abstractFiles.forEach((file) => { + if (file instanceof obsidian.TFile && + file.extension === "md" && + file.path.toLowerCase().contains(lowerCaseInputStr)) { + files.push(file); + } + }); + return files; + } + renderSuggestion(file, el) { + el.setText(file.path); + } + selectSuggestion(file) { + this.inputEl.value = file.path; + this.inputEl.trigger("input"); + this.close(); + } +} +class FolderSuggest extends TextInputSuggest { + getSuggestions(inputStr) { + const abstractFiles = this.app.vault.getAllLoadedFiles(); + const folders = []; + const lowerCaseInputStr = inputStr.toLowerCase(); + abstractFiles.forEach((folder) => { + if (folder instanceof obsidian.TFolder && + folder.path.toLowerCase().contains(lowerCaseInputStr)) { + folders.push(folder); + } + }); + return folders; + } + renderSuggestion(file, el) { + el.setText(file.path); + } + selectSuggestion(file) { + this.inputEl.value = file.path; + this.inputEl.trigger("input"); + this.close(); + } +} + +/* src/settings/NoteTemplateSetting.svelte generated by Svelte v3.35.0 */ + +function create_if_block$2(ctx) { + let div; + let t; + + return { + c() { + div = element("div"); + t = text(/*error*/ ctx[3]); + attr(div, "class", "has-error"); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, t); + }, + p(ctx, dirty) { + if (dirty & /*error*/ 8) set_data(t, /*error*/ ctx[3]); + }, + d(detaching) { + if (detaching) detach(div); + } + }; +} + +function create_fragment$2(ctx) { + let div4; + let div2; + let div0; + let t0_value = capitalize(/*periodicity*/ ctx[1]) + ""; + let t0; + let t1; + let t2; + let div1; + let t4; + let t5; + let div3; + let input; + let mounted; + let dispose; + let if_block = /*error*/ ctx[3] && create_if_block$2(ctx); + + return { + c() { + div4 = element("div"); + div2 = element("div"); + div0 = element("div"); + t0 = text(t0_value); + t1 = text(" Note Template"); + t2 = space(); + div1 = element("div"); + div1.textContent = "Choose the file to use as a template"; + t4 = space(); + if (if_block) if_block.c(); + t5 = space(); + div3 = element("div"); + input = element("input"); + attr(div0, "class", "setting-item-name"); + attr(div1, "class", "setting-item-description"); + attr(div2, "class", "setting-item-info"); + attr(input, "type", "text"); + attr(input, "spellcheck", false); + attr(input, "placeholder", "Example: folder/note"); + toggle_class(input, "has-error", !!/*error*/ ctx[3]); + attr(div3, "class", "setting-item-control"); + attr(div4, "class", "setting-item"); + }, + m(target, anchor) { + insert(target, div4, anchor); + append(div4, div2); + append(div2, div0); + append(div0, t0); + append(div0, t1); + append(div2, t2); + append(div2, div1); + append(div2, t4); + if (if_block) if_block.m(div2, null); + append(div4, t5); + append(div4, div3); + append(div3, input); + /*input_binding*/ ctx[7](input); + set_input_value(input, /*$settings*/ ctx[2][/*periodicity*/ ctx[1]].template); + + if (!mounted) { + dispose = [ + listen(input, "input", /*input_input_handler*/ ctx[8]), + listen(input, "change", /*validateOnBlur*/ ctx[5]), + listen(input, "input", /*clearError*/ ctx[6]) + ]; + + mounted = true; + } + }, + p(ctx, [dirty]) { + if (dirty & /*periodicity*/ 2 && t0_value !== (t0_value = capitalize(/*periodicity*/ ctx[1]) + "")) set_data(t0, t0_value); + + if (/*error*/ ctx[3]) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block$2(ctx); + if_block.c(); + if_block.m(div2, null); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + + if (dirty & /*$settings, periodicity*/ 6 && input.value !== /*$settings*/ ctx[2][/*periodicity*/ ctx[1]].template) { + set_input_value(input, /*$settings*/ ctx[2][/*periodicity*/ ctx[1]].template); + } + + if (dirty & /*error*/ 8) { + toggle_class(input, "has-error", !!/*error*/ ctx[3]); + } + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) detach(div4); + if (if_block) if_block.d(); + /*input_binding*/ ctx[7](null); + mounted = false; + run_all(dispose); + } + }; +} + +function instance$2($$self, $$props, $$invalidate) { + let $settings, + $$unsubscribe_settings = noop, + $$subscribe_settings = () => ($$unsubscribe_settings(), $$unsubscribe_settings = subscribe(settings, $$value => $$invalidate(2, $settings = $$value)), settings); + + $$self.$$.on_destroy.push(() => $$unsubscribe_settings()); + + + let { settings } = $$props; + $$subscribe_settings(); + let { periodicity } = $$props; + let error; + let inputEl; + + function validateOnBlur() { + $$invalidate(3, error = validateTemplate(inputEl.value)); + } + + function clearError() { + $$invalidate(3, error = ""); + } + + onMount(() => { + $$invalidate(3, error = validateTemplate(inputEl.value)); + new FileSuggest(window.app, inputEl); + }); + + function input_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + inputEl = $$value; + $$invalidate(4, inputEl); + }); + } + + function input_input_handler() { + $settings[periodicity].template = this.value; + settings.set($settings); + $$invalidate(1, periodicity); + } + + $$self.$$set = $$props => { + if ("settings" in $$props) $$subscribe_settings($$invalidate(0, settings = $$props.settings)); + if ("periodicity" in $$props) $$invalidate(1, periodicity = $$props.periodicity); + }; + + $$self.$$.update = () => { + if ($$self.$$.dirty & /*$settings, periodicity*/ 6) { + $settings[periodicity].template || ""; + } + }; + + return [ + settings, + periodicity, + $settings, + error, + inputEl, + validateOnBlur, + clearError, + input_binding, + input_input_handler + ]; +} + +class NoteTemplateSetting extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$2, create_fragment$2, safe_not_equal, { settings: 0, periodicity: 1 }); + } +} + +/* src/settings/NoteFolderSetting.svelte generated by Svelte v3.35.0 */ + +function create_if_block$1(ctx) { + let div; + let t; + + return { + c() { + div = element("div"); + t = text(/*error*/ ctx[4]); + attr(div, "class", "has-error"); + }, + m(target, anchor) { + insert(target, div, anchor); + append(div, t); + }, + p(ctx, dirty) { + if (dirty & /*error*/ 16) set_data(t, /*error*/ ctx[4]); + }, + d(detaching) { + if (detaching) detach(div); + } + }; +} + +function create_fragment$1(ctx) { + let div4; + let div2; + let div0; + let t1; + let div1; + let t2; + let t3; + let t4; + let t5; + let t6; + let div3; + let input; + let mounted; + let dispose; + let if_block = /*error*/ ctx[4] && create_if_block$1(ctx); + + return { + c() { + div4 = element("div"); + div2 = element("div"); + div0 = element("div"); + div0.textContent = "Note Folder"; + t1 = space(); + div1 = element("div"); + t2 = text("New "); + t3 = text(/*periodicity*/ ctx[1]); + t4 = text(" notes will be placed here"); + t5 = space(); + if (if_block) if_block.c(); + t6 = space(); + div3 = element("div"); + input = element("input"); + attr(div0, "class", "setting-item-name"); + attr(div1, "class", "setting-item-description"); + attr(div2, "class", "setting-item-info"); + attr(input, "type", "text"); + attr(input, "spellcheck", false); + attr(input, "placeholder", "Example: folder 1/folder 2"); + toggle_class(input, "has-error", !!/*error*/ ctx[4]); + attr(div3, "class", "setting-item-control"); + attr(div4, "class", "setting-item"); + }, + m(target, anchor) { + insert(target, div4, anchor); + append(div4, div2); + append(div2, div0); + append(div2, t1); + append(div2, div1); + append(div1, t2); + append(div1, t3); + append(div1, t4); + append(div2, t5); + if (if_block) if_block.m(div2, null); + append(div4, t6); + append(div4, div3); + append(div3, input); + set_input_value(input, /*$settings*/ ctx[2][/*periodicity*/ ctx[1]].folder); + /*input_binding*/ ctx[8](input); + + if (!mounted) { + dispose = [ + listen(input, "input", /*input_input_handler*/ ctx[7]), + listen(input, "change", /*onChange*/ ctx[5]), + listen(input, "input", /*clearError*/ ctx[6]) + ]; + + mounted = true; + } + }, + p(ctx, [dirty]) { + if (dirty & /*periodicity*/ 2) set_data(t3, /*periodicity*/ ctx[1]); + + if (/*error*/ ctx[4]) { + if (if_block) { + if_block.p(ctx, dirty); + } else { + if_block = create_if_block$1(ctx); + if_block.c(); + if_block.m(div2, null); + } + } else if (if_block) { + if_block.d(1); + if_block = null; + } + + if (dirty & /*$settings, periodicity*/ 6 && input.value !== /*$settings*/ ctx[2][/*periodicity*/ ctx[1]].folder) { + set_input_value(input, /*$settings*/ ctx[2][/*periodicity*/ ctx[1]].folder); + } + + if (dirty & /*error*/ 16) { + toggle_class(input, "has-error", !!/*error*/ ctx[4]); + } + }, + i: noop, + o: noop, + d(detaching) { + if (detaching) detach(div4); + if (if_block) if_block.d(); + /*input_binding*/ ctx[8](null); + mounted = false; + run_all(dispose); + } + }; +} + +function instance$1($$self, $$props, $$invalidate) { + let $settings, + $$unsubscribe_settings = noop, + $$subscribe_settings = () => ($$unsubscribe_settings(), $$unsubscribe_settings = subscribe(settings, $$value => $$invalidate(2, $settings = $$value)), settings); + + $$self.$$.on_destroy.push(() => $$unsubscribe_settings()); + + + let { settings } = $$props; + $$subscribe_settings(); + let { periodicity } = $$props; + let inputEl; + let error; + + function onChange() { + $$invalidate(4, error = validateFolder(inputEl.value)); + } + + function clearError() { + $$invalidate(4, error = ""); + } + + onMount(() => { + $$invalidate(4, error = validateFolder(inputEl.value)); + new FolderSuggest(window.app, inputEl); + }); + + function input_input_handler() { + $settings[periodicity].folder = this.value; + settings.set($settings); + $$invalidate(1, periodicity); + } + + function input_binding($$value) { + binding_callbacks[$$value ? "unshift" : "push"](() => { + inputEl = $$value; + $$invalidate(3, inputEl); + }); + } + + $$self.$$set = $$props => { + if ("settings" in $$props) $$subscribe_settings($$invalidate(0, settings = $$props.settings)); + if ("periodicity" in $$props) $$invalidate(1, periodicity = $$props.periodicity); + }; + + $$self.$$.update = () => { + if ($$self.$$.dirty & /*$settings, periodicity*/ 6) { + $settings[periodicity].folder || ""; + } + }; + + return [ + settings, + periodicity, + $settings, + inputEl, + error, + onChange, + clearError, + input_input_handler, + input_binding + ]; +} + +class NoteFolderSetting extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance$1, create_fragment$1, safe_not_equal, { settings: 0, periodicity: 1 }); + } +} + +/* src/settings/SettingsTab.svelte generated by Svelte v3.35.0 */ + +function get_each_context(ctx, list, i) { + const child_ctx = ctx.slice(); + child_ctx[9] = list[i]; + return child_ctx; +} + +// (33:0) {#if $settingsStore.showGettingStartedBanner} +function create_if_block_1(ctx) { + let gettingstartedbanner; + let current; + + gettingstartedbanner = new GettingStartedBanner({ + props: { + migrateDailyNoteSettings: /*migrateDailyNoteSettings*/ ctx[2], + settings: /*settingsStore*/ ctx[1], + handleTeardown: /*func*/ ctx[6] + } + }); + + return { + c() { + create_component(gettingstartedbanner.$$.fragment); + }, + m(target, anchor) { + mount_component(gettingstartedbanner, target, anchor); + current = true; + }, + p(ctx, dirty) { + const gettingstartedbanner_changes = {}; + if (dirty & /*$settingsStore*/ 1) gettingstartedbanner_changes.handleTeardown = /*func*/ ctx[6]; + gettingstartedbanner.$set(gettingstartedbanner_changes); + }, + i(local) { + if (current) return; + transition_in(gettingstartedbanner.$$.fragment, local); + current = true; + }, + o(local) { + transition_out(gettingstartedbanner.$$.fragment, local); + current = false; + }, + d(detaching) { + destroy_component(gettingstartedbanner, detaching); + } + }; +} + +// (62:2) {#if $settingsStore[periodicity].enabled} +function create_if_block(ctx) { + let div; + let noteformatsetting; + let t0; + let notetemplatesetting; + let t1; + let notefoldersetting; + let t2; + let div_intro; + let div_outro; + let current; + + noteformatsetting = new NoteFormatSetting({ + props: { + periodicity: /*periodicity*/ ctx[9], + settings: /*settingsStore*/ ctx[1] + } + }); + + notetemplatesetting = new NoteTemplateSetting({ + props: { + periodicity: /*periodicity*/ ctx[9], + settings: /*settingsStore*/ ctx[1] + } + }); + + notefoldersetting = new NoteFolderSetting({ + props: { + periodicity: /*periodicity*/ ctx[9], + settings: /*settingsStore*/ ctx[1] + } + }); + + return { + c() { + div = element("div"); + create_component(noteformatsetting.$$.fragment); + t0 = space(); + create_component(notetemplatesetting.$$.fragment); + t1 = space(); + create_component(notefoldersetting.$$.fragment); + t2 = space(); + }, + m(target, anchor) { + insert(target, div, anchor); + mount_component(noteformatsetting, div, null); + append(div, t0); + mount_component(notetemplatesetting, div, null); + append(div, t1); + mount_component(notefoldersetting, div, null); + append(div, t2); + current = true; + }, + p: noop, + i(local) { + if (current) return; + transition_in(noteformatsetting.$$.fragment, local); + transition_in(notetemplatesetting.$$.fragment, local); + transition_in(notefoldersetting.$$.fragment, local); + + add_render_callback(() => { + if (div_outro) div_outro.end(1); + if (!div_intro) div_intro = create_in_transition(div, slide, {}); + div_intro.start(); + }); + + current = true; + }, + o(local) { + transition_out(noteformatsetting.$$.fragment, local); + transition_out(notetemplatesetting.$$.fragment, local); + transition_out(notefoldersetting.$$.fragment, local); + if (div_intro) div_intro.invalidate(); + div_outro = create_out_transition(div, slide, {}); + current = false; + }, + d(detaching) { + if (detaching) detach(div); + destroy_component(noteformatsetting); + destroy_component(notetemplatesetting); + destroy_component(notefoldersetting); + if (detaching && div_outro) div_outro.end(); + } + }; +} + +// (42:0) {#each periodicities as periodicity} +function create_each_block(ctx) { + let div4; + let div1; + let div0; + let h3; + let t0_value = capitalize(/*periodicity*/ ctx[9]) + ""; + let t0; + let t1; + let t2; + let div3; + let div2; + let t3; + let if_block_anchor; + let current; + let mounted; + let dispose; + + function click_handler() { + return /*click_handler*/ ctx[7](/*periodicity*/ ctx[9]); + } + + let if_block = /*$settingsStore*/ ctx[0][/*periodicity*/ ctx[9]].enabled && create_if_block(ctx); + + return { + c() { + div4 = element("div"); + div1 = element("div"); + div0 = element("div"); + h3 = element("h3"); + t0 = text(t0_value); + t1 = text(" Notes"); + t2 = space(); + div3 = element("div"); + div2 = element("div"); + t3 = space(); + if (if_block) if_block.c(); + if_block_anchor = empty(); + attr(div0, "class", "setting-item-name"); + attr(div1, "class", "setting-item-info"); + attr(div2, "class", "checkbox-container"); + toggle_class(div2, "is-enabled", /*$settingsStore*/ ctx[0][/*periodicity*/ ctx[9]].enabled); + attr(div3, "class", "setting-item-control"); + attr(div4, "class", "setting-item setting-item-heading"); + }, + m(target, anchor) { + insert(target, div4, anchor); + append(div4, div1); + append(div1, div0); + append(div0, h3); + append(h3, t0); + append(h3, t1); + append(div4, t2); + append(div4, div3); + append(div3, div2); + insert(target, t3, anchor); + if (if_block) if_block.m(target, anchor); + insert(target, if_block_anchor, anchor); + current = true; + + if (!mounted) { + dispose = listen(div2, "click", click_handler); + mounted = true; + } + }, + p(new_ctx, dirty) { + ctx = new_ctx; + + if (dirty & /*$settingsStore, periodicities*/ 9) { + toggle_class(div2, "is-enabled", /*$settingsStore*/ ctx[0][/*periodicity*/ ctx[9]].enabled); + } + + if (/*$settingsStore*/ ctx[0][/*periodicity*/ ctx[9]].enabled) { + if (if_block) { + if_block.p(ctx, dirty); + + if (dirty & /*$settingsStore*/ 1) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(if_block_anchor.parentNode, if_block_anchor); + } + } else if (if_block) { + group_outros(); + + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + + check_outros(); + } + }, + i(local) { + if (current) return; + transition_in(if_block); + current = true; + }, + o(local) { + transition_out(if_block); + current = false; + }, + d(detaching) { + if (detaching) detach(div4); + if (detaching) detach(t3); + if (if_block) if_block.d(detaching); + if (detaching) detach(if_block_anchor); + mounted = false; + dispose(); + } + }; +} + +function create_fragment(ctx) { + let t; + let each_1_anchor; + let current; + let if_block = /*$settingsStore*/ ctx[0].showGettingStartedBanner && create_if_block_1(ctx); + let each_value = /*periodicities*/ ctx[3]; + let each_blocks = []; + + for (let i = 0; i < each_value.length; i += 1) { + each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i)); + } + + const out = i => transition_out(each_blocks[i], 1, 1, () => { + each_blocks[i] = null; + }); + + return { + c() { + if (if_block) if_block.c(); + t = space(); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].c(); + } + + each_1_anchor = empty(); + }, + m(target, anchor) { + if (if_block) if_block.m(target, anchor); + insert(target, t, anchor); + + for (let i = 0; i < each_blocks.length; i += 1) { + each_blocks[i].m(target, anchor); + } + + insert(target, each_1_anchor, anchor); + current = true; + }, + p(ctx, [dirty]) { + if (/*$settingsStore*/ ctx[0].showGettingStartedBanner) { + if (if_block) { + if_block.p(ctx, dirty); + + if (dirty & /*$settingsStore*/ 1) { + transition_in(if_block, 1); + } + } else { + if_block = create_if_block_1(ctx); + if_block.c(); + transition_in(if_block, 1); + if_block.m(t.parentNode, t); + } + } else if (if_block) { + group_outros(); + + transition_out(if_block, 1, 1, () => { + if_block = null; + }); + + check_outros(); + } + + if (dirty & /*periodicities, settingsStore, $settingsStore, capitalize*/ 11) { + each_value = /*periodicities*/ ctx[3]; + let i; + + for (i = 0; i < each_value.length; i += 1) { + const child_ctx = get_each_context(ctx, each_value, i); + + if (each_blocks[i]) { + each_blocks[i].p(child_ctx, dirty); + transition_in(each_blocks[i], 1); + } else { + each_blocks[i] = create_each_block(child_ctx); + each_blocks[i].c(); + transition_in(each_blocks[i], 1); + each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor); + } + } + + group_outros(); + + for (i = each_value.length; i < each_blocks.length; i += 1) { + out(i); + } + + check_outros(); + } + }, + i(local) { + if (current) return; + transition_in(if_block); + + for (let i = 0; i < each_value.length; i += 1) { + transition_in(each_blocks[i]); + } + + current = true; + }, + o(local) { + transition_out(if_block); + each_blocks = each_blocks.filter(Boolean); + + for (let i = 0; i < each_blocks.length; i += 1) { + transition_out(each_blocks[i]); + } + + current = false; + }, + d(detaching) { + if (if_block) if_block.d(detaching); + if (detaching) detach(t); + destroy_each(each_blocks, detaching); + if (detaching) detach(each_1_anchor); + } + }; +} + +function instance($$self, $$props, $$invalidate) { + let $settingsStore; + + let { settings } = $$props; + let { onUpdateSettings } = $$props; + let settingsStore = writable(settings); + component_subscribe($$self, settingsStore, value => $$invalidate(0, $settingsStore = value)); + const unsubscribeFromSettings = settingsStore.subscribe(onUpdateSettings); + + function migrateDailyNoteSettings() { + const dailyNoteSettings = getLegacyDailyNoteSettings(); + + settingsStore.update(old => Object.assign(Object.assign({}, old), { + daily: Object.assign(Object.assign({}, dailyNoteSettings), { enabled: true }), + hasMigratedDailyNoteSettings: true + })); + } + + const periodicities = ["daily", "weekly", "monthly", "quarterly", "yearly"]; + + onDestroy(() => { + unsubscribeFromSettings(); + }); + + const func = () => { + set_store_value(settingsStore, $settingsStore.showGettingStartedBanner = false, $settingsStore); + }; + + const click_handler = periodicity => { + set_store_value(settingsStore, $settingsStore[periodicity].enabled = !$settingsStore[periodicity].enabled, $settingsStore); + }; + + $$self.$$set = $$props => { + if ("settings" in $$props) $$invalidate(4, settings = $$props.settings); + if ("onUpdateSettings" in $$props) $$invalidate(5, onUpdateSettings = $$props.onUpdateSettings); + }; + + return [ + $settingsStore, + settingsStore, + migrateDailyNoteSettings, + periodicities, + settings, + onUpdateSettings, + func, + click_handler + ]; +} + +class SettingsTab extends SvelteComponent { + constructor(options) { + super(); + init(this, options, instance, create_fragment, safe_not_equal, { settings: 4, onUpdateSettings: 5 }); + } +} + +const DEFAULT_SETTINGS = Object.freeze({ + format: "", + template: "", + folder: "", +}); +class PeriodicNotesSettingsTab extends obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.plugin = plugin; + } + display() { + this.containerEl.empty(); + this.view = new SettingsTab({ + target: this.containerEl, + props: { + settings: this.plugin.settings, + onUpdateSettings: this.plugin.updateSettings, + }, + }); + } +} + +class PeriodicNotesPlugin extends obsidian.Plugin { + async onload() { + this.ribbonEl = null; + this.updateSettings = this.updateSettings.bind(this); + await this.loadSettings(); + this.addSettingTab(new PeriodicNotesSettingsTab(this.app, this)); + this.app.workspace.onLayoutReady(this.onLayoutReady.bind(this)); + obsidian.addIcon("calendar-day", calendarDayIcon); + obsidian.addIcon("calendar-week", calendarWeekIcon); + obsidian.addIcon("calendar-month", calendarMonthIcon); + obsidian.addIcon("calendar-quarter", calendarQuarterIcon); + obsidian.addIcon("calendar-year", calendarYearIcon); + } + onLayoutReady() { + // If the user has Calendar Weekly Notes settings, migrate them automatically, + // since the functionality will be deprecated. + if (this.isInitialLoad && hasLegacyWeeklyNoteSettings()) { + this.migrateWeeklySettings(); + this.settings.weekly.enabled = true; + } + this.configureRibbonIcons(); + this.configureCommands(); + } + migrateWeeklySettings() { + const calendarSettings = getLegacyWeeklyNoteSettings(); + this.updateSettings(Object.assign(Object.assign({}, this.settings), { + weekly: Object.assign(Object.assign({}, calendarSettings), { enabled: true }), + hasMigratedWeeklyNoteSettings: true, + })); + } + configureRibbonIcons() { + var _a; + (_a = this.ribbonEl) === null || _a === void 0 ? void 0 : _a.detach(); + const configuredPeriodicities = [ + "daily", + "weekly", + "monthly", + "quarterly", + "yearly", + ].filter((periodicity) => this.settings[periodicity].enabled); + if (configuredPeriodicities.length) { + const periodicity = configuredPeriodicities[0]; + const config = periodConfigs[periodicity]; + this.ribbonEl = this.addRibbonIcon(`calendar-${config.unitOfTime}`, `Open ${config.relativeUnit}`, (event) => openPeriodicNote(periodicity, window.moment(), isMetaPressed(event))); + this.ribbonEl.addEventListener("contextmenu", (ev) => { + showFileMenu(this.app, this.settings, { + x: ev.pageX, + y: ev.pageY, + }); + }); + } + } + configureCommands() { + // Remove disabled commands + ["daily", "weekly", "monthly", "quarterly", "yearly"] + .filter((periodicity) => !this.settings[periodicity].enabled) + .forEach((periodicity) => { + getCommands(periodicity).forEach((command) => + // eslint-disable-next-line @typescript-eslint/no-explicit-any + this.app.commands.removeCommand(`periodic-notes:${command.id}`)); + }); + // register enabled commands + ["daily", "weekly", "monthly", "quarterly", "yearly"] + .filter((periodicity) => this.settings[periodicity].enabled) + .forEach((periodicity) => { + getCommands(periodicity).forEach(this.addCommand.bind(this)); + }); + } + async loadSettings() { + const settings = await this.loadData(); + if (!settings) { + this.isInitialLoad = true; + } + this.settings = Object.assign({}, { + showGettingStartedBanner: true, + hasMigratedDailyNoteSettings: false, + hasMigratedWeeklyNoteSettings: false, + daily: Object.assign({}, DEFAULT_SETTINGS), + weekly: Object.assign({}, DEFAULT_SETTINGS), + monthly: Object.assign({}, DEFAULT_SETTINGS), + quarterly: Object.assign({}, DEFAULT_SETTINGS), + yearly: Object.assign({}, DEFAULT_SETTINGS), + }, settings || {}); + } + onSettingsUpdate() { + this.configureCommands(); + this.configureRibbonIcons(); + // Integrations (i.e. Calendar Plugin) can listen for changes to settings + this.app.workspace.trigger(SETTINGS_UPDATED); + } + async updateSettings(val) { + this.settings = val; + await this.saveData(this.settings); + this.onSettingsUpdate(); + } +} + +module.exports = PeriodicNotesPlugin; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/periodic-notes/manifest.json b/.obsidian/plugins/periodic-notes/manifest.json new file mode 100644 index 0000000..f34394e --- /dev/null +++ b/.obsidian/plugins/periodic-notes/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "periodic-notes", + "name": "Periodic Notes", + "description": "Create/manage your daily, weekly, and monthly notes", + "version": "0.0.17", + "author": "Liam Cain", + "authorUrl": "https://github.com/liamcain/", + "isDesktopOnly": false, + "minAppVersion": "0.10.11" +} diff --git a/.obsidian/plugins/periodic-notes/styles.css b/.obsidian/plugins/periodic-notes/styles.css new file mode 100644 index 0000000..d388888 --- /dev/null +++ b/.obsidian/plugins/periodic-notes/styles.css @@ -0,0 +1,30 @@ +.periodic-modal { + min-width: 40vw; +} + +.settings-banner { + background-color: var(--background-primary-alt); + border-radius: 8px; + border: 1px solid var(--background-modifier-border); + margin-bottom: 1em; + margin-top: 1em; + padding: 1.5em; + text-align: left; +} + +.settings-banner h3 { + margin-top: 0; +} + +.settings-banner h4 { + margin-bottom: 0.25em; +} + +.has-error { + color: var(--text-error); +} + +input.has-error { + color: var(--text-error); + border-color: var(--text-error); +} diff --git a/.obsidian/plugins/simple-embeds/genericPreviewCache.json b/.obsidian/plugins/simple-embeds/genericPreviewCache.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/.obsidian/plugins/simple-embeds/genericPreviewCache.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/.obsidian/plugins/simple-embeds/main.js b/.obsidian/plugins/simple-embeds/main.js new file mode 100644 index 0000000..71c51fa --- /dev/null +++ b/.obsidian/plugins/simple-embeds/main.js @@ -0,0 +1,29773 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ROLLUP +if you want to view the source visit the plugins github repository +*/ + +'use strict'; + +var obsidian = require('obsidian'); +var require$$2$1 = require('url'); +var state = require('@codemirror/state'); +var view = require('@codemirror/view'); + +function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } + +var require$$2__default = /*#__PURE__*/_interopDefaultLegacy(require$$2$1); + +/****************************************************************************** +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()); + }); +} + +typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) { + var e = new Error(message); + return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e; +}; + +const APPLE_MUSIC_LINK = new RegExp(/https:\/\/(?:embed\.)?music\.apple\.com\/.+\/(?:playlist|album)\/.+\/.+/); +const APPLE_MUSIC_SONG_LINK = new RegExp(/https:\/\/(?:embed\.)?music\.apple\.com\/.+\/(?:playlist|album)\/.+\/.+\?i=\d+/); +class AppleMusicEmbed { + constructor() { + this.name = "Apple Music"; + this.enabledKey = "replaceAppleMusicLinks"; + this.regex = APPLE_MUSIC_LINK; + } + createEmbed(link, container) { + const isSong = APPLE_MUSIC_SONG_LINK.test(link); + const iframe = document.createElement("iframe"); + iframe.src = link.replace("https://music.apple", "https://embed.music.apple"); + iframe.setAttr("frameborder", "0"); + iframe.allow = "autoplay *; encrypted-media *; fullscreen *"; + iframe.setAttr("sandbox", "allow-forms allow-popups allow-same-origin allow-scripts allow-top-navigation-by-user-activation"); + iframe.height = isSong ? "150" : "450"; + iframe.style.width = "100%"; + iframe.style.overflow = "hidden"; + iframe.style.background = "transparent"; + container.classList.add("apple-music"); + container.appendChild(iframe); + return container; + } +} + +const APPLE_PODCAST_LINK = new RegExp(/https:\/\/podcasts.apple.com\/(?<locale>[a-z-]+)\/podcast\/(?<content>.*\/id[0-9]+(?:\?i=[0-9]+)?)/); +class ApplePodcastsEmbed { + constructor() { + this.name = "Apple Podcasts"; + this.enabledKey = "replaceApplePodcastsLinks"; + this.regex = APPLE_PODCAST_LINK; + } + createEmbed(link, container, settings, currentTheme) { + const iframe = document.createElement("iframe"); + const matches = link.match(APPLE_PODCAST_LINK); + const locale = matches.groups.locale; + const content = matches.groups.content; + const isEpisode = content.contains("?i="); + const src = `https://embed.podcasts.apple.com/${locale}/podcast/${content}${isEpisode ? "&" : "?"}theme=${currentTheme}`; + iframe.src = src; + iframe.setAttribute("frameborder", "0"); + iframe.setAttribute("sandbox", "allow-forms allow-popups allow-same-origin allow-scripts allow-top-navigation-by-user-activation"); + iframe.allow = "autoplay *; encrypted-media *;"; + iframe.height = isEpisode ? "175px" : "450px"; + container.appendChild(iframe); + container.classList.add("apple-podcasts"); + return container; + } + updateTheme(theme, settings) { + const podcastEmbeds = document.querySelectorAll(".embed-container.apple-podcasts iframe"); + podcastEmbeds.forEach((embed) => { + let src = embed.src; + if (theme === "dark") { + src = src.replace("theme=light", "theme=dark"); + } + else { + src = src.replace("theme=dark", "theme=light"); + } + embed.src = src; + }); + } +} + +const APPLE_TV_LINK = new RegExp(/https:\/\/tv.apple.com\/(?<locale>[a-z-]+)\/(?<type>episode|show|movie)\/(?<content>\S*)/); +class AppleTVEmbed { + constructor() { + this.name = "Apple TV+"; + this.enabledKey = "replaceAppleTVLinks"; + this.regex = APPLE_TV_LINK; + } + createEmbed(link, container, settings, currentTheme) { + const wrapper = document.createElement("div"); + wrapper.classList.add("video-wrapper"); + const iframe = document.createElement("iframe"); + const fakeLink = document.createElement("a"); + fakeLink.href = link; + fakeLink.classList.add("fake-link"); + const matches = link.match(APPLE_TV_LINK); + const locale = matches.groups.locale; + const type = matches.groups.type; + const content = matches.groups.content; + const src = `https://embed.tv.apple.com/${locale}/${type}/${content}`; + iframe.src = src; + iframe.setAttribute("frameborder", "0"); + iframe.setAttribute("sandbox", "allow-forms allow-popups allow-same-origin allow-scripts allow-top-navigation-by-user-activation"); + iframe.allow = "autoplay *; encrypted-media *;"; + wrapper.appendChild(iframe); + wrapper.appendChild(fakeLink); + container.appendChild(wrapper); + container.classList.add("apple-tv"); + return container; + } +} + +const BANDCAMP_LINK = new RegExp(/http(s)?:\/\/([a-z0-9-]+\.)?bandcamp\.com\/(?<type>album|track)\/[\w&$+,\/:;=?@#\._~%-]+/); +const ID = new RegExp(/<!-- (track|album) id (?<id>\d+)/); +class BandcampEmbed { + constructor() { + this.name = "Bandcamp"; + this.enabledKey = "replaceBandcampLinks"; + this.regex = BANDCAMP_LINK; + } + createEmbed(link, container) { + const iframe = document.createElement("iframe"); + const type = link.match(BANDCAMP_LINK).groups.type; + const isAlbum = type === "album"; + obsidian.requestUrl({ url: link }).then(({ text }) => { + var _a; + const id = (_a = text.match(ID).groups) === null || _a === void 0 ? void 0 : _a.id; + if (id) { + iframe.src = `https://bandcamp.com/EmbeddedPlayer/${type}=${id}/tracklist=${isAlbum}/artwork=small/${isAlbum ? "size=large/" : ""}`; + } + }); + iframe.setAttribute("frameborder", "0"); + iframe.setAttribute("seamless", ""); + iframe.height = isAlbum ? "472" : "120"; + iframe.width = "400"; + container.appendChild(iframe); + container.classList.add("bandcamp"); + return container; + } +} + +const CODEPEN_LINK = new RegExp(/https:\/\/codepen\.io\/(\w+)\/(?:pen)\/(\w+)/); +class CodepenEmbed { + constructor() { + this.name = "CodePen"; + this.enabledKey = "replaceCodepenLinks"; + this.regex = CODEPEN_LINK; + } + createEmbed(link, container, settings) { + this._ensureCodepenLoaded(); + const user = link.match(CODEPEN_LINK)[1]; + const slug = link.match(CODEPEN_LINK)[2]; + const defaultTabs = [ + settings.codepenDefaultTab, + settings.codepenShowResult ? "result" : false, + ].filter(Boolean); + container.classList.add("codepen"); + container.dataset["themeId"] = settings.codepenTheme; + container.dataset["height"] = "300"; + container.dataset["defaultTab"] = defaultTabs.join(","); + container.dataset["user"] = user; + container.dataset["slugHash"] = slug; + if (settings.codepenClickToLoad) { + container.dataset["preview"] = "true"; + } + if (settings.codepenEditable) { + container.dataset["editable"] = "true"; + } + container.classList.add("codepen"); + return container; + } + afterAllEmbeds() { + setTimeout(() => { + var _a; + (_a = window.__CPEmbed) === null || _a === void 0 ? void 0 : _a.call(window, ".codepen"); + }); + } + updateTheme(theme, settings) { + if (settings.codepenTheme !== "auto") + return; + const codepenEmbeds = document.querySelectorAll(".cp_embed_wrapper iframe"); + codepenEmbeds.forEach((embed) => { + let src = embed.src; + if (theme === "dark") { + src = src.replace("theme-id=light", "theme=dark"); + } + else { + src = src.replace("theme-id=dark", "theme=light"); + } + embed.src = src; + }); + } + _ensureCodepenLoaded() { + (function (d, s, id) { + var js, fjs = d.getElementsByTagName(s)[0]; + if (d.getElementById(id)) + return; + js = d.createElement(s); + js.id = id; + js.src = "https://cpwebassets.codepen.io/assets/embed/ei.js"; + js.async = true; + fjs.parentNode.insertBefore(js, fjs); + })(document, "script", "ei-codepen"); + } + createAdditionalSettings(containerEl, settings, saveSettings) { + const themeSetting = new obsidian.Setting(containerEl) + .setName("Theme") + .addDropdown((dropdown) => { + dropdown.addOptions({ + auto: "Automatic", + dark: "Dark", + light: "Light", + }) + .setValue(settings.codepenTheme) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield saveSettings({ codepenTheme: value }); + })); + }); + const defaultTabSetting = new obsidian.Setting(containerEl) + .setName("Default tab") + .addDropdown((dropdown) => { + dropdown.addOptions({ html: "HTML", css: "CSS", js: "JS" }) + .setValue(settings.codepenDefaultTab) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield saveSettings({ codepenDefaultTab: value }); + })); + }); + const showResultSetting = new obsidian.Setting(containerEl) + .setName("Show result") + .addToggle((toggle) => { + toggle + .setValue(settings.codepenShowResult) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield saveSettings({ codepenShowResult: value }); + })); + }); + const clickToLoadSetting = new obsidian.Setting(containerEl) + .setName("Click to load") + .addToggle((toggle) => { + toggle + .setValue(settings.codepenClickToLoad) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield saveSettings({ codepenClickToLoad: value }); + })); + }); + const editableSetting = new obsidian.Setting(containerEl) + .setName("Codepen editable") + .addToggle((toggle) => { + toggle + .setValue(settings.codepenEditable) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield saveSettings({ codepenEditable: value }); + })); + }); + return [ + themeSetting, + defaultTabSetting, + showResultSetting, + clickToLoadSetting, + editableSetting, + ]; + } +} + +const FLAT_IO_LINK = new RegExp(/https:\/\/flat\.io\/(?:score|embed)\/.*/); +class FlatIOEmbed { + constructor() { + this.name = "Flat.io"; + this.enabledKey = "replaceFlatIOLinks"; + this.regex = FLAT_IO_LINK; + } + createEmbed(link, container) { + const iframe = document.createElement("iframe"); + iframe.src = link.replace("/score/", "/embed/"); + iframe.setAttribute("frameborder", "0"); + iframe.allow = "fullscreen"; + container.appendChild(iframe); + container.classList.add("flat_io"); + return container; + } +} + +const GITHUB_GIST = new RegExp(/https:\/\/gist.github\.com\/[a-zA-Z\d](?:[a-zA-z\d]|-(?=[a-zA-Z\d])){0,38}\/[a-z0-9]{32}/); +class GitHubGistEmbed { + constructor() { + this.name = "GitHub Gists"; + this.enabledKey = "replaceGitHubGistLinks"; + this.regex = GITHUB_GIST; + } + createEmbed(link, container) { + const iframe = document.createElement("iframe"); + iframe.srcdoc = `<script src="${link}.js"></script>`; + iframe.setAttribute("frameborder", "0"); + iframe.onload = () => { + iframe.style.height = + `${iframe.contentWindow.document.documentElement.scrollHeight}px`; + }; + container.appendChild(iframe); + container.classList.add("github_gist"); + return container; + } +} + +const INSTAGRAM_LINK = new RegExp(/https:\/\/www\.instagram\.com\/(?:p|tv|reel)\/(\w+)/); +class InstagramEmbed { + constructor() { + this.name = "Instagram"; + this.enabledKey = "replaceInstagramLinks"; + this.regex = INSTAGRAM_LINK; + } + createEmbed(link, container) { + this._ensureInstagramLoaded(); + const blockquote = document.createElement("blockquote"); + blockquote.classList.add("instagram-media"); + blockquote.dataset["instgrmCaptioned"] = ""; + blockquote.dataset["instgrmPermalink"] = link; + blockquote.dataset["instgrmVersion"] = "13"; + container.appendChild(blockquote); + container.classList.add("instagram"); + return container; + } + afterAllEmbeds() { + setTimeout(() => { + var _a; + (_a = window.instgrm) === null || _a === void 0 ? void 0 : _a.Embeds.process(); + }); + } + _ensureInstagramLoaded() { + (function (d, s, id) { + var js, fjs = d.getElementsByTagName(s)[0]; + if (d.getElementById(id)) + return; + js = d.createElement(s); + js.id = id; + js.src = "http://www.instagram.com/embed.js"; + fjs.parentNode.insertBefore(js, fjs); + })(document, "script", "instagram-wjs"); + } +} + +const NOTEFLIGHT_LINK = new RegExp(/https:\/\/(?:www\.)?noteflight\.com\/(?:(?:scores\/view)|embed)\/.*/g); +class NoteflightEmbed { + constructor() { + this.name = "Noteflight"; + this.enabledKey = "replaceNoteflightLinks"; + this.regex = NOTEFLIGHT_LINK; + } + createEmbed(link, container) { + const iframe = document.createElement("iframe"); + iframe.src = link.replace("/scores/view/", "/embed/"); + iframe.setAttribute("frameborder", "0"); + iframe.allow = "fullscreen"; + container.appendChild(iframe); + container.classList.add("noteflight"); + return container; + } +} + +const REDDIT_LINK = new RegExp(/https:\/\/(?:www\.)?reddit\.com\/r\/(?<comment>.+)/); +class RedditEmbed { + constructor() { + this.name = "Reddit"; + this.enabledKey = "replaceRedditLinks"; + this.regex = REDDIT_LINK; + } + createEmbed(link, container, settings, currentTheme) { + const theme = settings.redditTheme === "dark" ? "dark" : "light"; + const blockquote = document.createElement("blockquote"); + blockquote.classList.add("reddit-embed-bq"); + blockquote.setAttribute("data-embed-height", "500"); + blockquote.setAttribute("data-embed-locale", settings.redditLocale || "auto"); + blockquote.setAttribute("data-embed-showmedia", settings.redditHideMedia ? "false" : "true"); + blockquote.setAttribute("data-embed-theme", theme); + blockquote.setAttribute("data-embed-showedits", settings.redditHideEdits ? "false" : "true"); + blockquote.setAttribute("data-embed-showusername", settings.redditHideUsername ? "false" : "true"); + blockquote.setAttribute("data-embed-created", new Date().toISOString()); + const aLink = document.createElement("a"); + aLink.href = link; + aLink.textContent = link; + blockquote.appendChild(aLink); + if (theme === "dark" || currentTheme === "dark") { + blockquote.setAttribute("data-embed-theme", "dark"); + } + const script = document.createElement("script"); + script.async = true; + script.src = `https://embed.reddit.com/widgets.js`; + script.setAttribute("charset", "UTF-8"); + const newContainer = document.createElement("div"); + newContainer.appendChild(blockquote); + newContainer.appendChild(script); + container.replaceWith(newContainer); + return newContainer; + } + updateTheme(theme, settings) { + this.blockquotes.forEach((blockquote) => { + blockquote.classList.toggle("dark", settings.redditTheme === "dark" || theme === "dark"); + }); + } + createAdditionalSettings(containerEl, settings, saveSettings) { + const settingsList = []; + // Language setting + const languageSetting = new obsidian.Setting(containerEl) + .setName("Select Display Text Language") + .addDropdown((dropdown) => { + dropdown + .addOptions({ + auto: "Automatic", + "en-EN": "English", + "fr-FR": "French", + "de-DE": "German", + "es-MX": "Mexican Spanish", + "es-ES": "Spain Spanish", + "pt-BR": "Brazilian Portuguese", + "pt-PT": "Portugal Portuguese", + }) + .setValue(settings.redditLocale || "auto") + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield saveSettings({ redditLocale: value }); + })); + }); + settingsList.push(languageSetting); + // Hide post content setting + const hidePostContentSetting = new obsidian.Setting(containerEl) + .setName("Hide Post Content") + .addToggle((toggle) => { + toggle + .setValue(settings.redditHideMedia || false) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield saveSettings({ redditHideMedia: value }); + })); + }); + settingsList.push(hidePostContentSetting); + // Dark mode setting + const darkModeSetting = new obsidian.Setting(containerEl) + .setName("Display in Dark Mode") + .addToggle((toggle) => { + toggle + .setValue(settings.redditTheme === "dark") + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield saveSettings({ redditTheme: value ? "dark" : "auto" }); + })); + }); + settingsList.push(darkModeSetting); + // Hide if edited setting + const hideIfEditedSetting = new obsidian.Setting(containerEl) + .setName("Hide If Edited") + .addToggle((toggle) => { + toggle + .setValue(settings.redditHideEdits || false) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield saveSettings({ redditHideEdits: value }); + })); + }); + settingsList.push(hideIfEditedSetting); + // Hide username setting + const hideUsernameSetting = new obsidian.Setting(containerEl) + .setName("Hide Username") + .addToggle((toggle) => { + toggle + .setValue(settings.redditHideUsername || false) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield saveSettings({ redditHideUsername: value }); + })); + }); + settingsList.push(hideUsernameSetting); + return settingsList; + } +} + +const TWEET_LINK = new RegExp(/https:\/\/(?:mobile\.)?twitter\.com\/.+\/(\d+)/); +class TwitterEmbed { + constructor() { + this.name = "Twitter"; + this.enabledKey = "replaceTwitterLinks"; + this.regex = TWEET_LINK; + } + createEmbed(link, container, settings, currentTheme) { + this._ensureTwitterLoaded(); + const tweetId = link.match(TWEET_LINK)[1]; + container.id = `TweetContainer${tweetId}`; + const theme = settings.twitterTheme == "auto" ? currentTheme : settings.twitterTheme; + window.twttr.ready(() => { + window.twttr.widgets.createTweet(tweetId, container, { + theme, + dnt: true, + }); + }); + container.classList.add("twitter"); + return container; + } + updateTheme(theme, settings) { + if (settings.twitterTheme !== "auto") { + return; + } + const twitterEmbeds = document.querySelectorAll(".embed-container .twitter-tweet.twitter-tweet-rendered iframe"); + twitterEmbeds.forEach((embed) => { + let src = embed.src; + if (theme === "dark") { + src = src.replace("theme=light", "theme=dark"); + } + else { + src = src.replace("theme=dark", "theme=light"); + } + embed.src = src; + }); + } + _ensureTwitterLoaded() { + window.twttr = (function (d, s, id) { + var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; + if (d.getElementById(id)) + return t; + js = d.createElement(s); + js.id = id; + js.src = "https://platform.twitter.com/widgets.js"; + fjs.parentNode.insertBefore(js, fjs); + t._e = []; + t.ready = function (f) { + t._e.push(f); + }; + return t; + })(document, "script", "twitter-wjs"); + } + createAdditionalSettings(containerEl, settings, saveSettings) { + const themeSetting = new obsidian.Setting(containerEl) + .setName("Theme") + .addDropdown((dropdown) => { + dropdown + .addOptions({ + auto: "Automatic", + dark: "Dark", + light: "Light", + }) + .setValue(settings.twitterTheme) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield saveSettings({ twitterTheme: value }); + })); + }); + return [themeSetting]; + } +} + +const VIMEO_LINK = new RegExp(/https:\/\/(www\.)?vimeo\.com\/(?<id>\d+)/); +class VimeoEmbed { + constructor() { + this.name = "Vimeo"; + this.enabledKey = "replaceVimeoLinks"; + this.regex = VIMEO_LINK; + } + createEmbed(link, container) { + const wrapper = document.createElement("div"); + wrapper.classList.add("video-wrapper"); + const iframe = document.createElement("iframe"); + const id = link.match(VIMEO_LINK).groups.id; + iframe.src = `https://player.vimeo.com/video/${id}`; + iframe.setAttribute("frameborder", "0"); + iframe.allow = + "autoplay; fullscreen; picture-in-picture; picture-in-picture;"; + wrapper.appendChild(iframe); + container.appendChild(wrapper); + container.classList.add("vimeo"); + return container; + } +} + +const WHIMSICAL_LINK = new RegExp(/https:\/\/whimsical.com\/(?:[a-zA-Z0-9\-]+\-)?(?<id>[a-km-zA-HJ-NP-Z1-9]{16,22})(@[a-km-zA-HJ-NP-Z1-9]+)?/); +class WhimsicalEmbed { + constructor() { + this.name = 'Whimsical'; + this.enabledKey = 'replaceWhimsicalLinks'; + this.regex = WHIMSICAL_LINK; + } + createEmbed(link, container) { + const iframe = document.createElement('iframe'); + const matches = link.match(WHIMSICAL_LINK); + const id = matches.groups.id; + iframe.src = `https://whimsical.com/embed/${id}`; + iframe.style.aspectRatio = '800/450'; + iframe.style.width = '100%'; + iframe.setAttribute('frameborder', '0'); + iframe.allow = 'fullscreen'; + container.appendChild(iframe); + container.classList.add('whimsical'); + return container; + } +} + +// TODO: Figure out if there is a better way to include the lib. +// Need to include it myself because the lib self defines. This causes issues when a user disables and reenables the plugin. +// Since there is no way to remove a Custom Element, it throws an error if it is registered twice. + +// https://github.com/paulirish/lite-youtube-embed + +/** + * A lightweight youtube embed. Still should feel the same to the user, just MUCH faster to initialize and paint. + * + * Thx to these as the inspiration + * https://storage.googleapis.com/amp-vs-non-amp/youtube-lazy.html + * https://autoplay-youtube-player.glitch.me/ + * + * Once built it, I also found these: + * https://github.com/ampproject/amphtml/blob/master/extensions/amp-youtube (👍👍) + * https://github.com/Daugilas/lazyYT + * https://github.com/vb/lazyframe + */ +class LiteYTEmbed extends HTMLElement { + connectedCallback() { + this.videoId = this.getAttribute("videoid"); + + let playBtnEl = this.querySelector(".lty-playbtn"); + // A label for the button takes priority over a [playlabel] attribute on the custom-element + this.playLabel = + (playBtnEl && playBtnEl.textContent.trim()) || + this.getAttribute("playlabel") || + "Play"; + + /** + * Lo, the youtube placeholder image! (aka the thumbnail, poster image, etc) + * + * See https://github.com/paulirish/lite-youtube-embed/blob/master/youtube-thumbnail-urls.md + * + * TODO: Do the sddefault->hqdefault fallback + * - When doing this, apply referrerpolicy (https://github.com/ampproject/amphtml/pull/3940) + * TODO: Consider using webp if supported, falling back to jpg + */ + if (!this.style.backgroundImage) { + this.style.backgroundImage = `url("https://i.ytimg.com/vi/${this.videoId}/hqdefault.jpg")`; + } + + // Set up play button, and its visually hidden label + if (!playBtnEl) { + playBtnEl = document.createElement("button"); + playBtnEl.type = "button"; + playBtnEl.classList.add("lty-playbtn"); + this.append(playBtnEl); + } + if (!playBtnEl.textContent) { + const playBtnLabelEl = document.createElement("span"); + playBtnLabelEl.className = "lyt-visually-hidden"; + playBtnLabelEl.textContent = this.playLabel; + playBtnEl.append(playBtnLabelEl); + } + + // On hover (or tap), warm up the TCP connections we're (likely) about to use. + this.addEventListener("pointerover", LiteYTEmbed.warmConnections, { + once: true, + }); + + // Once the user clicks, add the real iframe and drop our play button + // TODO: In the future we could be like amp-youtube and silently swap in the iframe during idle time + // We'd want to only do this for in-viewport or near-viewport ones: https://github.com/ampproject/amphtml/pull/5003 + this.addEventListener("click", this.addIframe); + } + + // // TODO: Support the the user changing the [videoid] attribute + // attributeChangedCallback() { + // } + + /** + * Add a <link rel={preload | preconnect} ...> to the head + */ + static addPrefetch(kind, url, as) { + const linkEl = document.createElement("link"); + linkEl.rel = kind; + linkEl.href = url; + if (as) { + linkEl.as = as; + } + document.head.append(linkEl); + } + + /** + * Begin pre-connecting to warm up the iframe load + * Since the embed's network requests load within its iframe, + * preload/prefetch'ing them outside the iframe will only cause double-downloads. + * So, the best we can do is warm up a few connections to origins that are in the critical path. + * + * Maybe `<link rel=preload as=document>` would work, but it's unsupported: http://crbug.com/593267 + * But TBH, I don't think it'll happen soon with Site Isolation and split caches adding serious complexity. + */ + static warmConnections() { + if (LiteYTEmbed.preconnected) return; + + // The iframe document and most of its subresources come right off youtube.com + LiteYTEmbed.addPrefetch("preconnect", "https://www.youtube-nocookie.com"); + // The botguard script is fetched off from google.com + LiteYTEmbed.addPrefetch("preconnect", "https://www.google.com"); + + // Not certain if these ad related domains are in the critical path. Could verify with domain-specific throttling. + LiteYTEmbed.addPrefetch( + "preconnect", + "https://googleads.g.doubleclick.net", + ); + LiteYTEmbed.addPrefetch("preconnect", "https://static.doubleclick.net"); + + LiteYTEmbed.preconnected = true; + } + + addIframe(e) { + if (this.classList.contains("lyt-activated")) return; + e.preventDefault(); + this.classList.add("lyt-activated"); + + const params = new URLSearchParams(this.getAttribute("params") || []); + params.append("autoplay", "1"); + + const iframeEl = document.createElement("iframe"); + iframeEl.width = 560; + iframeEl.height = 315; + // No encoding necessary as [title] is safe. https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html#:~:text=Safe%20HTML%20Attributes%20include + iframeEl.title = this.playLabel; + iframeEl.allow = + "accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"; + iframeEl.allowFullscreen = true; + // AFAIK, the encoding here isn't necessary for XSS, but we'll do it only because this is a URL + // https://stackoverflow.com/q/64959723/89484 + iframeEl.src = `https://www.youtube-nocookie.com/embed/${encodeURIComponent( + this.videoId, + )}?${params.toString()}`; + this.append(iframeEl); + + // Set focus for a11y + iframeEl.focus(); + } +} + +const YOUTUBE_LINK = new RegExp(/http(?:s?):\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/|be\.com\/embed\/|be\.com\/shorts\/)(?<id>[\w\-\_]*)((?:\?|&)(?:t|start)=(?<startTime>(?:\d+h)?(?:\d+m)?\d+s|\d+))?/); +class YouTubeEmbed { + constructor() { + this.name = "YouTube"; + this.enabledKey = "replaceYouTubeLinks"; + this.regex = YOUTUBE_LINK; + } + createEmbed(link, container) { + this._ensureLiteYouTubeLoaded(); + const wrapper = document.createElement("div"); + wrapper.classList.add("video-wrapper"); + const matches = link.match(YOUTUBE_LINK); + const videoId = matches.groups.id; + const startTime = this._normalizeStartTime(matches.groups.startTime); + const youtube = document.createElement("lite-youtube"); + youtube.setAttribute("videoid", videoId); + if (startTime) { + youtube.setAttribute("params", `start=${startTime}`); + } + wrapper.appendChild(youtube); + container.appendChild(wrapper); + container.classList.add("youtube"); + return container; + } + _ensureLiteYouTubeLoaded() { + if (!customElements.get("lite-youtube")) { + customElements.define("lite-youtube", LiteYTEmbed); + } + } + _normalizeStartTime(startTime) { + var _a, _b, _c; + if (!startTime) { + return; + } + if (!isNaN(Number(startTime))) { + return startTime; + } + const matches = startTime.match(/(?<hours>\d+h)?(?<minutes>\d+m)?(?<seconds>\d+s)/); + const hoursInSeconds = parseInt((_a = matches.groups.hours) !== null && _a !== void 0 ? _a : "0") * 60 * 60; + const minutesInSeconds = parseInt((_b = matches.groups.minutes) !== null && _b !== void 0 ? _b : "0") * 60; + const seconds = parseInt((_c = matches.groups.seconds) !== null && _c !== void 0 ? _c : "0"); + return `${hoursInSeconds + minutesInSeconds + seconds}`; + } +} + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function getAugmentedNamespace(n) { + if (n.__esModule) return n; + var a = Object.defineProperty({}, '__esModule', {value: true}); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; +} + +function createCommonjsModule(fn) { + var module = { exports: {} }; + return fn(module, module.exports), module.exports; +} + +var types = /*#__PURE__*/Object.defineProperty({ + +}, '__esModule', {value: true}); + +var options = createCommonjsModule(function (module, exports) { +var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.flatten = void 0; +var defaultOpts = { + xml: false, + decodeEntities: true, +}; +/** Cheerio default options. */ +exports.default = defaultOpts; +var xmlModeDefault = { + _useHtmlParser2: true, + xmlMode: true, +}; +/** + * Flatten the options for Cheerio. + * + * This will set `_useHtmlParser2` to true if `xml` is set to true. + * + * @param options - The options to flatten. + * @returns The flattened options. + */ +function flatten(options) { + return (options === null || options === void 0 ? void 0 : options.xml) + ? typeof options.xml === 'boolean' + ? xmlModeDefault + : __assign(__assign({}, xmlModeDefault), options.xml) + : options !== null && options !== void 0 ? options : undefined; +} +exports.flatten = flatten; + +}); + +var lib$9 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Doctype = exports.CDATA = exports.Tag = exports.Style = exports.Script = exports.Comment = exports.Directive = exports.Text = exports.Root = exports.isTag = exports.ElementType = void 0; +/** Types of elements found in htmlparser2's DOM */ +var ElementType; +(function (ElementType) { + /** Type for the root element of a document */ + ElementType["Root"] = "root"; + /** Type for Text */ + ElementType["Text"] = "text"; + /** Type for <? ... ?> */ + ElementType["Directive"] = "directive"; + /** Type for <!-- ... --> */ + ElementType["Comment"] = "comment"; + /** Type for <script> tags */ + ElementType["Script"] = "script"; + /** Type for <style> tags */ + ElementType["Style"] = "style"; + /** Type for Any tag */ + ElementType["Tag"] = "tag"; + /** Type for <![CDATA[ ... ]]> */ + ElementType["CDATA"] = "cdata"; + /** Type for <!doctype ...> */ + ElementType["Doctype"] = "doctype"; +})(ElementType = exports.ElementType || (exports.ElementType = {})); +/** + * Tests whether an element is a tag or not. + * + * @param elem Element to test + */ +function isTag(elem) { + return (elem.type === ElementType.Tag || + elem.type === ElementType.Script || + elem.type === ElementType.Style); +} +exports.isTag = isTag; +// Exports for backwards compatibility +/** Type for the root element of a document */ +exports.Root = ElementType.Root; +/** Type for Text */ +exports.Text = ElementType.Text; +/** Type for <? ... ?> */ +exports.Directive = ElementType.Directive; +/** Type for <!-- ... --> */ +exports.Comment = ElementType.Comment; +/** Type for <script> tags */ +exports.Script = ElementType.Script; +/** Type for <style> tags */ +exports.Style = ElementType.Style; +/** Type for Any tag */ +exports.Tag = ElementType.Tag; +/** Type for <![CDATA[ ... ]]> */ +exports.CDATA = ElementType.CDATA; +/** Type for <!doctype ...> */ +exports.Doctype = ElementType.Doctype; +}); + +var require$$0$5 = lib$9; + +var node = createCommonjsModule(function (module, exports) { +var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.cloneNode = exports.hasChildren = exports.isDocument = exports.isDirective = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = exports.Element = exports.Document = exports.CDATA = exports.NodeWithChildren = exports.ProcessingInstruction = exports.Comment = exports.Text = exports.DataNode = exports.Node = void 0; + +/** + * This object will be used as the prototype for Nodes when creating a + * DOM-Level-1-compliant structure. + */ +var Node = /** @class */ (function () { + function Node() { + /** Parent of the node */ + this.parent = null; + /** Previous sibling */ + this.prev = null; + /** Next sibling */ + this.next = null; + /** The start index of the node. Requires `withStartIndices` on the handler to be `true. */ + this.startIndex = null; + /** The end index of the node. Requires `withEndIndices` on the handler to be `true. */ + this.endIndex = null; + } + Object.defineProperty(Node.prototype, "parentNode", { + // Read-write aliases for properties + /** + * Same as {@link parent}. + * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. + */ + get: function () { + return this.parent; + }, + set: function (parent) { + this.parent = parent; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Node.prototype, "previousSibling", { + /** + * Same as {@link prev}. + * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. + */ + get: function () { + return this.prev; + }, + set: function (prev) { + this.prev = prev; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Node.prototype, "nextSibling", { + /** + * Same as {@link next}. + * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. + */ + get: function () { + return this.next; + }, + set: function (next) { + this.next = next; + }, + enumerable: false, + configurable: true + }); + /** + * Clone this node, and optionally its children. + * + * @param recursive Clone child nodes as well. + * @returns A clone of the node. + */ + Node.prototype.cloneNode = function (recursive) { + if (recursive === void 0) { recursive = false; } + return cloneNode(this, recursive); + }; + return Node; +}()); +exports.Node = Node; +/** + * A node that contains some data. + */ +var DataNode = /** @class */ (function (_super) { + __extends(DataNode, _super); + /** + * @param data The content of the data node + */ + function DataNode(data) { + var _this = _super.call(this) || this; + _this.data = data; + return _this; + } + Object.defineProperty(DataNode.prototype, "nodeValue", { + /** + * Same as {@link data}. + * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. + */ + get: function () { + return this.data; + }, + set: function (data) { + this.data = data; + }, + enumerable: false, + configurable: true + }); + return DataNode; +}(Node)); +exports.DataNode = DataNode; +/** + * Text within the document. + */ +var Text = /** @class */ (function (_super) { + __extends(Text, _super); + function Text() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = require$$0$5.ElementType.Text; + return _this; + } + Object.defineProperty(Text.prototype, "nodeType", { + get: function () { + return 3; + }, + enumerable: false, + configurable: true + }); + return Text; +}(DataNode)); +exports.Text = Text; +/** + * Comments within the document. + */ +var Comment = /** @class */ (function (_super) { + __extends(Comment, _super); + function Comment() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = require$$0$5.ElementType.Comment; + return _this; + } + Object.defineProperty(Comment.prototype, "nodeType", { + get: function () { + return 8; + }, + enumerable: false, + configurable: true + }); + return Comment; +}(DataNode)); +exports.Comment = Comment; +/** + * Processing instructions, including doc types. + */ +var ProcessingInstruction = /** @class */ (function (_super) { + __extends(ProcessingInstruction, _super); + function ProcessingInstruction(name, data) { + var _this = _super.call(this, data) || this; + _this.name = name; + _this.type = require$$0$5.ElementType.Directive; + return _this; + } + Object.defineProperty(ProcessingInstruction.prototype, "nodeType", { + get: function () { + return 1; + }, + enumerable: false, + configurable: true + }); + return ProcessingInstruction; +}(DataNode)); +exports.ProcessingInstruction = ProcessingInstruction; +/** + * A `Node` that can have children. + */ +var NodeWithChildren = /** @class */ (function (_super) { + __extends(NodeWithChildren, _super); + /** + * @param children Children of the node. Only certain node types can have children. + */ + function NodeWithChildren(children) { + var _this = _super.call(this) || this; + _this.children = children; + return _this; + } + Object.defineProperty(NodeWithChildren.prototype, "firstChild", { + // Aliases + /** First child of the node. */ + get: function () { + var _a; + return (_a = this.children[0]) !== null && _a !== void 0 ? _a : null; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(NodeWithChildren.prototype, "lastChild", { + /** Last child of the node. */ + get: function () { + return this.children.length > 0 + ? this.children[this.children.length - 1] + : null; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(NodeWithChildren.prototype, "childNodes", { + /** + * Same as {@link children}. + * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. + */ + get: function () { + return this.children; + }, + set: function (children) { + this.children = children; + }, + enumerable: false, + configurable: true + }); + return NodeWithChildren; +}(Node)); +exports.NodeWithChildren = NodeWithChildren; +var CDATA = /** @class */ (function (_super) { + __extends(CDATA, _super); + function CDATA() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = require$$0$5.ElementType.CDATA; + return _this; + } + Object.defineProperty(CDATA.prototype, "nodeType", { + get: function () { + return 4; + }, + enumerable: false, + configurable: true + }); + return CDATA; +}(NodeWithChildren)); +exports.CDATA = CDATA; +/** + * The root node of the document. + */ +var Document = /** @class */ (function (_super) { + __extends(Document, _super); + function Document() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.type = require$$0$5.ElementType.Root; + return _this; + } + Object.defineProperty(Document.prototype, "nodeType", { + get: function () { + return 9; + }, + enumerable: false, + configurable: true + }); + return Document; +}(NodeWithChildren)); +exports.Document = Document; +/** + * An element within the DOM. + */ +var Element = /** @class */ (function (_super) { + __extends(Element, _super); + /** + * @param name Name of the tag, eg. `div`, `span`. + * @param attribs Object mapping attribute names to attribute values. + * @param children Children of the node. + */ + function Element(name, attribs, children, type) { + if (children === void 0) { children = []; } + if (type === void 0) { type = name === "script" + ? require$$0$5.ElementType.Script + : name === "style" + ? require$$0$5.ElementType.Style + : require$$0$5.ElementType.Tag; } + var _this = _super.call(this, children) || this; + _this.name = name; + _this.attribs = attribs; + _this.type = type; + return _this; + } + Object.defineProperty(Element.prototype, "nodeType", { + get: function () { + return 1; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Element.prototype, "tagName", { + // DOM Level 1 aliases + /** + * Same as {@link name}. + * [DOM spec](https://dom.spec.whatwg.org)-compatible alias. + */ + get: function () { + return this.name; + }, + set: function (name) { + this.name = name; + }, + enumerable: false, + configurable: true + }); + Object.defineProperty(Element.prototype, "attributes", { + get: function () { + var _this = this; + return Object.keys(this.attribs).map(function (name) { + var _a, _b; + return ({ + name: name, + value: _this.attribs[name], + namespace: (_a = _this["x-attribsNamespace"]) === null || _a === void 0 ? void 0 : _a[name], + prefix: (_b = _this["x-attribsPrefix"]) === null || _b === void 0 ? void 0 : _b[name], + }); + }); + }, + enumerable: false, + configurable: true + }); + return Element; +}(NodeWithChildren)); +exports.Element = Element; +/** + * @param node Node to check. + * @returns `true` if the node is a `Element`, `false` otherwise. + */ +function isTag(node) { + return (0, require$$0$5.isTag)(node); +} +exports.isTag = isTag; +/** + * @param node Node to check. + * @returns `true` if the node has the type `CDATA`, `false` otherwise. + */ +function isCDATA(node) { + return node.type === require$$0$5.ElementType.CDATA; +} +exports.isCDATA = isCDATA; +/** + * @param node Node to check. + * @returns `true` if the node has the type `Text`, `false` otherwise. + */ +function isText(node) { + return node.type === require$$0$5.ElementType.Text; +} +exports.isText = isText; +/** + * @param node Node to check. + * @returns `true` if the node has the type `Comment`, `false` otherwise. + */ +function isComment(node) { + return node.type === require$$0$5.ElementType.Comment; +} +exports.isComment = isComment; +/** + * @param node Node to check. + * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise. + */ +function isDirective(node) { + return node.type === require$$0$5.ElementType.Directive; +} +exports.isDirective = isDirective; +/** + * @param node Node to check. + * @returns `true` if the node has the type `ProcessingInstruction`, `false` otherwise. + */ +function isDocument(node) { + return node.type === require$$0$5.ElementType.Root; +} +exports.isDocument = isDocument; +/** + * @param node Node to check. + * @returns `true` if the node has children, `false` otherwise. + */ +function hasChildren(node) { + return Object.prototype.hasOwnProperty.call(node, "children"); +} +exports.hasChildren = hasChildren; +/** + * Clone a node, and optionally its children. + * + * @param recursive Clone child nodes as well. + * @returns A clone of the node. + */ +function cloneNode(node, recursive) { + if (recursive === void 0) { recursive = false; } + var result; + if (isText(node)) { + result = new Text(node.data); + } + else if (isComment(node)) { + result = new Comment(node.data); + } + else if (isTag(node)) { + var children = recursive ? cloneChildren(node.children) : []; + var clone_1 = new Element(node.name, __assign({}, node.attribs), children); + children.forEach(function (child) { return (child.parent = clone_1); }); + if (node.namespace != null) { + clone_1.namespace = node.namespace; + } + if (node["x-attribsNamespace"]) { + clone_1["x-attribsNamespace"] = __assign({}, node["x-attribsNamespace"]); + } + if (node["x-attribsPrefix"]) { + clone_1["x-attribsPrefix"] = __assign({}, node["x-attribsPrefix"]); + } + result = clone_1; + } + else if (isCDATA(node)) { + var children = recursive ? cloneChildren(node.children) : []; + var clone_2 = new CDATA(children); + children.forEach(function (child) { return (child.parent = clone_2); }); + result = clone_2; + } + else if (isDocument(node)) { + var children = recursive ? cloneChildren(node.children) : []; + var clone_3 = new Document(children); + children.forEach(function (child) { return (child.parent = clone_3); }); + if (node["x-mode"]) { + clone_3["x-mode"] = node["x-mode"]; + } + result = clone_3; + } + else if (isDirective(node)) { + var instruction = new ProcessingInstruction(node.name, node.data); + if (node["x-name"] != null) { + instruction["x-name"] = node["x-name"]; + instruction["x-publicId"] = node["x-publicId"]; + instruction["x-systemId"] = node["x-systemId"]; + } + result = instruction; + } + else { + throw new Error("Not implemented yet: ".concat(node.type)); + } + result.startIndex = node.startIndex; + result.endIndex = node.endIndex; + if (node.sourceCodeLocation != null) { + result.sourceCodeLocation = node.sourceCodeLocation; + } + return result; +} +exports.cloneNode = cloneNode; +function cloneChildren(childs) { + var children = childs.map(function (child) { return cloneNode(child, true); }); + for (var i = 1; i < children.length; i++) { + children[i].prev = children[i - 1]; + children[i - 1].next = children[i]; + } + return children; +} +}); + +var node_js_1 = node; + +var lib$8 = createCommonjsModule(function (module, exports) { +var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DomHandler = void 0; + + +__exportStar(node_js_1, exports); +// Default options +var defaultOpts = { + withStartIndices: false, + withEndIndices: false, + xmlMode: false, +}; +var DomHandler = /** @class */ (function () { + /** + * @param callback Called once parsing has completed. + * @param options Settings for the handler. + * @param elementCB Callback whenever a tag is closed. + */ + function DomHandler(callback, options, elementCB) { + /** The elements of the DOM */ + this.dom = []; + /** The root element for the DOM */ + this.root = new node_js_1.Document(this.dom); + /** Indicated whether parsing has been completed. */ + this.done = false; + /** Stack of open tags. */ + this.tagStack = [this.root]; + /** A data node that is still being written to. */ + this.lastNode = null; + /** Reference to the parser instance. Used for location information. */ + this.parser = null; + // Make it possible to skip arguments, for backwards-compatibility + if (typeof options === "function") { + elementCB = options; + options = defaultOpts; + } + if (typeof callback === "object") { + options = callback; + callback = undefined; + } + this.callback = callback !== null && callback !== void 0 ? callback : null; + this.options = options !== null && options !== void 0 ? options : defaultOpts; + this.elementCB = elementCB !== null && elementCB !== void 0 ? elementCB : null; + } + DomHandler.prototype.onparserinit = function (parser) { + this.parser = parser; + }; + // Resets the handler back to starting state + DomHandler.prototype.onreset = function () { + this.dom = []; + this.root = new node_js_1.Document(this.dom); + this.done = false; + this.tagStack = [this.root]; + this.lastNode = null; + this.parser = null; + }; + // Signals the handler that parsing is done + DomHandler.prototype.onend = function () { + if (this.done) + return; + this.done = true; + this.parser = null; + this.handleCallback(null); + }; + DomHandler.prototype.onerror = function (error) { + this.handleCallback(error); + }; + DomHandler.prototype.onclosetag = function () { + this.lastNode = null; + var elem = this.tagStack.pop(); + if (this.options.withEndIndices) { + elem.endIndex = this.parser.endIndex; + } + if (this.elementCB) + this.elementCB(elem); + }; + DomHandler.prototype.onopentag = function (name, attribs) { + var type = this.options.xmlMode ? require$$0$5.ElementType.Tag : undefined; + var element = new node_js_1.Element(name, attribs, undefined, type); + this.addNode(element); + this.tagStack.push(element); + }; + DomHandler.prototype.ontext = function (data) { + var lastNode = this.lastNode; + if (lastNode && lastNode.type === require$$0$5.ElementType.Text) { + lastNode.data += data; + if (this.options.withEndIndices) { + lastNode.endIndex = this.parser.endIndex; + } + } + else { + var node = new node_js_1.Text(data); + this.addNode(node); + this.lastNode = node; + } + }; + DomHandler.prototype.oncomment = function (data) { + if (this.lastNode && this.lastNode.type === require$$0$5.ElementType.Comment) { + this.lastNode.data += data; + return; + } + var node = new node_js_1.Comment(data); + this.addNode(node); + this.lastNode = node; + }; + DomHandler.prototype.oncommentend = function () { + this.lastNode = null; + }; + DomHandler.prototype.oncdatastart = function () { + var text = new node_js_1.Text(""); + var node = new node_js_1.CDATA([text]); + this.addNode(node); + text.parent = node; + this.lastNode = text; + }; + DomHandler.prototype.oncdataend = function () { + this.lastNode = null; + }; + DomHandler.prototype.onprocessinginstruction = function (name, data) { + var node = new node_js_1.ProcessingInstruction(name, data); + this.addNode(node); + }; + DomHandler.prototype.handleCallback = function (error) { + if (typeof this.callback === "function") { + this.callback(error, this.dom); + } + else if (error) { + throw error; + } + }; + DomHandler.prototype.addNode = function (node) { + var parent = this.tagStack[this.tagStack.length - 1]; + var previousSibling = parent.children[parent.children.length - 1]; + if (this.options.withStartIndices) { + node.startIndex = this.parser.startIndex; + } + if (this.options.withEndIndices) { + node.endIndex = this.parser.endIndex; + } + parent.children.push(node); + if (previousSibling) { + node.prev = previousSibling; + previousSibling.next = node; + } + node.parent = parent; + this.lastNode = null; + }; + return DomHandler; +}()); +exports.DomHandler = DomHandler; +exports.default = DomHandler; +}); + +// Generated using scripts/write-decode-map.ts + +var _default$5 = new Uint16Array( +// prettier-ignore +"\u1d41<\xd5\u0131\u028a\u049d\u057b\u05d0\u0675\u06de\u07a2\u07d6\u080f\u0a4a\u0a91\u0da1\u0e6d\u0f09\u0f26\u10ca\u1228\u12e1\u1415\u149d\u14c3\u14df\u1525\0\0\0\0\0\0\u156b\u16cd\u198d\u1c12\u1ddd\u1f7e\u2060\u21b0\u228d\u23c0\u23fb\u2442\u2824\u2912\u2d08\u2e48\u2fce\u3016\u32ba\u3639\u37ac\u38fe\u3a28\u3a71\u3ae0\u3b2e\u0800EMabcfglmnoprstu\\bfms\x7f\x84\x8b\x90\x95\x98\xa6\xb3\xb9\xc8\xcflig\u803b\xc6\u40c6P\u803b&\u4026cute\u803b\xc1\u40c1reve;\u4102\u0100iyx}rc\u803b\xc2\u40c2;\u4410r;\uc000\ud835\udd04rave\u803b\xc0\u40c0pha;\u4391acr;\u4100d;\u6a53\u0100gp\x9d\xa1on;\u4104f;\uc000\ud835\udd38plyFunction;\u6061ing\u803b\xc5\u40c5\u0100cs\xbe\xc3r;\uc000\ud835\udc9cign;\u6254ilde\u803b\xc3\u40c3ml\u803b\xc4\u40c4\u0400aceforsu\xe5\xfb\xfe\u0117\u011c\u0122\u0127\u012a\u0100cr\xea\xf2kslash;\u6216\u0176\xf6\xf8;\u6ae7ed;\u6306y;\u4411\u0180crt\u0105\u010b\u0114ause;\u6235noullis;\u612ca;\u4392r;\uc000\ud835\udd05pf;\uc000\ud835\udd39eve;\u42d8c\xf2\u0113mpeq;\u624e\u0700HOacdefhilorsu\u014d\u0151\u0156\u0180\u019e\u01a2\u01b5\u01b7\u01ba\u01dc\u0215\u0273\u0278\u027ecy;\u4427PY\u803b\xa9\u40a9\u0180cpy\u015d\u0162\u017aute;\u4106\u0100;i\u0167\u0168\u62d2talDifferentialD;\u6145leys;\u612d\u0200aeio\u0189\u018e\u0194\u0198ron;\u410cdil\u803b\xc7\u40c7rc;\u4108nint;\u6230ot;\u410a\u0100dn\u01a7\u01adilla;\u40b8terDot;\u40b7\xf2\u017fi;\u43a7rcle\u0200DMPT\u01c7\u01cb\u01d1\u01d6ot;\u6299inus;\u6296lus;\u6295imes;\u6297o\u0100cs\u01e2\u01f8kwiseContourIntegral;\u6232eCurly\u0100DQ\u0203\u020foubleQuote;\u601duote;\u6019\u0200lnpu\u021e\u0228\u0247\u0255on\u0100;e\u0225\u0226\u6237;\u6a74\u0180git\u022f\u0236\u023aruent;\u6261nt;\u622fourIntegral;\u622e\u0100fr\u024c\u024e;\u6102oduct;\u6210nterClockwiseContourIntegral;\u6233oss;\u6a2fcr;\uc000\ud835\udc9ep\u0100;C\u0284\u0285\u62d3ap;\u624d\u0580DJSZacefios\u02a0\u02ac\u02b0\u02b4\u02b8\u02cb\u02d7\u02e1\u02e6\u0333\u048d\u0100;o\u0179\u02a5trahd;\u6911cy;\u4402cy;\u4405cy;\u440f\u0180grs\u02bf\u02c4\u02c7ger;\u6021r;\u61a1hv;\u6ae4\u0100ay\u02d0\u02d5ron;\u410e;\u4414l\u0100;t\u02dd\u02de\u6207a;\u4394r;\uc000\ud835\udd07\u0100af\u02eb\u0327\u0100cm\u02f0\u0322ritical\u0200ADGT\u0300\u0306\u0316\u031ccute;\u40b4o\u0174\u030b\u030d;\u42d9bleAcute;\u42ddrave;\u4060ilde;\u42dcond;\u62c4ferentialD;\u6146\u0470\u033d\0\0\0\u0342\u0354\0\u0405f;\uc000\ud835\udd3b\u0180;DE\u0348\u0349\u034d\u40a8ot;\u60dcqual;\u6250ble\u0300CDLRUV\u0363\u0372\u0382\u03cf\u03e2\u03f8ontourIntegra\xec\u0239o\u0274\u0379\0\0\u037b\xbb\u0349nArrow;\u61d3\u0100eo\u0387\u03a4ft\u0180ART\u0390\u0396\u03a1rrow;\u61d0ightArrow;\u61d4e\xe5\u02cang\u0100LR\u03ab\u03c4eft\u0100AR\u03b3\u03b9rrow;\u67f8ightArrow;\u67faightArrow;\u67f9ight\u0100AT\u03d8\u03derrow;\u61d2ee;\u62a8p\u0241\u03e9\0\0\u03efrrow;\u61d1ownArrow;\u61d5erticalBar;\u6225n\u0300ABLRTa\u0412\u042a\u0430\u045e\u047f\u037crrow\u0180;BU\u041d\u041e\u0422\u6193ar;\u6913pArrow;\u61f5reve;\u4311eft\u02d2\u043a\0\u0446\0\u0450ightVector;\u6950eeVector;\u695eector\u0100;B\u0459\u045a\u61bdar;\u6956ight\u01d4\u0467\0\u0471eeVector;\u695fector\u0100;B\u047a\u047b\u61c1ar;\u6957ee\u0100;A\u0486\u0487\u62a4rrow;\u61a7\u0100ct\u0492\u0497r;\uc000\ud835\udc9frok;\u4110\u0800NTacdfglmopqstux\u04bd\u04c0\u04c4\u04cb\u04de\u04e2\u04e7\u04ee\u04f5\u0521\u052f\u0536\u0552\u055d\u0560\u0565G;\u414aH\u803b\xd0\u40d0cute\u803b\xc9\u40c9\u0180aiy\u04d2\u04d7\u04dcron;\u411arc\u803b\xca\u40ca;\u442dot;\u4116r;\uc000\ud835\udd08rave\u803b\xc8\u40c8ement;\u6208\u0100ap\u04fa\u04fecr;\u4112ty\u0253\u0506\0\0\u0512mallSquare;\u65fberySmallSquare;\u65ab\u0100gp\u0526\u052aon;\u4118f;\uc000\ud835\udd3csilon;\u4395u\u0100ai\u053c\u0549l\u0100;T\u0542\u0543\u6a75ilde;\u6242librium;\u61cc\u0100ci\u0557\u055ar;\u6130m;\u6a73a;\u4397ml\u803b\xcb\u40cb\u0100ip\u056a\u056fsts;\u6203onentialE;\u6147\u0280cfios\u0585\u0588\u058d\u05b2\u05ccy;\u4424r;\uc000\ud835\udd09lled\u0253\u0597\0\0\u05a3mallSquare;\u65fcerySmallSquare;\u65aa\u0370\u05ba\0\u05bf\0\0\u05c4f;\uc000\ud835\udd3dAll;\u6200riertrf;\u6131c\xf2\u05cb\u0600JTabcdfgorst\u05e8\u05ec\u05ef\u05fa\u0600\u0612\u0616\u061b\u061d\u0623\u066c\u0672cy;\u4403\u803b>\u403emma\u0100;d\u05f7\u05f8\u4393;\u43dcreve;\u411e\u0180eiy\u0607\u060c\u0610dil;\u4122rc;\u411c;\u4413ot;\u4120r;\uc000\ud835\udd0a;\u62d9pf;\uc000\ud835\udd3eeater\u0300EFGLST\u0635\u0644\u064e\u0656\u065b\u0666qual\u0100;L\u063e\u063f\u6265ess;\u62dbullEqual;\u6267reater;\u6aa2ess;\u6277lantEqual;\u6a7eilde;\u6273cr;\uc000\ud835\udca2;\u626b\u0400Aacfiosu\u0685\u068b\u0696\u069b\u069e\u06aa\u06be\u06caRDcy;\u442a\u0100ct\u0690\u0694ek;\u42c7;\u405eirc;\u4124r;\u610clbertSpace;\u610b\u01f0\u06af\0\u06b2f;\u610dizontalLine;\u6500\u0100ct\u06c3\u06c5\xf2\u06a9rok;\u4126mp\u0144\u06d0\u06d8ownHum\xf0\u012fqual;\u624f\u0700EJOacdfgmnostu\u06fa\u06fe\u0703\u0707\u070e\u071a\u071e\u0721\u0728\u0744\u0778\u078b\u078f\u0795cy;\u4415lig;\u4132cy;\u4401cute\u803b\xcd\u40cd\u0100iy\u0713\u0718rc\u803b\xce\u40ce;\u4418ot;\u4130r;\u6111rave\u803b\xcc\u40cc\u0180;ap\u0720\u072f\u073f\u0100cg\u0734\u0737r;\u412ainaryI;\u6148lie\xf3\u03dd\u01f4\u0749\0\u0762\u0100;e\u074d\u074e\u622c\u0100gr\u0753\u0758ral;\u622bsection;\u62c2isible\u0100CT\u076c\u0772omma;\u6063imes;\u6062\u0180gpt\u077f\u0783\u0788on;\u412ef;\uc000\ud835\udd40a;\u4399cr;\u6110ilde;\u4128\u01eb\u079a\0\u079ecy;\u4406l\u803b\xcf\u40cf\u0280cfosu\u07ac\u07b7\u07bc\u07c2\u07d0\u0100iy\u07b1\u07b5rc;\u4134;\u4419r;\uc000\ud835\udd0dpf;\uc000\ud835\udd41\u01e3\u07c7\0\u07ccr;\uc000\ud835\udca5rcy;\u4408kcy;\u4404\u0380HJacfos\u07e4\u07e8\u07ec\u07f1\u07fd\u0802\u0808cy;\u4425cy;\u440cppa;\u439a\u0100ey\u07f6\u07fbdil;\u4136;\u441ar;\uc000\ud835\udd0epf;\uc000\ud835\udd42cr;\uc000\ud835\udca6\u0580JTaceflmost\u0825\u0829\u082c\u0850\u0863\u09b3\u09b8\u09c7\u09cd\u0a37\u0a47cy;\u4409\u803b<\u403c\u0280cmnpr\u0837\u083c\u0841\u0844\u084dute;\u4139bda;\u439bg;\u67ealacetrf;\u6112r;\u619e\u0180aey\u0857\u085c\u0861ron;\u413ddil;\u413b;\u441b\u0100fs\u0868\u0970t\u0500ACDFRTUVar\u087e\u08a9\u08b1\u08e0\u08e6\u08fc\u092f\u095b\u0390\u096a\u0100nr\u0883\u088fgleBracket;\u67e8row\u0180;BR\u0899\u089a\u089e\u6190ar;\u61e4ightArrow;\u61c6eiling;\u6308o\u01f5\u08b7\0\u08c3bleBracket;\u67e6n\u01d4\u08c8\0\u08d2eeVector;\u6961ector\u0100;B\u08db\u08dc\u61c3ar;\u6959loor;\u630aight\u0100AV\u08ef\u08f5rrow;\u6194ector;\u694e\u0100er\u0901\u0917e\u0180;AV\u0909\u090a\u0910\u62a3rrow;\u61a4ector;\u695aiangle\u0180;BE\u0924\u0925\u0929\u62b2ar;\u69cfqual;\u62b4p\u0180DTV\u0937\u0942\u094cownVector;\u6951eeVector;\u6960ector\u0100;B\u0956\u0957\u61bfar;\u6958ector\u0100;B\u0965\u0966\u61bcar;\u6952ight\xe1\u039cs\u0300EFGLST\u097e\u098b\u0995\u099d\u09a2\u09adqualGreater;\u62daullEqual;\u6266reater;\u6276ess;\u6aa1lantEqual;\u6a7dilde;\u6272r;\uc000\ud835\udd0f\u0100;e\u09bd\u09be\u62d8ftarrow;\u61daidot;\u413f\u0180npw\u09d4\u0a16\u0a1bg\u0200LRlr\u09de\u09f7\u0a02\u0a10eft\u0100AR\u09e6\u09ecrrow;\u67f5ightArrow;\u67f7ightArrow;\u67f6eft\u0100ar\u03b3\u0a0aight\xe1\u03bfight\xe1\u03caf;\uc000\ud835\udd43er\u0100LR\u0a22\u0a2ceftArrow;\u6199ightArrow;\u6198\u0180cht\u0a3e\u0a40\u0a42\xf2\u084c;\u61b0rok;\u4141;\u626a\u0400acefiosu\u0a5a\u0a5d\u0a60\u0a77\u0a7c\u0a85\u0a8b\u0a8ep;\u6905y;\u441c\u0100dl\u0a65\u0a6fiumSpace;\u605flintrf;\u6133r;\uc000\ud835\udd10nusPlus;\u6213pf;\uc000\ud835\udd44c\xf2\u0a76;\u439c\u0480Jacefostu\u0aa3\u0aa7\u0aad\u0ac0\u0b14\u0b19\u0d91\u0d97\u0d9ecy;\u440acute;\u4143\u0180aey\u0ab4\u0ab9\u0aberon;\u4147dil;\u4145;\u441d\u0180gsw\u0ac7\u0af0\u0b0eative\u0180MTV\u0ad3\u0adf\u0ae8ediumSpace;\u600bhi\u0100cn\u0ae6\u0ad8\xeb\u0ad9eryThi\xee\u0ad9ted\u0100GL\u0af8\u0b06reaterGreate\xf2\u0673essLes\xf3\u0a48Line;\u400ar;\uc000\ud835\udd11\u0200Bnpt\u0b22\u0b28\u0b37\u0b3areak;\u6060BreakingSpace;\u40a0f;\u6115\u0680;CDEGHLNPRSTV\u0b55\u0b56\u0b6a\u0b7c\u0ba1\u0beb\u0c04\u0c5e\u0c84\u0ca6\u0cd8\u0d61\u0d85\u6aec\u0100ou\u0b5b\u0b64ngruent;\u6262pCap;\u626doubleVerticalBar;\u6226\u0180lqx\u0b83\u0b8a\u0b9bement;\u6209ual\u0100;T\u0b92\u0b93\u6260ilde;\uc000\u2242\u0338ists;\u6204reater\u0380;EFGLST\u0bb6\u0bb7\u0bbd\u0bc9\u0bd3\u0bd8\u0be5\u626fqual;\u6271ullEqual;\uc000\u2267\u0338reater;\uc000\u226b\u0338ess;\u6279lantEqual;\uc000\u2a7e\u0338ilde;\u6275ump\u0144\u0bf2\u0bfdownHump;\uc000\u224e\u0338qual;\uc000\u224f\u0338e\u0100fs\u0c0a\u0c27tTriangle\u0180;BE\u0c1a\u0c1b\u0c21\u62eaar;\uc000\u29cf\u0338qual;\u62ecs\u0300;EGLST\u0c35\u0c36\u0c3c\u0c44\u0c4b\u0c58\u626equal;\u6270reater;\u6278ess;\uc000\u226a\u0338lantEqual;\uc000\u2a7d\u0338ilde;\u6274ested\u0100GL\u0c68\u0c79reaterGreater;\uc000\u2aa2\u0338essLess;\uc000\u2aa1\u0338recedes\u0180;ES\u0c92\u0c93\u0c9b\u6280qual;\uc000\u2aaf\u0338lantEqual;\u62e0\u0100ei\u0cab\u0cb9verseElement;\u620cghtTriangle\u0180;BE\u0ccb\u0ccc\u0cd2\u62ebar;\uc000\u29d0\u0338qual;\u62ed\u0100qu\u0cdd\u0d0cuareSu\u0100bp\u0ce8\u0cf9set\u0100;E\u0cf0\u0cf3\uc000\u228f\u0338qual;\u62e2erset\u0100;E\u0d03\u0d06\uc000\u2290\u0338qual;\u62e3\u0180bcp\u0d13\u0d24\u0d4eset\u0100;E\u0d1b\u0d1e\uc000\u2282\u20d2qual;\u6288ceeds\u0200;EST\u0d32\u0d33\u0d3b\u0d46\u6281qual;\uc000\u2ab0\u0338lantEqual;\u62e1ilde;\uc000\u227f\u0338erset\u0100;E\u0d58\u0d5b\uc000\u2283\u20d2qual;\u6289ilde\u0200;EFT\u0d6e\u0d6f\u0d75\u0d7f\u6241qual;\u6244ullEqual;\u6247ilde;\u6249erticalBar;\u6224cr;\uc000\ud835\udca9ilde\u803b\xd1\u40d1;\u439d\u0700Eacdfgmoprstuv\u0dbd\u0dc2\u0dc9\u0dd5\u0ddb\u0de0\u0de7\u0dfc\u0e02\u0e20\u0e22\u0e32\u0e3f\u0e44lig;\u4152cute\u803b\xd3\u40d3\u0100iy\u0dce\u0dd3rc\u803b\xd4\u40d4;\u441eblac;\u4150r;\uc000\ud835\udd12rave\u803b\xd2\u40d2\u0180aei\u0dee\u0df2\u0df6cr;\u414cga;\u43a9cron;\u439fpf;\uc000\ud835\udd46enCurly\u0100DQ\u0e0e\u0e1aoubleQuote;\u601cuote;\u6018;\u6a54\u0100cl\u0e27\u0e2cr;\uc000\ud835\udcaaash\u803b\xd8\u40d8i\u016c\u0e37\u0e3cde\u803b\xd5\u40d5es;\u6a37ml\u803b\xd6\u40d6er\u0100BP\u0e4b\u0e60\u0100ar\u0e50\u0e53r;\u603eac\u0100ek\u0e5a\u0e5c;\u63deet;\u63b4arenthesis;\u63dc\u0480acfhilors\u0e7f\u0e87\u0e8a\u0e8f\u0e92\u0e94\u0e9d\u0eb0\u0efcrtialD;\u6202y;\u441fr;\uc000\ud835\udd13i;\u43a6;\u43a0usMinus;\u40b1\u0100ip\u0ea2\u0eadncareplan\xe5\u069df;\u6119\u0200;eio\u0eb9\u0eba\u0ee0\u0ee4\u6abbcedes\u0200;EST\u0ec8\u0ec9\u0ecf\u0eda\u627aqual;\u6aaflantEqual;\u627cilde;\u627eme;\u6033\u0100dp\u0ee9\u0eeeuct;\u620fortion\u0100;a\u0225\u0ef9l;\u621d\u0100ci\u0f01\u0f06r;\uc000\ud835\udcab;\u43a8\u0200Ufos\u0f11\u0f16\u0f1b\u0f1fOT\u803b\"\u4022r;\uc000\ud835\udd14pf;\u611acr;\uc000\ud835\udcac\u0600BEacefhiorsu\u0f3e\u0f43\u0f47\u0f60\u0f73\u0fa7\u0faa\u0fad\u1096\u10a9\u10b4\u10bearr;\u6910G\u803b\xae\u40ae\u0180cnr\u0f4e\u0f53\u0f56ute;\u4154g;\u67ebr\u0100;t\u0f5c\u0f5d\u61a0l;\u6916\u0180aey\u0f67\u0f6c\u0f71ron;\u4158dil;\u4156;\u4420\u0100;v\u0f78\u0f79\u611cerse\u0100EU\u0f82\u0f99\u0100lq\u0f87\u0f8eement;\u620builibrium;\u61cbpEquilibrium;\u696fr\xbb\u0f79o;\u43a1ght\u0400ACDFTUVa\u0fc1\u0feb\u0ff3\u1022\u1028\u105b\u1087\u03d8\u0100nr\u0fc6\u0fd2gleBracket;\u67e9row\u0180;BL\u0fdc\u0fdd\u0fe1\u6192ar;\u61e5eftArrow;\u61c4eiling;\u6309o\u01f5\u0ff9\0\u1005bleBracket;\u67e7n\u01d4\u100a\0\u1014eeVector;\u695dector\u0100;B\u101d\u101e\u61c2ar;\u6955loor;\u630b\u0100er\u102d\u1043e\u0180;AV\u1035\u1036\u103c\u62a2rrow;\u61a6ector;\u695biangle\u0180;BE\u1050\u1051\u1055\u62b3ar;\u69d0qual;\u62b5p\u0180DTV\u1063\u106e\u1078ownVector;\u694feeVector;\u695cector\u0100;B\u1082\u1083\u61bear;\u6954ector\u0100;B\u1091\u1092\u61c0ar;\u6953\u0100pu\u109b\u109ef;\u611dndImplies;\u6970ightarrow;\u61db\u0100ch\u10b9\u10bcr;\u611b;\u61b1leDelayed;\u69f4\u0680HOacfhimoqstu\u10e4\u10f1\u10f7\u10fd\u1119\u111e\u1151\u1156\u1161\u1167\u11b5\u11bb\u11bf\u0100Cc\u10e9\u10eeHcy;\u4429y;\u4428FTcy;\u442ccute;\u415a\u0280;aeiy\u1108\u1109\u110e\u1113\u1117\u6abcron;\u4160dil;\u415erc;\u415c;\u4421r;\uc000\ud835\udd16ort\u0200DLRU\u112a\u1134\u113e\u1149ownArrow\xbb\u041eeftArrow\xbb\u089aightArrow\xbb\u0fddpArrow;\u6191gma;\u43a3allCircle;\u6218pf;\uc000\ud835\udd4a\u0272\u116d\0\0\u1170t;\u621aare\u0200;ISU\u117b\u117c\u1189\u11af\u65a1ntersection;\u6293u\u0100bp\u118f\u119eset\u0100;E\u1197\u1198\u628fqual;\u6291erset\u0100;E\u11a8\u11a9\u6290qual;\u6292nion;\u6294cr;\uc000\ud835\udcaear;\u62c6\u0200bcmp\u11c8\u11db\u1209\u120b\u0100;s\u11cd\u11ce\u62d0et\u0100;E\u11cd\u11d5qual;\u6286\u0100ch\u11e0\u1205eeds\u0200;EST\u11ed\u11ee\u11f4\u11ff\u627bqual;\u6ab0lantEqual;\u627dilde;\u627fTh\xe1\u0f8c;\u6211\u0180;es\u1212\u1213\u1223\u62d1rset\u0100;E\u121c\u121d\u6283qual;\u6287et\xbb\u1213\u0580HRSacfhiors\u123e\u1244\u1249\u1255\u125e\u1271\u1276\u129f\u12c2\u12c8\u12d1ORN\u803b\xde\u40deADE;\u6122\u0100Hc\u124e\u1252cy;\u440by;\u4426\u0100bu\u125a\u125c;\u4009;\u43a4\u0180aey\u1265\u126a\u126fron;\u4164dil;\u4162;\u4422r;\uc000\ud835\udd17\u0100ei\u127b\u1289\u01f2\u1280\0\u1287efore;\u6234a;\u4398\u0100cn\u128e\u1298kSpace;\uc000\u205f\u200aSpace;\u6009lde\u0200;EFT\u12ab\u12ac\u12b2\u12bc\u623cqual;\u6243ullEqual;\u6245ilde;\u6248pf;\uc000\ud835\udd4bipleDot;\u60db\u0100ct\u12d6\u12dbr;\uc000\ud835\udcafrok;\u4166\u0ae1\u12f7\u130e\u131a\u1326\0\u132c\u1331\0\0\0\0\0\u1338\u133d\u1377\u1385\0\u13ff\u1404\u140a\u1410\u0100cr\u12fb\u1301ute\u803b\xda\u40dar\u0100;o\u1307\u1308\u619fcir;\u6949r\u01e3\u1313\0\u1316y;\u440eve;\u416c\u0100iy\u131e\u1323rc\u803b\xdb\u40db;\u4423blac;\u4170r;\uc000\ud835\udd18rave\u803b\xd9\u40d9acr;\u416a\u0100di\u1341\u1369er\u0100BP\u1348\u135d\u0100ar\u134d\u1350r;\u405fac\u0100ek\u1357\u1359;\u63dfet;\u63b5arenthesis;\u63ddon\u0100;P\u1370\u1371\u62c3lus;\u628e\u0100gp\u137b\u137fon;\u4172f;\uc000\ud835\udd4c\u0400ADETadps\u1395\u13ae\u13b8\u13c4\u03e8\u13d2\u13d7\u13f3rrow\u0180;BD\u1150\u13a0\u13a4ar;\u6912ownArrow;\u61c5ownArrow;\u6195quilibrium;\u696eee\u0100;A\u13cb\u13cc\u62a5rrow;\u61a5own\xe1\u03f3er\u0100LR\u13de\u13e8eftArrow;\u6196ightArrow;\u6197i\u0100;l\u13f9\u13fa\u43d2on;\u43a5ing;\u416ecr;\uc000\ud835\udcb0ilde;\u4168ml\u803b\xdc\u40dc\u0480Dbcdefosv\u1427\u142c\u1430\u1433\u143e\u1485\u148a\u1490\u1496ash;\u62abar;\u6aeby;\u4412ash\u0100;l\u143b\u143c\u62a9;\u6ae6\u0100er\u1443\u1445;\u62c1\u0180bty\u144c\u1450\u147aar;\u6016\u0100;i\u144f\u1455cal\u0200BLST\u1461\u1465\u146a\u1474ar;\u6223ine;\u407ceparator;\u6758ilde;\u6240ThinSpace;\u600ar;\uc000\ud835\udd19pf;\uc000\ud835\udd4dcr;\uc000\ud835\udcb1dash;\u62aa\u0280cefos\u14a7\u14ac\u14b1\u14b6\u14bcirc;\u4174dge;\u62c0r;\uc000\ud835\udd1apf;\uc000\ud835\udd4ecr;\uc000\ud835\udcb2\u0200fios\u14cb\u14d0\u14d2\u14d8r;\uc000\ud835\udd1b;\u439epf;\uc000\ud835\udd4fcr;\uc000\ud835\udcb3\u0480AIUacfosu\u14f1\u14f5\u14f9\u14fd\u1504\u150f\u1514\u151a\u1520cy;\u442fcy;\u4407cy;\u442ecute\u803b\xdd\u40dd\u0100iy\u1509\u150drc;\u4176;\u442br;\uc000\ud835\udd1cpf;\uc000\ud835\udd50cr;\uc000\ud835\udcb4ml;\u4178\u0400Hacdefos\u1535\u1539\u153f\u154b\u154f\u155d\u1560\u1564cy;\u4416cute;\u4179\u0100ay\u1544\u1549ron;\u417d;\u4417ot;\u417b\u01f2\u1554\0\u155boWidt\xe8\u0ad9a;\u4396r;\u6128pf;\u6124cr;\uc000\ud835\udcb5\u0be1\u1583\u158a\u1590\0\u15b0\u15b6\u15bf\0\0\0\0\u15c6\u15db\u15eb\u165f\u166d\0\u1695\u169b\u16b2\u16b9\0\u16becute\u803b\xe1\u40e1reve;\u4103\u0300;Ediuy\u159c\u159d\u15a1\u15a3\u15a8\u15ad\u623e;\uc000\u223e\u0333;\u623frc\u803b\xe2\u40e2te\u80bb\xb4\u0306;\u4430lig\u803b\xe6\u40e6\u0100;r\xb2\u15ba;\uc000\ud835\udd1erave\u803b\xe0\u40e0\u0100ep\u15ca\u15d6\u0100fp\u15cf\u15d4sym;\u6135\xe8\u15d3ha;\u43b1\u0100ap\u15dfc\u0100cl\u15e4\u15e7r;\u4101g;\u6a3f\u0264\u15f0\0\0\u160a\u0280;adsv\u15fa\u15fb\u15ff\u1601\u1607\u6227nd;\u6a55;\u6a5clope;\u6a58;\u6a5a\u0380;elmrsz\u1618\u1619\u161b\u161e\u163f\u164f\u1659\u6220;\u69a4e\xbb\u1619sd\u0100;a\u1625\u1626\u6221\u0461\u1630\u1632\u1634\u1636\u1638\u163a\u163c\u163e;\u69a8;\u69a9;\u69aa;\u69ab;\u69ac;\u69ad;\u69ae;\u69aft\u0100;v\u1645\u1646\u621fb\u0100;d\u164c\u164d\u62be;\u699d\u0100pt\u1654\u1657h;\u6222\xbb\xb9arr;\u637c\u0100gp\u1663\u1667on;\u4105f;\uc000\ud835\udd52\u0380;Eaeiop\u12c1\u167b\u167d\u1682\u1684\u1687\u168a;\u6a70cir;\u6a6f;\u624ad;\u624bs;\u4027rox\u0100;e\u12c1\u1692\xf1\u1683ing\u803b\xe5\u40e5\u0180cty\u16a1\u16a6\u16a8r;\uc000\ud835\udcb6;\u402amp\u0100;e\u12c1\u16af\xf1\u0288ilde\u803b\xe3\u40e3ml\u803b\xe4\u40e4\u0100ci\u16c2\u16c8onin\xf4\u0272nt;\u6a11\u0800Nabcdefiklnoprsu\u16ed\u16f1\u1730\u173c\u1743\u1748\u1778\u177d\u17e0\u17e6\u1839\u1850\u170d\u193d\u1948\u1970ot;\u6aed\u0100cr\u16f6\u171ek\u0200ceps\u1700\u1705\u170d\u1713ong;\u624cpsilon;\u43f6rime;\u6035im\u0100;e\u171a\u171b\u623dq;\u62cd\u0176\u1722\u1726ee;\u62bded\u0100;g\u172c\u172d\u6305e\xbb\u172drk\u0100;t\u135c\u1737brk;\u63b6\u0100oy\u1701\u1741;\u4431quo;\u601e\u0280cmprt\u1753\u175b\u1761\u1764\u1768aus\u0100;e\u010a\u0109ptyv;\u69b0s\xe9\u170cno\xf5\u0113\u0180ahw\u176f\u1771\u1773;\u43b2;\u6136een;\u626cr;\uc000\ud835\udd1fg\u0380costuvw\u178d\u179d\u17b3\u17c1\u17d5\u17db\u17de\u0180aiu\u1794\u1796\u179a\xf0\u0760rc;\u65efp\xbb\u1371\u0180dpt\u17a4\u17a8\u17adot;\u6a00lus;\u6a01imes;\u6a02\u0271\u17b9\0\0\u17becup;\u6a06ar;\u6605riangle\u0100du\u17cd\u17d2own;\u65bdp;\u65b3plus;\u6a04e\xe5\u1444\xe5\u14adarow;\u690d\u0180ako\u17ed\u1826\u1835\u0100cn\u17f2\u1823k\u0180lst\u17fa\u05ab\u1802ozenge;\u69ebriangle\u0200;dlr\u1812\u1813\u1818\u181d\u65b4own;\u65beeft;\u65c2ight;\u65b8k;\u6423\u01b1\u182b\0\u1833\u01b2\u182f\0\u1831;\u6592;\u65914;\u6593ck;\u6588\u0100eo\u183e\u184d\u0100;q\u1843\u1846\uc000=\u20e5uiv;\uc000\u2261\u20e5t;\u6310\u0200ptwx\u1859\u185e\u1867\u186cf;\uc000\ud835\udd53\u0100;t\u13cb\u1863om\xbb\u13cctie;\u62c8\u0600DHUVbdhmptuv\u1885\u1896\u18aa\u18bb\u18d7\u18db\u18ec\u18ff\u1905\u190a\u1910\u1921\u0200LRlr\u188e\u1890\u1892\u1894;\u6557;\u6554;\u6556;\u6553\u0280;DUdu\u18a1\u18a2\u18a4\u18a6\u18a8\u6550;\u6566;\u6569;\u6564;\u6567\u0200LRlr\u18b3\u18b5\u18b7\u18b9;\u655d;\u655a;\u655c;\u6559\u0380;HLRhlr\u18ca\u18cb\u18cd\u18cf\u18d1\u18d3\u18d5\u6551;\u656c;\u6563;\u6560;\u656b;\u6562;\u655fox;\u69c9\u0200LRlr\u18e4\u18e6\u18e8\u18ea;\u6555;\u6552;\u6510;\u650c\u0280;DUdu\u06bd\u18f7\u18f9\u18fb\u18fd;\u6565;\u6568;\u652c;\u6534inus;\u629flus;\u629eimes;\u62a0\u0200LRlr\u1919\u191b\u191d\u191f;\u655b;\u6558;\u6518;\u6514\u0380;HLRhlr\u1930\u1931\u1933\u1935\u1937\u1939\u193b\u6502;\u656a;\u6561;\u655e;\u653c;\u6524;\u651c\u0100ev\u0123\u1942bar\u803b\xa6\u40a6\u0200ceio\u1951\u1956\u195a\u1960r;\uc000\ud835\udcb7mi;\u604fm\u0100;e\u171a\u171cl\u0180;bh\u1968\u1969\u196b\u405c;\u69c5sub;\u67c8\u016c\u1974\u197el\u0100;e\u1979\u197a\u6022t\xbb\u197ap\u0180;Ee\u012f\u1985\u1987;\u6aae\u0100;q\u06dc\u06db\u0ce1\u19a7\0\u19e8\u1a11\u1a15\u1a32\0\u1a37\u1a50\0\0\u1ab4\0\0\u1ac1\0\0\u1b21\u1b2e\u1b4d\u1b52\0\u1bfd\0\u1c0c\u0180cpr\u19ad\u19b2\u19ddute;\u4107\u0300;abcds\u19bf\u19c0\u19c4\u19ca\u19d5\u19d9\u6229nd;\u6a44rcup;\u6a49\u0100au\u19cf\u19d2p;\u6a4bp;\u6a47ot;\u6a40;\uc000\u2229\ufe00\u0100eo\u19e2\u19e5t;\u6041\xee\u0693\u0200aeiu\u19f0\u19fb\u1a01\u1a05\u01f0\u19f5\0\u19f8s;\u6a4don;\u410ddil\u803b\xe7\u40e7rc;\u4109ps\u0100;s\u1a0c\u1a0d\u6a4cm;\u6a50ot;\u410b\u0180dmn\u1a1b\u1a20\u1a26il\u80bb\xb8\u01adptyv;\u69b2t\u8100\xa2;e\u1a2d\u1a2e\u40a2r\xe4\u01b2r;\uc000\ud835\udd20\u0180cei\u1a3d\u1a40\u1a4dy;\u4447ck\u0100;m\u1a47\u1a48\u6713ark\xbb\u1a48;\u43c7r\u0380;Ecefms\u1a5f\u1a60\u1a62\u1a6b\u1aa4\u1aaa\u1aae\u65cb;\u69c3\u0180;el\u1a69\u1a6a\u1a6d\u42c6q;\u6257e\u0261\u1a74\0\0\u1a88rrow\u0100lr\u1a7c\u1a81eft;\u61baight;\u61bb\u0280RSacd\u1a92\u1a94\u1a96\u1a9a\u1a9f\xbb\u0f47;\u64c8st;\u629birc;\u629aash;\u629dnint;\u6a10id;\u6aefcir;\u69c2ubs\u0100;u\u1abb\u1abc\u6663it\xbb\u1abc\u02ec\u1ac7\u1ad4\u1afa\0\u1b0aon\u0100;e\u1acd\u1ace\u403a\u0100;q\xc7\xc6\u026d\u1ad9\0\0\u1ae2a\u0100;t\u1ade\u1adf\u402c;\u4040\u0180;fl\u1ae8\u1ae9\u1aeb\u6201\xee\u1160e\u0100mx\u1af1\u1af6ent\xbb\u1ae9e\xf3\u024d\u01e7\u1afe\0\u1b07\u0100;d\u12bb\u1b02ot;\u6a6dn\xf4\u0246\u0180fry\u1b10\u1b14\u1b17;\uc000\ud835\udd54o\xe4\u0254\u8100\xa9;s\u0155\u1b1dr;\u6117\u0100ao\u1b25\u1b29rr;\u61b5ss;\u6717\u0100cu\u1b32\u1b37r;\uc000\ud835\udcb8\u0100bp\u1b3c\u1b44\u0100;e\u1b41\u1b42\u6acf;\u6ad1\u0100;e\u1b49\u1b4a\u6ad0;\u6ad2dot;\u62ef\u0380delprvw\u1b60\u1b6c\u1b77\u1b82\u1bac\u1bd4\u1bf9arr\u0100lr\u1b68\u1b6a;\u6938;\u6935\u0270\u1b72\0\0\u1b75r;\u62dec;\u62dfarr\u0100;p\u1b7f\u1b80\u61b6;\u693d\u0300;bcdos\u1b8f\u1b90\u1b96\u1ba1\u1ba5\u1ba8\u622arcap;\u6a48\u0100au\u1b9b\u1b9ep;\u6a46p;\u6a4aot;\u628dr;\u6a45;\uc000\u222a\ufe00\u0200alrv\u1bb5\u1bbf\u1bde\u1be3rr\u0100;m\u1bbc\u1bbd\u61b7;\u693cy\u0180evw\u1bc7\u1bd4\u1bd8q\u0270\u1bce\0\0\u1bd2re\xe3\u1b73u\xe3\u1b75ee;\u62ceedge;\u62cfen\u803b\xa4\u40a4earrow\u0100lr\u1bee\u1bf3eft\xbb\u1b80ight\xbb\u1bbde\xe4\u1bdd\u0100ci\u1c01\u1c07onin\xf4\u01f7nt;\u6231lcty;\u632d\u0980AHabcdefhijlorstuwz\u1c38\u1c3b\u1c3f\u1c5d\u1c69\u1c75\u1c8a\u1c9e\u1cac\u1cb7\u1cfb\u1cff\u1d0d\u1d7b\u1d91\u1dab\u1dbb\u1dc6\u1dcdr\xf2\u0381ar;\u6965\u0200glrs\u1c48\u1c4d\u1c52\u1c54ger;\u6020eth;\u6138\xf2\u1133h\u0100;v\u1c5a\u1c5b\u6010\xbb\u090a\u016b\u1c61\u1c67arow;\u690fa\xe3\u0315\u0100ay\u1c6e\u1c73ron;\u410f;\u4434\u0180;ao\u0332\u1c7c\u1c84\u0100gr\u02bf\u1c81r;\u61catseq;\u6a77\u0180glm\u1c91\u1c94\u1c98\u803b\xb0\u40b0ta;\u43b4ptyv;\u69b1\u0100ir\u1ca3\u1ca8sht;\u697f;\uc000\ud835\udd21ar\u0100lr\u1cb3\u1cb5\xbb\u08dc\xbb\u101e\u0280aegsv\u1cc2\u0378\u1cd6\u1cdc\u1ce0m\u0180;os\u0326\u1cca\u1cd4nd\u0100;s\u0326\u1cd1uit;\u6666amma;\u43ddin;\u62f2\u0180;io\u1ce7\u1ce8\u1cf8\u40f7de\u8100\xf7;o\u1ce7\u1cf0ntimes;\u62c7n\xf8\u1cf7cy;\u4452c\u026f\u1d06\0\0\u1d0arn;\u631eop;\u630d\u0280lptuw\u1d18\u1d1d\u1d22\u1d49\u1d55lar;\u4024f;\uc000\ud835\udd55\u0280;emps\u030b\u1d2d\u1d37\u1d3d\u1d42q\u0100;d\u0352\u1d33ot;\u6251inus;\u6238lus;\u6214quare;\u62a1blebarwedg\xe5\xfan\u0180adh\u112e\u1d5d\u1d67ownarrow\xf3\u1c83arpoon\u0100lr\u1d72\u1d76ef\xf4\u1cb4igh\xf4\u1cb6\u0162\u1d7f\u1d85karo\xf7\u0f42\u026f\u1d8a\0\0\u1d8ern;\u631fop;\u630c\u0180cot\u1d98\u1da3\u1da6\u0100ry\u1d9d\u1da1;\uc000\ud835\udcb9;\u4455l;\u69f6rok;\u4111\u0100dr\u1db0\u1db4ot;\u62f1i\u0100;f\u1dba\u1816\u65bf\u0100ah\u1dc0\u1dc3r\xf2\u0429a\xf2\u0fa6angle;\u69a6\u0100ci\u1dd2\u1dd5y;\u445fgrarr;\u67ff\u0900Dacdefglmnopqrstux\u1e01\u1e09\u1e19\u1e38\u0578\u1e3c\u1e49\u1e61\u1e7e\u1ea5\u1eaf\u1ebd\u1ee1\u1f2a\u1f37\u1f44\u1f4e\u1f5a\u0100Do\u1e06\u1d34o\xf4\u1c89\u0100cs\u1e0e\u1e14ute\u803b\xe9\u40e9ter;\u6a6e\u0200aioy\u1e22\u1e27\u1e31\u1e36ron;\u411br\u0100;c\u1e2d\u1e2e\u6256\u803b\xea\u40ealon;\u6255;\u444dot;\u4117\u0100Dr\u1e41\u1e45ot;\u6252;\uc000\ud835\udd22\u0180;rs\u1e50\u1e51\u1e57\u6a9aave\u803b\xe8\u40e8\u0100;d\u1e5c\u1e5d\u6a96ot;\u6a98\u0200;ils\u1e6a\u1e6b\u1e72\u1e74\u6a99nters;\u63e7;\u6113\u0100;d\u1e79\u1e7a\u6a95ot;\u6a97\u0180aps\u1e85\u1e89\u1e97cr;\u4113ty\u0180;sv\u1e92\u1e93\u1e95\u6205et\xbb\u1e93p\u01001;\u1e9d\u1ea4\u0133\u1ea1\u1ea3;\u6004;\u6005\u6003\u0100gs\u1eaa\u1eac;\u414bp;\u6002\u0100gp\u1eb4\u1eb8on;\u4119f;\uc000\ud835\udd56\u0180als\u1ec4\u1ece\u1ed2r\u0100;s\u1eca\u1ecb\u62d5l;\u69e3us;\u6a71i\u0180;lv\u1eda\u1edb\u1edf\u43b5on\xbb\u1edb;\u43f5\u0200csuv\u1eea\u1ef3\u1f0b\u1f23\u0100io\u1eef\u1e31rc\xbb\u1e2e\u0269\u1ef9\0\0\u1efb\xed\u0548ant\u0100gl\u1f02\u1f06tr\xbb\u1e5dess\xbb\u1e7a\u0180aei\u1f12\u1f16\u1f1als;\u403dst;\u625fv\u0100;D\u0235\u1f20D;\u6a78parsl;\u69e5\u0100Da\u1f2f\u1f33ot;\u6253rr;\u6971\u0180cdi\u1f3e\u1f41\u1ef8r;\u612fo\xf4\u0352\u0100ah\u1f49\u1f4b;\u43b7\u803b\xf0\u40f0\u0100mr\u1f53\u1f57l\u803b\xeb\u40ebo;\u60ac\u0180cip\u1f61\u1f64\u1f67l;\u4021s\xf4\u056e\u0100eo\u1f6c\u1f74ctatio\xee\u0559nential\xe5\u0579\u09e1\u1f92\0\u1f9e\0\u1fa1\u1fa7\0\0\u1fc6\u1fcc\0\u1fd3\0\u1fe6\u1fea\u2000\0\u2008\u205allingdotse\xf1\u1e44y;\u4444male;\u6640\u0180ilr\u1fad\u1fb3\u1fc1lig;\u8000\ufb03\u0269\u1fb9\0\0\u1fbdg;\u8000\ufb00ig;\u8000\ufb04;\uc000\ud835\udd23lig;\u8000\ufb01lig;\uc000fj\u0180alt\u1fd9\u1fdc\u1fe1t;\u666dig;\u8000\ufb02ns;\u65b1of;\u4192\u01f0\u1fee\0\u1ff3f;\uc000\ud835\udd57\u0100ak\u05bf\u1ff7\u0100;v\u1ffc\u1ffd\u62d4;\u6ad9artint;\u6a0d\u0100ao\u200c\u2055\u0100cs\u2011\u2052\u03b1\u201a\u2030\u2038\u2045\u2048\0\u2050\u03b2\u2022\u2025\u2027\u202a\u202c\0\u202e\u803b\xbd\u40bd;\u6153\u803b\xbc\u40bc;\u6155;\u6159;\u615b\u01b3\u2034\0\u2036;\u6154;\u6156\u02b4\u203e\u2041\0\0\u2043\u803b\xbe\u40be;\u6157;\u615c5;\u6158\u01b6\u204c\0\u204e;\u615a;\u615d8;\u615el;\u6044wn;\u6322cr;\uc000\ud835\udcbb\u0880Eabcdefgijlnorstv\u2082\u2089\u209f\u20a5\u20b0\u20b4\u20f0\u20f5\u20fa\u20ff\u2103\u2112\u2138\u0317\u213e\u2152\u219e\u0100;l\u064d\u2087;\u6a8c\u0180cmp\u2090\u2095\u209dute;\u41f5ma\u0100;d\u209c\u1cda\u43b3;\u6a86reve;\u411f\u0100iy\u20aa\u20aerc;\u411d;\u4433ot;\u4121\u0200;lqs\u063e\u0642\u20bd\u20c9\u0180;qs\u063e\u064c\u20c4lan\xf4\u0665\u0200;cdl\u0665\u20d2\u20d5\u20e5c;\u6aa9ot\u0100;o\u20dc\u20dd\u6a80\u0100;l\u20e2\u20e3\u6a82;\u6a84\u0100;e\u20ea\u20ed\uc000\u22db\ufe00s;\u6a94r;\uc000\ud835\udd24\u0100;g\u0673\u061bmel;\u6137cy;\u4453\u0200;Eaj\u065a\u210c\u210e\u2110;\u6a92;\u6aa5;\u6aa4\u0200Eaes\u211b\u211d\u2129\u2134;\u6269p\u0100;p\u2123\u2124\u6a8arox\xbb\u2124\u0100;q\u212e\u212f\u6a88\u0100;q\u212e\u211bim;\u62e7pf;\uc000\ud835\udd58\u0100ci\u2143\u2146r;\u610am\u0180;el\u066b\u214e\u2150;\u6a8e;\u6a90\u8300>;cdlqr\u05ee\u2160\u216a\u216e\u2173\u2179\u0100ci\u2165\u2167;\u6aa7r;\u6a7aot;\u62d7Par;\u6995uest;\u6a7c\u0280adels\u2184\u216a\u2190\u0656\u219b\u01f0\u2189\0\u218epro\xf8\u209er;\u6978q\u0100lq\u063f\u2196les\xf3\u2088i\xed\u066b\u0100en\u21a3\u21adrtneqq;\uc000\u2269\ufe00\xc5\u21aa\u0500Aabcefkosy\u21c4\u21c7\u21f1\u21f5\u21fa\u2218\u221d\u222f\u2268\u227dr\xf2\u03a0\u0200ilmr\u21d0\u21d4\u21d7\u21dbrs\xf0\u1484f\xbb\u2024il\xf4\u06a9\u0100dr\u21e0\u21e4cy;\u444a\u0180;cw\u08f4\u21eb\u21efir;\u6948;\u61adar;\u610firc;\u4125\u0180alr\u2201\u220e\u2213rts\u0100;u\u2209\u220a\u6665it\xbb\u220alip;\u6026con;\u62b9r;\uc000\ud835\udd25s\u0100ew\u2223\u2229arow;\u6925arow;\u6926\u0280amopr\u223a\u223e\u2243\u225e\u2263rr;\u61fftht;\u623bk\u0100lr\u2249\u2253eftarrow;\u61a9ightarrow;\u61aaf;\uc000\ud835\udd59bar;\u6015\u0180clt\u226f\u2274\u2278r;\uc000\ud835\udcbdas\xe8\u21f4rok;\u4127\u0100bp\u2282\u2287ull;\u6043hen\xbb\u1c5b\u0ae1\u22a3\0\u22aa\0\u22b8\u22c5\u22ce\0\u22d5\u22f3\0\0\u22f8\u2322\u2367\u2362\u237f\0\u2386\u23aa\u23b4cute\u803b\xed\u40ed\u0180;iy\u0771\u22b0\u22b5rc\u803b\xee\u40ee;\u4438\u0100cx\u22bc\u22bfy;\u4435cl\u803b\xa1\u40a1\u0100fr\u039f\u22c9;\uc000\ud835\udd26rave\u803b\xec\u40ec\u0200;ino\u073e\u22dd\u22e9\u22ee\u0100in\u22e2\u22e6nt;\u6a0ct;\u622dfin;\u69dcta;\u6129lig;\u4133\u0180aop\u22fe\u231a\u231d\u0180cgt\u2305\u2308\u2317r;\u412b\u0180elp\u071f\u230f\u2313in\xe5\u078ear\xf4\u0720h;\u4131f;\u62b7ed;\u41b5\u0280;cfot\u04f4\u232c\u2331\u233d\u2341are;\u6105in\u0100;t\u2338\u2339\u621eie;\u69dddo\xf4\u2319\u0280;celp\u0757\u234c\u2350\u235b\u2361al;\u62ba\u0100gr\u2355\u2359er\xf3\u1563\xe3\u234darhk;\u6a17rod;\u6a3c\u0200cgpt\u236f\u2372\u2376\u237by;\u4451on;\u412ff;\uc000\ud835\udd5aa;\u43b9uest\u803b\xbf\u40bf\u0100ci\u238a\u238fr;\uc000\ud835\udcben\u0280;Edsv\u04f4\u239b\u239d\u23a1\u04f3;\u62f9ot;\u62f5\u0100;v\u23a6\u23a7\u62f4;\u62f3\u0100;i\u0777\u23aelde;\u4129\u01eb\u23b8\0\u23bccy;\u4456l\u803b\xef\u40ef\u0300cfmosu\u23cc\u23d7\u23dc\u23e1\u23e7\u23f5\u0100iy\u23d1\u23d5rc;\u4135;\u4439r;\uc000\ud835\udd27ath;\u4237pf;\uc000\ud835\udd5b\u01e3\u23ec\0\u23f1r;\uc000\ud835\udcbfrcy;\u4458kcy;\u4454\u0400acfghjos\u240b\u2416\u2422\u2427\u242d\u2431\u2435\u243bppa\u0100;v\u2413\u2414\u43ba;\u43f0\u0100ey\u241b\u2420dil;\u4137;\u443ar;\uc000\ud835\udd28reen;\u4138cy;\u4445cy;\u445cpf;\uc000\ud835\udd5ccr;\uc000\ud835\udcc0\u0b80ABEHabcdefghjlmnoprstuv\u2470\u2481\u2486\u248d\u2491\u250e\u253d\u255a\u2580\u264e\u265e\u2665\u2679\u267d\u269a\u26b2\u26d8\u275d\u2768\u278b\u27c0\u2801\u2812\u0180art\u2477\u247a\u247cr\xf2\u09c6\xf2\u0395ail;\u691barr;\u690e\u0100;g\u0994\u248b;\u6a8bar;\u6962\u0963\u24a5\0\u24aa\0\u24b1\0\0\0\0\0\u24b5\u24ba\0\u24c6\u24c8\u24cd\0\u24f9ute;\u413amptyv;\u69b4ra\xee\u084cbda;\u43bbg\u0180;dl\u088e\u24c1\u24c3;\u6991\xe5\u088e;\u6a85uo\u803b\xab\u40abr\u0400;bfhlpst\u0899\u24de\u24e6\u24e9\u24eb\u24ee\u24f1\u24f5\u0100;f\u089d\u24e3s;\u691fs;\u691d\xeb\u2252p;\u61abl;\u6939im;\u6973l;\u61a2\u0180;ae\u24ff\u2500\u2504\u6aabil;\u6919\u0100;s\u2509\u250a\u6aad;\uc000\u2aad\ufe00\u0180abr\u2515\u2519\u251drr;\u690crk;\u6772\u0100ak\u2522\u252cc\u0100ek\u2528\u252a;\u407b;\u405b\u0100es\u2531\u2533;\u698bl\u0100du\u2539\u253b;\u698f;\u698d\u0200aeuy\u2546\u254b\u2556\u2558ron;\u413e\u0100di\u2550\u2554il;\u413c\xec\u08b0\xe2\u2529;\u443b\u0200cqrs\u2563\u2566\u256d\u257da;\u6936uo\u0100;r\u0e19\u1746\u0100du\u2572\u2577har;\u6967shar;\u694bh;\u61b2\u0280;fgqs\u258b\u258c\u0989\u25f3\u25ff\u6264t\u0280ahlrt\u2598\u25a4\u25b7\u25c2\u25e8rrow\u0100;t\u0899\u25a1a\xe9\u24f6arpoon\u0100du\u25af\u25b4own\xbb\u045ap\xbb\u0966eftarrows;\u61c7ight\u0180ahs\u25cd\u25d6\u25derrow\u0100;s\u08f4\u08a7arpoon\xf3\u0f98quigarro\xf7\u21f0hreetimes;\u62cb\u0180;qs\u258b\u0993\u25falan\xf4\u09ac\u0280;cdgs\u09ac\u260a\u260d\u261d\u2628c;\u6aa8ot\u0100;o\u2614\u2615\u6a7f\u0100;r\u261a\u261b\u6a81;\u6a83\u0100;e\u2622\u2625\uc000\u22da\ufe00s;\u6a93\u0280adegs\u2633\u2639\u263d\u2649\u264bppro\xf8\u24c6ot;\u62d6q\u0100gq\u2643\u2645\xf4\u0989gt\xf2\u248c\xf4\u099bi\xed\u09b2\u0180ilr\u2655\u08e1\u265asht;\u697c;\uc000\ud835\udd29\u0100;E\u099c\u2663;\u6a91\u0161\u2669\u2676r\u0100du\u25b2\u266e\u0100;l\u0965\u2673;\u696alk;\u6584cy;\u4459\u0280;acht\u0a48\u2688\u268b\u2691\u2696r\xf2\u25c1orne\xf2\u1d08ard;\u696bri;\u65fa\u0100io\u269f\u26a4dot;\u4140ust\u0100;a\u26ac\u26ad\u63b0che\xbb\u26ad\u0200Eaes\u26bb\u26bd\u26c9\u26d4;\u6268p\u0100;p\u26c3\u26c4\u6a89rox\xbb\u26c4\u0100;q\u26ce\u26cf\u6a87\u0100;q\u26ce\u26bbim;\u62e6\u0400abnoptwz\u26e9\u26f4\u26f7\u271a\u272f\u2741\u2747\u2750\u0100nr\u26ee\u26f1g;\u67ecr;\u61fdr\xeb\u08c1g\u0180lmr\u26ff\u270d\u2714eft\u0100ar\u09e6\u2707ight\xe1\u09f2apsto;\u67fcight\xe1\u09fdparrow\u0100lr\u2725\u2729ef\xf4\u24edight;\u61ac\u0180afl\u2736\u2739\u273dr;\u6985;\uc000\ud835\udd5dus;\u6a2dimes;\u6a34\u0161\u274b\u274fst;\u6217\xe1\u134e\u0180;ef\u2757\u2758\u1800\u65cange\xbb\u2758ar\u0100;l\u2764\u2765\u4028t;\u6993\u0280achmt\u2773\u2776\u277c\u2785\u2787r\xf2\u08a8orne\xf2\u1d8car\u0100;d\u0f98\u2783;\u696d;\u600eri;\u62bf\u0300achiqt\u2798\u279d\u0a40\u27a2\u27ae\u27bbquo;\u6039r;\uc000\ud835\udcc1m\u0180;eg\u09b2\u27aa\u27ac;\u6a8d;\u6a8f\u0100bu\u252a\u27b3o\u0100;r\u0e1f\u27b9;\u601arok;\u4142\u8400<;cdhilqr\u082b\u27d2\u2639\u27dc\u27e0\u27e5\u27ea\u27f0\u0100ci\u27d7\u27d9;\u6aa6r;\u6a79re\xe5\u25f2mes;\u62c9arr;\u6976uest;\u6a7b\u0100Pi\u27f5\u27f9ar;\u6996\u0180;ef\u2800\u092d\u181b\u65c3r\u0100du\u2807\u280dshar;\u694ahar;\u6966\u0100en\u2817\u2821rtneqq;\uc000\u2268\ufe00\xc5\u281e\u0700Dacdefhilnopsu\u2840\u2845\u2882\u288e\u2893\u28a0\u28a5\u28a8\u28da\u28e2\u28e4\u0a83\u28f3\u2902Dot;\u623a\u0200clpr\u284e\u2852\u2863\u287dr\u803b\xaf\u40af\u0100et\u2857\u2859;\u6642\u0100;e\u285e\u285f\u6720se\xbb\u285f\u0100;s\u103b\u2868to\u0200;dlu\u103b\u2873\u2877\u287bow\xee\u048cef\xf4\u090f\xf0\u13d1ker;\u65ae\u0100oy\u2887\u288cmma;\u6a29;\u443cash;\u6014asuredangle\xbb\u1626r;\uc000\ud835\udd2ao;\u6127\u0180cdn\u28af\u28b4\u28c9ro\u803b\xb5\u40b5\u0200;acd\u1464\u28bd\u28c0\u28c4s\xf4\u16a7ir;\u6af0ot\u80bb\xb7\u01b5us\u0180;bd\u28d2\u1903\u28d3\u6212\u0100;u\u1d3c\u28d8;\u6a2a\u0163\u28de\u28e1p;\u6adb\xf2\u2212\xf0\u0a81\u0100dp\u28e9\u28eeels;\u62a7f;\uc000\ud835\udd5e\u0100ct\u28f8\u28fdr;\uc000\ud835\udcc2pos\xbb\u159d\u0180;lm\u2909\u290a\u290d\u43bctimap;\u62b8\u0c00GLRVabcdefghijlmoprstuvw\u2942\u2953\u297e\u2989\u2998\u29da\u29e9\u2a15\u2a1a\u2a58\u2a5d\u2a83\u2a95\u2aa4\u2aa8\u2b04\u2b07\u2b44\u2b7f\u2bae\u2c34\u2c67\u2c7c\u2ce9\u0100gt\u2947\u294b;\uc000\u22d9\u0338\u0100;v\u2950\u0bcf\uc000\u226b\u20d2\u0180elt\u295a\u2972\u2976ft\u0100ar\u2961\u2967rrow;\u61cdightarrow;\u61ce;\uc000\u22d8\u0338\u0100;v\u297b\u0c47\uc000\u226a\u20d2ightarrow;\u61cf\u0100Dd\u298e\u2993ash;\u62afash;\u62ae\u0280bcnpt\u29a3\u29a7\u29ac\u29b1\u29ccla\xbb\u02deute;\u4144g;\uc000\u2220\u20d2\u0280;Eiop\u0d84\u29bc\u29c0\u29c5\u29c8;\uc000\u2a70\u0338d;\uc000\u224b\u0338s;\u4149ro\xf8\u0d84ur\u0100;a\u29d3\u29d4\u666el\u0100;s\u29d3\u0b38\u01f3\u29df\0\u29e3p\u80bb\xa0\u0b37mp\u0100;e\u0bf9\u0c00\u0280aeouy\u29f4\u29fe\u2a03\u2a10\u2a13\u01f0\u29f9\0\u29fb;\u6a43on;\u4148dil;\u4146ng\u0100;d\u0d7e\u2a0aot;\uc000\u2a6d\u0338p;\u6a42;\u443dash;\u6013\u0380;Aadqsx\u0b92\u2a29\u2a2d\u2a3b\u2a41\u2a45\u2a50rr;\u61d7r\u0100hr\u2a33\u2a36k;\u6924\u0100;o\u13f2\u13f0ot;\uc000\u2250\u0338ui\xf6\u0b63\u0100ei\u2a4a\u2a4ear;\u6928\xed\u0b98ist\u0100;s\u0ba0\u0b9fr;\uc000\ud835\udd2b\u0200Eest\u0bc5\u2a66\u2a79\u2a7c\u0180;qs\u0bbc\u2a6d\u0be1\u0180;qs\u0bbc\u0bc5\u2a74lan\xf4\u0be2i\xed\u0bea\u0100;r\u0bb6\u2a81\xbb\u0bb7\u0180Aap\u2a8a\u2a8d\u2a91r\xf2\u2971rr;\u61aear;\u6af2\u0180;sv\u0f8d\u2a9c\u0f8c\u0100;d\u2aa1\u2aa2\u62fc;\u62facy;\u445a\u0380AEadest\u2ab7\u2aba\u2abe\u2ac2\u2ac5\u2af6\u2af9r\xf2\u2966;\uc000\u2266\u0338rr;\u619ar;\u6025\u0200;fqs\u0c3b\u2ace\u2ae3\u2aeft\u0100ar\u2ad4\u2ad9rro\xf7\u2ac1ightarro\xf7\u2a90\u0180;qs\u0c3b\u2aba\u2aealan\xf4\u0c55\u0100;s\u0c55\u2af4\xbb\u0c36i\xed\u0c5d\u0100;r\u0c35\u2afei\u0100;e\u0c1a\u0c25i\xe4\u0d90\u0100pt\u2b0c\u2b11f;\uc000\ud835\udd5f\u8180\xac;in\u2b19\u2b1a\u2b36\u40acn\u0200;Edv\u0b89\u2b24\u2b28\u2b2e;\uc000\u22f9\u0338ot;\uc000\u22f5\u0338\u01e1\u0b89\u2b33\u2b35;\u62f7;\u62f6i\u0100;v\u0cb8\u2b3c\u01e1\u0cb8\u2b41\u2b43;\u62fe;\u62fd\u0180aor\u2b4b\u2b63\u2b69r\u0200;ast\u0b7b\u2b55\u2b5a\u2b5flle\xec\u0b7bl;\uc000\u2afd\u20e5;\uc000\u2202\u0338lint;\u6a14\u0180;ce\u0c92\u2b70\u2b73u\xe5\u0ca5\u0100;c\u0c98\u2b78\u0100;e\u0c92\u2b7d\xf1\u0c98\u0200Aait\u2b88\u2b8b\u2b9d\u2ba7r\xf2\u2988rr\u0180;cw\u2b94\u2b95\u2b99\u619b;\uc000\u2933\u0338;\uc000\u219d\u0338ghtarrow\xbb\u2b95ri\u0100;e\u0ccb\u0cd6\u0380chimpqu\u2bbd\u2bcd\u2bd9\u2b04\u0b78\u2be4\u2bef\u0200;cer\u0d32\u2bc6\u0d37\u2bc9u\xe5\u0d45;\uc000\ud835\udcc3ort\u026d\u2b05\0\0\u2bd6ar\xe1\u2b56m\u0100;e\u0d6e\u2bdf\u0100;q\u0d74\u0d73su\u0100bp\u2beb\u2bed\xe5\u0cf8\xe5\u0d0b\u0180bcp\u2bf6\u2c11\u2c19\u0200;Ees\u2bff\u2c00\u0d22\u2c04\u6284;\uc000\u2ac5\u0338et\u0100;e\u0d1b\u2c0bq\u0100;q\u0d23\u2c00c\u0100;e\u0d32\u2c17\xf1\u0d38\u0200;Ees\u2c22\u2c23\u0d5f\u2c27\u6285;\uc000\u2ac6\u0338et\u0100;e\u0d58\u2c2eq\u0100;q\u0d60\u2c23\u0200gilr\u2c3d\u2c3f\u2c45\u2c47\xec\u0bd7lde\u803b\xf1\u40f1\xe7\u0c43iangle\u0100lr\u2c52\u2c5ceft\u0100;e\u0c1a\u2c5a\xf1\u0c26ight\u0100;e\u0ccb\u2c65\xf1\u0cd7\u0100;m\u2c6c\u2c6d\u43bd\u0180;es\u2c74\u2c75\u2c79\u4023ro;\u6116p;\u6007\u0480DHadgilrs\u2c8f\u2c94\u2c99\u2c9e\u2ca3\u2cb0\u2cb6\u2cd3\u2ce3ash;\u62adarr;\u6904p;\uc000\u224d\u20d2ash;\u62ac\u0100et\u2ca8\u2cac;\uc000\u2265\u20d2;\uc000>\u20d2nfin;\u69de\u0180Aet\u2cbd\u2cc1\u2cc5rr;\u6902;\uc000\u2264\u20d2\u0100;r\u2cca\u2ccd\uc000<\u20d2ie;\uc000\u22b4\u20d2\u0100At\u2cd8\u2cdcrr;\u6903rie;\uc000\u22b5\u20d2im;\uc000\u223c\u20d2\u0180Aan\u2cf0\u2cf4\u2d02rr;\u61d6r\u0100hr\u2cfa\u2cfdk;\u6923\u0100;o\u13e7\u13e5ear;\u6927\u1253\u1a95\0\0\0\0\0\0\0\0\0\0\0\0\0\u2d2d\0\u2d38\u2d48\u2d60\u2d65\u2d72\u2d84\u1b07\0\0\u2d8d\u2dab\0\u2dc8\u2dce\0\u2ddc\u2e19\u2e2b\u2e3e\u2e43\u0100cs\u2d31\u1a97ute\u803b\xf3\u40f3\u0100iy\u2d3c\u2d45r\u0100;c\u1a9e\u2d42\u803b\xf4\u40f4;\u443e\u0280abios\u1aa0\u2d52\u2d57\u01c8\u2d5alac;\u4151v;\u6a38old;\u69bclig;\u4153\u0100cr\u2d69\u2d6dir;\u69bf;\uc000\ud835\udd2c\u036f\u2d79\0\0\u2d7c\0\u2d82n;\u42dbave\u803b\xf2\u40f2;\u69c1\u0100bm\u2d88\u0df4ar;\u69b5\u0200acit\u2d95\u2d98\u2da5\u2da8r\xf2\u1a80\u0100ir\u2d9d\u2da0r;\u69beoss;\u69bbn\xe5\u0e52;\u69c0\u0180aei\u2db1\u2db5\u2db9cr;\u414dga;\u43c9\u0180cdn\u2dc0\u2dc5\u01cdron;\u43bf;\u69b6pf;\uc000\ud835\udd60\u0180ael\u2dd4\u2dd7\u01d2r;\u69b7rp;\u69b9\u0380;adiosv\u2dea\u2deb\u2dee\u2e08\u2e0d\u2e10\u2e16\u6228r\xf2\u1a86\u0200;efm\u2df7\u2df8\u2e02\u2e05\u6a5dr\u0100;o\u2dfe\u2dff\u6134f\xbb\u2dff\u803b\xaa\u40aa\u803b\xba\u40bagof;\u62b6r;\u6a56lope;\u6a57;\u6a5b\u0180clo\u2e1f\u2e21\u2e27\xf2\u2e01ash\u803b\xf8\u40f8l;\u6298i\u016c\u2e2f\u2e34de\u803b\xf5\u40f5es\u0100;a\u01db\u2e3as;\u6a36ml\u803b\xf6\u40f6bar;\u633d\u0ae1\u2e5e\0\u2e7d\0\u2e80\u2e9d\0\u2ea2\u2eb9\0\0\u2ecb\u0e9c\0\u2f13\0\0\u2f2b\u2fbc\0\u2fc8r\u0200;ast\u0403\u2e67\u2e72\u0e85\u8100\xb6;l\u2e6d\u2e6e\u40b6le\xec\u0403\u0269\u2e78\0\0\u2e7bm;\u6af3;\u6afdy;\u443fr\u0280cimpt\u2e8b\u2e8f\u2e93\u1865\u2e97nt;\u4025od;\u402eil;\u6030enk;\u6031r;\uc000\ud835\udd2d\u0180imo\u2ea8\u2eb0\u2eb4\u0100;v\u2ead\u2eae\u43c6;\u43d5ma\xf4\u0a76ne;\u660e\u0180;tv\u2ebf\u2ec0\u2ec8\u43c0chfork\xbb\u1ffd;\u43d6\u0100au\u2ecf\u2edfn\u0100ck\u2ed5\u2eddk\u0100;h\u21f4\u2edb;\u610e\xf6\u21f4s\u0480;abcdemst\u2ef3\u2ef4\u1908\u2ef9\u2efd\u2f04\u2f06\u2f0a\u2f0e\u402bcir;\u6a23ir;\u6a22\u0100ou\u1d40\u2f02;\u6a25;\u6a72n\u80bb\xb1\u0e9dim;\u6a26wo;\u6a27\u0180ipu\u2f19\u2f20\u2f25ntint;\u6a15f;\uc000\ud835\udd61nd\u803b\xa3\u40a3\u0500;Eaceinosu\u0ec8\u2f3f\u2f41\u2f44\u2f47\u2f81\u2f89\u2f92\u2f7e\u2fb6;\u6ab3p;\u6ab7u\xe5\u0ed9\u0100;c\u0ece\u2f4c\u0300;acens\u0ec8\u2f59\u2f5f\u2f66\u2f68\u2f7eppro\xf8\u2f43urlye\xf1\u0ed9\xf1\u0ece\u0180aes\u2f6f\u2f76\u2f7approx;\u6ab9qq;\u6ab5im;\u62e8i\xed\u0edfme\u0100;s\u2f88\u0eae\u6032\u0180Eas\u2f78\u2f90\u2f7a\xf0\u2f75\u0180dfp\u0eec\u2f99\u2faf\u0180als\u2fa0\u2fa5\u2faalar;\u632eine;\u6312urf;\u6313\u0100;t\u0efb\u2fb4\xef\u0efbrel;\u62b0\u0100ci\u2fc0\u2fc5r;\uc000\ud835\udcc5;\u43c8ncsp;\u6008\u0300fiopsu\u2fda\u22e2\u2fdf\u2fe5\u2feb\u2ff1r;\uc000\ud835\udd2epf;\uc000\ud835\udd62rime;\u6057cr;\uc000\ud835\udcc6\u0180aeo\u2ff8\u3009\u3013t\u0100ei\u2ffe\u3005rnion\xf3\u06b0nt;\u6a16st\u0100;e\u3010\u3011\u403f\xf1\u1f19\xf4\u0f14\u0a80ABHabcdefhilmnoprstux\u3040\u3051\u3055\u3059\u30e0\u310e\u312b\u3147\u3162\u3172\u318e\u3206\u3215\u3224\u3229\u3258\u326e\u3272\u3290\u32b0\u32b7\u0180art\u3047\u304a\u304cr\xf2\u10b3\xf2\u03ddail;\u691car\xf2\u1c65ar;\u6964\u0380cdenqrt\u3068\u3075\u3078\u307f\u308f\u3094\u30cc\u0100eu\u306d\u3071;\uc000\u223d\u0331te;\u4155i\xe3\u116emptyv;\u69b3g\u0200;del\u0fd1\u3089\u308b\u308d;\u6992;\u69a5\xe5\u0fd1uo\u803b\xbb\u40bbr\u0580;abcfhlpstw\u0fdc\u30ac\u30af\u30b7\u30b9\u30bc\u30be\u30c0\u30c3\u30c7\u30cap;\u6975\u0100;f\u0fe0\u30b4s;\u6920;\u6933s;\u691e\xeb\u225d\xf0\u272el;\u6945im;\u6974l;\u61a3;\u619d\u0100ai\u30d1\u30d5il;\u691ao\u0100;n\u30db\u30dc\u6236al\xf3\u0f1e\u0180abr\u30e7\u30ea\u30eer\xf2\u17e5rk;\u6773\u0100ak\u30f3\u30fdc\u0100ek\u30f9\u30fb;\u407d;\u405d\u0100es\u3102\u3104;\u698cl\u0100du\u310a\u310c;\u698e;\u6990\u0200aeuy\u3117\u311c\u3127\u3129ron;\u4159\u0100di\u3121\u3125il;\u4157\xec\u0ff2\xe2\u30fa;\u4440\u0200clqs\u3134\u3137\u313d\u3144a;\u6937dhar;\u6969uo\u0100;r\u020e\u020dh;\u61b3\u0180acg\u314e\u315f\u0f44l\u0200;ips\u0f78\u3158\u315b\u109cn\xe5\u10bbar\xf4\u0fa9t;\u65ad\u0180ilr\u3169\u1023\u316esht;\u697d;\uc000\ud835\udd2f\u0100ao\u3177\u3186r\u0100du\u317d\u317f\xbb\u047b\u0100;l\u1091\u3184;\u696c\u0100;v\u318b\u318c\u43c1;\u43f1\u0180gns\u3195\u31f9\u31fcht\u0300ahlrst\u31a4\u31b0\u31c2\u31d8\u31e4\u31eerrow\u0100;t\u0fdc\u31ada\xe9\u30c8arpoon\u0100du\u31bb\u31bfow\xee\u317ep\xbb\u1092eft\u0100ah\u31ca\u31d0rrow\xf3\u0feaarpoon\xf3\u0551ightarrows;\u61c9quigarro\xf7\u30cbhreetimes;\u62ccg;\u42daingdotse\xf1\u1f32\u0180ahm\u320d\u3210\u3213r\xf2\u0feaa\xf2\u0551;\u600foust\u0100;a\u321e\u321f\u63b1che\xbb\u321fmid;\u6aee\u0200abpt\u3232\u323d\u3240\u3252\u0100nr\u3237\u323ag;\u67edr;\u61fer\xeb\u1003\u0180afl\u3247\u324a\u324er;\u6986;\uc000\ud835\udd63us;\u6a2eimes;\u6a35\u0100ap\u325d\u3267r\u0100;g\u3263\u3264\u4029t;\u6994olint;\u6a12ar\xf2\u31e3\u0200achq\u327b\u3280\u10bc\u3285quo;\u603ar;\uc000\ud835\udcc7\u0100bu\u30fb\u328ao\u0100;r\u0214\u0213\u0180hir\u3297\u329b\u32a0re\xe5\u31f8mes;\u62cai\u0200;efl\u32aa\u1059\u1821\u32ab\u65b9tri;\u69celuhar;\u6968;\u611e\u0d61\u32d5\u32db\u32df\u332c\u3338\u3371\0\u337a\u33a4\0\0\u33ec\u33f0\0\u3428\u3448\u345a\u34ad\u34b1\u34ca\u34f1\0\u3616\0\0\u3633cute;\u415bqu\xef\u27ba\u0500;Eaceinpsy\u11ed\u32f3\u32f5\u32ff\u3302\u330b\u330f\u331f\u3326\u3329;\u6ab4\u01f0\u32fa\0\u32fc;\u6ab8on;\u4161u\xe5\u11fe\u0100;d\u11f3\u3307il;\u415frc;\u415d\u0180Eas\u3316\u3318\u331b;\u6ab6p;\u6abaim;\u62e9olint;\u6a13i\xed\u1204;\u4441ot\u0180;be\u3334\u1d47\u3335\u62c5;\u6a66\u0380Aacmstx\u3346\u334a\u3357\u335b\u335e\u3363\u336drr;\u61d8r\u0100hr\u3350\u3352\xeb\u2228\u0100;o\u0a36\u0a34t\u803b\xa7\u40a7i;\u403bwar;\u6929m\u0100in\u3369\xf0nu\xf3\xf1t;\u6736r\u0100;o\u3376\u2055\uc000\ud835\udd30\u0200acoy\u3382\u3386\u3391\u33a0rp;\u666f\u0100hy\u338b\u338fcy;\u4449;\u4448rt\u026d\u3399\0\0\u339ci\xe4\u1464ara\xec\u2e6f\u803b\xad\u40ad\u0100gm\u33a8\u33b4ma\u0180;fv\u33b1\u33b2\u33b2\u43c3;\u43c2\u0400;deglnpr\u12ab\u33c5\u33c9\u33ce\u33d6\u33de\u33e1\u33e6ot;\u6a6a\u0100;q\u12b1\u12b0\u0100;E\u33d3\u33d4\u6a9e;\u6aa0\u0100;E\u33db\u33dc\u6a9d;\u6a9fe;\u6246lus;\u6a24arr;\u6972ar\xf2\u113d\u0200aeit\u33f8\u3408\u340f\u3417\u0100ls\u33fd\u3404lsetm\xe9\u336ahp;\u6a33parsl;\u69e4\u0100dl\u1463\u3414e;\u6323\u0100;e\u341c\u341d\u6aaa\u0100;s\u3422\u3423\u6aac;\uc000\u2aac\ufe00\u0180flp\u342e\u3433\u3442tcy;\u444c\u0100;b\u3438\u3439\u402f\u0100;a\u343e\u343f\u69c4r;\u633ff;\uc000\ud835\udd64a\u0100dr\u344d\u0402es\u0100;u\u3454\u3455\u6660it\xbb\u3455\u0180csu\u3460\u3479\u349f\u0100au\u3465\u346fp\u0100;s\u1188\u346b;\uc000\u2293\ufe00p\u0100;s\u11b4\u3475;\uc000\u2294\ufe00u\u0100bp\u347f\u348f\u0180;es\u1197\u119c\u3486et\u0100;e\u1197\u348d\xf1\u119d\u0180;es\u11a8\u11ad\u3496et\u0100;e\u11a8\u349d\xf1\u11ae\u0180;af\u117b\u34a6\u05b0r\u0165\u34ab\u05b1\xbb\u117car\xf2\u1148\u0200cemt\u34b9\u34be\u34c2\u34c5r;\uc000\ud835\udcc8tm\xee\xf1i\xec\u3415ar\xe6\u11be\u0100ar\u34ce\u34d5r\u0100;f\u34d4\u17bf\u6606\u0100an\u34da\u34edight\u0100ep\u34e3\u34eapsilo\xee\u1ee0h\xe9\u2eafs\xbb\u2852\u0280bcmnp\u34fb\u355e\u1209\u358b\u358e\u0480;Edemnprs\u350e\u350f\u3511\u3515\u351e\u3523\u352c\u3531\u3536\u6282;\u6ac5ot;\u6abd\u0100;d\u11da\u351aot;\u6ac3ult;\u6ac1\u0100Ee\u3528\u352a;\u6acb;\u628alus;\u6abfarr;\u6979\u0180eiu\u353d\u3552\u3555t\u0180;en\u350e\u3545\u354bq\u0100;q\u11da\u350feq\u0100;q\u352b\u3528m;\u6ac7\u0100bp\u355a\u355c;\u6ad5;\u6ad3c\u0300;acens\u11ed\u356c\u3572\u3579\u357b\u3326ppro\xf8\u32faurlye\xf1\u11fe\xf1\u11f3\u0180aes\u3582\u3588\u331bppro\xf8\u331aq\xf1\u3317g;\u666a\u0680123;Edehlmnps\u35a9\u35ac\u35af\u121c\u35b2\u35b4\u35c0\u35c9\u35d5\u35da\u35df\u35e8\u35ed\u803b\xb9\u40b9\u803b\xb2\u40b2\u803b\xb3\u40b3;\u6ac6\u0100os\u35b9\u35bct;\u6abeub;\u6ad8\u0100;d\u1222\u35c5ot;\u6ac4s\u0100ou\u35cf\u35d2l;\u67c9b;\u6ad7arr;\u697bult;\u6ac2\u0100Ee\u35e4\u35e6;\u6acc;\u628blus;\u6ac0\u0180eiu\u35f4\u3609\u360ct\u0180;en\u121c\u35fc\u3602q\u0100;q\u1222\u35b2eq\u0100;q\u35e7\u35e4m;\u6ac8\u0100bp\u3611\u3613;\u6ad4;\u6ad6\u0180Aan\u361c\u3620\u362drr;\u61d9r\u0100hr\u3626\u3628\xeb\u222e\u0100;o\u0a2b\u0a29war;\u692alig\u803b\xdf\u40df\u0be1\u3651\u365d\u3660\u12ce\u3673\u3679\0\u367e\u36c2\0\0\0\0\0\u36db\u3703\0\u3709\u376c\0\0\0\u3787\u0272\u3656\0\0\u365bget;\u6316;\u43c4r\xeb\u0e5f\u0180aey\u3666\u366b\u3670ron;\u4165dil;\u4163;\u4442lrec;\u6315r;\uc000\ud835\udd31\u0200eiko\u3686\u369d\u36b5\u36bc\u01f2\u368b\0\u3691e\u01004f\u1284\u1281a\u0180;sv\u3698\u3699\u369b\u43b8ym;\u43d1\u0100cn\u36a2\u36b2k\u0100as\u36a8\u36aeppro\xf8\u12c1im\xbb\u12acs\xf0\u129e\u0100as\u36ba\u36ae\xf0\u12c1rn\u803b\xfe\u40fe\u01ec\u031f\u36c6\u22e7es\u8180\xd7;bd\u36cf\u36d0\u36d8\u40d7\u0100;a\u190f\u36d5r;\u6a31;\u6a30\u0180eps\u36e1\u36e3\u3700\xe1\u2a4d\u0200;bcf\u0486\u36ec\u36f0\u36f4ot;\u6336ir;\u6af1\u0100;o\u36f9\u36fc\uc000\ud835\udd65rk;\u6ada\xe1\u3362rime;\u6034\u0180aip\u370f\u3712\u3764d\xe5\u1248\u0380adempst\u3721\u374d\u3740\u3751\u3757\u375c\u375fngle\u0280;dlqr\u3730\u3731\u3736\u3740\u3742\u65b5own\xbb\u1dbbeft\u0100;e\u2800\u373e\xf1\u092e;\u625cight\u0100;e\u32aa\u374b\xf1\u105aot;\u65ecinus;\u6a3alus;\u6a39b;\u69cdime;\u6a3bezium;\u63e2\u0180cht\u3772\u377d\u3781\u0100ry\u3777\u377b;\uc000\ud835\udcc9;\u4446cy;\u445brok;\u4167\u0100io\u378b\u378ex\xf4\u1777head\u0100lr\u3797\u37a0eftarro\xf7\u084fightarrow\xbb\u0f5d\u0900AHabcdfghlmoprstuw\u37d0\u37d3\u37d7\u37e4\u37f0\u37fc\u380e\u381c\u3823\u3834\u3851\u385d\u386b\u38a9\u38cc\u38d2\u38ea\u38f6r\xf2\u03edar;\u6963\u0100cr\u37dc\u37e2ute\u803b\xfa\u40fa\xf2\u1150r\u01e3\u37ea\0\u37edy;\u445eve;\u416d\u0100iy\u37f5\u37farc\u803b\xfb\u40fb;\u4443\u0180abh\u3803\u3806\u380br\xf2\u13adlac;\u4171a\xf2\u13c3\u0100ir\u3813\u3818sht;\u697e;\uc000\ud835\udd32rave\u803b\xf9\u40f9\u0161\u3827\u3831r\u0100lr\u382c\u382e\xbb\u0957\xbb\u1083lk;\u6580\u0100ct\u3839\u384d\u026f\u383f\0\0\u384arn\u0100;e\u3845\u3846\u631cr\xbb\u3846op;\u630fri;\u65f8\u0100al\u3856\u385acr;\u416b\u80bb\xa8\u0349\u0100gp\u3862\u3866on;\u4173f;\uc000\ud835\udd66\u0300adhlsu\u114b\u3878\u387d\u1372\u3891\u38a0own\xe1\u13b3arpoon\u0100lr\u3888\u388cef\xf4\u382digh\xf4\u382fi\u0180;hl\u3899\u389a\u389c\u43c5\xbb\u13faon\xbb\u389aparrows;\u61c8\u0180cit\u38b0\u38c4\u38c8\u026f\u38b6\0\0\u38c1rn\u0100;e\u38bc\u38bd\u631dr\xbb\u38bdop;\u630eng;\u416fri;\u65f9cr;\uc000\ud835\udcca\u0180dir\u38d9\u38dd\u38e2ot;\u62f0lde;\u4169i\u0100;f\u3730\u38e8\xbb\u1813\u0100am\u38ef\u38f2r\xf2\u38a8l\u803b\xfc\u40fcangle;\u69a7\u0780ABDacdeflnoprsz\u391c\u391f\u3929\u392d\u39b5\u39b8\u39bd\u39df\u39e4\u39e8\u39f3\u39f9\u39fd\u3a01\u3a20r\xf2\u03f7ar\u0100;v\u3926\u3927\u6ae8;\u6ae9as\xe8\u03e1\u0100nr\u3932\u3937grt;\u699c\u0380eknprst\u34e3\u3946\u394b\u3952\u395d\u3964\u3996app\xe1\u2415othin\xe7\u1e96\u0180hir\u34eb\u2ec8\u3959op\xf4\u2fb5\u0100;h\u13b7\u3962\xef\u318d\u0100iu\u3969\u396dgm\xe1\u33b3\u0100bp\u3972\u3984setneq\u0100;q\u397d\u3980\uc000\u228a\ufe00;\uc000\u2acb\ufe00setneq\u0100;q\u398f\u3992\uc000\u228b\ufe00;\uc000\u2acc\ufe00\u0100hr\u399b\u399fet\xe1\u369ciangle\u0100lr\u39aa\u39afeft\xbb\u0925ight\xbb\u1051y;\u4432ash\xbb\u1036\u0180elr\u39c4\u39d2\u39d7\u0180;be\u2dea\u39cb\u39cfar;\u62bbq;\u625alip;\u62ee\u0100bt\u39dc\u1468a\xf2\u1469r;\uc000\ud835\udd33tr\xe9\u39aesu\u0100bp\u39ef\u39f1\xbb\u0d1c\xbb\u0d59pf;\uc000\ud835\udd67ro\xf0\u0efbtr\xe9\u39b4\u0100cu\u3a06\u3a0br;\uc000\ud835\udccb\u0100bp\u3a10\u3a18n\u0100Ee\u3980\u3a16\xbb\u397en\u0100Ee\u3992\u3a1e\xbb\u3990igzag;\u699a\u0380cefoprs\u3a36\u3a3b\u3a56\u3a5b\u3a54\u3a61\u3a6airc;\u4175\u0100di\u3a40\u3a51\u0100bg\u3a45\u3a49ar;\u6a5fe\u0100;q\u15fa\u3a4f;\u6259erp;\u6118r;\uc000\ud835\udd34pf;\uc000\ud835\udd68\u0100;e\u1479\u3a66at\xe8\u1479cr;\uc000\ud835\udccc\u0ae3\u178e\u3a87\0\u3a8b\0\u3a90\u3a9b\0\0\u3a9d\u3aa8\u3aab\u3aaf\0\0\u3ac3\u3ace\0\u3ad8\u17dc\u17dftr\xe9\u17d1r;\uc000\ud835\udd35\u0100Aa\u3a94\u3a97r\xf2\u03c3r\xf2\u09f6;\u43be\u0100Aa\u3aa1\u3aa4r\xf2\u03b8r\xf2\u09eba\xf0\u2713is;\u62fb\u0180dpt\u17a4\u3ab5\u3abe\u0100fl\u3aba\u17a9;\uc000\ud835\udd69im\xe5\u17b2\u0100Aa\u3ac7\u3acar\xf2\u03cer\xf2\u0a01\u0100cq\u3ad2\u17b8r;\uc000\ud835\udccd\u0100pt\u17d6\u3adcr\xe9\u17d4\u0400acefiosu\u3af0\u3afd\u3b08\u3b0c\u3b11\u3b15\u3b1b\u3b21c\u0100uy\u3af6\u3afbte\u803b\xfd\u40fd;\u444f\u0100iy\u3b02\u3b06rc;\u4177;\u444bn\u803b\xa5\u40a5r;\uc000\ud835\udd36cy;\u4457pf;\uc000\ud835\udd6acr;\uc000\ud835\udcce\u0100cm\u3b26\u3b29y;\u444el\u803b\xff\u40ff\u0500acdefhiosw\u3b42\u3b48\u3b54\u3b58\u3b64\u3b69\u3b6d\u3b74\u3b7a\u3b80cute;\u417a\u0100ay\u3b4d\u3b52ron;\u417e;\u4437ot;\u417c\u0100et\u3b5d\u3b61tr\xe6\u155fa;\u43b6r;\uc000\ud835\udd37cy;\u4436grarr;\u61ddpf;\uc000\ud835\udd6bcr;\uc000\ud835\udccf\u0100jn\u3b85\u3b87;\u600dj;\u600c" + .split("") + .map(function (c) { return c.charCodeAt(0); })); + + +var decodeDataHtml = /*#__PURE__*/Object.defineProperty({ + default: _default$5 +}, '__esModule', {value: true}); + +// Generated using scripts/write-decode-map.ts + +var _default$4 = new Uint16Array( +// prettier-ignore +"\u0200aglq\t\x15\x18\x1b\u026d\x0f\0\0\x12p;\u4026os;\u4027t;\u403et;\u403cuot;\u4022" + .split("") + .map(function (c) { return c.charCodeAt(0); })); + + +var decodeDataXml = /*#__PURE__*/Object.defineProperty({ + default: _default$4 +}, '__esModule', {value: true}); + +var decode_codepoint = createCommonjsModule(function (module, exports) { +// Adapted from https://github.com/mathiasbynens/he/blob/36afe179392226cf1b6ccdb16ebbb7a5a844d93a/src/he.js#L106-L134 +var _a; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.replaceCodePoint = exports.fromCodePoint = void 0; +var decodeMap = new Map([ + [0, 65533], + // C1 Unicode control character reference replacements + [128, 8364], + [130, 8218], + [131, 402], + [132, 8222], + [133, 8230], + [134, 8224], + [135, 8225], + [136, 710], + [137, 8240], + [138, 352], + [139, 8249], + [140, 338], + [142, 381], + [145, 8216], + [146, 8217], + [147, 8220], + [148, 8221], + [149, 8226], + [150, 8211], + [151, 8212], + [152, 732], + [153, 8482], + [154, 353], + [155, 8250], + [156, 339], + [158, 382], + [159, 376], +]); +/** + * Polyfill for `String.fromCodePoint`. It is used to create a string from a Unicode code point. + */ +exports.fromCodePoint = +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, node/no-unsupported-features/es-builtins +(_a = String.fromCodePoint) !== null && _a !== void 0 ? _a : function (codePoint) { + var output = ""; + if (codePoint > 0xffff) { + codePoint -= 0x10000; + output += String.fromCharCode(((codePoint >>> 10) & 0x3ff) | 0xd800); + codePoint = 0xdc00 | (codePoint & 0x3ff); + } + output += String.fromCharCode(codePoint); + return output; +}; +/** + * Replace the given code point with a replacement character if it is a + * surrogate or is outside the valid range. Otherwise return the code + * point unchanged. + */ +function replaceCodePoint(codePoint) { + var _a; + if ((codePoint >= 0xd800 && codePoint <= 0xdfff) || codePoint > 0x10ffff) { + return 0xfffd; + } + return (_a = decodeMap.get(codePoint)) !== null && _a !== void 0 ? _a : codePoint; +} +exports.replaceCodePoint = replaceCodePoint; +/** + * Replace the code point if relevant, then convert it to a string. + * + * @deprecated Use `fromCodePoint(replaceCodePoint(codePoint))` instead. + * @param codePoint The code point to decode. + * @returns The decoded code point. + */ +function decodeCodePoint(codePoint) { + return (0, exports.fromCodePoint)(replaceCodePoint(codePoint)); +} +exports.default = decodeCodePoint; + +}); + +var require$$0$4 = decodeDataHtml; + +var require$$1$2 = decodeDataXml; + +var decode_codepoint_js_2 = decode_codepoint; + +var decode = createCommonjsModule(function (module, exports) { +var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.decodeXML = exports.decodeHTMLStrict = exports.decodeHTMLAttribute = exports.decodeHTML = exports.determineBranch = exports.EntityDecoder = exports.DecodingMode = exports.BinTrieFlags = exports.fromCodePoint = exports.replaceCodePoint = exports.decodeCodePoint = exports.xmlDecodeTree = exports.htmlDecodeTree = void 0; +var decode_data_html_js_1 = __importDefault(require$$0$4); +exports.htmlDecodeTree = decode_data_html_js_1.default; +var decode_data_xml_js_1 = __importDefault(require$$1$2); +exports.xmlDecodeTree = decode_data_xml_js_1.default; +var decode_codepoint_js_1 = __importStar(decode_codepoint_js_2); +exports.decodeCodePoint = decode_codepoint_js_1.default; + +Object.defineProperty(exports, "replaceCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.replaceCodePoint; } }); +Object.defineProperty(exports, "fromCodePoint", { enumerable: true, get: function () { return decode_codepoint_js_2.fromCodePoint; } }); +var CharCodes; +(function (CharCodes) { + CharCodes[CharCodes["NUM"] = 35] = "NUM"; + CharCodes[CharCodes["SEMI"] = 59] = "SEMI"; + CharCodes[CharCodes["EQUALS"] = 61] = "EQUALS"; + CharCodes[CharCodes["ZERO"] = 48] = "ZERO"; + CharCodes[CharCodes["NINE"] = 57] = "NINE"; + CharCodes[CharCodes["LOWER_A"] = 97] = "LOWER_A"; + CharCodes[CharCodes["LOWER_F"] = 102] = "LOWER_F"; + CharCodes[CharCodes["LOWER_X"] = 120] = "LOWER_X"; + CharCodes[CharCodes["LOWER_Z"] = 122] = "LOWER_Z"; + CharCodes[CharCodes["UPPER_A"] = 65] = "UPPER_A"; + CharCodes[CharCodes["UPPER_F"] = 70] = "UPPER_F"; + CharCodes[CharCodes["UPPER_Z"] = 90] = "UPPER_Z"; +})(CharCodes || (CharCodes = {})); +/** Bit that needs to be set to convert an upper case ASCII character to lower case */ +var TO_LOWER_BIT = 32; +var BinTrieFlags; +(function (BinTrieFlags) { + BinTrieFlags[BinTrieFlags["VALUE_LENGTH"] = 49152] = "VALUE_LENGTH"; + BinTrieFlags[BinTrieFlags["BRANCH_LENGTH"] = 16256] = "BRANCH_LENGTH"; + BinTrieFlags[BinTrieFlags["JUMP_TABLE"] = 127] = "JUMP_TABLE"; +})(BinTrieFlags = exports.BinTrieFlags || (exports.BinTrieFlags = {})); +function isNumber(code) { + return code >= CharCodes.ZERO && code <= CharCodes.NINE; +} +function isHexadecimalCharacter(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_F) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_F)); +} +function isAsciiAlphaNumeric(code) { + return ((code >= CharCodes.UPPER_A && code <= CharCodes.UPPER_Z) || + (code >= CharCodes.LOWER_A && code <= CharCodes.LOWER_Z) || + isNumber(code)); +} +/** + * Checks if the given character is a valid end character for an entity in an attribute. + * + * Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error. + * See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state + */ +function isEntityInAttributeInvalidEnd(code) { + return code === CharCodes.EQUALS || isAsciiAlphaNumeric(code); +} +var EntityDecoderState; +(function (EntityDecoderState) { + EntityDecoderState[EntityDecoderState["EntityStart"] = 0] = "EntityStart"; + EntityDecoderState[EntityDecoderState["NumericStart"] = 1] = "NumericStart"; + EntityDecoderState[EntityDecoderState["NumericDecimal"] = 2] = "NumericDecimal"; + EntityDecoderState[EntityDecoderState["NumericHex"] = 3] = "NumericHex"; + EntityDecoderState[EntityDecoderState["NamedEntity"] = 4] = "NamedEntity"; +})(EntityDecoderState || (EntityDecoderState = {})); +var DecodingMode; +(function (DecodingMode) { + /** Entities in text nodes that can end with any character. */ + DecodingMode[DecodingMode["Legacy"] = 0] = "Legacy"; + /** Only allow entities terminated with a semicolon. */ + DecodingMode[DecodingMode["Strict"] = 1] = "Strict"; + /** Entities in attributes have limitations on ending characters. */ + DecodingMode[DecodingMode["Attribute"] = 2] = "Attribute"; +})(DecodingMode = exports.DecodingMode || (exports.DecodingMode = {})); +/** + * Token decoder with support of writing partial entities. + */ +var EntityDecoder = /** @class */ (function () { + function EntityDecoder( + /** The tree used to decode entities. */ + decodeTree, + /** + * The function that is called when a codepoint is decoded. + * + * For multi-byte named entities, this will be called multiple times, + * with the second codepoint, and the same `consumed` value. + * + * @param codepoint The decoded codepoint. + * @param consumed The number of bytes consumed by the decoder. + */ + emitCodePoint, + /** An object that is used to produce errors. */ + errors) { + this.decodeTree = decodeTree; + this.emitCodePoint = emitCodePoint; + this.errors = errors; + /** The current state of the decoder. */ + this.state = EntityDecoderState.EntityStart; + /** Characters that were consumed while parsing an entity. */ + this.consumed = 1; + /** + * The result of the entity. + * + * Either the result index of a numeric entity, or the codepoint of a + * numeric entity. + */ + this.result = 0; + /** The current index in the decode tree. */ + this.treeIndex = 0; + /** The number of characters that were consumed in excess. */ + this.excess = 1; + /** The mode in which the decoder is operating. */ + this.decodeMode = DecodingMode.Strict; + } + /** Resets the instance to make it reusable. */ + EntityDecoder.prototype.startEntity = function (decodeMode) { + this.decodeMode = decodeMode; + this.state = EntityDecoderState.EntityStart; + this.result = 0; + this.treeIndex = 0; + this.excess = 1; + this.consumed = 1; + }; + /** + * Write an entity to the decoder. This can be called multiple times with partial entities. + * If the entity is incomplete, the decoder will return -1. + * + * Mirrors the implementation of `getDecoder`, but with the ability to stop decoding if the + * entity is incomplete, and resume when the next string is written. + * + * @param string The string containing the entity (or a continuation of the entity). + * @param offset The offset at which the entity begins. Should be 0 if this is not the first call. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.write = function (str, offset) { + switch (this.state) { + case EntityDecoderState.EntityStart: { + if (str.charCodeAt(offset) === CharCodes.NUM) { + this.state = EntityDecoderState.NumericStart; + this.consumed += 1; + return this.stateNumericStart(str, offset + 1); + } + this.state = EntityDecoderState.NamedEntity; + return this.stateNamedEntity(str, offset); + } + case EntityDecoderState.NumericStart: { + return this.stateNumericStart(str, offset); + } + case EntityDecoderState.NumericDecimal: { + return this.stateNumericDecimal(str, offset); + } + case EntityDecoderState.NumericHex: { + return this.stateNumericHex(str, offset); + } + case EntityDecoderState.NamedEntity: { + return this.stateNamedEntity(str, offset); + } + } + }; + /** + * Switches between the numeric decimal and hexadecimal states. + * + * Equivalent to the `Numeric character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericStart = function (str, offset) { + if (offset >= str.length) { + return -1; + } + if ((str.charCodeAt(offset) | TO_LOWER_BIT) === CharCodes.LOWER_X) { + this.state = EntityDecoderState.NumericHex; + this.consumed += 1; + return this.stateNumericHex(str, offset + 1); + } + this.state = EntityDecoderState.NumericDecimal; + return this.stateNumericDecimal(str, offset); + }; + EntityDecoder.prototype.addToNumericResult = function (str, start, end, base) { + if (start !== end) { + var digitCount = end - start; + this.result = + this.result * Math.pow(base, digitCount) + + parseInt(str.substr(start, digitCount), base); + this.consumed += digitCount; + } + }; + /** + * Parses a hexadecimal numeric entity. + * + * Equivalent to the `Hexademical character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericHex = function (str, offset) { + var startIdx = offset; + while (offset < str.length) { + var char = str.charCodeAt(offset); + if (isNumber(char) || isHexadecimalCharacter(char)) { + offset += 1; + } + else { + this.addToNumericResult(str, startIdx, offset, 16); + return this.emitNumericEntity(char, 3); + } + } + this.addToNumericResult(str, startIdx, offset, 16); + return -1; + }; + /** + * Parses a decimal numeric entity. + * + * Equivalent to the `Decimal character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNumericDecimal = function (str, offset) { + var startIdx = offset; + while (offset < str.length) { + var char = str.charCodeAt(offset); + if (isNumber(char)) { + offset += 1; + } + else { + this.addToNumericResult(str, startIdx, offset, 10); + return this.emitNumericEntity(char, 2); + } + } + this.addToNumericResult(str, startIdx, offset, 10); + return -1; + }; + /** + * Validate and emit a numeric entity. + * + * Implements the logic from the `Hexademical character reference start + * state` and `Numeric character reference end state` in the HTML spec. + * + * @param lastCp The last code point of the entity. Used to see if the + * entity was terminated with a semicolon. + * @param expectedLength The minimum number of characters that should be + * consumed. Used to validate that at least one digit + * was consumed. + * @returns The number of characters that were consumed. + */ + EntityDecoder.prototype.emitNumericEntity = function (lastCp, expectedLength) { + var _a; + // Ensure we consumed at least one digit. + if (this.consumed <= expectedLength) { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + // Figure out if this is a legit end of the entity + if (lastCp === CharCodes.SEMI) { + this.consumed += 1; + } + else if (this.decodeMode === DecodingMode.Strict) { + return 0; + } + this.emitCodePoint((0, decode_codepoint_js_1.replaceCodePoint)(this.result), this.consumed); + if (this.errors) { + if (lastCp !== CharCodes.SEMI) { + this.errors.missingSemicolonAfterCharacterReference(); + } + this.errors.validateNumericCharacterReference(this.result); + } + return this.consumed; + }; + /** + * Parses a named entity. + * + * Equivalent to the `Named character reference state` in the HTML spec. + * + * @param str The string containing the entity (or a continuation of the entity). + * @param offset The current offset. + * @returns The number of characters that were consumed, or -1 if the entity is incomplete. + */ + EntityDecoder.prototype.stateNamedEntity = function (str, offset) { + var decodeTree = this.decodeTree; + var current = decodeTree[this.treeIndex]; + // The mask is the number of bytes of the value, including the current byte. + var valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + for (; offset < str.length; offset++, this.excess++) { + var char = str.charCodeAt(offset); + this.treeIndex = determineBranch(decodeTree, current, this.treeIndex + Math.max(1, valueLength), char); + if (this.treeIndex < 0) { + return this.result === 0 || + // If we are parsing an attribute + (this.decodeMode === DecodingMode.Attribute && + // We shouldn't have consumed any characters after the entity, + (valueLength === 0 || + // And there should be no invalid characters. + isEntityInAttributeInvalidEnd(char))) + ? 0 + : this.emitNotTerminatedNamedEntity(); + } + current = decodeTree[this.treeIndex]; + valueLength = (current & BinTrieFlags.VALUE_LENGTH) >> 14; + // If the branch is a value, store it and continue + if (valueLength !== 0) { + // If the entity is terminated by a semicolon, we are done. + if (char === CharCodes.SEMI) { + return this.emitNamedEntityData(this.treeIndex, valueLength, this.consumed + this.excess); + } + // If we encounter a non-terminated (legacy) entity while parsing strictly, then ignore it. + if (this.decodeMode !== DecodingMode.Strict) { + this.result = this.treeIndex; + this.consumed += this.excess; + this.excess = 0; + } + } + } + return -1; + }; + /** + * Emit a named entity that was not terminated with a semicolon. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.emitNotTerminatedNamedEntity = function () { + var _a; + var _b = this, result = _b.result, decodeTree = _b.decodeTree; + var valueLength = (decodeTree[result] & BinTrieFlags.VALUE_LENGTH) >> 14; + this.emitNamedEntityData(result, valueLength, this.consumed); + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.missingSemicolonAfterCharacterReference(); + return this.consumed; + }; + /** + * Emit a named entity. + * + * @param result The index of the entity in the decode tree. + * @param valueLength The number of bytes in the entity. + * @param consumed The number of characters consumed. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.emitNamedEntityData = function (result, valueLength, consumed) { + var decodeTree = this.decodeTree; + this.emitCodePoint(valueLength === 1 + ? decodeTree[result] & ~BinTrieFlags.VALUE_LENGTH + : decodeTree[result + 1], consumed); + if (valueLength === 3) { + // For multi-byte values, we need to emit the second byte. + this.emitCodePoint(decodeTree[result + 2], consumed); + } + return consumed; + }; + /** + * Signal to the parser that the end of the input was reached. + * + * Remaining data will be emitted and relevant errors will be produced. + * + * @returns The number of characters consumed. + */ + EntityDecoder.prototype.end = function () { + var _a; + switch (this.state) { + case EntityDecoderState.NamedEntity: { + // Emit a named entity if we have one. + return this.result !== 0 && + (this.decodeMode !== DecodingMode.Attribute || + this.result === this.treeIndex) + ? this.emitNotTerminatedNamedEntity() + : 0; + } + // Otherwise, emit a numeric entity if we have one. + case EntityDecoderState.NumericDecimal: { + return this.emitNumericEntity(0, 2); + } + case EntityDecoderState.NumericHex: { + return this.emitNumericEntity(0, 3); + } + case EntityDecoderState.NumericStart: { + (_a = this.errors) === null || _a === void 0 ? void 0 : _a.absenceOfDigitsInNumericCharacterReference(this.consumed); + return 0; + } + case EntityDecoderState.EntityStart: { + // Return 0 if we have no entity. + return 0; + } + } + }; + return EntityDecoder; +}()); +exports.EntityDecoder = EntityDecoder; +/** + * Creates a function that decodes entities in a string. + * + * @param decodeTree The decode tree. + * @returns A function that decodes entities in a string. + */ +function getDecoder(decodeTree) { + var ret = ""; + var decoder = new EntityDecoder(decodeTree, function (str) { return (ret += (0, decode_codepoint_js_1.fromCodePoint)(str)); }); + return function decodeWithTrie(str, decodeMode) { + var lastIndex = 0; + var offset = 0; + while ((offset = str.indexOf("&", offset)) >= 0) { + ret += str.slice(lastIndex, offset); + decoder.startEntity(decodeMode); + var len = decoder.write(str, + // Skip the "&" + offset + 1); + if (len < 0) { + lastIndex = offset + decoder.end(); + break; + } + lastIndex = offset + len; + // If `len` is 0, skip the current `&` and continue. + offset = len === 0 ? lastIndex + 1 : lastIndex; + } + var result = ret + str.slice(lastIndex); + // Make sure we don't keep a reference to the final string. + ret = ""; + return result; + }; +} +/** + * Determines the branch of the current node that is taken given the current + * character. This function is used to traverse the trie. + * + * @param decodeTree The trie. + * @param current The current node. + * @param nodeIdx The index right after the current node and its value. + * @param char The current character. + * @returns The index of the next node, or -1 if no branch is taken. + */ +function determineBranch(decodeTree, current, nodeIdx, char) { + var branchCount = (current & BinTrieFlags.BRANCH_LENGTH) >> 7; + var jumpOffset = current & BinTrieFlags.JUMP_TABLE; + // Case 1: Single branch encoded in jump offset + if (branchCount === 0) { + return jumpOffset !== 0 && char === jumpOffset ? nodeIdx : -1; + } + // Case 2: Multiple branches encoded in jump table + if (jumpOffset) { + var value = char - jumpOffset; + return value < 0 || value >= branchCount + ? -1 + : decodeTree[nodeIdx + value] - 1; + } + // Case 3: Multiple branches encoded in dictionary + // Binary search for the character. + var lo = nodeIdx; + var hi = lo + branchCount - 1; + while (lo <= hi) { + var mid = (lo + hi) >>> 1; + var midVal = decodeTree[mid]; + if (midVal < char) { + lo = mid + 1; + } + else if (midVal > char) { + hi = mid - 1; + } + else { + return decodeTree[mid + branchCount]; + } + } + return -1; +} +exports.determineBranch = determineBranch; +var htmlDecoder = getDecoder(decode_data_html_js_1.default); +var xmlDecoder = getDecoder(decode_data_xml_js_1.default); +/** + * Decodes an HTML string. + * + * @param str The string to decode. + * @param mode The decoding mode. + * @returns The decoded string. + */ +function decodeHTML(str, mode) { + if (mode === void 0) { mode = DecodingMode.Legacy; } + return htmlDecoder(str, mode); +} +exports.decodeHTML = decodeHTML; +/** + * Decodes an HTML string in an attribute. + * + * @param str The string to decode. + * @returns The decoded string. + */ +function decodeHTMLAttribute(str) { + return htmlDecoder(str, DecodingMode.Attribute); +} +exports.decodeHTMLAttribute = decodeHTMLAttribute; +/** + * Decodes an HTML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ +function decodeHTMLStrict(str) { + return htmlDecoder(str, DecodingMode.Strict); +} +exports.decodeHTMLStrict = decodeHTMLStrict; +/** + * Decodes an XML string, requiring all entities to be terminated by a semicolon. + * + * @param str The string to decode. + * @returns The decoded string. + */ +function decodeXML(str) { + return xmlDecoder(str, DecodingMode.Strict); +} +exports.decodeXML = decodeXML; + +}); + +// Generated using scripts/write-encode-map.ts + +function restoreDiff(arr) { + for (var i = 1; i < arr.length; i++) { + arr[i][0] += arr[i - 1][0] + 1; + } + return arr; +} +// prettier-ignore +var _default$3 = new Map(/* #__PURE__ */ restoreDiff([[9, " "], [0, " "], [22, "!"], [0, """], [0, "#"], [0, "$"], [0, "%"], [0, "&"], [0, "'"], [0, "("], [0, ")"], [0, "*"], [0, "+"], [0, ","], [1, "."], [0, "/"], [10, ":"], [0, ";"], [0, { v: "<", n: 8402, o: "<⃒" }], [0, { v: "=", n: 8421, o: "=⃥" }], [0, { v: ">", n: 8402, o: ">⃒" }], [0, "?"], [0, "@"], [26, "["], [0, "\"], [0, "]"], [0, "^"], [0, "_"], [0, "`"], [5, { n: 106, o: "fj" }], [20, "{"], [0, "|"], [0, "}"], [34, " "], [0, "¡"], [0, "¢"], [0, "£"], [0, "¤"], [0, "¥"], [0, "¦"], [0, "§"], [0, "¨"], [0, "©"], [0, "ª"], [0, "«"], [0, "¬"], [0, "­"], [0, "®"], [0, "¯"], [0, "°"], [0, "±"], [0, "²"], [0, "³"], [0, "´"], [0, "µ"], [0, "¶"], [0, "·"], [0, "¸"], [0, "¹"], [0, "º"], [0, "»"], [0, "¼"], [0, "½"], [0, "¾"], [0, "¿"], [0, "À"], [0, "Á"], [0, "Â"], [0, "Ã"], [0, "Ä"], [0, "Å"], [0, "Æ"], [0, "Ç"], [0, "È"], [0, "É"], [0, "Ê"], [0, "Ë"], [0, "Ì"], [0, "Í"], [0, "Î"], [0, "Ï"], [0, "Ð"], [0, "Ñ"], [0, "Ò"], [0, "Ó"], [0, "Ô"], [0, "Õ"], [0, "Ö"], [0, "×"], [0, "Ø"], [0, "Ù"], [0, "Ú"], [0, "Û"], [0, "Ü"], [0, "Ý"], [0, "Þ"], [0, "ß"], [0, "à"], [0, "á"], [0, "â"], [0, "ã"], [0, "ä"], [0, "å"], [0, "æ"], [0, "ç"], [0, "è"], [0, "é"], [0, "ê"], [0, "ë"], [0, "ì"], [0, "í"], [0, "î"], [0, "ï"], [0, "ð"], [0, "ñ"], [0, "ò"], [0, "ó"], [0, "ô"], [0, "õ"], [0, "ö"], [0, "÷"], [0, "ø"], [0, "ù"], [0, "ú"], [0, "û"], [0, "ü"], [0, "ý"], [0, "þ"], [0, "ÿ"], [0, "Ā"], [0, "ā"], [0, "Ă"], [0, "ă"], [0, "Ą"], [0, "ą"], [0, "Ć"], [0, "ć"], [0, "Ĉ"], [0, "ĉ"], [0, "Ċ"], [0, "ċ"], [0, "Č"], [0, "č"], [0, "Ď"], [0, "ď"], [0, "Đ"], [0, "đ"], [0, "Ē"], [0, "ē"], [2, "Ė"], [0, "ė"], [0, "Ę"], [0, "ę"], [0, "Ě"], [0, "ě"], [0, "Ĝ"], [0, "ĝ"], [0, "Ğ"], [0, "ğ"], [0, "Ġ"], [0, "ġ"], [0, "Ģ"], [1, "Ĥ"], [0, "ĥ"], [0, "Ħ"], [0, "ħ"], [0, "Ĩ"], [0, "ĩ"], [0, "Ī"], [0, "ī"], [2, "Į"], [0, "į"], [0, "İ"], [0, "ı"], [0, "IJ"], [0, "ij"], [0, "Ĵ"], [0, "ĵ"], [0, "Ķ"], [0, "ķ"], [0, "ĸ"], [0, "Ĺ"], [0, "ĺ"], [0, "Ļ"], [0, "ļ"], [0, "Ľ"], [0, "ľ"], [0, "Ŀ"], [0, "ŀ"], [0, "Ł"], [0, "ł"], [0, "Ń"], [0, "ń"], [0, "Ņ"], [0, "ņ"], [0, "Ň"], [0, "ň"], [0, "ʼn"], [0, "Ŋ"], [0, "ŋ"], [0, "Ō"], [0, "ō"], [2, "Ő"], [0, "ő"], [0, "Œ"], [0, "œ"], [0, "Ŕ"], [0, "ŕ"], [0, "Ŗ"], [0, "ŗ"], [0, "Ř"], [0, "ř"], [0, "Ś"], [0, "ś"], [0, "Ŝ"], [0, "ŝ"], [0, "Ş"], [0, "ş"], [0, "Š"], [0, "š"], [0, "Ţ"], [0, "ţ"], [0, "Ť"], [0, "ť"], [0, "Ŧ"], [0, "ŧ"], [0, "Ũ"], [0, "ũ"], [0, "Ū"], [0, "ū"], [0, "Ŭ"], [0, "ŭ"], [0, "Ů"], [0, "ů"], [0, "Ű"], [0, "ű"], [0, "Ų"], [0, "ų"], [0, "Ŵ"], [0, "ŵ"], [0, "Ŷ"], [0, "ŷ"], [0, "Ÿ"], [0, "Ź"], [0, "ź"], [0, "Ż"], [0, "ż"], [0, "Ž"], [0, "ž"], [19, "ƒ"], [34, "Ƶ"], [63, "ǵ"], [65, "ȷ"], [142, "ˆ"], [0, "ˇ"], [16, "˘"], [0, "˙"], [0, "˚"], [0, "˛"], [0, "˜"], [0, "˝"], [51, "̑"], [127, "Α"], [0, "Β"], [0, "Γ"], [0, "Δ"], [0, "Ε"], [0, "Ζ"], [0, "Η"], [0, "Θ"], [0, "Ι"], [0, "Κ"], [0, "Λ"], [0, "Μ"], [0, "Ν"], [0, "Ξ"], [0, "Ο"], [0, "Π"], [0, "Ρ"], [1, "Σ"], [0, "Τ"], [0, "Υ"], [0, "Φ"], [0, "Χ"], [0, "Ψ"], [0, "Ω"], [7, "α"], [0, "β"], [0, "γ"], [0, "δ"], [0, "ε"], [0, "ζ"], [0, "η"], [0, "θ"], [0, "ι"], [0, "κ"], [0, "λ"], [0, "μ"], [0, "ν"], [0, "ξ"], [0, "ο"], [0, "π"], [0, "ρ"], [0, "ς"], [0, "σ"], [0, "τ"], [0, "υ"], [0, "φ"], [0, "χ"], [0, "ψ"], [0, "ω"], [7, "ϑ"], [0, "ϒ"], [2, "ϕ"], [0, "ϖ"], [5, "Ϝ"], [0, "ϝ"], [18, "ϰ"], [0, "ϱ"], [3, "ϵ"], [0, "϶"], [10, "Ё"], [0, "Ђ"], [0, "Ѓ"], [0, "Є"], [0, "Ѕ"], [0, "І"], [0, "Ї"], [0, "Ј"], [0, "Љ"], [0, "Њ"], [0, "Ћ"], [0, "Ќ"], [1, "Ў"], [0, "Џ"], [0, "А"], [0, "Б"], [0, "В"], [0, "Г"], [0, "Д"], [0, "Е"], [0, "Ж"], [0, "З"], [0, "И"], [0, "Й"], [0, "К"], [0, "Л"], [0, "М"], [0, "Н"], [0, "О"], [0, "П"], [0, "Р"], [0, "С"], [0, "Т"], [0, "У"], [0, "Ф"], [0, "Х"], [0, "Ц"], [0, "Ч"], [0, "Ш"], [0, "Щ"], [0, "Ъ"], [0, "Ы"], [0, "Ь"], [0, "Э"], [0, "Ю"], [0, "Я"], [0, "а"], [0, "б"], [0, "в"], [0, "г"], [0, "д"], [0, "е"], [0, "ж"], [0, "з"], [0, "и"], [0, "й"], [0, "к"], [0, "л"], [0, "м"], [0, "н"], [0, "о"], [0, "п"], [0, "р"], [0, "с"], [0, "т"], [0, "у"], [0, "ф"], [0, "х"], [0, "ц"], [0, "ч"], [0, "ш"], [0, "щ"], [0, "ъ"], [0, "ы"], [0, "ь"], [0, "э"], [0, "ю"], [0, "я"], [1, "ё"], [0, "ђ"], [0, "ѓ"], [0, "є"], [0, "ѕ"], [0, "і"], [0, "ї"], [0, "ј"], [0, "љ"], [0, "њ"], [0, "ћ"], [0, "ќ"], [1, "ў"], [0, "џ"], [7074, " "], [0, " "], [0, " "], [0, " "], [1, " "], [0, " "], [0, " "], [0, " "], [0, "​"], [0, "‌"], [0, "‍"], [0, "‎"], [0, "‏"], [0, "‐"], [2, "–"], [0, "—"], [0, "―"], [0, "‖"], [1, "‘"], [0, "’"], [0, "‚"], [1, "“"], [0, "”"], [0, "„"], [1, "†"], [0, "‡"], [0, "•"], [2, "‥"], [0, "…"], [9, "‰"], [0, "‱"], [0, "′"], [0, "″"], [0, "‴"], [0, "‵"], [3, "‹"], [0, "›"], [3, "‾"], [2, "⁁"], [1, "⁃"], [0, "⁄"], [10, "⁏"], [7, "⁗"], [7, { v: " ", n: 8202, o: "  " }], [0, "⁠"], [0, "⁡"], [0, "⁢"], [0, "⁣"], [72, "€"], [46, "⃛"], [0, "⃜"], [37, "ℂ"], [2, "℅"], [4, "ℊ"], [0, "ℋ"], [0, "ℌ"], [0, "ℍ"], [0, "ℎ"], [0, "ℏ"], [0, "ℐ"], [0, "ℑ"], [0, "ℒ"], [0, "ℓ"], [1, "ℕ"], [0, "№"], [0, "℗"], [0, "℘"], [0, "ℙ"], [0, "ℚ"], [0, "ℛ"], [0, "ℜ"], [0, "ℝ"], [0, "℞"], [3, "™"], [1, "ℤ"], [2, "℧"], [0, "ℨ"], [0, "℩"], [2, "ℬ"], [0, "ℭ"], [1, "ℯ"], [0, "ℰ"], [0, "ℱ"], [1, "ℳ"], [0, "ℴ"], [0, "ℵ"], [0, "ℶ"], [0, "ℷ"], [0, "ℸ"], [12, "ⅅ"], [0, "ⅆ"], [0, "ⅇ"], [0, "ⅈ"], [10, "⅓"], [0, "⅔"], [0, "⅕"], [0, "⅖"], [0, "⅗"], [0, "⅘"], [0, "⅙"], [0, "⅚"], [0, "⅛"], [0, "⅜"], [0, "⅝"], [0, "⅞"], [49, "←"], [0, "↑"], [0, "→"], [0, "↓"], [0, "↔"], [0, "↕"], [0, "↖"], [0, "↗"], [0, "↘"], [0, "↙"], [0, "↚"], [0, "↛"], [1, { v: "↝", n: 824, o: "↝̸" }], [0, "↞"], [0, "↟"], [0, "↠"], [0, "↡"], [0, "↢"], [0, "↣"], [0, "↤"], [0, "↥"], [0, "↦"], [0, "↧"], [1, "↩"], [0, "↪"], [0, "↫"], [0, "↬"], [0, "↭"], [0, "↮"], [1, "↰"], [0, "↱"], [0, "↲"], [0, "↳"], [1, "↵"], [0, "↶"], [0, "↷"], [2, "↺"], [0, "↻"], [0, "↼"], [0, "↽"], [0, "↾"], [0, "↿"], [0, "⇀"], [0, "⇁"], [0, "⇂"], [0, "⇃"], [0, "⇄"], [0, "⇅"], [0, "⇆"], [0, "⇇"], [0, "⇈"], [0, "⇉"], [0, "⇊"], [0, "⇋"], [0, "⇌"], [0, "⇍"], [0, "⇎"], [0, "⇏"], [0, "⇐"], [0, "⇑"], [0, "⇒"], [0, "⇓"], [0, "⇔"], [0, "⇕"], [0, "⇖"], [0, "⇗"], [0, "⇘"], [0, "⇙"], [0, "⇚"], [0, "⇛"], [1, "⇝"], [6, "⇤"], [0, "⇥"], [15, "⇵"], [7, "⇽"], [0, "⇾"], [0, "⇿"], [0, "∀"], [0, "∁"], [0, { v: "∂", n: 824, o: "∂̸" }], [0, "∃"], [0, "∄"], [0, "∅"], [1, "∇"], [0, "∈"], [0, "∉"], [1, "∋"], [0, "∌"], [2, "∏"], [0, "∐"], [0, "∑"], [0, "−"], [0, "∓"], [0, "∔"], [1, "∖"], [0, "∗"], [0, "∘"], [1, "√"], [2, "∝"], [0, "∞"], [0, "∟"], [0, { v: "∠", n: 8402, o: "∠⃒" }], [0, "∡"], [0, "∢"], [0, "∣"], [0, "∤"], [0, "∥"], [0, "∦"], [0, "∧"], [0, "∨"], [0, { v: "∩", n: 65024, o: "∩︀" }], [0, { v: "∪", n: 65024, o: "∪︀" }], [0, "∫"], [0, "∬"], [0, "∭"], [0, "∮"], [0, "∯"], [0, "∰"], [0, "∱"], [0, "∲"], [0, "∳"], [0, "∴"], [0, "∵"], [0, "∶"], [0, "∷"], [0, "∸"], [1, "∺"], [0, "∻"], [0, { v: "∼", n: 8402, o: "∼⃒" }], [0, { v: "∽", n: 817, o: "∽̱" }], [0, { v: "∾", n: 819, o: "∾̳" }], [0, "∿"], [0, "≀"], [0, "≁"], [0, { v: "≂", n: 824, o: "≂̸" }], [0, "≃"], [0, "≄"], [0, "≅"], [0, "≆"], [0, "≇"], [0, "≈"], [0, "≉"], [0, "≊"], [0, { v: "≋", n: 824, o: "≋̸" }], [0, "≌"], [0, { v: "≍", n: 8402, o: "≍⃒" }], [0, { v: "≎", n: 824, o: "≎̸" }], [0, { v: "≏", n: 824, o: "≏̸" }], [0, { v: "≐", n: 824, o: "≐̸" }], [0, "≑"], [0, "≒"], [0, "≓"], [0, "≔"], [0, "≕"], [0, "≖"], [0, "≗"], [1, "≙"], [0, "≚"], [1, "≜"], [2, "≟"], [0, "≠"], [0, { v: "≡", n: 8421, o: "≡⃥" }], [0, "≢"], [1, { v: "≤", n: 8402, o: "≤⃒" }], [0, { v: "≥", n: 8402, o: "≥⃒" }], [0, { v: "≦", n: 824, o: "≦̸" }], [0, { v: "≧", n: 824, o: "≧̸" }], [0, { v: "≨", n: 65024, o: "≨︀" }], [0, { v: "≩", n: 65024, o: "≩︀" }], [0, { v: "≪", n: new Map(/* #__PURE__ */ restoreDiff([[824, "≪̸"], [7577, "≪⃒"]])) }], [0, { v: "≫", n: new Map(/* #__PURE__ */ restoreDiff([[824, "≫̸"], [7577, "≫⃒"]])) }], [0, "≬"], [0, "≭"], [0, "≮"], [0, "≯"], [0, "≰"], [0, "≱"], [0, "≲"], [0, "≳"], [0, "≴"], [0, "≵"], [0, "≶"], [0, "≷"], [0, "≸"], [0, "≹"], [0, "≺"], [0, "≻"], [0, "≼"], [0, "≽"], [0, "≾"], [0, { v: "≿", n: 824, o: "≿̸" }], [0, "⊀"], [0, "⊁"], [0, { v: "⊂", n: 8402, o: "⊂⃒" }], [0, { v: "⊃", n: 8402, o: "⊃⃒" }], [0, "⊄"], [0, "⊅"], [0, "⊆"], [0, "⊇"], [0, "⊈"], [0, "⊉"], [0, { v: "⊊", n: 65024, o: "⊊︀" }], [0, { v: "⊋", n: 65024, o: "⊋︀" }], [1, "⊍"], [0, "⊎"], [0, { v: "⊏", n: 824, o: "⊏̸" }], [0, { v: "⊐", n: 824, o: "⊐̸" }], [0, "⊑"], [0, "⊒"], [0, { v: "⊓", n: 65024, o: "⊓︀" }], [0, { v: "⊔", n: 65024, o: "⊔︀" }], [0, "⊕"], [0, "⊖"], [0, "⊗"], [0, "⊘"], [0, "⊙"], [0, "⊚"], [0, "⊛"], [1, "⊝"], [0, "⊞"], [0, "⊟"], [0, "⊠"], [0, "⊡"], [0, "⊢"], [0, "⊣"], [0, "⊤"], [0, "⊥"], [1, "⊧"], [0, "⊨"], [0, "⊩"], [0, "⊪"], [0, "⊫"], [0, "⊬"], [0, "⊭"], [0, "⊮"], [0, "⊯"], [0, "⊰"], [1, "⊲"], [0, "⊳"], [0, { v: "⊴", n: 8402, o: "⊴⃒" }], [0, { v: "⊵", n: 8402, o: "⊵⃒" }], [0, "⊶"], [0, "⊷"], [0, "⊸"], [0, "⊹"], [0, "⊺"], [0, "⊻"], [1, "⊽"], [0, "⊾"], [0, "⊿"], [0, "⋀"], [0, "⋁"], [0, "⋂"], [0, "⋃"], [0, "⋄"], [0, "⋅"], [0, "⋆"], [0, "⋇"], [0, "⋈"], [0, "⋉"], [0, "⋊"], [0, "⋋"], [0, "⋌"], [0, "⋍"], [0, "⋎"], [0, "⋏"], [0, "⋐"], [0, "⋑"], [0, "⋒"], [0, "⋓"], [0, "⋔"], [0, "⋕"], [0, "⋖"], [0, "⋗"], [0, { v: "⋘", n: 824, o: "⋘̸" }], [0, { v: "⋙", n: 824, o: "⋙̸" }], [0, { v: "⋚", n: 65024, o: "⋚︀" }], [0, { v: "⋛", n: 65024, o: "⋛︀" }], [2, "⋞"], [0, "⋟"], [0, "⋠"], [0, "⋡"], [0, "⋢"], [0, "⋣"], [2, "⋦"], [0, "⋧"], [0, "⋨"], [0, "⋩"], [0, "⋪"], [0, "⋫"], [0, "⋬"], [0, "⋭"], [0, "⋮"], [0, "⋯"], [0, "⋰"], [0, "⋱"], [0, "⋲"], [0, "⋳"], [0, "⋴"], [0, { v: "⋵", n: 824, o: "⋵̸" }], [0, "⋶"], [0, "⋷"], [1, { v: "⋹", n: 824, o: "⋹̸" }], [0, "⋺"], [0, "⋻"], [0, "⋼"], [0, "⋽"], [0, "⋾"], [6, "⌅"], [0, "⌆"], [1, "⌈"], [0, "⌉"], [0, "⌊"], [0, "⌋"], [0, "⌌"], [0, "⌍"], [0, "⌎"], [0, "⌏"], [0, "⌐"], [1, "⌒"], [0, "⌓"], [1, "⌕"], [0, "⌖"], [5, "⌜"], [0, "⌝"], [0, "⌞"], [0, "⌟"], [2, "⌢"], [0, "⌣"], [9, "⌭"], [0, "⌮"], [7, "⌶"], [6, "⌽"], [1, "⌿"], [60, "⍼"], [51, "⎰"], [0, "⎱"], [2, "⎴"], [0, "⎵"], [0, "⎶"], [37, "⏜"], [0, "⏝"], [0, "⏞"], [0, "⏟"], [2, "⏢"], [4, "⏧"], [59, "␣"], [164, "Ⓢ"], [55, "─"], [1, "│"], [9, "┌"], [3, "┐"], [3, "└"], [3, "┘"], [3, "├"], [7, "┤"], [7, "┬"], [7, "┴"], [7, "┼"], [19, "═"], [0, "║"], [0, "╒"], [0, "╓"], [0, "╔"], [0, "╕"], [0, "╖"], [0, "╗"], [0, "╘"], [0, "╙"], [0, "╚"], [0, "╛"], [0, "╜"], [0, "╝"], [0, "╞"], [0, "╟"], [0, "╠"], [0, "╡"], [0, "╢"], [0, "╣"], [0, "╤"], [0, "╥"], [0, "╦"], [0, "╧"], [0, "╨"], [0, "╩"], [0, "╪"], [0, "╫"], [0, "╬"], [19, "▀"], [3, "▄"], [3, "█"], [8, "░"], [0, "▒"], [0, "▓"], [13, "□"], [8, "▪"], [0, "▫"], [1, "▭"], [0, "▮"], [2, "▱"], [1, "△"], [0, "▴"], [0, "▵"], [2, "▸"], [0, "▹"], [3, "▽"], [0, "▾"], [0, "▿"], [2, "◂"], [0, "◃"], [6, "◊"], [0, "○"], [32, "◬"], [2, "◯"], [8, "◸"], [0, "◹"], [0, "◺"], [0, "◻"], [0, "◼"], [8, "★"], [0, "☆"], [7, "☎"], [49, "♀"], [1, "♂"], [29, "♠"], [2, "♣"], [1, "♥"], [0, "♦"], [3, "♪"], [2, "♭"], [0, "♮"], [0, "♯"], [163, "✓"], [3, "✗"], [8, "✠"], [21, "✶"], [33, "❘"], [25, "❲"], [0, "❳"], [84, "⟈"], [0, "⟉"], [28, "⟦"], [0, "⟧"], [0, "⟨"], [0, "⟩"], [0, "⟪"], [0, "⟫"], [0, "⟬"], [0, "⟭"], [7, "⟵"], [0, "⟶"], [0, "⟷"], [0, "⟸"], [0, "⟹"], [0, "⟺"], [1, "⟼"], [2, "⟿"], [258, "⤂"], [0, "⤃"], [0, "⤄"], [0, "⤅"], [6, "⤌"], [0, "⤍"], [0, "⤎"], [0, "⤏"], [0, "⤐"], [0, "⤑"], [0, "⤒"], [0, "⤓"], [2, "⤖"], [2, "⤙"], [0, "⤚"], [0, "⤛"], [0, "⤜"], [0, "⤝"], [0, "⤞"], [0, "⤟"], [0, "⤠"], [2, "⤣"], [0, "⤤"], [0, "⤥"], [0, "⤦"], [0, "⤧"], [0, "⤨"], [0, "⤩"], [0, "⤪"], [8, { v: "⤳", n: 824, o: "⤳̸" }], [1, "⤵"], [0, "⤶"], [0, "⤷"], [0, "⤸"], [0, "⤹"], [2, "⤼"], [0, "⤽"], [7, "⥅"], [2, "⥈"], [0, "⥉"], [0, "⥊"], [0, "⥋"], [2, "⥎"], [0, "⥏"], [0, "⥐"], [0, "⥑"], [0, "⥒"], [0, "⥓"], [0, "⥔"], [0, "⥕"], [0, "⥖"], [0, "⥗"], [0, "⥘"], [0, "⥙"], [0, "⥚"], [0, "⥛"], [0, "⥜"], [0, "⥝"], [0, "⥞"], [0, "⥟"], [0, "⥠"], [0, "⥡"], [0, "⥢"], [0, "⥣"], [0, "⥤"], [0, "⥥"], [0, "⥦"], [0, "⥧"], [0, "⥨"], [0, "⥩"], [0, "⥪"], [0, "⥫"], [0, "⥬"], [0, "⥭"], [0, "⥮"], [0, "⥯"], [0, "⥰"], [0, "⥱"], [0, "⥲"], [0, "⥳"], [0, "⥴"], [0, "⥵"], [0, "⥶"], [1, "⥸"], [0, "⥹"], [1, "⥻"], [0, "⥼"], [0, "⥽"], [0, "⥾"], [0, "⥿"], [5, "⦅"], [0, "⦆"], [4, "⦋"], [0, "⦌"], [0, "⦍"], [0, "⦎"], [0, "⦏"], [0, "⦐"], [0, "⦑"], [0, "⦒"], [0, "⦓"], [0, "⦔"], [0, "⦕"], [0, "⦖"], [3, "⦚"], [1, "⦜"], [0, "⦝"], [6, "⦤"], [0, "⦥"], [0, "⦦"], [0, "⦧"], [0, "⦨"], [0, "⦩"], [0, "⦪"], [0, "⦫"], [0, "⦬"], [0, "⦭"], [0, "⦮"], [0, "⦯"], [0, "⦰"], [0, "⦱"], [0, "⦲"], [0, "⦳"], [0, "⦴"], [0, "⦵"], [0, "⦶"], [0, "⦷"], [1, "⦹"], [1, "⦻"], [0, "⦼"], [1, "⦾"], [0, "⦿"], [0, "⧀"], [0, "⧁"], [0, "⧂"], [0, "⧃"], [0, "⧄"], [0, "⧅"], [3, "⧉"], [3, "⧍"], [0, "⧎"], [0, { v: "⧏", n: 824, o: "⧏̸" }], [0, { v: "⧐", n: 824, o: "⧐̸" }], [11, "⧜"], [0, "⧝"], [0, "⧞"], [4, "⧣"], [0, "⧤"], [0, "⧥"], [5, "⧫"], [8, "⧴"], [1, "⧶"], [9, "⨀"], [0, "⨁"], [0, "⨂"], [1, "⨄"], [1, "⨆"], [5, "⨌"], [0, "⨍"], [2, "⨐"], [0, "⨑"], [0, "⨒"], [0, "⨓"], [0, "⨔"], [0, "⨕"], [0, "⨖"], [0, "⨗"], [10, "⨢"], [0, "⨣"], [0, "⨤"], [0, "⨥"], [0, "⨦"], [0, "⨧"], [1, "⨩"], [0, "⨪"], [2, "⨭"], [0, "⨮"], [0, "⨯"], [0, "⨰"], [0, "⨱"], [1, "⨳"], [0, "⨴"], [0, "⨵"], [0, "⨶"], [0, "⨷"], [0, "⨸"], [0, "⨹"], [0, "⨺"], [0, "⨻"], [0, "⨼"], [2, "⨿"], [0, "⩀"], [1, "⩂"], [0, "⩃"], [0, "⩄"], [0, "⩅"], [0, "⩆"], [0, "⩇"], [0, "⩈"], [0, "⩉"], [0, "⩊"], [0, "⩋"], [0, "⩌"], [0, "⩍"], [2, "⩐"], [2, "⩓"], [0, "⩔"], [0, "⩕"], [0, "⩖"], [0, "⩗"], [0, "⩘"], [1, "⩚"], [0, "⩛"], [0, "⩜"], [0, "⩝"], [1, "⩟"], [6, "⩦"], [3, "⩪"], [2, { v: "⩭", n: 824, o: "⩭̸" }], [0, "⩮"], [0, "⩯"], [0, { v: "⩰", n: 824, o: "⩰̸" }], [0, "⩱"], [0, "⩲"], [0, "⩳"], [0, "⩴"], [0, "⩵"], [1, "⩷"], [0, "⩸"], [0, "⩹"], [0, "⩺"], [0, "⩻"], [0, "⩼"], [0, { v: "⩽", n: 824, o: "⩽̸" }], [0, { v: "⩾", n: 824, o: "⩾̸" }], [0, "⩿"], [0, "⪀"], [0, "⪁"], [0, "⪂"], [0, "⪃"], [0, "⪄"], [0, "⪅"], [0, "⪆"], [0, "⪇"], [0, "⪈"], [0, "⪉"], [0, "⪊"], [0, "⪋"], [0, "⪌"], [0, "⪍"], [0, "⪎"], [0, "⪏"], [0, "⪐"], [0, "⪑"], [0, "⪒"], [0, "⪓"], [0, "⪔"], [0, "⪕"], [0, "⪖"], [0, "⪗"], [0, "⪘"], [0, "⪙"], [0, "⪚"], [2, "⪝"], [0, "⪞"], [0, "⪟"], [0, "⪠"], [0, { v: "⪡", n: 824, o: "⪡̸" }], [0, { v: "⪢", n: 824, o: "⪢̸" }], [1, "⪤"], [0, "⪥"], [0, "⪦"], [0, "⪧"], [0, "⪨"], [0, "⪩"], [0, "⪪"], [0, "⪫"], [0, { v: "⪬", n: 65024, o: "⪬︀" }], [0, { v: "⪭", n: 65024, o: "⪭︀" }], [0, "⪮"], [0, { v: "⪯", n: 824, o: "⪯̸" }], [0, { v: "⪰", n: 824, o: "⪰̸" }], [2, "⪳"], [0, "⪴"], [0, "⪵"], [0, "⪶"], [0, "⪷"], [0, "⪸"], [0, "⪹"], [0, "⪺"], [0, "⪻"], [0, "⪼"], [0, "⪽"], [0, "⪾"], [0, "⪿"], [0, "⫀"], [0, "⫁"], [0, "⫂"], [0, "⫃"], [0, "⫄"], [0, { v: "⫅", n: 824, o: "⫅̸" }], [0, { v: "⫆", n: 824, o: "⫆̸" }], [0, "⫇"], [0, "⫈"], [2, { v: "⫋", n: 65024, o: "⫋︀" }], [0, { v: "⫌", n: 65024, o: "⫌︀" }], [2, "⫏"], [0, "⫐"], [0, "⫑"], [0, "⫒"], [0, "⫓"], [0, "⫔"], [0, "⫕"], [0, "⫖"], [0, "⫗"], [0, "⫘"], [0, "⫙"], [0, "⫚"], [0, "⫛"], [8, "⫤"], [1, "⫦"], [0, "⫧"], [0, "⫨"], [0, "⫩"], [1, "⫫"], [0, "⫬"], [0, "⫭"], [0, "⫮"], [0, "⫯"], [0, "⫰"], [0, "⫱"], [0, "⫲"], [0, "⫳"], [9, { v: "⫽", n: 8421, o: "⫽⃥" }], [44343, { n: new Map(/* #__PURE__ */ restoreDiff([[56476, "𝒜"], [1, "𝒞"], [0, "𝒟"], [2, "𝒢"], [2, "𝒥"], [0, "𝒦"], [2, "𝒩"], [0, "𝒪"], [0, "𝒫"], [0, "𝒬"], [1, "𝒮"], [0, "𝒯"], [0, "𝒰"], [0, "𝒱"], [0, "𝒲"], [0, "𝒳"], [0, "𝒴"], [0, "𝒵"], [0, "𝒶"], [0, "𝒷"], [0, "𝒸"], [0, "𝒹"], [1, "𝒻"], [1, "𝒽"], [0, "𝒾"], [0, "𝒿"], [0, "𝓀"], [0, "𝓁"], [0, "𝓂"], [0, "𝓃"], [1, "𝓅"], [0, "𝓆"], [0, "𝓇"], [0, "𝓈"], [0, "𝓉"], [0, "𝓊"], [0, "𝓋"], [0, "𝓌"], [0, "𝓍"], [0, "𝓎"], [0, "𝓏"], [52, "𝔄"], [0, "𝔅"], [1, "𝔇"], [0, "𝔈"], [0, "𝔉"], [0, "𝔊"], [2, "𝔍"], [0, "𝔎"], [0, "𝔏"], [0, "𝔐"], [0, "𝔑"], [0, "𝔒"], [0, "𝔓"], [0, "𝔔"], [1, "𝔖"], [0, "𝔗"], [0, "𝔘"], [0, "𝔙"], [0, "𝔚"], [0, "𝔛"], [0, "𝔜"], [1, "𝔞"], [0, "𝔟"], [0, "𝔠"], [0, "𝔡"], [0, "𝔢"], [0, "𝔣"], [0, "𝔤"], [0, "𝔥"], [0, "𝔦"], [0, "𝔧"], [0, "𝔨"], [0, "𝔩"], [0, "𝔪"], [0, "𝔫"], [0, "𝔬"], [0, "𝔭"], [0, "𝔮"], [0, "𝔯"], [0, "𝔰"], [0, "𝔱"], [0, "𝔲"], [0, "𝔳"], [0, "𝔴"], [0, "𝔵"], [0, "𝔶"], [0, "𝔷"], [0, "𝔸"], [0, "𝔹"], [1, "𝔻"], [0, "𝔼"], [0, "𝔽"], [0, "𝔾"], [1, "𝕀"], [0, "𝕁"], [0, "𝕂"], [0, "𝕃"], [0, "𝕄"], [1, "𝕆"], [3, "𝕊"], [0, "𝕋"], [0, "𝕌"], [0, "𝕍"], [0, "𝕎"], [0, "𝕏"], [0, "𝕐"], [1, "𝕒"], [0, "𝕓"], [0, "𝕔"], [0, "𝕕"], [0, "𝕖"], [0, "𝕗"], [0, "𝕘"], [0, "𝕙"], [0, "𝕚"], [0, "𝕛"], [0, "𝕜"], [0, "𝕝"], [0, "𝕞"], [0, "𝕟"], [0, "𝕠"], [0, "𝕡"], [0, "𝕢"], [0, "𝕣"], [0, "𝕤"], [0, "𝕥"], [0, "𝕦"], [0, "𝕧"], [0, "𝕨"], [0, "𝕩"], [0, "𝕪"], [0, "𝕫"]])) }], [8906, "ff"], [0, "fi"], [0, "fl"], [0, "ffi"], [0, "ffl"]])); + + +var encodeHtml = /*#__PURE__*/Object.defineProperty({ + default: _default$3 +}, '__esModule', {value: true}); + +var _escape = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.getCodePoint = exports.xmlReplacer = void 0; +exports.xmlReplacer = /["&'<>$\x80-\uFFFF]/g; +var xmlCodeMap = new Map([ + [34, """], + [38, "&"], + [39, "'"], + [60, "<"], + [62, ">"], +]); +// For compatibility with node < 4, we wrap `codePointAt` +exports.getCodePoint = +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition +String.prototype.codePointAt != null + ? function (str, index) { return str.codePointAt(index); } + : // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae + function (c, index) { + return (c.charCodeAt(index) & 0xfc00) === 0xd800 + ? (c.charCodeAt(index) - 0xd800) * 0x400 + + c.charCodeAt(index + 1) - + 0xdc00 + + 0x10000 + : c.charCodeAt(index); + }; +/** + * Encodes all non-ASCII characters, as well as characters not valid in XML + * documents using XML entities. + * + * If a character has no equivalent entity, a + * numeric hexadecimal reference (eg. `ü`) will be used. + */ +function encodeXML(str) { + var ret = ""; + var lastIdx = 0; + var match; + while ((match = exports.xmlReplacer.exec(str)) !== null) { + var i = match.index; + var char = str.charCodeAt(i); + var next = xmlCodeMap.get(char); + if (next !== undefined) { + ret += str.substring(lastIdx, i) + next; + lastIdx = i + 1; + } + else { + ret += "".concat(str.substring(lastIdx, i), "&#x").concat((0, exports.getCodePoint)(str, i).toString(16), ";"); + // Increase by 1 if we have a surrogate pair + lastIdx = exports.xmlReplacer.lastIndex += Number((char & 0xfc00) === 0xd800); + } + } + return ret + str.substr(lastIdx); +} +exports.encodeXML = encodeXML; +/** + * Encodes all non-ASCII characters, as well as characters not valid in XML + * documents using numeric hexadecimal reference (eg. `ü`). + * + * Have a look at `escapeUTF8` if you want a more concise output at the expense + * of reduced transportability. + * + * @param data String to escape. + */ +exports.escape = encodeXML; +/** + * Creates a function that escapes all characters matched by the given regular + * expression using the given map of characters to escape to their entities. + * + * @param regex Regular expression to match characters to escape. + * @param map Map of characters to escape to their entities. + * + * @returns Function that escapes all characters matched by the given regular + * expression using the given map of characters to escape to their entities. + */ +function getEscaper(regex, map) { + return function escape(data) { + var match; + var lastIdx = 0; + var result = ""; + while ((match = regex.exec(data))) { + if (lastIdx !== match.index) { + result += data.substring(lastIdx, match.index); + } + // We know that this character will be in the map. + result += map.get(match[0].charCodeAt(0)); + // Every match will be of length 1 + lastIdx = match.index + 1; + } + return result + data.substring(lastIdx); + }; +} +/** + * Encodes all characters not valid in XML documents using XML entities. + * + * Note that the output will be character-set dependent. + * + * @param data String to escape. + */ +exports.escapeUTF8 = getEscaper(/[&<>'"]/g, xmlCodeMap); +/** + * Encodes all characters that have to be escaped in HTML attributes, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + * + * @param data String to escape. + */ +exports.escapeAttribute = getEscaper(/["&\u00A0]/g, new Map([ + [34, """], + [38, "&"], + [160, " "], +])); +/** + * Encodes all characters that have to be escaped in HTML text, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + * + * @param data String to escape. + */ +exports.escapeText = getEscaper(/[&<>\u00A0]/g, new Map([ + [38, "&"], + [60, "<"], + [62, ">"], + [160, " "], +])); + +}); + +var require$$0$3 = encodeHtml; + +var escape_js_1 = _escape; + +var encode = createCommonjsModule(function (module, exports) { +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.encodeNonAsciiHTML = exports.encodeHTML = void 0; +var encode_html_js_1 = __importDefault(require$$0$3); + +var htmlReplacer = /[\t\n!-,./:-@[-`\f{-}$\x80-\uFFFF]/g; +/** + * Encodes all characters in the input using HTML entities. This includes + * characters that are valid ASCII characters in HTML documents, such as `#`. + * + * To get a more compact output, consider using the `encodeNonAsciiHTML` + * function, which will only encode characters that are not valid in HTML + * documents, as well as non-ASCII characters. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + */ +function encodeHTML(data) { + return encodeHTMLTrieRe(htmlReplacer, data); +} +exports.encodeHTML = encodeHTML; +/** + * Encodes all non-ASCII characters, as well as characters not valid in HTML + * documents using HTML entities. This function will not encode characters that + * are valid in HTML documents, such as `#`. + * + * If a character has no equivalent entity, a numeric hexadecimal reference + * (eg. `ü`) will be used. + */ +function encodeNonAsciiHTML(data) { + return encodeHTMLTrieRe(escape_js_1.xmlReplacer, data); +} +exports.encodeNonAsciiHTML = encodeNonAsciiHTML; +function encodeHTMLTrieRe(regExp, str) { + var ret = ""; + var lastIdx = 0; + var match; + while ((match = regExp.exec(str)) !== null) { + var i = match.index; + ret += str.substring(lastIdx, i); + var char = str.charCodeAt(i); + var next = encode_html_js_1.default.get(char); + if (typeof next === "object") { + // We are in a branch. Try to match the next char. + if (i + 1 < str.length) { + var nextChar = str.charCodeAt(i + 1); + var value = typeof next.n === "number" + ? next.n === nextChar + ? next.o + : undefined + : next.n.get(nextChar); + if (value !== undefined) { + ret += value; + lastIdx = regExp.lastIndex += 1; + continue; + } + } + next = next.v; + } + // We might have a tree node without a value; skip and use a numeric entity. + if (next !== undefined) { + ret += next; + lastIdx = i + 1; + } + else { + var cp = (0, escape_js_1.getCodePoint)(str, i); + ret += "&#x".concat(cp.toString(16), ";"); + // Increase by 1 if we have a surrogate pair + lastIdx = regExp.lastIndex += Number(cp !== char); + } + } + return ret + str.substr(lastIdx); +} + +}); + +var decode_js_1 = decode; + +var encode_js_1 = encode; + +var lib$7 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.decodeXMLStrict = exports.decodeHTML5Strict = exports.decodeHTML4Strict = exports.decodeHTML5 = exports.decodeHTML4 = exports.decodeHTMLAttribute = exports.decodeHTMLStrict = exports.decodeHTML = exports.decodeXML = exports.DecodingMode = exports.EntityDecoder = exports.encodeHTML5 = exports.encodeHTML4 = exports.encodeNonAsciiHTML = exports.encodeHTML = exports.escapeText = exports.escapeAttribute = exports.escapeUTF8 = exports.escape = exports.encodeXML = exports.encode = exports.decodeStrict = exports.decode = exports.EncodingMode = exports.EntityLevel = void 0; + + + +/** The level of entities to support. */ +var EntityLevel; +(function (EntityLevel) { + /** Support only XML entities. */ + EntityLevel[EntityLevel["XML"] = 0] = "XML"; + /** Support HTML entities, which are a superset of XML entities. */ + EntityLevel[EntityLevel["HTML"] = 1] = "HTML"; +})(EntityLevel = exports.EntityLevel || (exports.EntityLevel = {})); +var EncodingMode; +(function (EncodingMode) { + /** + * The output is UTF-8 encoded. Only characters that need escaping within + * XML will be escaped. + */ + EncodingMode[EncodingMode["UTF8"] = 0] = "UTF8"; + /** + * The output consists only of ASCII characters. Characters that need + * escaping within HTML, and characters that aren't ASCII characters will + * be escaped. + */ + EncodingMode[EncodingMode["ASCII"] = 1] = "ASCII"; + /** + * Encode all characters that have an equivalent entity, as well as all + * characters that are not ASCII characters. + */ + EncodingMode[EncodingMode["Extensive"] = 2] = "Extensive"; + /** + * Encode all characters that have to be escaped in HTML attributes, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + */ + EncodingMode[EncodingMode["Attribute"] = 3] = "Attribute"; + /** + * Encode all characters that have to be escaped in HTML text, + * following {@link https://html.spec.whatwg.org/multipage/parsing.html#escapingString}. + */ + EncodingMode[EncodingMode["Text"] = 4] = "Text"; +})(EncodingMode = exports.EncodingMode || (exports.EncodingMode = {})); +/** + * Decodes a string with entities. + * + * @param data String to decode. + * @param options Decoding options. + */ +function decode(data, options) { + if (options === void 0) { options = EntityLevel.XML; } + var level = typeof options === "number" ? options : options.level; + if (level === EntityLevel.HTML) { + var mode = typeof options === "object" ? options.mode : undefined; + return (0, decode_js_1.decodeHTML)(data, mode); + } + return (0, decode_js_1.decodeXML)(data); +} +exports.decode = decode; +/** + * Decodes a string with entities. Does not allow missing trailing semicolons for entities. + * + * @param data String to decode. + * @param options Decoding options. + * @deprecated Use `decode` with the `mode` set to `Strict`. + */ +function decodeStrict(data, options) { + var _a; + if (options === void 0) { options = EntityLevel.XML; } + var opts = typeof options === "number" ? { level: options } : options; + (_a = opts.mode) !== null && _a !== void 0 ? _a : (opts.mode = decode_js_1.DecodingMode.Strict); + return decode(data, opts); +} +exports.decodeStrict = decodeStrict; +/** + * Encodes a string with entities. + * + * @param data String to encode. + * @param options Encoding options. + */ +function encode(data, options) { + if (options === void 0) { options = EntityLevel.XML; } + var opts = typeof options === "number" ? { level: options } : options; + // Mode `UTF8` just escapes XML entities + if (opts.mode === EncodingMode.UTF8) + return (0, escape_js_1.escapeUTF8)(data); + if (opts.mode === EncodingMode.Attribute) + return (0, escape_js_1.escapeAttribute)(data); + if (opts.mode === EncodingMode.Text) + return (0, escape_js_1.escapeText)(data); + if (opts.level === EntityLevel.HTML) { + if (opts.mode === EncodingMode.ASCII) { + return (0, encode_js_1.encodeNonAsciiHTML)(data); + } + return (0, encode_js_1.encodeHTML)(data); + } + // ASCII and Extensive are equivalent + return (0, escape_js_1.encodeXML)(data); +} +exports.encode = encode; +var escape_js_2 = escape_js_1; +Object.defineProperty(exports, "encodeXML", { enumerable: true, get: function () { return escape_js_2.encodeXML; } }); +Object.defineProperty(exports, "escape", { enumerable: true, get: function () { return escape_js_2.escape; } }); +Object.defineProperty(exports, "escapeUTF8", { enumerable: true, get: function () { return escape_js_2.escapeUTF8; } }); +Object.defineProperty(exports, "escapeAttribute", { enumerable: true, get: function () { return escape_js_2.escapeAttribute; } }); +Object.defineProperty(exports, "escapeText", { enumerable: true, get: function () { return escape_js_2.escapeText; } }); +var encode_js_2 = encode_js_1; +Object.defineProperty(exports, "encodeHTML", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } }); +Object.defineProperty(exports, "encodeNonAsciiHTML", { enumerable: true, get: function () { return encode_js_2.encodeNonAsciiHTML; } }); +// Legacy aliases (deprecated) +Object.defineProperty(exports, "encodeHTML4", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } }); +Object.defineProperty(exports, "encodeHTML5", { enumerable: true, get: function () { return encode_js_2.encodeHTML; } }); +var decode_js_2 = decode_js_1; +Object.defineProperty(exports, "EntityDecoder", { enumerable: true, get: function () { return decode_js_2.EntityDecoder; } }); +Object.defineProperty(exports, "DecodingMode", { enumerable: true, get: function () { return decode_js_2.DecodingMode; } }); +Object.defineProperty(exports, "decodeXML", { enumerable: true, get: function () { return decode_js_2.decodeXML; } }); +Object.defineProperty(exports, "decodeHTML", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } }); +Object.defineProperty(exports, "decodeHTMLStrict", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } }); +Object.defineProperty(exports, "decodeHTMLAttribute", { enumerable: true, get: function () { return decode_js_2.decodeHTMLAttribute; } }); +// Legacy aliases (deprecated) +Object.defineProperty(exports, "decodeHTML4", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } }); +Object.defineProperty(exports, "decodeHTML5", { enumerable: true, get: function () { return decode_js_2.decodeHTML; } }); +Object.defineProperty(exports, "decodeHTML4Strict", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } }); +Object.defineProperty(exports, "decodeHTML5Strict", { enumerable: true, get: function () { return decode_js_2.decodeHTMLStrict; } }); +Object.defineProperty(exports, "decodeXMLStrict", { enumerable: true, get: function () { return decode_js_2.decodeXML; } }); + +}); + +var foreignNames = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.attributeNames = exports.elementNames = void 0; +exports.elementNames = new Map([ + "altGlyph", + "altGlyphDef", + "altGlyphItem", + "animateColor", + "animateMotion", + "animateTransform", + "clipPath", + "feBlend", + "feColorMatrix", + "feComponentTransfer", + "feComposite", + "feConvolveMatrix", + "feDiffuseLighting", + "feDisplacementMap", + "feDistantLight", + "feDropShadow", + "feFlood", + "feFuncA", + "feFuncB", + "feFuncG", + "feFuncR", + "feGaussianBlur", + "feImage", + "feMerge", + "feMergeNode", + "feMorphology", + "feOffset", + "fePointLight", + "feSpecularLighting", + "feSpotLight", + "feTile", + "feTurbulence", + "foreignObject", + "glyphRef", + "linearGradient", + "radialGradient", + "textPath", +].map(function (val) { return [val.toLowerCase(), val]; })); +exports.attributeNames = new Map([ + "definitionURL", + "attributeName", + "attributeType", + "baseFrequency", + "baseProfile", + "calcMode", + "clipPathUnits", + "diffuseConstant", + "edgeMode", + "filterUnits", + "glyphRef", + "gradientTransform", + "gradientUnits", + "kernelMatrix", + "kernelUnitLength", + "keyPoints", + "keySplines", + "keyTimes", + "lengthAdjust", + "limitingConeAngle", + "markerHeight", + "markerUnits", + "markerWidth", + "maskContentUnits", + "maskUnits", + "numOctaves", + "pathLength", + "patternContentUnits", + "patternTransform", + "patternUnits", + "pointsAtX", + "pointsAtY", + "pointsAtZ", + "preserveAlpha", + "preserveAspectRatio", + "primitiveUnits", + "refX", + "refY", + "repeatCount", + "repeatDur", + "requiredExtensions", + "requiredFeatures", + "specularConstant", + "specularExponent", + "spreadMethod", + "startOffset", + "stdDeviation", + "stitchTiles", + "surfaceScale", + "systemLanguage", + "tableValues", + "targetX", + "targetY", + "textLength", + "viewBox", + "viewTarget", + "xChannelSelector", + "yChannelSelector", + "zoomAndPan", +].map(function (val) { return [val.toLowerCase(), val]; })); +}); + +var entities_1 = lib$7; + +var foreignNames_js_1 = foreignNames; + +var lib$6 = createCommonjsModule(function (module, exports) { +var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.render = void 0; +/* + * Module dependencies + */ +var ElementType = __importStar(require$$0$5); + +/** + * Mixed-case SVG and MathML tags & attributes + * recognized by the HTML parser. + * + * @see https://html.spec.whatwg.org/multipage/parsing.html#parsing-main-inforeign + */ + +var unencodedElements = new Set([ + "style", + "script", + "xmp", + "iframe", + "noembed", + "noframes", + "plaintext", + "noscript", +]); +function replaceQuotes(value) { + return value.replace(/"/g, """); +} +/** + * Format attributes + */ +function formatAttributes(attributes, opts) { + var _a; + if (!attributes) + return; + var encode = ((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) === false + ? replaceQuotes + : opts.xmlMode || opts.encodeEntities !== "utf8" + ? entities_1.encodeXML + : entities_1.escapeAttribute; + return Object.keys(attributes) + .map(function (key) { + var _a, _b; + var value = (_a = attributes[key]) !== null && _a !== void 0 ? _a : ""; + if (opts.xmlMode === "foreign") { + /* Fix up mixed-case attribute names */ + key = (_b = foreignNames_js_1.attributeNames.get(key)) !== null && _b !== void 0 ? _b : key; + } + if (!opts.emptyAttrs && !opts.xmlMode && value === "") { + return key; + } + return "".concat(key, "=\"").concat(encode(value), "\""); + }) + .join(" "); +} +/** + * Self-enclosing tags + */ +var singleTag = new Set([ + "area", + "base", + "basefont", + "br", + "col", + "command", + "embed", + "frame", + "hr", + "img", + "input", + "isindex", + "keygen", + "link", + "meta", + "param", + "source", + "track", + "wbr", +]); +/** + * Renders a DOM node or an array of DOM nodes to a string. + * + * Can be thought of as the equivalent of the `outerHTML` of the passed node(s). + * + * @param node Node to be rendered. + * @param options Changes serialization behavior + */ +function render(node, options) { + if (options === void 0) { options = {}; } + var nodes = "length" in node ? node : [node]; + var output = ""; + for (var i = 0; i < nodes.length; i++) { + output += renderNode(nodes[i], options); + } + return output; +} +exports.render = render; +exports.default = render; +function renderNode(node, options) { + switch (node.type) { + case ElementType.Root: + return render(node.children, options); + // @ts-expect-error We don't use `Doctype` yet + case ElementType.Doctype: + case ElementType.Directive: + return renderDirective(node); + case ElementType.Comment: + return renderComment(node); + case ElementType.CDATA: + return renderCdata(node); + case ElementType.Script: + case ElementType.Style: + case ElementType.Tag: + return renderTag(node, options); + case ElementType.Text: + return renderText(node, options); + } +} +var foreignModeIntegrationPoints = new Set([ + "mi", + "mo", + "mn", + "ms", + "mtext", + "annotation-xml", + "foreignObject", + "desc", + "title", +]); +var foreignElements = new Set(["svg", "math"]); +function renderTag(elem, opts) { + var _a; + // Handle SVG / MathML in HTML + if (opts.xmlMode === "foreign") { + /* Fix up mixed-case element names */ + elem.name = (_a = foreignNames_js_1.elementNames.get(elem.name)) !== null && _a !== void 0 ? _a : elem.name; + /* Exit foreign mode at integration points */ + if (elem.parent && + foreignModeIntegrationPoints.has(elem.parent.name)) { + opts = __assign(__assign({}, opts), { xmlMode: false }); + } + } + if (!opts.xmlMode && foreignElements.has(elem.name)) { + opts = __assign(__assign({}, opts), { xmlMode: "foreign" }); + } + var tag = "<".concat(elem.name); + var attribs = formatAttributes(elem.attribs, opts); + if (attribs) { + tag += " ".concat(attribs); + } + if (elem.children.length === 0 && + (opts.xmlMode + ? // In XML mode or foreign mode, and user hasn't explicitly turned off self-closing tags + opts.selfClosingTags !== false + : // User explicitly asked for self-closing tags, even in HTML mode + opts.selfClosingTags && singleTag.has(elem.name))) { + if (!opts.xmlMode) + tag += " "; + tag += "/>"; + } + else { + tag += ">"; + if (elem.children.length > 0) { + tag += render(elem.children, opts); + } + if (opts.xmlMode || !singleTag.has(elem.name)) { + tag += "</".concat(elem.name, ">"); + } + } + return tag; +} +function renderDirective(elem) { + return "<".concat(elem.data, ">"); +} +function renderText(elem, opts) { + var _a; + var data = elem.data || ""; + // If entities weren't decoded, no need to encode them back + if (((_a = opts.encodeEntities) !== null && _a !== void 0 ? _a : opts.decodeEntities) !== false && + !(!opts.xmlMode && + elem.parent && + unencodedElements.has(elem.parent.name))) { + data = + opts.xmlMode || opts.encodeEntities !== "utf8" + ? (0, entities_1.encodeXML)(data) + : (0, entities_1.escapeText)(data); + } + return data; +} +function renderCdata(elem) { + return "<![CDATA[".concat(elem.children[0].data, "]]>"); +} +function renderComment(elem) { + return "<!--".concat(elem.data, "-->"); +} +}); + +var domhandler_1 = lib$8; + +var require$$1$1 = lib$6; + +var stringify$1 = createCommonjsModule(function (module, exports) { +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.innerText = exports.textContent = exports.getText = exports.getInnerHTML = exports.getOuterHTML = void 0; + +var dom_serializer_1 = __importDefault(require$$1$1); + +/** + * @category Stringify + * @deprecated Use the `dom-serializer` module directly. + * @param node Node to get the outer HTML of. + * @param options Options for serialization. + * @returns `node`'s outer HTML. + */ +function getOuterHTML(node, options) { + return (0, dom_serializer_1.default)(node, options); +} +exports.getOuterHTML = getOuterHTML; +/** + * @category Stringify + * @deprecated Use the `dom-serializer` module directly. + * @param node Node to get the inner HTML of. + * @param options Options for serialization. + * @returns `node`'s inner HTML. + */ +function getInnerHTML(node, options) { + return (0, domhandler_1.hasChildren)(node) + ? node.children.map(function (node) { return getOuterHTML(node, options); }).join("") + : ""; +} +exports.getInnerHTML = getInnerHTML; +/** + * Get a node's inner text. Same as `textContent`, but inserts newlines for `<br>` tags. Ignores comments. + * + * @category Stringify + * @deprecated Use `textContent` instead. + * @param node Node to get the inner text of. + * @returns `node`'s inner text. + */ +function getText(node) { + if (Array.isArray(node)) + return node.map(getText).join(""); + if ((0, domhandler_1.isTag)(node)) + return node.name === "br" ? "\n" : getText(node.children); + if ((0, domhandler_1.isCDATA)(node)) + return getText(node.children); + if ((0, domhandler_1.isText)(node)) + return node.data; + return ""; +} +exports.getText = getText; +/** + * Get a node's text content. Ignores comments. + * + * @category Stringify + * @param node Node to get the text content of. + * @returns `node`'s text content. + * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent} + */ +function textContent(node) { + if (Array.isArray(node)) + return node.map(textContent).join(""); + if ((0, domhandler_1.hasChildren)(node) && !(0, domhandler_1.isComment)(node)) { + return textContent(node.children); + } + if ((0, domhandler_1.isText)(node)) + return node.data; + return ""; +} +exports.textContent = textContent; +/** + * Get a node's inner text, ignoring `<script>` and `<style>` tags. Ignores comments. + * + * @category Stringify + * @param node Node to get the inner text of. + * @returns `node`'s inner text. + * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText} + */ +function innerText(node) { + if (Array.isArray(node)) + return node.map(innerText).join(""); + if ((0, domhandler_1.hasChildren)(node) && (node.type === require$$0$5.ElementType.Tag || (0, domhandler_1.isCDATA)(node))) { + return innerText(node.children); + } + if ((0, domhandler_1.isText)(node)) + return node.data; + return ""; +} +exports.innerText = innerText; + +}); + +var traversal = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.prevElementSibling = exports.nextElementSibling = exports.getName = exports.hasAttrib = exports.getAttributeValue = exports.getSiblings = exports.getParent = exports.getChildren = void 0; + +/** + * Get a node's children. + * + * @category Traversal + * @param elem Node to get the children of. + * @returns `elem`'s children, or an empty array. + */ +function getChildren(elem) { + return (0, domhandler_1.hasChildren)(elem) ? elem.children : []; +} +exports.getChildren = getChildren; +/** + * Get a node's parent. + * + * @category Traversal + * @param elem Node to get the parent of. + * @returns `elem`'s parent node, or `null` if `elem` is a root node. + */ +function getParent(elem) { + return elem.parent || null; +} +exports.getParent = getParent; +/** + * Gets an elements siblings, including the element itself. + * + * Attempts to get the children through the element's parent first. If we don't + * have a parent (the element is a root node), we walk the element's `prev` & + * `next` to get all remaining nodes. + * + * @category Traversal + * @param elem Element to get the siblings of. + * @returns `elem`'s siblings, including `elem`. + */ +function getSiblings(elem) { + var _a, _b; + var parent = getParent(elem); + if (parent != null) + return getChildren(parent); + var siblings = [elem]; + var prev = elem.prev, next = elem.next; + while (prev != null) { + siblings.unshift(prev); + (_a = prev, prev = _a.prev); + } + while (next != null) { + siblings.push(next); + (_b = next, next = _b.next); + } + return siblings; +} +exports.getSiblings = getSiblings; +/** + * Gets an attribute from an element. + * + * @category Traversal + * @param elem Element to check. + * @param name Attribute name to retrieve. + * @returns The element's attribute value, or `undefined`. + */ +function getAttributeValue(elem, name) { + var _a; + return (_a = elem.attribs) === null || _a === void 0 ? void 0 : _a[name]; +} +exports.getAttributeValue = getAttributeValue; +/** + * Checks whether an element has an attribute. + * + * @category Traversal + * @param elem Element to check. + * @param name Attribute name to look for. + * @returns Returns whether `elem` has the attribute `name`. + */ +function hasAttrib(elem, name) { + return (elem.attribs != null && + Object.prototype.hasOwnProperty.call(elem.attribs, name) && + elem.attribs[name] != null); +} +exports.hasAttrib = hasAttrib; +/** + * Get the tag name of an element. + * + * @category Traversal + * @param elem The element to get the name for. + * @returns The tag name of `elem`. + */ +function getName(elem) { + return elem.name; +} +exports.getName = getName; +/** + * Returns the next element sibling of a node. + * + * @category Traversal + * @param elem The element to get the next sibling of. + * @returns `elem`'s next sibling that is a tag, or `null` if there is no next + * sibling. + */ +function nextElementSibling(elem) { + var _a; + var next = elem.next; + while (next !== null && !(0, domhandler_1.isTag)(next)) + (_a = next, next = _a.next); + return next; +} +exports.nextElementSibling = nextElementSibling; +/** + * Returns the previous element sibling of a node. + * + * @category Traversal + * @param elem The element to get the previous sibling of. + * @returns `elem`'s previous sibling that is a tag, or `null` if there is no + * previous sibling. + */ +function prevElementSibling(elem) { + var _a; + var prev = elem.prev; + while (prev !== null && !(0, domhandler_1.isTag)(prev)) + (_a = prev, prev = _a.prev); + return prev; +} +exports.prevElementSibling = prevElementSibling; + +}); + +var manipulation$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.prepend = exports.prependChild = exports.append = exports.appendChild = exports.replaceElement = exports.removeElement = void 0; +/** + * Remove an element from the dom + * + * @category Manipulation + * @param elem The element to be removed + */ +function removeElement(elem) { + if (elem.prev) + elem.prev.next = elem.next; + if (elem.next) + elem.next.prev = elem.prev; + if (elem.parent) { + var childs = elem.parent.children; + var childsIndex = childs.lastIndexOf(elem); + if (childsIndex >= 0) { + childs.splice(childsIndex, 1); + } + } + elem.next = null; + elem.prev = null; + elem.parent = null; +} +exports.removeElement = removeElement; +/** + * Replace an element in the dom + * + * @category Manipulation + * @param elem The element to be replaced + * @param replacement The element to be added + */ +function replaceElement(elem, replacement) { + var prev = (replacement.prev = elem.prev); + if (prev) { + prev.next = replacement; + } + var next = (replacement.next = elem.next); + if (next) { + next.prev = replacement; + } + var parent = (replacement.parent = elem.parent); + if (parent) { + var childs = parent.children; + childs[childs.lastIndexOf(elem)] = replacement; + elem.parent = null; + } +} +exports.replaceElement = replaceElement; +/** + * Append a child to an element. + * + * @category Manipulation + * @param parent The element to append to. + * @param child The element to be added as a child. + */ +function appendChild(parent, child) { + removeElement(child); + child.next = null; + child.parent = parent; + if (parent.children.push(child) > 1) { + var sibling = parent.children[parent.children.length - 2]; + sibling.next = child; + child.prev = sibling; + } + else { + child.prev = null; + } +} +exports.appendChild = appendChild; +/** + * Append an element after another. + * + * @category Manipulation + * @param elem The element to append after. + * @param next The element be added. + */ +function append(elem, next) { + removeElement(next); + var parent = elem.parent; + var currNext = elem.next; + next.next = currNext; + next.prev = elem; + elem.next = next; + next.parent = parent; + if (currNext) { + currNext.prev = next; + if (parent) { + var childs = parent.children; + childs.splice(childs.lastIndexOf(currNext), 0, next); + } + } + else if (parent) { + parent.children.push(next); + } +} +exports.append = append; +/** + * Prepend a child to an element. + * + * @category Manipulation + * @param parent The element to prepend before. + * @param child The element to be added as a child. + */ +function prependChild(parent, child) { + removeElement(child); + child.parent = parent; + child.prev = null; + if (parent.children.unshift(child) !== 1) { + var sibling = parent.children[1]; + sibling.prev = child; + child.next = sibling; + } + else { + child.next = null; + } +} +exports.prependChild = prependChild; +/** + * Prepend an element before another. + * + * @category Manipulation + * @param elem The element to prepend before. + * @param prev The element be added. + */ +function prepend(elem, prev) { + removeElement(prev); + var parent = elem.parent; + if (parent) { + var childs = parent.children; + childs.splice(childs.indexOf(elem), 0, prev); + } + if (elem.prev) { + elem.prev.next = prev; + } + prev.parent = parent; + prev.prev = elem.prev; + prev.next = elem; + elem.prev = prev; +} +exports.prepend = prepend; + +}); + +var querying = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.findAll = exports.existsOne = exports.findOne = exports.findOneChild = exports.find = exports.filter = void 0; + +/** + * Search a node and its children for nodes passing a test function. If `node` is not an array, it will be wrapped in one. + * + * @category Querying + * @param test Function to test nodes on. + * @param node Node to search. Will be included in the result set if it matches. + * @param recurse Also consider child nodes. + * @param limit Maximum number of nodes to return. + * @returns All nodes passing `test`. + */ +function filter(test, node, recurse, limit) { + if (recurse === void 0) { recurse = true; } + if (limit === void 0) { limit = Infinity; } + return find(test, Array.isArray(node) ? node : [node], recurse, limit); +} +exports.filter = filter; +/** + * Search an array of nodes and their children for nodes passing a test function. + * + * @category Querying + * @param test Function to test nodes on. + * @param nodes Array of nodes to search. + * @param recurse Also consider child nodes. + * @param limit Maximum number of nodes to return. + * @returns All nodes passing `test`. + */ +function find(test, nodes, recurse, limit) { + var result = []; + /** Stack of the arrays we are looking at. */ + var nodeStack = [nodes]; + /** Stack of the indices within the arrays. */ + var indexStack = [0]; + for (;;) { + // First, check if the current array has any more elements to look at. + if (indexStack[0] >= nodeStack[0].length) { + // If we have no more arrays to look at, we are done. + if (indexStack.length === 1) { + return result; + } + // Otherwise, remove the current array from the stack. + nodeStack.shift(); + indexStack.shift(); + // Loop back to the start to continue with the next array. + continue; + } + var elem = nodeStack[0][indexStack[0]++]; + if (test(elem)) { + result.push(elem); + if (--limit <= 0) + return result; + } + if (recurse && (0, domhandler_1.hasChildren)(elem) && elem.children.length > 0) { + /* + * Add the children to the stack. We are depth-first, so this is + * the next array we look at. + */ + indexStack.unshift(0); + nodeStack.unshift(elem.children); + } + } +} +exports.find = find; +/** + * Finds the first element inside of an array that matches a test function. This is an alias for `Array.prototype.find`. + * + * @category Querying + * @param test Function to test nodes on. + * @param nodes Array of nodes to search. + * @returns The first node in the array that passes `test`. + * @deprecated Use `Array.prototype.find` directly. + */ +function findOneChild(test, nodes) { + return nodes.find(test); +} +exports.findOneChild = findOneChild; +/** + * Finds one element in a tree that passes a test. + * + * @category Querying + * @param test Function to test nodes on. + * @param nodes Node or array of nodes to search. + * @param recurse Also consider child nodes. + * @returns The first node that passes `test`. + */ +function findOne(test, nodes, recurse) { + if (recurse === void 0) { recurse = true; } + var elem = null; + for (var i = 0; i < nodes.length && !elem; i++) { + var node = nodes[i]; + if (!(0, domhandler_1.isTag)(node)) { + continue; + } + else if (test(node)) { + elem = node; + } + else if (recurse && node.children.length > 0) { + elem = findOne(test, node.children, true); + } + } + return elem; +} +exports.findOne = findOne; +/** + * Checks if a tree of nodes contains at least one node passing a test. + * + * @category Querying + * @param test Function to test nodes on. + * @param nodes Array of nodes to search. + * @returns Whether a tree of nodes contains at least one node passing the test. + */ +function existsOne(test, nodes) { + return nodes.some(function (checked) { + return (0, domhandler_1.isTag)(checked) && + (test(checked) || existsOne(test, checked.children)); + }); +} +exports.existsOne = existsOne; +/** + * Search an array of nodes and their children for elements passing a test function. + * + * Same as `find`, but limited to elements and with less options, leading to reduced complexity. + * + * @category Querying + * @param test Function to test nodes on. + * @param nodes Array of nodes to search. + * @returns All nodes passing `test`. + */ +function findAll(test, nodes) { + var result = []; + var nodeStack = [nodes]; + var indexStack = [0]; + for (;;) { + if (indexStack[0] >= nodeStack[0].length) { + if (nodeStack.length === 1) { + return result; + } + // Otherwise, remove the current array from the stack. + nodeStack.shift(); + indexStack.shift(); + // Loop back to the start to continue with the next array. + continue; + } + var elem = nodeStack[0][indexStack[0]++]; + if (!(0, domhandler_1.isTag)(elem)) + continue; + if (test(elem)) + result.push(elem); + if (elem.children.length > 0) { + indexStack.unshift(0); + nodeStack.unshift(elem.children); + } + } +} +exports.findAll = findAll; + +}); + +var require$$3 = querying; + +var legacy = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getElementsByTagType = exports.getElementsByTagName = exports.getElementById = exports.getElements = exports.testElement = void 0; + + +/** + * A map of functions to check nodes against. + */ +var Checks = { + tag_name: function (name) { + if (typeof name === "function") { + return function (elem) { return (0, domhandler_1.isTag)(elem) && name(elem.name); }; + } + else if (name === "*") { + return domhandler_1.isTag; + } + return function (elem) { return (0, domhandler_1.isTag)(elem) && elem.name === name; }; + }, + tag_type: function (type) { + if (typeof type === "function") { + return function (elem) { return type(elem.type); }; + } + return function (elem) { return elem.type === type; }; + }, + tag_contains: function (data) { + if (typeof data === "function") { + return function (elem) { return (0, domhandler_1.isText)(elem) && data(elem.data); }; + } + return function (elem) { return (0, domhandler_1.isText)(elem) && elem.data === data; }; + }, +}; +/** + * Returns a function to check whether a node has an attribute with a particular + * value. + * + * @param attrib Attribute to check. + * @param value Attribute value to look for. + * @returns A function to check whether the a node has an attribute with a + * particular value. + */ +function getAttribCheck(attrib, value) { + if (typeof value === "function") { + return function (elem) { return (0, domhandler_1.isTag)(elem) && value(elem.attribs[attrib]); }; + } + return function (elem) { return (0, domhandler_1.isTag)(elem) && elem.attribs[attrib] === value; }; +} +/** + * Returns a function that returns `true` if either of the input functions + * returns `true` for a node. + * + * @param a First function to combine. + * @param b Second function to combine. + * @returns A function taking a node and returning `true` if either of the input + * functions returns `true` for the node. + */ +function combineFuncs(a, b) { + return function (elem) { return a(elem) || b(elem); }; +} +/** + * Returns a function that executes all checks in `options` and returns `true` + * if any of them match a node. + * + * @param options An object describing nodes to look for. + * @returns A function that executes all checks in `options` and returns `true` + * if any of them match a node. + */ +function compileTest(options) { + var funcs = Object.keys(options).map(function (key) { + var value = options[key]; + return Object.prototype.hasOwnProperty.call(Checks, key) + ? Checks[key](value) + : getAttribCheck(key, value); + }); + return funcs.length === 0 ? null : funcs.reduce(combineFuncs); +} +/** + * Checks whether a node matches the description in `options`. + * + * @category Legacy Query Functions + * @param options An object describing nodes to look for. + * @param node The element to test. + * @returns Whether the element matches the description in `options`. + */ +function testElement(options, node) { + var test = compileTest(options); + return test ? test(node) : true; +} +exports.testElement = testElement; +/** + * Returns all nodes that match `options`. + * + * @category Legacy Query Functions + * @param options An object describing nodes to look for. + * @param nodes Nodes to search through. + * @param recurse Also consider child nodes. + * @param limit Maximum number of nodes to return. + * @returns All nodes that match `options`. + */ +function getElements(options, nodes, recurse, limit) { + if (limit === void 0) { limit = Infinity; } + var test = compileTest(options); + return test ? (0, require$$3.filter)(test, nodes, recurse, limit) : []; +} +exports.getElements = getElements; +/** + * Returns the node with the supplied ID. + * + * @category Legacy Query Functions + * @param id The unique ID attribute value to look for. + * @param nodes Nodes to search through. + * @param recurse Also consider child nodes. + * @returns The node with the supplied ID. + */ +function getElementById(id, nodes, recurse) { + if (recurse === void 0) { recurse = true; } + if (!Array.isArray(nodes)) + nodes = [nodes]; + return (0, require$$3.findOne)(getAttribCheck("id", id), nodes, recurse); +} +exports.getElementById = getElementById; +/** + * Returns all nodes with the supplied `tagName`. + * + * @category Legacy Query Functions + * @param tagName Tag name to search for. + * @param nodes Nodes to search through. + * @param recurse Also consider child nodes. + * @param limit Maximum number of nodes to return. + * @returns All nodes with the supplied `tagName`. + */ +function getElementsByTagName(tagName, nodes, recurse, limit) { + if (recurse === void 0) { recurse = true; } + if (limit === void 0) { limit = Infinity; } + return (0, require$$3.filter)(Checks["tag_name"](tagName), nodes, recurse, limit); +} +exports.getElementsByTagName = getElementsByTagName; +/** + * Returns all nodes with the supplied `type`. + * + * @category Legacy Query Functions + * @param type Element type to look for. + * @param nodes Nodes to search through. + * @param recurse Also consider child nodes. + * @param limit Maximum number of nodes to return. + * @returns All nodes with the supplied `type`. + */ +function getElementsByTagType(type, nodes, recurse, limit) { + if (recurse === void 0) { recurse = true; } + if (limit === void 0) { limit = Infinity; } + return (0, require$$3.filter)(Checks["tag_type"](type), nodes, recurse, limit); +} +exports.getElementsByTagType = getElementsByTagType; + +}); + +var helpers$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.uniqueSort = exports.compareDocumentPosition = exports.DocumentPosition = exports.removeSubsets = void 0; + +/** + * Given an array of nodes, remove any member that is contained by another + * member. + * + * @category Helpers + * @param nodes Nodes to filter. + * @returns Remaining nodes that aren't contained by other nodes. + */ +function removeSubsets(nodes) { + var idx = nodes.length; + /* + * Check if each node (or one of its ancestors) is already contained in the + * array. + */ + while (--idx >= 0) { + var node = nodes[idx]; + /* + * Remove the node if it is not unique. + * We are going through the array from the end, so we only + * have to check nodes that preceed the node under consideration in the array. + */ + if (idx > 0 && nodes.lastIndexOf(node, idx - 1) >= 0) { + nodes.splice(idx, 1); + continue; + } + for (var ancestor = node.parent; ancestor; ancestor = ancestor.parent) { + if (nodes.includes(ancestor)) { + nodes.splice(idx, 1); + break; + } + } + } + return nodes; +} +exports.removeSubsets = removeSubsets; +/** + * @category Helpers + * @see {@link http://dom.spec.whatwg.org/#dom-node-comparedocumentposition} + */ +var DocumentPosition; +(function (DocumentPosition) { + DocumentPosition[DocumentPosition["DISCONNECTED"] = 1] = "DISCONNECTED"; + DocumentPosition[DocumentPosition["PRECEDING"] = 2] = "PRECEDING"; + DocumentPosition[DocumentPosition["FOLLOWING"] = 4] = "FOLLOWING"; + DocumentPosition[DocumentPosition["CONTAINS"] = 8] = "CONTAINS"; + DocumentPosition[DocumentPosition["CONTAINED_BY"] = 16] = "CONTAINED_BY"; +})(DocumentPosition = exports.DocumentPosition || (exports.DocumentPosition = {})); +/** + * Compare the position of one node against another node in any other document, + * returning a bitmask with the values from {@link DocumentPosition}. + * + * Document order: + * > There is an ordering, document order, defined on all the nodes in the + * > document corresponding to the order in which the first character of the + * > XML representation of each node occurs in the XML representation of the + * > document after expansion of general entities. Thus, the document element + * > node will be the first node. Element nodes occur before their children. + * > Thus, document order orders element nodes in order of the occurrence of + * > their start-tag in the XML (after expansion of entities). The attribute + * > nodes of an element occur after the element and before its children. The + * > relative order of attribute nodes is implementation-dependent. + * + * Source: + * http://www.w3.org/TR/DOM-Level-3-Core/glossary.html#dt-document-order + * + * @category Helpers + * @param nodeA The first node to use in the comparison + * @param nodeB The second node to use in the comparison + * @returns A bitmask describing the input nodes' relative position. + * + * See http://dom.spec.whatwg.org/#dom-node-comparedocumentposition for + * a description of these values. + */ +function compareDocumentPosition(nodeA, nodeB) { + var aParents = []; + var bParents = []; + if (nodeA === nodeB) { + return 0; + } + var current = (0, domhandler_1.hasChildren)(nodeA) ? nodeA : nodeA.parent; + while (current) { + aParents.unshift(current); + current = current.parent; + } + current = (0, domhandler_1.hasChildren)(nodeB) ? nodeB : nodeB.parent; + while (current) { + bParents.unshift(current); + current = current.parent; + } + var maxIdx = Math.min(aParents.length, bParents.length); + var idx = 0; + while (idx < maxIdx && aParents[idx] === bParents[idx]) { + idx++; + } + if (idx === 0) { + return DocumentPosition.DISCONNECTED; + } + var sharedParent = aParents[idx - 1]; + var siblings = sharedParent.children; + var aSibling = aParents[idx]; + var bSibling = bParents[idx]; + if (siblings.indexOf(aSibling) > siblings.indexOf(bSibling)) { + if (sharedParent === nodeB) { + return DocumentPosition.FOLLOWING | DocumentPosition.CONTAINED_BY; + } + return DocumentPosition.FOLLOWING; + } + if (sharedParent === nodeA) { + return DocumentPosition.PRECEDING | DocumentPosition.CONTAINS; + } + return DocumentPosition.PRECEDING; +} +exports.compareDocumentPosition = compareDocumentPosition; +/** + * Sort an array of nodes based on their relative position in the document, + * removing any duplicate nodes. If the array contains nodes that do not belong + * to the same document, sort order is unspecified. + * + * @category Helpers + * @param nodes Array of DOM nodes. + * @returns Collection of unique nodes, sorted in document order. + */ +function uniqueSort(nodes) { + nodes = nodes.filter(function (node, i, arr) { return !arr.includes(node, i + 1); }); + nodes.sort(function (a, b) { + var relative = compareDocumentPosition(a, b); + if (relative & DocumentPosition.PRECEDING) { + return -1; + } + else if (relative & DocumentPosition.FOLLOWING) { + return 1; + } + return 0; + }); + return nodes; +} +exports.uniqueSort = uniqueSort; + +}); + +var require$$0$2 = stringify$1; + +var require$$4 = legacy; + +var feeds = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getFeed = void 0; + + +/** + * Get the feed object from the root of a DOM tree. + * + * @category Feeds + * @param doc - The DOM to to extract the feed from. + * @returns The feed. + */ +function getFeed(doc) { + var feedRoot = getOneElement(isValidFeed, doc); + return !feedRoot + ? null + : feedRoot.name === "feed" + ? getAtomFeed(feedRoot) + : getRssFeed(feedRoot); +} +exports.getFeed = getFeed; +/** + * Parse an Atom feed. + * + * @param feedRoot The root of the feed. + * @returns The parsed feed. + */ +function getAtomFeed(feedRoot) { + var _a; + var childs = feedRoot.children; + var feed = { + type: "atom", + items: (0, require$$4.getElementsByTagName)("entry", childs).map(function (item) { + var _a; + var children = item.children; + var entry = { media: getMediaElements(children) }; + addConditionally(entry, "id", "id", children); + addConditionally(entry, "title", "title", children); + var href = (_a = getOneElement("link", children)) === null || _a === void 0 ? void 0 : _a.attribs["href"]; + if (href) { + entry.link = href; + } + var description = fetch("summary", children) || fetch("content", children); + if (description) { + entry.description = description; + } + var pubDate = fetch("updated", children); + if (pubDate) { + entry.pubDate = new Date(pubDate); + } + return entry; + }), + }; + addConditionally(feed, "id", "id", childs); + addConditionally(feed, "title", "title", childs); + var href = (_a = getOneElement("link", childs)) === null || _a === void 0 ? void 0 : _a.attribs["href"]; + if (href) { + feed.link = href; + } + addConditionally(feed, "description", "subtitle", childs); + var updated = fetch("updated", childs); + if (updated) { + feed.updated = new Date(updated); + } + addConditionally(feed, "author", "email", childs, true); + return feed; +} +/** + * Parse a RSS feed. + * + * @param feedRoot The root of the feed. + * @returns The parsed feed. + */ +function getRssFeed(feedRoot) { + var _a, _b; + var childs = (_b = (_a = getOneElement("channel", feedRoot.children)) === null || _a === void 0 ? void 0 : _a.children) !== null && _b !== void 0 ? _b : []; + var feed = { + type: feedRoot.name.substr(0, 3), + id: "", + items: (0, require$$4.getElementsByTagName)("item", feedRoot.children).map(function (item) { + var children = item.children; + var entry = { media: getMediaElements(children) }; + addConditionally(entry, "id", "guid", children); + addConditionally(entry, "title", "title", children); + addConditionally(entry, "link", "link", children); + addConditionally(entry, "description", "description", children); + var pubDate = fetch("pubDate", children) || fetch("dc:date", children); + if (pubDate) + entry.pubDate = new Date(pubDate); + return entry; + }), + }; + addConditionally(feed, "title", "title", childs); + addConditionally(feed, "link", "link", childs); + addConditionally(feed, "description", "description", childs); + var updated = fetch("lastBuildDate", childs); + if (updated) { + feed.updated = new Date(updated); + } + addConditionally(feed, "author", "managingEditor", childs, true); + return feed; +} +var MEDIA_KEYS_STRING = ["url", "type", "lang"]; +var MEDIA_KEYS_INT = [ + "fileSize", + "bitrate", + "framerate", + "samplingrate", + "channels", + "duration", + "height", + "width", +]; +/** + * Get all media elements of a feed item. + * + * @param where Nodes to search in. + * @returns Media elements. + */ +function getMediaElements(where) { + return (0, require$$4.getElementsByTagName)("media:content", where).map(function (elem) { + var attribs = elem.attribs; + var media = { + medium: attribs["medium"], + isDefault: !!attribs["isDefault"], + }; + for (var _i = 0, MEDIA_KEYS_STRING_1 = MEDIA_KEYS_STRING; _i < MEDIA_KEYS_STRING_1.length; _i++) { + var attrib = MEDIA_KEYS_STRING_1[_i]; + if (attribs[attrib]) { + media[attrib] = attribs[attrib]; + } + } + for (var _a = 0, MEDIA_KEYS_INT_1 = MEDIA_KEYS_INT; _a < MEDIA_KEYS_INT_1.length; _a++) { + var attrib = MEDIA_KEYS_INT_1[_a]; + if (attribs[attrib]) { + media[attrib] = parseInt(attribs[attrib], 10); + } + } + if (attribs["expression"]) { + media.expression = attribs["expression"]; + } + return media; + }); +} +/** + * Get one element by tag name. + * + * @param tagName Tag name to look for + * @param node Node to search in + * @returns The element or null + */ +function getOneElement(tagName, node) { + return (0, require$$4.getElementsByTagName)(tagName, node, true, 1)[0]; +} +/** + * Get the text content of an element with a certain tag name. + * + * @param tagName Tag name to look for. + * @param where Node to search in. + * @param recurse Whether to recurse into child nodes. + * @returns The text content of the element. + */ +function fetch(tagName, where, recurse) { + if (recurse === void 0) { recurse = false; } + return (0, require$$0$2.textContent)((0, require$$4.getElementsByTagName)(tagName, where, recurse, 1)).trim(); +} +/** + * Adds a property to an object if it has a value. + * + * @param obj Object to be extended + * @param prop Property name + * @param tagName Tag name that contains the conditionally added property + * @param where Element to search for the property + * @param recurse Whether to recurse into child nodes. + */ +function addConditionally(obj, prop, tagName, where, recurse) { + if (recurse === void 0) { recurse = false; } + var val = fetch(tagName, where, recurse); + if (val) + obj[prop] = val; +} +/** + * Checks if an element is a feed root node. + * + * @param value The name of the element to check. + * @returns Whether an element is a feed root node. + */ +function isValidFeed(value) { + return value === "rss" || value === "feed" || value === "rdf:RDF"; +} + +}); + +var require$$1 = traversal; + +var require$$2 = manipulation$1; + +var require$$5 = helpers$1; + +var require$$6 = feeds; + +var lib$5 = createCommonjsModule(function (module, exports) { +var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hasChildren = exports.isDocument = exports.isComment = exports.isText = exports.isCDATA = exports.isTag = void 0; +__exportStar(require$$0$2, exports); +__exportStar(require$$1, exports); +__exportStar(require$$2, exports); +__exportStar(require$$3, exports); +__exportStar(require$$4, exports); +__exportStar(require$$5, exports); +__exportStar(require$$6, exports); +/** @deprecated Use these methods from `domhandler` directly. */ + +Object.defineProperty(exports, "isTag", { enumerable: true, get: function () { return domhandler_1.isTag; } }); +Object.defineProperty(exports, "isCDATA", { enumerable: true, get: function () { return domhandler_1.isCDATA; } }); +Object.defineProperty(exports, "isText", { enumerable: true, get: function () { return domhandler_1.isText; } }); +Object.defineProperty(exports, "isComment", { enumerable: true, get: function () { return domhandler_1.isComment; } }); +Object.defineProperty(exports, "isDocument", { enumerable: true, get: function () { return domhandler_1.isDocument; } }); +Object.defineProperty(exports, "hasChildren", { enumerable: true, get: function () { return domhandler_1.hasChildren; } }); + +}); + +var domutils_1 = lib$5; + +var _static = createCommonjsModule(function (module, exports) { +var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.merge = exports.contains = exports.root = exports.parseHTML = exports.text = exports.xml = exports.html = void 0; + +var options_js_1 = __importStar(options); +/** + * Helper function to render a DOM. + * + * @param that - Cheerio instance to render. + * @param dom - The DOM to render. Defaults to `that`'s root. + * @param options - Options for rendering. + * @returns The rendered document. + */ +function render(that, dom, options) { + if (!that) + return ''; + return that(dom !== null && dom !== void 0 ? dom : that._root.children, null, undefined, options).toString(); +} +/** + * Checks if a passed object is an options object. + * + * @param dom - Object to check if it is an options object. + * @returns Whether the object is an options object. + */ +function isOptions(dom, options) { + return (!options && + typeof dom === 'object' && + dom != null && + !('length' in dom) && + !('type' in dom)); +} +function html(dom, options) { + /* + * Be flexible about parameters, sometimes we call html(), + * with options as only parameter + * check dom argument for dom element specific properties + * assume there is no 'length' or 'type' properties in the options object + */ + var toRender = isOptions(dom) ? ((options = dom), undefined) : dom; + /* + * Sometimes `$.html()` is used without preloading html, + * so fallback non-existing options to the default ones. + */ + var opts = __assign(__assign(__assign({}, options_js_1.default), this === null || this === void 0 ? void 0 : this._options), (0, options_js_1.flatten)(options !== null && options !== void 0 ? options : {})); + return render(this, toRender, opts); +} +exports.html = html; +/** + * Render the document as XML. + * + * @param dom - Element to render. + * @returns THe rendered document. + */ +function xml(dom) { + var options = __assign(__assign({}, this._options), { xmlMode: true }); + return render(this, dom, options); +} +exports.xml = xml; +/** + * Render the document as text. + * + * This returns the `textContent` of the passed elements. The result will + * include the contents of `script` and `stype` elements. To avoid this, use + * `.prop('innerText')` instead. + * + * @param elements - Elements to render. + * @returns The rendered document. + */ +function text(elements) { + var elems = elements ? elements : this ? this.root() : []; + var ret = ''; + for (var i = 0; i < elems.length; i++) { + ret += (0, domutils_1.textContent)(elems[i]); + } + return ret; +} +exports.text = text; +function parseHTML(data, context, keepScripts) { + if (keepScripts === void 0) { keepScripts = typeof context === 'boolean' ? context : false; } + if (!data || typeof data !== 'string') { + return null; + } + if (typeof context === 'boolean') { + keepScripts = context; + } + var parsed = this.load(data, options_js_1.default, false); + if (!keepScripts) { + parsed('script').remove(); + } + /* + * The `children` array is used by Cheerio internally to group elements that + * share the same parents. When nodes created through `parseHTML` are + * inserted into previously-existing DOM structures, they will be removed + * from the `children` array. The results of `parseHTML` should remain + * constant across these operations, so a shallow copy should be returned. + */ + return parsed.root()[0].children.slice(); +} +exports.parseHTML = parseHTML; +/** + * Sometimes you need to work with the top-level root element. To query it, you + * can use `$.root()`. + * + * @example + * + * ```js + * $.root().append('<ul id="vegetables"></ul>').html(); + * //=> <ul id="fruits">...</ul><ul id="vegetables"></ul> + * ``` + * + * @returns Cheerio instance wrapping the root node. + * @alias Cheerio.root + */ +function root() { + return this(this._root); +} +exports.root = root; +/** + * Checks to see if the `contained` DOM element is a descendant of the + * `container` DOM element. + * + * @param container - Potential parent node. + * @param contained - Potential child node. + * @returns Indicates if the nodes contain one another. + * @alias Cheerio.contains + * @see {@link https://api.jquery.com/jQuery.contains/} + */ +function contains(container, contained) { + // According to the jQuery API, an element does not "contain" itself + if (contained === container) { + return false; + } + /* + * Step up the descendants, stopping when the root element is reached + * (signaled by `.parent` returning a reference to the same object) + */ + var next = contained; + while (next && next !== next.parent) { + next = next.parent; + if (next === container) { + return true; + } + } + return false; +} +exports.contains = contains; +/** + * $.merge(). + * + * @param arr1 - First array. + * @param arr2 - Second array. + * @returns `arr1`, with elements of `arr2` inserted. + * @alias Cheerio.merge + * @see {@link https://api.jquery.com/jQuery.merge/} + */ +function merge(arr1, arr2) { + if (!isArrayLike(arr1) || !isArrayLike(arr2)) { + return; + } + var newLength = arr1.length; + var len = +arr2.length; + for (var i = 0; i < len; i++) { + arr1[newLength++] = arr2[i]; + } + arr1.length = newLength; + return arr1; +} +exports.merge = merge; +/** + * Checks if an object is array-like. + * + * @param item - Item to check. + * @returns Indicates if the item is array-like. + */ +function isArrayLike(item) { + if (Array.isArray(item)) { + return true; + } + if (typeof item !== 'object' || + !Object.prototype.hasOwnProperty.call(item, 'length') || + typeof item.length !== 'number' || + item.length < 0) { + return false; + } + for (var i = 0; i < item.length; i++) { + if (!(i in item)) { + return false; + } + } + return true; +} + +}); + +var utils = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isHtml = exports.cloneDom = exports.domEach = exports.cssCase = exports.camelCase = exports.isCheerio = exports.isTag = void 0; + +/** + * Check if the DOM element is a tag. + * + * `isTag(type)` includes `<script>` and `<style>` tags. + * + * @private + * @category Utils + * @param type - The DOM node to check. + * @returns Whether the node is a tag. + */ +var domhandler_2 = domhandler_1; +Object.defineProperty(exports, "isTag", { enumerable: true, get: function () { return domhandler_2.isTag; } }); +/** + * Checks if an object is a Cheerio instance. + * + * @category Utils + * @param maybeCheerio - The object to check. + * @returns Whether the object is a Cheerio instance. + */ +function isCheerio(maybeCheerio) { + return maybeCheerio.cheerio != null; +} +exports.isCheerio = isCheerio; +/** + * Convert a string to camel case notation. + * + * @private + * @category Utils + * @param str - The string to be converted. + * @returns String in camel case notation. + */ +function camelCase(str) { + return str.replace(/[_.-](\w|$)/g, function (_, x) { return x.toUpperCase(); }); +} +exports.camelCase = camelCase; +/** + * Convert a string from camel case to "CSS case", where word boundaries are + * described by hyphens ("-") and all characters are lower-case. + * + * @private + * @category Utils + * @param str - The string to be converted. + * @returns String in "CSS case". + */ +function cssCase(str) { + return str.replace(/[A-Z]/g, '-$&').toLowerCase(); +} +exports.cssCase = cssCase; +/** + * Iterate over each DOM element without creating intermediary Cheerio instances. + * + * This is indented for use internally to avoid otherwise unnecessary memory + * pressure introduced by _make. + * + * @category Utils + * @param array - The array to iterate over. + * @param fn - Function to call. + * @returns The original instance. + */ +function domEach(array, fn) { + var len = array.length; + for (var i = 0; i < len; i++) + fn(array[i], i); + return array; +} +exports.domEach = domEach; +/** + * Create a deep copy of the given DOM structure. Sets the parents of the copies + * of the passed nodes to `null`. + * + * @private + * @category Utils + * @param dom - The domhandler-compliant DOM structure. + * @returns - The cloned DOM. + */ +function cloneDom(dom) { + var clone = 'length' in dom + ? Array.prototype.map.call(dom, function (el) { return (0, domhandler_1.cloneNode)(el, true); }) + : [(0, domhandler_1.cloneNode)(dom, true)]; + // Add a root node around the cloned nodes + var root = new domhandler_1.Document(clone); + clone.forEach(function (node) { + node.parent = root; + }); + return clone; +} +exports.cloneDom = cloneDom; +var CharacterCodes; +(function (CharacterCodes) { + CharacterCodes[CharacterCodes["LowerA"] = 97] = "LowerA"; + CharacterCodes[CharacterCodes["LowerZ"] = 122] = "LowerZ"; + CharacterCodes[CharacterCodes["UpperA"] = 65] = "UpperA"; + CharacterCodes[CharacterCodes["UpperZ"] = 90] = "UpperZ"; + CharacterCodes[CharacterCodes["Exclamation"] = 33] = "Exclamation"; +})(CharacterCodes || (CharacterCodes = {})); +/** + * Check if string is HTML. + * + * Tests for a `<` within a string, immediate followed by a letter and + * eventually followed by a `>`. + * + * @private + * @category Utils + * @param str - The string to check. + * @returns Indicates if `str` is HTML. + */ +function isHtml(str) { + var tagStart = str.indexOf('<'); + if (tagStart < 0 || tagStart > str.length - 3) + return false; + var tagChar = str.charCodeAt(tagStart + 1); + return (((tagChar >= CharacterCodes.LowerA && tagChar <= CharacterCodes.LowerZ) || + (tagChar >= CharacterCodes.UpperA && tagChar <= CharacterCodes.UpperZ) || + tagChar === CharacterCodes.Exclamation) && + str.includes('>', tagStart + 2)); +} +exports.isHtml = isHtml; + +}); + +var attributes$1 = createCommonjsModule(function (module, exports) { +/** + * Methods for getting and modifying attributes. + * + * @module cheerio/attributes + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.toggleClass = exports.removeClass = exports.addClass = exports.hasClass = exports.removeAttr = exports.val = exports.data = exports.prop = exports.attr = void 0; + + + +var hasOwn = Object.prototype.hasOwnProperty; +var rspace = /\s+/; +var dataAttrPrefix = 'data-'; +/* + * Lookup table for coercing string data-* attributes to their corresponding + * JavaScript primitives + */ +var primitives = { + null: null, + true: true, + false: false, +}; +// Attributes that are booleans +var rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i; +// Matches strings that look like JSON objects or arrays +var rbrace = /^{[^]*}$|^\[[^]*]$/; +function getAttr(elem, name, xmlMode) { + var _a; + if (!elem || !(0, utils.isTag)(elem)) + return undefined; + (_a = elem.attribs) !== null && _a !== void 0 ? _a : (elem.attribs = {}); + // Return the entire attribs object if no attribute specified + if (!name) { + return elem.attribs; + } + if (hasOwn.call(elem.attribs, name)) { + // Get the (decoded) attribute + return !xmlMode && rboolean.test(name) ? name : elem.attribs[name]; + } + // Mimic the DOM and return text content as value for `option's` + if (elem.name === 'option' && name === 'value') { + return (0, _static.text)(elem.children); + } + // Mimic DOM with default value for radios/checkboxes + if (elem.name === 'input' && + (elem.attribs['type'] === 'radio' || elem.attribs['type'] === 'checkbox') && + name === 'value') { + return 'on'; + } + return undefined; +} +/** + * Sets the value of an attribute. The attribute will be deleted if the value is `null`. + * + * @private + * @param el - The element to set the attribute on. + * @param name - The attribute's name. + * @param value - The attribute's value. + */ +function setAttr(el, name, value) { + if (value === null) { + removeAttribute(el, name); + } + else { + el.attribs[name] = "".concat(value); + } +} +function attr(name, value) { + // Set the value (with attr map support) + if (typeof name === 'object' || value !== undefined) { + if (typeof value === 'function') { + if (typeof name !== 'string') { + { + throw new Error('Bad combination of arguments.'); + } + } + return (0, utils.domEach)(this, function (el, i) { + if ((0, utils.isTag)(el)) + setAttr(el, name, value.call(el, i, el.attribs[name])); + }); + } + return (0, utils.domEach)(this, function (el) { + if (!(0, utils.isTag)(el)) + return; + if (typeof name === 'object') { + Object.keys(name).forEach(function (objName) { + var objValue = name[objName]; + setAttr(el, objName, objValue); + }); + } + else { + setAttr(el, name, value); + } + }); + } + return arguments.length > 1 + ? this + : getAttr(this[0], name, this.options.xmlMode); +} +exports.attr = attr; +/** + * Gets a node's prop. + * + * @private + * @category Attributes + * @param el - Element to get the prop of. + * @param name - Name of the prop. + * @returns The prop's value. + */ +function getProp(el, name, xmlMode) { + if (!el || !(0, utils.isTag)(el)) + return; + return name in el + ? // @ts-expect-error TS doesn't like us accessing the value directly here. + el[name] + : !xmlMode && rboolean.test(name) + ? getAttr(el, name, false) !== undefined + : getAttr(el, name, xmlMode); +} +/** + * Sets the value of a prop. + * + * @private + * @param el - The element to set the prop on. + * @param name - The prop's name. + * @param value - The prop's value. + */ +function setProp(el, name, value, xmlMode) { + if (name in el) { + // @ts-expect-error Overriding value + el[name] = value; + } + else { + setAttr(el, name, !xmlMode && rboolean.test(name) ? (value ? '' : null) : "".concat(value)); + } +} +function prop(name, value) { + var _this = this; + var _a; + if (typeof name === 'string' && value === undefined) { + switch (name) { + case 'style': { + var property_1 = this.css(); + var keys = Object.keys(property_1); + keys.forEach(function (p, i) { + property_1[i] = p; + }); + property_1.length = keys.length; + return property_1; + } + case 'tagName': + case 'nodeName': { + var el = this[0]; + return (0, utils.isTag)(el) ? el.name.toUpperCase() : undefined; + } + case 'href': + case 'src': { + var el = this[0]; + if (!(0, utils.isTag)(el)) { + return undefined; + } + var prop_1 = (_a = el.attribs) === null || _a === void 0 ? void 0 : _a[name]; + /* eslint-disable node/no-unsupported-features/node-builtins */ + if (typeof URL !== 'undefined' && + ((name === 'href' && (el.tagName === 'a' || el.name === 'link')) || + (name === 'src' && + (el.tagName === 'img' || + el.tagName === 'iframe' || + el.tagName === 'audio' || + el.tagName === 'video' || + el.tagName === 'source'))) && + prop_1 !== undefined && + this.options.baseURI) { + return new URL(prop_1, this.options.baseURI).href; + } + /* eslint-enable node/no-unsupported-features/node-builtins */ + return prop_1; + } + case 'innerText': + return (0, domutils_1.innerText)(this[0]); + case 'textContent': + return (0, domutils_1.textContent)(this[0]); + case 'outerHTML': + return this.clone().wrap('<container />').parent().html(); + case 'innerHTML': + return this.html(); + default: + return getProp(this[0], name, this.options.xmlMode); + } + } + if (typeof name === 'object' || value !== undefined) { + if (typeof value === 'function') { + if (typeof name === 'object') { + throw new Error('Bad combination of arguments.'); + } + return (0, utils.domEach)(this, function (el, i) { + if ((0, utils.isTag)(el)) { + setProp(el, name, value.call(el, i, getProp(el, name, _this.options.xmlMode)), _this.options.xmlMode); + } + }); + } + return (0, utils.domEach)(this, function (el) { + if (!(0, utils.isTag)(el)) + return; + if (typeof name === 'object') { + Object.keys(name).forEach(function (key) { + var val = name[key]; + setProp(el, key, val, _this.options.xmlMode); + }); + } + else { + setProp(el, name, value, _this.options.xmlMode); + } + }); + } + return undefined; +} +exports.prop = prop; +/** + * Sets the value of a data attribute. + * + * @private + * @param el - The element to set the data attribute on. + * @param name - The data attribute's name. + * @param value - The data attribute's value. + */ +function setData(el, name, value) { + var _a; + var elem = el; + (_a = elem.data) !== null && _a !== void 0 ? _a : (elem.data = {}); + if (typeof name === 'object') + Object.assign(elem.data, name); + else if (typeof name === 'string' && value !== undefined) { + elem.data[name] = value; + } +} +/** + * Read the specified attribute from the equivalent HTML5 `data-*` attribute, + * and (if present) cache the value in the node's internal data store. If no + * attribute name is specified, read _all_ HTML5 `data-*` attributes in this manner. + * + * @private + * @category Attributes + * @param el - Element to get the data attribute of. + * @param name - Name of the data attribute. + * @returns The data attribute's value, or a map with all of the data attributes. + */ +function readData(el, name) { + var domNames; + var jsNames; + var value; + if (name == null) { + domNames = Object.keys(el.attribs).filter(function (attrName) { + return attrName.startsWith(dataAttrPrefix); + }); + jsNames = domNames.map(function (domName) { + return (0, utils.camelCase)(domName.slice(dataAttrPrefix.length)); + }); + } + else { + domNames = [dataAttrPrefix + (0, utils.cssCase)(name)]; + jsNames = [name]; + } + for (var idx = 0; idx < domNames.length; ++idx) { + var domName = domNames[idx]; + var jsName = jsNames[idx]; + if (hasOwn.call(el.attribs, domName) && + !hasOwn.call(el.data, jsName)) { + value = el.attribs[domName]; + if (hasOwn.call(primitives, value)) { + value = primitives[value]; + } + else if (value === String(Number(value))) { + value = Number(value); + } + else if (rbrace.test(value)) { + try { + value = JSON.parse(value); + } + catch (e) { + /* Ignore */ + } + } + el.data[jsName] = value; + } + } + return name == null ? el.data : value; +} +function data(name, value) { + var _a; + var elem = this[0]; + if (!elem || !(0, utils.isTag)(elem)) + return; + var dataEl = elem; + (_a = dataEl.data) !== null && _a !== void 0 ? _a : (dataEl.data = {}); + // Return the entire data object if no data specified + if (!name) { + return readData(dataEl); + } + // Set the value (with attr map support) + if (typeof name === 'object' || value !== undefined) { + (0, utils.domEach)(this, function (el) { + if ((0, utils.isTag)(el)) { + if (typeof name === 'object') + setData(el, name); + else + setData(el, name, value); + } + }); + return this; + } + if (hasOwn.call(dataEl.data, name)) { + return dataEl.data[name]; + } + return readData(dataEl, name); +} +exports.data = data; +function val(value) { + var querying = arguments.length === 0; + var element = this[0]; + if (!element || !(0, utils.isTag)(element)) + return querying ? undefined : this; + switch (element.name) { + case 'textarea': + return this.text(value); + case 'select': { + var option = this.find('option:selected'); + if (!querying) { + if (this.attr('multiple') == null && typeof value === 'object') { + return this; + } + this.find('option').removeAttr('selected'); + var values = typeof value !== 'object' ? [value] : value; + for (var i = 0; i < values.length; i++) { + this.find("option[value=\"".concat(values[i], "\"]")).attr('selected', ''); + } + return this; + } + return this.attr('multiple') + ? option.toArray().map(function (el) { return (0, _static.text)(el.children); }) + : option.attr('value'); + } + case 'input': + case 'option': + return querying + ? this.attr('value') + : this.attr('value', value); + } + return undefined; +} +exports.val = val; +/** + * Remove an attribute. + * + * @private + * @param elem - Node to remove attribute from. + * @param name - Name of the attribute to remove. + */ +function removeAttribute(elem, name) { + if (!elem.attribs || !hasOwn.call(elem.attribs, name)) + return; + delete elem.attribs[name]; +} +/** + * Splits a space-separated list of names to individual names. + * + * @category Attributes + * @param names - Names to split. + * @returns - Split names. + */ +function splitNames(names) { + return names ? names.trim().split(rspace) : []; +} +/** + * Method for removing attributes by `name`. + * + * @category Attributes + * @example + * + * ```js + * $('.pear').removeAttr('class').html(); + * //=> <li>Pear</li> + * + * $('.apple').attr('id', 'favorite'); + * $('.apple').removeAttr('id class').html(); + * //=> <li>Apple</li> + * ``` + * + * @param name - Name of the attribute. + * @returns The instance itself. + * @see {@link https://api.jquery.com/removeAttr/} + */ +function removeAttr(name) { + var attrNames = splitNames(name); + var _loop_1 = function (i) { + (0, utils.domEach)(this_1, function (elem) { + if ((0, utils.isTag)(elem)) + removeAttribute(elem, attrNames[i]); + }); + }; + var this_1 = this; + for (var i = 0; i < attrNames.length; i++) { + _loop_1(i); + } + return this; +} +exports.removeAttr = removeAttr; +/** + * Check to see if _any_ of the matched elements have the given `className`. + * + * @category Attributes + * @example + * + * ```js + * $('.pear').hasClass('pear'); + * //=> true + * + * $('apple').hasClass('fruit'); + * //=> false + * + * $('li').hasClass('pear'); + * //=> true + * ``` + * + * @param className - Name of the class. + * @returns Indicates if an element has the given `className`. + * @see {@link https://api.jquery.com/hasClass/} + */ +function hasClass(className) { + return this.toArray().some(function (elem) { + var clazz = (0, utils.isTag)(elem) && elem.attribs['class']; + var idx = -1; + if (clazz && className.length) { + while ((idx = clazz.indexOf(className, idx + 1)) > -1) { + var end = idx + className.length; + if ((idx === 0 || rspace.test(clazz[idx - 1])) && + (end === clazz.length || rspace.test(clazz[end]))) { + return true; + } + } + } + return false; + }); +} +exports.hasClass = hasClass; +/** + * Adds class(es) to all of the matched elements. Also accepts a `function`. + * + * @category Attributes + * @example + * + * ```js + * $('.pear').addClass('fruit').html(); + * //=> <li class="pear fruit">Pear</li> + * + * $('.apple').addClass('fruit red').html(); + * //=> <li class="apple fruit red">Apple</li> + * ``` + * + * @param value - Name of new class. + * @returns The instance itself. + * @see {@link https://api.jquery.com/addClass/} + */ +function addClass(value) { + // Support functions + if (typeof value === 'function') { + return (0, utils.domEach)(this, function (el, i) { + if ((0, utils.isTag)(el)) { + var className = el.attribs['class'] || ''; + addClass.call([el], value.call(el, i, className)); + } + }); + } + // Return if no value or not a string or function + if (!value || typeof value !== 'string') + return this; + var classNames = value.split(rspace); + var numElements = this.length; + for (var i = 0; i < numElements; i++) { + var el = this[i]; + // If selected element isn't a tag, move on + if (!(0, utils.isTag)(el)) + continue; + // If we don't already have classes — always set xmlMode to false here, as it doesn't matter for classes + var className = getAttr(el, 'class', false); + if (!className) { + setAttr(el, 'class', classNames.join(' ').trim()); + } + else { + var setClass = " ".concat(className, " "); + // Check if class already exists + for (var j = 0; j < classNames.length; j++) { + var appendClass = "".concat(classNames[j], " "); + if (!setClass.includes(" ".concat(appendClass))) + setClass += appendClass; + } + setAttr(el, 'class', setClass.trim()); + } + } + return this; +} +exports.addClass = addClass; +/** + * Removes one or more space-separated classes from the selected elements. If no + * `className` is defined, all classes will be removed. Also accepts a `function`. + * + * @category Attributes + * @example + * + * ```js + * $('.pear').removeClass('pear').html(); + * //=> <li class="">Pear</li> + * + * $('.apple').addClass('red').removeClass().html(); + * //=> <li class="">Apple</li> + * ``` + * + * @param name - Name of the class. If not specified, removes all elements. + * @returns The instance itself. + * @see {@link https://api.jquery.com/removeClass/} + */ +function removeClass(name) { + // Handle if value is a function + if (typeof name === 'function') { + return (0, utils.domEach)(this, function (el, i) { + if ((0, utils.isTag)(el)) { + removeClass.call([el], name.call(el, i, el.attribs['class'] || '')); + } + }); + } + var classes = splitNames(name); + var numClasses = classes.length; + var removeAll = arguments.length === 0; + return (0, utils.domEach)(this, function (el) { + if (!(0, utils.isTag)(el)) + return; + if (removeAll) { + // Short circuit the remove all case as this is the nice one + el.attribs['class'] = ''; + } + else { + var elClasses = splitNames(el.attribs['class']); + var changed = false; + for (var j = 0; j < numClasses; j++) { + var index = elClasses.indexOf(classes[j]); + if (index >= 0) { + elClasses.splice(index, 1); + changed = true; + /* + * We have to do another pass to ensure that there are not duplicate + * classes listed + */ + j--; + } + } + if (changed) { + el.attribs['class'] = elClasses.join(' '); + } + } + }); +} +exports.removeClass = removeClass; +/** + * Add or remove class(es) from the matched elements, depending on either the + * class's presence or the value of the switch argument. Also accepts a `function`. + * + * @category Attributes + * @example + * + * ```js + * $('.apple.green').toggleClass('fruit green red').html(); + * //=> <li class="apple fruit red">Apple</li> + * + * $('.apple.green').toggleClass('fruit green red', true).html(); + * //=> <li class="apple green fruit red">Apple</li> + * ``` + * + * @param value - Name of the class. Can also be a function. + * @param stateVal - If specified the state of the class. + * @returns The instance itself. + * @see {@link https://api.jquery.com/toggleClass/} + */ +function toggleClass(value, stateVal) { + // Support functions + if (typeof value === 'function') { + return (0, utils.domEach)(this, function (el, i) { + if ((0, utils.isTag)(el)) { + toggleClass.call([el], value.call(el, i, el.attribs['class'] || '', stateVal), stateVal); + } + }); + } + // Return if no value or not a string or function + if (!value || typeof value !== 'string') + return this; + var classNames = value.split(rspace); + var numClasses = classNames.length; + var state = typeof stateVal === 'boolean' ? (stateVal ? 1 : -1) : 0; + var numElements = this.length; + for (var i = 0; i < numElements; i++) { + var el = this[i]; + // If selected element isn't a tag, move on + if (!(0, utils.isTag)(el)) + continue; + var elementClasses = splitNames(el.attribs['class']); + // Check if class already exists + for (var j = 0; j < numClasses; j++) { + // Check if the class name is currently defined + var index = elementClasses.indexOf(classNames[j]); + // Add if stateValue === true or we are toggling and there is no value + if (state >= 0 && index < 0) { + elementClasses.push(classNames[j]); + } + else if (state <= 0 && index >= 0) { + // Otherwise remove but only if the item exists + elementClasses.splice(index, 1); + } + } + el.attribs['class'] = elementClasses.join(' '); + } + return this; +} +exports.toggleClass = toggleClass; + +}); + +var SelectorType; +(function (SelectorType) { + SelectorType["Attribute"] = "attribute"; + SelectorType["Pseudo"] = "pseudo"; + SelectorType["PseudoElement"] = "pseudo-element"; + SelectorType["Tag"] = "tag"; + SelectorType["Universal"] = "universal"; + // Traversals + SelectorType["Adjacent"] = "adjacent"; + SelectorType["Child"] = "child"; + SelectorType["Descendant"] = "descendant"; + SelectorType["Parent"] = "parent"; + SelectorType["Sibling"] = "sibling"; + SelectorType["ColumnCombinator"] = "column-combinator"; +})(SelectorType || (SelectorType = {})); +/** + * Modes for ignore case. + * + * This could be updated to an enum, and the object is + * the current stand-in that will allow code to be updated + * without big changes. + */ +const IgnoreCaseMode = { + Unknown: null, + QuirksMode: "quirks", + IgnoreCase: true, + CaseSensitive: false, +}; +var AttributeAction; +(function (AttributeAction) { + AttributeAction["Any"] = "any"; + AttributeAction["Element"] = "element"; + AttributeAction["End"] = "end"; + AttributeAction["Equals"] = "equals"; + AttributeAction["Exists"] = "exists"; + AttributeAction["Hyphen"] = "hyphen"; + AttributeAction["Not"] = "not"; + AttributeAction["Start"] = "start"; +})(AttributeAction || (AttributeAction = {})); + +const reName = /^[^\\#]?(?:\\(?:[\da-f]{1,6}\s?|.)|[\w\-\u00b0-\uFFFF])+/; +const reEscape = /\\([\da-f]{1,6}\s?|(\s)|.)/gi; +const actionTypes = new Map([ + [126 /* Tilde */, AttributeAction.Element], + [94 /* Circumflex */, AttributeAction.Start], + [36 /* Dollar */, AttributeAction.End], + [42 /* Asterisk */, AttributeAction.Any], + [33 /* ExclamationMark */, AttributeAction.Not], + [124 /* Pipe */, AttributeAction.Hyphen], +]); +// Pseudos, whose data property is parsed as well. +const unpackPseudos = new Set([ + "has", + "not", + "matches", + "is", + "where", + "host", + "host-context", +]); +/** + * Checks whether a specific selector is a traversal. + * This is useful eg. in swapping the order of elements that + * are not traversals. + * + * @param selector Selector to check. + */ +function isTraversal(selector) { + switch (selector.type) { + case SelectorType.Adjacent: + case SelectorType.Child: + case SelectorType.Descendant: + case SelectorType.Parent: + case SelectorType.Sibling: + case SelectorType.ColumnCombinator: + return true; + default: + return false; + } +} +const stripQuotesFromPseudos = new Set(["contains", "icontains"]); +// Unescape function taken from https://github.com/jquery/sizzle/blob/master/src/sizzle.js#L152 +function funescape(_, escaped, escapedWhitespace) { + const high = parseInt(escaped, 16) - 0x10000; + // NaN means non-codepoint + return high !== high || escapedWhitespace + ? escaped + : high < 0 + ? // BMP codepoint + String.fromCharCode(high + 0x10000) + : // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode((high >> 10) | 0xd800, (high & 0x3ff) | 0xdc00); +} +function unescapeCSS(str) { + return str.replace(reEscape, funescape); +} +function isQuote(c) { + return c === 39 /* SingleQuote */ || c === 34 /* DoubleQuote */; +} +function isWhitespace(c) { + return (c === 32 /* Space */ || + c === 9 /* Tab */ || + c === 10 /* NewLine */ || + c === 12 /* FormFeed */ || + c === 13 /* CarriageReturn */); +} +/** + * Parses `selector`, optionally with the passed `options`. + * + * @param selector Selector to parse. + * @param options Options for parsing. + * @returns Returns a two-dimensional array. + * The first dimension represents selectors separated by commas (eg. `sub1, sub2`), + * the second contains the relevant tokens for that selector. + */ +function parse$1(selector) { + const subselects = []; + const endIndex = parseSelector(subselects, `${selector}`, 0); + if (endIndex < selector.length) { + throw new Error(`Unmatched selector: ${selector.slice(endIndex)}`); + } + return subselects; +} +function parseSelector(subselects, selector, selectorIndex) { + let tokens = []; + function getName(offset) { + const match = selector.slice(selectorIndex + offset).match(reName); + if (!match) { + throw new Error(`Expected name, found ${selector.slice(selectorIndex)}`); + } + const [name] = match; + selectorIndex += offset + name.length; + return unescapeCSS(name); + } + function stripWhitespace(offset) { + selectorIndex += offset; + while (selectorIndex < selector.length && + isWhitespace(selector.charCodeAt(selectorIndex))) { + selectorIndex++; + } + } + function readValueWithParenthesis() { + selectorIndex += 1; + const start = selectorIndex; + let counter = 1; + for (; counter > 0 && selectorIndex < selector.length; selectorIndex++) { + if (selector.charCodeAt(selectorIndex) === + 40 /* LeftParenthesis */ && + !isEscaped(selectorIndex)) { + counter++; + } + else if (selector.charCodeAt(selectorIndex) === + 41 /* RightParenthesis */ && + !isEscaped(selectorIndex)) { + counter--; + } + } + if (counter) { + throw new Error("Parenthesis not matched"); + } + return unescapeCSS(selector.slice(start, selectorIndex - 1)); + } + function isEscaped(pos) { + let slashCount = 0; + while (selector.charCodeAt(--pos) === 92 /* BackSlash */) + slashCount++; + return (slashCount & 1) === 1; + } + function ensureNotTraversal() { + if (tokens.length > 0 && isTraversal(tokens[tokens.length - 1])) { + throw new Error("Did not expect successive traversals."); + } + } + function addTraversal(type) { + if (tokens.length > 0 && + tokens[tokens.length - 1].type === SelectorType.Descendant) { + tokens[tokens.length - 1].type = type; + return; + } + ensureNotTraversal(); + tokens.push({ type }); + } + function addSpecialAttribute(name, action) { + tokens.push({ + type: SelectorType.Attribute, + name, + action, + value: getName(1), + namespace: null, + ignoreCase: "quirks", + }); + } + /** + * We have finished parsing the current part of the selector. + * + * Remove descendant tokens at the end if they exist, + * and return the last index, so that parsing can be + * picked up from here. + */ + function finalizeSubselector() { + if (tokens.length && + tokens[tokens.length - 1].type === SelectorType.Descendant) { + tokens.pop(); + } + if (tokens.length === 0) { + throw new Error("Empty sub-selector"); + } + subselects.push(tokens); + } + stripWhitespace(0); + if (selector.length === selectorIndex) { + return selectorIndex; + } + loop: while (selectorIndex < selector.length) { + const firstChar = selector.charCodeAt(selectorIndex); + switch (firstChar) { + // Whitespace + case 32 /* Space */: + case 9 /* Tab */: + case 10 /* NewLine */: + case 12 /* FormFeed */: + case 13 /* CarriageReturn */: { + if (tokens.length === 0 || + tokens[0].type !== SelectorType.Descendant) { + ensureNotTraversal(); + tokens.push({ type: SelectorType.Descendant }); + } + stripWhitespace(1); + break; + } + // Traversals + case 62 /* GreaterThan */: { + addTraversal(SelectorType.Child); + stripWhitespace(1); + break; + } + case 60 /* LessThan */: { + addTraversal(SelectorType.Parent); + stripWhitespace(1); + break; + } + case 126 /* Tilde */: { + addTraversal(SelectorType.Sibling); + stripWhitespace(1); + break; + } + case 43 /* Plus */: { + addTraversal(SelectorType.Adjacent); + stripWhitespace(1); + break; + } + // Special attribute selectors: .class, #id + case 46 /* Period */: { + addSpecialAttribute("class", AttributeAction.Element); + break; + } + case 35 /* Hash */: { + addSpecialAttribute("id", AttributeAction.Equals); + break; + } + case 91 /* LeftSquareBracket */: { + stripWhitespace(1); + // Determine attribute name and namespace + let name; + let namespace = null; + if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */) { + // Equivalent to no namespace + name = getName(1); + } + else if (selector.startsWith("*|", selectorIndex)) { + namespace = "*"; + name = getName(2); + } + else { + name = getName(0); + if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ && + selector.charCodeAt(selectorIndex + 1) !== + 61 /* Equal */) { + namespace = name; + name = getName(1); + } + } + stripWhitespace(0); + // Determine comparison operation + let action = AttributeAction.Exists; + const possibleAction = actionTypes.get(selector.charCodeAt(selectorIndex)); + if (possibleAction) { + action = possibleAction; + if (selector.charCodeAt(selectorIndex + 1) !== + 61 /* Equal */) { + throw new Error("Expected `=`"); + } + stripWhitespace(2); + } + else if (selector.charCodeAt(selectorIndex) === 61 /* Equal */) { + action = AttributeAction.Equals; + stripWhitespace(1); + } + // Determine value + let value = ""; + let ignoreCase = null; + if (action !== "exists") { + if (isQuote(selector.charCodeAt(selectorIndex))) { + const quote = selector.charCodeAt(selectorIndex); + let sectionEnd = selectorIndex + 1; + while (sectionEnd < selector.length && + (selector.charCodeAt(sectionEnd) !== quote || + isEscaped(sectionEnd))) { + sectionEnd += 1; + } + if (selector.charCodeAt(sectionEnd) !== quote) { + throw new Error("Attribute value didn't end"); + } + value = unescapeCSS(selector.slice(selectorIndex + 1, sectionEnd)); + selectorIndex = sectionEnd + 1; + } + else { + const valueStart = selectorIndex; + while (selectorIndex < selector.length && + ((!isWhitespace(selector.charCodeAt(selectorIndex)) && + selector.charCodeAt(selectorIndex) !== + 93 /* RightSquareBracket */) || + isEscaped(selectorIndex))) { + selectorIndex += 1; + } + value = unescapeCSS(selector.slice(valueStart, selectorIndex)); + } + stripWhitespace(0); + // See if we have a force ignore flag + const forceIgnore = selector.charCodeAt(selectorIndex) | 0x20; + // If the forceIgnore flag is set (either `i` or `s`), use that value + if (forceIgnore === 115 /* LowerS */) { + ignoreCase = false; + stripWhitespace(1); + } + else if (forceIgnore === 105 /* LowerI */) { + ignoreCase = true; + stripWhitespace(1); + } + } + if (selector.charCodeAt(selectorIndex) !== + 93 /* RightSquareBracket */) { + throw new Error("Attribute selector didn't terminate"); + } + selectorIndex += 1; + const attributeSelector = { + type: SelectorType.Attribute, + name, + action, + value, + namespace, + ignoreCase, + }; + tokens.push(attributeSelector); + break; + } + case 58 /* Colon */: { + if (selector.charCodeAt(selectorIndex + 1) === 58 /* Colon */) { + tokens.push({ + type: SelectorType.PseudoElement, + name: getName(2).toLowerCase(), + data: selector.charCodeAt(selectorIndex) === + 40 /* LeftParenthesis */ + ? readValueWithParenthesis() + : null, + }); + continue; + } + const name = getName(1).toLowerCase(); + let data = null; + if (selector.charCodeAt(selectorIndex) === + 40 /* LeftParenthesis */) { + if (unpackPseudos.has(name)) { + if (isQuote(selector.charCodeAt(selectorIndex + 1))) { + throw new Error(`Pseudo-selector ${name} cannot be quoted`); + } + data = []; + selectorIndex = parseSelector(data, selector, selectorIndex + 1); + if (selector.charCodeAt(selectorIndex) !== + 41 /* RightParenthesis */) { + throw new Error(`Missing closing parenthesis in :${name} (${selector})`); + } + selectorIndex += 1; + } + else { + data = readValueWithParenthesis(); + if (stripQuotesFromPseudos.has(name)) { + const quot = data.charCodeAt(0); + if (quot === data.charCodeAt(data.length - 1) && + isQuote(quot)) { + data = data.slice(1, -1); + } + } + data = unescapeCSS(data); + } + } + tokens.push({ type: SelectorType.Pseudo, name, data }); + break; + } + case 44 /* Comma */: { + finalizeSubselector(); + tokens = []; + stripWhitespace(1); + break; + } + default: { + if (selector.startsWith("/*", selectorIndex)) { + const endIndex = selector.indexOf("*/", selectorIndex + 2); + if (endIndex < 0) { + throw new Error("Comment was not terminated"); + } + selectorIndex = endIndex + 2; + // Remove leading whitespace + if (tokens.length === 0) { + stripWhitespace(0); + } + break; + } + let namespace = null; + let name; + if (firstChar === 42 /* Asterisk */) { + selectorIndex += 1; + name = "*"; + } + else if (firstChar === 124 /* Pipe */) { + name = ""; + if (selector.charCodeAt(selectorIndex + 1) === 124 /* Pipe */) { + addTraversal(SelectorType.ColumnCombinator); + stripWhitespace(2); + break; + } + } + else if (reName.test(selector.slice(selectorIndex))) { + name = getName(0); + } + else { + break loop; + } + if (selector.charCodeAt(selectorIndex) === 124 /* Pipe */ && + selector.charCodeAt(selectorIndex + 1) !== 124 /* Pipe */) { + namespace = name; + if (selector.charCodeAt(selectorIndex + 1) === + 42 /* Asterisk */) { + name = "*"; + selectorIndex += 2; + } + else { + name = getName(1); + } + } + tokens.push(name === "*" + ? { type: SelectorType.Universal, namespace } + : { type: SelectorType.Tag, name, namespace }); + } + } + } + finalizeSubselector(); + return selectorIndex; +} + +const attribValChars = ["\\", '"']; +const pseudoValChars = [...attribValChars, "(", ")"]; +const charsToEscapeInAttributeValue = new Set(attribValChars.map((c) => c.charCodeAt(0))); +const charsToEscapeInPseudoValue = new Set(pseudoValChars.map((c) => c.charCodeAt(0))); +const charsToEscapeInName = new Set([ + ...pseudoValChars, + "~", + "^", + "$", + "*", + "+", + "!", + "|", + ":", + "[", + "]", + " ", + ".", +].map((c) => c.charCodeAt(0))); +/** + * Turns `selector` back into a string. + * + * @param selector Selector to stringify. + */ +function stringify(selector) { + return selector + .map((token) => token.map(stringifyToken).join("")) + .join(", "); +} +function stringifyToken(token, index, arr) { + switch (token.type) { + // Simple types + case SelectorType.Child: + return index === 0 ? "> " : " > "; + case SelectorType.Parent: + return index === 0 ? "< " : " < "; + case SelectorType.Sibling: + return index === 0 ? "~ " : " ~ "; + case SelectorType.Adjacent: + return index === 0 ? "+ " : " + "; + case SelectorType.Descendant: + return " "; + case SelectorType.ColumnCombinator: + return index === 0 ? "|| " : " || "; + case SelectorType.Universal: + // Return an empty string if the selector isn't needed. + return token.namespace === "*" && + index + 1 < arr.length && + "name" in arr[index + 1] + ? "" + : `${getNamespace(token.namespace)}*`; + case SelectorType.Tag: + return getNamespacedName(token); + case SelectorType.PseudoElement: + return `::${escapeName(token.name, charsToEscapeInName)}${token.data === null + ? "" + : `(${escapeName(token.data, charsToEscapeInPseudoValue)})`}`; + case SelectorType.Pseudo: + return `:${escapeName(token.name, charsToEscapeInName)}${token.data === null + ? "" + : `(${typeof token.data === "string" + ? escapeName(token.data, charsToEscapeInPseudoValue) + : stringify(token.data)})`}`; + case SelectorType.Attribute: { + if (token.name === "id" && + token.action === AttributeAction.Equals && + token.ignoreCase === "quirks" && + !token.namespace) { + return `#${escapeName(token.value, charsToEscapeInName)}`; + } + if (token.name === "class" && + token.action === AttributeAction.Element && + token.ignoreCase === "quirks" && + !token.namespace) { + return `.${escapeName(token.value, charsToEscapeInName)}`; + } + const name = getNamespacedName(token); + if (token.action === AttributeAction.Exists) { + return `[${name}]`; + } + return `[${name}${getActionValue(token.action)}="${escapeName(token.value, charsToEscapeInAttributeValue)}"${token.ignoreCase === null ? "" : token.ignoreCase ? " i" : " s"}]`; + } + } +} +function getActionValue(action) { + switch (action) { + case AttributeAction.Equals: + return ""; + case AttributeAction.Element: + return "~"; + case AttributeAction.Start: + return "^"; + case AttributeAction.End: + return "$"; + case AttributeAction.Any: + return "*"; + case AttributeAction.Not: + return "!"; + case AttributeAction.Hyphen: + return "|"; + case AttributeAction.Exists: + throw new Error("Shouldn't be here"); + } +} +function getNamespacedName(token) { + return `${getNamespace(token.namespace)}${escapeName(token.name, charsToEscapeInName)}`; +} +function getNamespace(namespace) { + return namespace !== null + ? `${namespace === "*" + ? "*" + : escapeName(namespace, charsToEscapeInName)}|` + : ""; +} +function escapeName(str, charsToEscape) { + let lastIdx = 0; + let ret = ""; + for (let i = 0; i < str.length; i++) { + if (charsToEscape.has(str.charCodeAt(i))) { + ret += `${str.slice(lastIdx, i)}\\${str.charAt(i)}`; + lastIdx = i + 1; + } + } + return ret.length > 0 ? ret + str.slice(lastIdx) : str; +} + +var es = /*#__PURE__*/Object.freeze({ + __proto__: null, + isTraversal: isTraversal, + parse: parse$1, + stringify: stringify, + get SelectorType () { return SelectorType; }, + IgnoreCaseMode: IgnoreCaseMode, + get AttributeAction () { return AttributeAction; } +}); + +var boolbase = { + trueFunc: function trueFunc(){ + return true; + }, + falseFunc: function falseFunc(){ + return false; + } +}; + +var css_what_1 = /*@__PURE__*/getAugmentedNamespace(es); + +var sort = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isTraversal = void 0; + +var procedure = new Map([ + [css_what_1.SelectorType.Universal, 50], + [css_what_1.SelectorType.Tag, 30], + [css_what_1.SelectorType.Attribute, 1], + [css_what_1.SelectorType.Pseudo, 0], +]); +function isTraversal(token) { + return !procedure.has(token.type); +} +exports.isTraversal = isTraversal; +var attributes = new Map([ + [css_what_1.AttributeAction.Exists, 10], + [css_what_1.AttributeAction.Equals, 8], + [css_what_1.AttributeAction.Not, 7], + [css_what_1.AttributeAction.Start, 6], + [css_what_1.AttributeAction.End, 6], + [css_what_1.AttributeAction.Any, 5], +]); +/** + * Sort the parts of the passed selector, + * as there is potential for optimization + * (some types of selectors are faster than others) + * + * @param arr Selector to sort + */ +function sortByProcedure(arr) { + var procs = arr.map(getProcedure); + for (var i = 1; i < arr.length; i++) { + var procNew = procs[i]; + if (procNew < 0) + continue; + for (var j = i - 1; j >= 0 && procNew < procs[j]; j--) { + var token = arr[j + 1]; + arr[j + 1] = arr[j]; + arr[j] = token; + procs[j + 1] = procs[j]; + procs[j] = procNew; + } + } +} +exports.default = sortByProcedure; +function getProcedure(token) { + var _a, _b; + var proc = (_a = procedure.get(token.type)) !== null && _a !== void 0 ? _a : -1; + if (token.type === css_what_1.SelectorType.Attribute) { + proc = (_b = attributes.get(token.action)) !== null && _b !== void 0 ? _b : 4; + if (token.action === css_what_1.AttributeAction.Equals && token.name === "id") { + // Prefer ID selectors (eg. #ID) + proc = 9; + } + if (token.ignoreCase) { + /* + * IgnoreCase adds some overhead, prefer "normal" token + * this is a binary operation, to ensure it's still an int + */ + proc >>= 1; + } + } + else if (token.type === css_what_1.SelectorType.Pseudo) { + if (!token.data) { + proc = 3; + } + else if (token.name === "has" || token.name === "contains") { + proc = 0; // Expensive in any case + } + else if (Array.isArray(token.data)) { + // Eg. :matches, :not + proc = Math.min.apply(Math, token.data.map(function (d) { return Math.min.apply(Math, d.map(getProcedure)); })); + // If we have traversals, try to avoid executing this selector + if (proc < 0) { + proc = 0; + } + } + else { + proc = 2; + } + } + return proc; +} + +}); + +var attributes = createCommonjsModule(function (module, exports) { +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.attributeRules = void 0; +var boolbase_1 = __importDefault(boolbase); +/** + * All reserved characters in a regex, used for escaping. + * + * Taken from XRegExp, (c) 2007-2020 Steven Levithan under the MIT license + * https://github.com/slevithan/xregexp/blob/95eeebeb8fac8754d54eafe2b4743661ac1cf028/src/xregexp.js#L794 + */ +var reChars = /[-[\]{}()*+?.,\\^$|#\s]/g; +function escapeRegex(value) { + return value.replace(reChars, "\\$&"); +} +/** + * Attributes that are case-insensitive in HTML. + * + * @private + * @see https://html.spec.whatwg.org/multipage/semantics-other.html#case-sensitivity-of-selectors + */ +var caseInsensitiveAttributes = new Set([ + "accept", + "accept-charset", + "align", + "alink", + "axis", + "bgcolor", + "charset", + "checked", + "clear", + "codetype", + "color", + "compact", + "declare", + "defer", + "dir", + "direction", + "disabled", + "enctype", + "face", + "frame", + "hreflang", + "http-equiv", + "lang", + "language", + "link", + "media", + "method", + "multiple", + "nohref", + "noresize", + "noshade", + "nowrap", + "readonly", + "rel", + "rev", + "rules", + "scope", + "scrolling", + "selected", + "shape", + "target", + "text", + "type", + "valign", + "valuetype", + "vlink", +]); +function shouldIgnoreCase(selector, options) { + return typeof selector.ignoreCase === "boolean" + ? selector.ignoreCase + : selector.ignoreCase === "quirks" + ? !!options.quirksMode + : !options.xmlMode && caseInsensitiveAttributes.has(selector.name); +} +/** + * Attribute selectors + */ +exports.attributeRules = { + equals: function (next, data, options) { + var adapter = options.adapter; + var name = data.name; + var value = data.value; + if (shouldIgnoreCase(data, options)) { + value = value.toLowerCase(); + return function (elem) { + var attr = adapter.getAttributeValue(elem, name); + return (attr != null && + attr.length === value.length && + attr.toLowerCase() === value && + next(elem)); + }; + } + return function (elem) { + return adapter.getAttributeValue(elem, name) === value && next(elem); + }; + }, + hyphen: function (next, data, options) { + var adapter = options.adapter; + var name = data.name; + var value = data.value; + var len = value.length; + if (shouldIgnoreCase(data, options)) { + value = value.toLowerCase(); + return function hyphenIC(elem) { + var attr = adapter.getAttributeValue(elem, name); + return (attr != null && + (attr.length === len || attr.charAt(len) === "-") && + attr.substr(0, len).toLowerCase() === value && + next(elem)); + }; + } + return function hyphen(elem) { + var attr = adapter.getAttributeValue(elem, name); + return (attr != null && + (attr.length === len || attr.charAt(len) === "-") && + attr.substr(0, len) === value && + next(elem)); + }; + }, + element: function (next, data, options) { + var adapter = options.adapter; + var name = data.name, value = data.value; + if (/\s/.test(value)) { + return boolbase_1.default.falseFunc; + } + var regex = new RegExp("(?:^|\\s)".concat(escapeRegex(value), "(?:$|\\s)"), shouldIgnoreCase(data, options) ? "i" : ""); + return function element(elem) { + var attr = adapter.getAttributeValue(elem, name); + return (attr != null && + attr.length >= value.length && + regex.test(attr) && + next(elem)); + }; + }, + exists: function (next, _a, _b) { + var name = _a.name; + var adapter = _b.adapter; + return function (elem) { return adapter.hasAttrib(elem, name) && next(elem); }; + }, + start: function (next, data, options) { + var adapter = options.adapter; + var name = data.name; + var value = data.value; + var len = value.length; + if (len === 0) { + return boolbase_1.default.falseFunc; + } + if (shouldIgnoreCase(data, options)) { + value = value.toLowerCase(); + return function (elem) { + var attr = adapter.getAttributeValue(elem, name); + return (attr != null && + attr.length >= len && + attr.substr(0, len).toLowerCase() === value && + next(elem)); + }; + } + return function (elem) { + var _a; + return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.startsWith(value)) && + next(elem); + }; + }, + end: function (next, data, options) { + var adapter = options.adapter; + var name = data.name; + var value = data.value; + var len = -value.length; + if (len === 0) { + return boolbase_1.default.falseFunc; + } + if (shouldIgnoreCase(data, options)) { + value = value.toLowerCase(); + return function (elem) { + var _a; + return ((_a = adapter + .getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.substr(len).toLowerCase()) === value && next(elem); + }; + } + return function (elem) { + var _a; + return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.endsWith(value)) && + next(elem); + }; + }, + any: function (next, data, options) { + var adapter = options.adapter; + var name = data.name, value = data.value; + if (value === "") { + return boolbase_1.default.falseFunc; + } + if (shouldIgnoreCase(data, options)) { + var regex_1 = new RegExp(escapeRegex(value), "i"); + return function anyIC(elem) { + var attr = adapter.getAttributeValue(elem, name); + return (attr != null && + attr.length >= value.length && + regex_1.test(attr) && + next(elem)); + }; + } + return function (elem) { + var _a; + return !!((_a = adapter.getAttributeValue(elem, name)) === null || _a === void 0 ? void 0 : _a.includes(value)) && + next(elem); + }; + }, + not: function (next, data, options) { + var adapter = options.adapter; + var name = data.name; + var value = data.value; + if (value === "") { + return function (elem) { + return !!adapter.getAttributeValue(elem, name) && next(elem); + }; + } + else if (shouldIgnoreCase(data, options)) { + value = value.toLowerCase(); + return function (elem) { + var attr = adapter.getAttributeValue(elem, name); + return ((attr == null || + attr.length !== value.length || + attr.toLowerCase() !== value) && + next(elem)); + }; + } + return function (elem) { + return adapter.getAttributeValue(elem, name) !== value && next(elem); + }; + }, +}; + +}); + +var parse_1 = createCommonjsModule(function (module, exports) { +// Following http://www.w3.org/TR/css3-selectors/#nth-child-pseudo +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parse = void 0; +// Whitespace as per https://www.w3.org/TR/selectors-3/#lex is " \t\r\n\f" +var whitespace = new Set([9, 10, 12, 13, 32]); +var ZERO = "0".charCodeAt(0); +var NINE = "9".charCodeAt(0); +/** + * Parses an expression. + * + * @throws An `Error` if parsing fails. + * @returns An array containing the integer step size and the integer offset of the nth rule. + * @example nthCheck.parse("2n+3"); // returns [2, 3] + */ +function parse(formula) { + formula = formula.trim().toLowerCase(); + if (formula === "even") { + return [2, 0]; + } + else if (formula === "odd") { + return [2, 1]; + } + // Parse [ ['-'|'+']? INTEGER? {N} [ S* ['-'|'+'] S* INTEGER ]? + var idx = 0; + var a = 0; + var sign = readSign(); + var number = readNumber(); + if (idx < formula.length && formula.charAt(idx) === "n") { + idx++; + a = sign * (number !== null && number !== void 0 ? number : 1); + skipWhitespace(); + if (idx < formula.length) { + sign = readSign(); + skipWhitespace(); + number = readNumber(); + } + else { + sign = number = 0; + } + } + // Throw if there is anything else + if (number === null || idx < formula.length) { + throw new Error("n-th rule couldn't be parsed ('".concat(formula, "')")); + } + return [a, sign * number]; + function readSign() { + if (formula.charAt(idx) === "-") { + idx++; + return -1; + } + if (formula.charAt(idx) === "+") { + idx++; + } + return 1; + } + function readNumber() { + var start = idx; + var value = 0; + while (idx < formula.length && + formula.charCodeAt(idx) >= ZERO && + formula.charCodeAt(idx) <= NINE) { + value = value * 10 + (formula.charCodeAt(idx) - ZERO); + idx++; + } + // Return `null` if we didn't read anything. + return idx === start ? null : value; + } + function skipWhitespace() { + while (idx < formula.length && + whitespace.has(formula.charCodeAt(idx))) { + idx++; + } + } +} +exports.parse = parse; + +}); + +var compile_1$1 = createCommonjsModule(function (module, exports) { +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.generate = exports.compile = void 0; +var boolbase_1 = __importDefault(boolbase); +/** + * Returns a function that checks if an elements index matches the given rule + * highly optimized to return the fastest solution. + * + * @param parsed A tuple [a, b], as returned by `parse`. + * @returns A highly optimized function that returns whether an index matches the nth-check. + * @example + * + * ```js + * const check = nthCheck.compile([2, 3]); + * + * check(0); // `false` + * check(1); // `false` + * check(2); // `true` + * check(3); // `false` + * check(4); // `true` + * check(5); // `false` + * check(6); // `true` + * ``` + */ +function compile(parsed) { + var a = parsed[0]; + // Subtract 1 from `b`, to convert from one- to zero-indexed. + var b = parsed[1] - 1; + /* + * When `b <= 0`, `a * n` won't be lead to any matches for `a < 0`. + * Besides, the specification states that no elements are + * matched when `a` and `b` are 0. + * + * `b < 0` here as we subtracted 1 from `b` above. + */ + if (b < 0 && a <= 0) + return boolbase_1.default.falseFunc; + // When `a` is in the range -1..1, it matches any element (so only `b` is checked). + if (a === -1) + return function (index) { return index <= b; }; + if (a === 0) + return function (index) { return index === b; }; + // When `b <= 0` and `a === 1`, they match any element. + if (a === 1) + return b < 0 ? boolbase_1.default.trueFunc : function (index) { return index >= b; }; + /* + * Otherwise, modulo can be used to check if there is a match. + * + * Modulo doesn't care about the sign, so let's use `a`s absolute value. + */ + var absA = Math.abs(a); + // Get `b mod a`, + a if this is negative. + var bMod = ((b % absA) + absA) % absA; + return a > 1 + ? function (index) { return index >= b && index % absA === bMod; } + : function (index) { return index <= b && index % absA === bMod; }; +} +exports.compile = compile; +/** + * Returns a function that produces a monotonously increasing sequence of indices. + * + * If the sequence has an end, the returned function will return `null` after + * the last index in the sequence. + * + * @param parsed A tuple [a, b], as returned by `parse`. + * @returns A function that produces a sequence of indices. + * @example <caption>Always increasing (2n+3)</caption> + * + * ```js + * const gen = nthCheck.generate([2, 3]) + * + * gen() // `1` + * gen() // `3` + * gen() // `5` + * gen() // `8` + * gen() // `11` + * ``` + * + * @example <caption>With end value (-2n+10)</caption> + * + * ```js + * + * const gen = nthCheck.generate([-2, 5]); + * + * gen() // 0 + * gen() // 2 + * gen() // 4 + * gen() // null + * ``` + */ +function generate(parsed) { + var a = parsed[0]; + // Subtract 1 from `b`, to convert from one- to zero-indexed. + var b = parsed[1] - 1; + var n = 0; + // Make sure to always return an increasing sequence + if (a < 0) { + var aPos_1 = -a; + // Get `b mod a` + var minValue_1 = ((b % aPos_1) + aPos_1) % aPos_1; + return function () { + var val = minValue_1 + aPos_1 * n++; + return val > b ? null : val; + }; + } + if (a === 0) + return b < 0 + ? // There are no result — always return `null` + function () { return null; } + : // Return `b` exactly once + function () { return (n++ === 0 ? b : null); }; + if (b < 0) { + b += a * Math.ceil(-b / a); + } + return function () { return a * n++ + b; }; +} +exports.generate = generate; + +}); + +var parse_js_1 = parse_1; + +var compile_js_1 = compile_1$1; + +var lib$4 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.sequence = exports.generate = exports.compile = exports.parse = void 0; + +Object.defineProperty(exports, "parse", { enumerable: true, get: function () { return parse_js_1.parse; } }); + +Object.defineProperty(exports, "compile", { enumerable: true, get: function () { return compile_js_1.compile; } }); +Object.defineProperty(exports, "generate", { enumerable: true, get: function () { return compile_js_1.generate; } }); +/** + * Parses and compiles a formula to a highly optimized function. + * Combination of {@link parse} and {@link compile}. + * + * If the formula doesn't match any elements, + * it returns [`boolbase`](https://github.com/fb55/boolbase)'s `falseFunc`. + * Otherwise, a function accepting an _index_ is returned, which returns + * whether or not the passed _index_ matches the formula. + * + * Note: The nth-rule starts counting at `1`, the returned function at `0`. + * + * @param formula The formula to compile. + * @example + * const check = nthCheck("2n+3"); + * + * check(0); // `false` + * check(1); // `false` + * check(2); // `true` + * check(3); // `false` + * check(4); // `true` + * check(5); // `false` + * check(6); // `true` + */ +function nthCheck(formula) { + return (0, compile_js_1.compile)((0, parse_js_1.parse)(formula)); +} +exports.default = nthCheck; +/** + * Parses and compiles a formula to a generator that produces a sequence of indices. + * Combination of {@link parse} and {@link generate}. + * + * @param formula The formula to compile. + * @returns A function that produces a sequence of indices. + * @example <caption>Always increasing</caption> + * + * ```js + * const gen = nthCheck.sequence('2n+3') + * + * gen() // `1` + * gen() // `3` + * gen() // `5` + * gen() // `8` + * gen() // `11` + * ``` + * + * @example <caption>With end value</caption> + * + * ```js + * + * const gen = nthCheck.sequence('-2n+5'); + * + * gen() // 0 + * gen() // 2 + * gen() // 4 + * gen() // null + * ``` + */ +function sequence(formula) { + return (0, compile_js_1.generate)((0, parse_js_1.parse)(formula)); +} +exports.sequence = sequence; + +}); + +var require$$0$1 = lib$4; + +var filters = createCommonjsModule(function (module, exports) { +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.filters = void 0; +var nth_check_1 = __importDefault(require$$0$1); +var boolbase_1 = __importDefault(boolbase); +function getChildFunc(next, adapter) { + return function (elem) { + var parent = adapter.getParent(elem); + return parent != null && adapter.isTag(parent) && next(elem); + }; +} +exports.filters = { + contains: function (next, text, _a) { + var adapter = _a.adapter; + return function contains(elem) { + return next(elem) && adapter.getText(elem).includes(text); + }; + }, + icontains: function (next, text, _a) { + var adapter = _a.adapter; + var itext = text.toLowerCase(); + return function icontains(elem) { + return (next(elem) && + adapter.getText(elem).toLowerCase().includes(itext)); + }; + }, + // Location specific methods + "nth-child": function (next, rule, _a) { + var adapter = _a.adapter, equals = _a.equals; + var func = (0, nth_check_1.default)(rule); + if (func === boolbase_1.default.falseFunc) + return boolbase_1.default.falseFunc; + if (func === boolbase_1.default.trueFunc) + return getChildFunc(next, adapter); + return function nthChild(elem) { + var siblings = adapter.getSiblings(elem); + var pos = 0; + for (var i = 0; i < siblings.length; i++) { + if (equals(elem, siblings[i])) + break; + if (adapter.isTag(siblings[i])) { + pos++; + } + } + return func(pos) && next(elem); + }; + }, + "nth-last-child": function (next, rule, _a) { + var adapter = _a.adapter, equals = _a.equals; + var func = (0, nth_check_1.default)(rule); + if (func === boolbase_1.default.falseFunc) + return boolbase_1.default.falseFunc; + if (func === boolbase_1.default.trueFunc) + return getChildFunc(next, adapter); + return function nthLastChild(elem) { + var siblings = adapter.getSiblings(elem); + var pos = 0; + for (var i = siblings.length - 1; i >= 0; i--) { + if (equals(elem, siblings[i])) + break; + if (adapter.isTag(siblings[i])) { + pos++; + } + } + return func(pos) && next(elem); + }; + }, + "nth-of-type": function (next, rule, _a) { + var adapter = _a.adapter, equals = _a.equals; + var func = (0, nth_check_1.default)(rule); + if (func === boolbase_1.default.falseFunc) + return boolbase_1.default.falseFunc; + if (func === boolbase_1.default.trueFunc) + return getChildFunc(next, adapter); + return function nthOfType(elem) { + var siblings = adapter.getSiblings(elem); + var pos = 0; + for (var i = 0; i < siblings.length; i++) { + var currentSibling = siblings[i]; + if (equals(elem, currentSibling)) + break; + if (adapter.isTag(currentSibling) && + adapter.getName(currentSibling) === adapter.getName(elem)) { + pos++; + } + } + return func(pos) && next(elem); + }; + }, + "nth-last-of-type": function (next, rule, _a) { + var adapter = _a.adapter, equals = _a.equals; + var func = (0, nth_check_1.default)(rule); + if (func === boolbase_1.default.falseFunc) + return boolbase_1.default.falseFunc; + if (func === boolbase_1.default.trueFunc) + return getChildFunc(next, adapter); + return function nthLastOfType(elem) { + var siblings = adapter.getSiblings(elem); + var pos = 0; + for (var i = siblings.length - 1; i >= 0; i--) { + var currentSibling = siblings[i]; + if (equals(elem, currentSibling)) + break; + if (adapter.isTag(currentSibling) && + adapter.getName(currentSibling) === adapter.getName(elem)) { + pos++; + } + } + return func(pos) && next(elem); + }; + }, + // TODO determine the actual root element + root: function (next, _rule, _a) { + var adapter = _a.adapter; + return function (elem) { + var parent = adapter.getParent(elem); + return (parent == null || !adapter.isTag(parent)) && next(elem); + }; + }, + scope: function (next, rule, options, context) { + var equals = options.equals; + if (!context || context.length === 0) { + // Equivalent to :root + return exports.filters["root"](next, rule, options); + } + if (context.length === 1) { + // NOTE: can't be unpacked, as :has uses this for side-effects + return function (elem) { return equals(context[0], elem) && next(elem); }; + } + return function (elem) { return context.includes(elem) && next(elem); }; + }, + hover: dynamicStatePseudo("isHovered"), + visited: dynamicStatePseudo("isVisited"), + active: dynamicStatePseudo("isActive"), +}; +/** + * Dynamic state pseudos. These depend on optional Adapter methods. + * + * @param name The name of the adapter method to call. + * @returns Pseudo for the `filters` object. + */ +function dynamicStatePseudo(name) { + return function dynamicPseudo(next, _rule, _a) { + var adapter = _a.adapter; + var func = adapter[name]; + if (typeof func !== "function") { + return boolbase_1.default.falseFunc; + } + return function active(elem) { + return func(elem) && next(elem); + }; + }; +} + +}); + +var pseudos = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.verifyPseudoArgs = exports.pseudos = void 0; +// While filters are precompiled, pseudos get called when they are needed +exports.pseudos = { + empty: function (elem, _a) { + var adapter = _a.adapter; + return !adapter.getChildren(elem).some(function (elem) { + // FIXME: `getText` call is potentially expensive. + return adapter.isTag(elem) || adapter.getText(elem) !== ""; + }); + }, + "first-child": function (elem, _a) { + var adapter = _a.adapter, equals = _a.equals; + if (adapter.prevElementSibling) { + return adapter.prevElementSibling(elem) == null; + } + var firstChild = adapter + .getSiblings(elem) + .find(function (elem) { return adapter.isTag(elem); }); + return firstChild != null && equals(elem, firstChild); + }, + "last-child": function (elem, _a) { + var adapter = _a.adapter, equals = _a.equals; + var siblings = adapter.getSiblings(elem); + for (var i = siblings.length - 1; i >= 0; i--) { + if (equals(elem, siblings[i])) + return true; + if (adapter.isTag(siblings[i])) + break; + } + return false; + }, + "first-of-type": function (elem, _a) { + var adapter = _a.adapter, equals = _a.equals; + var siblings = adapter.getSiblings(elem); + var elemName = adapter.getName(elem); + for (var i = 0; i < siblings.length; i++) { + var currentSibling = siblings[i]; + if (equals(elem, currentSibling)) + return true; + if (adapter.isTag(currentSibling) && + adapter.getName(currentSibling) === elemName) { + break; + } + } + return false; + }, + "last-of-type": function (elem, _a) { + var adapter = _a.adapter, equals = _a.equals; + var siblings = adapter.getSiblings(elem); + var elemName = adapter.getName(elem); + for (var i = siblings.length - 1; i >= 0; i--) { + var currentSibling = siblings[i]; + if (equals(elem, currentSibling)) + return true; + if (adapter.isTag(currentSibling) && + adapter.getName(currentSibling) === elemName) { + break; + } + } + return false; + }, + "only-of-type": function (elem, _a) { + var adapter = _a.adapter, equals = _a.equals; + var elemName = adapter.getName(elem); + return adapter + .getSiblings(elem) + .every(function (sibling) { + return equals(elem, sibling) || + !adapter.isTag(sibling) || + adapter.getName(sibling) !== elemName; + }); + }, + "only-child": function (elem, _a) { + var adapter = _a.adapter, equals = _a.equals; + return adapter + .getSiblings(elem) + .every(function (sibling) { return equals(elem, sibling) || !adapter.isTag(sibling); }); + }, +}; +function verifyPseudoArgs(func, name, subselect, argIndex) { + if (subselect === null) { + if (func.length > argIndex) { + throw new Error("Pseudo-class :".concat(name, " requires an argument")); + } + } + else if (func.length === argIndex) { + throw new Error("Pseudo-class :".concat(name, " doesn't have any arguments")); + } +} +exports.verifyPseudoArgs = verifyPseudoArgs; + +}); + +var aliases = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.aliases = void 0; +/** + * Aliases are pseudos that are expressed as selectors. + */ +exports.aliases = { + // Links + "any-link": ":is(a, area, link)[href]", + link: ":any-link:not(:visited)", + // Forms + // https://html.spec.whatwg.org/multipage/scripting.html#disabled-elements + disabled: ":is(\n :is(button, input, select, textarea, optgroup, option)[disabled],\n optgroup[disabled] > option,\n fieldset[disabled]:not(fieldset[disabled] legend:first-of-type *)\n )", + enabled: ":not(:disabled)", + checked: ":is(:is(input[type=radio], input[type=checkbox])[checked], option:selected)", + required: ":is(input, select, textarea)[required]", + optional: ":is(input, select, textarea):not([required])", + // JQuery extensions + // https://html.spec.whatwg.org/multipage/form-elements.html#concept-option-selectedness + selected: "option:is([selected], select:not([multiple]):not(:has(> option[selected])) > :first-of-type)", + checkbox: "[type=checkbox]", + file: "[type=file]", + password: "[type=password]", + radio: "[type=radio]", + reset: "[type=reset]", + image: "[type=image]", + submit: "[type=submit]", + parent: ":not(:empty)", + header: ":is(h1, h2, h3, h4, h5, h6)", + button: ":is(button, input[type=button])", + input: ":is(input, textarea, select, button)", + text: "input:is(:not([type!='']), [type=text])", +}; + +}); + +var subselects = createCommonjsModule(function (module, exports) { +var __spreadArray = (commonjsGlobal && commonjsGlobal.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.subselects = exports.getNextSiblings = exports.ensureIsTag = exports.PLACEHOLDER_ELEMENT = void 0; +var boolbase_1 = __importDefault(boolbase); + +/** Used as a placeholder for :has. Will be replaced with the actual element. */ +exports.PLACEHOLDER_ELEMENT = {}; +function ensureIsTag(next, adapter) { + if (next === boolbase_1.default.falseFunc) + return boolbase_1.default.falseFunc; + return function (elem) { return adapter.isTag(elem) && next(elem); }; +} +exports.ensureIsTag = ensureIsTag; +function getNextSiblings(elem, adapter) { + var siblings = adapter.getSiblings(elem); + if (siblings.length <= 1) + return []; + var elemIndex = siblings.indexOf(elem); + if (elemIndex < 0 || elemIndex === siblings.length - 1) + return []; + return siblings.slice(elemIndex + 1).filter(adapter.isTag); +} +exports.getNextSiblings = getNextSiblings; +function copyOptions(options) { + // Not copied: context, rootFunc + return { + xmlMode: !!options.xmlMode, + lowerCaseAttributeNames: !!options.lowerCaseAttributeNames, + lowerCaseTags: !!options.lowerCaseTags, + quirksMode: !!options.quirksMode, + cacheResults: !!options.cacheResults, + pseudos: options.pseudos, + adapter: options.adapter, + equals: options.equals, + }; +} +var is = function (next, token, options, context, compileToken) { + var func = compileToken(token, copyOptions(options), context); + return func === boolbase_1.default.trueFunc + ? next + : func === boolbase_1.default.falseFunc + ? boolbase_1.default.falseFunc + : function (elem) { return func(elem) && next(elem); }; +}; +/* + * :not, :has, :is, :matches and :where have to compile selectors + * doing this in src/pseudos.ts would lead to circular dependencies, + * so we add them here + */ +exports.subselects = { + is: is, + /** + * `:matches` and `:where` are aliases for `:is`. + */ + matches: is, + where: is, + not: function (next, token, options, context, compileToken) { + var func = compileToken(token, copyOptions(options), context); + return func === boolbase_1.default.falseFunc + ? next + : func === boolbase_1.default.trueFunc + ? boolbase_1.default.falseFunc + : function (elem) { return !func(elem) && next(elem); }; + }, + has: function (next, subselect, options, _context, compileToken) { + var adapter = options.adapter; + var opts = copyOptions(options); + opts.relativeSelector = true; + var context = subselect.some(function (s) { return s.some(sort.isTraversal); }) + ? // Used as a placeholder. Will be replaced with the actual element. + [exports.PLACEHOLDER_ELEMENT] + : undefined; + var compiled = compileToken(subselect, opts, context); + if (compiled === boolbase_1.default.falseFunc) + return boolbase_1.default.falseFunc; + var hasElement = ensureIsTag(compiled, adapter); + // If `compiled` is `trueFunc`, we can skip this. + if (context && compiled !== boolbase_1.default.trueFunc) { + /* + * `shouldTestNextSiblings` will only be true if the query starts with + * a traversal (sibling or adjacent). That means we will always have a context. + */ + var _a = compiled.shouldTestNextSiblings, shouldTestNextSiblings_1 = _a === void 0 ? false : _a; + return function (elem) { + if (!next(elem)) + return false; + context[0] = elem; + var childs = adapter.getChildren(elem); + var nextElements = shouldTestNextSiblings_1 + ? __spreadArray(__spreadArray([], childs, true), getNextSiblings(elem, adapter), true) : childs; + return adapter.existsOne(hasElement, nextElements); + }; + } + return function (elem) { + return next(elem) && + adapter.existsOne(hasElement, adapter.getChildren(elem)); + }; + }, +}; + +}); + +var pseudoSelectors = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.compilePseudoSelector = exports.aliases = exports.pseudos = exports.filters = void 0; + + +Object.defineProperty(exports, "filters", { enumerable: true, get: function () { return filters.filters; } }); + +Object.defineProperty(exports, "pseudos", { enumerable: true, get: function () { return pseudos.pseudos; } }); + +Object.defineProperty(exports, "aliases", { enumerable: true, get: function () { return aliases.aliases; } }); + +function compilePseudoSelector(next, selector, options, context, compileToken) { + var _a; + var name = selector.name, data = selector.data; + if (Array.isArray(data)) { + if (!(name in subselects.subselects)) { + throw new Error("Unknown pseudo-class :".concat(name, "(").concat(data, ")")); + } + return subselects.subselects[name](next, data, options, context, compileToken); + } + var userPseudo = (_a = options.pseudos) === null || _a === void 0 ? void 0 : _a[name]; + var stringPseudo = typeof userPseudo === "string" ? userPseudo : aliases.aliases[name]; + if (typeof stringPseudo === "string") { + if (data != null) { + throw new Error("Pseudo ".concat(name, " doesn't have any arguments")); + } + // The alias has to be parsed here, to make sure options are respected. + var alias = (0, css_what_1.parse)(stringPseudo); + return subselects.subselects["is"](next, alias, options, context, compileToken); + } + if (typeof userPseudo === "function") { + (0, pseudos.verifyPseudoArgs)(userPseudo, name, data, 1); + return function (elem) { return userPseudo(elem, data) && next(elem); }; + } + if (name in filters.filters) { + return filters.filters[name](next, data, options, context); + } + if (name in pseudos.pseudos) { + var pseudo_1 = pseudos.pseudos[name]; + (0, pseudos.verifyPseudoArgs)(pseudo_1, name, data, 2); + return function (elem) { return pseudo_1(elem, options, data) && next(elem); }; + } + throw new Error("Unknown pseudo-class :".concat(name)); +} +exports.compilePseudoSelector = compilePseudoSelector; + +}); + +var general = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.compileGeneralSelector = void 0; + + + +function getElementParent(node, adapter) { + var parent = adapter.getParent(node); + if (parent && adapter.isTag(parent)) { + return parent; + } + return null; +} +/* + * All available rules + */ +function compileGeneralSelector(next, selector, options, context, compileToken) { + var adapter = options.adapter, equals = options.equals; + switch (selector.type) { + case css_what_1.SelectorType.PseudoElement: { + throw new Error("Pseudo-elements are not supported by css-select"); + } + case css_what_1.SelectorType.ColumnCombinator: { + throw new Error("Column combinators are not yet supported by css-select"); + } + case css_what_1.SelectorType.Attribute: { + if (selector.namespace != null) { + throw new Error("Namespaced attributes are not yet supported by css-select"); + } + if (!options.xmlMode || options.lowerCaseAttributeNames) { + selector.name = selector.name.toLowerCase(); + } + return attributes.attributeRules[selector.action](next, selector, options); + } + case css_what_1.SelectorType.Pseudo: { + return (0, pseudoSelectors.compilePseudoSelector)(next, selector, options, context, compileToken); + } + // Tags + case css_what_1.SelectorType.Tag: { + if (selector.namespace != null) { + throw new Error("Namespaced tag names are not yet supported by css-select"); + } + var name_1 = selector.name; + if (!options.xmlMode || options.lowerCaseTags) { + name_1 = name_1.toLowerCase(); + } + return function tag(elem) { + return adapter.getName(elem) === name_1 && next(elem); + }; + } + // Traversal + case css_what_1.SelectorType.Descendant: { + if (options.cacheResults === false || + typeof WeakSet === "undefined") { + return function descendant(elem) { + var current = elem; + while ((current = getElementParent(current, adapter))) { + if (next(current)) { + return true; + } + } + return false; + }; + } + // @ts-expect-error `ElementNode` is not extending object + var isFalseCache_1 = new WeakSet(); + return function cachedDescendant(elem) { + var current = elem; + while ((current = getElementParent(current, adapter))) { + if (!isFalseCache_1.has(current)) { + if (adapter.isTag(current) && next(current)) { + return true; + } + isFalseCache_1.add(current); + } + } + return false; + }; + } + case "_flexibleDescendant": { + // Include element itself, only used while querying an array + return function flexibleDescendant(elem) { + var current = elem; + do { + if (next(current)) + return true; + } while ((current = getElementParent(current, adapter))); + return false; + }; + } + case css_what_1.SelectorType.Parent: { + return function parent(elem) { + return adapter + .getChildren(elem) + .some(function (elem) { return adapter.isTag(elem) && next(elem); }); + }; + } + case css_what_1.SelectorType.Child: { + return function child(elem) { + var parent = adapter.getParent(elem); + return parent != null && adapter.isTag(parent) && next(parent); + }; + } + case css_what_1.SelectorType.Sibling: { + return function sibling(elem) { + var siblings = adapter.getSiblings(elem); + for (var i = 0; i < siblings.length; i++) { + var currentSibling = siblings[i]; + if (equals(elem, currentSibling)) + break; + if (adapter.isTag(currentSibling) && next(currentSibling)) { + return true; + } + } + return false; + }; + } + case css_what_1.SelectorType.Adjacent: { + if (adapter.prevElementSibling) { + return function adjacent(elem) { + var previous = adapter.prevElementSibling(elem); + return previous != null && next(previous); + }; + } + return function adjacent(elem) { + var siblings = adapter.getSiblings(elem); + var lastElement; + for (var i = 0; i < siblings.length; i++) { + var currentSibling = siblings[i]; + if (equals(elem, currentSibling)) + break; + if (adapter.isTag(currentSibling)) { + lastElement = currentSibling; + } + } + return !!lastElement && next(lastElement); + }; + } + case css_what_1.SelectorType.Universal: { + if (selector.namespace != null && selector.namespace !== "*") { + throw new Error("Namespaced universal selectors are not yet supported by css-select"); + } + return next; + } + } +} +exports.compileGeneralSelector = compileGeneralSelector; + +}); + +var compile_1 = createCommonjsModule(function (module, exports) { +var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.compileToken = exports.compileUnsafe = exports.compile = void 0; + +var boolbase_1 = __importDefault(boolbase); +var sort_js_1 = __importStar(sort); + + +/** + * Compiles a selector to an executable function. + * + * @param selector Selector to compile. + * @param options Compilation options. + * @param context Optional context for the selector. + */ +function compile(selector, options, context) { + var next = compileUnsafe(selector, options, context); + return (0, subselects.ensureIsTag)(next, options.adapter); +} +exports.compile = compile; +function compileUnsafe(selector, options, context) { + var token = typeof selector === "string" ? (0, css_what_1.parse)(selector) : selector; + return compileToken(token, options, context); +} +exports.compileUnsafe = compileUnsafe; +function includesScopePseudo(t) { + return (t.type === css_what_1.SelectorType.Pseudo && + (t.name === "scope" || + (Array.isArray(t.data) && + t.data.some(function (data) { return data.some(includesScopePseudo); })))); +} +var DESCENDANT_TOKEN = { type: css_what_1.SelectorType.Descendant }; +var FLEXIBLE_DESCENDANT_TOKEN = { + type: "_flexibleDescendant", +}; +var SCOPE_TOKEN = { + type: css_what_1.SelectorType.Pseudo, + name: "scope", + data: null, +}; +/* + * CSS 4 Spec (Draft): 3.4.1. Absolutizing a Relative Selector + * http://www.w3.org/TR/selectors4/#absolutizing + */ +function absolutize(token, _a, context) { + var adapter = _a.adapter; + // TODO Use better check if the context is a document + var hasContext = !!(context === null || context === void 0 ? void 0 : context.every(function (e) { + var parent = adapter.isTag(e) && adapter.getParent(e); + return e === subselects.PLACEHOLDER_ELEMENT || (parent && adapter.isTag(parent)); + })); + for (var _i = 0, token_1 = token; _i < token_1.length; _i++) { + var t = token_1[_i]; + if (t.length > 0 && + (0, sort_js_1.isTraversal)(t[0]) && + t[0].type !== css_what_1.SelectorType.Descendant) ; + else if (hasContext && !t.some(includesScopePseudo)) { + t.unshift(DESCENDANT_TOKEN); + } + else { + continue; + } + t.unshift(SCOPE_TOKEN); + } +} +function compileToken(token, options, context) { + var _a; + token.forEach(sort_js_1.default); + context = (_a = options.context) !== null && _a !== void 0 ? _a : context; + var isArrayContext = Array.isArray(context); + var finalContext = context && (Array.isArray(context) ? context : [context]); + // Check if the selector is relative + if (options.relativeSelector !== false) { + absolutize(token, options, finalContext); + } + else if (token.some(function (t) { return t.length > 0 && (0, sort_js_1.isTraversal)(t[0]); })) { + throw new Error("Relative selectors are not allowed when the `relativeSelector` option is disabled"); + } + var shouldTestNextSiblings = false; + var query = token + .map(function (rules) { + if (rules.length >= 2) { + var first = rules[0], second = rules[1]; + if (first.type !== css_what_1.SelectorType.Pseudo || + first.name !== "scope") ; + else if (isArrayContext && + second.type === css_what_1.SelectorType.Descendant) { + rules[1] = FLEXIBLE_DESCENDANT_TOKEN; + } + else if (second.type === css_what_1.SelectorType.Adjacent || + second.type === css_what_1.SelectorType.Sibling) { + shouldTestNextSiblings = true; + } + } + return compileRules(rules, options, finalContext); + }) + .reduce(reduceRules, boolbase_1.default.falseFunc); + query.shouldTestNextSiblings = shouldTestNextSiblings; + return query; +} +exports.compileToken = compileToken; +function compileRules(rules, options, context) { + var _a; + return rules.reduce(function (previous, rule) { + return previous === boolbase_1.default.falseFunc + ? boolbase_1.default.falseFunc + : (0, general.compileGeneralSelector)(previous, rule, options, context, compileToken); + }, (_a = options.rootFunc) !== null && _a !== void 0 ? _a : boolbase_1.default.trueFunc); +} +function reduceRules(a, b) { + if (b === boolbase_1.default.falseFunc || a === boolbase_1.default.trueFunc) { + return a; + } + if (a === boolbase_1.default.falseFunc || b === boolbase_1.default.trueFunc) { + return b; + } + return function combine(elem) { + return a(elem) || b(elem); + }; +} + +}); + +var lib$3 = createCommonjsModule(function (module, exports) { +var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.aliases = exports.pseudos = exports.filters = exports.is = exports.selectOne = exports.selectAll = exports.prepareContext = exports._compileToken = exports._compileUnsafe = exports.compile = void 0; +var DomUtils = __importStar(domutils_1); +var boolbase_1 = __importDefault(boolbase); + + +var defaultEquals = function (a, b) { return a === b; }; +var defaultOptions = { + adapter: DomUtils, + equals: defaultEquals, +}; +function convertOptionFormats(options) { + var _a, _b, _c, _d; + /* + * We force one format of options to the other one. + */ + // @ts-expect-error Default options may have incompatible `Node` / `ElementNode`. + var opts = options !== null && options !== void 0 ? options : defaultOptions; + // @ts-expect-error Same as above. + (_a = opts.adapter) !== null && _a !== void 0 ? _a : (opts.adapter = DomUtils); + // @ts-expect-error `equals` does not exist on `Options` + (_b = opts.equals) !== null && _b !== void 0 ? _b : (opts.equals = (_d = (_c = opts.adapter) === null || _c === void 0 ? void 0 : _c.equals) !== null && _d !== void 0 ? _d : defaultEquals); + return opts; +} +function wrapCompile(func) { + return function addAdapter(selector, options, context) { + var opts = convertOptionFormats(options); + return func(selector, opts, context); + }; +} +/** + * Compiles the query, returns a function. + */ +exports.compile = wrapCompile(compile_1.compile); +exports._compileUnsafe = wrapCompile(compile_1.compileUnsafe); +exports._compileToken = wrapCompile(compile_1.compileToken); +function getSelectorFunc(searchFunc) { + return function select(query, elements, options) { + var opts = convertOptionFormats(options); + if (typeof query !== "function") { + query = (0, compile_1.compileUnsafe)(query, opts, elements); + } + var filteredElements = prepareContext(elements, opts.adapter, query.shouldTestNextSiblings); + return searchFunc(query, filteredElements, opts); + }; +} +function prepareContext(elems, adapter, shouldTestNextSiblings) { + if (shouldTestNextSiblings === void 0) { shouldTestNextSiblings = false; } + /* + * Add siblings if the query requires them. + * See https://github.com/fb55/css-select/pull/43#issuecomment-225414692 + */ + if (shouldTestNextSiblings) { + elems = appendNextSiblings(elems, adapter); + } + return Array.isArray(elems) + ? adapter.removeSubsets(elems) + : adapter.getChildren(elems); +} +exports.prepareContext = prepareContext; +function appendNextSiblings(elem, adapter) { + // Order matters because jQuery seems to check the children before the siblings + var elems = Array.isArray(elem) ? elem.slice(0) : [elem]; + var elemsLength = elems.length; + for (var i = 0; i < elemsLength; i++) { + var nextSiblings = (0, subselects.getNextSiblings)(elems[i], adapter); + elems.push.apply(elems, nextSiblings); + } + return elems; +} +/** + * @template Node The generic Node type for the DOM adapter being used. + * @template ElementNode The Node type for elements for the DOM adapter being used. + * @param elems Elements to query. If it is an element, its children will be queried.. + * @param query can be either a CSS selector string or a compiled query function. + * @param [options] options for querying the document. + * @see compile for supported selector queries. + * @returns All matching elements. + * + */ +exports.selectAll = getSelectorFunc(function (query, elems, options) { + return query === boolbase_1.default.falseFunc || !elems || elems.length === 0 + ? [] + : options.adapter.findAll(query, elems); +}); +/** + * @template Node The generic Node type for the DOM adapter being used. + * @template ElementNode The Node type for elements for the DOM adapter being used. + * @param elems Elements to query. If it is an element, its children will be queried.. + * @param query can be either a CSS selector string or a compiled query function. + * @param [options] options for querying the document. + * @see compile for supported selector queries. + * @returns the first match, or null if there was no match. + */ +exports.selectOne = getSelectorFunc(function (query, elems, options) { + return query === boolbase_1.default.falseFunc || !elems || elems.length === 0 + ? null + : options.adapter.findOne(query, elems); +}); +/** + * Tests whether or not an element is matched by query. + * + * @template Node The generic Node type for the DOM adapter being used. + * @template ElementNode The Node type for elements for the DOM adapter being used. + * @param elem The element to test if it matches the query. + * @param query can be either a CSS selector string or a compiled query function. + * @param [options] options for querying the document. + * @see compile for supported selector queries. + * @returns + */ +function is(elem, query, options) { + var opts = convertOptionFormats(options); + return (typeof query === "function" ? query : (0, compile_1.compile)(query, opts))(elem); +} +exports.is = is; +/** + * Alias for selectAll(query, elems, options). + * @see [compile] for supported selector queries. + */ +exports.default = exports.selectAll; +// Export filters, pseudos and aliases to allow users to supply their own. +/** @deprecated Use the `pseudos` option instead. */ + +Object.defineProperty(exports, "filters", { enumerable: true, get: function () { return pseudoSelectors.filters; } }); +Object.defineProperty(exports, "pseudos", { enumerable: true, get: function () { return pseudoSelectors.pseudos; } }); +Object.defineProperty(exports, "aliases", { enumerable: true, get: function () { return pseudoSelectors.aliases; } }); + +}); + +var positionals = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getLimit = exports.isFilter = exports.filterNames = void 0; +exports.filterNames = new Set([ + "first", + "last", + "eq", + "gt", + "nth", + "lt", + "even", + "odd", +]); +function isFilter(s) { + if (s.type !== "pseudo") + return false; + if (exports.filterNames.has(s.name)) + return true; + if (s.name === "not" && Array.isArray(s.data)) { + // Only consider `:not` with embedded filters + return s.data.some(function (s) { return s.some(isFilter); }); + } + return false; +} +exports.isFilter = isFilter; +function getLimit(filter, data, partLimit) { + var num = data != null ? parseInt(data, 10) : NaN; + switch (filter) { + case "first": + return 1; + case "nth": + case "eq": + return isFinite(num) ? (num >= 0 ? num + 1 : Infinity) : 0; + case "lt": + return isFinite(num) + ? num >= 0 + ? Math.min(num, partLimit) + : Infinity + : 0; + case "gt": + return isFinite(num) ? Infinity : 0; + case "odd": + return 2 * partLimit; + case "even": + return 2 * partLimit - 1; + case "last": + case "not": + return Infinity; + } +} +exports.getLimit = getLimit; + +}); + +var positionals_js_1 = positionals; + +var helpers = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.groupSelectors = exports.getDocumentRoot = void 0; + +function getDocumentRoot(node) { + while (node.parent) + node = node.parent; + return node; +} +exports.getDocumentRoot = getDocumentRoot; +function groupSelectors(selectors) { + var filteredSelectors = []; + var plainSelectors = []; + for (var _i = 0, selectors_1 = selectors; _i < selectors_1.length; _i++) { + var selector = selectors_1[_i]; + if (selector.some(positionals_js_1.isFilter)) { + filteredSelectors.push(selector); + } + else { + plainSelectors.push(selector); + } + } + return [plainSelectors, filteredSelectors]; +} +exports.groupSelectors = groupSelectors; + +}); + +var helpers_js_1 = helpers; + +var lib$2 = createCommonjsModule(function (module, exports) { +var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __spreadArray = (commonjsGlobal && commonjsGlobal.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.select = exports.filter = exports.some = exports.is = exports.aliases = exports.pseudos = exports.filters = void 0; + + +var DomUtils = __importStar(domutils_1); +var boolbase$1 = __importStar(boolbase); + + +// Re-export pseudo extension points +var css_select_2 = lib$3; +Object.defineProperty(exports, "filters", { enumerable: true, get: function () { return css_select_2.filters; } }); +Object.defineProperty(exports, "pseudos", { enumerable: true, get: function () { return css_select_2.pseudos; } }); +Object.defineProperty(exports, "aliases", { enumerable: true, get: function () { return css_select_2.aliases; } }); +var UNIVERSAL_SELECTOR = { + type: css_what_1.SelectorType.Universal, + namespace: null, +}; +var SCOPE_PSEUDO = { + type: css_what_1.SelectorType.Pseudo, + name: "scope", + data: null, +}; +function is(element, selector, options) { + if (options === void 0) { options = {}; } + return some([element], selector, options); +} +exports.is = is; +function some(elements, selector, options) { + if (options === void 0) { options = {}; } + if (typeof selector === "function") + return elements.some(selector); + var _a = (0, helpers_js_1.groupSelectors)((0, css_what_1.parse)(selector)), plain = _a[0], filtered = _a[1]; + return ((plain.length > 0 && elements.some((0, lib$3._compileToken)(plain, options))) || + filtered.some(function (sel) { return filterBySelector(sel, elements, options).length > 0; })); +} +exports.some = some; +function filterByPosition(filter, elems, data, options) { + var num = typeof data === "string" ? parseInt(data, 10) : NaN; + switch (filter) { + case "first": + case "lt": + // Already done in `getLimit` + return elems; + case "last": + return elems.length > 0 ? [elems[elems.length - 1]] : elems; + case "nth": + case "eq": + return isFinite(num) && Math.abs(num) < elems.length + ? [num < 0 ? elems[elems.length + num] : elems[num]] + : []; + case "gt": + return isFinite(num) ? elems.slice(num + 1) : []; + case "even": + return elems.filter(function (_, i) { return i % 2 === 0; }); + case "odd": + return elems.filter(function (_, i) { return i % 2 === 1; }); + case "not": { + var filtered_1 = new Set(filterParsed(data, elems, options)); + return elems.filter(function (e) { return !filtered_1.has(e); }); + } + } +} +function filter(selector, elements, options) { + if (options === void 0) { options = {}; } + return filterParsed((0, css_what_1.parse)(selector), elements, options); +} +exports.filter = filter; +/** + * Filter a set of elements by a selector. + * + * Will return elements in the original order. + * + * @param selector Selector to filter by. + * @param elements Elements to filter. + * @param options Options for selector. + */ +function filterParsed(selector, elements, options) { + if (elements.length === 0) + return []; + var _a = (0, helpers_js_1.groupSelectors)(selector), plainSelectors = _a[0], filteredSelectors = _a[1]; + var found; + if (plainSelectors.length) { + var filtered = filterElements(elements, plainSelectors, options); + // If there are no filters, just return + if (filteredSelectors.length === 0) { + return filtered; + } + // Otherwise, we have to do some filtering + if (filtered.length) { + found = new Set(filtered); + } + } + for (var i = 0; i < filteredSelectors.length && (found === null || found === void 0 ? void 0 : found.size) !== elements.length; i++) { + var filteredSelector = filteredSelectors[i]; + var missing = found + ? elements.filter(function (e) { return DomUtils.isTag(e) && !found.has(e); }) + : elements; + if (missing.length === 0) + break; + var filtered = filterBySelector(filteredSelector, elements, options); + if (filtered.length) { + if (!found) { + /* + * If we haven't found anything before the last selector, + * just return what we found now. + */ + if (i === filteredSelectors.length - 1) { + return filtered; + } + found = new Set(filtered); + } + else { + filtered.forEach(function (el) { return found.add(el); }); + } + } + } + return typeof found !== "undefined" + ? (found.size === elements.length + ? elements + : // Filter elements to preserve order + elements.filter(function (el) { + return found.has(el); + })) + : []; +} +function filterBySelector(selector, elements, options) { + var _a; + if (selector.some(css_what_1.isTraversal)) { + /* + * Get root node, run selector with the scope + * set to all of our nodes. + */ + var root = (_a = options.root) !== null && _a !== void 0 ? _a : (0, helpers_js_1.getDocumentRoot)(elements[0]); + var opts = __assign(__assign({}, options), { context: elements, relativeSelector: false }); + selector.push(SCOPE_PSEUDO); + return findFilterElements(root, selector, opts, true, elements.length); + } + // Performance optimization: If we don't have to traverse, just filter set. + return findFilterElements(elements, selector, options, false, elements.length); +} +function select(selector, root, options, limit) { + if (options === void 0) { options = {}; } + if (limit === void 0) { limit = Infinity; } + if (typeof selector === "function") { + return find(root, selector); + } + var _a = (0, helpers_js_1.groupSelectors)((0, css_what_1.parse)(selector)), plain = _a[0], filtered = _a[1]; + var results = filtered.map(function (sel) { + return findFilterElements(root, sel, options, true, limit); + }); + // Plain selectors can be queried in a single go + if (plain.length) { + results.push(findElements(root, plain, options, limit)); + } + if (results.length === 0) { + return []; + } + // If there was only a single selector, just return the result + if (results.length === 1) { + return results[0]; + } + // Sort results, filtering for duplicates + return DomUtils.uniqueSort(results.reduce(function (a, b) { return __spreadArray(__spreadArray([], a, true), b, true); })); +} +exports.select = select; +/** + * + * @param root Element(s) to search from. + * @param selector Selector to look for. + * @param options Options for querying. + * @param queryForSelector Query multiple levels deep for the initial selector, even if it doesn't contain a traversal. + */ +function findFilterElements(root, selector, options, queryForSelector, totalLimit) { + var filterIndex = selector.findIndex(positionals_js_1.isFilter); + var sub = selector.slice(0, filterIndex); + var filter = selector[filterIndex]; + // If we are at the end of the selector, we can limit the number of elements to retrieve. + var partLimit = selector.length - 1 === filterIndex ? totalLimit : Infinity; + /* + * Set the number of elements to retrieve. + * Eg. for :first, we only have to get a single element. + */ + var limit = (0, positionals_js_1.getLimit)(filter.name, filter.data, partLimit); + if (limit === 0) + return []; + /* + * Skip `findElements` call if our selector starts with a positional + * pseudo. + */ + var elemsNoLimit = sub.length === 0 && !Array.isArray(root) + ? DomUtils.getChildren(root).filter(DomUtils.isTag) + : sub.length === 0 + ? (Array.isArray(root) ? root : [root]).filter(DomUtils.isTag) + : queryForSelector || sub.some(css_what_1.isTraversal) + ? findElements(root, [sub], options, limit) + : filterElements(root, [sub], options); + var elems = elemsNoLimit.slice(0, limit); + var result = filterByPosition(filter.name, elems, filter.data, options); + if (result.length === 0 || selector.length === filterIndex + 1) { + return result; + } + var remainingSelector = selector.slice(filterIndex + 1); + var remainingHasTraversal = remainingSelector.some(css_what_1.isTraversal); + if (remainingHasTraversal) { + if ((0, css_what_1.isTraversal)(remainingSelector[0])) { + var type = remainingSelector[0].type; + if (type === css_what_1.SelectorType.Sibling || + type === css_what_1.SelectorType.Adjacent) { + // If we have a sibling traversal, we need to also look at the siblings. + result = (0, lib$3.prepareContext)(result, DomUtils, true); + } + // Avoid a traversal-first selector error. + remainingSelector.unshift(UNIVERSAL_SELECTOR); + } + options = __assign(__assign({}, options), { + // Avoid absolutizing the selector + relativeSelector: false, + /* + * Add a custom root func, to make sure traversals don't match elements + * that aren't a part of the considered tree. + */ + rootFunc: function (el) { return result.includes(el); } }); + } + else if (options.rootFunc && options.rootFunc !== boolbase$1.trueFunc) { + options = __assign(__assign({}, options), { rootFunc: boolbase$1.trueFunc }); + } + /* + * If we have another filter, recursively call `findFilterElements`, + * with the `recursive` flag disabled. We only have to look for more + * elements when we see a traversal. + * + * Otherwise, + */ + return remainingSelector.some(positionals_js_1.isFilter) + ? findFilterElements(result, remainingSelector, options, false, totalLimit) + : remainingHasTraversal + ? // Query existing elements to resolve traversal. + findElements(result, [remainingSelector], options, totalLimit) + : // If we don't have any more traversals, simply filter elements. + filterElements(result, [remainingSelector], options); +} +function findElements(root, sel, options, limit) { + var query = (0, lib$3._compileToken)(sel, options, root); + return find(root, query, limit); +} +function find(root, query, limit) { + if (limit === void 0) { limit = Infinity; } + var elems = (0, lib$3.prepareContext)(root, DomUtils, query.shouldTestNextSiblings); + return DomUtils.find(function (node) { return DomUtils.isTag(node) && query(node); }, elems, true, limit); +} +function filterElements(elements, sel, options) { + var els = (Array.isArray(elements) ? elements : [elements]).filter(DomUtils.isTag); + if (els.length === 0) + return els; + var query = (0, lib$3._compileToken)(sel, options); + return query === boolbase$1.trueFunc ? els : els.filter(query); +} + +}); + +var require$$0 = lib$2; + +var traversing = createCommonjsModule(function (module, exports) { +/** + * Methods for traversing the DOM structure. + * + * @module cheerio/traversing + */ +var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __spreadArray = (commonjsGlobal && commonjsGlobal.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.addBack = exports.add = exports.end = exports.slice = exports.index = exports.toArray = exports.get = exports.eq = exports.last = exports.first = exports.has = exports.not = exports.is = exports.filterArray = exports.filter = exports.map = exports.each = exports.contents = exports.children = exports.siblings = exports.prevUntil = exports.prevAll = exports.prev = exports.nextUntil = exports.nextAll = exports.next = exports.closest = exports.parentsUntil = exports.parents = exports.parent = exports.find = void 0; + +var select = __importStar(require$$0); + + + +var reSiblingSelector = /^\s*[~+]/; +/** + * Get the descendants of each element in the current set of matched elements, + * filtered by a selector, jQuery object, or element. + * + * @category Traversing + * @example + * + * ```js + * $('#fruits').find('li').length; + * //=> 3 + * $('#fruits').find($('.apple')).length; + * //=> 1 + * ``` + * + * @param selectorOrHaystack - Element to look for. + * @returns The found elements. + * @see {@link https://api.jquery.com/find/} + */ +function find(selectorOrHaystack) { + var _a; + if (!selectorOrHaystack) { + return this._make([]); + } + var context = this.toArray(); + if (typeof selectorOrHaystack !== 'string') { + var haystack = (0, utils.isCheerio)(selectorOrHaystack) + ? selectorOrHaystack.toArray() + : [selectorOrHaystack]; + return this._make(haystack.filter(function (elem) { return context.some(function (node) { return (0, _static.contains)(node, elem); }); })); + } + var elems = reSiblingSelector.test(selectorOrHaystack) + ? context + : this.children().toArray(); + var options = { + context: context, + root: (_a = this._root) === null || _a === void 0 ? void 0 : _a[0], + // Pass options that are recognized by `cheerio-select` + xmlMode: this.options.xmlMode, + lowerCaseTags: this.options.lowerCaseTags, + lowerCaseAttributeNames: this.options.lowerCaseAttributeNames, + pseudos: this.options.pseudos, + quirksMode: this.options.quirksMode, + }; + return this._make(select.select(selectorOrHaystack, elems, options)); +} +exports.find = find; +/** + * Creates a matcher, using a particular mapping function. Matchers provide a + * function that finds elements using a generating function, supporting filtering. + * + * @private + * @param matchMap - Mapping function. + * @returns - Function for wrapping generating functions. + */ +function _getMatcher(matchMap) { + return function (fn) { + var postFns = []; + for (var _i = 1; _i < arguments.length; _i++) { + postFns[_i - 1] = arguments[_i]; + } + return function (selector) { + var _a; + var matched = matchMap(fn, this); + if (selector) { + matched = filterArray(matched, selector, this.options.xmlMode, (_a = this._root) === null || _a === void 0 ? void 0 : _a[0]); + } + return this._make( + // Post processing is only necessary if there is more than one element. + this.length > 1 && matched.length > 1 + ? postFns.reduce(function (elems, fn) { return fn(elems); }, matched) + : matched); + }; + }; +} +/** Matcher that adds multiple elements for each entry in the input. */ +var _matcher = _getMatcher(function (fn, elems) { + var _a; + var ret = []; + for (var i = 0; i < elems.length; i++) { + var value = fn(elems[i]); + ret.push(value); + } + return (_a = new Array()).concat.apply(_a, ret); +}); +/** Matcher that adds at most one element for each entry in the input. */ +var _singleMatcher = _getMatcher(function (fn, elems) { + var ret = []; + for (var i = 0; i < elems.length; i++) { + var value = fn(elems[i]); + if (value !== null) { + ret.push(value); + } + } + return ret; +}); +/** + * Matcher that supports traversing until a condition is met. + * + * @returns A function usable for `*Until` methods. + */ +function _matchUntil(nextElem) { + var postFns = []; + for (var _i = 1; _i < arguments.length; _i++) { + postFns[_i - 1] = arguments[_i]; + } + // We use a variable here that is used from within the matcher. + var matches = null; + var innerMatcher = _getMatcher(function (nextElem, elems) { + var matched = []; + (0, utils.domEach)(elems, function (elem) { + for (var next_1; (next_1 = nextElem(elem)); elem = next_1) { + // FIXME: `matched` might contain duplicates here and the index is too large. + if (matches === null || matches === void 0 ? void 0 : matches(next_1, matched.length)) + break; + matched.push(next_1); + } + }); + return matched; + }).apply(void 0, __spreadArray([nextElem], postFns, false)); + return function (selector, filterSelector) { + var _this = this; + // Override `matches` variable with the new target. + matches = + typeof selector === 'string' + ? function (elem) { return select.is(elem, selector, _this.options); } + : selector + ? getFilterFn(selector) + : null; + var ret = innerMatcher.call(this, filterSelector); + // Set `matches` to `null`, so we don't waste memory. + matches = null; + return ret; + }; +} +function _removeDuplicates(elems) { + return Array.from(new Set(elems)); +} +/** + * Get the parent of each element in the current set of matched elements, + * optionally filtered by a selector. + * + * @category Traversing + * @example + * + * ```js + * $('.pear').parent().attr('id'); + * //=> fruits + * ``` + * + * @param selector - If specified filter for parent. + * @returns The parents. + * @see {@link https://api.jquery.com/parent/} + */ +exports.parent = _singleMatcher(function (_a) { + var parent = _a.parent; + return (parent && !(0, domhandler_1.isDocument)(parent) ? parent : null); +}, _removeDuplicates); +/** + * Get a set of parents filtered by `selector` of each element in the current + * set of match elements. + * + * @category Traversing + * @example + * + * ```js + * $('.orange').parents().length; + * //=> 2 + * $('.orange').parents('#fruits').length; + * //=> 1 + * ``` + * + * @param selector - If specified filter for parents. + * @returns The parents. + * @see {@link https://api.jquery.com/parents/} + */ +exports.parents = _matcher(function (elem) { + var matched = []; + while (elem.parent && !(0, domhandler_1.isDocument)(elem.parent)) { + matched.push(elem.parent); + elem = elem.parent; + } + return matched; +}, domutils_1.uniqueSort, function (elems) { return elems.reverse(); }); +/** + * Get the ancestors of each element in the current set of matched elements, up + * to but not including the element matched by the selector, DOM node, or cheerio object. + * + * @category Traversing + * @example + * + * ```js + * $('.orange').parentsUntil('#food').length; + * //=> 1 + * ``` + * + * @param selector - Selector for element to stop at. + * @param filterSelector - Optional filter for parents. + * @returns The parents. + * @see {@link https://api.jquery.com/parentsUntil/} + */ +exports.parentsUntil = _matchUntil(function (_a) { + var parent = _a.parent; + return (parent && !(0, domhandler_1.isDocument)(parent) ? parent : null); +}, domutils_1.uniqueSort, function (elems) { return elems.reverse(); }); +/** + * For each element in the set, get the first element that matches the selector + * by testing the element itself and traversing up through its ancestors in the DOM tree. + * + * @category Traversing + * @example + * + * ```js + * $('.orange').closest(); + * //=> [] + * + * $('.orange').closest('.apple'); + * // => [] + * + * $('.orange').closest('li'); + * //=> [<li class="orange">Orange</li>] + * + * $('.orange').closest('#fruits'); + * //=> [<ul id="fruits"> ... </ul>] + * ``` + * + * @param selector - Selector for the element to find. + * @returns The closest nodes. + * @see {@link https://api.jquery.com/closest/} + */ +function closest(selector) { + var _a; + var set = []; + if (!selector) { + return this._make(set); + } + var selectOpts = { + xmlMode: this.options.xmlMode, + root: (_a = this._root) === null || _a === void 0 ? void 0 : _a[0], + }; + var selectFn = typeof selector === 'string' + ? function (elem) { return select.is(elem, selector, selectOpts); } + : getFilterFn(selector); + (0, utils.domEach)(this, function (elem) { + while (elem && (0, utils.isTag)(elem)) { + if (selectFn(elem, 0)) { + // Do not add duplicate elements to the set + if (!set.includes(elem)) { + set.push(elem); + } + break; + } + elem = elem.parent; + } + }); + return this._make(set); +} +exports.closest = closest; +/** + * Gets the next sibling of the first selected element, optionally filtered by a selector. + * + * @category Traversing + * @example + * + * ```js + * $('.apple').next().hasClass('orange'); + * //=> true + * ``` + * + * @param selector - If specified filter for sibling. + * @returns The next nodes. + * @see {@link https://api.jquery.com/next/} + */ +exports.next = _singleMatcher(function (elem) { return (0, domutils_1.nextElementSibling)(elem); }); +/** + * Gets all the following siblings of the first selected element, optionally + * filtered by a selector. + * + * @category Traversing + * @example + * + * ```js + * $('.apple').nextAll(); + * //=> [<li class="orange">Orange</li>, <li class="pear">Pear</li>] + * $('.apple').nextAll('.orange'); + * //=> [<li class="orange">Orange</li>] + * ``` + * + * @param selector - If specified filter for siblings. + * @returns The next nodes. + * @see {@link https://api.jquery.com/nextAll/} + */ +exports.nextAll = _matcher(function (elem) { + var matched = []; + while (elem.next) { + elem = elem.next; + if ((0, utils.isTag)(elem)) + matched.push(elem); + } + return matched; +}, _removeDuplicates); +/** + * Gets all the following siblings up to but not including the element matched + * by the selector, optionally filtered by another selector. + * + * @category Traversing + * @example + * + * ```js + * $('.apple').nextUntil('.pear'); + * //=> [<li class="orange">Orange</li>] + * ``` + * + * @param selector - Selector for element to stop at. + * @param filterSelector - If specified filter for siblings. + * @returns The next nodes. + * @see {@link https://api.jquery.com/nextUntil/} + */ +exports.nextUntil = _matchUntil(function (el) { return (0, domutils_1.nextElementSibling)(el); }, _removeDuplicates); +/** + * Gets the previous sibling of the first selected element optionally filtered + * by a selector. + * + * @category Traversing + * @example + * + * ```js + * $('.orange').prev().hasClass('apple'); + * //=> true + * ``` + * + * @param selector - If specified filter for siblings. + * @returns The previous nodes. + * @see {@link https://api.jquery.com/prev/} + */ +exports.prev = _singleMatcher(function (elem) { return (0, domutils_1.prevElementSibling)(elem); }); +/** + * Gets all the preceding siblings of the first selected element, optionally + * filtered by a selector. + * + * @category Traversing + * @example + * + * ```js + * $('.pear').prevAll(); + * //=> [<li class="orange">Orange</li>, <li class="apple">Apple</li>] + * + * $('.pear').prevAll('.orange'); + * //=> [<li class="orange">Orange</li>] + * ``` + * + * @param selector - If specified filter for siblings. + * @returns The previous nodes. + * @see {@link https://api.jquery.com/prevAll/} + */ +exports.prevAll = _matcher(function (elem) { + var matched = []; + while (elem.prev) { + elem = elem.prev; + if ((0, utils.isTag)(elem)) + matched.push(elem); + } + return matched; +}, _removeDuplicates); +/** + * Gets all the preceding siblings up to but not including the element matched + * by the selector, optionally filtered by another selector. + * + * @category Traversing + * @example + * + * ```js + * $('.pear').prevUntil('.apple'); + * //=> [<li class="orange">Orange</li>] + * ``` + * + * @param selector - Selector for element to stop at. + * @param filterSelector - If specified filter for siblings. + * @returns The previous nodes. + * @see {@link https://api.jquery.com/prevUntil/} + */ +exports.prevUntil = _matchUntil(function (el) { return (0, domutils_1.prevElementSibling)(el); }, _removeDuplicates); +/** + * Get the siblings of each element (excluding the element) in the set of + * matched elements, optionally filtered by a selector. + * + * @category Traversing + * @example + * + * ```js + * $('.pear').siblings().length; + * //=> 2 + * + * $('.pear').siblings('.orange').length; + * //=> 1 + * ``` + * + * @param selector - If specified filter for siblings. + * @returns The siblings. + * @see {@link https://api.jquery.com/siblings/} + */ +exports.siblings = _matcher(function (elem) { + return (0, domutils_1.getSiblings)(elem).filter(function (el) { return (0, utils.isTag)(el) && el !== elem; }); +}, domutils_1.uniqueSort); +/** + * Gets the element children of each element in the set of matched elements. + * + * @category Traversing + * @example + * + * ```js + * $('#fruits').children().length; + * //=> 3 + * + * $('#fruits').children('.pear').text(); + * //=> Pear + * ``` + * + * @param selector - If specified filter for children. + * @returns The children. + * @see {@link https://api.jquery.com/children/} + */ +exports.children = _matcher(function (elem) { return (0, domutils_1.getChildren)(elem).filter(utils.isTag); }, _removeDuplicates); +/** + * Gets the children of each element in the set of matched elements, including + * text and comment nodes. + * + * @category Traversing + * @example + * + * ```js + * $('#fruits').contents().length; + * //=> 3 + * ``` + * + * @returns The children. + * @see {@link https://api.jquery.com/contents/} + */ +function contents() { + var elems = this.toArray().reduce(function (newElems, elem) { + return (0, domhandler_1.hasChildren)(elem) ? newElems.concat(elem.children) : newElems; + }, []); + return this._make(elems); +} +exports.contents = contents; +/** + * Iterates over a cheerio object, executing a function for each matched + * element. When the callback is fired, the function is fired in the context of + * the DOM element, so `this` refers to the current element, which is equivalent + * to the function parameter `element`. To break out of the `each` loop early, + * return with `false`. + * + * @category Traversing + * @example + * + * ```js + * const fruits = []; + * + * $('li').each(function (i, elem) { + * fruits[i] = $(this).text(); + * }); + * + * fruits.join(', '); + * //=> Apple, Orange, Pear + * ``` + * + * @param fn - Function to execute. + * @returns The instance itself, useful for chaining. + * @see {@link https://api.jquery.com/each/} + */ +function each(fn) { + var i = 0; + var len = this.length; + while (i < len && fn.call(this[i], i, this[i]) !== false) + ++i; + return this; +} +exports.each = each; +/** + * Pass each element in the current matched set through a function, producing a + * new Cheerio object containing the return values. The function can return an + * individual data item or an array of data items to be inserted into the + * resulting set. If an array is returned, the elements inside the array are + * inserted into the set. If the function returns null or undefined, no element + * will be inserted. + * + * @category Traversing + * @example + * + * ```js + * $('li') + * .map(function (i, el) { + * // this === el + * return $(this).text(); + * }) + * .toArray() + * .join(' '); + * //=> "apple orange pear" + * ``` + * + * @param fn - Function to execute. + * @returns The mapped elements, wrapped in a Cheerio collection. + * @see {@link https://api.jquery.com/map/} + */ +function map(fn) { + var elems = []; + for (var i = 0; i < this.length; i++) { + var el = this[i]; + var val = fn.call(el, i, el); + if (val != null) { + elems = elems.concat(val); + } + } + return this._make(elems); +} +exports.map = map; +/** + * Creates a function to test if a filter is matched. + * + * @param match - A filter. + * @returns A function that determines if a filter has been matched. + */ +function getFilterFn(match) { + if (typeof match === 'function') { + return function (el, i) { return match.call(el, i, el); }; + } + if ((0, utils.isCheerio)(match)) { + return function (el) { return Array.prototype.includes.call(match, el); }; + } + return function (el) { + return match === el; + }; +} +function filter(match) { + var _a; + return this._make(filterArray(this.toArray(), match, this.options.xmlMode, (_a = this._root) === null || _a === void 0 ? void 0 : _a[0])); +} +exports.filter = filter; +function filterArray(nodes, match, xmlMode, root) { + return typeof match === 'string' + ? select.filter(match, nodes, { xmlMode: xmlMode, root: root }) + : nodes.filter(getFilterFn(match)); +} +exports.filterArray = filterArray; +/** + * Checks the current list of elements and returns `true` if _any_ of the + * elements match the selector. If using an element or Cheerio selection, + * returns `true` if _any_ of the elements match. If using a predicate function, + * the function is executed in the context of the selected element, so `this` + * refers to the current element. + * + * @category Attributes + * @param selector - Selector for the selection. + * @returns Whether or not the selector matches an element of the instance. + * @see {@link https://api.jquery.com/is/} + */ +function is(selector) { + var nodes = this.toArray(); + return typeof selector === 'string' + ? select.some(nodes.filter(utils.isTag), selector, this.options) + : selector + ? nodes.some(getFilterFn(selector)) + : false; +} +exports.is = is; +/** + * Remove elements from the set of matched elements. Given a Cheerio object that + * represents a set of DOM elements, the `.not()` method constructs a new + * Cheerio object from a subset of the matching elements. The supplied selector + * is tested against each element; the elements that don't match the selector + * will be included in the result. + * + * The `.not()` method can take a function as its argument in the same way that + * `.filter()` does. Elements for which the function returns `true` are excluded + * from the filtered set; all other elements are included. + * + * @category Traversing + * @example <caption>Selector</caption> + * + * ```js + * $('li').not('.apple').length; + * //=> 2 + * ``` + * + * @example <caption>Function</caption> + * + * ```js + * $('li').not(function (i, el) { + * // this === el + * return $(this).attr('class') === 'orange'; + * }).length; //=> 2 + * ``` + * + * @param match - Value to look for, following the rules above. + * @param container - Optional node to filter instead. + * @returns The filtered collection. + * @see {@link https://api.jquery.com/not/} + */ +function not(match) { + var nodes = this.toArray(); + if (typeof match === 'string') { + var matches_1 = new Set(select.filter(match, nodes, this.options)); + nodes = nodes.filter(function (el) { return !matches_1.has(el); }); + } + else { + var filterFn_1 = getFilterFn(match); + nodes = nodes.filter(function (el, i) { return !filterFn_1(el, i); }); + } + return this._make(nodes); +} +exports.not = not; +/** + * Filters the set of matched elements to only those which have the given DOM + * element as a descendant or which have a descendant that matches the given + * selector. Equivalent to `.filter(':has(selector)')`. + * + * @category Traversing + * @example <caption>Selector</caption> + * + * ```js + * $('ul').has('.pear').attr('id'); + * //=> fruits + * ``` + * + * @example <caption>Element</caption> + * + * ```js + * $('ul').has($('.pear')[0]).attr('id'); + * //=> fruits + * ``` + * + * @param selectorOrHaystack - Element to look for. + * @returns The filtered collection. + * @see {@link https://api.jquery.com/has/} + */ +function has(selectorOrHaystack) { + var _this = this; + return this.filter(typeof selectorOrHaystack === 'string' + ? // Using the `:has` selector here short-circuits searches. + ":has(".concat(selectorOrHaystack, ")") + : function (_, el) { return _this._make(el).find(selectorOrHaystack).length > 0; }); +} +exports.has = has; +/** + * Will select the first element of a cheerio object. + * + * @category Traversing + * @example + * + * ```js + * $('#fruits').children().first().text(); + * //=> Apple + * ``` + * + * @returns The first element. + * @see {@link https://api.jquery.com/first/} + */ +function first() { + return this.length > 1 ? this._make(this[0]) : this; +} +exports.first = first; +/** + * Will select the last element of a cheerio object. + * + * @category Traversing + * @example + * + * ```js + * $('#fruits').children().last().text(); + * //=> Pear + * ``` + * + * @returns The last element. + * @see {@link https://api.jquery.com/last/} + */ +function last() { + return this.length > 0 ? this._make(this[this.length - 1]) : this; +} +exports.last = last; +/** + * Reduce the set of matched elements to the one at the specified index. Use + * `.eq(-i)` to count backwards from the last selected element. + * + * @category Traversing + * @example + * + * ```js + * $('li').eq(0).text(); + * //=> Apple + * + * $('li').eq(-1).text(); + * //=> Pear + * ``` + * + * @param i - Index of the element to select. + * @returns The element at the `i`th position. + * @see {@link https://api.jquery.com/eq/} + */ +function eq(i) { + var _a; + i = +i; + // Use the first identity optimization if possible + if (i === 0 && this.length <= 1) + return this; + if (i < 0) + i = this.length + i; + return this._make((_a = this[i]) !== null && _a !== void 0 ? _a : []); +} +exports.eq = eq; +function get(i) { + if (i == null) { + return this.toArray(); + } + return this[i < 0 ? this.length + i : i]; +} +exports.get = get; +/** + * Retrieve all the DOM elements contained in the jQuery set as an array. + * + * @example + * + * ```js + * $('li').toArray(); + * //=> [ {...}, {...}, {...} ] + * ``` + * + * @returns The contained items. + */ +function toArray() { + return Array.prototype.slice.call(this); +} +exports.toArray = toArray; +/** + * Search for a given element from among the matched elements. + * + * @category Traversing + * @example + * + * ```js + * $('.pear').index(); + * //=> 2 $('.orange').index('li'); + * //=> 1 + * $('.apple').index($('#fruit, li')); + * //=> 1 + * ``` + * + * @param selectorOrNeedle - Element to look for. + * @returns The index of the element. + * @see {@link https://api.jquery.com/index/} + */ +function index(selectorOrNeedle) { + var $haystack; + var needle; + if (selectorOrNeedle == null) { + $haystack = this.parent().children(); + needle = this[0]; + } + else if (typeof selectorOrNeedle === 'string') { + $haystack = this._make(selectorOrNeedle); + needle = this[0]; + } + else { + // eslint-disable-next-line @typescript-eslint/no-this-alias + $haystack = this; + needle = (0, utils.isCheerio)(selectorOrNeedle) + ? selectorOrNeedle[0] + : selectorOrNeedle; + } + return Array.prototype.indexOf.call($haystack, needle); +} +exports.index = index; +/** + * Gets the elements matching the specified range (0-based position). + * + * @category Traversing + * @example + * + * ```js + * $('li').slice(1).eq(0).text(); + * //=> 'Orange' + * + * $('li').slice(1, 2).length; + * //=> 1 + * ``` + * + * @param start - An position at which the elements begin to be selected. If + * negative, it indicates an offset from the end of the set. + * @param end - An position at which the elements stop being selected. If + * negative, it indicates an offset from the end of the set. If omitted, the + * range continues until the end of the set. + * @returns The elements matching the specified range. + * @see {@link https://api.jquery.com/slice/} + */ +function slice(start, end) { + return this._make(Array.prototype.slice.call(this, start, end)); +} +exports.slice = slice; +/** + * End the most recent filtering operation in the current chain and return the + * set of matched elements to its previous state. + * + * @category Traversing + * @example + * + * ```js + * $('li').eq(0).end().length; + * //=> 3 + * ``` + * + * @returns The previous state of the set of matched elements. + * @see {@link https://api.jquery.com/end/} + */ +function end() { + var _a; + return (_a = this.prevObject) !== null && _a !== void 0 ? _a : this._make([]); +} +exports.end = end; +/** + * Add elements to the set of matched elements. + * + * @category Traversing + * @example + * + * ```js + * $('.apple').add('.orange').length; + * //=> 2 + * ``` + * + * @param other - Elements to add. + * @param context - Optionally the context of the new selection. + * @returns The combined set. + * @see {@link https://api.jquery.com/add/} + */ +function add(other, context) { + var selection = this._make(other, context); + var contents = (0, domutils_1.uniqueSort)(__spreadArray(__spreadArray([], this.get(), true), selection.get(), true)); + return this._make(contents); +} +exports.add = add; +/** + * Add the previous set of elements on the stack to the current set, optionally + * filtered by a selector. + * + * @category Traversing + * @example + * + * ```js + * $('li').eq(0).addBack('.orange').length; + * //=> 2 + * ``` + * + * @param selector - Selector for the elements to add. + * @returns The combined set. + * @see {@link https://api.jquery.com/addBack/} + */ +function addBack(selector) { + return this.prevObject + ? this.add(selector ? this.prevObject.filter(selector) : this.prevObject) + : this; +} +exports.addBack = addBack; + +}); + +var parse = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.update = exports.getParse = void 0; + + +/** + * Get the parse function with options. + * + * @param parser - The parser function. + * @returns The parse function with options. + */ +function getParse(parser) { + /** + * Parse a HTML string or a node. + * + * @param content - The HTML string or node. + * @param options - The parser options. + * @param isDocument - If `content` is a document. + * @param context - The context node in the DOM tree. + * @returns The parsed document node. + */ + return function parse(content, options, isDocument, context) { + if (typeof Buffer !== 'undefined' && Buffer.isBuffer(content)) { + content = content.toString(); + } + if (typeof content === 'string') { + return parser(content, options, isDocument, context); + } + var doc = content; + if (!Array.isArray(doc) && (0, domhandler_1.isDocument)(doc)) { + // If `doc` is already a root, just return it + return doc; + } + // Add conent to new root element + var root = new domhandler_1.Document([]); + // Update the DOM using the root + update(doc, root); + return root; + }; +} +exports.getParse = getParse; +/** + * Update the dom structure, for one changed layer. + * + * @param newChilds - The new children. + * @param parent - The new parent. + * @returns The parent node. + */ +function update(newChilds, parent) { + // Normalize + var arr = Array.isArray(newChilds) ? newChilds : [newChilds]; + // Update parent + if (parent) { + parent.children = arr; + } + else { + parent = null; + } + // Update neighbors + for (var i = 0; i < arr.length; i++) { + var node = arr[i]; + // Cleanly remove existing nodes from their previous structures. + if (node.parent && node.parent.children !== arr) { + (0, domutils_1.removeElement)(node); + } + if (parent) { + node.prev = arr[i - 1] || null; + node.next = arr[i + 1] || null; + } + else { + node.prev = node.next = null; + } + node.parent = parent; + } + return parent; +} +exports.update = update; + +}); + +var manipulation = createCommonjsModule(function (module, exports) { +/** + * Methods for modifying the DOM structure. + * + * @module cheerio/manipulation + */ +var __spreadArray = (commonjsGlobal && commonjsGlobal.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.clone = exports.text = exports.toString = exports.html = exports.empty = exports.replaceWith = exports.remove = exports.insertBefore = exports.before = exports.insertAfter = exports.after = exports.wrapAll = exports.unwrap = exports.wrapInner = exports.wrap = exports.prepend = exports.append = exports.prependTo = exports.appendTo = exports._makeDomArray = void 0; + + + + + +/** + * Create an array of nodes, recursing into arrays and parsing strings if necessary. + * + * @private + * @category Manipulation + * @param elem - Elements to make an array of. + * @param clone - Optionally clone nodes. + * @returns The array of nodes. + */ +function _makeDomArray(elem, clone) { + var _this = this; + if (elem == null) { + return []; + } + if ((0, utils.isCheerio)(elem)) { + return clone ? (0, utils.cloneDom)(elem.get()) : elem.get(); + } + if (Array.isArray(elem)) { + return elem.reduce(function (newElems, el) { return newElems.concat(_this._makeDomArray(el, clone)); }, []); + } + if (typeof elem === 'string') { + return this._parse(elem, this.options, false, null).children; + } + return clone ? (0, utils.cloneDom)([elem]) : [elem]; +} +exports._makeDomArray = _makeDomArray; +function _insert(concatenator) { + return function () { + var _this = this; + var elems = []; + for (var _i = 0; _i < arguments.length; _i++) { + elems[_i] = arguments[_i]; + } + var lastIdx = this.length - 1; + return (0, utils.domEach)(this, function (el, i) { + if (!(0, domhandler_1.hasChildren)(el)) + return; + var domSrc = typeof elems[0] === 'function' + ? elems[0].call(el, i, _this._render(el.children)) + : elems; + var dom = _this._makeDomArray(domSrc, i < lastIdx); + concatenator(dom, el.children, el); + }); + }; +} +/** + * Modify an array in-place, removing some number of elements and adding new + * elements directly following them. + * + * @private + * @category Manipulation + * @param array - Target array to splice. + * @param spliceIdx - Index at which to begin changing the array. + * @param spliceCount - Number of elements to remove from the array. + * @param newElems - Elements to insert into the array. + * @param parent - The parent of the node. + * @returns The spliced array. + */ +function uniqueSplice(array, spliceIdx, spliceCount, newElems, parent) { + var _a, _b; + var spliceArgs = __spreadArray([ + spliceIdx, + spliceCount + ], newElems, true); + var prev = spliceIdx === 0 ? null : array[spliceIdx - 1]; + var next = spliceIdx + spliceCount >= array.length + ? null + : array[spliceIdx + spliceCount]; + /* + * Before splicing in new elements, ensure they do not already appear in the + * current array. + */ + for (var idx = 0; idx < newElems.length; ++idx) { + var node = newElems[idx]; + var oldParent = node.parent; + if (oldParent) { + var oldSiblings = oldParent.children; + var prevIdx = oldSiblings.indexOf(node); + if (prevIdx > -1) { + oldParent.children.splice(prevIdx, 1); + if (parent === oldParent && spliceIdx > prevIdx) { + spliceArgs[0]--; + } + } + } + node.parent = parent; + if (node.prev) { + node.prev.next = (_a = node.next) !== null && _a !== void 0 ? _a : null; + } + if (node.next) { + node.next.prev = (_b = node.prev) !== null && _b !== void 0 ? _b : null; + } + node.prev = idx === 0 ? prev : newElems[idx - 1]; + node.next = idx === newElems.length - 1 ? next : newElems[idx + 1]; + } + if (prev) { + prev.next = newElems[0]; + } + if (next) { + next.prev = newElems[newElems.length - 1]; + } + return array.splice.apply(array, spliceArgs); +} +/** + * Insert every element in the set of matched elements to the end of the target. + * + * @category Manipulation + * @example + * + * ```js + * $('<li class="plum">Plum</li>').appendTo('#fruits'); + * $.html(); + * //=> <ul id="fruits"> + * // <li class="apple">Apple</li> + * // <li class="orange">Orange</li> + * // <li class="pear">Pear</li> + * // <li class="plum">Plum</li> + * // </ul> + * ``` + * + * @param target - Element to append elements to. + * @returns The instance itself. + * @see {@link https://api.jquery.com/appendTo/} + */ +function appendTo(target) { + var appendTarget = (0, utils.isCheerio)(target) ? target : this._make(target); + appendTarget.append(this); + return this; +} +exports.appendTo = appendTo; +/** + * Insert every element in the set of matched elements to the beginning of the target. + * + * @category Manipulation + * @example + * + * ```js + * $('<li class="plum">Plum</li>').prependTo('#fruits'); + * $.html(); + * //=> <ul id="fruits"> + * // <li class="plum">Plum</li> + * // <li class="apple">Apple</li> + * // <li class="orange">Orange</li> + * // <li class="pear">Pear</li> + * // </ul> + * ``` + * + * @param target - Element to prepend elements to. + * @returns The instance itself. + * @see {@link https://api.jquery.com/prependTo/} + */ +function prependTo(target) { + var prependTarget = (0, utils.isCheerio)(target) ? target : this._make(target); + prependTarget.prepend(this); + return this; +} +exports.prependTo = prependTo; +/** + * Inserts content as the _last_ child of each of the selected elements. + * + * @category Manipulation + * @example + * + * ```js + * $('ul').append('<li class="plum">Plum</li>'); + * $.html(); + * //=> <ul id="fruits"> + * // <li class="apple">Apple</li> + * // <li class="orange">Orange</li> + * // <li class="pear">Pear</li> + * // <li class="plum">Plum</li> + * // </ul> + * ``` + * + * @see {@link https://api.jquery.com/append/} + */ +exports.append = _insert(function (dom, children, parent) { + uniqueSplice(children, children.length, 0, dom, parent); +}); +/** + * Inserts content as the _first_ child of each of the selected elements. + * + * @category Manipulation + * @example + * + * ```js + * $('ul').prepend('<li class="plum">Plum</li>'); + * $.html(); + * //=> <ul id="fruits"> + * // <li class="plum">Plum</li> + * // <li class="apple">Apple</li> + * // <li class="orange">Orange</li> + * // <li class="pear">Pear</li> + * // </ul> + * ``` + * + * @see {@link https://api.jquery.com/prepend/} + */ +exports.prepend = _insert(function (dom, children, parent) { + uniqueSplice(children, 0, 0, dom, parent); +}); +function _wrap(insert) { + return function (wrapper) { + var lastIdx = this.length - 1; + var lastParent = this.parents().last(); + for (var i = 0; i < this.length; i++) { + var el = this[i]; + var wrap_1 = typeof wrapper === 'function' + ? wrapper.call(el, i, el) + : typeof wrapper === 'string' && !(0, utils.isHtml)(wrapper) + ? lastParent.find(wrapper).clone() + : wrapper; + var wrapperDom = this._makeDomArray(wrap_1, i < lastIdx)[0]; + if (!wrapperDom || !(0, domhandler_1.hasChildren)(wrapperDom)) + continue; + var elInsertLocation = wrapperDom; + /* + * Find the deepest child. Only consider the first tag child of each node + * (ignore text); stop if no children are found. + */ + var j = 0; + while (j < elInsertLocation.children.length) { + var child = elInsertLocation.children[j]; + if ((0, utils.isTag)(child)) { + elInsertLocation = child; + j = 0; + } + else { + j++; + } + } + insert(el, elInsertLocation, [wrapperDom]); + } + return this; + }; +} +/** + * The .wrap() function can take any string or object that could be passed to + * the $() factory function to specify a DOM structure. This structure may be + * nested several levels deep, but should contain only one inmost element. A + * copy of this structure will be wrapped around each of the elements in the set + * of matched elements. This method returns the original set of elements for + * chaining purposes. + * + * @category Manipulation + * @example + * + * ```js + * const redFruit = $('<div class="red-fruit"></div>'); + * $('.apple').wrap(redFruit); + * + * //=> <ul id="fruits"> + * // <div class="red-fruit"> + * // <li class="apple">Apple</li> + * // </div> + * // <li class="orange">Orange</li> + * // <li class="plum">Plum</li> + * // </ul> + * + * const healthy = $('<div class="healthy"></div>'); + * $('li').wrap(healthy); + * + * //=> <ul id="fruits"> + * // <div class="healthy"> + * // <li class="apple">Apple</li> + * // </div> + * // <div class="healthy"> + * // <li class="orange">Orange</li> + * // </div> + * // <div class="healthy"> + * // <li class="plum">Plum</li> + * // </div> + * // </ul> + * ``` + * + * @param wrapper - The DOM structure to wrap around each element in the selection. + * @see {@link https://api.jquery.com/wrap/} + */ +exports.wrap = _wrap(function (el, elInsertLocation, wrapperDom) { + var parent = el.parent; + if (!parent) + return; + var siblings = parent.children; + var index = siblings.indexOf(el); + (0, parse.update)([el], elInsertLocation); + /* + * The previous operation removed the current element from the `siblings` + * array, so the `dom` array can be inserted without removing any + * additional elements. + */ + uniqueSplice(siblings, index, 0, wrapperDom, parent); +}); +/** + * The .wrapInner() function can take any string or object that could be passed + * to the $() factory function to specify a DOM structure. This structure may be + * nested several levels deep, but should contain only one inmost element. The + * structure will be wrapped around the content of each of the elements in the + * set of matched elements. + * + * @category Manipulation + * @example + * + * ```js + * const redFruit = $('<div class="red-fruit"></div>'); + * $('.apple').wrapInner(redFruit); + * + * //=> <ul id="fruits"> + * // <li class="apple"> + * // <div class="red-fruit">Apple</div> + * // </li> + * // <li class="orange">Orange</li> + * // <li class="pear">Pear</li> + * // </ul> + * + * const healthy = $('<div class="healthy"></div>'); + * $('li').wrapInner(healthy); + * + * //=> <ul id="fruits"> + * // <li class="apple"> + * // <div class="healthy">Apple</div> + * // </li> + * // <li class="orange"> + * // <div class="healthy">Orange</div> + * // </li> + * // <li class="pear"> + * // <div class="healthy">Pear</div> + * // </li> + * // </ul> + * ``` + * + * @param wrapper - The DOM structure to wrap around the content of each element + * in the selection. + * @returns The instance itself, for chaining. + * @see {@link https://api.jquery.com/wrapInner/} + */ +exports.wrapInner = _wrap(function (el, elInsertLocation, wrapperDom) { + if (!(0, domhandler_1.hasChildren)(el)) + return; + (0, parse.update)(el.children, elInsertLocation); + (0, parse.update)(wrapperDom, el); +}); +/** + * The .unwrap() function, removes the parents of the set of matched elements + * from the DOM, leaving the matched elements in their place. + * + * @category Manipulation + * @example <caption>without selector</caption> + * + * ```js + * const $ = cheerio.load( + * '<div id=test>\n <div><p>Hello</p></div>\n <div><p>World</p></div>\n</div>' + * ); + * $('#test p').unwrap(); + * + * //=> <div id=test> + * // <p>Hello</p> + * // <p>World</p> + * // </div> + * ``` + * + * @example <caption>with selector</caption> + * + * ```js + * const $ = cheerio.load( + * '<div id=test>\n <p>Hello</p>\n <b><p>World</p></b>\n</div>' + * ); + * $('#test p').unwrap('b'); + * + * //=> <div id=test> + * // <p>Hello</p> + * // <p>World</p> + * // </div> + * ``` + * + * @param selector - A selector to check the parent element against. If an + * element's parent does not match the selector, the element won't be unwrapped. + * @returns The instance itself, for chaining. + * @see {@link https://api.jquery.com/unwrap/} + */ +function unwrap(selector) { + var _this = this; + this.parent(selector) + .not('body') + .each(function (_, el) { + _this._make(el).replaceWith(el.children); + }); + return this; +} +exports.unwrap = unwrap; +/** + * The .wrapAll() function can take any string or object that could be passed to + * the $() function to specify a DOM structure. This structure may be nested + * several levels deep, but should contain only one inmost element. The + * structure will be wrapped around all of the elements in the set of matched + * elements, as a single group. + * + * @category Manipulation + * @example <caption>With markup passed to `wrapAll`</caption> + * + * ```js + * const $ = cheerio.load( + * '<div class="container"><div class="inner">First</div><div class="inner">Second</div></div>' + * ); + * $('.inner').wrapAll("<div class='new'></div>"); + * + * //=> <div class="container"> + * // <div class='new'> + * // <div class="inner">First</div> + * // <div class="inner">Second</div> + * // </div> + * // </div> + * ``` + * + * @example <caption>With an existing cheerio instance</caption> + * + * ```js + * const $ = cheerio.load( + * '<span>Span 1</span><strong>Strong</strong><span>Span 2</span>' + * ); + * const wrap = $('<div><p><em><b></b></em></p></div>'); + * $('span').wrapAll(wrap); + * + * //=> <div> + * // <p> + * // <em> + * // <b> + * // <span>Span 1</span> + * // <span>Span 2</span> + * // </b> + * // </em> + * // </p> + * // </div> + * // <strong>Strong</strong> + * ``` + * + * @param wrapper - The DOM structure to wrap around all matched elements in the + * selection. + * @returns The instance itself. + * @see {@link https://api.jquery.com/wrapAll/} + */ +function wrapAll(wrapper) { + var el = this[0]; + if (el) { + var wrap_2 = this._make(typeof wrapper === 'function' ? wrapper.call(el, 0, el) : wrapper).insertBefore(el); + // If html is given as wrapper, wrap may contain text elements + var elInsertLocation = void 0; + for (var i = 0; i < wrap_2.length; i++) { + if (wrap_2[i].type === 'tag') + elInsertLocation = wrap_2[i]; + } + var j = 0; + /* + * Find the deepest child. Only consider the first tag child of each node + * (ignore text); stop if no children are found. + */ + while (elInsertLocation && j < elInsertLocation.children.length) { + var child = elInsertLocation.children[j]; + if (child.type === 'tag') { + elInsertLocation = child; + j = 0; + } + else { + j++; + } + } + if (elInsertLocation) + this._make(elInsertLocation).append(this); + } + return this; +} +exports.wrapAll = wrapAll; +/* eslint-disable jsdoc/check-param-names*/ +/** + * Insert content next to each element in the set of matched elements. + * + * @category Manipulation + * @example + * + * ```js + * $('.apple').after('<li class="plum">Plum</li>'); + * $.html(); + * //=> <ul id="fruits"> + * // <li class="apple">Apple</li> + * // <li class="plum">Plum</li> + * // <li class="orange">Orange</li> + * // <li class="pear">Pear</li> + * // </ul> + * ``` + * + * @param content - HTML string, DOM element, array of DOM elements or Cheerio + * to insert after each element in the set of matched elements. + * @returns The instance itself. + * @see {@link https://api.jquery.com/after/} + */ +function after() { + var _this = this; + var elems = []; + for (var _i = 0; _i < arguments.length; _i++) { + elems[_i] = arguments[_i]; + } + var lastIdx = this.length - 1; + return (0, utils.domEach)(this, function (el, i) { + var parent = el.parent; + if (!(0, domhandler_1.hasChildren)(el) || !parent) { + return; + } + var siblings = parent.children; + var index = siblings.indexOf(el); + // If not found, move on + /* istanbul ignore next */ + if (index < 0) + return; + var domSrc = typeof elems[0] === 'function' + ? elems[0].call(el, i, _this._render(el.children)) + : elems; + var dom = _this._makeDomArray(domSrc, i < lastIdx); + // Add element after `this` element + uniqueSplice(siblings, index + 1, 0, dom, parent); + }); +} +exports.after = after; +/* eslint-enable jsdoc/check-param-names*/ +/** + * Insert every element in the set of matched elements after the target. + * + * @category Manipulation + * @example + * + * ```js + * $('<li class="plum">Plum</li>').insertAfter('.apple'); + * $.html(); + * //=> <ul id="fruits"> + * // <li class="apple">Apple</li> + * // <li class="plum">Plum</li> + * // <li class="orange">Orange</li> + * // <li class="pear">Pear</li> + * // </ul> + * ``` + * + * @param target - Element to insert elements after. + * @returns The set of newly inserted elements. + * @see {@link https://api.jquery.com/insertAfter/} + */ +function insertAfter(target) { + var _this = this; + if (typeof target === 'string') { + target = this._make(target); + } + this.remove(); + var clones = []; + this._makeDomArray(target).forEach(function (el) { + var clonedSelf = _this.clone().toArray(); + var parent = el.parent; + if (!parent) { + return; + } + var siblings = parent.children; + var index = siblings.indexOf(el); + // If not found, move on + /* istanbul ignore next */ + if (index < 0) + return; + // Add cloned `this` element(s) after target element + uniqueSplice(siblings, index + 1, 0, clonedSelf, parent); + clones.push.apply(clones, clonedSelf); + }); + return this._make(clones); +} +exports.insertAfter = insertAfter; +/* eslint-disable jsdoc/check-param-names*/ +/** + * Insert content previous to each element in the set of matched elements. + * + * @category Manipulation + * @example + * + * ```js + * $('.apple').before('<li class="plum">Plum</li>'); + * $.html(); + * //=> <ul id="fruits"> + * // <li class="plum">Plum</li> + * // <li class="apple">Apple</li> + * // <li class="orange">Orange</li> + * // <li class="pear">Pear</li> + * // </ul> + * ``` + * + * @param content - HTML string, DOM element, array of DOM elements or Cheerio + * to insert before each element in the set of matched elements. + * @returns The instance itself. + * @see {@link https://api.jquery.com/before/} + */ +function before() { + var _this = this; + var elems = []; + for (var _i = 0; _i < arguments.length; _i++) { + elems[_i] = arguments[_i]; + } + var lastIdx = this.length - 1; + return (0, utils.domEach)(this, function (el, i) { + var parent = el.parent; + if (!(0, domhandler_1.hasChildren)(el) || !parent) { + return; + } + var siblings = parent.children; + var index = siblings.indexOf(el); + // If not found, move on + /* istanbul ignore next */ + if (index < 0) + return; + var domSrc = typeof elems[0] === 'function' + ? elems[0].call(el, i, _this._render(el.children)) + : elems; + var dom = _this._makeDomArray(domSrc, i < lastIdx); + // Add element before `el` element + uniqueSplice(siblings, index, 0, dom, parent); + }); +} +exports.before = before; +/* eslint-enable jsdoc/check-param-names*/ +/** + * Insert every element in the set of matched elements before the target. + * + * @category Manipulation + * @example + * + * ```js + * $('<li class="plum">Plum</li>').insertBefore('.apple'); + * $.html(); + * //=> <ul id="fruits"> + * // <li class="plum">Plum</li> + * // <li class="apple">Apple</li> + * // <li class="orange">Orange</li> + * // <li class="pear">Pear</li> + * // </ul> + * ``` + * + * @param target - Element to insert elements before. + * @returns The set of newly inserted elements. + * @see {@link https://api.jquery.com/insertBefore/} + */ +function insertBefore(target) { + var _this = this; + var targetArr = this._make(target); + this.remove(); + var clones = []; + (0, utils.domEach)(targetArr, function (el) { + var clonedSelf = _this.clone().toArray(); + var parent = el.parent; + if (!parent) { + return; + } + var siblings = parent.children; + var index = siblings.indexOf(el); + // If not found, move on + /* istanbul ignore next */ + if (index < 0) + return; + // Add cloned `this` element(s) after target element + uniqueSplice(siblings, index, 0, clonedSelf, parent); + clones.push.apply(clones, clonedSelf); + }); + return this._make(clones); +} +exports.insertBefore = insertBefore; +/** + * Removes the set of matched elements from the DOM and all their children. + * `selector` filters the set of matched elements to be removed. + * + * @category Manipulation + * @example + * + * ```js + * $('.pear').remove(); + * $.html(); + * //=> <ul id="fruits"> + * // <li class="apple">Apple</li> + * // <li class="orange">Orange</li> + * // </ul> + * ``` + * + * @param selector - Optional selector for elements to remove. + * @returns The instance itself. + * @see {@link https://api.jquery.com/remove/} + */ +function remove(selector) { + // Filter if we have selector + var elems = selector ? this.filter(selector) : this; + (0, utils.domEach)(elems, function (el) { + (0, domutils_1.removeElement)(el); + el.prev = el.next = el.parent = null; + }); + return this; +} +exports.remove = remove; +/** + * Replaces matched elements with `content`. + * + * @category Manipulation + * @example + * + * ```js + * const plum = $('<li class="plum">Plum</li>'); + * $('.pear').replaceWith(plum); + * $.html(); + * //=> <ul id="fruits"> + * // <li class="apple">Apple</li> + * // <li class="orange">Orange</li> + * // <li class="plum">Plum</li> + * // </ul> + * ``` + * + * @param content - Replacement for matched elements. + * @returns The instance itself. + * @see {@link https://api.jquery.com/replaceWith/} + */ +function replaceWith(content) { + var _this = this; + return (0, utils.domEach)(this, function (el, i) { + var parent = el.parent; + if (!parent) { + return; + } + var siblings = parent.children; + var cont = typeof content === 'function' ? content.call(el, i, el) : content; + var dom = _this._makeDomArray(cont); + /* + * In the case that `dom` contains nodes that already exist in other + * structures, ensure those nodes are properly removed. + */ + (0, parse.update)(dom, null); + var index = siblings.indexOf(el); + // Completely remove old element + uniqueSplice(siblings, index, 1, dom, parent); + if (!dom.includes(el)) { + el.parent = el.prev = el.next = null; + } + }); +} +exports.replaceWith = replaceWith; +/** + * Empties an element, removing all its children. + * + * @category Manipulation + * @example + * + * ```js + * $('ul').empty(); + * $.html(); + * //=> <ul id="fruits"></ul> + * ``` + * + * @returns The instance itself. + * @see {@link https://api.jquery.com/empty/} + */ +function empty() { + return (0, utils.domEach)(this, function (el) { + if (!(0, domhandler_1.hasChildren)(el)) + return; + el.children.forEach(function (child) { + child.next = child.prev = child.parent = null; + }); + el.children.length = 0; + }); +} +exports.empty = empty; +function html(str) { + var _this = this; + if (str === undefined) { + var el = this[0]; + if (!el || !(0, domhandler_1.hasChildren)(el)) + return null; + return this._render(el.children); + } + return (0, utils.domEach)(this, function (el) { + if (!(0, domhandler_1.hasChildren)(el)) + return; + el.children.forEach(function (child) { + child.next = child.prev = child.parent = null; + }); + var content = (0, utils.isCheerio)(str) + ? str.toArray() + : _this._parse("".concat(str), _this.options, false, el).children; + (0, parse.update)(content, el); + }); +} +exports.html = html; +/** + * Turns the collection to a string. Alias for `.html()`. + * + * @category Manipulation + * @returns The rendered document. + */ +function toString() { + return this._render(this); +} +exports.toString = toString; +function text(str) { + var _this = this; + // If `str` is undefined, act as a "getter" + if (str === undefined) { + return (0, _static.text)(this); + } + if (typeof str === 'function') { + // Function support + return (0, utils.domEach)(this, function (el, i) { + return _this._make(el).text(str.call(el, i, (0, _static.text)([el]))); + }); + } + // Append text node to each selected elements + return (0, utils.domEach)(this, function (el) { + if (!(0, domhandler_1.hasChildren)(el)) + return; + el.children.forEach(function (child) { + child.next = child.prev = child.parent = null; + }); + var textNode = new domhandler_1.Text("".concat(str)); + (0, parse.update)(textNode, el); + }); +} +exports.text = text; +/** + * Clone the cheerio object. + * + * @category Manipulation + * @example + * + * ```js + * const moreFruit = $('#fruits').clone(); + * ``` + * + * @returns The cloned object. + * @see {@link https://api.jquery.com/clone/} + */ +function clone() { + return this._make((0, utils.cloneDom)(this.get())); +} +exports.clone = clone; + +}); + +var css_1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.css = void 0; + +/** + * Set multiple CSS properties for every matched element. + * + * @category CSS + * @param prop - The names of the properties. + * @param val - The new values. + * @returns The instance itself. + * @see {@link https://api.jquery.com/css/} + */ +function css(prop, val) { + if ((prop != null && val != null) || + // When `prop` is a "plain" object + (typeof prop === 'object' && !Array.isArray(prop))) { + return (0, utils.domEach)(this, function (el, i) { + if ((0, utils.isTag)(el)) { + // `prop` can't be an array here anymore. + setCss(el, prop, val, i); + } + }); + } + if (this.length === 0) { + return undefined; + } + return getCss(this[0], prop); +} +exports.css = css; +/** + * Set styles of all elements. + * + * @private + * @param el - Element to set style of. + * @param prop - Name of property. + * @param value - Value to set property to. + * @param idx - Optional index within the selection. + */ +function setCss(el, prop, value, idx) { + if (typeof prop === 'string') { + var styles = getCss(el); + var val = typeof value === 'function' ? value.call(el, idx, styles[prop]) : value; + if (val === '') { + delete styles[prop]; + } + else if (val != null) { + styles[prop] = val; + } + el.attribs['style'] = stringify(styles); + } + else if (typeof prop === 'object') { + Object.keys(prop).forEach(function (k, i) { + setCss(el, k, prop[k], i); + }); + } +} +function getCss(el, prop) { + if (!el || !(0, utils.isTag)(el)) + return; + var styles = parse(el.attribs['style']); + if (typeof prop === 'string') { + return styles[prop]; + } + if (Array.isArray(prop)) { + var newStyles_1 = {}; + prop.forEach(function (item) { + if (styles[item] != null) { + newStyles_1[item] = styles[item]; + } + }); + return newStyles_1; + } + return styles; +} +/** + * Stringify `obj` to styles. + * + * @private + * @category CSS + * @param obj - Object to stringify. + * @returns The serialized styles. + */ +function stringify(obj) { + return Object.keys(obj).reduce(function (str, prop) { return "".concat(str).concat(str ? ' ' : '').concat(prop, ": ").concat(obj[prop], ";"); }, ''); +} +/** + * Parse `styles`. + * + * @private + * @category CSS + * @param styles - Styles to be parsed. + * @returns The parsed styles. + */ +function parse(styles) { + styles = (styles || '').trim(); + if (!styles) + return {}; + var obj = {}; + var key; + for (var _i = 0, _a = styles.split(';'); _i < _a.length; _i++) { + var str = _a[_i]; + var n = str.indexOf(':'); + // If there is no :, or if it is the first/last character, add to the previous item's value + if (n < 1 || n === str.length - 1) { + var trimmed = str.trimEnd(); + if (trimmed.length > 0 && key !== undefined) { + obj[key] += ";".concat(trimmed); + } + } + else { + key = str.slice(0, n).trim(); + obj[key] = str.slice(n + 1).trim(); + } + } + return obj; +} + +}); + +var forms = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serializeArray = exports.serialize = void 0; + +/* + * https://github.com/jquery/jquery/blob/2.1.3/src/manipulation/var/rcheckableType.js + * https://github.com/jquery/jquery/blob/2.1.3/src/serialize.js + */ +var submittableSelector = 'input,select,textarea,keygen'; +var r20 = /%20/g; +var rCRLF = /\r?\n/g; +/** + * Encode a set of form elements as a string for submission. + * + * @category Forms + * @example + * + * ```js + * $('<form><input name="foo" value="bar" /></form>').serialize(); + * //=> 'foo=bar' + * ``` + * + * @returns The serialized form. + * @see {@link https://api.jquery.com/serialize/} + */ +function serialize() { + // Convert form elements into name/value objects + var arr = this.serializeArray(); + // Serialize each element into a key/value string + var retArr = arr.map(function (data) { + return "".concat(encodeURIComponent(data.name), "=").concat(encodeURIComponent(data.value)); + }); + // Return the resulting serialization + return retArr.join('&').replace(r20, '+'); +} +exports.serialize = serialize; +/** + * Encode a set of form elements as an array of names and values. + * + * @category Forms + * @example + * + * ```js + * $('<form><input name="foo" value="bar" /></form>').serializeArray(); + * //=> [ { name: 'foo', value: 'bar' } ] + * ``` + * + * @returns The serialized form. + * @see {@link https://api.jquery.com/serializeArray/} + */ +function serializeArray() { + var _this = this; + // Resolve all form elements from either forms or collections of form elements + return this.map(function (_, elem) { + var $elem = _this._make(elem); + if ((0, utils.isTag)(elem) && elem.name === 'form') { + return $elem.find(submittableSelector).toArray(); + } + return $elem.filter(submittableSelector).toArray(); + }) + .filter( + // Verify elements have a name (`attr.name`) and are not disabled (`:enabled`) + '[name!=""]:enabled' + + // And cannot be clicked (`[type=submit]`) or are used in `x-www-form-urlencoded` (`[type=file]`) + ':not(:submit, :button, :image, :reset, :file)' + + // And are either checked/don't have a checkable state + ':matches([checked], :not(:checkbox, :radio))' + // Convert each of the elements to its value(s) + ) + .map(function (_, elem) { + var _a; + var $elem = _this._make(elem); + var name = $elem.attr('name'); // We have filtered for elements with a name before. + // If there is no value set (e.g. `undefined`, `null`), then default value to empty + var value = (_a = $elem.val()) !== null && _a !== void 0 ? _a : ''; + // If we have an array of values (e.g. `<select multiple>`), return an array of key/value pairs + if (Array.isArray(value)) { + return value.map(function (val) { + /* + * We trim replace any line endings (e.g. `\r` or `\r\n` with `\r\n`) to guarantee consistency across platforms + * These can occur inside of `<textarea>'s` + */ + return ({ name: name, value: val.replace(rCRLF, '\r\n') }); + }); + } + // Otherwise (e.g. `<input type="text">`, return only one key/value pair + return { name: name, value: value.replace(rCRLF, '\r\n') }; + }) + .toArray(); +} +exports.serializeArray = serializeArray; + +}); + +var cheerio = createCommonjsModule(function (module, exports) { +var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Cheerio = void 0; +var Attributes = __importStar(attributes$1); +var Traversing = __importStar(traversing); +var Manipulation = __importStar(manipulation); +var Css = __importStar(css_1); +var Forms = __importStar(forms); +var Cheerio = /** @class */ (function () { + /** + * Instance of cheerio. Methods are specified in the modules. Usage of this + * constructor is not recommended. Please use `$.load` instead. + * + * @private + * @param elements - The new selection. + * @param root - Sets the root node. + * @param options - Options for the instance. + */ + function Cheerio(elements, root, options) { + this.length = 0; + this.options = options; + this._root = root; + if (elements) { + for (var idx = 0; idx < elements.length; idx++) { + this[idx] = elements[idx]; + } + this.length = elements.length; + } + } + return Cheerio; +}()); +exports.Cheerio = Cheerio; +/** Set a signature of the object. */ +Cheerio.prototype.cheerio = '[cheerio object]'; +/* + * Make cheerio an array-like object + */ +Cheerio.prototype.splice = Array.prototype.splice; +// Support for (const element of $(...)) iteration: +Cheerio.prototype[Symbol.iterator] = Array.prototype[Symbol.iterator]; +// Plug in the API +Object.assign(Cheerio.prototype, Attributes, Traversing, Manipulation, Css, Forms); + +}); + +var load = createCommonjsModule(function (module, exports) { +var __extends = (commonjsGlobal && commonjsGlobal.__extends) || (function () { + var extendStatics = function (d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; + return extendStatics(d, b); + }; + return function (d, b) { + if (typeof b !== "function" && b !== null) + throw new TypeError("Class extends value " + String(b) + " is not a constructor or null"); + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getLoad = void 0; +var options_js_1 = __importStar(options); +var staticMethods = __importStar(_static); + + +function getLoad(parse, render) { + /** + * Create a querying function, bound to a document created from the provided markup. + * + * Note that similar to web browser contexts, this operation may introduce + * `<html>`, `<head>`, and `<body>` elements; set `isDocument` to `false` to + * switch to fragment mode and disable this. + * + * @param content - Markup to be loaded. + * @param options - Options for the created instance. + * @param isDocument - Allows parser to be switched to fragment mode. + * @returns The loaded document. + * @see {@link https://cheerio.js.org#loading} for additional usage information. + */ + return function load(content, options, isDocument) { + if (isDocument === void 0) { isDocument = true; } + if (content == null) { + throw new Error('cheerio.load() expects a string'); + } + var internalOpts = __assign(__assign({}, options_js_1.default), (0, options_js_1.flatten)(options)); + var initialRoot = parse(content, internalOpts, isDocument, null); + /** Create an extended class here, so that extensions only live on one instance. */ + var LoadedCheerio = /** @class */ (function (_super) { + __extends(LoadedCheerio, _super); + function LoadedCheerio() { + return _super !== null && _super.apply(this, arguments) || this; + } + LoadedCheerio.prototype._make = function (selector, context) { + var cheerio = initialize(selector, context); + cheerio.prevObject = this; + return cheerio; + }; + LoadedCheerio.prototype._parse = function (content, options, isDocument, context) { + return parse(content, options, isDocument, context); + }; + LoadedCheerio.prototype._render = function (dom) { + return render(dom, this.options); + }; + return LoadedCheerio; + }(cheerio.Cheerio)); + function initialize(selector, context, root, opts) { + if (root === void 0) { root = initialRoot; } + // $($) + if (selector && (0, utils.isCheerio)(selector)) + return selector; + var options = __assign(__assign({}, internalOpts), (0, options_js_1.flatten)(opts)); + var r = typeof root === 'string' + ? [parse(root, options, false, null)] + : 'length' in root + ? root + : [root]; + var rootInstance = (0, utils.isCheerio)(r) + ? r + : new LoadedCheerio(r, null, options); + // Add a cyclic reference, so that calling methods on `_root` never fails. + rootInstance._root = rootInstance; + // $(), $(null), $(undefined), $(false) + if (!selector) { + return new LoadedCheerio(undefined, rootInstance, options); + } + var elements = typeof selector === 'string' && (0, utils.isHtml)(selector) + ? // $(<html>) + parse(selector, options, false, null).children + : isNode(selector) + ? // $(dom) + [selector] + : Array.isArray(selector) + ? // $([dom]) + selector + : undefined; + var instance = new LoadedCheerio(elements, rootInstance, options); + if (elements) { + return instance; + } + if (typeof selector !== 'string') { + throw new Error('Unexpected type of selector'); + } + // We know that our selector is a string now. + var search = selector; + var searchContext = !context + ? // If we don't have a context, maybe we have a root, from loading + rootInstance + : typeof context === 'string' + ? (0, utils.isHtml)(context) + ? // $('li', '<ul>...</ul>') + new LoadedCheerio([parse(context, options, false, null)], rootInstance, options) + : // $('li', 'ul') + ((search = "".concat(context, " ").concat(search)), rootInstance) + : (0, utils.isCheerio)(context) + ? // $('li', $) + context + : // $('li', node), $('li', [nodes]) + new LoadedCheerio(Array.isArray(context) ? context : [context], rootInstance, options); + // If we still don't have a context, return + if (!searchContext) + return instance; + /* + * #id, .class, tag + */ + return searchContext.find(search); + } + // Add in static methods & properties + Object.assign(initialize, staticMethods, { + load: load, + // `_root` and `_options` are used in static methods. + _root: initialRoot, + _options: internalOpts, + // Add `fn` for plugins + fn: LoadedCheerio.prototype, + // Add the prototype here to maintain `instanceof` behavior. + prototype: LoadedCheerio.prototype, + }); + return initialize; + }; +} +exports.getLoad = getLoad; +function isNode(obj) { + return (!!obj.name || + obj.type === 'root' || + obj.type === 'text' || + obj.type === 'comment'); +} + +}); + +var unicode$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isUndefinedCodePoint = exports.isControlCodePoint = exports.getSurrogatePairCodePoint = exports.isSurrogatePair = exports.isSurrogate = exports.SEQUENCES = exports.CODE_POINTS = exports.REPLACEMENT_CHARACTER = void 0; +const UNDEFINED_CODE_POINTS = new Set([ + 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, + 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, + 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574, + 1048575, 1114110, 1114111, +]); +exports.REPLACEMENT_CHARACTER = '\uFFFD'; +(function (CODE_POINTS) { + CODE_POINTS[CODE_POINTS["EOF"] = -1] = "EOF"; + CODE_POINTS[CODE_POINTS["NULL"] = 0] = "NULL"; + CODE_POINTS[CODE_POINTS["TABULATION"] = 9] = "TABULATION"; + CODE_POINTS[CODE_POINTS["CARRIAGE_RETURN"] = 13] = "CARRIAGE_RETURN"; + CODE_POINTS[CODE_POINTS["LINE_FEED"] = 10] = "LINE_FEED"; + CODE_POINTS[CODE_POINTS["FORM_FEED"] = 12] = "FORM_FEED"; + CODE_POINTS[CODE_POINTS["SPACE"] = 32] = "SPACE"; + CODE_POINTS[CODE_POINTS["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK"; + CODE_POINTS[CODE_POINTS["QUOTATION_MARK"] = 34] = "QUOTATION_MARK"; + CODE_POINTS[CODE_POINTS["NUMBER_SIGN"] = 35] = "NUMBER_SIGN"; + CODE_POINTS[CODE_POINTS["AMPERSAND"] = 38] = "AMPERSAND"; + CODE_POINTS[CODE_POINTS["APOSTROPHE"] = 39] = "APOSTROPHE"; + CODE_POINTS[CODE_POINTS["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS"; + CODE_POINTS[CODE_POINTS["SOLIDUS"] = 47] = "SOLIDUS"; + CODE_POINTS[CODE_POINTS["DIGIT_0"] = 48] = "DIGIT_0"; + CODE_POINTS[CODE_POINTS["DIGIT_9"] = 57] = "DIGIT_9"; + CODE_POINTS[CODE_POINTS["SEMICOLON"] = 59] = "SEMICOLON"; + CODE_POINTS[CODE_POINTS["LESS_THAN_SIGN"] = 60] = "LESS_THAN_SIGN"; + CODE_POINTS[CODE_POINTS["EQUALS_SIGN"] = 61] = "EQUALS_SIGN"; + CODE_POINTS[CODE_POINTS["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN"; + CODE_POINTS[CODE_POINTS["QUESTION_MARK"] = 63] = "QUESTION_MARK"; + CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A"; + CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_F"] = 70] = "LATIN_CAPITAL_F"; + CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_X"] = 88] = "LATIN_CAPITAL_X"; + CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z"; + CODE_POINTS[CODE_POINTS["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET"; + CODE_POINTS[CODE_POINTS["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT"; + CODE_POINTS[CODE_POINTS["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A"; + CODE_POINTS[CODE_POINTS["LATIN_SMALL_F"] = 102] = "LATIN_SMALL_F"; + CODE_POINTS[CODE_POINTS["LATIN_SMALL_X"] = 120] = "LATIN_SMALL_X"; + CODE_POINTS[CODE_POINTS["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z"; + CODE_POINTS[CODE_POINTS["REPLACEMENT_CHARACTER"] = 65533] = "REPLACEMENT_CHARACTER"; +})(exports.CODE_POINTS || (exports.CODE_POINTS = {})); +exports.SEQUENCES = { + DASH_DASH: '--', + CDATA_START: '[CDATA[', + DOCTYPE: 'doctype', + SCRIPT: 'script', + PUBLIC: 'public', + SYSTEM: 'system', +}; +//Surrogates +function isSurrogate(cp) { + return cp >= 55296 && cp <= 57343; +} +exports.isSurrogate = isSurrogate; +function isSurrogatePair(cp) { + return cp >= 56320 && cp <= 57343; +} +exports.isSurrogatePair = isSurrogatePair; +function getSurrogatePairCodePoint(cp1, cp2) { + return (cp1 - 55296) * 1024 + 9216 + cp2; +} +exports.getSurrogatePairCodePoint = getSurrogatePairCodePoint; +//NOTE: excluding NULL and ASCII whitespace +function isControlCodePoint(cp) { + return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) || + (cp >= 0x7f && cp <= 0x9f)); +} +exports.isControlCodePoint = isControlCodePoint; +function isUndefinedCodePoint(cp) { + return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp); +} +exports.isUndefinedCodePoint = isUndefinedCodePoint; + +}); + +var errorCodes$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ERR = void 0; +(function (ERR) { + ERR["controlCharacterInInputStream"] = "control-character-in-input-stream"; + ERR["noncharacterInInputStream"] = "noncharacter-in-input-stream"; + ERR["surrogateInInputStream"] = "surrogate-in-input-stream"; + ERR["nonVoidHtmlElementStartTagWithTrailingSolidus"] = "non-void-html-element-start-tag-with-trailing-solidus"; + ERR["endTagWithAttributes"] = "end-tag-with-attributes"; + ERR["endTagWithTrailingSolidus"] = "end-tag-with-trailing-solidus"; + ERR["unexpectedSolidusInTag"] = "unexpected-solidus-in-tag"; + ERR["unexpectedNullCharacter"] = "unexpected-null-character"; + ERR["unexpectedQuestionMarkInsteadOfTagName"] = "unexpected-question-mark-instead-of-tag-name"; + ERR["invalidFirstCharacterOfTagName"] = "invalid-first-character-of-tag-name"; + ERR["unexpectedEqualsSignBeforeAttributeName"] = "unexpected-equals-sign-before-attribute-name"; + ERR["missingEndTagName"] = "missing-end-tag-name"; + ERR["unexpectedCharacterInAttributeName"] = "unexpected-character-in-attribute-name"; + ERR["unknownNamedCharacterReference"] = "unknown-named-character-reference"; + ERR["missingSemicolonAfterCharacterReference"] = "missing-semicolon-after-character-reference"; + ERR["unexpectedCharacterAfterDoctypeSystemIdentifier"] = "unexpected-character-after-doctype-system-identifier"; + ERR["unexpectedCharacterInUnquotedAttributeValue"] = "unexpected-character-in-unquoted-attribute-value"; + ERR["eofBeforeTagName"] = "eof-before-tag-name"; + ERR["eofInTag"] = "eof-in-tag"; + ERR["missingAttributeValue"] = "missing-attribute-value"; + ERR["missingWhitespaceBetweenAttributes"] = "missing-whitespace-between-attributes"; + ERR["missingWhitespaceAfterDoctypePublicKeyword"] = "missing-whitespace-after-doctype-public-keyword"; + ERR["missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers"] = "missing-whitespace-between-doctype-public-and-system-identifiers"; + ERR["missingWhitespaceAfterDoctypeSystemKeyword"] = "missing-whitespace-after-doctype-system-keyword"; + ERR["missingQuoteBeforeDoctypePublicIdentifier"] = "missing-quote-before-doctype-public-identifier"; + ERR["missingQuoteBeforeDoctypeSystemIdentifier"] = "missing-quote-before-doctype-system-identifier"; + ERR["missingDoctypePublicIdentifier"] = "missing-doctype-public-identifier"; + ERR["missingDoctypeSystemIdentifier"] = "missing-doctype-system-identifier"; + ERR["abruptDoctypePublicIdentifier"] = "abrupt-doctype-public-identifier"; + ERR["abruptDoctypeSystemIdentifier"] = "abrupt-doctype-system-identifier"; + ERR["cdataInHtmlContent"] = "cdata-in-html-content"; + ERR["incorrectlyOpenedComment"] = "incorrectly-opened-comment"; + ERR["eofInScriptHtmlCommentLikeText"] = "eof-in-script-html-comment-like-text"; + ERR["eofInDoctype"] = "eof-in-doctype"; + ERR["nestedComment"] = "nested-comment"; + ERR["abruptClosingOfEmptyComment"] = "abrupt-closing-of-empty-comment"; + ERR["eofInComment"] = "eof-in-comment"; + ERR["incorrectlyClosedComment"] = "incorrectly-closed-comment"; + ERR["eofInCdata"] = "eof-in-cdata"; + ERR["absenceOfDigitsInNumericCharacterReference"] = "absence-of-digits-in-numeric-character-reference"; + ERR["nullCharacterReference"] = "null-character-reference"; + ERR["surrogateCharacterReference"] = "surrogate-character-reference"; + ERR["characterReferenceOutsideUnicodeRange"] = "character-reference-outside-unicode-range"; + ERR["controlCharacterReference"] = "control-character-reference"; + ERR["noncharacterCharacterReference"] = "noncharacter-character-reference"; + ERR["missingWhitespaceBeforeDoctypeName"] = "missing-whitespace-before-doctype-name"; + ERR["missingDoctypeName"] = "missing-doctype-name"; + ERR["invalidCharacterSequenceAfterDoctypeName"] = "invalid-character-sequence-after-doctype-name"; + ERR["duplicateAttribute"] = "duplicate-attribute"; + ERR["nonConformingDoctype"] = "non-conforming-doctype"; + ERR["missingDoctype"] = "missing-doctype"; + ERR["misplacedDoctype"] = "misplaced-doctype"; + ERR["endTagWithoutMatchingOpenElement"] = "end-tag-without-matching-open-element"; + ERR["closingOfElementWithOpenChildElements"] = "closing-of-element-with-open-child-elements"; + ERR["disallowedContentInNoscriptInHead"] = "disallowed-content-in-noscript-in-head"; + ERR["openElementsLeftAfterEof"] = "open-elements-left-after-eof"; + ERR["abandonedHeadElementChild"] = "abandoned-head-element-child"; + ERR["misplacedStartTagForHeadElement"] = "misplaced-start-tag-for-head-element"; + ERR["nestedNoscriptInHead"] = "nested-noscript-in-head"; + ERR["eofInElementThatCanContainOnlyText"] = "eof-in-element-that-can-contain-only-text"; +})(exports.ERR || (exports.ERR = {})); + +}); + +var preprocessor$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Preprocessor = void 0; + + +//Const +const DEFAULT_BUFFER_WATERLINE = 1 << 16; +//Preprocessor +//NOTE: HTML input preprocessing +//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream) +class Preprocessor { + constructor(handler) { + this.handler = handler; + this.html = ''; + this.pos = -1; + // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0 + this.lastGapPos = -2; + this.gapStack = []; + this.skipNextNewLine = false; + this.lastChunkWritten = false; + this.endOfChunkHit = false; + this.bufferWaterline = DEFAULT_BUFFER_WATERLINE; + this.isEol = false; + this.lineStartPos = 0; + this.droppedBufferSize = 0; + this.line = 1; + //NOTE: avoid reporting errors twice on advance/retreat + this.lastErrOffset = -1; + } + /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */ + get col() { + return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos); + } + get offset() { + return this.droppedBufferSize + this.pos; + } + getError(code) { + const { line, col, offset } = this; + return { + code, + startLine: line, + endLine: line, + startCol: col, + endCol: col, + startOffset: offset, + endOffset: offset, + }; + } + _err(code) { + if (this.handler.onParseError && this.lastErrOffset !== this.offset) { + this.lastErrOffset = this.offset; + this.handler.onParseError(this.getError(code)); + } + } + _addGap() { + this.gapStack.push(this.lastGapPos); + this.lastGapPos = this.pos; + } + _processSurrogate(cp) { + //NOTE: try to peek a surrogate pair + if (this.pos !== this.html.length - 1) { + const nextCp = this.html.charCodeAt(this.pos + 1); + if ((0, unicode$1.isSurrogatePair)(nextCp)) { + //NOTE: we have a surrogate pair. Peek pair character and recalculate code point. + this.pos++; + //NOTE: add a gap that should be avoided during retreat + this._addGap(); + return (0, unicode$1.getSurrogatePairCodePoint)(cp, nextCp); + } + } + //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet. + else if (!this.lastChunkWritten) { + this.endOfChunkHit = true; + return unicode$1.CODE_POINTS.EOF; + } + //NOTE: isolated surrogate + this._err(errorCodes$1.ERR.surrogateInInputStream); + return cp; + } + willDropParsedChunk() { + return this.pos > this.bufferWaterline; + } + dropParsedChunk() { + if (this.willDropParsedChunk()) { + this.html = this.html.substring(this.pos); + this.lineStartPos -= this.pos; + this.droppedBufferSize += this.pos; + this.pos = 0; + this.lastGapPos = -2; + this.gapStack.length = 0; + } + } + write(chunk, isLastChunk) { + if (this.html.length > 0) { + this.html += chunk; + } + else { + this.html = chunk; + } + this.endOfChunkHit = false; + this.lastChunkWritten = isLastChunk; + } + insertHtmlAtCurrentPos(chunk) { + this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1); + this.endOfChunkHit = false; + } + startsWith(pattern, caseSensitive) { + // Check if our buffer has enough characters + if (this.pos + pattern.length > this.html.length) { + this.endOfChunkHit = !this.lastChunkWritten; + return false; + } + if (caseSensitive) { + return this.html.startsWith(pattern, this.pos); + } + for (let i = 0; i < pattern.length; i++) { + const cp = this.html.charCodeAt(this.pos + i) | 0x20; + if (cp !== pattern.charCodeAt(i)) { + return false; + } + } + return true; + } + peek(offset) { + const pos = this.pos + offset; + if (pos >= this.html.length) { + this.endOfChunkHit = !this.lastChunkWritten; + return unicode$1.CODE_POINTS.EOF; + } + const code = this.html.charCodeAt(pos); + return code === unicode$1.CODE_POINTS.CARRIAGE_RETURN ? unicode$1.CODE_POINTS.LINE_FEED : code; + } + advance() { + this.pos++; + //NOTE: LF should be in the last column of the line + if (this.isEol) { + this.isEol = false; + this.line++; + this.lineStartPos = this.pos; + } + if (this.pos >= this.html.length) { + this.endOfChunkHit = !this.lastChunkWritten; + return unicode$1.CODE_POINTS.EOF; + } + let cp = this.html.charCodeAt(this.pos); + //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters + if (cp === unicode$1.CODE_POINTS.CARRIAGE_RETURN) { + this.isEol = true; + this.skipNextNewLine = true; + return unicode$1.CODE_POINTS.LINE_FEED; + } + //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character + //must be ignored. + if (cp === unicode$1.CODE_POINTS.LINE_FEED) { + this.isEol = true; + if (this.skipNextNewLine) { + // `line` will be bumped again in the recursive call. + this.line--; + this.skipNextNewLine = false; + this._addGap(); + return this.advance(); + } + } + this.skipNextNewLine = false; + if ((0, unicode$1.isSurrogate)(cp)) { + cp = this._processSurrogate(cp); + } + //OPTIMIZATION: first check if code point is in the common allowed + //range (ASCII alphanumeric, whitespaces, big chunk of BMP) + //before going into detailed performance cost validation. + const isCommonValidRange = this.handler.onParseError === null || + (cp > 0x1f && cp < 0x7f) || + cp === unicode$1.CODE_POINTS.LINE_FEED || + cp === unicode$1.CODE_POINTS.CARRIAGE_RETURN || + (cp > 0x9f && cp < 64976); + if (!isCommonValidRange) { + this._checkForProblematicCharacters(cp); + } + return cp; + } + _checkForProblematicCharacters(cp) { + if ((0, unicode$1.isControlCodePoint)(cp)) { + this._err(errorCodes$1.ERR.controlCharacterInInputStream); + } + else if ((0, unicode$1.isUndefinedCodePoint)(cp)) { + this._err(errorCodes$1.ERR.noncharacterInInputStream); + } + } + retreat(count) { + this.pos -= count; + while (this.pos < this.lastGapPos) { + this.lastGapPos = this.gapStack.pop(); + this.pos--; + } + this.isEol = false; + } +} +exports.Preprocessor = Preprocessor; + +}); + +var token$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getTokenAttr = exports.TokenType = void 0; +(function (TokenType) { + TokenType[TokenType["CHARACTER"] = 0] = "CHARACTER"; + TokenType[TokenType["NULL_CHARACTER"] = 1] = "NULL_CHARACTER"; + TokenType[TokenType["WHITESPACE_CHARACTER"] = 2] = "WHITESPACE_CHARACTER"; + TokenType[TokenType["START_TAG"] = 3] = "START_TAG"; + TokenType[TokenType["END_TAG"] = 4] = "END_TAG"; + TokenType[TokenType["COMMENT"] = 5] = "COMMENT"; + TokenType[TokenType["DOCTYPE"] = 6] = "DOCTYPE"; + TokenType[TokenType["EOF"] = 7] = "EOF"; + TokenType[TokenType["HIBERNATION"] = 8] = "HIBERNATION"; +})(exports.TokenType || (exports.TokenType = {})); +function getTokenAttr(token, attrName) { + for (let i = token.attrs.length - 1; i >= 0; i--) { + if (token.attrs[i].name === attrName) { + return token.attrs[i].value; + } + } + return null; +} +exports.getTokenAttr = getTokenAttr; + +}); + +var html$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hasUnescapedText = exports.isNumberedHeader = exports.SPECIAL_ELEMENTS = exports.getTagID = exports.TAG_ID = exports.TAG_NAMES = exports.DOCUMENT_MODE = exports.ATTRS = exports.NS = void 0; +/** All valid namespaces in HTML. */ +var NS; +(function (NS) { + NS["HTML"] = "http://www.w3.org/1999/xhtml"; + NS["MATHML"] = "http://www.w3.org/1998/Math/MathML"; + NS["SVG"] = "http://www.w3.org/2000/svg"; + NS["XLINK"] = "http://www.w3.org/1999/xlink"; + NS["XML"] = "http://www.w3.org/XML/1998/namespace"; + NS["XMLNS"] = "http://www.w3.org/2000/xmlns/"; +})(NS = exports.NS || (exports.NS = {})); +(function (ATTRS) { + ATTRS["TYPE"] = "type"; + ATTRS["ACTION"] = "action"; + ATTRS["ENCODING"] = "encoding"; + ATTRS["PROMPT"] = "prompt"; + ATTRS["NAME"] = "name"; + ATTRS["COLOR"] = "color"; + ATTRS["FACE"] = "face"; + ATTRS["SIZE"] = "size"; +})(exports.ATTRS || (exports.ATTRS = {})); +(function (DOCUMENT_MODE) { + DOCUMENT_MODE["NO_QUIRKS"] = "no-quirks"; + DOCUMENT_MODE["QUIRKS"] = "quirks"; + DOCUMENT_MODE["LIMITED_QUIRKS"] = "limited-quirks"; +})(exports.DOCUMENT_MODE || (exports.DOCUMENT_MODE = {})); +var TAG_NAMES; +(function (TAG_NAMES) { + TAG_NAMES["A"] = "a"; + TAG_NAMES["ADDRESS"] = "address"; + TAG_NAMES["ANNOTATION_XML"] = "annotation-xml"; + TAG_NAMES["APPLET"] = "applet"; + TAG_NAMES["AREA"] = "area"; + TAG_NAMES["ARTICLE"] = "article"; + TAG_NAMES["ASIDE"] = "aside"; + TAG_NAMES["B"] = "b"; + TAG_NAMES["BASE"] = "base"; + TAG_NAMES["BASEFONT"] = "basefont"; + TAG_NAMES["BGSOUND"] = "bgsound"; + TAG_NAMES["BIG"] = "big"; + TAG_NAMES["BLOCKQUOTE"] = "blockquote"; + TAG_NAMES["BODY"] = "body"; + TAG_NAMES["BR"] = "br"; + TAG_NAMES["BUTTON"] = "button"; + TAG_NAMES["CAPTION"] = "caption"; + TAG_NAMES["CENTER"] = "center"; + TAG_NAMES["CODE"] = "code"; + TAG_NAMES["COL"] = "col"; + TAG_NAMES["COLGROUP"] = "colgroup"; + TAG_NAMES["DD"] = "dd"; + TAG_NAMES["DESC"] = "desc"; + TAG_NAMES["DETAILS"] = "details"; + TAG_NAMES["DIALOG"] = "dialog"; + TAG_NAMES["DIR"] = "dir"; + TAG_NAMES["DIV"] = "div"; + TAG_NAMES["DL"] = "dl"; + TAG_NAMES["DT"] = "dt"; + TAG_NAMES["EM"] = "em"; + TAG_NAMES["EMBED"] = "embed"; + TAG_NAMES["FIELDSET"] = "fieldset"; + TAG_NAMES["FIGCAPTION"] = "figcaption"; + TAG_NAMES["FIGURE"] = "figure"; + TAG_NAMES["FONT"] = "font"; + TAG_NAMES["FOOTER"] = "footer"; + TAG_NAMES["FOREIGN_OBJECT"] = "foreignObject"; + TAG_NAMES["FORM"] = "form"; + TAG_NAMES["FRAME"] = "frame"; + TAG_NAMES["FRAMESET"] = "frameset"; + TAG_NAMES["H1"] = "h1"; + TAG_NAMES["H2"] = "h2"; + TAG_NAMES["H3"] = "h3"; + TAG_NAMES["H4"] = "h4"; + TAG_NAMES["H5"] = "h5"; + TAG_NAMES["H6"] = "h6"; + TAG_NAMES["HEAD"] = "head"; + TAG_NAMES["HEADER"] = "header"; + TAG_NAMES["HGROUP"] = "hgroup"; + TAG_NAMES["HR"] = "hr"; + TAG_NAMES["HTML"] = "html"; + TAG_NAMES["I"] = "i"; + TAG_NAMES["IMG"] = "img"; + TAG_NAMES["IMAGE"] = "image"; + TAG_NAMES["INPUT"] = "input"; + TAG_NAMES["IFRAME"] = "iframe"; + TAG_NAMES["KEYGEN"] = "keygen"; + TAG_NAMES["LABEL"] = "label"; + TAG_NAMES["LI"] = "li"; + TAG_NAMES["LINK"] = "link"; + TAG_NAMES["LISTING"] = "listing"; + TAG_NAMES["MAIN"] = "main"; + TAG_NAMES["MALIGNMARK"] = "malignmark"; + TAG_NAMES["MARQUEE"] = "marquee"; + TAG_NAMES["MATH"] = "math"; + TAG_NAMES["MENU"] = "menu"; + TAG_NAMES["META"] = "meta"; + TAG_NAMES["MGLYPH"] = "mglyph"; + TAG_NAMES["MI"] = "mi"; + TAG_NAMES["MO"] = "mo"; + TAG_NAMES["MN"] = "mn"; + TAG_NAMES["MS"] = "ms"; + TAG_NAMES["MTEXT"] = "mtext"; + TAG_NAMES["NAV"] = "nav"; + TAG_NAMES["NOBR"] = "nobr"; + TAG_NAMES["NOFRAMES"] = "noframes"; + TAG_NAMES["NOEMBED"] = "noembed"; + TAG_NAMES["NOSCRIPT"] = "noscript"; + TAG_NAMES["OBJECT"] = "object"; + TAG_NAMES["OL"] = "ol"; + TAG_NAMES["OPTGROUP"] = "optgroup"; + TAG_NAMES["OPTION"] = "option"; + TAG_NAMES["P"] = "p"; + TAG_NAMES["PARAM"] = "param"; + TAG_NAMES["PLAINTEXT"] = "plaintext"; + TAG_NAMES["PRE"] = "pre"; + TAG_NAMES["RB"] = "rb"; + TAG_NAMES["RP"] = "rp"; + TAG_NAMES["RT"] = "rt"; + TAG_NAMES["RTC"] = "rtc"; + TAG_NAMES["RUBY"] = "ruby"; + TAG_NAMES["S"] = "s"; + TAG_NAMES["SCRIPT"] = "script"; + TAG_NAMES["SECTION"] = "section"; + TAG_NAMES["SELECT"] = "select"; + TAG_NAMES["SOURCE"] = "source"; + TAG_NAMES["SMALL"] = "small"; + TAG_NAMES["SPAN"] = "span"; + TAG_NAMES["STRIKE"] = "strike"; + TAG_NAMES["STRONG"] = "strong"; + TAG_NAMES["STYLE"] = "style"; + TAG_NAMES["SUB"] = "sub"; + TAG_NAMES["SUMMARY"] = "summary"; + TAG_NAMES["SUP"] = "sup"; + TAG_NAMES["TABLE"] = "table"; + TAG_NAMES["TBODY"] = "tbody"; + TAG_NAMES["TEMPLATE"] = "template"; + TAG_NAMES["TEXTAREA"] = "textarea"; + TAG_NAMES["TFOOT"] = "tfoot"; + TAG_NAMES["TD"] = "td"; + TAG_NAMES["TH"] = "th"; + TAG_NAMES["THEAD"] = "thead"; + TAG_NAMES["TITLE"] = "title"; + TAG_NAMES["TR"] = "tr"; + TAG_NAMES["TRACK"] = "track"; + TAG_NAMES["TT"] = "tt"; + TAG_NAMES["U"] = "u"; + TAG_NAMES["UL"] = "ul"; + TAG_NAMES["SVG"] = "svg"; + TAG_NAMES["VAR"] = "var"; + TAG_NAMES["WBR"] = "wbr"; + TAG_NAMES["XMP"] = "xmp"; +})(TAG_NAMES = exports.TAG_NAMES || (exports.TAG_NAMES = {})); +/** + * Tag IDs are numeric IDs for known tag names. + * + * We use tag IDs to improve the performance of tag name comparisons. + */ +var TAG_ID; +(function (TAG_ID) { + TAG_ID[TAG_ID["UNKNOWN"] = 0] = "UNKNOWN"; + TAG_ID[TAG_ID["A"] = 1] = "A"; + TAG_ID[TAG_ID["ADDRESS"] = 2] = "ADDRESS"; + TAG_ID[TAG_ID["ANNOTATION_XML"] = 3] = "ANNOTATION_XML"; + TAG_ID[TAG_ID["APPLET"] = 4] = "APPLET"; + TAG_ID[TAG_ID["AREA"] = 5] = "AREA"; + TAG_ID[TAG_ID["ARTICLE"] = 6] = "ARTICLE"; + TAG_ID[TAG_ID["ASIDE"] = 7] = "ASIDE"; + TAG_ID[TAG_ID["B"] = 8] = "B"; + TAG_ID[TAG_ID["BASE"] = 9] = "BASE"; + TAG_ID[TAG_ID["BASEFONT"] = 10] = "BASEFONT"; + TAG_ID[TAG_ID["BGSOUND"] = 11] = "BGSOUND"; + TAG_ID[TAG_ID["BIG"] = 12] = "BIG"; + TAG_ID[TAG_ID["BLOCKQUOTE"] = 13] = "BLOCKQUOTE"; + TAG_ID[TAG_ID["BODY"] = 14] = "BODY"; + TAG_ID[TAG_ID["BR"] = 15] = "BR"; + TAG_ID[TAG_ID["BUTTON"] = 16] = "BUTTON"; + TAG_ID[TAG_ID["CAPTION"] = 17] = "CAPTION"; + TAG_ID[TAG_ID["CENTER"] = 18] = "CENTER"; + TAG_ID[TAG_ID["CODE"] = 19] = "CODE"; + TAG_ID[TAG_ID["COL"] = 20] = "COL"; + TAG_ID[TAG_ID["COLGROUP"] = 21] = "COLGROUP"; + TAG_ID[TAG_ID["DD"] = 22] = "DD"; + TAG_ID[TAG_ID["DESC"] = 23] = "DESC"; + TAG_ID[TAG_ID["DETAILS"] = 24] = "DETAILS"; + TAG_ID[TAG_ID["DIALOG"] = 25] = "DIALOG"; + TAG_ID[TAG_ID["DIR"] = 26] = "DIR"; + TAG_ID[TAG_ID["DIV"] = 27] = "DIV"; + TAG_ID[TAG_ID["DL"] = 28] = "DL"; + TAG_ID[TAG_ID["DT"] = 29] = "DT"; + TAG_ID[TAG_ID["EM"] = 30] = "EM"; + TAG_ID[TAG_ID["EMBED"] = 31] = "EMBED"; + TAG_ID[TAG_ID["FIELDSET"] = 32] = "FIELDSET"; + TAG_ID[TAG_ID["FIGCAPTION"] = 33] = "FIGCAPTION"; + TAG_ID[TAG_ID["FIGURE"] = 34] = "FIGURE"; + TAG_ID[TAG_ID["FONT"] = 35] = "FONT"; + TAG_ID[TAG_ID["FOOTER"] = 36] = "FOOTER"; + TAG_ID[TAG_ID["FOREIGN_OBJECT"] = 37] = "FOREIGN_OBJECT"; + TAG_ID[TAG_ID["FORM"] = 38] = "FORM"; + TAG_ID[TAG_ID["FRAME"] = 39] = "FRAME"; + TAG_ID[TAG_ID["FRAMESET"] = 40] = "FRAMESET"; + TAG_ID[TAG_ID["H1"] = 41] = "H1"; + TAG_ID[TAG_ID["H2"] = 42] = "H2"; + TAG_ID[TAG_ID["H3"] = 43] = "H3"; + TAG_ID[TAG_ID["H4"] = 44] = "H4"; + TAG_ID[TAG_ID["H5"] = 45] = "H5"; + TAG_ID[TAG_ID["H6"] = 46] = "H6"; + TAG_ID[TAG_ID["HEAD"] = 47] = "HEAD"; + TAG_ID[TAG_ID["HEADER"] = 48] = "HEADER"; + TAG_ID[TAG_ID["HGROUP"] = 49] = "HGROUP"; + TAG_ID[TAG_ID["HR"] = 50] = "HR"; + TAG_ID[TAG_ID["HTML"] = 51] = "HTML"; + TAG_ID[TAG_ID["I"] = 52] = "I"; + TAG_ID[TAG_ID["IMG"] = 53] = "IMG"; + TAG_ID[TAG_ID["IMAGE"] = 54] = "IMAGE"; + TAG_ID[TAG_ID["INPUT"] = 55] = "INPUT"; + TAG_ID[TAG_ID["IFRAME"] = 56] = "IFRAME"; + TAG_ID[TAG_ID["KEYGEN"] = 57] = "KEYGEN"; + TAG_ID[TAG_ID["LABEL"] = 58] = "LABEL"; + TAG_ID[TAG_ID["LI"] = 59] = "LI"; + TAG_ID[TAG_ID["LINK"] = 60] = "LINK"; + TAG_ID[TAG_ID["LISTING"] = 61] = "LISTING"; + TAG_ID[TAG_ID["MAIN"] = 62] = "MAIN"; + TAG_ID[TAG_ID["MALIGNMARK"] = 63] = "MALIGNMARK"; + TAG_ID[TAG_ID["MARQUEE"] = 64] = "MARQUEE"; + TAG_ID[TAG_ID["MATH"] = 65] = "MATH"; + TAG_ID[TAG_ID["MENU"] = 66] = "MENU"; + TAG_ID[TAG_ID["META"] = 67] = "META"; + TAG_ID[TAG_ID["MGLYPH"] = 68] = "MGLYPH"; + TAG_ID[TAG_ID["MI"] = 69] = "MI"; + TAG_ID[TAG_ID["MO"] = 70] = "MO"; + TAG_ID[TAG_ID["MN"] = 71] = "MN"; + TAG_ID[TAG_ID["MS"] = 72] = "MS"; + TAG_ID[TAG_ID["MTEXT"] = 73] = "MTEXT"; + TAG_ID[TAG_ID["NAV"] = 74] = "NAV"; + TAG_ID[TAG_ID["NOBR"] = 75] = "NOBR"; + TAG_ID[TAG_ID["NOFRAMES"] = 76] = "NOFRAMES"; + TAG_ID[TAG_ID["NOEMBED"] = 77] = "NOEMBED"; + TAG_ID[TAG_ID["NOSCRIPT"] = 78] = "NOSCRIPT"; + TAG_ID[TAG_ID["OBJECT"] = 79] = "OBJECT"; + TAG_ID[TAG_ID["OL"] = 80] = "OL"; + TAG_ID[TAG_ID["OPTGROUP"] = 81] = "OPTGROUP"; + TAG_ID[TAG_ID["OPTION"] = 82] = "OPTION"; + TAG_ID[TAG_ID["P"] = 83] = "P"; + TAG_ID[TAG_ID["PARAM"] = 84] = "PARAM"; + TAG_ID[TAG_ID["PLAINTEXT"] = 85] = "PLAINTEXT"; + TAG_ID[TAG_ID["PRE"] = 86] = "PRE"; + TAG_ID[TAG_ID["RB"] = 87] = "RB"; + TAG_ID[TAG_ID["RP"] = 88] = "RP"; + TAG_ID[TAG_ID["RT"] = 89] = "RT"; + TAG_ID[TAG_ID["RTC"] = 90] = "RTC"; + TAG_ID[TAG_ID["RUBY"] = 91] = "RUBY"; + TAG_ID[TAG_ID["S"] = 92] = "S"; + TAG_ID[TAG_ID["SCRIPT"] = 93] = "SCRIPT"; + TAG_ID[TAG_ID["SECTION"] = 94] = "SECTION"; + TAG_ID[TAG_ID["SELECT"] = 95] = "SELECT"; + TAG_ID[TAG_ID["SOURCE"] = 96] = "SOURCE"; + TAG_ID[TAG_ID["SMALL"] = 97] = "SMALL"; + TAG_ID[TAG_ID["SPAN"] = 98] = "SPAN"; + TAG_ID[TAG_ID["STRIKE"] = 99] = "STRIKE"; + TAG_ID[TAG_ID["STRONG"] = 100] = "STRONG"; + TAG_ID[TAG_ID["STYLE"] = 101] = "STYLE"; + TAG_ID[TAG_ID["SUB"] = 102] = "SUB"; + TAG_ID[TAG_ID["SUMMARY"] = 103] = "SUMMARY"; + TAG_ID[TAG_ID["SUP"] = 104] = "SUP"; + TAG_ID[TAG_ID["TABLE"] = 105] = "TABLE"; + TAG_ID[TAG_ID["TBODY"] = 106] = "TBODY"; + TAG_ID[TAG_ID["TEMPLATE"] = 107] = "TEMPLATE"; + TAG_ID[TAG_ID["TEXTAREA"] = 108] = "TEXTAREA"; + TAG_ID[TAG_ID["TFOOT"] = 109] = "TFOOT"; + TAG_ID[TAG_ID["TD"] = 110] = "TD"; + TAG_ID[TAG_ID["TH"] = 111] = "TH"; + TAG_ID[TAG_ID["THEAD"] = 112] = "THEAD"; + TAG_ID[TAG_ID["TITLE"] = 113] = "TITLE"; + TAG_ID[TAG_ID["TR"] = 114] = "TR"; + TAG_ID[TAG_ID["TRACK"] = 115] = "TRACK"; + TAG_ID[TAG_ID["TT"] = 116] = "TT"; + TAG_ID[TAG_ID["U"] = 117] = "U"; + TAG_ID[TAG_ID["UL"] = 118] = "UL"; + TAG_ID[TAG_ID["SVG"] = 119] = "SVG"; + TAG_ID[TAG_ID["VAR"] = 120] = "VAR"; + TAG_ID[TAG_ID["WBR"] = 121] = "WBR"; + TAG_ID[TAG_ID["XMP"] = 122] = "XMP"; +})(TAG_ID = exports.TAG_ID || (exports.TAG_ID = {})); +const TAG_NAME_TO_ID = new Map([ + [TAG_NAMES.A, TAG_ID.A], + [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS], + [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML], + [TAG_NAMES.APPLET, TAG_ID.APPLET], + [TAG_NAMES.AREA, TAG_ID.AREA], + [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE], + [TAG_NAMES.ASIDE, TAG_ID.ASIDE], + [TAG_NAMES.B, TAG_ID.B], + [TAG_NAMES.BASE, TAG_ID.BASE], + [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT], + [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND], + [TAG_NAMES.BIG, TAG_ID.BIG], + [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE], + [TAG_NAMES.BODY, TAG_ID.BODY], + [TAG_NAMES.BR, TAG_ID.BR], + [TAG_NAMES.BUTTON, TAG_ID.BUTTON], + [TAG_NAMES.CAPTION, TAG_ID.CAPTION], + [TAG_NAMES.CENTER, TAG_ID.CENTER], + [TAG_NAMES.CODE, TAG_ID.CODE], + [TAG_NAMES.COL, TAG_ID.COL], + [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP], + [TAG_NAMES.DD, TAG_ID.DD], + [TAG_NAMES.DESC, TAG_ID.DESC], + [TAG_NAMES.DETAILS, TAG_ID.DETAILS], + [TAG_NAMES.DIALOG, TAG_ID.DIALOG], + [TAG_NAMES.DIR, TAG_ID.DIR], + [TAG_NAMES.DIV, TAG_ID.DIV], + [TAG_NAMES.DL, TAG_ID.DL], + [TAG_NAMES.DT, TAG_ID.DT], + [TAG_NAMES.EM, TAG_ID.EM], + [TAG_NAMES.EMBED, TAG_ID.EMBED], + [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET], + [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION], + [TAG_NAMES.FIGURE, TAG_ID.FIGURE], + [TAG_NAMES.FONT, TAG_ID.FONT], + [TAG_NAMES.FOOTER, TAG_ID.FOOTER], + [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT], + [TAG_NAMES.FORM, TAG_ID.FORM], + [TAG_NAMES.FRAME, TAG_ID.FRAME], + [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET], + [TAG_NAMES.H1, TAG_ID.H1], + [TAG_NAMES.H2, TAG_ID.H2], + [TAG_NAMES.H3, TAG_ID.H3], + [TAG_NAMES.H4, TAG_ID.H4], + [TAG_NAMES.H5, TAG_ID.H5], + [TAG_NAMES.H6, TAG_ID.H6], + [TAG_NAMES.HEAD, TAG_ID.HEAD], + [TAG_NAMES.HEADER, TAG_ID.HEADER], + [TAG_NAMES.HGROUP, TAG_ID.HGROUP], + [TAG_NAMES.HR, TAG_ID.HR], + [TAG_NAMES.HTML, TAG_ID.HTML], + [TAG_NAMES.I, TAG_ID.I], + [TAG_NAMES.IMG, TAG_ID.IMG], + [TAG_NAMES.IMAGE, TAG_ID.IMAGE], + [TAG_NAMES.INPUT, TAG_ID.INPUT], + [TAG_NAMES.IFRAME, TAG_ID.IFRAME], + [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN], + [TAG_NAMES.LABEL, TAG_ID.LABEL], + [TAG_NAMES.LI, TAG_ID.LI], + [TAG_NAMES.LINK, TAG_ID.LINK], + [TAG_NAMES.LISTING, TAG_ID.LISTING], + [TAG_NAMES.MAIN, TAG_ID.MAIN], + [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK], + [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE], + [TAG_NAMES.MATH, TAG_ID.MATH], + [TAG_NAMES.MENU, TAG_ID.MENU], + [TAG_NAMES.META, TAG_ID.META], + [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH], + [TAG_NAMES.MI, TAG_ID.MI], + [TAG_NAMES.MO, TAG_ID.MO], + [TAG_NAMES.MN, TAG_ID.MN], + [TAG_NAMES.MS, TAG_ID.MS], + [TAG_NAMES.MTEXT, TAG_ID.MTEXT], + [TAG_NAMES.NAV, TAG_ID.NAV], + [TAG_NAMES.NOBR, TAG_ID.NOBR], + [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES], + [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED], + [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT], + [TAG_NAMES.OBJECT, TAG_ID.OBJECT], + [TAG_NAMES.OL, TAG_ID.OL], + [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP], + [TAG_NAMES.OPTION, TAG_ID.OPTION], + [TAG_NAMES.P, TAG_ID.P], + [TAG_NAMES.PARAM, TAG_ID.PARAM], + [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT], + [TAG_NAMES.PRE, TAG_ID.PRE], + [TAG_NAMES.RB, TAG_ID.RB], + [TAG_NAMES.RP, TAG_ID.RP], + [TAG_NAMES.RT, TAG_ID.RT], + [TAG_NAMES.RTC, TAG_ID.RTC], + [TAG_NAMES.RUBY, TAG_ID.RUBY], + [TAG_NAMES.S, TAG_ID.S], + [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT], + [TAG_NAMES.SECTION, TAG_ID.SECTION], + [TAG_NAMES.SELECT, TAG_ID.SELECT], + [TAG_NAMES.SOURCE, TAG_ID.SOURCE], + [TAG_NAMES.SMALL, TAG_ID.SMALL], + [TAG_NAMES.SPAN, TAG_ID.SPAN], + [TAG_NAMES.STRIKE, TAG_ID.STRIKE], + [TAG_NAMES.STRONG, TAG_ID.STRONG], + [TAG_NAMES.STYLE, TAG_ID.STYLE], + [TAG_NAMES.SUB, TAG_ID.SUB], + [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY], + [TAG_NAMES.SUP, TAG_ID.SUP], + [TAG_NAMES.TABLE, TAG_ID.TABLE], + [TAG_NAMES.TBODY, TAG_ID.TBODY], + [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE], + [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA], + [TAG_NAMES.TFOOT, TAG_ID.TFOOT], + [TAG_NAMES.TD, TAG_ID.TD], + [TAG_NAMES.TH, TAG_ID.TH], + [TAG_NAMES.THEAD, TAG_ID.THEAD], + [TAG_NAMES.TITLE, TAG_ID.TITLE], + [TAG_NAMES.TR, TAG_ID.TR], + [TAG_NAMES.TRACK, TAG_ID.TRACK], + [TAG_NAMES.TT, TAG_ID.TT], + [TAG_NAMES.U, TAG_ID.U], + [TAG_NAMES.UL, TAG_ID.UL], + [TAG_NAMES.SVG, TAG_ID.SVG], + [TAG_NAMES.VAR, TAG_ID.VAR], + [TAG_NAMES.WBR, TAG_ID.WBR], + [TAG_NAMES.XMP, TAG_ID.XMP], +]); +function getTagID(tagName) { + var _a; + return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN; +} +exports.getTagID = getTagID; +const $ = TAG_ID; +exports.SPECIAL_ELEMENTS = { + [NS.HTML]: new Set([ + $.ADDRESS, + $.APPLET, + $.AREA, + $.ARTICLE, + $.ASIDE, + $.BASE, + $.BASEFONT, + $.BGSOUND, + $.BLOCKQUOTE, + $.BODY, + $.BR, + $.BUTTON, + $.CAPTION, + $.CENTER, + $.COL, + $.COLGROUP, + $.DD, + $.DETAILS, + $.DIR, + $.DIV, + $.DL, + $.DT, + $.EMBED, + $.FIELDSET, + $.FIGCAPTION, + $.FIGURE, + $.FOOTER, + $.FORM, + $.FRAME, + $.FRAMESET, + $.H1, + $.H2, + $.H3, + $.H4, + $.H5, + $.H6, + $.HEAD, + $.HEADER, + $.HGROUP, + $.HR, + $.HTML, + $.IFRAME, + $.IMG, + $.INPUT, + $.LI, + $.LINK, + $.LISTING, + $.MAIN, + $.MARQUEE, + $.MENU, + $.META, + $.NAV, + $.NOEMBED, + $.NOFRAMES, + $.NOSCRIPT, + $.OBJECT, + $.OL, + $.P, + $.PARAM, + $.PLAINTEXT, + $.PRE, + $.SCRIPT, + $.SECTION, + $.SELECT, + $.SOURCE, + $.STYLE, + $.SUMMARY, + $.TABLE, + $.TBODY, + $.TD, + $.TEMPLATE, + $.TEXTAREA, + $.TFOOT, + $.TH, + $.THEAD, + $.TITLE, + $.TR, + $.TRACK, + $.UL, + $.WBR, + $.XMP, + ]), + [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]), + [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]), + [NS.XLINK]: new Set(), + [NS.XML]: new Set(), + [NS.XMLNS]: new Set(), +}; +function isNumberedHeader(tn) { + return tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6; +} +exports.isNumberedHeader = isNumberedHeader; +const UNESCAPED_TEXT = new Set([ + TAG_NAMES.STYLE, + TAG_NAMES.SCRIPT, + TAG_NAMES.XMP, + TAG_NAMES.IFRAME, + TAG_NAMES.NOEMBED, + TAG_NAMES.NOFRAMES, + TAG_NAMES.PLAINTEXT, +]); +function hasUnescapedText(tn, scriptingEnabled) { + return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT); +} +exports.hasUnescapedText = hasUnescapedText; + +}); + +var tokenizer$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Tokenizer = exports.TokenizerMode = void 0; + + + + + + +//C1 Unicode control character reference replacements +const C1_CONTROLS_REFERENCE_REPLACEMENTS = new Map([ + [0x80, 8364], + [0x82, 8218], + [0x83, 402], + [0x84, 8222], + [0x85, 8230], + [0x86, 8224], + [0x87, 8225], + [0x88, 710], + [0x89, 8240], + [0x8a, 352], + [0x8b, 8249], + [0x8c, 338], + [0x8e, 381], + [0x91, 8216], + [0x92, 8217], + [0x93, 8220], + [0x94, 8221], + [0x95, 8226], + [0x96, 8211], + [0x97, 8212], + [0x98, 732], + [0x99, 8482], + [0x9a, 353], + [0x9b, 8250], + [0x9c, 339], + [0x9e, 382], + [0x9f, 376], +]); +//States +var State; +(function (State) { + State[State["DATA"] = 0] = "DATA"; + State[State["RCDATA"] = 1] = "RCDATA"; + State[State["RAWTEXT"] = 2] = "RAWTEXT"; + State[State["SCRIPT_DATA"] = 3] = "SCRIPT_DATA"; + State[State["PLAINTEXT"] = 4] = "PLAINTEXT"; + State[State["TAG_OPEN"] = 5] = "TAG_OPEN"; + State[State["END_TAG_OPEN"] = 6] = "END_TAG_OPEN"; + State[State["TAG_NAME"] = 7] = "TAG_NAME"; + State[State["RCDATA_LESS_THAN_SIGN"] = 8] = "RCDATA_LESS_THAN_SIGN"; + State[State["RCDATA_END_TAG_OPEN"] = 9] = "RCDATA_END_TAG_OPEN"; + State[State["RCDATA_END_TAG_NAME"] = 10] = "RCDATA_END_TAG_NAME"; + State[State["RAWTEXT_LESS_THAN_SIGN"] = 11] = "RAWTEXT_LESS_THAN_SIGN"; + State[State["RAWTEXT_END_TAG_OPEN"] = 12] = "RAWTEXT_END_TAG_OPEN"; + State[State["RAWTEXT_END_TAG_NAME"] = 13] = "RAWTEXT_END_TAG_NAME"; + State[State["SCRIPT_DATA_LESS_THAN_SIGN"] = 14] = "SCRIPT_DATA_LESS_THAN_SIGN"; + State[State["SCRIPT_DATA_END_TAG_OPEN"] = 15] = "SCRIPT_DATA_END_TAG_OPEN"; + State[State["SCRIPT_DATA_END_TAG_NAME"] = 16] = "SCRIPT_DATA_END_TAG_NAME"; + State[State["SCRIPT_DATA_ESCAPE_START"] = 17] = "SCRIPT_DATA_ESCAPE_START"; + State[State["SCRIPT_DATA_ESCAPE_START_DASH"] = 18] = "SCRIPT_DATA_ESCAPE_START_DASH"; + State[State["SCRIPT_DATA_ESCAPED"] = 19] = "SCRIPT_DATA_ESCAPED"; + State[State["SCRIPT_DATA_ESCAPED_DASH"] = 20] = "SCRIPT_DATA_ESCAPED_DASH"; + State[State["SCRIPT_DATA_ESCAPED_DASH_DASH"] = 21] = "SCRIPT_DATA_ESCAPED_DASH_DASH"; + State[State["SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"] = 22] = "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"; + State[State["SCRIPT_DATA_ESCAPED_END_TAG_OPEN"] = 23] = "SCRIPT_DATA_ESCAPED_END_TAG_OPEN"; + State[State["SCRIPT_DATA_ESCAPED_END_TAG_NAME"] = 24] = "SCRIPT_DATA_ESCAPED_END_TAG_NAME"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPE_START"] = 25] = "SCRIPT_DATA_DOUBLE_ESCAPE_START"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED"] = 26] = "SCRIPT_DATA_DOUBLE_ESCAPED"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED_DASH"] = 27] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"] = 28] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"] = 29] = "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPE_END"] = 30] = "SCRIPT_DATA_DOUBLE_ESCAPE_END"; + State[State["BEFORE_ATTRIBUTE_NAME"] = 31] = "BEFORE_ATTRIBUTE_NAME"; + State[State["ATTRIBUTE_NAME"] = 32] = "ATTRIBUTE_NAME"; + State[State["AFTER_ATTRIBUTE_NAME"] = 33] = "AFTER_ATTRIBUTE_NAME"; + State[State["BEFORE_ATTRIBUTE_VALUE"] = 34] = "BEFORE_ATTRIBUTE_VALUE"; + State[State["ATTRIBUTE_VALUE_DOUBLE_QUOTED"] = 35] = "ATTRIBUTE_VALUE_DOUBLE_QUOTED"; + State[State["ATTRIBUTE_VALUE_SINGLE_QUOTED"] = 36] = "ATTRIBUTE_VALUE_SINGLE_QUOTED"; + State[State["ATTRIBUTE_VALUE_UNQUOTED"] = 37] = "ATTRIBUTE_VALUE_UNQUOTED"; + State[State["AFTER_ATTRIBUTE_VALUE_QUOTED"] = 38] = "AFTER_ATTRIBUTE_VALUE_QUOTED"; + State[State["SELF_CLOSING_START_TAG"] = 39] = "SELF_CLOSING_START_TAG"; + State[State["BOGUS_COMMENT"] = 40] = "BOGUS_COMMENT"; + State[State["MARKUP_DECLARATION_OPEN"] = 41] = "MARKUP_DECLARATION_OPEN"; + State[State["COMMENT_START"] = 42] = "COMMENT_START"; + State[State["COMMENT_START_DASH"] = 43] = "COMMENT_START_DASH"; + State[State["COMMENT"] = 44] = "COMMENT"; + State[State["COMMENT_LESS_THAN_SIGN"] = 45] = "COMMENT_LESS_THAN_SIGN"; + State[State["COMMENT_LESS_THAN_SIGN_BANG"] = 46] = "COMMENT_LESS_THAN_SIGN_BANG"; + State[State["COMMENT_LESS_THAN_SIGN_BANG_DASH"] = 47] = "COMMENT_LESS_THAN_SIGN_BANG_DASH"; + State[State["COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"] = 48] = "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"; + State[State["COMMENT_END_DASH"] = 49] = "COMMENT_END_DASH"; + State[State["COMMENT_END"] = 50] = "COMMENT_END"; + State[State["COMMENT_END_BANG"] = 51] = "COMMENT_END_BANG"; + State[State["DOCTYPE"] = 52] = "DOCTYPE"; + State[State["BEFORE_DOCTYPE_NAME"] = 53] = "BEFORE_DOCTYPE_NAME"; + State[State["DOCTYPE_NAME"] = 54] = "DOCTYPE_NAME"; + State[State["AFTER_DOCTYPE_NAME"] = 55] = "AFTER_DOCTYPE_NAME"; + State[State["AFTER_DOCTYPE_PUBLIC_KEYWORD"] = 56] = "AFTER_DOCTYPE_PUBLIC_KEYWORD"; + State[State["BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"] = 57] = "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"; + State[State["DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"] = 58] = "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"; + State[State["DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"] = 59] = "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"; + State[State["AFTER_DOCTYPE_PUBLIC_IDENTIFIER"] = 60] = "AFTER_DOCTYPE_PUBLIC_IDENTIFIER"; + State[State["BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"] = 61] = "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"; + State[State["AFTER_DOCTYPE_SYSTEM_KEYWORD"] = 62] = "AFTER_DOCTYPE_SYSTEM_KEYWORD"; + State[State["BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"] = 63] = "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"; + State[State["DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"] = 64] = "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"; + State[State["DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"] = 65] = "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"; + State[State["AFTER_DOCTYPE_SYSTEM_IDENTIFIER"] = 66] = "AFTER_DOCTYPE_SYSTEM_IDENTIFIER"; + State[State["BOGUS_DOCTYPE"] = 67] = "BOGUS_DOCTYPE"; + State[State["CDATA_SECTION"] = 68] = "CDATA_SECTION"; + State[State["CDATA_SECTION_BRACKET"] = 69] = "CDATA_SECTION_BRACKET"; + State[State["CDATA_SECTION_END"] = 70] = "CDATA_SECTION_END"; + State[State["CHARACTER_REFERENCE"] = 71] = "CHARACTER_REFERENCE"; + State[State["NAMED_CHARACTER_REFERENCE"] = 72] = "NAMED_CHARACTER_REFERENCE"; + State[State["AMBIGUOUS_AMPERSAND"] = 73] = "AMBIGUOUS_AMPERSAND"; + State[State["NUMERIC_CHARACTER_REFERENCE"] = 74] = "NUMERIC_CHARACTER_REFERENCE"; + State[State["HEXADEMICAL_CHARACTER_REFERENCE_START"] = 75] = "HEXADEMICAL_CHARACTER_REFERENCE_START"; + State[State["HEXADEMICAL_CHARACTER_REFERENCE"] = 76] = "HEXADEMICAL_CHARACTER_REFERENCE"; + State[State["DECIMAL_CHARACTER_REFERENCE"] = 77] = "DECIMAL_CHARACTER_REFERENCE"; + State[State["NUMERIC_CHARACTER_REFERENCE_END"] = 78] = "NUMERIC_CHARACTER_REFERENCE_END"; +})(State || (State = {})); +//Tokenizer initial states for different modes +exports.TokenizerMode = { + DATA: State.DATA, + RCDATA: State.RCDATA, + RAWTEXT: State.RAWTEXT, + SCRIPT_DATA: State.SCRIPT_DATA, + PLAINTEXT: State.PLAINTEXT, + CDATA_SECTION: State.CDATA_SECTION, +}; +//Utils +//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline +//this functions if they will be situated in another module due to context switch. +//Always perform inlining check before modifying this functions ('node --trace-inlining'). +function isAsciiDigit(cp) { + return cp >= unicode$1.CODE_POINTS.DIGIT_0 && cp <= unicode$1.CODE_POINTS.DIGIT_9; +} +function isAsciiUpper(cp) { + return cp >= unicode$1.CODE_POINTS.LATIN_CAPITAL_A && cp <= unicode$1.CODE_POINTS.LATIN_CAPITAL_Z; +} +function isAsciiLower(cp) { + return cp >= unicode$1.CODE_POINTS.LATIN_SMALL_A && cp <= unicode$1.CODE_POINTS.LATIN_SMALL_Z; +} +function isAsciiLetter(cp) { + return isAsciiLower(cp) || isAsciiUpper(cp); +} +function isAsciiAlphaNumeric(cp) { + return isAsciiLetter(cp) || isAsciiDigit(cp); +} +function isAsciiUpperHexDigit(cp) { + return cp >= unicode$1.CODE_POINTS.LATIN_CAPITAL_A && cp <= unicode$1.CODE_POINTS.LATIN_CAPITAL_F; +} +function isAsciiLowerHexDigit(cp) { + return cp >= unicode$1.CODE_POINTS.LATIN_SMALL_A && cp <= unicode$1.CODE_POINTS.LATIN_SMALL_F; +} +function isAsciiHexDigit(cp) { + return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp); +} +function toAsciiLower(cp) { + return cp + 32; +} +function isWhitespace(cp) { + return cp === unicode$1.CODE_POINTS.SPACE || cp === unicode$1.CODE_POINTS.LINE_FEED || cp === unicode$1.CODE_POINTS.TABULATION || cp === unicode$1.CODE_POINTS.FORM_FEED; +} +function isEntityInAttributeInvalidEnd(nextCp) { + return nextCp === unicode$1.CODE_POINTS.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp); +} +function isScriptDataDoubleEscapeSequenceEnd(cp) { + return isWhitespace(cp) || cp === unicode$1.CODE_POINTS.SOLIDUS || cp === unicode$1.CODE_POINTS.GREATER_THAN_SIGN; +} +//Tokenizer +class Tokenizer { + constructor(options, handler) { + this.options = options; + this.handler = handler; + this.paused = false; + /** Ensures that the parsing loop isn't run multiple times at once. */ + this.inLoop = false; + /** + * Indicates that the current adjusted node exists, is not an element in the HTML namespace, + * and that it is not an integration point for either MathML or HTML. + * + * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction} + */ + this.inForeignNode = false; + this.lastStartTagName = ''; + this.active = false; + this.state = State.DATA; + this.returnState = State.DATA; + this.charRefCode = -1; + this.consumedAfterSnapshot = -1; + this.currentCharacterToken = null; + this.currentToken = null; + this.currentAttr = { name: '', value: '' }; + this.preprocessor = new preprocessor$1.Preprocessor(handler); + this.currentLocation = this.getCurrentLocation(-1); + } + //Errors + _err(code) { + var _a, _b; + (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code)); + } + // NOTE: `offset` may never run across line boundaries. + getCurrentLocation(offset) { + if (!this.options.sourceCodeLocationInfo) { + return null; + } + return { + startLine: this.preprocessor.line, + startCol: this.preprocessor.col - offset, + startOffset: this.preprocessor.offset - offset, + endLine: -1, + endCol: -1, + endOffset: -1, + }; + } + _runParsingLoop() { + if (this.inLoop) + return; + this.inLoop = true; + while (this.active && !this.paused) { + this.consumedAfterSnapshot = 0; + const cp = this._consume(); + if (!this._ensureHibernation()) { + this._callState(cp); + } + } + this.inLoop = false; + } + //API + pause() { + this.paused = true; + } + resume(writeCallback) { + if (!this.paused) { + throw new Error('Parser was already resumed'); + } + this.paused = false; + // Necessary for synchronous resume. + if (this.inLoop) + return; + this._runParsingLoop(); + if (!this.paused) { + writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback(); + } + } + write(chunk, isLastChunk, writeCallback) { + this.active = true; + this.preprocessor.write(chunk, isLastChunk); + this._runParsingLoop(); + if (!this.paused) { + writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback(); + } + } + insertHtmlAtCurrentPos(chunk) { + this.active = true; + this.preprocessor.insertHtmlAtCurrentPos(chunk); + this._runParsingLoop(); + } + //Hibernation + _ensureHibernation() { + if (this.preprocessor.endOfChunkHit) { + this._unconsume(this.consumedAfterSnapshot); + this.active = false; + return true; + } + return false; + } + //Consumption + _consume() { + this.consumedAfterSnapshot++; + return this.preprocessor.advance(); + } + _unconsume(count) { + this.consumedAfterSnapshot -= count; + this.preprocessor.retreat(count); + } + _reconsumeInState(state, cp) { + this.state = state; + this._callState(cp); + } + _advanceBy(count) { + this.consumedAfterSnapshot += count; + for (let i = 0; i < count; i++) { + this.preprocessor.advance(); + } + } + _consumeSequenceIfMatch(pattern, caseSensitive) { + if (this.preprocessor.startsWith(pattern, caseSensitive)) { + // We will already have consumed one character before calling this method. + this._advanceBy(pattern.length - 1); + return true; + } + return false; + } + //Token creation + _createStartTagToken() { + this.currentToken = { + type: token$1.TokenType.START_TAG, + tagName: '', + tagID: html$1.TAG_ID.UNKNOWN, + selfClosing: false, + ackSelfClosing: false, + attrs: [], + location: this.getCurrentLocation(1), + }; + } + _createEndTagToken() { + this.currentToken = { + type: token$1.TokenType.END_TAG, + tagName: '', + tagID: html$1.TAG_ID.UNKNOWN, + selfClosing: false, + ackSelfClosing: false, + attrs: [], + location: this.getCurrentLocation(2), + }; + } + _createCommentToken(offset) { + this.currentToken = { + type: token$1.TokenType.COMMENT, + data: '', + location: this.getCurrentLocation(offset), + }; + } + _createDoctypeToken(initialName) { + this.currentToken = { + type: token$1.TokenType.DOCTYPE, + name: initialName, + forceQuirks: false, + publicId: null, + systemId: null, + location: this.currentLocation, + }; + } + _createCharacterToken(type, chars) { + this.currentCharacterToken = { + type, + chars, + location: this.currentLocation, + }; + } + //Tag attributes + _createAttr(attrNameFirstCh) { + this.currentAttr = { + name: attrNameFirstCh, + value: '', + }; + this.currentLocation = this.getCurrentLocation(0); + } + _leaveAttrName() { + var _a; + var _b; + const token = this.currentToken; + if ((0, token$1.getTokenAttr)(token, this.currentAttr.name) === null) { + token.attrs.push(this.currentAttr); + if (token.location && this.currentLocation) { + const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null))); + attrLocations[this.currentAttr.name] = this.currentLocation; + // Set end location + this._leaveAttrValue(); + } + } + else { + this._err(errorCodes$1.ERR.duplicateAttribute); + } + } + _leaveAttrValue() { + if (this.currentLocation) { + this.currentLocation.endLine = this.preprocessor.line; + this.currentLocation.endCol = this.preprocessor.col; + this.currentLocation.endOffset = this.preprocessor.offset; + } + } + //Token emission + prepareToken(ct) { + this._emitCurrentCharacterToken(ct.location); + this.currentToken = null; + if (ct.location) { + ct.location.endLine = this.preprocessor.line; + ct.location.endCol = this.preprocessor.col + 1; + ct.location.endOffset = this.preprocessor.offset + 1; + } + this.currentLocation = this.getCurrentLocation(-1); + } + emitCurrentTagToken() { + const ct = this.currentToken; + this.prepareToken(ct); + ct.tagID = (0, html$1.getTagID)(ct.tagName); + if (ct.type === token$1.TokenType.START_TAG) { + this.lastStartTagName = ct.tagName; + this.handler.onStartTag(ct); + } + else { + if (ct.attrs.length > 0) { + this._err(errorCodes$1.ERR.endTagWithAttributes); + } + if (ct.selfClosing) { + this._err(errorCodes$1.ERR.endTagWithTrailingSolidus); + } + this.handler.onEndTag(ct); + } + this.preprocessor.dropParsedChunk(); + } + emitCurrentComment(ct) { + this.prepareToken(ct); + this.handler.onComment(ct); + this.preprocessor.dropParsedChunk(); + } + emitCurrentDoctype(ct) { + this.prepareToken(ct); + this.handler.onDoctype(ct); + this.preprocessor.dropParsedChunk(); + } + _emitCurrentCharacterToken(nextLocation) { + if (this.currentCharacterToken) { + //NOTE: if we have a pending character token, make it's end location equal to the + //current token's start location. + if (nextLocation && this.currentCharacterToken.location) { + this.currentCharacterToken.location.endLine = nextLocation.startLine; + this.currentCharacterToken.location.endCol = nextLocation.startCol; + this.currentCharacterToken.location.endOffset = nextLocation.startOffset; + } + switch (this.currentCharacterToken.type) { + case token$1.TokenType.CHARACTER: { + this.handler.onCharacter(this.currentCharacterToken); + break; + } + case token$1.TokenType.NULL_CHARACTER: { + this.handler.onNullCharacter(this.currentCharacterToken); + break; + } + case token$1.TokenType.WHITESPACE_CHARACTER: { + this.handler.onWhitespaceCharacter(this.currentCharacterToken); + break; + } + } + this.currentCharacterToken = null; + } + } + _emitEOFToken() { + const location = this.getCurrentLocation(0); + if (location) { + location.endLine = location.startLine; + location.endCol = location.startCol; + location.endOffset = location.startOffset; + } + this._emitCurrentCharacterToken(location); + this.handler.onEof({ type: token$1.TokenType.EOF, location }); + this.active = false; + } + //Characters emission + //OPTIMIZATION: specification uses only one type of character tokens (one token per character). + //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters. + //If we have a sequence of characters that belong to the same group, the parser can process it + //as a single solid character token. + //So, there are 3 types of character tokens in parse5: + //1)TokenType.NULL_CHARACTER - \u0000-character sequences (e.g. '\u0000\u0000\u0000') + //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\n \r\t \f') + //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^') + _appendCharToCurrentCharacterToken(type, ch) { + if (this.currentCharacterToken) { + if (this.currentCharacterToken.type !== type) { + this.currentLocation = this.getCurrentLocation(0); + this._emitCurrentCharacterToken(this.currentLocation); + this.preprocessor.dropParsedChunk(); + } + else { + this.currentCharacterToken.chars += ch; + return; + } + } + this._createCharacterToken(type, ch); + } + _emitCodePoint(cp) { + const type = isWhitespace(cp) + ? token$1.TokenType.WHITESPACE_CHARACTER + : cp === unicode$1.CODE_POINTS.NULL + ? token$1.TokenType.NULL_CHARACTER + : token$1.TokenType.CHARACTER; + this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp)); + } + //NOTE: used when we emit characters explicitly. + //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks. + _emitChars(ch) { + this._appendCharToCurrentCharacterToken(token$1.TokenType.CHARACTER, ch); + } + // Character reference helpers + _matchNamedCharacterReference(cp) { + let result = null; + let excess = 0; + let withoutSemicolon = false; + for (let i = 0, current = decode_js_1.htmlDecodeTree[0]; i >= 0; cp = this._consume()) { + i = (0, decode_js_1.determineBranch)(decode_js_1.htmlDecodeTree, current, i + 1, cp); + if (i < 0) + break; + excess += 1; + current = decode_js_1.htmlDecodeTree[i]; + const masked = current & decode_js_1.BinTrieFlags.VALUE_LENGTH; + // If the branch is a value, store it and continue + if (masked) { + // The mask is the number of bytes of the value, including the current byte. + const valueLength = (masked >> 14) - 1; + // Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error. + // See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state + if (cp !== unicode$1.CODE_POINTS.SEMICOLON && + this._isCharacterReferenceInAttribute() && + isEntityInAttributeInvalidEnd(this.preprocessor.peek(1))) { + //NOTE: we don't flush all consumed code points here, and instead switch back to the original state after + //emitting an ampersand. This is fine, as alphanumeric characters won't be parsed differently in attributes. + result = [unicode$1.CODE_POINTS.AMPERSAND]; + // Skip over the value. + i += valueLength; + } + else { + // If this is a surrogate pair, consume the next two bytes. + result = + valueLength === 0 + ? [decode_js_1.htmlDecodeTree[i] & ~decode_js_1.BinTrieFlags.VALUE_LENGTH] + : valueLength === 1 + ? [decode_js_1.htmlDecodeTree[++i]] + : [decode_js_1.htmlDecodeTree[++i], decode_js_1.htmlDecodeTree[++i]]; + excess = 0; + withoutSemicolon = cp !== unicode$1.CODE_POINTS.SEMICOLON; + } + if (valueLength === 0) { + // If the value is zero-length, we're done. + this._consume(); + break; + } + } + } + this._unconsume(excess); + if (withoutSemicolon && !this.preprocessor.endOfChunkHit) { + this._err(errorCodes$1.ERR.missingSemicolonAfterCharacterReference); + } + // We want to emit the error above on the code point after the entity. + // We always consume one code point too many in the loop, and we wait to + // unconsume it until after the error is emitted. + this._unconsume(1); + return result; + } + _isCharacterReferenceInAttribute() { + return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED || + this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED || + this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED); + } + _flushCodePointConsumedAsCharacterReference(cp) { + if (this._isCharacterReferenceInAttribute()) { + this.currentAttr.value += String.fromCodePoint(cp); + } + else { + this._emitCodePoint(cp); + } + } + // Calling states this way turns out to be much faster than any other approach. + _callState(cp) { + switch (this.state) { + case State.DATA: { + this._stateData(cp); + break; + } + case State.RCDATA: { + this._stateRcdata(cp); + break; + } + case State.RAWTEXT: { + this._stateRawtext(cp); + break; + } + case State.SCRIPT_DATA: { + this._stateScriptData(cp); + break; + } + case State.PLAINTEXT: { + this._statePlaintext(cp); + break; + } + case State.TAG_OPEN: { + this._stateTagOpen(cp); + break; + } + case State.END_TAG_OPEN: { + this._stateEndTagOpen(cp); + break; + } + case State.TAG_NAME: { + this._stateTagName(cp); + break; + } + case State.RCDATA_LESS_THAN_SIGN: { + this._stateRcdataLessThanSign(cp); + break; + } + case State.RCDATA_END_TAG_OPEN: { + this._stateRcdataEndTagOpen(cp); + break; + } + case State.RCDATA_END_TAG_NAME: { + this._stateRcdataEndTagName(cp); + break; + } + case State.RAWTEXT_LESS_THAN_SIGN: { + this._stateRawtextLessThanSign(cp); + break; + } + case State.RAWTEXT_END_TAG_OPEN: { + this._stateRawtextEndTagOpen(cp); + break; + } + case State.RAWTEXT_END_TAG_NAME: { + this._stateRawtextEndTagName(cp); + break; + } + case State.SCRIPT_DATA_LESS_THAN_SIGN: { + this._stateScriptDataLessThanSign(cp); + break; + } + case State.SCRIPT_DATA_END_TAG_OPEN: { + this._stateScriptDataEndTagOpen(cp); + break; + } + case State.SCRIPT_DATA_END_TAG_NAME: { + this._stateScriptDataEndTagName(cp); + break; + } + case State.SCRIPT_DATA_ESCAPE_START: { + this._stateScriptDataEscapeStart(cp); + break; + } + case State.SCRIPT_DATA_ESCAPE_START_DASH: { + this._stateScriptDataEscapeStartDash(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED: { + this._stateScriptDataEscaped(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_DASH: { + this._stateScriptDataEscapedDash(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_DASH_DASH: { + this._stateScriptDataEscapedDashDash(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: { + this._stateScriptDataEscapedLessThanSign(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: { + this._stateScriptDataEscapedEndTagOpen(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: { + this._stateScriptDataEscapedEndTagName(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: { + this._stateScriptDataDoubleEscapeStart(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPED: { + this._stateScriptDataDoubleEscaped(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: { + this._stateScriptDataDoubleEscapedDash(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: { + this._stateScriptDataDoubleEscapedDashDash(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: { + this._stateScriptDataDoubleEscapedLessThanSign(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: { + this._stateScriptDataDoubleEscapeEnd(cp); + break; + } + case State.BEFORE_ATTRIBUTE_NAME: { + this._stateBeforeAttributeName(cp); + break; + } + case State.ATTRIBUTE_NAME: { + this._stateAttributeName(cp); + break; + } + case State.AFTER_ATTRIBUTE_NAME: { + this._stateAfterAttributeName(cp); + break; + } + case State.BEFORE_ATTRIBUTE_VALUE: { + this._stateBeforeAttributeValue(cp); + break; + } + case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: { + this._stateAttributeValueDoubleQuoted(cp); + break; + } + case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: { + this._stateAttributeValueSingleQuoted(cp); + break; + } + case State.ATTRIBUTE_VALUE_UNQUOTED: { + this._stateAttributeValueUnquoted(cp); + break; + } + case State.AFTER_ATTRIBUTE_VALUE_QUOTED: { + this._stateAfterAttributeValueQuoted(cp); + break; + } + case State.SELF_CLOSING_START_TAG: { + this._stateSelfClosingStartTag(cp); + break; + } + case State.BOGUS_COMMENT: { + this._stateBogusComment(cp); + break; + } + case State.MARKUP_DECLARATION_OPEN: { + this._stateMarkupDeclarationOpen(cp); + break; + } + case State.COMMENT_START: { + this._stateCommentStart(cp); + break; + } + case State.COMMENT_START_DASH: { + this._stateCommentStartDash(cp); + break; + } + case State.COMMENT: { + this._stateComment(cp); + break; + } + case State.COMMENT_LESS_THAN_SIGN: { + this._stateCommentLessThanSign(cp); + break; + } + case State.COMMENT_LESS_THAN_SIGN_BANG: { + this._stateCommentLessThanSignBang(cp); + break; + } + case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: { + this._stateCommentLessThanSignBangDash(cp); + break; + } + case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: { + this._stateCommentLessThanSignBangDashDash(cp); + break; + } + case State.COMMENT_END_DASH: { + this._stateCommentEndDash(cp); + break; + } + case State.COMMENT_END: { + this._stateCommentEnd(cp); + break; + } + case State.COMMENT_END_BANG: { + this._stateCommentEndBang(cp); + break; + } + case State.DOCTYPE: { + this._stateDoctype(cp); + break; + } + case State.BEFORE_DOCTYPE_NAME: { + this._stateBeforeDoctypeName(cp); + break; + } + case State.DOCTYPE_NAME: { + this._stateDoctypeName(cp); + break; + } + case State.AFTER_DOCTYPE_NAME: { + this._stateAfterDoctypeName(cp); + break; + } + case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: { + this._stateAfterDoctypePublicKeyword(cp); + break; + } + case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: { + this._stateBeforeDoctypePublicIdentifier(cp); + break; + } + case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: { + this._stateDoctypePublicIdentifierDoubleQuoted(cp); + break; + } + case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: { + this._stateDoctypePublicIdentifierSingleQuoted(cp); + break; + } + case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: { + this._stateAfterDoctypePublicIdentifier(cp); + break; + } + case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: { + this._stateBetweenDoctypePublicAndSystemIdentifiers(cp); + break; + } + case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: { + this._stateAfterDoctypeSystemKeyword(cp); + break; + } + case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: { + this._stateBeforeDoctypeSystemIdentifier(cp); + break; + } + case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: { + this._stateDoctypeSystemIdentifierDoubleQuoted(cp); + break; + } + case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: { + this._stateDoctypeSystemIdentifierSingleQuoted(cp); + break; + } + case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: { + this._stateAfterDoctypeSystemIdentifier(cp); + break; + } + case State.BOGUS_DOCTYPE: { + this._stateBogusDoctype(cp); + break; + } + case State.CDATA_SECTION: { + this._stateCdataSection(cp); + break; + } + case State.CDATA_SECTION_BRACKET: { + this._stateCdataSectionBracket(cp); + break; + } + case State.CDATA_SECTION_END: { + this._stateCdataSectionEnd(cp); + break; + } + case State.CHARACTER_REFERENCE: { + this._stateCharacterReference(cp); + break; + } + case State.NAMED_CHARACTER_REFERENCE: { + this._stateNamedCharacterReference(cp); + break; + } + case State.AMBIGUOUS_AMPERSAND: { + this._stateAmbiguousAmpersand(cp); + break; + } + case State.NUMERIC_CHARACTER_REFERENCE: { + this._stateNumericCharacterReference(cp); + break; + } + case State.HEXADEMICAL_CHARACTER_REFERENCE_START: { + this._stateHexademicalCharacterReferenceStart(cp); + break; + } + case State.HEXADEMICAL_CHARACTER_REFERENCE: { + this._stateHexademicalCharacterReference(cp); + break; + } + case State.DECIMAL_CHARACTER_REFERENCE: { + this._stateDecimalCharacterReference(cp); + break; + } + case State.NUMERIC_CHARACTER_REFERENCE_END: { + this._stateNumericCharacterReferenceEnd(cp); + break; + } + default: { + throw new Error('Unknown state'); + } + } + } + // State machine + // Data state + //------------------------------------------------------------------ + _stateData(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.TAG_OPEN; + break; + } + case unicode$1.CODE_POINTS.AMPERSAND: { + this.returnState = State.DATA; + this.state = State.CHARACTER_REFERENCE; + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this._emitCodePoint(cp); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // RCDATA state + //------------------------------------------------------------------ + _stateRcdata(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.AMPERSAND: { + this.returnState = State.RCDATA; + this.state = State.CHARACTER_REFERENCE; + break; + } + case unicode$1.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.RCDATA_LESS_THAN_SIGN; + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this._emitChars(unicode$1.REPLACEMENT_CHARACTER); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // RAWTEXT state + //------------------------------------------------------------------ + _stateRawtext(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.RAWTEXT_LESS_THAN_SIGN; + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this._emitChars(unicode$1.REPLACEMENT_CHARACTER); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // Script data state + //------------------------------------------------------------------ + _stateScriptData(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_LESS_THAN_SIGN; + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this._emitChars(unicode$1.REPLACEMENT_CHARACTER); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // PLAINTEXT state + //------------------------------------------------------------------ + _statePlaintext(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this._emitChars(unicode$1.REPLACEMENT_CHARACTER); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // Tag open state + //------------------------------------------------------------------ + _stateTagOpen(cp) { + if (isAsciiLetter(cp)) { + this._createStartTagToken(); + this.state = State.TAG_NAME; + this._stateTagName(cp); + } + else + switch (cp) { + case unicode$1.CODE_POINTS.EXCLAMATION_MARK: { + this.state = State.MARKUP_DECLARATION_OPEN; + break; + } + case unicode$1.CODE_POINTS.SOLIDUS: { + this.state = State.END_TAG_OPEN; + break; + } + case unicode$1.CODE_POINTS.QUESTION_MARK: { + this._err(errorCodes$1.ERR.unexpectedQuestionMarkInsteadOfTagName); + this._createCommentToken(1); + this.state = State.BOGUS_COMMENT; + this._stateBogusComment(cp); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofBeforeTagName); + this._emitChars('<'); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes$1.ERR.invalidFirstCharacterOfTagName); + this._emitChars('<'); + this.state = State.DATA; + this._stateData(cp); + } + } + } + // End tag open state + //------------------------------------------------------------------ + _stateEndTagOpen(cp) { + if (isAsciiLetter(cp)) { + this._createEndTagToken(); + this.state = State.TAG_NAME; + this._stateTagName(cp); + } + else + switch (cp) { + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes$1.ERR.missingEndTagName); + this.state = State.DATA; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofBeforeTagName); + this._emitChars('</'); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes$1.ERR.invalidFirstCharacterOfTagName); + this._createCommentToken(2); + this.state = State.BOGUS_COMMENT; + this._stateBogusComment(cp); + } + } + } + // Tag name state + //------------------------------------------------------------------ + _stateTagName(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + this.state = State.BEFORE_ATTRIBUTE_NAME; + break; + } + case unicode$1.CODE_POINTS.SOLIDUS: { + this.state = State.SELF_CLOSING_START_TAG; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + token.tagName += unicode$1.REPLACEMENT_CHARACTER; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); + } + } + } + // RCDATA less-than sign state + //------------------------------------------------------------------ + _stateRcdataLessThanSign(cp) { + if (cp === unicode$1.CODE_POINTS.SOLIDUS) { + this.state = State.RCDATA_END_TAG_OPEN; + } + else { + this._emitChars('<'); + this.state = State.RCDATA; + this._stateRcdata(cp); + } + } + // RCDATA end tag open state + //------------------------------------------------------------------ + _stateRcdataEndTagOpen(cp) { + if (isAsciiLetter(cp)) { + this.state = State.RCDATA_END_TAG_NAME; + this._stateRcdataEndTagName(cp); + } + else { + this._emitChars('</'); + this.state = State.RCDATA; + this._stateRcdata(cp); + } + } + handleSpecialEndTag(_cp) { + if (!this.preprocessor.startsWith(this.lastStartTagName, false)) { + return !this._ensureHibernation(); + } + this._createEndTagToken(); + const token = this.currentToken; + token.tagName = this.lastStartTagName; + const cp = this.preprocessor.peek(this.lastStartTagName.length); + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + this._advanceBy(this.lastStartTagName.length); + this.state = State.BEFORE_ATTRIBUTE_NAME; + return false; + } + case unicode$1.CODE_POINTS.SOLIDUS: { + this._advanceBy(this.lastStartTagName.length); + this.state = State.SELF_CLOSING_START_TAG; + return false; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._advanceBy(this.lastStartTagName.length); + this.emitCurrentTagToken(); + this.state = State.DATA; + return false; + } + default: { + return !this._ensureHibernation(); + } + } + } + // RCDATA end tag name state + //------------------------------------------------------------------ + _stateRcdataEndTagName(cp) { + if (this.handleSpecialEndTag(cp)) { + this._emitChars('</'); + this.state = State.RCDATA; + this._stateRcdata(cp); + } + } + // RAWTEXT less-than sign state + //------------------------------------------------------------------ + _stateRawtextLessThanSign(cp) { + if (cp === unicode$1.CODE_POINTS.SOLIDUS) { + this.state = State.RAWTEXT_END_TAG_OPEN; + } + else { + this._emitChars('<'); + this.state = State.RAWTEXT; + this._stateRawtext(cp); + } + } + // RAWTEXT end tag open state + //------------------------------------------------------------------ + _stateRawtextEndTagOpen(cp) { + if (isAsciiLetter(cp)) { + this.state = State.RAWTEXT_END_TAG_NAME; + this._stateRawtextEndTagName(cp); + } + else { + this._emitChars('</'); + this.state = State.RAWTEXT; + this._stateRawtext(cp); + } + } + // RAWTEXT end tag name state + //------------------------------------------------------------------ + _stateRawtextEndTagName(cp) { + if (this.handleSpecialEndTag(cp)) { + this._emitChars('</'); + this.state = State.RAWTEXT; + this._stateRawtext(cp); + } + } + // Script data less-than sign state + //------------------------------------------------------------------ + _stateScriptDataLessThanSign(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.SOLIDUS: { + this.state = State.SCRIPT_DATA_END_TAG_OPEN; + break; + } + case unicode$1.CODE_POINTS.EXCLAMATION_MARK: { + this.state = State.SCRIPT_DATA_ESCAPE_START; + this._emitChars('<!'); + break; + } + default: { + this._emitChars('<'); + this.state = State.SCRIPT_DATA; + this._stateScriptData(cp); + } + } + } + // Script data end tag open state + //------------------------------------------------------------------ + _stateScriptDataEndTagOpen(cp) { + if (isAsciiLetter(cp)) { + this.state = State.SCRIPT_DATA_END_TAG_NAME; + this._stateScriptDataEndTagName(cp); + } + else { + this._emitChars('</'); + this.state = State.SCRIPT_DATA; + this._stateScriptData(cp); + } + } + // Script data end tag name state + //------------------------------------------------------------------ + _stateScriptDataEndTagName(cp) { + if (this.handleSpecialEndTag(cp)) { + this._emitChars('</'); + this.state = State.SCRIPT_DATA; + this._stateScriptData(cp); + } + } + // Script data escape start state + //------------------------------------------------------------------ + _stateScriptDataEscapeStart(cp) { + if (cp === unicode$1.CODE_POINTS.HYPHEN_MINUS) { + this.state = State.SCRIPT_DATA_ESCAPE_START_DASH; + this._emitChars('-'); + } + else { + this.state = State.SCRIPT_DATA; + this._stateScriptData(cp); + } + } + // Script data escape start dash state + //------------------------------------------------------------------ + _stateScriptDataEscapeStartDash(cp) { + if (cp === unicode$1.CODE_POINTS.HYPHEN_MINUS) { + this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH; + this._emitChars('-'); + } + else { + this.state = State.SCRIPT_DATA; + this._stateScriptData(cp); + } + } + // Script data escaped state + //------------------------------------------------------------------ + _stateScriptDataEscaped(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.SCRIPT_DATA_ESCAPED_DASH; + this._emitChars('-'); + break; + } + case unicode$1.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this._emitChars(unicode$1.REPLACEMENT_CHARACTER); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // Script data escaped dash state + //------------------------------------------------------------------ + _stateScriptDataEscapedDash(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH; + this._emitChars('-'); + break; + } + case unicode$1.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this.state = State.SCRIPT_DATA_ESCAPED; + this._emitChars(unicode$1.REPLACEMENT_CHARACTER); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + } + default: { + this.state = State.SCRIPT_DATA_ESCAPED; + this._emitCodePoint(cp); + } + } + } + // Script data escaped dash dash state + //------------------------------------------------------------------ + _stateScriptDataEscapedDashDash(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.HYPHEN_MINUS: { + this._emitChars('-'); + break; + } + case unicode$1.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.SCRIPT_DATA; + this._emitChars('>'); + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this.state = State.SCRIPT_DATA_ESCAPED; + this._emitChars(unicode$1.REPLACEMENT_CHARACTER); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + } + default: { + this.state = State.SCRIPT_DATA_ESCAPED; + this._emitCodePoint(cp); + } + } + } + // Script data escaped less-than sign state + //------------------------------------------------------------------ + _stateScriptDataEscapedLessThanSign(cp) { + if (cp === unicode$1.CODE_POINTS.SOLIDUS) { + this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN; + } + else if (isAsciiLetter(cp)) { + this._emitChars('<'); + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START; + this._stateScriptDataDoubleEscapeStart(cp); + } + else { + this._emitChars('<'); + this.state = State.SCRIPT_DATA_ESCAPED; + this._stateScriptDataEscaped(cp); + } + } + // Script data escaped end tag open state + //------------------------------------------------------------------ + _stateScriptDataEscapedEndTagOpen(cp) { + if (isAsciiLetter(cp)) { + this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME; + this._stateScriptDataEscapedEndTagName(cp); + } + else { + this._emitChars('</'); + this.state = State.SCRIPT_DATA_ESCAPED; + this._stateScriptDataEscaped(cp); + } + } + // Script data escaped end tag name state + //------------------------------------------------------------------ + _stateScriptDataEscapedEndTagName(cp) { + if (this.handleSpecialEndTag(cp)) { + this._emitChars('</'); + this.state = State.SCRIPT_DATA_ESCAPED; + this._stateScriptDataEscaped(cp); + } + } + // Script data double escape start state + //------------------------------------------------------------------ + _stateScriptDataDoubleEscapeStart(cp) { + if (this.preprocessor.startsWith(unicode$1.SEQUENCES.SCRIPT, false) && + isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(unicode$1.SEQUENCES.SCRIPT.length))) { + this._emitCodePoint(cp); + for (let i = 0; i < unicode$1.SEQUENCES.SCRIPT.length; i++) { + this._emitCodePoint(this._consume()); + } + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + } + else if (!this._ensureHibernation()) { + this.state = State.SCRIPT_DATA_ESCAPED; + this._stateScriptDataEscaped(cp); + } + } + // Script data double escaped state + //------------------------------------------------------------------ + _stateScriptDataDoubleEscaped(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH; + this._emitChars('-'); + break; + } + case unicode$1.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; + this._emitChars('<'); + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this._emitChars(unicode$1.REPLACEMENT_CHARACTER); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // Script data double escaped dash state + //------------------------------------------------------------------ + _stateScriptDataDoubleEscapedDash(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH; + this._emitChars('-'); + break; + } + case unicode$1.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; + this._emitChars('<'); + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._emitChars(unicode$1.REPLACEMENT_CHARACTER); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + } + default: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._emitCodePoint(cp); + } + } + } + // Script data double escaped dash dash state + //------------------------------------------------------------------ + _stateScriptDataDoubleEscapedDashDash(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.HYPHEN_MINUS: { + this._emitChars('-'); + break; + } + case unicode$1.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; + this._emitChars('<'); + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.SCRIPT_DATA; + this._emitChars('>'); + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._emitChars(unicode$1.REPLACEMENT_CHARACTER); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + } + default: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._emitCodePoint(cp); + } + } + } + // Script data double escaped less-than sign state + //------------------------------------------------------------------ + _stateScriptDataDoubleEscapedLessThanSign(cp) { + if (cp === unicode$1.CODE_POINTS.SOLIDUS) { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END; + this._emitChars('/'); + } + else { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._stateScriptDataDoubleEscaped(cp); + } + } + // Script data double escape end state + //------------------------------------------------------------------ + _stateScriptDataDoubleEscapeEnd(cp) { + if (this.preprocessor.startsWith(unicode$1.SEQUENCES.SCRIPT, false) && + isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(unicode$1.SEQUENCES.SCRIPT.length))) { + this._emitCodePoint(cp); + for (let i = 0; i < unicode$1.SEQUENCES.SCRIPT.length; i++) { + this._emitCodePoint(this._consume()); + } + this.state = State.SCRIPT_DATA_ESCAPED; + } + else if (!this._ensureHibernation()) { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._stateScriptDataDoubleEscaped(cp); + } + } + // Before attribute name state + //------------------------------------------------------------------ + _stateBeforeAttributeName(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode$1.CODE_POINTS.SOLIDUS: + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: + case unicode$1.CODE_POINTS.EOF: { + this.state = State.AFTER_ATTRIBUTE_NAME; + this._stateAfterAttributeName(cp); + break; + } + case unicode$1.CODE_POINTS.EQUALS_SIGN: { + this._err(errorCodes$1.ERR.unexpectedEqualsSignBeforeAttributeName); + this._createAttr('='); + this.state = State.ATTRIBUTE_NAME; + break; + } + default: { + this._createAttr(''); + this.state = State.ATTRIBUTE_NAME; + this._stateAttributeName(cp); + } + } + } + // Attribute name state + //------------------------------------------------------------------ + _stateAttributeName(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: + case unicode$1.CODE_POINTS.SOLIDUS: + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: + case unicode$1.CODE_POINTS.EOF: { + this._leaveAttrName(); + this.state = State.AFTER_ATTRIBUTE_NAME; + this._stateAfterAttributeName(cp); + break; + } + case unicode$1.CODE_POINTS.EQUALS_SIGN: { + this._leaveAttrName(); + this.state = State.BEFORE_ATTRIBUTE_VALUE; + break; + } + case unicode$1.CODE_POINTS.QUOTATION_MARK: + case unicode$1.CODE_POINTS.APOSTROPHE: + case unicode$1.CODE_POINTS.LESS_THAN_SIGN: { + this._err(errorCodes$1.ERR.unexpectedCharacterInAttributeName); + this.currentAttr.name += String.fromCodePoint(cp); + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this.currentAttr.name += unicode$1.REPLACEMENT_CHARACTER; + break; + } + default: { + this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); + } + } + } + // After attribute name state + //------------------------------------------------------------------ + _stateAfterAttributeName(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode$1.CODE_POINTS.SOLIDUS: { + this.state = State.SELF_CLOSING_START_TAG; + break; + } + case unicode$1.CODE_POINTS.EQUALS_SIGN: { + this.state = State.BEFORE_ATTRIBUTE_VALUE; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this._createAttr(''); + this.state = State.ATTRIBUTE_NAME; + this._stateAttributeName(cp); + } + } + } + // Before attribute value state + //------------------------------------------------------------------ + _stateBeforeAttributeValue(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode$1.CODE_POINTS.QUOTATION_MARK: { + this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.APOSTROPHE: { + this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes$1.ERR.missingAttributeValue); + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + default: { + this.state = State.ATTRIBUTE_VALUE_UNQUOTED; + this._stateAttributeValueUnquoted(cp); + } + } + } + // Attribute value (double-quoted) state + //------------------------------------------------------------------ + _stateAttributeValueDoubleQuoted(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.QUOTATION_MARK: { + this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.AMPERSAND: { + this.returnState = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED; + this.state = State.CHARACTER_REFERENCE; + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this.currentAttr.value += unicode$1.REPLACEMENT_CHARACTER; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this.currentAttr.value += String.fromCodePoint(cp); + } + } + } + // Attribute value (single-quoted) state + //------------------------------------------------------------------ + _stateAttributeValueSingleQuoted(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.APOSTROPHE: { + this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.AMPERSAND: { + this.returnState = State.ATTRIBUTE_VALUE_SINGLE_QUOTED; + this.state = State.CHARACTER_REFERENCE; + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this.currentAttr.value += unicode$1.REPLACEMENT_CHARACTER; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this.currentAttr.value += String.fromCodePoint(cp); + } + } + } + // Attribute value (unquoted) state + //------------------------------------------------------------------ + _stateAttributeValueUnquoted(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + this._leaveAttrValue(); + this.state = State.BEFORE_ATTRIBUTE_NAME; + break; + } + case unicode$1.CODE_POINTS.AMPERSAND: { + this.returnState = State.ATTRIBUTE_VALUE_UNQUOTED; + this.state = State.CHARACTER_REFERENCE; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._leaveAttrValue(); + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this.currentAttr.value += unicode$1.REPLACEMENT_CHARACTER; + break; + } + case unicode$1.CODE_POINTS.QUOTATION_MARK: + case unicode$1.CODE_POINTS.APOSTROPHE: + case unicode$1.CODE_POINTS.LESS_THAN_SIGN: + case unicode$1.CODE_POINTS.EQUALS_SIGN: + case unicode$1.CODE_POINTS.GRAVE_ACCENT: { + this._err(errorCodes$1.ERR.unexpectedCharacterInUnquotedAttributeValue); + this.currentAttr.value += String.fromCodePoint(cp); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this.currentAttr.value += String.fromCodePoint(cp); + } + } + } + // After attribute value (quoted) state + //------------------------------------------------------------------ + _stateAfterAttributeValueQuoted(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + this._leaveAttrValue(); + this.state = State.BEFORE_ATTRIBUTE_NAME; + break; + } + case unicode$1.CODE_POINTS.SOLIDUS: { + this._leaveAttrValue(); + this.state = State.SELF_CLOSING_START_TAG; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._leaveAttrValue(); + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes$1.ERR.missingWhitespaceBetweenAttributes); + this.state = State.BEFORE_ATTRIBUTE_NAME; + this._stateBeforeAttributeName(cp); + } + } + } + // Self-closing start tag state + //------------------------------------------------------------------ + _stateSelfClosingStartTag(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + const token = this.currentToken; + token.selfClosing = true; + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes$1.ERR.unexpectedSolidusInTag); + this.state = State.BEFORE_ATTRIBUTE_NAME; + this._stateBeforeAttributeName(cp); + } + } + } + // Bogus comment state + //------------------------------------------------------------------ + _stateBogusComment(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentComment(token); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + token.data += unicode$1.REPLACEMENT_CHARACTER; + break; + } + default: { + token.data += String.fromCodePoint(cp); + } + } + } + // Markup declaration open state + //------------------------------------------------------------------ + _stateMarkupDeclarationOpen(cp) { + if (this._consumeSequenceIfMatch(unicode$1.SEQUENCES.DASH_DASH, true)) { + this._createCommentToken(unicode$1.SEQUENCES.DASH_DASH.length + 1); + this.state = State.COMMENT_START; + } + else if (this._consumeSequenceIfMatch(unicode$1.SEQUENCES.DOCTYPE, false)) { + // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here. + this.currentLocation = this.getCurrentLocation(unicode$1.SEQUENCES.DOCTYPE.length + 1); + this.state = State.DOCTYPE; + } + else if (this._consumeSequenceIfMatch(unicode$1.SEQUENCES.CDATA_START, true)) { + if (this.inForeignNode) { + this.state = State.CDATA_SECTION; + } + else { + this._err(errorCodes$1.ERR.cdataInHtmlContent); + this._createCommentToken(unicode$1.SEQUENCES.CDATA_START.length + 1); + this.currentToken.data = '[CDATA['; + this.state = State.BOGUS_COMMENT; + } + } + //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup + //results are no longer valid and we will need to start over. + else if (!this._ensureHibernation()) { + this._err(errorCodes$1.ERR.incorrectlyOpenedComment); + this._createCommentToken(2); + this.state = State.BOGUS_COMMENT; + this._stateBogusComment(cp); + } + } + // Comment start state + //------------------------------------------------------------------ + _stateCommentStart(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.COMMENT_START_DASH; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes$1.ERR.abruptClosingOfEmptyComment); + this.state = State.DATA; + const token = this.currentToken; + this.emitCurrentComment(token); + break; + } + default: { + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment start dash state + //------------------------------------------------------------------ + _stateCommentStartDash(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.COMMENT_END; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes$1.ERR.abruptClosingOfEmptyComment); + this.state = State.DATA; + this.emitCurrentComment(token); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += '-'; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment state + //------------------------------------------------------------------ + _stateComment(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.COMMENT_END_DASH; + break; + } + case unicode$1.CODE_POINTS.LESS_THAN_SIGN: { + token.data += '<'; + this.state = State.COMMENT_LESS_THAN_SIGN; + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + token.data += unicode$1.REPLACEMENT_CHARACTER; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += String.fromCodePoint(cp); + } + } + } + // Comment less-than sign state + //------------------------------------------------------------------ + _stateCommentLessThanSign(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.EXCLAMATION_MARK: { + token.data += '!'; + this.state = State.COMMENT_LESS_THAN_SIGN_BANG; + break; + } + case unicode$1.CODE_POINTS.LESS_THAN_SIGN: { + token.data += '<'; + break; + } + default: { + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment less-than sign bang state + //------------------------------------------------------------------ + _stateCommentLessThanSignBang(cp) { + if (cp === unicode$1.CODE_POINTS.HYPHEN_MINUS) { + this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH; + } + else { + this.state = State.COMMENT; + this._stateComment(cp); + } + } + // Comment less-than sign bang dash state + //------------------------------------------------------------------ + _stateCommentLessThanSignBangDash(cp) { + if (cp === unicode$1.CODE_POINTS.HYPHEN_MINUS) { + this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH; + } + else { + this.state = State.COMMENT_END_DASH; + this._stateCommentEndDash(cp); + } + } + // Comment less-than sign bang dash dash state + //------------------------------------------------------------------ + _stateCommentLessThanSignBangDashDash(cp) { + if (cp !== unicode$1.CODE_POINTS.GREATER_THAN_SIGN && cp !== unicode$1.CODE_POINTS.EOF) { + this._err(errorCodes$1.ERR.nestedComment); + } + this.state = State.COMMENT_END; + this._stateCommentEnd(cp); + } + // Comment end dash state + //------------------------------------------------------------------ + _stateCommentEndDash(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.COMMENT_END; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += '-'; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment end state + //------------------------------------------------------------------ + _stateCommentEnd(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentComment(token); + break; + } + case unicode$1.CODE_POINTS.EXCLAMATION_MARK: { + this.state = State.COMMENT_END_BANG; + break; + } + case unicode$1.CODE_POINTS.HYPHEN_MINUS: { + token.data += '-'; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += '--'; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment end bang state + //------------------------------------------------------------------ + _stateCommentEndBang(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.HYPHEN_MINUS: { + token.data += '--!'; + this.state = State.COMMENT_END_DASH; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes$1.ERR.incorrectlyClosedComment); + this.state = State.DATA; + this.emitCurrentComment(token); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += '--!'; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // DOCTYPE state + //------------------------------------------------------------------ + _stateDoctype(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + this.state = State.BEFORE_DOCTYPE_NAME; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.BEFORE_DOCTYPE_NAME; + this._stateBeforeDoctypeName(cp); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + this._createDoctypeToken(null); + const token = this.currentToken; + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes$1.ERR.missingWhitespaceBeforeDoctypeName); + this.state = State.BEFORE_DOCTYPE_NAME; + this._stateBeforeDoctypeName(cp); + } + } + } + // Before DOCTYPE name state + //------------------------------------------------------------------ + _stateBeforeDoctypeName(cp) { + if (isAsciiUpper(cp)) { + this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp))); + this.state = State.DOCTYPE_NAME; + } + else + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + this._createDoctypeToken(unicode$1.REPLACEMENT_CHARACTER); + this.state = State.DOCTYPE_NAME; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes$1.ERR.missingDoctypeName); + this._createDoctypeToken(null); + const token = this.currentToken; + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + this._createDoctypeToken(null); + const token = this.currentToken; + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._createDoctypeToken(String.fromCodePoint(cp)); + this.state = State.DOCTYPE_NAME; + } + } + } + // DOCTYPE name state + //------------------------------------------------------------------ + _stateDoctypeName(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + this.state = State.AFTER_DOCTYPE_NAME; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + token.name += unicode$1.REPLACEMENT_CHARACTER; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); + } + } + } + // After DOCTYPE name state + //------------------------------------------------------------------ + _stateAfterDoctypeName(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + if (this._consumeSequenceIfMatch(unicode$1.SEQUENCES.PUBLIC, false)) { + this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD; + } + else if (this._consumeSequenceIfMatch(unicode$1.SEQUENCES.SYSTEM, false)) { + this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD; + } + //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup + //results are no longer valid and we will need to start over. + else if (!this._ensureHibernation()) { + this._err(errorCodes$1.ERR.invalidCharacterSequenceAfterDoctypeName); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + } + // After DOCTYPE public keyword state + //------------------------------------------------------------------ + _stateAfterDoctypePublicKeyword(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER; + break; + } + case unicode$1.CODE_POINTS.QUOTATION_MARK: { + this._err(errorCodes$1.ERR.missingWhitespaceAfterDoctypePublicKeyword); + token.publicId = ''; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.APOSTROPHE: { + this._err(errorCodes$1.ERR.missingWhitespaceAfterDoctypePublicKeyword); + token.publicId = ''; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes$1.ERR.missingDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes$1.ERR.missingQuoteBeforeDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // Before DOCTYPE public identifier state + //------------------------------------------------------------------ + _stateBeforeDoctypePublicIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode$1.CODE_POINTS.QUOTATION_MARK: { + token.publicId = ''; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.APOSTROPHE: { + token.publicId = ''; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes$1.ERR.missingDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes$1.ERR.missingQuoteBeforeDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // DOCTYPE public identifier (double-quoted) state + //------------------------------------------------------------------ + _stateDoctypePublicIdentifierDoubleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.QUOTATION_MARK: { + this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + token.publicId += unicode$1.REPLACEMENT_CHARACTER; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes$1.ERR.abruptDoctypePublicIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.publicId += String.fromCodePoint(cp); + } + } + } + // DOCTYPE public identifier (single-quoted) state + //------------------------------------------------------------------ + _stateDoctypePublicIdentifierSingleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.APOSTROPHE: { + this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + token.publicId += unicode$1.REPLACEMENT_CHARACTER; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes$1.ERR.abruptDoctypePublicIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.publicId += String.fromCodePoint(cp); + } + } + } + // After DOCTYPE public identifier state + //------------------------------------------------------------------ + _stateAfterDoctypePublicIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case unicode$1.CODE_POINTS.QUOTATION_MARK: { + this._err(errorCodes$1.ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.APOSTROPHE: { + this._err(errorCodes$1.ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes$1.ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // Between DOCTYPE public and system identifiers state + //------------------------------------------------------------------ + _stateBetweenDoctypePublicAndSystemIdentifiers(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode$1.CODE_POINTS.QUOTATION_MARK: { + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.APOSTROPHE: { + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes$1.ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // After DOCTYPE system keyword state + //------------------------------------------------------------------ + _stateAfterDoctypeSystemKeyword(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER; + break; + } + case unicode$1.CODE_POINTS.QUOTATION_MARK: { + this._err(errorCodes$1.ERR.missingWhitespaceAfterDoctypeSystemKeyword); + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.APOSTROPHE: { + this._err(errorCodes$1.ERR.missingWhitespaceAfterDoctypeSystemKeyword); + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes$1.ERR.missingDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes$1.ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // Before DOCTYPE system identifier state + //------------------------------------------------------------------ + _stateBeforeDoctypeSystemIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode$1.CODE_POINTS.QUOTATION_MARK: { + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.APOSTROPHE: { + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes$1.ERR.missingDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes$1.ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // DOCTYPE system identifier (double-quoted) state + //------------------------------------------------------------------ + _stateDoctypeSystemIdentifierDoubleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.QUOTATION_MARK: { + this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + token.systemId += unicode$1.REPLACEMENT_CHARACTER; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes$1.ERR.abruptDoctypeSystemIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.systemId += String.fromCodePoint(cp); + } + } + } + // DOCTYPE system identifier (single-quoted) state + //------------------------------------------------------------------ + _stateDoctypeSystemIdentifierSingleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.APOSTROPHE: { + this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + token.systemId += unicode$1.REPLACEMENT_CHARACTER; + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes$1.ERR.abruptDoctypeSystemIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.systemId += String.fromCodePoint(cp); + } + } + } + // After DOCTYPE system identifier state + //------------------------------------------------------------------ + _stateAfterDoctypeSystemIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.SPACE: + case unicode$1.CODE_POINTS.LINE_FEED: + case unicode$1.CODE_POINTS.TABULATION: + case unicode$1.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes$1.ERR.unexpectedCharacterAfterDoctypeSystemIdentifier); + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // Bogus DOCTYPE state + //------------------------------------------------------------------ + _stateBogusDoctype(cp) { + const token = this.currentToken; + switch (cp) { + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode$1.CODE_POINTS.NULL: { + this._err(errorCodes$1.ERR.unexpectedNullCharacter); + break; + } + case unicode$1.CODE_POINTS.EOF: { + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + // Do nothing + } + } + // CDATA section state + //------------------------------------------------------------------ + _stateCdataSection(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.RIGHT_SQUARE_BRACKET: { + this.state = State.CDATA_SECTION_BRACKET; + break; + } + case unicode$1.CODE_POINTS.EOF: { + this._err(errorCodes$1.ERR.eofInCdata); + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // CDATA section bracket state + //------------------------------------------------------------------ + _stateCdataSectionBracket(cp) { + if (cp === unicode$1.CODE_POINTS.RIGHT_SQUARE_BRACKET) { + this.state = State.CDATA_SECTION_END; + } + else { + this._emitChars(']'); + this.state = State.CDATA_SECTION; + this._stateCdataSection(cp); + } + } + // CDATA section end state + //------------------------------------------------------------------ + _stateCdataSectionEnd(cp) { + switch (cp) { + case unicode$1.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + break; + } + case unicode$1.CODE_POINTS.RIGHT_SQUARE_BRACKET: { + this._emitChars(']'); + break; + } + default: { + this._emitChars(']]'); + this.state = State.CDATA_SECTION; + this._stateCdataSection(cp); + } + } + } + // Character reference state + //------------------------------------------------------------------ + _stateCharacterReference(cp) { + if (cp === unicode$1.CODE_POINTS.NUMBER_SIGN) { + this.state = State.NUMERIC_CHARACTER_REFERENCE; + } + else if (isAsciiAlphaNumeric(cp)) { + this.state = State.NAMED_CHARACTER_REFERENCE; + this._stateNamedCharacterReference(cp); + } + else { + this._flushCodePointConsumedAsCharacterReference(unicode$1.CODE_POINTS.AMPERSAND); + this._reconsumeInState(this.returnState, cp); + } + } + // Named character reference state + //------------------------------------------------------------------ + _stateNamedCharacterReference(cp) { + const matchResult = this._matchNamedCharacterReference(cp); + //NOTE: Matching can be abrupted by hibernation. In that case, match + //results are no longer valid and we will need to start over. + if (this._ensureHibernation()) ; + else if (matchResult) { + for (let i = 0; i < matchResult.length; i++) { + this._flushCodePointConsumedAsCharacterReference(matchResult[i]); + } + this.state = this.returnState; + } + else { + this._flushCodePointConsumedAsCharacterReference(unicode$1.CODE_POINTS.AMPERSAND); + this.state = State.AMBIGUOUS_AMPERSAND; + } + } + // Ambiguos ampersand state + //------------------------------------------------------------------ + _stateAmbiguousAmpersand(cp) { + if (isAsciiAlphaNumeric(cp)) { + this._flushCodePointConsumedAsCharacterReference(cp); + } + else { + if (cp === unicode$1.CODE_POINTS.SEMICOLON) { + this._err(errorCodes$1.ERR.unknownNamedCharacterReference); + } + this._reconsumeInState(this.returnState, cp); + } + } + // Numeric character reference state + //------------------------------------------------------------------ + _stateNumericCharacterReference(cp) { + this.charRefCode = 0; + if (cp === unicode$1.CODE_POINTS.LATIN_SMALL_X || cp === unicode$1.CODE_POINTS.LATIN_CAPITAL_X) { + this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START; + } + // Inlined decimal character reference start state + else if (isAsciiDigit(cp)) { + this.state = State.DECIMAL_CHARACTER_REFERENCE; + this._stateDecimalCharacterReference(cp); + } + else { + this._err(errorCodes$1.ERR.absenceOfDigitsInNumericCharacterReference); + this._flushCodePointConsumedAsCharacterReference(unicode$1.CODE_POINTS.AMPERSAND); + this._flushCodePointConsumedAsCharacterReference(unicode$1.CODE_POINTS.NUMBER_SIGN); + this._reconsumeInState(this.returnState, cp); + } + } + // Hexademical character reference start state + //------------------------------------------------------------------ + _stateHexademicalCharacterReferenceStart(cp) { + if (isAsciiHexDigit(cp)) { + this.state = State.HEXADEMICAL_CHARACTER_REFERENCE; + this._stateHexademicalCharacterReference(cp); + } + else { + this._err(errorCodes$1.ERR.absenceOfDigitsInNumericCharacterReference); + this._flushCodePointConsumedAsCharacterReference(unicode$1.CODE_POINTS.AMPERSAND); + this._flushCodePointConsumedAsCharacterReference(unicode$1.CODE_POINTS.NUMBER_SIGN); + this._unconsume(2); + this.state = this.returnState; + } + } + // Hexademical character reference state + //------------------------------------------------------------------ + _stateHexademicalCharacterReference(cp) { + if (isAsciiUpperHexDigit(cp)) { + this.charRefCode = this.charRefCode * 16 + cp - 0x37; + } + else if (isAsciiLowerHexDigit(cp)) { + this.charRefCode = this.charRefCode * 16 + cp - 0x57; + } + else if (isAsciiDigit(cp)) { + this.charRefCode = this.charRefCode * 16 + cp - 0x30; + } + else if (cp === unicode$1.CODE_POINTS.SEMICOLON) { + this.state = State.NUMERIC_CHARACTER_REFERENCE_END; + } + else { + this._err(errorCodes$1.ERR.missingSemicolonAfterCharacterReference); + this.state = State.NUMERIC_CHARACTER_REFERENCE_END; + this._stateNumericCharacterReferenceEnd(cp); + } + } + // Decimal character reference state + //------------------------------------------------------------------ + _stateDecimalCharacterReference(cp) { + if (isAsciiDigit(cp)) { + this.charRefCode = this.charRefCode * 10 + cp - 0x30; + } + else if (cp === unicode$1.CODE_POINTS.SEMICOLON) { + this.state = State.NUMERIC_CHARACTER_REFERENCE_END; + } + else { + this._err(errorCodes$1.ERR.missingSemicolonAfterCharacterReference); + this.state = State.NUMERIC_CHARACTER_REFERENCE_END; + this._stateNumericCharacterReferenceEnd(cp); + } + } + // Numeric character reference end state + //------------------------------------------------------------------ + _stateNumericCharacterReferenceEnd(cp) { + if (this.charRefCode === unicode$1.CODE_POINTS.NULL) { + this._err(errorCodes$1.ERR.nullCharacterReference); + this.charRefCode = unicode$1.CODE_POINTS.REPLACEMENT_CHARACTER; + } + else if (this.charRefCode > 1114111) { + this._err(errorCodes$1.ERR.characterReferenceOutsideUnicodeRange); + this.charRefCode = unicode$1.CODE_POINTS.REPLACEMENT_CHARACTER; + } + else if ((0, unicode$1.isSurrogate)(this.charRefCode)) { + this._err(errorCodes$1.ERR.surrogateCharacterReference); + this.charRefCode = unicode$1.CODE_POINTS.REPLACEMENT_CHARACTER; + } + else if ((0, unicode$1.isUndefinedCodePoint)(this.charRefCode)) { + this._err(errorCodes$1.ERR.noncharacterCharacterReference); + } + else if ((0, unicode$1.isControlCodePoint)(this.charRefCode) || this.charRefCode === unicode$1.CODE_POINTS.CARRIAGE_RETURN) { + this._err(errorCodes$1.ERR.controlCharacterReference); + const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode); + if (replacement !== undefined) { + this.charRefCode = replacement; + } + } + this._flushCodePointConsumedAsCharacterReference(this.charRefCode); + this._reconsumeInState(this.returnState, cp); + } +} +exports.Tokenizer = Tokenizer; + +}); + +var openElementStack$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.OpenElementStack = void 0; + +//Element utils +const IMPLICIT_END_TAG_REQUIRED = new Set([html$1.TAG_ID.DD, html$1.TAG_ID.DT, html$1.TAG_ID.LI, html$1.TAG_ID.OPTGROUP, html$1.TAG_ID.OPTION, html$1.TAG_ID.P, html$1.TAG_ID.RB, html$1.TAG_ID.RP, html$1.TAG_ID.RT, html$1.TAG_ID.RTC]); +const IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([ + ...IMPLICIT_END_TAG_REQUIRED, + html$1.TAG_ID.CAPTION, + html$1.TAG_ID.COLGROUP, + html$1.TAG_ID.TBODY, + html$1.TAG_ID.TD, + html$1.TAG_ID.TFOOT, + html$1.TAG_ID.TH, + html$1.TAG_ID.THEAD, + html$1.TAG_ID.TR, +]); +const SCOPING_ELEMENT_NS = new Map([ + [html$1.TAG_ID.APPLET, html$1.NS.HTML], + [html$1.TAG_ID.CAPTION, html$1.NS.HTML], + [html$1.TAG_ID.HTML, html$1.NS.HTML], + [html$1.TAG_ID.MARQUEE, html$1.NS.HTML], + [html$1.TAG_ID.OBJECT, html$1.NS.HTML], + [html$1.TAG_ID.TABLE, html$1.NS.HTML], + [html$1.TAG_ID.TD, html$1.NS.HTML], + [html$1.TAG_ID.TEMPLATE, html$1.NS.HTML], + [html$1.TAG_ID.TH, html$1.NS.HTML], + [html$1.TAG_ID.ANNOTATION_XML, html$1.NS.MATHML], + [html$1.TAG_ID.MI, html$1.NS.MATHML], + [html$1.TAG_ID.MN, html$1.NS.MATHML], + [html$1.TAG_ID.MO, html$1.NS.MATHML], + [html$1.TAG_ID.MS, html$1.NS.MATHML], + [html$1.TAG_ID.MTEXT, html$1.NS.MATHML], + [html$1.TAG_ID.DESC, html$1.NS.SVG], + [html$1.TAG_ID.FOREIGN_OBJECT, html$1.NS.SVG], + [html$1.TAG_ID.TITLE, html$1.NS.SVG], +]); +const NAMED_HEADERS = [html$1.TAG_ID.H1, html$1.TAG_ID.H2, html$1.TAG_ID.H3, html$1.TAG_ID.H4, html$1.TAG_ID.H5, html$1.TAG_ID.H6]; +const TABLE_ROW_CONTEXT = [html$1.TAG_ID.TR, html$1.TAG_ID.TEMPLATE, html$1.TAG_ID.HTML]; +const TABLE_BODY_CONTEXT = [html$1.TAG_ID.TBODY, html$1.TAG_ID.TFOOT, html$1.TAG_ID.THEAD, html$1.TAG_ID.TEMPLATE, html$1.TAG_ID.HTML]; +const TABLE_CONTEXT = [html$1.TAG_ID.TABLE, html$1.TAG_ID.TEMPLATE, html$1.TAG_ID.HTML]; +const TABLE_CELLS = [html$1.TAG_ID.TD, html$1.TAG_ID.TH]; +//Stack of open elements +class OpenElementStack { + get currentTmplContentOrNode() { + return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current; + } + constructor(document, treeAdapter, handler) { + this.treeAdapter = treeAdapter; + this.handler = handler; + this.items = []; + this.tagIDs = []; + this.stackTop = -1; + this.tmplCount = 0; + this.currentTagId = html$1.TAG_ID.UNKNOWN; + this.current = document; + } + //Index of element + _indexOf(element) { + return this.items.lastIndexOf(element, this.stackTop); + } + //Update current element + _isInTemplate() { + return this.currentTagId === html$1.TAG_ID.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === html$1.NS.HTML; + } + _updateCurrentElement() { + this.current = this.items[this.stackTop]; + this.currentTagId = this.tagIDs[this.stackTop]; + } + //Mutations + push(element, tagID) { + this.stackTop++; + this.items[this.stackTop] = element; + this.current = element; + this.tagIDs[this.stackTop] = tagID; + this.currentTagId = tagID; + if (this._isInTemplate()) { + this.tmplCount++; + } + this.handler.onItemPush(element, tagID, true); + } + pop() { + const popped = this.current; + if (this.tmplCount > 0 && this._isInTemplate()) { + this.tmplCount--; + } + this.stackTop--; + this._updateCurrentElement(); + this.handler.onItemPop(popped, true); + } + replace(oldElement, newElement) { + const idx = this._indexOf(oldElement); + this.items[idx] = newElement; + if (idx === this.stackTop) { + this.current = newElement; + } + } + insertAfter(referenceElement, newElement, newElementID) { + const insertionIdx = this._indexOf(referenceElement) + 1; + this.items.splice(insertionIdx, 0, newElement); + this.tagIDs.splice(insertionIdx, 0, newElementID); + this.stackTop++; + if (insertionIdx === this.stackTop) { + this._updateCurrentElement(); + } + this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop); + } + popUntilTagNamePopped(tagName) { + let targetIdx = this.stackTop + 1; + do { + targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1); + } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== html$1.NS.HTML); + this.shortenToLength(targetIdx < 0 ? 0 : targetIdx); + } + shortenToLength(idx) { + while (this.stackTop >= idx) { + const popped = this.current; + if (this.tmplCount > 0 && this._isInTemplate()) { + this.tmplCount -= 1; + } + this.stackTop--; + this._updateCurrentElement(); + this.handler.onItemPop(popped, this.stackTop < idx); + } + } + popUntilElementPopped(element) { + const idx = this._indexOf(element); + this.shortenToLength(idx < 0 ? 0 : idx); + } + popUntilPopped(tagNames, targetNS) { + const idx = this._indexOfTagNames(tagNames, targetNS); + this.shortenToLength(idx < 0 ? 0 : idx); + } + popUntilNumberedHeaderPopped() { + this.popUntilPopped(NAMED_HEADERS, html$1.NS.HTML); + } + popUntilTableCellPopped() { + this.popUntilPopped(TABLE_CELLS, html$1.NS.HTML); + } + popAllUpToHtmlElement() { + //NOTE: here we assume that the root <html> element is always first in the open element stack, so + //we perform this fast stack clean up. + this.tmplCount = 0; + this.shortenToLength(1); + } + _indexOfTagNames(tagNames, namespace) { + for (let i = this.stackTop; i >= 0; i--) { + if (tagNames.includes(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) { + return i; + } + } + return -1; + } + clearBackTo(tagNames, targetNS) { + const idx = this._indexOfTagNames(tagNames, targetNS); + this.shortenToLength(idx + 1); + } + clearBackToTableContext() { + this.clearBackTo(TABLE_CONTEXT, html$1.NS.HTML); + } + clearBackToTableBodyContext() { + this.clearBackTo(TABLE_BODY_CONTEXT, html$1.NS.HTML); + } + clearBackToTableRowContext() { + this.clearBackTo(TABLE_ROW_CONTEXT, html$1.NS.HTML); + } + remove(element) { + const idx = this._indexOf(element); + if (idx >= 0) { + if (idx === this.stackTop) { + this.pop(); + } + else { + this.items.splice(idx, 1); + this.tagIDs.splice(idx, 1); + this.stackTop--; + this._updateCurrentElement(); + this.handler.onItemPop(element, false); + } + } + } + //Search + tryPeekProperlyNestedBodyElement() { + //Properly nested <body> element (should be second element in stack). + return this.stackTop >= 1 && this.tagIDs[1] === html$1.TAG_ID.BODY ? this.items[1] : null; + } + contains(element) { + return this._indexOf(element) > -1; + } + getCommonAncestor(element) { + const elementIdx = this._indexOf(element) - 1; + return elementIdx >= 0 ? this.items[elementIdx] : null; + } + isRootHtmlElementCurrent() { + return this.stackTop === 0 && this.tagIDs[0] === html$1.TAG_ID.HTML; + } + //Element in scope + hasInScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (tn === tagName && ns === html$1.NS.HTML) { + return true; + } + if (SCOPING_ELEMENT_NS.get(tn) === ns) { + return false; + } + } + return true; + } + hasNumberedHeaderInScope() { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if ((0, html$1.isNumberedHeader)(tn) && ns === html$1.NS.HTML) { + return true; + } + if (SCOPING_ELEMENT_NS.get(tn) === ns) { + return false; + } + } + return true; + } + hasInListItemScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (tn === tagName && ns === html$1.NS.HTML) { + return true; + } + if (((tn === html$1.TAG_ID.UL || tn === html$1.TAG_ID.OL) && ns === html$1.NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) { + return false; + } + } + return true; + } + hasInButtonScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (tn === tagName && ns === html$1.NS.HTML) { + return true; + } + if ((tn === html$1.TAG_ID.BUTTON && ns === html$1.NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) { + return false; + } + } + return true; + } + hasInTableScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (ns !== html$1.NS.HTML) { + continue; + } + if (tn === tagName) { + return true; + } + if (tn === html$1.TAG_ID.TABLE || tn === html$1.TAG_ID.TEMPLATE || tn === html$1.TAG_ID.HTML) { + return false; + } + } + return true; + } + hasTableBodyContextInTableScope() { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (ns !== html$1.NS.HTML) { + continue; + } + if (tn === html$1.TAG_ID.TBODY || tn === html$1.TAG_ID.THEAD || tn === html$1.TAG_ID.TFOOT) { + return true; + } + if (tn === html$1.TAG_ID.TABLE || tn === html$1.TAG_ID.HTML) { + return false; + } + } + return true; + } + hasInSelectScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (ns !== html$1.NS.HTML) { + continue; + } + if (tn === tagName) { + return true; + } + if (tn !== html$1.TAG_ID.OPTION && tn !== html$1.TAG_ID.OPTGROUP) { + return false; + } + } + return true; + } + //Implied end tags + generateImpliedEndTags() { + while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) { + this.pop(); + } + } + generateImpliedEndTagsThoroughly() { + while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { + this.pop(); + } + } + generateImpliedEndTagsWithExclusion(exclusionId) { + while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { + this.pop(); + } + } +} +exports.OpenElementStack = OpenElementStack; + +}); + +var formattingElementList$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FormattingElementList = exports.EntryType = void 0; +//Const +const NOAH_ARK_CAPACITY = 3; +var EntryType; +(function (EntryType) { + EntryType[EntryType["Marker"] = 0] = "Marker"; + EntryType[EntryType["Element"] = 1] = "Element"; +})(EntryType = exports.EntryType || (exports.EntryType = {})); +const MARKER = { type: EntryType.Marker }; +//List of formatting elements +class FormattingElementList { + constructor(treeAdapter) { + this.treeAdapter = treeAdapter; + this.entries = []; + this.bookmark = null; + } + //Noah Ark's condition + //OPTIMIZATION: at first we try to find possible candidates for exclusion using + //lightweight heuristics without thorough attributes check. + _getNoahArkConditionCandidates(newElement, neAttrs) { + const candidates = []; + const neAttrsLength = neAttrs.length; + const neTagName = this.treeAdapter.getTagName(newElement); + const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement); + for (let i = 0; i < this.entries.length; i++) { + const entry = this.entries[i]; + if (entry.type === EntryType.Marker) { + break; + } + const { element } = entry; + if (this.treeAdapter.getTagName(element) === neTagName && + this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) { + const elementAttrs = this.treeAdapter.getAttrList(element); + if (elementAttrs.length === neAttrsLength) { + candidates.push({ idx: i, attrs: elementAttrs }); + } + } + } + return candidates; + } + _ensureNoahArkCondition(newElement) { + if (this.entries.length < NOAH_ARK_CAPACITY) + return; + const neAttrs = this.treeAdapter.getAttrList(newElement); + const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs); + if (candidates.length < NOAH_ARK_CAPACITY) + return; + //NOTE: build attrs map for the new element, so we can perform fast lookups + const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value])); + let validCandidates = 0; + //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met + for (let i = 0; i < candidates.length; i++) { + const candidate = candidates[i]; + // We know that `candidate.attrs.length === neAttrs.length` + if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) { + validCandidates += 1; + if (validCandidates >= NOAH_ARK_CAPACITY) { + this.entries.splice(candidate.idx, 1); + } + } + } + } + //Mutations + insertMarker() { + this.entries.unshift(MARKER); + } + pushElement(element, token) { + this._ensureNoahArkCondition(element); + this.entries.unshift({ + type: EntryType.Element, + element, + token, + }); + } + insertElementAfterBookmark(element, token) { + const bookmarkIdx = this.entries.indexOf(this.bookmark); + this.entries.splice(bookmarkIdx, 0, { + type: EntryType.Element, + element, + token, + }); + } + removeEntry(entry) { + const entryIndex = this.entries.indexOf(entry); + if (entryIndex >= 0) { + this.entries.splice(entryIndex, 1); + } + } + /** + * Clears the list of formatting elements up to the last marker. + * + * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker + */ + clearToLastMarker() { + const markerIdx = this.entries.indexOf(MARKER); + if (markerIdx >= 0) { + this.entries.splice(0, markerIdx + 1); + } + else { + this.entries.length = 0; + } + } + //Search + getElementEntryInScopeWithTagName(tagName) { + const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName); + return entry && entry.type === EntryType.Element ? entry : null; + } + getElementEntry(element) { + return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element); + } +} +exports.FormattingElementList = FormattingElementList; + +}); + +var _default$2 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultTreeAdapter = void 0; + +function createTextNode(value) { + return { + nodeName: '#text', + value, + parentNode: null, + }; +} +exports.defaultTreeAdapter = { + //Node construction + createDocument() { + return { + nodeName: '#document', + mode: html$1.DOCUMENT_MODE.NO_QUIRKS, + childNodes: [], + }; + }, + createDocumentFragment() { + return { + nodeName: '#document-fragment', + childNodes: [], + }; + }, + createElement(tagName, namespaceURI, attrs) { + return { + nodeName: tagName, + tagName, + attrs, + namespaceURI, + childNodes: [], + parentNode: null, + }; + }, + createCommentNode(data) { + return { + nodeName: '#comment', + data, + parentNode: null, + }; + }, + //Tree mutation + appendChild(parentNode, newNode) { + parentNode.childNodes.push(newNode); + newNode.parentNode = parentNode; + }, + insertBefore(parentNode, newNode, referenceNode) { + const insertionIdx = parentNode.childNodes.indexOf(referenceNode); + parentNode.childNodes.splice(insertionIdx, 0, newNode); + newNode.parentNode = parentNode; + }, + setTemplateContent(templateElement, contentElement) { + templateElement.content = contentElement; + }, + getTemplateContent(templateElement) { + return templateElement.content; + }, + setDocumentType(document, name, publicId, systemId) { + const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType'); + if (doctypeNode) { + doctypeNode.name = name; + doctypeNode.publicId = publicId; + doctypeNode.systemId = systemId; + } + else { + const node = { + nodeName: '#documentType', + name, + publicId, + systemId, + parentNode: null, + }; + exports.defaultTreeAdapter.appendChild(document, node); + } + }, + setDocumentMode(document, mode) { + document.mode = mode; + }, + getDocumentMode(document) { + return document.mode; + }, + detachNode(node) { + if (node.parentNode) { + const idx = node.parentNode.childNodes.indexOf(node); + node.parentNode.childNodes.splice(idx, 1); + node.parentNode = null; + } + }, + insertText(parentNode, text) { + if (parentNode.childNodes.length > 0) { + const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1]; + if (exports.defaultTreeAdapter.isTextNode(prevNode)) { + prevNode.value += text; + return; + } + } + exports.defaultTreeAdapter.appendChild(parentNode, createTextNode(text)); + }, + insertTextBefore(parentNode, text, referenceNode) { + const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1]; + if (prevNode && exports.defaultTreeAdapter.isTextNode(prevNode)) { + prevNode.value += text; + } + else { + exports.defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode); + } + }, + adoptAttributes(recipient, attrs) { + const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name)); + for (let j = 0; j < attrs.length; j++) { + if (!recipientAttrsMap.has(attrs[j].name)) { + recipient.attrs.push(attrs[j]); + } + } + }, + //Tree traversing + getFirstChild(node) { + return node.childNodes[0]; + }, + getChildNodes(node) { + return node.childNodes; + }, + getParentNode(node) { + return node.parentNode; + }, + getAttrList(element) { + return element.attrs; + }, + //Node data + getTagName(element) { + return element.tagName; + }, + getNamespaceURI(element) { + return element.namespaceURI; + }, + getTextNodeContent(textNode) { + return textNode.value; + }, + getCommentNodeContent(commentNode) { + return commentNode.data; + }, + getDocumentTypeNodeName(doctypeNode) { + return doctypeNode.name; + }, + getDocumentTypeNodePublicId(doctypeNode) { + return doctypeNode.publicId; + }, + getDocumentTypeNodeSystemId(doctypeNode) { + return doctypeNode.systemId; + }, + //Node types + isTextNode(node) { + return node.nodeName === '#text'; + }, + isCommentNode(node) { + return node.nodeName === '#comment'; + }, + isDocumentTypeNode(node) { + return node.nodeName === '#documentType'; + }, + isElementNode(node) { + return Object.prototype.hasOwnProperty.call(node, 'tagName'); + }, + // Source code location + setNodeSourceCodeLocation(node, location) { + node.sourceCodeLocation = location; + }, + getNodeSourceCodeLocation(node) { + return node.sourceCodeLocation; + }, + updateNodeSourceCodeLocation(node, endLocation) { + node.sourceCodeLocation = Object.assign(Object.assign({}, node.sourceCodeLocation), endLocation); + }, +}; + +}); + +var doctype$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getDocumentMode = exports.isConforming = void 0; + +//Const +const VALID_DOCTYPE_NAME = 'html'; +const VALID_SYSTEM_ID = 'about:legacy-compat'; +const QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd'; +const QUIRKS_MODE_PUBLIC_ID_PREFIXES = [ + '+//silmaril//dtd html pro v0r11 19970101//', + '-//as//dtd html 3.0 aswedit + extensions//', + '-//advasoft ltd//dtd html 3.0 aswedit + extensions//', + '-//ietf//dtd html 2.0 level 1//', + '-//ietf//dtd html 2.0 level 2//', + '-//ietf//dtd html 2.0 strict level 1//', + '-//ietf//dtd html 2.0 strict level 2//', + '-//ietf//dtd html 2.0 strict//', + '-//ietf//dtd html 2.0//', + '-//ietf//dtd html 2.1e//', + '-//ietf//dtd html 3.0//', + '-//ietf//dtd html 3.2 final//', + '-//ietf//dtd html 3.2//', + '-//ietf//dtd html 3//', + '-//ietf//dtd html level 0//', + '-//ietf//dtd html level 1//', + '-//ietf//dtd html level 2//', + '-//ietf//dtd html level 3//', + '-//ietf//dtd html strict level 0//', + '-//ietf//dtd html strict level 1//', + '-//ietf//dtd html strict level 2//', + '-//ietf//dtd html strict level 3//', + '-//ietf//dtd html strict//', + '-//ietf//dtd html//', + '-//metrius//dtd metrius presentational//', + '-//microsoft//dtd internet explorer 2.0 html strict//', + '-//microsoft//dtd internet explorer 2.0 html//', + '-//microsoft//dtd internet explorer 2.0 tables//', + '-//microsoft//dtd internet explorer 3.0 html strict//', + '-//microsoft//dtd internet explorer 3.0 html//', + '-//microsoft//dtd internet explorer 3.0 tables//', + '-//netscape comm. corp.//dtd html//', + '-//netscape comm. corp.//dtd strict html//', + "-//o'reilly and associates//dtd html 2.0//", + "-//o'reilly and associates//dtd html extended 1.0//", + "-//o'reilly and associates//dtd html extended relaxed 1.0//", + '-//sq//dtd html 2.0 hotmetal + extensions//', + '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//', + '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//', + '-//spyglass//dtd html 2.0 extended//', + '-//sun microsystems corp.//dtd hotjava html//', + '-//sun microsystems corp.//dtd hotjava strict html//', + '-//w3c//dtd html 3 1995-03-24//', + '-//w3c//dtd html 3.2 draft//', + '-//w3c//dtd html 3.2 final//', + '-//w3c//dtd html 3.2//', + '-//w3c//dtd html 3.2s draft//', + '-//w3c//dtd html 4.0 frameset//', + '-//w3c//dtd html 4.0 transitional//', + '-//w3c//dtd html experimental 19960712//', + '-//w3c//dtd html experimental 970421//', + '-//w3c//dtd w3 html//', + '-//w3o//dtd w3 html 3.0//', + '-//webtechs//dtd mozilla html 2.0//', + '-//webtechs//dtd mozilla html//', +]; +const QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ + ...QUIRKS_MODE_PUBLIC_ID_PREFIXES, + '-//w3c//dtd html 4.01 frameset//', + '-//w3c//dtd html 4.01 transitional//', +]; +const QUIRKS_MODE_PUBLIC_IDS = new Set([ + '-//w3o//dtd w3 html strict 3.0//en//', + '-/w3c/dtd html 4.0 transitional/en', + 'html', +]); +const LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//']; +const LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ + ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES, + '-//w3c//dtd html 4.01 frameset//', + '-//w3c//dtd html 4.01 transitional//', +]; +//Utils +function hasPrefix(publicId, prefixes) { + return prefixes.some((prefix) => publicId.startsWith(prefix)); +} +//API +function isConforming(token) { + return (token.name === VALID_DOCTYPE_NAME && + token.publicId === null && + (token.systemId === null || token.systemId === VALID_SYSTEM_ID)); +} +exports.isConforming = isConforming; +function getDocumentMode(token) { + if (token.name !== VALID_DOCTYPE_NAME) { + return html$1.DOCUMENT_MODE.QUIRKS; + } + const { systemId } = token; + if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) { + return html$1.DOCUMENT_MODE.QUIRKS; + } + let { publicId } = token; + if (publicId !== null) { + publicId = publicId.toLowerCase(); + if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) { + return html$1.DOCUMENT_MODE.QUIRKS; + } + let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES; + if (hasPrefix(publicId, prefixes)) { + return html$1.DOCUMENT_MODE.QUIRKS; + } + prefixes = + systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES; + if (hasPrefix(publicId, prefixes)) { + return html$1.DOCUMENT_MODE.LIMITED_QUIRKS; + } + } + return html$1.DOCUMENT_MODE.NO_QUIRKS; +} +exports.getDocumentMode = getDocumentMode; + +}); + +var foreignContent$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isIntegrationPoint = exports.adjustTokenSVGTagName = exports.adjustTokenXMLAttrs = exports.adjustTokenSVGAttrs = exports.adjustTokenMathMLAttrs = exports.causesExit = exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = void 0; + +//MIME types +const MIME_TYPES = { + TEXT_HTML: 'text/html', + APPLICATION_XML: 'application/xhtml+xml', +}; +//Attributes +const DEFINITION_URL_ATTR = 'definitionurl'; +const ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL'; +const SVG_ATTRS_ADJUSTMENT_MAP = new Map([ + 'attributeName', + 'attributeType', + 'baseFrequency', + 'baseProfile', + 'calcMode', + 'clipPathUnits', + 'diffuseConstant', + 'edgeMode', + 'filterUnits', + 'glyphRef', + 'gradientTransform', + 'gradientUnits', + 'kernelMatrix', + 'kernelUnitLength', + 'keyPoints', + 'keySplines', + 'keyTimes', + 'lengthAdjust', + 'limitingConeAngle', + 'markerHeight', + 'markerUnits', + 'markerWidth', + 'maskContentUnits', + 'maskUnits', + 'numOctaves', + 'pathLength', + 'patternContentUnits', + 'patternTransform', + 'patternUnits', + 'pointsAtX', + 'pointsAtY', + 'pointsAtZ', + 'preserveAlpha', + 'preserveAspectRatio', + 'primitiveUnits', + 'refX', + 'refY', + 'repeatCount', + 'repeatDur', + 'requiredExtensions', + 'requiredFeatures', + 'specularConstant', + 'specularExponent', + 'spreadMethod', + 'startOffset', + 'stdDeviation', + 'stitchTiles', + 'surfaceScale', + 'systemLanguage', + 'tableValues', + 'targetX', + 'targetY', + 'textLength', + 'viewBox', + 'viewTarget', + 'xChannelSelector', + 'yChannelSelector', + 'zoomAndPan', +].map((attr) => [attr.toLowerCase(), attr])); +const XML_ATTRS_ADJUSTMENT_MAP = new Map([ + ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: html$1.NS.XLINK }], + ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: html$1.NS.XLINK }], + ['xlink:href', { prefix: 'xlink', name: 'href', namespace: html$1.NS.XLINK }], + ['xlink:role', { prefix: 'xlink', name: 'role', namespace: html$1.NS.XLINK }], + ['xlink:show', { prefix: 'xlink', name: 'show', namespace: html$1.NS.XLINK }], + ['xlink:title', { prefix: 'xlink', name: 'title', namespace: html$1.NS.XLINK }], + ['xlink:type', { prefix: 'xlink', name: 'type', namespace: html$1.NS.XLINK }], + ['xml:base', { prefix: 'xml', name: 'base', namespace: html$1.NS.XML }], + ['xml:lang', { prefix: 'xml', name: 'lang', namespace: html$1.NS.XML }], + ['xml:space', { prefix: 'xml', name: 'space', namespace: html$1.NS.XML }], + ['xmlns', { prefix: '', name: 'xmlns', namespace: html$1.NS.XMLNS }], + ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: html$1.NS.XMLNS }], +]); +//SVG tag names adjustment map +exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([ + 'altGlyph', + 'altGlyphDef', + 'altGlyphItem', + 'animateColor', + 'animateMotion', + 'animateTransform', + 'clipPath', + 'feBlend', + 'feColorMatrix', + 'feComponentTransfer', + 'feComposite', + 'feConvolveMatrix', + 'feDiffuseLighting', + 'feDisplacementMap', + 'feDistantLight', + 'feFlood', + 'feFuncA', + 'feFuncB', + 'feFuncG', + 'feFuncR', + 'feGaussianBlur', + 'feImage', + 'feMerge', + 'feMergeNode', + 'feMorphology', + 'feOffset', + 'fePointLight', + 'feSpecularLighting', + 'feSpotLight', + 'feTile', + 'feTurbulence', + 'foreignObject', + 'glyphRef', + 'linearGradient', + 'radialGradient', + 'textPath', +].map((tn) => [tn.toLowerCase(), tn])); +//Tags that causes exit from foreign content +const EXITS_FOREIGN_CONTENT = new Set([ + html$1.TAG_ID.B, + html$1.TAG_ID.BIG, + html$1.TAG_ID.BLOCKQUOTE, + html$1.TAG_ID.BODY, + html$1.TAG_ID.BR, + html$1.TAG_ID.CENTER, + html$1.TAG_ID.CODE, + html$1.TAG_ID.DD, + html$1.TAG_ID.DIV, + html$1.TAG_ID.DL, + html$1.TAG_ID.DT, + html$1.TAG_ID.EM, + html$1.TAG_ID.EMBED, + html$1.TAG_ID.H1, + html$1.TAG_ID.H2, + html$1.TAG_ID.H3, + html$1.TAG_ID.H4, + html$1.TAG_ID.H5, + html$1.TAG_ID.H6, + html$1.TAG_ID.HEAD, + html$1.TAG_ID.HR, + html$1.TAG_ID.I, + html$1.TAG_ID.IMG, + html$1.TAG_ID.LI, + html$1.TAG_ID.LISTING, + html$1.TAG_ID.MENU, + html$1.TAG_ID.META, + html$1.TAG_ID.NOBR, + html$1.TAG_ID.OL, + html$1.TAG_ID.P, + html$1.TAG_ID.PRE, + html$1.TAG_ID.RUBY, + html$1.TAG_ID.S, + html$1.TAG_ID.SMALL, + html$1.TAG_ID.SPAN, + html$1.TAG_ID.STRONG, + html$1.TAG_ID.STRIKE, + html$1.TAG_ID.SUB, + html$1.TAG_ID.SUP, + html$1.TAG_ID.TABLE, + html$1.TAG_ID.TT, + html$1.TAG_ID.U, + html$1.TAG_ID.UL, + html$1.TAG_ID.VAR, +]); +//Check exit from foreign content +function causesExit(startTagToken) { + const tn = startTagToken.tagID; + const isFontWithAttrs = tn === html$1.TAG_ID.FONT && + startTagToken.attrs.some(({ name }) => name === html$1.ATTRS.COLOR || name === html$1.ATTRS.SIZE || name === html$1.ATTRS.FACE); + return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn); +} +exports.causesExit = causesExit; +//Token adjustments +function adjustTokenMathMLAttrs(token) { + for (let i = 0; i < token.attrs.length; i++) { + if (token.attrs[i].name === DEFINITION_URL_ATTR) { + token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR; + break; + } + } +} +exports.adjustTokenMathMLAttrs = adjustTokenMathMLAttrs; +function adjustTokenSVGAttrs(token) { + for (let i = 0; i < token.attrs.length; i++) { + const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); + if (adjustedAttrName != null) { + token.attrs[i].name = adjustedAttrName; + } + } +} +exports.adjustTokenSVGAttrs = adjustTokenSVGAttrs; +function adjustTokenXMLAttrs(token) { + for (let i = 0; i < token.attrs.length; i++) { + const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); + if (adjustedAttrEntry) { + token.attrs[i].prefix = adjustedAttrEntry.prefix; + token.attrs[i].name = adjustedAttrEntry.name; + token.attrs[i].namespace = adjustedAttrEntry.namespace; + } + } +} +exports.adjustTokenXMLAttrs = adjustTokenXMLAttrs; +function adjustTokenSVGTagName(token) { + const adjustedTagName = exports.SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName); + if (adjustedTagName != null) { + token.tagName = adjustedTagName; + token.tagID = (0, html$1.getTagID)(token.tagName); + } +} +exports.adjustTokenSVGTagName = adjustTokenSVGTagName; +//Integration points +function isMathMLTextIntegrationPoint(tn, ns) { + return ns === html$1.NS.MATHML && (tn === html$1.TAG_ID.MI || tn === html$1.TAG_ID.MO || tn === html$1.TAG_ID.MN || tn === html$1.TAG_ID.MS || tn === html$1.TAG_ID.MTEXT); +} +function isHtmlIntegrationPoint(tn, ns, attrs) { + if (ns === html$1.NS.MATHML && tn === html$1.TAG_ID.ANNOTATION_XML) { + for (let i = 0; i < attrs.length; i++) { + if (attrs[i].name === html$1.ATTRS.ENCODING) { + const value = attrs[i].value.toLowerCase(); + return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML; + } + } + } + return ns === html$1.NS.SVG && (tn === html$1.TAG_ID.FOREIGN_OBJECT || tn === html$1.TAG_ID.DESC || tn === html$1.TAG_ID.TITLE); +} +function isIntegrationPoint(tn, ns, attrs, foreignNS) { + return (((!foreignNS || foreignNS === html$1.NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) || + ((!foreignNS || foreignNS === html$1.NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns))); +} +exports.isIntegrationPoint = isIntegrationPoint; + +}); + +var parser$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Parser = void 0; + + + + + + + + + + +//Misc constants +const HIDDEN_INPUT_TYPE = 'hidden'; +//Adoption agency loops iteration count +const AA_OUTER_LOOP_ITER = 8; +const AA_INNER_LOOP_ITER = 3; +//Insertion modes +var InsertionMode; +(function (InsertionMode) { + InsertionMode[InsertionMode["INITIAL"] = 0] = "INITIAL"; + InsertionMode[InsertionMode["BEFORE_HTML"] = 1] = "BEFORE_HTML"; + InsertionMode[InsertionMode["BEFORE_HEAD"] = 2] = "BEFORE_HEAD"; + InsertionMode[InsertionMode["IN_HEAD"] = 3] = "IN_HEAD"; + InsertionMode[InsertionMode["IN_HEAD_NO_SCRIPT"] = 4] = "IN_HEAD_NO_SCRIPT"; + InsertionMode[InsertionMode["AFTER_HEAD"] = 5] = "AFTER_HEAD"; + InsertionMode[InsertionMode["IN_BODY"] = 6] = "IN_BODY"; + InsertionMode[InsertionMode["TEXT"] = 7] = "TEXT"; + InsertionMode[InsertionMode["IN_TABLE"] = 8] = "IN_TABLE"; + InsertionMode[InsertionMode["IN_TABLE_TEXT"] = 9] = "IN_TABLE_TEXT"; + InsertionMode[InsertionMode["IN_CAPTION"] = 10] = "IN_CAPTION"; + InsertionMode[InsertionMode["IN_COLUMN_GROUP"] = 11] = "IN_COLUMN_GROUP"; + InsertionMode[InsertionMode["IN_TABLE_BODY"] = 12] = "IN_TABLE_BODY"; + InsertionMode[InsertionMode["IN_ROW"] = 13] = "IN_ROW"; + InsertionMode[InsertionMode["IN_CELL"] = 14] = "IN_CELL"; + InsertionMode[InsertionMode["IN_SELECT"] = 15] = "IN_SELECT"; + InsertionMode[InsertionMode["IN_SELECT_IN_TABLE"] = 16] = "IN_SELECT_IN_TABLE"; + InsertionMode[InsertionMode["IN_TEMPLATE"] = 17] = "IN_TEMPLATE"; + InsertionMode[InsertionMode["AFTER_BODY"] = 18] = "AFTER_BODY"; + InsertionMode[InsertionMode["IN_FRAMESET"] = 19] = "IN_FRAMESET"; + InsertionMode[InsertionMode["AFTER_FRAMESET"] = 20] = "AFTER_FRAMESET"; + InsertionMode[InsertionMode["AFTER_AFTER_BODY"] = 21] = "AFTER_AFTER_BODY"; + InsertionMode[InsertionMode["AFTER_AFTER_FRAMESET"] = 22] = "AFTER_AFTER_FRAMESET"; +})(InsertionMode || (InsertionMode = {})); +const BASE_LOC = { + startLine: -1, + startCol: -1, + startOffset: -1, + endLine: -1, + endCol: -1, + endOffset: -1, +}; +const TABLE_STRUCTURE_TAGS = new Set([html$1.TAG_ID.TABLE, html$1.TAG_ID.TBODY, html$1.TAG_ID.TFOOT, html$1.TAG_ID.THEAD, html$1.TAG_ID.TR]); +const defaultParserOptions = { + scriptingEnabled: true, + sourceCodeLocationInfo: false, + treeAdapter: _default$2.defaultTreeAdapter, + onParseError: null, +}; +//Parser +class Parser { + constructor(options, document, fragmentContext = null, scriptHandler = null) { + this.fragmentContext = fragmentContext; + this.scriptHandler = scriptHandler; + this.currentToken = null; + this.stopped = false; + this.insertionMode = InsertionMode.INITIAL; + this.originalInsertionMode = InsertionMode.INITIAL; + this.headElement = null; + this.formElement = null; + /** Indicates that the current node is not an element in the HTML namespace */ + this.currentNotInHTML = false; + /** + * The template insertion mode stack is maintained from the left. + * Ie. the topmost element will always have index 0. + */ + this.tmplInsertionModeStack = []; + this.pendingCharacterTokens = []; + this.hasNonWhitespacePendingCharacterToken = false; + this.framesetOk = true; + this.skipNextNewLine = false; + this.fosterParentingEnabled = false; + this.options = Object.assign(Object.assign({}, defaultParserOptions), options); + this.treeAdapter = this.options.treeAdapter; + this.onParseError = this.options.onParseError; + // Always enable location info if we report parse errors. + if (this.onParseError) { + this.options.sourceCodeLocationInfo = true; + } + this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument(); + this.tokenizer = new tokenizer$1.Tokenizer(this.options, this); + this.activeFormattingElements = new formattingElementList$1.FormattingElementList(this.treeAdapter); + this.fragmentContextID = fragmentContext ? (0, html$1.getTagID)(this.treeAdapter.getTagName(fragmentContext)) : html$1.TAG_ID.UNKNOWN; + this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID); + this.openElements = new openElementStack$1.OpenElementStack(this.document, this.treeAdapter, this); + } + // API + static parse(html, options) { + const parser = new this(options); + parser.tokenizer.write(html, true); + return parser.document; + } + static getFragmentParser(fragmentContext, options) { + const opts = Object.assign(Object.assign({}, defaultParserOptions), options); + //NOTE: use a <template> element as the fragment context if no context element was provided, + //so we will parse in a "forgiving" manner + fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(html$1.TAG_NAMES.TEMPLATE, html$1.NS.HTML, [])); + //NOTE: create a fake element which will be used as the `document` for fragment parsing. + //This is important for jsdom, where a new `document` cannot be created. This led to + //fragment parsing messing with the main `document`. + const documentMock = opts.treeAdapter.createElement('documentmock', html$1.NS.HTML, []); + const parser = new this(opts, documentMock, fragmentContext); + if (parser.fragmentContextID === html$1.TAG_ID.TEMPLATE) { + parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE); + } + parser._initTokenizerForFragmentParsing(); + parser._insertFakeRootElement(); + parser._resetInsertionMode(); + parser._findFormInFragmentContext(); + return parser; + } + getFragment() { + const rootElement = this.treeAdapter.getFirstChild(this.document); + const fragment = this.treeAdapter.createDocumentFragment(); + this._adoptNodes(rootElement, fragment); + return fragment; + } + //Errors + _err(token, code, beforeToken) { + var _a; + if (!this.onParseError) + return; + const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC; + const err = { + code, + startLine: loc.startLine, + startCol: loc.startCol, + startOffset: loc.startOffset, + endLine: beforeToken ? loc.startLine : loc.endLine, + endCol: beforeToken ? loc.startCol : loc.endCol, + endOffset: beforeToken ? loc.startOffset : loc.endOffset, + }; + this.onParseError(err); + } + //Stack events + onItemPush(node, tid, isTop) { + var _a, _b; + (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node); + if (isTop && this.openElements.stackTop > 0) + this._setContextModes(node, tid); + } + onItemPop(node, isTop) { + var _a, _b; + if (this.options.sourceCodeLocationInfo) { + this._setEndLocation(node, this.currentToken); + } + (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current); + if (isTop) { + let current; + let currentTagId; + if (this.openElements.stackTop === 0 && this.fragmentContext) { + current = this.fragmentContext; + currentTagId = this.fragmentContextID; + } + else { + ({ current, currentTagId } = this.openElements); + } + this._setContextModes(current, currentTagId); + } + } + _setContextModes(current, tid) { + const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === html$1.NS.HTML; + this.currentNotInHTML = !isHTML; + this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current); + } + _switchToTextParsing(currentToken, nextTokenizerState) { + this._insertElement(currentToken, html$1.NS.HTML); + this.tokenizer.state = nextTokenizerState; + this.originalInsertionMode = this.insertionMode; + this.insertionMode = InsertionMode.TEXT; + } + switchToPlaintextParsing() { + this.insertionMode = InsertionMode.TEXT; + this.originalInsertionMode = InsertionMode.IN_BODY; + this.tokenizer.state = tokenizer$1.TokenizerMode.PLAINTEXT; + } + //Fragment parsing + _getAdjustedCurrentElement() { + return this.openElements.stackTop === 0 && this.fragmentContext + ? this.fragmentContext + : this.openElements.current; + } + _findFormInFragmentContext() { + let node = this.fragmentContext; + while (node) { + if (this.treeAdapter.getTagName(node) === html$1.TAG_NAMES.FORM) { + this.formElement = node; + break; + } + node = this.treeAdapter.getParentNode(node); + } + } + _initTokenizerForFragmentParsing() { + if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== html$1.NS.HTML) { + return; + } + switch (this.fragmentContextID) { + case html$1.TAG_ID.TITLE: + case html$1.TAG_ID.TEXTAREA: { + this.tokenizer.state = tokenizer$1.TokenizerMode.RCDATA; + break; + } + case html$1.TAG_ID.STYLE: + case html$1.TAG_ID.XMP: + case html$1.TAG_ID.IFRAME: + case html$1.TAG_ID.NOEMBED: + case html$1.TAG_ID.NOFRAMES: + case html$1.TAG_ID.NOSCRIPT: { + this.tokenizer.state = tokenizer$1.TokenizerMode.RAWTEXT; + break; + } + case html$1.TAG_ID.SCRIPT: { + this.tokenizer.state = tokenizer$1.TokenizerMode.SCRIPT_DATA; + break; + } + case html$1.TAG_ID.PLAINTEXT: { + this.tokenizer.state = tokenizer$1.TokenizerMode.PLAINTEXT; + break; + } + // Do nothing + } + } + //Tree mutation + _setDocumentType(token) { + const name = token.name || ''; + const publicId = token.publicId || ''; + const systemId = token.systemId || ''; + this.treeAdapter.setDocumentType(this.document, name, publicId, systemId); + if (token.location) { + const documentChildren = this.treeAdapter.getChildNodes(this.document); + const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node)); + if (docTypeNode) { + this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location); + } + } + } + _attachElementToTree(element, location) { + if (this.options.sourceCodeLocationInfo) { + const loc = location && Object.assign(Object.assign({}, location), { startTag: location }); + this.treeAdapter.setNodeSourceCodeLocation(element, loc); + } + if (this._shouldFosterParentOnInsertion()) { + this._fosterParentElement(element); + } + else { + const parent = this.openElements.currentTmplContentOrNode; + this.treeAdapter.appendChild(parent, element); + } + } + _appendElement(token, namespaceURI) { + const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs); + this._attachElementToTree(element, token.location); + } + _insertElement(token, namespaceURI) { + const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs); + this._attachElementToTree(element, token.location); + this.openElements.push(element, token.tagID); + } + _insertFakeElement(tagName, tagID) { + const element = this.treeAdapter.createElement(tagName, html$1.NS.HTML, []); + this._attachElementToTree(element, null); + this.openElements.push(element, tagID); + } + _insertTemplate(token) { + const tmpl = this.treeAdapter.createElement(token.tagName, html$1.NS.HTML, token.attrs); + const content = this.treeAdapter.createDocumentFragment(); + this.treeAdapter.setTemplateContent(tmpl, content); + this._attachElementToTree(tmpl, token.location); + this.openElements.push(tmpl, token.tagID); + if (this.options.sourceCodeLocationInfo) + this.treeAdapter.setNodeSourceCodeLocation(content, null); + } + _insertFakeRootElement() { + const element = this.treeAdapter.createElement(html$1.TAG_NAMES.HTML, html$1.NS.HTML, []); + if (this.options.sourceCodeLocationInfo) + this.treeAdapter.setNodeSourceCodeLocation(element, null); + this.treeAdapter.appendChild(this.openElements.current, element); + this.openElements.push(element, html$1.TAG_ID.HTML); + } + _appendCommentNode(token, parent) { + const commentNode = this.treeAdapter.createCommentNode(token.data); + this.treeAdapter.appendChild(parent, commentNode); + if (this.options.sourceCodeLocationInfo) { + this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location); + } + } + _insertCharacters(token) { + let parent; + let beforeElement; + if (this._shouldFosterParentOnInsertion()) { + ({ parent, beforeElement } = this._findFosterParentingLocation()); + if (beforeElement) { + this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement); + } + else { + this.treeAdapter.insertText(parent, token.chars); + } + } + else { + parent = this.openElements.currentTmplContentOrNode; + this.treeAdapter.insertText(parent, token.chars); + } + if (!token.location) + return; + const siblings = this.treeAdapter.getChildNodes(parent); + const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length; + const textNode = siblings[textNodeIdx - 1]; + //NOTE: if we have a location assigned by another token, then just update the end position + const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode); + if (tnLoc) { + const { endLine, endCol, endOffset } = token.location; + this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset }); + } + else if (this.options.sourceCodeLocationInfo) { + this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location); + } + } + _adoptNodes(donor, recipient) { + for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) { + this.treeAdapter.detachNode(child); + this.treeAdapter.appendChild(recipient, child); + } + } + _setEndLocation(element, closingToken) { + if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) { + const ctLoc = closingToken.location; + const tn = this.treeAdapter.getTagName(element); + const endLoc = + // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing + // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag. + closingToken.type === token$1.TokenType.END_TAG && tn === closingToken.tagName + ? { + endTag: Object.assign({}, ctLoc), + endLine: ctLoc.endLine, + endCol: ctLoc.endCol, + endOffset: ctLoc.endOffset, + } + : { + endLine: ctLoc.startLine, + endCol: ctLoc.startCol, + endOffset: ctLoc.startOffset, + }; + this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc); + } + } + //Token processing + shouldProcessStartTagTokenInForeignContent(token) { + // Check that neither current === document, or ns === NS.HTML + if (!this.currentNotInHTML) + return false; + let current; + let currentTagId; + if (this.openElements.stackTop === 0 && this.fragmentContext) { + current = this.fragmentContext; + currentTagId = this.fragmentContextID; + } + else { + ({ current, currentTagId } = this.openElements); + } + if (token.tagID === html$1.TAG_ID.SVG && + this.treeAdapter.getTagName(current) === html$1.TAG_NAMES.ANNOTATION_XML && + this.treeAdapter.getNamespaceURI(current) === html$1.NS.MATHML) { + return false; + } + return ( + // Check that `current` is not an integration point for HTML or MathML elements. + this.tokenizer.inForeignNode || + // If it _is_ an integration point, then we might have to check that it is not an HTML + // integration point. + ((token.tagID === html$1.TAG_ID.MGLYPH || token.tagID === html$1.TAG_ID.MALIGNMARK) && + !this._isIntegrationPoint(currentTagId, current, html$1.NS.HTML))); + } + _processToken(token) { + switch (token.type) { + case token$1.TokenType.CHARACTER: { + this.onCharacter(token); + break; + } + case token$1.TokenType.NULL_CHARACTER: { + this.onNullCharacter(token); + break; + } + case token$1.TokenType.COMMENT: { + this.onComment(token); + break; + } + case token$1.TokenType.DOCTYPE: { + this.onDoctype(token); + break; + } + case token$1.TokenType.START_TAG: { + this._processStartTag(token); + break; + } + case token$1.TokenType.END_TAG: { + this.onEndTag(token); + break; + } + case token$1.TokenType.EOF: { + this.onEof(token); + break; + } + case token$1.TokenType.WHITESPACE_CHARACTER: { + this.onWhitespaceCharacter(token); + break; + } + } + } + //Integration points + _isIntegrationPoint(tid, element, foreignNS) { + const ns = this.treeAdapter.getNamespaceURI(element); + const attrs = this.treeAdapter.getAttrList(element); + return foreignContent$1.isIntegrationPoint(tid, ns, attrs, foreignNS); + } + //Active formatting elements reconstruction + _reconstructActiveFormattingElements() { + const listLength = this.activeFormattingElements.entries.length; + if (listLength) { + const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === formattingElementList$1.EntryType.Marker || this.openElements.contains(entry.element)); + const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1; + for (let i = unopenIdx; i >= 0; i--) { + const entry = this.activeFormattingElements.entries[i]; + this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element)); + entry.element = this.openElements.current; + } + } + } + //Close elements + _closeTableCell() { + this.openElements.generateImpliedEndTags(); + this.openElements.popUntilTableCellPopped(); + this.activeFormattingElements.clearToLastMarker(); + this.insertionMode = InsertionMode.IN_ROW; + } + _closePElement() { + this.openElements.generateImpliedEndTagsWithExclusion(html$1.TAG_ID.P); + this.openElements.popUntilTagNamePopped(html$1.TAG_ID.P); + } + //Insertion modes + _resetInsertionMode() { + for (let i = this.openElements.stackTop; i >= 0; i--) { + //Insertion mode reset map + switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) { + case html$1.TAG_ID.TR: { + this.insertionMode = InsertionMode.IN_ROW; + return; + } + case html$1.TAG_ID.TBODY: + case html$1.TAG_ID.THEAD: + case html$1.TAG_ID.TFOOT: { + this.insertionMode = InsertionMode.IN_TABLE_BODY; + return; + } + case html$1.TAG_ID.CAPTION: { + this.insertionMode = InsertionMode.IN_CAPTION; + return; + } + case html$1.TAG_ID.COLGROUP: { + this.insertionMode = InsertionMode.IN_COLUMN_GROUP; + return; + } + case html$1.TAG_ID.TABLE: { + this.insertionMode = InsertionMode.IN_TABLE; + return; + } + case html$1.TAG_ID.BODY: { + this.insertionMode = InsertionMode.IN_BODY; + return; + } + case html$1.TAG_ID.FRAMESET: { + this.insertionMode = InsertionMode.IN_FRAMESET; + return; + } + case html$1.TAG_ID.SELECT: { + this._resetInsertionModeForSelect(i); + return; + } + case html$1.TAG_ID.TEMPLATE: { + this.insertionMode = this.tmplInsertionModeStack[0]; + return; + } + case html$1.TAG_ID.HTML: { + this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD; + return; + } + case html$1.TAG_ID.TD: + case html$1.TAG_ID.TH: { + if (i > 0) { + this.insertionMode = InsertionMode.IN_CELL; + return; + } + break; + } + case html$1.TAG_ID.HEAD: { + if (i > 0) { + this.insertionMode = InsertionMode.IN_HEAD; + return; + } + break; + } + } + } + this.insertionMode = InsertionMode.IN_BODY; + } + _resetInsertionModeForSelect(selectIdx) { + if (selectIdx > 0) { + for (let i = selectIdx - 1; i > 0; i--) { + const tn = this.openElements.tagIDs[i]; + if (tn === html$1.TAG_ID.TEMPLATE) { + break; + } + else if (tn === html$1.TAG_ID.TABLE) { + this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE; + return; + } + } + } + this.insertionMode = InsertionMode.IN_SELECT; + } + //Foster parenting + _isElementCausesFosterParenting(tn) { + return TABLE_STRUCTURE_TAGS.has(tn); + } + _shouldFosterParentOnInsertion() { + return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId); + } + _findFosterParentingLocation() { + for (let i = this.openElements.stackTop; i >= 0; i--) { + const openElement = this.openElements.items[i]; + switch (this.openElements.tagIDs[i]) { + case html$1.TAG_ID.TEMPLATE: { + if (this.treeAdapter.getNamespaceURI(openElement) === html$1.NS.HTML) { + return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null }; + } + break; + } + case html$1.TAG_ID.TABLE: { + const parent = this.treeAdapter.getParentNode(openElement); + if (parent) { + return { parent, beforeElement: openElement }; + } + return { parent: this.openElements.items[i - 1], beforeElement: null }; + } + // Do nothing + } + } + return { parent: this.openElements.items[0], beforeElement: null }; + } + _fosterParentElement(element) { + const location = this._findFosterParentingLocation(); + if (location.beforeElement) { + this.treeAdapter.insertBefore(location.parent, element, location.beforeElement); + } + else { + this.treeAdapter.appendChild(location.parent, element); + } + } + //Special elements + _isSpecialElement(element, id) { + const ns = this.treeAdapter.getNamespaceURI(element); + return html$1.SPECIAL_ELEMENTS[ns].has(id); + } + onCharacter(token) { + this.skipNextNewLine = false; + if (this.tokenizer.inForeignNode) { + characterInForeignContent(this, token); + return; + } + switch (this.insertionMode) { + case InsertionMode.INITIAL: { + tokenInInitialMode(this, token); + break; + } + case InsertionMode.BEFORE_HTML: { + tokenBeforeHtml(this, token); + break; + } + case InsertionMode.BEFORE_HEAD: { + tokenBeforeHead(this, token); + break; + } + case InsertionMode.IN_HEAD: { + tokenInHead(this, token); + break; + } + case InsertionMode.IN_HEAD_NO_SCRIPT: { + tokenInHeadNoScript(this, token); + break; + } + case InsertionMode.AFTER_HEAD: { + tokenAfterHead(this, token); + break; + } + case InsertionMode.IN_BODY: + case InsertionMode.IN_CAPTION: + case InsertionMode.IN_CELL: + case InsertionMode.IN_TEMPLATE: { + characterInBody(this, token); + break; + } + case InsertionMode.TEXT: + case InsertionMode.IN_SELECT: + case InsertionMode.IN_SELECT_IN_TABLE: { + this._insertCharacters(token); + break; + } + case InsertionMode.IN_TABLE: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: { + characterInTable(this, token); + break; + } + case InsertionMode.IN_TABLE_TEXT: { + characterInTableText(this, token); + break; + } + case InsertionMode.IN_COLUMN_GROUP: { + tokenInColumnGroup(this, token); + break; + } + case InsertionMode.AFTER_BODY: { + tokenAfterBody(this, token); + break; + } + case InsertionMode.AFTER_AFTER_BODY: { + tokenAfterAfterBody(this, token); + break; + } + // Do nothing + } + } + onNullCharacter(token) { + this.skipNextNewLine = false; + if (this.tokenizer.inForeignNode) { + nullCharacterInForeignContent(this, token); + return; + } + switch (this.insertionMode) { + case InsertionMode.INITIAL: { + tokenInInitialMode(this, token); + break; + } + case InsertionMode.BEFORE_HTML: { + tokenBeforeHtml(this, token); + break; + } + case InsertionMode.BEFORE_HEAD: { + tokenBeforeHead(this, token); + break; + } + case InsertionMode.IN_HEAD: { + tokenInHead(this, token); + break; + } + case InsertionMode.IN_HEAD_NO_SCRIPT: { + tokenInHeadNoScript(this, token); + break; + } + case InsertionMode.AFTER_HEAD: { + tokenAfterHead(this, token); + break; + } + case InsertionMode.TEXT: { + this._insertCharacters(token); + break; + } + case InsertionMode.IN_TABLE: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: { + characterInTable(this, token); + break; + } + case InsertionMode.IN_COLUMN_GROUP: { + tokenInColumnGroup(this, token); + break; + } + case InsertionMode.AFTER_BODY: { + tokenAfterBody(this, token); + break; + } + case InsertionMode.AFTER_AFTER_BODY: { + tokenAfterAfterBody(this, token); + break; + } + // Do nothing + } + } + onComment(token) { + this.skipNextNewLine = false; + if (this.currentNotInHTML) { + appendComment(this, token); + return; + } + switch (this.insertionMode) { + case InsertionMode.INITIAL: + case InsertionMode.BEFORE_HTML: + case InsertionMode.BEFORE_HEAD: + case InsertionMode.IN_HEAD: + case InsertionMode.IN_HEAD_NO_SCRIPT: + case InsertionMode.AFTER_HEAD: + case InsertionMode.IN_BODY: + case InsertionMode.IN_TABLE: + case InsertionMode.IN_CAPTION: + case InsertionMode.IN_COLUMN_GROUP: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: + case InsertionMode.IN_CELL: + case InsertionMode.IN_SELECT: + case InsertionMode.IN_SELECT_IN_TABLE: + case InsertionMode.IN_TEMPLATE: + case InsertionMode.IN_FRAMESET: + case InsertionMode.AFTER_FRAMESET: { + appendComment(this, token); + break; + } + case InsertionMode.IN_TABLE_TEXT: { + tokenInTableText(this, token); + break; + } + case InsertionMode.AFTER_BODY: { + appendCommentToRootHtmlElement(this, token); + break; + } + case InsertionMode.AFTER_AFTER_BODY: + case InsertionMode.AFTER_AFTER_FRAMESET: { + appendCommentToDocument(this, token); + break; + } + // Do nothing + } + } + onDoctype(token) { + this.skipNextNewLine = false; + switch (this.insertionMode) { + case InsertionMode.INITIAL: { + doctypeInInitialMode(this, token); + break; + } + case InsertionMode.BEFORE_HEAD: + case InsertionMode.IN_HEAD: + case InsertionMode.IN_HEAD_NO_SCRIPT: + case InsertionMode.AFTER_HEAD: { + this._err(token, errorCodes$1.ERR.misplacedDoctype); + break; + } + case InsertionMode.IN_TABLE_TEXT: { + tokenInTableText(this, token); + break; + } + // Do nothing + } + } + onStartTag(token) { + this.skipNextNewLine = false; + this.currentToken = token; + this._processStartTag(token); + if (token.selfClosing && !token.ackSelfClosing) { + this._err(token, errorCodes$1.ERR.nonVoidHtmlElementStartTagWithTrailingSolidus); + } + } + /** + * Processes a given start tag. + * + * `onStartTag` checks if a self-closing tag was recognized. When a token + * is moved inbetween multiple insertion modes, this check for self-closing + * could lead to false positives. To avoid this, `_processStartTag` is used + * for nested calls. + * + * @param token The token to process. + */ + _processStartTag(token) { + if (this.shouldProcessStartTagTokenInForeignContent(token)) { + startTagInForeignContent(this, token); + } + else { + this._startTagOutsideForeignContent(token); + } + } + _startTagOutsideForeignContent(token) { + switch (this.insertionMode) { + case InsertionMode.INITIAL: { + tokenInInitialMode(this, token); + break; + } + case InsertionMode.BEFORE_HTML: { + startTagBeforeHtml(this, token); + break; + } + case InsertionMode.BEFORE_HEAD: { + startTagBeforeHead(this, token); + break; + } + case InsertionMode.IN_HEAD: { + startTagInHead(this, token); + break; + } + case InsertionMode.IN_HEAD_NO_SCRIPT: { + startTagInHeadNoScript(this, token); + break; + } + case InsertionMode.AFTER_HEAD: { + startTagAfterHead(this, token); + break; + } + case InsertionMode.IN_BODY: { + startTagInBody(this, token); + break; + } + case InsertionMode.IN_TABLE: { + startTagInTable(this, token); + break; + } + case InsertionMode.IN_TABLE_TEXT: { + tokenInTableText(this, token); + break; + } + case InsertionMode.IN_CAPTION: { + startTagInCaption(this, token); + break; + } + case InsertionMode.IN_COLUMN_GROUP: { + startTagInColumnGroup(this, token); + break; + } + case InsertionMode.IN_TABLE_BODY: { + startTagInTableBody(this, token); + break; + } + case InsertionMode.IN_ROW: { + startTagInRow(this, token); + break; + } + case InsertionMode.IN_CELL: { + startTagInCell(this, token); + break; + } + case InsertionMode.IN_SELECT: { + startTagInSelect(this, token); + break; + } + case InsertionMode.IN_SELECT_IN_TABLE: { + startTagInSelectInTable(this, token); + break; + } + case InsertionMode.IN_TEMPLATE: { + startTagInTemplate(this, token); + break; + } + case InsertionMode.AFTER_BODY: { + startTagAfterBody(this, token); + break; + } + case InsertionMode.IN_FRAMESET: { + startTagInFrameset(this, token); + break; + } + case InsertionMode.AFTER_FRAMESET: { + startTagAfterFrameset(this, token); + break; + } + case InsertionMode.AFTER_AFTER_BODY: { + startTagAfterAfterBody(this, token); + break; + } + case InsertionMode.AFTER_AFTER_FRAMESET: { + startTagAfterAfterFrameset(this, token); + break; + } + // Do nothing + } + } + onEndTag(token) { + this.skipNextNewLine = false; + this.currentToken = token; + if (this.currentNotInHTML) { + endTagInForeignContent(this, token); + } + else { + this._endTagOutsideForeignContent(token); + } + } + _endTagOutsideForeignContent(token) { + switch (this.insertionMode) { + case InsertionMode.INITIAL: { + tokenInInitialMode(this, token); + break; + } + case InsertionMode.BEFORE_HTML: { + endTagBeforeHtml(this, token); + break; + } + case InsertionMode.BEFORE_HEAD: { + endTagBeforeHead(this, token); + break; + } + case InsertionMode.IN_HEAD: { + endTagInHead(this, token); + break; + } + case InsertionMode.IN_HEAD_NO_SCRIPT: { + endTagInHeadNoScript(this, token); + break; + } + case InsertionMode.AFTER_HEAD: { + endTagAfterHead(this, token); + break; + } + case InsertionMode.IN_BODY: { + endTagInBody(this, token); + break; + } + case InsertionMode.TEXT: { + endTagInText(this, token); + break; + } + case InsertionMode.IN_TABLE: { + endTagInTable(this, token); + break; + } + case InsertionMode.IN_TABLE_TEXT: { + tokenInTableText(this, token); + break; + } + case InsertionMode.IN_CAPTION: { + endTagInCaption(this, token); + break; + } + case InsertionMode.IN_COLUMN_GROUP: { + endTagInColumnGroup(this, token); + break; + } + case InsertionMode.IN_TABLE_BODY: { + endTagInTableBody(this, token); + break; + } + case InsertionMode.IN_ROW: { + endTagInRow(this, token); + break; + } + case InsertionMode.IN_CELL: { + endTagInCell(this, token); + break; + } + case InsertionMode.IN_SELECT: { + endTagInSelect(this, token); + break; + } + case InsertionMode.IN_SELECT_IN_TABLE: { + endTagInSelectInTable(this, token); + break; + } + case InsertionMode.IN_TEMPLATE: { + endTagInTemplate(this, token); + break; + } + case InsertionMode.AFTER_BODY: { + endTagAfterBody(this, token); + break; + } + case InsertionMode.IN_FRAMESET: { + endTagInFrameset(this, token); + break; + } + case InsertionMode.AFTER_FRAMESET: { + endTagAfterFrameset(this, token); + break; + } + case InsertionMode.AFTER_AFTER_BODY: { + tokenAfterAfterBody(this, token); + break; + } + // Do nothing + } + } + onEof(token) { + switch (this.insertionMode) { + case InsertionMode.INITIAL: { + tokenInInitialMode(this, token); + break; + } + case InsertionMode.BEFORE_HTML: { + tokenBeforeHtml(this, token); + break; + } + case InsertionMode.BEFORE_HEAD: { + tokenBeforeHead(this, token); + break; + } + case InsertionMode.IN_HEAD: { + tokenInHead(this, token); + break; + } + case InsertionMode.IN_HEAD_NO_SCRIPT: { + tokenInHeadNoScript(this, token); + break; + } + case InsertionMode.AFTER_HEAD: { + tokenAfterHead(this, token); + break; + } + case InsertionMode.IN_BODY: + case InsertionMode.IN_TABLE: + case InsertionMode.IN_CAPTION: + case InsertionMode.IN_COLUMN_GROUP: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: + case InsertionMode.IN_CELL: + case InsertionMode.IN_SELECT: + case InsertionMode.IN_SELECT_IN_TABLE: { + eofInBody(this, token); + break; + } + case InsertionMode.TEXT: { + eofInText(this, token); + break; + } + case InsertionMode.IN_TABLE_TEXT: { + tokenInTableText(this, token); + break; + } + case InsertionMode.IN_TEMPLATE: { + eofInTemplate(this, token); + break; + } + case InsertionMode.AFTER_BODY: + case InsertionMode.IN_FRAMESET: + case InsertionMode.AFTER_FRAMESET: + case InsertionMode.AFTER_AFTER_BODY: + case InsertionMode.AFTER_AFTER_FRAMESET: { + stopParsing(this, token); + break; + } + // Do nothing + } + } + onWhitespaceCharacter(token) { + if (this.skipNextNewLine) { + this.skipNextNewLine = false; + if (token.chars.charCodeAt(0) === unicode$1.CODE_POINTS.LINE_FEED) { + if (token.chars.length === 1) { + return; + } + token.chars = token.chars.substr(1); + } + } + if (this.tokenizer.inForeignNode) { + this._insertCharacters(token); + return; + } + switch (this.insertionMode) { + case InsertionMode.IN_HEAD: + case InsertionMode.IN_HEAD_NO_SCRIPT: + case InsertionMode.AFTER_HEAD: + case InsertionMode.TEXT: + case InsertionMode.IN_COLUMN_GROUP: + case InsertionMode.IN_SELECT: + case InsertionMode.IN_SELECT_IN_TABLE: + case InsertionMode.IN_FRAMESET: + case InsertionMode.AFTER_FRAMESET: { + this._insertCharacters(token); + break; + } + case InsertionMode.IN_BODY: + case InsertionMode.IN_CAPTION: + case InsertionMode.IN_CELL: + case InsertionMode.IN_TEMPLATE: + case InsertionMode.AFTER_BODY: + case InsertionMode.AFTER_AFTER_BODY: + case InsertionMode.AFTER_AFTER_FRAMESET: { + whitespaceCharacterInBody(this, token); + break; + } + case InsertionMode.IN_TABLE: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: { + characterInTable(this, token); + break; + } + case InsertionMode.IN_TABLE_TEXT: { + whitespaceCharacterInTableText(this, token); + break; + } + // Do nothing + } + } +} +exports.Parser = Parser; +//Adoption agency algorithm +//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency) +//------------------------------------------------------------------ +//Steps 5-8 of the algorithm +function aaObtainFormattingElementEntry(p, token) { + let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName); + if (formattingElementEntry) { + if (!p.openElements.contains(formattingElementEntry.element)) { + p.activeFormattingElements.removeEntry(formattingElementEntry); + formattingElementEntry = null; + } + else if (!p.openElements.hasInScope(token.tagID)) { + formattingElementEntry = null; + } + } + else { + genericEndTagInBody(p, token); + } + return formattingElementEntry; +} +//Steps 9 and 10 of the algorithm +function aaObtainFurthestBlock(p, formattingElementEntry) { + let furthestBlock = null; + let idx = p.openElements.stackTop; + for (; idx >= 0; idx--) { + const element = p.openElements.items[idx]; + if (element === formattingElementEntry.element) { + break; + } + if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) { + furthestBlock = element; + } + } + if (!furthestBlock) { + p.openElements.shortenToLength(idx < 0 ? 0 : idx); + p.activeFormattingElements.removeEntry(formattingElementEntry); + } + return furthestBlock; +} +//Step 13 of the algorithm +function aaInnerLoop(p, furthestBlock, formattingElement) { + let lastElement = furthestBlock; + let nextElement = p.openElements.getCommonAncestor(furthestBlock); + for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) { + //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5) + nextElement = p.openElements.getCommonAncestor(element); + const elementEntry = p.activeFormattingElements.getElementEntry(element); + const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER; + const shouldRemoveFromOpenElements = !elementEntry || counterOverflow; + if (shouldRemoveFromOpenElements) { + if (counterOverflow) { + p.activeFormattingElements.removeEntry(elementEntry); + } + p.openElements.remove(element); + } + else { + element = aaRecreateElementFromEntry(p, elementEntry); + if (lastElement === furthestBlock) { + p.activeFormattingElements.bookmark = elementEntry; + } + p.treeAdapter.detachNode(lastElement); + p.treeAdapter.appendChild(element, lastElement); + lastElement = element; + } + } + return lastElement; +} +//Step 13.7 of the algorithm +function aaRecreateElementFromEntry(p, elementEntry) { + const ns = p.treeAdapter.getNamespaceURI(elementEntry.element); + const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs); + p.openElements.replace(elementEntry.element, newElement); + elementEntry.element = newElement; + return newElement; +} +//Step 14 of the algorithm +function aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) { + const tn = p.treeAdapter.getTagName(commonAncestor); + const tid = (0, html$1.getTagID)(tn); + if (p._isElementCausesFosterParenting(tid)) { + p._fosterParentElement(lastElement); + } + else { + const ns = p.treeAdapter.getNamespaceURI(commonAncestor); + if (tid === html$1.TAG_ID.TEMPLATE && ns === html$1.NS.HTML) { + commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor); + } + p.treeAdapter.appendChild(commonAncestor, lastElement); + } +} +//Steps 15-19 of the algorithm +function aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) { + const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element); + const { token } = formattingElementEntry; + const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs); + p._adoptNodes(furthestBlock, newElement); + p.treeAdapter.appendChild(furthestBlock, newElement); + p.activeFormattingElements.insertElementAfterBookmark(newElement, token); + p.activeFormattingElements.removeEntry(formattingElementEntry); + p.openElements.remove(formattingElementEntry.element); + p.openElements.insertAfter(furthestBlock, newElement, token.tagID); +} +//Algorithm entry point +function callAdoptionAgency(p, token) { + for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) { + const formattingElementEntry = aaObtainFormattingElementEntry(p, token); + if (!formattingElementEntry) { + break; + } + const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry); + if (!furthestBlock) { + break; + } + p.activeFormattingElements.bookmark = formattingElementEntry; + const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element); + const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element); + p.treeAdapter.detachNode(lastElement); + if (commonAncestor) + aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement); + aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry); + } +} +//Generic token handlers +//------------------------------------------------------------------ +function appendComment(p, token) { + p._appendCommentNode(token, p.openElements.currentTmplContentOrNode); +} +function appendCommentToRootHtmlElement(p, token) { + p._appendCommentNode(token, p.openElements.items[0]); +} +function appendCommentToDocument(p, token) { + p._appendCommentNode(token, p.document); +} +function stopParsing(p, token) { + p.stopped = true; + // NOTE: Set end locations for elements that remain on the open element stack. + if (token.location) { + // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack. + // This is a problem, as we might overwrite their end position here. + const target = p.fragmentContext ? 0 : 2; + for (let i = p.openElements.stackTop; i >= target; i--) { + p._setEndLocation(p.openElements.items[i], token); + } + // Handle `html` and `body` + if (!p.fragmentContext && p.openElements.stackTop >= 0) { + const htmlElement = p.openElements.items[0]; + const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement); + if (htmlLocation && !htmlLocation.endTag) { + p._setEndLocation(htmlElement, token); + if (p.openElements.stackTop >= 1) { + const bodyElement = p.openElements.items[1]; + const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement); + if (bodyLocation && !bodyLocation.endTag) { + p._setEndLocation(bodyElement, token); + } + } + } + } + } +} +// The "initial" insertion mode +//------------------------------------------------------------------ +function doctypeInInitialMode(p, token) { + p._setDocumentType(token); + const mode = token.forceQuirks ? html$1.DOCUMENT_MODE.QUIRKS : doctype$1.getDocumentMode(token); + if (!doctype$1.isConforming(token)) { + p._err(token, errorCodes$1.ERR.nonConformingDoctype); + } + p.treeAdapter.setDocumentMode(p.document, mode); + p.insertionMode = InsertionMode.BEFORE_HTML; +} +function tokenInInitialMode(p, token) { + p._err(token, errorCodes$1.ERR.missingDoctype, true); + p.treeAdapter.setDocumentMode(p.document, html$1.DOCUMENT_MODE.QUIRKS); + p.insertionMode = InsertionMode.BEFORE_HTML; + p._processToken(token); +} +// The "before html" insertion mode +//------------------------------------------------------------------ +function startTagBeforeHtml(p, token) { + if (token.tagID === html$1.TAG_ID.HTML) { + p._insertElement(token, html$1.NS.HTML); + p.insertionMode = InsertionMode.BEFORE_HEAD; + } + else { + tokenBeforeHtml(p, token); + } +} +function endTagBeforeHtml(p, token) { + const tn = token.tagID; + if (tn === html$1.TAG_ID.HTML || tn === html$1.TAG_ID.HEAD || tn === html$1.TAG_ID.BODY || tn === html$1.TAG_ID.BR) { + tokenBeforeHtml(p, token); + } +} +function tokenBeforeHtml(p, token) { + p._insertFakeRootElement(); + p.insertionMode = InsertionMode.BEFORE_HEAD; + p._processToken(token); +} +// The "before head" insertion mode +//------------------------------------------------------------------ +function startTagBeforeHead(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html$1.TAG_ID.HEAD: { + p._insertElement(token, html$1.NS.HTML); + p.headElement = p.openElements.current; + p.insertionMode = InsertionMode.IN_HEAD; + break; + } + default: { + tokenBeforeHead(p, token); + } + } +} +function endTagBeforeHead(p, token) { + const tn = token.tagID; + if (tn === html$1.TAG_ID.HEAD || tn === html$1.TAG_ID.BODY || tn === html$1.TAG_ID.HTML || tn === html$1.TAG_ID.BR) { + tokenBeforeHead(p, token); + } + else { + p._err(token, errorCodes$1.ERR.endTagWithoutMatchingOpenElement); + } +} +function tokenBeforeHead(p, token) { + p._insertFakeElement(html$1.TAG_NAMES.HEAD, html$1.TAG_ID.HEAD); + p.headElement = p.openElements.current; + p.insertionMode = InsertionMode.IN_HEAD; + p._processToken(token); +} +// The "in head" insertion mode +//------------------------------------------------------------------ +function startTagInHead(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html$1.TAG_ID.BASE: + case html$1.TAG_ID.BASEFONT: + case html$1.TAG_ID.BGSOUND: + case html$1.TAG_ID.LINK: + case html$1.TAG_ID.META: { + p._appendElement(token, html$1.NS.HTML); + token.ackSelfClosing = true; + break; + } + case html$1.TAG_ID.TITLE: { + p._switchToTextParsing(token, tokenizer$1.TokenizerMode.RCDATA); + break; + } + case html$1.TAG_ID.NOSCRIPT: { + if (p.options.scriptingEnabled) { + p._switchToTextParsing(token, tokenizer$1.TokenizerMode.RAWTEXT); + } + else { + p._insertElement(token, html$1.NS.HTML); + p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT; + } + break; + } + case html$1.TAG_ID.NOFRAMES: + case html$1.TAG_ID.STYLE: { + p._switchToTextParsing(token, tokenizer$1.TokenizerMode.RAWTEXT); + break; + } + case html$1.TAG_ID.SCRIPT: { + p._switchToTextParsing(token, tokenizer$1.TokenizerMode.SCRIPT_DATA); + break; + } + case html$1.TAG_ID.TEMPLATE: { + p._insertTemplate(token); + p.activeFormattingElements.insertMarker(); + p.framesetOk = false; + p.insertionMode = InsertionMode.IN_TEMPLATE; + p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE); + break; + } + case html$1.TAG_ID.HEAD: { + p._err(token, errorCodes$1.ERR.misplacedStartTagForHeadElement); + break; + } + default: { + tokenInHead(p, token); + } + } +} +function endTagInHead(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.HEAD: { + p.openElements.pop(); + p.insertionMode = InsertionMode.AFTER_HEAD; + break; + } + case html$1.TAG_ID.BODY: + case html$1.TAG_ID.BR: + case html$1.TAG_ID.HTML: { + tokenInHead(p, token); + break; + } + case html$1.TAG_ID.TEMPLATE: { + templateEndTagInHead(p, token); + break; + } + default: { + p._err(token, errorCodes$1.ERR.endTagWithoutMatchingOpenElement); + } + } +} +function templateEndTagInHead(p, token) { + if (p.openElements.tmplCount > 0) { + p.openElements.generateImpliedEndTagsThoroughly(); + if (p.openElements.currentTagId !== html$1.TAG_ID.TEMPLATE) { + p._err(token, errorCodes$1.ERR.closingOfElementWithOpenChildElements); + } + p.openElements.popUntilTagNamePopped(html$1.TAG_ID.TEMPLATE); + p.activeFormattingElements.clearToLastMarker(); + p.tmplInsertionModeStack.shift(); + p._resetInsertionMode(); + } + else { + p._err(token, errorCodes$1.ERR.endTagWithoutMatchingOpenElement); + } +} +function tokenInHead(p, token) { + p.openElements.pop(); + p.insertionMode = InsertionMode.AFTER_HEAD; + p._processToken(token); +} +// The "in head no script" insertion mode +//------------------------------------------------------------------ +function startTagInHeadNoScript(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html$1.TAG_ID.BASEFONT: + case html$1.TAG_ID.BGSOUND: + case html$1.TAG_ID.HEAD: + case html$1.TAG_ID.LINK: + case html$1.TAG_ID.META: + case html$1.TAG_ID.NOFRAMES: + case html$1.TAG_ID.STYLE: { + startTagInHead(p, token); + break; + } + case html$1.TAG_ID.NOSCRIPT: { + p._err(token, errorCodes$1.ERR.nestedNoscriptInHead); + break; + } + default: { + tokenInHeadNoScript(p, token); + } + } +} +function endTagInHeadNoScript(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.NOSCRIPT: { + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_HEAD; + break; + } + case html$1.TAG_ID.BR: { + tokenInHeadNoScript(p, token); + break; + } + default: { + p._err(token, errorCodes$1.ERR.endTagWithoutMatchingOpenElement); + } + } +} +function tokenInHeadNoScript(p, token) { + const errCode = token.type === token$1.TokenType.EOF ? errorCodes$1.ERR.openElementsLeftAfterEof : errorCodes$1.ERR.disallowedContentInNoscriptInHead; + p._err(token, errCode); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_HEAD; + p._processToken(token); +} +// The "after head" insertion mode +//------------------------------------------------------------------ +function startTagAfterHead(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html$1.TAG_ID.BODY: { + p._insertElement(token, html$1.NS.HTML); + p.framesetOk = false; + p.insertionMode = InsertionMode.IN_BODY; + break; + } + case html$1.TAG_ID.FRAMESET: { + p._insertElement(token, html$1.NS.HTML); + p.insertionMode = InsertionMode.IN_FRAMESET; + break; + } + case html$1.TAG_ID.BASE: + case html$1.TAG_ID.BASEFONT: + case html$1.TAG_ID.BGSOUND: + case html$1.TAG_ID.LINK: + case html$1.TAG_ID.META: + case html$1.TAG_ID.NOFRAMES: + case html$1.TAG_ID.SCRIPT: + case html$1.TAG_ID.STYLE: + case html$1.TAG_ID.TEMPLATE: + case html$1.TAG_ID.TITLE: { + p._err(token, errorCodes$1.ERR.abandonedHeadElementChild); + p.openElements.push(p.headElement, html$1.TAG_ID.HEAD); + startTagInHead(p, token); + p.openElements.remove(p.headElement); + break; + } + case html$1.TAG_ID.HEAD: { + p._err(token, errorCodes$1.ERR.misplacedStartTagForHeadElement); + break; + } + default: { + tokenAfterHead(p, token); + } + } +} +function endTagAfterHead(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.BODY: + case html$1.TAG_ID.HTML: + case html$1.TAG_ID.BR: { + tokenAfterHead(p, token); + break; + } + case html$1.TAG_ID.TEMPLATE: { + templateEndTagInHead(p, token); + break; + } + default: { + p._err(token, errorCodes$1.ERR.endTagWithoutMatchingOpenElement); + } + } +} +function tokenAfterHead(p, token) { + p._insertFakeElement(html$1.TAG_NAMES.BODY, html$1.TAG_ID.BODY); + p.insertionMode = InsertionMode.IN_BODY; + modeInBody(p, token); +} +// The "in body" insertion mode +//------------------------------------------------------------------ +function modeInBody(p, token) { + switch (token.type) { + case token$1.TokenType.CHARACTER: { + characterInBody(p, token); + break; + } + case token$1.TokenType.WHITESPACE_CHARACTER: { + whitespaceCharacterInBody(p, token); + break; + } + case token$1.TokenType.COMMENT: { + appendComment(p, token); + break; + } + case token$1.TokenType.START_TAG: { + startTagInBody(p, token); + break; + } + case token$1.TokenType.END_TAG: { + endTagInBody(p, token); + break; + } + case token$1.TokenType.EOF: { + eofInBody(p, token); + break; + } + // Do nothing + } +} +function whitespaceCharacterInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertCharacters(token); +} +function characterInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertCharacters(token); + p.framesetOk = false; +} +function htmlStartTagInBody(p, token) { + if (p.openElements.tmplCount === 0) { + p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs); + } +} +function bodyStartTagInBody(p, token) { + const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); + if (bodyElement && p.openElements.tmplCount === 0) { + p.framesetOk = false; + p.treeAdapter.adoptAttributes(bodyElement, token.attrs); + } +} +function framesetStartTagInBody(p, token) { + const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); + if (p.framesetOk && bodyElement) { + p.treeAdapter.detachNode(bodyElement); + p.openElements.popAllUpToHtmlElement(); + p._insertElement(token, html$1.NS.HTML); + p.insertionMode = InsertionMode.IN_FRAMESET; + } +} +function addressStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(html$1.TAG_ID.P)) { + p._closePElement(); + } + p._insertElement(token, html$1.NS.HTML); +} +function numberedHeaderStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(html$1.TAG_ID.P)) { + p._closePElement(); + } + if ((0, html$1.isNumberedHeader)(p.openElements.currentTagId)) { + p.openElements.pop(); + } + p._insertElement(token, html$1.NS.HTML); +} +function preStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(html$1.TAG_ID.P)) { + p._closePElement(); + } + p._insertElement(token, html$1.NS.HTML); + //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move + //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.) + p.skipNextNewLine = true; + p.framesetOk = false; +} +function formStartTagInBody(p, token) { + const inTemplate = p.openElements.tmplCount > 0; + if (!p.formElement || inTemplate) { + if (p.openElements.hasInButtonScope(html$1.TAG_ID.P)) { + p._closePElement(); + } + p._insertElement(token, html$1.NS.HTML); + if (!inTemplate) { + p.formElement = p.openElements.current; + } + } +} +function listItemStartTagInBody(p, token) { + p.framesetOk = false; + const tn = token.tagID; + for (let i = p.openElements.stackTop; i >= 0; i--) { + const elementId = p.openElements.tagIDs[i]; + if ((tn === html$1.TAG_ID.LI && elementId === html$1.TAG_ID.LI) || + ((tn === html$1.TAG_ID.DD || tn === html$1.TAG_ID.DT) && (elementId === html$1.TAG_ID.DD || elementId === html$1.TAG_ID.DT))) { + p.openElements.generateImpliedEndTagsWithExclusion(elementId); + p.openElements.popUntilTagNamePopped(elementId); + break; + } + if (elementId !== html$1.TAG_ID.ADDRESS && + elementId !== html$1.TAG_ID.DIV && + elementId !== html$1.TAG_ID.P && + p._isSpecialElement(p.openElements.items[i], elementId)) { + break; + } + } + if (p.openElements.hasInButtonScope(html$1.TAG_ID.P)) { + p._closePElement(); + } + p._insertElement(token, html$1.NS.HTML); +} +function plaintextStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(html$1.TAG_ID.P)) { + p._closePElement(); + } + p._insertElement(token, html$1.NS.HTML); + p.tokenizer.state = tokenizer$1.TokenizerMode.PLAINTEXT; +} +function buttonStartTagInBody(p, token) { + if (p.openElements.hasInScope(html$1.TAG_ID.BUTTON)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(html$1.TAG_ID.BUTTON); + } + p._reconstructActiveFormattingElements(); + p._insertElement(token, html$1.NS.HTML); + p.framesetOk = false; +} +function aStartTagInBody(p, token) { + const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(html$1.TAG_NAMES.A); + if (activeElementEntry) { + callAdoptionAgency(p, token); + p.openElements.remove(activeElementEntry.element); + p.activeFormattingElements.removeEntry(activeElementEntry); + } + p._reconstructActiveFormattingElements(); + p._insertElement(token, html$1.NS.HTML); + p.activeFormattingElements.pushElement(p.openElements.current, token); +} +function bStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertElement(token, html$1.NS.HTML); + p.activeFormattingElements.pushElement(p.openElements.current, token); +} +function nobrStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + if (p.openElements.hasInScope(html$1.TAG_ID.NOBR)) { + callAdoptionAgency(p, token); + p._reconstructActiveFormattingElements(); + } + p._insertElement(token, html$1.NS.HTML); + p.activeFormattingElements.pushElement(p.openElements.current, token); +} +function appletStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertElement(token, html$1.NS.HTML); + p.activeFormattingElements.insertMarker(); + p.framesetOk = false; +} +function tableStartTagInBody(p, token) { + if (p.treeAdapter.getDocumentMode(p.document) !== html$1.DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope(html$1.TAG_ID.P)) { + p._closePElement(); + } + p._insertElement(token, html$1.NS.HTML); + p.framesetOk = false; + p.insertionMode = InsertionMode.IN_TABLE; +} +function areaStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._appendElement(token, html$1.NS.HTML); + p.framesetOk = false; + token.ackSelfClosing = true; +} +function isHiddenInput(token) { + const inputType = (0, token$1.getTokenAttr)(token, html$1.ATTRS.TYPE); + return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE; +} +function inputStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._appendElement(token, html$1.NS.HTML); + if (!isHiddenInput(token)) { + p.framesetOk = false; + } + token.ackSelfClosing = true; +} +function paramStartTagInBody(p, token) { + p._appendElement(token, html$1.NS.HTML); + token.ackSelfClosing = true; +} +function hrStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(html$1.TAG_ID.P)) { + p._closePElement(); + } + p._appendElement(token, html$1.NS.HTML); + p.framesetOk = false; + token.ackSelfClosing = true; +} +function imageStartTagInBody(p, token) { + token.tagName = html$1.TAG_NAMES.IMG; + token.tagID = html$1.TAG_ID.IMG; + areaStartTagInBody(p, token); +} +function textareaStartTagInBody(p, token) { + p._insertElement(token, html$1.NS.HTML); + //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move + //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.) + p.skipNextNewLine = true; + p.tokenizer.state = tokenizer$1.TokenizerMode.RCDATA; + p.originalInsertionMode = p.insertionMode; + p.framesetOk = false; + p.insertionMode = InsertionMode.TEXT; +} +function xmpStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(html$1.TAG_ID.P)) { + p._closePElement(); + } + p._reconstructActiveFormattingElements(); + p.framesetOk = false; + p._switchToTextParsing(token, tokenizer$1.TokenizerMode.RAWTEXT); +} +function iframeStartTagInBody(p, token) { + p.framesetOk = false; + p._switchToTextParsing(token, tokenizer$1.TokenizerMode.RAWTEXT); +} +//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse +//<noembed> as rawtext. +function noembedStartTagInBody(p, token) { + p._switchToTextParsing(token, tokenizer$1.TokenizerMode.RAWTEXT); +} +function selectStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertElement(token, html$1.NS.HTML); + p.framesetOk = false; + p.insertionMode = + p.insertionMode === InsertionMode.IN_TABLE || + p.insertionMode === InsertionMode.IN_CAPTION || + p.insertionMode === InsertionMode.IN_TABLE_BODY || + p.insertionMode === InsertionMode.IN_ROW || + p.insertionMode === InsertionMode.IN_CELL + ? InsertionMode.IN_SELECT_IN_TABLE + : InsertionMode.IN_SELECT; +} +function optgroupStartTagInBody(p, token) { + if (p.openElements.currentTagId === html$1.TAG_ID.OPTION) { + p.openElements.pop(); + } + p._reconstructActiveFormattingElements(); + p._insertElement(token, html$1.NS.HTML); +} +function rbStartTagInBody(p, token) { + if (p.openElements.hasInScope(html$1.TAG_ID.RUBY)) { + p.openElements.generateImpliedEndTags(); + } + p._insertElement(token, html$1.NS.HTML); +} +function rtStartTagInBody(p, token) { + if (p.openElements.hasInScope(html$1.TAG_ID.RUBY)) { + p.openElements.generateImpliedEndTagsWithExclusion(html$1.TAG_ID.RTC); + } + p._insertElement(token, html$1.NS.HTML); +} +function mathStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + foreignContent$1.adjustTokenMathMLAttrs(token); + foreignContent$1.adjustTokenXMLAttrs(token); + if (token.selfClosing) { + p._appendElement(token, html$1.NS.MATHML); + } + else { + p._insertElement(token, html$1.NS.MATHML); + } + token.ackSelfClosing = true; +} +function svgStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + foreignContent$1.adjustTokenSVGAttrs(token); + foreignContent$1.adjustTokenXMLAttrs(token); + if (token.selfClosing) { + p._appendElement(token, html$1.NS.SVG); + } + else { + p._insertElement(token, html$1.NS.SVG); + } + token.ackSelfClosing = true; +} +function genericStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertElement(token, html$1.NS.HTML); +} +function startTagInBody(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.I: + case html$1.TAG_ID.S: + case html$1.TAG_ID.B: + case html$1.TAG_ID.U: + case html$1.TAG_ID.EM: + case html$1.TAG_ID.TT: + case html$1.TAG_ID.BIG: + case html$1.TAG_ID.CODE: + case html$1.TAG_ID.FONT: + case html$1.TAG_ID.SMALL: + case html$1.TAG_ID.STRIKE: + case html$1.TAG_ID.STRONG: { + bStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.A: { + aStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.H1: + case html$1.TAG_ID.H2: + case html$1.TAG_ID.H3: + case html$1.TAG_ID.H4: + case html$1.TAG_ID.H5: + case html$1.TAG_ID.H6: { + numberedHeaderStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.P: + case html$1.TAG_ID.DL: + case html$1.TAG_ID.OL: + case html$1.TAG_ID.UL: + case html$1.TAG_ID.DIV: + case html$1.TAG_ID.DIR: + case html$1.TAG_ID.NAV: + case html$1.TAG_ID.MAIN: + case html$1.TAG_ID.MENU: + case html$1.TAG_ID.ASIDE: + case html$1.TAG_ID.CENTER: + case html$1.TAG_ID.FIGURE: + case html$1.TAG_ID.FOOTER: + case html$1.TAG_ID.HEADER: + case html$1.TAG_ID.HGROUP: + case html$1.TAG_ID.DIALOG: + case html$1.TAG_ID.DETAILS: + case html$1.TAG_ID.ADDRESS: + case html$1.TAG_ID.ARTICLE: + case html$1.TAG_ID.SECTION: + case html$1.TAG_ID.SUMMARY: + case html$1.TAG_ID.FIELDSET: + case html$1.TAG_ID.BLOCKQUOTE: + case html$1.TAG_ID.FIGCAPTION: { + addressStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.LI: + case html$1.TAG_ID.DD: + case html$1.TAG_ID.DT: { + listItemStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.BR: + case html$1.TAG_ID.IMG: + case html$1.TAG_ID.WBR: + case html$1.TAG_ID.AREA: + case html$1.TAG_ID.EMBED: + case html$1.TAG_ID.KEYGEN: { + areaStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.HR: { + hrStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.RB: + case html$1.TAG_ID.RTC: { + rbStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.RT: + case html$1.TAG_ID.RP: { + rtStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.PRE: + case html$1.TAG_ID.LISTING: { + preStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.XMP: { + xmpStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.SVG: { + svgStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.HTML: { + htmlStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.BASE: + case html$1.TAG_ID.LINK: + case html$1.TAG_ID.META: + case html$1.TAG_ID.STYLE: + case html$1.TAG_ID.TITLE: + case html$1.TAG_ID.SCRIPT: + case html$1.TAG_ID.BGSOUND: + case html$1.TAG_ID.BASEFONT: + case html$1.TAG_ID.TEMPLATE: { + startTagInHead(p, token); + break; + } + case html$1.TAG_ID.BODY: { + bodyStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.FORM: { + formStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.NOBR: { + nobrStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.MATH: { + mathStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.TABLE: { + tableStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.INPUT: { + inputStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.PARAM: + case html$1.TAG_ID.TRACK: + case html$1.TAG_ID.SOURCE: { + paramStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.IMAGE: { + imageStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.BUTTON: { + buttonStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.APPLET: + case html$1.TAG_ID.OBJECT: + case html$1.TAG_ID.MARQUEE: { + appletStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.IFRAME: { + iframeStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.SELECT: { + selectStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.OPTION: + case html$1.TAG_ID.OPTGROUP: { + optgroupStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.NOEMBED: { + noembedStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.FRAMESET: { + framesetStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.TEXTAREA: { + textareaStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.NOSCRIPT: { + if (p.options.scriptingEnabled) { + noembedStartTagInBody(p, token); + } + else { + genericStartTagInBody(p, token); + } + break; + } + case html$1.TAG_ID.PLAINTEXT: { + plaintextStartTagInBody(p, token); + break; + } + case html$1.TAG_ID.COL: + case html$1.TAG_ID.TH: + case html$1.TAG_ID.TD: + case html$1.TAG_ID.TR: + case html$1.TAG_ID.HEAD: + case html$1.TAG_ID.FRAME: + case html$1.TAG_ID.TBODY: + case html$1.TAG_ID.TFOOT: + case html$1.TAG_ID.THEAD: + case html$1.TAG_ID.CAPTION: + case html$1.TAG_ID.COLGROUP: { + // Ignore token + break; + } + default: { + genericStartTagInBody(p, token); + } + } +} +function bodyEndTagInBody(p, token) { + if (p.openElements.hasInScope(html$1.TAG_ID.BODY)) { + p.insertionMode = InsertionMode.AFTER_BODY; + //NOTE: <body> is never popped from the stack, so we need to updated + //the end location explicitly. + if (p.options.sourceCodeLocationInfo) { + const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); + if (bodyElement) { + p._setEndLocation(bodyElement, token); + } + } + } +} +function htmlEndTagInBody(p, token) { + if (p.openElements.hasInScope(html$1.TAG_ID.BODY)) { + p.insertionMode = InsertionMode.AFTER_BODY; + endTagAfterBody(p, token); + } +} +function addressEndTagInBody(p, token) { + const tn = token.tagID; + if (p.openElements.hasInScope(tn)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(tn); + } +} +function formEndTagInBody(p) { + const inTemplate = p.openElements.tmplCount > 0; + const { formElement } = p; + if (!inTemplate) { + p.formElement = null; + } + if ((formElement || inTemplate) && p.openElements.hasInScope(html$1.TAG_ID.FORM)) { + p.openElements.generateImpliedEndTags(); + if (inTemplate) { + p.openElements.popUntilTagNamePopped(html$1.TAG_ID.FORM); + } + else if (formElement) { + p.openElements.remove(formElement); + } + } +} +function pEndTagInBody(p) { + if (!p.openElements.hasInButtonScope(html$1.TAG_ID.P)) { + p._insertFakeElement(html$1.TAG_NAMES.P, html$1.TAG_ID.P); + } + p._closePElement(); +} +function liEndTagInBody(p) { + if (p.openElements.hasInListItemScope(html$1.TAG_ID.LI)) { + p.openElements.generateImpliedEndTagsWithExclusion(html$1.TAG_ID.LI); + p.openElements.popUntilTagNamePopped(html$1.TAG_ID.LI); + } +} +function ddEndTagInBody(p, token) { + const tn = token.tagID; + if (p.openElements.hasInScope(tn)) { + p.openElements.generateImpliedEndTagsWithExclusion(tn); + p.openElements.popUntilTagNamePopped(tn); + } +} +function numberedHeaderEndTagInBody(p) { + if (p.openElements.hasNumberedHeaderInScope()) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilNumberedHeaderPopped(); + } +} +function appletEndTagInBody(p, token) { + const tn = token.tagID; + if (p.openElements.hasInScope(tn)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(tn); + p.activeFormattingElements.clearToLastMarker(); + } +} +function brEndTagInBody(p) { + p._reconstructActiveFormattingElements(); + p._insertFakeElement(html$1.TAG_NAMES.BR, html$1.TAG_ID.BR); + p.openElements.pop(); + p.framesetOk = false; +} +function genericEndTagInBody(p, token) { + const tn = token.tagName; + const tid = token.tagID; + for (let i = p.openElements.stackTop; i > 0; i--) { + const element = p.openElements.items[i]; + const elementId = p.openElements.tagIDs[i]; + // Compare the tag name here, as the tag might not be a known tag with an ID. + if (tid === elementId && (tid !== html$1.TAG_ID.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) { + p.openElements.generateImpliedEndTagsWithExclusion(tid); + if (p.openElements.stackTop >= i) + p.openElements.shortenToLength(i); + break; + } + if (p._isSpecialElement(element, elementId)) { + break; + } + } +} +function endTagInBody(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.A: + case html$1.TAG_ID.B: + case html$1.TAG_ID.I: + case html$1.TAG_ID.S: + case html$1.TAG_ID.U: + case html$1.TAG_ID.EM: + case html$1.TAG_ID.TT: + case html$1.TAG_ID.BIG: + case html$1.TAG_ID.CODE: + case html$1.TAG_ID.FONT: + case html$1.TAG_ID.NOBR: + case html$1.TAG_ID.SMALL: + case html$1.TAG_ID.STRIKE: + case html$1.TAG_ID.STRONG: { + callAdoptionAgency(p, token); + break; + } + case html$1.TAG_ID.P: { + pEndTagInBody(p); + break; + } + case html$1.TAG_ID.DL: + case html$1.TAG_ID.UL: + case html$1.TAG_ID.OL: + case html$1.TAG_ID.DIR: + case html$1.TAG_ID.DIV: + case html$1.TAG_ID.NAV: + case html$1.TAG_ID.PRE: + case html$1.TAG_ID.MAIN: + case html$1.TAG_ID.MENU: + case html$1.TAG_ID.ASIDE: + case html$1.TAG_ID.BUTTON: + case html$1.TAG_ID.CENTER: + case html$1.TAG_ID.FIGURE: + case html$1.TAG_ID.FOOTER: + case html$1.TAG_ID.HEADER: + case html$1.TAG_ID.HGROUP: + case html$1.TAG_ID.DIALOG: + case html$1.TAG_ID.ADDRESS: + case html$1.TAG_ID.ARTICLE: + case html$1.TAG_ID.DETAILS: + case html$1.TAG_ID.SECTION: + case html$1.TAG_ID.SUMMARY: + case html$1.TAG_ID.LISTING: + case html$1.TAG_ID.FIELDSET: + case html$1.TAG_ID.BLOCKQUOTE: + case html$1.TAG_ID.FIGCAPTION: { + addressEndTagInBody(p, token); + break; + } + case html$1.TAG_ID.LI: { + liEndTagInBody(p); + break; + } + case html$1.TAG_ID.DD: + case html$1.TAG_ID.DT: { + ddEndTagInBody(p, token); + break; + } + case html$1.TAG_ID.H1: + case html$1.TAG_ID.H2: + case html$1.TAG_ID.H3: + case html$1.TAG_ID.H4: + case html$1.TAG_ID.H5: + case html$1.TAG_ID.H6: { + numberedHeaderEndTagInBody(p); + break; + } + case html$1.TAG_ID.BR: { + brEndTagInBody(p); + break; + } + case html$1.TAG_ID.BODY: { + bodyEndTagInBody(p, token); + break; + } + case html$1.TAG_ID.HTML: { + htmlEndTagInBody(p, token); + break; + } + case html$1.TAG_ID.FORM: { + formEndTagInBody(p); + break; + } + case html$1.TAG_ID.APPLET: + case html$1.TAG_ID.OBJECT: + case html$1.TAG_ID.MARQUEE: { + appletEndTagInBody(p, token); + break; + } + case html$1.TAG_ID.TEMPLATE: { + templateEndTagInHead(p, token); + break; + } + default: { + genericEndTagInBody(p, token); + } + } +} +function eofInBody(p, token) { + if (p.tmplInsertionModeStack.length > 0) { + eofInTemplate(p, token); + } + else { + stopParsing(p, token); + } +} +// The "text" insertion mode +//------------------------------------------------------------------ +function endTagInText(p, token) { + var _a; + if (token.tagID === html$1.TAG_ID.SCRIPT) { + (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current); + } + p.openElements.pop(); + p.insertionMode = p.originalInsertionMode; +} +function eofInText(p, token) { + p._err(token, errorCodes$1.ERR.eofInElementThatCanContainOnlyText); + p.openElements.pop(); + p.insertionMode = p.originalInsertionMode; + p.onEof(token); +} +// The "in table" insertion mode +//------------------------------------------------------------------ +function characterInTable(p, token) { + if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) { + p.pendingCharacterTokens.length = 0; + p.hasNonWhitespacePendingCharacterToken = false; + p.originalInsertionMode = p.insertionMode; + p.insertionMode = InsertionMode.IN_TABLE_TEXT; + switch (token.type) { + case token$1.TokenType.CHARACTER: { + characterInTableText(p, token); + break; + } + case token$1.TokenType.WHITESPACE_CHARACTER: { + whitespaceCharacterInTableText(p, token); + break; + } + // Ignore null + } + } + else { + tokenInTable(p, token); + } +} +function captionStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p.activeFormattingElements.insertMarker(); + p._insertElement(token, html$1.NS.HTML); + p.insertionMode = InsertionMode.IN_CAPTION; +} +function colgroupStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p._insertElement(token, html$1.NS.HTML); + p.insertionMode = InsertionMode.IN_COLUMN_GROUP; +} +function colStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p._insertFakeElement(html$1.TAG_NAMES.COLGROUP, html$1.TAG_ID.COLGROUP); + p.insertionMode = InsertionMode.IN_COLUMN_GROUP; + startTagInColumnGroup(p, token); +} +function tbodyStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p._insertElement(token, html$1.NS.HTML); + p.insertionMode = InsertionMode.IN_TABLE_BODY; +} +function tdStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p._insertFakeElement(html$1.TAG_NAMES.TBODY, html$1.TAG_ID.TBODY); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + startTagInTableBody(p, token); +} +function tableStartTagInTable(p, token) { + if (p.openElements.hasInTableScope(html$1.TAG_ID.TABLE)) { + p.openElements.popUntilTagNamePopped(html$1.TAG_ID.TABLE); + p._resetInsertionMode(); + p._processStartTag(token); + } +} +function inputStartTagInTable(p, token) { + if (isHiddenInput(token)) { + p._appendElement(token, html$1.NS.HTML); + } + else { + tokenInTable(p, token); + } + token.ackSelfClosing = true; +} +function formStartTagInTable(p, token) { + if (!p.formElement && p.openElements.tmplCount === 0) { + p._insertElement(token, html$1.NS.HTML); + p.formElement = p.openElements.current; + p.openElements.pop(); + } +} +function startTagInTable(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.TD: + case html$1.TAG_ID.TH: + case html$1.TAG_ID.TR: { + tdStartTagInTable(p, token); + break; + } + case html$1.TAG_ID.STYLE: + case html$1.TAG_ID.SCRIPT: + case html$1.TAG_ID.TEMPLATE: { + startTagInHead(p, token); + break; + } + case html$1.TAG_ID.COL: { + colStartTagInTable(p, token); + break; + } + case html$1.TAG_ID.FORM: { + formStartTagInTable(p, token); + break; + } + case html$1.TAG_ID.TABLE: { + tableStartTagInTable(p, token); + break; + } + case html$1.TAG_ID.TBODY: + case html$1.TAG_ID.TFOOT: + case html$1.TAG_ID.THEAD: { + tbodyStartTagInTable(p, token); + break; + } + case html$1.TAG_ID.INPUT: { + inputStartTagInTable(p, token); + break; + } + case html$1.TAG_ID.CAPTION: { + captionStartTagInTable(p, token); + break; + } + case html$1.TAG_ID.COLGROUP: { + colgroupStartTagInTable(p, token); + break; + } + default: { + tokenInTable(p, token); + } + } +} +function endTagInTable(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.TABLE: { + if (p.openElements.hasInTableScope(html$1.TAG_ID.TABLE)) { + p.openElements.popUntilTagNamePopped(html$1.TAG_ID.TABLE); + p._resetInsertionMode(); + } + break; + } + case html$1.TAG_ID.TEMPLATE: { + templateEndTagInHead(p, token); + break; + } + case html$1.TAG_ID.BODY: + case html$1.TAG_ID.CAPTION: + case html$1.TAG_ID.COL: + case html$1.TAG_ID.COLGROUP: + case html$1.TAG_ID.HTML: + case html$1.TAG_ID.TBODY: + case html$1.TAG_ID.TD: + case html$1.TAG_ID.TFOOT: + case html$1.TAG_ID.TH: + case html$1.TAG_ID.THEAD: + case html$1.TAG_ID.TR: { + // Ignore token + break; + } + default: { + tokenInTable(p, token); + } + } +} +function tokenInTable(p, token) { + const savedFosterParentingState = p.fosterParentingEnabled; + p.fosterParentingEnabled = true; + // Process token in `In Body` mode + modeInBody(p, token); + p.fosterParentingEnabled = savedFosterParentingState; +} +// The "in table text" insertion mode +//------------------------------------------------------------------ +function whitespaceCharacterInTableText(p, token) { + p.pendingCharacterTokens.push(token); +} +function characterInTableText(p, token) { + p.pendingCharacterTokens.push(token); + p.hasNonWhitespacePendingCharacterToken = true; +} +function tokenInTableText(p, token) { + let i = 0; + if (p.hasNonWhitespacePendingCharacterToken) { + for (; i < p.pendingCharacterTokens.length; i++) { + tokenInTable(p, p.pendingCharacterTokens[i]); + } + } + else { + for (; i < p.pendingCharacterTokens.length; i++) { + p._insertCharacters(p.pendingCharacterTokens[i]); + } + } + p.insertionMode = p.originalInsertionMode; + p._processToken(token); +} +// The "in caption" insertion mode +//------------------------------------------------------------------ +const TABLE_VOID_ELEMENTS = new Set([html$1.TAG_ID.CAPTION, html$1.TAG_ID.COL, html$1.TAG_ID.COLGROUP, html$1.TAG_ID.TBODY, html$1.TAG_ID.TD, html$1.TAG_ID.TFOOT, html$1.TAG_ID.TH, html$1.TAG_ID.THEAD, html$1.TAG_ID.TR]); +function startTagInCaption(p, token) { + const tn = token.tagID; + if (TABLE_VOID_ELEMENTS.has(tn)) { + if (p.openElements.hasInTableScope(html$1.TAG_ID.CAPTION)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(html$1.TAG_ID.CAPTION); + p.activeFormattingElements.clearToLastMarker(); + p.insertionMode = InsertionMode.IN_TABLE; + startTagInTable(p, token); + } + } + else { + startTagInBody(p, token); + } +} +function endTagInCaption(p, token) { + const tn = token.tagID; + switch (tn) { + case html$1.TAG_ID.CAPTION: + case html$1.TAG_ID.TABLE: { + if (p.openElements.hasInTableScope(html$1.TAG_ID.CAPTION)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(html$1.TAG_ID.CAPTION); + p.activeFormattingElements.clearToLastMarker(); + p.insertionMode = InsertionMode.IN_TABLE; + if (tn === html$1.TAG_ID.TABLE) { + endTagInTable(p, token); + } + } + break; + } + case html$1.TAG_ID.BODY: + case html$1.TAG_ID.COL: + case html$1.TAG_ID.COLGROUP: + case html$1.TAG_ID.HTML: + case html$1.TAG_ID.TBODY: + case html$1.TAG_ID.TD: + case html$1.TAG_ID.TFOOT: + case html$1.TAG_ID.TH: + case html$1.TAG_ID.THEAD: + case html$1.TAG_ID.TR: { + // Ignore token + break; + } + default: { + endTagInBody(p, token); + } + } +} +// The "in column group" insertion mode +//------------------------------------------------------------------ +function startTagInColumnGroup(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html$1.TAG_ID.COL: { + p._appendElement(token, html$1.NS.HTML); + token.ackSelfClosing = true; + break; + } + case html$1.TAG_ID.TEMPLATE: { + startTagInHead(p, token); + break; + } + default: { + tokenInColumnGroup(p, token); + } + } +} +function endTagInColumnGroup(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.COLGROUP: { + if (p.openElements.currentTagId === html$1.TAG_ID.COLGROUP) { + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + } + break; + } + case html$1.TAG_ID.TEMPLATE: { + templateEndTagInHead(p, token); + break; + } + case html$1.TAG_ID.COL: { + // Ignore token + break; + } + default: { + tokenInColumnGroup(p, token); + } + } +} +function tokenInColumnGroup(p, token) { + if (p.openElements.currentTagId === html$1.TAG_ID.COLGROUP) { + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + p._processToken(token); + } +} +// The "in table body" insertion mode +//------------------------------------------------------------------ +function startTagInTableBody(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.TR: { + p.openElements.clearBackToTableBodyContext(); + p._insertElement(token, html$1.NS.HTML); + p.insertionMode = InsertionMode.IN_ROW; + break; + } + case html$1.TAG_ID.TH: + case html$1.TAG_ID.TD: { + p.openElements.clearBackToTableBodyContext(); + p._insertFakeElement(html$1.TAG_NAMES.TR, html$1.TAG_ID.TR); + p.insertionMode = InsertionMode.IN_ROW; + startTagInRow(p, token); + break; + } + case html$1.TAG_ID.CAPTION: + case html$1.TAG_ID.COL: + case html$1.TAG_ID.COLGROUP: + case html$1.TAG_ID.TBODY: + case html$1.TAG_ID.TFOOT: + case html$1.TAG_ID.THEAD: { + if (p.openElements.hasTableBodyContextInTableScope()) { + p.openElements.clearBackToTableBodyContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + startTagInTable(p, token); + } + break; + } + default: { + startTagInTable(p, token); + } + } +} +function endTagInTableBody(p, token) { + const tn = token.tagID; + switch (token.tagID) { + case html$1.TAG_ID.TBODY: + case html$1.TAG_ID.TFOOT: + case html$1.TAG_ID.THEAD: { + if (p.openElements.hasInTableScope(tn)) { + p.openElements.clearBackToTableBodyContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + } + break; + } + case html$1.TAG_ID.TABLE: { + if (p.openElements.hasTableBodyContextInTableScope()) { + p.openElements.clearBackToTableBodyContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + endTagInTable(p, token); + } + break; + } + case html$1.TAG_ID.BODY: + case html$1.TAG_ID.CAPTION: + case html$1.TAG_ID.COL: + case html$1.TAG_ID.COLGROUP: + case html$1.TAG_ID.HTML: + case html$1.TAG_ID.TD: + case html$1.TAG_ID.TH: + case html$1.TAG_ID.TR: { + // Ignore token + break; + } + default: { + endTagInTable(p, token); + } + } +} +// The "in row" insertion mode +//------------------------------------------------------------------ +function startTagInRow(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.TH: + case html$1.TAG_ID.TD: { + p.openElements.clearBackToTableRowContext(); + p._insertElement(token, html$1.NS.HTML); + p.insertionMode = InsertionMode.IN_CELL; + p.activeFormattingElements.insertMarker(); + break; + } + case html$1.TAG_ID.CAPTION: + case html$1.TAG_ID.COL: + case html$1.TAG_ID.COLGROUP: + case html$1.TAG_ID.TBODY: + case html$1.TAG_ID.TFOOT: + case html$1.TAG_ID.THEAD: + case html$1.TAG_ID.TR: { + if (p.openElements.hasInTableScope(html$1.TAG_ID.TR)) { + p.openElements.clearBackToTableRowContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + startTagInTableBody(p, token); + } + break; + } + default: { + startTagInTable(p, token); + } + } +} +function endTagInRow(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.TR: { + if (p.openElements.hasInTableScope(html$1.TAG_ID.TR)) { + p.openElements.clearBackToTableRowContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + } + break; + } + case html$1.TAG_ID.TABLE: { + if (p.openElements.hasInTableScope(html$1.TAG_ID.TR)) { + p.openElements.clearBackToTableRowContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + endTagInTableBody(p, token); + } + break; + } + case html$1.TAG_ID.TBODY: + case html$1.TAG_ID.TFOOT: + case html$1.TAG_ID.THEAD: { + if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope(html$1.TAG_ID.TR)) { + p.openElements.clearBackToTableRowContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + endTagInTableBody(p, token); + } + break; + } + case html$1.TAG_ID.BODY: + case html$1.TAG_ID.CAPTION: + case html$1.TAG_ID.COL: + case html$1.TAG_ID.COLGROUP: + case html$1.TAG_ID.HTML: + case html$1.TAG_ID.TD: + case html$1.TAG_ID.TH: { + // Ignore end tag + break; + } + default: { + endTagInTable(p, token); + } + } +} +// The "in cell" insertion mode +//------------------------------------------------------------------ +function startTagInCell(p, token) { + const tn = token.tagID; + if (TABLE_VOID_ELEMENTS.has(tn)) { + if (p.openElements.hasInTableScope(html$1.TAG_ID.TD) || p.openElements.hasInTableScope(html$1.TAG_ID.TH)) { + p._closeTableCell(); + startTagInRow(p, token); + } + } + else { + startTagInBody(p, token); + } +} +function endTagInCell(p, token) { + const tn = token.tagID; + switch (tn) { + case html$1.TAG_ID.TD: + case html$1.TAG_ID.TH: { + if (p.openElements.hasInTableScope(tn)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(tn); + p.activeFormattingElements.clearToLastMarker(); + p.insertionMode = InsertionMode.IN_ROW; + } + break; + } + case html$1.TAG_ID.TABLE: + case html$1.TAG_ID.TBODY: + case html$1.TAG_ID.TFOOT: + case html$1.TAG_ID.THEAD: + case html$1.TAG_ID.TR: { + if (p.openElements.hasInTableScope(tn)) { + p._closeTableCell(); + endTagInRow(p, token); + } + break; + } + case html$1.TAG_ID.BODY: + case html$1.TAG_ID.CAPTION: + case html$1.TAG_ID.COL: + case html$1.TAG_ID.COLGROUP: + case html$1.TAG_ID.HTML: { + // Ignore token + break; + } + default: { + endTagInBody(p, token); + } + } +} +// The "in select" insertion mode +//------------------------------------------------------------------ +function startTagInSelect(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html$1.TAG_ID.OPTION: { + if (p.openElements.currentTagId === html$1.TAG_ID.OPTION) { + p.openElements.pop(); + } + p._insertElement(token, html$1.NS.HTML); + break; + } + case html$1.TAG_ID.OPTGROUP: { + if (p.openElements.currentTagId === html$1.TAG_ID.OPTION) { + p.openElements.pop(); + } + if (p.openElements.currentTagId === html$1.TAG_ID.OPTGROUP) { + p.openElements.pop(); + } + p._insertElement(token, html$1.NS.HTML); + break; + } + case html$1.TAG_ID.INPUT: + case html$1.TAG_ID.KEYGEN: + case html$1.TAG_ID.TEXTAREA: + case html$1.TAG_ID.SELECT: { + if (p.openElements.hasInSelectScope(html$1.TAG_ID.SELECT)) { + p.openElements.popUntilTagNamePopped(html$1.TAG_ID.SELECT); + p._resetInsertionMode(); + if (token.tagID !== html$1.TAG_ID.SELECT) { + p._processStartTag(token); + } + } + break; + } + case html$1.TAG_ID.SCRIPT: + case html$1.TAG_ID.TEMPLATE: { + startTagInHead(p, token); + break; + } + // Do nothing + } +} +function endTagInSelect(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.OPTGROUP: { + if (p.openElements.stackTop > 0 && + p.openElements.currentTagId === html$1.TAG_ID.OPTION && + p.openElements.tagIDs[p.openElements.stackTop - 1] === html$1.TAG_ID.OPTGROUP) { + p.openElements.pop(); + } + if (p.openElements.currentTagId === html$1.TAG_ID.OPTGROUP) { + p.openElements.pop(); + } + break; + } + case html$1.TAG_ID.OPTION: { + if (p.openElements.currentTagId === html$1.TAG_ID.OPTION) { + p.openElements.pop(); + } + break; + } + case html$1.TAG_ID.SELECT: { + if (p.openElements.hasInSelectScope(html$1.TAG_ID.SELECT)) { + p.openElements.popUntilTagNamePopped(html$1.TAG_ID.SELECT); + p._resetInsertionMode(); + } + break; + } + case html$1.TAG_ID.TEMPLATE: { + templateEndTagInHead(p, token); + break; + } + // Do nothing + } +} +// The "in select in table" insertion mode +//------------------------------------------------------------------ +function startTagInSelectInTable(p, token) { + const tn = token.tagID; + if (tn === html$1.TAG_ID.CAPTION || + tn === html$1.TAG_ID.TABLE || + tn === html$1.TAG_ID.TBODY || + tn === html$1.TAG_ID.TFOOT || + tn === html$1.TAG_ID.THEAD || + tn === html$1.TAG_ID.TR || + tn === html$1.TAG_ID.TD || + tn === html$1.TAG_ID.TH) { + p.openElements.popUntilTagNamePopped(html$1.TAG_ID.SELECT); + p._resetInsertionMode(); + p._processStartTag(token); + } + else { + startTagInSelect(p, token); + } +} +function endTagInSelectInTable(p, token) { + const tn = token.tagID; + if (tn === html$1.TAG_ID.CAPTION || + tn === html$1.TAG_ID.TABLE || + tn === html$1.TAG_ID.TBODY || + tn === html$1.TAG_ID.TFOOT || + tn === html$1.TAG_ID.THEAD || + tn === html$1.TAG_ID.TR || + tn === html$1.TAG_ID.TD || + tn === html$1.TAG_ID.TH) { + if (p.openElements.hasInTableScope(tn)) { + p.openElements.popUntilTagNamePopped(html$1.TAG_ID.SELECT); + p._resetInsertionMode(); + p.onEndTag(token); + } + } + else { + endTagInSelect(p, token); + } +} +// The "in template" insertion mode +//------------------------------------------------------------------ +function startTagInTemplate(p, token) { + switch (token.tagID) { + // First, handle tags that can start without a mode change + case html$1.TAG_ID.BASE: + case html$1.TAG_ID.BASEFONT: + case html$1.TAG_ID.BGSOUND: + case html$1.TAG_ID.LINK: + case html$1.TAG_ID.META: + case html$1.TAG_ID.NOFRAMES: + case html$1.TAG_ID.SCRIPT: + case html$1.TAG_ID.STYLE: + case html$1.TAG_ID.TEMPLATE: + case html$1.TAG_ID.TITLE: { + startTagInHead(p, token); + break; + } + // Re-process the token in the appropriate mode + case html$1.TAG_ID.CAPTION: + case html$1.TAG_ID.COLGROUP: + case html$1.TAG_ID.TBODY: + case html$1.TAG_ID.TFOOT: + case html$1.TAG_ID.THEAD: { + p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE; + p.insertionMode = InsertionMode.IN_TABLE; + startTagInTable(p, token); + break; + } + case html$1.TAG_ID.COL: { + p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP; + p.insertionMode = InsertionMode.IN_COLUMN_GROUP; + startTagInColumnGroup(p, token); + break; + } + case html$1.TAG_ID.TR: { + p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY; + p.insertionMode = InsertionMode.IN_TABLE_BODY; + startTagInTableBody(p, token); + break; + } + case html$1.TAG_ID.TD: + case html$1.TAG_ID.TH: { + p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW; + p.insertionMode = InsertionMode.IN_ROW; + startTagInRow(p, token); + break; + } + default: { + p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY; + p.insertionMode = InsertionMode.IN_BODY; + startTagInBody(p, token); + } + } +} +function endTagInTemplate(p, token) { + if (token.tagID === html$1.TAG_ID.TEMPLATE) { + templateEndTagInHead(p, token); + } +} +function eofInTemplate(p, token) { + if (p.openElements.tmplCount > 0) { + p.openElements.popUntilTagNamePopped(html$1.TAG_ID.TEMPLATE); + p.activeFormattingElements.clearToLastMarker(); + p.tmplInsertionModeStack.shift(); + p._resetInsertionMode(); + p.onEof(token); + } + else { + stopParsing(p, token); + } +} +// The "after body" insertion mode +//------------------------------------------------------------------ +function startTagAfterBody(p, token) { + if (token.tagID === html$1.TAG_ID.HTML) { + startTagInBody(p, token); + } + else { + tokenAfterBody(p, token); + } +} +function endTagAfterBody(p, token) { + var _a; + if (token.tagID === html$1.TAG_ID.HTML) { + if (!p.fragmentContext) { + p.insertionMode = InsertionMode.AFTER_AFTER_BODY; + } + //NOTE: <html> is never popped from the stack, so we need to updated + //the end location explicitly. + if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === html$1.TAG_ID.HTML) { + p._setEndLocation(p.openElements.items[0], token); + // Update the body element, if it doesn't have an end tag + const bodyElement = p.openElements.items[1]; + if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) { + p._setEndLocation(bodyElement, token); + } + } + } + else { + tokenAfterBody(p, token); + } +} +function tokenAfterBody(p, token) { + p.insertionMode = InsertionMode.IN_BODY; + modeInBody(p, token); +} +// The "in frameset" insertion mode +//------------------------------------------------------------------ +function startTagInFrameset(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html$1.TAG_ID.FRAMESET: { + p._insertElement(token, html$1.NS.HTML); + break; + } + case html$1.TAG_ID.FRAME: { + p._appendElement(token, html$1.NS.HTML); + token.ackSelfClosing = true; + break; + } + case html$1.TAG_ID.NOFRAMES: { + startTagInHead(p, token); + break; + } + // Do nothing + } +} +function endTagInFrameset(p, token) { + if (token.tagID === html$1.TAG_ID.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) { + p.openElements.pop(); + if (!p.fragmentContext && p.openElements.currentTagId !== html$1.TAG_ID.FRAMESET) { + p.insertionMode = InsertionMode.AFTER_FRAMESET; + } + } +} +// The "after frameset" insertion mode +//------------------------------------------------------------------ +function startTagAfterFrameset(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html$1.TAG_ID.NOFRAMES: { + startTagInHead(p, token); + break; + } + // Do nothing + } +} +function endTagAfterFrameset(p, token) { + if (token.tagID === html$1.TAG_ID.HTML) { + p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET; + } +} +// The "after after body" insertion mode +//------------------------------------------------------------------ +function startTagAfterAfterBody(p, token) { + if (token.tagID === html$1.TAG_ID.HTML) { + startTagInBody(p, token); + } + else { + tokenAfterAfterBody(p, token); + } +} +function tokenAfterAfterBody(p, token) { + p.insertionMode = InsertionMode.IN_BODY; + modeInBody(p, token); +} +// The "after after frameset" insertion mode +//------------------------------------------------------------------ +function startTagAfterAfterFrameset(p, token) { + switch (token.tagID) { + case html$1.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html$1.TAG_ID.NOFRAMES: { + startTagInHead(p, token); + break; + } + // Do nothing + } +} +// The rules for parsing tokens in foreign content +//------------------------------------------------------------------ +function nullCharacterInForeignContent(p, token) { + token.chars = unicode$1.REPLACEMENT_CHARACTER; + p._insertCharacters(token); +} +function characterInForeignContent(p, token) { + p._insertCharacters(token); + p.framesetOk = false; +} +function popUntilHtmlOrIntegrationPoint(p) { + while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== html$1.NS.HTML && + !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) { + p.openElements.pop(); + } +} +function startTagInForeignContent(p, token) { + if (foreignContent$1.causesExit(token)) { + popUntilHtmlOrIntegrationPoint(p); + p._startTagOutsideForeignContent(token); + } + else { + const current = p._getAdjustedCurrentElement(); + const currentNs = p.treeAdapter.getNamespaceURI(current); + if (currentNs === html$1.NS.MATHML) { + foreignContent$1.adjustTokenMathMLAttrs(token); + } + else if (currentNs === html$1.NS.SVG) { + foreignContent$1.adjustTokenSVGTagName(token); + foreignContent$1.adjustTokenSVGAttrs(token); + } + foreignContent$1.adjustTokenXMLAttrs(token); + if (token.selfClosing) { + p._appendElement(token, currentNs); + } + else { + p._insertElement(token, currentNs); + } + token.ackSelfClosing = true; + } +} +function endTagInForeignContent(p, token) { + if (token.tagID === html$1.TAG_ID.P || token.tagID === html$1.TAG_ID.BR) { + popUntilHtmlOrIntegrationPoint(p); + p._endTagOutsideForeignContent(token); + return; + } + for (let i = p.openElements.stackTop; i > 0; i--) { + const element = p.openElements.items[i]; + if (p.treeAdapter.getNamespaceURI(element) === html$1.NS.HTML) { + p._endTagOutsideForeignContent(token); + break; + } + const tagName = p.treeAdapter.getTagName(element); + if (tagName.toLowerCase() === token.tagName) { + //NOTE: update the token tag name for `_setEndLocation`. + token.tagName = tagName; + p.openElements.shortenToLength(i); + break; + } + } +} + +}); + +var serializer$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serializeOuter = exports.serialize = void 0; + + + +// Sets +const VOID_ELEMENTS = new Set([ + html$1.TAG_NAMES.AREA, + html$1.TAG_NAMES.BASE, + html$1.TAG_NAMES.BASEFONT, + html$1.TAG_NAMES.BGSOUND, + html$1.TAG_NAMES.BR, + html$1.TAG_NAMES.COL, + html$1.TAG_NAMES.EMBED, + html$1.TAG_NAMES.FRAME, + html$1.TAG_NAMES.HR, + html$1.TAG_NAMES.IMG, + html$1.TAG_NAMES.INPUT, + html$1.TAG_NAMES.KEYGEN, + html$1.TAG_NAMES.LINK, + html$1.TAG_NAMES.META, + html$1.TAG_NAMES.PARAM, + html$1.TAG_NAMES.SOURCE, + html$1.TAG_NAMES.TRACK, + html$1.TAG_NAMES.WBR, +]); +function isVoidElement(node, options) { + return (options.treeAdapter.isElementNode(node) && + options.treeAdapter.getNamespaceURI(node) === html$1.NS.HTML && + VOID_ELEMENTS.has(options.treeAdapter.getTagName(node))); +} +const defaultOpts = { treeAdapter: _default$2.defaultTreeAdapter, scriptingEnabled: true }; +/** + * Serializes an AST node to an HTML string. + * + * @example + * + * ```js + * const parse5 = require('parse5'); + * + * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>'); + * + * // Serializes a document. + * const html = parse5.serialize(document); + * + * // Serializes the <html> element content. + * const str = parse5.serialize(document.childNodes[1]); + * + * console.log(str); //> '<head></head><body>Hi there!</body>' + * ``` + * + * @param node Node to serialize. + * @param options Serialization options. + */ +function serialize(node, options) { + const opts = Object.assign(Object.assign({}, defaultOpts), options); + if (isVoidElement(node, opts)) { + return ''; + } + return serializeChildNodes(node, opts); +} +exports.serialize = serialize; +/** + * Serializes an AST element node to an HTML string, including the element node. + * + * @example + * + * ```js + * const parse5 = require('parse5'); + * + * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>'); + * + * // Serializes the <div> element. + * const html = parse5.serializeOuter(document.childNodes[0]); + * + * console.log(str); //> '<div>Hello, <b>world</b>!</div>' + * ``` + * + * @param node Node to serialize. + * @param options Serialization options. + */ +function serializeOuter(node, options) { + const opts = Object.assign(Object.assign({}, defaultOpts), options); + return serializeNode(node, opts); +} +exports.serializeOuter = serializeOuter; +function serializeChildNodes(parentNode, options) { + let html = ''; + // Get container of the child nodes + const container = options.treeAdapter.isElementNode(parentNode) && + options.treeAdapter.getTagName(parentNode) === html$1.TAG_NAMES.TEMPLATE && + options.treeAdapter.getNamespaceURI(parentNode) === html$1.NS.HTML + ? options.treeAdapter.getTemplateContent(parentNode) + : parentNode; + const childNodes = options.treeAdapter.getChildNodes(container); + if (childNodes) { + for (const currentNode of childNodes) { + html += serializeNode(currentNode, options); + } + } + return html; +} +function serializeNode(node, options) { + if (options.treeAdapter.isElementNode(node)) { + return serializeElement(node, options); + } + if (options.treeAdapter.isTextNode(node)) { + return serializeTextNode(node, options); + } + if (options.treeAdapter.isCommentNode(node)) { + return serializeCommentNode(node, options); + } + if (options.treeAdapter.isDocumentTypeNode(node)) { + return serializeDocumentTypeNode(node, options); + } + // Return an empty string for unknown nodes + return ''; +} +function serializeElement(node, options) { + const tn = options.treeAdapter.getTagName(node); + return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`; +} +function serializeAttributes(node, { treeAdapter }) { + let html = ''; + for (const attr of treeAdapter.getAttrList(node)) { + html += ' '; + if (!attr.namespace) { + html += attr.name; + } + else + switch (attr.namespace) { + case html$1.NS.XML: { + html += `xml:${attr.name}`; + break; + } + case html$1.NS.XMLNS: { + if (attr.name !== 'xmlns') { + html += 'xmlns:'; + } + html += attr.name; + break; + } + case html$1.NS.XLINK: { + html += `xlink:${attr.name}`; + break; + } + default: { + html += `${attr.prefix}:${attr.name}`; + } + } + html += `="${(0, escape_js_1.escapeAttribute)(attr.value)}"`; + } + return html; +} +function serializeTextNode(node, options) { + const { treeAdapter } = options; + const content = treeAdapter.getTextNodeContent(node); + const parent = treeAdapter.getParentNode(node); + const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent); + return parentTn && + treeAdapter.getNamespaceURI(parent) === html$1.NS.HTML && + (0, html$1.hasUnescapedText)(parentTn, options.scriptingEnabled) + ? content + : (0, escape_js_1.escapeText)(content); +} +function serializeCommentNode(node, { treeAdapter }) { + return `<!--${treeAdapter.getCommentNodeContent(node)}-->`; +} +function serializeDocumentTypeNode(node, { treeAdapter }) { + return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`; +} + +}); + +var cjs$2 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parseFragment = exports.parse = exports.TokenizerMode = exports.Tokenizer = exports.Token = exports.html = exports.foreignContent = exports.ErrorCodes = exports.serializeOuter = exports.serialize = exports.Parser = exports.defaultTreeAdapter = void 0; + + +Object.defineProperty(exports, "defaultTreeAdapter", { enumerable: true, get: function () { return _default$2.defaultTreeAdapter; } }); +var index_js_2 = parser$1; +Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return index_js_2.Parser; } }); + +Object.defineProperty(exports, "serialize", { enumerable: true, get: function () { return serializer$1.serialize; } }); +Object.defineProperty(exports, "serializeOuter", { enumerable: true, get: function () { return serializer$1.serializeOuter; } }); + +Object.defineProperty(exports, "ErrorCodes", { enumerable: true, get: function () { return errorCodes$1.ERR; } }); +/** @internal */ +exports.foreignContent = foreignContent$1; +/** @internal */ +exports.html = html$1; +/** @internal */ +exports.Token = token$1; +/** @internal */ + +Object.defineProperty(exports, "Tokenizer", { enumerable: true, get: function () { return tokenizer$1.Tokenizer; } }); +Object.defineProperty(exports, "TokenizerMode", { enumerable: true, get: function () { return tokenizer$1.TokenizerMode; } }); +// Shorthands +/** + * Parses an HTML string. + * + * @param html Input HTML string. + * @param options Parsing options. + * @returns Document + * + * @example + * + * ```js + * const parse5 = require('parse5'); + * + * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>'); + * + * console.log(document.childNodes[1].tagName); //> 'html' + *``` + */ +function parse(html, options) { + return parser$1.Parser.parse(html, options); +} +exports.parse = parse; +function parseFragment(fragmentContext, html, options) { + if (typeof fragmentContext === 'string') { + options = html; + html = fragmentContext; + fragmentContext = null; + } + const parser = parser$1.Parser.getFragmentParser(fragmentContext, options); + parser.tokenizer.write(html, true); + return parser.getFragment(); +} +exports.parseFragment = parseFragment; + +}); + +var unicode = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isUndefinedCodePoint = exports.isControlCodePoint = exports.getSurrogatePairCodePoint = exports.isSurrogatePair = exports.isSurrogate = exports.SEQUENCES = exports.CODE_POINTS = exports.REPLACEMENT_CHARACTER = void 0; +const UNDEFINED_CODE_POINTS = new Set([ + 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, + 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, + 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574, + 1048575, 1114110, 1114111, +]); +exports.REPLACEMENT_CHARACTER = '\uFFFD'; +(function (CODE_POINTS) { + CODE_POINTS[CODE_POINTS["EOF"] = -1] = "EOF"; + CODE_POINTS[CODE_POINTS["NULL"] = 0] = "NULL"; + CODE_POINTS[CODE_POINTS["TABULATION"] = 9] = "TABULATION"; + CODE_POINTS[CODE_POINTS["CARRIAGE_RETURN"] = 13] = "CARRIAGE_RETURN"; + CODE_POINTS[CODE_POINTS["LINE_FEED"] = 10] = "LINE_FEED"; + CODE_POINTS[CODE_POINTS["FORM_FEED"] = 12] = "FORM_FEED"; + CODE_POINTS[CODE_POINTS["SPACE"] = 32] = "SPACE"; + CODE_POINTS[CODE_POINTS["EXCLAMATION_MARK"] = 33] = "EXCLAMATION_MARK"; + CODE_POINTS[CODE_POINTS["QUOTATION_MARK"] = 34] = "QUOTATION_MARK"; + CODE_POINTS[CODE_POINTS["NUMBER_SIGN"] = 35] = "NUMBER_SIGN"; + CODE_POINTS[CODE_POINTS["AMPERSAND"] = 38] = "AMPERSAND"; + CODE_POINTS[CODE_POINTS["APOSTROPHE"] = 39] = "APOSTROPHE"; + CODE_POINTS[CODE_POINTS["HYPHEN_MINUS"] = 45] = "HYPHEN_MINUS"; + CODE_POINTS[CODE_POINTS["SOLIDUS"] = 47] = "SOLIDUS"; + CODE_POINTS[CODE_POINTS["DIGIT_0"] = 48] = "DIGIT_0"; + CODE_POINTS[CODE_POINTS["DIGIT_9"] = 57] = "DIGIT_9"; + CODE_POINTS[CODE_POINTS["SEMICOLON"] = 59] = "SEMICOLON"; + CODE_POINTS[CODE_POINTS["LESS_THAN_SIGN"] = 60] = "LESS_THAN_SIGN"; + CODE_POINTS[CODE_POINTS["EQUALS_SIGN"] = 61] = "EQUALS_SIGN"; + CODE_POINTS[CODE_POINTS["GREATER_THAN_SIGN"] = 62] = "GREATER_THAN_SIGN"; + CODE_POINTS[CODE_POINTS["QUESTION_MARK"] = 63] = "QUESTION_MARK"; + CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_A"] = 65] = "LATIN_CAPITAL_A"; + CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_F"] = 70] = "LATIN_CAPITAL_F"; + CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_X"] = 88] = "LATIN_CAPITAL_X"; + CODE_POINTS[CODE_POINTS["LATIN_CAPITAL_Z"] = 90] = "LATIN_CAPITAL_Z"; + CODE_POINTS[CODE_POINTS["RIGHT_SQUARE_BRACKET"] = 93] = "RIGHT_SQUARE_BRACKET"; + CODE_POINTS[CODE_POINTS["GRAVE_ACCENT"] = 96] = "GRAVE_ACCENT"; + CODE_POINTS[CODE_POINTS["LATIN_SMALL_A"] = 97] = "LATIN_SMALL_A"; + CODE_POINTS[CODE_POINTS["LATIN_SMALL_F"] = 102] = "LATIN_SMALL_F"; + CODE_POINTS[CODE_POINTS["LATIN_SMALL_X"] = 120] = "LATIN_SMALL_X"; + CODE_POINTS[CODE_POINTS["LATIN_SMALL_Z"] = 122] = "LATIN_SMALL_Z"; + CODE_POINTS[CODE_POINTS["REPLACEMENT_CHARACTER"] = 65533] = "REPLACEMENT_CHARACTER"; +})(exports.CODE_POINTS || (exports.CODE_POINTS = {})); +exports.SEQUENCES = { + DASH_DASH: '--', + CDATA_START: '[CDATA[', + DOCTYPE: 'doctype', + SCRIPT: 'script', + PUBLIC: 'public', + SYSTEM: 'system', +}; +//Surrogates +function isSurrogate(cp) { + return cp >= 55296 && cp <= 57343; +} +exports.isSurrogate = isSurrogate; +function isSurrogatePair(cp) { + return cp >= 56320 && cp <= 57343; +} +exports.isSurrogatePair = isSurrogatePair; +function getSurrogatePairCodePoint(cp1, cp2) { + return (cp1 - 55296) * 1024 + 9216 + cp2; +} +exports.getSurrogatePairCodePoint = getSurrogatePairCodePoint; +//NOTE: excluding NULL and ASCII whitespace +function isControlCodePoint(cp) { + return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) || + (cp >= 0x7f && cp <= 0x9f)); +} +exports.isControlCodePoint = isControlCodePoint; +function isUndefinedCodePoint(cp) { + return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp); +} +exports.isUndefinedCodePoint = isUndefinedCodePoint; + +}); + +var errorCodes = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ERR = void 0; +(function (ERR) { + ERR["controlCharacterInInputStream"] = "control-character-in-input-stream"; + ERR["noncharacterInInputStream"] = "noncharacter-in-input-stream"; + ERR["surrogateInInputStream"] = "surrogate-in-input-stream"; + ERR["nonVoidHtmlElementStartTagWithTrailingSolidus"] = "non-void-html-element-start-tag-with-trailing-solidus"; + ERR["endTagWithAttributes"] = "end-tag-with-attributes"; + ERR["endTagWithTrailingSolidus"] = "end-tag-with-trailing-solidus"; + ERR["unexpectedSolidusInTag"] = "unexpected-solidus-in-tag"; + ERR["unexpectedNullCharacter"] = "unexpected-null-character"; + ERR["unexpectedQuestionMarkInsteadOfTagName"] = "unexpected-question-mark-instead-of-tag-name"; + ERR["invalidFirstCharacterOfTagName"] = "invalid-first-character-of-tag-name"; + ERR["unexpectedEqualsSignBeforeAttributeName"] = "unexpected-equals-sign-before-attribute-name"; + ERR["missingEndTagName"] = "missing-end-tag-name"; + ERR["unexpectedCharacterInAttributeName"] = "unexpected-character-in-attribute-name"; + ERR["unknownNamedCharacterReference"] = "unknown-named-character-reference"; + ERR["missingSemicolonAfterCharacterReference"] = "missing-semicolon-after-character-reference"; + ERR["unexpectedCharacterAfterDoctypeSystemIdentifier"] = "unexpected-character-after-doctype-system-identifier"; + ERR["unexpectedCharacterInUnquotedAttributeValue"] = "unexpected-character-in-unquoted-attribute-value"; + ERR["eofBeforeTagName"] = "eof-before-tag-name"; + ERR["eofInTag"] = "eof-in-tag"; + ERR["missingAttributeValue"] = "missing-attribute-value"; + ERR["missingWhitespaceBetweenAttributes"] = "missing-whitespace-between-attributes"; + ERR["missingWhitespaceAfterDoctypePublicKeyword"] = "missing-whitespace-after-doctype-public-keyword"; + ERR["missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers"] = "missing-whitespace-between-doctype-public-and-system-identifiers"; + ERR["missingWhitespaceAfterDoctypeSystemKeyword"] = "missing-whitespace-after-doctype-system-keyword"; + ERR["missingQuoteBeforeDoctypePublicIdentifier"] = "missing-quote-before-doctype-public-identifier"; + ERR["missingQuoteBeforeDoctypeSystemIdentifier"] = "missing-quote-before-doctype-system-identifier"; + ERR["missingDoctypePublicIdentifier"] = "missing-doctype-public-identifier"; + ERR["missingDoctypeSystemIdentifier"] = "missing-doctype-system-identifier"; + ERR["abruptDoctypePublicIdentifier"] = "abrupt-doctype-public-identifier"; + ERR["abruptDoctypeSystemIdentifier"] = "abrupt-doctype-system-identifier"; + ERR["cdataInHtmlContent"] = "cdata-in-html-content"; + ERR["incorrectlyOpenedComment"] = "incorrectly-opened-comment"; + ERR["eofInScriptHtmlCommentLikeText"] = "eof-in-script-html-comment-like-text"; + ERR["eofInDoctype"] = "eof-in-doctype"; + ERR["nestedComment"] = "nested-comment"; + ERR["abruptClosingOfEmptyComment"] = "abrupt-closing-of-empty-comment"; + ERR["eofInComment"] = "eof-in-comment"; + ERR["incorrectlyClosedComment"] = "incorrectly-closed-comment"; + ERR["eofInCdata"] = "eof-in-cdata"; + ERR["absenceOfDigitsInNumericCharacterReference"] = "absence-of-digits-in-numeric-character-reference"; + ERR["nullCharacterReference"] = "null-character-reference"; + ERR["surrogateCharacterReference"] = "surrogate-character-reference"; + ERR["characterReferenceOutsideUnicodeRange"] = "character-reference-outside-unicode-range"; + ERR["controlCharacterReference"] = "control-character-reference"; + ERR["noncharacterCharacterReference"] = "noncharacter-character-reference"; + ERR["missingWhitespaceBeforeDoctypeName"] = "missing-whitespace-before-doctype-name"; + ERR["missingDoctypeName"] = "missing-doctype-name"; + ERR["invalidCharacterSequenceAfterDoctypeName"] = "invalid-character-sequence-after-doctype-name"; + ERR["duplicateAttribute"] = "duplicate-attribute"; + ERR["nonConformingDoctype"] = "non-conforming-doctype"; + ERR["missingDoctype"] = "missing-doctype"; + ERR["misplacedDoctype"] = "misplaced-doctype"; + ERR["endTagWithoutMatchingOpenElement"] = "end-tag-without-matching-open-element"; + ERR["closingOfElementWithOpenChildElements"] = "closing-of-element-with-open-child-elements"; + ERR["disallowedContentInNoscriptInHead"] = "disallowed-content-in-noscript-in-head"; + ERR["openElementsLeftAfterEof"] = "open-elements-left-after-eof"; + ERR["abandonedHeadElementChild"] = "abandoned-head-element-child"; + ERR["misplacedStartTagForHeadElement"] = "misplaced-start-tag-for-head-element"; + ERR["nestedNoscriptInHead"] = "nested-noscript-in-head"; + ERR["eofInElementThatCanContainOnlyText"] = "eof-in-element-that-can-contain-only-text"; +})(exports.ERR || (exports.ERR = {})); + +}); + +var preprocessor = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Preprocessor = void 0; + + +//Const +const DEFAULT_BUFFER_WATERLINE = 1 << 16; +//Preprocessor +//NOTE: HTML input preprocessing +//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream) +class Preprocessor { + constructor(handler) { + this.handler = handler; + this.html = ''; + this.pos = -1; + // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0 + this.lastGapPos = -2; + this.gapStack = []; + this.skipNextNewLine = false; + this.lastChunkWritten = false; + this.endOfChunkHit = false; + this.bufferWaterline = DEFAULT_BUFFER_WATERLINE; + this.isEol = false; + this.lineStartPos = 0; + this.droppedBufferSize = 0; + this.line = 1; + //NOTE: avoid reporting errors twice on advance/retreat + this.lastErrOffset = -1; + } + /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */ + get col() { + return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos); + } + get offset() { + return this.droppedBufferSize + this.pos; + } + getError(code) { + const { line, col, offset } = this; + return { + code, + startLine: line, + endLine: line, + startCol: col, + endCol: col, + startOffset: offset, + endOffset: offset, + }; + } + _err(code) { + if (this.handler.onParseError && this.lastErrOffset !== this.offset) { + this.lastErrOffset = this.offset; + this.handler.onParseError(this.getError(code)); + } + } + _addGap() { + this.gapStack.push(this.lastGapPos); + this.lastGapPos = this.pos; + } + _processSurrogate(cp) { + //NOTE: try to peek a surrogate pair + if (this.pos !== this.html.length - 1) { + const nextCp = this.html.charCodeAt(this.pos + 1); + if ((0, unicode.isSurrogatePair)(nextCp)) { + //NOTE: we have a surrogate pair. Peek pair character and recalculate code point. + this.pos++; + //NOTE: add a gap that should be avoided during retreat + this._addGap(); + return (0, unicode.getSurrogatePairCodePoint)(cp, nextCp); + } + } + //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet. + else if (!this.lastChunkWritten) { + this.endOfChunkHit = true; + return unicode.CODE_POINTS.EOF; + } + //NOTE: isolated surrogate + this._err(errorCodes.ERR.surrogateInInputStream); + return cp; + } + willDropParsedChunk() { + return this.pos > this.bufferWaterline; + } + dropParsedChunk() { + if (this.willDropParsedChunk()) { + this.html = this.html.substring(this.pos); + this.lineStartPos -= this.pos; + this.droppedBufferSize += this.pos; + this.pos = 0; + this.lastGapPos = -2; + this.gapStack.length = 0; + } + } + write(chunk, isLastChunk) { + if (this.html.length > 0) { + this.html += chunk; + } + else { + this.html = chunk; + } + this.endOfChunkHit = false; + this.lastChunkWritten = isLastChunk; + } + insertHtmlAtCurrentPos(chunk) { + this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1); + this.endOfChunkHit = false; + } + startsWith(pattern, caseSensitive) { + // Check if our buffer has enough characters + if (this.pos + pattern.length > this.html.length) { + this.endOfChunkHit = !this.lastChunkWritten; + return false; + } + if (caseSensitive) { + return this.html.startsWith(pattern, this.pos); + } + for (let i = 0; i < pattern.length; i++) { + const cp = this.html.charCodeAt(this.pos + i) | 0x20; + if (cp !== pattern.charCodeAt(i)) { + return false; + } + } + return true; + } + peek(offset) { + const pos = this.pos + offset; + if (pos >= this.html.length) { + this.endOfChunkHit = !this.lastChunkWritten; + return unicode.CODE_POINTS.EOF; + } + const code = this.html.charCodeAt(pos); + return code === unicode.CODE_POINTS.CARRIAGE_RETURN ? unicode.CODE_POINTS.LINE_FEED : code; + } + advance() { + this.pos++; + //NOTE: LF should be in the last column of the line + if (this.isEol) { + this.isEol = false; + this.line++; + this.lineStartPos = this.pos; + } + if (this.pos >= this.html.length) { + this.endOfChunkHit = !this.lastChunkWritten; + return unicode.CODE_POINTS.EOF; + } + let cp = this.html.charCodeAt(this.pos); + //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters + if (cp === unicode.CODE_POINTS.CARRIAGE_RETURN) { + this.isEol = true; + this.skipNextNewLine = true; + return unicode.CODE_POINTS.LINE_FEED; + } + //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character + //must be ignored. + if (cp === unicode.CODE_POINTS.LINE_FEED) { + this.isEol = true; + if (this.skipNextNewLine) { + // `line` will be bumped again in the recursive call. + this.line--; + this.skipNextNewLine = false; + this._addGap(); + return this.advance(); + } + } + this.skipNextNewLine = false; + if ((0, unicode.isSurrogate)(cp)) { + cp = this._processSurrogate(cp); + } + //OPTIMIZATION: first check if code point is in the common allowed + //range (ASCII alphanumeric, whitespaces, big chunk of BMP) + //before going into detailed performance cost validation. + const isCommonValidRange = this.handler.onParseError === null || + (cp > 0x1f && cp < 0x7f) || + cp === unicode.CODE_POINTS.LINE_FEED || + cp === unicode.CODE_POINTS.CARRIAGE_RETURN || + (cp > 0x9f && cp < 64976); + if (!isCommonValidRange) { + this._checkForProblematicCharacters(cp); + } + return cp; + } + _checkForProblematicCharacters(cp) { + if ((0, unicode.isControlCodePoint)(cp)) { + this._err(errorCodes.ERR.controlCharacterInInputStream); + } + else if ((0, unicode.isUndefinedCodePoint)(cp)) { + this._err(errorCodes.ERR.noncharacterInInputStream); + } + } + retreat(count) { + this.pos -= count; + while (this.pos < this.lastGapPos) { + this.lastGapPos = this.gapStack.pop(); + this.pos--; + } + this.isEol = false; + } +} +exports.Preprocessor = Preprocessor; + +}); + +var token = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getTokenAttr = exports.TokenType = void 0; +(function (TokenType) { + TokenType[TokenType["CHARACTER"] = 0] = "CHARACTER"; + TokenType[TokenType["NULL_CHARACTER"] = 1] = "NULL_CHARACTER"; + TokenType[TokenType["WHITESPACE_CHARACTER"] = 2] = "WHITESPACE_CHARACTER"; + TokenType[TokenType["START_TAG"] = 3] = "START_TAG"; + TokenType[TokenType["END_TAG"] = 4] = "END_TAG"; + TokenType[TokenType["COMMENT"] = 5] = "COMMENT"; + TokenType[TokenType["DOCTYPE"] = 6] = "DOCTYPE"; + TokenType[TokenType["EOF"] = 7] = "EOF"; + TokenType[TokenType["HIBERNATION"] = 8] = "HIBERNATION"; +})(exports.TokenType || (exports.TokenType = {})); +function getTokenAttr(token, attrName) { + for (let i = token.attrs.length - 1; i >= 0; i--) { + if (token.attrs[i].name === attrName) { + return token.attrs[i].value; + } + } + return null; +} +exports.getTokenAttr = getTokenAttr; + +}); + +var html = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.hasUnescapedText = exports.isNumberedHeader = exports.SPECIAL_ELEMENTS = exports.getTagID = exports.TAG_ID = exports.TAG_NAMES = exports.DOCUMENT_MODE = exports.ATTRS = exports.NS = void 0; +/** All valid namespaces in HTML. */ +var NS; +(function (NS) { + NS["HTML"] = "http://www.w3.org/1999/xhtml"; + NS["MATHML"] = "http://www.w3.org/1998/Math/MathML"; + NS["SVG"] = "http://www.w3.org/2000/svg"; + NS["XLINK"] = "http://www.w3.org/1999/xlink"; + NS["XML"] = "http://www.w3.org/XML/1998/namespace"; + NS["XMLNS"] = "http://www.w3.org/2000/xmlns/"; +})(NS = exports.NS || (exports.NS = {})); +(function (ATTRS) { + ATTRS["TYPE"] = "type"; + ATTRS["ACTION"] = "action"; + ATTRS["ENCODING"] = "encoding"; + ATTRS["PROMPT"] = "prompt"; + ATTRS["NAME"] = "name"; + ATTRS["COLOR"] = "color"; + ATTRS["FACE"] = "face"; + ATTRS["SIZE"] = "size"; +})(exports.ATTRS || (exports.ATTRS = {})); +(function (DOCUMENT_MODE) { + DOCUMENT_MODE["NO_QUIRKS"] = "no-quirks"; + DOCUMENT_MODE["QUIRKS"] = "quirks"; + DOCUMENT_MODE["LIMITED_QUIRKS"] = "limited-quirks"; +})(exports.DOCUMENT_MODE || (exports.DOCUMENT_MODE = {})); +var TAG_NAMES; +(function (TAG_NAMES) { + TAG_NAMES["A"] = "a"; + TAG_NAMES["ADDRESS"] = "address"; + TAG_NAMES["ANNOTATION_XML"] = "annotation-xml"; + TAG_NAMES["APPLET"] = "applet"; + TAG_NAMES["AREA"] = "area"; + TAG_NAMES["ARTICLE"] = "article"; + TAG_NAMES["ASIDE"] = "aside"; + TAG_NAMES["B"] = "b"; + TAG_NAMES["BASE"] = "base"; + TAG_NAMES["BASEFONT"] = "basefont"; + TAG_NAMES["BGSOUND"] = "bgsound"; + TAG_NAMES["BIG"] = "big"; + TAG_NAMES["BLOCKQUOTE"] = "blockquote"; + TAG_NAMES["BODY"] = "body"; + TAG_NAMES["BR"] = "br"; + TAG_NAMES["BUTTON"] = "button"; + TAG_NAMES["CAPTION"] = "caption"; + TAG_NAMES["CENTER"] = "center"; + TAG_NAMES["CODE"] = "code"; + TAG_NAMES["COL"] = "col"; + TAG_NAMES["COLGROUP"] = "colgroup"; + TAG_NAMES["DD"] = "dd"; + TAG_NAMES["DESC"] = "desc"; + TAG_NAMES["DETAILS"] = "details"; + TAG_NAMES["DIALOG"] = "dialog"; + TAG_NAMES["DIR"] = "dir"; + TAG_NAMES["DIV"] = "div"; + TAG_NAMES["DL"] = "dl"; + TAG_NAMES["DT"] = "dt"; + TAG_NAMES["EM"] = "em"; + TAG_NAMES["EMBED"] = "embed"; + TAG_NAMES["FIELDSET"] = "fieldset"; + TAG_NAMES["FIGCAPTION"] = "figcaption"; + TAG_NAMES["FIGURE"] = "figure"; + TAG_NAMES["FONT"] = "font"; + TAG_NAMES["FOOTER"] = "footer"; + TAG_NAMES["FOREIGN_OBJECT"] = "foreignObject"; + TAG_NAMES["FORM"] = "form"; + TAG_NAMES["FRAME"] = "frame"; + TAG_NAMES["FRAMESET"] = "frameset"; + TAG_NAMES["H1"] = "h1"; + TAG_NAMES["H2"] = "h2"; + TAG_NAMES["H3"] = "h3"; + TAG_NAMES["H4"] = "h4"; + TAG_NAMES["H5"] = "h5"; + TAG_NAMES["H6"] = "h6"; + TAG_NAMES["HEAD"] = "head"; + TAG_NAMES["HEADER"] = "header"; + TAG_NAMES["HGROUP"] = "hgroup"; + TAG_NAMES["HR"] = "hr"; + TAG_NAMES["HTML"] = "html"; + TAG_NAMES["I"] = "i"; + TAG_NAMES["IMG"] = "img"; + TAG_NAMES["IMAGE"] = "image"; + TAG_NAMES["INPUT"] = "input"; + TAG_NAMES["IFRAME"] = "iframe"; + TAG_NAMES["KEYGEN"] = "keygen"; + TAG_NAMES["LABEL"] = "label"; + TAG_NAMES["LI"] = "li"; + TAG_NAMES["LINK"] = "link"; + TAG_NAMES["LISTING"] = "listing"; + TAG_NAMES["MAIN"] = "main"; + TAG_NAMES["MALIGNMARK"] = "malignmark"; + TAG_NAMES["MARQUEE"] = "marquee"; + TAG_NAMES["MATH"] = "math"; + TAG_NAMES["MENU"] = "menu"; + TAG_NAMES["META"] = "meta"; + TAG_NAMES["MGLYPH"] = "mglyph"; + TAG_NAMES["MI"] = "mi"; + TAG_NAMES["MO"] = "mo"; + TAG_NAMES["MN"] = "mn"; + TAG_NAMES["MS"] = "ms"; + TAG_NAMES["MTEXT"] = "mtext"; + TAG_NAMES["NAV"] = "nav"; + TAG_NAMES["NOBR"] = "nobr"; + TAG_NAMES["NOFRAMES"] = "noframes"; + TAG_NAMES["NOEMBED"] = "noembed"; + TAG_NAMES["NOSCRIPT"] = "noscript"; + TAG_NAMES["OBJECT"] = "object"; + TAG_NAMES["OL"] = "ol"; + TAG_NAMES["OPTGROUP"] = "optgroup"; + TAG_NAMES["OPTION"] = "option"; + TAG_NAMES["P"] = "p"; + TAG_NAMES["PARAM"] = "param"; + TAG_NAMES["PLAINTEXT"] = "plaintext"; + TAG_NAMES["PRE"] = "pre"; + TAG_NAMES["RB"] = "rb"; + TAG_NAMES["RP"] = "rp"; + TAG_NAMES["RT"] = "rt"; + TAG_NAMES["RTC"] = "rtc"; + TAG_NAMES["RUBY"] = "ruby"; + TAG_NAMES["S"] = "s"; + TAG_NAMES["SCRIPT"] = "script"; + TAG_NAMES["SECTION"] = "section"; + TAG_NAMES["SELECT"] = "select"; + TAG_NAMES["SOURCE"] = "source"; + TAG_NAMES["SMALL"] = "small"; + TAG_NAMES["SPAN"] = "span"; + TAG_NAMES["STRIKE"] = "strike"; + TAG_NAMES["STRONG"] = "strong"; + TAG_NAMES["STYLE"] = "style"; + TAG_NAMES["SUB"] = "sub"; + TAG_NAMES["SUMMARY"] = "summary"; + TAG_NAMES["SUP"] = "sup"; + TAG_NAMES["TABLE"] = "table"; + TAG_NAMES["TBODY"] = "tbody"; + TAG_NAMES["TEMPLATE"] = "template"; + TAG_NAMES["TEXTAREA"] = "textarea"; + TAG_NAMES["TFOOT"] = "tfoot"; + TAG_NAMES["TD"] = "td"; + TAG_NAMES["TH"] = "th"; + TAG_NAMES["THEAD"] = "thead"; + TAG_NAMES["TITLE"] = "title"; + TAG_NAMES["TR"] = "tr"; + TAG_NAMES["TRACK"] = "track"; + TAG_NAMES["TT"] = "tt"; + TAG_NAMES["U"] = "u"; + TAG_NAMES["UL"] = "ul"; + TAG_NAMES["SVG"] = "svg"; + TAG_NAMES["VAR"] = "var"; + TAG_NAMES["WBR"] = "wbr"; + TAG_NAMES["XMP"] = "xmp"; +})(TAG_NAMES = exports.TAG_NAMES || (exports.TAG_NAMES = {})); +/** + * Tag IDs are numeric IDs for known tag names. + * + * We use tag IDs to improve the performance of tag name comparisons. + */ +var TAG_ID; +(function (TAG_ID) { + TAG_ID[TAG_ID["UNKNOWN"] = 0] = "UNKNOWN"; + TAG_ID[TAG_ID["A"] = 1] = "A"; + TAG_ID[TAG_ID["ADDRESS"] = 2] = "ADDRESS"; + TAG_ID[TAG_ID["ANNOTATION_XML"] = 3] = "ANNOTATION_XML"; + TAG_ID[TAG_ID["APPLET"] = 4] = "APPLET"; + TAG_ID[TAG_ID["AREA"] = 5] = "AREA"; + TAG_ID[TAG_ID["ARTICLE"] = 6] = "ARTICLE"; + TAG_ID[TAG_ID["ASIDE"] = 7] = "ASIDE"; + TAG_ID[TAG_ID["B"] = 8] = "B"; + TAG_ID[TAG_ID["BASE"] = 9] = "BASE"; + TAG_ID[TAG_ID["BASEFONT"] = 10] = "BASEFONT"; + TAG_ID[TAG_ID["BGSOUND"] = 11] = "BGSOUND"; + TAG_ID[TAG_ID["BIG"] = 12] = "BIG"; + TAG_ID[TAG_ID["BLOCKQUOTE"] = 13] = "BLOCKQUOTE"; + TAG_ID[TAG_ID["BODY"] = 14] = "BODY"; + TAG_ID[TAG_ID["BR"] = 15] = "BR"; + TAG_ID[TAG_ID["BUTTON"] = 16] = "BUTTON"; + TAG_ID[TAG_ID["CAPTION"] = 17] = "CAPTION"; + TAG_ID[TAG_ID["CENTER"] = 18] = "CENTER"; + TAG_ID[TAG_ID["CODE"] = 19] = "CODE"; + TAG_ID[TAG_ID["COL"] = 20] = "COL"; + TAG_ID[TAG_ID["COLGROUP"] = 21] = "COLGROUP"; + TAG_ID[TAG_ID["DD"] = 22] = "DD"; + TAG_ID[TAG_ID["DESC"] = 23] = "DESC"; + TAG_ID[TAG_ID["DETAILS"] = 24] = "DETAILS"; + TAG_ID[TAG_ID["DIALOG"] = 25] = "DIALOG"; + TAG_ID[TAG_ID["DIR"] = 26] = "DIR"; + TAG_ID[TAG_ID["DIV"] = 27] = "DIV"; + TAG_ID[TAG_ID["DL"] = 28] = "DL"; + TAG_ID[TAG_ID["DT"] = 29] = "DT"; + TAG_ID[TAG_ID["EM"] = 30] = "EM"; + TAG_ID[TAG_ID["EMBED"] = 31] = "EMBED"; + TAG_ID[TAG_ID["FIELDSET"] = 32] = "FIELDSET"; + TAG_ID[TAG_ID["FIGCAPTION"] = 33] = "FIGCAPTION"; + TAG_ID[TAG_ID["FIGURE"] = 34] = "FIGURE"; + TAG_ID[TAG_ID["FONT"] = 35] = "FONT"; + TAG_ID[TAG_ID["FOOTER"] = 36] = "FOOTER"; + TAG_ID[TAG_ID["FOREIGN_OBJECT"] = 37] = "FOREIGN_OBJECT"; + TAG_ID[TAG_ID["FORM"] = 38] = "FORM"; + TAG_ID[TAG_ID["FRAME"] = 39] = "FRAME"; + TAG_ID[TAG_ID["FRAMESET"] = 40] = "FRAMESET"; + TAG_ID[TAG_ID["H1"] = 41] = "H1"; + TAG_ID[TAG_ID["H2"] = 42] = "H2"; + TAG_ID[TAG_ID["H3"] = 43] = "H3"; + TAG_ID[TAG_ID["H4"] = 44] = "H4"; + TAG_ID[TAG_ID["H5"] = 45] = "H5"; + TAG_ID[TAG_ID["H6"] = 46] = "H6"; + TAG_ID[TAG_ID["HEAD"] = 47] = "HEAD"; + TAG_ID[TAG_ID["HEADER"] = 48] = "HEADER"; + TAG_ID[TAG_ID["HGROUP"] = 49] = "HGROUP"; + TAG_ID[TAG_ID["HR"] = 50] = "HR"; + TAG_ID[TAG_ID["HTML"] = 51] = "HTML"; + TAG_ID[TAG_ID["I"] = 52] = "I"; + TAG_ID[TAG_ID["IMG"] = 53] = "IMG"; + TAG_ID[TAG_ID["IMAGE"] = 54] = "IMAGE"; + TAG_ID[TAG_ID["INPUT"] = 55] = "INPUT"; + TAG_ID[TAG_ID["IFRAME"] = 56] = "IFRAME"; + TAG_ID[TAG_ID["KEYGEN"] = 57] = "KEYGEN"; + TAG_ID[TAG_ID["LABEL"] = 58] = "LABEL"; + TAG_ID[TAG_ID["LI"] = 59] = "LI"; + TAG_ID[TAG_ID["LINK"] = 60] = "LINK"; + TAG_ID[TAG_ID["LISTING"] = 61] = "LISTING"; + TAG_ID[TAG_ID["MAIN"] = 62] = "MAIN"; + TAG_ID[TAG_ID["MALIGNMARK"] = 63] = "MALIGNMARK"; + TAG_ID[TAG_ID["MARQUEE"] = 64] = "MARQUEE"; + TAG_ID[TAG_ID["MATH"] = 65] = "MATH"; + TAG_ID[TAG_ID["MENU"] = 66] = "MENU"; + TAG_ID[TAG_ID["META"] = 67] = "META"; + TAG_ID[TAG_ID["MGLYPH"] = 68] = "MGLYPH"; + TAG_ID[TAG_ID["MI"] = 69] = "MI"; + TAG_ID[TAG_ID["MO"] = 70] = "MO"; + TAG_ID[TAG_ID["MN"] = 71] = "MN"; + TAG_ID[TAG_ID["MS"] = 72] = "MS"; + TAG_ID[TAG_ID["MTEXT"] = 73] = "MTEXT"; + TAG_ID[TAG_ID["NAV"] = 74] = "NAV"; + TAG_ID[TAG_ID["NOBR"] = 75] = "NOBR"; + TAG_ID[TAG_ID["NOFRAMES"] = 76] = "NOFRAMES"; + TAG_ID[TAG_ID["NOEMBED"] = 77] = "NOEMBED"; + TAG_ID[TAG_ID["NOSCRIPT"] = 78] = "NOSCRIPT"; + TAG_ID[TAG_ID["OBJECT"] = 79] = "OBJECT"; + TAG_ID[TAG_ID["OL"] = 80] = "OL"; + TAG_ID[TAG_ID["OPTGROUP"] = 81] = "OPTGROUP"; + TAG_ID[TAG_ID["OPTION"] = 82] = "OPTION"; + TAG_ID[TAG_ID["P"] = 83] = "P"; + TAG_ID[TAG_ID["PARAM"] = 84] = "PARAM"; + TAG_ID[TAG_ID["PLAINTEXT"] = 85] = "PLAINTEXT"; + TAG_ID[TAG_ID["PRE"] = 86] = "PRE"; + TAG_ID[TAG_ID["RB"] = 87] = "RB"; + TAG_ID[TAG_ID["RP"] = 88] = "RP"; + TAG_ID[TAG_ID["RT"] = 89] = "RT"; + TAG_ID[TAG_ID["RTC"] = 90] = "RTC"; + TAG_ID[TAG_ID["RUBY"] = 91] = "RUBY"; + TAG_ID[TAG_ID["S"] = 92] = "S"; + TAG_ID[TAG_ID["SCRIPT"] = 93] = "SCRIPT"; + TAG_ID[TAG_ID["SECTION"] = 94] = "SECTION"; + TAG_ID[TAG_ID["SELECT"] = 95] = "SELECT"; + TAG_ID[TAG_ID["SOURCE"] = 96] = "SOURCE"; + TAG_ID[TAG_ID["SMALL"] = 97] = "SMALL"; + TAG_ID[TAG_ID["SPAN"] = 98] = "SPAN"; + TAG_ID[TAG_ID["STRIKE"] = 99] = "STRIKE"; + TAG_ID[TAG_ID["STRONG"] = 100] = "STRONG"; + TAG_ID[TAG_ID["STYLE"] = 101] = "STYLE"; + TAG_ID[TAG_ID["SUB"] = 102] = "SUB"; + TAG_ID[TAG_ID["SUMMARY"] = 103] = "SUMMARY"; + TAG_ID[TAG_ID["SUP"] = 104] = "SUP"; + TAG_ID[TAG_ID["TABLE"] = 105] = "TABLE"; + TAG_ID[TAG_ID["TBODY"] = 106] = "TBODY"; + TAG_ID[TAG_ID["TEMPLATE"] = 107] = "TEMPLATE"; + TAG_ID[TAG_ID["TEXTAREA"] = 108] = "TEXTAREA"; + TAG_ID[TAG_ID["TFOOT"] = 109] = "TFOOT"; + TAG_ID[TAG_ID["TD"] = 110] = "TD"; + TAG_ID[TAG_ID["TH"] = 111] = "TH"; + TAG_ID[TAG_ID["THEAD"] = 112] = "THEAD"; + TAG_ID[TAG_ID["TITLE"] = 113] = "TITLE"; + TAG_ID[TAG_ID["TR"] = 114] = "TR"; + TAG_ID[TAG_ID["TRACK"] = 115] = "TRACK"; + TAG_ID[TAG_ID["TT"] = 116] = "TT"; + TAG_ID[TAG_ID["U"] = 117] = "U"; + TAG_ID[TAG_ID["UL"] = 118] = "UL"; + TAG_ID[TAG_ID["SVG"] = 119] = "SVG"; + TAG_ID[TAG_ID["VAR"] = 120] = "VAR"; + TAG_ID[TAG_ID["WBR"] = 121] = "WBR"; + TAG_ID[TAG_ID["XMP"] = 122] = "XMP"; +})(TAG_ID = exports.TAG_ID || (exports.TAG_ID = {})); +const TAG_NAME_TO_ID = new Map([ + [TAG_NAMES.A, TAG_ID.A], + [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS], + [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML], + [TAG_NAMES.APPLET, TAG_ID.APPLET], + [TAG_NAMES.AREA, TAG_ID.AREA], + [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE], + [TAG_NAMES.ASIDE, TAG_ID.ASIDE], + [TAG_NAMES.B, TAG_ID.B], + [TAG_NAMES.BASE, TAG_ID.BASE], + [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT], + [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND], + [TAG_NAMES.BIG, TAG_ID.BIG], + [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE], + [TAG_NAMES.BODY, TAG_ID.BODY], + [TAG_NAMES.BR, TAG_ID.BR], + [TAG_NAMES.BUTTON, TAG_ID.BUTTON], + [TAG_NAMES.CAPTION, TAG_ID.CAPTION], + [TAG_NAMES.CENTER, TAG_ID.CENTER], + [TAG_NAMES.CODE, TAG_ID.CODE], + [TAG_NAMES.COL, TAG_ID.COL], + [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP], + [TAG_NAMES.DD, TAG_ID.DD], + [TAG_NAMES.DESC, TAG_ID.DESC], + [TAG_NAMES.DETAILS, TAG_ID.DETAILS], + [TAG_NAMES.DIALOG, TAG_ID.DIALOG], + [TAG_NAMES.DIR, TAG_ID.DIR], + [TAG_NAMES.DIV, TAG_ID.DIV], + [TAG_NAMES.DL, TAG_ID.DL], + [TAG_NAMES.DT, TAG_ID.DT], + [TAG_NAMES.EM, TAG_ID.EM], + [TAG_NAMES.EMBED, TAG_ID.EMBED], + [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET], + [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION], + [TAG_NAMES.FIGURE, TAG_ID.FIGURE], + [TAG_NAMES.FONT, TAG_ID.FONT], + [TAG_NAMES.FOOTER, TAG_ID.FOOTER], + [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT], + [TAG_NAMES.FORM, TAG_ID.FORM], + [TAG_NAMES.FRAME, TAG_ID.FRAME], + [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET], + [TAG_NAMES.H1, TAG_ID.H1], + [TAG_NAMES.H2, TAG_ID.H2], + [TAG_NAMES.H3, TAG_ID.H3], + [TAG_NAMES.H4, TAG_ID.H4], + [TAG_NAMES.H5, TAG_ID.H5], + [TAG_NAMES.H6, TAG_ID.H6], + [TAG_NAMES.HEAD, TAG_ID.HEAD], + [TAG_NAMES.HEADER, TAG_ID.HEADER], + [TAG_NAMES.HGROUP, TAG_ID.HGROUP], + [TAG_NAMES.HR, TAG_ID.HR], + [TAG_NAMES.HTML, TAG_ID.HTML], + [TAG_NAMES.I, TAG_ID.I], + [TAG_NAMES.IMG, TAG_ID.IMG], + [TAG_NAMES.IMAGE, TAG_ID.IMAGE], + [TAG_NAMES.INPUT, TAG_ID.INPUT], + [TAG_NAMES.IFRAME, TAG_ID.IFRAME], + [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN], + [TAG_NAMES.LABEL, TAG_ID.LABEL], + [TAG_NAMES.LI, TAG_ID.LI], + [TAG_NAMES.LINK, TAG_ID.LINK], + [TAG_NAMES.LISTING, TAG_ID.LISTING], + [TAG_NAMES.MAIN, TAG_ID.MAIN], + [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK], + [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE], + [TAG_NAMES.MATH, TAG_ID.MATH], + [TAG_NAMES.MENU, TAG_ID.MENU], + [TAG_NAMES.META, TAG_ID.META], + [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH], + [TAG_NAMES.MI, TAG_ID.MI], + [TAG_NAMES.MO, TAG_ID.MO], + [TAG_NAMES.MN, TAG_ID.MN], + [TAG_NAMES.MS, TAG_ID.MS], + [TAG_NAMES.MTEXT, TAG_ID.MTEXT], + [TAG_NAMES.NAV, TAG_ID.NAV], + [TAG_NAMES.NOBR, TAG_ID.NOBR], + [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES], + [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED], + [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT], + [TAG_NAMES.OBJECT, TAG_ID.OBJECT], + [TAG_NAMES.OL, TAG_ID.OL], + [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP], + [TAG_NAMES.OPTION, TAG_ID.OPTION], + [TAG_NAMES.P, TAG_ID.P], + [TAG_NAMES.PARAM, TAG_ID.PARAM], + [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT], + [TAG_NAMES.PRE, TAG_ID.PRE], + [TAG_NAMES.RB, TAG_ID.RB], + [TAG_NAMES.RP, TAG_ID.RP], + [TAG_NAMES.RT, TAG_ID.RT], + [TAG_NAMES.RTC, TAG_ID.RTC], + [TAG_NAMES.RUBY, TAG_ID.RUBY], + [TAG_NAMES.S, TAG_ID.S], + [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT], + [TAG_NAMES.SECTION, TAG_ID.SECTION], + [TAG_NAMES.SELECT, TAG_ID.SELECT], + [TAG_NAMES.SOURCE, TAG_ID.SOURCE], + [TAG_NAMES.SMALL, TAG_ID.SMALL], + [TAG_NAMES.SPAN, TAG_ID.SPAN], + [TAG_NAMES.STRIKE, TAG_ID.STRIKE], + [TAG_NAMES.STRONG, TAG_ID.STRONG], + [TAG_NAMES.STYLE, TAG_ID.STYLE], + [TAG_NAMES.SUB, TAG_ID.SUB], + [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY], + [TAG_NAMES.SUP, TAG_ID.SUP], + [TAG_NAMES.TABLE, TAG_ID.TABLE], + [TAG_NAMES.TBODY, TAG_ID.TBODY], + [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE], + [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA], + [TAG_NAMES.TFOOT, TAG_ID.TFOOT], + [TAG_NAMES.TD, TAG_ID.TD], + [TAG_NAMES.TH, TAG_ID.TH], + [TAG_NAMES.THEAD, TAG_ID.THEAD], + [TAG_NAMES.TITLE, TAG_ID.TITLE], + [TAG_NAMES.TR, TAG_ID.TR], + [TAG_NAMES.TRACK, TAG_ID.TRACK], + [TAG_NAMES.TT, TAG_ID.TT], + [TAG_NAMES.U, TAG_ID.U], + [TAG_NAMES.UL, TAG_ID.UL], + [TAG_NAMES.SVG, TAG_ID.SVG], + [TAG_NAMES.VAR, TAG_ID.VAR], + [TAG_NAMES.WBR, TAG_ID.WBR], + [TAG_NAMES.XMP, TAG_ID.XMP], +]); +function getTagID(tagName) { + var _a; + return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN; +} +exports.getTagID = getTagID; +const $ = TAG_ID; +exports.SPECIAL_ELEMENTS = { + [NS.HTML]: new Set([ + $.ADDRESS, + $.APPLET, + $.AREA, + $.ARTICLE, + $.ASIDE, + $.BASE, + $.BASEFONT, + $.BGSOUND, + $.BLOCKQUOTE, + $.BODY, + $.BR, + $.BUTTON, + $.CAPTION, + $.CENTER, + $.COL, + $.COLGROUP, + $.DD, + $.DETAILS, + $.DIR, + $.DIV, + $.DL, + $.DT, + $.EMBED, + $.FIELDSET, + $.FIGCAPTION, + $.FIGURE, + $.FOOTER, + $.FORM, + $.FRAME, + $.FRAMESET, + $.H1, + $.H2, + $.H3, + $.H4, + $.H5, + $.H6, + $.HEAD, + $.HEADER, + $.HGROUP, + $.HR, + $.HTML, + $.IFRAME, + $.IMG, + $.INPUT, + $.LI, + $.LINK, + $.LISTING, + $.MAIN, + $.MARQUEE, + $.MENU, + $.META, + $.NAV, + $.NOEMBED, + $.NOFRAMES, + $.NOSCRIPT, + $.OBJECT, + $.OL, + $.P, + $.PARAM, + $.PLAINTEXT, + $.PRE, + $.SCRIPT, + $.SECTION, + $.SELECT, + $.SOURCE, + $.STYLE, + $.SUMMARY, + $.TABLE, + $.TBODY, + $.TD, + $.TEMPLATE, + $.TEXTAREA, + $.TFOOT, + $.TH, + $.THEAD, + $.TITLE, + $.TR, + $.TRACK, + $.UL, + $.WBR, + $.XMP, + ]), + [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]), + [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]), + [NS.XLINK]: new Set(), + [NS.XML]: new Set(), + [NS.XMLNS]: new Set(), +}; +function isNumberedHeader(tn) { + return tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6; +} +exports.isNumberedHeader = isNumberedHeader; +const UNESCAPED_TEXT = new Set([ + TAG_NAMES.STYLE, + TAG_NAMES.SCRIPT, + TAG_NAMES.XMP, + TAG_NAMES.IFRAME, + TAG_NAMES.NOEMBED, + TAG_NAMES.NOFRAMES, + TAG_NAMES.PLAINTEXT, +]); +function hasUnescapedText(tn, scriptingEnabled) { + return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT); +} +exports.hasUnescapedText = hasUnescapedText; + +}); + +var tokenizer = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Tokenizer = exports.TokenizerMode = void 0; + + + + + + +//C1 Unicode control character reference replacements +const C1_CONTROLS_REFERENCE_REPLACEMENTS = new Map([ + [0x80, 8364], + [0x82, 8218], + [0x83, 402], + [0x84, 8222], + [0x85, 8230], + [0x86, 8224], + [0x87, 8225], + [0x88, 710], + [0x89, 8240], + [0x8a, 352], + [0x8b, 8249], + [0x8c, 338], + [0x8e, 381], + [0x91, 8216], + [0x92, 8217], + [0x93, 8220], + [0x94, 8221], + [0x95, 8226], + [0x96, 8211], + [0x97, 8212], + [0x98, 732], + [0x99, 8482], + [0x9a, 353], + [0x9b, 8250], + [0x9c, 339], + [0x9e, 382], + [0x9f, 376], +]); +//States +var State; +(function (State) { + State[State["DATA"] = 0] = "DATA"; + State[State["RCDATA"] = 1] = "RCDATA"; + State[State["RAWTEXT"] = 2] = "RAWTEXT"; + State[State["SCRIPT_DATA"] = 3] = "SCRIPT_DATA"; + State[State["PLAINTEXT"] = 4] = "PLAINTEXT"; + State[State["TAG_OPEN"] = 5] = "TAG_OPEN"; + State[State["END_TAG_OPEN"] = 6] = "END_TAG_OPEN"; + State[State["TAG_NAME"] = 7] = "TAG_NAME"; + State[State["RCDATA_LESS_THAN_SIGN"] = 8] = "RCDATA_LESS_THAN_SIGN"; + State[State["RCDATA_END_TAG_OPEN"] = 9] = "RCDATA_END_TAG_OPEN"; + State[State["RCDATA_END_TAG_NAME"] = 10] = "RCDATA_END_TAG_NAME"; + State[State["RAWTEXT_LESS_THAN_SIGN"] = 11] = "RAWTEXT_LESS_THAN_SIGN"; + State[State["RAWTEXT_END_TAG_OPEN"] = 12] = "RAWTEXT_END_TAG_OPEN"; + State[State["RAWTEXT_END_TAG_NAME"] = 13] = "RAWTEXT_END_TAG_NAME"; + State[State["SCRIPT_DATA_LESS_THAN_SIGN"] = 14] = "SCRIPT_DATA_LESS_THAN_SIGN"; + State[State["SCRIPT_DATA_END_TAG_OPEN"] = 15] = "SCRIPT_DATA_END_TAG_OPEN"; + State[State["SCRIPT_DATA_END_TAG_NAME"] = 16] = "SCRIPT_DATA_END_TAG_NAME"; + State[State["SCRIPT_DATA_ESCAPE_START"] = 17] = "SCRIPT_DATA_ESCAPE_START"; + State[State["SCRIPT_DATA_ESCAPE_START_DASH"] = 18] = "SCRIPT_DATA_ESCAPE_START_DASH"; + State[State["SCRIPT_DATA_ESCAPED"] = 19] = "SCRIPT_DATA_ESCAPED"; + State[State["SCRIPT_DATA_ESCAPED_DASH"] = 20] = "SCRIPT_DATA_ESCAPED_DASH"; + State[State["SCRIPT_DATA_ESCAPED_DASH_DASH"] = 21] = "SCRIPT_DATA_ESCAPED_DASH_DASH"; + State[State["SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"] = 22] = "SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN"; + State[State["SCRIPT_DATA_ESCAPED_END_TAG_OPEN"] = 23] = "SCRIPT_DATA_ESCAPED_END_TAG_OPEN"; + State[State["SCRIPT_DATA_ESCAPED_END_TAG_NAME"] = 24] = "SCRIPT_DATA_ESCAPED_END_TAG_NAME"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPE_START"] = 25] = "SCRIPT_DATA_DOUBLE_ESCAPE_START"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED"] = 26] = "SCRIPT_DATA_DOUBLE_ESCAPED"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED_DASH"] = 27] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"] = 28] = "SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"] = 29] = "SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN"; + State[State["SCRIPT_DATA_DOUBLE_ESCAPE_END"] = 30] = "SCRIPT_DATA_DOUBLE_ESCAPE_END"; + State[State["BEFORE_ATTRIBUTE_NAME"] = 31] = "BEFORE_ATTRIBUTE_NAME"; + State[State["ATTRIBUTE_NAME"] = 32] = "ATTRIBUTE_NAME"; + State[State["AFTER_ATTRIBUTE_NAME"] = 33] = "AFTER_ATTRIBUTE_NAME"; + State[State["BEFORE_ATTRIBUTE_VALUE"] = 34] = "BEFORE_ATTRIBUTE_VALUE"; + State[State["ATTRIBUTE_VALUE_DOUBLE_QUOTED"] = 35] = "ATTRIBUTE_VALUE_DOUBLE_QUOTED"; + State[State["ATTRIBUTE_VALUE_SINGLE_QUOTED"] = 36] = "ATTRIBUTE_VALUE_SINGLE_QUOTED"; + State[State["ATTRIBUTE_VALUE_UNQUOTED"] = 37] = "ATTRIBUTE_VALUE_UNQUOTED"; + State[State["AFTER_ATTRIBUTE_VALUE_QUOTED"] = 38] = "AFTER_ATTRIBUTE_VALUE_QUOTED"; + State[State["SELF_CLOSING_START_TAG"] = 39] = "SELF_CLOSING_START_TAG"; + State[State["BOGUS_COMMENT"] = 40] = "BOGUS_COMMENT"; + State[State["MARKUP_DECLARATION_OPEN"] = 41] = "MARKUP_DECLARATION_OPEN"; + State[State["COMMENT_START"] = 42] = "COMMENT_START"; + State[State["COMMENT_START_DASH"] = 43] = "COMMENT_START_DASH"; + State[State["COMMENT"] = 44] = "COMMENT"; + State[State["COMMENT_LESS_THAN_SIGN"] = 45] = "COMMENT_LESS_THAN_SIGN"; + State[State["COMMENT_LESS_THAN_SIGN_BANG"] = 46] = "COMMENT_LESS_THAN_SIGN_BANG"; + State[State["COMMENT_LESS_THAN_SIGN_BANG_DASH"] = 47] = "COMMENT_LESS_THAN_SIGN_BANG_DASH"; + State[State["COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"] = 48] = "COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH"; + State[State["COMMENT_END_DASH"] = 49] = "COMMENT_END_DASH"; + State[State["COMMENT_END"] = 50] = "COMMENT_END"; + State[State["COMMENT_END_BANG"] = 51] = "COMMENT_END_BANG"; + State[State["DOCTYPE"] = 52] = "DOCTYPE"; + State[State["BEFORE_DOCTYPE_NAME"] = 53] = "BEFORE_DOCTYPE_NAME"; + State[State["DOCTYPE_NAME"] = 54] = "DOCTYPE_NAME"; + State[State["AFTER_DOCTYPE_NAME"] = 55] = "AFTER_DOCTYPE_NAME"; + State[State["AFTER_DOCTYPE_PUBLIC_KEYWORD"] = 56] = "AFTER_DOCTYPE_PUBLIC_KEYWORD"; + State[State["BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"] = 57] = "BEFORE_DOCTYPE_PUBLIC_IDENTIFIER"; + State[State["DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"] = 58] = "DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED"; + State[State["DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"] = 59] = "DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED"; + State[State["AFTER_DOCTYPE_PUBLIC_IDENTIFIER"] = 60] = "AFTER_DOCTYPE_PUBLIC_IDENTIFIER"; + State[State["BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"] = 61] = "BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS"; + State[State["AFTER_DOCTYPE_SYSTEM_KEYWORD"] = 62] = "AFTER_DOCTYPE_SYSTEM_KEYWORD"; + State[State["BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"] = 63] = "BEFORE_DOCTYPE_SYSTEM_IDENTIFIER"; + State[State["DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"] = 64] = "DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED"; + State[State["DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"] = 65] = "DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED"; + State[State["AFTER_DOCTYPE_SYSTEM_IDENTIFIER"] = 66] = "AFTER_DOCTYPE_SYSTEM_IDENTIFIER"; + State[State["BOGUS_DOCTYPE"] = 67] = "BOGUS_DOCTYPE"; + State[State["CDATA_SECTION"] = 68] = "CDATA_SECTION"; + State[State["CDATA_SECTION_BRACKET"] = 69] = "CDATA_SECTION_BRACKET"; + State[State["CDATA_SECTION_END"] = 70] = "CDATA_SECTION_END"; + State[State["CHARACTER_REFERENCE"] = 71] = "CHARACTER_REFERENCE"; + State[State["NAMED_CHARACTER_REFERENCE"] = 72] = "NAMED_CHARACTER_REFERENCE"; + State[State["AMBIGUOUS_AMPERSAND"] = 73] = "AMBIGUOUS_AMPERSAND"; + State[State["NUMERIC_CHARACTER_REFERENCE"] = 74] = "NUMERIC_CHARACTER_REFERENCE"; + State[State["HEXADEMICAL_CHARACTER_REFERENCE_START"] = 75] = "HEXADEMICAL_CHARACTER_REFERENCE_START"; + State[State["HEXADEMICAL_CHARACTER_REFERENCE"] = 76] = "HEXADEMICAL_CHARACTER_REFERENCE"; + State[State["DECIMAL_CHARACTER_REFERENCE"] = 77] = "DECIMAL_CHARACTER_REFERENCE"; + State[State["NUMERIC_CHARACTER_REFERENCE_END"] = 78] = "NUMERIC_CHARACTER_REFERENCE_END"; +})(State || (State = {})); +//Tokenizer initial states for different modes +exports.TokenizerMode = { + DATA: State.DATA, + RCDATA: State.RCDATA, + RAWTEXT: State.RAWTEXT, + SCRIPT_DATA: State.SCRIPT_DATA, + PLAINTEXT: State.PLAINTEXT, + CDATA_SECTION: State.CDATA_SECTION, +}; +//Utils +//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline +//this functions if they will be situated in another module due to context switch. +//Always perform inlining check before modifying this functions ('node --trace-inlining'). +function isAsciiDigit(cp) { + return cp >= unicode.CODE_POINTS.DIGIT_0 && cp <= unicode.CODE_POINTS.DIGIT_9; +} +function isAsciiUpper(cp) { + return cp >= unicode.CODE_POINTS.LATIN_CAPITAL_A && cp <= unicode.CODE_POINTS.LATIN_CAPITAL_Z; +} +function isAsciiLower(cp) { + return cp >= unicode.CODE_POINTS.LATIN_SMALL_A && cp <= unicode.CODE_POINTS.LATIN_SMALL_Z; +} +function isAsciiLetter(cp) { + return isAsciiLower(cp) || isAsciiUpper(cp); +} +function isAsciiAlphaNumeric(cp) { + return isAsciiLetter(cp) || isAsciiDigit(cp); +} +function isAsciiUpperHexDigit(cp) { + return cp >= unicode.CODE_POINTS.LATIN_CAPITAL_A && cp <= unicode.CODE_POINTS.LATIN_CAPITAL_F; +} +function isAsciiLowerHexDigit(cp) { + return cp >= unicode.CODE_POINTS.LATIN_SMALL_A && cp <= unicode.CODE_POINTS.LATIN_SMALL_F; +} +function isAsciiHexDigit(cp) { + return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp); +} +function toAsciiLower(cp) { + return cp + 32; +} +function isWhitespace(cp) { + return cp === unicode.CODE_POINTS.SPACE || cp === unicode.CODE_POINTS.LINE_FEED || cp === unicode.CODE_POINTS.TABULATION || cp === unicode.CODE_POINTS.FORM_FEED; +} +function isEntityInAttributeInvalidEnd(nextCp) { + return nextCp === unicode.CODE_POINTS.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp); +} +function isScriptDataDoubleEscapeSequenceEnd(cp) { + return isWhitespace(cp) || cp === unicode.CODE_POINTS.SOLIDUS || cp === unicode.CODE_POINTS.GREATER_THAN_SIGN; +} +//Tokenizer +class Tokenizer { + constructor(options, handler) { + this.options = options; + this.handler = handler; + this.paused = false; + /** Ensures that the parsing loop isn't run multiple times at once. */ + this.inLoop = false; + /** + * Indicates that the current adjusted node exists, is not an element in the HTML namespace, + * and that it is not an integration point for either MathML or HTML. + * + * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction} + */ + this.inForeignNode = false; + this.lastStartTagName = ''; + this.active = false; + this.state = State.DATA; + this.returnState = State.DATA; + this.charRefCode = -1; + this.consumedAfterSnapshot = -1; + this.currentCharacterToken = null; + this.currentToken = null; + this.currentAttr = { name: '', value: '' }; + this.preprocessor = new preprocessor.Preprocessor(handler); + this.currentLocation = this.getCurrentLocation(-1); + } + //Errors + _err(code) { + var _a, _b; + (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code)); + } + // NOTE: `offset` may never run across line boundaries. + getCurrentLocation(offset) { + if (!this.options.sourceCodeLocationInfo) { + return null; + } + return { + startLine: this.preprocessor.line, + startCol: this.preprocessor.col - offset, + startOffset: this.preprocessor.offset - offset, + endLine: -1, + endCol: -1, + endOffset: -1, + }; + } + _runParsingLoop() { + if (this.inLoop) + return; + this.inLoop = true; + while (this.active && !this.paused) { + this.consumedAfterSnapshot = 0; + const cp = this._consume(); + if (!this._ensureHibernation()) { + this._callState(cp); + } + } + this.inLoop = false; + } + //API + pause() { + this.paused = true; + } + resume(writeCallback) { + if (!this.paused) { + throw new Error('Parser was already resumed'); + } + this.paused = false; + // Necessary for synchronous resume. + if (this.inLoop) + return; + this._runParsingLoop(); + if (!this.paused) { + writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback(); + } + } + write(chunk, isLastChunk, writeCallback) { + this.active = true; + this.preprocessor.write(chunk, isLastChunk); + this._runParsingLoop(); + if (!this.paused) { + writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback(); + } + } + insertHtmlAtCurrentPos(chunk) { + this.active = true; + this.preprocessor.insertHtmlAtCurrentPos(chunk); + this._runParsingLoop(); + } + //Hibernation + _ensureHibernation() { + if (this.preprocessor.endOfChunkHit) { + this._unconsume(this.consumedAfterSnapshot); + this.active = false; + return true; + } + return false; + } + //Consumption + _consume() { + this.consumedAfterSnapshot++; + return this.preprocessor.advance(); + } + _unconsume(count) { + this.consumedAfterSnapshot -= count; + this.preprocessor.retreat(count); + } + _reconsumeInState(state, cp) { + this.state = state; + this._callState(cp); + } + _advanceBy(count) { + this.consumedAfterSnapshot += count; + for (let i = 0; i < count; i++) { + this.preprocessor.advance(); + } + } + _consumeSequenceIfMatch(pattern, caseSensitive) { + if (this.preprocessor.startsWith(pattern, caseSensitive)) { + // We will already have consumed one character before calling this method. + this._advanceBy(pattern.length - 1); + return true; + } + return false; + } + //Token creation + _createStartTagToken() { + this.currentToken = { + type: token.TokenType.START_TAG, + tagName: '', + tagID: html.TAG_ID.UNKNOWN, + selfClosing: false, + ackSelfClosing: false, + attrs: [], + location: this.getCurrentLocation(1), + }; + } + _createEndTagToken() { + this.currentToken = { + type: token.TokenType.END_TAG, + tagName: '', + tagID: html.TAG_ID.UNKNOWN, + selfClosing: false, + ackSelfClosing: false, + attrs: [], + location: this.getCurrentLocation(2), + }; + } + _createCommentToken(offset) { + this.currentToken = { + type: token.TokenType.COMMENT, + data: '', + location: this.getCurrentLocation(offset), + }; + } + _createDoctypeToken(initialName) { + this.currentToken = { + type: token.TokenType.DOCTYPE, + name: initialName, + forceQuirks: false, + publicId: null, + systemId: null, + location: this.currentLocation, + }; + } + _createCharacterToken(type, chars) { + this.currentCharacterToken = { + type, + chars, + location: this.currentLocation, + }; + } + //Tag attributes + _createAttr(attrNameFirstCh) { + this.currentAttr = { + name: attrNameFirstCh, + value: '', + }; + this.currentLocation = this.getCurrentLocation(0); + } + _leaveAttrName() { + var _a; + var _b; + const token$1 = this.currentToken; + if ((0, token.getTokenAttr)(token$1, this.currentAttr.name) === null) { + token$1.attrs.push(this.currentAttr); + if (token$1.location && this.currentLocation) { + const attrLocations = ((_a = (_b = token$1.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null))); + attrLocations[this.currentAttr.name] = this.currentLocation; + // Set end location + this._leaveAttrValue(); + } + } + else { + this._err(errorCodes.ERR.duplicateAttribute); + } + } + _leaveAttrValue() { + if (this.currentLocation) { + this.currentLocation.endLine = this.preprocessor.line; + this.currentLocation.endCol = this.preprocessor.col; + this.currentLocation.endOffset = this.preprocessor.offset; + } + } + //Token emission + prepareToken(ct) { + this._emitCurrentCharacterToken(ct.location); + this.currentToken = null; + if (ct.location) { + ct.location.endLine = this.preprocessor.line; + ct.location.endCol = this.preprocessor.col + 1; + ct.location.endOffset = this.preprocessor.offset + 1; + } + this.currentLocation = this.getCurrentLocation(-1); + } + emitCurrentTagToken() { + const ct = this.currentToken; + this.prepareToken(ct); + ct.tagID = (0, html.getTagID)(ct.tagName); + if (ct.type === token.TokenType.START_TAG) { + this.lastStartTagName = ct.tagName; + this.handler.onStartTag(ct); + } + else { + if (ct.attrs.length > 0) { + this._err(errorCodes.ERR.endTagWithAttributes); + } + if (ct.selfClosing) { + this._err(errorCodes.ERR.endTagWithTrailingSolidus); + } + this.handler.onEndTag(ct); + } + this.preprocessor.dropParsedChunk(); + } + emitCurrentComment(ct) { + this.prepareToken(ct); + this.handler.onComment(ct); + this.preprocessor.dropParsedChunk(); + } + emitCurrentDoctype(ct) { + this.prepareToken(ct); + this.handler.onDoctype(ct); + this.preprocessor.dropParsedChunk(); + } + _emitCurrentCharacterToken(nextLocation) { + if (this.currentCharacterToken) { + //NOTE: if we have a pending character token, make it's end location equal to the + //current token's start location. + if (nextLocation && this.currentCharacterToken.location) { + this.currentCharacterToken.location.endLine = nextLocation.startLine; + this.currentCharacterToken.location.endCol = nextLocation.startCol; + this.currentCharacterToken.location.endOffset = nextLocation.startOffset; + } + switch (this.currentCharacterToken.type) { + case token.TokenType.CHARACTER: { + this.handler.onCharacter(this.currentCharacterToken); + break; + } + case token.TokenType.NULL_CHARACTER: { + this.handler.onNullCharacter(this.currentCharacterToken); + break; + } + case token.TokenType.WHITESPACE_CHARACTER: { + this.handler.onWhitespaceCharacter(this.currentCharacterToken); + break; + } + } + this.currentCharacterToken = null; + } + } + _emitEOFToken() { + const location = this.getCurrentLocation(0); + if (location) { + location.endLine = location.startLine; + location.endCol = location.startCol; + location.endOffset = location.startOffset; + } + this._emitCurrentCharacterToken(location); + this.handler.onEof({ type: token.TokenType.EOF, location }); + this.active = false; + } + //Characters emission + //OPTIMIZATION: specification uses only one type of character tokens (one token per character). + //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters. + //If we have a sequence of characters that belong to the same group, the parser can process it + //as a single solid character token. + //So, there are 3 types of character tokens in parse5: + //1)TokenType.NULL_CHARACTER - \u0000-character sequences (e.g. '\u0000\u0000\u0000') + //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\n \r\t \f') + //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^') + _appendCharToCurrentCharacterToken(type, ch) { + if (this.currentCharacterToken) { + if (this.currentCharacterToken.type !== type) { + this.currentLocation = this.getCurrentLocation(0); + this._emitCurrentCharacterToken(this.currentLocation); + this.preprocessor.dropParsedChunk(); + } + else { + this.currentCharacterToken.chars += ch; + return; + } + } + this._createCharacterToken(type, ch); + } + _emitCodePoint(cp) { + const type = isWhitespace(cp) + ? token.TokenType.WHITESPACE_CHARACTER + : cp === unicode.CODE_POINTS.NULL + ? token.TokenType.NULL_CHARACTER + : token.TokenType.CHARACTER; + this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp)); + } + //NOTE: used when we emit characters explicitly. + //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks. + _emitChars(ch) { + this._appendCharToCurrentCharacterToken(token.TokenType.CHARACTER, ch); + } + // Character reference helpers + _matchNamedCharacterReference(cp) { + let result = null; + let excess = 0; + let withoutSemicolon = false; + for (let i = 0, current = decode_js_1.htmlDecodeTree[0]; i >= 0; cp = this._consume()) { + i = (0, decode_js_1.determineBranch)(decode_js_1.htmlDecodeTree, current, i + 1, cp); + if (i < 0) + break; + excess += 1; + current = decode_js_1.htmlDecodeTree[i]; + const masked = current & decode_js_1.BinTrieFlags.VALUE_LENGTH; + // If the branch is a value, store it and continue + if (masked) { + // The mask is the number of bytes of the value, including the current byte. + const valueLength = (masked >> 14) - 1; + // Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error. + // See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state + if (cp !== unicode.CODE_POINTS.SEMICOLON && + this._isCharacterReferenceInAttribute() && + isEntityInAttributeInvalidEnd(this.preprocessor.peek(1))) { + //NOTE: we don't flush all consumed code points here, and instead switch back to the original state after + //emitting an ampersand. This is fine, as alphanumeric characters won't be parsed differently in attributes. + result = [unicode.CODE_POINTS.AMPERSAND]; + // Skip over the value. + i += valueLength; + } + else { + // If this is a surrogate pair, consume the next two bytes. + result = + valueLength === 0 + ? [decode_js_1.htmlDecodeTree[i] & ~decode_js_1.BinTrieFlags.VALUE_LENGTH] + : valueLength === 1 + ? [decode_js_1.htmlDecodeTree[++i]] + : [decode_js_1.htmlDecodeTree[++i], decode_js_1.htmlDecodeTree[++i]]; + excess = 0; + withoutSemicolon = cp !== unicode.CODE_POINTS.SEMICOLON; + } + if (valueLength === 0) { + // If the value is zero-length, we're done. + this._consume(); + break; + } + } + } + this._unconsume(excess); + if (withoutSemicolon && !this.preprocessor.endOfChunkHit) { + this._err(errorCodes.ERR.missingSemicolonAfterCharacterReference); + } + // We want to emit the error above on the code point after the entity. + // We always consume one code point too many in the loop, and we wait to + // unconsume it until after the error is emitted. + this._unconsume(1); + return result; + } + _isCharacterReferenceInAttribute() { + return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED || + this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED || + this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED); + } + _flushCodePointConsumedAsCharacterReference(cp) { + if (this._isCharacterReferenceInAttribute()) { + this.currentAttr.value += String.fromCodePoint(cp); + } + else { + this._emitCodePoint(cp); + } + } + // Calling states this way turns out to be much faster than any other approach. + _callState(cp) { + switch (this.state) { + case State.DATA: { + this._stateData(cp); + break; + } + case State.RCDATA: { + this._stateRcdata(cp); + break; + } + case State.RAWTEXT: { + this._stateRawtext(cp); + break; + } + case State.SCRIPT_DATA: { + this._stateScriptData(cp); + break; + } + case State.PLAINTEXT: { + this._statePlaintext(cp); + break; + } + case State.TAG_OPEN: { + this._stateTagOpen(cp); + break; + } + case State.END_TAG_OPEN: { + this._stateEndTagOpen(cp); + break; + } + case State.TAG_NAME: { + this._stateTagName(cp); + break; + } + case State.RCDATA_LESS_THAN_SIGN: { + this._stateRcdataLessThanSign(cp); + break; + } + case State.RCDATA_END_TAG_OPEN: { + this._stateRcdataEndTagOpen(cp); + break; + } + case State.RCDATA_END_TAG_NAME: { + this._stateRcdataEndTagName(cp); + break; + } + case State.RAWTEXT_LESS_THAN_SIGN: { + this._stateRawtextLessThanSign(cp); + break; + } + case State.RAWTEXT_END_TAG_OPEN: { + this._stateRawtextEndTagOpen(cp); + break; + } + case State.RAWTEXT_END_TAG_NAME: { + this._stateRawtextEndTagName(cp); + break; + } + case State.SCRIPT_DATA_LESS_THAN_SIGN: { + this._stateScriptDataLessThanSign(cp); + break; + } + case State.SCRIPT_DATA_END_TAG_OPEN: { + this._stateScriptDataEndTagOpen(cp); + break; + } + case State.SCRIPT_DATA_END_TAG_NAME: { + this._stateScriptDataEndTagName(cp); + break; + } + case State.SCRIPT_DATA_ESCAPE_START: { + this._stateScriptDataEscapeStart(cp); + break; + } + case State.SCRIPT_DATA_ESCAPE_START_DASH: { + this._stateScriptDataEscapeStartDash(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED: { + this._stateScriptDataEscaped(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_DASH: { + this._stateScriptDataEscapedDash(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_DASH_DASH: { + this._stateScriptDataEscapedDashDash(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: { + this._stateScriptDataEscapedLessThanSign(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: { + this._stateScriptDataEscapedEndTagOpen(cp); + break; + } + case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: { + this._stateScriptDataEscapedEndTagName(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: { + this._stateScriptDataDoubleEscapeStart(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPED: { + this._stateScriptDataDoubleEscaped(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: { + this._stateScriptDataDoubleEscapedDash(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: { + this._stateScriptDataDoubleEscapedDashDash(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: { + this._stateScriptDataDoubleEscapedLessThanSign(cp); + break; + } + case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: { + this._stateScriptDataDoubleEscapeEnd(cp); + break; + } + case State.BEFORE_ATTRIBUTE_NAME: { + this._stateBeforeAttributeName(cp); + break; + } + case State.ATTRIBUTE_NAME: { + this._stateAttributeName(cp); + break; + } + case State.AFTER_ATTRIBUTE_NAME: { + this._stateAfterAttributeName(cp); + break; + } + case State.BEFORE_ATTRIBUTE_VALUE: { + this._stateBeforeAttributeValue(cp); + break; + } + case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: { + this._stateAttributeValueDoubleQuoted(cp); + break; + } + case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: { + this._stateAttributeValueSingleQuoted(cp); + break; + } + case State.ATTRIBUTE_VALUE_UNQUOTED: { + this._stateAttributeValueUnquoted(cp); + break; + } + case State.AFTER_ATTRIBUTE_VALUE_QUOTED: { + this._stateAfterAttributeValueQuoted(cp); + break; + } + case State.SELF_CLOSING_START_TAG: { + this._stateSelfClosingStartTag(cp); + break; + } + case State.BOGUS_COMMENT: { + this._stateBogusComment(cp); + break; + } + case State.MARKUP_DECLARATION_OPEN: { + this._stateMarkupDeclarationOpen(cp); + break; + } + case State.COMMENT_START: { + this._stateCommentStart(cp); + break; + } + case State.COMMENT_START_DASH: { + this._stateCommentStartDash(cp); + break; + } + case State.COMMENT: { + this._stateComment(cp); + break; + } + case State.COMMENT_LESS_THAN_SIGN: { + this._stateCommentLessThanSign(cp); + break; + } + case State.COMMENT_LESS_THAN_SIGN_BANG: { + this._stateCommentLessThanSignBang(cp); + break; + } + case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: { + this._stateCommentLessThanSignBangDash(cp); + break; + } + case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: { + this._stateCommentLessThanSignBangDashDash(cp); + break; + } + case State.COMMENT_END_DASH: { + this._stateCommentEndDash(cp); + break; + } + case State.COMMENT_END: { + this._stateCommentEnd(cp); + break; + } + case State.COMMENT_END_BANG: { + this._stateCommentEndBang(cp); + break; + } + case State.DOCTYPE: { + this._stateDoctype(cp); + break; + } + case State.BEFORE_DOCTYPE_NAME: { + this._stateBeforeDoctypeName(cp); + break; + } + case State.DOCTYPE_NAME: { + this._stateDoctypeName(cp); + break; + } + case State.AFTER_DOCTYPE_NAME: { + this._stateAfterDoctypeName(cp); + break; + } + case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: { + this._stateAfterDoctypePublicKeyword(cp); + break; + } + case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: { + this._stateBeforeDoctypePublicIdentifier(cp); + break; + } + case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: { + this._stateDoctypePublicIdentifierDoubleQuoted(cp); + break; + } + case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: { + this._stateDoctypePublicIdentifierSingleQuoted(cp); + break; + } + case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: { + this._stateAfterDoctypePublicIdentifier(cp); + break; + } + case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: { + this._stateBetweenDoctypePublicAndSystemIdentifiers(cp); + break; + } + case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: { + this._stateAfterDoctypeSystemKeyword(cp); + break; + } + case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: { + this._stateBeforeDoctypeSystemIdentifier(cp); + break; + } + case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: { + this._stateDoctypeSystemIdentifierDoubleQuoted(cp); + break; + } + case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: { + this._stateDoctypeSystemIdentifierSingleQuoted(cp); + break; + } + case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: { + this._stateAfterDoctypeSystemIdentifier(cp); + break; + } + case State.BOGUS_DOCTYPE: { + this._stateBogusDoctype(cp); + break; + } + case State.CDATA_SECTION: { + this._stateCdataSection(cp); + break; + } + case State.CDATA_SECTION_BRACKET: { + this._stateCdataSectionBracket(cp); + break; + } + case State.CDATA_SECTION_END: { + this._stateCdataSectionEnd(cp); + break; + } + case State.CHARACTER_REFERENCE: { + this._stateCharacterReference(cp); + break; + } + case State.NAMED_CHARACTER_REFERENCE: { + this._stateNamedCharacterReference(cp); + break; + } + case State.AMBIGUOUS_AMPERSAND: { + this._stateAmbiguousAmpersand(cp); + break; + } + case State.NUMERIC_CHARACTER_REFERENCE: { + this._stateNumericCharacterReference(cp); + break; + } + case State.HEXADEMICAL_CHARACTER_REFERENCE_START: { + this._stateHexademicalCharacterReferenceStart(cp); + break; + } + case State.HEXADEMICAL_CHARACTER_REFERENCE: { + this._stateHexademicalCharacterReference(cp); + break; + } + case State.DECIMAL_CHARACTER_REFERENCE: { + this._stateDecimalCharacterReference(cp); + break; + } + case State.NUMERIC_CHARACTER_REFERENCE_END: { + this._stateNumericCharacterReferenceEnd(cp); + break; + } + default: { + throw new Error('Unknown state'); + } + } + } + // State machine + // Data state + //------------------------------------------------------------------ + _stateData(cp) { + switch (cp) { + case unicode.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.TAG_OPEN; + break; + } + case unicode.CODE_POINTS.AMPERSAND: { + this.returnState = State.DATA; + this.state = State.CHARACTER_REFERENCE; + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this._emitCodePoint(cp); + break; + } + case unicode.CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // RCDATA state + //------------------------------------------------------------------ + _stateRcdata(cp) { + switch (cp) { + case unicode.CODE_POINTS.AMPERSAND: { + this.returnState = State.RCDATA; + this.state = State.CHARACTER_REFERENCE; + break; + } + case unicode.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.RCDATA_LESS_THAN_SIGN; + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this._emitChars(unicode.REPLACEMENT_CHARACTER); + break; + } + case unicode.CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // RAWTEXT state + //------------------------------------------------------------------ + _stateRawtext(cp) { + switch (cp) { + case unicode.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.RAWTEXT_LESS_THAN_SIGN; + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this._emitChars(unicode.REPLACEMENT_CHARACTER); + break; + } + case unicode.CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // Script data state + //------------------------------------------------------------------ + _stateScriptData(cp) { + switch (cp) { + case unicode.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_LESS_THAN_SIGN; + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this._emitChars(unicode.REPLACEMENT_CHARACTER); + break; + } + case unicode.CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // PLAINTEXT state + //------------------------------------------------------------------ + _statePlaintext(cp) { + switch (cp) { + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this._emitChars(unicode.REPLACEMENT_CHARACTER); + break; + } + case unicode.CODE_POINTS.EOF: { + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // Tag open state + //------------------------------------------------------------------ + _stateTagOpen(cp) { + if (isAsciiLetter(cp)) { + this._createStartTagToken(); + this.state = State.TAG_NAME; + this._stateTagName(cp); + } + else + switch (cp) { + case unicode.CODE_POINTS.EXCLAMATION_MARK: { + this.state = State.MARKUP_DECLARATION_OPEN; + break; + } + case unicode.CODE_POINTS.SOLIDUS: { + this.state = State.END_TAG_OPEN; + break; + } + case unicode.CODE_POINTS.QUESTION_MARK: { + this._err(errorCodes.ERR.unexpectedQuestionMarkInsteadOfTagName); + this._createCommentToken(1); + this.state = State.BOGUS_COMMENT; + this._stateBogusComment(cp); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofBeforeTagName); + this._emitChars('<'); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes.ERR.invalidFirstCharacterOfTagName); + this._emitChars('<'); + this.state = State.DATA; + this._stateData(cp); + } + } + } + // End tag open state + //------------------------------------------------------------------ + _stateEndTagOpen(cp) { + if (isAsciiLetter(cp)) { + this._createEndTagToken(); + this.state = State.TAG_NAME; + this._stateTagName(cp); + } + else + switch (cp) { + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes.ERR.missingEndTagName); + this.state = State.DATA; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofBeforeTagName); + this._emitChars('</'); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes.ERR.invalidFirstCharacterOfTagName); + this._createCommentToken(2); + this.state = State.BOGUS_COMMENT; + this._stateBogusComment(cp); + } + } + } + // Tag name state + //------------------------------------------------------------------ + _stateTagName(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + this.state = State.BEFORE_ATTRIBUTE_NAME; + break; + } + case unicode.CODE_POINTS.SOLIDUS: { + this.state = State.SELF_CLOSING_START_TAG; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + token.tagName += unicode.REPLACEMENT_CHARACTER; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); + } + } + } + // RCDATA less-than sign state + //------------------------------------------------------------------ + _stateRcdataLessThanSign(cp) { + if (cp === unicode.CODE_POINTS.SOLIDUS) { + this.state = State.RCDATA_END_TAG_OPEN; + } + else { + this._emitChars('<'); + this.state = State.RCDATA; + this._stateRcdata(cp); + } + } + // RCDATA end tag open state + //------------------------------------------------------------------ + _stateRcdataEndTagOpen(cp) { + if (isAsciiLetter(cp)) { + this.state = State.RCDATA_END_TAG_NAME; + this._stateRcdataEndTagName(cp); + } + else { + this._emitChars('</'); + this.state = State.RCDATA; + this._stateRcdata(cp); + } + } + handleSpecialEndTag(_cp) { + if (!this.preprocessor.startsWith(this.lastStartTagName, false)) { + return !this._ensureHibernation(); + } + this._createEndTagToken(); + const token = this.currentToken; + token.tagName = this.lastStartTagName; + const cp = this.preprocessor.peek(this.lastStartTagName.length); + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + this._advanceBy(this.lastStartTagName.length); + this.state = State.BEFORE_ATTRIBUTE_NAME; + return false; + } + case unicode.CODE_POINTS.SOLIDUS: { + this._advanceBy(this.lastStartTagName.length); + this.state = State.SELF_CLOSING_START_TAG; + return false; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._advanceBy(this.lastStartTagName.length); + this.emitCurrentTagToken(); + this.state = State.DATA; + return false; + } + default: { + return !this._ensureHibernation(); + } + } + } + // RCDATA end tag name state + //------------------------------------------------------------------ + _stateRcdataEndTagName(cp) { + if (this.handleSpecialEndTag(cp)) { + this._emitChars('</'); + this.state = State.RCDATA; + this._stateRcdata(cp); + } + } + // RAWTEXT less-than sign state + //------------------------------------------------------------------ + _stateRawtextLessThanSign(cp) { + if (cp === unicode.CODE_POINTS.SOLIDUS) { + this.state = State.RAWTEXT_END_TAG_OPEN; + } + else { + this._emitChars('<'); + this.state = State.RAWTEXT; + this._stateRawtext(cp); + } + } + // RAWTEXT end tag open state + //------------------------------------------------------------------ + _stateRawtextEndTagOpen(cp) { + if (isAsciiLetter(cp)) { + this.state = State.RAWTEXT_END_TAG_NAME; + this._stateRawtextEndTagName(cp); + } + else { + this._emitChars('</'); + this.state = State.RAWTEXT; + this._stateRawtext(cp); + } + } + // RAWTEXT end tag name state + //------------------------------------------------------------------ + _stateRawtextEndTagName(cp) { + if (this.handleSpecialEndTag(cp)) { + this._emitChars('</'); + this.state = State.RAWTEXT; + this._stateRawtext(cp); + } + } + // Script data less-than sign state + //------------------------------------------------------------------ + _stateScriptDataLessThanSign(cp) { + switch (cp) { + case unicode.CODE_POINTS.SOLIDUS: { + this.state = State.SCRIPT_DATA_END_TAG_OPEN; + break; + } + case unicode.CODE_POINTS.EXCLAMATION_MARK: { + this.state = State.SCRIPT_DATA_ESCAPE_START; + this._emitChars('<!'); + break; + } + default: { + this._emitChars('<'); + this.state = State.SCRIPT_DATA; + this._stateScriptData(cp); + } + } + } + // Script data end tag open state + //------------------------------------------------------------------ + _stateScriptDataEndTagOpen(cp) { + if (isAsciiLetter(cp)) { + this.state = State.SCRIPT_DATA_END_TAG_NAME; + this._stateScriptDataEndTagName(cp); + } + else { + this._emitChars('</'); + this.state = State.SCRIPT_DATA; + this._stateScriptData(cp); + } + } + // Script data end tag name state + //------------------------------------------------------------------ + _stateScriptDataEndTagName(cp) { + if (this.handleSpecialEndTag(cp)) { + this._emitChars('</'); + this.state = State.SCRIPT_DATA; + this._stateScriptData(cp); + } + } + // Script data escape start state + //------------------------------------------------------------------ + _stateScriptDataEscapeStart(cp) { + if (cp === unicode.CODE_POINTS.HYPHEN_MINUS) { + this.state = State.SCRIPT_DATA_ESCAPE_START_DASH; + this._emitChars('-'); + } + else { + this.state = State.SCRIPT_DATA; + this._stateScriptData(cp); + } + } + // Script data escape start dash state + //------------------------------------------------------------------ + _stateScriptDataEscapeStartDash(cp) { + if (cp === unicode.CODE_POINTS.HYPHEN_MINUS) { + this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH; + this._emitChars('-'); + } + else { + this.state = State.SCRIPT_DATA; + this._stateScriptData(cp); + } + } + // Script data escaped state + //------------------------------------------------------------------ + _stateScriptDataEscaped(cp) { + switch (cp) { + case unicode.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.SCRIPT_DATA_ESCAPED_DASH; + this._emitChars('-'); + break; + } + case unicode.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this._emitChars(unicode.REPLACEMENT_CHARACTER); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // Script data escaped dash state + //------------------------------------------------------------------ + _stateScriptDataEscapedDash(cp) { + switch (cp) { + case unicode.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH; + this._emitChars('-'); + break; + } + case unicode.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this.state = State.SCRIPT_DATA_ESCAPED; + this._emitChars(unicode.REPLACEMENT_CHARACTER); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + } + default: { + this.state = State.SCRIPT_DATA_ESCAPED; + this._emitCodePoint(cp); + } + } + } + // Script data escaped dash dash state + //------------------------------------------------------------------ + _stateScriptDataEscapedDashDash(cp) { + switch (cp) { + case unicode.CODE_POINTS.HYPHEN_MINUS: { + this._emitChars('-'); + break; + } + case unicode.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.SCRIPT_DATA; + this._emitChars('>'); + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this.state = State.SCRIPT_DATA_ESCAPED; + this._emitChars(unicode.REPLACEMENT_CHARACTER); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + } + default: { + this.state = State.SCRIPT_DATA_ESCAPED; + this._emitCodePoint(cp); + } + } + } + // Script data escaped less-than sign state + //------------------------------------------------------------------ + _stateScriptDataEscapedLessThanSign(cp) { + if (cp === unicode.CODE_POINTS.SOLIDUS) { + this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN; + } + else if (isAsciiLetter(cp)) { + this._emitChars('<'); + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START; + this._stateScriptDataDoubleEscapeStart(cp); + } + else { + this._emitChars('<'); + this.state = State.SCRIPT_DATA_ESCAPED; + this._stateScriptDataEscaped(cp); + } + } + // Script data escaped end tag open state + //------------------------------------------------------------------ + _stateScriptDataEscapedEndTagOpen(cp) { + if (isAsciiLetter(cp)) { + this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME; + this._stateScriptDataEscapedEndTagName(cp); + } + else { + this._emitChars('</'); + this.state = State.SCRIPT_DATA_ESCAPED; + this._stateScriptDataEscaped(cp); + } + } + // Script data escaped end tag name state + //------------------------------------------------------------------ + _stateScriptDataEscapedEndTagName(cp) { + if (this.handleSpecialEndTag(cp)) { + this._emitChars('</'); + this.state = State.SCRIPT_DATA_ESCAPED; + this._stateScriptDataEscaped(cp); + } + } + // Script data double escape start state + //------------------------------------------------------------------ + _stateScriptDataDoubleEscapeStart(cp) { + if (this.preprocessor.startsWith(unicode.SEQUENCES.SCRIPT, false) && + isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(unicode.SEQUENCES.SCRIPT.length))) { + this._emitCodePoint(cp); + for (let i = 0; i < unicode.SEQUENCES.SCRIPT.length; i++) { + this._emitCodePoint(this._consume()); + } + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + } + else if (!this._ensureHibernation()) { + this.state = State.SCRIPT_DATA_ESCAPED; + this._stateScriptDataEscaped(cp); + } + } + // Script data double escaped state + //------------------------------------------------------------------ + _stateScriptDataDoubleEscaped(cp) { + switch (cp) { + case unicode.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH; + this._emitChars('-'); + break; + } + case unicode.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; + this._emitChars('<'); + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this._emitChars(unicode.REPLACEMENT_CHARACTER); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // Script data double escaped dash state + //------------------------------------------------------------------ + _stateScriptDataDoubleEscapedDash(cp) { + switch (cp) { + case unicode.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH; + this._emitChars('-'); + break; + } + case unicode.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; + this._emitChars('<'); + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._emitChars(unicode.REPLACEMENT_CHARACTER); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + } + default: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._emitCodePoint(cp); + } + } + } + // Script data double escaped dash dash state + //------------------------------------------------------------------ + _stateScriptDataDoubleEscapedDashDash(cp) { + switch (cp) { + case unicode.CODE_POINTS.HYPHEN_MINUS: { + this._emitChars('-'); + break; + } + case unicode.CODE_POINTS.LESS_THAN_SIGN: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN; + this._emitChars('<'); + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.SCRIPT_DATA; + this._emitChars('>'); + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._emitChars(unicode.REPLACEMENT_CHARACTER); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInScriptHtmlCommentLikeText); + this._emitEOFToken(); + break; + } + default: { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._emitCodePoint(cp); + } + } + } + // Script data double escaped less-than sign state + //------------------------------------------------------------------ + _stateScriptDataDoubleEscapedLessThanSign(cp) { + if (cp === unicode.CODE_POINTS.SOLIDUS) { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END; + this._emitChars('/'); + } + else { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._stateScriptDataDoubleEscaped(cp); + } + } + // Script data double escape end state + //------------------------------------------------------------------ + _stateScriptDataDoubleEscapeEnd(cp) { + if (this.preprocessor.startsWith(unicode.SEQUENCES.SCRIPT, false) && + isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek(unicode.SEQUENCES.SCRIPT.length))) { + this._emitCodePoint(cp); + for (let i = 0; i < unicode.SEQUENCES.SCRIPT.length; i++) { + this._emitCodePoint(this._consume()); + } + this.state = State.SCRIPT_DATA_ESCAPED; + } + else if (!this._ensureHibernation()) { + this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED; + this._stateScriptDataDoubleEscaped(cp); + } + } + // Before attribute name state + //------------------------------------------------------------------ + _stateBeforeAttributeName(cp) { + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode.CODE_POINTS.SOLIDUS: + case unicode.CODE_POINTS.GREATER_THAN_SIGN: + case unicode.CODE_POINTS.EOF: { + this.state = State.AFTER_ATTRIBUTE_NAME; + this._stateAfterAttributeName(cp); + break; + } + case unicode.CODE_POINTS.EQUALS_SIGN: { + this._err(errorCodes.ERR.unexpectedEqualsSignBeforeAttributeName); + this._createAttr('='); + this.state = State.ATTRIBUTE_NAME; + break; + } + default: { + this._createAttr(''); + this.state = State.ATTRIBUTE_NAME; + this._stateAttributeName(cp); + } + } + } + // Attribute name state + //------------------------------------------------------------------ + _stateAttributeName(cp) { + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: + case unicode.CODE_POINTS.SOLIDUS: + case unicode.CODE_POINTS.GREATER_THAN_SIGN: + case unicode.CODE_POINTS.EOF: { + this._leaveAttrName(); + this.state = State.AFTER_ATTRIBUTE_NAME; + this._stateAfterAttributeName(cp); + break; + } + case unicode.CODE_POINTS.EQUALS_SIGN: { + this._leaveAttrName(); + this.state = State.BEFORE_ATTRIBUTE_VALUE; + break; + } + case unicode.CODE_POINTS.QUOTATION_MARK: + case unicode.CODE_POINTS.APOSTROPHE: + case unicode.CODE_POINTS.LESS_THAN_SIGN: { + this._err(errorCodes.ERR.unexpectedCharacterInAttributeName); + this.currentAttr.name += String.fromCodePoint(cp); + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this.currentAttr.name += unicode.REPLACEMENT_CHARACTER; + break; + } + default: { + this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); + } + } + } + // After attribute name state + //------------------------------------------------------------------ + _stateAfterAttributeName(cp) { + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode.CODE_POINTS.SOLIDUS: { + this.state = State.SELF_CLOSING_START_TAG; + break; + } + case unicode.CODE_POINTS.EQUALS_SIGN: { + this.state = State.BEFORE_ATTRIBUTE_VALUE; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this._createAttr(''); + this.state = State.ATTRIBUTE_NAME; + this._stateAttributeName(cp); + } + } + } + // Before attribute value state + //------------------------------------------------------------------ + _stateBeforeAttributeValue(cp) { + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode.CODE_POINTS.QUOTATION_MARK: { + this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED; + break; + } + case unicode.CODE_POINTS.APOSTROPHE: { + this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes.ERR.missingAttributeValue); + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + default: { + this.state = State.ATTRIBUTE_VALUE_UNQUOTED; + this._stateAttributeValueUnquoted(cp); + } + } + } + // Attribute value (double-quoted) state + //------------------------------------------------------------------ + _stateAttributeValueDoubleQuoted(cp) { + switch (cp) { + case unicode.CODE_POINTS.QUOTATION_MARK: { + this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED; + break; + } + case unicode.CODE_POINTS.AMPERSAND: { + this.returnState = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED; + this.state = State.CHARACTER_REFERENCE; + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this.currentAttr.value += unicode.REPLACEMENT_CHARACTER; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this.currentAttr.value += String.fromCodePoint(cp); + } + } + } + // Attribute value (single-quoted) state + //------------------------------------------------------------------ + _stateAttributeValueSingleQuoted(cp) { + switch (cp) { + case unicode.CODE_POINTS.APOSTROPHE: { + this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED; + break; + } + case unicode.CODE_POINTS.AMPERSAND: { + this.returnState = State.ATTRIBUTE_VALUE_SINGLE_QUOTED; + this.state = State.CHARACTER_REFERENCE; + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this.currentAttr.value += unicode.REPLACEMENT_CHARACTER; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this.currentAttr.value += String.fromCodePoint(cp); + } + } + } + // Attribute value (unquoted) state + //------------------------------------------------------------------ + _stateAttributeValueUnquoted(cp) { + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + this._leaveAttrValue(); + this.state = State.BEFORE_ATTRIBUTE_NAME; + break; + } + case unicode.CODE_POINTS.AMPERSAND: { + this.returnState = State.ATTRIBUTE_VALUE_UNQUOTED; + this.state = State.CHARACTER_REFERENCE; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._leaveAttrValue(); + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this.currentAttr.value += unicode.REPLACEMENT_CHARACTER; + break; + } + case unicode.CODE_POINTS.QUOTATION_MARK: + case unicode.CODE_POINTS.APOSTROPHE: + case unicode.CODE_POINTS.LESS_THAN_SIGN: + case unicode.CODE_POINTS.EQUALS_SIGN: + case unicode.CODE_POINTS.GRAVE_ACCENT: { + this._err(errorCodes.ERR.unexpectedCharacterInUnquotedAttributeValue); + this.currentAttr.value += String.fromCodePoint(cp); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this.currentAttr.value += String.fromCodePoint(cp); + } + } + } + // After attribute value (quoted) state + //------------------------------------------------------------------ + _stateAfterAttributeValueQuoted(cp) { + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + this._leaveAttrValue(); + this.state = State.BEFORE_ATTRIBUTE_NAME; + break; + } + case unicode.CODE_POINTS.SOLIDUS: { + this._leaveAttrValue(); + this.state = State.SELF_CLOSING_START_TAG; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._leaveAttrValue(); + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes.ERR.missingWhitespaceBetweenAttributes); + this.state = State.BEFORE_ATTRIBUTE_NAME; + this._stateBeforeAttributeName(cp); + } + } + } + // Self-closing start tag state + //------------------------------------------------------------------ + _stateSelfClosingStartTag(cp) { + switch (cp) { + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + const token = this.currentToken; + token.selfClosing = true; + this.state = State.DATA; + this.emitCurrentTagToken(); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInTag); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes.ERR.unexpectedSolidusInTag); + this.state = State.BEFORE_ATTRIBUTE_NAME; + this._stateBeforeAttributeName(cp); + } + } + } + // Bogus comment state + //------------------------------------------------------------------ + _stateBogusComment(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentComment(token); + break; + } + case unicode.CODE_POINTS.EOF: { + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + token.data += unicode.REPLACEMENT_CHARACTER; + break; + } + default: { + token.data += String.fromCodePoint(cp); + } + } + } + // Markup declaration open state + //------------------------------------------------------------------ + _stateMarkupDeclarationOpen(cp) { + if (this._consumeSequenceIfMatch(unicode.SEQUENCES.DASH_DASH, true)) { + this._createCommentToken(unicode.SEQUENCES.DASH_DASH.length + 1); + this.state = State.COMMENT_START; + } + else if (this._consumeSequenceIfMatch(unicode.SEQUENCES.DOCTYPE, false)) { + // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here. + this.currentLocation = this.getCurrentLocation(unicode.SEQUENCES.DOCTYPE.length + 1); + this.state = State.DOCTYPE; + } + else if (this._consumeSequenceIfMatch(unicode.SEQUENCES.CDATA_START, true)) { + if (this.inForeignNode) { + this.state = State.CDATA_SECTION; + } + else { + this._err(errorCodes.ERR.cdataInHtmlContent); + this._createCommentToken(unicode.SEQUENCES.CDATA_START.length + 1); + this.currentToken.data = '[CDATA['; + this.state = State.BOGUS_COMMENT; + } + } + //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup + //results are no longer valid and we will need to start over. + else if (!this._ensureHibernation()) { + this._err(errorCodes.ERR.incorrectlyOpenedComment); + this._createCommentToken(2); + this.state = State.BOGUS_COMMENT; + this._stateBogusComment(cp); + } + } + // Comment start state + //------------------------------------------------------------------ + _stateCommentStart(cp) { + switch (cp) { + case unicode.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.COMMENT_START_DASH; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes.ERR.abruptClosingOfEmptyComment); + this.state = State.DATA; + const token = this.currentToken; + this.emitCurrentComment(token); + break; + } + default: { + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment start dash state + //------------------------------------------------------------------ + _stateCommentStartDash(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.COMMENT_END; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes.ERR.abruptClosingOfEmptyComment); + this.state = State.DATA; + this.emitCurrentComment(token); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += '-'; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment state + //------------------------------------------------------------------ + _stateComment(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.COMMENT_END_DASH; + break; + } + case unicode.CODE_POINTS.LESS_THAN_SIGN: { + token.data += '<'; + this.state = State.COMMENT_LESS_THAN_SIGN; + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + token.data += unicode.REPLACEMENT_CHARACTER; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += String.fromCodePoint(cp); + } + } + } + // Comment less-than sign state + //------------------------------------------------------------------ + _stateCommentLessThanSign(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.EXCLAMATION_MARK: { + token.data += '!'; + this.state = State.COMMENT_LESS_THAN_SIGN_BANG; + break; + } + case unicode.CODE_POINTS.LESS_THAN_SIGN: { + token.data += '<'; + break; + } + default: { + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment less-than sign bang state + //------------------------------------------------------------------ + _stateCommentLessThanSignBang(cp) { + if (cp === unicode.CODE_POINTS.HYPHEN_MINUS) { + this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH; + } + else { + this.state = State.COMMENT; + this._stateComment(cp); + } + } + // Comment less-than sign bang dash state + //------------------------------------------------------------------ + _stateCommentLessThanSignBangDash(cp) { + if (cp === unicode.CODE_POINTS.HYPHEN_MINUS) { + this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH; + } + else { + this.state = State.COMMENT_END_DASH; + this._stateCommentEndDash(cp); + } + } + // Comment less-than sign bang dash dash state + //------------------------------------------------------------------ + _stateCommentLessThanSignBangDashDash(cp) { + if (cp !== unicode.CODE_POINTS.GREATER_THAN_SIGN && cp !== unicode.CODE_POINTS.EOF) { + this._err(errorCodes.ERR.nestedComment); + } + this.state = State.COMMENT_END; + this._stateCommentEnd(cp); + } + // Comment end dash state + //------------------------------------------------------------------ + _stateCommentEndDash(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.HYPHEN_MINUS: { + this.state = State.COMMENT_END; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += '-'; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment end state + //------------------------------------------------------------------ + _stateCommentEnd(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentComment(token); + break; + } + case unicode.CODE_POINTS.EXCLAMATION_MARK: { + this.state = State.COMMENT_END_BANG; + break; + } + case unicode.CODE_POINTS.HYPHEN_MINUS: { + token.data += '-'; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += '--'; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // Comment end bang state + //------------------------------------------------------------------ + _stateCommentEndBang(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.HYPHEN_MINUS: { + token.data += '--!'; + this.state = State.COMMENT_END_DASH; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes.ERR.incorrectlyClosedComment); + this.state = State.DATA; + this.emitCurrentComment(token); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInComment); + this.emitCurrentComment(token); + this._emitEOFToken(); + break; + } + default: { + token.data += '--!'; + this.state = State.COMMENT; + this._stateComment(cp); + } + } + } + // DOCTYPE state + //------------------------------------------------------------------ + _stateDoctype(cp) { + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + this.state = State.BEFORE_DOCTYPE_NAME; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.BEFORE_DOCTYPE_NAME; + this._stateBeforeDoctypeName(cp); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + this._createDoctypeToken(null); + const token = this.currentToken; + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes.ERR.missingWhitespaceBeforeDoctypeName); + this.state = State.BEFORE_DOCTYPE_NAME; + this._stateBeforeDoctypeName(cp); + } + } + } + // Before DOCTYPE name state + //------------------------------------------------------------------ + _stateBeforeDoctypeName(cp) { + if (isAsciiUpper(cp)) { + this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp))); + this.state = State.DOCTYPE_NAME; + } + else + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + this._createDoctypeToken(unicode.REPLACEMENT_CHARACTER); + this.state = State.DOCTYPE_NAME; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes.ERR.missingDoctypeName); + this._createDoctypeToken(null); + const token = this.currentToken; + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + this._createDoctypeToken(null); + const token = this.currentToken; + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._createDoctypeToken(String.fromCodePoint(cp)); + this.state = State.DOCTYPE_NAME; + } + } + } + // DOCTYPE name state + //------------------------------------------------------------------ + _stateDoctypeName(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + this.state = State.AFTER_DOCTYPE_NAME; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + token.name += unicode.REPLACEMENT_CHARACTER; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp); + } + } + } + // After DOCTYPE name state + //------------------------------------------------------------------ + _stateAfterDoctypeName(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + if (this._consumeSequenceIfMatch(unicode.SEQUENCES.PUBLIC, false)) { + this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD; + } + else if (this._consumeSequenceIfMatch(unicode.SEQUENCES.SYSTEM, false)) { + this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD; + } + //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup + //results are no longer valid and we will need to start over. + else if (!this._ensureHibernation()) { + this._err(errorCodes.ERR.invalidCharacterSequenceAfterDoctypeName); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + } + // After DOCTYPE public keyword state + //------------------------------------------------------------------ + _stateAfterDoctypePublicKeyword(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER; + break; + } + case unicode.CODE_POINTS.QUOTATION_MARK: { + this._err(errorCodes.ERR.missingWhitespaceAfterDoctypePublicKeyword); + token.publicId = ''; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case unicode.CODE_POINTS.APOSTROPHE: { + this._err(errorCodes.ERR.missingWhitespaceAfterDoctypePublicKeyword); + token.publicId = ''; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes.ERR.missingDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes.ERR.missingQuoteBeforeDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // Before DOCTYPE public identifier state + //------------------------------------------------------------------ + _stateBeforeDoctypePublicIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode.CODE_POINTS.QUOTATION_MARK: { + token.publicId = ''; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case unicode.CODE_POINTS.APOSTROPHE: { + token.publicId = ''; + this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes.ERR.missingDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes.ERR.missingQuoteBeforeDoctypePublicIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // DOCTYPE public identifier (double-quoted) state + //------------------------------------------------------------------ + _stateDoctypePublicIdentifierDoubleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.QUOTATION_MARK: { + this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + token.publicId += unicode.REPLACEMENT_CHARACTER; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes.ERR.abruptDoctypePublicIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.publicId += String.fromCodePoint(cp); + } + } + } + // DOCTYPE public identifier (single-quoted) state + //------------------------------------------------------------------ + _stateDoctypePublicIdentifierSingleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.APOSTROPHE: { + this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER; + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + token.publicId += unicode.REPLACEMENT_CHARACTER; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes.ERR.abruptDoctypePublicIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.publicId += String.fromCodePoint(cp); + } + } + } + // After DOCTYPE public identifier state + //------------------------------------------------------------------ + _stateAfterDoctypePublicIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case unicode.CODE_POINTS.QUOTATION_MARK: { + this._err(errorCodes.ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case unicode.CODE_POINTS.APOSTROPHE: { + this._err(errorCodes.ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers); + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes.ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // Between DOCTYPE public and system identifiers state + //------------------------------------------------------------------ + _stateBetweenDoctypePublicAndSystemIdentifiers(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode.CODE_POINTS.QUOTATION_MARK: { + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case unicode.CODE_POINTS.APOSTROPHE: { + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes.ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // After DOCTYPE system keyword state + //------------------------------------------------------------------ + _stateAfterDoctypeSystemKeyword(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER; + break; + } + case unicode.CODE_POINTS.QUOTATION_MARK: { + this._err(errorCodes.ERR.missingWhitespaceAfterDoctypeSystemKeyword); + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case unicode.CODE_POINTS.APOSTROPHE: { + this._err(errorCodes.ERR.missingWhitespaceAfterDoctypeSystemKeyword); + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes.ERR.missingDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes.ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // Before DOCTYPE system identifier state + //------------------------------------------------------------------ + _stateBeforeDoctypeSystemIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode.CODE_POINTS.QUOTATION_MARK: { + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED; + break; + } + case unicode.CODE_POINTS.APOSTROPHE: { + token.systemId = ''; + this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes.ERR.missingDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.DATA; + this.emitCurrentDoctype(token); + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes.ERR.missingQuoteBeforeDoctypeSystemIdentifier); + token.forceQuirks = true; + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // DOCTYPE system identifier (double-quoted) state + //------------------------------------------------------------------ + _stateDoctypeSystemIdentifierDoubleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.QUOTATION_MARK: { + this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + token.systemId += unicode.REPLACEMENT_CHARACTER; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes.ERR.abruptDoctypeSystemIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.systemId += String.fromCodePoint(cp); + } + } + } + // DOCTYPE system identifier (single-quoted) state + //------------------------------------------------------------------ + _stateDoctypeSystemIdentifierSingleQuoted(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.APOSTROPHE: { + this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER; + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + token.systemId += unicode.REPLACEMENT_CHARACTER; + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this._err(errorCodes.ERR.abruptDoctypeSystemIdentifier); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + token.systemId += String.fromCodePoint(cp); + } + } + } + // After DOCTYPE system identifier state + //------------------------------------------------------------------ + _stateAfterDoctypeSystemIdentifier(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.SPACE: + case unicode.CODE_POINTS.LINE_FEED: + case unicode.CODE_POINTS.TABULATION: + case unicode.CODE_POINTS.FORM_FEED: { + // Ignore whitespace + break; + } + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInDoctype); + token.forceQuirks = true; + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + default: { + this._err(errorCodes.ERR.unexpectedCharacterAfterDoctypeSystemIdentifier); + this.state = State.BOGUS_DOCTYPE; + this._stateBogusDoctype(cp); + } + } + } + // Bogus DOCTYPE state + //------------------------------------------------------------------ + _stateBogusDoctype(cp) { + const token = this.currentToken; + switch (cp) { + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this.emitCurrentDoctype(token); + this.state = State.DATA; + break; + } + case unicode.CODE_POINTS.NULL: { + this._err(errorCodes.ERR.unexpectedNullCharacter); + break; + } + case unicode.CODE_POINTS.EOF: { + this.emitCurrentDoctype(token); + this._emitEOFToken(); + break; + } + // Do nothing + } + } + // CDATA section state + //------------------------------------------------------------------ + _stateCdataSection(cp) { + switch (cp) { + case unicode.CODE_POINTS.RIGHT_SQUARE_BRACKET: { + this.state = State.CDATA_SECTION_BRACKET; + break; + } + case unicode.CODE_POINTS.EOF: { + this._err(errorCodes.ERR.eofInCdata); + this._emitEOFToken(); + break; + } + default: { + this._emitCodePoint(cp); + } + } + } + // CDATA section bracket state + //------------------------------------------------------------------ + _stateCdataSectionBracket(cp) { + if (cp === unicode.CODE_POINTS.RIGHT_SQUARE_BRACKET) { + this.state = State.CDATA_SECTION_END; + } + else { + this._emitChars(']'); + this.state = State.CDATA_SECTION; + this._stateCdataSection(cp); + } + } + // CDATA section end state + //------------------------------------------------------------------ + _stateCdataSectionEnd(cp) { + switch (cp) { + case unicode.CODE_POINTS.GREATER_THAN_SIGN: { + this.state = State.DATA; + break; + } + case unicode.CODE_POINTS.RIGHT_SQUARE_BRACKET: { + this._emitChars(']'); + break; + } + default: { + this._emitChars(']]'); + this.state = State.CDATA_SECTION; + this._stateCdataSection(cp); + } + } + } + // Character reference state + //------------------------------------------------------------------ + _stateCharacterReference(cp) { + if (cp === unicode.CODE_POINTS.NUMBER_SIGN) { + this.state = State.NUMERIC_CHARACTER_REFERENCE; + } + else if (isAsciiAlphaNumeric(cp)) { + this.state = State.NAMED_CHARACTER_REFERENCE; + this._stateNamedCharacterReference(cp); + } + else { + this._flushCodePointConsumedAsCharacterReference(unicode.CODE_POINTS.AMPERSAND); + this._reconsumeInState(this.returnState, cp); + } + } + // Named character reference state + //------------------------------------------------------------------ + _stateNamedCharacterReference(cp) { + const matchResult = this._matchNamedCharacterReference(cp); + //NOTE: Matching can be abrupted by hibernation. In that case, match + //results are no longer valid and we will need to start over. + if (this._ensureHibernation()) ; + else if (matchResult) { + for (let i = 0; i < matchResult.length; i++) { + this._flushCodePointConsumedAsCharacterReference(matchResult[i]); + } + this.state = this.returnState; + } + else { + this._flushCodePointConsumedAsCharacterReference(unicode.CODE_POINTS.AMPERSAND); + this.state = State.AMBIGUOUS_AMPERSAND; + } + } + // Ambiguos ampersand state + //------------------------------------------------------------------ + _stateAmbiguousAmpersand(cp) { + if (isAsciiAlphaNumeric(cp)) { + this._flushCodePointConsumedAsCharacterReference(cp); + } + else { + if (cp === unicode.CODE_POINTS.SEMICOLON) { + this._err(errorCodes.ERR.unknownNamedCharacterReference); + } + this._reconsumeInState(this.returnState, cp); + } + } + // Numeric character reference state + //------------------------------------------------------------------ + _stateNumericCharacterReference(cp) { + this.charRefCode = 0; + if (cp === unicode.CODE_POINTS.LATIN_SMALL_X || cp === unicode.CODE_POINTS.LATIN_CAPITAL_X) { + this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START; + } + // Inlined decimal character reference start state + else if (isAsciiDigit(cp)) { + this.state = State.DECIMAL_CHARACTER_REFERENCE; + this._stateDecimalCharacterReference(cp); + } + else { + this._err(errorCodes.ERR.absenceOfDigitsInNumericCharacterReference); + this._flushCodePointConsumedAsCharacterReference(unicode.CODE_POINTS.AMPERSAND); + this._flushCodePointConsumedAsCharacterReference(unicode.CODE_POINTS.NUMBER_SIGN); + this._reconsumeInState(this.returnState, cp); + } + } + // Hexademical character reference start state + //------------------------------------------------------------------ + _stateHexademicalCharacterReferenceStart(cp) { + if (isAsciiHexDigit(cp)) { + this.state = State.HEXADEMICAL_CHARACTER_REFERENCE; + this._stateHexademicalCharacterReference(cp); + } + else { + this._err(errorCodes.ERR.absenceOfDigitsInNumericCharacterReference); + this._flushCodePointConsumedAsCharacterReference(unicode.CODE_POINTS.AMPERSAND); + this._flushCodePointConsumedAsCharacterReference(unicode.CODE_POINTS.NUMBER_SIGN); + this._unconsume(2); + this.state = this.returnState; + } + } + // Hexademical character reference state + //------------------------------------------------------------------ + _stateHexademicalCharacterReference(cp) { + if (isAsciiUpperHexDigit(cp)) { + this.charRefCode = this.charRefCode * 16 + cp - 0x37; + } + else if (isAsciiLowerHexDigit(cp)) { + this.charRefCode = this.charRefCode * 16 + cp - 0x57; + } + else if (isAsciiDigit(cp)) { + this.charRefCode = this.charRefCode * 16 + cp - 0x30; + } + else if (cp === unicode.CODE_POINTS.SEMICOLON) { + this.state = State.NUMERIC_CHARACTER_REFERENCE_END; + } + else { + this._err(errorCodes.ERR.missingSemicolonAfterCharacterReference); + this.state = State.NUMERIC_CHARACTER_REFERENCE_END; + this._stateNumericCharacterReferenceEnd(cp); + } + } + // Decimal character reference state + //------------------------------------------------------------------ + _stateDecimalCharacterReference(cp) { + if (isAsciiDigit(cp)) { + this.charRefCode = this.charRefCode * 10 + cp - 0x30; + } + else if (cp === unicode.CODE_POINTS.SEMICOLON) { + this.state = State.NUMERIC_CHARACTER_REFERENCE_END; + } + else { + this._err(errorCodes.ERR.missingSemicolonAfterCharacterReference); + this.state = State.NUMERIC_CHARACTER_REFERENCE_END; + this._stateNumericCharacterReferenceEnd(cp); + } + } + // Numeric character reference end state + //------------------------------------------------------------------ + _stateNumericCharacterReferenceEnd(cp) { + if (this.charRefCode === unicode.CODE_POINTS.NULL) { + this._err(errorCodes.ERR.nullCharacterReference); + this.charRefCode = unicode.CODE_POINTS.REPLACEMENT_CHARACTER; + } + else if (this.charRefCode > 1114111) { + this._err(errorCodes.ERR.characterReferenceOutsideUnicodeRange); + this.charRefCode = unicode.CODE_POINTS.REPLACEMENT_CHARACTER; + } + else if ((0, unicode.isSurrogate)(this.charRefCode)) { + this._err(errorCodes.ERR.surrogateCharacterReference); + this.charRefCode = unicode.CODE_POINTS.REPLACEMENT_CHARACTER; + } + else if ((0, unicode.isUndefinedCodePoint)(this.charRefCode)) { + this._err(errorCodes.ERR.noncharacterCharacterReference); + } + else if ((0, unicode.isControlCodePoint)(this.charRefCode) || this.charRefCode === unicode.CODE_POINTS.CARRIAGE_RETURN) { + this._err(errorCodes.ERR.controlCharacterReference); + const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode); + if (replacement !== undefined) { + this.charRefCode = replacement; + } + } + this._flushCodePointConsumedAsCharacterReference(this.charRefCode); + this._reconsumeInState(this.returnState, cp); + } +} +exports.Tokenizer = Tokenizer; + +}); + +var openElementStack = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.OpenElementStack = void 0; + +//Element utils +const IMPLICIT_END_TAG_REQUIRED = new Set([html.TAG_ID.DD, html.TAG_ID.DT, html.TAG_ID.LI, html.TAG_ID.OPTGROUP, html.TAG_ID.OPTION, html.TAG_ID.P, html.TAG_ID.RB, html.TAG_ID.RP, html.TAG_ID.RT, html.TAG_ID.RTC]); +const IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([ + ...IMPLICIT_END_TAG_REQUIRED, + html.TAG_ID.CAPTION, + html.TAG_ID.COLGROUP, + html.TAG_ID.TBODY, + html.TAG_ID.TD, + html.TAG_ID.TFOOT, + html.TAG_ID.TH, + html.TAG_ID.THEAD, + html.TAG_ID.TR, +]); +const SCOPING_ELEMENT_NS = new Map([ + [html.TAG_ID.APPLET, html.NS.HTML], + [html.TAG_ID.CAPTION, html.NS.HTML], + [html.TAG_ID.HTML, html.NS.HTML], + [html.TAG_ID.MARQUEE, html.NS.HTML], + [html.TAG_ID.OBJECT, html.NS.HTML], + [html.TAG_ID.TABLE, html.NS.HTML], + [html.TAG_ID.TD, html.NS.HTML], + [html.TAG_ID.TEMPLATE, html.NS.HTML], + [html.TAG_ID.TH, html.NS.HTML], + [html.TAG_ID.ANNOTATION_XML, html.NS.MATHML], + [html.TAG_ID.MI, html.NS.MATHML], + [html.TAG_ID.MN, html.NS.MATHML], + [html.TAG_ID.MO, html.NS.MATHML], + [html.TAG_ID.MS, html.NS.MATHML], + [html.TAG_ID.MTEXT, html.NS.MATHML], + [html.TAG_ID.DESC, html.NS.SVG], + [html.TAG_ID.FOREIGN_OBJECT, html.NS.SVG], + [html.TAG_ID.TITLE, html.NS.SVG], +]); +const NAMED_HEADERS = [html.TAG_ID.H1, html.TAG_ID.H2, html.TAG_ID.H3, html.TAG_ID.H4, html.TAG_ID.H5, html.TAG_ID.H6]; +const TABLE_ROW_CONTEXT = [html.TAG_ID.TR, html.TAG_ID.TEMPLATE, html.TAG_ID.HTML]; +const TABLE_BODY_CONTEXT = [html.TAG_ID.TBODY, html.TAG_ID.TFOOT, html.TAG_ID.THEAD, html.TAG_ID.TEMPLATE, html.TAG_ID.HTML]; +const TABLE_CONTEXT = [html.TAG_ID.TABLE, html.TAG_ID.TEMPLATE, html.TAG_ID.HTML]; +const TABLE_CELLS = [html.TAG_ID.TD, html.TAG_ID.TH]; +//Stack of open elements +class OpenElementStack { + get currentTmplContentOrNode() { + return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current; + } + constructor(document, treeAdapter, handler) { + this.treeAdapter = treeAdapter; + this.handler = handler; + this.items = []; + this.tagIDs = []; + this.stackTop = -1; + this.tmplCount = 0; + this.currentTagId = html.TAG_ID.UNKNOWN; + this.current = document; + } + //Index of element + _indexOf(element) { + return this.items.lastIndexOf(element, this.stackTop); + } + //Update current element + _isInTemplate() { + return this.currentTagId === html.TAG_ID.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === html.NS.HTML; + } + _updateCurrentElement() { + this.current = this.items[this.stackTop]; + this.currentTagId = this.tagIDs[this.stackTop]; + } + //Mutations + push(element, tagID) { + this.stackTop++; + this.items[this.stackTop] = element; + this.current = element; + this.tagIDs[this.stackTop] = tagID; + this.currentTagId = tagID; + if (this._isInTemplate()) { + this.tmplCount++; + } + this.handler.onItemPush(element, tagID, true); + } + pop() { + const popped = this.current; + if (this.tmplCount > 0 && this._isInTemplate()) { + this.tmplCount--; + } + this.stackTop--; + this._updateCurrentElement(); + this.handler.onItemPop(popped, true); + } + replace(oldElement, newElement) { + const idx = this._indexOf(oldElement); + this.items[idx] = newElement; + if (idx === this.stackTop) { + this.current = newElement; + } + } + insertAfter(referenceElement, newElement, newElementID) { + const insertionIdx = this._indexOf(referenceElement) + 1; + this.items.splice(insertionIdx, 0, newElement); + this.tagIDs.splice(insertionIdx, 0, newElementID); + this.stackTop++; + if (insertionIdx === this.stackTop) { + this._updateCurrentElement(); + } + this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop); + } + popUntilTagNamePopped(tagName) { + let targetIdx = this.stackTop + 1; + do { + targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1); + } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== html.NS.HTML); + this.shortenToLength(targetIdx < 0 ? 0 : targetIdx); + } + shortenToLength(idx) { + while (this.stackTop >= idx) { + const popped = this.current; + if (this.tmplCount > 0 && this._isInTemplate()) { + this.tmplCount -= 1; + } + this.stackTop--; + this._updateCurrentElement(); + this.handler.onItemPop(popped, this.stackTop < idx); + } + } + popUntilElementPopped(element) { + const idx = this._indexOf(element); + this.shortenToLength(idx < 0 ? 0 : idx); + } + popUntilPopped(tagNames, targetNS) { + const idx = this._indexOfTagNames(tagNames, targetNS); + this.shortenToLength(idx < 0 ? 0 : idx); + } + popUntilNumberedHeaderPopped() { + this.popUntilPopped(NAMED_HEADERS, html.NS.HTML); + } + popUntilTableCellPopped() { + this.popUntilPopped(TABLE_CELLS, html.NS.HTML); + } + popAllUpToHtmlElement() { + //NOTE: here we assume that the root <html> element is always first in the open element stack, so + //we perform this fast stack clean up. + this.tmplCount = 0; + this.shortenToLength(1); + } + _indexOfTagNames(tagNames, namespace) { + for (let i = this.stackTop; i >= 0; i--) { + if (tagNames.includes(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) { + return i; + } + } + return -1; + } + clearBackTo(tagNames, targetNS) { + const idx = this._indexOfTagNames(tagNames, targetNS); + this.shortenToLength(idx + 1); + } + clearBackToTableContext() { + this.clearBackTo(TABLE_CONTEXT, html.NS.HTML); + } + clearBackToTableBodyContext() { + this.clearBackTo(TABLE_BODY_CONTEXT, html.NS.HTML); + } + clearBackToTableRowContext() { + this.clearBackTo(TABLE_ROW_CONTEXT, html.NS.HTML); + } + remove(element) { + const idx = this._indexOf(element); + if (idx >= 0) { + if (idx === this.stackTop) { + this.pop(); + } + else { + this.items.splice(idx, 1); + this.tagIDs.splice(idx, 1); + this.stackTop--; + this._updateCurrentElement(); + this.handler.onItemPop(element, false); + } + } + } + //Search + tryPeekProperlyNestedBodyElement() { + //Properly nested <body> element (should be second element in stack). + return this.stackTop >= 1 && this.tagIDs[1] === html.TAG_ID.BODY ? this.items[1] : null; + } + contains(element) { + return this._indexOf(element) > -1; + } + getCommonAncestor(element) { + const elementIdx = this._indexOf(element) - 1; + return elementIdx >= 0 ? this.items[elementIdx] : null; + } + isRootHtmlElementCurrent() { + return this.stackTop === 0 && this.tagIDs[0] === html.TAG_ID.HTML; + } + //Element in scope + hasInScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (tn === tagName && ns === html.NS.HTML) { + return true; + } + if (SCOPING_ELEMENT_NS.get(tn) === ns) { + return false; + } + } + return true; + } + hasNumberedHeaderInScope() { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if ((0, html.isNumberedHeader)(tn) && ns === html.NS.HTML) { + return true; + } + if (SCOPING_ELEMENT_NS.get(tn) === ns) { + return false; + } + } + return true; + } + hasInListItemScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (tn === tagName && ns === html.NS.HTML) { + return true; + } + if (((tn === html.TAG_ID.UL || tn === html.TAG_ID.OL) && ns === html.NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) { + return false; + } + } + return true; + } + hasInButtonScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (tn === tagName && ns === html.NS.HTML) { + return true; + } + if ((tn === html.TAG_ID.BUTTON && ns === html.NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) { + return false; + } + } + return true; + } + hasInTableScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (ns !== html.NS.HTML) { + continue; + } + if (tn === tagName) { + return true; + } + if (tn === html.TAG_ID.TABLE || tn === html.TAG_ID.TEMPLATE || tn === html.TAG_ID.HTML) { + return false; + } + } + return true; + } + hasTableBodyContextInTableScope() { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (ns !== html.NS.HTML) { + continue; + } + if (tn === html.TAG_ID.TBODY || tn === html.TAG_ID.THEAD || tn === html.TAG_ID.TFOOT) { + return true; + } + if (tn === html.TAG_ID.TABLE || tn === html.TAG_ID.HTML) { + return false; + } + } + return true; + } + hasInSelectScope(tagName) { + for (let i = this.stackTop; i >= 0; i--) { + const tn = this.tagIDs[i]; + const ns = this.treeAdapter.getNamespaceURI(this.items[i]); + if (ns !== html.NS.HTML) { + continue; + } + if (tn === tagName) { + return true; + } + if (tn !== html.TAG_ID.OPTION && tn !== html.TAG_ID.OPTGROUP) { + return false; + } + } + return true; + } + //Implied end tags + generateImpliedEndTags() { + while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) { + this.pop(); + } + } + generateImpliedEndTagsThoroughly() { + while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { + this.pop(); + } + } + generateImpliedEndTagsWithExclusion(exclusionId) { + while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) { + this.pop(); + } + } +} +exports.OpenElementStack = OpenElementStack; + +}); + +var formattingElementList = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FormattingElementList = exports.EntryType = void 0; +//Const +const NOAH_ARK_CAPACITY = 3; +var EntryType; +(function (EntryType) { + EntryType[EntryType["Marker"] = 0] = "Marker"; + EntryType[EntryType["Element"] = 1] = "Element"; +})(EntryType = exports.EntryType || (exports.EntryType = {})); +const MARKER = { type: EntryType.Marker }; +//List of formatting elements +class FormattingElementList { + constructor(treeAdapter) { + this.treeAdapter = treeAdapter; + this.entries = []; + this.bookmark = null; + } + //Noah Ark's condition + //OPTIMIZATION: at first we try to find possible candidates for exclusion using + //lightweight heuristics without thorough attributes check. + _getNoahArkConditionCandidates(newElement, neAttrs) { + const candidates = []; + const neAttrsLength = neAttrs.length; + const neTagName = this.treeAdapter.getTagName(newElement); + const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement); + for (let i = 0; i < this.entries.length; i++) { + const entry = this.entries[i]; + if (entry.type === EntryType.Marker) { + break; + } + const { element } = entry; + if (this.treeAdapter.getTagName(element) === neTagName && + this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) { + const elementAttrs = this.treeAdapter.getAttrList(element); + if (elementAttrs.length === neAttrsLength) { + candidates.push({ idx: i, attrs: elementAttrs }); + } + } + } + return candidates; + } + _ensureNoahArkCondition(newElement) { + if (this.entries.length < NOAH_ARK_CAPACITY) + return; + const neAttrs = this.treeAdapter.getAttrList(newElement); + const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs); + if (candidates.length < NOAH_ARK_CAPACITY) + return; + //NOTE: build attrs map for the new element, so we can perform fast lookups + const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value])); + let validCandidates = 0; + //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met + for (let i = 0; i < candidates.length; i++) { + const candidate = candidates[i]; + // We know that `candidate.attrs.length === neAttrs.length` + if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) { + validCandidates += 1; + if (validCandidates >= NOAH_ARK_CAPACITY) { + this.entries.splice(candidate.idx, 1); + } + } + } + } + //Mutations + insertMarker() { + this.entries.unshift(MARKER); + } + pushElement(element, token) { + this._ensureNoahArkCondition(element); + this.entries.unshift({ + type: EntryType.Element, + element, + token, + }); + } + insertElementAfterBookmark(element, token) { + const bookmarkIdx = this.entries.indexOf(this.bookmark); + this.entries.splice(bookmarkIdx, 0, { + type: EntryType.Element, + element, + token, + }); + } + removeEntry(entry) { + const entryIndex = this.entries.indexOf(entry); + if (entryIndex >= 0) { + this.entries.splice(entryIndex, 1); + } + } + /** + * Clears the list of formatting elements up to the last marker. + * + * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker + */ + clearToLastMarker() { + const markerIdx = this.entries.indexOf(MARKER); + if (markerIdx >= 0) { + this.entries.splice(0, markerIdx + 1); + } + else { + this.entries.length = 0; + } + } + //Search + getElementEntryInScopeWithTagName(tagName) { + const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName); + return entry && entry.type === EntryType.Element ? entry : null; + } + getElementEntry(element) { + return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element); + } +} +exports.FormattingElementList = FormattingElementList; + +}); + +var _default$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.defaultTreeAdapter = void 0; + +function createTextNode(value) { + return { + nodeName: '#text', + value, + parentNode: null, + }; +} +exports.defaultTreeAdapter = { + //Node construction + createDocument() { + return { + nodeName: '#document', + mode: html.DOCUMENT_MODE.NO_QUIRKS, + childNodes: [], + }; + }, + createDocumentFragment() { + return { + nodeName: '#document-fragment', + childNodes: [], + }; + }, + createElement(tagName, namespaceURI, attrs) { + return { + nodeName: tagName, + tagName, + attrs, + namespaceURI, + childNodes: [], + parentNode: null, + }; + }, + createCommentNode(data) { + return { + nodeName: '#comment', + data, + parentNode: null, + }; + }, + //Tree mutation + appendChild(parentNode, newNode) { + parentNode.childNodes.push(newNode); + newNode.parentNode = parentNode; + }, + insertBefore(parentNode, newNode, referenceNode) { + const insertionIdx = parentNode.childNodes.indexOf(referenceNode); + parentNode.childNodes.splice(insertionIdx, 0, newNode); + newNode.parentNode = parentNode; + }, + setTemplateContent(templateElement, contentElement) { + templateElement.content = contentElement; + }, + getTemplateContent(templateElement) { + return templateElement.content; + }, + setDocumentType(document, name, publicId, systemId) { + const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType'); + if (doctypeNode) { + doctypeNode.name = name; + doctypeNode.publicId = publicId; + doctypeNode.systemId = systemId; + } + else { + const node = { + nodeName: '#documentType', + name, + publicId, + systemId, + parentNode: null, + }; + exports.defaultTreeAdapter.appendChild(document, node); + } + }, + setDocumentMode(document, mode) { + document.mode = mode; + }, + getDocumentMode(document) { + return document.mode; + }, + detachNode(node) { + if (node.parentNode) { + const idx = node.parentNode.childNodes.indexOf(node); + node.parentNode.childNodes.splice(idx, 1); + node.parentNode = null; + } + }, + insertText(parentNode, text) { + if (parentNode.childNodes.length > 0) { + const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1]; + if (exports.defaultTreeAdapter.isTextNode(prevNode)) { + prevNode.value += text; + return; + } + } + exports.defaultTreeAdapter.appendChild(parentNode, createTextNode(text)); + }, + insertTextBefore(parentNode, text, referenceNode) { + const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1]; + if (prevNode && exports.defaultTreeAdapter.isTextNode(prevNode)) { + prevNode.value += text; + } + else { + exports.defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode); + } + }, + adoptAttributes(recipient, attrs) { + const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name)); + for (let j = 0; j < attrs.length; j++) { + if (!recipientAttrsMap.has(attrs[j].name)) { + recipient.attrs.push(attrs[j]); + } + } + }, + //Tree traversing + getFirstChild(node) { + return node.childNodes[0]; + }, + getChildNodes(node) { + return node.childNodes; + }, + getParentNode(node) { + return node.parentNode; + }, + getAttrList(element) { + return element.attrs; + }, + //Node data + getTagName(element) { + return element.tagName; + }, + getNamespaceURI(element) { + return element.namespaceURI; + }, + getTextNodeContent(textNode) { + return textNode.value; + }, + getCommentNodeContent(commentNode) { + return commentNode.data; + }, + getDocumentTypeNodeName(doctypeNode) { + return doctypeNode.name; + }, + getDocumentTypeNodePublicId(doctypeNode) { + return doctypeNode.publicId; + }, + getDocumentTypeNodeSystemId(doctypeNode) { + return doctypeNode.systemId; + }, + //Node types + isTextNode(node) { + return node.nodeName === '#text'; + }, + isCommentNode(node) { + return node.nodeName === '#comment'; + }, + isDocumentTypeNode(node) { + return node.nodeName === '#documentType'; + }, + isElementNode(node) { + return Object.prototype.hasOwnProperty.call(node, 'tagName'); + }, + // Source code location + setNodeSourceCodeLocation(node, location) { + node.sourceCodeLocation = location; + }, + getNodeSourceCodeLocation(node) { + return node.sourceCodeLocation; + }, + updateNodeSourceCodeLocation(node, endLocation) { + node.sourceCodeLocation = Object.assign(Object.assign({}, node.sourceCodeLocation), endLocation); + }, +}; + +}); + +var doctype = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getDocumentMode = exports.isConforming = void 0; + +//Const +const VALID_DOCTYPE_NAME = 'html'; +const VALID_SYSTEM_ID = 'about:legacy-compat'; +const QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd'; +const QUIRKS_MODE_PUBLIC_ID_PREFIXES = [ + '+//silmaril//dtd html pro v0r11 19970101//', + '-//as//dtd html 3.0 aswedit + extensions//', + '-//advasoft ltd//dtd html 3.0 aswedit + extensions//', + '-//ietf//dtd html 2.0 level 1//', + '-//ietf//dtd html 2.0 level 2//', + '-//ietf//dtd html 2.0 strict level 1//', + '-//ietf//dtd html 2.0 strict level 2//', + '-//ietf//dtd html 2.0 strict//', + '-//ietf//dtd html 2.0//', + '-//ietf//dtd html 2.1e//', + '-//ietf//dtd html 3.0//', + '-//ietf//dtd html 3.2 final//', + '-//ietf//dtd html 3.2//', + '-//ietf//dtd html 3//', + '-//ietf//dtd html level 0//', + '-//ietf//dtd html level 1//', + '-//ietf//dtd html level 2//', + '-//ietf//dtd html level 3//', + '-//ietf//dtd html strict level 0//', + '-//ietf//dtd html strict level 1//', + '-//ietf//dtd html strict level 2//', + '-//ietf//dtd html strict level 3//', + '-//ietf//dtd html strict//', + '-//ietf//dtd html//', + '-//metrius//dtd metrius presentational//', + '-//microsoft//dtd internet explorer 2.0 html strict//', + '-//microsoft//dtd internet explorer 2.0 html//', + '-//microsoft//dtd internet explorer 2.0 tables//', + '-//microsoft//dtd internet explorer 3.0 html strict//', + '-//microsoft//dtd internet explorer 3.0 html//', + '-//microsoft//dtd internet explorer 3.0 tables//', + '-//netscape comm. corp.//dtd html//', + '-//netscape comm. corp.//dtd strict html//', + "-//o'reilly and associates//dtd html 2.0//", + "-//o'reilly and associates//dtd html extended 1.0//", + "-//o'reilly and associates//dtd html extended relaxed 1.0//", + '-//sq//dtd html 2.0 hotmetal + extensions//', + '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//', + '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//', + '-//spyglass//dtd html 2.0 extended//', + '-//sun microsystems corp.//dtd hotjava html//', + '-//sun microsystems corp.//dtd hotjava strict html//', + '-//w3c//dtd html 3 1995-03-24//', + '-//w3c//dtd html 3.2 draft//', + '-//w3c//dtd html 3.2 final//', + '-//w3c//dtd html 3.2//', + '-//w3c//dtd html 3.2s draft//', + '-//w3c//dtd html 4.0 frameset//', + '-//w3c//dtd html 4.0 transitional//', + '-//w3c//dtd html experimental 19960712//', + '-//w3c//dtd html experimental 970421//', + '-//w3c//dtd w3 html//', + '-//w3o//dtd w3 html 3.0//', + '-//webtechs//dtd mozilla html 2.0//', + '-//webtechs//dtd mozilla html//', +]; +const QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ + ...QUIRKS_MODE_PUBLIC_ID_PREFIXES, + '-//w3c//dtd html 4.01 frameset//', + '-//w3c//dtd html 4.01 transitional//', +]; +const QUIRKS_MODE_PUBLIC_IDS = new Set([ + '-//w3o//dtd w3 html strict 3.0//en//', + '-/w3c/dtd html 4.0 transitional/en', + 'html', +]); +const LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//']; +const LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [ + ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES, + '-//w3c//dtd html 4.01 frameset//', + '-//w3c//dtd html 4.01 transitional//', +]; +//Utils +function hasPrefix(publicId, prefixes) { + return prefixes.some((prefix) => publicId.startsWith(prefix)); +} +//API +function isConforming(token) { + return (token.name === VALID_DOCTYPE_NAME && + token.publicId === null && + (token.systemId === null || token.systemId === VALID_SYSTEM_ID)); +} +exports.isConforming = isConforming; +function getDocumentMode(token) { + if (token.name !== VALID_DOCTYPE_NAME) { + return html.DOCUMENT_MODE.QUIRKS; + } + const { systemId } = token; + if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) { + return html.DOCUMENT_MODE.QUIRKS; + } + let { publicId } = token; + if (publicId !== null) { + publicId = publicId.toLowerCase(); + if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) { + return html.DOCUMENT_MODE.QUIRKS; + } + let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES; + if (hasPrefix(publicId, prefixes)) { + return html.DOCUMENT_MODE.QUIRKS; + } + prefixes = + systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES; + if (hasPrefix(publicId, prefixes)) { + return html.DOCUMENT_MODE.LIMITED_QUIRKS; + } + } + return html.DOCUMENT_MODE.NO_QUIRKS; +} +exports.getDocumentMode = getDocumentMode; + +}); + +var foreignContent = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isIntegrationPoint = exports.adjustTokenSVGTagName = exports.adjustTokenXMLAttrs = exports.adjustTokenSVGAttrs = exports.adjustTokenMathMLAttrs = exports.causesExit = exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = void 0; + +//MIME types +const MIME_TYPES = { + TEXT_HTML: 'text/html', + APPLICATION_XML: 'application/xhtml+xml', +}; +//Attributes +const DEFINITION_URL_ATTR = 'definitionurl'; +const ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL'; +const SVG_ATTRS_ADJUSTMENT_MAP = new Map([ + 'attributeName', + 'attributeType', + 'baseFrequency', + 'baseProfile', + 'calcMode', + 'clipPathUnits', + 'diffuseConstant', + 'edgeMode', + 'filterUnits', + 'glyphRef', + 'gradientTransform', + 'gradientUnits', + 'kernelMatrix', + 'kernelUnitLength', + 'keyPoints', + 'keySplines', + 'keyTimes', + 'lengthAdjust', + 'limitingConeAngle', + 'markerHeight', + 'markerUnits', + 'markerWidth', + 'maskContentUnits', + 'maskUnits', + 'numOctaves', + 'pathLength', + 'patternContentUnits', + 'patternTransform', + 'patternUnits', + 'pointsAtX', + 'pointsAtY', + 'pointsAtZ', + 'preserveAlpha', + 'preserveAspectRatio', + 'primitiveUnits', + 'refX', + 'refY', + 'repeatCount', + 'repeatDur', + 'requiredExtensions', + 'requiredFeatures', + 'specularConstant', + 'specularExponent', + 'spreadMethod', + 'startOffset', + 'stdDeviation', + 'stitchTiles', + 'surfaceScale', + 'systemLanguage', + 'tableValues', + 'targetX', + 'targetY', + 'textLength', + 'viewBox', + 'viewTarget', + 'xChannelSelector', + 'yChannelSelector', + 'zoomAndPan', +].map((attr) => [attr.toLowerCase(), attr])); +const XML_ATTRS_ADJUSTMENT_MAP = new Map([ + ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: html.NS.XLINK }], + ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: html.NS.XLINK }], + ['xlink:href', { prefix: 'xlink', name: 'href', namespace: html.NS.XLINK }], + ['xlink:role', { prefix: 'xlink', name: 'role', namespace: html.NS.XLINK }], + ['xlink:show', { prefix: 'xlink', name: 'show', namespace: html.NS.XLINK }], + ['xlink:title', { prefix: 'xlink', name: 'title', namespace: html.NS.XLINK }], + ['xlink:type', { prefix: 'xlink', name: 'type', namespace: html.NS.XLINK }], + ['xml:base', { prefix: 'xml', name: 'base', namespace: html.NS.XML }], + ['xml:lang', { prefix: 'xml', name: 'lang', namespace: html.NS.XML }], + ['xml:space', { prefix: 'xml', name: 'space', namespace: html.NS.XML }], + ['xmlns', { prefix: '', name: 'xmlns', namespace: html.NS.XMLNS }], + ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: html.NS.XMLNS }], +]); +//SVG tag names adjustment map +exports.SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([ + 'altGlyph', + 'altGlyphDef', + 'altGlyphItem', + 'animateColor', + 'animateMotion', + 'animateTransform', + 'clipPath', + 'feBlend', + 'feColorMatrix', + 'feComponentTransfer', + 'feComposite', + 'feConvolveMatrix', + 'feDiffuseLighting', + 'feDisplacementMap', + 'feDistantLight', + 'feFlood', + 'feFuncA', + 'feFuncB', + 'feFuncG', + 'feFuncR', + 'feGaussianBlur', + 'feImage', + 'feMerge', + 'feMergeNode', + 'feMorphology', + 'feOffset', + 'fePointLight', + 'feSpecularLighting', + 'feSpotLight', + 'feTile', + 'feTurbulence', + 'foreignObject', + 'glyphRef', + 'linearGradient', + 'radialGradient', + 'textPath', +].map((tn) => [tn.toLowerCase(), tn])); +//Tags that causes exit from foreign content +const EXITS_FOREIGN_CONTENT = new Set([ + html.TAG_ID.B, + html.TAG_ID.BIG, + html.TAG_ID.BLOCKQUOTE, + html.TAG_ID.BODY, + html.TAG_ID.BR, + html.TAG_ID.CENTER, + html.TAG_ID.CODE, + html.TAG_ID.DD, + html.TAG_ID.DIV, + html.TAG_ID.DL, + html.TAG_ID.DT, + html.TAG_ID.EM, + html.TAG_ID.EMBED, + html.TAG_ID.H1, + html.TAG_ID.H2, + html.TAG_ID.H3, + html.TAG_ID.H4, + html.TAG_ID.H5, + html.TAG_ID.H6, + html.TAG_ID.HEAD, + html.TAG_ID.HR, + html.TAG_ID.I, + html.TAG_ID.IMG, + html.TAG_ID.LI, + html.TAG_ID.LISTING, + html.TAG_ID.MENU, + html.TAG_ID.META, + html.TAG_ID.NOBR, + html.TAG_ID.OL, + html.TAG_ID.P, + html.TAG_ID.PRE, + html.TAG_ID.RUBY, + html.TAG_ID.S, + html.TAG_ID.SMALL, + html.TAG_ID.SPAN, + html.TAG_ID.STRONG, + html.TAG_ID.STRIKE, + html.TAG_ID.SUB, + html.TAG_ID.SUP, + html.TAG_ID.TABLE, + html.TAG_ID.TT, + html.TAG_ID.U, + html.TAG_ID.UL, + html.TAG_ID.VAR, +]); +//Check exit from foreign content +function causesExit(startTagToken) { + const tn = startTagToken.tagID; + const isFontWithAttrs = tn === html.TAG_ID.FONT && + startTagToken.attrs.some(({ name }) => name === html.ATTRS.COLOR || name === html.ATTRS.SIZE || name === html.ATTRS.FACE); + return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn); +} +exports.causesExit = causesExit; +//Token adjustments +function adjustTokenMathMLAttrs(token) { + for (let i = 0; i < token.attrs.length; i++) { + if (token.attrs[i].name === DEFINITION_URL_ATTR) { + token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR; + break; + } + } +} +exports.adjustTokenMathMLAttrs = adjustTokenMathMLAttrs; +function adjustTokenSVGAttrs(token) { + for (let i = 0; i < token.attrs.length; i++) { + const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); + if (adjustedAttrName != null) { + token.attrs[i].name = adjustedAttrName; + } + } +} +exports.adjustTokenSVGAttrs = adjustTokenSVGAttrs; +function adjustTokenXMLAttrs(token) { + for (let i = 0; i < token.attrs.length; i++) { + const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name); + if (adjustedAttrEntry) { + token.attrs[i].prefix = adjustedAttrEntry.prefix; + token.attrs[i].name = adjustedAttrEntry.name; + token.attrs[i].namespace = adjustedAttrEntry.namespace; + } + } +} +exports.adjustTokenXMLAttrs = adjustTokenXMLAttrs; +function adjustTokenSVGTagName(token) { + const adjustedTagName = exports.SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName); + if (adjustedTagName != null) { + token.tagName = adjustedTagName; + token.tagID = (0, html.getTagID)(token.tagName); + } +} +exports.adjustTokenSVGTagName = adjustTokenSVGTagName; +//Integration points +function isMathMLTextIntegrationPoint(tn, ns) { + return ns === html.NS.MATHML && (tn === html.TAG_ID.MI || tn === html.TAG_ID.MO || tn === html.TAG_ID.MN || tn === html.TAG_ID.MS || tn === html.TAG_ID.MTEXT); +} +function isHtmlIntegrationPoint(tn, ns, attrs) { + if (ns === html.NS.MATHML && tn === html.TAG_ID.ANNOTATION_XML) { + for (let i = 0; i < attrs.length; i++) { + if (attrs[i].name === html.ATTRS.ENCODING) { + const value = attrs[i].value.toLowerCase(); + return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML; + } + } + } + return ns === html.NS.SVG && (tn === html.TAG_ID.FOREIGN_OBJECT || tn === html.TAG_ID.DESC || tn === html.TAG_ID.TITLE); +} +function isIntegrationPoint(tn, ns, attrs, foreignNS) { + return (((!foreignNS || foreignNS === html.NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) || + ((!foreignNS || foreignNS === html.NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns))); +} +exports.isIntegrationPoint = isIntegrationPoint; + +}); + +var parser = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Parser = void 0; + + + + + + + + + + +//Misc constants +const HIDDEN_INPUT_TYPE = 'hidden'; +//Adoption agency loops iteration count +const AA_OUTER_LOOP_ITER = 8; +const AA_INNER_LOOP_ITER = 3; +//Insertion modes +var InsertionMode; +(function (InsertionMode) { + InsertionMode[InsertionMode["INITIAL"] = 0] = "INITIAL"; + InsertionMode[InsertionMode["BEFORE_HTML"] = 1] = "BEFORE_HTML"; + InsertionMode[InsertionMode["BEFORE_HEAD"] = 2] = "BEFORE_HEAD"; + InsertionMode[InsertionMode["IN_HEAD"] = 3] = "IN_HEAD"; + InsertionMode[InsertionMode["IN_HEAD_NO_SCRIPT"] = 4] = "IN_HEAD_NO_SCRIPT"; + InsertionMode[InsertionMode["AFTER_HEAD"] = 5] = "AFTER_HEAD"; + InsertionMode[InsertionMode["IN_BODY"] = 6] = "IN_BODY"; + InsertionMode[InsertionMode["TEXT"] = 7] = "TEXT"; + InsertionMode[InsertionMode["IN_TABLE"] = 8] = "IN_TABLE"; + InsertionMode[InsertionMode["IN_TABLE_TEXT"] = 9] = "IN_TABLE_TEXT"; + InsertionMode[InsertionMode["IN_CAPTION"] = 10] = "IN_CAPTION"; + InsertionMode[InsertionMode["IN_COLUMN_GROUP"] = 11] = "IN_COLUMN_GROUP"; + InsertionMode[InsertionMode["IN_TABLE_BODY"] = 12] = "IN_TABLE_BODY"; + InsertionMode[InsertionMode["IN_ROW"] = 13] = "IN_ROW"; + InsertionMode[InsertionMode["IN_CELL"] = 14] = "IN_CELL"; + InsertionMode[InsertionMode["IN_SELECT"] = 15] = "IN_SELECT"; + InsertionMode[InsertionMode["IN_SELECT_IN_TABLE"] = 16] = "IN_SELECT_IN_TABLE"; + InsertionMode[InsertionMode["IN_TEMPLATE"] = 17] = "IN_TEMPLATE"; + InsertionMode[InsertionMode["AFTER_BODY"] = 18] = "AFTER_BODY"; + InsertionMode[InsertionMode["IN_FRAMESET"] = 19] = "IN_FRAMESET"; + InsertionMode[InsertionMode["AFTER_FRAMESET"] = 20] = "AFTER_FRAMESET"; + InsertionMode[InsertionMode["AFTER_AFTER_BODY"] = 21] = "AFTER_AFTER_BODY"; + InsertionMode[InsertionMode["AFTER_AFTER_FRAMESET"] = 22] = "AFTER_AFTER_FRAMESET"; +})(InsertionMode || (InsertionMode = {})); +const BASE_LOC = { + startLine: -1, + startCol: -1, + startOffset: -1, + endLine: -1, + endCol: -1, + endOffset: -1, +}; +const TABLE_STRUCTURE_TAGS = new Set([html.TAG_ID.TABLE, html.TAG_ID.TBODY, html.TAG_ID.TFOOT, html.TAG_ID.THEAD, html.TAG_ID.TR]); +const defaultParserOptions = { + scriptingEnabled: true, + sourceCodeLocationInfo: false, + treeAdapter: _default$1.defaultTreeAdapter, + onParseError: null, +}; +//Parser +class Parser { + constructor(options, document, fragmentContext = null, scriptHandler = null) { + this.fragmentContext = fragmentContext; + this.scriptHandler = scriptHandler; + this.currentToken = null; + this.stopped = false; + this.insertionMode = InsertionMode.INITIAL; + this.originalInsertionMode = InsertionMode.INITIAL; + this.headElement = null; + this.formElement = null; + /** Indicates that the current node is not an element in the HTML namespace */ + this.currentNotInHTML = false; + /** + * The template insertion mode stack is maintained from the left. + * Ie. the topmost element will always have index 0. + */ + this.tmplInsertionModeStack = []; + this.pendingCharacterTokens = []; + this.hasNonWhitespacePendingCharacterToken = false; + this.framesetOk = true; + this.skipNextNewLine = false; + this.fosterParentingEnabled = false; + this.options = Object.assign(Object.assign({}, defaultParserOptions), options); + this.treeAdapter = this.options.treeAdapter; + this.onParseError = this.options.onParseError; + // Always enable location info if we report parse errors. + if (this.onParseError) { + this.options.sourceCodeLocationInfo = true; + } + this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument(); + this.tokenizer = new tokenizer.Tokenizer(this.options, this); + this.activeFormattingElements = new formattingElementList.FormattingElementList(this.treeAdapter); + this.fragmentContextID = fragmentContext ? (0, html.getTagID)(this.treeAdapter.getTagName(fragmentContext)) : html.TAG_ID.UNKNOWN; + this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID); + this.openElements = new openElementStack.OpenElementStack(this.document, this.treeAdapter, this); + } + // API + static parse(html, options) { + const parser = new this(options); + parser.tokenizer.write(html, true); + return parser.document; + } + static getFragmentParser(fragmentContext, options) { + const opts = Object.assign(Object.assign({}, defaultParserOptions), options); + //NOTE: use a <template> element as the fragment context if no context element was provided, + //so we will parse in a "forgiving" manner + fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(html.TAG_NAMES.TEMPLATE, html.NS.HTML, [])); + //NOTE: create a fake element which will be used as the `document` for fragment parsing. + //This is important for jsdom, where a new `document` cannot be created. This led to + //fragment parsing messing with the main `document`. + const documentMock = opts.treeAdapter.createElement('documentmock', html.NS.HTML, []); + const parser = new this(opts, documentMock, fragmentContext); + if (parser.fragmentContextID === html.TAG_ID.TEMPLATE) { + parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE); + } + parser._initTokenizerForFragmentParsing(); + parser._insertFakeRootElement(); + parser._resetInsertionMode(); + parser._findFormInFragmentContext(); + return parser; + } + getFragment() { + const rootElement = this.treeAdapter.getFirstChild(this.document); + const fragment = this.treeAdapter.createDocumentFragment(); + this._adoptNodes(rootElement, fragment); + return fragment; + } + //Errors + _err(token, code, beforeToken) { + var _a; + if (!this.onParseError) + return; + const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC; + const err = { + code, + startLine: loc.startLine, + startCol: loc.startCol, + startOffset: loc.startOffset, + endLine: beforeToken ? loc.startLine : loc.endLine, + endCol: beforeToken ? loc.startCol : loc.endCol, + endOffset: beforeToken ? loc.startOffset : loc.endOffset, + }; + this.onParseError(err); + } + //Stack events + onItemPush(node, tid, isTop) { + var _a, _b; + (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node); + if (isTop && this.openElements.stackTop > 0) + this._setContextModes(node, tid); + } + onItemPop(node, isTop) { + var _a, _b; + if (this.options.sourceCodeLocationInfo) { + this._setEndLocation(node, this.currentToken); + } + (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current); + if (isTop) { + let current; + let currentTagId; + if (this.openElements.stackTop === 0 && this.fragmentContext) { + current = this.fragmentContext; + currentTagId = this.fragmentContextID; + } + else { + ({ current, currentTagId } = this.openElements); + } + this._setContextModes(current, currentTagId); + } + } + _setContextModes(current, tid) { + const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === html.NS.HTML; + this.currentNotInHTML = !isHTML; + this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current); + } + _switchToTextParsing(currentToken, nextTokenizerState) { + this._insertElement(currentToken, html.NS.HTML); + this.tokenizer.state = nextTokenizerState; + this.originalInsertionMode = this.insertionMode; + this.insertionMode = InsertionMode.TEXT; + } + switchToPlaintextParsing() { + this.insertionMode = InsertionMode.TEXT; + this.originalInsertionMode = InsertionMode.IN_BODY; + this.tokenizer.state = tokenizer.TokenizerMode.PLAINTEXT; + } + //Fragment parsing + _getAdjustedCurrentElement() { + return this.openElements.stackTop === 0 && this.fragmentContext + ? this.fragmentContext + : this.openElements.current; + } + _findFormInFragmentContext() { + let node = this.fragmentContext; + while (node) { + if (this.treeAdapter.getTagName(node) === html.TAG_NAMES.FORM) { + this.formElement = node; + break; + } + node = this.treeAdapter.getParentNode(node); + } + } + _initTokenizerForFragmentParsing() { + if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== html.NS.HTML) { + return; + } + switch (this.fragmentContextID) { + case html.TAG_ID.TITLE: + case html.TAG_ID.TEXTAREA: { + this.tokenizer.state = tokenizer.TokenizerMode.RCDATA; + break; + } + case html.TAG_ID.STYLE: + case html.TAG_ID.XMP: + case html.TAG_ID.IFRAME: + case html.TAG_ID.NOEMBED: + case html.TAG_ID.NOFRAMES: + case html.TAG_ID.NOSCRIPT: { + this.tokenizer.state = tokenizer.TokenizerMode.RAWTEXT; + break; + } + case html.TAG_ID.SCRIPT: { + this.tokenizer.state = tokenizer.TokenizerMode.SCRIPT_DATA; + break; + } + case html.TAG_ID.PLAINTEXT: { + this.tokenizer.state = tokenizer.TokenizerMode.PLAINTEXT; + break; + } + // Do nothing + } + } + //Tree mutation + _setDocumentType(token) { + const name = token.name || ''; + const publicId = token.publicId || ''; + const systemId = token.systemId || ''; + this.treeAdapter.setDocumentType(this.document, name, publicId, systemId); + if (token.location) { + const documentChildren = this.treeAdapter.getChildNodes(this.document); + const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node)); + if (docTypeNode) { + this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location); + } + } + } + _attachElementToTree(element, location) { + if (this.options.sourceCodeLocationInfo) { + const loc = location && Object.assign(Object.assign({}, location), { startTag: location }); + this.treeAdapter.setNodeSourceCodeLocation(element, loc); + } + if (this._shouldFosterParentOnInsertion()) { + this._fosterParentElement(element); + } + else { + const parent = this.openElements.currentTmplContentOrNode; + this.treeAdapter.appendChild(parent, element); + } + } + _appendElement(token, namespaceURI) { + const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs); + this._attachElementToTree(element, token.location); + } + _insertElement(token, namespaceURI) { + const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs); + this._attachElementToTree(element, token.location); + this.openElements.push(element, token.tagID); + } + _insertFakeElement(tagName, tagID) { + const element = this.treeAdapter.createElement(tagName, html.NS.HTML, []); + this._attachElementToTree(element, null); + this.openElements.push(element, tagID); + } + _insertTemplate(token) { + const tmpl = this.treeAdapter.createElement(token.tagName, html.NS.HTML, token.attrs); + const content = this.treeAdapter.createDocumentFragment(); + this.treeAdapter.setTemplateContent(tmpl, content); + this._attachElementToTree(tmpl, token.location); + this.openElements.push(tmpl, token.tagID); + if (this.options.sourceCodeLocationInfo) + this.treeAdapter.setNodeSourceCodeLocation(content, null); + } + _insertFakeRootElement() { + const element = this.treeAdapter.createElement(html.TAG_NAMES.HTML, html.NS.HTML, []); + if (this.options.sourceCodeLocationInfo) + this.treeAdapter.setNodeSourceCodeLocation(element, null); + this.treeAdapter.appendChild(this.openElements.current, element); + this.openElements.push(element, html.TAG_ID.HTML); + } + _appendCommentNode(token, parent) { + const commentNode = this.treeAdapter.createCommentNode(token.data); + this.treeAdapter.appendChild(parent, commentNode); + if (this.options.sourceCodeLocationInfo) { + this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location); + } + } + _insertCharacters(token) { + let parent; + let beforeElement; + if (this._shouldFosterParentOnInsertion()) { + ({ parent, beforeElement } = this._findFosterParentingLocation()); + if (beforeElement) { + this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement); + } + else { + this.treeAdapter.insertText(parent, token.chars); + } + } + else { + parent = this.openElements.currentTmplContentOrNode; + this.treeAdapter.insertText(parent, token.chars); + } + if (!token.location) + return; + const siblings = this.treeAdapter.getChildNodes(parent); + const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length; + const textNode = siblings[textNodeIdx - 1]; + //NOTE: if we have a location assigned by another token, then just update the end position + const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode); + if (tnLoc) { + const { endLine, endCol, endOffset } = token.location; + this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset }); + } + else if (this.options.sourceCodeLocationInfo) { + this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location); + } + } + _adoptNodes(donor, recipient) { + for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) { + this.treeAdapter.detachNode(child); + this.treeAdapter.appendChild(recipient, child); + } + } + _setEndLocation(element, closingToken) { + if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) { + const ctLoc = closingToken.location; + const tn = this.treeAdapter.getTagName(element); + const endLoc = + // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing + // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag. + closingToken.type === token.TokenType.END_TAG && tn === closingToken.tagName + ? { + endTag: Object.assign({}, ctLoc), + endLine: ctLoc.endLine, + endCol: ctLoc.endCol, + endOffset: ctLoc.endOffset, + } + : { + endLine: ctLoc.startLine, + endCol: ctLoc.startCol, + endOffset: ctLoc.startOffset, + }; + this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc); + } + } + //Token processing + shouldProcessStartTagTokenInForeignContent(token) { + // Check that neither current === document, or ns === NS.HTML + if (!this.currentNotInHTML) + return false; + let current; + let currentTagId; + if (this.openElements.stackTop === 0 && this.fragmentContext) { + current = this.fragmentContext; + currentTagId = this.fragmentContextID; + } + else { + ({ current, currentTagId } = this.openElements); + } + if (token.tagID === html.TAG_ID.SVG && + this.treeAdapter.getTagName(current) === html.TAG_NAMES.ANNOTATION_XML && + this.treeAdapter.getNamespaceURI(current) === html.NS.MATHML) { + return false; + } + return ( + // Check that `current` is not an integration point for HTML or MathML elements. + this.tokenizer.inForeignNode || + // If it _is_ an integration point, then we might have to check that it is not an HTML + // integration point. + ((token.tagID === html.TAG_ID.MGLYPH || token.tagID === html.TAG_ID.MALIGNMARK) && + !this._isIntegrationPoint(currentTagId, current, html.NS.HTML))); + } + _processToken(token$1) { + switch (token$1.type) { + case token.TokenType.CHARACTER: { + this.onCharacter(token$1); + break; + } + case token.TokenType.NULL_CHARACTER: { + this.onNullCharacter(token$1); + break; + } + case token.TokenType.COMMENT: { + this.onComment(token$1); + break; + } + case token.TokenType.DOCTYPE: { + this.onDoctype(token$1); + break; + } + case token.TokenType.START_TAG: { + this._processStartTag(token$1); + break; + } + case token.TokenType.END_TAG: { + this.onEndTag(token$1); + break; + } + case token.TokenType.EOF: { + this.onEof(token$1); + break; + } + case token.TokenType.WHITESPACE_CHARACTER: { + this.onWhitespaceCharacter(token$1); + break; + } + } + } + //Integration points + _isIntegrationPoint(tid, element, foreignNS) { + const ns = this.treeAdapter.getNamespaceURI(element); + const attrs = this.treeAdapter.getAttrList(element); + return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS); + } + //Active formatting elements reconstruction + _reconstructActiveFormattingElements() { + const listLength = this.activeFormattingElements.entries.length; + if (listLength) { + const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === formattingElementList.EntryType.Marker || this.openElements.contains(entry.element)); + const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1; + for (let i = unopenIdx; i >= 0; i--) { + const entry = this.activeFormattingElements.entries[i]; + this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element)); + entry.element = this.openElements.current; + } + } + } + //Close elements + _closeTableCell() { + this.openElements.generateImpliedEndTags(); + this.openElements.popUntilTableCellPopped(); + this.activeFormattingElements.clearToLastMarker(); + this.insertionMode = InsertionMode.IN_ROW; + } + _closePElement() { + this.openElements.generateImpliedEndTagsWithExclusion(html.TAG_ID.P); + this.openElements.popUntilTagNamePopped(html.TAG_ID.P); + } + //Insertion modes + _resetInsertionMode() { + for (let i = this.openElements.stackTop; i >= 0; i--) { + //Insertion mode reset map + switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) { + case html.TAG_ID.TR: { + this.insertionMode = InsertionMode.IN_ROW; + return; + } + case html.TAG_ID.TBODY: + case html.TAG_ID.THEAD: + case html.TAG_ID.TFOOT: { + this.insertionMode = InsertionMode.IN_TABLE_BODY; + return; + } + case html.TAG_ID.CAPTION: { + this.insertionMode = InsertionMode.IN_CAPTION; + return; + } + case html.TAG_ID.COLGROUP: { + this.insertionMode = InsertionMode.IN_COLUMN_GROUP; + return; + } + case html.TAG_ID.TABLE: { + this.insertionMode = InsertionMode.IN_TABLE; + return; + } + case html.TAG_ID.BODY: { + this.insertionMode = InsertionMode.IN_BODY; + return; + } + case html.TAG_ID.FRAMESET: { + this.insertionMode = InsertionMode.IN_FRAMESET; + return; + } + case html.TAG_ID.SELECT: { + this._resetInsertionModeForSelect(i); + return; + } + case html.TAG_ID.TEMPLATE: { + this.insertionMode = this.tmplInsertionModeStack[0]; + return; + } + case html.TAG_ID.HTML: { + this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD; + return; + } + case html.TAG_ID.TD: + case html.TAG_ID.TH: { + if (i > 0) { + this.insertionMode = InsertionMode.IN_CELL; + return; + } + break; + } + case html.TAG_ID.HEAD: { + if (i > 0) { + this.insertionMode = InsertionMode.IN_HEAD; + return; + } + break; + } + } + } + this.insertionMode = InsertionMode.IN_BODY; + } + _resetInsertionModeForSelect(selectIdx) { + if (selectIdx > 0) { + for (let i = selectIdx - 1; i > 0; i--) { + const tn = this.openElements.tagIDs[i]; + if (tn === html.TAG_ID.TEMPLATE) { + break; + } + else if (tn === html.TAG_ID.TABLE) { + this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE; + return; + } + } + } + this.insertionMode = InsertionMode.IN_SELECT; + } + //Foster parenting + _isElementCausesFosterParenting(tn) { + return TABLE_STRUCTURE_TAGS.has(tn); + } + _shouldFosterParentOnInsertion() { + return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId); + } + _findFosterParentingLocation() { + for (let i = this.openElements.stackTop; i >= 0; i--) { + const openElement = this.openElements.items[i]; + switch (this.openElements.tagIDs[i]) { + case html.TAG_ID.TEMPLATE: { + if (this.treeAdapter.getNamespaceURI(openElement) === html.NS.HTML) { + return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null }; + } + break; + } + case html.TAG_ID.TABLE: { + const parent = this.treeAdapter.getParentNode(openElement); + if (parent) { + return { parent, beforeElement: openElement }; + } + return { parent: this.openElements.items[i - 1], beforeElement: null }; + } + // Do nothing + } + } + return { parent: this.openElements.items[0], beforeElement: null }; + } + _fosterParentElement(element) { + const location = this._findFosterParentingLocation(); + if (location.beforeElement) { + this.treeAdapter.insertBefore(location.parent, element, location.beforeElement); + } + else { + this.treeAdapter.appendChild(location.parent, element); + } + } + //Special elements + _isSpecialElement(element, id) { + const ns = this.treeAdapter.getNamespaceURI(element); + return html.SPECIAL_ELEMENTS[ns].has(id); + } + onCharacter(token) { + this.skipNextNewLine = false; + if (this.tokenizer.inForeignNode) { + characterInForeignContent(this, token); + return; + } + switch (this.insertionMode) { + case InsertionMode.INITIAL: { + tokenInInitialMode(this, token); + break; + } + case InsertionMode.BEFORE_HTML: { + tokenBeforeHtml(this, token); + break; + } + case InsertionMode.BEFORE_HEAD: { + tokenBeforeHead(this, token); + break; + } + case InsertionMode.IN_HEAD: { + tokenInHead(this, token); + break; + } + case InsertionMode.IN_HEAD_NO_SCRIPT: { + tokenInHeadNoScript(this, token); + break; + } + case InsertionMode.AFTER_HEAD: { + tokenAfterHead(this, token); + break; + } + case InsertionMode.IN_BODY: + case InsertionMode.IN_CAPTION: + case InsertionMode.IN_CELL: + case InsertionMode.IN_TEMPLATE: { + characterInBody(this, token); + break; + } + case InsertionMode.TEXT: + case InsertionMode.IN_SELECT: + case InsertionMode.IN_SELECT_IN_TABLE: { + this._insertCharacters(token); + break; + } + case InsertionMode.IN_TABLE: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: { + characterInTable(this, token); + break; + } + case InsertionMode.IN_TABLE_TEXT: { + characterInTableText(this, token); + break; + } + case InsertionMode.IN_COLUMN_GROUP: { + tokenInColumnGroup(this, token); + break; + } + case InsertionMode.AFTER_BODY: { + tokenAfterBody(this, token); + break; + } + case InsertionMode.AFTER_AFTER_BODY: { + tokenAfterAfterBody(this, token); + break; + } + // Do nothing + } + } + onNullCharacter(token) { + this.skipNextNewLine = false; + if (this.tokenizer.inForeignNode) { + nullCharacterInForeignContent(this, token); + return; + } + switch (this.insertionMode) { + case InsertionMode.INITIAL: { + tokenInInitialMode(this, token); + break; + } + case InsertionMode.BEFORE_HTML: { + tokenBeforeHtml(this, token); + break; + } + case InsertionMode.BEFORE_HEAD: { + tokenBeforeHead(this, token); + break; + } + case InsertionMode.IN_HEAD: { + tokenInHead(this, token); + break; + } + case InsertionMode.IN_HEAD_NO_SCRIPT: { + tokenInHeadNoScript(this, token); + break; + } + case InsertionMode.AFTER_HEAD: { + tokenAfterHead(this, token); + break; + } + case InsertionMode.TEXT: { + this._insertCharacters(token); + break; + } + case InsertionMode.IN_TABLE: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: { + characterInTable(this, token); + break; + } + case InsertionMode.IN_COLUMN_GROUP: { + tokenInColumnGroup(this, token); + break; + } + case InsertionMode.AFTER_BODY: { + tokenAfterBody(this, token); + break; + } + case InsertionMode.AFTER_AFTER_BODY: { + tokenAfterAfterBody(this, token); + break; + } + // Do nothing + } + } + onComment(token) { + this.skipNextNewLine = false; + if (this.currentNotInHTML) { + appendComment(this, token); + return; + } + switch (this.insertionMode) { + case InsertionMode.INITIAL: + case InsertionMode.BEFORE_HTML: + case InsertionMode.BEFORE_HEAD: + case InsertionMode.IN_HEAD: + case InsertionMode.IN_HEAD_NO_SCRIPT: + case InsertionMode.AFTER_HEAD: + case InsertionMode.IN_BODY: + case InsertionMode.IN_TABLE: + case InsertionMode.IN_CAPTION: + case InsertionMode.IN_COLUMN_GROUP: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: + case InsertionMode.IN_CELL: + case InsertionMode.IN_SELECT: + case InsertionMode.IN_SELECT_IN_TABLE: + case InsertionMode.IN_TEMPLATE: + case InsertionMode.IN_FRAMESET: + case InsertionMode.AFTER_FRAMESET: { + appendComment(this, token); + break; + } + case InsertionMode.IN_TABLE_TEXT: { + tokenInTableText(this, token); + break; + } + case InsertionMode.AFTER_BODY: { + appendCommentToRootHtmlElement(this, token); + break; + } + case InsertionMode.AFTER_AFTER_BODY: + case InsertionMode.AFTER_AFTER_FRAMESET: { + appendCommentToDocument(this, token); + break; + } + // Do nothing + } + } + onDoctype(token) { + this.skipNextNewLine = false; + switch (this.insertionMode) { + case InsertionMode.INITIAL: { + doctypeInInitialMode(this, token); + break; + } + case InsertionMode.BEFORE_HEAD: + case InsertionMode.IN_HEAD: + case InsertionMode.IN_HEAD_NO_SCRIPT: + case InsertionMode.AFTER_HEAD: { + this._err(token, errorCodes.ERR.misplacedDoctype); + break; + } + case InsertionMode.IN_TABLE_TEXT: { + tokenInTableText(this, token); + break; + } + // Do nothing + } + } + onStartTag(token) { + this.skipNextNewLine = false; + this.currentToken = token; + this._processStartTag(token); + if (token.selfClosing && !token.ackSelfClosing) { + this._err(token, errorCodes.ERR.nonVoidHtmlElementStartTagWithTrailingSolidus); + } + } + /** + * Processes a given start tag. + * + * `onStartTag` checks if a self-closing tag was recognized. When a token + * is moved inbetween multiple insertion modes, this check for self-closing + * could lead to false positives. To avoid this, `_processStartTag` is used + * for nested calls. + * + * @param token The token to process. + */ + _processStartTag(token) { + if (this.shouldProcessStartTagTokenInForeignContent(token)) { + startTagInForeignContent(this, token); + } + else { + this._startTagOutsideForeignContent(token); + } + } + _startTagOutsideForeignContent(token) { + switch (this.insertionMode) { + case InsertionMode.INITIAL: { + tokenInInitialMode(this, token); + break; + } + case InsertionMode.BEFORE_HTML: { + startTagBeforeHtml(this, token); + break; + } + case InsertionMode.BEFORE_HEAD: { + startTagBeforeHead(this, token); + break; + } + case InsertionMode.IN_HEAD: { + startTagInHead(this, token); + break; + } + case InsertionMode.IN_HEAD_NO_SCRIPT: { + startTagInHeadNoScript(this, token); + break; + } + case InsertionMode.AFTER_HEAD: { + startTagAfterHead(this, token); + break; + } + case InsertionMode.IN_BODY: { + startTagInBody(this, token); + break; + } + case InsertionMode.IN_TABLE: { + startTagInTable(this, token); + break; + } + case InsertionMode.IN_TABLE_TEXT: { + tokenInTableText(this, token); + break; + } + case InsertionMode.IN_CAPTION: { + startTagInCaption(this, token); + break; + } + case InsertionMode.IN_COLUMN_GROUP: { + startTagInColumnGroup(this, token); + break; + } + case InsertionMode.IN_TABLE_BODY: { + startTagInTableBody(this, token); + break; + } + case InsertionMode.IN_ROW: { + startTagInRow(this, token); + break; + } + case InsertionMode.IN_CELL: { + startTagInCell(this, token); + break; + } + case InsertionMode.IN_SELECT: { + startTagInSelect(this, token); + break; + } + case InsertionMode.IN_SELECT_IN_TABLE: { + startTagInSelectInTable(this, token); + break; + } + case InsertionMode.IN_TEMPLATE: { + startTagInTemplate(this, token); + break; + } + case InsertionMode.AFTER_BODY: { + startTagAfterBody(this, token); + break; + } + case InsertionMode.IN_FRAMESET: { + startTagInFrameset(this, token); + break; + } + case InsertionMode.AFTER_FRAMESET: { + startTagAfterFrameset(this, token); + break; + } + case InsertionMode.AFTER_AFTER_BODY: { + startTagAfterAfterBody(this, token); + break; + } + case InsertionMode.AFTER_AFTER_FRAMESET: { + startTagAfterAfterFrameset(this, token); + break; + } + // Do nothing + } + } + onEndTag(token) { + this.skipNextNewLine = false; + this.currentToken = token; + if (this.currentNotInHTML) { + endTagInForeignContent(this, token); + } + else { + this._endTagOutsideForeignContent(token); + } + } + _endTagOutsideForeignContent(token) { + switch (this.insertionMode) { + case InsertionMode.INITIAL: { + tokenInInitialMode(this, token); + break; + } + case InsertionMode.BEFORE_HTML: { + endTagBeforeHtml(this, token); + break; + } + case InsertionMode.BEFORE_HEAD: { + endTagBeforeHead(this, token); + break; + } + case InsertionMode.IN_HEAD: { + endTagInHead(this, token); + break; + } + case InsertionMode.IN_HEAD_NO_SCRIPT: { + endTagInHeadNoScript(this, token); + break; + } + case InsertionMode.AFTER_HEAD: { + endTagAfterHead(this, token); + break; + } + case InsertionMode.IN_BODY: { + endTagInBody(this, token); + break; + } + case InsertionMode.TEXT: { + endTagInText(this, token); + break; + } + case InsertionMode.IN_TABLE: { + endTagInTable(this, token); + break; + } + case InsertionMode.IN_TABLE_TEXT: { + tokenInTableText(this, token); + break; + } + case InsertionMode.IN_CAPTION: { + endTagInCaption(this, token); + break; + } + case InsertionMode.IN_COLUMN_GROUP: { + endTagInColumnGroup(this, token); + break; + } + case InsertionMode.IN_TABLE_BODY: { + endTagInTableBody(this, token); + break; + } + case InsertionMode.IN_ROW: { + endTagInRow(this, token); + break; + } + case InsertionMode.IN_CELL: { + endTagInCell(this, token); + break; + } + case InsertionMode.IN_SELECT: { + endTagInSelect(this, token); + break; + } + case InsertionMode.IN_SELECT_IN_TABLE: { + endTagInSelectInTable(this, token); + break; + } + case InsertionMode.IN_TEMPLATE: { + endTagInTemplate(this, token); + break; + } + case InsertionMode.AFTER_BODY: { + endTagAfterBody(this, token); + break; + } + case InsertionMode.IN_FRAMESET: { + endTagInFrameset(this, token); + break; + } + case InsertionMode.AFTER_FRAMESET: { + endTagAfterFrameset(this, token); + break; + } + case InsertionMode.AFTER_AFTER_BODY: { + tokenAfterAfterBody(this, token); + break; + } + // Do nothing + } + } + onEof(token) { + switch (this.insertionMode) { + case InsertionMode.INITIAL: { + tokenInInitialMode(this, token); + break; + } + case InsertionMode.BEFORE_HTML: { + tokenBeforeHtml(this, token); + break; + } + case InsertionMode.BEFORE_HEAD: { + tokenBeforeHead(this, token); + break; + } + case InsertionMode.IN_HEAD: { + tokenInHead(this, token); + break; + } + case InsertionMode.IN_HEAD_NO_SCRIPT: { + tokenInHeadNoScript(this, token); + break; + } + case InsertionMode.AFTER_HEAD: { + tokenAfterHead(this, token); + break; + } + case InsertionMode.IN_BODY: + case InsertionMode.IN_TABLE: + case InsertionMode.IN_CAPTION: + case InsertionMode.IN_COLUMN_GROUP: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: + case InsertionMode.IN_CELL: + case InsertionMode.IN_SELECT: + case InsertionMode.IN_SELECT_IN_TABLE: { + eofInBody(this, token); + break; + } + case InsertionMode.TEXT: { + eofInText(this, token); + break; + } + case InsertionMode.IN_TABLE_TEXT: { + tokenInTableText(this, token); + break; + } + case InsertionMode.IN_TEMPLATE: { + eofInTemplate(this, token); + break; + } + case InsertionMode.AFTER_BODY: + case InsertionMode.IN_FRAMESET: + case InsertionMode.AFTER_FRAMESET: + case InsertionMode.AFTER_AFTER_BODY: + case InsertionMode.AFTER_AFTER_FRAMESET: { + stopParsing(this, token); + break; + } + // Do nothing + } + } + onWhitespaceCharacter(token) { + if (this.skipNextNewLine) { + this.skipNextNewLine = false; + if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) { + if (token.chars.length === 1) { + return; + } + token.chars = token.chars.substr(1); + } + } + if (this.tokenizer.inForeignNode) { + this._insertCharacters(token); + return; + } + switch (this.insertionMode) { + case InsertionMode.IN_HEAD: + case InsertionMode.IN_HEAD_NO_SCRIPT: + case InsertionMode.AFTER_HEAD: + case InsertionMode.TEXT: + case InsertionMode.IN_COLUMN_GROUP: + case InsertionMode.IN_SELECT: + case InsertionMode.IN_SELECT_IN_TABLE: + case InsertionMode.IN_FRAMESET: + case InsertionMode.AFTER_FRAMESET: { + this._insertCharacters(token); + break; + } + case InsertionMode.IN_BODY: + case InsertionMode.IN_CAPTION: + case InsertionMode.IN_CELL: + case InsertionMode.IN_TEMPLATE: + case InsertionMode.AFTER_BODY: + case InsertionMode.AFTER_AFTER_BODY: + case InsertionMode.AFTER_AFTER_FRAMESET: { + whitespaceCharacterInBody(this, token); + break; + } + case InsertionMode.IN_TABLE: + case InsertionMode.IN_TABLE_BODY: + case InsertionMode.IN_ROW: { + characterInTable(this, token); + break; + } + case InsertionMode.IN_TABLE_TEXT: { + whitespaceCharacterInTableText(this, token); + break; + } + // Do nothing + } + } +} +exports.Parser = Parser; +//Adoption agency algorithm +//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency) +//------------------------------------------------------------------ +//Steps 5-8 of the algorithm +function aaObtainFormattingElementEntry(p, token) { + let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName); + if (formattingElementEntry) { + if (!p.openElements.contains(formattingElementEntry.element)) { + p.activeFormattingElements.removeEntry(formattingElementEntry); + formattingElementEntry = null; + } + else if (!p.openElements.hasInScope(token.tagID)) { + formattingElementEntry = null; + } + } + else { + genericEndTagInBody(p, token); + } + return formattingElementEntry; +} +//Steps 9 and 10 of the algorithm +function aaObtainFurthestBlock(p, formattingElementEntry) { + let furthestBlock = null; + let idx = p.openElements.stackTop; + for (; idx >= 0; idx--) { + const element = p.openElements.items[idx]; + if (element === formattingElementEntry.element) { + break; + } + if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) { + furthestBlock = element; + } + } + if (!furthestBlock) { + p.openElements.shortenToLength(idx < 0 ? 0 : idx); + p.activeFormattingElements.removeEntry(formattingElementEntry); + } + return furthestBlock; +} +//Step 13 of the algorithm +function aaInnerLoop(p, furthestBlock, formattingElement) { + let lastElement = furthestBlock; + let nextElement = p.openElements.getCommonAncestor(furthestBlock); + for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) { + //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5) + nextElement = p.openElements.getCommonAncestor(element); + const elementEntry = p.activeFormattingElements.getElementEntry(element); + const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER; + const shouldRemoveFromOpenElements = !elementEntry || counterOverflow; + if (shouldRemoveFromOpenElements) { + if (counterOverflow) { + p.activeFormattingElements.removeEntry(elementEntry); + } + p.openElements.remove(element); + } + else { + element = aaRecreateElementFromEntry(p, elementEntry); + if (lastElement === furthestBlock) { + p.activeFormattingElements.bookmark = elementEntry; + } + p.treeAdapter.detachNode(lastElement); + p.treeAdapter.appendChild(element, lastElement); + lastElement = element; + } + } + return lastElement; +} +//Step 13.7 of the algorithm +function aaRecreateElementFromEntry(p, elementEntry) { + const ns = p.treeAdapter.getNamespaceURI(elementEntry.element); + const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs); + p.openElements.replace(elementEntry.element, newElement); + elementEntry.element = newElement; + return newElement; +} +//Step 14 of the algorithm +function aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) { + const tn = p.treeAdapter.getTagName(commonAncestor); + const tid = (0, html.getTagID)(tn); + if (p._isElementCausesFosterParenting(tid)) { + p._fosterParentElement(lastElement); + } + else { + const ns = p.treeAdapter.getNamespaceURI(commonAncestor); + if (tid === html.TAG_ID.TEMPLATE && ns === html.NS.HTML) { + commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor); + } + p.treeAdapter.appendChild(commonAncestor, lastElement); + } +} +//Steps 15-19 of the algorithm +function aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) { + const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element); + const { token } = formattingElementEntry; + const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs); + p._adoptNodes(furthestBlock, newElement); + p.treeAdapter.appendChild(furthestBlock, newElement); + p.activeFormattingElements.insertElementAfterBookmark(newElement, token); + p.activeFormattingElements.removeEntry(formattingElementEntry); + p.openElements.remove(formattingElementEntry.element); + p.openElements.insertAfter(furthestBlock, newElement, token.tagID); +} +//Algorithm entry point +function callAdoptionAgency(p, token) { + for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) { + const formattingElementEntry = aaObtainFormattingElementEntry(p, token); + if (!formattingElementEntry) { + break; + } + const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry); + if (!furthestBlock) { + break; + } + p.activeFormattingElements.bookmark = formattingElementEntry; + const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element); + const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element); + p.treeAdapter.detachNode(lastElement); + if (commonAncestor) + aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement); + aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry); + } +} +//Generic token handlers +//------------------------------------------------------------------ +function appendComment(p, token) { + p._appendCommentNode(token, p.openElements.currentTmplContentOrNode); +} +function appendCommentToRootHtmlElement(p, token) { + p._appendCommentNode(token, p.openElements.items[0]); +} +function appendCommentToDocument(p, token) { + p._appendCommentNode(token, p.document); +} +function stopParsing(p, token) { + p.stopped = true; + // NOTE: Set end locations for elements that remain on the open element stack. + if (token.location) { + // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack. + // This is a problem, as we might overwrite their end position here. + const target = p.fragmentContext ? 0 : 2; + for (let i = p.openElements.stackTop; i >= target; i--) { + p._setEndLocation(p.openElements.items[i], token); + } + // Handle `html` and `body` + if (!p.fragmentContext && p.openElements.stackTop >= 0) { + const htmlElement = p.openElements.items[0]; + const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement); + if (htmlLocation && !htmlLocation.endTag) { + p._setEndLocation(htmlElement, token); + if (p.openElements.stackTop >= 1) { + const bodyElement = p.openElements.items[1]; + const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement); + if (bodyLocation && !bodyLocation.endTag) { + p._setEndLocation(bodyElement, token); + } + } + } + } + } +} +// The "initial" insertion mode +//------------------------------------------------------------------ +function doctypeInInitialMode(p, token) { + p._setDocumentType(token); + const mode = token.forceQuirks ? html.DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token); + if (!doctype.isConforming(token)) { + p._err(token, errorCodes.ERR.nonConformingDoctype); + } + p.treeAdapter.setDocumentMode(p.document, mode); + p.insertionMode = InsertionMode.BEFORE_HTML; +} +function tokenInInitialMode(p, token) { + p._err(token, errorCodes.ERR.missingDoctype, true); + p.treeAdapter.setDocumentMode(p.document, html.DOCUMENT_MODE.QUIRKS); + p.insertionMode = InsertionMode.BEFORE_HTML; + p._processToken(token); +} +// The "before html" insertion mode +//------------------------------------------------------------------ +function startTagBeforeHtml(p, token) { + if (token.tagID === html.TAG_ID.HTML) { + p._insertElement(token, html.NS.HTML); + p.insertionMode = InsertionMode.BEFORE_HEAD; + } + else { + tokenBeforeHtml(p, token); + } +} +function endTagBeforeHtml(p, token) { + const tn = token.tagID; + if (tn === html.TAG_ID.HTML || tn === html.TAG_ID.HEAD || tn === html.TAG_ID.BODY || tn === html.TAG_ID.BR) { + tokenBeforeHtml(p, token); + } +} +function tokenBeforeHtml(p, token) { + p._insertFakeRootElement(); + p.insertionMode = InsertionMode.BEFORE_HEAD; + p._processToken(token); +} +// The "before head" insertion mode +//------------------------------------------------------------------ +function startTagBeforeHead(p, token) { + switch (token.tagID) { + case html.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html.TAG_ID.HEAD: { + p._insertElement(token, html.NS.HTML); + p.headElement = p.openElements.current; + p.insertionMode = InsertionMode.IN_HEAD; + break; + } + default: { + tokenBeforeHead(p, token); + } + } +} +function endTagBeforeHead(p, token) { + const tn = token.tagID; + if (tn === html.TAG_ID.HEAD || tn === html.TAG_ID.BODY || tn === html.TAG_ID.HTML || tn === html.TAG_ID.BR) { + tokenBeforeHead(p, token); + } + else { + p._err(token, errorCodes.ERR.endTagWithoutMatchingOpenElement); + } +} +function tokenBeforeHead(p, token) { + p._insertFakeElement(html.TAG_NAMES.HEAD, html.TAG_ID.HEAD); + p.headElement = p.openElements.current; + p.insertionMode = InsertionMode.IN_HEAD; + p._processToken(token); +} +// The "in head" insertion mode +//------------------------------------------------------------------ +function startTagInHead(p, token) { + switch (token.tagID) { + case html.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html.TAG_ID.BASE: + case html.TAG_ID.BASEFONT: + case html.TAG_ID.BGSOUND: + case html.TAG_ID.LINK: + case html.TAG_ID.META: { + p._appendElement(token, html.NS.HTML); + token.ackSelfClosing = true; + break; + } + case html.TAG_ID.TITLE: { + p._switchToTextParsing(token, tokenizer.TokenizerMode.RCDATA); + break; + } + case html.TAG_ID.NOSCRIPT: { + if (p.options.scriptingEnabled) { + p._switchToTextParsing(token, tokenizer.TokenizerMode.RAWTEXT); + } + else { + p._insertElement(token, html.NS.HTML); + p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT; + } + break; + } + case html.TAG_ID.NOFRAMES: + case html.TAG_ID.STYLE: { + p._switchToTextParsing(token, tokenizer.TokenizerMode.RAWTEXT); + break; + } + case html.TAG_ID.SCRIPT: { + p._switchToTextParsing(token, tokenizer.TokenizerMode.SCRIPT_DATA); + break; + } + case html.TAG_ID.TEMPLATE: { + p._insertTemplate(token); + p.activeFormattingElements.insertMarker(); + p.framesetOk = false; + p.insertionMode = InsertionMode.IN_TEMPLATE; + p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE); + break; + } + case html.TAG_ID.HEAD: { + p._err(token, errorCodes.ERR.misplacedStartTagForHeadElement); + break; + } + default: { + tokenInHead(p, token); + } + } +} +function endTagInHead(p, token) { + switch (token.tagID) { + case html.TAG_ID.HEAD: { + p.openElements.pop(); + p.insertionMode = InsertionMode.AFTER_HEAD; + break; + } + case html.TAG_ID.BODY: + case html.TAG_ID.BR: + case html.TAG_ID.HTML: { + tokenInHead(p, token); + break; + } + case html.TAG_ID.TEMPLATE: { + templateEndTagInHead(p, token); + break; + } + default: { + p._err(token, errorCodes.ERR.endTagWithoutMatchingOpenElement); + } + } +} +function templateEndTagInHead(p, token) { + if (p.openElements.tmplCount > 0) { + p.openElements.generateImpliedEndTagsThoroughly(); + if (p.openElements.currentTagId !== html.TAG_ID.TEMPLATE) { + p._err(token, errorCodes.ERR.closingOfElementWithOpenChildElements); + } + p.openElements.popUntilTagNamePopped(html.TAG_ID.TEMPLATE); + p.activeFormattingElements.clearToLastMarker(); + p.tmplInsertionModeStack.shift(); + p._resetInsertionMode(); + } + else { + p._err(token, errorCodes.ERR.endTagWithoutMatchingOpenElement); + } +} +function tokenInHead(p, token) { + p.openElements.pop(); + p.insertionMode = InsertionMode.AFTER_HEAD; + p._processToken(token); +} +// The "in head no script" insertion mode +//------------------------------------------------------------------ +function startTagInHeadNoScript(p, token) { + switch (token.tagID) { + case html.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html.TAG_ID.BASEFONT: + case html.TAG_ID.BGSOUND: + case html.TAG_ID.HEAD: + case html.TAG_ID.LINK: + case html.TAG_ID.META: + case html.TAG_ID.NOFRAMES: + case html.TAG_ID.STYLE: { + startTagInHead(p, token); + break; + } + case html.TAG_ID.NOSCRIPT: { + p._err(token, errorCodes.ERR.nestedNoscriptInHead); + break; + } + default: { + tokenInHeadNoScript(p, token); + } + } +} +function endTagInHeadNoScript(p, token) { + switch (token.tagID) { + case html.TAG_ID.NOSCRIPT: { + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_HEAD; + break; + } + case html.TAG_ID.BR: { + tokenInHeadNoScript(p, token); + break; + } + default: { + p._err(token, errorCodes.ERR.endTagWithoutMatchingOpenElement); + } + } +} +function tokenInHeadNoScript(p, token$1) { + const errCode = token$1.type === token.TokenType.EOF ? errorCodes.ERR.openElementsLeftAfterEof : errorCodes.ERR.disallowedContentInNoscriptInHead; + p._err(token$1, errCode); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_HEAD; + p._processToken(token$1); +} +// The "after head" insertion mode +//------------------------------------------------------------------ +function startTagAfterHead(p, token) { + switch (token.tagID) { + case html.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html.TAG_ID.BODY: { + p._insertElement(token, html.NS.HTML); + p.framesetOk = false; + p.insertionMode = InsertionMode.IN_BODY; + break; + } + case html.TAG_ID.FRAMESET: { + p._insertElement(token, html.NS.HTML); + p.insertionMode = InsertionMode.IN_FRAMESET; + break; + } + case html.TAG_ID.BASE: + case html.TAG_ID.BASEFONT: + case html.TAG_ID.BGSOUND: + case html.TAG_ID.LINK: + case html.TAG_ID.META: + case html.TAG_ID.NOFRAMES: + case html.TAG_ID.SCRIPT: + case html.TAG_ID.STYLE: + case html.TAG_ID.TEMPLATE: + case html.TAG_ID.TITLE: { + p._err(token, errorCodes.ERR.abandonedHeadElementChild); + p.openElements.push(p.headElement, html.TAG_ID.HEAD); + startTagInHead(p, token); + p.openElements.remove(p.headElement); + break; + } + case html.TAG_ID.HEAD: { + p._err(token, errorCodes.ERR.misplacedStartTagForHeadElement); + break; + } + default: { + tokenAfterHead(p, token); + } + } +} +function endTagAfterHead(p, token) { + switch (token.tagID) { + case html.TAG_ID.BODY: + case html.TAG_ID.HTML: + case html.TAG_ID.BR: { + tokenAfterHead(p, token); + break; + } + case html.TAG_ID.TEMPLATE: { + templateEndTagInHead(p, token); + break; + } + default: { + p._err(token, errorCodes.ERR.endTagWithoutMatchingOpenElement); + } + } +} +function tokenAfterHead(p, token) { + p._insertFakeElement(html.TAG_NAMES.BODY, html.TAG_ID.BODY); + p.insertionMode = InsertionMode.IN_BODY; + modeInBody(p, token); +} +// The "in body" insertion mode +//------------------------------------------------------------------ +function modeInBody(p, token$1) { + switch (token$1.type) { + case token.TokenType.CHARACTER: { + characterInBody(p, token$1); + break; + } + case token.TokenType.WHITESPACE_CHARACTER: { + whitespaceCharacterInBody(p, token$1); + break; + } + case token.TokenType.COMMENT: { + appendComment(p, token$1); + break; + } + case token.TokenType.START_TAG: { + startTagInBody(p, token$1); + break; + } + case token.TokenType.END_TAG: { + endTagInBody(p, token$1); + break; + } + case token.TokenType.EOF: { + eofInBody(p, token$1); + break; + } + // Do nothing + } +} +function whitespaceCharacterInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertCharacters(token); +} +function characterInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertCharacters(token); + p.framesetOk = false; +} +function htmlStartTagInBody(p, token) { + if (p.openElements.tmplCount === 0) { + p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs); + } +} +function bodyStartTagInBody(p, token) { + const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); + if (bodyElement && p.openElements.tmplCount === 0) { + p.framesetOk = false; + p.treeAdapter.adoptAttributes(bodyElement, token.attrs); + } +} +function framesetStartTagInBody(p, token) { + const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); + if (p.framesetOk && bodyElement) { + p.treeAdapter.detachNode(bodyElement); + p.openElements.popAllUpToHtmlElement(); + p._insertElement(token, html.NS.HTML); + p.insertionMode = InsertionMode.IN_FRAMESET; + } +} +function addressStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(html.TAG_ID.P)) { + p._closePElement(); + } + p._insertElement(token, html.NS.HTML); +} +function numberedHeaderStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(html.TAG_ID.P)) { + p._closePElement(); + } + if ((0, html.isNumberedHeader)(p.openElements.currentTagId)) { + p.openElements.pop(); + } + p._insertElement(token, html.NS.HTML); +} +function preStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(html.TAG_ID.P)) { + p._closePElement(); + } + p._insertElement(token, html.NS.HTML); + //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move + //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.) + p.skipNextNewLine = true; + p.framesetOk = false; +} +function formStartTagInBody(p, token) { + const inTemplate = p.openElements.tmplCount > 0; + if (!p.formElement || inTemplate) { + if (p.openElements.hasInButtonScope(html.TAG_ID.P)) { + p._closePElement(); + } + p._insertElement(token, html.NS.HTML); + if (!inTemplate) { + p.formElement = p.openElements.current; + } + } +} +function listItemStartTagInBody(p, token) { + p.framesetOk = false; + const tn = token.tagID; + for (let i = p.openElements.stackTop; i >= 0; i--) { + const elementId = p.openElements.tagIDs[i]; + if ((tn === html.TAG_ID.LI && elementId === html.TAG_ID.LI) || + ((tn === html.TAG_ID.DD || tn === html.TAG_ID.DT) && (elementId === html.TAG_ID.DD || elementId === html.TAG_ID.DT))) { + p.openElements.generateImpliedEndTagsWithExclusion(elementId); + p.openElements.popUntilTagNamePopped(elementId); + break; + } + if (elementId !== html.TAG_ID.ADDRESS && + elementId !== html.TAG_ID.DIV && + elementId !== html.TAG_ID.P && + p._isSpecialElement(p.openElements.items[i], elementId)) { + break; + } + } + if (p.openElements.hasInButtonScope(html.TAG_ID.P)) { + p._closePElement(); + } + p._insertElement(token, html.NS.HTML); +} +function plaintextStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(html.TAG_ID.P)) { + p._closePElement(); + } + p._insertElement(token, html.NS.HTML); + p.tokenizer.state = tokenizer.TokenizerMode.PLAINTEXT; +} +function buttonStartTagInBody(p, token) { + if (p.openElements.hasInScope(html.TAG_ID.BUTTON)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(html.TAG_ID.BUTTON); + } + p._reconstructActiveFormattingElements(); + p._insertElement(token, html.NS.HTML); + p.framesetOk = false; +} +function aStartTagInBody(p, token) { + const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(html.TAG_NAMES.A); + if (activeElementEntry) { + callAdoptionAgency(p, token); + p.openElements.remove(activeElementEntry.element); + p.activeFormattingElements.removeEntry(activeElementEntry); + } + p._reconstructActiveFormattingElements(); + p._insertElement(token, html.NS.HTML); + p.activeFormattingElements.pushElement(p.openElements.current, token); +} +function bStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertElement(token, html.NS.HTML); + p.activeFormattingElements.pushElement(p.openElements.current, token); +} +function nobrStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + if (p.openElements.hasInScope(html.TAG_ID.NOBR)) { + callAdoptionAgency(p, token); + p._reconstructActiveFormattingElements(); + } + p._insertElement(token, html.NS.HTML); + p.activeFormattingElements.pushElement(p.openElements.current, token); +} +function appletStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertElement(token, html.NS.HTML); + p.activeFormattingElements.insertMarker(); + p.framesetOk = false; +} +function tableStartTagInBody(p, token) { + if (p.treeAdapter.getDocumentMode(p.document) !== html.DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope(html.TAG_ID.P)) { + p._closePElement(); + } + p._insertElement(token, html.NS.HTML); + p.framesetOk = false; + p.insertionMode = InsertionMode.IN_TABLE; +} +function areaStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._appendElement(token, html.NS.HTML); + p.framesetOk = false; + token.ackSelfClosing = true; +} +function isHiddenInput(token$1) { + const inputType = (0, token.getTokenAttr)(token$1, html.ATTRS.TYPE); + return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE; +} +function inputStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._appendElement(token, html.NS.HTML); + if (!isHiddenInput(token)) { + p.framesetOk = false; + } + token.ackSelfClosing = true; +} +function paramStartTagInBody(p, token) { + p._appendElement(token, html.NS.HTML); + token.ackSelfClosing = true; +} +function hrStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(html.TAG_ID.P)) { + p._closePElement(); + } + p._appendElement(token, html.NS.HTML); + p.framesetOk = false; + token.ackSelfClosing = true; +} +function imageStartTagInBody(p, token) { + token.tagName = html.TAG_NAMES.IMG; + token.tagID = html.TAG_ID.IMG; + areaStartTagInBody(p, token); +} +function textareaStartTagInBody(p, token) { + p._insertElement(token, html.NS.HTML); + //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move + //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.) + p.skipNextNewLine = true; + p.tokenizer.state = tokenizer.TokenizerMode.RCDATA; + p.originalInsertionMode = p.insertionMode; + p.framesetOk = false; + p.insertionMode = InsertionMode.TEXT; +} +function xmpStartTagInBody(p, token) { + if (p.openElements.hasInButtonScope(html.TAG_ID.P)) { + p._closePElement(); + } + p._reconstructActiveFormattingElements(); + p.framesetOk = false; + p._switchToTextParsing(token, tokenizer.TokenizerMode.RAWTEXT); +} +function iframeStartTagInBody(p, token) { + p.framesetOk = false; + p._switchToTextParsing(token, tokenizer.TokenizerMode.RAWTEXT); +} +//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse +//<noembed> as rawtext. +function noembedStartTagInBody(p, token) { + p._switchToTextParsing(token, tokenizer.TokenizerMode.RAWTEXT); +} +function selectStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertElement(token, html.NS.HTML); + p.framesetOk = false; + p.insertionMode = + p.insertionMode === InsertionMode.IN_TABLE || + p.insertionMode === InsertionMode.IN_CAPTION || + p.insertionMode === InsertionMode.IN_TABLE_BODY || + p.insertionMode === InsertionMode.IN_ROW || + p.insertionMode === InsertionMode.IN_CELL + ? InsertionMode.IN_SELECT_IN_TABLE + : InsertionMode.IN_SELECT; +} +function optgroupStartTagInBody(p, token) { + if (p.openElements.currentTagId === html.TAG_ID.OPTION) { + p.openElements.pop(); + } + p._reconstructActiveFormattingElements(); + p._insertElement(token, html.NS.HTML); +} +function rbStartTagInBody(p, token) { + if (p.openElements.hasInScope(html.TAG_ID.RUBY)) { + p.openElements.generateImpliedEndTags(); + } + p._insertElement(token, html.NS.HTML); +} +function rtStartTagInBody(p, token) { + if (p.openElements.hasInScope(html.TAG_ID.RUBY)) { + p.openElements.generateImpliedEndTagsWithExclusion(html.TAG_ID.RTC); + } + p._insertElement(token, html.NS.HTML); +} +function mathStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + foreignContent.adjustTokenMathMLAttrs(token); + foreignContent.adjustTokenXMLAttrs(token); + if (token.selfClosing) { + p._appendElement(token, html.NS.MATHML); + } + else { + p._insertElement(token, html.NS.MATHML); + } + token.ackSelfClosing = true; +} +function svgStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + foreignContent.adjustTokenSVGAttrs(token); + foreignContent.adjustTokenXMLAttrs(token); + if (token.selfClosing) { + p._appendElement(token, html.NS.SVG); + } + else { + p._insertElement(token, html.NS.SVG); + } + token.ackSelfClosing = true; +} +function genericStartTagInBody(p, token) { + p._reconstructActiveFormattingElements(); + p._insertElement(token, html.NS.HTML); +} +function startTagInBody(p, token) { + switch (token.tagID) { + case html.TAG_ID.I: + case html.TAG_ID.S: + case html.TAG_ID.B: + case html.TAG_ID.U: + case html.TAG_ID.EM: + case html.TAG_ID.TT: + case html.TAG_ID.BIG: + case html.TAG_ID.CODE: + case html.TAG_ID.FONT: + case html.TAG_ID.SMALL: + case html.TAG_ID.STRIKE: + case html.TAG_ID.STRONG: { + bStartTagInBody(p, token); + break; + } + case html.TAG_ID.A: { + aStartTagInBody(p, token); + break; + } + case html.TAG_ID.H1: + case html.TAG_ID.H2: + case html.TAG_ID.H3: + case html.TAG_ID.H4: + case html.TAG_ID.H5: + case html.TAG_ID.H6: { + numberedHeaderStartTagInBody(p, token); + break; + } + case html.TAG_ID.P: + case html.TAG_ID.DL: + case html.TAG_ID.OL: + case html.TAG_ID.UL: + case html.TAG_ID.DIV: + case html.TAG_ID.DIR: + case html.TAG_ID.NAV: + case html.TAG_ID.MAIN: + case html.TAG_ID.MENU: + case html.TAG_ID.ASIDE: + case html.TAG_ID.CENTER: + case html.TAG_ID.FIGURE: + case html.TAG_ID.FOOTER: + case html.TAG_ID.HEADER: + case html.TAG_ID.HGROUP: + case html.TAG_ID.DIALOG: + case html.TAG_ID.DETAILS: + case html.TAG_ID.ADDRESS: + case html.TAG_ID.ARTICLE: + case html.TAG_ID.SECTION: + case html.TAG_ID.SUMMARY: + case html.TAG_ID.FIELDSET: + case html.TAG_ID.BLOCKQUOTE: + case html.TAG_ID.FIGCAPTION: { + addressStartTagInBody(p, token); + break; + } + case html.TAG_ID.LI: + case html.TAG_ID.DD: + case html.TAG_ID.DT: { + listItemStartTagInBody(p, token); + break; + } + case html.TAG_ID.BR: + case html.TAG_ID.IMG: + case html.TAG_ID.WBR: + case html.TAG_ID.AREA: + case html.TAG_ID.EMBED: + case html.TAG_ID.KEYGEN: { + areaStartTagInBody(p, token); + break; + } + case html.TAG_ID.HR: { + hrStartTagInBody(p, token); + break; + } + case html.TAG_ID.RB: + case html.TAG_ID.RTC: { + rbStartTagInBody(p, token); + break; + } + case html.TAG_ID.RT: + case html.TAG_ID.RP: { + rtStartTagInBody(p, token); + break; + } + case html.TAG_ID.PRE: + case html.TAG_ID.LISTING: { + preStartTagInBody(p, token); + break; + } + case html.TAG_ID.XMP: { + xmpStartTagInBody(p, token); + break; + } + case html.TAG_ID.SVG: { + svgStartTagInBody(p, token); + break; + } + case html.TAG_ID.HTML: { + htmlStartTagInBody(p, token); + break; + } + case html.TAG_ID.BASE: + case html.TAG_ID.LINK: + case html.TAG_ID.META: + case html.TAG_ID.STYLE: + case html.TAG_ID.TITLE: + case html.TAG_ID.SCRIPT: + case html.TAG_ID.BGSOUND: + case html.TAG_ID.BASEFONT: + case html.TAG_ID.TEMPLATE: { + startTagInHead(p, token); + break; + } + case html.TAG_ID.BODY: { + bodyStartTagInBody(p, token); + break; + } + case html.TAG_ID.FORM: { + formStartTagInBody(p, token); + break; + } + case html.TAG_ID.NOBR: { + nobrStartTagInBody(p, token); + break; + } + case html.TAG_ID.MATH: { + mathStartTagInBody(p, token); + break; + } + case html.TAG_ID.TABLE: { + tableStartTagInBody(p, token); + break; + } + case html.TAG_ID.INPUT: { + inputStartTagInBody(p, token); + break; + } + case html.TAG_ID.PARAM: + case html.TAG_ID.TRACK: + case html.TAG_ID.SOURCE: { + paramStartTagInBody(p, token); + break; + } + case html.TAG_ID.IMAGE: { + imageStartTagInBody(p, token); + break; + } + case html.TAG_ID.BUTTON: { + buttonStartTagInBody(p, token); + break; + } + case html.TAG_ID.APPLET: + case html.TAG_ID.OBJECT: + case html.TAG_ID.MARQUEE: { + appletStartTagInBody(p, token); + break; + } + case html.TAG_ID.IFRAME: { + iframeStartTagInBody(p, token); + break; + } + case html.TAG_ID.SELECT: { + selectStartTagInBody(p, token); + break; + } + case html.TAG_ID.OPTION: + case html.TAG_ID.OPTGROUP: { + optgroupStartTagInBody(p, token); + break; + } + case html.TAG_ID.NOEMBED: { + noembedStartTagInBody(p, token); + break; + } + case html.TAG_ID.FRAMESET: { + framesetStartTagInBody(p, token); + break; + } + case html.TAG_ID.TEXTAREA: { + textareaStartTagInBody(p, token); + break; + } + case html.TAG_ID.NOSCRIPT: { + if (p.options.scriptingEnabled) { + noembedStartTagInBody(p, token); + } + else { + genericStartTagInBody(p, token); + } + break; + } + case html.TAG_ID.PLAINTEXT: { + plaintextStartTagInBody(p, token); + break; + } + case html.TAG_ID.COL: + case html.TAG_ID.TH: + case html.TAG_ID.TD: + case html.TAG_ID.TR: + case html.TAG_ID.HEAD: + case html.TAG_ID.FRAME: + case html.TAG_ID.TBODY: + case html.TAG_ID.TFOOT: + case html.TAG_ID.THEAD: + case html.TAG_ID.CAPTION: + case html.TAG_ID.COLGROUP: { + // Ignore token + break; + } + default: { + genericStartTagInBody(p, token); + } + } +} +function bodyEndTagInBody(p, token) { + if (p.openElements.hasInScope(html.TAG_ID.BODY)) { + p.insertionMode = InsertionMode.AFTER_BODY; + //NOTE: <body> is never popped from the stack, so we need to updated + //the end location explicitly. + if (p.options.sourceCodeLocationInfo) { + const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement(); + if (bodyElement) { + p._setEndLocation(bodyElement, token); + } + } + } +} +function htmlEndTagInBody(p, token) { + if (p.openElements.hasInScope(html.TAG_ID.BODY)) { + p.insertionMode = InsertionMode.AFTER_BODY; + endTagAfterBody(p, token); + } +} +function addressEndTagInBody(p, token) { + const tn = token.tagID; + if (p.openElements.hasInScope(tn)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(tn); + } +} +function formEndTagInBody(p) { + const inTemplate = p.openElements.tmplCount > 0; + const { formElement } = p; + if (!inTemplate) { + p.formElement = null; + } + if ((formElement || inTemplate) && p.openElements.hasInScope(html.TAG_ID.FORM)) { + p.openElements.generateImpliedEndTags(); + if (inTemplate) { + p.openElements.popUntilTagNamePopped(html.TAG_ID.FORM); + } + else if (formElement) { + p.openElements.remove(formElement); + } + } +} +function pEndTagInBody(p) { + if (!p.openElements.hasInButtonScope(html.TAG_ID.P)) { + p._insertFakeElement(html.TAG_NAMES.P, html.TAG_ID.P); + } + p._closePElement(); +} +function liEndTagInBody(p) { + if (p.openElements.hasInListItemScope(html.TAG_ID.LI)) { + p.openElements.generateImpliedEndTagsWithExclusion(html.TAG_ID.LI); + p.openElements.popUntilTagNamePopped(html.TAG_ID.LI); + } +} +function ddEndTagInBody(p, token) { + const tn = token.tagID; + if (p.openElements.hasInScope(tn)) { + p.openElements.generateImpliedEndTagsWithExclusion(tn); + p.openElements.popUntilTagNamePopped(tn); + } +} +function numberedHeaderEndTagInBody(p) { + if (p.openElements.hasNumberedHeaderInScope()) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilNumberedHeaderPopped(); + } +} +function appletEndTagInBody(p, token) { + const tn = token.tagID; + if (p.openElements.hasInScope(tn)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(tn); + p.activeFormattingElements.clearToLastMarker(); + } +} +function brEndTagInBody(p) { + p._reconstructActiveFormattingElements(); + p._insertFakeElement(html.TAG_NAMES.BR, html.TAG_ID.BR); + p.openElements.pop(); + p.framesetOk = false; +} +function genericEndTagInBody(p, token) { + const tn = token.tagName; + const tid = token.tagID; + for (let i = p.openElements.stackTop; i > 0; i--) { + const element = p.openElements.items[i]; + const elementId = p.openElements.tagIDs[i]; + // Compare the tag name here, as the tag might not be a known tag with an ID. + if (tid === elementId && (tid !== html.TAG_ID.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) { + p.openElements.generateImpliedEndTagsWithExclusion(tid); + if (p.openElements.stackTop >= i) + p.openElements.shortenToLength(i); + break; + } + if (p._isSpecialElement(element, elementId)) { + break; + } + } +} +function endTagInBody(p, token) { + switch (token.tagID) { + case html.TAG_ID.A: + case html.TAG_ID.B: + case html.TAG_ID.I: + case html.TAG_ID.S: + case html.TAG_ID.U: + case html.TAG_ID.EM: + case html.TAG_ID.TT: + case html.TAG_ID.BIG: + case html.TAG_ID.CODE: + case html.TAG_ID.FONT: + case html.TAG_ID.NOBR: + case html.TAG_ID.SMALL: + case html.TAG_ID.STRIKE: + case html.TAG_ID.STRONG: { + callAdoptionAgency(p, token); + break; + } + case html.TAG_ID.P: { + pEndTagInBody(p); + break; + } + case html.TAG_ID.DL: + case html.TAG_ID.UL: + case html.TAG_ID.OL: + case html.TAG_ID.DIR: + case html.TAG_ID.DIV: + case html.TAG_ID.NAV: + case html.TAG_ID.PRE: + case html.TAG_ID.MAIN: + case html.TAG_ID.MENU: + case html.TAG_ID.ASIDE: + case html.TAG_ID.BUTTON: + case html.TAG_ID.CENTER: + case html.TAG_ID.FIGURE: + case html.TAG_ID.FOOTER: + case html.TAG_ID.HEADER: + case html.TAG_ID.HGROUP: + case html.TAG_ID.DIALOG: + case html.TAG_ID.ADDRESS: + case html.TAG_ID.ARTICLE: + case html.TAG_ID.DETAILS: + case html.TAG_ID.SECTION: + case html.TAG_ID.SUMMARY: + case html.TAG_ID.LISTING: + case html.TAG_ID.FIELDSET: + case html.TAG_ID.BLOCKQUOTE: + case html.TAG_ID.FIGCAPTION: { + addressEndTagInBody(p, token); + break; + } + case html.TAG_ID.LI: { + liEndTagInBody(p); + break; + } + case html.TAG_ID.DD: + case html.TAG_ID.DT: { + ddEndTagInBody(p, token); + break; + } + case html.TAG_ID.H1: + case html.TAG_ID.H2: + case html.TAG_ID.H3: + case html.TAG_ID.H4: + case html.TAG_ID.H5: + case html.TAG_ID.H6: { + numberedHeaderEndTagInBody(p); + break; + } + case html.TAG_ID.BR: { + brEndTagInBody(p); + break; + } + case html.TAG_ID.BODY: { + bodyEndTagInBody(p, token); + break; + } + case html.TAG_ID.HTML: { + htmlEndTagInBody(p, token); + break; + } + case html.TAG_ID.FORM: { + formEndTagInBody(p); + break; + } + case html.TAG_ID.APPLET: + case html.TAG_ID.OBJECT: + case html.TAG_ID.MARQUEE: { + appletEndTagInBody(p, token); + break; + } + case html.TAG_ID.TEMPLATE: { + templateEndTagInHead(p, token); + break; + } + default: { + genericEndTagInBody(p, token); + } + } +} +function eofInBody(p, token) { + if (p.tmplInsertionModeStack.length > 0) { + eofInTemplate(p, token); + } + else { + stopParsing(p, token); + } +} +// The "text" insertion mode +//------------------------------------------------------------------ +function endTagInText(p, token) { + var _a; + if (token.tagID === html.TAG_ID.SCRIPT) { + (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current); + } + p.openElements.pop(); + p.insertionMode = p.originalInsertionMode; +} +function eofInText(p, token) { + p._err(token, errorCodes.ERR.eofInElementThatCanContainOnlyText); + p.openElements.pop(); + p.insertionMode = p.originalInsertionMode; + p.onEof(token); +} +// The "in table" insertion mode +//------------------------------------------------------------------ +function characterInTable(p, token$1) { + if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) { + p.pendingCharacterTokens.length = 0; + p.hasNonWhitespacePendingCharacterToken = false; + p.originalInsertionMode = p.insertionMode; + p.insertionMode = InsertionMode.IN_TABLE_TEXT; + switch (token$1.type) { + case token.TokenType.CHARACTER: { + characterInTableText(p, token$1); + break; + } + case token.TokenType.WHITESPACE_CHARACTER: { + whitespaceCharacterInTableText(p, token$1); + break; + } + // Ignore null + } + } + else { + tokenInTable(p, token$1); + } +} +function captionStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p.activeFormattingElements.insertMarker(); + p._insertElement(token, html.NS.HTML); + p.insertionMode = InsertionMode.IN_CAPTION; +} +function colgroupStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p._insertElement(token, html.NS.HTML); + p.insertionMode = InsertionMode.IN_COLUMN_GROUP; +} +function colStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p._insertFakeElement(html.TAG_NAMES.COLGROUP, html.TAG_ID.COLGROUP); + p.insertionMode = InsertionMode.IN_COLUMN_GROUP; + startTagInColumnGroup(p, token); +} +function tbodyStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p._insertElement(token, html.NS.HTML); + p.insertionMode = InsertionMode.IN_TABLE_BODY; +} +function tdStartTagInTable(p, token) { + p.openElements.clearBackToTableContext(); + p._insertFakeElement(html.TAG_NAMES.TBODY, html.TAG_ID.TBODY); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + startTagInTableBody(p, token); +} +function tableStartTagInTable(p, token) { + if (p.openElements.hasInTableScope(html.TAG_ID.TABLE)) { + p.openElements.popUntilTagNamePopped(html.TAG_ID.TABLE); + p._resetInsertionMode(); + p._processStartTag(token); + } +} +function inputStartTagInTable(p, token) { + if (isHiddenInput(token)) { + p._appendElement(token, html.NS.HTML); + } + else { + tokenInTable(p, token); + } + token.ackSelfClosing = true; +} +function formStartTagInTable(p, token) { + if (!p.formElement && p.openElements.tmplCount === 0) { + p._insertElement(token, html.NS.HTML); + p.formElement = p.openElements.current; + p.openElements.pop(); + } +} +function startTagInTable(p, token) { + switch (token.tagID) { + case html.TAG_ID.TD: + case html.TAG_ID.TH: + case html.TAG_ID.TR: { + tdStartTagInTable(p, token); + break; + } + case html.TAG_ID.STYLE: + case html.TAG_ID.SCRIPT: + case html.TAG_ID.TEMPLATE: { + startTagInHead(p, token); + break; + } + case html.TAG_ID.COL: { + colStartTagInTable(p, token); + break; + } + case html.TAG_ID.FORM: { + formStartTagInTable(p, token); + break; + } + case html.TAG_ID.TABLE: { + tableStartTagInTable(p, token); + break; + } + case html.TAG_ID.TBODY: + case html.TAG_ID.TFOOT: + case html.TAG_ID.THEAD: { + tbodyStartTagInTable(p, token); + break; + } + case html.TAG_ID.INPUT: { + inputStartTagInTable(p, token); + break; + } + case html.TAG_ID.CAPTION: { + captionStartTagInTable(p, token); + break; + } + case html.TAG_ID.COLGROUP: { + colgroupStartTagInTable(p, token); + break; + } + default: { + tokenInTable(p, token); + } + } +} +function endTagInTable(p, token) { + switch (token.tagID) { + case html.TAG_ID.TABLE: { + if (p.openElements.hasInTableScope(html.TAG_ID.TABLE)) { + p.openElements.popUntilTagNamePopped(html.TAG_ID.TABLE); + p._resetInsertionMode(); + } + break; + } + case html.TAG_ID.TEMPLATE: { + templateEndTagInHead(p, token); + break; + } + case html.TAG_ID.BODY: + case html.TAG_ID.CAPTION: + case html.TAG_ID.COL: + case html.TAG_ID.COLGROUP: + case html.TAG_ID.HTML: + case html.TAG_ID.TBODY: + case html.TAG_ID.TD: + case html.TAG_ID.TFOOT: + case html.TAG_ID.TH: + case html.TAG_ID.THEAD: + case html.TAG_ID.TR: { + // Ignore token + break; + } + default: { + tokenInTable(p, token); + } + } +} +function tokenInTable(p, token) { + const savedFosterParentingState = p.fosterParentingEnabled; + p.fosterParentingEnabled = true; + // Process token in `In Body` mode + modeInBody(p, token); + p.fosterParentingEnabled = savedFosterParentingState; +} +// The "in table text" insertion mode +//------------------------------------------------------------------ +function whitespaceCharacterInTableText(p, token) { + p.pendingCharacterTokens.push(token); +} +function characterInTableText(p, token) { + p.pendingCharacterTokens.push(token); + p.hasNonWhitespacePendingCharacterToken = true; +} +function tokenInTableText(p, token) { + let i = 0; + if (p.hasNonWhitespacePendingCharacterToken) { + for (; i < p.pendingCharacterTokens.length; i++) { + tokenInTable(p, p.pendingCharacterTokens[i]); + } + } + else { + for (; i < p.pendingCharacterTokens.length; i++) { + p._insertCharacters(p.pendingCharacterTokens[i]); + } + } + p.insertionMode = p.originalInsertionMode; + p._processToken(token); +} +// The "in caption" insertion mode +//------------------------------------------------------------------ +const TABLE_VOID_ELEMENTS = new Set([html.TAG_ID.CAPTION, html.TAG_ID.COL, html.TAG_ID.COLGROUP, html.TAG_ID.TBODY, html.TAG_ID.TD, html.TAG_ID.TFOOT, html.TAG_ID.TH, html.TAG_ID.THEAD, html.TAG_ID.TR]); +function startTagInCaption(p, token) { + const tn = token.tagID; + if (TABLE_VOID_ELEMENTS.has(tn)) { + if (p.openElements.hasInTableScope(html.TAG_ID.CAPTION)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(html.TAG_ID.CAPTION); + p.activeFormattingElements.clearToLastMarker(); + p.insertionMode = InsertionMode.IN_TABLE; + startTagInTable(p, token); + } + } + else { + startTagInBody(p, token); + } +} +function endTagInCaption(p, token) { + const tn = token.tagID; + switch (tn) { + case html.TAG_ID.CAPTION: + case html.TAG_ID.TABLE: { + if (p.openElements.hasInTableScope(html.TAG_ID.CAPTION)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(html.TAG_ID.CAPTION); + p.activeFormattingElements.clearToLastMarker(); + p.insertionMode = InsertionMode.IN_TABLE; + if (tn === html.TAG_ID.TABLE) { + endTagInTable(p, token); + } + } + break; + } + case html.TAG_ID.BODY: + case html.TAG_ID.COL: + case html.TAG_ID.COLGROUP: + case html.TAG_ID.HTML: + case html.TAG_ID.TBODY: + case html.TAG_ID.TD: + case html.TAG_ID.TFOOT: + case html.TAG_ID.TH: + case html.TAG_ID.THEAD: + case html.TAG_ID.TR: { + // Ignore token + break; + } + default: { + endTagInBody(p, token); + } + } +} +// The "in column group" insertion mode +//------------------------------------------------------------------ +function startTagInColumnGroup(p, token) { + switch (token.tagID) { + case html.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html.TAG_ID.COL: { + p._appendElement(token, html.NS.HTML); + token.ackSelfClosing = true; + break; + } + case html.TAG_ID.TEMPLATE: { + startTagInHead(p, token); + break; + } + default: { + tokenInColumnGroup(p, token); + } + } +} +function endTagInColumnGroup(p, token) { + switch (token.tagID) { + case html.TAG_ID.COLGROUP: { + if (p.openElements.currentTagId === html.TAG_ID.COLGROUP) { + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + } + break; + } + case html.TAG_ID.TEMPLATE: { + templateEndTagInHead(p, token); + break; + } + case html.TAG_ID.COL: { + // Ignore token + break; + } + default: { + tokenInColumnGroup(p, token); + } + } +} +function tokenInColumnGroup(p, token) { + if (p.openElements.currentTagId === html.TAG_ID.COLGROUP) { + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + p._processToken(token); + } +} +// The "in table body" insertion mode +//------------------------------------------------------------------ +function startTagInTableBody(p, token) { + switch (token.tagID) { + case html.TAG_ID.TR: { + p.openElements.clearBackToTableBodyContext(); + p._insertElement(token, html.NS.HTML); + p.insertionMode = InsertionMode.IN_ROW; + break; + } + case html.TAG_ID.TH: + case html.TAG_ID.TD: { + p.openElements.clearBackToTableBodyContext(); + p._insertFakeElement(html.TAG_NAMES.TR, html.TAG_ID.TR); + p.insertionMode = InsertionMode.IN_ROW; + startTagInRow(p, token); + break; + } + case html.TAG_ID.CAPTION: + case html.TAG_ID.COL: + case html.TAG_ID.COLGROUP: + case html.TAG_ID.TBODY: + case html.TAG_ID.TFOOT: + case html.TAG_ID.THEAD: { + if (p.openElements.hasTableBodyContextInTableScope()) { + p.openElements.clearBackToTableBodyContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + startTagInTable(p, token); + } + break; + } + default: { + startTagInTable(p, token); + } + } +} +function endTagInTableBody(p, token) { + const tn = token.tagID; + switch (token.tagID) { + case html.TAG_ID.TBODY: + case html.TAG_ID.TFOOT: + case html.TAG_ID.THEAD: { + if (p.openElements.hasInTableScope(tn)) { + p.openElements.clearBackToTableBodyContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + } + break; + } + case html.TAG_ID.TABLE: { + if (p.openElements.hasTableBodyContextInTableScope()) { + p.openElements.clearBackToTableBodyContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE; + endTagInTable(p, token); + } + break; + } + case html.TAG_ID.BODY: + case html.TAG_ID.CAPTION: + case html.TAG_ID.COL: + case html.TAG_ID.COLGROUP: + case html.TAG_ID.HTML: + case html.TAG_ID.TD: + case html.TAG_ID.TH: + case html.TAG_ID.TR: { + // Ignore token + break; + } + default: { + endTagInTable(p, token); + } + } +} +// The "in row" insertion mode +//------------------------------------------------------------------ +function startTagInRow(p, token) { + switch (token.tagID) { + case html.TAG_ID.TH: + case html.TAG_ID.TD: { + p.openElements.clearBackToTableRowContext(); + p._insertElement(token, html.NS.HTML); + p.insertionMode = InsertionMode.IN_CELL; + p.activeFormattingElements.insertMarker(); + break; + } + case html.TAG_ID.CAPTION: + case html.TAG_ID.COL: + case html.TAG_ID.COLGROUP: + case html.TAG_ID.TBODY: + case html.TAG_ID.TFOOT: + case html.TAG_ID.THEAD: + case html.TAG_ID.TR: { + if (p.openElements.hasInTableScope(html.TAG_ID.TR)) { + p.openElements.clearBackToTableRowContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + startTagInTableBody(p, token); + } + break; + } + default: { + startTagInTable(p, token); + } + } +} +function endTagInRow(p, token) { + switch (token.tagID) { + case html.TAG_ID.TR: { + if (p.openElements.hasInTableScope(html.TAG_ID.TR)) { + p.openElements.clearBackToTableRowContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + } + break; + } + case html.TAG_ID.TABLE: { + if (p.openElements.hasInTableScope(html.TAG_ID.TR)) { + p.openElements.clearBackToTableRowContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + endTagInTableBody(p, token); + } + break; + } + case html.TAG_ID.TBODY: + case html.TAG_ID.TFOOT: + case html.TAG_ID.THEAD: { + if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope(html.TAG_ID.TR)) { + p.openElements.clearBackToTableRowContext(); + p.openElements.pop(); + p.insertionMode = InsertionMode.IN_TABLE_BODY; + endTagInTableBody(p, token); + } + break; + } + case html.TAG_ID.BODY: + case html.TAG_ID.CAPTION: + case html.TAG_ID.COL: + case html.TAG_ID.COLGROUP: + case html.TAG_ID.HTML: + case html.TAG_ID.TD: + case html.TAG_ID.TH: { + // Ignore end tag + break; + } + default: { + endTagInTable(p, token); + } + } +} +// The "in cell" insertion mode +//------------------------------------------------------------------ +function startTagInCell(p, token) { + const tn = token.tagID; + if (TABLE_VOID_ELEMENTS.has(tn)) { + if (p.openElements.hasInTableScope(html.TAG_ID.TD) || p.openElements.hasInTableScope(html.TAG_ID.TH)) { + p._closeTableCell(); + startTagInRow(p, token); + } + } + else { + startTagInBody(p, token); + } +} +function endTagInCell(p, token) { + const tn = token.tagID; + switch (tn) { + case html.TAG_ID.TD: + case html.TAG_ID.TH: { + if (p.openElements.hasInTableScope(tn)) { + p.openElements.generateImpliedEndTags(); + p.openElements.popUntilTagNamePopped(tn); + p.activeFormattingElements.clearToLastMarker(); + p.insertionMode = InsertionMode.IN_ROW; + } + break; + } + case html.TAG_ID.TABLE: + case html.TAG_ID.TBODY: + case html.TAG_ID.TFOOT: + case html.TAG_ID.THEAD: + case html.TAG_ID.TR: { + if (p.openElements.hasInTableScope(tn)) { + p._closeTableCell(); + endTagInRow(p, token); + } + break; + } + case html.TAG_ID.BODY: + case html.TAG_ID.CAPTION: + case html.TAG_ID.COL: + case html.TAG_ID.COLGROUP: + case html.TAG_ID.HTML: { + // Ignore token + break; + } + default: { + endTagInBody(p, token); + } + } +} +// The "in select" insertion mode +//------------------------------------------------------------------ +function startTagInSelect(p, token) { + switch (token.tagID) { + case html.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html.TAG_ID.OPTION: { + if (p.openElements.currentTagId === html.TAG_ID.OPTION) { + p.openElements.pop(); + } + p._insertElement(token, html.NS.HTML); + break; + } + case html.TAG_ID.OPTGROUP: { + if (p.openElements.currentTagId === html.TAG_ID.OPTION) { + p.openElements.pop(); + } + if (p.openElements.currentTagId === html.TAG_ID.OPTGROUP) { + p.openElements.pop(); + } + p._insertElement(token, html.NS.HTML); + break; + } + case html.TAG_ID.INPUT: + case html.TAG_ID.KEYGEN: + case html.TAG_ID.TEXTAREA: + case html.TAG_ID.SELECT: { + if (p.openElements.hasInSelectScope(html.TAG_ID.SELECT)) { + p.openElements.popUntilTagNamePopped(html.TAG_ID.SELECT); + p._resetInsertionMode(); + if (token.tagID !== html.TAG_ID.SELECT) { + p._processStartTag(token); + } + } + break; + } + case html.TAG_ID.SCRIPT: + case html.TAG_ID.TEMPLATE: { + startTagInHead(p, token); + break; + } + // Do nothing + } +} +function endTagInSelect(p, token) { + switch (token.tagID) { + case html.TAG_ID.OPTGROUP: { + if (p.openElements.stackTop > 0 && + p.openElements.currentTagId === html.TAG_ID.OPTION && + p.openElements.tagIDs[p.openElements.stackTop - 1] === html.TAG_ID.OPTGROUP) { + p.openElements.pop(); + } + if (p.openElements.currentTagId === html.TAG_ID.OPTGROUP) { + p.openElements.pop(); + } + break; + } + case html.TAG_ID.OPTION: { + if (p.openElements.currentTagId === html.TAG_ID.OPTION) { + p.openElements.pop(); + } + break; + } + case html.TAG_ID.SELECT: { + if (p.openElements.hasInSelectScope(html.TAG_ID.SELECT)) { + p.openElements.popUntilTagNamePopped(html.TAG_ID.SELECT); + p._resetInsertionMode(); + } + break; + } + case html.TAG_ID.TEMPLATE: { + templateEndTagInHead(p, token); + break; + } + // Do nothing + } +} +// The "in select in table" insertion mode +//------------------------------------------------------------------ +function startTagInSelectInTable(p, token) { + const tn = token.tagID; + if (tn === html.TAG_ID.CAPTION || + tn === html.TAG_ID.TABLE || + tn === html.TAG_ID.TBODY || + tn === html.TAG_ID.TFOOT || + tn === html.TAG_ID.THEAD || + tn === html.TAG_ID.TR || + tn === html.TAG_ID.TD || + tn === html.TAG_ID.TH) { + p.openElements.popUntilTagNamePopped(html.TAG_ID.SELECT); + p._resetInsertionMode(); + p._processStartTag(token); + } + else { + startTagInSelect(p, token); + } +} +function endTagInSelectInTable(p, token) { + const tn = token.tagID; + if (tn === html.TAG_ID.CAPTION || + tn === html.TAG_ID.TABLE || + tn === html.TAG_ID.TBODY || + tn === html.TAG_ID.TFOOT || + tn === html.TAG_ID.THEAD || + tn === html.TAG_ID.TR || + tn === html.TAG_ID.TD || + tn === html.TAG_ID.TH) { + if (p.openElements.hasInTableScope(tn)) { + p.openElements.popUntilTagNamePopped(html.TAG_ID.SELECT); + p._resetInsertionMode(); + p.onEndTag(token); + } + } + else { + endTagInSelect(p, token); + } +} +// The "in template" insertion mode +//------------------------------------------------------------------ +function startTagInTemplate(p, token) { + switch (token.tagID) { + // First, handle tags that can start without a mode change + case html.TAG_ID.BASE: + case html.TAG_ID.BASEFONT: + case html.TAG_ID.BGSOUND: + case html.TAG_ID.LINK: + case html.TAG_ID.META: + case html.TAG_ID.NOFRAMES: + case html.TAG_ID.SCRIPT: + case html.TAG_ID.STYLE: + case html.TAG_ID.TEMPLATE: + case html.TAG_ID.TITLE: { + startTagInHead(p, token); + break; + } + // Re-process the token in the appropriate mode + case html.TAG_ID.CAPTION: + case html.TAG_ID.COLGROUP: + case html.TAG_ID.TBODY: + case html.TAG_ID.TFOOT: + case html.TAG_ID.THEAD: { + p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE; + p.insertionMode = InsertionMode.IN_TABLE; + startTagInTable(p, token); + break; + } + case html.TAG_ID.COL: { + p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP; + p.insertionMode = InsertionMode.IN_COLUMN_GROUP; + startTagInColumnGroup(p, token); + break; + } + case html.TAG_ID.TR: { + p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY; + p.insertionMode = InsertionMode.IN_TABLE_BODY; + startTagInTableBody(p, token); + break; + } + case html.TAG_ID.TD: + case html.TAG_ID.TH: { + p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW; + p.insertionMode = InsertionMode.IN_ROW; + startTagInRow(p, token); + break; + } + default: { + p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY; + p.insertionMode = InsertionMode.IN_BODY; + startTagInBody(p, token); + } + } +} +function endTagInTemplate(p, token) { + if (token.tagID === html.TAG_ID.TEMPLATE) { + templateEndTagInHead(p, token); + } +} +function eofInTemplate(p, token) { + if (p.openElements.tmplCount > 0) { + p.openElements.popUntilTagNamePopped(html.TAG_ID.TEMPLATE); + p.activeFormattingElements.clearToLastMarker(); + p.tmplInsertionModeStack.shift(); + p._resetInsertionMode(); + p.onEof(token); + } + else { + stopParsing(p, token); + } +} +// The "after body" insertion mode +//------------------------------------------------------------------ +function startTagAfterBody(p, token) { + if (token.tagID === html.TAG_ID.HTML) { + startTagInBody(p, token); + } + else { + tokenAfterBody(p, token); + } +} +function endTagAfterBody(p, token) { + var _a; + if (token.tagID === html.TAG_ID.HTML) { + if (!p.fragmentContext) { + p.insertionMode = InsertionMode.AFTER_AFTER_BODY; + } + //NOTE: <html> is never popped from the stack, so we need to updated + //the end location explicitly. + if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === html.TAG_ID.HTML) { + p._setEndLocation(p.openElements.items[0], token); + // Update the body element, if it doesn't have an end tag + const bodyElement = p.openElements.items[1]; + if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) { + p._setEndLocation(bodyElement, token); + } + } + } + else { + tokenAfterBody(p, token); + } +} +function tokenAfterBody(p, token) { + p.insertionMode = InsertionMode.IN_BODY; + modeInBody(p, token); +} +// The "in frameset" insertion mode +//------------------------------------------------------------------ +function startTagInFrameset(p, token) { + switch (token.tagID) { + case html.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html.TAG_ID.FRAMESET: { + p._insertElement(token, html.NS.HTML); + break; + } + case html.TAG_ID.FRAME: { + p._appendElement(token, html.NS.HTML); + token.ackSelfClosing = true; + break; + } + case html.TAG_ID.NOFRAMES: { + startTagInHead(p, token); + break; + } + // Do nothing + } +} +function endTagInFrameset(p, token) { + if (token.tagID === html.TAG_ID.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) { + p.openElements.pop(); + if (!p.fragmentContext && p.openElements.currentTagId !== html.TAG_ID.FRAMESET) { + p.insertionMode = InsertionMode.AFTER_FRAMESET; + } + } +} +// The "after frameset" insertion mode +//------------------------------------------------------------------ +function startTagAfterFrameset(p, token) { + switch (token.tagID) { + case html.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html.TAG_ID.NOFRAMES: { + startTagInHead(p, token); + break; + } + // Do nothing + } +} +function endTagAfterFrameset(p, token) { + if (token.tagID === html.TAG_ID.HTML) { + p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET; + } +} +// The "after after body" insertion mode +//------------------------------------------------------------------ +function startTagAfterAfterBody(p, token) { + if (token.tagID === html.TAG_ID.HTML) { + startTagInBody(p, token); + } + else { + tokenAfterAfterBody(p, token); + } +} +function tokenAfterAfterBody(p, token) { + p.insertionMode = InsertionMode.IN_BODY; + modeInBody(p, token); +} +// The "after after frameset" insertion mode +//------------------------------------------------------------------ +function startTagAfterAfterFrameset(p, token) { + switch (token.tagID) { + case html.TAG_ID.HTML: { + startTagInBody(p, token); + break; + } + case html.TAG_ID.NOFRAMES: { + startTagInHead(p, token); + break; + } + // Do nothing + } +} +// The rules for parsing tokens in foreign content +//------------------------------------------------------------------ +function nullCharacterInForeignContent(p, token) { + token.chars = unicode.REPLACEMENT_CHARACTER; + p._insertCharacters(token); +} +function characterInForeignContent(p, token) { + p._insertCharacters(token); + p.framesetOk = false; +} +function popUntilHtmlOrIntegrationPoint(p) { + while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== html.NS.HTML && + !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) { + p.openElements.pop(); + } +} +function startTagInForeignContent(p, token) { + if (foreignContent.causesExit(token)) { + popUntilHtmlOrIntegrationPoint(p); + p._startTagOutsideForeignContent(token); + } + else { + const current = p._getAdjustedCurrentElement(); + const currentNs = p.treeAdapter.getNamespaceURI(current); + if (currentNs === html.NS.MATHML) { + foreignContent.adjustTokenMathMLAttrs(token); + } + else if (currentNs === html.NS.SVG) { + foreignContent.adjustTokenSVGTagName(token); + foreignContent.adjustTokenSVGAttrs(token); + } + foreignContent.adjustTokenXMLAttrs(token); + if (token.selfClosing) { + p._appendElement(token, currentNs); + } + else { + p._insertElement(token, currentNs); + } + token.ackSelfClosing = true; + } +} +function endTagInForeignContent(p, token) { + if (token.tagID === html.TAG_ID.P || token.tagID === html.TAG_ID.BR) { + popUntilHtmlOrIntegrationPoint(p); + p._endTagOutsideForeignContent(token); + return; + } + for (let i = p.openElements.stackTop; i > 0; i--) { + const element = p.openElements.items[i]; + if (p.treeAdapter.getNamespaceURI(element) === html.NS.HTML) { + p._endTagOutsideForeignContent(token); + break; + } + const tagName = p.treeAdapter.getTagName(element); + if (tagName.toLowerCase() === token.tagName) { + //NOTE: update the token tag name for `_setEndLocation`. + token.tagName = tagName; + p.openElements.shortenToLength(i); + break; + } + } +} + +}); + +var serializer = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.serializeOuter = exports.serialize = void 0; + + + +// Sets +const VOID_ELEMENTS = new Set([ + html.TAG_NAMES.AREA, + html.TAG_NAMES.BASE, + html.TAG_NAMES.BASEFONT, + html.TAG_NAMES.BGSOUND, + html.TAG_NAMES.BR, + html.TAG_NAMES.COL, + html.TAG_NAMES.EMBED, + html.TAG_NAMES.FRAME, + html.TAG_NAMES.HR, + html.TAG_NAMES.IMG, + html.TAG_NAMES.INPUT, + html.TAG_NAMES.KEYGEN, + html.TAG_NAMES.LINK, + html.TAG_NAMES.META, + html.TAG_NAMES.PARAM, + html.TAG_NAMES.SOURCE, + html.TAG_NAMES.TRACK, + html.TAG_NAMES.WBR, +]); +function isVoidElement(node, options) { + return (options.treeAdapter.isElementNode(node) && + options.treeAdapter.getNamespaceURI(node) === html.NS.HTML && + VOID_ELEMENTS.has(options.treeAdapter.getTagName(node))); +} +const defaultOpts = { treeAdapter: _default$1.defaultTreeAdapter, scriptingEnabled: true }; +/** + * Serializes an AST node to an HTML string. + * + * @example + * + * ```js + * const parse5 = require('parse5'); + * + * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>'); + * + * // Serializes a document. + * const html = parse5.serialize(document); + * + * // Serializes the <html> element content. + * const str = parse5.serialize(document.childNodes[1]); + * + * console.log(str); //> '<head></head><body>Hi there!</body>' + * ``` + * + * @param node Node to serialize. + * @param options Serialization options. + */ +function serialize(node, options) { + const opts = Object.assign(Object.assign({}, defaultOpts), options); + if (isVoidElement(node, opts)) { + return ''; + } + return serializeChildNodes(node, opts); +} +exports.serialize = serialize; +/** + * Serializes an AST element node to an HTML string, including the element node. + * + * @example + * + * ```js + * const parse5 = require('parse5'); + * + * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>'); + * + * // Serializes the <div> element. + * const html = parse5.serializeOuter(document.childNodes[0]); + * + * console.log(str); //> '<div>Hello, <b>world</b>!</div>' + * ``` + * + * @param node Node to serialize. + * @param options Serialization options. + */ +function serializeOuter(node, options) { + const opts = Object.assign(Object.assign({}, defaultOpts), options); + return serializeNode(node, opts); +} +exports.serializeOuter = serializeOuter; +function serializeChildNodes(parentNode, options) { + let html$1 = ''; + // Get container of the child nodes + const container = options.treeAdapter.isElementNode(parentNode) && + options.treeAdapter.getTagName(parentNode) === html.TAG_NAMES.TEMPLATE && + options.treeAdapter.getNamespaceURI(parentNode) === html.NS.HTML + ? options.treeAdapter.getTemplateContent(parentNode) + : parentNode; + const childNodes = options.treeAdapter.getChildNodes(container); + if (childNodes) { + for (const currentNode of childNodes) { + html$1 += serializeNode(currentNode, options); + } + } + return html$1; +} +function serializeNode(node, options) { + if (options.treeAdapter.isElementNode(node)) { + return serializeElement(node, options); + } + if (options.treeAdapter.isTextNode(node)) { + return serializeTextNode(node, options); + } + if (options.treeAdapter.isCommentNode(node)) { + return serializeCommentNode(node, options); + } + if (options.treeAdapter.isDocumentTypeNode(node)) { + return serializeDocumentTypeNode(node, options); + } + // Return an empty string for unknown nodes + return ''; +} +function serializeElement(node, options) { + const tn = options.treeAdapter.getTagName(node); + return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`; +} +function serializeAttributes(node, { treeAdapter }) { + let html$1 = ''; + for (const attr of treeAdapter.getAttrList(node)) { + html$1 += ' '; + if (!attr.namespace) { + html$1 += attr.name; + } + else + switch (attr.namespace) { + case html.NS.XML: { + html$1 += `xml:${attr.name}`; + break; + } + case html.NS.XMLNS: { + if (attr.name !== 'xmlns') { + html$1 += 'xmlns:'; + } + html$1 += attr.name; + break; + } + case html.NS.XLINK: { + html$1 += `xlink:${attr.name}`; + break; + } + default: { + html$1 += `${attr.prefix}:${attr.name}`; + } + } + html$1 += `="${(0, escape_js_1.escapeAttribute)(attr.value)}"`; + } + return html$1; +} +function serializeTextNode(node, options) { + const { treeAdapter } = options; + const content = treeAdapter.getTextNodeContent(node); + const parent = treeAdapter.getParentNode(node); + const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent); + return parentTn && + treeAdapter.getNamespaceURI(parent) === html.NS.HTML && + (0, html.hasUnescapedText)(parentTn, options.scriptingEnabled) + ? content + : (0, escape_js_1.escapeText)(content); +} +function serializeCommentNode(node, { treeAdapter }) { + return `<!--${treeAdapter.getCommentNodeContent(node)}-->`; +} +function serializeDocumentTypeNode(node, { treeAdapter }) { + return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`; +} + +}); + +var cjs$1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parseFragment = exports.parse = exports.TokenizerMode = exports.Tokenizer = exports.Token = exports.html = exports.foreignContent = exports.ErrorCodes = exports.serializeOuter = exports.serialize = exports.Parser = exports.defaultTreeAdapter = void 0; + + +Object.defineProperty(exports, "defaultTreeAdapter", { enumerable: true, get: function () { return _default$1.defaultTreeAdapter; } }); +var index_js_2 = parser; +Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return index_js_2.Parser; } }); + +Object.defineProperty(exports, "serialize", { enumerable: true, get: function () { return serializer.serialize; } }); +Object.defineProperty(exports, "serializeOuter", { enumerable: true, get: function () { return serializer.serializeOuter; } }); + +Object.defineProperty(exports, "ErrorCodes", { enumerable: true, get: function () { return errorCodes.ERR; } }); +/** @internal */ +exports.foreignContent = foreignContent; +/** @internal */ +exports.html = html; +/** @internal */ +exports.Token = token; +/** @internal */ + +Object.defineProperty(exports, "Tokenizer", { enumerable: true, get: function () { return tokenizer.Tokenizer; } }); +Object.defineProperty(exports, "TokenizerMode", { enumerable: true, get: function () { return tokenizer.TokenizerMode; } }); +// Shorthands +/** + * Parses an HTML string. + * + * @param html Input HTML string. + * @param options Parsing options. + * @returns Document + * + * @example + * + * ```js + * const parse5 = require('parse5'); + * + * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>'); + * + * console.log(document.childNodes[1].tagName); //> 'html' + *``` + */ +function parse(html, options) { + return parser.Parser.parse(html, options); +} +exports.parse = parse; +function parseFragment(fragmentContext, html, options) { + if (typeof fragmentContext === 'string') { + options = html; + html = fragmentContext; + fragmentContext = null; + } + const parser$1 = parser.Parser.getFragmentParser(fragmentContext, options); + parser$1.tokenizer.write(html, true); + return parser$1.getFragment(); +} +exports.parseFragment = parseFragment; + +}); + +var cjs = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.adapter = exports.serializeDoctypeContent = void 0; + + +function createTextNode(value) { + return new domhandler_1.Text(value); +} +function enquoteDoctypeId(id) { + const quote = id.includes('"') ? "'" : '"'; + return quote + id + quote; +} +/** @internal */ +function serializeDoctypeContent(name, publicId, systemId) { + let str = '!DOCTYPE '; + if (name) { + str += name; + } + if (publicId) { + str += ` PUBLIC ${enquoteDoctypeId(publicId)}`; + } + else if (systemId) { + str += ' SYSTEM'; + } + if (systemId) { + str += ` ${enquoteDoctypeId(systemId)}`; + } + return str; +} +exports.serializeDoctypeContent = serializeDoctypeContent; +exports.adapter = { + // Re-exports from domhandler + isCommentNode: domhandler_1.isComment, + isElementNode: domhandler_1.isTag, + isTextNode: domhandler_1.isText, + //Node construction + createDocument() { + const node = new domhandler_1.Document([]); + node['x-mode'] = cjs$1.html.DOCUMENT_MODE.NO_QUIRKS; + return node; + }, + createDocumentFragment() { + return new domhandler_1.Document([]); + }, + createElement(tagName, namespaceURI, attrs) { + const attribs = Object.create(null); + const attribsNamespace = Object.create(null); + const attribsPrefix = Object.create(null); + for (let i = 0; i < attrs.length; i++) { + const attrName = attrs[i].name; + attribs[attrName] = attrs[i].value; + attribsNamespace[attrName] = attrs[i].namespace; + attribsPrefix[attrName] = attrs[i].prefix; + } + const node = new domhandler_1.Element(tagName, attribs, []); + node.namespace = namespaceURI; + node['x-attribsNamespace'] = attribsNamespace; + node['x-attribsPrefix'] = attribsPrefix; + return node; + }, + createCommentNode(data) { + return new domhandler_1.Comment(data); + }, + //Tree mutation + appendChild(parentNode, newNode) { + const prev = parentNode.children[parentNode.children.length - 1]; + if (prev) { + prev.next = newNode; + newNode.prev = prev; + } + parentNode.children.push(newNode); + newNode.parent = parentNode; + }, + insertBefore(parentNode, newNode, referenceNode) { + const insertionIdx = parentNode.children.indexOf(referenceNode); + const { prev } = referenceNode; + if (prev) { + prev.next = newNode; + newNode.prev = prev; + } + referenceNode.prev = newNode; + newNode.next = referenceNode; + parentNode.children.splice(insertionIdx, 0, newNode); + newNode.parent = parentNode; + }, + setTemplateContent(templateElement, contentElement) { + exports.adapter.appendChild(templateElement, contentElement); + }, + getTemplateContent(templateElement) { + return templateElement.children[0]; + }, + setDocumentType(document, name, publicId, systemId) { + const data = serializeDoctypeContent(name, publicId, systemId); + let doctypeNode = document.children.find((node) => (0, domhandler_1.isDirective)(node) && node.name === '!doctype'); + if (doctypeNode) { + doctypeNode.data = data !== null && data !== void 0 ? data : null; + } + else { + doctypeNode = new domhandler_1.ProcessingInstruction('!doctype', data); + exports.adapter.appendChild(document, doctypeNode); + } + doctypeNode['x-name'] = name !== null && name !== void 0 ? name : undefined; + doctypeNode['x-publicId'] = publicId !== null && publicId !== void 0 ? publicId : undefined; + doctypeNode['x-systemId'] = systemId !== null && systemId !== void 0 ? systemId : undefined; + }, + setDocumentMode(document, mode) { + document['x-mode'] = mode; + }, + getDocumentMode(document) { + return document['x-mode']; + }, + detachNode(node) { + if (node.parent) { + const idx = node.parent.children.indexOf(node); + const { prev, next } = node; + node.prev = null; + node.next = null; + if (prev) { + prev.next = next; + } + if (next) { + next.prev = prev; + } + node.parent.children.splice(idx, 1); + node.parent = null; + } + }, + insertText(parentNode, text) { + const lastChild = parentNode.children[parentNode.children.length - 1]; + if (lastChild && (0, domhandler_1.isText)(lastChild)) { + lastChild.data += text; + } + else { + exports.adapter.appendChild(parentNode, createTextNode(text)); + } + }, + insertTextBefore(parentNode, text, referenceNode) { + const prevNode = parentNode.children[parentNode.children.indexOf(referenceNode) - 1]; + if (prevNode && (0, domhandler_1.isText)(prevNode)) { + prevNode.data += text; + } + else { + exports.adapter.insertBefore(parentNode, createTextNode(text), referenceNode); + } + }, + adoptAttributes(recipient, attrs) { + for (let i = 0; i < attrs.length; i++) { + const attrName = attrs[i].name; + if (typeof recipient.attribs[attrName] === 'undefined') { + recipient.attribs[attrName] = attrs[i].value; + recipient['x-attribsNamespace'][attrName] = attrs[i].namespace; + recipient['x-attribsPrefix'][attrName] = attrs[i].prefix; + } + } + }, + //Tree traversing + getFirstChild(node) { + return node.children[0]; + }, + getChildNodes(node) { + return node.children; + }, + getParentNode(node) { + return node.parent; + }, + getAttrList(element) { + return element.attributes; + }, + //Node data + getTagName(element) { + return element.name; + }, + getNamespaceURI(element) { + return element.namespace; + }, + getTextNodeContent(textNode) { + return textNode.data; + }, + getCommentNodeContent(commentNode) { + return commentNode.data; + }, + getDocumentTypeNodeName(doctypeNode) { + var _a; + return (_a = doctypeNode['x-name']) !== null && _a !== void 0 ? _a : ''; + }, + getDocumentTypeNodePublicId(doctypeNode) { + var _a; + return (_a = doctypeNode['x-publicId']) !== null && _a !== void 0 ? _a : ''; + }, + getDocumentTypeNodeSystemId(doctypeNode) { + var _a; + return (_a = doctypeNode['x-systemId']) !== null && _a !== void 0 ? _a : ''; + }, + //Node types + isDocumentTypeNode(node) { + return (0, domhandler_1.isDirective)(node) && node.name === '!doctype'; + }, + // Source code location + setNodeSourceCodeLocation(node, location) { + if (location) { + node.startIndex = location.startOffset; + node.endIndex = location.endOffset; + } + node.sourceCodeLocation = location; + }, + getNodeSourceCodeLocation(node) { + return node.sourceCodeLocation; + }, + updateNodeSourceCodeLocation(node, endLocation) { + if (endLocation.endOffset != null) + node.endIndex = endLocation.endOffset; + node.sourceCodeLocation = Object.assign(Object.assign({}, node.sourceCodeLocation), endLocation); + }, +}; + +}); + +var parse5Adapter = createCommonjsModule(function (module, exports) { +var __spreadArray = (commonjsGlobal && commonjsGlobal.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.renderWithParse5 = exports.parseWithParse5 = void 0; + + + +/** + * Parse the content with `parse5` in the context of the given `ParentNode`. + * + * @param content - The content to parse. + * @param options - A set of options to use to parse. + * @param isDocument - Whether to parse the content as a full HTML document. + * @param context - The context in which to parse the content. + * @returns The parsed content. + */ +function parseWithParse5(content, options, isDocument, context) { + var opts = { + scriptingEnabled: typeof options.scriptingEnabled === 'boolean' + ? options.scriptingEnabled + : true, + treeAdapter: cjs.adapter, + sourceCodeLocationInfo: options.sourceCodeLocationInfo, + }; + return isDocument + ? (0, cjs$2.parse)(content, opts) + : (0, cjs$2.parseFragment)(context, content, opts); +} +exports.parseWithParse5 = parseWithParse5; +var renderOpts = { treeAdapter: cjs.adapter }; +/** + * Renders the given DOM tree with `parse5` and returns the result as a string. + * + * @param dom - The DOM tree to render. + * @returns The rendered document. + */ +function renderWithParse5(dom) { + var _a; + /* + * `dom-serializer` passes over the special "root" node and renders the + * node's children in its place. To mimic this behavior with `parse5`, an + * equivalent operation must be applied to the input array. + */ + var nodes = 'length' in dom ? dom : [dom]; + for (var index = 0; index < nodes.length; index += 1) { + var node = nodes[index]; + if ((0, domhandler_1.isDocument)(node)) { + (_a = Array.prototype.splice).call.apply(_a, __spreadArray([nodes, index, 1], node.children, false)); + } + } + var result = ''; + for (var index = 0; index < nodes.length; index += 1) { + var node = nodes[index]; + result += (0, cjs$2.serializeOuter)(node, renderOpts); + } + return result; +} +exports.renderWithParse5 = renderWithParse5; + +}); + +var Tokenizer_1 = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.QuoteType = void 0; + +var CharCodes; +(function (CharCodes) { + CharCodes[CharCodes["Tab"] = 9] = "Tab"; + CharCodes[CharCodes["NewLine"] = 10] = "NewLine"; + CharCodes[CharCodes["FormFeed"] = 12] = "FormFeed"; + CharCodes[CharCodes["CarriageReturn"] = 13] = "CarriageReturn"; + CharCodes[CharCodes["Space"] = 32] = "Space"; + CharCodes[CharCodes["ExclamationMark"] = 33] = "ExclamationMark"; + CharCodes[CharCodes["Number"] = 35] = "Number"; + CharCodes[CharCodes["Amp"] = 38] = "Amp"; + CharCodes[CharCodes["SingleQuote"] = 39] = "SingleQuote"; + CharCodes[CharCodes["DoubleQuote"] = 34] = "DoubleQuote"; + CharCodes[CharCodes["Dash"] = 45] = "Dash"; + CharCodes[CharCodes["Slash"] = 47] = "Slash"; + CharCodes[CharCodes["Zero"] = 48] = "Zero"; + CharCodes[CharCodes["Nine"] = 57] = "Nine"; + CharCodes[CharCodes["Semi"] = 59] = "Semi"; + CharCodes[CharCodes["Lt"] = 60] = "Lt"; + CharCodes[CharCodes["Eq"] = 61] = "Eq"; + CharCodes[CharCodes["Gt"] = 62] = "Gt"; + CharCodes[CharCodes["Questionmark"] = 63] = "Questionmark"; + CharCodes[CharCodes["UpperA"] = 65] = "UpperA"; + CharCodes[CharCodes["LowerA"] = 97] = "LowerA"; + CharCodes[CharCodes["UpperF"] = 70] = "UpperF"; + CharCodes[CharCodes["LowerF"] = 102] = "LowerF"; + CharCodes[CharCodes["UpperZ"] = 90] = "UpperZ"; + CharCodes[CharCodes["LowerZ"] = 122] = "LowerZ"; + CharCodes[CharCodes["LowerX"] = 120] = "LowerX"; + CharCodes[CharCodes["OpeningSquareBracket"] = 91] = "OpeningSquareBracket"; +})(CharCodes || (CharCodes = {})); +/** All the states the tokenizer can be in. */ +var State; +(function (State) { + State[State["Text"] = 1] = "Text"; + State[State["BeforeTagName"] = 2] = "BeforeTagName"; + State[State["InTagName"] = 3] = "InTagName"; + State[State["InSelfClosingTag"] = 4] = "InSelfClosingTag"; + State[State["BeforeClosingTagName"] = 5] = "BeforeClosingTagName"; + State[State["InClosingTagName"] = 6] = "InClosingTagName"; + State[State["AfterClosingTagName"] = 7] = "AfterClosingTagName"; + // Attributes + State[State["BeforeAttributeName"] = 8] = "BeforeAttributeName"; + State[State["InAttributeName"] = 9] = "InAttributeName"; + State[State["AfterAttributeName"] = 10] = "AfterAttributeName"; + State[State["BeforeAttributeValue"] = 11] = "BeforeAttributeValue"; + State[State["InAttributeValueDq"] = 12] = "InAttributeValueDq"; + State[State["InAttributeValueSq"] = 13] = "InAttributeValueSq"; + State[State["InAttributeValueNq"] = 14] = "InAttributeValueNq"; + // Declarations + State[State["BeforeDeclaration"] = 15] = "BeforeDeclaration"; + State[State["InDeclaration"] = 16] = "InDeclaration"; + // Processing instructions + State[State["InProcessingInstruction"] = 17] = "InProcessingInstruction"; + // Comments & CDATA + State[State["BeforeComment"] = 18] = "BeforeComment"; + State[State["CDATASequence"] = 19] = "CDATASequence"; + State[State["InSpecialComment"] = 20] = "InSpecialComment"; + State[State["InCommentLike"] = 21] = "InCommentLike"; + // Special tags + State[State["BeforeSpecialS"] = 22] = "BeforeSpecialS"; + State[State["SpecialStartSequence"] = 23] = "SpecialStartSequence"; + State[State["InSpecialTag"] = 24] = "InSpecialTag"; + State[State["BeforeEntity"] = 25] = "BeforeEntity"; + State[State["BeforeNumericEntity"] = 26] = "BeforeNumericEntity"; + State[State["InNamedEntity"] = 27] = "InNamedEntity"; + State[State["InNumericEntity"] = 28] = "InNumericEntity"; + State[State["InHexEntity"] = 29] = "InHexEntity"; +})(State || (State = {})); +function isWhitespace(c) { + return (c === CharCodes.Space || + c === CharCodes.NewLine || + c === CharCodes.Tab || + c === CharCodes.FormFeed || + c === CharCodes.CarriageReturn); +} +function isEndOfTagSection(c) { + return c === CharCodes.Slash || c === CharCodes.Gt || isWhitespace(c); +} +function isNumber(c) { + return c >= CharCodes.Zero && c <= CharCodes.Nine; +} +function isASCIIAlpha(c) { + return ((c >= CharCodes.LowerA && c <= CharCodes.LowerZ) || + (c >= CharCodes.UpperA && c <= CharCodes.UpperZ)); +} +function isHexDigit(c) { + return ((c >= CharCodes.UpperA && c <= CharCodes.UpperF) || + (c >= CharCodes.LowerA && c <= CharCodes.LowerF)); +} +var QuoteType; +(function (QuoteType) { + QuoteType[QuoteType["NoValue"] = 0] = "NoValue"; + QuoteType[QuoteType["Unquoted"] = 1] = "Unquoted"; + QuoteType[QuoteType["Single"] = 2] = "Single"; + QuoteType[QuoteType["Double"] = 3] = "Double"; +})(QuoteType = exports.QuoteType || (exports.QuoteType = {})); +/** + * Sequences used to match longer strings. + * + * We don't have `Script`, `Style`, or `Title` here. Instead, we re-use the *End + * sequences with an increased offset. + */ +var Sequences = { + Cdata: new Uint8Array([0x43, 0x44, 0x41, 0x54, 0x41, 0x5b]), + CdataEnd: new Uint8Array([0x5d, 0x5d, 0x3e]), + CommentEnd: new Uint8Array([0x2d, 0x2d, 0x3e]), + ScriptEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74]), + StyleEnd: new Uint8Array([0x3c, 0x2f, 0x73, 0x74, 0x79, 0x6c, 0x65]), + TitleEnd: new Uint8Array([0x3c, 0x2f, 0x74, 0x69, 0x74, 0x6c, 0x65]), // `</title` +}; +var Tokenizer = /** @class */ (function () { + function Tokenizer(_a, cbs) { + var _b = _a.xmlMode, xmlMode = _b === void 0 ? false : _b, _c = _a.decodeEntities, decodeEntities = _c === void 0 ? true : _c; + this.cbs = cbs; + /** The current state the tokenizer is in. */ + this.state = State.Text; + /** The read buffer. */ + this.buffer = ""; + /** The beginning of the section that is currently being read. */ + this.sectionStart = 0; + /** The index within the buffer that we are currently looking at. */ + this.index = 0; + /** Some behavior, eg. when decoding entities, is done while we are in another state. This keeps track of the other state type. */ + this.baseState = State.Text; + /** For special parsing behavior inside of script and style tags. */ + this.isSpecial = false; + /** Indicates whether the tokenizer has been paused. */ + this.running = true; + /** The offset of the current buffer. */ + this.offset = 0; + this.currentSequence = undefined; + this.sequenceIndex = 0; + this.trieIndex = 0; + this.trieCurrent = 0; + /** For named entities, the index of the value. For numeric entities, the code point. */ + this.entityResult = 0; + this.entityExcess = 0; + this.xmlMode = xmlMode; + this.decodeEntities = decodeEntities; + this.entityTrie = xmlMode ? decode_js_1.xmlDecodeTree : decode_js_1.htmlDecodeTree; + } + Tokenizer.prototype.reset = function () { + this.state = State.Text; + this.buffer = ""; + this.sectionStart = 0; + this.index = 0; + this.baseState = State.Text; + this.currentSequence = undefined; + this.running = true; + this.offset = 0; + }; + Tokenizer.prototype.write = function (chunk) { + this.offset += this.buffer.length; + this.buffer = chunk; + this.parse(); + }; + Tokenizer.prototype.end = function () { + if (this.running) + this.finish(); + }; + Tokenizer.prototype.pause = function () { + this.running = false; + }; + Tokenizer.prototype.resume = function () { + this.running = true; + if (this.index < this.buffer.length + this.offset) { + this.parse(); + } + }; + /** + * The current index within all of the written data. + */ + Tokenizer.prototype.getIndex = function () { + return this.index; + }; + /** + * The start of the current section. + */ + Tokenizer.prototype.getSectionStart = function () { + return this.sectionStart; + }; + Tokenizer.prototype.stateText = function (c) { + if (c === CharCodes.Lt || + (!this.decodeEntities && this.fastForwardTo(CharCodes.Lt))) { + if (this.index > this.sectionStart) { + this.cbs.ontext(this.sectionStart, this.index); + } + this.state = State.BeforeTagName; + this.sectionStart = this.index; + } + else if (this.decodeEntities && c === CharCodes.Amp) { + this.state = State.BeforeEntity; + } + }; + Tokenizer.prototype.stateSpecialStartSequence = function (c) { + var isEnd = this.sequenceIndex === this.currentSequence.length; + var isMatch = isEnd + ? // If we are at the end of the sequence, make sure the tag name has ended + isEndOfTagSection(c) + : // Otherwise, do a case-insensitive comparison + (c | 0x20) === this.currentSequence[this.sequenceIndex]; + if (!isMatch) { + this.isSpecial = false; + } + else if (!isEnd) { + this.sequenceIndex++; + return; + } + this.sequenceIndex = 0; + this.state = State.InTagName; + this.stateInTagName(c); + }; + /** Look for an end tag. For <title> tags, also decode entities. */ + Tokenizer.prototype.stateInSpecialTag = function (c) { + if (this.sequenceIndex === this.currentSequence.length) { + if (c === CharCodes.Gt || isWhitespace(c)) { + var endOfText = this.index - this.currentSequence.length; + if (this.sectionStart < endOfText) { + // Spoof the index so that reported locations match up. + var actualIndex = this.index; + this.index = endOfText; + this.cbs.ontext(this.sectionStart, endOfText); + this.index = actualIndex; + } + this.isSpecial = false; + this.sectionStart = endOfText + 2; // Skip over the `</` + this.stateInClosingTagName(c); + return; // We are done; skip the rest of the function. + } + this.sequenceIndex = 0; + } + if ((c | 0x20) === this.currentSequence[this.sequenceIndex]) { + this.sequenceIndex += 1; + } + else if (this.sequenceIndex === 0) { + if (this.currentSequence === Sequences.TitleEnd) { + // We have to parse entities in <title> tags. + if (this.decodeEntities && c === CharCodes.Amp) { + this.state = State.BeforeEntity; + } + } + else if (this.fastForwardTo(CharCodes.Lt)) { + // Outside of <title> tags, we can fast-forward. + this.sequenceIndex = 1; + } + } + else { + // If we see a `<`, set the sequence index to 1; useful for eg. `<</script>`. + this.sequenceIndex = Number(c === CharCodes.Lt); + } + }; + Tokenizer.prototype.stateCDATASequence = function (c) { + if (c === Sequences.Cdata[this.sequenceIndex]) { + if (++this.sequenceIndex === Sequences.Cdata.length) { + this.state = State.InCommentLike; + this.currentSequence = Sequences.CdataEnd; + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + } + } + else { + this.sequenceIndex = 0; + this.state = State.InDeclaration; + this.stateInDeclaration(c); // Reconsume the character + } + }; + /** + * When we wait for one specific character, we can speed things up + * by skipping through the buffer until we find it. + * + * @returns Whether the character was found. + */ + Tokenizer.prototype.fastForwardTo = function (c) { + while (++this.index < this.buffer.length + this.offset) { + if (this.buffer.charCodeAt(this.index - this.offset) === c) { + return true; + } + } + /* + * We increment the index at the end of the `parse` loop, + * so set it to `buffer.length - 1` here. + * + * TODO: Refactor `parse` to increment index before calling states. + */ + this.index = this.buffer.length + this.offset - 1; + return false; + }; + /** + * Comments and CDATA end with `-->` and `]]>`. + * + * Their common qualities are: + * - Their end sequences have a distinct character they start with. + * - That character is then repeated, so we have to check multiple repeats. + * - All characters but the start character of the sequence can be skipped. + */ + Tokenizer.prototype.stateInCommentLike = function (c) { + if (c === this.currentSequence[this.sequenceIndex]) { + if (++this.sequenceIndex === this.currentSequence.length) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, this.index, 2); + } + else { + this.cbs.oncomment(this.sectionStart, this.index, 2); + } + this.sequenceIndex = 0; + this.sectionStart = this.index + 1; + this.state = State.Text; + } + } + else if (this.sequenceIndex === 0) { + // Fast-forward to the first character of the sequence + if (this.fastForwardTo(this.currentSequence[0])) { + this.sequenceIndex = 1; + } + } + else if (c !== this.currentSequence[this.sequenceIndex - 1]) { + // Allow long sequences, eg. --->, ]]]> + this.sequenceIndex = 0; + } + }; + /** + * HTML only allows ASCII alpha characters (a-z and A-Z) at the beginning of a tag name. + * + * XML allows a lot more characters here (@see https://www.w3.org/TR/REC-xml/#NT-NameStartChar). + * We allow anything that wouldn't end the tag. + */ + Tokenizer.prototype.isTagStartChar = function (c) { + return this.xmlMode ? !isEndOfTagSection(c) : isASCIIAlpha(c); + }; + Tokenizer.prototype.startSpecial = function (sequence, offset) { + this.isSpecial = true; + this.currentSequence = sequence; + this.sequenceIndex = offset; + this.state = State.SpecialStartSequence; + }; + Tokenizer.prototype.stateBeforeTagName = function (c) { + if (c === CharCodes.ExclamationMark) { + this.state = State.BeforeDeclaration; + this.sectionStart = this.index + 1; + } + else if (c === CharCodes.Questionmark) { + this.state = State.InProcessingInstruction; + this.sectionStart = this.index + 1; + } + else if (this.isTagStartChar(c)) { + var lower = c | 0x20; + this.sectionStart = this.index; + if (!this.xmlMode && lower === Sequences.TitleEnd[2]) { + this.startSpecial(Sequences.TitleEnd, 3); + } + else { + this.state = + !this.xmlMode && lower === Sequences.ScriptEnd[2] + ? State.BeforeSpecialS + : State.InTagName; + } + } + else if (c === CharCodes.Slash) { + this.state = State.BeforeClosingTagName; + } + else { + this.state = State.Text; + this.stateText(c); + } + }; + Tokenizer.prototype.stateInTagName = function (c) { + if (isEndOfTagSection(c)) { + this.cbs.onopentagname(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = State.BeforeAttributeName; + this.stateBeforeAttributeName(c); + } + }; + Tokenizer.prototype.stateBeforeClosingTagName = function (c) { + if (isWhitespace(c)) ; + else if (c === CharCodes.Gt) { + this.state = State.Text; + } + else { + this.state = this.isTagStartChar(c) + ? State.InClosingTagName + : State.InSpecialComment; + this.sectionStart = this.index; + } + }; + Tokenizer.prototype.stateInClosingTagName = function (c) { + if (c === CharCodes.Gt || isWhitespace(c)) { + this.cbs.onclosetag(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = State.AfterClosingTagName; + this.stateAfterClosingTagName(c); + } + }; + Tokenizer.prototype.stateAfterClosingTagName = function (c) { + // Skip everything until ">" + if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) { + this.state = State.Text; + this.baseState = State.Text; + this.sectionStart = this.index + 1; + } + }; + Tokenizer.prototype.stateBeforeAttributeName = function (c) { + if (c === CharCodes.Gt) { + this.cbs.onopentagend(this.index); + if (this.isSpecial) { + this.state = State.InSpecialTag; + this.sequenceIndex = 0; + } + else { + this.state = State.Text; + } + this.baseState = this.state; + this.sectionStart = this.index + 1; + } + else if (c === CharCodes.Slash) { + this.state = State.InSelfClosingTag; + } + else if (!isWhitespace(c)) { + this.state = State.InAttributeName; + this.sectionStart = this.index; + } + }; + Tokenizer.prototype.stateInSelfClosingTag = function (c) { + if (c === CharCodes.Gt) { + this.cbs.onselfclosingtag(this.index); + this.state = State.Text; + this.baseState = State.Text; + this.sectionStart = this.index + 1; + this.isSpecial = false; // Reset special state, in case of self-closing special tags + } + else if (!isWhitespace(c)) { + this.state = State.BeforeAttributeName; + this.stateBeforeAttributeName(c); + } + }; + Tokenizer.prototype.stateInAttributeName = function (c) { + if (c === CharCodes.Eq || isEndOfTagSection(c)) { + this.cbs.onattribname(this.sectionStart, this.index); + this.sectionStart = -1; + this.state = State.AfterAttributeName; + this.stateAfterAttributeName(c); + } + }; + Tokenizer.prototype.stateAfterAttributeName = function (c) { + if (c === CharCodes.Eq) { + this.state = State.BeforeAttributeValue; + } + else if (c === CharCodes.Slash || c === CharCodes.Gt) { + this.cbs.onattribend(QuoteType.NoValue, this.index); + this.state = State.BeforeAttributeName; + this.stateBeforeAttributeName(c); + } + else if (!isWhitespace(c)) { + this.cbs.onattribend(QuoteType.NoValue, this.index); + this.state = State.InAttributeName; + this.sectionStart = this.index; + } + }; + Tokenizer.prototype.stateBeforeAttributeValue = function (c) { + if (c === CharCodes.DoubleQuote) { + this.state = State.InAttributeValueDq; + this.sectionStart = this.index + 1; + } + else if (c === CharCodes.SingleQuote) { + this.state = State.InAttributeValueSq; + this.sectionStart = this.index + 1; + } + else if (!isWhitespace(c)) { + this.sectionStart = this.index; + this.state = State.InAttributeValueNq; + this.stateInAttributeValueNoQuotes(c); // Reconsume token + } + }; + Tokenizer.prototype.handleInAttributeValue = function (c, quote) { + if (c === quote || + (!this.decodeEntities && this.fastForwardTo(quote))) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend(quote === CharCodes.DoubleQuote + ? QuoteType.Double + : QuoteType.Single, this.index); + this.state = State.BeforeAttributeName; + } + else if (this.decodeEntities && c === CharCodes.Amp) { + this.baseState = this.state; + this.state = State.BeforeEntity; + } + }; + Tokenizer.prototype.stateInAttributeValueDoubleQuotes = function (c) { + this.handleInAttributeValue(c, CharCodes.DoubleQuote); + }; + Tokenizer.prototype.stateInAttributeValueSingleQuotes = function (c) { + this.handleInAttributeValue(c, CharCodes.SingleQuote); + }; + Tokenizer.prototype.stateInAttributeValueNoQuotes = function (c) { + if (isWhitespace(c) || c === CharCodes.Gt) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = -1; + this.cbs.onattribend(QuoteType.Unquoted, this.index); + this.state = State.BeforeAttributeName; + this.stateBeforeAttributeName(c); + } + else if (this.decodeEntities && c === CharCodes.Amp) { + this.baseState = this.state; + this.state = State.BeforeEntity; + } + }; + Tokenizer.prototype.stateBeforeDeclaration = function (c) { + if (c === CharCodes.OpeningSquareBracket) { + this.state = State.CDATASequence; + this.sequenceIndex = 0; + } + else { + this.state = + c === CharCodes.Dash + ? State.BeforeComment + : State.InDeclaration; + } + }; + Tokenizer.prototype.stateInDeclaration = function (c) { + if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) { + this.cbs.ondeclaration(this.sectionStart, this.index); + this.state = State.Text; + this.sectionStart = this.index + 1; + } + }; + Tokenizer.prototype.stateInProcessingInstruction = function (c) { + if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) { + this.cbs.onprocessinginstruction(this.sectionStart, this.index); + this.state = State.Text; + this.sectionStart = this.index + 1; + } + }; + Tokenizer.prototype.stateBeforeComment = function (c) { + if (c === CharCodes.Dash) { + this.state = State.InCommentLike; + this.currentSequence = Sequences.CommentEnd; + // Allow short comments (eg. <!-->) + this.sequenceIndex = 2; + this.sectionStart = this.index + 1; + } + else { + this.state = State.InDeclaration; + } + }; + Tokenizer.prototype.stateInSpecialComment = function (c) { + if (c === CharCodes.Gt || this.fastForwardTo(CharCodes.Gt)) { + this.cbs.oncomment(this.sectionStart, this.index, 0); + this.state = State.Text; + this.sectionStart = this.index + 1; + } + }; + Tokenizer.prototype.stateBeforeSpecialS = function (c) { + var lower = c | 0x20; + if (lower === Sequences.ScriptEnd[3]) { + this.startSpecial(Sequences.ScriptEnd, 4); + } + else if (lower === Sequences.StyleEnd[3]) { + this.startSpecial(Sequences.StyleEnd, 4); + } + else { + this.state = State.InTagName; + this.stateInTagName(c); // Consume the token again + } + }; + Tokenizer.prototype.stateBeforeEntity = function (c) { + // Start excess with 1 to include the '&' + this.entityExcess = 1; + this.entityResult = 0; + if (c === CharCodes.Number) { + this.state = State.BeforeNumericEntity; + } + else if (c === CharCodes.Amp) ; + else { + this.trieIndex = 0; + this.trieCurrent = this.entityTrie[0]; + this.state = State.InNamedEntity; + this.stateInNamedEntity(c); + } + }; + Tokenizer.prototype.stateInNamedEntity = function (c) { + this.entityExcess += 1; + this.trieIndex = (0, decode_js_1.determineBranch)(this.entityTrie, this.trieCurrent, this.trieIndex + 1, c); + if (this.trieIndex < 0) { + this.emitNamedEntity(); + this.index--; + return; + } + this.trieCurrent = this.entityTrie[this.trieIndex]; + var masked = this.trieCurrent & decode_js_1.BinTrieFlags.VALUE_LENGTH; + // If the branch is a value, store it and continue + if (masked) { + // The mask is the number of bytes of the value, including the current byte. + var valueLength = (masked >> 14) - 1; + // If we have a legacy entity while parsing strictly, just skip the number of bytes + if (!this.allowLegacyEntity() && c !== CharCodes.Semi) { + this.trieIndex += valueLength; + } + else { + // Add 1 as we have already incremented the excess + var entityStart = this.index - this.entityExcess + 1; + if (entityStart > this.sectionStart) { + this.emitPartial(this.sectionStart, entityStart); + } + // If this is a surrogate pair, consume the next two bytes + this.entityResult = this.trieIndex; + this.trieIndex += valueLength; + this.entityExcess = 0; + this.sectionStart = this.index + 1; + if (valueLength === 0) { + this.emitNamedEntity(); + } + } + } + }; + Tokenizer.prototype.emitNamedEntity = function () { + this.state = this.baseState; + if (this.entityResult === 0) { + return; + } + var valueLength = (this.entityTrie[this.entityResult] & decode_js_1.BinTrieFlags.VALUE_LENGTH) >> + 14; + switch (valueLength) { + case 1: { + this.emitCodePoint(this.entityTrie[this.entityResult] & + ~decode_js_1.BinTrieFlags.VALUE_LENGTH); + break; + } + case 2: { + this.emitCodePoint(this.entityTrie[this.entityResult + 1]); + break; + } + case 3: { + this.emitCodePoint(this.entityTrie[this.entityResult + 1]); + this.emitCodePoint(this.entityTrie[this.entityResult + 2]); + } + } + }; + Tokenizer.prototype.stateBeforeNumericEntity = function (c) { + if ((c | 0x20) === CharCodes.LowerX) { + this.entityExcess++; + this.state = State.InHexEntity; + } + else { + this.state = State.InNumericEntity; + this.stateInNumericEntity(c); + } + }; + Tokenizer.prototype.emitNumericEntity = function (strict) { + var entityStart = this.index - this.entityExcess - 1; + var numberStart = entityStart + 2 + Number(this.state === State.InHexEntity); + if (numberStart !== this.index) { + // Emit leading data if any + if (entityStart > this.sectionStart) { + this.emitPartial(this.sectionStart, entityStart); + } + this.sectionStart = this.index + Number(strict); + this.emitCodePoint((0, decode_js_1.replaceCodePoint)(this.entityResult)); + } + this.state = this.baseState; + }; + Tokenizer.prototype.stateInNumericEntity = function (c) { + if (c === CharCodes.Semi) { + this.emitNumericEntity(true); + } + else if (isNumber(c)) { + this.entityResult = this.entityResult * 10 + (c - CharCodes.Zero); + this.entityExcess++; + } + else { + if (this.allowLegacyEntity()) { + this.emitNumericEntity(false); + } + else { + this.state = this.baseState; + } + this.index--; + } + }; + Tokenizer.prototype.stateInHexEntity = function (c) { + if (c === CharCodes.Semi) { + this.emitNumericEntity(true); + } + else if (isNumber(c)) { + this.entityResult = this.entityResult * 16 + (c - CharCodes.Zero); + this.entityExcess++; + } + else if (isHexDigit(c)) { + this.entityResult = + this.entityResult * 16 + ((c | 0x20) - CharCodes.LowerA + 10); + this.entityExcess++; + } + else { + if (this.allowLegacyEntity()) { + this.emitNumericEntity(false); + } + else { + this.state = this.baseState; + } + this.index--; + } + }; + Tokenizer.prototype.allowLegacyEntity = function () { + return (!this.xmlMode && + (this.baseState === State.Text || + this.baseState === State.InSpecialTag)); + }; + /** + * Remove data that has already been consumed from the buffer. + */ + Tokenizer.prototype.cleanup = function () { + // If we are inside of text or attributes, emit what we already have. + if (this.running && this.sectionStart !== this.index) { + if (this.state === State.Text || + (this.state === State.InSpecialTag && this.sequenceIndex === 0)) { + this.cbs.ontext(this.sectionStart, this.index); + this.sectionStart = this.index; + } + else if (this.state === State.InAttributeValueDq || + this.state === State.InAttributeValueSq || + this.state === State.InAttributeValueNq) { + this.cbs.onattribdata(this.sectionStart, this.index); + this.sectionStart = this.index; + } + } + }; + Tokenizer.prototype.shouldContinue = function () { + return this.index < this.buffer.length + this.offset && this.running; + }; + /** + * Iterates through the buffer, calling the function corresponding to the current state. + * + * States that are more likely to be hit are higher up, as a performance improvement. + */ + Tokenizer.prototype.parse = function () { + while (this.shouldContinue()) { + var c = this.buffer.charCodeAt(this.index - this.offset); + switch (this.state) { + case State.Text: { + this.stateText(c); + break; + } + case State.SpecialStartSequence: { + this.stateSpecialStartSequence(c); + break; + } + case State.InSpecialTag: { + this.stateInSpecialTag(c); + break; + } + case State.CDATASequence: { + this.stateCDATASequence(c); + break; + } + case State.InAttributeValueDq: { + this.stateInAttributeValueDoubleQuotes(c); + break; + } + case State.InAttributeName: { + this.stateInAttributeName(c); + break; + } + case State.InCommentLike: { + this.stateInCommentLike(c); + break; + } + case State.InSpecialComment: { + this.stateInSpecialComment(c); + break; + } + case State.BeforeAttributeName: { + this.stateBeforeAttributeName(c); + break; + } + case State.InTagName: { + this.stateInTagName(c); + break; + } + case State.InClosingTagName: { + this.stateInClosingTagName(c); + break; + } + case State.BeforeTagName: { + this.stateBeforeTagName(c); + break; + } + case State.AfterAttributeName: { + this.stateAfterAttributeName(c); + break; + } + case State.InAttributeValueSq: { + this.stateInAttributeValueSingleQuotes(c); + break; + } + case State.BeforeAttributeValue: { + this.stateBeforeAttributeValue(c); + break; + } + case State.BeforeClosingTagName: { + this.stateBeforeClosingTagName(c); + break; + } + case State.AfterClosingTagName: { + this.stateAfterClosingTagName(c); + break; + } + case State.BeforeSpecialS: { + this.stateBeforeSpecialS(c); + break; + } + case State.InAttributeValueNq: { + this.stateInAttributeValueNoQuotes(c); + break; + } + case State.InSelfClosingTag: { + this.stateInSelfClosingTag(c); + break; + } + case State.InDeclaration: { + this.stateInDeclaration(c); + break; + } + case State.BeforeDeclaration: { + this.stateBeforeDeclaration(c); + break; + } + case State.BeforeComment: { + this.stateBeforeComment(c); + break; + } + case State.InProcessingInstruction: { + this.stateInProcessingInstruction(c); + break; + } + case State.InNamedEntity: { + this.stateInNamedEntity(c); + break; + } + case State.BeforeEntity: { + this.stateBeforeEntity(c); + break; + } + case State.InHexEntity: { + this.stateInHexEntity(c); + break; + } + case State.InNumericEntity: { + this.stateInNumericEntity(c); + break; + } + default: { + // `this._state === State.BeforeNumericEntity` + this.stateBeforeNumericEntity(c); + } + } + this.index++; + } + this.cleanup(); + }; + Tokenizer.prototype.finish = function () { + if (this.state === State.InNamedEntity) { + this.emitNamedEntity(); + } + // If there is remaining data, emit it in a reasonable way + if (this.sectionStart < this.index) { + this.handleTrailingData(); + } + this.cbs.onend(); + }; + /** Handle any trailing data. */ + Tokenizer.prototype.handleTrailingData = function () { + var endIndex = this.buffer.length + this.offset; + if (this.state === State.InCommentLike) { + if (this.currentSequence === Sequences.CdataEnd) { + this.cbs.oncdata(this.sectionStart, endIndex, 0); + } + else { + this.cbs.oncomment(this.sectionStart, endIndex, 0); + } + } + else if (this.state === State.InNumericEntity && + this.allowLegacyEntity()) { + this.emitNumericEntity(false); + // All trailing data will have been consumed + } + else if (this.state === State.InHexEntity && + this.allowLegacyEntity()) { + this.emitNumericEntity(false); + // All trailing data will have been consumed + } + else if (this.state === State.InTagName || + this.state === State.BeforeAttributeName || + this.state === State.BeforeAttributeValue || + this.state === State.AfterAttributeName || + this.state === State.InAttributeName || + this.state === State.InAttributeValueSq || + this.state === State.InAttributeValueDq || + this.state === State.InAttributeValueNq || + this.state === State.InClosingTagName) ; + else { + this.cbs.ontext(this.sectionStart, endIndex); + } + }; + Tokenizer.prototype.emitPartial = function (start, endIndex) { + if (this.baseState !== State.Text && + this.baseState !== State.InSpecialTag) { + this.cbs.onattribdata(start, endIndex); + } + else { + this.cbs.ontext(start, endIndex); + } + }; + Tokenizer.prototype.emitCodePoint = function (cp) { + if (this.baseState !== State.Text && + this.baseState !== State.InSpecialTag) { + this.cbs.onattribentity(cp); + } + else { + this.cbs.ontextentity(cp); + } + }; + return Tokenizer; +}()); +exports.default = Tokenizer; + +}); + +var Tokenizer_js_1 = Tokenizer_1; + +var Parser_1 = createCommonjsModule(function (module, exports) { +var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Parser = void 0; +var Tokenizer_js_1$1 = __importStar(Tokenizer_js_1); + +var formTags = new Set([ + "input", + "option", + "optgroup", + "select", + "button", + "datalist", + "textarea", +]); +var pTag = new Set(["p"]); +var tableSectionTags = new Set(["thead", "tbody"]); +var ddtTags = new Set(["dd", "dt"]); +var rtpTags = new Set(["rt", "rp"]); +var openImpliesClose = new Map([ + ["tr", new Set(["tr", "th", "td"])], + ["th", new Set(["th"])], + ["td", new Set(["thead", "th", "td"])], + ["body", new Set(["head", "link", "script"])], + ["li", new Set(["li"])], + ["p", pTag], + ["h1", pTag], + ["h2", pTag], + ["h3", pTag], + ["h4", pTag], + ["h5", pTag], + ["h6", pTag], + ["select", formTags], + ["input", formTags], + ["output", formTags], + ["button", formTags], + ["datalist", formTags], + ["textarea", formTags], + ["option", new Set(["option"])], + ["optgroup", new Set(["optgroup", "option"])], + ["dd", ddtTags], + ["dt", ddtTags], + ["address", pTag], + ["article", pTag], + ["aside", pTag], + ["blockquote", pTag], + ["details", pTag], + ["div", pTag], + ["dl", pTag], + ["fieldset", pTag], + ["figcaption", pTag], + ["figure", pTag], + ["footer", pTag], + ["form", pTag], + ["header", pTag], + ["hr", pTag], + ["main", pTag], + ["nav", pTag], + ["ol", pTag], + ["pre", pTag], + ["section", pTag], + ["table", pTag], + ["ul", pTag], + ["rt", rtpTags], + ["rp", rtpTags], + ["tbody", tableSectionTags], + ["tfoot", tableSectionTags], +]); +var voidElements = new Set([ + "area", + "base", + "basefont", + "br", + "col", + "command", + "embed", + "frame", + "hr", + "img", + "input", + "isindex", + "keygen", + "link", + "meta", + "param", + "source", + "track", + "wbr", +]); +var foreignContextElements = new Set(["math", "svg"]); +var htmlIntegrationElements = new Set([ + "mi", + "mo", + "mn", + "ms", + "mtext", + "annotation-xml", + "foreignobject", + "desc", + "title", +]); +var reNameEnd = /\s|\//; +var Parser = /** @class */ (function () { + function Parser(cbs, options) { + if (options === void 0) { options = {}; } + var _a, _b, _c, _d, _e; + this.options = options; + /** The start index of the last event. */ + this.startIndex = 0; + /** The end index of the last event. */ + this.endIndex = 0; + /** + * Store the start index of the current open tag, + * so we can update the start index for attributes. + */ + this.openTagStart = 0; + this.tagname = ""; + this.attribname = ""; + this.attribvalue = ""; + this.attribs = null; + this.stack = []; + this.foreignContext = []; + this.buffers = []; + this.bufferOffset = 0; + /** The index of the last written buffer. Used when resuming after a `pause()`. */ + this.writeIndex = 0; + /** Indicates whether the parser has finished running / `.end` has been called. */ + this.ended = false; + this.cbs = cbs !== null && cbs !== void 0 ? cbs : {}; + this.lowerCaseTagNames = (_a = options.lowerCaseTags) !== null && _a !== void 0 ? _a : !options.xmlMode; + this.lowerCaseAttributeNames = + (_b = options.lowerCaseAttributeNames) !== null && _b !== void 0 ? _b : !options.xmlMode; + this.tokenizer = new ((_c = options.Tokenizer) !== null && _c !== void 0 ? _c : Tokenizer_js_1$1.default)(this.options, this); + (_e = (_d = this.cbs).onparserinit) === null || _e === void 0 ? void 0 : _e.call(_d, this); + } + // Tokenizer event handlers + /** @internal */ + Parser.prototype.ontext = function (start, endIndex) { + var _a, _b; + var data = this.getSlice(start, endIndex); + this.endIndex = endIndex - 1; + (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, data); + this.startIndex = endIndex; + }; + /** @internal */ + Parser.prototype.ontextentity = function (cp) { + var _a, _b; + /* + * Entities can be emitted on the character, or directly after. + * We use the section start here to get accurate indices. + */ + var index = this.tokenizer.getSectionStart(); + this.endIndex = index - 1; + (_b = (_a = this.cbs).ontext) === null || _b === void 0 ? void 0 : _b.call(_a, (0, decode_js_1.fromCodePoint)(cp)); + this.startIndex = index; + }; + Parser.prototype.isVoidElement = function (name) { + return !this.options.xmlMode && voidElements.has(name); + }; + /** @internal */ + Parser.prototype.onopentagname = function (start, endIndex) { + this.endIndex = endIndex; + var name = this.getSlice(start, endIndex); + if (this.lowerCaseTagNames) { + name = name.toLowerCase(); + } + this.emitOpenTag(name); + }; + Parser.prototype.emitOpenTag = function (name) { + var _a, _b, _c, _d; + this.openTagStart = this.startIndex; + this.tagname = name; + var impliesClose = !this.options.xmlMode && openImpliesClose.get(name); + if (impliesClose) { + while (this.stack.length > 0 && + impliesClose.has(this.stack[this.stack.length - 1])) { + var element = this.stack.pop(); + (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, element, true); + } + } + if (!this.isVoidElement(name)) { + this.stack.push(name); + if (foreignContextElements.has(name)) { + this.foreignContext.push(true); + } + else if (htmlIntegrationElements.has(name)) { + this.foreignContext.push(false); + } + } + (_d = (_c = this.cbs).onopentagname) === null || _d === void 0 ? void 0 : _d.call(_c, name); + if (this.cbs.onopentag) + this.attribs = {}; + }; + Parser.prototype.endOpenTag = function (isImplied) { + var _a, _b; + this.startIndex = this.openTagStart; + if (this.attribs) { + (_b = (_a = this.cbs).onopentag) === null || _b === void 0 ? void 0 : _b.call(_a, this.tagname, this.attribs, isImplied); + this.attribs = null; + } + if (this.cbs.onclosetag && this.isVoidElement(this.tagname)) { + this.cbs.onclosetag(this.tagname, true); + } + this.tagname = ""; + }; + /** @internal */ + Parser.prototype.onopentagend = function (endIndex) { + this.endIndex = endIndex; + this.endOpenTag(false); + // Set `startIndex` for next node + this.startIndex = endIndex + 1; + }; + /** @internal */ + Parser.prototype.onclosetag = function (start, endIndex) { + var _a, _b, _c, _d, _e, _f; + this.endIndex = endIndex; + var name = this.getSlice(start, endIndex); + if (this.lowerCaseTagNames) { + name = name.toLowerCase(); + } + if (foreignContextElements.has(name) || + htmlIntegrationElements.has(name)) { + this.foreignContext.pop(); + } + if (!this.isVoidElement(name)) { + var pos = this.stack.lastIndexOf(name); + if (pos !== -1) { + if (this.cbs.onclosetag) { + var count = this.stack.length - pos; + while (count--) { + // We know the stack has sufficient elements. + this.cbs.onclosetag(this.stack.pop(), count !== 0); + } + } + else + this.stack.length = pos; + } + else if (!this.options.xmlMode && name === "p") { + // Implicit open before close + this.emitOpenTag("p"); + this.closeCurrentTag(true); + } + } + else if (!this.options.xmlMode && name === "br") { + // We can't use `emitOpenTag` for implicit open, as `br` would be implicitly closed. + (_b = (_a = this.cbs).onopentagname) === null || _b === void 0 ? void 0 : _b.call(_a, "br"); + (_d = (_c = this.cbs).onopentag) === null || _d === void 0 ? void 0 : _d.call(_c, "br", {}, true); + (_f = (_e = this.cbs).onclosetag) === null || _f === void 0 ? void 0 : _f.call(_e, "br", false); + } + // Set `startIndex` for next node + this.startIndex = endIndex + 1; + }; + /** @internal */ + Parser.prototype.onselfclosingtag = function (endIndex) { + this.endIndex = endIndex; + if (this.options.xmlMode || + this.options.recognizeSelfClosing || + this.foreignContext[this.foreignContext.length - 1]) { + this.closeCurrentTag(false); + // Set `startIndex` for next node + this.startIndex = endIndex + 1; + } + else { + // Ignore the fact that the tag is self-closing. + this.onopentagend(endIndex); + } + }; + Parser.prototype.closeCurrentTag = function (isOpenImplied) { + var _a, _b; + var name = this.tagname; + this.endOpenTag(isOpenImplied); + // Self-closing tags will be on the top of the stack + if (this.stack[this.stack.length - 1] === name) { + // If the opening tag isn't implied, the closing tag has to be implied. + (_b = (_a = this.cbs).onclosetag) === null || _b === void 0 ? void 0 : _b.call(_a, name, !isOpenImplied); + this.stack.pop(); + } + }; + /** @internal */ + Parser.prototype.onattribname = function (start, endIndex) { + this.startIndex = start; + var name = this.getSlice(start, endIndex); + this.attribname = this.lowerCaseAttributeNames + ? name.toLowerCase() + : name; + }; + /** @internal */ + Parser.prototype.onattribdata = function (start, endIndex) { + this.attribvalue += this.getSlice(start, endIndex); + }; + /** @internal */ + Parser.prototype.onattribentity = function (cp) { + this.attribvalue += (0, decode_js_1.fromCodePoint)(cp); + }; + /** @internal */ + Parser.prototype.onattribend = function (quote, endIndex) { + var _a, _b; + this.endIndex = endIndex; + (_b = (_a = this.cbs).onattribute) === null || _b === void 0 ? void 0 : _b.call(_a, this.attribname, this.attribvalue, quote === Tokenizer_js_1$1.QuoteType.Double + ? '"' + : quote === Tokenizer_js_1$1.QuoteType.Single + ? "'" + : quote === Tokenizer_js_1$1.QuoteType.NoValue + ? undefined + : null); + if (this.attribs && + !Object.prototype.hasOwnProperty.call(this.attribs, this.attribname)) { + this.attribs[this.attribname] = this.attribvalue; + } + this.attribvalue = ""; + }; + Parser.prototype.getInstructionName = function (value) { + var index = value.search(reNameEnd); + var name = index < 0 ? value : value.substr(0, index); + if (this.lowerCaseTagNames) { + name = name.toLowerCase(); + } + return name; + }; + /** @internal */ + Parser.prototype.ondeclaration = function (start, endIndex) { + this.endIndex = endIndex; + var value = this.getSlice(start, endIndex); + if (this.cbs.onprocessinginstruction) { + var name = this.getInstructionName(value); + this.cbs.onprocessinginstruction("!".concat(name), "!".concat(value)); + } + // Set `startIndex` for next node + this.startIndex = endIndex + 1; + }; + /** @internal */ + Parser.prototype.onprocessinginstruction = function (start, endIndex) { + this.endIndex = endIndex; + var value = this.getSlice(start, endIndex); + if (this.cbs.onprocessinginstruction) { + var name = this.getInstructionName(value); + this.cbs.onprocessinginstruction("?".concat(name), "?".concat(value)); + } + // Set `startIndex` for next node + this.startIndex = endIndex + 1; + }; + /** @internal */ + Parser.prototype.oncomment = function (start, endIndex, offset) { + var _a, _b, _c, _d; + this.endIndex = endIndex; + (_b = (_a = this.cbs).oncomment) === null || _b === void 0 ? void 0 : _b.call(_a, this.getSlice(start, endIndex - offset)); + (_d = (_c = this.cbs).oncommentend) === null || _d === void 0 ? void 0 : _d.call(_c); + // Set `startIndex` for next node + this.startIndex = endIndex + 1; + }; + /** @internal */ + Parser.prototype.oncdata = function (start, endIndex, offset) { + var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k; + this.endIndex = endIndex; + var value = this.getSlice(start, endIndex - offset); + if (this.options.xmlMode || this.options.recognizeCDATA) { + (_b = (_a = this.cbs).oncdatastart) === null || _b === void 0 ? void 0 : _b.call(_a); + (_d = (_c = this.cbs).ontext) === null || _d === void 0 ? void 0 : _d.call(_c, value); + (_f = (_e = this.cbs).oncdataend) === null || _f === void 0 ? void 0 : _f.call(_e); + } + else { + (_h = (_g = this.cbs).oncomment) === null || _h === void 0 ? void 0 : _h.call(_g, "[CDATA[".concat(value, "]]")); + (_k = (_j = this.cbs).oncommentend) === null || _k === void 0 ? void 0 : _k.call(_j); + } + // Set `startIndex` for next node + this.startIndex = endIndex + 1; + }; + /** @internal */ + Parser.prototype.onend = function () { + var _a, _b; + if (this.cbs.onclosetag) { + // Set the end index for all remaining tags + this.endIndex = this.startIndex; + for (var index = this.stack.length; index > 0; this.cbs.onclosetag(this.stack[--index], true)) + ; + } + (_b = (_a = this.cbs).onend) === null || _b === void 0 ? void 0 : _b.call(_a); + }; + /** + * Resets the parser to a blank state, ready to parse a new HTML document + */ + Parser.prototype.reset = function () { + var _a, _b, _c, _d; + (_b = (_a = this.cbs).onreset) === null || _b === void 0 ? void 0 : _b.call(_a); + this.tokenizer.reset(); + this.tagname = ""; + this.attribname = ""; + this.attribs = null; + this.stack.length = 0; + this.startIndex = 0; + this.endIndex = 0; + (_d = (_c = this.cbs).onparserinit) === null || _d === void 0 ? void 0 : _d.call(_c, this); + this.buffers.length = 0; + this.bufferOffset = 0; + this.writeIndex = 0; + this.ended = false; + }; + /** + * Resets the parser, then parses a complete document and + * pushes it to the handler. + * + * @param data Document to parse. + */ + Parser.prototype.parseComplete = function (data) { + this.reset(); + this.end(data); + }; + Parser.prototype.getSlice = function (start, end) { + while (start - this.bufferOffset >= this.buffers[0].length) { + this.shiftBuffer(); + } + var slice = this.buffers[0].slice(start - this.bufferOffset, end - this.bufferOffset); + while (end - this.bufferOffset > this.buffers[0].length) { + this.shiftBuffer(); + slice += this.buffers[0].slice(0, end - this.bufferOffset); + } + return slice; + }; + Parser.prototype.shiftBuffer = function () { + this.bufferOffset += this.buffers[0].length; + this.writeIndex--; + this.buffers.shift(); + }; + /** + * Parses a chunk of data and calls the corresponding callbacks. + * + * @param chunk Chunk to parse. + */ + Parser.prototype.write = function (chunk) { + var _a, _b; + if (this.ended) { + (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(".write() after done!")); + return; + } + this.buffers.push(chunk); + if (this.tokenizer.running) { + this.tokenizer.write(chunk); + this.writeIndex++; + } + }; + /** + * Parses the end of the buffer and clears the stack, calls onend. + * + * @param chunk Optional final chunk to parse. + */ + Parser.prototype.end = function (chunk) { + var _a, _b; + if (this.ended) { + (_b = (_a = this.cbs).onerror) === null || _b === void 0 ? void 0 : _b.call(_a, new Error(".end() after done!")); + return; + } + if (chunk) + this.write(chunk); + this.ended = true; + this.tokenizer.end(); + }; + /** + * Pauses parsing. The parser won't emit events until `resume` is called. + */ + Parser.prototype.pause = function () { + this.tokenizer.pause(); + }; + /** + * Resumes parsing after `pause` was called. + */ + Parser.prototype.resume = function () { + this.tokenizer.resume(); + while (this.tokenizer.running && + this.writeIndex < this.buffers.length) { + this.tokenizer.write(this.buffers[this.writeIndex++]); + } + if (this.ended) + this.tokenizer.end(); + }; + /** + * Alias of `write`, for backwards compatibility. + * + * @param chunk Chunk to parse. + * @deprecated + */ + Parser.prototype.parseChunk = function (chunk) { + this.write(chunk); + }; + /** + * Alias of `end`, for backwards compatibility. + * + * @param chunk Optional final chunk to parse. + * @deprecated + */ + Parser.prototype.done = function (chunk) { + this.end(chunk); + }; + return Parser; +}()); +exports.Parser = Parser; + +}); + +var Parser_js_1 = Parser_1; + +var lib$1 = createCommonjsModule(function (module, exports) { +var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DomUtils = exports.parseFeed = exports.getFeed = exports.ElementType = exports.Tokenizer = exports.createDomStream = exports.parseDOM = exports.parseDocument = exports.DefaultHandler = exports.DomHandler = exports.Parser = void 0; + +var Parser_js_2 = Parser_js_1; +Object.defineProperty(exports, "Parser", { enumerable: true, get: function () { return Parser_js_2.Parser; } }); + +var domhandler_2 = domhandler_1; +Object.defineProperty(exports, "DomHandler", { enumerable: true, get: function () { return domhandler_2.DomHandler; } }); +// Old name for DomHandler +Object.defineProperty(exports, "DefaultHandler", { enumerable: true, get: function () { return domhandler_2.DomHandler; } }); +// Helper methods +/** + * Parses the data, returns the resulting document. + * + * @param data The data that should be parsed. + * @param options Optional options for the parser and DOM builder. + */ +function parseDocument(data, options) { + var handler = new domhandler_1.DomHandler(undefined, options); + new Parser_js_1.Parser(handler, options).end(data); + return handler.root; +} +exports.parseDocument = parseDocument; +/** + * Parses data, returns an array of the root nodes. + * + * Note that the root nodes still have a `Document` node as their parent. + * Use `parseDocument` to get the `Document` node instead. + * + * @param data The data that should be parsed. + * @param options Optional options for the parser and DOM builder. + * @deprecated Use `parseDocument` instead. + */ +function parseDOM(data, options) { + return parseDocument(data, options).children; +} +exports.parseDOM = parseDOM; +/** + * Creates a parser instance, with an attached DOM handler. + * + * @param callback A callback that will be called once parsing has been completed. + * @param options Optional options for the parser and DOM builder. + * @param elementCallback An optional callback that will be called every time a tag has been completed inside of the DOM. + */ +function createDomStream(callback, options, elementCallback) { + var handler = new domhandler_1.DomHandler(callback, options, elementCallback); + return new Parser_js_1.Parser(handler, options); +} +exports.createDomStream = createDomStream; + +Object.defineProperty(exports, "Tokenizer", { enumerable: true, get: function () { return __importDefault(Tokenizer_js_1).default; } }); +/* + * All of the following exports exist for backwards-compatibility. + * They should probably be removed eventually. + */ +exports.ElementType = __importStar(require$$0$5); + +var domutils_2 = domutils_1; +Object.defineProperty(exports, "getFeed", { enumerable: true, get: function () { return domutils_2.getFeed; } }); +var parseFeedDefaultOptions = { xmlMode: true }; +/** + * Parse a feed. + * + * @param feed The feed that should be parsed, as a string. + * @param options Optionally, options for parsing. When using this, you should set `xmlMode` to `true`. + */ +function parseFeed(feed, options) { + if (options === void 0) { options = parseFeedDefaultOptions; } + return (0, domutils_1.getFeed)(parseDOM(feed, options)); +} +exports.parseFeed = parseFeed; +exports.DomUtils = __importStar(domutils_1); + +}); + +var htmlparser2_1 = lib$1; + +var lib = createCommonjsModule(function (module, exports) { +var __createBinding = (commonjsGlobal && commonjsGlobal.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (commonjsGlobal && commonjsGlobal.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __exportStar = (commonjsGlobal && commonjsGlobal.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +var __importStar = (commonjsGlobal && commonjsGlobal.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.root = exports.parseHTML = exports.merge = exports.contains = exports.text = exports.xml = exports.html = exports.load = void 0; +/** + * Types used in signatures of Cheerio methods. + * + * @category Cheerio + */ +__exportStar(types, exports); + + + +var dom_serializer_1 = __importDefault(require$$1$1); + +var parse$1 = (0, parse.getParse)(function (content, options, isDocument, context) { + return options.xmlMode || options._useHtmlParser2 + ? (0, htmlparser2_1.parseDocument)(content, options) + : (0, parse5Adapter.parseWithParse5)(content, options, isDocument, context); +}); +// Duplicate docs due to https://github.com/TypeStrong/typedoc/issues/1616 +/** + * Create a querying function, bound to a document created from the provided markup. + * + * Note that similar to web browser contexts, this operation may introduce + * `<html>`, `<head>`, and `<body>` elements; set `isDocument` to `false` to + * switch to fragment mode and disable this. + * + * @param content - Markup to be loaded. + * @param options - Options for the created instance. + * @param isDocument - Allows parser to be switched to fragment mode. + * @returns The loaded document. + * @see {@link https://cheerio.js.org#loading} for additional usage information. + */ +exports.load = (0, load.getLoad)(parse$1, function (dom, options) { + return options.xmlMode || options._useHtmlParser2 + ? (0, dom_serializer_1.default)(dom, options) + : (0, parse5Adapter.renderWithParse5)(dom); +}); +/** + * The default cheerio instance. + * + * @deprecated Use the function returned by `load` instead. + */ +exports.default = (0, exports.load)([]); + +Object.defineProperty(exports, "html", { enumerable: true, get: function () { return _static.html; } }); +Object.defineProperty(exports, "xml", { enumerable: true, get: function () { return _static.xml; } }); +Object.defineProperty(exports, "text", { enumerable: true, get: function () { return _static.text; } }); +var staticMethods = __importStar(_static); +/** + * In order to promote consistency with the jQuery library, users are encouraged + * to instead use the static method of the same name. + * + * @deprecated + * @example + * + * ```js + * const $ = cheerio.load('<div><p></p></div>'); + * + * $.contains($('div').get(0), $('p').get(0)); + * //=> true + * + * $.contains($('p').get(0), $('div').get(0)); + * //=> false + * ``` + * + * @returns {boolean} + */ +exports.contains = staticMethods.contains; +/** + * In order to promote consistency with the jQuery library, users are encouraged + * to instead use the static method of the same name. + * + * @deprecated + * @example + * + * ```js + * const $ = cheerio.load(''); + * + * $.merge([1, 2], [3, 4]); + * //=> [1, 2, 3, 4] + * ``` + */ +exports.merge = staticMethods.merge; +/** + * In order to promote consistency with the jQuery library, users are encouraged + * to instead use the static method of the same name as it is defined on the + * "loaded" Cheerio factory function. + * + * @deprecated See {@link static/parseHTML}. + * @example + * + * ```js + * const $ = cheerio.load(''); + * $.parseHTML('<b>markup</b>'); + * ``` + */ +exports.parseHTML = staticMethods.parseHTML; +/** + * Users seeking to access the top-level element of a parsed document should + * instead use the `root` static method of a "loaded" Cheerio function. + * + * @deprecated + * @example + * + * ```js + * const $ = cheerio.load(''); + * $.root(); + * ``` + */ +exports.root = staticMethods.root; + +}); + +var browserPonyfill = createCommonjsModule(function (module, exports) { +var global = typeof self !== 'undefined' ? self : commonjsGlobal; +var __self__ = (function () { +function F() { +this.fetch = false; +this.DOMException = global.DOMException; +} +F.prototype = global; +return new F(); +})(); +(function(self) { + +((function (exports) { + + var support = { + searchParams: 'URLSearchParams' in self, + iterable: 'Symbol' in self && 'iterator' in Symbol, + blob: + 'FileReader' in self && + 'Blob' in self && + (function() { + try { + new Blob(); + return true + } catch (e) { + return false + } + })(), + formData: 'FormData' in self, + arrayBuffer: 'ArrayBuffer' in self + }; + + function isDataView(obj) { + return obj && DataView.prototype.isPrototypeOf(obj) + } + + if (support.arrayBuffer) { + var viewClasses = [ + '[object Int8Array]', + '[object Uint8Array]', + '[object Uint8ClampedArray]', + '[object Int16Array]', + '[object Uint16Array]', + '[object Int32Array]', + '[object Uint32Array]', + '[object Float32Array]', + '[object Float64Array]' + ]; + + var isArrayBufferView = + ArrayBuffer.isView || + function(obj) { + return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1 + }; + } + + function normalizeName(name) { + if (typeof name !== 'string') { + name = String(name); + } + if (/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(name)) { + throw new TypeError('Invalid character in header field name') + } + return name.toLowerCase() + } + + function normalizeValue(value) { + if (typeof value !== 'string') { + value = String(value); + } + return value + } + + // Build a destructive iterator for the value list + function iteratorFor(items) { + var iterator = { + next: function() { + var value = items.shift(); + return {done: value === undefined, value: value} + } + }; + + if (support.iterable) { + iterator[Symbol.iterator] = function() { + return iterator + }; + } + + return iterator + } + + function Headers(headers) { + this.map = {}; + + if (headers instanceof Headers) { + headers.forEach(function(value, name) { + this.append(name, value); + }, this); + } else if (Array.isArray(headers)) { + headers.forEach(function(header) { + this.append(header[0], header[1]); + }, this); + } else if (headers) { + Object.getOwnPropertyNames(headers).forEach(function(name) { + this.append(name, headers[name]); + }, this); + } + } + + Headers.prototype.append = function(name, value) { + name = normalizeName(name); + value = normalizeValue(value); + var oldValue = this.map[name]; + this.map[name] = oldValue ? oldValue + ', ' + value : value; + }; + + Headers.prototype['delete'] = function(name) { + delete this.map[normalizeName(name)]; + }; + + Headers.prototype.get = function(name) { + name = normalizeName(name); + return this.has(name) ? this.map[name] : null + }; + + Headers.prototype.has = function(name) { + return this.map.hasOwnProperty(normalizeName(name)) + }; + + Headers.prototype.set = function(name, value) { + this.map[normalizeName(name)] = normalizeValue(value); + }; + + Headers.prototype.forEach = function(callback, thisArg) { + for (var name in this.map) { + if (this.map.hasOwnProperty(name)) { + callback.call(thisArg, this.map[name], name, this); + } + } + }; + + Headers.prototype.keys = function() { + var items = []; + this.forEach(function(value, name) { + items.push(name); + }); + return iteratorFor(items) + }; + + Headers.prototype.values = function() { + var items = []; + this.forEach(function(value) { + items.push(value); + }); + return iteratorFor(items) + }; + + Headers.prototype.entries = function() { + var items = []; + this.forEach(function(value, name) { + items.push([name, value]); + }); + return iteratorFor(items) + }; + + if (support.iterable) { + Headers.prototype[Symbol.iterator] = Headers.prototype.entries; + } + + function consumed(body) { + if (body.bodyUsed) { + return Promise.reject(new TypeError('Already read')) + } + body.bodyUsed = true; + } + + function fileReaderReady(reader) { + return new Promise(function(resolve, reject) { + reader.onload = function() { + resolve(reader.result); + }; + reader.onerror = function() { + reject(reader.error); + }; + }) + } + + function readBlobAsArrayBuffer(blob) { + var reader = new FileReader(); + var promise = fileReaderReady(reader); + reader.readAsArrayBuffer(blob); + return promise + } + + function readBlobAsText(blob) { + var reader = new FileReader(); + var promise = fileReaderReady(reader); + reader.readAsText(blob); + return promise + } + + function readArrayBufferAsText(buf) { + var view = new Uint8Array(buf); + var chars = new Array(view.length); + + for (var i = 0; i < view.length; i++) { + chars[i] = String.fromCharCode(view[i]); + } + return chars.join('') + } + + function bufferClone(buf) { + if (buf.slice) { + return buf.slice(0) + } else { + var view = new Uint8Array(buf.byteLength); + view.set(new Uint8Array(buf)); + return view.buffer + } + } + + function Body() { + this.bodyUsed = false; + + this._initBody = function(body) { + this._bodyInit = body; + if (!body) { + this._bodyText = ''; + } else if (typeof body === 'string') { + this._bodyText = body; + } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { + this._bodyBlob = body; + } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { + this._bodyFormData = body; + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this._bodyText = body.toString(); + } else if (support.arrayBuffer && support.blob && isDataView(body)) { + this._bodyArrayBuffer = bufferClone(body.buffer); + // IE 10-11 can't handle a DataView body. + this._bodyInit = new Blob([this._bodyArrayBuffer]); + } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) { + this._bodyArrayBuffer = bufferClone(body); + } else { + this._bodyText = body = Object.prototype.toString.call(body); + } + + if (!this.headers.get('content-type')) { + if (typeof body === 'string') { + this.headers.set('content-type', 'text/plain;charset=UTF-8'); + } else if (this._bodyBlob && this._bodyBlob.type) { + this.headers.set('content-type', this._bodyBlob.type); + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8'); + } + } + }; + + if (support.blob) { + this.blob = function() { + var rejected = consumed(this); + if (rejected) { + return rejected + } + + if (this._bodyBlob) { + return Promise.resolve(this._bodyBlob) + } else if (this._bodyArrayBuffer) { + return Promise.resolve(new Blob([this._bodyArrayBuffer])) + } else if (this._bodyFormData) { + throw new Error('could not read FormData body as blob') + } else { + return Promise.resolve(new Blob([this._bodyText])) + } + }; + + this.arrayBuffer = function() { + if (this._bodyArrayBuffer) { + return consumed(this) || Promise.resolve(this._bodyArrayBuffer) + } else { + return this.blob().then(readBlobAsArrayBuffer) + } + }; + } + + this.text = function() { + var rejected = consumed(this); + if (rejected) { + return rejected + } + + if (this._bodyBlob) { + return readBlobAsText(this._bodyBlob) + } else if (this._bodyArrayBuffer) { + return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer)) + } else if (this._bodyFormData) { + throw new Error('could not read FormData body as text') + } else { + return Promise.resolve(this._bodyText) + } + }; + + if (support.formData) { + this.formData = function() { + return this.text().then(decode) + }; + } + + this.json = function() { + return this.text().then(JSON.parse) + }; + + return this + } + + // HTTP methods whose capitalization should be normalized + var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']; + + function normalizeMethod(method) { + var upcased = method.toUpperCase(); + return methods.indexOf(upcased) > -1 ? upcased : method + } + + function Request(input, options) { + options = options || {}; + var body = options.body; + + if (input instanceof Request) { + if (input.bodyUsed) { + throw new TypeError('Already read') + } + this.url = input.url; + this.credentials = input.credentials; + if (!options.headers) { + this.headers = new Headers(input.headers); + } + this.method = input.method; + this.mode = input.mode; + this.signal = input.signal; + if (!body && input._bodyInit != null) { + body = input._bodyInit; + input.bodyUsed = true; + } + } else { + this.url = String(input); + } + + this.credentials = options.credentials || this.credentials || 'same-origin'; + if (options.headers || !this.headers) { + this.headers = new Headers(options.headers); + } + this.method = normalizeMethod(options.method || this.method || 'GET'); + this.mode = options.mode || this.mode || null; + this.signal = options.signal || this.signal; + this.referrer = null; + + if ((this.method === 'GET' || this.method === 'HEAD') && body) { + throw new TypeError('Body not allowed for GET or HEAD requests') + } + this._initBody(body); + } + + Request.prototype.clone = function() { + return new Request(this, {body: this._bodyInit}) + }; + + function decode(body) { + var form = new FormData(); + body + .trim() + .split('&') + .forEach(function(bytes) { + if (bytes) { + var split = bytes.split('='); + var name = split.shift().replace(/\+/g, ' '); + var value = split.join('=').replace(/\+/g, ' '); + form.append(decodeURIComponent(name), decodeURIComponent(value)); + } + }); + return form + } + + function parseHeaders(rawHeaders) { + var headers = new Headers(); + // Replace instances of \r\n and \n followed by at least one space or horizontal tab with a space + // https://tools.ietf.org/html/rfc7230#section-3.2 + var preProcessedHeaders = rawHeaders.replace(/\r?\n[\t ]+/g, ' '); + preProcessedHeaders.split(/\r?\n/).forEach(function(line) { + var parts = line.split(':'); + var key = parts.shift().trim(); + if (key) { + var value = parts.join(':').trim(); + headers.append(key, value); + } + }); + return headers + } + + Body.call(Request.prototype); + + function Response(bodyInit, options) { + if (!options) { + options = {}; + } + + this.type = 'default'; + this.status = options.status === undefined ? 200 : options.status; + this.ok = this.status >= 200 && this.status < 300; + this.statusText = 'statusText' in options ? options.statusText : 'OK'; + this.headers = new Headers(options.headers); + this.url = options.url || ''; + this._initBody(bodyInit); + } + + Body.call(Response.prototype); + + Response.prototype.clone = function() { + return new Response(this._bodyInit, { + status: this.status, + statusText: this.statusText, + headers: new Headers(this.headers), + url: this.url + }) + }; + + Response.error = function() { + var response = new Response(null, {status: 0, statusText: ''}); + response.type = 'error'; + return response + }; + + var redirectStatuses = [301, 302, 303, 307, 308]; + + Response.redirect = function(url, status) { + if (redirectStatuses.indexOf(status) === -1) { + throw new RangeError('Invalid status code') + } + + return new Response(null, {status: status, headers: {location: url}}) + }; + + exports.DOMException = self.DOMException; + try { + new exports.DOMException(); + } catch (err) { + exports.DOMException = function(message, name) { + this.message = message; + this.name = name; + var error = Error(message); + this.stack = error.stack; + }; + exports.DOMException.prototype = Object.create(Error.prototype); + exports.DOMException.prototype.constructor = exports.DOMException; + } + + function fetch(input, init) { + return new Promise(function(resolve, reject) { + var request = new Request(input, init); + + if (request.signal && request.signal.aborted) { + return reject(new exports.DOMException('Aborted', 'AbortError')) + } + + var xhr = new XMLHttpRequest(); + + function abortXhr() { + xhr.abort(); + } + + xhr.onload = function() { + var options = { + status: xhr.status, + statusText: xhr.statusText, + headers: parseHeaders(xhr.getAllResponseHeaders() || '') + }; + options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL'); + var body = 'response' in xhr ? xhr.response : xhr.responseText; + resolve(new Response(body, options)); + }; + + xhr.onerror = function() { + reject(new TypeError('Network request failed')); + }; + + xhr.ontimeout = function() { + reject(new TypeError('Network request failed')); + }; + + xhr.onabort = function() { + reject(new exports.DOMException('Aborted', 'AbortError')); + }; + + xhr.open(request.method, request.url, true); + + if (request.credentials === 'include') { + xhr.withCredentials = true; + } else if (request.credentials === 'omit') { + xhr.withCredentials = false; + } + + if ('responseType' in xhr && support.blob) { + xhr.responseType = 'blob'; + } + + request.headers.forEach(function(value, name) { + xhr.setRequestHeader(name, value); + }); + + if (request.signal) { + request.signal.addEventListener('abort', abortXhr); + + xhr.onreadystatechange = function() { + // DONE (success or failure) + if (xhr.readyState === 4) { + request.signal.removeEventListener('abort', abortXhr); + } + }; + } + + xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit); + }) + } + + fetch.polyfill = true; + + if (!self.fetch) { + self.fetch = fetch; + self.Headers = Headers; + self.Request = Request; + self.Response = Response; + } + + exports.Headers = Headers; + exports.Request = Request; + exports.Response = Response; + exports.fetch = fetch; + + Object.defineProperty(exports, '__esModule', { value: true }); + + return exports; + +}))({}); +})(__self__); +__self__.fetch.ponyfill = true; +// Remove "polyfill" property added by whatwg-fetch +delete __self__.fetch.polyfill; +// Choose between native implementation (global) or custom implementation (__self__) +// var ctx = global.fetch ? global : __self__; +var ctx = __self__; // this line disable service worker support temporarily +exports = ctx.fetch; // To enable: import fetch from 'cross-fetch' +exports.default = ctx.fetch; // For TypeScript consumers without esModuleInterop. +exports.fetch = ctx.fetch; // To enable: import {fetch} from 'cross-fetch' +exports.Headers = ctx.Headers; +exports.Request = ctx.Request; +exports.Response = ctx.Response; +module.exports = exports; +}); + +/*globals self, window */ + +/*eslint-disable @mysticatea/prettier */ +const { AbortController, AbortSignal } = + typeof self !== "undefined" ? self : + typeof window !== "undefined" ? window : + /* otherwise */ undefined; +/*eslint-enable @mysticatea/prettier */ + +var browser = AbortController; +var AbortSignal_1 = AbortSignal; +var _default = AbortController; +browser.AbortSignal = AbortSignal_1; +browser.default = _default; + +var constants = createCommonjsModule(function (module, exports) { +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CONSTANTS = void 0; +exports.CONSTANTS = { + REGEX_VALID_URL: new RegExp("^" + + // protocol identifier + "(?:(?:https?|ftp)://)" + + // user:pass authentication + "(?:\\S+(?::\\S*)?@)?" + + "(?:" + + // IP address exclusion + // private & local networks + "(?!(?:10|127)(?:\\.\\d{1,3}){3})" + + "(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})" + + "(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})" + + // IP address dotted notation octets + // excludes loopback network 0.0.0.0 + // excludes reserved space >= 224.0.0.0 + // excludes network & broacast addresses + // (first & last IP address of each class) + "(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])" + + "(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}" + + "(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))" + + "|" + + // host name + "(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)" + + // domain name + "(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*" + + // TLD identifier + "(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))" + + // TLD may end with dot + "\\.?" + + ")" + + // port number + "(?::\\d{2,5})?" + + // resource path + "(?:[/?#]\\S*)?" + + "$", "i"), + REGEX_LOOPBACK: new RegExp("^" + + "(?:(?:10|127)(?:\\.\\d{1,3}){3})" + + "|" + + "(?:(?:169\\.254|192\\.168|192\\.0)(?:\\.\\d{1,3}){2})" + + "|" + + "(?:172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})" + + "$", "i"), + REGEX_CONTENT_TYPE_IMAGE: new RegExp("image/.*", "i"), + REGEX_CONTENT_TYPE_AUDIO: new RegExp("audio/.*", "i"), + REGEX_CONTENT_TYPE_VIDEO: new RegExp("video/.*", "i"), + REGEX_CONTENT_TYPE_TEXT: new RegExp("text/.*", "i"), + REGEX_CONTENT_TYPE_APPLICATION: new RegExp("application/.*", "i"), +}; +}); + +var build = createCommonjsModule(function (module, exports) { +var __assign = (commonjsGlobal && commonjsGlobal.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (commonjsGlobal && commonjsGlobal.__awaiter) || function (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()); + }); +}; +var __generator = (commonjsGlobal && commonjsGlobal.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (commonjsGlobal && commonjsGlobal.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getPreviewFromContent = exports.getLinkPreview = void 0; +var cheerio_1 = __importDefault(lib); + +var abort_controller_1 = __importDefault(browser); +var url_1 = __importDefault(require$$2__default["default"]); + +function throwOnLoopback(address) { + if (constants.CONSTANTS.REGEX_LOOPBACK.test(address)) { + throw new Error("SSRF request detected, trying to query host"); + } +} +function metaTag(doc, type, attr) { + var nodes = doc("meta[".concat(attr, "='").concat(type, "']")); + return nodes.length ? nodes : null; +} +function metaTagContent(doc, type, attr) { + return doc("meta[".concat(attr, "='").concat(type, "']")).attr("content"); +} +function getTitle(doc) { + var title = metaTagContent(doc, "og:title", "property") || + metaTagContent(doc, "og:title", "name"); + if (!title) { + title = doc("title").text(); + } + return title; +} +function getSiteName(doc) { + var siteName = metaTagContent(doc, "og:site_name", "property") || + metaTagContent(doc, "og:site_name", "name"); + return siteName; +} +function getDescription(doc) { + var description = metaTagContent(doc, "description", "name") || + metaTagContent(doc, "Description", "name") || + metaTagContent(doc, "og:description", "property"); + return description; +} +function getMediaType(doc) { + var node = metaTag(doc, "medium", "name"); + if (node) { + var content = node.attr("content"); + return content === "image" ? "photo" : content; + } + return (metaTagContent(doc, "og:type", "property") || + metaTagContent(doc, "og:type", "name")); +} +function getImages(doc, rootUrl, imagesPropertyType) { + var images = []; + var nodes; + var src; + var dic = {}; + var imagePropertyType = imagesPropertyType !== null && imagesPropertyType !== void 0 ? imagesPropertyType : "og"; + nodes = + metaTag(doc, "".concat(imagePropertyType, ":image"), "property") || + metaTag(doc, "".concat(imagePropertyType, ":image"), "name"); + if (nodes) { + nodes.each(function (_, node) { + if (node.type === "tag") { + src = node.attribs.content; + if (src) { + src = url_1.default.resolve(rootUrl, src); + images.push(src); + } + } + }); + } + if (images.length <= 0 && !imagesPropertyType) { + src = doc("link[rel=image_src]").attr("href"); + if (src) { + src = url_1.default.resolve(rootUrl, src); + images = [src]; + } + else { + nodes = doc("img"); + if (nodes === null || nodes === void 0 ? void 0 : nodes.length) { + dic = {}; + images = []; + nodes.each(function (_, node) { + if (node.type === "tag") + src = node.attribs.src; + if (src && !dic[src]) { + dic[src] = true; + // width = node.attribs.width; + // height = node.attribs.height; + images.push(url_1.default.resolve(rootUrl, src)); + } + }); + } + } + } + return images; +} +function getVideos(doc) { + var videos = []; + var nodeTypes; + var nodeSecureUrls; + var nodeType; + var nodeSecureUrl; + var video; + var videoType; + var videoSecureUrl; + var width; + var height; + var videoObj; + var index; + var nodes = metaTag(doc, "og:video", "property") || metaTag(doc, "og:video", "name"); + if (nodes === null || nodes === void 0 ? void 0 : nodes.length) { + nodeTypes = + metaTag(doc, "og:video:type", "property") || + metaTag(doc, "og:video:type", "name"); + nodeSecureUrls = + metaTag(doc, "og:video:secure_url", "property") || + metaTag(doc, "og:video:secure_url", "name"); + width = + metaTagContent(doc, "og:video:width", "property") || + metaTagContent(doc, "og:video:width", "name"); + height = + metaTagContent(doc, "og:video:height", "property") || + metaTagContent(doc, "og:video:height", "name"); + for (index = 0; index < nodes.length; index += 1) { + var node = nodes[index]; + if (node.type === "tag") + video = node.attribs.content; + nodeType = nodeTypes === null || nodeTypes === void 0 ? void 0 : nodeTypes[index]; + if ((nodeType === null || nodeType === void 0 ? void 0 : nodeType.type) === "tag") { + videoType = nodeType ? nodeType.attribs.content : null; + } + nodeSecureUrl = nodeSecureUrls === null || nodeSecureUrls === void 0 ? void 0 : nodeSecureUrls[index]; + if ((nodeSecureUrl === null || nodeSecureUrl === void 0 ? void 0 : nodeSecureUrl.type) === "tag") { + videoSecureUrl = nodeSecureUrl ? nodeSecureUrl.attribs.content : null; + } + videoObj = { + url: video, + secureUrl: videoSecureUrl, + type: videoType, + width: width, + height: height, + }; + if (videoType && videoType.indexOf("video/") === 0) { + videos.splice(0, 0, videoObj); + } + else { + videos.push(videoObj); + } + } + } + return videos; +} +// returns default favicon (//hostname/favicon.ico) for a url +function getDefaultFavicon(rootUrl) { + return url_1.default.resolve(rootUrl, "/favicon.ico"); +} +// returns an array of URLs to favicon images +function getFavicons(doc, rootUrl) { + var images = []; + var nodes = []; + var src; + var relSelectors = [ + "rel=icon", + "rel=\"shortcut icon\"", + "rel=apple-touch-icon", + ]; + relSelectors.forEach(function (relSelector) { + // look for all icon tags + nodes = doc("link[".concat(relSelector, "]")); + // collect all images from icon tags + if (nodes.length) { + nodes.each(function (_, node) { + if (node.type === "tag") + src = node.attribs.href; + if (src) { + src = url_1.default.resolve(rootUrl, src); + images.push(src); + } + }); + } + }); + // if no icon images, use default favicon location + if (images.length <= 0) { + images.push(getDefaultFavicon(rootUrl)); + } + return images; +} +function parseImageResponse(url, contentType) { + return { + url: url, + mediaType: "image", + contentType: contentType, + favicons: [getDefaultFavicon(url)], + }; +} +function parseAudioResponse(url, contentType) { + return { + url: url, + mediaType: "audio", + contentType: contentType, + favicons: [getDefaultFavicon(url)], + }; +} +function parseVideoResponse(url, contentType) { + return { + url: url, + mediaType: "video", + contentType: contentType, + favicons: [getDefaultFavicon(url)], + }; +} +function parseApplicationResponse(url, contentType) { + return { + url: url, + mediaType: "application", + contentType: contentType, + favicons: [getDefaultFavicon(url)], + }; +} +function parseTextResponse(body, url, options, contentType) { + if (options === void 0) { options = {}; } + var doc = cheerio_1.default.load(body); + return { + url: url, + title: getTitle(doc), + siteName: getSiteName(doc), + description: getDescription(doc), + mediaType: getMediaType(doc) || "website", + contentType: contentType, + images: getImages(doc, url, options.imagesPropertyType), + videos: getVideos(doc), + favicons: getFavicons(doc, url), + }; +} +function parseUnknownResponse(body, url, options, contentType) { + if (options === void 0) { options = {}; } + return parseTextResponse(body, url, options, contentType); +} +function parseResponse(response, options) { + try { + // console.log("[link-preview-js] response", response); + var contentType = response.headers["content-type"]; + var contentTypeTokens = []; + var charset = null; + if (!contentType) { + return parseUnknownResponse(response.data, response.url, options); + } + if (contentType.includes(";")) { + contentTypeTokens = contentType.split(";"); + contentType = contentTypeTokens[0]; + for (var _i = 0, contentTypeTokens_1 = contentTypeTokens; _i < contentTypeTokens_1.length; _i++) { + var token = contentTypeTokens_1[_i]; + if (token.indexOf("charset=") !== -1) { + charset = token.split("=")[1]; + } + } + } + // parse response depending on content type + if (constants.CONSTANTS.REGEX_CONTENT_TYPE_IMAGE.test(contentType)) { + return __assign(__assign({}, parseImageResponse(response.url, contentType)), { charset: charset }); + } + if (constants.CONSTANTS.REGEX_CONTENT_TYPE_AUDIO.test(contentType)) { + return __assign(__assign({}, parseAudioResponse(response.url, contentType)), { charset: charset }); + } + if (constants.CONSTANTS.REGEX_CONTENT_TYPE_VIDEO.test(contentType)) { + return __assign(__assign({}, parseVideoResponse(response.url, contentType)), { charset: charset }); + } + if (constants.CONSTANTS.REGEX_CONTENT_TYPE_TEXT.test(contentType)) { + var htmlString_1 = response.data; + return __assign(__assign({}, parseTextResponse(htmlString_1, response.url, options, contentType)), { charset: charset }); + } + if (constants.CONSTANTS.REGEX_CONTENT_TYPE_APPLICATION.test(contentType)) { + return __assign(__assign({}, parseApplicationResponse(response.url, contentType)), { charset: charset }); + } + var htmlString = response.data; + return __assign(__assign({}, parseUnknownResponse(htmlString, response.url, options)), { charset: charset }); + } + catch (e) { + throw new Error("link-preview-js could not fetch link information ".concat(e.toString())); + } +} +/** + * Parses the text, extracts the first link it finds and does a HTTP request + * to fetch the website content, afterwards it tries to parse the internal HTML + * and extract the information via meta tags + * @param text string, text to be parsed + * @param options ILinkPreviewOptions + */ +function getLinkPreview(text, options) { + var _a, _b, _c; + return __awaiter(this, void 0, void 0, function () { + var detectedUrl, resolvedUrl, timeout, controller, timeoutCounter, fetchOptions, fetchUrl, response, forwardedUrl, resolvedUrl, headers, normalizedResponse; + var _d; + return __generator(this, function (_e) { + switch (_e.label) { + case 0: + if (!text || typeof text !== "string") { + throw new Error("link-preview-js did not receive a valid url or text"); + } + detectedUrl = text + .replace(/\n/g, " ") + .split(" ") + .find(function (token) { return constants.CONSTANTS.REGEX_VALID_URL.test(token); }); + if (!detectedUrl) { + throw new Error("link-preview-js did not receive a valid a url or text"); + } + if ((options === null || options === void 0 ? void 0 : options.followRedirects) === "manual" && !(options === null || options === void 0 ? void 0 : options.handleRedirects)) { + throw new Error("link-preview-js followRedirects is set to manual, but no handleRedirects function was provided"); + } + if (!!!(options === null || options === void 0 ? void 0 : options.resolveDNSHost)) return [3 /*break*/, 2]; + return [4 /*yield*/, options.resolveDNSHost(detectedUrl)]; + case 1: + resolvedUrl = _e.sent(); + throwOnLoopback(resolvedUrl); + _e.label = 2; + case 2: + timeout = (_a = options === null || options === void 0 ? void 0 : options.timeout) !== null && _a !== void 0 ? _a : 3000; + controller = new abort_controller_1.default(); + timeoutCounter = setTimeout(function () { return controller.abort(); }, timeout); + fetchOptions = { + headers: (_b = options === null || options === void 0 ? void 0 : options.headers) !== null && _b !== void 0 ? _b : {}, + redirect: (_c = options === null || options === void 0 ? void 0 : options.followRedirects) !== null && _c !== void 0 ? _c : "error", + signal: controller.signal, + }; + fetchUrl = (options === null || options === void 0 ? void 0 : options.proxyUrl) + ? options.proxyUrl.concat(detectedUrl) + : detectedUrl; + return [4 /*yield*/, (0, browserPonyfill.fetch)(fetchUrl, fetchOptions).catch(function (e) { + if (e.name === "AbortError") { + throw new Error("Request timeout"); + } + clearTimeout(timeoutCounter); + throw e; + })]; + case 3: + response = _e.sent(); + if (!(response.status > 300 && + response.status < 309 && + fetchOptions.redirect === "manual" && + (options === null || options === void 0 ? void 0 : options.handleRedirects))) return [3 /*break*/, 7]; + forwardedUrl = response.headers.get("location") || ""; + if (!options.handleRedirects(fetchUrl, forwardedUrl)) { + throw new Error("link-preview-js could not handle redirect"); + } + if (!!!(options === null || options === void 0 ? void 0 : options.resolveDNSHost)) return [3 /*break*/, 5]; + return [4 /*yield*/, options.resolveDNSHost(forwardedUrl)]; + case 4: + resolvedUrl = _e.sent(); + throwOnLoopback(resolvedUrl); + _e.label = 5; + case 5: return [4 /*yield*/, (0, browserPonyfill.fetch)(forwardedUrl, fetchOptions)]; + case 6: + response = _e.sent(); + _e.label = 7; + case 7: + clearTimeout(timeoutCounter); + headers = {}; + response.headers.forEach(function (header, key) { + headers[key] = header; + }); + _d = { + url: (options === null || options === void 0 ? void 0 : options.proxyUrl) + ? response.url.replace(options.proxyUrl, "") + : response.url, + headers: headers + }; + return [4 /*yield*/, response.text()]; + case 8: + normalizedResponse = (_d.data = _e.sent(), + _d); + return [2 /*return*/, parseResponse(normalizedResponse, options)]; + } + }); + }); +} +exports.getLinkPreview = getLinkPreview; +/** + * Skip the library fetching the website for you, instead pass a response object + * from whatever source you get and use the internal parsing of the HTML to return + * the necessary information + * @param response Preview Response + * @param options IPreviewLinkOptions + */ +function getPreviewFromContent(response, options) { + return __awaiter(this, void 0, void 0, function () { + return __generator(this, function (_a) { + if (!response || typeof response !== "object") { + throw new Error("link-preview-js did not receive a valid response object"); + } + if (!response.url) { + throw new Error("link-preview-js did not receive a valid response object"); + } + return [2 /*return*/, parseResponse(response, options)]; + }); + }); +} +exports.getPreviewFromContent = getPreviewFromContent; +}); + +class GenericPreviewEmbed { + constructor() { + this.name = "Generic Preview"; + this.enabledKey = "replaceGenericLinks"; + // unmatchable regex + // this source is used as a fallback when other sources fail to match + this.regex = new RegExp("(?!)"); + } + createEmbed(link, container, settings, currentTheme, plugin) { + const preview = document.createElement("a"); + preview.setAttr("href", link); + preview.classList.add("preview"); + preview.textContent = "Loading preview..."; + const loadPreview = () => __awaiter(this, void 0, void 0, function* () { + let metadata; + // await cache file load if not available yet + if (!plugin.genericPreviewCache) + yield plugin.cacheFileLoadPromise; + if (settings.useCacheForGenericLinks && link in plugin.genericPreviewCache) { + metadata = plugin.genericPreviewCache[link]; + } + else { + const res = yield obsidian.requestUrl({ url: link }); + metadata = yield build.getPreviewFromContent({ + headers: res.headers, + data: res.text, + url: link + }); + if (settings.useCacheForGenericLinks && "title" in metadata) { + plugin.saveGenericPreviewCache(link, metadata); + } + } + if (!("title" in metadata)) + return; + preview.innerHTML = + String.raw ` + <div class="image-container"> + ${metadata.images.length ? String.raw `<img src="${metadata.images[0]}" />` : ""} + </div> + <div class="content"> + <div class="title">${metadata.title}</div> + <div class="description">${metadata.description ? metadata.description : ""}</div> + </div> + `; + }); + try { + loadPreview(); + } + catch (_a) { + preview.textContent = "Could not load preview"; + } + container.appendChild(preview); + container.classList.add("generic-preview"); + return container; + } +} + +const DEFAULT_SETTINGS = { + replaceAppleMusicLinks: true, + replaceApplePodcastsLinks: true, + replaceAppleTVLinks: true, + replaceBandcampLinks: true, + replaceCodepenLinks: true, + replaceFlatIOLinks: true, + replaceGitHubGistLinks: true, + replaceInstagramLinks: true, + replaceNoteflightLinks: true, + replaceRedditLinks: true, + replaceTwitterLinks: true, + replaceVimeoLinks: true, + replaceWhimsicalLinks: true, + replaceYouTubeLinks: true, + replaceGenericLinks: false, + useCacheForGenericLinks: true, + twitterTheme: "auto", + codepenTheme: "auto", + codepenDefaultTab: "html", + codepenShowResult: true, + codepenClickToLoad: false, + codepenEditable: false, + redditTheme: "auto", + enableInLivePreview: false, + centerEmbeds: false, + keepLinksInPreview: false, + embedPlacement: "above", + disableAutomaticEmbeds: false, + redditLocale: "auto", + redditHideMedia: false, + redditHideEdits: false, + redditHideUsername: false +}; + +class SimpleEmbedPluginSettingTab extends obsidian.PluginSettingTab { + constructor(app, plugin) { + super(app, plugin); + this.embedSettings = {}; + this.plugin = plugin; + } + display() { + let { containerEl } = this; + containerEl.empty(); + containerEl.classList.add("simple-embeds-settings"); + containerEl.createEl("h3", { text: "Available Embed Sources" }); + containerEl.createEl("p", { + cls: "setting-item-description", + }, (el) => { + el.innerHTML = + "Disable to prevent <em>all</em> links from source ever being turned into embeds. To disable an individual link, add <code>|noembed</code> to the link text. For example, <code>[Some description|noembed](https://twitter.com/user/status/123)</code>"; + }); + // Toggles to enabled/disabled embed sources. + this.plugin.embedSources.forEach((embedSource) => { + new obsidian.Setting(containerEl).setName(embedSource.name).addToggle((toggle) => { + toggle + .setValue(this.plugin.settings[embedSource.enabledKey]) + .onChange((enabled) => __awaiter(this, void 0, void 0, function* () { + yield this.saveSettings({ [embedSource.enabledKey]: enabled }); + this.toggleAdditionalSettings(embedSource, enabled); + })); + }); + }); + // Settings for generic link previews + containerEl.createEl("h3", { text: "Generic Link Previews" }); + containerEl.createEl("p", { + cls: "setting-item-description", + }, (el) => { + el.innerHTML = + "Desktop only"; + }); + new obsidian.Setting(containerEl) + .setName("Show generic previews for links") + .addToggle((toggle) => { + toggle + .setValue(this.plugin.settings.replaceGenericLinks) + .onChange((enabled) => __awaiter(this, void 0, void 0, function* () { + yield this.saveSettings({ replaceGenericLinks: enabled }); + })); + }) + .setDisabled(obsidian.Platform.isMobile); + new obsidian.Setting(containerEl) + .setName("Use a cache for link preview metadata") + .addToggle((toggle) => { + toggle + .setValue(this.plugin.settings.useCacheForGenericLinks) + .onChange((enabled) => __awaiter(this, void 0, void 0, function* () { + yield this.saveSettings({ useCacheForGenericLinks: enabled }); + })); + }) + .setDisabled(obsidian.Platform.isMobile); + new obsidian.Setting(containerEl) + .setName("Clear link preview metadata cache") + .addButton((button) => { + button + .setButtonText("Clear") + .onClick(() => __awaiter(this, void 0, void 0, function* () { + yield this.app.vault.adapter.write(this.plugin.genericPreviewCacheFile, "{}"); + this.plugin.genericPreviewCache = {}; + yield this.plugin.saveSettings({}); + })); + }) + .setDisabled(obsidian.Platform.isMobile); + // Any additional settings for embed sources. + containerEl.createEl("h3", { text: "Appearance" }); + this.plugin.embedSources.forEach((embedSource) => { + if (embedSource.createAdditionalSettings) { + containerEl.createEl("details", {}, (el) => { + const fragment = new DocumentFragment(); + const summary = fragment.createEl("summary"); + const title = fragment.createEl("h4", { + text: embedSource.name, + }); + summary.appendChild(title); + el.appendChild(summary); + const settings = embedSource.createAdditionalSettings(el, this.plugin.settings, this.saveSettings.bind(this)); + this.embedSettings[embedSource.constructor.name] = settings; + const enabled = this.plugin.settings[embedSource.enabledKey]; + this.toggleAdditionalSettings(embedSource, enabled); + }); + } + }); + containerEl.createEl("h3", { text: "Advanced Settings" }); + new obsidian.Setting(containerEl) + .setName("Show Embeds in Live Preview (beta)") + .addToggle((toggle) => { + toggle + .setValue(this.plugin.settings.enableInLivePreview) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.saveSettings({ enableInLivePreview: value }); + })); + }); + new obsidian.Setting(containerEl).setName("Center embeds").addToggle((toggle) => { + toggle + .setValue(this.plugin.settings.centerEmbeds) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.saveSettings({ centerEmbeds: value }); + })); + }); + new obsidian.Setting(containerEl) + .setName("Keep links in preview") + .setDesc("Insert embeds above the link, instead of replacing the link in the preview.") + .addToggle((toggle) => { + toggle + .setValue(this.plugin.settings.keepLinksInPreview) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.saveSettings({ keepLinksInPreview: value }); + placement.setDisabled(!this.plugin.settings.keepLinksInPreview); + })); + }); + const placement = new obsidian.Setting(containerEl) + .setName("Place embeds") + .setDesc('When "Keep links in preview" is enabled, choose whether to place the embed above or below the link.') + .addDropdown((dropdown) => { + dropdown + .addOptions({ above: "Above link", below: "Below link" }) + .setValue(this.plugin.settings.embedPlacement) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.saveSettings({ embedPlacement: value }); + })); + }) + .setDisabled(!this.plugin.settings.keepLinksInPreview); + const fragment = new DocumentFragment(); + const div = fragment.createEl("div"); + const span = fragment.createEl("span"); + span.innerHTML = + "Instead of automatically embedding all matching links, you must add <code>|embed</code> to the link text of each link you would like to turn into an embed. For example, <code>[Some description|embed](https://twitter.com/user/status/123)</code>"; + div.appendChild(span); + fragment.appendChild(div); + new obsidian.Setting(containerEl) + .setName("Disable automatic embeds") + .setDesc(fragment) + .addToggle((toggle) => { + toggle + .setValue(this.plugin.settings.disableAutomaticEmbeds) + .onChange((value) => __awaiter(this, void 0, void 0, function* () { + yield this.saveSettings({ disableAutomaticEmbeds: value }); + })); + }); + } + saveSettings(updates) { + return __awaiter(this, void 0, void 0, function* () { + return this.plugin.saveSettings(updates); + }); + } + // Disable/enable all additional settings when embed is disabled/enabled. + toggleAdditionalSettings(embedSource, enabled) { + const additionalSettings = this.embedSettings[embedSource.constructor.name]; + if (additionalSettings) { + additionalSettings.forEach((setting) => { + setting.setDisabled(!enabled); + }); + } + } +} + +function buildSimpleEmbedsViewPlugin(plugin) { + class EmbedWidget extends view.WidgetType { + constructor(link, fullWidth, centered, keepLinks, embedSource, plugin) { + super(); + this.link = link; + this.fullWidth = fullWidth; + this.centered = centered; + this.keepLinks = keepLinks; + this.embedSource = embedSource; + this.plugin = plugin; + } + eq(other) { + return (other.link === this.link && + other.fullWidth === this.fullWidth && + other.centered === this.centered && + other.keepLinks === this.keepLinks); + } + toDOM() { + const embed = this.plugin.createEmbed(this.embedSource, this.link, this.fullWidth, this.centered, this.keepLinks); + return embed; + } + } + const viewPlugin = view.ViewPlugin.fromClass(class { + constructor(view) { + this.decorations = this.buildDecorations(view); + } + update(update) { + if (update.docChanged || + update.viewportChanged || + update.selectionSet) { + this.decorations = this.buildDecorations(update.view); + } + } + destroy() { } + buildDecorations(view) { + var _a; + let builder = new state.RangeSetBuilder(); + let definitions = []; + if (!plugin.isLivePreviewSupported) { + return builder.finish(); + } + let lines = []; + if (view.state.doc.length > 0) { + lines = Array.from({ length: view.state.doc.lines }, (_, i) => i + 1); + } + const currentSelections = [...view.state.selection.ranges]; + for (let n of lines) { + const line = view.state.doc.line(n); + const startOfLine = line.from; + const endOfLine = line.to; + let currentLine = false; + currentSelections.forEach((r) => { + if (r.from >= startOfLine && r.to <= endOfLine) { + currentLine = true; + return; + } + }); + const text = line.text; + const mdLink = (_a = text + .match(/\[([^\[]+)\](\(.*\))/)) === null || _a === void 0 ? void 0 : _a.first().trim(); + if (!currentLine && mdLink) { + const start = line.text.indexOf(mdLink) + startOfLine; + const end = start + mdLink.length; + let embedSource = plugin.embedSources.find((source) => { + return (plugin.settings[source.enabledKey] && + source.regex.test(line.text)); + }); + if (!embedSource && obsidian.Platform.isDesktopApp && plugin.settings.replaceGenericLinks) { + embedSource = plugin.genericPreviewEmbed; + } + const isWithinText = this.isWithinText(text); + const replaceWithEmbed = plugin.shouldReplaceWithEmbed(mdLink, isWithinText); + const fullWidth = mdLink.includes("|fullwidth"); + definitions.push(...this.hideOptions(mdLink, start)); + if (embedSource && replaceWithEmbed) { + let link; + if (embedSource == plugin.genericPreviewEmbed) { + const mdLinkRegex = /^\[([\w\s\d]+)\]\((https?:\/\/[\w\d./?=#]+)\)$/; + const [_full, _text, url] = line.text.match(mdLinkRegex); + if (!url) + continue; + link = url; + } + else { + link = line.text.match(embedSource.regex).first(); + } + definitions.push(this.createWidget(link, fullWidth, embedSource, start, end)); + } + } + } + definitions.sort((a, b) => { + return a.from - b.from; + }); + definitions.forEach(({ from, to, deco }) => builder.add(from, to, deco)); + return builder.finish(); + } + hideOptions(text, startOfLink) { + const definitions = []; + for (let option of ["|noembed", "|embed", "|fullwidth"]) { + if (text.includes(option)) { + const from = text.indexOf(option) + startOfLink; + const to = from + option.length; + const deco = view.Decoration.replace({}); + definitions.push({ + from, + to, + deco, + }); + } + } + return definitions; + } + createWidget(link, fullWidth, embedSource, start, end) { + const deco = view.Decoration.widget({ + widget: new EmbedWidget(link, fullWidth, plugin.settings.centerEmbeds, plugin.settings.keepLinksInPreview, embedSource, plugin), + }); + if (plugin.settings.keepLinksInPreview) { + if (plugin.settings.embedPlacement === "above") { + return { + from: start, + to: start, + deco, + }; + } + else if (plugin.settings.embedPlacement === "below") { + return { + from: end, + to: end, + deco, + }; + } + } + else { + return { + from: start, + to: end, + deco, + }; + } + } + isWithinText(text) { + const mdLink = text + .match(/\[([^\[]+)\](\(.*\))/)[0].trim(); + const lineWithoutLink = text.replace(mdLink, ""); + const lineWithoutListMarkup = lineWithoutLink.replace(/-|\s\[|(\w|\s)\]/g, "") + .trim(); + return (lineWithoutListMarkup === null || lineWithoutListMarkup === void 0 ? void 0 : lineWithoutListMarkup.length) > 0; + } + }, { + decorations: (v) => v.decorations, + }); + return viewPlugin; +} + +class SimpleEmbedsPlugin extends obsidian.Plugin { + constructor() { + super(...arguments); + this.embedSources = [ + new TwitterEmbed(), + new YouTubeEmbed(), + new InstagramEmbed(), + new FlatIOEmbed(), + new NoteflightEmbed(), + new CodepenEmbed(), + new GitHubGistEmbed(), + new AppleMusicEmbed(), + new ApplePodcastsEmbed(), + new AppleTVEmbed(), + new BandcampEmbed(), + new VimeoEmbed(), + new RedditEmbed(), + new WhimsicalEmbed(), + ]; + this.genericPreviewEmbed = new GenericPreviewEmbed(); + this.genericPreviewCache = null; + this.genericPreviewCacheFile = this.app.vault.configDir + + "/plugins/simple-embeds/genericPreviewCache.json"; + this.cacheFileLoadPromise = null; + } + onload() { + return __awaiter(this, void 0, void 0, function* () { + console.log(`Loading ${this.manifest.name} v${this.manifest.version}`); + yield this.loadSettings(); + this.addSettingTab(new SimpleEmbedPluginSettingTab(this.app, this)); + this.currentTheme = this._getCurrentTheme(); + const ext = buildSimpleEmbedsViewPlugin(this); + this.registerEditorExtension(ext); + this.processedMarkdown = obsidian.debounce(() => { + this.embedSources.forEach((source) => { + var _a; + (_a = source.afterAllEmbeds) === null || _a === void 0 ? void 0 : _a.call(source); + }); + }, 100); + this.registerMarkdownPostProcessor((el, ctx) => { + const anchors = el.querySelectorAll("a.external-link"); + anchors.forEach((anchor) => { + this._handleAnchor(anchor); + }); + this.processedMarkdown(); + }); + this.registerEvent(this.app.workspace.on("css-change", () => { + // Theme has potentially changed. + const previousTheme = this.currentTheme; + this.currentTheme = this._getCurrentTheme(); + if (previousTheme !== this.currentTheme) { + setTimeout(() => { + this.embedSources.forEach((embedSource) => { + var _a; + (_a = embedSource.updateTheme) === null || _a === void 0 ? void 0 : _a.call(embedSource, this.currentTheme, this.settings); + }); + }); + } + })); + // Load file for generic preview cache + const loadCacheFile = () => __awaiter(this, void 0, void 0, function* () { + if (!(yield this.app.vault.adapter.exists(this.genericPreviewCacheFile))) { + yield this.app.vault.create(this.genericPreviewCacheFile, "{}"); + } + try { + const contents = JSON.parse(yield this.app.vault.adapter.read(this.genericPreviewCacheFile)); + this.genericPreviewCache = contents; + } + catch (e) { + console.error("Error reading generic preview cache file"); + console.error(e); + } + }); + this.cacheFileLoadPromise = loadCacheFile(); + }); + } + onunload() { + console.log(`Unloading ${this.manifest.name}`); + this.processedMarkdown = null; + } + loadSettings() { + return __awaiter(this, void 0, void 0, function* () { + this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData()); + }); + } + saveSettings(updates) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + this.settings = Object.assign(Object.assign({}, this.settings), updates); + yield this.saveData(this.settings); + const view = this.app.workspace.getActiveViewOfType(obsidian.MarkdownView); + (_a = view === null || view === void 0 ? void 0 : view.previewMode) === null || _a === void 0 ? void 0 : _a.rerender(true); + (_b = view === null || view === void 0 ? void 0 : view.editor) === null || _b === void 0 ? void 0 : _b.transaction({ + selection: { from: { line: 0, ch: 0 }, to: { line: 0, ch: 0 } }, + }); + }); + } + saveGenericPreviewCache(link, metadata) { + return __awaiter(this, void 0, void 0, function* () { + if (this.genericPreviewCacheFile) { + this.genericPreviewCache[link] = metadata; + yield this.app.vault.adapter.write(this.genericPreviewCacheFile, JSON.stringify(this.genericPreviewCache)); + } + }); + } + _getCurrentTheme() { + return document.body.classList.contains("theme-dark") ? "dark" : "light"; + } + _handleAnchor(a) { + const isWithinText = Array.from(a.parentElement.childNodes) + .filter((node) => { + return node instanceof Text; + }) + .some((text) => { + const nbsp = new RegExp(String.fromCharCode(160), "g"); + const data = text.data.replace(nbsp, "").trim(); + return !!data; + }); + const replaceWithEmbed = this.shouldReplaceWithEmbed(a.innerText, isWithinText); + const fullWidth = a.innerText.includes("|fullwidth"); + // Remove any allowed properties: + // |embed, |noembed, |fullwidth + a.innerHTML = a.innerHTML.replace(/\|(?:embed|noembed|fullwidth)/g, ""); + if (!replaceWithEmbed) { + return; + } + const href = a.getAttribute("href"); + // Try and find an enabled embed source that can handle the link. + let embedSource = this.embedSources.find((source) => { + return this.settings[source.enabledKey] && source.regex.test(href); + }); + // Fall back to creating a generic embed if no source found + if (!embedSource && obsidian.Platform.isDesktopApp && this.settings.replaceGenericLinks) { + embedSource = this.genericPreviewEmbed; + } + if (embedSource) { + const embed = this.createEmbed(embedSource, href, fullWidth, this.settings.centerEmbeds, this.settings.keepLinksInPreview); + this._insertEmbed(a, embed); + } + } + shouldReplaceWithEmbed(text, isWithinText) { + const disableAutomaticEmbeds = this.settings.disableAutomaticEmbeds; + if (isWithinText && !disableAutomaticEmbeds) { + return false; + } + return disableAutomaticEmbeds + ? text.includes("|embed") + : !text.includes("|noembed"); + } + createEmbed(embedSource, link, fullWidth, centered, keepLinks) { + const container = document.createElement("div"); + container.classList.add("embed-container"); + const embed = embedSource.createEmbed(link, container, this.settings, this.currentTheme, this); + if (fullWidth) { + embed.classList.add("full-width"); + } + if (centered) { + embed.classList.add("center"); + } + if (!keepLinks) { + embed.classList.add("hide-link"); + } + return embed; + } + _insertEmbed(a, container) { + const parent = a.parentElement; + const keepLinksInPreview = this.settings.keepLinksInPreview; + const placement = this.settings.embedPlacement; + if (keepLinksInPreview && placement === "above") { + parent.insertBefore(container, a); + } + else if (keepLinksInPreview && placement === "below") { + a.after(container); + } + else { + parent.replaceChild(container, a); + } + } + get isLivePreviewSupported() { + return (!!document.querySelector(".is-live-preview") && + this.settings.enableInLivePreview); + } +} + +module.exports = SimpleEmbedsPlugin; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsImVtYmVkcy9hcHBsZS1tdXNpYy50cyIsImVtYmVkcy9hcHBsZS1wb2RjYXN0cy50cyIsImVtYmVkcy9hcHBsZS10di50cyIsImVtYmVkcy9iYW5kY2FtcC50cyIsImVtYmVkcy9jb2RlcGVuLnRzIiwiZW1iZWRzL2ZsYXRfaW8udHMiLCJlbWJlZHMvZ2l0aHViX2dpc3QudHMiLCJlbWJlZHMvaW5zdGFncmFtLnRzIiwiZW1iZWRzL25vdGVmbGlnaHQudHMiLCJlbWJlZHMvcmVkZGl0LnRzIiwiZW1iZWRzL3R3aXR0ZXIudHMiLCJlbWJlZHMvdmltZW8udHMiLCJlbWJlZHMvd2hpbXNpY2FsLnRzIiwiZW1iZWRzL2xpdGUteXQtZW1iZWQuanMiLCJlbWJlZHMveW91dHViZS50cyIsIm5vZGVfbW9kdWxlcy9jaGVlcmlvL2xpYi9vcHRpb25zLmpzIiwibm9kZV9tb2R1bGVzL2RvbWVsZW1lbnR0eXBlL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9kb21oYW5kbGVyL2xpYi9ub2RlLmpzIiwibm9kZV9tb2R1bGVzL2RvbWhhbmRsZXIvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2VudGl0aWVzL2xpYi9nZW5lcmF0ZWQvZGVjb2RlLWRhdGEtaHRtbC5qcyIsIm5vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZ2VuZXJhdGVkL2RlY29kZS1kYXRhLXhtbC5qcyIsIm5vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZGVjb2RlX2NvZGVwb2ludC5qcyIsIm5vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZGVjb2RlLmpzIiwibm9kZV9tb2R1bGVzL2VudGl0aWVzL2xpYi9nZW5lcmF0ZWQvZW5jb2RlLWh0bWwuanMiLCJub2RlX21vZHVsZXMvZW50aXRpZXMvbGliL2VzY2FwZS5qcyIsIm5vZGVfbW9kdWxlcy9lbnRpdGllcy9saWIvZW5jb2RlLmpzIiwibm9kZV9tb2R1bGVzL2VudGl0aWVzL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9kb20tc2VyaWFsaXplci9saWIvZm9yZWlnbk5hbWVzLmpzIiwibm9kZV9tb2R1bGVzL2RvbS1zZXJpYWxpemVyL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9kb211dGlscy9saWIvc3RyaW5naWZ5LmpzIiwibm9kZV9tb2R1bGVzL2RvbXV0aWxzL2xpYi90cmF2ZXJzYWwuanMiLCJub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL21hbmlwdWxhdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9kb211dGlscy9saWIvcXVlcnlpbmcuanMiLCJub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL2xlZ2FjeS5qcyIsIm5vZGVfbW9kdWxlcy9kb211dGlscy9saWIvaGVscGVycy5qcyIsIm5vZGVfbW9kdWxlcy9kb211dGlscy9saWIvZmVlZHMuanMiLCJub2RlX21vZHVsZXMvZG9tdXRpbHMvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2NoZWVyaW8vbGliL3N0YXRpYy5qcyIsIm5vZGVfbW9kdWxlcy9jaGVlcmlvL2xpYi91dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9jaGVlcmlvL2xpYi9hcGkvYXR0cmlidXRlcy5qcyIsIm5vZGVfbW9kdWxlcy9jc3Mtd2hhdC9saWIvZXMvdHlwZXMuanMiLCJub2RlX21vZHVsZXMvY3NzLXdoYXQvbGliL2VzL3BhcnNlLmpzIiwibm9kZV9tb2R1bGVzL2Nzcy13aGF0L2xpYi9lcy9zdHJpbmdpZnkuanMiLCJub2RlX21vZHVsZXMvYm9vbGJhc2UvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY3NzLXNlbGVjdC9saWIvc29ydC5qcyIsIm5vZGVfbW9kdWxlcy9jc3Mtc2VsZWN0L2xpYi9hdHRyaWJ1dGVzLmpzIiwibm9kZV9tb2R1bGVzL250aC1jaGVjay9saWIvcGFyc2UuanMiLCJub2RlX21vZHVsZXMvbnRoLWNoZWNrL2xpYi9jb21waWxlLmpzIiwibm9kZV9tb2R1bGVzL250aC1jaGVjay9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY3NzLXNlbGVjdC9saWIvcHNldWRvLXNlbGVjdG9ycy9maWx0ZXJzLmpzIiwibm9kZV9tb2R1bGVzL2Nzcy1zZWxlY3QvbGliL3BzZXVkby1zZWxlY3RvcnMvcHNldWRvcy5qcyIsIm5vZGVfbW9kdWxlcy9jc3Mtc2VsZWN0L2xpYi9wc2V1ZG8tc2VsZWN0b3JzL2FsaWFzZXMuanMiLCJub2RlX21vZHVsZXMvY3NzLXNlbGVjdC9saWIvcHNldWRvLXNlbGVjdG9ycy9zdWJzZWxlY3RzLmpzIiwibm9kZV9tb2R1bGVzL2Nzcy1zZWxlY3QvbGliL3BzZXVkby1zZWxlY3RvcnMvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY3NzLXNlbGVjdC9saWIvZ2VuZXJhbC5qcyIsIm5vZGVfbW9kdWxlcy9jc3Mtc2VsZWN0L2xpYi9jb21waWxlLmpzIiwibm9kZV9tb2R1bGVzL2Nzcy1zZWxlY3QvbGliL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2NoZWVyaW8tc2VsZWN0L2xpYi9wb3NpdGlvbmFscy5qcyIsIm5vZGVfbW9kdWxlcy9jaGVlcmlvLXNlbGVjdC9saWIvaGVscGVycy5qcyIsIm5vZGVfbW9kdWxlcy9jaGVlcmlvLXNlbGVjdC9saWIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY2hlZXJpby9saWIvYXBpL3RyYXZlcnNpbmcuanMiLCJub2RlX21vZHVsZXMvY2hlZXJpby9saWIvcGFyc2UuanMiLCJub2RlX21vZHVsZXMvY2hlZXJpby9saWIvYXBpL21hbmlwdWxhdGlvbi5qcyIsIm5vZGVfbW9kdWxlcy9jaGVlcmlvL2xpYi9hcGkvY3NzLmpzIiwibm9kZV9tb2R1bGVzL2NoZWVyaW8vbGliL2FwaS9mb3Jtcy5qcyIsIm5vZGVfbW9kdWxlcy9jaGVlcmlvL2xpYi9jaGVlcmlvLmpzIiwibm9kZV9tb2R1bGVzL2NoZWVyaW8vbGliL2xvYWQuanMiLCJub2RlX21vZHVsZXMvY2hlZXJpby9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL2NvbW1vbi91bmljb2RlLmpzIiwibm9kZV9tb2R1bGVzL2NoZWVyaW8vbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2Nqcy9jb21tb24vZXJyb3ItY29kZXMuanMiLCJub2RlX21vZHVsZXMvY2hlZXJpby9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL3Rva2VuaXplci9wcmVwcm9jZXNzb3IuanMiLCJub2RlX21vZHVsZXMvY2hlZXJpby9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL2NvbW1vbi90b2tlbi5qcyIsIm5vZGVfbW9kdWxlcy9jaGVlcmlvL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9janMvY29tbW9uL2h0bWwuanMiLCJub2RlX21vZHVsZXMvY2hlZXJpby9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL3Rva2VuaXplci9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jaGVlcmlvL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9janMvcGFyc2VyL29wZW4tZWxlbWVudC1zdGFjay5qcyIsIm5vZGVfbW9kdWxlcy9jaGVlcmlvL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9janMvcGFyc2VyL2Zvcm1hdHRpbmctZWxlbWVudC1saXN0LmpzIiwibm9kZV9tb2R1bGVzL2NoZWVyaW8vbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2Nqcy90cmVlLWFkYXB0ZXJzL2RlZmF1bHQuanMiLCJub2RlX21vZHVsZXMvY2hlZXJpby9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL2NvbW1vbi9kb2N0eXBlLmpzIiwibm9kZV9tb2R1bGVzL2NoZWVyaW8vbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2Nqcy9jb21tb24vZm9yZWlnbi1jb250ZW50LmpzIiwibm9kZV9tb2R1bGVzL2NoZWVyaW8vbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2Nqcy9wYXJzZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY2hlZXJpby9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL3NlcmlhbGl6ZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvY2hlZXJpby9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3BhcnNlNS1odG1scGFyc2VyMi10cmVlLWFkYXB0ZXIvbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2Nqcy9jb21tb24vdW5pY29kZS5qcyIsIm5vZGVfbW9kdWxlcy9wYXJzZTUtaHRtbHBhcnNlcjItdHJlZS1hZGFwdGVyL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9janMvY29tbW9uL2Vycm9yLWNvZGVzLmpzIiwibm9kZV9tb2R1bGVzL3BhcnNlNS1odG1scGFyc2VyMi10cmVlLWFkYXB0ZXIvbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2Nqcy90b2tlbml6ZXIvcHJlcHJvY2Vzc29yLmpzIiwibm9kZV9tb2R1bGVzL3BhcnNlNS1odG1scGFyc2VyMi10cmVlLWFkYXB0ZXIvbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2Nqcy9jb21tb24vdG9rZW4uanMiLCJub2RlX21vZHVsZXMvcGFyc2U1LWh0bWxwYXJzZXIyLXRyZWUtYWRhcHRlci9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL2NvbW1vbi9odG1sLmpzIiwibm9kZV9tb2R1bGVzL3BhcnNlNS1odG1scGFyc2VyMi10cmVlLWFkYXB0ZXIvbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2Nqcy90b2tlbml6ZXIvaW5kZXguanMiLCJub2RlX21vZHVsZXMvcGFyc2U1LWh0bWxwYXJzZXIyLXRyZWUtYWRhcHRlci9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL3BhcnNlci9vcGVuLWVsZW1lbnQtc3RhY2suanMiLCJub2RlX21vZHVsZXMvcGFyc2U1LWh0bWxwYXJzZXIyLXRyZWUtYWRhcHRlci9ub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY2pzL3BhcnNlci9mb3JtYXR0aW5nLWVsZW1lbnQtbGlzdC5qcyIsIm5vZGVfbW9kdWxlcy9wYXJzZTUtaHRtbHBhcnNlcjItdHJlZS1hZGFwdGVyL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9janMvdHJlZS1hZGFwdGVycy9kZWZhdWx0LmpzIiwibm9kZV9tb2R1bGVzL3BhcnNlNS1odG1scGFyc2VyMi10cmVlLWFkYXB0ZXIvbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2Nqcy9jb21tb24vZG9jdHlwZS5qcyIsIm5vZGVfbW9kdWxlcy9wYXJzZTUtaHRtbHBhcnNlcjItdHJlZS1hZGFwdGVyL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9janMvY29tbW9uL2ZvcmVpZ24tY29udGVudC5qcyIsIm5vZGVfbW9kdWxlcy9wYXJzZTUtaHRtbHBhcnNlcjItdHJlZS1hZGFwdGVyL25vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9janMvcGFyc2VyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3BhcnNlNS1odG1scGFyc2VyMi10cmVlLWFkYXB0ZXIvbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2Nqcy9zZXJpYWxpemVyL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL3BhcnNlNS1odG1scGFyc2VyMi10cmVlLWFkYXB0ZXIvbm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2Nqcy9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9wYXJzZTUtaHRtbHBhcnNlcjItdHJlZS1hZGFwdGVyL2Rpc3QvY2pzL2luZGV4LmpzIiwibm9kZV9tb2R1bGVzL2NoZWVyaW8vbGliL3BhcnNlcnMvcGFyc2U1LWFkYXB0ZXIuanMiLCJub2RlX21vZHVsZXMvaHRtbHBhcnNlcjIvbGliL1Rva2VuaXplci5qcyIsIm5vZGVfbW9kdWxlcy9odG1scGFyc2VyMi9saWIvUGFyc2VyLmpzIiwibm9kZV9tb2R1bGVzL2h0bWxwYXJzZXIyL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jaGVlcmlvL2xpYi9pbmRleC5qcyIsIm5vZGVfbW9kdWxlcy9jcm9zcy1mZXRjaC9kaXN0L2Jyb3dzZXItcG9ueWZpbGwuanMiLCJub2RlX21vZHVsZXMvYWJvcnQtY29udHJvbGxlci9icm93c2VyLmpzIiwibm9kZV9tb2R1bGVzL2xpbmstcHJldmlldy1qcy9idWlsZC9jb25zdGFudHMuanMiLCJub2RlX21vZHVsZXMvbGluay1wcmV2aWV3LWpzL2J1aWxkL2luZGV4LmpzIiwiZW1iZWRzL2dlbmVyaWMtcHJldmlldy50cyIsInNldHRpbmdzLnRzIiwic2V0dGluZ3MtdGFiLnRzIiwidmlldy1wbHVnaW4udHMiLCJtYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpudWxsLCJuYW1lcyI6WyJyZXF1ZXN0VXJsIiwiU2V0dGluZyIsInRoaXMiLCJkb21lbGVtZW50dHlwZV8xIiwiX2RlZmF1bHQiLCJyZXF1aXJlJCQwIiwicmVxdWlyZSQkMSIsInF1ZXJ5aW5nX2pzXzEiLCJsZWdhY3lfanNfMSIsInN0cmluZ2lmeV9qc18xIiwidXRpbHNfanNfMSIsInN0YXRpY19qc18xIiwicGFyc2UiLCJzb3J0X2pzXzEiLCJmaWx0ZXJzX2pzXzEiLCJwc2V1ZG9zX2pzXzEiLCJhbGlhc2VzX2pzXzEiLCJzdWJzZWxlY3RzX2pzXzEiLCJhdHRyaWJ1dGVzX2pzXzEiLCJpbmRleF9qc18xIiwiZ2VuZXJhbF9qc18xIiwiY29tcGlsZV9qc18xIiwiYm9vbGJhc2UiLCJjc3Nfc2VsZWN0XzEiLCJwYXJzZV9qc18xIiwicmVxdWlyZSQkMiIsInJlcXVpcmUkJDMiLCJyZXF1aXJlJCQ0IiwiY2hlZXJpb19qc18xIiwidW5pY29kZV9qc18xIiwiZXJyb3JfY29kZXNfanNfMSIsInByZXByb2Nlc3Nvcl9qc18xIiwidG9rZW5fanNfMSIsImh0bWxfanNfMSIsImRlZmF1bHRfanNfMSIsImZvcm1hdHRpbmdfZWxlbWVudF9saXN0X2pzXzEiLCJvcGVuX2VsZW1lbnRfc3RhY2tfanNfMSIsImZvcmVpZ25Db250ZW50IiwidW5pY29kZSIsImRvY3R5cGUiLCJpbmRleF9qc18zIiwiaW5kZXhfanNfNCIsInRva2VuIiwiaHRtbCIsInBhcnNlciIsInBhcnNlNV8xIiwicGFyc2U1X2h0bWxwYXJzZXIyX3RyZWVfYWRhcHRlcl8xIiwiVG9rZW5pemVyX2pzXzEiLCJwYXJzZTVfYWRhcHRlcl9qc18xIiwibG9hZF9qc18xIiwiY29uc3RhbnRzXzEiLCJjcm9zc19mZXRjaF8xIiwiZ2V0UHJldmlld0Zyb21Db250ZW50IiwiUGx1Z2luU2V0dGluZ1RhYiIsIlBsYXRmb3JtIiwiV2lkZ2V0VHlwZSIsIlZpZXdQbHVnaW4iLCJSYW5nZVNldEJ1aWxkZXIiLCJEZWNvcmF0aW9uIiwiUGx1Z2luIiwiZGVib3VuY2UiLCJNYXJrZG93blZpZXciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBb0dBO0FBQ08sU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFO0FBQzdELElBQUksU0FBUyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsT0FBTyxLQUFLLFlBQVksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxVQUFVLE9BQU8sRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO0FBQ2hILElBQUksT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsT0FBTyxDQUFDLEVBQUUsVUFBVSxPQUFPLEVBQUUsTUFBTSxFQUFFO0FBQy9ELFFBQVEsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtBQUNuRyxRQUFRLFNBQVMsUUFBUSxDQUFDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9B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QUFFLElBQUksQ0FBQztBQUNmLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ2QsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7QUFDZixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNkLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO0FBQ2YsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDZCxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNkLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO0FBQ2YsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7QUFDZixJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztBQUNmLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO0FBQ2YsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7QUFDZixJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztBQUNmLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO0FBQ2YsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDZCxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztBQUNmLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ2QsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUM7QUFDZixJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQztBQUNkLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQ2QsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDZCxDQUFDLENBQUMsQ0FBQztBQUNIO0FBQ0E7QUFDQTtBQUNBLE9BQUEsQ0FBQSxhQUFBO0FBQ0E7QUFDQSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsYUFBYSxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLFVBQVUsU0FBUyxFQUFFO0FBQ2xGLElBQUksSUFBSSxNQUFNLEdBQUcs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ZCxDQUFDLFVBQVUsU0FBUyxFQUFFO0FBQ3RCLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDN0MsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMvQyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQ25ELElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDL0MsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMvQyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ3JELElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDdEQsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUN0RCxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ3RELElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDckQsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUNyRCxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ3JELENBQUMsRUFBRSxTQUFTLEtBQUss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RUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsdUJBQXVCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLGNBQWMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsdUJBQXVCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsNEJBQTRCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxJQUFJLEdBQUcsaUJBQWlCLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksR0FBRyxpQkFBaUIsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsZUFBZSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLHNCQUFzQixFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUseUJBQXlCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSx5QkFBeUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsMEJBQTBCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHlCQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsY0FBYyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHdCQUF3QixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsd0JBQXdCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSw0QkFBNEIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHVCQUF1QixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxtQkFBbUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHFCQUFxQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsc0JBQXNCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsbUJBQW1CLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLHVCQUF1QixFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsMkJBQTJCLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLG9CQUFvQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxJQUFJLEdBQUcsaUJBQWlCLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqcjBCOzs7Ozs7O0FDVkEsTUFBTSxDQUFDLGNBQWMsQ0FBQSxPQUFBLEVBQVUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUQsT0FBcUIsQ0FBQSxVQUFBLEdBQUEsT0FBQSxDQUFBLGVBQUEs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QUUsT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUMxRCxJQUFJLElBQUksS0FBSyxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsR0FBRyxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztBQUN0RSxJQUFJLElBQUksS0FBSyxLQUFLLFdBQVcsQ0FBQyxJQUFJLEVBQUU7QUFDcEMsUUFBUSxJQUFJLElBQUksR0FBRyxPQUFPLE9BQU8sS0FBSyxRQUFRLEdBQUcsT0FBTyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7QUFDMUUsUUFBUSxPQUFPLElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkQsS0FBSztBQUNMLElBQUksT0FBTyxJQUFJLFdBQVcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUNELE9BQUEsQ0FBQSxNQUFBLEdBQWlCLE1BQU0sQ0FBQztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsWUFBWSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDckMsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNYLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxPQUFPLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQzFELElBQUksSUFBSSxJQUFJLEdBQUcsT0FBTyxPQUFPLEtBQUssUUFBUSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUMxRSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxXQUFXLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BHLElBQUksT0FBTyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFDRCxPQUFBLENBQUEsWUFBQSxHQUF1QixZQUFZLENBQUM7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxNQUFNLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUMvQixJQUFJLElBQUksT0FBTyxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsT0FBTyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUMxRCxJQUFJLElBQUksSUFBSSxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsR0FBRyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDMUU7QUFDQSxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxZQUFZLENBQUMsSUFBSTtBQUN2QyxRQUFRLE9BQU8sSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pELElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxTQUFTO0FBQzVDLFFBQVEsT0FBTyxJQUFJLFdBQVcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdEQsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLElBQUk7QUFDdkMsUUFBUSxPQUFPLElBQUksV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRCxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUMsSUFBSSxFQUFFO0FBQ3pDLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFlBQVksQ0FBQyxLQUFLLEVBQUU7QUFDOUMsWUFBWSxPQUFPLElBQUksV0FBVyxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzdELFNBQVM7QUFDVCxRQUFRLE9BQU8sSUFBSSxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pELEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxJQUFJLFdBQVcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUNELE9BQUEsQ0FBQSxNQUFBLEdBQWlCLE1BQU0sQ0FBQztBQUN4QixJQUFJLFdBQVcsR0FBRyxXQUFzQixDQUFDO0FBQ3pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN0SCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDaEgsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsWUFBWSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE9BQU8sV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hILE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE9BQU8sV0FBVyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xJLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN4SCxJQUFJLFdBQVcsR0FBRyxXQUFzQixDQUFDO0FBQ3pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN4SCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxPQUFPLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3hJO0FBQ0EsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE9BQU8sV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pILE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGFBQWEsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN6SCxJQUFJLFdBQVcsR0FBRyxXQUFzQixDQUFDO0FBQ3pDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxPQUFPLFdBQVcsQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM5SCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsT0FBTyxXQUFXLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDNUgsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE9BQU8sV0FBVyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3RILE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLFlBQVksRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxPQUFPLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN4SCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxPQUFPLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3BJLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE9BQU8sV0FBVyxDQUFDLG1CQUFtQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUk7QUFDQSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsT0FBTyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDekgsTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsYUFBYSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE9BQU8sV0FBVyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pILE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsWUFBWSxFQUFFLE9BQU8sV0FBVyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDckksTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxZQUFZLEVBQUUsT0FBTyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNySSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxPQUFPLFdBQVcsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM1SDs7OztBQzVIQSxNQUFNLENBQUMsY0FBYyxDQUFBLE9BQUEsRUFBVSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RCxPQUF5QixDQUFBLGNBQUEsR0FBQSxPQUFBLENBQUEsWUFBQSxHQUF1QixLQUFLLENBQUMsQ0FBQztBQUN2RCxPQUF1QixDQUFBLFlBQUEsR0FBQSxJQUFJLEdBQUcsQ0FBQztBQUMvQixJQUFJLFVBQVU7QUFDZCxJQUFJLGFBQWE7QUFDakIsSUFBSSxjQUFjO0FBQ2xCLElBQUksY0FBYztBQUNsQixJQUFJLGVBQWU7QUFDbkIsSUFBSSxrQkFBa0I7QUFDdEIsSUFBSSxVQUFVO0FBQ2QsSUFBSSxTQUFTO0FBQ2IsSUFBSSxlQUFlO0FBQ25CLElBQUkscUJBQXFCO0FBQ3pCLElBQUksYUFBYTtBQUNqQixJQUFJLGtCQUFrQjtBQUN0QixJQUFJLG1CQUFtQjtBQUN2QixJQUFJLG1CQUFtQjtBQUN2QixJQUFJLGdCQUFnQjtBQUNwQixJQUFJLGNBQWM7QUFDbEIsSUFBSSxTQUFTO0FBQ2IsSUFBSSxTQUFTO0FBQ2IsSUFBSSxTQUFTO0FBQ2IsSUFBSSxTQUFTO0FBQ2IsSUFBSSxTQUFTO0FBQ2IsSUFBSSxnQkFBZ0I7QUFDcEIsSUFBSSxTQUFTO0FBQ2IsSUFBSSxTQUFTO0FBQ2IsSUFBSSxhQUFhO0FBQ2pCLElBQUksY0FBYztBQUNsQixJQUFJLFVBQVU7QUFDZCxJQUFJLGNBQWM7QUFDbEIsSUFBSSxvQkFBb0I7QUFDeEIsSUFBSSxhQUFhO0FBQ2pCLElBQUksUUFBUTtBQUNaLElBQUksY0FBYztBQUNsQixJQUFJLGVBQWU7QUFDbkIsSUFBSSxVQUFVO0FBQ2QsSUFBSSxnQkFBZ0I7QUFDcEIsSUFBSSxnQkFBZ0I7QUFDcEIsSUFBSSxVQUFVO0FBQ2QsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1RCxPQUF5QixDQUFBLGNBQUEsR0FBQSxJQUFJLEdBQUcsQ0FBQztBQUNqQyxJQUFJLGVBQWU7QUFDbkIsSUFBSSxlQUFlO0FBQ25CLElBQUksZUFBZTtBQUNuQixJQUFJLGVBQWU7QUFDbkIsSUFBSSxhQUFhO0FBQ2pCLElBQUksVUFBVTtBQUNkLElBQUksZUFBZTtBQUNuQixJQUFJLGlCQUFpQjtBQUNyQixJQUFJLFVBQVU7QUFDZCxJQUFJLGFBQWE7QUFDakIsSUFBSSxVQUFVO0FBQ2QsSUFBSSxtQkFBbUI7QUFDdkIsSUFBSSxlQUFlO0FBQ25CLElBQUksY0FBYztBQUNsQixJQUFJLGtCQUFrQjtBQUN0QixJQUFJLFdBQVc7QUFDZixJQUFJLFlBQVk7QUFDaEIsSUFBSSxVQUFVO0FBQ2QsSUFBSSxjQUFjO0FBQ2xCLElBQUksbUJBQW1CO0FBQ3ZCLElBQUksY0FBYztBQUNsQixJQUFJLGFBQWE7QUFDakIsSUFBSSxhQUFhO0FBQ2pCLElBQUksa0JBQWtCO0FBQ3RCLElBQUksV0FBVztBQUNmLElBQUksWUFBWTtBQUNoQixJQUFJLFlBQVk7QUFDaEIsSUFBSSxxQkFBcUI7QUFDekIsSUFBSSxrQkFBa0I7QUFDdEIsSUFBSSxjQUFjO0FBQ2xCLElBQUksV0FBVztBQUNmLElBQUksV0FBVztBQUNmLElBQUksV0FBVztBQUNmLElBQUksZUFBZTtBQUNuQixJQUFJLHFCQUFxQjtBQUN6QixJQUFJLGdCQUFnQjtBQUNwQixJQUFJLE1BQU07QUFDVixJQUFJLE1BQU07QUFDVixJQUFJLGFBQWE7QUFDakIsSUFBSSxXQUFXO0FBQ2YsSUFBSSxvQkFBb0I7QUFDeEIsSUFBSSxrQkFBa0I7QUFDdEIsSUFBSSxrQkFBa0I7QUFDdEIsSUFBSSxrQkFBa0I7QUFDdEIsSUFBSSxjQUFjO0FBQ2xCLElBQUksYUFBYTtBQUNqQixJQUFJLGNBQWM7QUFDbEIsSUFBSSxhQUFhO0FBQ2pCLElBQUksY0FBYztBQUNsQixJQUFJLGdCQUFnQjtBQUNwQixJQUFJLGFBQWE7QUFDakIsSUFBSSxTQUFTO0FBQ2IsSUFBSSxTQUFTO0FBQ2IsSUFBSSxZQUFZO0FBQ2hCLElBQUksU0FBUztBQUNiLElBQUksWUFBWTtBQUNoQixJQUFJLGtCQUFrQjtBQUN0QixJQUFJLGtCQUFrQjtBQUN0QixJQUFJLFlBQVk7QUFDaEIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTs7Ozs7Ozs7QUNyRzNELElBQUksUUFBUSxHQUFHLENBQUNILGNBQUksSUFBSUEsY0FBSSxDQUFDLFFBQVEsS0FBSyxZQUFZO0FBQ3RELElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDLEVBQUU7QUFDNUMsUUFBUSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM3RCxZQUFZLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsWUFBWSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzNFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzVCLFNBQVM7QUFDVCxRQUFRLE9BQU8sQ0FBQyxDQUFDO0FBQ2pCLEtBQUssQ0FBQztBQUNOLElBQUksT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFDRixJQUFJLGVBQWUsR0FBRyxDQUFDQSxjQUFJLElBQUlBLGNBQUksQ0FBQyxlQUFlLE1BQU0sTUFBTSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtBQUNoRyxJQUFJLElBQUksRUFBRSxLQUFLLFNBQVMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLElBQUksSUFBSSxJQUFJLEdBQUcsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRCxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7QUFDdkYsTUFBTSxJQUFJLEdBQUcsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7QUFDcEUsS0FBSztBQUNMLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsS0FBSyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRTtBQUM1QixJQUFJLElBQUksRUFBRSxLQUFLLFNBQVMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ2pDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQixDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ0osSUFBSSxrQkFBa0IsR0FBRyxDQUFDQSxjQUFJLElBQUlBLGNBQUksQ0FBQyxrQkFBa0IsTUFBTSxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUMvRixJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDeEUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNwQixJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckIsQ0FBQyxDQUFDLENBQUM7QUFDSCxJQUFJLFlBQVksR0FBRyxDQUFDQSxjQUFJLElBQUlBLGNBQUksQ0FBQyxZQUFZLEtBQUssVUFBVSxHQUFHLEVBQUU7QUFDakUsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sR0FBRyxDQUFDO0FBQzFDLElBQUksSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLElBQUksSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzdJLElBQUksa0JBQWtCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLElBQUksT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQyxDQUFDO0FBQ0YsTUFBTSxDQUFDLGNBQWMsQ0FBQSxPQUFBLEVBQVUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUQsT0FBaUIsQ0FBQSxNQUFBLEdBQUEsS0FBSyxDQUFDLENBQUM7QUFDeEI7QUFDQTtBQUNBO0FBQ0EsSUFBSSxXQUFXLEdBQUcsWUFBWSxDQUFDRyxZQUF5QixDQUFDLENBQUM7QUFDckI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3FEO0FBQ3JELElBQUksaUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUM7QUFDaEMsSUFBSSxPQUFPO0FBQ1gsSUFBSSxRQUFRO0FBQ1osSUFBSSxLQUFLO0FBQ1QsSUFBSSxRQUFRO0FBQ1osSUFBSSxTQUFTO0FBQ2IsSUFBSSxVQUFVO0FBQ2QsSUFBSSxXQUFXO0FBQ2YsSUFBSSxVQUFVO0FBQ2QsQ0FBQyxDQUFDLENBQUM7QUFDSCxTQUFTLGFBQWEsQ0FBQyxLQUFLLEVBQUU7QUFDOUIsSUFBSSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQSxTQUFTLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUU7QUFDNUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNYLElBQUksSUFBSSxDQUFDLFVBQVU7QUFDbkIsUUFBUSxPQUFPO0FBQ2YsSUFBSSxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsTUFBTSxLQUFLO0FBQzVHLFVBQVUsYUFBYTtBQUN2QixVQUFVLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsS0FBSyxNQUFNO0FBQ3hELGNBQWMsVUFBVSxDQUFDLFNBQVM7QUFDbEMsY0FBYyxVQUFVLENBQUMsZUFBZSxDQUFDO0FBQ3pDLElBQUksT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUNsQyxTQUFTLEdBQUcsQ0FBQyxVQUFVLEdBQUcsRUFBRTtBQUM1QixRQUFRLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQztBQUNuQixRQUFRLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDL0UsUUFBUSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO0FBQ3hDO0FBQ0EsWUFBWSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxHQUFHLENBQUM7QUFDeEcsU0FBUztBQUNULFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssS0FBSyxFQUFFLEVBQUU7QUFDL0QsWUFBWSxPQUFPLEdBQUcsQ0FBQztBQUN2QixTQUFTO0FBQ1QsUUFBUSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakUsS0FBSyxDQUFDO0FBQ04sU0FBUyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxHQUFHLElBQUksR0FBRyxDQUFDO0FBQ3hCLElBQUksTUFBTTtBQUNWLElBQUksTUFBTTtBQUNWLElBQUksVUFBVTtBQUNkLElBQUksSUFBSTtBQUNSLElBQUksS0FBSztBQUNULElBQUksU0FBUztBQUNiLElBQUksT0FBTztBQUNYLElBQUksT0FBTztBQUNYLElBQUksSUFBSTtBQUNSLElBQUksS0FBSztBQUNULElBQUksT0FBTztBQUNYLElBQUksU0FBUztBQUNiLElBQUksUUFBUTtBQUNaLElBQUksTUFBTTtBQUNWLElBQUksTUFBTTtBQUNWLElBQUksT0FBTztBQUNYLElBQUksUUFBUTtBQUNaLElBQUksT0FBTztBQUNYLElBQUksS0FBSztBQUNULENBQUMsQ0FBQyxDQUFDO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsTUFBTSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDL0IsSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRTtBQUM3QyxJQUFJLElBQUksS0FBSyxHQUFHLFFBQVEsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakQsSUFBSSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDcEIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMzQyxRQUFRLE1BQU0sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ2hELEtBQUs7QUFDTCxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFDRCxPQUFBLENBQUEsTUFBQSxHQUFpQixNQUFNLENBQUM7QUFDeEIsT0FBQSxDQUFBLE9BQUEsR0FBa0IsTUFBTSxDQUFDO0FBQ3pCLFNBQVMsVUFBVSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDbkMsSUFBSSxRQUFRLElBQUksQ0FBQyxJQUFJO0FBQ3JCLFFBQVEsS0FBSyxXQUFXLENBQUMsSUFBSTtBQUM3QixZQUFZLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDbEQ7QUFDQSxRQUFRLEtBQUssV0FBVyxDQUFDLE9BQU8sQ0FBQztBQUNqQyxRQUFRLEtBQUssV0FBVyxDQUFDLFNBQVM7QUFDbEMsWUFBWSxPQUFPLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxRQUFRLEtBQUssV0FBVyxDQUFDLE9BQU87QUFDaEMsWUFBWSxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2QyxRQUFRLEtBQUssV0FBVyxDQUFDLEtBQUs7QUFDOUIsWUFBWSxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNyQyxRQUFRLEtBQUssV0FBVyxDQUFDLE1BQU0sQ0FBQztBQUNoQyxRQUFRLEtBQUssV0FBVyxDQUFDLEtBQUssQ0FBQztBQUMvQixRQUFRLEtBQUssV0FBVyxDQUFDLEdBQUc7QUFDNUIsWUFBWSxPQUFPLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDNUMsUUFBUSxLQUFLLFdBQVcsQ0FBQyxJQUFJO0FBQzdCLFlBQVksT0FBTyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzdDLEtBQUs7QUFDTCxDQUFDO0FBQ0QsSUFBSSw0QkFBNEIsR0FBRyxJQUFJLEdBQUcsQ0FBQztBQUMzQyxJQUFJLElBQUk7QUFDUixJQUFJLElBQUk7QUFDUixJQUFJLElBQUk7QUFDUixJQUFJLElBQUk7QUFDUixJQUFJLE9BQU87QUFDWCxJQUFJLGdCQUFnQjtBQUNwQixJQUFJLGVBQWU7QUFDbkIsSUFBSSxNQUFNO0FBQ1YsSUFBSSxPQUFPO0FBQ1gsQ0FBQyxDQUFDLENBQUM7QUFDSCxJQUFJLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQy9DLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDL0IsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNYO0FBQ0EsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO0FBQ3BDO0FBQ0EsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLENBQUMsRUFBRSxHQUFHLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDcEg7QUFDQSxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU07QUFDdkIsWUFBWSw0QkFBNEIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUNoRSxZQUFZLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQ3BFLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN6RCxRQUFRLElBQUksR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0FBQ3BFLEtBQUs7QUFDTCxJQUFJLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3BDLElBQUksSUFBSSxPQUFPLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2RCxJQUFJLElBQUksT0FBTyxFQUFFO0FBQ2pCLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkMsS0FBSztBQUNMLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sS0FBSyxDQUFDO0FBQ2xDLFNBQVMsSUFBSSxDQUFDLE9BQU87QUFDckI7QUFDQSxnQkFBZ0IsSUFBSSxDQUFDLGVBQWUsS0FBSyxLQUFLO0FBQzlDO0FBQ0EsZ0JBQWdCLElBQUksQ0FBQyxlQUFlLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUNuRSxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztBQUN6QixZQUFZLEdBQUcsSUFBSSxHQUFHLENBQUM7QUFDdkIsUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxTQUFTO0FBQ1QsUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDO0FBQ25CLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDdEMsWUFBWSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDL0MsU0FBUztBQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDdkQsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQy9DLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFDRCxTQUFTLGVBQWUsQ0FBQyxJQUFJLEVBQUU7QUFDL0IsSUFBSSxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBQ0QsU0FBUyxVQUFVLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtBQUNoQyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQ1gsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUMvQjtBQUNBLElBQUksSUFBSSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLE1BQU0sSUFBSSxJQUFJLEVBQUUsS0FBSyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsTUFBTSxLQUFLO0FBQ25HLFFBQVEsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPO0FBQ3ZCLFlBQVksSUFBSSxDQUFDLE1BQU07QUFDdkIsWUFBWSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ3RELFFBQVEsSUFBSTtBQUNaLFlBQVksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxLQUFLLE1BQU07QUFDMUQsa0JBQWtCLElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUM7QUFDakQsa0JBQWtCLElBQUksVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNuRCxLQUFLO0FBQ0wsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBQ0QsU0FBUyxXQUFXLENBQUMsSUFBSSxFQUFFO0FBQzNCLElBQUksT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVELENBQUM7QUFDRCxTQUFTLGFBQWEsQ0FBQyxJQUFJLEVBQUU7QUFDN0IsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztBQUMzQyxDQUFBOzs7Ozs7OztBQ25PQSxJQUFJLGVBQWUsR0FBRyxDQUFDSCxjQUFJLElBQUlBLGNBQUksQ0FBQyxlQUFlLEtBQUssVUFBVSxHQUFHLEVBQUU7QUFDdkUsSUFBSSxPQUFPLENBQUMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQzlELENBQUMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUEsT0FBQSxFQUFVLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzlELE9BQUEsQ0FBQSxTQUFBLEdBQW9CLHNCQUFzQixPQUFrQixDQUFBLE9BQUEsR0FBQSxPQUFBLENBQUEsWUFBQSxHQUF1QixPQUF1QixDQUFBLFlBQUEsR0FBQSxLQUFLLENBQUMsQ0FBQztBQUN4RTtBQUN6QyxJQUFJLGdCQUFnQixHQUFHLGVBQWUsQ0FBQ0csWUFBeUIsQ0FBQyxDQUFDO0FBQ2pCO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxZQUFZLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUNyQyxJQUFJLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFDRCxPQUFBLENBQUEsWUFBQSxHQUF1QixZQUFZLENBQUM7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO0FBQ3JDLElBQUksT0FBTyxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDO0FBQzlDLFVBQVUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUUsRUFBRSxPQUFPLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUM3RixVQUFVLEVBQUUsQ0FBQztBQUNiLENBQUM7QUFDRCxPQUFBLENBQUEsWUFBQSxHQUF1QixZQUFZLENBQUM7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRTtBQUN2QixJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDM0IsUUFBUSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFDLElBQUksSUFBSSxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO0FBQ3JDLFFBQVEsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsRSxJQUFJLElBQUksSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztBQUN2QyxRQUFRLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN0QyxJQUFJLElBQUksSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztBQUN0QyxRQUFRLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztBQUN6QixJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ2QsQ0FBQztBQUNELE9BQUEsQ0FBQSxPQUFBLEdBQWtCLE9BQU8sQ0FBQztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxXQUFXLENBQUMsSUFBSSxFQUFFO0FBQzNCLElBQUksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztBQUMzQixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDOUMsSUFBSSxJQUFJLElBQUksWUFBWSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsRUFBRTtBQUNuRixRQUFRLE9BQU8sV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxQyxLQUFLO0FBQ0wsSUFBSSxJQUFJLElBQUksWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUM7QUFDdEMsUUFBUSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDekIsSUFBSSxPQUFPLEVBQUUsQ0FBQztBQUNkLENBQUM7QUFDRCxPQUFBLENBQUEsV0FBQSxHQUFzQixXQUFXLENBQUM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRTtBQUN6QixJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDM0IsUUFBUSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLElBQUksSUFBSSxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksS0FBS0YsWUFBZ0IsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ3BJLFFBQVEsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3hDLEtBQUs7QUFDTCxJQUFJLElBQUksSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQztBQUN0QyxRQUFRLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztBQUN6QixJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQ2QsQ0FBQztBQUNELE9BQUEsQ0FBQSxTQUFBLEdBQW9CLFNBQVMsQ0FBQztBQUM5Qjs7OztBQzFGQSxNQUFNLENBQUMsY0FBYyxDQUFBLE9BQUEsRUFBVSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RCxPQUE2QixDQUFBLGtCQUFBLEdBQUEsT0FBQSxDQUFBLGtCQUFBLEdBQTZCLGtCQUFrQixPQUFvQixDQUFBLFNBQUEsR0FBQSxPQUFBLENBQUEsaUJBQUEsR0FBNEIsc0JBQXNCLE9BQW9CLENBQUEsU0FBQSxHQUFBLE9BQUEsQ0FBQSxXQUFBLEdBQXNCLEtBQUssQ0FBQyxDQUFDO0FBQzFKO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxXQUFXLENBQUMsSUFBSSxFQUFFO0FBQzNCLElBQUksT0FBTyxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDcEUsQ0FBQztBQUNELE9BQUEsQ0FBQSxXQUFBLEdBQXNCLFdBQVcsQ0FBQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRTtBQUN6QixJQUFJLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUM7QUFDL0IsQ0FBQztBQUNELE9BQUEsQ0FBQSxTQUFBLEdBQW9CLFNBQVMsQ0FBQztBQUM5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxXQUFXLENBQUMsSUFBSSxFQUFFO0FBQzNCLElBQUksSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQ2YsSUFBSSxJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsSUFBSSxJQUFJLE1BQU0sSUFBSSxJQUFJO0FBQ3RCLFFBQVEsT0FBTyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbkMsSUFBSSxJQUFJLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUMzQyxJQUFJLE9BQU8sSUFBSSxJQUFJLElBQUksRUFBRTtBQUN6QixRQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsUUFBUSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUU7QUFDcEMsS0FBSztBQUNMLElBQUksT0FBTyxJQUFJLElBQUksSUFBSSxFQUFFO0FBQ3pCLFFBQVEsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixRQUFRLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRTtBQUNwQyxLQUFLO0FBQ0wsSUFBSSxPQUFPLFFBQVEsQ0FBQztBQUNwQixDQUFDO0FBQ0QsT0FBQSxDQUFBLFdBQUEsR0FBc0IsV0FBVyxDQUFDO0FBQ2xDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGlCQUFpQixDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDdkMsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNYLElBQUksT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxNQUFNLElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzdFLENBQUM7QUFDRCxPQUFBLENBQUEsaUJBQUEsR0FBNEIsaUJBQWlCLENBQUM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDL0IsSUFBSSxRQUFRLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSTtBQUNoQyxRQUFRLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQztBQUNoRSxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFO0FBQ3BDLENBQUM7QUFDRCxPQUFBLENBQUEsU0FBQSxHQUFvQixTQUFTLENBQUM7QUFDOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLE9BQU8sQ0FBQyxJQUFJLEVBQUU7QUFDdkIsSUFBSSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDckIsQ0FBQztBQUNELE9BQUEsQ0FBQSxPQUFBLEdBQWtCLE9BQU8sQ0FBQztBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7QUFDbEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNYLElBQUksSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUN6QixJQUFJLE9BQU8sSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7QUFDMUQsUUFBUSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUU7QUFDcEMsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBQ0QsT0FBQSxDQUFBLGtCQUFBLEdBQTZCLGtCQUFrQixDQUFDO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGtCQUFrQixDQUFDLElBQUksRUFBRTtBQUNsQyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQ1gsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3pCLElBQUksT0FBTyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztBQUMxRCxRQUFRLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksRUFBRTtBQUNwQyxJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFDRCxPQUFBLENBQUEsa0JBQUEsR0FBNkIsa0JBQWtCLENBQUM7QUFDaEQ7Ozs7QUM1SEEsTUFBTSxDQUFDLGNBQWMsQ0FBQSxPQUFBLEVBQVUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUQsT0FBQSxDQUFBLE9BQUEsR0FBa0IsdUJBQXVCLE9BQWlCLENBQUEsTUFBQSxHQUFBLE9BQUEsQ0FBQSxXQUFBLEdBQXNCLHlCQUF5QixPQUF3QixDQUFBLGFBQUEsR0FBQSxLQUFLLENBQUMsQ0FBQztBQUN4STtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGFBQWEsQ0FBQyxJQUFJLEVBQUU7QUFDN0IsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJO0FBQ2pCLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztBQUNuQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUk7QUFDakIsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ25DLElBQUksSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3JCLFFBQVEsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDMUMsUUFBUSxJQUFJLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25ELFFBQVEsSUFBSSxXQUFXLElBQUksQ0FBQyxFQUFFO0FBQzlCLFlBQVksTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDMUMsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDckIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUN2QixDQUFDO0FBQ0QsT0FBQSxDQUFBLGFBQUEsR0FBd0IsYUFBYSxDQUFDO0FBQ3RDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxjQUFjLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtBQUMzQyxJQUFJLElBQUksSUFBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlDLElBQUksSUFBSSxJQUFJLEVBQUU7QUFDZCxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO0FBQ2hDLEtBQUs7QUFDTCxJQUFJLElBQUksSUFBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlDLElBQUksSUFBSSxJQUFJLEVBQUU7QUFDZCxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDO0FBQ2hDLEtBQUs7QUFDTCxJQUFJLElBQUksTUFBTSxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BELElBQUksSUFBSSxNQUFNLEVBQUU7QUFDaEIsUUFBUSxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ3JDLFFBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUM7QUFDdkQsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUMzQixLQUFLO0FBQ0wsQ0FBQztBQUNELE9BQUEsQ0FBQSxjQUFBLEdBQXlCLGNBQWMsQ0FBQztBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsV0FBVyxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFDcEMsSUFBSSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDekIsSUFBSSxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN0QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQzFCLElBQUksSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDekMsUUFBUSxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLFFBQVEsT0FBTyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7QUFDN0IsUUFBUSxLQUFLLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQztBQUM3QixLQUFLO0FBQ0wsU0FBUztBQUNULFFBQVEsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDMUIsS0FBSztBQUNMLENBQUM7QUFDRCxPQUFBLENBQUEsV0FBQSxHQUFzQixXQUFXLENBQUM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFO0FBQzVCLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3hCLElBQUksSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztBQUM3QixJQUFJLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDN0IsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztBQUN6QixJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDckIsSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUN6QixJQUFJLElBQUksUUFBUSxFQUFFO0FBQ2xCLFFBQVEsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDN0IsUUFBUSxJQUFJLE1BQU0sRUFBRTtBQUNwQixZQUFZLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDekMsWUFBWSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pFLFNBQVM7QUFDVCxLQUFLO0FBQ0wsU0FBUyxJQUFJLE1BQU0sRUFBRTtBQUNyQixRQUFRLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ25DLEtBQUs7QUFDTCxDQUFDO0FBQ0QsT0FBQSxDQUFBLE1BQUEsR0FBaUIsTUFBTSxDQUFDO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxZQUFZLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRTtBQUNyQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN6QixJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0FBQzFCLElBQUksS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDdEIsSUFBSSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUM5QyxRQUFRLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMsUUFBUSxPQUFPLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztBQUM3QixRQUFRLEtBQUssQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDO0FBQzdCLEtBQUs7QUFDTCxTQUFTO0FBQ1QsUUFBUSxLQUFLLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUMxQixLQUFLO0FBQ0wsQ0FBQztBQUNELE9BQUEsQ0FBQSxZQUFBLEdBQXVCLFlBQVksQ0FBQztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDN0IsSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDeEIsSUFBSSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQzdCLElBQUksSUFBSSxNQUFNLEVBQUU7QUFDaEIsUUFBUSxJQUFJLE1BQU0sR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ3JDLFFBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRCxLQUFLO0FBQ0wsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7QUFDbkIsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDOUIsS0FBSztBQUNMLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDekIsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7QUFDMUIsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLENBQUM7QUFDRCxPQUFBLENBQUEsT0FBQSxHQUFrQixPQUFPLENBQUM7QUFDMUI7Ozs7QUM3SUEsTUFBTSxDQUFDLGNBQWMsQ0FBQSxPQUFBLEVBQVUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUQsT0FBQSxDQUFBLE9BQUEsR0FBa0Isb0JBQW9CLE9BQWtCLENBQUEsT0FBQSxHQUFBLE9BQUEsQ0FBQSxZQUFBLEdBQXVCLGVBQWUsT0FBaUIsQ0FBQSxNQUFBLEdBQUEsS0FBSyxDQUFDLENBQUM7QUFDN0U7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDNUMsSUFBSSxJQUFJLE9BQU8sS0FBSyxLQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sR0FBRyxJQUFJLENBQUMsRUFBRTtBQUMvQyxJQUFJLElBQUksS0FBSyxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsS0FBSyxHQUFHLFFBQVEsQ0FBQyxFQUFFO0FBQy9DLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzNFLENBQUM7QUFDRCxPQUFBLENBQUEsTUFBQSxHQUFpQixNQUFNLENBQUM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7QUFDM0MsSUFBSSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDcEI7QUFDQSxJQUFJLElBQUksU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUI7QUFDQSxJQUFJLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsSUFBSSxTQUFTO0FBQ2I7QUFDQSxRQUFRLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUU7QUFDbEQ7QUFDQSxZQUFZLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDekMsZ0JBQWdCLE9BQU8sTUFBTSxDQUFDO0FBQzlCLGFBQWE7QUFDYjtBQUNBLFlBQVksU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzlCLFlBQVksVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9CO0FBQ0EsWUFBWSxTQUFTO0FBQ3JCLFNBQVM7QUFDVCxRQUFRLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pELFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDeEIsWUFBWSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLFlBQVksSUFBSSxFQUFFLEtBQUssSUFBSSxDQUFDO0FBQzVCLGdCQUFnQixPQUFPLE1BQU0sQ0FBQztBQUM5QixTQUFTO0FBQ1QsUUFBUSxJQUFJLE9BQU8sSUFBSSxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3hGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2xDLFlBQVksU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0MsU0FBUztBQUNULEtBQUs7QUFDTCxDQUFDO0FBQ0QsT0FBQSxDQUFBLElBQUEsR0FBZSxJQUFJLENBQUM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxZQUFZLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUNuQyxJQUFJLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBQ0QsT0FBQSxDQUFBLFlBQUEsR0FBdUIsWUFBWSxDQUFDO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0FBQ3ZDLElBQUksSUFBSSxPQUFPLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUU7QUFDL0MsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEIsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNwRCxRQUFRLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixRQUFRLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUU7QUFDNUMsWUFBWSxTQUFTO0FBQ3JCLFNBQVM7QUFDVCxhQUFhLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQzdCLFlBQVksSUFBSSxHQUFHLElBQUksQ0FBQztBQUN4QixTQUFTO0FBQ1QsYUFBYSxJQUFJLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7QUFDdEQsWUFBWSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RELFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBQ0QsT0FBQSxDQUFBLE9BQUEsR0FBa0IsT0FBTyxDQUFDO0FBQzFCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO0FBQ2hDLElBQUksT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsT0FBTyxFQUFFO0FBQ3pDLFFBQVEsT0FBTyxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDO0FBQy9DLGFBQWEsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDakUsS0FBSyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBQ0QsT0FBQSxDQUFBLFNBQUEsR0FBb0IsU0FBUyxDQUFDO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtBQUM5QixJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNwQixJQUFJLElBQUksU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUIsSUFBSSxJQUFJLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLElBQUksU0FBUztBQUNiLFFBQVEsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUNsRCxZQUFZLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7QUFDeEMsZ0JBQWdCLE9BQU8sTUFBTSxDQUFDO0FBQzlCLGFBQWE7QUFDYjtBQUNBLFlBQVksU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzlCLFlBQVksVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQy9CO0FBQ0EsWUFBWSxTQUFTO0FBQ3JCLFNBQVM7QUFDVCxRQUFRLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pELFFBQVEsSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7QUFDMUMsWUFBWSxTQUFTO0FBQ3JCLFFBQVEsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQ3RCLFlBQVksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QixRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RDLFlBQVksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxZQUFZLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdDLFNBQVM7QUFDVCxLQUFLO0FBQ0wsQ0FBQztBQUNELE9BQUEsQ0FBQSxPQUFBLEdBQWtCLE9BQU8sQ0FBQztBQUMxQjs7Ozs7O0FDN0pBLE1BQU0sQ0FBQyxjQUFjLENBQUEsT0FBQSxFQUFVLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzlELE9BQUEsQ0FBQSxvQkFBQSxHQUErQiwrQkFBK0IsT0FBeUIsQ0FBQSxjQUFBLEdBQUEsT0FBQSxDQUFBLFdBQUEsR0FBc0IsT0FBc0IsQ0FBQSxXQUFBLEdBQUEsS0FBSyxDQUFDLENBQUM7QUFDakc7QUFDSTtBQUM3QztBQUNBO0FBQ0E7QUFDQSxJQUFJLE1BQU0sR0FBRztBQUNiLElBQUksUUFBUSxFQUFFLFVBQVUsSUFBSSxFQUFFO0FBQzlCLFFBQVEsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLEVBQUU7QUFDeEMsWUFBWSxPQUFPLFVBQVUsSUFBSSxFQUFFLEVBQUUsT0FBTyxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDaEcsU0FBUztBQUNULGFBQWEsSUFBSSxJQUFJLEtBQUssR0FBRyxFQUFFO0FBQy9CLFlBQVksT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDO0FBQ3RDLFNBQVM7QUFDVCxRQUFRLE9BQU8sVUFBVSxJQUFJLEVBQUUsRUFBRSxPQUFPLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDL0YsS0FBSztBQUNMLElBQUksUUFBUSxFQUFFLFVBQVUsSUFBSSxFQUFFO0FBQzlCLFFBQVEsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLEVBQUU7QUFDeEMsWUFBWSxPQUFPLFVBQVUsSUFBSSxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMvRCxTQUFTO0FBQ1QsUUFBUSxPQUFPLFVBQVUsSUFBSSxFQUFFLEVBQUUsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7QUFDOUQsS0FBSztBQUNMLElBQUksWUFBWSxFQUFFLFVBQVUsSUFBSSxFQUFFO0FBQ2xDLFFBQVEsSUFBSSxPQUFPLElBQUksS0FBSyxVQUFVLEVBQUU7QUFDeEMsWUFBWSxPQUFPLFVBQVUsSUFBSSxFQUFFLEVBQUUsT0FBTyxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDakcsU0FBUztBQUNULFFBQVEsT0FBTyxVQUFVLElBQUksRUFBRSxFQUFFLE9BQU8sSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxJQUFJ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RUFBRSxNQUFNLENBQUMsQ0FBQztBQUN6RCxDQUFDLENBQUMsQ0FBQztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBb0IsQ0FBQSxTQUFBLEdBQUEsS0FBSyxDQUFDLFVBQVUsRUFBRSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRTtBQUN0RSxJQUFJLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO0FBQzFDLFFBQVEsT0FBTztBQUNmLElBQUksSUFBSUEsS0FBVSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDMUQsSUFBSSxJQUFJQSxLQUFVLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUMsQ0FBQztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLE1BQU0sQ0FBQyxRQUFRLEVBQUU7QUFDMUIsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDckIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUN6QixTQUFTLEdBQUcsQ0FBQyxNQUFNLENBQUM7QUFDcEIsU0FBUyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFO0FBQy9CLFFBQVEsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2pELEtBQUssQ0FBQyxDQUFDO0FBQ1AsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBQ0QsT0FBQSxDQUFBLE1BQUEsR0FBaUIsTUFBTSxDQUFDO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsT0FBTyxDQUFDLE9BQU8sRUFBRTtBQUMxQixJQUFJLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyQixJQUFJLElBQUksRUFBRSxFQUFFO0FBQ1osUUFBUSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sT0FBTyxLQUFLLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BIO0FBQ0EsUUFBUSxJQUFJLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLFFBQVEsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDaEQsWUFBWSxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssS0FBSztBQUN4QyxnQkFBZ0IsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLFNBQVM7QUFDVCxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsT0FBTyxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtBQUN6RSxZQUFZLElBQUksS0FBSyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNyRCxZQUFZLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxLQUFLLEVBQUU7QUFDdEMsZ0JBQWdCLGdCQUFnQixHQUFHLEtBQUssQ0FBQztBQUN6QyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0QixhQUFhO0FBQ2IsaUJBQWlCO0FBQ2pCLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztBQUNwQixhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVEsSUFBSSxnQkFBZ0I7QUFDNUIsWUFBWSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RELEtBQUs7QUFDTCxJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFDRCxPQUFBLENBQUEsT0FBQSxHQUFrQixPQUFPLENBQUM7QUFDMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsS0FBSyxHQUFHO0FBQ2pCLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ25CLElBQUksS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDbEQsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDLEtBQUs7QUFDTCxJQUFJLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLElBQUksT0FBTyxJQUFJZCxLQUFVLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDMUQsUUFBUSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQy9CLFFBQVEsSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUMzRCxZQUFZLE9BQU87QUFDbkIsU0FBUztBQUNULFFBQVEsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUN2QyxRQUFRLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekM7QUFDQTtBQUNBLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQztBQUNyQixZQUFZLE9BQU87QUFDbkIsUUFBUSxJQUFJLE1BQU0sR0FBRyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVO0FBQ25ELGNBQWMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzlELGNBQWMsS0FBSyxDQUFDO0FBQ3BCLFFBQVEsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQzNEO0FBQ0EsUUFBUSxZQUFZLENBQUMsUUFBUSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMxRCxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRCxPQUFBLENBQUEsS0FBQSxHQUFnQixLQUFLLENBQUM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUU7QUFDN0IsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDckIsSUFBSSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsRUFBRTtBQUNwQyxRQUFRLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3BDLEtBQUs7QUFDTCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNsQixJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNwQixJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFO0FBQ3JELFFBQVEsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ2pELFFBQVEsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztBQUMvQixRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckIsWUFBWSxPQUFPO0FBQ25CLFNBQVM7QUFDVCxRQUFRLElBQUksUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDdkMsUUFBUSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDO0FBQ0E7QUFDQSxRQUFRLElBQUksS0FBSyxHQUFHLENBQUM7QUFDckIsWUFBWSxPQUFPO0FBQ25CO0FBQ0EsUUFBUSxZQUFZLENBQUMsUUFBUSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNqRSxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM5QyxLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFDRCxPQUFBLENBQUEsV0FBQSxHQUFzQixXQUFXLENBQUM7QUFDbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsTUFBTSxHQUFHO0FBQ2xCLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLElBQUksSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQ25CLElBQUksS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsRUFBRSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxFQUFFLEVBQUU7QUFDbEQsUUFBUSxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xDLEtBQUs7QUFDTCxJQUFJLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2xDLElBQUksT0FBTyxJQUFJQSxLQUFVLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDMUQsUUFBUSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQy9CLFFBQVEsSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUMzRCxZQUFZLE9BQU87QUFDbkIsU0FBUztBQUNULFFBQVEsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUN2QyxRQUFRLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekM7QUFDQTtBQUNBLFFBQVEsSUFBSSxLQUFLLEdBQUcsQ0FBQztBQUNyQixZQUFZLE9BQU87QUFDbkIsUUFBUSxJQUFJLE1BQU0sR0FBRyxPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxVQUFVO0FBQ25ELGNBQWMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzlELGNBQWMsS0FBSyxDQUFDO0FBQ3BCLFFBQVEsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQzNEO0FBQ0EsUUFBUSxZQUFZLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RELEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNELE9BQUEsQ0FBQSxNQUFBLEdBQWlCLE1BQU0sQ0FBQztBQUN4QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsWUFBWSxDQUFDLE1BQU0sRUFBRTtBQUM5QixJQUFJLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUNyQixJQUFJLElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdkMsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7QUFDbEIsSUFBSSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDcEIsSUFBSSxJQUFJQSxLQUFVLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsRUFBRTtBQUNyRCxRQUFRLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUNqRCxRQUFRLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDL0IsUUFBUSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3JCLFlBQVksT0FBTztBQUNuQixTQUFTO0FBQ1QsUUFBUSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ3ZDLFFBQVEsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6QztBQUNBO0FBQ0EsUUFBUSxJQUFJLEtBQUssR0FBRyxDQUFDO0FBQ3JCLFlBQVksT0FBTztBQUNuQjtBQUNBLFFBQVEsWUFBWSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM3RCxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxVQUFVLENBQUMsQ0FBQztBQUM5QyxLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFDRCxPQUFBLENBQUEsWUFBQSxHQUF1QixZQUFZLENBQUM7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsTUFBTSxDQUFDLFFBQVEsRUFBRTtBQUMxQjtBQUNBLElBQUksSUFBSSxLQUFLLEdBQUcsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3hELElBQUksSUFBSUEsS0FBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEVBQUU7QUFDakQsUUFBUSxJQUFJLFVBQVUsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDMUMsUUFBUSxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDN0MsS0FBSyxDQUFDLENBQUM7QUFDUCxJQUFJLE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFDRCxPQUFBLENBQUEsTUFBQSxHQUFpQixNQUFNLENBQUM7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFO0FBQzlCLElBQUksSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLElBQUksT0FBTyxJQUFJQSxLQUFVLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDMUQsUUFBUSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQy9CLFFBQVEsSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNyQixZQUFZLE9BQU87QUFDbkIsU0FBUztBQUNULFFBQVEsSUFBSSxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUN2QyxRQUFRLElBQUksSUFBSSxHQUFHLE9BQU8sT0FBTyxLQUFLLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQ3JGLFFBQVEsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVEsSUFBSWMsS0FBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDMUMsUUFBUSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pDO0FBQ0EsUUFBUSxZQUFZLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3RELFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDL0IsWUFBWSxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7QUFDakQsU0FBUztBQUNULEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNELE9BQUEsQ0FBQSxXQUFBLEdBQXNCLFdBQVcsQ0FBQztBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQUssR0FBRztBQUNqQixJQUFJLE9BQU8sSUFBSWQsS0FBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUU7QUFDdkQsUUFBUSxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztBQUM5QyxZQUFZLE9BQU87QUFDbkIsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEtBQUssRUFBRTtBQUM3QyxZQUFZLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztBQUMxRCxTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQy9CLEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNELE9BQUEsQ0FBQSxLQUFBLEdBQWdCLEtBQUssQ0FBQztBQUN0QixTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDbkIsSUFBSSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDckIsSUFBSSxJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7QUFDM0IsUUFBUSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekIsUUFBUSxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsSUFBSSxZQUFZLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztBQUNyRCxZQUFZLE9BQU8sSUFBSSxDQUFDO0FBQ3hCLFFBQVEsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxLQUFLO0FBQ0wsSUFBSSxPQUFPLElBQUlBLEtBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFO0FBQ3ZELFFBQVEsSUFBSSxDQUFDLElBQUksWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7QUFDOUMsWUFBWSxPQUFPO0FBQ25CLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsVUFBVSxLQUFLLEVBQUU7QUFDN0MsWUFBWSxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDMUQsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLElBQUksT0FBTyxHQUFHLElBQUlBLEtBQVUsQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDO0FBQ3BELGNBQWMsR0FBRyxDQUFDLE9BQU8sRUFBRTtBQUMzQixjQUFjLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUM7QUFDOUUsUUFBUSxJQUFJYyxLQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM1QyxLQUFLLENBQUMsQ0FBQztBQUNQLENBQUM7QUFDRCxPQUFBLENBQUEsSUFBQSxHQUFlLElBQUksQ0FBQztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFFBQVEsR0FBRztBQUNwQixJQUFJLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBQ0QsT0FBQSxDQUFBLFFBQUEsR0FBbUIsUUFBUSxDQUFDO0FBQzVCLFNBQVMsSUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNuQixJQUFJLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUNyQjtBQUNBLElBQUksSUFBSSxHQUFHLEtBQUssU0FBUyxFQUFFO0FBQzNCLFFBQVEsT0FBTyxJQUFJYixPQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzNDLEtBQUs7QUFDTCxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssVUFBVSxFQUFFO0FBQ25DO0FBQ0EsUUFBUSxPQUFPLElBQUlELEtBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUM5RCxZQUFZLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUlDLE9BQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0RixTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxJQUFJRCxLQUFVLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRTtBQUN2RCxRQUFRLElBQUksQ0FBQyxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO0FBQzlDLFlBQVksT0FBTztBQUNuQixRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsS0FBSyxFQUFFO0FBQzdDLFlBQVksS0FBSyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0FBQzFELFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxJQUFJLFFBQVEsR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdELFFBQVEsSUFBSWMsS0FBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0MsS0FBSyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBQ0QsT0FBQSxDQUFBLElBQUEsR0FBZSxJQUFJLENBQUM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQUssR0FBRztBQUNqQixJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJZCxLQUFVLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUNELE9BQUEsQ0FBQSxLQUFBLEdBQWdCLEtBQUssQ0FBQztBQUN0Qjs7OztBQzMxQkEsTUFBTSxDQUFDLGNBQWMsQ0FBQSxPQUFBLEVBQVUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUQsT0FBYyxDQUFBLEdBQUEsR0FBQSxLQUFLLENBQUMsQ0FBQztBQUNtQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEdBQUcsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO0FBQ3hCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLElBQUk7QUFDcEM7QUFDQSxTQUFTLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtBQUM1RCxRQUFRLE9BQU8sSUFBSUEsS0FBVSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQzlELFlBQVksSUFBSSxJQUFJQSxLQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQzNDO0FBQ0EsZ0JBQWdCLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6QyxhQUFhO0FBQ2IsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLO0FBQ0wsSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO0FBQzNCLFFBQVEsT0FBTyxTQUFTLENBQUM7QUFDekIsS0FBSztBQUNMLElBQUksT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ2pDLENBQUM7QUFDRCxPQUFBLENBQUEsR0FBQSxHQUFjLEdBQUcsQ0FBQztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDdEMsSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtBQUNsQyxRQUFRLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNoQyxRQUFRLElBQUksR0FBRyxHQUFHLE9BQU8sS0FBSyxLQUFLLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzFGLFFBQVEsSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO0FBQ3hCLFlBQVksT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDaEMsU0FBUztBQUNULGFBQWEsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFO0FBQzlCLFlBQVksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUMvQixTQUFTO0FBQ1QsUUFBUSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNoRCxLQUFLO0FBQ0wsU0FBUyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtBQUN2QyxRQUFRLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNsRCxZQUFZLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0QyxTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTCxDQUFDO0FBQ0QsU0FBUyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRTtBQUMxQixJQUFJLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxJQUFJQSxLQUFVLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztBQUN6QyxRQUFRLE9BQU87QUFDZixJQUFJLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDNUMsSUFBSSxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRTtBQUNsQyxRQUFRLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzVCLEtBQUs7QUFDTCxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUM3QixRQUFRLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUM3QixRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUU7QUFDckMsWUFBWSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUU7QUFDdEMsZ0JBQWdCLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakQsYUFBYTtBQUNiLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxPQUFPLFdBQVcsQ0FBQztBQUMzQixLQUFLO0FBQ0wsSUFBSSxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUyxDQUFDLEdBQUcsRUFBRTtBQUN4QixJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDekosQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLEtBQUssQ0FBQyxNQUFNLEVBQUU7QUFDdkIsSUFBSSxNQUFNLEdBQUcsQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ25DLElBQUksSUFBSSxDQUFDLE1BQU07QUFDZixRQUFRLE9BQU8sRUFBRSxDQUFDO0FBQ2xCLElBQUksSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ2pCLElBQUksSUFBSSxHQUFHLENBQUM7QUFDWixJQUFJLEtBQUssSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUUsRUFBRSxFQUFFO0FBQ25FLFFBQVEsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pCLFFBQVEsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNqQztBQUNBLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUMzQyxZQUFZLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUN4QyxZQUFZLElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksR0FBRyxLQUFLLFNBQVMsRUFBRTtBQUN6RCxnQkFBZ0IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDaEQsYUFBYTtBQUNiLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDekMsWUFBWSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDL0MsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE9BQU8sR0FBRyxDQUFDO0FBQ2YsQ0FBQztBQUNEOzs7O0FDcEhBLE1BQU0sQ0FBQyxjQUFjLENBQUEsT0FBQSxFQUFVLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzlELE9BQXlCLENBQUEsY0FBQSxHQUFBLE9BQUEsQ0FBQSxTQUFBLEdBQW9CLEtBQUssQ0FBQyxDQUFDO0FBQ1o7QUFDeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLG1CQUFtQixHQUFHLDhCQUE4QixDQUFDO0FBQ3pELElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQztBQUNqQixJQUFJLEtBQUssR0FBRyxRQUFRLENBQUM7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMsU0FBUyxHQUFHO0FBQ3JCO0FBQ0EsSUFBSSxJQUFJLEdBQUcsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7QUFDcEM7QUFDQSxJQUFJLElBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxJQUFJLEVBQUU7QUFDekMsUUFBUSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNwRyxLQUFLLENBQUMsQ0FBQztBQUNQO0FBQ0EsSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBQ0QsT0FBQSxDQUFBLFNBQUEsR0FBb0IsU0FBUyxDQUFDO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLGNBQWMsR0FBRztBQUMxQixJQUFJLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQztBQUNyQjtBQUNBLElBQUksT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRTtBQUN2QyxRQUFRLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsUUFBUSxJQUFJLElBQUlBLEtBQVUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7QUFDakUsWUFBWSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUM3RCxTQUFTO0FBQ1QsUUFBUSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztBQUMzRCxLQUFLLENBQUM7QUFDTixTQUFTLE1BQU07QUFDZjtBQUNBLElBQUksb0JBQW9CO0FBQ3hCO0FBQ0EsUUFBUSwrQ0FBK0M7QUFDdkQ7QUFDQSxRQUFRLDhDQUE4QztBQUN0RDtBQUNBLEtBQUs7QUFDTCxTQUFTLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUU7QUFDaEMsUUFBUSxJQUFJLEVBQUUsQ0FBQztBQUNmLFFBQVEsSUFBSSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxRQUFRLElBQUksSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDdEM7QUFDQSxRQUFRLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxHQUFHLEVBQUUsTUFBTSxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDM0U7QUFDQSxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUNsQyxZQUFZLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEdBQUcsRUFBRTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTtBQUMzRSxhQUFhLENBQUMsQ0FBQztBQUNmLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDbkUsS0FBSyxDQUFDO0FBQ04sU0FBUyxPQUFPLEVBQUUsQ0FBQztBQUNuQixDQUFDO0FBQ0QsT0FBQSxDQUFBLGNBQUEsR0FBeUIsY0FBYyxDQUFDO0FBQ3hDOzs7O0FDMUZBLElBQUksZUFBZSxHQUFHLENBQUNSLGNBQUksSUFBSUEsY0FBSSxDQUFDLGVBQWUsTUFBTSxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0FBQ2hHLElBQUksSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDakMsSUFBSSxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3JELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtBQUN2RixNQUFNLElBQUksR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztBQUNwRSxLQUFLO0FBQ0wsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDdkMsQ0FBQyxLQUFLLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFO0FBQzVCLElBQUksSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDakMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2pCLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDSixJQUFJLGtCQUFrQixHQUFHLENBQUNBLGNBQUksSUFBSUEsY0FBSSxDQUFDLGtCQUFrQixNQUFNLE1BQU0sQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQy9GLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN4RSxDQUFDLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3BCLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQixDQUFDLENBQUMsQ0FBQztBQUNILElBQUksWUFBWSxHQUFHLENBQUNBLGNBQUksSUFBSUEsY0FBSSxDQUFDLFlBQVksS0FBSyxVQUFVLEdBQUcsRUFBRTtBQUNqRSxJQUFJLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxVQUFVLEVBQUUsT0FBTyxHQUFHLENBQUM7QUFDMUMsSUFBSSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDcEIsSUFBSSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0ksSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7QUFDcEMsSUFBSSxPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDLENBQUM7QUFDRixNQUFNLENBQUMsY0FBYyxDQUFBLE9BQUEsRUFBVSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RCxPQUFrQixDQUFBLE9BQUEsR0FBQSxLQUFLLENBQUMsQ0FBQztBQUN6QixJQUFJLFVBQVUsR0FBRyxZQUFZLENBQUNHLFlBQThCLENBQUMsQ0FBQztBQUM5RCxJQUFJLFVBQVUsR0FBRyxZQUFZLENBQUNDLFVBQThCLENBQUMsQ0FBQztBQUM5RCxJQUFJLFlBQVksR0FBRyxZQUFZLENBQUNtQixZQUFnQyxDQUFDLENBQUM7QUFDbEUsSUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDQyxLQUF1QixDQUFDLENBQUM7QUFDaEQsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDQyxLQUF5QixDQUFDLENBQUM7QUFDcEQsSUFBSSxPQUFPLGtCQUFrQixZQUFZO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDOUMsUUFBUSxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN4QixRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQy9CLFFBQVEsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDMUIsUUFBUSxJQUFJLFFBQVEsRUFBRTtBQUN0QixZQUFZLEtBQUssSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxRQUFRLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFO0FBQzVELGdCQUFnQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFDLGFBQWE7QUFDYixZQUFZLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztBQUMxQyxTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNMLE9BQUEsQ0FBQSxPQUFBLEdBQWtCLE9BQU8sQ0FBQztBQUMxQjtBQUNBLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxHQUFHLGtCQUFrQixDQUFDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0FBQ2xEO0FBQ0EsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDdEU7QUFDQSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25GOzs7O0FDaEVBLElBQUksU0FBUyxHQUFHLENBQUN6QixjQUFJLElBQUlBLGNBQUksQ0FBQyxTQUFTLEtBQUssQ0FBQyxZQUFZO0FBQ3pELElBQUksSUFBSSxhQUFhLEdBQUcsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3hDLFFBQVEsYUFBYSxHQUFHLE1BQU0sQ0FBQyxjQUFjO0FBQzdDLGFBQWEsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLFlBQVksS0FBSyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUN4RixZQUFZLFVBQVUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUM5RyxRQUFRLE9BQU8sYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuQyxLQUFLLENBQUM7QUFDTixJQUFJLE9BQU8sVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzNCLFFBQVEsSUFBSSxPQUFPLENBQUMsS0FBSyxVQUFVLElBQUksQ0FBQyxLQUFLLElBQUk7QUFDakQsWUFBWSxNQUFNLElBQUksU0FBUyxDQUFDLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRywrQkFBK0IsQ0FBQyxDQUFDO0FBQ3RHLFFBQVEsYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1QixRQUFRLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRTtBQUMvQyxRQUFRLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0YsS0FBSyxDQUFDO0FBQ04sQ0FBQyxHQUFHLENBQUM7QUFDTCxJQUFJLFFBQVEsR0FBRyxDQUFDQSxjQUFJLElBQUlBLGNBQUksQ0FBQyxRQUFRLEtBQUssWUFBWTtBQUN0RCxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsQ0FBQyxFQUFFO0FBQzVDLFFBQVEsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0QsWUFBWSxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLFlBQVksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM1QixTQUFTO0FBQ1QsUUFBUSxPQUFPLENBQUMsQ0FBQztBQUNqQixLQUFLLENBQUM7QUFDTixJQUFJLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7QUFDM0MsQ0FBQyxDQUFDO0FBQ0YsSUFBSSxlQUFlLEdBQUcsQ0FBQ0EsY0FBSSxJQUFJQSxjQUFJLENBQUMsZUFBZSxNQUFNLE1BQU0sQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7QUFDaEcsSUFBSSxJQUFJLEVBQUUsS0FBSyxTQUFTLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNqQyxJQUFJLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDckQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO0FBQ3ZGLE1BQU0sSUFBSSxHQUFHLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0FBQ3BFLEtBQUs7QUFDTCxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUU7QUFDNUIsSUFBSSxJQUFJLEVBQUUsS0FBSyxTQUFTLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNqQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDakIsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNKLElBQUksa0JBQWtCLEdBQUcsQ0FBQ0EsY0FBSSxJQUFJQSxjQUFJLENBQUMsa0JBQWtCLE1BQU0sTUFBTSxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDL0YsSUFBSSxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFLENBQUMsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDcEIsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLENBQUMsQ0FBQyxDQUFDO0FBQ0gsSUFBSSxZQUFZLEdBQUcsQ0FBQ0EsY0FBSSxJQUFJQSxjQUFJLENBQUMsWUFBWSxLQUFLLFVBQVUsR0FBRyxFQUFFO0FBQ2pFLElBQUksSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLEdBQUcsQ0FBQztBQUMxQyxJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUNwQixJQUFJLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxlQUFlLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM3SSxJQUFJLGtCQUFrQixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztBQUNwQyxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUMsQ0FBQztBQUNGLE1BQU0sQ0FBQyxjQUFjLENBQUEsT0FBQSxFQUFVLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzlELE9BQWtCLENBQUEsT0FBQSxHQUFBLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLElBQUksWUFBWSxHQUFHLFlBQVksQ0FBQ0csT0FBdUIsQ0FBQyxDQUFDO0FBQ3pELElBQUksYUFBYSxHQUFHLFlBQVksQ0FBQ0MsT0FBc0IsQ0FBQyxDQUFDO0FBQ2Q7QUFDSjtBQUN2QyxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxPQUFPLFNBQVMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFO0FBQ3ZELFFBQVEsSUFBSSxVQUFVLEtBQUssS0FBSyxDQUFDLEVBQUUsRUFBRSxVQUFVLEdBQUcsSUFBSSxDQUFDLEVBQUU7QUFDekQsUUFBUSxJQUFJLE9BQU8sSUFBSSxJQUFJLEVBQUU7QUFDN0IsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUFDL0QsU0FBUztBQUNULFFBQVEsSUFBSSxZQUFZLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQzVHLFFBQVEsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3pFO0FBQ0EsUUFBUSxJQUFJLGFBQWEsa0JBQWtCLFVBQVUsTUFBTSxFQUFFO0FBQzdELFlBQVksU0FBUyxDQUFDLGFBQWEsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUM3QyxZQUFZLFNBQVMsYUFBYSxHQUFHO0FBQ3JDLGdCQUFnQixPQUFPLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDO0FBQ2hGLGFBQWE7QUFDYixZQUFZLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLFVBQVUsUUFBUSxFQUFFLE9BQU8sRUFBRTtBQUN6RSxnQkFBZ0IsSUFBSSxPQUFPLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUM1RCxnQkFBZ0IsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7QUFDMUMsZ0JBQWdCLE9BQU8sT0FBTyxDQUFDO0FBQy9CLGFBQWEsQ0FBQztBQUNkLFlBQVksYUFBYSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsVUFBVSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUU7QUFDOUYsZ0JBQWdCLE9BQU8sS0FBSyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3BFLGFBQWEsQ0FBQztBQUNkLFlBQVksYUFBYSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsVUFBVSxHQUFHLEVBQUU7QUFDN0QsZ0JBQWdCLE9BQU8sTUFBTSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDakQsYUFBYSxDQUFDO0FBQ2QsWUFBWSxPQUFPLGFBQWEsQ0FBQztBQUNqQyxTQUFTLENBQUNzQixPQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNqQyxRQUFRLFNBQVMsVUFBVSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtBQUMzRCxZQUFZLElBQUksSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxHQUFHLFdBQVcsQ0FBQyxFQUFFO0FBQ3hEO0FBQ0EsWUFBWSxJQUFJLFFBQVEsSUFBSSxJQUFJbEIsS0FBVSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUM7QUFDL0QsZ0JBQWdCLE9BQU8sUUFBUSxDQUFDO0FBQ2hDLFlBQVksSUFBSSxPQUFPLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLEVBQUUsSUFBSSxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDaEcsWUFBWSxJQUFJLENBQUMsR0FBRyxPQUFPLElBQUksS0FBSyxRQUFRO0FBQzVDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRCxrQkFBa0IsUUFBUSxJQUFJLElBQUk7QUFDbEMsc0JBQXNCLElBQUk7QUFDMUIsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0IsWUFBWSxJQUFJLFlBQVksR0FBRyxJQUFJQSxLQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztBQUMzRCxrQkFBa0IsQ0FBQztBQUNuQixrQkFBa0IsSUFBSSxhQUFhLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUN0RDtBQUNBLFlBQVksWUFBWSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7QUFDOUM7QUFDQSxZQUFZLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDM0IsZ0JBQWdCLE9BQU8sSUFBSSxhQUFhLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMzRSxhQUFhO0FBQ2IsWUFBWSxJQUFJLFFBQVEsR0FBRyxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksSUFBSUEsS0FBVSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUM7QUFDM0Y7QUFDQSxvQkFBb0IsS0FBSyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLFFBQVE7QUFDbEUsa0JBQWtCLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDbEM7QUFDQSx3QkFBd0IsQ0FBQyxRQUFRLENBQUM7QUFDbEMsc0JBQXNCLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQzdDO0FBQ0EsNEJBQTRCLFFBQVE7QUFDcEMsMEJBQTBCLFNBQVMsQ0FBQztBQUNwQyxZQUFZLElBQUksUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDOUUsWUFBWSxJQUFJLFFBQVEsRUFBRTtBQUMxQixnQkFBZ0IsT0FBTyxRQUFRLENBQUM7QUFDaEMsYUFBYTtBQUNiLFlBQVksSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLEVBQUU7QUFDOUMsZ0JBQWdCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkJBQTZCLENBQUMsQ0FBQztBQUMvRCxhQUFhO0FBQ2I7QUFDQSxZQUFZLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQztBQUNsQyxZQUFZLElBQUksYUFBYSxHQUFHLENBQUMsT0FBTztBQUN4QztBQUNBLG9CQUFvQixZQUFZO0FBQ2hDLGtCQUFrQixPQUFPLE9BQU8sS0FBSyxRQUFRO0FBQzdDLHNCQUFzQixJQUFJQSxLQUFVLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUNyRDtBQUNBLDRCQUE0QixJQUFJLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUM7QUFDNUc7QUFDQSw2QkFBNkIsQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLFlBQVksQ0FBQztBQUM3RixzQkFBc0IsSUFBSUEsS0FBVSxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUM7QUFDeEQ7QUFDQSw0QkFBNEIsT0FBTztBQUNuQztBQUNBLDRCQUE0QixJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuSDtBQUNBLFlBQVksSUFBSSxDQUFDLGFBQWE7QUFDOUIsZ0JBQWdCLE9BQU8sUUFBUSxDQUFDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLFlBQVksT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlDLFNBQVM7QUFDVDtBQUNBLFFBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFO0FBQ2pELFlBQVksSUFBSSxFQUFFLElBQUk7QUFDdEI7QUFDQSxZQUFZLEtBQUssRUFBRSxXQUFXO0FBQzlCLFlBQVksUUFBUSxFQUFFLFlBQVk7QUFDbEM7QUFDQSxZQUFZLEVBQUUsRUFBRSxhQUFhLENBQUMsU0FBUztBQUN2QztBQUNBLFlBQVksU0FBUyxFQUFFLGFBQWEsQ0FBQyxTQUFTO0FBQzlDLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxPQUFPLFVBQVUsQ0FBQztBQUMxQixLQUFLLENBQUM7QUFDTixDQUFDO0FBQ0QsT0FBQSxDQUFBLE9BQUEsR0FBa0IsT0FBTyxDQUFDO0FBQzFCLFNBQVMsTUFBTSxDQUFDLEdBQUcsRUFBRTtBQUNyQixJQUFJLFFBQVEsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJO0FBQ3RCLFFBQVEsR0FBRyxDQUFDLElBQUksS0FBSyxNQUFNO0FBQzNCLFFBQVEsR0FBRyxDQUFDLElBQUksS0FBSyxNQUFNO0FBQzNCLFFBQVEsR0FBRyxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7QUFDaEMsQ0FBQztBQUNEOzs7O0FDakxBLE1BQU0sQ0FBQyxjQUFjLENBQUEsT0FBQSxFQUFVLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzlELE9BQStCLENBQUEsb0JBQUEsR0FBQSxPQUFBLENBQUEsa0JBQUEsR0FBNkIsb0NBQW9DLE9BQTBCLENBQUEsZUFBQSxHQUFBLE9BQUEsQ0FBQSxXQUFBLEdBQXNCLG9CQUFvQixPQUFzQixDQUFBLFdBQUEsR0FBQSxPQUFBLENBQUEscUJBQUEsR0FBZ0MsS0FBSyxDQUFDLENBQUM7QUFDak8sTUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsQ0FBQztBQUN0QyxJQUFJLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNO0FBQ3hGLElBQUksTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTTtBQUNsRixJQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU87QUFDbkYsSUFBSSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU87QUFDN0IsQ0FBQyxDQUFDLENBQUM7QUFDSCxPQUFBLENBQUEscUJBQUEsR0FBZ0MsUUFBUSxDQUFDO0FBRXpDLENBQUMsVUFBVSxXQUFXLEVBQUU7QUFDeEIsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ2pELElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDbEQsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQztBQUM5RCxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztBQUN6RSxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDO0FBQzdELElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUM7QUFDN0QsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUNyRCxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxrQkFBa0IsQ0FBQztBQUMzRSxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztBQUN2RSxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDO0FBQ2pFLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUM7QUFDN0QsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztBQUMvRCxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsY0FBYyxDQUFDO0FBQ25FLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDekQsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUN6RCxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ3pELElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUM7QUFDN0QsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7QUFDdkUsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGFBQWEsQ0FBQztBQUNqRSxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxtQkFBbUIsQ0FBQztBQUM3RSxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsZUFBZSxDQUFDO0FBQ3JFLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO0FBQ3pFLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO0FBQ3pFLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO0FBQ3pFLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO0FBQ3pFLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLHNCQUFzQixDQUFDO0FBQ25GLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUM7QUFDbkUsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGVBQWUsQ0FBQztBQUNyRSxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsZUFBZSxDQUFDO0FBQ3RFLElBQUksV0FBVyxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxlQUFlLENBQUM7QUFDdEUsSUFBSSxXQUFXLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQztBQUN0RSxJQUFJLFdBQVcsQ0FBQyxXQUFXLENBQUMsdUJBQXVCLENBQUMsR0FBRyxLQUFLLENBQUMsR0FBRyx1QkFBdUIsQ0FBQztBQUN4RixDQUFDLEVBQWdCLE9BQU8sQ0FBQyxXQUFXLEtBQUssT0FBc0IsQ0FBQSxXQUFBLEdBQUEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNwRSxPQUFvQixDQUFBLFNBQUEsR0FBQTtBQUNwQixJQUFJLFNBQVMsRUFBRSxJQUFJO0FBQ25CLElBQUksV0FBVyxFQUFFLFNBQVM7QUFDMUIsSUFBSSxPQUFPLEVBQUUsU0FBUztBQUN0QixJQUFJLE1BQU0sRUFBRSxRQUFRO0FBQ3BCLElBQUksTUFBTSxFQUFFLFFBQVE7QUFDcEIsSUFBSSxNQUFNLEVBQUUsUUFBUTtBQUNwQixDQUFDLENBQUM7QUFDRjtBQUNBLFNBQVMsV0FBVyxDQUFDLEVBQUUsRUFBRTtBQUN6QixJQUFJLE9BQU8sRUFBRSxJQUFJLEtBQUssSUFBSSxFQUFFLElBQUksS0FBSyxDQUFDO0FBQ3RDLENBQUM7QUFDRCxPQUFBLENBQUEsV0FBQSxHQUFzQixXQUFXLENBQUM7QUFDbEMsU0FBUyxlQUFlLENBQUMsRUFBRSxFQUFFO0FBQzdCLElBQUksT0FBTyxFQUFFLElBQUksS0FBSyxJQUFJLEVBQUUsSUFBSSxLQUFLLENBQUM7QUFDdEMsQ0FBQztBQUNELE9BQUEsQ0FBQSxlQUFBLEdBQTBCLGVBQWUsQ0FBQztBQUMxQyxTQUFTLHlCQUF5QixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUU7QUFDN0MsSUFBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEtBQUssSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLEdBQUcsQ0FBQztBQUM3QyxDQUFDO0FBQ0QsT0FBQSxDQUFBLHlCQUFBLEdBQW9DLHlCQUF5QixDQUFDO0FBQzlEO0FBQ0EsU0FBUyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUU7QUFDaEMsSUFBSSxRQUFRLENBQUMsRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLElBQUksSUFBSSxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksRUFBRSxJQUFJLElBQUk7QUFDaEgsU0FBUyxFQUFFLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRTtBQUNwQyxDQUFDO0FBQ0QsT0FBQSxDQUFBLGtCQUFBLEdBQTZCLGtCQUFrQixDQUFDO0FBQ2hELFNBQVMsb0JBQW9CLENBQUMsRUFBRSxFQUFFO0FBQ2xDLElBQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxLQUFLLElBQUksRUFBRSxJQUFJLEtBQUssS0FBSyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDekUsQ0FBQztBQUNELE9BQUEsQ0FBQSxvQkFBQSxHQUErQixvQkFBb0IsQ0FBQztBQUNwRDs7OztBQzNFQSxNQUFNLENBQUMsY0FBYyxDQUFBLE9BQUEsRUFBVSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RCxPQUFjLENBQUEsR0FBQSxHQUFBLEtBQUssQ0FBQyxDQUFDO0FBRXJCLENBQUMsVUFBVSxHQUFHLEVBQUU7QUFDaEIsSUFBSSxHQUFHLENBQUMsK0JBQStCLENBQUMsR0FBRyxtQ0FBbUMsQ0FBQztBQUMvRSxJQUFJLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLDhCQUE4QixDQUFDO0FBQ3RFLElBQUksR0FBRyxDQUFDLHdCQUF3QixDQUFDLEdBQUcsMkJBQTJCLENBQUM7QUFDaEUsSUFBSSxHQUFHLENBQUMsK0NBQStDLENBQUMsR0FBRyx1REFBdUQsQ0FBQztBQUNuSCxJQUFJLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLHlCQUF5QixDQUFDO0FBQzVELElBQUksR0FBRyxDQUFDLDJCQUEyQixDQUFDLEdBQUcsK0JBQStCLENBQUM7QUFDdkUsSUFBSSxHQUFHLENBQUMsd0JBQXdCLENBQUMsR0FBRywyQkFBMkIsQ0FBQztBQUNoRSxJQUFJLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLDJCQUEyQixDQUFDO0FBQ2pFLElBQUksR0FBRyxDQUFDLHdDQUF3QyxDQUFDLEdBQUcsOENBQThDLENBQUM7QUFDbkcsSUFBSSxHQUFHLENBQUMsZ0NBQWdDLENBQUMsR0FBRyxxQ0FBcUMsQ0FBQztBQUNsRixJQUFJLEdBQUcsQ0FBQyx5Q0FBeUMsQ0FBQyxHQUFHLDhDQUE4QyxDQUFDO0FBQ3BHLElBQUksR0FBRyxDQUFDLG1CQUFtQixDQUFDLEdBQUcsc0JBQXNCLENBQUM7QUFDdEQsSUFBSSxHQUFHLENBQUMsb0NBQW9DLENBQUMsR0FBRyx3Q0FBd0MsQ0FBQztBQUN6RixJQUFJLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxHQUFHLG1DQUFtQyxDQUFDO0FBQ2hGLElBQUksR0FBRyxDQUFDLHlDQUF5QyxDQUFDLEdBQUcsNkNBQTZDLENBQUM7QUFDbkcsSUFBSSxHQUFHLENBQUMsaURBQWlELENBQUMsR0FBRyxzREFBc0QsQ0FBQztBQUNwSCxJQUFJLEdBQUcsQ0FBQyw2Q0FBNkMsQ0FBQyxHQUFHLGtEQUFrRCxDQUFDO0FBQzVHLElBQUksR0FBRyxDQUFDLGtCQUFrQixDQUFDLEdBQUcscUJBQXFCLENBQUM7QUFDcEQsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsWUFBWSxDQUFDO0FBQ25DLElBQUksR0FBRyxDQUFDLHVCQUF1QixDQUFDLEdBQUcseUJBQXlCLENBQUM7QUFDN0QsSUFBSSxHQUFHLENBQUMsb0NBQW9DLENBQUMsR0FBRyx1Q0FBdUMsQ0FBQztBQUN4RixJQUFJLEdBQUcsQ0FBQyw0Q0FBNEMsQ0FBQyxHQUFHLGlEQUFpRCxDQUFDO0FBQzFHLElBQUksR0FBRyxDQUFDLDJEQUEyRCxDQUFDLEdBQUcsa0VBQWtFLENBQUM7QUFDMUksSUFBSSxHQUFHLENBQUMsNENBQTRDLENBQUMsR0FBRyxpREFBaUQsQ0FBQztBQUMxRyxJQUFJLEdBQUcsQ0FBQywyQ0FBMkMsQ0FBQyxHQUFHLGdEQUFnRCxDQUFDO0FBQ3hHLElBQUksR0FBRyxDQUFDLDJDQUEyQyxDQUFDLEdBQUcsZ0RBQWdELENBQUM7QUFDeEcsSUFBSSxHQUFHLENBQUMsZ0NBQWdDLENBQUMsR0FBRyxtQ0FBbUMsQ0FBQztBQUNoRixJQUFJLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxHQUFHLG1DQUFtQyxDQUFDO0FBQ2hGLElBQUksR0FBRyxDQUFDLCtCQUErQixDQUFDLEdBQUcsa0NBQWtDLENBQUM7QUFDOUUsSUFBSSxHQUFHLENBQUMsK0JBQStCLENBQUMsR0FBRyxrQ0FBa0MsQ0FBQztBQUM5RSxJQUFJLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLHVCQUF1QixDQUFDO0FBQ3hELElBQUksR0FBRyxDQUFDLDBCQUEwQixDQUFDLEdBQUcsNEJBQTRCLENBQUM7QUFDbkUsSUFBSSxHQUFHLENBQUMsZ0NBQWdDLENBQUMsR0FBRyxzQ0FBc0MsQ0FBQztBQUNuRixJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztBQUMzQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztBQUM1QyxJQUFJLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLGlDQUFpQyxDQUFDO0FBQzNFLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO0FBQzNDLElBQUksR0FBRyxDQUFDLDBCQUEwQixDQUFDLEdBQUcsNEJBQTRCLENBQUM7QUFDbkUsSUFBSSxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsY0FBYyxDQUFDO0FBQ3ZDLElBQUksR0FBRyxDQUFDLDRDQUE0QyxDQUFDLEdBQUcsa0RBQWtELENBQUM7QUFDM0csSUFBSSxHQUFHLENBQUMsd0JBQXdCLENBQUMsR0FBRywwQkFBMEIsQ0FBQztBQUMvRCxJQUFJLEdBQUcsQ0FBQyw2QkFBNkIsQ0FBQyxHQUFHLCtCQUErQixDQUFDO0FBQ3pFLElBQUksR0FBRyxDQUFDLHVDQUF1QyxDQUFDLEdBQUcsMkNBQTJDLENBQUM7QUFDL0YsSUFBSSxHQUFHLENBQUMsMkJBQTJCLENBQUMsR0FBRyw2QkFBNkIsQ0FBQztBQUNyRSxJQUFJLEdBQUcsQ0FBQyxnQ0FBZ0MsQ0FBQyxHQUFHLGtDQUFrQyxDQUFDO0FBQy9FLElBQUksR0FBRyxDQUFDLG9DQUFvQyxDQUFDLEdBQUcsd0NBQXdDLENBQUM7QUFDekYsSUFBSSxHQUFHLENBQUMsb0JBQW9CLENBQUMsR0FBRyxzQkFBc0IsQ0FBQztBQUN2RCxJQUFJLEdBQUcsQ0FBQywwQ0FBMEMsQ0FBQyxHQUFHLCtDQUErQyxDQUFDO0FBQ3RHLElBQUksR0FBRyxDQUFDLG9CQUFvQixDQUFDLEdBQUcscUJBQXFCLENBQUM7QUFDdEQsSUFBSSxHQUFHLENBQUMsc0JBQXNCLENBQUMsR0FBRyx3QkFBd0IsQ0FBQztBQUMzRCxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO0FBQzlDLElBQUksR0FBRyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsbUJBQW1CLENBQUM7QUFDbEQsSUFBSSxHQUFHLENBQUMsa0NBQWtDLENBQUMsR0FBRyx1Q0FBdUMsQ0FBQztBQUN0RixJQUFJLEdBQUcsQ0FBQyx1Q0FBdUMsQ0FBQyxHQUFHLDZDQUE2QyxDQUFDO0FBQ2pHLElBQUksR0FBRyxDQUFDLG1DQUFtQyxDQUFDLEdBQUcsd0NBQXdDLENBQUM7QUFDeEYsSUFBSSxHQUFHLENBQUMsMEJBQTBCLENBQUMsR0FBRyw4QkFBOEIsQ0FBQztBQUNyRSxJQUFJLEdBQUcsQ0FBQywyQkFBMkIsQ0FBQyxHQUFHLDhCQUE4QixDQUFDO0FBQ3RFLElBQUksR0FBRyxDQUFDLGlDQUFpQyxDQUFDLEdBQUcsc0NBQXNDLENBQUM7QUFDcEYsSUFBSSxHQUFHLENBQUMsc0JBQXNCLENBQUMsR0FBRyx5QkFBeUIsQ0FBQztBQUM1RCxJQUFJLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQyxHQUFHLDJDQUEyQyxDQUFDO0FBQzVGLENBQUMsRUFBUSxPQUFPLENBQUMsR0FBRyxLQUFLLE9BQWMsQ0FBQSxHQUFBLEdBQUEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUM1Qzs7OztBQ2pFQSxNQUFNLENBQUMsY0FBYyxDQUFBLE9BQUEsRUFBVSxZQUFZLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQUM5RCxPQUF1QixDQUFBLFlBQUEsR0FBQSxLQUFLLENBQUMsQ0FBQztBQUN1QjtBQUNRO0FBQzdEO0FBQ0EsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLE1BQU0sWUFBWSxDQUFDO0FBQ25CLElBQUksV0FBVyxDQUFDLE9BQU8sRUFBRTtBQUN6QixRQUFRLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0FBQy9CLFFBQVEsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7QUFDdkIsUUFBUSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3RCO0FBQ0EsUUFBUSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdCLFFBQVEsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDM0IsUUFBUSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztBQUNyQyxRQUFRLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7QUFDdEMsUUFBUSxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztBQUNuQyxRQUFRLElBQUksQ0FBQyxlQUFlLEdBQUcsd0JBQXdCLENBQUM7QUFDeEQsUUFBUSxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUMzQixRQUFRLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBQzlCLFFBQVEsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUNuQyxRQUFRLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCO0FBQ0EsUUFBUSxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLEtBQUs7QUFDTDtBQUNBLElBQUksSUFBSSxHQUFHLEdBQUc7QUFDZCxRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNuRixLQUFLO0FBQ0wsSUFBSSxJQUFJLE1BQU0sR0FBRztBQUNqQixRQUFRLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDakQsS0FBSztBQUNMLElBQUksUUFBUSxDQUFDLElBQUksRUFBRTtBQUNuQixRQUFRLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztBQUMzQyxRQUFRLE9BQU87QUFDZixZQUFZLElBQUk7QUFDaEIsWUFBWSxTQUFTLEVBQUUsSUFBSTtBQUMzQixZQUFZLE9BQU8sRUFBRSxJQUFJO0FBQ3pCLFlBQVksUUFBUSxFQUFFLEdBQUc7QUFDekIsWUFBWSxNQUFNLEVBQUUsR0FBRztBQUN2QixZQUFZLFdBQVcsRUFBRSxNQUFNO0FBQy9CLFlBQVksU0FBUyxFQUFFLE1BQU07QUFDN0IsU0FBUyxDQUFDO0FBQ1YsS0FBSztBQUNMLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtBQUNmLFFBQVEsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDN0UsWUFBWSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDN0MsWUFBWSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDM0QsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE9BQU8sR0FBRztBQUNkLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzVDLFFBQVEsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ25DLEtBQUs7QUFDTCxJQUFJLGlCQUFpQixDQUFDLEVBQUUsRUFBRTtBQUMxQjtBQUNBLFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtBQUMvQyxZQUFZLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDOUQsWUFBWSxJQUFJLElBQUltQixTQUFZLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxFQUFFO0FBQzNEO0FBQ0EsZ0JBQWdCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMzQjtBQUNBLGdCQUFnQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDL0IsZ0JBQWdCLE9BQU8sSUFBSUEsU0FBWSxDQUFDLHlCQUF5QixFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvRSxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0EsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFO0FBQ3pDLFlBQVksSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFDdEMsWUFBWSxPQUFPQSxTQUFZLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztBQUNoRCxTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUNDLFlBQWdCLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7QUFDL0QsUUFBUSxPQUFPLEVBQUUsQ0FBQztBQUNsQixLQUFLO0FBQ0wsSUFBSSxtQkFBbUIsR0FBRztBQUMxQixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO0FBQy9DLEtBQUs7QUFDTCxJQUFJLGVBQWUsR0FBRztBQUN0QixRQUFRLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUU7QUFDeEMsWUFBWSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0RCxZQUFZLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQztBQUMxQyxZQUFZLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQy9DLFlBQVksSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFDekIsWUFBWSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ2pDLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3JDLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLFdBQVcsRUFBRTtBQUM5QixRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ2xDLFlBQVksSUFBSSxDQUFDLElBQUksSUFBSSxLQUFLLENBQUM7QUFDL0IsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0FBQzlCLFNBQVM7QUFDVCxRQUFRLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO0FBQ25DLFFBQVEsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQztBQUM1QyxLQUFLO0FBQ0wsSUFBSSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUU7QUFDbEMsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JHLFFBQVEsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7QUFDbkMsS0FBSztBQUNMLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxhQUFhLEVBQUU7QUFDdkM7QUFDQSxRQUFRLElBQUksSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQzFELFlBQVksSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxZQUFZLE9BQU8sS0FBSyxDQUFDO0FBQ3pCLFNBQVM7QUFDVCxRQUFRLElBQUksYUFBYSxFQUFFO0FBQzNCLFlBQVksT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNELFNBQVM7QUFDVCxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ2pELFlBQVksTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDakUsWUFBWSxJQUFJLEVBQUUsS0FBSyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQzlDLGdCQUFnQixPQUFPLEtBQUssQ0FBQztBQUM3QixhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSztBQUNMLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtBQUNqQixRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO0FBQ3RDLFFBQVEsSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckMsWUFBWSxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0FBQ3hELFlBQVksT0FBT0QsU0FBWSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7QUFDaEQsU0FBUztBQUNULFFBQVEsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDL0MsUUFBUSxPQUFPLElBQUksS0FBS0EsU0FBWSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEdBQUdBLFNBQVksQ0FBQyxXQUFXLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztBQUM3RyxLQUFLO0FBQ0wsSUFBSSxPQUFPLEdBQUc7QUFDZCxRQUFRLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNuQjtBQUNBLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO0FBQ3hCLFlBQVksSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDL0IsWUFBWSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDeEIsWUFBWSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7QUFDekMsU0FBUztBQUNULFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQzFDLFlBQVksSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztBQUN4RCxZQUFZLE9BQU9BLFNBQVksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO0FBQ2hELFNBQVM7QUFDVCxRQUFRLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNoRDtBQUNBLFFBQVEsSUFBSSxFQUFFLEtBQUtBLFNBQVksQ0FBQyxXQUFXLENBQUMsZUFBZSxFQUFFO0FBQzdELFlBQVksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDOUIsWUFBWSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztBQUN4QyxZQUFZLE9BQU9BLFNBQVksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDO0FBQ3RELFNBQVM7QUFDVDtBQUNBO0FBQ0EsUUFBUSxJQUFJLEVBQUUsS0FBS0EsU0FBWSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUU7QUFDdkQsWUFBWSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztBQUM5QixZQUFZLElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRTtBQUN0QztBQUNBLGdCQUFnQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDNUIsZ0JBQWdCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO0FBQzdDLGdCQUFnQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDL0IsZ0JBQWdCLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3RDLGFBQWE7QUFDYixTQUFTO0FBQ1QsUUFBUSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztBQUNyQyxRQUFRLElBQUksSUFBSUEsU0FBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUMvQyxZQUFZLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDNUMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLFFBQVEsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksS0FBSyxJQUFJO0FBQ3JFLGFBQWEsRUFBRSxHQUFHLElBQUksSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3BDLFlBQVksRUFBRSxLQUFLQSxTQUFZLENBQUMsV0FBVyxDQUFDLFNBQVM7QUFDckQsWUFBWSxFQUFFLEtBQUtBLFNBQVksQ0FBQyxXQUFXLENBQUMsZUFBZTtBQUMzRCxhQUFhLEVBQUUsR0FBRyxJQUFJLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3RDLFFBQVEsSUFBSSxDQUFDLGtCQUFrQixFQUFFO0FBQ2pDLFlBQVksSUFBSSxDQUFDLDhCQUE4QixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BELFNBQVM7QUFDVCxRQUFRLE9BQU8sRUFBRSxDQUFDO0FBQ2xCLEtBQUs7QUFDTCxJQUFJLDhCQUE4QixDQUFDLEVBQUUsRUFBRTtBQUN2QyxRQUFRLElBQUksSUFBSUEsU0FBWSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxFQUFFO0FBQ3RELFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQ0MsWUFBZ0IsQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztBQUMxRSxTQUFTO0FBQ1QsYUFBYSxJQUFJLElBQUlELFNBQVksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUMsRUFBRTtBQUM3RCxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUNDLFlBQWdCLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDdEUsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDbkIsUUFBUSxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUssQ0FBQztBQUMxQixRQUFRLE9BQU8sSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFO0FBQzNDLFlBQVksSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ2xELFlBQVksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQ3ZCLFNBQVM7QUFDVCxRQUFRLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzNCLEtBQUs7QUFDTCxDQUFDO0FBQ0QsT0FBQSxDQUFBLFlBQUEsR0FBdUIsWUFBWSxDQUFDO0FBQ3BDOzs7O0FDck1BLE1BQU0sQ0FBQyxjQUFjLENBQUEsT0FBQSxFQUFVLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzlELE9BQXVCLENBQUEsWUFBQSxHQUFBLE9BQUEsQ0FBQSxTQUFBLEdBQW9CLEtBQUssQ0FBQyxDQUFDO0FBRWxELENBQUMsVUFBVSxTQUFTLEVBQUU7QUFDdEIsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztBQUN4RCxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztBQUNsRSxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxzQkFBc0IsQ0FBQztBQUM5RSxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDO0FBQ3hELElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDcEQsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUNwRCxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ3BELElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDNUMsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQztBQUM1RCxDQUFDLEVBQWMsT0FBTyxDQUFDLFNBQVMsS0FBSyxPQUFvQixDQUFBLFNBQUEsR0FBQSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlELFNBQVMsWUFBWSxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUU7QUFDdkMsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3RELFFBQVEsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7QUFDOUMsWUFBWSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ3hDLFNBQVM7QUFDVCxLQUFLO0FBQ0wsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBQ0QsT0FBQSxDQUFBLFlBQUEsR0FBdUIsWUFBWSxDQUFDO0FBQ3BDOzs7O0FDdkJBLE1BQU0sQ0FBQyxjQUFjLENBQUEsT0FBQSxFQUFVLFlBQVksRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzlELE9BQTJCLENBQUEsZ0JBQUEsR0FBQSxPQUFBLENBQUEsZ0JBQUEsR0FBMkIsT0FBMkIsQ0FBQSxnQkFBQSxHQUFBLE9BQUEsQ0FBQSxRQUFBLEdBQW1CLE9BQWlCLENBQUEsTUFBQSxHQUFBLE9BQUEsQ0FBQSxTQUFBLEdBQW9CLHdCQUF3QixPQUFnQixDQUFBLEtBQUEsR0FBQSxPQUFBLENBQUEsRUFBQSxHQUFhLEtBQUssQ0FBQyxDQUFDO0FBQ3JNO0FBQ0EsSUFBSSxFQUFFLENBQUM7QUFDUCxDQUFDLFVBQVUsRUFBRSxFQUFFO0FBQ2YsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsOEJBQThCLENBQUM7QUFDaEQsSUFBSSxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsb0NBQW9DLENBQUM7QUFDeEQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsNEJBQTRCLENBQUM7QUFDN0MsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsOEJBQThCLENBQUM7QUFDakQsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsc0NBQXNDLENBQUM7QUFDdkQsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsK0JBQStCLENBQUM7QUFDbEQsQ0FBQyxFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxLQUFLLE9BQWEsQ0FBQSxFQUFBLEdBQUEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUV6QyxDQUFDLFVBQVUsS0FBSyxFQUFFO0FBQ2xCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMzQixJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDL0IsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ25DLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUMvQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDM0IsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzdCLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMzQixJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDM0IsQ0FBQyxFQUFVLE9BQU8sQ0FBQyxLQUFLLEtBQUssT0FBZ0IsQ0FBQSxLQUFBLEdBQUEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQU9sRCxDQUFDLFVBQVUsYUFBYSxFQUFFO0FBQzFCLElBQUksYUFBYSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsQ0FBQztBQUM3QyxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDdkMsSUFBSSxhQUFhLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztBQUN2RCxDQUFDLEVBQWtCLE9BQU8sQ0FBQyxhQUFhLEtBQUssT0FBd0IsQ0FBQSxhQUFBLEdBQUEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMxRSxJQUFJLFNBQVMsQ0FBQztBQUNkLENBQUMsVUFBVSxTQUFTLEVBQUU7QUFDdEIsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3pCLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUNyQyxJQUFJLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO0FBQ25ELElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUNuQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDL0IsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ3JDLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUNqQyxJQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDekIsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQy9CLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUN2QyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDckMsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzdCLElBQUksU0FBUyxDQUFDLFlBQVksQ0FBQyxHQUFHLFlBQVksQ0FBQztBQUMzQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDL0IsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzNCLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUNuQyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDckMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQ25DLElBQUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUMvQixJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDN0IsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ3ZDLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMzQixJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDL0IsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ3JDLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUNuQyxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDN0IsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQzdCLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMzQixJQUFJ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UyxDQUFDLFFBQVEsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUNuQyxJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDM0IsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzNCLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMzQixJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDM0IsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQ2pDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUM3QixJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDL0IsSUFBSSxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ3ZDLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUNyQyxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDdkMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQ25DLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMzQixJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDdkMsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQ25DLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUN6QixJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDakMsSUFBSSxTQUFTLENBQUMsV0FBVyxDQUFDLEdBQUcsV0FBVyxDQUFDO0FBQ3pDLElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUM3QixJQUFJLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJ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O0FBQ3ZDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUM7QUFDckQsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUMvQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzdDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDekMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN2QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ2pELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQy9DLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN2QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3ZDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDM0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUNqRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDO0FBQ3JELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzdDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO0FBQzdELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDekMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUMzQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ2pELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDekMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM3QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzdDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ25DLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDdkMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUMzQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzNDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM3QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzNDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQy9DLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDekMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztBQUNyRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQy9DLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDekMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzNDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDdkMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ2pELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDL0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUNqRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzdDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUNqRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzdDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDbkMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUMzQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDO0FBQ25ELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDdkMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN2QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDbkMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM3QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQy9DLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM3QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzNDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDekMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM3QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzlDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDNUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN4QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ2hELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDeEMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUM1QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzVDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDbEQsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUNsRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzVDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDdEMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN0QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzVDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDNUMsSUFBSSxNQUFNLENBQUMsTUFB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QztBQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUM7QUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQztBQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUM7QUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUM7QUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQy9CLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzNCLElBQUksQ0FB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S0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDNUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGFBQWEsQ0FBQztBQUNwRCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDO0FBQ2hELElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDOUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQztBQUN0RCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQzlDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLHVCQUF1QixDQUFDO0FBQ3hFLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLHFCQUFxQixDQUFDO0FBQ3BFLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLHFCQUFxQixDQUFDO0FBQ3JFLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLHdCQUF3QixDQUFDO0FBQzNFLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLHNCQUFzQixDQUFDO0FBQ3ZFLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLHNCQUFzQixDQUFDO0FBQ3ZFLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyw0QkFB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QUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDakQsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDOUMsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDakQsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDaEQsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDL0MsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDNUMsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDbEQsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUM7QUFDNUMsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDMUQsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDOUMsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDOUMsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDOUMsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDOUMsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7QUFDakQsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7QUFDN0MsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLGNBQWMsRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7QUFDdkQsSUFBSSxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRUEsTUFBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUM7QUFDOUMsQ0FBQyxDQUFDLENBQUM7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRUEsTUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUVBLE1BQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFQSxNQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRUEsTUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUVBLE1BQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckosTUFBTSxpQkFBaUIsR0FBRyxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRUEsTUFBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUVBLE1BQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDbEcsTUFBTSxrQkFBa0IsR0FBRyxDQUFDQSxNQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRUEsTUFBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUVBLE1BQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFQSxN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QyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDMUYsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUVBLE1BQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDcEYsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUVBLE1BQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDcEYsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUVBLE1BQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDcEYsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUVBLE1BQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDdEYsSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUVBLE1BQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDcEYsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUVBLE1BQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDOUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUVBLE1BQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDOUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFB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QUFDLEVBQUUsQ0FBQztBQUNqQyxRQUFRLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ2xDLFFBQVEsS0FBS0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDbEMsUUFBUSxLQUFLQSxNQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUNsQyxRQUFRLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ25DLFFBQVEsS0FBS0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDbkMsUUFBUSxLQUFLQSxNQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNwQyxRQUFRLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLFFBQVEsS0FBS0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDckMsUUFBUSxLQUFLQSxNQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxRQUFRLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLFFBQVEsS0FBS0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDckMsUUFBUSxLQUFLQSxNQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxRQUFRLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3RDLFFBQVEsS0FBS0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDdEMsUUFBUSxLQUFLQSxNQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUN0QyxRQUFRLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3RDLFFBQVEsS0FBS0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDdEMsUUFBUSxLQUFLQSxNQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUN2QyxRQUFRLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsVUFB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QyxNQUFNLENBQUM7QUFDckMsUUFBUSxLQUFLQSxNQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxRQUFRLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLFFBQVEsS0FBS0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDckMsUUFBUSxLQUFLQSxNQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxRQUFRLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLFFBQVEsS0FBS0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDckMsUUFBUSxLQUFLQSxNQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUN0QyxRQUFRLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3RDLFFBQVEsS0FBS0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDdEMsUUFBUSxLQUFLQSxNQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUN0QyxRQUFRLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3RDLFFBQVEsS0FBS0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDdEMsUUFBUSxLQUFLQSxNQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUN2QyxRQUFRLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQ3pDLFFBQVEsS0FBS0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7QUFDMUMsWUFBWSxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUMsWUFBWSxNQUFNO0FBQ2xCLFNBQVM7QUFDVCxRQUFRLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFO0FBQ2xDLFlBQVksY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzlCLFlBQVksTUFBTTtBQUNsQixTQUFT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QUFLQSxNQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDbEMsUUFBUSxFQUFFLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFO0FBQ3BDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQ0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0RSxRQUFRLENBQUMsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0FBQ2hDLFFBQVEsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLEtBQUs7QUFDTCxTQUFTO0FBQ1QsUUFBUSxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkMsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLHFCQUFxQixDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUU7QUFDekMsSUFBSSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0FBQzNCLElBQUksSUFBSSxFQUFFLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsT0FBTztBQUN2QyxRQUFRLEVBQUUsS0FBS0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLO0FBQ3JDLFFBQVEsRUFBRSxLQUFLQSxNQUFTLENBQUMsTUFBTSxDQUFDLEtBQUs7QUFDckMsUUFBUSxFQUFFLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsS0FBSztBQUNyQyxRQUFRLEVBQUUsS0FBS0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLO0FBQ3JDLFFBQVEsRUFBRSxLQUFLQSxNQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDbEMsUUFBUSxFQUFFLEtBQUtBLE1BQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUNsQyxRQUFRLEVBQUUsS0FBS0EsTUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUU7QUFDcEMsUUFBUSxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ2hELFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FB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QUcsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQy9DLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDdkMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQztBQUNyRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM3QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQy9DLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3ZDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDakQsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDL0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM3QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3ZDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDdkMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUMzQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ2pELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUM7QUFDckQsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM3QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7QUFDN0QsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzNDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDakQsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzdDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7QUFDbkMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN2QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzNDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDM0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM3QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzdDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDM0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDL0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDO0FBQ3JELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDL0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDekMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM3QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDM0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN2QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3pDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDakQsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUMvQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ2pELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ2pELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDN0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNuQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzNDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxXQUFXLENBQUM7QUFDbkQsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN2QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3JDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDckMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUNyQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3ZDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDekMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNuQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzdDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDL0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM3QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzdDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDM0MsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQztBQUN6QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQzdDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDOUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUM1QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3hDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxTQUFTLENBQUM7QUFDaEQsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN4QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDO0FBQzVDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDNUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUNsRCxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDO0FBQ2xELElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDNUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN0QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDNUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQztBQUM1QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUM7QUFDNUMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztBQUN0QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3BDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDdEMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN4QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ3hDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDeEMsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUN4QyxDQUFDLEVBQUUsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEtBQUssT0FBaUIsQ0FBQSxNQUFBLEdBQUEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyRCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQztBQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsTUFBTSxDQUFDLGNBQWMsQ0FBQztBQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUM7QUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsRUFBRSxNQUFNLENBQUMsY0FBYyxDQUFDO0FBQ3JELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNuQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVUsQ0FBQztBQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDakMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ2pDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDckMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQzdCLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ25DLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNqQyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQ3pDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1B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SSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7QUFDZixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNoQixJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNmLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ2hCLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ2YsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7QUFDZixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNoQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNoQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNoQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNoQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNoQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNoQixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQztBQUNoQixJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNmLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ2hCLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ2YsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUM7QUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUM7QUFDZixJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQztBQUNmLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDO0FBQ2YsQ0FBQyxDQUFDLENBQUM7QUFDSDtBQUNBLElBQUksS0FBSyxDQUFDO0FBQ1YsQ0FBQyxVQUFVLEtBQUssRUFBRTtBQUNsQixJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0FBQ3RDLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDMUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUM1QyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsYUFBYSxDQUFDO0FBQ3BELElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxXQUFXLENBQUM7QUFDaEQsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztBQUM5QyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDO0FBQ3RELElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDOUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsdUJBQXVCLENBQUM7QUFDeEUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcscUJBQXFCLENBQUM7QUFDcEUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcscUJBQXFCLENBQUM7QUFDckUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsd0JBQXdCLENBQUM7QUFDM0UsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsc0JBQXNCLENBQUM7QUFDdkUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsc0JBQXNCLENBQUM7QUFDdkUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsNEJBQTRCLENBQUM7QUFDbkYsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsMEJBQTBCLENBQUM7QUFDL0UsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsMEJBQTBCLENBQUM7QUFDL0UsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsMEJBQTBCLENBQUM7QUFDL0UsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsK0JBQStCLENBQUM7QUFDekYsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcscUJBQXFCLENBQUM7QUFDckUsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsMEJBQTBCLENBQUM7QUFDL0UsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsK0JBQStCLENBQUM7QUFDekYsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsb0NBQW9DLENBQUM7QUFDbkcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsa0NBQWtDLENBQUM7QUFDL0YsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsa0NBQWtDLENBQUM7QUFDL0YsSUFBSSxL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QUksR0FBRyxDQUFDO0FBQ25DLElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ2hELElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ2pELElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQzlDLElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ2pELElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ2hELElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQy9DLElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQzVDLElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQ2xELElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDO0FBQzVDLElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQzFELElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQzlDLElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQzlDLElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQzlDLElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQzlDLElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDO0FBQ2pELElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0FBQzdDLElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0FBQ3ZELElBQUksQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUVBLElBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDO0FBQzlDLENBQUMsQ0FBQyxDQUFDO0FBQ0gsTUFBTSxhQUFhLEdBQUcsQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUVBLElBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFQSxJQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRUEsSUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUVBLElBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFQSxJQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3JKLE1BQU0saUJBQWlCLEdBQUcsQ0FBQ0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUVBLElBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFQSxJQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xHLE1BQU0sa0JBQWtCLEdB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QUssRUFBRSxDQUFDO0FBQzFGLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFQSxJQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQzFGLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFQSxJQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3BGLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFQSxJQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3BGLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFQSxJQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3BGLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFQSxJQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3RGLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFQSxJQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3BGLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFQSxJQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzlFLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVB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QUMsTUFBTSxDQUFDLEVBQUU7QUFDdkIsSUFBSUEsSUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ3ZCLElBQUlBLElBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUN2QixJQUFJQSxJQUFTLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDekIsSUFBSUEsSUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ3ZCLElBQUlBLElBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0QixJQUFJQSxJQUFTLENBQUMsTUFBTSxDQUFDLEdBQUc7QUFDeEIsSUFBSUEsSUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ3ZCLElBQUlBLElBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTztBQUM1QixJQUFJQSxJQUFTLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDekIsSUFBSUEsSUFBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJO0FBQ3pCLElBQUlBLElBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSTtBQUN6QixJQUFJQSxJQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDdkIsSUFBSUEsSUFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RCLElBQUlBLElBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRztBQUN4QixJQUFJQSxJQUFTLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDekIsSUFBSUEsSUFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RCLElBQUlBLElBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSztBQUMxQixJQUFJQSxJQUFTLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDekIsSUFBSUEsSUFBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNO0FBQzNCLElBQUlBLElBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTTtBQUMzQixJQUFJQSxJQUFTLENBQUMsTUFBTSxDQUFDLEdBQUc7QUFDeEIsSUFBSUEsSUFBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHO0FBQ3hCLElBQUlBLElBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSztBQUMxQixJQUFJQSxJQUFTLENBQUMsTUFBTSxDQUFD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QUtBLElBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0FBQ2pDLFFBQVEsS0FBS0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7QUFDakMsUUFBUSxLQUFLQSxJQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztBQUNqQyxRQUFRLEtBQUtBLElBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO0FBQ2xDLFFBQVEsS0FBS0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDbEMsUUFBUSxLQUFLQSxJQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQztBQUNsQyxRQUFRLEtBQUtBLElBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO0FBQ25DLFFBQVEsS0FBS0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDbkMsUUFBUSxLQUFLQSxJQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUNwQyxRQUFRLEtBQUtBLElBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLFFBQVEsS0FBS0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDckMsUUFBUSxLQUFLQSxJQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxRQUFRLEtBQUtBLElBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLFFBQVEsS0FBS0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDckMsUUFBUSxLQUFLQSxJQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxRQUFRLEtBQUtBLElBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3RDLFFBQVEsS0FBS0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDdEMsUUFBUSxLQUFLQSxJQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUN0QyxRQUFRLEtBQUtBLElBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3RDLFFBQVEsS0FBS0EsSUFB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QSxJQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztBQUNuQyxRQUFRLEtBQUtBLElBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0FBQ3BDLFFBQVEsS0FBS0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDckMsUUFBUSxLQUFLQSxJQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxRQUFRLEtBQUtBLElBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLFFBQVEsS0FBS0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDckMsUUFBUSxLQUFLQSxJQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUNyQyxRQUFRLEtBQUtBLElBQVMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQ3JDLFFBQVEsS0FBS0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDckMsUUFBUSxLQUFLQSxJQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUN0QyxRQUFRLEtBQUtBLElBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3RDLFFBQVEsS0FBS0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDdEMsUUFBUSxLQUFLQSxJQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztBQUN0QyxRQUFRLEtBQUtBLElBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0FBQ3RDLFFBQVEsS0FBS0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDdEMsUUFBUSxLQUFLQSxJQUFTLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztBQUN2QyxRQUFRLEtBQUtBLElBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0FBQ3pDLFFBQVEsS0FBS0EsSUFBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7QUFDMUMsWUFBWSxtQkFBbUIsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUMsWUFBWSxNQUFNO0FBQ2xC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QUFHLElBQUksQ0FBQztBQUMzQyxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQzNDLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUM7QUFDL0QsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUNuRCxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQ25ELElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDbkQsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUNwRCxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQ25ELElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDcEQsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUNwRCxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxzQkFBc0IsQ0FBQztBQUMvRSxDQUFDLEVBQUUsU0FBUyxLQUFLLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2xDO0FBQ0EsSUFBSSxLQUFLLENBQUM7QUFDVixDQUFDLFVBQVUsS0FBSyxFQUFFO0FBQ2xCLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxNQUFN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LFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNO0FBQzNELFNBQVMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxRCxDQUFDO0FBQ0QsU0FBUyxVQUFVLENBQUMsQ0FBQyxFQUFFO0FBQ3ZCLElBQUksUUFBUSxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTTtBQUMzRCxTQUFTLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDMUQsQ0FBQztBQUNELElBQUksU0FBUyxDQUFDO0FBQ2QsQ0FBQyxVQUFVLFNBQVMsRUFBRTtBQUN0QixJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ3BELElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUM7QUFDdEQsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUNsRCxJQUFJLFNBQVMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsUUFBUSxDQUFDO0FBQ2xELENBQUMsRUFBRSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsS0FBSyxPQUFvQixDQUFBLFNBQUEsR0FBQSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzlEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxHQUFHO0FBQ2hCLElBQUksS0FBSyxFQUFFLElBQUksVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztB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QVEsRUFBRSxRQUFRLENBQUM7QUFDeEIsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7QUFDdkIsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7QUFDeEIsSUFBSSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7QUFDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUM7QUFDMUIsSUFBSSxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUM7QUFDMUIsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDbkMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDO0FBQ2pELElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO0FBQ25CLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO0FBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDO0FBQ3JCLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDO0FBQ3JCLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDO0FBQ25CLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDO0FBQ3hCLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDO0FBQ3JCLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDO0FBQ2pCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDO0FBQ2hCLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO0FBQ3RCLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDO0FBQ3hCLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDO0FBQ2xCLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxJQUFJ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QUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ3hFLGdCQUFnQixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO0FBQ2pFLGdCQUFnQixLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTO0FBQ2pFLGdCQUFnQjtBQUNoQixvQkFBb0IsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNoSSxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUMxRyxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFD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 diff --git a/.obsidian/plugins/simple-embeds/manifest.json b/.obsidian/plugins/simple-embeds/manifest.json new file mode 100644 index 0000000..be5047d --- /dev/null +++ b/.obsidian/plugins/simple-embeds/manifest.json @@ -0,0 +1 @@ +{"id":"simple-embeds","name":"Simple Embeds","version":"1.15.0","minAppVersion":"0.15.0","description":"Replaces links, like Twitter and YouTube, with embeds when previewing a file.","author":"Sam Warnick","authorUrl":"https://github.com/samwarnick","isDesktopOnly":false} \ No newline at end of file diff --git a/.obsidian/plugins/simple-embeds/styles.css b/.obsidian/plugins/simple-embeds/styles.css new file mode 100644 index 0000000..4dc2165 --- /dev/null +++ b/.obsidian/plugins/simple-embeds/styles.css @@ -0,0 +1,233 @@ +.embed-container { + max-width: 550px; /* This is the max width of Twitter embeds */ +} +.is-live-preview .embed-container.hide-link ~ span.external-link { + display: none; +} +.embed-container.center { + margin: 0 auto; +} +.embed-container.full-width { + max-width: 100% !important; +} + +/* Instagram */ +.embed-container.instagram iframe { + width: 100%; + max-width: 550px; +} +.embed-container.instagram blockquote { + display: none; +} + +/* Noteflight and Flat.io */ +.embed-container:is(.flat_io, .noteflight) { + max-width: 750px; +} +.embed-container.flat_io iframe { + width: 100%; + height: 450px; +} +.embed-container.noteflight iframe { + width: 100%; + height: 450px; +} + +/* GitHub Gists */ +.embed-container.github_gist { + max-width: 100%; +} +.embed-container.github_gist iframe { + width: 100%; +} + +/* YouTube */ +.video-wrapper { + position: relative; + padding-bottom: 56.25%; /* 16:9 */ + height: 0; + min-width: 300px; + min-height: calc(300px * 0.5625); +} +.video-wrapper iframe { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +/* Apple Podcasts & TV */ + +.embed-container.apple-podcasts iframe, +.embed-container.apple-tv iframe { + width: 100%; + overflow: hidden; + border-top-left-radius: 10px; + border-top-right-radius: 10px; + border-bottom-right-radius: 10px; + border-bottom-left-radius: 10px; + background-color: transparent; +} + +.embed-container.apple-tv .fake-link { + display: block; + position: absolute; + content: ""; + height: 150px; + width: 150px; + top: calc(50% - 75px); + left: calc(50% - 75px); +} + +/* Generic Preview */ +.embed-container.generic-preview .preview { + text-decoration: none; + color: inherit; + background: var(--background-secondary); + border: 1px solid var(--background-modifier-border);; + display: flex; + flex-direction: row; + align-items: center; + justify-content: flex-start; + margin: 0.5rem 0; +} +.embed-container.generic-preview .preview:hover { + background: var(--background-secondary-alt); + cursor: pointer; +} + +.embed-container.generic-preview .preview .image-container { + max-width: 100px; +} + +.embed-container.generic-preview .preview .content { + margin: 0.5rem; + margin-left: 1rem; +} + +.embed-container.generic-preview .preview .content .title { + font-size: 1.05rem; + font-weight: 600; +} + +.embed-container.generic-preview .preview .content .description { + color: var(--text-muted); +} + +/* Settings */ +.simple-embeds-settings details > summary { + display: flex; + align-items: center; + cursor: pointer; +} + +.simple-embeds-settings details > summary::before { + width: 2em; + height: 2em; + content: ""; + font-size: 9px; + margin-right: 5px; + display: inline-block; + vertical-align: -0.3em; + background-color: currentColor; + /* Icon from https://heroicons.com */ + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' class='h-6 w-6' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5l7 7-7 7' /%3E%3C/svg%3E"); + transition: transform 0.3s ease; +} + +.simple-embeds-settings details[open] > summary::before { + transform: rotate(90deg); +} + +.simple-embeds-settings details > summary h4 { + margin: 0.5em 0; +} + + /* https://github.com/paulirish/lite-youtube-embed */ + +lite-youtube { + background-color: #000; + position: relative; + display: block; + contain: content; + background-position: center center; + background-size: cover; + cursor: pointer; + /* max-width: 720px; */ +} + +/* gradient */ +lite-youtube::before { + content: ""; + display: block; + position: absolute; + top: 0; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAADGCAYAAAAT+OqFAAAAdklEQVQoz42QQQ7AIAgEF/T/D+kbq/RWAlnQyyazA4aoAB4FsBSA/bFjuF1EOL7VbrIrBuusmrt4ZZORfb6ehbWdnRHEIiITaEUKa5EJqUakRSaEYBJSCY2dEstQY7AuxahwXFrvZmWl2rh4JZ07z9dLtesfNj5q0FU3A5ObbwAAAABJRU5ErkJggg==); + background-position: top; + background-repeat: repeat-x; + height: 60px; + padding-bottom: 50px; + width: 100%; + transition: all 0.2s cubic-bezier(0, 0, 0.2, 1); +} + +/* responsive iframe with a 16:9 aspect ratio + thanks https://css-tricks.com/responsive-iframes/ +*/ +lite-youtube::after { + content: ""; + display: block; + padding-bottom: calc(100% / (16 / 9)); +} +lite-youtube > iframe { + width: 100%; + height: 100%; + position: absolute; + top: 0; + left: 0; + border: 0; +} + +/* play button */ +lite-youtube > .lty-playbtn { + width: 68px; + height: 48px; + position: absolute; + cursor: pointer; + transform: translate3d(-50%, -50%, 0); + top: 50%; + left: 50%; + z-index: 1; + background-color: transparent; + /* YT's actual play button svg */ + background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 68 48"><path fill="%23f00" fill-opacity="0.8" d="M66.52,7.74c-0.78-2.93-2.49-5.41-5.42-6.19C55.79,.13,34,0,34,0S12.21,.13,6.9,1.55 C3.97,2.33,2.27,4.81,1.48,7.74C0.06,13.05,0,24,0,24s0.06,10.95,1.48,16.26c0.78,2.93,2.49,5.41,5.42,6.19 C12.21,47.87,34,48,34,48s21.79-0.13,27.1-1.55c2.93-0.78,4.64-3.26,5.42-6.19C67.94,34.95,68,24,68,24S67.94,13.05,66.52,7.74z"></path><path d="M 45,24 27,14 27,34" fill="%23fff"></path></svg>'); + filter: grayscale(100%); + transition: filter 0.1s cubic-bezier(0, 0, 0.2, 1); + border: none; +} + +lite-youtube:hover > .lty-playbtn, +lite-youtube .lty-playbtn:focus { + filter: none; +} + +/* Post-click styles */ +lite-youtube.lyt-activated { + cursor: unset; +} +lite-youtube.lyt-activated::before, +lite-youtube.lyt-activated > .lty-playbtn { + opacity: 0; + pointer-events: none; +} + +.lyt-visually-hidden { + clip: rect(0 0 0 0); + clip-path: inset(50%); + height: 1px; + overflow: hidden; + position: absolute; + white-space: nowrap; + width: 1px; +} diff --git a/.obsidian/plugins/url-into-selection/main.js b/.obsidian/plugins/url-into-selection/main.js new file mode 100644 index 0000000..ae2caf6 --- /dev/null +++ b/.obsidian/plugins/url-into-selection/main.js @@ -0,0 +1,10 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source visit the plugins github repository +*/ + +var T=Object.create;var u=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var W=Object.getPrototypeOf,z=Object.prototype.hasOwnProperty;var B=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),N=(e,t)=>{for(var n in t)u(e,n,{get:t[n],enumerable:!0})},R=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of F(t))!z.call(e,i)&&i!==n&&u(e,i,{get:()=>t[i],enumerable:!(r=_(t,i))||r.enumerable});return e};var w=(e,t,n)=>(n=e!=null?T(W(e)):{},R(t||!e||!e.__esModule?u(n,"default",{value:e,enumerable:!0}):n,e)),Z=e=>R(u({},"__esModule",{value:!0}),e);var U=B(c=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});c.assertNever=k;function k(e,t){if(typeof t=="string")throw new Error(t);if(typeof t=="function")throw new Error(t(e));if(t)return e;throw new Error("Unhandled discriminated union member: ".concat(JSON.stringify(e)))}c.default=k});var te={};N(te,{default:()=>m});module.exports=Z(te);var L=require("obsidian");var D=w(U());var v=w(require("path"),1);function h(e,t={}){if(typeof e!="string")throw new TypeError(`Expected a string, got ${typeof e}`);let{resolve:n=!0}=t,r=e;return n&&(r=v.default.resolve(e)),r=r.replace(/\\/g,"/"),r[0]!=="/"&&(r=`/${r}`),encodeURI(`file://${r}`).replace(/[?#]/g,encodeURIComponent)}var b=class{constructor(){this.fallbackUrlRegex=null;this.fallbackUrlRegexString="";this.imgEmbedRegexes=[];this.imgEmbedRegexString=""}getFallbackUrlRegex(t){if(this.fallbackUrlRegex===null||this.fallbackUrlRegexString!==t)try{this.fallbackUrlRegex=new RegExp(t),this.fallbackUrlRegexString=t}catch(n){console.warn("Invalid regex pattern in settings, using fallback:",n),this.fallbackUrlRegex=/^[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$/,this.fallbackUrlRegexString=t}return this.fallbackUrlRegex}getImgEmbedRegexes(t){return this.imgEmbedRegexString!==t&&(this.imgEmbedRegexes=t.split(` +`).filter(n=>n.length>0).map(n=>{try{return new RegExp(n)}catch(r){return console.warn("Invalid image embed regex pattern:",n,r),/$.^/}}),this.imgEmbedRegexString=t),this.imgEmbedRegexes}clear(){this.fallbackUrlRegex=null,this.fallbackUrlRegexString="",this.imgEmbedRegexes=[],this.imgEmbedRegexString=""}},E=new b;var V=/^[a-z]:\\(?:[^\\/:*?"<>|\r\n]+\\)*[^\\/:*?"<>|\r\n]*$/i,H=/^(?:\/[^/]+)+\/?$/i;function S(e){return/^\/\w+\s/.test(e)?!1:V.test(e)||H.test(e)}function x(e){return/^\[\[.+\]\]$/.test(e.trim())}var M=new Set(["http","https","ftp","ftps","file","mailto","tel","sms","data","blob","obsidian","zotero","notion","slack","discord","teams","ssh","git","svn","ldap","ldaps","ws","wss","magnet","x-devonthink-item"]);function f(e,t){if(e==="")return!1;if(x(e))return!0;try{let r=new URL(e).protocol.slice(0,-1);return/^[a-z]$/i.test(r)?S(e):M.has(r)}catch(n){return S(e)||E.getFallbackUrlRegex(t.regex).test(e)}}function j(e){return e.replace(/</g,"%3C").replace(/>/g,"%3E")}function G(e){return/[\(\) ]/.test(e)}function Q(e){return/^<.*>$/.test(e)}function y(e){let t;return S(e)?t=h(e,{resolve:!1}):t=e,Q(t)?t:(/[<>]/.test(t)&&(t=j(t)),G(t)?`<${t}>`:t)}function C(e,t){let n=E.getImgEmbedRegexes(t.listForImgEmbed);for(let r of n)if(r.test(e))return!0;return!1}function I(e,t){let n=e.getLine(t.from.line),r=t.from.ch,i=-1,o=0;for(let s=r-1;s>=0;s--)if(n[s]===")"&&s<r)o++;else if(n[s]==="("){if(o===0){i=s;break}o--}if(i===-1)return!1;if(i>0&&n[i-1]==="]"){let s=0;for(let l=i-2;l>=0;l--)if(n[l]==="]")s++;else if(n[l]==="["){if(s===0)return l>0&&n[l-1]==="!",!0;s--}}return!1}function P(e){if(e.length<2)return e;let t=e[0],n=e[e.length-1];return t===n&&(t==='"'||t==="'")?e.slice(1,-1):e}function d(e,t,n){if(!e.somethingSelected()&&n.nothingSelected===0)return;if(typeof t!="string"&&!t.clipboardData){console.error("empty clipboardData in ClipboardEvent");return}let r=q(t);if(r===null)return;let{selectedText:i,replaceRange:o}=J(e,n),s=o||{from:e.getCursor(),to:e.getCursor()},l=I(e,s),a=O(r,i,n,l);a!==null&&(typeof t!="string"&&t.preventDefault(),ee(e,a,o),i===""&&n.nothingSelected===2&&e.setCursor({ch:o.from.ch+1,line:o.from.line}))}function J(e,t){let n,r;if(e.somethingSelected())n=e.getSelection(),r=null;else switch(t.nothingSelected){case 1:r=K(e,t),n=e.getRange(r.from,r.to);break;case 2:case 3:r=Y(e),n="";break;case 0:throw new Error("should be skipped");default:(0,D.default)(t.nothingSelected)}return{selectedText:n,replaceRange:r}}function O(e,t,n,r){let i,o;if(f(e.trim(),n))i=t,o=e.trim();else if(f(t.trim(),n))i=e,o=t.trim();else return null;let s=C(e.trim(),n)?"!":"";return r?o:x(o)?t===""&&n.nothingSelected===3||i===""?o:`[[${o.slice(2,-2)}|${i}]]`:(o=y(o),t===""&&n.nothingSelected===3?/^<.*>$/.test(o)?o:`<${o}>`:s+`[${i}](${o})`)}function q(e){let t;if(typeof e=="string")t=e;else if(e.clipboardData)t=e.clipboardData.getData("text");else return console.error("empty clipboardData in ClipboardEvent"),null;return P(t.trim())}function K(e,t){let n=e.getCursor(),r=e.getLine(n.line),i=X(r,n),o=i.from.ch,s=i.to.ch;for(;o>0&&!/\s/.test(r.charAt(o-1));)--o;for(;s<r.length&&!/\s/.test(r.charAt(s));)++s;let l=r.slice(o,s);return/^\[.*]\(.*\)$/.test(l)||f(l,t)&&(i.from.ch=o,i.to.ch=s),i}var X=(()=>{let e=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;function t(n){return/\w/.test(n)||n>"\x80"&&(n.toUpperCase()!=n.toLowerCase()||e.test(n))}return(n,r)=>{let i,o=r.ch,s=r.ch;s===n.length?--o:++s;let l=n.charAt(r.ch);for(t(l)?i=a=>t(a):/\s/.test(l)?i=a=>/\s/.test(a):i=a=>!/\s/.test(a)&&!t(a);o>0&&i(n.charAt(o-1));)--o;for(;s<n.length&&i(n.charAt(s));)++s;return{from:{line:r.line,ch:o},to:{line:r.line,ch:s}}}})();function Y(e){return{from:e.getCursor(),to:e.getCursor()}}function ee(e,t,n=null){n&&n.from&&n.to?e.replaceRange(t,n.from,n.to):e.replaceSelection(t)}var g=require("obsidian");var $={regex:/^[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$/.source,nothingSelected:0,listForImgEmbed:""},p=class extends g.PluginSettingTab{display(){let{containerEl:t}=this,n=this.plugin;t.empty(),t.createEl("h2",{text:"URL-into-selection Settings"}),new g.Setting(t).setName("Fallback Regular expression").setDesc("Regular expression used to match URLs when default match fails.").addText(r=>r.setPlaceholder("Enter regular expression here..").setValue(n.settings.regex).onChange(async i=>{i.length>0&&(n.settings.regex=i,await n.saveSettings())})),new g.Setting(t).setName("Behavior on pasting URL when nothing is selected").setDesc("Auto Select: Automatically select word surrounding the cursor.").addDropdown(r=>{let i={0:"Do nothing",1:"Auto Select",2:"Insert [](url)",3:"Insert <url>"};r.addOptions(i).setValue(n.settings.nothingSelected.toString()).onChange(async o=>{n.settings.nothingSelected=+o,await n.saveSettings(),this.display()})}),new g.Setting(t).setName("Whitelist for image embed syntax").setDesc(createFragment(r=>{r.appendText("![selection](url) will be used for URL that matches the following list."),r.createEl("br"),r.appendText("Rules are regex-based, split by line break.")})).addTextArea(r=>{r.setPlaceholder(`Example: +youtu.?be|vimeo`).setValue(n.settings.listForImgEmbed).onChange(i=>(n.settings.listForImgEmbed=i,n.saveData(n.settings),r)),r.inputEl.rows=6,r.inputEl.cols=25})}};var m=class extends L.Plugin{constructor(){super(...arguments);this.pasteHandler=(n,r)=>d(r,n,this.settings)}async onload(){console.log("loading url-into-selection"),await this.loadSettings(),this.addSettingTab(new p(this.app,this)),this.addCommand({id:"paste-url-into-selection",name:"",editorCallback:async n=>{let r=await navigator.clipboard.readText();d(n,r,this.settings)}}),this.app.workspace.on("editor-paste",this.pasteHandler)}onunload(){console.log("unloading url-into-selection"),this.app.workspace.off("editor-paste",this.pasteHandler)}async loadSettings(){this.settings=Object.assign({},$,await this.loadData())}async saveSettings(){await this.saveData(this.settings)}}; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/url-into-selection/manifest.json b/.obsidian/plugins/url-into-selection/manifest.json new file mode 100644 index 0000000..e5b8570 --- /dev/null +++ b/.obsidian/plugins/url-into-selection/manifest.json @@ -0,0 +1,8 @@ +{ + "id": "url-into-selection", + "name": "Paste URL into selection", + "description": "Paste URL \"into\" selected text to create markdown links.", + "isDesktopOnly": false, + "js": "main.js", + "version": "1.11.4" +} diff --git a/.obsidian/themes/AnuPpuccin/manifest.json b/.obsidian/themes/AnuPpuccin/manifest.json new file mode 100644 index 0000000..97f36d3 --- /dev/null +++ b/.obsidian/themes/AnuPpuccin/manifest.json @@ -0,0 +1,7 @@ +{ + "name": "AnuPpuccin", + "version": "1.5.0", + "minAppVersion": "1.6.0", + "author": "Anubis", + "authorUrl": "https://github.com/AnubisNekhet" +} diff --git a/.obsidian/themes/AnuPpuccin/theme.css b/.obsidian/themes/AnuPpuccin/theme.css new file mode 100644 index 0000000..916003b --- /dev/null +++ b/.obsidian/themes/AnuPpuccin/theme.css @@ -0,0 +1,9080 @@ +/*=============================================================== + AnuPpuccin + ---------- + Personal theme for Obsidian + +AnuPpuccin is licensed under the GPL-3.0 license which allows you + to modify the code freely, however the Copyright and license +notices must be preserved in your CSS. If you redistribute a part +of my code, please credit my theme in your CSS file, and specify + which code you are using. Please keep my Buy Me a Coffee link + in your README if you do so. + + https://www.buymeacoffee.com/anubisnekhet +*===============================================================*/ +/* @settings +name: AnuPpuccin +id: anuppuccin-theme-settings +settings: + +# Colors + +- + id: anp-colors-section-header + title: Colors + description: Theme Accent and Flavors, Color Overrides, Extended Color Schemes + type: heading + level: 1 + collapsed: true +- + id: anuppuccin-theme-light + title: Light Theme Flavor + description: Select your preferred light mode flavor + type: class-select + allowEmpty: false + default: ctp-latte + options: + - + label: Latte + value: ctp-latte + - + label: Rosé Pine + value: ctp-rosepine-light +- + id: anuppuccin-theme-dark + title: Dark Theme Flavor + description: Select your preferred dark mode flavor + type: class-select + allowEmpty: false + default: ctp-mocha + options: + - + label: Frappe + value: ctp-frappe + - + label: Macchiato + value: ctp-macchiato + - + label: Mocha + value: ctp-mocha + - + label: Mocha Old + value: ctp-mocha-old +- + id: anuppuccin-light-theme-accents + title: Light Theme Accent + description: Select your preferred light theme accent (Defaults to dark theme accent if left empty) + type: class-select + allowEmpty: true + default: none + options: + - + label: Rosewater + value: ctp-accent-light-rosewater + - + label: Flamingo + value: ctp-accent-light-flamingo + - + label: Pink + value: ctp-accent-light-pink + - + label: Mauve + value: ctp-accent-light-mauve + - + label: Red + value: ctp-accent-light-red + - + label: Maroon + value: ctp-accent-light-maroon + - + label: Peach + value: ctp-accent-light-peach + - + label: Yellow + value: ctp-accent-light-yellow + - + label: Green + value: ctp-accent-light-green + - + label: Teal + value: ctp-accent-light-teal + - + label: Sky + value: ctp-accent-light-sky + - + label: Sapphire + value: ctp-accent-light-sapphire + - + label: Blue + value: ctp-accent-light-blue + - + label: Lavender + value: ctp-accent-light-lavender +- + id: anuppuccin-theme-accents + title: Dark Theme Accent + description: Select your preferred accent + type: class-select + allowEmpty: false + default: ctp-accent-rosewater + options: + - + label: Rosewater + value: ctp-accent-rosewater + - + label: Flamingo + value: ctp-accent-flamingo + - + label: Pink + value: ctp-accent-pink + - + label: Mauve + value: ctp-accent-mauve + - + label: Red + value: ctp-accent-red + - + label: Maroon + value: ctp-accent-maroon + - + label: Peach + value: ctp-accent-peach + - + label: Yellow + value: ctp-accent-yellow + - + label: Green + value: ctp-accent-green + - + label: Teal + value: ctp-accent-teal + - + label: Sky + value: ctp-accent-sky + - + label: Sapphire + value: ctp-accent-sapphire + - + label: Blue + value: ctp-accent-blue + - + label: Lavender + value: ctp-accent-lavender +- + id: anuppuccin-accent-toggle + title: Force Custom Accents + description: Forces colorscheme-specific custom accents to be utilised instead of default obsidian accent + type: class-toggle + default: true +- + id: anuppuccin-url-extended-colorschemes + title: Extended Color Schemes Snippet + description: "Download the snippet by clicking on [this link](https://github.com/AnubisNekhet/AnuPpuccin/blob/main/snippets/extended-colorschemes.css)." + type: info-text + markdown: true + +# Colors :: Color Overrides + +- + id: anp-color-overrides-header + title: Color Overrides + description: + type: heading + level: 2 + collapsed: true +- + id: ctp-custom-rosewater + title: Rosewater + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-flamingo + title: Flamingo + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-pink + title: Pink + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-mauve + title: Mauve + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-red + title: Red + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-maroon + title: Maroon + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-peach + title: Peach + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-yellow + title: Yellow + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-green + title: Green + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-teal + title: Teal + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-sky + title: Sky + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-sapphire + title: Sapphire + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-blue + title: Blue + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-lavender + title: Lavender + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-text + title: Text + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-subtext1 + title: Subtext 1 + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-subtext0 + title: Subtext0 + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-overlay2 + title: Overlay 2 + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-overlay1 + title: Overlay 1 + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-overlay0 + title: Overlay 0 + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-surface2 + title: Surface 2 + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-surface1 + title: Surface 1 + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-surface0 + title: Surface 0 + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-base + title: Base + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-mantle + title: Mantle + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' +- + id: ctp-custom-crust + title: Crust + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'rgb-values' + +# File Editor + +- + id: anp-editor-header + title: File Editor & Markdown Elements + description: Callouts, Checkboxes, Codeblocks, Lists, Tables, Tags, etc. + type: heading + level: 1 + collapsed: true +- + id: anp-active-line + title: Active line highlight + type: class-select + allowEmpty: false + default: anp-no-highlight + options: + - + label: None + value: anp-no-highlight + - + label: Highlight + value: anp-current-line + - + label: Highlight + Border + value: anp-current-line-border + - + label: Border Only + value: anp-current-line-border-only + +# File Editor & Markdown Elements :: Callouts +- + id: anp-callout-header + title: Callouts + description: Callout styles, border radius, custom colors + type: heading + level: 2 + collapsed: true +- + id: anp-callout-select + title: Callout Style + type: class-select + default: none + allowEmpty: false + options: + - + label: Default + value: none + - + label: Sleek + value: anp-callout-sleek + - + label: Block + value: anp-callout-block + - + label: Vanilla Normal + value: anp-callout-vanilla-normal + - + label: Vanilla Plus + value: anp-callout-vanilla-plus +- + id: anp-callout-color-toggle + title: Enable Custom Callout Colors + type: class-toggle +- + id: callout-radius + title: Callout Radius + type: variable-number + default: 4 + format: px +- + id: callout-padding + title: Callout Padding + description: Be careful, it does not properly work with all the callouts style yet. + type: variable-text + default: 0px +- + id: callout-title-padding + title: Callout Title Padding + type: variable-text + default: 8px +- + id: callout-title-opacity + title: Callout Title Background Opacity + description: Applies to Sleek, Vanilla and Vanilla Plus callouts + type: variable-number-slider + default: 0.1 + min: 0 + max: 1 + step: 0.05 +- + id: callout-content-padding + title: Callout Content Padding + type: variable-text + default: 8px +- + id: anp-callout-fold-position + title: Callout Fold Position + type: variable-select + default: '0' + options: + - + label: Left + value: 0 + - + label: Right + value: 1 + +# File Editor & Markdown Elements :: Checkboxes + +- + id: anp-custom-checkboxes-header + title: Checkboxes + description: Custom checkboxes and speech bubbles + type: heading + level: 2 + collapsed: true +- + id: anp-custom-checkboxes + title: Enable Custom Checkboxes + type: class-toggle +- + id: anp-speech-bubble + title: Enable Speech Bubbles + type: class-toggle + +# File Editor & Markdown Elements :: Codeblocks + +- + id: anp-codeblock-header + title: Codeblocks + description: Codeblock wrapping, line numbering + type: heading + level: 2 + collapsed: true +- + id: anp-codeblock-numbers + title: Enable Codeblock Numbering + type: class-toggle +- + id: anp-codeblock-wrap-edit + title: Codeblock Line Wrap (Edit Mode) + description: Does not work for codeblocks with syntax highlighting + type: class-select + default: none + options: + - + label: Wrap + value: none + - + label: No Wrap + value: anp-codeblock-edit-nowrap +- + id: anp-codeblock-wrap-preview + title: Codeblock Line Wrap (Preview Mode) + description: Does not work for codeblocks with syntax highlighting + type: class-select + default: none + options: + - + label: Wrap + value: none + - + label: No Wrap + value: anp-codeblock-preview-nowrap +- + id: anp-codeblock-wrap-hl-preview + title: Syntax Highlighted Codeblock Line Wrap (Preview Mode) + type: class-select + default: none + options: + - + label: Wrap + value: none + - + label: No Wrap + value: anp-codeblock-preview-hl-nowrap +- + id: anp-code-bg-color + title: Codeblock Background Color + type: variable-themed-color + allowEmpty: true + format: hex + opacity: false + default-light: '#' + default-dark: '#' +- + id: anp-code-text-color + title: Codeblock Text Color + type: variable-themed-color + description: Applies to codeblocks without syntax highlighting + allowEmpty: true + format: hex + opacity: false + default-light: '#' + default-dark: '#' + +# File Editor & Markdown Elements :: Embeds +- + id: anp-embed-header + title: Embeds + description: Images, videos, iframes, etc. + type: heading + level: 2 + collapsed: true +- + id: embed-corner-radius + title: Embed Corner Radius + type: variable-number + default: 4 + format: px + +# File Editor & Markdown Elements :: LaTeX + +- + id: anp-latex-header + title: LaTex + type: heading + description: LaTeX (Math) color, font size + level: 2 + collapsed: true +- + id: anp-latex-inline-color + title: LaTeX Inline Color + type: class-select + allowEmpty: true + default: anp-latex-inline-text + options: + - + label: Rosewater + value: anp-latex-inline-rosewater + - + label: Flamingo + value: anp-latex-inline-flamingo + - + label: Pink + value: anp-latex-inline-pink + - + label: Mauve + value: anp-latex-inline-mauve + - + label: Red + value: anp-latex-inline-red + - + label: Maroon + value: anp-latex-inline-maroon + - + label: Peach + value: anp-latex-inline-peach + - + label: Yellow + value: anp-latex-inline-yellow + - + label: Green + value: anp-latex-inline-green + - + label: Teal + value: anp-latex-inline-teal + - + label: Sky + value: anp-latex-inline-sky + - + label: Sapphire + value: anp-latex-inline-sapphire + - + label: Blue + value: anp-latex-inline-blue + - + label: Lavender + value: anp-latex-inline-lavender + - + label: Text + value: anp-latex-inline-text + - + label: Subtext 1 + value: anp-latex-inline-subtext1 + - + label: Subtext 0 + value: anp-latex-inline-subtext0 + - + label: Overlay 2 + value: anp-latex-inline-overlay2 + - + label: Overlay 1 + value: anp-latex-inline-overlay1 + - + label: Overlay 0 + value: anp-latex-inline-overlay0 + - + label: Surface 2 + value: anp-latex-inline-surface2 + - + label: Surface 1 + value: anp-latex-inline-surface1 + - + label: Surface 0 + value: anp-latex-inline-surface0 +- + id: anp-latex-block-color + title: LaTeX Block Color + type: class-select + allowEmpty: true + default: anp-latex-block-text + options: + - + label: Rosewater + value: anp-latex-block-rosewater + - + label: Flamingo + value: anp-latex-block-flamingo + - + label: Pink + value: anp-latex-block-pink + - + label: Mauve + value: anp-latex-block-mauve + - + label: Red + value: anp-latex-block-red + - + label: Maroon + value: anp-latex-block-maroon + - + label: Peach + value: anp-latex-block-peach + - + label: Yellow + value: anp-latex-block-yellow + - + label: Green + value: anp-latex-block-green + - + label: Teal + value: anp-latex-block-teal + - + label: Sky + value: anp-latex-block-sky + - + label: Sapphire + value: anp-latex-block-sapphire + - + label: Blue + value: anp-latex-block-blue + - + label: Lavender + value: anp-latex-block-lavender + - + label: Text + value: anp-latex-block-text + - + label: Subtext 1 + value: anp-latex-block-subtext1 + - + label: Subtext 0 + value: anp-latex-block-subtext0 + - + label: Overlay 2 + value: anp-latex-block-overlay2 + - + label: Overlay 1 + value: anp-latex-block-overlay1 + - + label: Overlay 0 + value: anp-latex-block-overlay0 + - + label: Surface 2 + value: anp-latex-block-surface2 + - + label: Surface 1 + value: anp-latex-block-surface1 + - + label: Surface 0 + value: anp-latex-block-surface0 +- + id: anp-latex-block-font-size + title: LaTeX Block Font Size + description: Change the font size of LaTeX blocks. + type: variable-number + default: 100 + format: "%" + +# File Editor & Markdown Elements :: Lists + +- + id: anp-list-header + title: Lists + description: Styling, indent, spacing + type: heading + level: 2 + collapsed: true +- + id: anp-list-toggle + title: Enable List Styling + type: class-toggle +- + id: list-indent + title: List Indent + type: variable-number + default: 2 + format: em +- + id: list-spacing + title: List Spacing + type: variable-number + default: 0.075 + format: em +- + id: list-marker-color + title: Unordered list bullet color + type: variable-themed-color + default-light: '#' + default-dark: '#' + format: 'hex' +- + id: list-numbered-style + title: Ordered list style + type: variable-select + default: decimal + options: + - + label: "Decimal" + value: decimal + - + label: "Decimal with leading zeroes" + value: decimal-leading-zero + - + label: "Lowercase alphabetical" + value: lower-alpha + - + label: "Uppercase alphabetical" + value: upper-alpha + - + label: "Lowercase Roman Numerals" + value: lower-roman + - + label: "Uppercase Roman Numerals" + value: upper-roman + - + label: "Lowercase Latin" + value: lower-latin + - + label: "Uppercase Latin" + value: upper-latin + - + label: "Lowercase Greek" + value: lower-greek + - + label: "Uppercase Greek" + value: upper-greek + - + label: "Hiragana" + value: hiragana + - + label: "Hiragana Iroha" + value: hiragana-iroha + - + label: "Katakana" + value: armenian + - + label: "Katakana Iroha" + value: katakana-iroha + - + label: "Armenian" + value: armenian + - + label: "CJK Ideographic" + value: cjk-ideographic + - + label: "Hebrew" + value: hebrew + +# File Editor & Markdown Elements :: Tables + +- + id: anp-table-header + title: Tables + description: Table width, alignment, table element highlight and alignment, border width + type: heading + level: 2 + collapsed: true +- + id: anp-table-toggle + title: Enable Table Styling + type: class-toggle +- + id: anp-table-width + title: Enable Custom Table Width + description: Use anp-table-width for yaml syntax + type: class-toggle +- + id: anp-table-auto + title: Center Tables + description: Use anp-table-auto for yaml syntax + type: class-toggle +- + id: anp-table-th-highlight + title: <th> Highlight + type: class-toggle +- + id: anp-td-highlight + title: <td> Highlight + type: class-select + default: anp-td-none + allowEmpty: false + options: + - + label: None + value: none + - + label: Alternate Rows + value: anp-table-row-alt + - + label: Alternate Columns + value: anp-table-col-alt + - + label: Checkered + value: anp-table-checkered + - + label: Full + value: anp-table-full +- + id: anp-table-highlight-opacity + title: Highlight Opacity + default: 0.5 + type: variable-number-slider + min: 0 + max: 1 + step: 0.1 +- + id: anp-table-align-th + title: <th> Text Align + type: variable-select + default: center + options: + - + label: Left + value: left + - + label: Center + value: center + - + label: Right + value: right +- + id: anp-table-align-td + title: <td> Text Align + type: variable-select + default: center + options: + - + label: Left + value: left + - + label: Center + value: center + - + label: Right + value: right +- + id: anp-table-thickness + title: Custom Table Border Width + type: variable-number + default: 2 + format: px +- + id: anp-table-width-pct + title: Custom Table Width + type: variable-number + default: 100 + format: "%" + +# File Editor & Markdown Elements :: Tags + +- + id: anp-tags-header + title: Tags + description: Border Width and Border Radius of Tags + type: heading + level: 2 + collapsed: true +- + id: tag-border-width + title: Tag Border Width + type: variable-number + default: 0 + format: px +- + id: tag-radius + title: Tag Radius + type: variable-number-slider + default: 2 + max: 2 + min: 0 + step: 0.1 + format: em + +# File Preview + +- + id: anp-preview-header + title: File Preview + description: File Preview Margins and Word-Wrap Width + type: heading + level: 1 + collapsed: true +- + id: anp-toggle-preview + title: Enable Custom Preview Margins + type: class-toggle +- + id: file-margins + title: File Margins + type: variable-number + default: 32 + format: px +- + id: anp-preview-width-pct + title: Preview Width + type: variable-number + default: 80 + format: "%" +- + id: file-line-width + title: Maximum Preview Width + type: variable-number + default: 700 + format: px + +# Integrations + +- + id: anp-plugin-header + title: Integrations + description: Kanban, MAKE.md, Minimal Cards Snippet, etc. + type: heading + level: 1 + collapsed: true + +# Integrations :: Kanban + +- + id: anp-plugin-kanban + title: Kanban + description: + type: heading + level: 2 + collapsed: true + +# Integrations :: Kanban :: Card Settings + +- + id: anp-plugin-card-settings + title: Card Settings + description: + type: heading + level: 3 + collapsed: true +- + id: anp-kanban-hide-card-menus + title: Hide the Card Menu Button + type: class-toggle +- + id: anp-kanban-hide-archive-btn + title: Hide the Archive Card Button + type: class-toggle +- + id: anp-kanban-hide-card-border + title: Disable Card Borders + type: class-toggle +- + id: anp-kanban-card-opacity + title: Card Opacity + type: variable-number-slider + default: 1 + min: 0 + max: 1 + step: 0.05 +- + id: anp-kanban-card-radius + title: Card Radius + type: variable-number-slider + default: 6 + format: px + min: 0 + max: 10 + step: 1 +- + id: anp-kanban-card-spacing + title: Card Spacing + type: variable-number-slider + default: 8 + format: px + min: -1 + max: 8 + step: 1 + +# Integrations :: Kanban :: Lane Settings + +- + id: anp-plugin-lane-settings + title: Lane Settings + description: + type: heading + level: 3 + collapsed: true +- + id: anp-kanban-lanes + title: Enable Full Height Lanes + description: Toggles maximum height for Kanban lanes + type: class-toggle +- + id: anp-kanban-hide-lane-border + title: Disable Lane Borders + type: class-toggle +- + id: anp-kanban-lane-opacity + title: Lane Opacity + type: variable-number-slider + default: 1 + min: 0 + max: 1 + step: 0.05 +- + id: anp-kanban-lane-radius + title: Lane Radius + type: variable-number-slider + default: 6 + format: px + min: 0 + max: 10 + step: 1 +- + id: anp-kanban-lane-spacing + title: Lane Spacing + type: variable-number-slider + default: 10 + format: px + min: -1 + max: 20 + step: 1 + +# Integrations :: Kanban :: Search Settings + +- + id: anp-plugin-kanban-search-settings + title: Search Settings + description: + type: heading + level: 3 + collapsed: true +- + id: anp-kanban-search-full + title: Enable Full Width Search Bar + description: + type: class-toggle +- + id: anp-kanban-collapse-lanes + title: Collapse Lanes With No Search Results + description: + type: class-toggle +- + id: anp-kanban-hide-cards + title: Hide Cards That Don't Contain the Search Query + description: + type: class-toggle +- + id: anp-kanban-hide-mark + title: Hide Search Result Highlight in Cards + description: + type: class-toggle +- + id: anp-kanban-uncollapse-lanes + title: Uncollapse Lanes and Unhide Cards When Sorting + description: + type: class-toggle + +# Integrations :: MAKE.md + +- + id: anp-plugin-makemd + title: MAKE.md + description: + type: heading + level: 2 + collapsed: true +- + id: anp-inline-title-vis + title: Inline Title Visibility + description: Make.md requires inline titles to be enabled to show folder titles, hence this toggle exists to disable it on notes elsewhere. + type: variable-select + default: block + options: + - + label: Visible + value: block + - + label: Invisible + value: none + +# Integrations :: Minimal Cards + +- + id: anp-snippet-minimal-cards + title: Minimal Cards + type: heading + level: 2 + collapsed: true +- + id: anp-snippet-minimal-cards-disc + title: Usage + description: "Minimal Cards is a feature of [Minimal](https://github.com/kepano/obsidian-minimal). AnuPpuccin does not come compiled with the snippet, however you can use a compiled version with this theme." + type: info-text + markdown: true +- + id: anuppuccin-url-minimal-cards-snippet + title: Minimal Cards Snippet + description: "Download the snippet from [kepano](https://github.com/kepano/)'s github via [this link](https://github.com/kepano/obsidian-minimal/blob/master/src/scss/features/cards.scss)." + type: info-text + markdown: true +- + id: cards-min-width + title: Card minimum width + type: variable-text + default: 180px +- + id: cards-max-width + title: Card maximum width + description: Default fills the available width, accepts valid CSS units + type: variable-text + default: 1fr +- + id: cards-mobile-width + title: Card minimum width on mobile + type: variable-text + default: 120px +- + id: cards-padding + title: Card padding + type: variable-text + default: 1.2em +- + id: cards-image-height + title: Card maximum image height + type: variable-text + default: 400px +- + id: cards-border-width + title: Card border width + type: variable-text + default: 1px + +# Miscellaneous + +- + id: anp-misc-element-header + title: Miscellaneous + description: Color Palette Transition, Custom Metadata Button + type: heading + level: 1 + collapsed: true +- + id: anp-color-transition-toggle + title: Enable Color Transition (WIP) + description: "Adds a transition when switching palettes, looks really neat :)" + type: class-toggle +- + id: anp-button-metadata-toggle + title: Enable Custom Metadata Button + type: class-toggle +- + id: anp-print + title: Enable Print Styling + type: class-toggle + +# Show/Hide UI Elements + +- + id: anp-show-hide-elements-header + title: Show/Hide UI Elements + description: Toggle Visibility of UI Elements + type: heading + level: 1 + collapsed: true +- + id: anp-autohide-titlebar + title: Autohide Title Bar + type: class-toggle +- + id: anp-cursor + title: Pointer cursor + type: variable-select + default: pointer + options: + - + label: Pointer + value: pointer + - + label: Normal + value: initial +- + id: anp-toggle-metadata + title: Hide Metadata + type: class-toggle +- + id: anp-toggle-scrollbars + title: Hide Scrollbars + type: class-toggle +- + id: anp-hide-status-bar + title: Hide Status Bar + type: class-toggle +- + id: anp-tooltip-toggle + title: Hide Tooltips + type: class-toggle +- + id: anp-hide-external-link-icon + title: Hide External Link Icon + type: class-toggle + default: true + +# Typography + +- + id: anp-typography-header + title: Typography + description: Fonts, Headings, Text Decoration, etc. + type: heading + level: 1 + collapsed: true + +# Typography :: Font Families + +- + id: anp-font-families-header + title: Font Families + description: + type: heading + level: 2 + collapsed: true +- + id: anp-editor-font-source + title: Source Editor Font + type: variable-text + default: Iosevka Comfy Duo +- + id: anp-editor-font-lp + title: Live Preview Editor Font + type: variable-text + default: Noto Sans +- + id: anp-editor-font-rv + title: Reading View Editor Font + type: variable-text + default: Noto Sans + +# Typography :: Font Weights + +- + id: anp-font-weight-header + title: Font Weights + description: + type: heading + level: 2 + collapsed: true +- + id: bold-weight + title: Bold Weight + type: variable-select + default: '600' + options: + - + label: 'Bolder (Relative)' + value: bolder + - + label: Lightest + value: 100 + - + label: Lighter + value: 200 + - + label: Light + value: 300 + - + label: Normal + value: 400 + - + label: Bold + value: 500 + - + label: Bolder + value: 600 + - + label: Extrabold + value: 700 + - + label: Extra-extrabold + value: 800 + - + label: Black + value: 900 +- + id: anp-font-live-preview-wt + title: Live Preview Mode Weight + type: variable-select + default: '400' + options: + - + label: Lightest + value: 100 + - + label: Lighter + value: 200 + - + label: Light + value: 300 + - + label: Normal + value: 400 + - + label: Bold + value: 500 + - + label: Bolder + value: 600 + - + label: Extrabold + value: 700 + - + label: Extra-extrabold + value: 800 + - + label: Black + value: 900 +- + id: anp-font-preview-wt + title: Reading Mode Weight + type: variable-select + default: '400' + options: + - + label: Lightest + value: 100 + - + label: Lighter + value: 200 + - + label: Light + value: 300 + - + label: Normal + value: 400 + - + label: Bold + value: 500 + - + label: Bolder + value: 600 + - + label: Extrabold + value: 700 + - + label: Extra-extrabold + value: 800 + - + label: Black + value: 900 +- + id: anp-font-editor-wt + title: Source Mode Weight + type: variable-select + default: '400' + options: + - + label: Lightest + value: 100 + - + label: Lighter + value: 200 + - + label: Light + value: 300 + - + label: Normal + value: 400 + - + label: Bold + value: 500 + - + label: Bolder + value: 600 + - + label: Extrabold + value: 700 + - + label: Extra-extrabold + value: 800 + - + label: Black + value: 900 + +# Typography :: Headings + +- + id: anp-header-header + title: Headings + description: + type: heading + level: 2 + collapsed: true +- + id: anp-header-color-toggle + title: Enable Custom Heading Colors + type: class-toggle +- + id: anp-header-margin-toggle + title: Enable Custom Heading Margin + type: class-toggle +- + id: anp-header-divider-color-toggle + title: Inherit Divider Color from Heading Color + type: class-toggle +- + id: anp-header-margin-value + title: Heading margin value + description: Size unit is px + type: variable-number-slider + min: 0 + max: 30 + step: 2 + default: 15 + format: px + +# Typography :: Headings :: H1 + +- + id: anp-h1-header + title: H1 + description: + type: heading + level: 3 + collapsed: true +- + id: h1-font + title: H1 Font Family + type: variable-text + default: Noto Serif +- + id: h1-size + title: H1 Font Size + type: variable-number + default: 2 + format: em +- + id: h1-weight + title: H1 Font Weight + type: variable-number + default: 700 +- + id: h1-line-height + title: H1 Line Height + type: variable-number + default: 1.2 +- + id: anp-h1-color-custom + title: H1 Color + type: class-select + allowEmpty: true + default: anp-h1-red + options: + - + label: Rosewater + value: anp-h1-rosewater + - + label: Flamingo + value: anp-h1-flamingo + - + label: Pink + value: anp-h1-pink + - + label: Mauve + value: anp-h1-mauve + - + label: Red + value: anp-h1-red + - + label: Maroon + value: anp-h1-maroon + - + label: Peach + value: anp-h1-peach + - + label: Yellow + value: anp-h1-yellow + - + label: Green + value: anp-h1-green + - + label: Teal + value: anp-h1-teal + - + label: Sky + value: anp-h1-sky + - + label: Sapphire + value: anp-h1-sapphire + - + label: Blue + value: anp-h1-blue + - + label: Lavender + value: anp-h1-lavender +- + id: anp-h1-divider + title: H1 Divider + type: class-toggle + +# Typography :: Headings :: H2 + +- + id: anp-h2-header + title: H2 + description: + type: heading + level: 3 + collapsed: true +- + id: h2-font + title: H2 Font Family + type: variable-text + default: Noto Serif +- + id: h2-size + title: H2 Font Size + type: variable-number + default: 1.6 + format: em +- + id: h2-weight + title: H2 Font Weight + type: variable-number + default: 600 +- + id: h2-line-height + title: H2 Line Height + type: variable-number + default: 1.2 +- + id: anp-h2-color-custom + title: H2 Color + type: class-select + allowEmpty: true + default: anp-h2-peach + options: + - + label: Rosewater + value: anp-h2-rosewater + - + label: Flamingo + value: anp-h2-flamingo + - + label: Pink + value: anp-h2-pink + - + label: Mauve + value: anp-h2-mauve + - + label: Red + value: anp-h2-red + - + label: Maroon + value: anp-h2-maroon + - + label: Peach + value: anp-h2-peach + - + label: Yellow + value: anp-h2-yellow + - + label: Green + value: anp-h2-green + - + label: Teal + value: anp-h2-teal + - + label: Sky + value: anp-h2-sky + - + label: Sapphire + value: anp-h2-sapphire + - + label: Blue + value: anp-h2-blue + - + label: Lavender + value: anp-h2-lavender +- + id: anp-h2-divider + title: H2 Divider + type: class-toggle + +# Typography :: Headings :: H3 + +- + id: anp-h3-header + title: H3 + description: + type: heading + level: 3 + collapsed: true +- + id: h3-font + title: H3 Font Family + type: variable-text + default: Noto Serif +- + id: h3-size + title: H3 Font Size + type: variable-number + default: 1.37 + format: em +- + id: h3-weight + title: H3 Font Weight + type: variable-number + default: 600 +- + id: h3-line-height + title: H3 Line Height + type: variable-number + default: 1.3 +- + id: anp-h3-color-custom + title: H3 Color + type: class-select + allowEmpty: true + default: anp-h3-green + options: + - + label: Rosewater + value: anp-h3-rosewater + - + label: Flamingo + value: anp-h3-flamingo + - + label: Pink + value: anp-h3-pink + - + label: Mauve + value: anp-h3-mauve + - + label: Red + value: anp-h3-red + - + label: Maroon + value: anp-h3-maroon + - + label: Peach + value: anp-h3-peach + - + label: Yellow + value: anp-h3-yellow + - + label: Green + value: anp-h3-green + - + label: Teal + value: anp-h3-teal + - + label: Sky + value: anp-h3-sky + - + label: Sapphire + value: anp-h3-sapphire + - + label: Blue + value: anp-h3-blue + - + label: Lavender + value: anp-h3-lavender +- + id: anp-h3-divider + title: H3 Divider + type: class-toggle + +# Typography :: Headings :: H4 + +- + id: anp-h4-header + title: H4 + description: + type: heading + level: 3 + collapsed: true +- + id: h4-font + title: H4 Font Family + type: variable-text + default: Noto Serif +- + id: h4-size + title: H4 Font Size + type: variable-number + default: 1.25 + format: em +- + id: h4-weight + title: H4 Font Weight + type: variable-number + default: 600 +- + id: h4-line-height + title: H4 Line Height + type: variable-number + default: 1.4 +- + id: anp-h4-color-custom + title: H4 Color + type: class-select + allowEmpty: true + default: anp-h4-teal + options: + - + label: Rosewater + value: anp-h4-rosewater + - + label: Flamingo + value: anp-h4-flamingo + - + label: Pink + value: anp-h4-pink + - + label: Mauve + value: anp-h4-mauve + - + label: Red + value: anp-h4-red + - + label: Maroon + value: anp-h4-maroon + - + label: Peach + value: anp-h4-peach + - + label: Yellow + value: anp-h4-yellow + - + label: Green + value: anp-h4-green + - + label: Teal + value: anp-h4-teal + - + label: Sky + value: anp-h4-sky + - + label: Sapphire + value: anp-h4-sapphire + - + label: Blue + value: anp-h4-blue + - + label: Lavender + value: anp-h4-lavender +- + id: anp-h4-divider + title: H4 Divider + type: class-toggle + +# Typography :: Headings :: H5 + +- + id: anp-h5-header + title: H5 + description: + type: heading + level: 3 + collapsed: true +- + id: h5-font + title: H5 Font Family + type: variable-text + default: Noto Serif +- + id: h5-size + title: H5 Font Size + type: variable-number + default: 1.12 + format: em +- + id: h5-weight + title: H5 Font Weight + type: variable-number + default: 600 +- + id: h5-line-height + title: H5 Line Height + type: variable-number + default: 1.5 +- + id: anp-h5-color-custom + title: H5 Color + type: class-select + allowEmpty: true + default: anp-h5-lavender + options: + - + label: Rosewater + value: anp-h5-rosewater + - + label: Flamingo + value: anp-h5-flamingo + - + label: Pink + value: anp-h5-pink + - + label: Mauve + value: anp-h5-mauve + - + label: Red + value: anp-h5-red + - + label: Maroon + value: anp-h5-maroon + - + label: Peach + value: anp-h5-peach + - + label: Yellow + value: anp-h5-yellow + - + label: Green + value: anp-h5-green + - + label: Teal + value: anp-h5-teal + - + label: Sky + value: anp-h5-sky + - + label: Sapphire + value: anp-h5-sapphire + - + label: Blue + value: anp-h5-blue + - + label: Lavender + value: anp-h5-lavender +- + id: anp-h5-divider + title: H5 Divider + type: class-toggle + +# Typography :: Headings :: H6 + +- + id: anp-h6-header + title: H6 + description: + type: heading + level: 3 + collapsed: true +- + id: h6-font + title: H6 Font Family + type: variable-text + default: Noto Serif +- + id: h6-size + title: H6 Font Size + type: variable-number + default: 1.12 + format: em +- + id: h6-weight + title: H6 Font Weight + type: variable-number + default: 600 +- + id: h6-line-height + title: H6 Line Height + type: variable-number + default: 1.5 +- + id: anp-h6-color-custom + title: H6 Color + type: class-select + allowEmpty: true + default: anp-h6-mauve + options: + - + label: Rosewater + value: anp-h6-rosewater + - + label: Flamingo + value: anp-h6-flamingo + - + label: Pink + value: anp-h6-pink + - + label: Mauve + value: anp-h6-mauve + - + label: Red + value: anp-h6-red + - + label: Maroon + value: anp-h6-maroon + - + label: Peach + value: anp-h6-peach + - + label: Yellow + value: anp-h6-yellow + - + label: Green + value: anp-h6-green + - + label: Teal + value: anp-h6-teal + - + label: Sky + value: anp-h6-sky + - + label: Sapphire + value: anp-h6-sapphire + - + label: Blue + value: anp-h6-blue + - + label: Lavender + value: anp-h6-lavender +- + id: anp-h6-divider + title: H6 Divider + type: class-toggle + +# Typography :: Comments + +- + id: anp-comment-header + title: Comments + description: + type: heading + level: 2 + collapsed: true +- + id: hide-comments + title: Hide Comments + description: Hides the comments while not editing them. + type: class-toggle +- + id: hide-comment-indicators + title: Hide Comment Indicators + description: Hides the '%%' while not editing comments. + type: class-toggle + +# Typography :: Text Decoration + +- + id: anp-decor-header + title: Text Decoration + description: + type: heading + level: 2 + collapsed: true +- + id: anp-decoration-toggle + title: Enable Decoration Colors + type: class-toggle +- + id: anp-bold-custom + title: Bold Color + type: class-select + allowEmpty: false + default: anp-bold-red + options: + - + label: None + value: none + - + label: Rosewater + value: anp-bold-rosewater + - + label: Flamingo + value: anp-bold-flamingo + - + label: Pink + value: anp-bold-pink + - + label: Mauve + value: anp-bold-mauve + - + label: Red + value: anp-bold-red + - + label: Maroon + value: anp-bold-maroon + - + label: Peach + value: anp-bold-peach + - + label: Yellow + value: anp-bold-yellow + - + label: Green + value: anp-bold-green + - + label: Teal + value: anp-bold-teal + - + label: Sky + value: anp-bold-sky + - + label: Sapphire + value: anp-bold-sapphire + - + label: Blue + value: anp-bold-blue + - + label: Lavender + value: anp-bold-lavender +- + id: anp-italic-custom + title: Italic Color + type: class-select + allowEmpty: false + default: anp-italic-green + options: + - + label: None + value: none + - + label: Rosewater + value: anp-italic-rosewater + - + label: Flamingo + value: anp-italic-flamingo + - + label: Pink + value: anp-italic-pink + - + label: Mauve + value: anp-italic-mauve + - + label: Red + value: anp-italic-red + - + label: Maroon + value: anp-italic-maroon + - + label: Peach + value: anp-italic-peach + - + label: Yellow + value: anp-italic-yellow + - + label: Green + value: anp-italic-green + - + label: Teal + value: anp-italic-teal + - + label: Sky + value: anp-italic-sky + - + label: Sapphire + value: anp-italic-sapphire + - + label: Blue + value: anp-italic-blue + - + label: Lavender + value: anp-italic-lavender +- + id: anp-highlight-custom + title: Highlight Color + type: class-select + allowEmpty: false + default: anp-highlight-yellow + options: + - + label: Rosewater + value: anp-highlight-rosewater + - + label: Flamingo + value: anp-highlight-flamingo + - + label: Pink + value: anp-highlight-pink + - + label: Mauve + value: anp-highlight-mauve + - + label: Red + value: anp-highlight-red + - + label: Maroon + value: anp-highlight-maroon + - + label: Peach + value: anp-highlight-peach + - + label: Yellow + value: anp-highlight-yellow + - + label: Green + value: anp-highlight-green + - + label: Teal + value: anp-highlight-teal + - + label: Sky + value: anp-highlight-sky + - + label: Sapphire + value: anp-highlight-sapphire + - + label: Blue + value: anp-highlight-blue + - + label: Lavender + value: anp-highlight-lavender + +# Workspace + +- + id: anp-workspace-header + title: Workspace + description: Background, Colorful Frame, Layout, Sidebar, Tabs, Translucency, etc. + type: heading + level: 1 + collapsed: true + +# Workspace :: Canvas + +- + id: anp-canvas-header + title: Canvas + description: Darken Canvas Background + type: heading + level: 2 + collapsed: true +- + id: anp-canvas-dark-bg + title: Darker Canvas Background + type: class-toggle + +# Workspace :: Colorful Frame + +- + id: colorful-frame + title: Colorful Frame + description: + type: heading + level: 2 + collapsed: true +- + id: anp-colorful-frame + title: "Enable Colorful Frame (WIP)" + type: class-toggle +- + id: anp-colorful-frame-icon-toggle-light + title: "Invert Icon Colors - Light" + type: class-toggle +- + id: anp-colorful-frame-icon-toggle-dark + title: "Invert Icon Colors - Dark" + type: class-toggle +- + id: anp-colorful-frame-opacity + title: Colorful Frame Opacity + type: variable-number-slider + default: 1 + min: 0 + max: 1 + step: 0.05 +- + id: anp-colorful-frame-color + title: Custom Colorful Frame Color + type: variable-themed-color + format: "rgb-values" + opacity: false + default-light: '#' + default-dark: '#' + alt-format: + - + id: anp-colorful-frame-color-hsl + format: "hsl-values" + +# Workspace :: File Browser + +- + id: anp-filebrowser-header + title: File Browser + description: 'Enable/Disable File Browser elements' + type: heading + level: 2 + collapsed: true +- + id: anp-custom-vault-toggle + title: Enable custom vault title + type: class-toggle +- + id: anp-file-icons + title: Enable file icons + type: class-toggle +- + id: anp-floating-header + title: Enable floating vault title + type: class-toggle +- + id: anp-collapse-folders + title: Enable folder icons for collapse indicators + type: class-toggle +- + id: anp-file-label-align + title: File label alignment + type: variable-select + default: "0" + options: + - + label: Right + value: 1 + - + label: Left + value: 0 + +# Workspace :: PDF Viewer + +- + id: anp-pdf-viewer-header + title: PDF Viewer + description: + type: heading + level: 2 + collapsed: true +- + id: anp-pdf-blend-toggle-dark + title: Toggle PDF background blending - Dark Mode + desc: Blends PDF viewer background with obsidian background in dark mode + type: class-toggle +- + id: anp-pdf-blend-toggle-light + title: Toggle PDF background blending - Light Mode + desc: Blends PDF viewer background with obsidian background in light mode + type: class-toggle + +# Workspace :: Rainbow Folders + +- + id: anp-rainbow-section-header + title: Rainbow Folders + description: + type: heading + level: 2 + collapsed: true +- + id: anuppuccin-url-custom-rainbow-colors + title: Custom rainbow folder colors snippet + description: "Download the snippet through [this link](https://github.com/AnubisNekhet/AnuPpuccin/blob/main/snippets/custom-rainbow-colors.css)." + type: info-text + markdown: true +- + id: anp-alt-rainbow-style + title: Rainbow style + type: class-select + allowEmpty: false + default: anp-default-rainbow + options: + - + label: None + value: anp-default-rainbow + - + label: Full + value: anp-full-rainbow-color-toggle + - + label: Simple + value: anp-simple-rainbow-color-toggle + +# Workspace :: Rainbow Folders :: Full Folder Settings + +- + id: anp-full-rainbow-folder-settings + title: Full Folder Settings + description: + type: heading + level: 3 + collapsed: true +- + id: anp-rainbow-file-toggle + title: File recolor toggle + desc: Recolors files to match the folders + type: class-toggle +- + id: anp-full-rainbow-text-color-toggle-light + title: Invert title colors (Light Mode) + type: class-toggle +- + id: anp-full-rainbow-text-color-toggle-dark + title: Invert title colors (Dark Mode) + type: class-toggle +- + id: anp-rainbow-folder-bg-opacity + title: Folder background color opacity + type: variable-number + default: 0.7 + +# Workspace :: Rainbow Folders :: Simple Folder Settings + +- + id: anp-simple-rainbow-folder-settings + title: Simple Folder Settings + description: + type: heading + level: 3 + collapsed: true +- + id: anp-simple-rainbow-title-toggle + title: Enable title recolor + type: class-toggle +- + id: anp-simple-rainbow-collapse-icon-toggle + title: Enable collapse icon recolor + type: class-toggle +- + id: anp-simple-rainbow-indentation-toggle + title: Enable collapse indent recolor + type: class-toggle +- + id: anp-simple-rainbow-icon-toggle + title: Enable circular file + type: class-toggle +- + id: anp-rainbow-subfolder-color-toggle + title: Enable subfolder color inheritance + type: class-toggle + +# Workspace :: Stacked Tabs + +- + id: anp-stacked-tabs-header + title: Stacked Tabs + description: + type: heading + level: 2 + collapsed: true +- + id: anp-stacked-header-width + title: Stacked tabs header width + type: variable-number + default: 40 + format: px +- + id: anp-tab-stacked-pane-width + title: Stacked tabs pane width multiplier + description: Multiplies the stack tab pane with which depends on file line width + type: variable-number + default: 1 + +# Workspace :: Status Bar + +- + id: anp-status-bar-header + title: Status Bar + description: Select status bar style + type: heading + level: 2 + collapsed: true +- + id: anp-status-bar-select + title: Status Bar Style + type: class-select + default: none + options: + - + label: Default + value: none + - + label: Floating + value: anp-floating-status-bar + - + label: Fixed + value: anp-fixed-status-bar + +# Workspace :: Tabs + +- + id: anp-alt-tab-header + title: Tabs + description: + type: heading + level: 2 + collapsed: true +- + id: anp-alt-tab-style + title: Tab style + type: class-select + allowEmpty: false + default: anp-default-tab + options: + - + label: Default + value: anp-default-tab + - + label: Depth + value: anp-depth-tab-toggle + - + label: Minimalistic + value: anp-mini-tab-toggle + - + label: Safari-style (Animated) + value: anp-alternate-tab-toggle + - + label: Safari-style (Vanilla) + value: anp-safari-tab-toggle +- + id: anp-alt-tab-custom-height + title: Custom tab height + type: variable-number + allowEmpty: false + default: 40 + format: px +- + id: anp-disable-newtab-align + title: Disable new tab button right alignment + type: class-toggle + +# Workspace :: Tabs :: Depth Tab Settings + +- + id: anp-depth-tab-header + title: Depth Tab Settings + description: Only applies to inactive tabs + type: heading + level: 3 + collapsed: true +- + id: anp-depth-tab-text-invert + title: Invert tab text color + type: class-toggle +- + id: anp-depth-tab-opacity + title: Tab opacity + type: variable-number-slider + default: 0.6 + max: 1 + min: 0 + step: 0.1 +- + id: anp-depth-tab-gap + title: Tab gap + type: variable-number + default: 10 + format: px + +# Workspace :: Tabs :: Animated Safari-style Tab Settings + +- + id: anp-safari-tab-header + title: Animated Safari-style Tab Settings + description: Adapted from github.com/chuckharmston's snippets + type: heading + level: 3 + collapsed: true +- + id: anp-safari-tab-radius + title: Tab radius + type: variable-number + default: 6 + format: px +- + id: anp-safari-tab-gap + title: Tab gap + type: variable-number + default: 10 + format: px +- + id: anp-safari-border-width + title: Tab border width + type: variable-number + default: 1 + format: px + +# Workspace :: Tabs :: Vanilla Safari-style Tab Settings + +- + id: anp-safari-vanilla-tab-header + title: Vanilla Safari-style Tab Settings + description: + type: heading + level: 3 + collapsed: true +- + id: anp-safari-tab-animated + title: Enable WIP animated safari tabs + type: class-toggle + +# Workspace :: Translucency + +- + id: anp-translucency-header + title: Translucency + description: + type: heading + level: 2 + collapsed: true +- + id: anp-translucency-opacity + description: Drag to change background opacity + title: Window opacity + type: variable-number + default: 0.15 + +# Workspace :: Workspace Layout + +- + id: anp-layout-header + title: Workspace Layout + description: Workspace layout and arrangement + type: heading + level: 2 + collapsed: true +- + id: anp-layout-select + title: Workspace Layout variant + type: class-select + allowEmpty: false + default: none + options: + - + label: Default + value: none + - + label: Border + value: anp-border-layout + - + label: Cards + value: anp-card-layout +- + id: anp-bg-fix + title: Background fix for applying colors + type: class-toggle +- + id: anp-hide-borders + title: Hide borders + type: class-toggle + +# Workspace :: Workspace Layout :: Card Layout + +- + id: anp-layout-card + title: Card Layout Settings + description: + type: heading + level: 3 + collapsed: true +- + id: anp-card-radius + title: Card radius + type: variable-number + default: 16 + format: px +- + id: anp-card-layout-padding + title: Card padding + type: variable-number + default: 10 + format: px +- + id: anp-card-header-left-padding + title: Tab left padding + type: variable-number + default: 20 + format: px +- + id: anp-card-shadows + title: Enable shadows + type: class-toggle +- + id: anp-card-layout-actions + title: Enable card format for actions + type: class-toggle +- + id: anp-card-layout-filebrowser + title: Enable card format for file browser + type: class-toggle +- + id: anp-layout-border + title: Border Layout Settings + description: + type: heading + level: 3 + collapsed: true +- + id: anp-border-radius + title: Border Layout Radius + type: variable-number + default: 16 + format: px +- + id: anp-border-padding + title: Border Layout Padding + type: variable-number + default: 20 + format: px + +# Credits + +- + id: anuppuccin-support + title: Support AnuPpuccin + description: If you like the theme, here are some ways to support development + type: heading + level: 1 + collapsed: true +- + id: anuppuccin-url-donate + title: Buy Me a Coffee + description: "[https://www.buymeacoffee.com/anubisnekhet](https://www.buymeacoffee.com/anubisnekhet)" + type: info-text + markdown: true +- + id: anuppuccin-url-star-repo + title: Star the Theme on GitHub + description: "[https://github.com/anubisnekhet/anuppuccin](https://github.com/anubisnekhet/anuppuccin)" + type: info-text + markdown: true +- + id: anuppuccin-url-submit-issue + title: Submit an Issue on GitHub + description: "[https://github.com/anubisnekhet/anuppuccin/issues](https://github.com/anubisnekhet/anuppuccin/issues)" + type: info-text + markdown: true + +*/ +/*------------------Defining Colorschemes-------------------*/ +.theme-light.ctp-latte, .ctp-latte .themed-color-wrapper > .theme-light { + --ctp-rosewater: var(--ctp-custom-rosewater, var(--ctp-ext-rosewater, 222, 149, 132)); + --ctp-flamingo: var(--ctp-custom-flamingo, var(--ctp-ext-flamingo, 221, 120, 120)); + --ctp-pink: var(--ctp-custom-pink, var(--ctp-ext-pink, 236, 131, 208)); + --ctp-mauve: var(--ctp-custom-mauve, var(--ctp-ext-mauve, 136, 57, 239)); + --ctp-red: var(--ctp-custom-red, var(--ctp-ext-red, 210, 15, 57)); + --ctp-maroon: var(--ctp-custom-maroon, var(--ctp-ext-maroon, 230, 69, 83)); + --ctp-peach: var(--ctp-custom-peach, var(--ctp-ext-peach, 254, 100, 11)); + --ctp-yellow: var(--ctp-custom-yellow, var(--ctp-ext-yellow, 228, 147, 32)); + --ctp-green: var(--ctp-custom-green, var(--ctp-ext-green, 64, 160, 43)); + --ctp-teal: var(--ctp-custom-teal, var(--ctp-ext-teal, 23, 146, 153)); + --ctp-sky: var(--ctp-custom-sky, var(--ctp-ext-sky, 4, 165, 229)); + --ctp-sapphire: var(--ctp-custom-sapphire, var(--ctp-ext-sapphire, 32, 159, 181)); + --ctp-blue: var(--ctp-custom-blue, var(--ctp-ext-blue, 42, 110, 245)); + --ctp-lavender: var(--ctp-custom-lavender, var(--ctp-ext-lavender, 114, 135, 253)); + --ctp-text: var(--ctp-custom-text, var(--ctp-ext-text, 76, 79, 105)); + --ctp-subtext1: var(--ctp-custom-subtext1, var(--ctp-ext-subtext1, 92, 95, 119)); + --ctp-subtext0: var(--ctp-custom-subtext0, var(--ctp-ext-subtext0, 108, 111, 133)); + --ctp-overlay2: var(--ctp-custom-overlay2, var(--ctp-ext-overlay2, 124, 127, 147)); + --ctp-overlay1: var(--ctp-custom-overlay1, var(--ctp-ext-overlay1, 140, 143, 161)); + --ctp-overlay0: var(--ctp-custom-overlay0, var(--ctp-ext-overlay0, 156, 160, 176)); + --ctp-surface2: var(--ctp-custom-surface2, var(--ctp-ext-surface2, 172, 176, 190)); + --ctp-surface1: var(--ctp-custom-surface1, var(--ctp-ext-surface1, 188, 192, 204)); + --ctp-surface0: var(--ctp-custom-surface0, var(--ctp-ext-surface0, 204, 208, 218)); + --ctp-base: var(--ctp-custom-base, var(--ctp-ext-base, 239, 241, 245)); + --ctp-mantle: var(--ctp-custom-mantle, var(--ctp-ext-mantle, 230, 233, 239)); + --ctp-crust: var(--ctp-custom-crust, var(--ctp-ext-crust, 220, 224, 232)); +} + +.theme-light.ctp-rosepine-light, .ctp-rosepine-light .themed-color-wrapper > .theme-light { + --ctp-rosewater: var(--ctp-custom-rosewater, var(--ctp-ext-rosewater, 214, 129, 125)); + --ctp-flamingo: var(--ctp-custom-flamingo, var(--ctp-ext-flamingo, 214, 129, 125)); + --ctp-pink: var(--ctp-custom-pink, var(--ctp-ext-pink, 144, 122, 169)); + --ctp-mauve: var(--ctp-custom-mauve, var(--ctp-ext-mauve, 144, 122, 169)); + --ctp-red: var(--ctp-custom-red, var(--ctp-ext-red, 180, 99, 122)); + --ctp-maroon: var(--ctp-custom-maroon, var(--ctp-ext-maroon, 180, 99, 122)); + --ctp-peach: var(--ctp-custom-peach, var(--ctp-ext-peach, 214, 129, 125)); + --ctp-yellow: var(--ctp-custom-yellow, var(--ctp-ext-yellow, 234, 157, 52)); + --ctp-green: var(--ctp-custom-green, var(--ctp-ext-green, 86, 148, 159)); + --ctp-teal: var(--ctp-custom-teal, var(--ctp-ext-teal, 86, 148, 159)); + --ctp-sky: var(--ctp-custom-sky, var(--ctp-ext-sky, 40, 105, 131)); + --ctp-sapphire: var(--ctp-custom-sapphire, var(--ctp-ext-sapphire, 40, 105, 131)); + --ctp-blue: var(--ctp-custom-blue, var(--ctp-ext-blue, 40, 105, 131)); + --ctp-lavender: var(--ctp-custom-lavender, var(--ctp-ext-lavender, 144, 122, 169)); + --ctp-text: var(--ctp-custom-text, var(--ctp-ext-text, 87, 82, 121)); + --ctp-subtext1: var(--ctp-custom-subtext1, var(--ctp-ext-subtext1, 97, 92, 132)); + --ctp-subtext0: var(--ctp-custom-subtext0, var(--ctp-ext-subtext0, 121, 117, 147)); + --ctp-overlay2: var(--ctp-custom-overlay2, var(--ctp-ext-overlay2, 128, 124, 153)); + --ctp-overlay1: var(--ctp-custom-overlay1, var(--ctp-ext-overlay1, 152, 147, 165)); + --ctp-overlay0: var(--ctp-custom-overlay0, var(--ctp-ext-overlay0, 161, 156, 173)); + --ctp-surface2: var(--ctp-custom-surface2, var(--ctp-ext-surface2, 202, 193, 185)); + --ctp-surface1: var(--ctp-custom-surface1, var(--ctp-ext-surface1, 209, 201, 194)); + --ctp-surface0: var(--ctp-custom-surface0, var(--ctp-ext-surface0, 220, 211, 203)); + --ctp-base: var(--ctp-custom-base, var(--ctp-ext-base, 238, 230, 221)); + --ctp-mantle: var(--ctp-custom-mantle, var(--ctp-ext-mantle, 230, 219, 209)); + --ctp-crust: var(--ctp-custom-crust, var(--ctp-ext-crust, 221, 208, 198)); +} + +.theme-dark.ctp-frappe, .ctp-frappe .themed-color-wrapper > .theme-dark { + --ctp-rosewater: var(--ctp-custom-rosewater, var(--ctp-ext-rosewater, 242, 213, 207)); + --ctp-flamingo: var(--ctp-custom-flamingo, var(--ctp-ext-flamingo, 238, 190, 190)); + --ctp-pink: var(--ctp-custom-pink, var(--ctp-ext-pink, 244, 184, 228)); + --ctp-mauve: var(--ctp-custom-mauve, var(--ctp-ext-mauve, 202, 158, 230)); + --ctp-red: var(--ctp-custom-red, var(--ctp-ext-red, 231, 130, 132)); + --ctp-maroon: var(--ctp-custom-maroon, var(--ctp-ext-maroon, 234, 153, 156)); + --ctp-peach: var(--ctp-custom-peach, var(--ctp-ext-peach, 239, 159, 118)); + --ctp-yellow: var(--ctp-custom-yellow, var(--ctp-ext-yellow, 229, 200, 144)); + --ctp-green: var(--ctp-custom-green, var(--ctp-ext-green, 166, 209, 137)); + --ctp-teal: var(--ctp-custom-teal, var(--ctp-ext-teal, 129, 200, 190)); + --ctp-sky: var(--ctp-custom-sky, var(--ctp-ext-sky, 153, 209, 219)); + --ctp-sapphire: var(--ctp-custom-sapphire, var(--ctp-ext-sapphire, 133, 193, 220)); + --ctp-blue: var(--ctp-custom-blue, var(--ctp-ext-blue, 140, 170, 238)); + --ctp-lavender: var(--ctp-custom-lavender, var(--ctp-ext-lavender, 186, 187, 241)); + --ctp-text: var(--ctp-custom-text, var(--ctp-ext-text, 198, 206, 239)); + --ctp-subtext1: var(--ctp-custom-subtext1, var(--ctp-ext-subtext1, 181, 189, 220)); + --ctp-subtext0: var(--ctp-custom-subtext0, var(--ctp-ext-subtext0, 165, 172, 201)); + --ctp-overlay2: var(--ctp-custom-overlay2, var(--ctp-ext-overlay2, 148, 155, 183)); + --ctp-overlay1: var(--ctp-custom-overlay1, var(--ctp-ext-overlay1, 131, 138, 164)); + --ctp-overlay0: var(--ctp-custom-overlay0, var(--ctp-ext-overlay0, 115, 120, 145)); + --ctp-surface2: var(--ctp-custom-surface2, var(--ctp-ext-surface2, 98, 103, 126)); + --ctp-surface1: var(--ctp-custom-surface1, var(--ctp-ext-surface1, 81, 86, 108)); + --ctp-surface0: var(--ctp-custom-surface0, var(--ctp-ext-surface0, 65, 69, 89)); + --ctp-base: var(--ctp-custom-base, var(--ctp-ext-base, 48, 52, 70)); + --ctp-mantle: var(--ctp-custom-mantle, var(--ctp-ext-mantle, 41, 44, 60)); + --ctp-crust: var(--ctp-custom-crust, var(--ctp-ext-crust, 35, 38, 52)); +} + +.theme-dark.ctp-macchiato, .ctp-macchiato .themed-color-wrapper > .theme-dark { + --ctp-rosewater: var(--ctp-custom-rosewater, var(--ctp-ext-rosewater, 244, 219, 214)); + --ctp-flamingo: var(--ctp-custom-flamingo, var(--ctp-ext-flamingo, 240, 198, 198)); + --ctp-pink: var(--ctp-custom-pink, var(--ctp-ext-pink, 245, 189, 230)); + --ctp-mauve: var(--ctp-custom-mauve, var(--ctp-ext-mauve, 198, 160, 246)); + --ctp-red: var(--ctp-custom-red, var(--ctp-ext-red, 237, 135, 150)); + --ctp-maroon: var(--ctp-custom-maroon, var(--ctp-ext-maroon, 238, 153, 160)); + --ctp-peach: var(--ctp-custom-peach, var(--ctp-ext-peach, 245, 169, 127)); + --ctp-yellow: var(--ctp-custom-yellow, var(--ctp-ext-yellow, 238, 212, 159)); + --ctp-green: var(--ctp-custom-green, var(--ctp-ext-green, 166, 218, 149)); + --ctp-teal: var(--ctp-custom-teal, var(--ctp-ext-teal, 139, 213, 202)); + --ctp-sky: var(--ctp-custom-sky, var(--ctp-ext-sky, 145, 215, 227)); + --ctp-sapphire: var(--ctp-custom-sapphire, var(--ctp-ext-sapphire, 125, 196, 228)); + --ctp-blue: var(--ctp-custom-blue, var(--ctp-ext-blue, 138, 173, 244)); + --ctp-lavender: var(--ctp-custom-lavender, var(--ctp-ext-lavender, 183, 189, 248)); + --ctp-text: var(--ctp-custom-text, var(--ctp-ext-text, 197, 207, 245)); + --ctp-subtext1: var(--ctp-custom-subtext1, var(--ctp-ext-subtext1, 179, 188, 224)); + --ctp-subtext0: var(--ctp-custom-subtext0, var(--ctp-ext-subtext0, 161, 170, 203)); + --ctp-overlay2: var(--ctp-custom-overlay2, var(--ctp-ext-overlay2, 143, 151, 183)); + --ctp-overlay1: var(--ctp-custom-overlay1, var(--ctp-ext-overlay1, 125, 132, 162)); + --ctp-overlay0: var(--ctp-custom-overlay0, var(--ctp-ext-overlay0, 108, 114, 141)); + --ctp-surface2: var(--ctp-custom-surface2, var(--ctp-ext-surface2, 90, 95, 120)); + --ctp-surface1: var(--ctp-custom-surface1, var(--ctp-ext-surface1, 72, 76, 100)); + --ctp-surface0: var(--ctp-custom-surface0, var(--ctp-ext-surface0, 54, 58, 79)); + --ctp-base: var(--ctp-custom-base, var(--ctp-ext-base, 36, 39, 58)); + --ctp-mantle: var(--ctp-custom-mantle, var(--ctp-ext-mantle, 30, 32, 48)); + --ctp-crust: var(--ctp-custom-crust, var(--ctp-ext-crust, 24, 25, 38)); +} + +.theme-dark.ctp-mocha, .ctp-mocha .themed-color-wrapper > .theme-dark { + --ctp-rosewater: var(--ctp-custom-rosewater, var(--ctp-ext-rosewater, 245, 224, 220)); + --ctp-flamingo: var(--ctp-custom-flamingo, var(--ctp-ext-flamingo, 242, 205, 205)); + --ctp-pink: var(--ctp-custom-pink, var(--ctp-ext-pink, 245, 194, 231)); + --ctp-mauve: var(--ctp-custom-mauve, var(--ctp-ext-mauve, 203, 166, 247)); + --ctp-red: var(--ctp-custom-red, var(--ctp-ext-red, 243, 139, 168)); + --ctp-maroon: var(--ctp-custom-maroon, var(--ctp-ext-maroon, 235, 160, 172)); + --ctp-peach: var(--ctp-custom-peach, var(--ctp-ext-peach, 250, 179, 135)); + --ctp-yellow: var(--ctp-custom-yellow, var(--ctp-ext-yellow, 249, 226, 175)); + --ctp-green: var(--ctp-custom-green, var(--ctp-ext-green, 166, 227, 161)); + --ctp-teal: var(--ctp-custom-teal, var(--ctp-ext-teal, 148, 226, 213)); + --ctp-sky: var(--ctp-custom-sky, var(--ctp-ext-sky, 137, 220, 235)); + --ctp-sapphire: var(--ctp-custom-sapphire, var(--ctp-ext-sapphire, 116, 199, 236)); + --ctp-blue: var(--ctp-custom-blue, var(--ctp-ext-blue, 135, 176, 249)); + --ctp-lavender: var(--ctp-custom-lavender, var(--ctp-ext-lavender, 180, 190, 254)); + --ctp-text: var(--ctp-custom-text, var(--ctp-ext-text, 198, 208, 245)); + --ctp-subtext1: var(--ctp-custom-subtext1, var(--ctp-ext-subtext1, 179, 188, 223)); + --ctp-subtext0: var(--ctp-custom-subtext0, var(--ctp-ext-subtext0, 161, 168, 201)); + --ctp-overlay2: var(--ctp-custom-overlay2, var(--ctp-ext-overlay2, 142, 149, 179)); + --ctp-overlay1: var(--ctp-custom-overlay1, var(--ctp-ext-overlay1, 123, 129, 157)); + --ctp-overlay0: var(--ctp-custom-overlay0, var(--ctp-ext-overlay0, 105, 109, 134)); + --ctp-surface2: var(--ctp-custom-surface2, var(--ctp-ext-surface2, 86, 89, 112)); + --ctp-surface1: var(--ctp-custom-surface1, var(--ctp-ext-surface1, 67, 70, 90)); + --ctp-surface0: var(--ctp-custom-surface0, var(--ctp-ext-surface0, 49, 50, 68)); + --ctp-base: var(--ctp-custom-base, var(--ctp-ext-base, 30, 30, 46)); + --ctp-mantle: var(--ctp-custom-mantle, var(--ctp-ext-mantle, 24, 24, 37)); + --ctp-crust: var(--ctp-custom-crust, var(--ctp-ext-crust, 17, 17, 27)); +} + +.theme-dark.ctp-mocha-old, .ctp-mocha-old .themed-color-wrapper > .theme-dark { + --ctp-rosewater: var(--ctp-custom-rosewater, var(--ctp-ext-rosewater, 245, 224, 220)); + --ctp-flamingo: var(--ctp-custom-flamingo, var(--ctp-ext-flamingo, 242, 205, 205)); + --ctp-pink: var(--ctp-custom-pink, var(--ctp-ext-pink, 245, 194, 231)); + --ctp-mauve: var(--ctp-custom-mauve, var(--ctp-ext-mauve, 203, 166, 247)); + --ctp-red: var(--ctp-custom-red, var(--ctp-ext-red, 243, 139, 168)); + --ctp-maroon: var(--ctp-custom-maroon, var(--ctp-ext-maroon, 235, 160, 172)); + --ctp-peach: var(--ctp-custom-peach, var(--ctp-ext-peach, 250, 179, 135)); + --ctp-yellow: var(--ctp-custom-yellow, var(--ctp-ext-yellow, 249, 226, 175)); + --ctp-green: var(--ctp-custom-green, var(--ctp-ext-green, 166, 227, 161)); + --ctp-teal: var(--ctp-custom-teal, var(--ctp-ext-teal, 148, 226, 213)); + --ctp-sky: var(--ctp-custom-sky, var(--ctp-ext-sky, 137, 220, 235)); + --ctp-sapphire: var(--ctp-custom-sapphire, var(--ctp-ext-sapphire, 116, 199, 236)); + --ctp-blue: var(--ctp-custom-blue, var(--ctp-ext-blue, 135, 176, 249)); + --ctp-lavender: var(--ctp-custom-lavender, var(--ctp-ext-lavender, 180, 190, 254)); + --ctp-text: var(--ctp-custom-text, var(--ctp-ext-text, 217, 224, 238)); + --ctp-subtext1: var(--ctp-custom-subtext1, var(--ctp-ext-subtext1, 211, 205, 214)); + --ctp-subtext0: var(--ctp-custom-subtext0, var(--ctp-ext-subtext0, 190, 179, 193)); + --ctp-overlay2: var(--ctp-custom-overlay2, var(--ctp-ext-overlay2, 167, 156, 176)); + --ctp-overlay1: var(--ctp-custom-overlay1, var(--ctp-ext-overlay1, 152, 139, 162)); + --ctp-overlay0: var(--ctp-custom-overlay0, var(--ctp-ext-overlay0, 109, 107, 125)); + --ctp-surface2: var(--ctp-custom-surface2, var(--ctp-ext-surface2, 87, 82, 105)); + --ctp-surface1: var(--ctp-custom-surface1, var(--ctp-ext-surface1, 45, 40, 72)); + --ctp-surface0: var(--ctp-custom-surface0, var(--ctp-ext-surface0, 48, 45, 65)); + --ctp-base: var(--ctp-custom-base, var(--ctp-ext-base, 30, 30, 46)); + --ctp-mantle: var(--ctp-custom-mantle, var(--ctp-ext-mantle, 26, 24, 38)); + --ctp-crust: var(--ctp-custom-crust, var(--ctp-ext-crust, 22, 19, 32)); +} + +.theme-dark { + --ctp-rosewater: var(--ctp-custom-rosewater, var(--ctp-ext-rosewater, 245, 224, 220)); + --ctp-flamingo: var(--ctp-custom-flamingo, var(--ctp-ext-flamingo, 242, 205, 205)); + --ctp-pink: var(--ctp-custom-pink, var(--ctp-ext-pink, 245, 194, 231)); + --ctp-mauve: var(--ctp-custom-mauve, var(--ctp-ext-mauve, 203, 166, 247)); + --ctp-red: var(--ctp-custom-red, var(--ctp-ext-red, 243, 139, 168)); + --ctp-maroon: var(--ctp-custom-maroon, var(--ctp-ext-maroon, 235, 160, 172)); + --ctp-peach: var(--ctp-custom-peach, var(--ctp-ext-peach, 250, 179, 135)); + --ctp-yellow: var(--ctp-custom-yellow, var(--ctp-ext-yellow, 249, 226, 175)); + --ctp-green: var(--ctp-custom-green, var(--ctp-ext-green, 166, 227, 161)); + --ctp-teal: var(--ctp-custom-teal, var(--ctp-ext-teal, 148, 226, 213)); + --ctp-sky: var(--ctp-custom-sky, var(--ctp-ext-sky, 137, 220, 235)); + --ctp-sapphire: var(--ctp-custom-sapphire, var(--ctp-ext-sapphire, 116, 199, 236)); + --ctp-blue: var(--ctp-custom-blue, var(--ctp-ext-blue, 135, 176, 249)); + --ctp-lavender: var(--ctp-custom-lavender, var(--ctp-ext-lavender, 180, 190, 254)); + --ctp-text: var(--ctp-custom-text, var(--ctp-ext-text, 198, 208, 245)); + --ctp-subtext1: var(--ctp-custom-subtext1, var(--ctp-ext-subtext1, 179, 188, 223)); + --ctp-subtext0: var(--ctp-custom-subtext0, var(--ctp-ext-subtext0, 161, 168, 201)); + --ctp-overlay2: var(--ctp-custom-overlay2, var(--ctp-ext-overlay2, 142, 149, 179)); + --ctp-overlay1: var(--ctp-custom-overlay1, var(--ctp-ext-overlay1, 123, 129, 157)); + --ctp-overlay0: var(--ctp-custom-overlay0, var(--ctp-ext-overlay0, 105, 109, 134)); + --ctp-surface2: var(--ctp-custom-surface2, var(--ctp-ext-surface2, 86, 89, 112)); + --ctp-surface1: var(--ctp-custom-surface1, var(--ctp-ext-surface1, 67, 70, 90)); + --ctp-surface0: var(--ctp-custom-surface0, var(--ctp-ext-surface0, 49, 50, 68)); + --ctp-base: var(--ctp-custom-base, var(--ctp-ext-base, 30, 30, 46)); + --ctp-mantle: var(--ctp-custom-mantle, var(--ctp-ext-mantle, 24, 24, 37)); + --ctp-crust: var(--ctp-custom-crust, var(--ctp-ext-crust, 17, 17, 27)); +} + +.theme-light { + --ctp-rosewater: var(--ctp-custom-rosewater, var(--ctp-ext-rosewater, 222, 149, 132)); + --ctp-flamingo: var(--ctp-custom-flamingo, var(--ctp-ext-flamingo, 221, 120, 120)); + --ctp-pink: var(--ctp-custom-pink, var(--ctp-ext-pink, 236, 131, 208)); + --ctp-mauve: var(--ctp-custom-mauve, var(--ctp-ext-mauve, 136, 57, 239)); + --ctp-red: var(--ctp-custom-red, var(--ctp-ext-red, 210, 15, 57)); + --ctp-maroon: var(--ctp-custom-maroon, var(--ctp-ext-maroon, 230, 69, 83)); + --ctp-peach: var(--ctp-custom-peach, var(--ctp-ext-peach, 254, 100, 11)); + --ctp-yellow: var(--ctp-custom-yellow, var(--ctp-ext-yellow, 228, 147, 32)); + --ctp-green: var(--ctp-custom-green, var(--ctp-ext-green, 64, 160, 43)); + --ctp-teal: var(--ctp-custom-teal, var(--ctp-ext-teal, 23, 146, 153)); + --ctp-sky: var(--ctp-custom-sky, var(--ctp-ext-sky, 4, 165, 229)); + --ctp-sapphire: var(--ctp-custom-sapphire, var(--ctp-ext-sapphire, 32, 159, 181)); + --ctp-blue: var(--ctp-custom-blue, var(--ctp-ext-blue, 42, 110, 245)); + --ctp-lavender: var(--ctp-custom-lavender, var(--ctp-ext-lavender, 114, 135, 253)); + --ctp-text: var(--ctp-custom-text, var(--ctp-ext-text, 76, 79, 105)); + --ctp-subtext1: var(--ctp-custom-subtext1, var(--ctp-ext-subtext1, 92, 95, 119)); + --ctp-subtext0: var(--ctp-custom-subtext0, var(--ctp-ext-subtext0, 108, 111, 133)); + --ctp-overlay2: var(--ctp-custom-overlay2, var(--ctp-ext-overlay2, 124, 127, 147)); + --ctp-overlay1: var(--ctp-custom-overlay1, var(--ctp-ext-overlay1, 140, 143, 161)); + --ctp-overlay0: var(--ctp-custom-overlay0, var(--ctp-ext-overlay0, 156, 160, 176)); + --ctp-surface2: var(--ctp-custom-surface2, var(--ctp-ext-surface2, 172, 176, 190)); + --ctp-surface1: var(--ctp-custom-surface1, var(--ctp-ext-surface1, 188, 192, 204)); + --ctp-surface0: var(--ctp-custom-surface0, var(--ctp-ext-surface0, 204, 208, 218)); + --ctp-base: var(--ctp-custom-base, var(--ctp-ext-base, 239, 241, 245)); + --ctp-mantle: var(--ctp-custom-mantle, var(--ctp-ext-mantle, 230, 233, 239)); + --ctp-crust: var(--ctp-custom-crust, var(--ctp-ext-crust, 220, 224, 232)); +} + +/*------------------Selecting Accents-------------------*/ +.anuppuccin-accent-toggle.ctp-accent-rosewater { + --ctp-accent: var(--ctp-rosewater); +} + +.theme-light.anuppuccin-accent-toggle.ctp-accent-light-rosewater { + --ctp-accent: var(--ctp-rosewater); +} + +.anp-bold-rosewater { + --anp-bold-color: var(--ctp-rosewater); +} + +.anp-italic-rosewater { + --anp-italic-color: var(--ctp-rosewater); +} + +.anp-highlight-rosewater { + --anp-highlight-color: var(--ctp-rosewater); +} + +.anuppuccin-accent-toggle.ctp-accent-flamingo { + --ctp-accent: var(--ctp-flamingo); +} + +.theme-light.anuppuccin-accent-toggle.ctp-accent-light-flamingo { + --ctp-accent: var(--ctp-flamingo); +} + +.anp-bold-flamingo { + --anp-bold-color: var(--ctp-flamingo); +} + +.anp-italic-flamingo { + --anp-italic-color: var(--ctp-flamingo); +} + +.anp-highlight-flamingo { + --anp-highlight-color: var(--ctp-flamingo); +} + +.anuppuccin-accent-toggle.ctp-accent-pink { + --ctp-accent: var(--ctp-pink); +} + +.theme-light.anuppuccin-accent-toggle.ctp-accent-light-pink { + --ctp-accent: var(--ctp-pink); +} + +.anp-bold-pink { + --anp-bold-color: var(--ctp-pink); +} + +.anp-italic-pink { + --anp-italic-color: var(--ctp-pink); +} + +.anp-highlight-pink { + --anp-highlight-color: var(--ctp-pink); +} + +.anuppuccin-accent-toggle.ctp-accent-mauve { + --ctp-accent: var(--ctp-mauve); +} + +.theme-light.anuppuccin-accent-toggle.ctp-accent-light-mauve { + --ctp-accent: var(--ctp-mauve); +} + +.anp-bold-mauve { + --anp-bold-color: var(--ctp-mauve); +} + +.anp-italic-mauve { + --anp-italic-color: var(--ctp-mauve); +} + +.anp-highlight-mauve { + --anp-highlight-color: var(--ctp-mauve); +} + +.anuppuccin-accent-toggle.ctp-accent-red { + --ctp-accent: var(--ctp-red); +} + +.theme-light.anuppuccin-accent-toggle.ctp-accent-light-red { + --ctp-accent: var(--ctp-red); +} + +.anp-bold-red { + --anp-bold-color: var(--ctp-red); +} + +.anp-italic-red { + --anp-italic-color: var(--ctp-red); +} + +.anp-highlight-red { + --anp-highlight-color: var(--ctp-red); +} + +.anuppuccin-accent-toggle.ctp-accent-maroon { + --ctp-accent: var(--ctp-maroon); +} + +.theme-light.anuppuccin-accent-toggle.ctp-accent-light-maroon { + --ctp-accent: var(--ctp-maroon); +} + +.anp-bold-maroon { + --anp-bold-color: var(--ctp-maroon); +} + +.anp-italic-maroon { + --anp-italic-color: var(--ctp-maroon); +} + +.anp-highlight-maroon { + --anp-highlight-color: var(--ctp-maroon); +} + +.anuppuccin-accent-toggle.ctp-accent-peach { + --ctp-accent: var(--ctp-peach); +} + +.theme-light.anuppuccin-accent-toggle.ctp-accent-light-peach { + --ctp-accent: var(--ctp-peach); +} + +.anp-bold-peach { + --anp-bold-color: var(--ctp-peach); +} + +.anp-italic-peach { + --anp-italic-color: var(--ctp-peach); +} + +.anp-highlight-peach { + --anp-highlight-color: var(--ctp-peach); +} + +.anuppuccin-accent-toggle.ctp-accent-yellow { + --ctp-accent: var(--ctp-yellow); +} + +.theme-light.anuppuccin-accent-toggle.ctp-accent-light-yellow { + --ctp-accent: var(--ctp-yellow); +} + +.anp-bold-yellow { + --anp-bold-color: var(--ctp-yellow); +} + +.anp-italic-yellow { + --anp-italic-color: var(--ctp-yellow); +} + +.anp-highlight-yellow { + --anp-highlight-color: var(--ctp-yellow); +} + +.anuppuccin-accent-toggle.ctp-accent-green { + --ctp-accent: var(--ctp-green); +} + +.theme-light.anuppuccin-accent-toggle.ctp-accent-light-green { + --ctp-accent: var(--ctp-green); +} + +.anp-bold-green { + --anp-bold-color: var(--ctp-green); +} + +.anp-italic-green { + --anp-italic-color: var(--ctp-green); +} + +.anp-highlight-green { + --anp-highlight-color: var(--ctp-green); +} + +.anuppuccin-accent-toggle.ctp-accent-teal { + --ctp-accent: var(--ctp-teal); +} + +.theme-light.anuppuccin-accent-toggle.ctp-accent-light-teal { + --ctp-accent: var(--ctp-teal); +} + +.anp-bold-teal { + --anp-bold-color: var(--ctp-teal); +} + +.anp-italic-teal { + --anp-italic-color: var(--ctp-teal); +} + +.anp-highlight-teal { + --anp-highlight-color: var(--ctp-teal); +} + +.anuppuccin-accent-toggle.ctp-accent-sky { + --ctp-accent: var(--ctp-sky); +} + +.theme-light.anuppuccin-accent-toggle.ctp-accent-light-sky { + --ctp-accent: var(--ctp-sky); +} + +.anp-bold-sky { + --anp-bold-color: var(--ctp-sky); +} + +.anp-italic-sky { + --anp-italic-color: var(--ctp-sky); +} + +.anp-highlight-sky { + --anp-highlight-color: var(--ctp-sky); +} + +.anuppuccin-accent-toggle.ctp-accent-sapphire { + --ctp-accent: var(--ctp-sapphire); +} + +.theme-light.anuppuccin-accent-toggle.ctp-accent-light-sapphire { + --ctp-accent: var(--ctp-sapphire); +} + +.anp-bold-sapphire { + --anp-bold-color: var(--ctp-sapphire); +} + +.anp-italic-sapphire { + --anp-italic-color: var(--ctp-sapphire); +} + +.anp-highlight-sapphire { + --anp-highlight-color: var(--ctp-sapphire); +} + +.anuppuccin-accent-toggle.ctp-accent-blue { + --ctp-accent: var(--ctp-blue); +} + +.theme-light.anuppuccin-accent-toggle.ctp-accent-light-blue { + --ctp-accent: var(--ctp-blue); +} + +.anp-bold-blue { + --anp-bold-color: var(--ctp-blue); +} + +.anp-italic-blue { + --anp-italic-color: var(--ctp-blue); +} + +.anp-highlight-blue { + --anp-highlight-color: var(--ctp-blue); +} + +.anuppuccin-accent-toggle.ctp-accent-lavender { + --ctp-accent: var(--ctp-lavender); +} + +.theme-light.anuppuccin-accent-toggle.ctp-accent-light-lavender { + --ctp-accent: var(--ctp-lavender); +} + +.anp-bold-lavender { + --anp-bold-color: var(--ctp-lavender); +} + +.anp-italic-lavender { + --anp-italic-color: var(--ctp-lavender); +} + +.anp-highlight-lavender { + --anp-highlight-color: var(--ctp-lavender); +} + +/*------------------Actual Configs--------------------*/ +.anuppuccin-accent-toggle { + --color-accent: rgb(var(--ctp-accent)); + --color-accent-1: rgb(var(--ctp-accent)); + --color-accent-2: rgba(var(--ctp-accent), 0.9); + --text-selection: rgba(var(--ctp-accent), 0.25); + --interactive-accent: rgb(var(--ctp-accent)); + --interactive-accent-hover: rgba(var(--ctp-accent), 0.9); + --text-accent: rgb(var(--ctp-accent)); + --text-accent-hover: rgb(var(--ctp-accent)); + --text-highlight-bg: rgba(var(--ctp-accent), 0.4); + --text-highlight-bg-active: rgba(var(--ctp-accent), 0.6); + --interactive-accent: rgb(var(--ctp-accent)); + --interactive-accent-rgb: var(--ctp-accent); + --interactive-accent-hover: rgb(var(--ctp-accent)); + --blockquote-border-color: rgb(var(--ctp-accent)); + --background-modifier-active: rgba(var(--ctp-accent), 0.1); + --background-modifier-active-hover: rgba(var(--ctp-accent), 0.15); + --link-unresolved-decoration-color: rgba(var(--ctp-accent), 0.3); + --tag-background: rgba(var(--ctp-accent), 0.1); + --tag-background-hover: rgba(var(--ctp-accent), 0.2); + --tag-border-color: rgba(var(--ctp-accent), 0.15); + --tag-border-color-hover: rgba(var(--ctp-accent), 0.15); + --nav-item-background-selected: rgba(var(--ctp-accent), 0.2); + --heading-formatting: rgb(var(--ctp-accent)); + --icon-color-focused: rgb(var(--ctp-accent)); +} + +.theme-dark, +.theme-light { + --mono-rgb-0: var(--ctp-crust); + --mono-rgb-100: var(--ctp-text); + --color-red-rgb: var(--ctp-red); + --color-red: rgb(var(--ctp-red)); + --color-green-rgb: var(--ctp-green); + --color-green: rgb(var(--ctp-green)); + --color-orange-rgb: var(--ctp-peach); + --color-orange: rgb(var(--ctp-peach)); + --color-yellow-rgb: var(--ctp-yellow); + --color-yellow: rgb(var(--ctp-yellow)); + --color-cyan-rgb: var(--ctp-sky); + --color-cyan: rgb(var(--ctp-sky)); + --color-blue-rgb: var(--ctp-blue); + --color-blue: rgb(var(--ctp-blue)); + --color-purple-rgb: var(--ctp-lavender); + --color-purple: rgb(var(--ctp-lavender)); + --color-pink-rgb: var(--ctp-pink); + --color-pink: rgb(var(--ctp-pink)); + --color-base-00: rgb(var(--ctp-crust)); + --color-base-10: rgb(var(--ctp-mantle)); + --color-base-20: rgb(var(--ctp-base)); + --color-base-25: rgb(var(--ctp-surface0)); + --color-base-30: rgb(var(--ctp-surface1)); + --color-base-35: rgb(var(--ctp-surface2)); + --color-base-40: rgb(var(--ctp-overlay0)); + --color-base-50: rgb(var(--ctp-overlay1)); + --color-base-60: rgb(var(--ctp-overlay2)); + --color-base-70: rgb(var(--ctp-subtext0)); + --color-base-100: rgb(var(--ctp-text)); + --text-highlight-bg: rgba(var(--ctp-yellow), 0.2); + --text-highlight-bg-active: rgba(var(--ctp-yellow), 0.4); + --input-shadow: inset 0 0.5px 0.5px 0.5px rgba(var(255, 255, 255), 0.09), + 0 2px 4px 0 rgba(var(--ctp-crust), 0.15), + 0 1px 1.5px 0 rgba(var(--ctp-crust), 0.1), + 0 1px 2px 0 rgba(var(--ctp-crust), 0.2), 0 0 0 0 transparent; + --input-shadow-hover: inset 0 0.5px 1px 0.5px rgba(var(255, 255, 255), 0.16), + 0 2px 3px 0 rgba(var(--ctp-crust), 0.3), + 0 1px 1.5px 0 rgba(var(--ctp-crust), 0.2), + 0 1px 2px 0 rgba(var(--ctp-crust), 0.4), 0 0 0 0 transparent; + --shadow-s: 0px 1px 2px rgba(var(--ctp-crust), 0.121), + 0px 3.4px 6.7px rgba(var(--ctp-crust), 0.179), + 0px 15px 30px rgba(var(--ctp-crust), 0.3); + --shadow-l: 0px 1.8px 7.3px rgba(var(--ctp-crust), 0.071), + 0px 6.3px 24.7px rgba(var(--ctp-crust), 0.112), + 0px 30px 90px rgba(var(--ctp-crust), 0.2); + --background-primary: rgb(var(--ctp-base)); + --background-primary-alt: rgb(var(--ctp-mantle)); + --background-secondary: rgb(var(--ctp-mantle)); + --background-secondary-alt: rgb(var(--ctp-crust)); + --background-modifier-hover: rgba(var(--ctp-text), 0.075); + --background-modifier-form-field: rgba(var(--ctp-crust), 0.3); + --background-modifier-success: rgba(var(--ctp-green), 1); + --background-modifier-success-hover: rgba(var(--ctp-green), 0.9); + --background-modifier-success-rgb: var(--ctp-green); + --background-modifier-error: rgba(var(--ctp-red), 1); + --background-modifier-error-rgb: var(--ctp-red); + --background-modifier-error-hover: rgba(var(--ctp-red), 0.9); + --background-modifier-message: rgba(var(--ctp-crust), 0.9); + --modal-border-color: rgb(var(--ctp-surface0)); + --text-normal: rgb(var(--ctp-text)); + --text-muted: rgb(var(--ctp-overlay2)); + --text-muted-rgb: var(--ctp-overlay2); + --text-faint: rgb(var(--ctp-subtext0)); + --text-error: rgb(var(--ctp-red)); + --text-error-hover: rgba(var(--ctp-red), 0.8); + --text-success: rgb(var(--ctp-green)); + --text-on-accent: rgb(var(--ctp-base)); + --interactive-normal: rgb(var(--ctp-surface0)); + --interactive-hover: rgb(var(--ctp-surface1)); + --interactive-success: rgb(var(--ctp-green)); + --workspace-background-translucent: rgba(var(--ctp-crust), 0.6); + --blockquote-background-color: rgba(var(--ctp-crust), 0.5); + --width-image-gallery: 200px; + --min-width-image: 50%; + --max-width-image: 90%; + --drag-ghost-background: rgb(var(--ctp-text)); + --drag-ghost-text-color: rgb(var(--ctp-crust)); + --nav-indentation-guide-color: rgb(var(--ctp-overlay0)); + --titlebar-text-color-focused: var(--color-accent); + --callout-title-padding: var(--size-4-2); + --table-border-width: var(--anp-table-thickness, 1px); + --icon-color-focused: var(--color-accent); + --embed-block-shadow-hover: none; +} + +.theme-dark { + color-scheme: dark; + --highlight-mix-blend-mode: none; + --background-modifier-border: rgb(var(--ctp-surface0)); + --background-modifier-border-hover: rgb(var(--ctp-surface1)); + --background-modifier-border-focus: rgb(var(--ctp-surface2)); + --anp-speech-bubble-opacity: var(--anp-sp-op-dark, 0.9); + --background-modifier-cover: rgba(var(--ctp-mantle), 0.4); +} +.theme-dark.theme-dark { + --canvas-color: var(--ctp-overlay0); +} + +.theme-light { + color-scheme: light; + --highlight-mix-blend-mode: none; + --background-modifier-border: rgb(var(--ctp-surface1)); + --background-modifier-border-hover: rgb(var(--ctp-surface2)); + --background-modifier-border-focus: rgb(var(--ctp-overlay0)); + --anp-speech-bubble-opacity: var(--anp-sp-op-light, 0.5); + --background-modifier-cover: #00000022; +} +.theme-light.theme-light { + --canvas-color: var(--ctp-overlay0); +} + +body { + --anp-rainbow-folder-bg-opacity: 1; + --anp-rainbow-folder-border-opacity: 1; + --anp-rainbow-folder-collapse-border-custom: #00000044; + --anp-preview-width-pct: 95%; + --anp-preview-width-max: 800px; + --anp-header-margin-value: 15px; + --anp-header-font: "Noto Serif"; + --tab-stacked-pane-width: calc(var(--anp-tab-stacked-pane-width, 1) * var(--file-line-width)); + --anp-table-width-pct: 100%; + --code-background: var(--anp-code-bg-color, var(--background-secondary-alt)); + --canvas-color: var(--ctp-overlay2); + --card-background-color: rgb(var(--ctp-crust)); + --card-foreground-color: rgb(var(--ctp-base)); + --tab-inactive-color: rgb(var(--ctp-mantle)); + --code-normal: var(--anp-code-text-color, var(--text-normal)); + --callout-padding: 0; + --callout-title-padding: var(--size-4-2); + --callout-content-padding: var(--size-4-2); + --background-modifier-active: hsla(var(--color-accent-hsl), 0.1); + --pdf-background: var(--background-primary); + --pdf-dark-opacity: 1; + --pdf-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), 0 2px 8px transparent; + --pdf-sidebar-background: var(--background-primary); + --pdf-thumbnail-shadow: 0 0 0 1px rgba(0, 0, 0, 0.15), 0 2px 8px transparent; +} +body.theme-light { + --anp-background-image: var(--anp-background-image-light); + --anp-custom-bg-brightness: var(--anp-custom-bg-brightness-light); + --anp-custom-bg-blur: var(--anp-custom-bg-blur-light); + --anp-custom-bg-card-fg-opacity: var(--anp-custom-bg-card-fg-opacity-light); +} +body.theme-dark { + --anp-background-image: var(--anp-background-image-dark); + --anp-custom-bg-brightness: var(--anp-custom-bg-brightness-dark); + --anp-custom-bg-blur: var(--anp-custom-bg-blur-dark); + --anp-custom-bg-card-fg-opacity: var(--anp-custom-bg-card-fg-opacity-dark); +} + +/*=============================================================== +* CORE +*===============================================================*/ +/*======== EDITOR ===============*/ +/*-Highlight current line-*/ +.anp-current-line .markdown-source-view .cm-active.cm-line { + background-color: rgba(var(--ctp-surface1), 0.4); +} + +.anp-current-line-border .markdown-source-view .cm-active.cm-line { + border-left: 2px solid var(--interactive-accent); + margin-left: -2px !important; + background-color: rgba(var(--ctp-surface1), 0.4); +} + +.anp-current-line-border-only .markdown-source-view .cm-active.cm-line::before { + content: ""; + position: absolute; + top: 0; + bottom: 0; + left: -1.5rem; + width: 2px; + background-color: rgba(var(--interactive-accent-rgb), 0.3); +} +.anp-current-line-border-only .markdown-source-view .cm-focused .cm-active.cm-line::before { + background-color: var(--interactive-accent); +} + +/*-Custom editor font-*/ +.markdown-source-view:not(.is-live-preview) { + --font-text: var(--anp-editor-font-source, var(--font-text-override)), var(--font-text-theme), var(--font-interface); + --h1-font: var(--font-text, inherit); + --h2-font: var(--font-text, inherit); + --h3-font: var(--font-text, inherit); + --h4-font: var(--font-text, inherit); + --h5-font: var(--font-text, inherit); + --h6-font: var(--font-text, inherit); +} + +.markdown-source-view.is-live-preview { + --font-text: var(--anp-editor-font-lp, var(--font-text-override)), var(--font-text-theme), var(--font-interface); +} + +.markdown-preview-view { + --font-text: var(--anp-editor-font-rv, var(--font-text-override)), var(--font-text-theme), var(--font-interface); +} + +/*-Highlighted gutter number-*/ +.cm-lineNumbers .cm-gutterElement.cm-active { + color: var(--interactive-accent); +} + +/*-ZWSP Highlight-*/ +.ͼ2 .cm-specialChar { + color: rgb(var(--ctp-red)); +} + +/*-Block edit button-*/ +.markdown-source-view.mod-cm6 .edit-block-button { + background-color: var(--background-secondary); + cursor: pointer; + border: 1px solid var(--background-modifer-border); +} +.markdown-source-view.mod-cm6 .edit-block-button:hover { + background-color: var(--background-secondary); + background-color: var(--background-secondary); + opacity: 1; +} + +.markdown-source-view.mod-cm6 .cm-embed-block:hover .edit-block-button:hover { + background-color: var(--background-secondary); + border: 1px solid var(--background-modifer-border); + opacity: 1; +} + +/*-Vim Terminal-*/ +.ͼ2 .cm-panels-bottom { + border-top: 1px solid rgb(var(--ctp-surface1)); +} +.ͼ2 .cm-panels-bottom input { + background-color: transparent; + font-family: var(--font-monospace); + width: 100%; +} +.ͼ2 .cm-panels-bottom input:hover, .ͼ2 .cm-panels-bottom input:focus, .ͼ2 .cm-panels-bottom input:focus-visible { + border: none; + box-shadow: none; +} + +.ͼp .cm-vim-panel { + font-family: var(--font-monospace); +} + +/*======== CURSOR MODS ==========*/ +.workspace-tab-header, +.clickable-icon, +.dropdown, +.checkbox-container, +input.slider, +.task-list-item-checkbox, +.vertical-tab-nav-item, +.nav-folder-title, +.nav-file-title, +.tree-item, +.tree-item-self.is-clickable, +.workspace-tab-header-status-icon, +.workspace-tab-header-inner-close-button, +.CodeMirror-foldmarker, +.CodeMirror-foldgutter-open, +.CodeMirror-foldgutter-folded, +.markdown-source-view.mod-cm6 .edit-block-button, +.empty-state-action, +.setting-hotkey-icon, +.setting-add-hotkey-button, +.setting-restore-hotkey-button, +.spellchecker-dictionary-remove-button, +.community-item, +.status-bar-item.mod-clickable, +.titlebar-button, +.button, +.frontmatter-container .frontmatter-container-header, +.card.u-clickable, +.list-item-part.clickable-icon, +.u-clickable, +.document-search-close-button, +.markdown-preview-view .collapse-indicator, +.markdown-source-view.mod-cm6 .cm-fold-indicator .collapse-indicator, +.input[type=color], +.menu-item, +.modal-checkbox-label, +.view-header-breadcrumb, +.nav-action-button, +.tree-item-inner, +.callout.is-collapsible .callout-title, +.modal-close-button { + cursor: var(--anp-cursor, var(--cursor)); +} + +/*======== FILE PREVIEW =========*/ +/* FILE PREVIEW MARGINS */ +.anp-toggle-preview .markdown-preview-section { + width: var(--anp-preview-width-pct); + margin: 0 auto; +} + +/* HIGHLIGHTS */ +.markdown-rendered .search-highlight > div { + box-shadow: none; + opacity: 0.3; + background-color: rgba(var(--ctp-text), 0.4); + mix-blend-mode: var(--highlight-mix-blend-mode); + border-radius: 2px; +} + +.markdown-rendered .search-highlight > div.is-active { + box-shadow: 0 0 0px 2px rgba(var(--ctp-yellow), 0.5); + background-color: rgba(var(--ctp-yellow), 0.2); + opacity: 1; +} + +.cm-s-obsidian span.obsidian-search-match-highlight { + box-shadow: 0 0 0px 2px rgba(var(--ctp-yellow), 0.5); + background-color: rgba(var(--ctp-yellow), 0.2); + mix-blend-mode: var(--highlight-mix-blend-mode); + border-radius: 2px; +} + +/* FONT WEIGHTS */ +.markdown-preview-view { + font-weight: var(--anp-font-preview-wt, normal); +} + +.markdown-source-view { + font-weight: var(--anp-font-editor-wt, normal); +} + +.is-live-preview { + font-weight: var(--anp-font-live-preview-wt, normal); +} + +/*======== GRAPH ================*/ +.workspace-split:not(.mod-root) .graph-controls.is-close, +.workspace-split:not(.mod-root) .graph-controls, +.workspace-split:not(.mod-root) .graph-controls:not(.is-close) { + background-color: rgb(var(--ctp-crust)); +} + +.anp-card-layout .workspace-split:not(.mod-root) .graph-controls.is-close, +.anp-card-layout .workspace-split:not(.mod-root) .graph-controls, +.anp-card-layout .workspace-split:not(.mod-root) .graph-controls:not(.is-close), +.anp-border-layout .workspace-split:not(.mod-root) .graph-controls.is-close, +.anp-border-layout .workspace-split:not(.mod-root) .graph-controls, +.anp-border-layout .workspace-split:not(.mod-root) .graph-controls:not(.is-close), +.workspace-leaf .graph-controls.is-close, +.workspace-leaf .graph-controls, +.workspace-leaf .graph-controls:not(.is-close) { + background-color: rgb(var(--ctp-mantle)); +} + +/*======== RTL ==================*/ +.markdown-rendered.rtl .list-bullet { + float: right; + margin-right: -12px; +} +.anp-button-metadata-toggle .markdown-rendered.rtl .frontmatter-container .frontmatter-container-header { + left: unset; + right: calc(100% - 32px); +} +.anp-button-metadata-toggle .markdown-rendered.rtl .frontmatter-container .frontmatter-container-header:after { + margin-left: unset; + margin-right: 7px; +} +.markdown-rendered.rtl blockquote { + border-right: var(--blockquote-border-thickness) solid var(--blockquote-border-color); + border-left: none; +} +.markdown-rendered.rtl .collapse-indicator { + float: right; + margin-left: unset; + margin-right: -22px; +} + +/*======== PRINT ================*/ +.anp-print .print.theme-light, +.anp-print .print.theme-dark { + --ctp-crust: inherit; + --ctp-mantle: inherit; + --ctp-base: inherit; + --ctp-surface0: inherit; + --ctp-surface1: inherit; + --ctp-surface2: inherit; + --ctp-overlay0: inherit; + --ctp-overlay1: inherit; + --ctp-overlay2: inherit; + --ctp-subtext0: inherit; + --ctp-subtext1: inherit; + --ctp-text: inherit; + --ctp-rosewater: inherit; + --ctp-flamingo: inherit; + --ctp-red: inherit; + --ctp-maroon: inherit; + --ctp-mauve: inherit; + --ctp-pink: inherit; + --ctp-peach: inherit; + --ctp-yellow: inherit; + --ctp-green: inherit; + --ctp-teal: inherit; + --ctp-sky: inherit; + --ctp-sapphire: inherit; + --ctp-blue: inherit; + --ctp-lavender: inherit; +} + +@media print { + .anp-print .print { + --ctp-crust: inherit; + --ctp-mantle: inherit; + --ctp-base: inherit; + --ctp-surface0: inherit; + --ctp-surface1: inherit; + --ctp-surface2: inherit; + --ctp-overlay0: inherit; + --ctp-overlay1: inherit; + --ctp-overlay2: inherit; + --ctp-subtext0: inherit; + --ctp-subtext1: inherit; + --ctp-text: inherit; + --ctp-rosewater: inherit; + --ctp-flamingo: inherit; + --ctp-red: inherit; + --ctp-maroon: inherit; + --ctp-mauve: inherit; + --ctp-pink: inherit; + --ctp-peach: inherit; + --ctp-yellow: inherit; + --ctp-green: inherit; + --ctp-teal: inherit; + --ctp-sky: inherit; + --ctp-sapphire: inherit; + --ctp-blue: inherit; + --ctp-lavender: inherit; + } + .anp-print .print, + body.anp-print, + .anp-print .markdown-rendered, + :root:has(.anp-print), + :root { + background-color: rgb(var(--ctp-base)); + } + .anp-print .print .markdown-preview-view { + color: rgb(var(--ctp-text)); + } +} +/*======== PDF ==================*/ +/* PDF Blending */ +.theme-dark.anp-pdf-blend-toggle-dark, +.theme-light.anp-pdf-blend-toggle-light { + --pdf-background: var(--background-secondary); + --pdf-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 8px transparent; + --pdf-thumbnail-shadow: 0 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 8px transparent; +} +.theme-dark.anp-pdf-blend-toggle-dark .pdf-viewer .canvasWrapper, +.theme-dark.anp-pdf-blend-toggle-dark .pdf-thumbnail-view .thumbnailImage, +.theme-light.anp-pdf-blend-toggle-light .pdf-viewer .canvasWrapper, +.theme-light.anp-pdf-blend-toggle-light .pdf-thumbnail-view .thumbnailImage { + filter: invert(1) hue-rotate(180deg); + mix-blend-mode: screen; +} +.theme-dark.anp-pdf-blend-toggle-dark .pdf-viewer, +.theme-light.anp-pdf-blend-toggle-light .pdf-viewer { + background-color: var(--pdf-background); +} +.theme-dark.anp-pdf-blend-toggle-dark .pdf-viewer .page, +.theme-light.anp-pdf-blend-toggle-light .pdf-viewer .page { + background-color: var(--background-primary); + border-color: var(--pdf-background); +} + +/* Give accent to selected text */ +.textLayer ::selection { + background: var(--color-accent); +} + +.canvas-card-menu { + box-shadow: none; + border: 1px solid var(--background-modifier-border); + background-color: var(--background-secondary); +} +.canvas-card-menu .canvas-card-menu-button svg { + fill: var(--background-secondary); +} +.canvas-card-menu .canvas-card-menu-button:hover { + color: var(--text-normal); +} + +.canvas-controls button { + background-color: var(--background-secondary); +} +.canvas-controls button:hover { + filter: brightness(95%); +} + +.anp-canvas-dark-bg .canvas-wrapper { + background-color: var(--background-secondary); +} +.anp-canvas-dark-bg .canvas-controls button, +.anp-canvas-dark-bg .canvas-card-menu { + background-color: var(--background-primary); +} +.anp-canvas-dark-bg .canvas-card-menu .canvas-card-menu-button svg { + fill: var(--background-primary); +} + +.anuppuccin-accent-toggle .canvas-selection { + background-color: rgba(var(--ctp-accent), 0.1); + border: 2px solid var(--color-accent); +} + +.canvas-node.is-themed .canvas-node-label { + color: rgb(var(--canvas-color)); +} + +.canvas-node-placeholder { + color: rgb(var(--canvas-color)); +} +.canvas-node-placeholder::after { + top: 0; + bottom: 0; + right: 0; + left: 0; +} + +.anuppuccin-accent-toggle .canvas-placeholder-message { + background: rgba(var(--ctp-accent), 0.1); +} + +/*-Slider checkboxes-*/ +.checkbox-container.is-enabled:after { + background-color: var(--background-primary); +} + +/*-Notices-*/ +.notice { + color: rgb(var(--ctp-text)); +} + +/*-Recolor copy code button-*/ +.markdown-rendered button.copy-code-button { + background-color: rgb(var(--ctp-crust)); +} + +/*-Banners are always sharp-*/ +.obsidian-banner-wrapper .obsidian-banner .banner-image.banner-image.banner-image.banner-image { + border-radius: 0px; +} + +/*-Padding for banner pages-*/ +.obsidian-banner-wrapper .frontmatter-container { + margin-top: 20px; +} + +/*-Disable scrollbars-*/ +.anp-toggle-scrollbars *::-webkit-scrollbar { + display: none; +} + +/*-Smoother popover transition-*/ +.popover.hover-popover.is-loaded { + animation: fade 0.2s; +} + +.popover .markdown-embed-link { + --icon-color: var(--text-normal); + --icon-color-hover: var(--text-faint); +} + +/*-Recolor tooltips-*/ +.tooltip { + color: rgb(var(--text)); +} + +/*-Disable tooltips-*/ +.anp-tooltip-toggle .tooltip { + display: none; +} + +/*-Tab icons-*/ +.mod-left-split .workspace-tab-header.has-active-menu, +.mod-right-split .workspace-tab-header.has-active-menu, +.mod-left-split .workspace-tab-header.is-active, +.mod-right-split .workspace-tab-header.is-active { + background-color: var(--background-modifier-active); +} + +.mod-left-split .workspace-tab-header.has-active-menu:hover, +.mod-right-split .workspace-tab-header.has-active-menu:hover, +.mod-left-split .workspace-tab-header.is-active:hover, +.mod-right-split .workspace-tab-header.is-active:hover { + background-color: var(--background-modifier-active-hover); +} + +.anp-hide-status-bar .status-bar { + display: none; +} + +.workspace, +.horizontal-main-container, +.anp-card-layout .mod-vertical .workspace-tabs, +.anp-border-layout .mod-vertical .workspace-tabs { + background-color: var(--tab-container-background); +} + +/* Align file extension labels to the right in sidebar */ +.nav-file-title-content { + flex-grow: var(--anp-file-label-align); +} + +.nav-folder-title-content { + flex-grow: 1; +} + +/* Hide empty frontmatter (uses :has()) */ +.frontmatter-container:not(:has(.frontmatter-section)) { + display: none; +} + +/* Inline title visibility */ +.inline-title { + display: var(--anp-inline-title-vis, block); +} + +/* Search page hover item fix */ +.search-result-file-match:hover { + background-color: var(--background-modifier-hover); +} + +.anuppuccin-accent-toggle .drag-ghost-hidden:before { + background-color: rgba(var(--ctp-accent), 0.3); +} + +/*-Suggestion selected item bg fix-*/ +.suggestion-item.is-selected { + background-color: rgba(var(--ctp-text), 0.075); +} + +.mod-community-theme .modal-content .community-modal-details .community-modal-info summary h1:first-child, +.mod-community-theme .modal-content .community-modal-details .community-modal-info summary h2:first-child, +.mod-community-theme .modal-content .community-modal-details .community-modal-info summary h3:first-child, +.mod-community-theme .modal-content .community-modal-details .community-modal-info summary h4:first-child, +.mod-community-theme .modal-content .community-modal-details .community-modal-info summary h5:first-child, +.mod-community-theme .modal-content .community-modal-details .community-modal-info summary h6:first-child { + margin-block: 0; + display: inline; +} + +.modal.mod-settings, .modal.mod-community-theme, .modal.kanban-plugin__board-settings-modal, .modal.mod-community-plugin { + --h1-font: var(--font-interface); + --h2-font: var(--font-interface); + --h3-font: var(--font-interface); + --h4-font: var(--font-interface); + --h5-font: var(--font-interface); + --h6-font: var(--font-interface); + --h1-weight: 600; + --h1-color: var(--text-normal); + --h2-color: var(--text-normal); + --h3-color: var(--text-normal); + --h4-color: var(--text-normal); + --h5-color: var(--text-normal); + --h6-color: var(--text-normal); +} + +body { + --tab-stacked-header-width: var(--anp-stacked-header-width, 40px); +} + +.anp-card-layout .workspace .mod-root .workspace-tabs.mod-stacked .workspace-tab-container .workspace-leaf { + background-color: var(--background-primary); +} + +body.is-translucent { + background-color: transparent; + --workspace-background-translucent: rgba(var(--ctp-crust), var(--anp-translucency-opacity)); +} + +.is-translucent:not(.is-fullscreen) { + --nav-collapse-icon-color: rgba(var(--mono-rgb-100), 0.3); + --nav-collapse-icon-color-collapsed: rgba(var(--mono-rgb-100), 0.3); + --divider-color: rgba(var(--ctp-surface0), 0.15); +} + +.is-translucent:not(.is-fullscreen) .workspace-ribbon.mod-left, +.is-translucent:not(.is-fullscreen) .workspace-tabs, +.is-translucent:not(.is-fullscreen) .mod-left-split .workspace-tab-header-container, +.is-translucent:not(.is-fullscreen) .mod-right-split .workspace-tab-header-container, +.is-translucent:not(.is-fullscreen) .mod-top .workspace-tab-header-container, +.is-translucent:not(.is-fullscreen) .workspace-tabs .workspace-leaf, +.is-translucent:not(.is-fullscreen) .workspace-ribbon.mod-left:before, +.is-translucent:not(.is-fullscreen) .workspace-split.mod-root, +.is-translucent:not(.is-fullscreen) .workspace-split.mod-root.mod-left-split .view-content, +.is-translucent:not(.is-fullscreen) .view-header, +.is-translucent:not(.is-fullscreen) .horizontal-main-container { + background-color: transparent; +} +.is-translucent:not(.is-fullscreen) .view-header-title-container:not(.mod-at-end):after { + background-image: none; +} +.is-translucent:not(.is-fullscreen) .workspace-tabs.mod-stacked .workspace-tab-header, +.is-translucent:not(.is-fullscreen) .workspace-tabs.mod-stacked .view-header { + background-color: var(--background-primary); +} + +.is-translucent .workspace { + background-color: transparent; +} + +.is-translucent .workspace-split.mod-left-split.is-sidedock-collapsed .workspace-tabs, +.is-translucent .workspace-split.mod-right-split.is-sidedock-collapsed .workspace-tabs { + visibility: hidden; +} + +.is-translucent.anp-card-layout, +.is-translucent.anp-border-layout { + --card-background-color: transparent; +} + +.anp-autohide-titlebar:not(.is-mobile) { + --title-bar-delay: 150ms; + --title-bar-duration: 300ms; + --title-bar-target-translate-y: 18px; + --title-bar-translate-y: 40px; + /** + * This should fix the drag/click titlebar issue. + * + * Invisible boxes are not rendered (as if they were fully transparent), + * cannot be interacted with (and behave as if they had pointer-events: none), + * and are removed from navigation (similar to display: none). + * + * @see: https://drafts.csswg.org/css-display/#visibility + */ +} +.anp-autohide-titlebar:not(.is-mobile) .workspace-leaf-content .view-header { + margin-top: calc(var(--title-bar-translate-y) * -1); + position: relative; + transition: transform var(--title-bar-duration) var(--title-bar-delay); +} +.anp-autohide-titlebar:not(.is-mobile) .workspace-leaf-content .view-header::before { + bottom: calc(var(--title-bar-target-translate-y) * -1); + content: ""; + left: 0; + position: absolute; + top: 0; + transition: transform var(--title-bar-duration) var(--title-bar-delay); + width: 100%; + z-index: 0; +} +.anp-autohide-titlebar:not(.is-mobile) .workspace-leaf-content .view-header:is(:hover, :focus-within)::before { + transform: translateY(var(--title-bar-target-translate-y)); +} +.anp-autohide-titlebar:not(.is-mobile) .workspace-leaf-content .view-header:is(:hover, :focus-within), +.anp-autohide-titlebar:not(.is-mobile) .workspace-leaf-content .view-header:is(:hover, :focus-within) + .view-content { + transform: translateY(var(--title-bar-translate-y)); +} +.anp-autohide-titlebar:not(.is-mobile) .workspace-leaf-content .view-content { + transition: transform var(--title-bar-duration) var(--title-bar-delay); +} +.anp-autohide-titlebar:not(.is-mobile) .workspace-leaf-content .view-header-title { + --file-header-font-size: var(--font-ui-medium); +} +.anp-autohide-titlebar:not(.is-mobile) .workspace-leaf-content .view-header > div { + transition: visibility var(--title-bar-duration) var(--title-bar-delay); + visibility: visible; + z-index: 1; +} +.anp-autohide-titlebar:not(.is-mobile) .workspace-leaf-content .view-header:not(:hover, :focus-within) > div { + visibility: hidden; +} + +body:not(.anp-alternate-tab-toggle):not(.anp-disable-newtab-align) .workspace-split.mod-vertical .workspace-tab-header-spacer { + display: none; +} +body:not(.anp-alternate-tab-toggle):not(.anp-disable-newtab-align) .workspace-split.mod-vertical .workspace-tab-header-new-tab { + margin-left: auto; +} + +.anp-safari-tab-toggle .workspace-split.mod-vertical.mod-root { + /*-----VARIABLES---------*/ + --tab-background-inactive: var(--background-secondary-alt); + --tab-background-active: var(--background-primary); + --tab-background-inactive-hover: var(--background-primary-secondary); + --tab-text-color: var(--text-faint); + --tab-text-color-active: var(--text-muted); + --tab-text-color-focused: var(--text-muted); + --tab-text-color-focused-active: var(--text-muted); + --tab-text-color-focused-highlighted: var(--text-accent); + --tab-text-color-focused-active-current: var(--text-accent); + --tab-divider-color: var(--background-modifier-border-hover); + --tab-width: 200px; + --tab-max-width: 320px; + /*-------CONFIGS---------*/ +} +.anp-safari-tab-toggle .workspace-split.mod-vertical.mod-root .workspace-tabs .workspace-tab-header-container .workspace-tab-header-container-inner { + margin: 5px 0 !important; + gap: var(--anp-safari-tab-gap, 10px); +} +.anp-safari-tab-toggle .workspace-split.mod-vertical.mod-root .workspace-tabs .workspace-tab-header-container .workspace-tab-header-container-inner .workspace-tab-header { + border-radius: var(--anp-safari-tab-radius, 5px); + border: var(--anp-safari-border-width, 1px) solid var(--tab-outline-color); + background-color: var(--tab-background-inactive); + color: var(--text-muted); + max-width: var(--tab-max-width); +} +.anp-safari-tab-toggle .workspace-split.mod-vertical.mod-root .workspace-tabs .workspace-tab-header-container .workspace-tab-header-container-inner .workspace-tab-header:not(.is-active) { + --icon-color: var(--text-muted); + --icon-color-hover: var(--text-muted); +} +.anp-safari-tab-toggle .workspace-split.mod-vertical.mod-root .workspace-tabs .workspace-tab-header-container .workspace-tab-header-container-inner .workspace-tab-header .workspace-tab-header-inner .workspace-tab-header-inner-title { + margin-top: 3px; +} +.anp-safari-tab-toggle .workspace-split.mod-vertical.mod-root .workspace-tabs .workspace-tab-header-container .workspace-tab-header-container-inner .workspace-tab-header::before, .anp-safari-tab-toggle .workspace-split.mod-vertical.mod-root .workspace-tabs .workspace-tab-header-container .workspace-tab-header-container-inner .workspace-tab-header::after { + display: none; +} +.anp-safari-tab-toggle .workspace-split.mod-vertical.mod-root .workspace-tabs .workspace-tab-header-container .workspace-tab-header-container-inner .workspace-tab-header.is-active { + background-color: var(--tab-background-active); + max-width: var(--tab-max-width); + box-shadow: none; +} +.anp-safari-tab-toggle .workspace-split.mod-vertical.mod-root .workspace-tabs .workspace-tab-header-container .workspace-tab-header-container-inner .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner { + background-color: transparent; +} +.anp-safari-tab-toggle:not(.anp-disable-newtab-align) .workspace-tab-header-container-inner { + width: 100%; +} + +.anp-safari-tab-toggle.anp-safari-tab-animated .workspace-split.mod-vertical.mod-root .workspace-tabs .workspace-tab-header-container .workspace-tab-header-container-inner .workspace-tab-header { + transition: max-width 400ms ease-in-out, width 400ms ease-in-out, flex-grow 400ms ease, background-color 150ms; +} +.anp-safari-tab-toggle.anp-safari-tab-animated .workspace-split.mod-vertical.mod-root .workspace-tabs .workspace-tab-header-container .workspace-tab-header-container-inner .workspace-tab-header.is-active { + flex-grow: 1.67; + max-width: var(--tab-max-width-active); +} + +.anp-alternate-tab-toggle, +.anp-default-tab, +.anp-safari-tab-toggle { + --header-height: var(--anp-alt-tab-custom-height, 40px); + --tab-stacked-header-width: var(--anp-stacked-header-width, 40px); +} + +.anp-alternate-tab-toggle .workspace-tabs:not(.mod-stacked), +.anp-safari-tab-toggle .workspace-tabs:not(.mod-stacked) { + --tab-background: var(--background-secondary); + --tab-background-active: var(--background-primary); + --tab-font-size: 12px; + --tab-height: calc(var(--header-height)*0.7); + --tab-max-width: 200px; + --tab-max-width-active: 300px ; +} + +.anp-alternate-tab-toggle .workspace-ribbon.mod-left { + margin-top: var(--header-height); +} + +.anp-alternate-tab-toggle .workspace-ribbon.mod-left:before { + padding-bottom: 0px; +} + +.anp-alternate-tab-toggle .workspace-tabs:not(.mod-stacked) .workspace-tab-header::before, +.anp-alternate-tab-toggle .workspace-tabs:not(.mod-stacked) .workspace-tab-header::after, +.anp-alternate-tab-toggle .workspace .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner::after { + display: none; +} + +.anp-alternate-tab-toggle .mod-vertical:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-container-inner, +.anp-alternate-tab-toggle .mod-horizontal:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-container-inner { + align-items: center; + justify-content: var(--anp-safari-tab-align, center); + margin: 0; + width: 100%; + gap: var(--anp-safari-tab-gap, 10px); +} + +.anp-disable-newtab-align.anp-alternate-tab-toggle .mod-vertical:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-container-inner, +.anp-disable-newtab-align.anp-alternate-tab-toggle .mod-horizontal:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-container-inner { + width: unset; + gap: var(--anp-safari-tab-gap, 10px); +} + +.anp-alternate-tab-toggle .mod-vertical:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header, +.anp-alternate-tab-toggle .mod-horizontal:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header { + background: var(--tab-background); + border-radius: var(--anp-safari-tab-radius, 6px); + box-shadow: none !important; + height: var(--tab-height); + padding: 0 !important; + transition: 400ms, background-color 150ms ease-in-out; +} + +.anp-alternate-tab-toggle .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header { + max-width: var(--tab-max-width); + border: var(--anp-safari-border-width, 1px) solid var(--tab-outline-color); +} + +.anp-alternate-tab-toggle.anp-alt-tab-anim-toggle .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header { + transition: 400ms, background-color 150ms ease-in-out; +} + +.anp-alternate-tab-toggle .workspace-tabs:not(.mod-stacked) .workspace-tab-header:first-child { + margin-left: 0; +} + +.anp-alternate-tab-toggle .mod-root:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner { + padding: 7px 8px; +} + +.anp-alternate-tab-toggle .mod-root:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner { + padding: 0 4px 0 8px; + transition: 400ms, background-color 150ms ease-in-out, max-width 400ms; +} +.anp-alternate-tab-toggle .mod-root:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner, +.anp-alternate-tab-toggle .mod-root:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner-close-button, +.anp-alternate-tab-toggle .mod-root:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header-inner-icon { + color: var(--text-muted); +} + +.anp-alternate-tab-toggle .workspace .mod-root .workspace-tab-header-inner::after { + display: none; +} + +.anp-alternate-tab-toggle .mod-root:not(.mod-left-split):not(.mod-right-split) .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active { + flex-grow: 1.67; + max-width: var(--tab-max-width-active); + background-color: var(--background-primary); +} + +.anp-alternate-tab-toggle .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-title { + color: var(--color-accent); +} + +.anp-alternate-tab-toggle .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner, +.anp-alternate-tab-toggle .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-title, +.anp-alternate-tab-toggle .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-close-button, +.anp-alternate-tab-toggle .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner-icon { + color: var(--text-faint); +} +.anp-alternate-tab-toggle .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active .workspace-tab-header-inner:hover { + background-color: rgba(var(--ctp-surface1), 0.4); +} + +.anp-alternate-tab-toggle .mod-root .workspace-tabs:not(.mod-stacked).mod-active .workspace-tab-header.is-active .workspace-tab-header-inner, +.anp-alternate-tab-toggle .mod-root .workspace-tabs:not(.mod-stacked).mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-title, +.anp-alternate-tab-toggle .mod-root .workspace-tabs:not(.mod-stacked).mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-close-button, +.anp-alternate-tab-toggle .mod-root .workspace-tabs:not(.mod-stacked).mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-icon { + color: var(--color-accent) !important; +} + +.anp-alternate-tab-toggle .mod-root .workspace-tabs:not(.mod-stacked) .workspace-tab-header.is-active:hover { + background-color: var(--background-modifier-border); +} + +.anp-alternate-tab-toggle .sidebar-toggle-button.mod-left, +.anp-alternate-tab-toggle .sidebar-toggle-button.mod-right { + align-items: center; +} + +.anp-alternate-tab-toggle .sidebar-toggle-button.mod-left .clickable-icon, +.anp-alternate-tab-toggle .sidebar-toggle-button.mod-right .clickable-icon { + height: var(--tab-height); +} + +.is-focused:not(.anp-mini-tab-toggle.anp-colorful-frame) .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-icon, +.is-focused .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-title { + color: var(--color-accent); +} + +.anp-mini-tab-toggle { + --header-height: var(--anp-alt-tab-custom-height, 40px); + --tab-stacked-header-width: var(--anp-stacked-header-width, 40px); +} +.anp-mini-tab-toggle .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header { + background-color: transparent; + box-shadow: none; +} +.anp-mini-tab-toggle .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header::before, .anp-mini-tab-toggle .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header::after { + display: none; +} +.anp-mini-tab-toggle .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header.is-active { + border-bottom: 2px solid var(--color-accent); + margin-bottom: 0px; + padding-bottom: 0px; +} +.anp-mini-tab-toggle .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header.is-active .workspace-tab-header-inner { + border-radius: var(--tab-radius) var(--tab-radius) 0px 0px; + margin-top: 0.5px; + padding-bottom: 4px; +} +.anp-mini-tab-toggle .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header ::after { + display: none; +} +.anp-mini-tab-toggle .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tab-header-container-inner .workspace-tab-header:hover .workspace-tab-header-inner { + background-color: var(--background-modifier-hover); +} + +.anp-depth-tab-toggle .workspace .mod-root .workspace-tab-header { + --tab-text-color-focused-active-current: rgb(var(--anp-depth-tab-text, var(--ctp-text))); + --tab-text-color-focused: rgb(var(--anp-depth-tab-text, var(--ctp-text))); +} +.anp-depth-tab-toggle .workspace .mod-root .workspace-tab-header:not(.is-active) { + --tab-text-color: rgb(var(--anp-depth-tab-text)); + --icon-color: rgb(var(--anp-depth-tab-text)); + --icon-color-hover: rgb(var(--anp-depth-tab-text)); + background-color: rgba(var(--ctp-mantle), var(--anp-depth-tab-opacity, 0.6)); +} +.anp-depth-tab-toggle .workspace .mod-root .workspace-tab-header:not(.is-active)::before, .anp-depth-tab-toggle .workspace .mod-root .workspace-tab-header:not(.is-active)::after { + box-shadow: inset 0 0 0 var(--tab-outline-width) transparent, 0 0 0 calc(var(--tab-curve) * 4) rgba(var(--ctp-mantle), var(--anp-depth-tab-opacity, 0.6)); +} +.anp-depth-tab-toggle .workspace .mod-root .workspace-tab-header:not(.is-active)::after { + clip-path: inset(50% 50% 0 calc(var(--tab-curve) * 0)); +} +.anp-depth-tab-toggle .workspace .mod-root .workspace-tab-header:not(.is-active)::before { + clip-path: inset(50% calc(var(--tab-curve) * 0) 0 50%); +} +.anp-depth-tab-toggle .workspace .mod-root .workspace-tab-header-inner::after { + display: none; +} +.anp-depth-tab-toggle .workspace .mod-root .workspace-tab-header-container-inner { + gap: var(--anp-depth-tab-gap, 10px); +} +.anp-depth-tab-toggle .workspace .mod-root .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner { + background-color: transparent; +} +.anp-depth-tab-toggle .workspace .mod-root .workspace-tab-header-inner-close-button:hover { + background-color: var(--background-modifier-hover); +} + +.anp-depth-tab-toggle.anp-depth-tab-text-invert { + --anp-depth-tab-text: var(--ctp-crust); +} + +body.anp-card-layout { + --card-background-color: rgb(var(--ctp-crust)); + --card-foreground-color: var(--background-primary); + --divider-color: transparent; + --tab-outline-color: var(--background-modifier-border); + --divider-color-hover: var(--backgrouund-modifier-border); + --divider-width: 4px; + --divider-width-hover: 4px; + --tab-container-background: var(--card-background-color); + --file-header-border: var(--border-width) dashed var(--background-modifier-border); + --ribbon-padding: 0; +} +body.anp-card-layout.anp-hide-borders { + --tab-outline-color: transparent; +} +body.anp-card-layout.anp-hide-borders .menu { + border: 0px !important; +} +body.anp-card-layout .sidebar-toggle-button, +body.anp-card-layout .workspace-tabs.mod-top { + --tab-container-background: var(--card-background-color); +} +body.anp-card-layout .workspace-tabs.mod-top:has(.obsidian-banner-wrapper) { + --file-header-border: none; +} +body.anp-card-layout.is-focused, +body.anp-card-layout.is-focused .sidebar-toggle-button, +body.anp-card-layout.is-focused .workspace-tabs.mod-top { + --tab-container-background: var(--card-background-color); +} +body.anp-card-layout .mod-left-split .workspace-tabs .workspace-leaf, +body.anp-card-layout .mod-right-split .workspace-tabs .workspace-leaf, +body.anp-card-layout .mod-left-split, +body.anp-card-layout .mod-vertical .workspace-tab-container, +body.anp-card-layout .mod-vertical, +body.anp-card-layout .workspace-split.mod-vertical, +body.anp-card-layout .workspace-fake-target-overlay:not(.is-in-sidebar) .workspace-tabs .workspace-leaf, +body.anp-card-layout .mod-root .workspace-tabs .workspace-leaf, +body.anp-card-layout .workspace-ribbon.mod-left, +body.anp-card-layout .workspace-ribbon.mod-left:before { + background-color: var(--tab-container-background); +} +body.anp-card-layout.anp-card-layout-actions .workspace-ribbon.mod-left { + margin-right: var(--anp-card-layout-padding, 10px); +} +body.anp-card-layout.anp-card-layout-actions .side-dock-actions { + border-radius: 0px var(--anp-card-radius, var(--radius-xl)) var(--anp-card-radius, var(--radius-xl)) 0px; + margin-top: 2px; + border-width: 1px 1px 0px 1px; +} +body.anp-card-layout.anp-card-layout-actions .side-dock-actions { + border-style: solid; + border-color: var(--tab-outline-color); + background-color: var(--card-foreground-color); +} +body.anp-card-layout.anp-card-layout-actions.anp-fixed-status-bar .side-dock-settings { + border-width: 1px; + border-radius: 0px var(--anp-card-radius, var(--radius-xl)) var(--anp-card-radius, var(--radius-xl)) 0px; +} +body.anp-card-layout .side-dock-actions { + padding: var(--size-4-2) var(--size-4-1) var(--size-4-3); +} +body.anp-card-layout .workspace-split.mod-left-split .workspace-sidedock-vault-profile { + border: none; + margin: var(--anp-card-layout-padding, 10px); + margin-bottom: 0; + background-color: transparent; +} +body.anp-card-layout .workspace-ribbon.mod-left { + margin-top: calc(var(--header-height) - 1px); +} +body.anp-card-layout .workspace-tab-header-container, +body.anp-card-layout .workspace-ribbon.mod-left:before { + border-bottom: none; +} +body.anp-card-layout .mod-vertical .workspace-tabs .workspace-tab-header-container { + padding-left: var(--anp-card-header-left-padding, 20px); +} +body.anp-card-layout .mod-vertical .workspace-tabs .workspace-tab-header-container .workspace-tab-header-container-inner { + margin: 6px -5px calc(var(--tab-outline-width) * -1); + z-index: 1; +} +body.anp-card-layout .mod-left-split .workspace-tab-container, +body.anp-card-layout .mod-right-split .workspace-tab-container { + padding-left: var(--anp-card-layout-padding, 10px); + padding-right: var(--anp-card-layout-padding, 10px); + background-color: var(--tab-container-background); +} +body.anp-card-layout .workspace-split .workspace-leaf-content:not([data-type=file-explorer]), body.anp-card-layout.anp-card-layout-filebrowser .workspace-leaf-content[data-type=file-explorer] { + background-color: var(--card-foreground-color); + border: 1px solid var(--tab-outline-color); +} +body.anp-card-layout.anp-card-shadows .workspace-split .workspace-leaf-content, body.anp-card-layout.anp-card-shadows.anp-card-layout-actions .side-dock-actions, body.anp-card-layout.anp-card-shadows.anp-card-layout-filebrowser .workspace-split .workspace-leaf-content[data-type=file-explorer] { + box-shadow: 0 3px 4px 0px rgba(0, 0, 0, 0.05); +} +body.anp-card-layout .workspace-split .mod-stacked .workspace-leaf-content { + border-radius: 0; + border: none; + margin-bottom: 0px; + border-left: none; +} +body.anp-card-layout .workspace-split.mod-horizontal > * { + width: unset; +} +body.anp-card-layout .workspace .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header { + border-style: solid; + border-radius: var(--anp-card-radius, var(--radius-xl)) 0px 0px var(--anp-card-radius, var(--radius-xl)); + border-width: var(--tab-outline-width); + border-color: var(--tab-outline-color); + border-right: var(--tab-outline-width) dashed var(--tab-outline-color); +} +body.anp-card-layout .workspace .workspace-tabs.mod-stacked .workspace-leaf { + border-left-width: 0px; + border-top-width: var(--tab-outline-width); + border-bottom-width: var(--tab-outline-width); + border-style: solid; + border-color: var(--tab-outline-color); + border-radius: 0 var(--anp-card-radius, var(--radius-xl)) var(--anp-card-radius, var(--radius-xl)) 0; +} +body.anp-card-layout .workspace .workspace-tabs.mod-stacked .workspace-tab-container { + padding-bottom: var(--anp-card-layout-padding, 10px); +} +body.anp-card-layout .workspace-drop-overlay:before { + width: calc(100% - 6px - var(--anp-card-layout-padding, 0) * 2); + height: calc(100% - 6px - var(--anp-card-layout-padding, 0) * 2); + margin: auto; +} + +body.anp-card-layout:not(.is-phone) .mod-vertical .workspace-tabs { + padding-left: var(--anp-card-layout-padding, 10px); + padding-right: var(--anp-card-layout-padding, 10px); +} +body.anp-card-layout:not(.is-phone) .workspace-split .workspace-leaf-content:not([data-type=file-explorer]), body.anp-card-layout:not(.is-phone).anp-card-layout-filebrowser .workspace-leaf-content[data-type=file-explorer] { + border-radius: var(--anp-card-radius, var(--radius-xl)); + margin-bottom: var(--anp-card-layout-padding, 10px); +} + +/*-------------------------- +Inspired by https://github.com/Akifyss/obsidian-border +---------------------------*/ +body.anp-border-layout { + --card-background-color: rgb(var(--ctp-crust)); + --card-foreground-color: var(--background-primary); + --border-border-style: 1px solid var(--tab-outline-color); + --anp-border-bottom-padding: var(--anp-border-padding, 20px); +} +body.anp-border-layout .horizontal-main-container { + background-color: var(--card-background-color); + --titlebar-background: var(--card-background-color); + --ribbon-background: var(--card-background-color); + --ribbon-background-collapsed: var(--card-background-color); +} +body.anp-border-layout.anp-fixed-status-bar { + --anp-border-bottom-padding: calc(var(--anp-border-padding, 20px) - 18px); +} +body.anp-border-layout .workspace .workspace-tab-container { + border-bottom: var(--border-border-style); +} +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-tabs:nth-child(2).workspace-tabs.mod-top-left-space > .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-tabs:nth-child(2).mod-top-left-space > .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-vertical > .workspace-tabs:nth-child(2).mod-top-left-space > .workspace-tab-container { + border-bottom-left-radius: var(--anp-border-radius, var(--radius-xl)); +} +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root .workspace-tabs.mod-top-left-space .workspace-tab-container { + border-top-left-radius: var(--anp-border-radius, var(--radius-xl)); +} +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-horizontal:nth-child(2) > .workspace-tabs:last-child .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:nth-child(2) > .workspace-tabs:last-child .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:nth-child(2) > .workspace-tabs:last-child .workspace-tab-container { + border-bottom-left-radius: var(--anp-border-radius, var(--radius-xl)); +} +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-horizontal:nth-child(2) > .workspace-split.mod-vertical:last-child > .workspace-tabs:nth-child(2) .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:nth-child(2) > .workspace-split.mod-vertical:last-child > .workspace-tabs:nth-child(2) .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:nth-child(2) > .workspace-split.mod-vertical:last-child > .workspace-tabs:nth-child(2) .workspace-tab-container { + border-bottom-left-radius: var(--anp-border-radius, var(--radius-xl)); +} +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root .workspace-tabs.mod-top-left-space > .workspace-tab-container { + border-left: var(--border-border-style); +} +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-horizontal:nth-child(2) > .workspace-tabs > .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:nth-child(2) > .workspace-tabs > .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:nth-child(2) > .workspace-tabs > .workspace-tab-container { + border-left: var(--border-border-style); +} +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-horizontal:nth-child(2) > .workspace-tabs:not(.mod-top-left-space) > .workspace-tab-header-container, +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:nth-child(2) > .workspace-tabs:not(.mod-top-left-space) > .workspace-tab-header-container, +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:nth-child(2) > .workspace-tabs:not(.mod-top-left-space) > .workspace-tab-header-container { + border-left: var(--border-border-style); +} +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-horizontal:nth-child(2) > .workspace-split.mod-vertical > .workspace-tabs:nth-child(2) > .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:nth-child(2) > .workspace-split.mod-vertical > .workspace-tabs:nth-child(2) > .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:nth-child(2) > .workspace-split.mod-vertical > .workspace-tabs:nth-child(2) > .workspace-tab-container { + border-left: var(--border-border-style); +} +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-horizontal:nth-child(2) > .workspace-split.mod-vertical > .workspace-tabs:nth-child(2):not(.mod-top-left-space) > .workspace-tab-header-container, +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:nth-child(2) > .workspace-split.mod-vertical > .workspace-tabs:nth-child(2):not(.mod-top-left-space) > .workspace-tab-header-container, +body.anp-border-layout .workspace:not(.is-left-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:nth-child(2) > .workspace-split.mod-vertical > .workspace-tabs:nth-child(2):not(.mod-top-left-space) > .workspace-tab-header-container { + border-left: var(--border-border-style); +} +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-tabs:last-child.mod-top-right-space > .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-tabs:last-child.mod-top-right-space > .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-vertical > .workspace-tabs:last-child.mod-top-right-space > .workspace-tab-container { + border-bottom-right-radius: var(--anp-border-radius, var(--radius-xl)); +} +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root .workspace-tabs.mod-top-right-space .workspace-tab-container { + border-top-right-radius: var(--anp-border-radius, var(--radius-xl)); +} +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-horizontal:last-child > .workspace-tabs:last-child .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:last-child > .workspace-tabs:last-child .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:last-child > .workspace-tabs:last-child .workspace-tab-container { + border-bottom-right-radius: var(--anp-border-radius, var(--radius-xl)); +} +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-horizontal:last-child > .workspace-split.mod-vertical:last-child > .workspace-tabs:last-child .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:last-child > .workspace-split.mod-vertical:last-child > .workspace-tabs:last-child .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:last-child > .workspace-split.mod-vertical:last-child > .workspace-tabs:last-child .workspace-tab-container { + border-bottom-right-radius: var(--anp-border-radius, var(--radius-xl)); +} +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root .workspace-tabs.mod-top-right-space > .workspace-tab-container { + border-right: var(--border-border-style); +} +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-horizontal:last-child > .workspace-tabs > .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:last-child > .workspace-tabs > .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:last-child > .workspace-tabs > .workspace-tab-container { + border-right: var(--border-border-style); +} +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-horizontal:last-child > .workspace-tabs:not(.mod-top-right-space) > .workspace-tab-header-container, +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:last-child > .workspace-tabs:not(.mod-top-right-space) > .workspace-tab-header-container, +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:last-child > .workspace-tabs:not(.mod-top-right-space) > .workspace-tab-header-container { + border-right: var(--border-border-style); +} +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-horizontal:last-child > .workspace-split.mod-vertical > .workspace-tabs:last-child > .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:last-child > .workspace-split.mod-vertical > .workspace-tabs:last-child > .workspace-tab-container, +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:last-child > .workspace-split.mod-vertical > .workspace-tabs:last-child > .workspace-tab-container { + border-right: var(--border-border-style); +} +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-horizontal:last-child > .workspace-split.mod-vertical > .workspace-tabs:last-child:not(.mod-top-right-space) > .workspace-tab-header-container, +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:last-child > .workspace-split.mod-vertical > .workspace-tabs:last-child:not(.mod-top-right-space) > .workspace-tab-header-container, +body.anp-border-layout .workspace:not(.is-right-sidedock-open) > .workspace-split.mod-vertical.mod-root > .workspace-split.mod-vertical > .workspace-split.mod-vertical > .workspace-split.mod-horizontal:last-child > .workspace-split.mod-vertical > .workspace-tabs:last-child:not(.mod-top-right-space) > .workspace-tab-header-container { + border-right: var(--border-border-style); +} +body.anp-border-layout .workspace .workspace-split.mod-left-split { + background-color: var(--card-background-color); + padding-left: calc(var(--anp-border-padding, 20px) - 20px); +} +body.anp-border-layout .workspace .workspace-split.mod-left-split .workspace-tabs { + background-color: var(--card-background-color); +} +body.anp-border-layout .workspace .workspace-split.mod-left-split .workspace-tabs .workspace-tab-container { + border-left: var(--border-border-style); +} +body.anp-border-layout .workspace .workspace-split.mod-left-split .workspace-tabs .workspace-tab-container .workspace-leaf { + background-color: var(--card-foreground-color); +} +body.anp-border-layout .workspace .workspace-split.mod-left-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container { + border-left: var(--border-border-style); +} +body.anp-border-layout .workspace .workspace-split.mod-left-split .workspace-tabs:last-child .workspace-tab-container { + border-bottom: var(--border-border-style); +} +body.anp-border-layout .workspace .workspace-split.mod-left-split .workspace-tabs.mod-top-left-space .workspace-tab-container { + border-top: var(--border-border-style); + border-left: var(--border-border-style); +} +body.anp-border-layout .workspace .workspace-split.mod-left-split .workspace-sidedock-vault-profile { + border-top: none; + background-color: var(--card-foreground-color); + border-left: var(--border-border-style); + border-bottom: var(--border-border-style); +} +body.anp-border-layout .workspace .workspace-split.mod-right-split { + background-color: var(--card-background-color); +} +body.anp-border-layout .workspace .workspace-split.mod-right-split .workspace-tabs { + background-color: var(--card-background-color); +} +body.anp-border-layout .workspace .workspace-split.mod-right-split .workspace-tabs .workspace-tab-container { + border-right: var(--border-border-style); +} +body.anp-border-layout .workspace .workspace-split.mod-right-split .workspace-tabs .workspace-tab-container .workspace-leaf { + background-color: var(--card-foreground-color); +} +body.anp-border-layout .workspace .workspace-split.mod-right-split .workspace-tabs:not(.mod-top) .workspace-tab-header-container { + border-right: var(--border-border-style); +} +body.anp-border-layout .workspace .workspace-split.mod-right-split .workspace-tabs:last-child .workspace-tab-container { + border-bottom: var(--border-border-style); +} +body.anp-border-layout .workspace .workspace-split.mod-right-split .workspace-tabs.mod-top-right-space .workspace-tab-container { + border-top: var(--border-border-style); + border-right: var(--border-border-style); +} +body.anp-border-layout .workspace .workspace-split:not(.mod-right-split):not(.mod-left-split) { + background-color: var(--card-background-color); +} +body.anp-border-layout .workspace .workspace-split:not(.mod-right-split):not(.mod-left-split) > .workspace-split { + padding-bottom: 0; +} +body.anp-border-layout .workspace .workspace-split:not(.mod-right-split):not(.mod-left-split) .workspace-tabs { + background-color: var(--card-background-color); +} +body.anp-border-layout .workspace .workspace-split:not(.mod-right-split):not(.mod-left-split) .workspace-tabs:last-child .workspace-tab-container { + border-bottom: var(--border-border-style); +} +body.anp-border-layout .workspace .workspace-split:not(.mod-right-split):not(.mod-left-split) .workspace-tabs.mod-top .workspace-tab-container { + border-top: var(--border-border-style); +} +body.anp-border-layout .workspace .workspace-tabs:not(.mod-top) .workspace-tab-header-container { + background-color: var(--card-foreground-color); +} +body.anp-border-layout .workspace .workspace-tabs.mod-top .workspace-tab-header-container { + border-bottom: none; +} +body.anp-border-layout .workspace-split.mod-left-split > .workspace-leaf-resize-handle, +body.anp-border-layout .workspace-split.mod-right-split > .workspace-leaf-resize-handle { + height: calc(100% + -1 * var(--header-height) + -1 * var(--anp-border-bottom-padding, 20px)); + bottom: var(--anp-border-bottom-padding, 20px); +} +body.anp-border-layout .workspace-split { + --divider-vertical-height: calc(100% + -1*var(--header-height)); +} +body.anp-border-layout .workspace-ribbon.mod-left:before { + border-bottom: 1px solid var(--card-background-color); +} +body.anp-border-layout .workspace-ribbon.mod-left, +body.anp-border-layout .workspace-ribbon.mod-left.is-focused { + border-right-color: var(--card-background-color); +} +body.anp-border-layout.is-popout-window .workspace { + margin-left: var(--anp-border-padding, 20px); +} + +body.anp-border-layout:not(.is-mobile) .workspace { + margin-right: var(--anp-border-padding, 20px); +} +body.anp-border-layout:not(.is-mobile) .workspace .workspace-split.mod-left-split { + padding-bottom: var(--anp-border-bottom-padding, 20px); +} +body.anp-border-layout:not(.is-mobile) .workspace .workspace-split.mod-left-split .workspace-tabs.mod-top-left-space .workspace-tab-container { + border-top-left-radius: var(--anp-border-radius, var(--radius-xl)); +} +body.anp-border-layout:not(.is-mobile) .workspace .workspace-split.mod-left-split .workspace-sidedock-vault-profile { + border-bottom-left-radius: var(--anp-border-radius, var(--radius-xl)); +} +body.anp-border-layout:not(.is-mobile) .workspace .workspace-split.mod-right-split { + padding-bottom: var(--anp-border-bottom-padding, 20px); +} +body.anp-border-layout:not(.is-mobile) .workspace .workspace-split.mod-right-split .workspace-tabs:last-child .workspace-tab-container { + border-bottom-right-radius: var(--anp-border-radius, var(--radius-xl)); +} +body.anp-border-layout:not(.is-mobile) .workspace .workspace-split.mod-right-split .workspace-tabs.mod-top-right-space .workspace-tab-container { + border-top-right-radius: var(--anp-border-radius, var(--radius-xl)); +} +body.anp-border-layout:not(.is-mobile) .workspace .workspace-split.mod-root:not(.mod-right-split):not(.mod-left-split) { + padding-bottom: var(--anp-border-bottom-padding, 20px); +} + +.anp-bg-fix .workspace, +.anp-bg-fix .app-container, +.anp-bg-fix .horizontal-main-container { + background-color: var(--tab-container-background); +} + +.anp-hide-borders { + --tab-outline-color: transparent; + --divider-color: transparent; +} + +/* AGPLv3 License +Floating Status Bar +Author: AnubisNekhet +Note: If you decide to implement it in your theme or redistribute it, please keep this comment (Especially for *certain* individuals who may try to rebrand it as their own :)) +Support me: https://buymeacoffee.com/AnubisNekhet +*/ +.anp-floating-status-bar { + --status-bar-position: absolute; + --status-bar-radius: var(--radius-m); + --status-bar-border-width: 1px; +} +.anp-floating-status-bar .status-bar { + transform: translateX(calc(100% + 5px)); + transition: transform 300ms 150ms; + bottom: 5px; + right: 5px; + box-shadow: 0 3px 4px 0px rgba(0, 0, 0, 0.05); +} +.anp-floating-status-bar .status-bar::before { + width: 100%; + min-height: 100%; + content: " "; + position: absolute; + left: 0; + bottom: 0; + transform: translateX(-100%); +} +.anp-floating-status-bar .status-bar:hover { + transform: none; + transition: transform 300ms 150ms; +} + +.anp-fixed-status-bar .status-bar { + --status-bar-position: relative; + --status-bar-radius: 0; +} +.anp-fixed-status-bar.anp-card-layout .status-bar, .anp-fixed-status-bar.anp-border-layout .status-bar { + --status-bar-border-width: 0; + --status-bar-background: transparent; + --status-bar-border-color: transparent; + --status-bar-background: var(--card-background-color); +} + +/*----------------CALLOUTS-------------------*/ +.callout:not([data-callout-metadata*=revert]) { + --callout-blend-mode: normal; +} +.callout:not([data-callout-metadata*=revert]) > .callout-title > .callout-title-inner { + flex-grow: var(--anp-callout-fold-position, 0); +} +.theme-light .callout:not([data-callout-metadata*=revert]) > .callout-title > .callout-title-inner { + color: var(--text-normal); +} +.callout:not([data-callout-metadata*=revert]):not(.is-collapsible) > .callout-title .callout-title-inner { + font-weight: 500; +} +.callout:not([data-callout-metadata*=revert]) .callout-title { + --bold-color: currentColor; + --italic-color: currentColor; +} + +.callout[data-callout-metadata*=revert] { + --callout-padding: var(--size-4-3) var(--size-4-3) var(--size-4-3) var(--size-4-6); + --callout-title-padding: 0; + --callout-content-padding: 0; +} + +.callout-content > p:first-child, +.callout-content > ul:first-child, +.callout-content > ol:first-child { + margin-top: 0px; +} +.callout-content > p:last-child, +.callout-content > ul:last-child, +.callout-content > ol:last-child { + margin-bottom: 0px; +} +.callout-content > h1, +.callout-content > h2, +.callout-content > h3, +.callout-content > h4, +.callout-content > h5, +.callout-content > h6 { + margin: 0 !important; +} + +.anp-callout-block .callout:not([data-callout-metadata*=anp-sleek], +[data-callout-metadata*=anp-vanilla-normal], +[data-callout-metadata*=anp-vanilla-plus]):not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]), +.callout[data-callout-metadata*=anp-block]:not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) { + border-left: var(--size-2-3) solid rgb(var(--callout-color)); +} + +.anp-callout-sleek .callout:not([data-callout-metadata*=anp-block], +[data-callout-metadata*=anp-vanilla-normal], +[data-callout-metadata*=anp-vanilla-plus]):not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]), +.callout[data-callout-metadata*=anp-sleek]:not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) { + --callout-padding: 0; + --callout-border-width: 1px; + --callout-border-opacity: 0.4; + --callout-border-width: 1px; + background-color: rgba(var(--ctp-mantle), 0.4); +} +.anp-callout-sleek .callout:not([data-callout-metadata*=anp-block], +[data-callout-metadata*=anp-vanilla-normal], +[data-callout-metadata*=anp-vanilla-plus]):not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-title, +.callout[data-callout-metadata*=anp-sleek]:not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-title { + background-color: rgba(var(--callout-color), var(--callout-title-opacity, 0.1)); +} +.anp-callout-sleek .callout:not([data-callout-metadata*=anp-block], +[data-callout-metadata*=anp-vanilla-normal], +[data-callout-metadata*=anp-vanilla-plus]):not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-content, +.callout[data-callout-metadata*=anp-sleek]:not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-content { + border-top: var(--callout-border-width) dashed rgba(var(--callout-color), var(--callout-border-opacity)); +} +.anp-callout-sleek .callout:not([data-callout-metadata*=anp-block], +[data-callout-metadata*=anp-vanilla-normal], +[data-callout-metadata*=anp-vanilla-plus]):not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) .list-collapse-indicator, +.callout[data-callout-metadata*=anp-sleek]:not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) .list-collapse-indicator { + margin-left: -35px; + padding-right: 3px; +} + +.anp-callout-vanilla-normal .callout:not([data-callout-metadata*=anp-sleek], +[data-callout-metadata*=anp-vanilla-plus], +[data-callout-metadata*=anp-block]):not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]), +.callout[data-callout-metadata*=anp-vanilla-normal]:not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) { + background-color: transparent; +} +.anp-callout-vanilla-normal .callout:not([data-callout-metadata*=anp-sleek], +[data-callout-metadata*=anp-vanilla-plus], +[data-callout-metadata*=anp-block]):not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-title, +.callout[data-callout-metadata*=anp-vanilla-normal]:not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-title { + background-color: rgba(var(--callout-color), var(--callout-title-opacity, 0.1)); +} +.anp-callout-vanilla-normal .callout:not([data-callout-metadata*=anp-sleek], +[data-callout-metadata*=anp-vanilla-plus], +[data-callout-metadata*=anp-block]):not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-content, +.callout[data-callout-metadata*=anp-vanilla-normal]:not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-content { + background-color: rgb(var(--ctp-mantle)); +} +.anp-callout-vanilla-normal .callout:not([data-callout-metadata*=anp-sleek], +[data-callout-metadata*=anp-vanilla-plus], +[data-callout-metadata*=anp-block]):not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-title, +.anp-callout-vanilla-normal .callout:not([data-callout-metadata*=anp-sleek], +[data-callout-metadata*=anp-vanilla-plus], +[data-callout-metadata*=anp-block]):not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-content, +.callout[data-callout-metadata*=anp-vanilla-normal]:not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-title, +.callout[data-callout-metadata*=anp-vanilla-normal]:not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-content { + border-left: var(--size-2-3) solid rgb(var(--callout-color)); +} + +.anp-callout-vanilla-plus .callout:not([data-callout-metadata*=anp-sleek], +[data-callout-metadata*=anp-vanilla-normal], +[data-callout-metadata*=anp-block]):not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]), +.callout[data-callout-metadata*=anp-vanilla-plus]:not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) { + background-color: transparent; +} +.anp-callout-vanilla-plus .callout:not([data-callout-metadata*=anp-sleek], +[data-callout-metadata*=anp-vanilla-normal], +[data-callout-metadata*=anp-block]):not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-title, +.callout[data-callout-metadata*=anp-vanilla-plus]:not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-title { + background-color: rgba(var(--callout-color), var(--callout-title-opacity, 0.1)); + border-left: var(--size-2-3) solid rgb(var(--callout-color)); +} +.anp-callout-vanilla-plus .callout:not([data-callout-metadata*=anp-sleek], +[data-callout-metadata*=anp-vanilla-normal], +[data-callout-metadata*=anp-block]):not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-content, +.callout[data-callout-metadata*=anp-vanilla-plus]:not([data-callout-metadata*=revert], +[data-callout=blank-container], +[data-callout=multi-column]) > .callout-content { + background-color: rgb(var(--ctp-mantle)); +} + +/*---------------CALLOUT COLORS----------------*/ +.anp-callout-color-toggle .callout[data-callout=note] { + --callout-color: var(--ctp-blue); +} +.anp-callout-color-toggle .callout[data-callout=abstract], .anp-callout-color-toggle .callout[data-callout=summary], .anp-callout-color-toggle .callout[data-callout=tldr], .anp-callout-color-toggle .callout[data-callout=seealso] { + --callout-color: var(--ctp-blue); +} +.anp-callout-color-toggle .callout[data-callout=info], .anp-callout-color-toggle .callout[data-callout=todo], .anp-callout-color-toggle .callout[data-callout=tip], .anp-callout-color-toggle .callout[data-callout=hint], .anp-callout-color-toggle .callout[data-callout=important] { + --callout-color: var(--ctp-teal); +} +.anp-callout-color-toggle .callout[data-callout=success], .anp-callout-color-toggle .callout[data-callout=check], .anp-callout-color-toggle .callout[data-callout=done], .anp-callout-color-toggle .callout[data-callout=question], .anp-callout-color-toggle .callout[data-callout=help], .anp-callout-color-toggle .callout[data-callout=faq] { + --callout-color: var(--ctp-green); +} +.anp-callout-color-toggle .callout[data-callout=warning], .anp-callout-color-toggle .callout[data-callout=caution], .anp-callout-color-toggle .callout[data-callout=attention] { + --callout-color: var(--ctp-yellow); +} +.anp-callout-color-toggle .callout[data-callout=failure], .anp-callout-color-toggle .callout[data-callout=fail], .anp-callout-color-toggle .callout[data-callout=missing] { + --callout-color: var(--ctp-maroon); +} +.anp-callout-color-toggle .callout[data-callout=danger], .anp-callout-color-toggle .callout[data-callout=error], .anp-callout-color-toggle .callout[data-callout=bug] { + --callout-color: var(--ctp-red); +} +.anp-callout-color-toggle .callout[data-callout=example] { + --callout-color: var(--ctp-mauve); +} +.anp-callout-color-toggle .callout[data-callout=quote], .anp-callout-color-toggle .callout[data-callout=cite] { + --callout-color: var(--ctp-surface2); +} +.anp-callout-color-toggle.anuppuccin-accent-toggle .callout[data-callout=note] { + --callout-color: var(--ctp-accent); +} + +/*---------------CUSTOM CALLOUTS---------------*/ +.callout[data-callout=formula] { + --callout-color: var(--ctp-text); + width: fit-content; + height: fit-content; + mix-blend-mode: normal; + background-color: transparent !important; +} +.callout[data-callout=formula] .callout-title { + background-color: rgba(var(--callout-color), 0.05) !important; + color: var(--ctp-text); +} +.callout[data-callout=formula] .callout-title .callout-icon, +.callout[data-callout=formula] .callout-title .callout-fold { + display: none; +} +.callout[data-callout=formula] .callout-content { + background-color: transparent !important; +} +.callout[data-callout=formula] .callout-content ul, +.callout[data-callout=formula] .callout-content ol { + padding-inline-start: 12px; +} + +/*-Blockquote spacing-*/ +.markdown-rendered blockquote { + padding: 5px 5px 5px 10px; +} + +/*-Decorations for bold and italics-*/ +.anp-decoration-toggle { + --italic-color: rgb(var(--anp-italic-color, var(--text-normal))); + --bold-color: rgb(var(--anp-bold-color, var(--text-normal))); + --text-highlight-bg: rgba(var(--anp-highlight-color, var(--ctp-yellow)), 0.2); +} + +.markdown-rendered .internal-link { + text-decoration-line: none; +} +.markdown-rendered .internal-link:hover, .markdown-rendered .internal-link:active, .markdown-rendered .internal-link.is-unresolved:hover, .markdown-rendered .internal-link.is-unresolved { + text-decoration-line: none; +} + +.cm-formatting-link-string { + color: var(--text-normal); +} + +.cm-hmd-internal-link { + --link-decoration: none; + --link-decoration-hover: none; + --link-decoration-active: none; +} + +.anp-hide-external-link-icon .external-link, +.anp-hide-external-link-icon .external-link:hover { + background-image: none; + padding-right: 0px; +} + +.cm-s-obsidian span.cm-formatting-strong, .cm-s-obsidian span.cm-strong { + color: var(--bold-color); +} +.cm-s-obsidian span.cm-formatting-em, .cm-s-obsidian span.cm-em { + color: var(--italic-color); +} + +/*-Footnote-*/ +sup[data-footnote-id] { + font-size: var(--font-smallest); +} + +img, +iframe, +video { + border-radius: var(--embed-corner-radius, 4px); +} + +.internal-embed[alt*=seamless].markdown-embed { + --embed-padding: 0; + border-width: 0px; +} +.internal-embed[alt*=seamless].markdown-embed > .markdown-embed-title { + width: fit-content; + position: absolute; + left: unset; + right: 33px; + top: 5px; + opacity: 0; + transition: opacity 0.1s; +} +.internal-embed[alt*=seamless].markdown-embed > .markdown-embed-link { + opacity: 0; + transition: opacity 0.1s; +} +.internal-embed[alt*=seamless].markdown-embed:hover > .markdown-embed-title, .internal-embed[alt*=seamless].markdown-embed:hover > .markdown-embed-link { + opacity: 1; + transition: opacity 0.1s; +} + +/*--------------HEADERS----------------*/ +.markdown-source-view.mod-cm6 .cm-fold-indicator .collapse-indicator { + margin-left: -22px; + padding: 0px 6px; +} + +.anp-header-color-toggle.anp-h1-rosewater .app-container, +.anp-header-color-toggle.anp-h1-rosewater .print { + --h1-color: rgb(var(--ctp-rosewater)); +} + +.anp-header-color-toggle.anp-h1-flamingo .app-container, +.anp-header-color-toggle.anp-h1-flamingo .print { + --h1-color: rgb(var(--ctp-flamingo)); +} + +.anp-header-color-toggle.anp-h1-pink .app-container, +.anp-header-color-toggle.anp-h1-pink .print { + --h1-color: rgb(var(--ctp-pink)); +} + +.anp-header-color-toggle.anp-h1-mauve .app-container, +.anp-header-color-toggle.anp-h1-mauve .print { + --h1-color: rgb(var(--ctp-mauve)); +} + +.anp-header-color-toggle.anp-h1-red .app-container, +.anp-header-color-toggle.anp-h1-red .print { + --h1-color: rgb(var(--ctp-red)); +} + +.anp-header-color-toggle.anp-h1-maroon .app-container, +.anp-header-color-toggle.anp-h1-maroon .print { + --h1-color: rgb(var(--ctp-maroon)); +} + +.anp-header-color-toggle.anp-h1-peach .app-container, +.anp-header-color-toggle.anp-h1-peach .print { + --h1-color: rgb(var(--ctp-peach)); +} + +.anp-header-color-toggle.anp-h1-yellow .app-container, +.anp-header-color-toggle.anp-h1-yellow .print { + --h1-color: rgb(var(--ctp-yellow)); +} + +.anp-header-color-toggle.anp-h1-green .app-container, +.anp-header-color-toggle.anp-h1-green .print { + --h1-color: rgb(var(--ctp-green)); +} + +.anp-header-color-toggle.anp-h1-teal .app-container, +.anp-header-color-toggle.anp-h1-teal .print { + --h1-color: rgb(var(--ctp-teal)); +} + +.anp-header-color-toggle.anp-h1-sky .app-container, +.anp-header-color-toggle.anp-h1-sky .print { + --h1-color: rgb(var(--ctp-sky)); +} + +.anp-header-color-toggle.anp-h1-sapphire .app-container, +.anp-header-color-toggle.anp-h1-sapphire .print { + --h1-color: rgb(var(--ctp-sapphire)); +} + +.anp-header-color-toggle.anp-h1-blue .app-container, +.anp-header-color-toggle.anp-h1-blue .print { + --h1-color: rgb(var(--ctp-blue)); +} + +.anp-header-color-toggle.anp-h1-lavender .app-container, +.anp-header-color-toggle.anp-h1-lavender .print { + --h1-color: rgb(var(--ctp-lavender)); +} + +.anp-h1-divider .markdown-rendered h1, +.anp-h1-divider .HyperMD-header-1 { + border-bottom: var(--hr-thickness) solid var(--background-modifier-border); + padding-bottom: 2px; +} +.anp-h1-divider.anp-header-divider-color-toggle .markdown-rendered h1, +.anp-h1-divider.anp-header-divider-color-toggle .HyperMD-header-1 { + border-bottom-color: currentColor; +} + +.cm-formatting-header-1 { + color: var(--h1-color); +} + +.anp-header-color-toggle.anp-h2-rosewater .app-container, +.anp-header-color-toggle.anp-h2-rosewater .print { + --h2-color: rgb(var(--ctp-rosewater)); +} + +.anp-header-color-toggle.anp-h2-flamingo .app-container, +.anp-header-color-toggle.anp-h2-flamingo .print { + --h2-color: rgb(var(--ctp-flamingo)); +} + +.anp-header-color-toggle.anp-h2-pink .app-container, +.anp-header-color-toggle.anp-h2-pink .print { + --h2-color: rgb(var(--ctp-pink)); +} + +.anp-header-color-toggle.anp-h2-mauve .app-container, +.anp-header-color-toggle.anp-h2-mauve .print { + --h2-color: rgb(var(--ctp-mauve)); +} + +.anp-header-color-toggle.anp-h2-red .app-container, +.anp-header-color-toggle.anp-h2-red .print { + --h2-color: rgb(var(--ctp-red)); +} + +.anp-header-color-toggle.anp-h2-maroon .app-container, +.anp-header-color-toggle.anp-h2-maroon .print { + --h2-color: rgb(var(--ctp-maroon)); +} + +.anp-header-color-toggle.anp-h2-peach .app-container, +.anp-header-color-toggle.anp-h2-peach .print { + --h2-color: rgb(var(--ctp-peach)); +} + +.anp-header-color-toggle.anp-h2-yellow .app-container, +.anp-header-color-toggle.anp-h2-yellow .print { + --h2-color: rgb(var(--ctp-yellow)); +} + +.anp-header-color-toggle.anp-h2-green .app-container, +.anp-header-color-toggle.anp-h2-green .print { + --h2-color: rgb(var(--ctp-green)); +} + +.anp-header-color-toggle.anp-h2-teal .app-container, +.anp-header-color-toggle.anp-h2-teal .print { + --h2-color: rgb(var(--ctp-teal)); +} + +.anp-header-color-toggle.anp-h2-sky .app-container, +.anp-header-color-toggle.anp-h2-sky .print { + --h2-color: rgb(var(--ctp-sky)); +} + +.anp-header-color-toggle.anp-h2-sapphire .app-container, +.anp-header-color-toggle.anp-h2-sapphire .print { + --h2-color: rgb(var(--ctp-sapphire)); +} + +.anp-header-color-toggle.anp-h2-blue .app-container, +.anp-header-color-toggle.anp-h2-blue .print { + --h2-color: rgb(var(--ctp-blue)); +} + +.anp-header-color-toggle.anp-h2-lavender .app-container, +.anp-header-color-toggle.anp-h2-lavender .print { + --h2-color: rgb(var(--ctp-lavender)); +} + +.anp-h2-divider .markdown-rendered h2, +.anp-h2-divider .HyperMD-header-2 { + border-bottom: var(--hr-thickness) solid var(--background-modifier-border); + padding-bottom: 2px; +} +.anp-h2-divider.anp-header-divider-color-toggle .markdown-rendered h2, +.anp-h2-divider.anp-header-divider-color-toggle .HyperMD-header-2 { + border-bottom-color: currentColor; +} + +.cm-formatting-header-2 { + color: var(--h2-color); +} + +.anp-header-color-toggle.anp-h3-rosewater .app-container, +.anp-header-color-toggle.anp-h3-rosewater .print { + --h3-color: rgb(var(--ctp-rosewater)); +} + +.anp-header-color-toggle.anp-h3-flamingo .app-container, +.anp-header-color-toggle.anp-h3-flamingo .print { + --h3-color: rgb(var(--ctp-flamingo)); +} + +.anp-header-color-toggle.anp-h3-pink .app-container, +.anp-header-color-toggle.anp-h3-pink .print { + --h3-color: rgb(var(--ctp-pink)); +} + +.anp-header-color-toggle.anp-h3-mauve .app-container, +.anp-header-color-toggle.anp-h3-mauve .print { + --h3-color: rgb(var(--ctp-mauve)); +} + +.anp-header-color-toggle.anp-h3-red .app-container, +.anp-header-color-toggle.anp-h3-red .print { + --h3-color: rgb(var(--ctp-red)); +} + +.anp-header-color-toggle.anp-h3-maroon .app-container, +.anp-header-color-toggle.anp-h3-maroon .print { + --h3-color: rgb(var(--ctp-maroon)); +} + +.anp-header-color-toggle.anp-h3-peach .app-container, +.anp-header-color-toggle.anp-h3-peach .print { + --h3-color: rgb(var(--ctp-peach)); +} + +.anp-header-color-toggle.anp-h3-yellow .app-container, +.anp-header-color-toggle.anp-h3-yellow .print { + --h3-color: rgb(var(--ctp-yellow)); +} + +.anp-header-color-toggle.anp-h3-green .app-container, +.anp-header-color-toggle.anp-h3-green .print { + --h3-color: rgb(var(--ctp-green)); +} + +.anp-header-color-toggle.anp-h3-teal .app-container, +.anp-header-color-toggle.anp-h3-teal .print { + --h3-color: rgb(var(--ctp-teal)); +} + +.anp-header-color-toggle.anp-h3-sky .app-container, +.anp-header-color-toggle.anp-h3-sky .print { + --h3-color: rgb(var(--ctp-sky)); +} + +.anp-header-color-toggle.anp-h3-sapphire .app-container, +.anp-header-color-toggle.anp-h3-sapphire .print { + --h3-color: rgb(var(--ctp-sapphire)); +} + +.anp-header-color-toggle.anp-h3-blue .app-container, +.anp-header-color-toggle.anp-h3-blue .print { + --h3-color: rgb(var(--ctp-blue)); +} + +.anp-header-color-toggle.anp-h3-lavender .app-container, +.anp-header-color-toggle.anp-h3-lavender .print { + --h3-color: rgb(var(--ctp-lavender)); +} + +.anp-h3-divider .markdown-rendered h3, +.anp-h3-divider .HyperMD-header-3 { + border-bottom: var(--hr-thickness) solid var(--background-modifier-border); + padding-bottom: 2px; +} +.anp-h3-divider.anp-header-divider-color-toggle .markdown-rendered h3, +.anp-h3-divider.anp-header-divider-color-toggle .HyperMD-header-3 { + border-bottom-color: currentColor; +} + +.cm-formatting-header-3 { + color: var(--h3-color); +} + +.anp-header-color-toggle.anp-h4-rosewater .app-container, +.anp-header-color-toggle.anp-h4-rosewater .print { + --h4-color: rgb(var(--ctp-rosewater)); +} + +.anp-header-color-toggle.anp-h4-flamingo .app-container, +.anp-header-color-toggle.anp-h4-flamingo .print { + --h4-color: rgb(var(--ctp-flamingo)); +} + +.anp-header-color-toggle.anp-h4-pink .app-container, +.anp-header-color-toggle.anp-h4-pink .print { + --h4-color: rgb(var(--ctp-pink)); +} + +.anp-header-color-toggle.anp-h4-mauve .app-container, +.anp-header-color-toggle.anp-h4-mauve .print { + --h4-color: rgb(var(--ctp-mauve)); +} + +.anp-header-color-toggle.anp-h4-red .app-container, +.anp-header-color-toggle.anp-h4-red .print { + --h4-color: rgb(var(--ctp-red)); +} + +.anp-header-color-toggle.anp-h4-maroon .app-container, +.anp-header-color-toggle.anp-h4-maroon .print { + --h4-color: rgb(var(--ctp-maroon)); +} + +.anp-header-color-toggle.anp-h4-peach .app-container, +.anp-header-color-toggle.anp-h4-peach .print { + --h4-color: rgb(var(--ctp-peach)); +} + +.anp-header-color-toggle.anp-h4-yellow .app-container, +.anp-header-color-toggle.anp-h4-yellow .print { + --h4-color: rgb(var(--ctp-yellow)); +} + +.anp-header-color-toggle.anp-h4-green .app-container, +.anp-header-color-toggle.anp-h4-green .print { + --h4-color: rgb(var(--ctp-green)); +} + +.anp-header-color-toggle.anp-h4-teal .app-container, +.anp-header-color-toggle.anp-h4-teal .print { + --h4-color: rgb(var(--ctp-teal)); +} + +.anp-header-color-toggle.anp-h4-sky .app-container, +.anp-header-color-toggle.anp-h4-sky .print { + --h4-color: rgb(var(--ctp-sky)); +} + +.anp-header-color-toggle.anp-h4-sapphire .app-container, +.anp-header-color-toggle.anp-h4-sapphire .print { + --h4-color: rgb(var(--ctp-sapphire)); +} + +.anp-header-color-toggle.anp-h4-blue .app-container, +.anp-header-color-toggle.anp-h4-blue .print { + --h4-color: rgb(var(--ctp-blue)); +} + +.anp-header-color-toggle.anp-h4-lavender .app-container, +.anp-header-color-toggle.anp-h4-lavender .print { + --h4-color: rgb(var(--ctp-lavender)); +} + +.anp-h4-divider .markdown-rendered h4, +.anp-h4-divider .HyperMD-header-4 { + border-bottom: var(--hr-thickness) solid var(--background-modifier-border); + padding-bottom: 2px; +} +.anp-h4-divider.anp-header-divider-color-toggle .markdown-rendered h4, +.anp-h4-divider.anp-header-divider-color-toggle .HyperMD-header-4 { + border-bottom-color: currentColor; +} + +.cm-formatting-header-4 { + color: var(--h4-color); +} + +.anp-header-color-toggle.anp-h5-rosewater .app-container, +.anp-header-color-toggle.anp-h5-rosewater .print { + --h5-color: rgb(var(--ctp-rosewater)); +} + +.anp-header-color-toggle.anp-h5-flamingo .app-container, +.anp-header-color-toggle.anp-h5-flamingo .print { + --h5-color: rgb(var(--ctp-flamingo)); +} + +.anp-header-color-toggle.anp-h5-pink .app-container, +.anp-header-color-toggle.anp-h5-pink .print { + --h5-color: rgb(var(--ctp-pink)); +} + +.anp-header-color-toggle.anp-h5-mauve .app-container, +.anp-header-color-toggle.anp-h5-mauve .print { + --h5-color: rgb(var(--ctp-mauve)); +} + +.anp-header-color-toggle.anp-h5-red .app-container, +.anp-header-color-toggle.anp-h5-red .print { + --h5-color: rgb(var(--ctp-red)); +} + +.anp-header-color-toggle.anp-h5-maroon .app-container, +.anp-header-color-toggle.anp-h5-maroon .print { + --h5-color: rgb(var(--ctp-maroon)); +} + +.anp-header-color-toggle.anp-h5-peach .app-container, +.anp-header-color-toggle.anp-h5-peach .print { + --h5-color: rgb(var(--ctp-peach)); +} + +.anp-header-color-toggle.anp-h5-yellow .app-container, +.anp-header-color-toggle.anp-h5-yellow .print { + --h5-color: rgb(var(--ctp-yellow)); +} + +.anp-header-color-toggle.anp-h5-green .app-container, +.anp-header-color-toggle.anp-h5-green .print { + --h5-color: rgb(var(--ctp-green)); +} + +.anp-header-color-toggle.anp-h5-teal .app-container, +.anp-header-color-toggle.anp-h5-teal .print { + --h5-color: rgb(var(--ctp-teal)); +} + +.anp-header-color-toggle.anp-h5-sky .app-container, +.anp-header-color-toggle.anp-h5-sky .print { + --h5-color: rgb(var(--ctp-sky)); +} + +.anp-header-color-toggle.anp-h5-sapphire .app-container, +.anp-header-color-toggle.anp-h5-sapphire .print { + --h5-color: rgb(var(--ctp-sapphire)); +} + +.anp-header-color-toggle.anp-h5-blue .app-container, +.anp-header-color-toggle.anp-h5-blue .print { + --h5-color: rgb(var(--ctp-blue)); +} + +.anp-header-color-toggle.anp-h5-lavender .app-container, +.anp-header-color-toggle.anp-h5-lavender .print { + --h5-color: rgb(var(--ctp-lavender)); +} + +.anp-h5-divider .markdown-rendered h5, +.anp-h5-divider .HyperMD-header-5 { + border-bottom: var(--hr-thickness) solid var(--background-modifier-border); + padding-bottom: 2px; +} +.anp-h5-divider.anp-header-divider-color-toggle .markdown-rendered h5, +.anp-h5-divider.anp-header-divider-color-toggle .HyperMD-header-5 { + border-bottom-color: currentColor; +} + +.cm-formatting-header-5 { + color: var(--h5-color); +} + +.anp-header-color-toggle.anp-h6-rosewater .app-container, +.anp-header-color-toggle.anp-h6-rosewater .print { + --h6-color: rgb(var(--ctp-rosewater)); +} + +.anp-header-color-toggle.anp-h6-flamingo .app-container, +.anp-header-color-toggle.anp-h6-flamingo .print { + --h6-color: rgb(var(--ctp-flamingo)); +} + +.anp-header-color-toggle.anp-h6-pink .app-container, +.anp-header-color-toggle.anp-h6-pink .print { + --h6-color: rgb(var(--ctp-pink)); +} + +.anp-header-color-toggle.anp-h6-mauve .app-container, +.anp-header-color-toggle.anp-h6-mauve .print { + --h6-color: rgb(var(--ctp-mauve)); +} + +.anp-header-color-toggle.anp-h6-red .app-container, +.anp-header-color-toggle.anp-h6-red .print { + --h6-color: rgb(var(--ctp-red)); +} + +.anp-header-color-toggle.anp-h6-maroon .app-container, +.anp-header-color-toggle.anp-h6-maroon .print { + --h6-color: rgb(var(--ctp-maroon)); +} + +.anp-header-color-toggle.anp-h6-peach .app-container, +.anp-header-color-toggle.anp-h6-peach .print { + --h6-color: rgb(var(--ctp-peach)); +} + +.anp-header-color-toggle.anp-h6-yellow .app-container, +.anp-header-color-toggle.anp-h6-yellow .print { + --h6-color: rgb(var(--ctp-yellow)); +} + +.anp-header-color-toggle.anp-h6-green .app-container, +.anp-header-color-toggle.anp-h6-green .print { + --h6-color: rgb(var(--ctp-green)); +} + +.anp-header-color-toggle.anp-h6-teal .app-container, +.anp-header-color-toggle.anp-h6-teal .print { + --h6-color: rgb(var(--ctp-teal)); +} + +.anp-header-color-toggle.anp-h6-sky .app-container, +.anp-header-color-toggle.anp-h6-sky .print { + --h6-color: rgb(var(--ctp-sky)); +} + +.anp-header-color-toggle.anp-h6-sapphire .app-container, +.anp-header-color-toggle.anp-h6-sapphire .print { + --h6-color: rgb(var(--ctp-sapphire)); +} + +.anp-header-color-toggle.anp-h6-blue .app-container, +.anp-header-color-toggle.anp-h6-blue .print { + --h6-color: rgb(var(--ctp-blue)); +} + +.anp-header-color-toggle.anp-h6-lavender .app-container, +.anp-header-color-toggle.anp-h6-lavender .print { + --h6-color: rgb(var(--ctp-lavender)); +} + +.anp-h6-divider .markdown-rendered h6, +.anp-h6-divider .HyperMD-header-6 { + border-bottom: var(--hr-thickness) solid var(--background-modifier-border); + padding-bottom: 2px; +} +.anp-h6-divider.anp-header-divider-color-toggle .markdown-rendered h6, +.anp-h6-divider.anp-header-divider-color-toggle .HyperMD-header-6 { + border-bottom-color: currentColor; +} + +.cm-formatting-header-6 { + color: var(--h6-color); +} + +.anp-header-margin-toggle .cm-header-1, +.anp-header-margin-toggle .markdown-preview-view h1 { + margin-block-start: var(--anp-header-margin-value); + margin-block-end: var(--anp-header-margin-value); +} + +.anp-header-margin-toggle .cm-header-2, +.anp-header-margin-toggle .markdown-preview-view h2 { + margin-block-start: var(--anp-header-margin-value); + margin-block-end: var(--anp-header-margin-value); +} + +.anp-header-margin-toggle .cm-header-3, +.anp-header-margin-toggle .markdown-preview-view h3 { + margin-block-start: var(--anp-header-margin-value); + margin-block-end: var(--anp-header-margin-value); +} + +.anp-header-margin-toggle .cm-header-4, +.anp-header-margin-toggle .markdown-preview-view h4 { + margin-block-start: var(--anp-header-margin-value); + margin-block-end: var(--anp-header-margin-value); +} + +.anp-header-margin-toggle .cm-header-5, +.anp-header-margin-toggle .markdown-preview-view h5 { + margin-block-start: var(--anp-header-margin-value); + margin-block-end: var(--anp-header-margin-value); +} + +.anp-header-margin-toggle .cm-header-6, +.anp-header-margin-toggle .markdown-preview-view h6 { + margin-block-start: var(--anp-header-margin-value); + margin-block-end: var(--anp-header-margin-value); +} + +.cm-header { + display: inline-block; +} + +.anp-editor-font-toggle .markdown-source-view:not(.is-live-preview) { + --h1-font: var(--anp-editor-font); + --h2-font: var(--anp-editor-font); + --h3-font: var(--anp-editor-font); + --h4-font: var(--anp-editor-font); + --h5-font: var(--anp-editor-font); + --h6-font: var(--anp-editor-font); +} + +.hide-comment-indicators .is-live-preview .cm-line:not(.cm-active) .cm-comment-start, +.hide-comment-indicators .is-live-preview .cm-line:not(.cm-active) .cm-comment-end { + display: none; +} + +.hide-comments .is-live-preview .cm-line:not(.cm-active) .cm-comment { + display: none; +} + +/*-Custom hr margins-*/ +hr { + margin-block-start: 5px; + margin-block-end: 5px; +} + +.anp-list-toggle div.el-ul > ul.has-list-bullet > li > ul.has-list-bullet > li > .list-bullet::after { + --list-bullet-border: 1px solid var(--list-marker-color); + background-color: transparent; + width: calc(var(--list-bullet-size) - 1px); + height: calc(var(--list-bullet-size) - 1px); +} +.anp-list-toggle div.el-ul > ul.has-list-bullet > li > ul.has-list-bullet > li > ul.has-list-bullet > li > .list-bullet::after { + --list-bullet-radius: 0; + background-color: var(--list-marker-color); +} +.anp-list-toggle div.el-ul > ul.has-list-bullet > li > ul.has-list-bullet > li > ul.has-list-bullet > li > ul.has-list-bullet > li > .list-bullet::after { + width: calc(var(--list-bullet-size) - 1px); + height: calc(var(--list-bullet-size) - 1px); + --list-bullet-radius: 0; + --list-bullet-border: 1px solid var(--list-marker-color); + background-color: transparent; +} + +.anp-latex-inline-rosewater span.math:not(.math-block) { + color: rgb(var(--ctp-rosewater)); +} + +.anp-latex-block-rosewater .math-block { + color: rgb(var(--ctp-rosewater)); +} + +.anp-latex-inline-flamingo span.math:not(.math-block) { + color: rgb(var(--ctp-flamingo)); +} + +.anp-latex-block-flamingo .math-block { + color: rgb(var(--ctp-flamingo)); +} + +.anp-latex-inline-pink span.math:not(.math-block) { + color: rgb(var(--ctp-pink)); +} + +.anp-latex-block-pink .math-block { + color: rgb(var(--ctp-pink)); +} + +.anp-latex-inline-mauve span.math:not(.math-block) { + color: rgb(var(--ctp-mauve)); +} + +.anp-latex-block-mauve .math-block { + color: rgb(var(--ctp-mauve)); +} + +.anp-latex-inline-red span.math:not(.math-block) { + color: rgb(var(--ctp-red)); +} + +.anp-latex-block-red .math-block { + color: rgb(var(--ctp-red)); +} + +.anp-latex-inline-maroon span.math:not(.math-block) { + color: rgb(var(--ctp-maroon)); +} + +.anp-latex-block-maroon .math-block { + color: rgb(var(--ctp-maroon)); +} + +.anp-latex-inline-peach span.math:not(.math-block) { + color: rgb(var(--ctp-peach)); +} + +.anp-latex-block-peach .math-block { + color: rgb(var(--ctp-peach)); +} + +.anp-latex-inline-yellow span.math:not(.math-block) { + color: rgb(var(--ctp-yellow)); +} + +.anp-latex-block-yellow .math-block { + color: rgb(var(--ctp-yellow)); +} + +.anp-latex-inline-green span.math:not(.math-block) { + color: rgb(var(--ctp-green)); +} + +.anp-latex-block-green .math-block { + color: rgb(var(--ctp-green)); +} + +.anp-latex-inline-teal span.math:not(.math-block) { + color: rgb(var(--ctp-teal)); +} + +.anp-latex-block-teal .math-block { + color: rgb(var(--ctp-teal)); +} + +.anp-latex-inline-sky span.math:not(.math-block) { + color: rgb(var(--ctp-sky)); +} + +.anp-latex-block-sky .math-block { + color: rgb(var(--ctp-sky)); +} + +.anp-latex-inline-sapphire span.math:not(.math-block) { + color: rgb(var(--ctp-sapphire)); +} + +.anp-latex-block-sapphire .math-block { + color: rgb(var(--ctp-sapphire)); +} + +.anp-latex-inline-blue span.math:not(.math-block) { + color: rgb(var(--ctp-blue)); +} + +.anp-latex-block-blue .math-block { + color: rgb(var(--ctp-blue)); +} + +.anp-latex-inline-lavender span.math:not(.math-block) { + color: rgb(var(--ctp-lavender)); +} + +.anp-latex-block-lavender .math-block { + color: rgb(var(--ctp-lavender)); +} + +.anp-latex-inline-text span.math:not(.math-block) { + color: rgb(var(--ctp-text)); +} + +.anp-latex-block-text .math-block { + color: rgb(var(--ctp-text)); +} + +.anp-latex-inline-subtext1 span.math:not(.math-block) { + color: rgb(var(--ctp-subtext1)); +} + +.anp-latex-block-subtext1 .math-block { + color: rgb(var(--ctp-subtext1)); +} + +.anp-latex-inline-subtext0 span.math:not(.math-block) { + color: rgb(var(--ctp-subtext0)); +} + +.anp-latex-block-subtext0 .math-block { + color: rgb(var(--ctp-subtext0)); +} + +.anp-latex-inline-overlay2 span.math:not(.math-block) { + color: rgb(var(--ctp-overlay2)); +} + +.anp-latex-block-overlay2 .math-block { + color: rgb(var(--ctp-overlay2)); +} + +.anp-latex-inline-overlay1 span.math:not(.math-block) { + color: rgb(var(--ctp-overlay1)); +} + +.anp-latex-block-overlay1 .math-block { + color: rgb(var(--ctp-overlay1)); +} + +.anp-latex-inline-overlay0 span.math:not(.math-block) { + color: rgb(var(--ctp-overlay0)); +} + +.anp-latex-block-overlay0 .math-block { + color: rgb(var(--ctp-overlay0)); +} + +.anp-latex-inline-surface2 span.math:not(.math-block) { + color: rgb(var(--ctp-surface2)); +} + +.anp-latex-block-surface2 .math-block { + color: rgb(var(--ctp-surface2)); +} + +.anp-latex-inline-surface1 span.math:not(.math-block) { + color: rgb(var(--ctp-surface1)); +} + +.anp-latex-block-surface1 .math-block { + color: rgb(var(--ctp-surface1)); +} + +.anp-latex-inline-surface0 span.math:not(.math-block) { + color: rgb(var(--ctp-surface0)); +} + +.anp-latex-block-surface0 .math-block { + color: rgb(var(--ctp-surface0)); +} + +.math-block { + font-size: var(--anp-latex-block-font-size, var(--font-size-lg)); +} + +.anp-toggle-metadata .frontmatter-container, +.markdown-rendered.hide-metadata .frontmatter-container { + display: none; +} + +/*-Recolor table borders-*/ +.anp-table-toggle .markdown-preview-view:not(.cards):not(.table-disable) table, +.anp-table-toggle .markdown-preview-view:not(.cards):not(.table-disable) table td, +.anp-table-toggle .markdown-preview-view:not(.cards):not(.table-disable) table th, +.anp-table-toggle .markdown-preview-view:not(.cards):not(.table-disable) table thead tr > th:first-child, +.anp-table-toggle .markdown-preview-view:not(.cards):not(.table-disable) table thead tr > th, +.anp-table-toggle .markdown-preview-view:not(.cards):not(.table-disable) table thead tr > th:last-child, +.anp-table-toggle .markdown-preview-view.cards:not(.table-disable) table:not(.dataview), +.anp-table-toggle .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) td, +.anp-table-toggle .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) th, +.anp-table-toggle .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) thead tr > th:first-child, +.anp-table-toggle .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) thead tr > th, +.anp-table-toggle .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) thead tr > th:last-child, +.anp-table-toggle .is-live-preview:not(.cards):not(.table-disable) table, +.anp-table-toggle .is-live-preview:not(.cards):not(.table-disable) table td, +.anp-table-toggle .is-live-preview:not(.cards):not(.table-disable) table th, +.anp-table-toggle .is-live-preview:not(.cards):not(.table-disable) table thead tr > th:first-child, +.anp-table-toggle .is-live-preview:not(.cards):not(.table-disable) table thead tr > th, +.anp-table-toggle .is-live-preview:not(.cards):not(.table-disable) table thead tr > th:last-child, +.anp-table-toggle .is-live-preview.cards:not(.table-disable) table:not(.dataview), +.anp-table-toggle .is-live-preview.cards:not(.table-disable) table:not(.dataview) td, +.anp-table-toggle .is-live-preview.cards:not(.table-disable) table:not(.dataview) th, +.anp-table-toggle .is-live-preview.cards:not(.table-disable) table:not(.dataview) thead tr > th:first-child, +.anp-table-toggle .is-live-preview.cards:not(.table-disable) table:not(.dataview) thead tr > th, +.anp-table-toggle .is-live-preview.cards:not(.table-disable) table:not(.dataview) thead tr > th:last-child { + border: var(--anp-table-thickness, 1px) solid var(--table-border-color); +} +.anp-table-toggle .markdown-preview-view:not(.cards):not(.table-disable) table th:not([align]), +.anp-table-toggle .markdown-preview-view:not(.cards):not(.table-disable) table thead tr > th:first-child:not([align]), +.anp-table-toggle .markdown-preview-view:not(.cards):not(.table-disable) table thead tr > th:not([align]), +.anp-table-toggle .markdown-preview-view:not(.cards):not(.table-disable) table thead tr > th:last-child:not([align]), +.anp-table-toggle .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) th:not([align]), +.anp-table-toggle .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) thead tr > th:first-child:not([align]), +.anp-table-toggle .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) thead tr > th:not([align]), +.anp-table-toggle .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) thead tr > th:last-child:not([align]), +.anp-table-toggle .is-live-preview:not(.cards):not(.table-disable) table th:not([align]), +.anp-table-toggle .is-live-preview:not(.cards):not(.table-disable) table thead tr > th:first-child:not([align]), +.anp-table-toggle .is-live-preview:not(.cards):not(.table-disable) table thead tr > th:not([align]), +.anp-table-toggle .is-live-preview:not(.cards):not(.table-disable) table thead tr > th:last-child:not([align]), +.anp-table-toggle .is-live-preview.cards:not(.table-disable) table:not(.dataview) th:not([align]), +.anp-table-toggle .is-live-preview.cards:not(.table-disable) table:not(.dataview) thead tr > th:first-child:not([align]), +.anp-table-toggle .is-live-preview.cards:not(.table-disable) table:not(.dataview) thead tr > th:not([align]), +.anp-table-toggle .is-live-preview.cards:not(.table-disable) table:not(.dataview) thead tr > th:last-child:not([align]) { + text-align: var(--anp-table-align-th, center); +} +.anp-table-toggle .markdown-preview-view:not(.cards):not(.table-disable) table td:not([align]), +.anp-table-toggle .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) td:not([align]), +.anp-table-toggle .is-live-preview:not(.cards):not(.table-disable) table td:not([align]), +.anp-table-toggle .is-live-preview.cards:not(.table-disable) table:not(.dataview) td:not([align]) { + text-align: var(--anp-table-align-td, center); +} + +table.dataview.table-view-table > tbody > tr:hover { + background-color: rgba(var(--ctp-surface1), 0.1) !important; +} + +.anp-table-toggle.anp-table-th-highlight .markdown-preview-view:not(.cards):not(.table-disable) th, +.anp-table-toggle.anp-table-th-highlight .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) th, +.anp-table-toggle.anp-table-th-highlight .is-live-preview:not(.cards):not(.table-disable) th, +.anp-table-toggle.anp-table-th-highlight .is-live-preview.cards:not(.table-disable) table:not(.dataview) th { + background-color: rgba(var(--ctp-mantle), var(--anp-table-highlight-opacity, 0.5)); +} + +.th-highlight.markdown-preview-view:not(.cards):not(.table-disable) th, .th-highlight.markdown-preview-view.cards:not(.table-disable) table:not(.dataview) th, .th-highlight.is-live-preview:not(.cards):not(.table-disable) th, .th-highlight.is-live-preview.cards:not(.table-disable) table:not(.dataview) th { + background-color: rgba(var(--ctp-mantle), var(--anp-table-highlight-opacity, 0.5)); +} + +.anp-table-toggle.anp-table-row-alt .markdown-preview-view:not(.cards):not(.table-disable) tr:nth-child(2n) td, +.anp-table-toggle.anp-table-row-alt .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) tr:nth-child(2n) td, +.anp-table-toggle.anp-table-row-alt .is-live-preview:not(.cards):not(.table-disable) tr:nth-child(2n) td, +.anp-table-toggle.anp-table-row-alt .is-live-preview.cards:not(.table-disable) table:not(.dataview) tr:nth-child(2n) td { + background-color: rgba(var(--ctp-mantle), var(--anp-table-highlight-opacity, 0.5)); +} + +.row-alt.markdown-preview-view:not(.cards):not(.table-disable) tr:nth-child(2n) td, .row-alt.markdown-preview-view.cards:not(.table-disable) table:not(.dataview) tr:nth-child(2n) td, .row-alt.is-live-preview:not(.cards):not(.table-disable) tr:nth-child(2n) td, .row-alt.is-live-preview.cards:not(.table-disable) table:not(.dataview) tr:nth-child(2n) td { + background-color: rgba(var(--ctp-mantle), var(--anp-table-highlight-opacity, 0.5)); +} + +.anp-table-toggle.anp-table-col-alt .markdown-preview-view:not(.cards):not(.table-disable) tr td:nth-child(2n), +.anp-table-toggle.anp-table-col-alt .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) tr td:nth-child(2n), +.anp-table-toggle.anp-table-col-alt .is-live-preview:not(.cards):not(.table-disable) tr td:nth-child(2n), +.anp-table-toggle.anp-table-col-alt .is-live-preview.cards:not(.table-disable) table:not(.dataview) tr td:nth-child(2n) { + background-color: rgba(var(--ctp-mantle), var(--anp-table-highlight-opacity, 0.5)); +} + +.col-alt.markdown-preview-view:not(.cards):not(.table-disable) tr td:nth-child(2n), .col-alt.markdown-preview-view.cards:not(.table-disable) table:not(.dataview) tr td:nth-child(2n), .col-alt.is-live-preview:not(.cards):not(.table-disable) tr td:nth-child(2n), .col-alt.is-live-preview.cards:not(.table-disable) table:not(.dataview) tr td:nth-child(2n) { + background-color: rgba(var(--ctp-mantle), var(--anp-table-highlight-opacity, 0.5)); +} + +.anp-table-toggle.anp-table-full .markdown-preview-view:not(.cards):not(.table-disable) td, +.anp-table-toggle.anp-table-full .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) td, +.anp-table-toggle.anp-table-full .is-live-preview:not(.cards):not(.table-disable) td, +.anp-table-toggle.anp-table-full .is-live-preview.cards:not(.table-disable) table:not(.dataview) td { + background-color: rgba(var(--ctp-mantle), var(--anp-table-highlight-opacity, 0.5)); +} + +.table-full.markdown-preview-view:not(.cards):not(.table-disable) td, .table-full.markdown-preview-view.cards:not(.table-disable) table:not(.dataview) td, .table-full.is-live-preview:not(.cards):not(.table-disable) td, .table-full.is-live-preview.cards:not(.table-disable) table:not(.dataview) td { + background-color: rgba(var(--ctp-mantle), var(--anp-table-highlight-opacity, 0.5)); +} + +.anp-table-toggle.anp-table-checkered .markdown-preview-view:not(.cards):not(.table-disable) tr td:nth-child(2n), +.anp-table-toggle.anp-table-checkered .markdown-preview-view:not(.cards):not(.table-disable) tr:nth-child(2n) td, +.anp-table-toggle.anp-table-checkered .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) tr td:nth-child(2n), +.anp-table-toggle.anp-table-checkered .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) tr:nth-child(2n) td, +.anp-table-toggle.anp-table-checkered .is-live-preview:not(.cards):not(.table-disable) tr td:nth-child(2n), +.anp-table-toggle.anp-table-checkered .is-live-preview:not(.cards):not(.table-disable) tr:nth-child(2n) td, +.anp-table-toggle.anp-table-checkered .is-live-preview.cards:not(.table-disable) table:not(.dataview) tr td:nth-child(2n), +.anp-table-toggle.anp-table-checkered .is-live-preview.cards:not(.table-disable) table:not(.dataview) tr:nth-child(2n) td { + background-color: rgba(var(--ctp-mantle), var(--anp-table-highlight-opacity, 0.5)); +} +.anp-table-toggle.anp-table-checkered .markdown-preview-view:not(.cards):not(.table-disable) tr:nth-child(2n) td:nth-child(2n), +.anp-table-toggle.anp-table-checkered .markdown-preview-view.cards:not(.table-disable) table:not(.dataview) tr:nth-child(2n) td:nth-child(2n), +.anp-table-toggle.anp-table-checkered .is-live-preview:not(.cards):not(.table-disable) tr:nth-child(2n) td:nth-child(2n), +.anp-table-toggle.anp-table-checkered .is-live-preview.cards:not(.table-disable) table:not(.dataview) tr:nth-child(2n) td:nth-child(2n) { + background-color: rgba(var(--ctp-crust), var(--anp-table-highlight-opacity, 0.5)); +} + +.checkered.markdown-preview-view:not(.cards):not(.table-disable) tr td:nth-child(2n), +.checkered.markdown-preview-view:not(.cards):not(.table-disable) tr:nth-child(2n) td, .checkered.markdown-preview-view.cards:not(.table-disable) table:not(.dataview) tr td:nth-child(2n), +.checkered.markdown-preview-view.cards:not(.table-disable) table:not(.dataview) tr:nth-child(2n) td, .checkered.is-live-preview:not(.cards):not(.table-disable) tr td:nth-child(2n), +.checkered.is-live-preview:not(.cards):not(.table-disable) tr:nth-child(2n) td, .checkered.is-live-preview.cards:not(.table-disable) table:not(.dataview) tr td:nth-child(2n), +.checkered.is-live-preview.cards:not(.table-disable) table:not(.dataview) tr:nth-child(2n) td { + background-color: rgba(var(--ctp-mantle), var(--anp-table-highlight-opacity, 0.5)); +} +.checkered.markdown-preview-view:not(.cards):not(.table-disable) tr:nth-child(2n) td:nth-child(2n), .checkered.markdown-preview-view.cards:not(.table-disable) table:not(.dataview) tr:nth-child(2n) td:nth-child(2n), .checkered.is-live-preview:not(.cards):not(.table-disable) tr:nth-child(2n) td:nth-child(2n), .checkered.is-live-preview.cards:not(.table-disable) table:not(.dataview) tr:nth-child(2n) td:nth-child(2n) { + background-color: rgba(var(--ctp-crust), var(--anp-table-highlight-opacity, 0.5)); +} + +.anp-table-auto.markdown-rendered:not(.cards):not(.table-disable) table, +.anp-table-auto.markdown-rendered.cards:not(.table-disable) table:not(.dataview) { + margin: 0 auto; +} + +.anp-table-width.markdown-rendered:not(.cards):not(.table-disable) table, +.anp-table-width.markdown-rendered.cards:not(.table-disable) table:not(.dataview) { + width: var(--anp-table-width-pct); +} + +.anp-table-auto.anp-table-toggle .markdown-rendered:not(.cards):not(.table-disable) table, +.anp-table-auto.anp-table-toggle .markdown-rendered.cards:not(.table-disable) table:not(.dataview) { + margin: 0 auto; +} + +.anp-table-width.anp-table-toggle .markdown-rendered:not(.cards):not(.table-disable) table, +.anp-table-width.anp-table-toggle .markdown-rendered.cards:not(.table-disable) table:not(.dataview) { + width: var(--anp-table-width-pct); + margin-left: calc(50% - var(--anp-table-width-pct) / 2); + margin-right: calc(50% - var(--anp-table-width-pct) / 2); +} + +/*-Custom folder title-*/ +.anp-custom-vault-toggle .nav-folder.mod-root > .nav-folder-title > .nav-folder-title-content { + font-size: 130%; + font-weight: bold; + text-align: center; + margin-left: 30px; +} + +.anp-custom-vault-toggle .nav-folder.mod-root > .nav-folder-title > .nav-folder-title-content:before { + content: " "; + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' data-darkreader-inline-stroke='' style='--darkreader-inline-stroke:currentColor;'%3E%3Cpath d='m6 14 1.45-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.55 6a2 2 0 0 1-1.94 1.5H4a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.93a2 2 0 0 1 1.66.9l.82 1.2a2 2 0 0 0 1.66.9H18a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3C/svg%3E"); + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' data-darkreader-inline-stroke='' style='--darkreader-inline-stroke:currentColor;'%3E%3Cpath d='m6 14 1.45-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.55 6a2 2 0 0 1-1.94 1.5H4a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.93a2 2 0 0 1 1.66.9l.82 1.2a2 2 0 0 0 1.66.9H18a2 2 0 0 1 2 2v2'%3E%3C/path%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + mask-size: contain; + background-size: contain; + text-align: center; + width: 26px; + height: 26px; + margin-left: -30px; + margin-top: -4px; + color: rgb(var(--ctp-yellow)); + position: absolute; + background-color: rgb(var(--ctp-yellow)); +} + +/*----------------------------------- +Rainbow tags is a snippet by @raisabelatrix +Link: https://gist.github.com/raisabelatrix/eb383f7e19b59f951430c2f3c6ed80b0 +-----------------------------------*/ +body.rainbow-tags { + --rainbow-tags-opacity: 0.3; + --r1-color: rgb(var(--ctp-red)); + --r2-color: rgb(var(--ctp-peach)); + --r3-color: rgb(var(--ctp-yellow)); + --r4-color: rgb(var(--ctp-green)); + --r5-color: rgb(var(--ctp-blue)); + --r6-color: rgb(var(--ctp-lavender)); + --r7-color: rgb(var(--ctp-mauve)); + --r1-color-light: rgba(var(--ctp-red), var(--rainbow-tags-opacity)); + --r2-color-light: rgba(var(--ctp-peach), var(--rainbow-tags-opacity)); + --r3-color-light: rgba(var(--ctp-yellow), var(--rainbow-tags-opacity)); + --r4-color-light: rgba(var(--ctp-green), var(--rainbow-tags-opacity)); + --r5-color-light: rgba(var(--ctp-blue), var(--rainbow-tags-opacity)); + --r6-color-light: rgba(var(--ctp-lavender), var(--rainbow-tags-opacity)); + --r7-color-light: rgba(var(--ctp-mauve), var(--rainbow-tags-opacity)); +} + +.anp-collapse-folders .workspace-leaf-content:not([data-type=search]) .nav-folder.mod-root .nav-folder > .nav-folder-children:is(.nav-file, .nav-folder) { + margin-left: var(--size-2-1); +} +.anp-collapse-folders .workspace-leaf-content:not([data-type=search]) .tree-item .nav-folder-title { + align-items: center; +} +.anp-collapse-folders .workspace-leaf-content:not([data-type=search]) .tree-item .collapse-icon { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 24' fill='none' stroke='currentColor' stroke-linejoin='round' stroke-linecap='round' stroke-width='2'%3E%3Cpath d='M6 14l1.45-2.9A2 2 0 0 1 9.24 10H22a2 2 0 0 1 1.94 2.5l-1.55 6a2 2 0 0 1-1.94 1.5H4a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.93a2 2 0 0 1 1.66.9l.82 1.2a2 2 0 0 0 1.66.9H20a2 2 0 0 1 2 2v2'/%3E%3C/svg%3E%0A"); + -webkit-mask-repeat: no-repeat; + background-color: currentColor; + display: flex; + flex-basis: 100%; + height: 16px; + width: 17px; +} +.anp-collapse-folders .workspace-leaf-content:not([data-type=search]) .tree-item.is-collapsed .collapse-icon { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 27 24' fill='none' stroke='currentColor' stroke-linejoin='round' stroke-linecap='round' stroke-width='2'%3E%3Cpath d='M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2z'/%3E%3Cpath d='M2 10h20' /%3E%3C/svg%3E%0A"); +} +.anp-collapse-folders .workspace-leaf-content:not([data-type=search]) .tree-item .collapse-icon svg { + display: none; +} + +.anp-color-transition-toggle .horizontal-tab-content, +.anp-color-transition-toggle .vertical-tab-content, +.anp-color-transition-toggle .vertical-tab-header, +.anp-color-transition-toggle .workspace-tab-header-container, +.anp-color-transition-toggle .workspace-fake-target-overlay:not(.is-in-sidebar) .workspace-tabs .workspace-leaf, +.anp-color-transition-toggle .mod-root .workspace-tabs .workspace-leaf, +.anp-color-transition-toggle .setting-item-name { + transition: background-color 0.5s ease-in-out, color 0.5s ease-in-out, border-color 0.5s ease-in-out !important; +} + +.callout[data-callout=capacities-card] { + --h1-font: var(--font-text); + --h2-font: var(--font-text); + --h3-font: var(--font-text); + --h4-font: var(--font-text); + --h5-font: var(--font-text); + --h6-font: var(--font-text); + --h1-color: var(--text-normal); + --h2-color: var(--text-normal); + --h3-color: var(--text-normal); + --h4-color: var(--text-normal); + --h5-color: var(--text-normal); + --h6-color: var(--text-normal); + --italic-color: var(--text-normal); + --bold-color: var(--text-normal); +} + +.callout[data-callout=capacities-index] { + --highlight-mix-blend-mode: none; + margin-left: 10px; +} + +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card] { + background-color: var(--background-primary); + border-radius: 6px; + mix-blend-mode: normal; + overflow-y: hidden; +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card] > .callout-content { + padding: 0; + background-color: var(--background-primary); + overflow-y: hidden; +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card-prop], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card-prop] { + border-radius: 0; + top: -1px; + padding-top: 1px; + right: 11px; + padding-right: 1px; + height: calc(100% + 6px); +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card-prop] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card-prop] > .callout-content { + padding: 0; +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop] { + border: none; + padding: 0; +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop] > .callout-content { + margin: 0 10px 7px 10px; + background-color: var(--background-primary); + border-color: var(--background-modifier-border); + padding: 3px 0; + border-top-style: solid; + border-radius: 6px; +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop] > .callout-title, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop] > .callout-title { + text-transform: uppercase; + background-color: transparent; +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop] > .callout-title > .callout-title-inner, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop] > .callout-title > .callout-title-inner { + color: rgba(var(--ctp-text), 0.7); + font-size: 80%; +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-index], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-index] { + border-radius: 0; + margin: -1px; +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-index] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-index] > .callout-content { + padding: 0; +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-index] p:first-child, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-index] p:first-child { + margin-bottom: 0; +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-sidebar], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-sidebar] { + background-color: var(--background-secondary); +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-sidebar] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-sidebar] > .callout-content { + padding-right: 0; + padding-left: 0; + background-color: var(--background-secondary); +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop-image] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop-image] > .callout-content { + padding: 0; +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-body], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-body] { + border-width: 0 1px 0 0; + background-color: var(--background-primary); + mix-blend-mode: normal; +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-body] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-body] > .callout-content { + padding: var(--callout-padding); + background-color: var(--background-primary); +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-index], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card-prop], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop-image], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-sidebar], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-body], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-index], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card-prop], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop-image], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-sidebar], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-body], .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card] { + border-color: var(--background-modifier-border); +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-index] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card-prop] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop-image] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-sidebar] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-body] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-index] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card-prop] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop-image] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-sidebar] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-body] > .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card] > .callout-content { + border-top: none; +} + +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-vanilla div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-index] .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-vanilla div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card-prop] .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-vanilla div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-sidebar] .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-vanilla.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-index] .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-vanilla.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-card-prop] .callout-content, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-vanilla.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-sidebar] .callout-content { + border-left: none; + padding: 0; +} +.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-vanilla div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop] .callout-title, .anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-vanilla.anp-callout-normal-toggle div.callout:not([data-callout-metadata*=revert])[data-callout=capacities-prop] .callout-title { + border-left: none; + background-color: transparent; +} + +.anp-card-layout.anp-callout-toggle.anp-callout-toggle.anp-callout-toggle.anp-callout-sleek { + --capacities-sidebar-bottom: calc(var(--anp-card-layout-padding, 10px) + 80px); +} + +.markdown-reading-view .markdown-preview-view.capacities-card { + overflow-y: hidden; +} +.markdown-reading-view .markdown-preview-view.capacities-card::after { + display: none; +} + +/*-Button for metadata-*/ +body.anuppuccin-accent-toggle.anp-button-metadata-toggle .frontmatter-container .frontmatter-container-header, +body.anuppuccin-accent-toggle .markdown-rendered.metadata-button .frontmatter-container .frontmatter-container-header { + background-color: rgba(var(--ctp-accent), 0.8); +} +body.anuppuccin-accent-toggle.anp-button-metadata-toggle .frontmatter-container .frontmatter-container-header:hover, +body.anuppuccin-accent-toggle .markdown-rendered.metadata-button .frontmatter-container .frontmatter-container-header:hover { + background-color: rgba(var(--ctp-accent), 0.7); +} +body.anuppuccin-accent-toggle.anp-button-metadata-toggle .frontmatter-container .frontmatter-container-header:active, +body.anuppuccin-accent-toggle .markdown-rendered.metadata-button .frontmatter-container .frontmatter-container-header:active { + background-color: rgba(var(--ctp-accent), 0.6); +} + +body:not(.anuppuccin-accent-toggle).anp-button-metadata-toggle .frontmatter-container .frontmatter-container-header, +body:not(.anuppuccin-accent-toggle) .markdown-rendered.metadata-button .frontmatter-container .frontmatter-container-header { + background-color: hsla(var(--color-accent-hsl), 0.8); +} +body:not(.anuppuccin-accent-toggle).anp-button-metadata-toggle .frontmatter-container .frontmatter-container-header:hover, +body:not(.anuppuccin-accent-toggle) .markdown-rendered.metadata-button .frontmatter-container .frontmatter-container-header:hover { + background-color: hsla(var(--color-accent-hsl), 0.7); +} +body:not(.anuppuccin-accent-toggle).anp-button-metadata-toggle .frontmatter-container .frontmatter-container-header:active, +body:not(.anuppuccin-accent-toggle) .markdown-rendered.metadata-button .frontmatter-container .frontmatter-container-header:active { + background-color: hsla(var(--color-accent-hsl), 0.6); +} + +.anp-button-metadata-toggle .frontmatter-container, +.markdown-rendered.metadata-button .frontmatter-container { + padding: 0; +} +.anp-button-metadata-toggle .frontmatter-container .frontmatter-container-header, +.markdown-rendered.metadata-button .frontmatter-container .frontmatter-container-header { + width: 32px !important; + z-index: 1; + height: 32px !important; + text-overflow: clip; + overflow: hidden; + color: transparent !important; + position: absolute; + left: calc(100% - 32px); + border-radius: 6px; +} +.anp-button-metadata-toggle .frontmatter-container .frontmatter-container-header:after, +.markdown-rendered.metadata-button .frontmatter-container .frontmatter-container-header:after { + position: absolute; + content: " "; + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' data-darkreader-inline-stroke='' style='--darkreader-inline-stroke:currentColor;'%3E%3Cpolygon points='12 2 2 7 12 12 22 7 12 2'%3E%3C/polygon%3E%3Cpolyline points='2 17 12 22 22 17'%3E%3C/polyline%3E%3Cpolyline points='2 12 12 17 22 12'%3E%3C/polyline%3E%3C/svg%3E"); + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' data-darkreader-inline-stroke='' style='--darkreader-inline-stroke:currentColor;'%3E%3Cpolygon points='12 2 2 7 12 12 22 7 12 2'%3E%3C/polygon%3E%3Cpolyline points='2 17 12 22 22 17'%3E%3C/polyline%3E%3Cpolyline points='2 12 12 17 22 12'%3E%3C/polyline%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + background-size: contain; + background-color: var(--background-primary); + color: var(--background-secondary); + width: 22px; + height: 22px; + margin-left: 5px; + margin-top: 5px; +} + +/*-------Tweak for Minimal Cards-------------- +Minimal cards are a snippet designed by Kepano for the Minimal theme. +None of the original code was used in this theme, and the following code is merely some tweaks to the snippet. +--------------------------------------------*/ +.cards .table-view-table > tbody > tr > td:last-child { + border-bottom-color: transparent !important; + /*-No border for last cell-*/ +} +.cards .table-view-table > tbody > tr > td:first-child { + width: 100% !important; + /*-Max width for first cell-*/ + border-bottom: 1px dashed var(--background-modifier-border) !important; + /*-Border for first table that spans to the end because of max width-*/ +} +.cards .table-view-table > tbody > tr > td:first-child span { + margin: 2px calc(var(--cards-padding) * 0.5) 0 calc(var(--cards-padding) * 0.5); + /*-Add padding to text-*/ +} +.cards .table-view-table > tbody > tr > td:first-child span a { + padding: 0 !important; + /*-0 padding on link-*/ +} +.cards .table-view-table > tbody > tr > td:not(:last-child):not(:first-child) > .el-p.el-p.el-p:not(.el-embed-image) { + border-bottom: 1px dashed var(--background-modifier-border); +} +.cards:not([class*=cards-cols-]) { + --cards-columns: repeat(auto-fit, minmax(var(--cards-min-width), var(--cards-max-width))); + /*-force card width to be obeyed on notes not having cards-cols css class-*/ +} + +.cards.cards-bookmark .table-view-table .table-view-tbody tr::after { + --text-normal: var(--text-muted); + content: " "; + width: 25px; + height: 25px; + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3C!--! --%3E%3Cpath d='M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z'/%3E%3C/svg%3E"); + /*-SVG for bookmark-*/ + -webkit-mask-repeat: no-repeat; + background-color: var(--color-accent); + /*-Bookmark follows accent color-*/ + position: absolute; + margin-top: calc(-2px + -1 * var(--cards-border-width)); + /*-Bookmark is a bit higher than the card-*/ + margin-left: 5px; + /*-Bookmark is 5px from the left*/ +} +.cards.cards-bookmark .table-view-table tbody tr > td:first-child span { + margin: 2px calc(var(--cards-padding) * 0.5) 0 calc(var(--cards-padding) * 0.5 + 20px); + /*-Shift first cell title to the left by about 20px-*/ +} + +/*---------------COLORFUL FRAME--------------*/ +/*---------------------------------- +This feature is inspired by Kepano's Minimal theme: https://github.com/kepano/obsidian-minimal +None of the original code was used, and was written from scratch. +----------------------------------*/ +body { + --colorful-icon-color: var(--background-secondary); + --colorful-icon-color-alt: var(--background-secondary-alt); + --colorful-frame-color: rgba(var(--anp-colorful-frame-color, var(--ctp-accent)), var(--anp-colorful-frame-opacity, 1)); +} + +body.anp-colorful-frame-icon-toggle-light.theme-light, +body.anp-colorful-frame-icon-toggle-dark.theme-dark { + --colorful-icon-color: var(--text-normal); + --colorful-icon-color-alt: var(--text-muted); +} + +.anp-colorful-frame.anp-fixed-status-bar.anp-card-layout .status-bar, .anp-colorful-frame.anp-fixed-status-bar.anp-border-layout .status-bar { + --status-bar-background: var(--colorful-frame-color); + --status-bar-text-color: var(--colorful-icon-color); +} +.anp-colorful-frame.anp-fixed-status-bar.anp-card-layout .status-bar .status-bar-item.mod-clickable:hover, .anp-colorful-frame.anp-fixed-status-bar.anp-border-layout .status-bar .status-bar-item.mod-clickable:hover { + color: var(--colorful-icon-color); + background-color: rgba(var(--ctp-crust), 0.2); +} +.anp-colorful-frame.anp-card-layout .workspace-split.mod-right-split .workspace-tabs .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner, .anp-colorful-frame.anp-card-layout .workspace-split.mod-left-split .workspace-tabs .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .workspace-split.mod-left-split .workspace-tabs.mod-top .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .workspace-split.mod-right-split .workspace-tabs.mod-top .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner { + background-color: rgba(var(--ctp-crust), 0.2); +} +.anp-colorful-frame.is-frameless.is-frameless:not(.is-hidden-frameless) .sidebar-toggle-button.mod-left { + border-radius: 0 var(--radius-m) var(--radius-m) 0; +} +.anp-colorful-frame.anuppuccin-accent-toggle.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-top .workspace-tab-header-container, .anp-colorful-frame.anuppuccin-accent-toggle.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .workspace-ribbon.mod-left:before, .anp-colorful-frame.anuppuccin-accent-toggle.anp-colorful-frame.anp-card-layout, .anp-colorful-frame.anuppuccin-accent-toggle.anp-colorful-frame.anp-card-layout .workspace-tabs.mod-top, .anp-colorful-frame.anuppuccin-accent-toggle.anp-colorful-frame.anp-card-layout .sidebar-toggle-button, .anp-colorful-frame.anuppuccin-accent-toggle.anp-colorful-frame.anp-card-layout .workspace-ribbon.mod-left:before { + --tab-container-background: rgba(var(--anp-colorful-frame-color, var(--ctp-accent)), var(--anp-colorful-frame-opacity, 1)); + --titlebar-background: rgba(var(--anp-colorful-frame-color, var(--ctp-accent)), var(--anp-colorful-frame-opacity, 1)); +} +.anp-colorful-frame.anuppuccin-accent-toggle.anp-colorful-frame.anp-card-layout .prompt { + --background-modifier-hover: rgba(var(--ctp-text), 0.075) ; +} +.anp-colorful-frame.anuppuccin-accent-toggle.anp-colorful-frame .sidebar-toggle-button, .anp-colorful-frame.anp-colorful-frame.anp-colorful-frame.anp-colorful-frame .sidebar-toggle-button { + --background-modifier-hover: rgba(var(--ctp-text), 0.075); +} +.anp-colorful-frame.is-focused .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner .workspace-tab-header-inner-title, +.anp-colorful-frame.is-focused .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner .workspace-tab-header-inner-close-button { + color: var(--text-muted); +} +.anp-colorful-frame .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header-inner .workspace-tab-header-inner-close-button { + color: var(--text-muted); +} +.anp-colorful-frame.is-focused .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header.is-active .workspace-tab-header-inner .workspace-tab-header-inner-title, +.anp-colorful-frame.is-focused .workspace-tabs.mod-stacked .workspace-tab-container .workspace-tab-header.is-active .workspace-tab-header-inner .workspace-tab-header-inner-close-button { + color: var(--color-accent); +} +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-top .workspace-tab-header-container, .anp-colorful-frame.anp-colorful-frame.anp-card-layout, .anp-colorful-frame.anp-colorful-frame.anp-card-layout .workspace-tabs.mod-top, .anp-colorful-frame.anp-colorful-frame.anp-card-layout .sidebar-toggle-button, .anp-colorful-frame.anp-colorful-frame.anp-card-layout .workspace-ribbon.mod-left:before, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .workspace-ribbon.mod-left:before { + --tab-container-background: hsla(var(--anp-colorful-frame-color-hsl, var(--color-accent-hsl)), var(--anp-colorful-frame-opacity, 1)); + --titlebar-background: hsla(var(--anp-colorful-frame-color-hsl, var(--color-accent-hsl)), var(--anp-colorful-frame-opacity, 1)); +} +.anp-colorful-frame.anp-card-layout { + --divider-color-hover: var(--background-secondary-alt); +} +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-top:not(.mod-stacked) .workspace-tab-header, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-top:not(.mod-stacked) .workspace-tab-header.is-active, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-top:not(.mod-stacked) .is-focused.workspace-tab-header, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-top:not(.mod-stacked) .workspace-tab-header-container, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused .mod-top:not(.mod-stacked) .workspace-tab-header, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused .mod-top:not(.mod-stacked) .workspace-tab-header.is-active, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused .mod-top:not(.mod-stacked) .is-focused.workspace-tab-header, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused .mod-top:not(.mod-stacked) .workspace-tab-header-container { + --tab-text-color: var(--colorful-icon-color-alt); + --icon-color: var(--colorful-icon-color-alt); + --icon-color-hover: var(--colorful-icon-color); + --tab-text-color-focused: var(--colorful-icon-color-alt); +} +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-top.mod-stacked .workspace-tab-header-new-tab .clickable-icon, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused .mod-top.mod-stacked .workspace-tab-header-new-tab .clickable-icon { + --icon-color: var(--colorful-icon-color-alt); + --icon-color-hover: var(--colorful-icon-color); +} +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-top .workspace-tab-header-tab-list .clickable-icon, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-top .workspace-tab-header-tab-list .clickable-icon:hover, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-top .workspace-tab-header-new-tab .clickable-icon, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-top .workspace-tab-header-new-tab .clickable-icon:hover, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused .mod-top .workspace-tab-header-tab-list .clickable-icon, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused .mod-top .workspace-tab-header-tab-list .clickable-icon:hover, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused .mod-top .workspace-tab-header-new-tab .clickable-icon, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused .mod-top .workspace-tab-header-new-tab .clickable-icon:hover { + color: var(--colorful-icon-color-alt); +} +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).anp-mini-tab-toggle .mod-top, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.anp-mini-tab-toggle .mod-top, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.anp-mini-tab-toggle .mod-top, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.is-focused.anp-mini-tab-toggle .mod-top { + --tab-text-color-focused-active-current: var(--colorful-icon-color-alt); +} +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).anp-mini-tab-toggle .mod-top .workspace-tab-header, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).anp-mini-tab-toggle .mod-top .workspace-tab-header.is-active, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.anp-mini-tab-toggle .mod-top .workspace-tab-header, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.anp-mini-tab-toggle .mod-top .workspace-tab-header.is-active, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.anp-mini-tab-toggle .mod-top .workspace-tab-header, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.anp-mini-tab-toggle .mod-top .workspace-tab-header.is-active, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.is-focused.anp-mini-tab-toggle .mod-top .workspace-tab-header, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.is-focused.anp-mini-tab-toggle .mod-top .workspace-tab-header.is-active { + --tab-text-color-focused-active: var(--colorful-icon-color-alt); + --tab-text-color-active: var(--colorful-icon-color-alt); + --tab-text-color-focused: var(--colorful-icon-color-alt); + --tab-text-color-focused-active-current: var(--colorful-icon-color-alt); +} +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).anp-mini-tab-toggle .mod-top .workspace-tab-header .workspace-tab-header-inner-close-button, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).anp-mini-tab-toggle .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-close-button, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.anp-mini-tab-toggle .mod-top .workspace-tab-header .workspace-tab-header-inner-close-button, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.anp-mini-tab-toggle .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-close-button, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.anp-mini-tab-toggle .mod-top .workspace-tab-header .workspace-tab-header-inner-close-button, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.anp-mini-tab-toggle .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-close-button, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.is-focused.anp-mini-tab-toggle .mod-top .workspace-tab-header .workspace-tab-header-inner-close-button, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.is-focused.anp-mini-tab-toggle .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-close-button { + --tab-text-color-focused: var(--colorful-icon-color-alt); + --tab-text-color-focused-active-current: var(--colorful-icon-color-alt); +} +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-right-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-left-split .mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-top .workspace-tab-header-container .clickable-icon.has-active-menu, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-top .workspace-tab-header-container .clickable-icon:active { + --icon-color-focused: var(--colorful-icon-color-alt); +} +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .workspace-tab-header, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .workspace-tab-header .workspace-tab-header-inner-close-button { + --tab-text-color-focused: var(--colorful-icon-color-alt); + --tab-text-color-focused-active-current: var(--colorful-icon-color-alt); +} +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .workspace-tab-header.is-active, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .workspace-tab-header.is-active .workspace-tab-header-inner-close-button { + --tab-text-color-focused: var(--text-faint); + --tab-text-color-focused-active-current: var(--text-normal); +} +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-left-split .mod-top .workspace-tab-header.is-active, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-right-split .mod-top .workspace-tab-header.is-active { + background-color: rgba(var(--ctp-crust), 0.2); +} +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-left-split .mod-top .workspace-tab-header.is-active:hover, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-right-split .mod-top .workspace-tab-header.is-active:hover { + background-color: rgba(var(--ctp-crust), 0.3); +} +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).anp-colorful-frame-icon-toggle-light.theme-light .mod-left-split .mod-top .workspace-tab-header.is-active, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).anp-colorful-frame-icon-toggle-light.theme-light .mod-right-split .mod-top .workspace-tab-header.is-active, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).anp-colorful-frame-icon-toggle-dark.theme-dark .mod-left-split .mod-top .workspace-tab-header.is-active, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).anp-colorful-frame-icon-toggle-dark.theme-dark .mod-right-split .mod-top .workspace-tab-header.is-active { + background-color: rgba(var(--ctp-text), 0.3); +} +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.anp-mini-tab-toggle .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-icon, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.anp-mini-tab-toggle .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-title, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused .mod-active:not(.mod-stacked).mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon, .anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.anp-mini-tab-toggle .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-title, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-left-split .mod-top .workspace-tab-header:active .workspace-tab-header-inner-icon, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .mod-right-split .mod-top .workspace-tab-header:active .workspace-tab-header-inner-icon { + color: var(--colorful-icon-color-alt); +} +.anp-colorful-frame.anp-card-layout .mod-vertical .workspace-tabs { + background-color: var(--tab-container-background); +} + +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).is-focused.anp-mini-tab-toggle .mod-top:not(.mod-stacked) .workspace-tab-header:not(.is-active), +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).anp-mini-tab-toggle .mod-top:not(.mod-stacked) .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner-close-button { + color: var(--colorful-icon-color-alt); + --tab-text-color-focused-active-current: var(--colorful-icon-color-alt); +} + +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .workspace-split.mod-vertical > * > .workspace-leaf-resize-handle, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .workspace-split.mod-left-split > .workspace-leaf-resize-handle, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout) .workspace-split.mod-right-split > .workspace-leaf-resize-handle { + height: calc(100% - var(--header-height)); +} + +.anp-colorful-frame .sidebar-toggle-button.sidebar-toggle-button { + background-color: var(--background-primary) !important; +} + +.anp-colorful-frame .sidebar-toggle-button { + padding: var(--size-4-1) !important; + background-color: var(--background-primary); + --tab-container-background: var(--background-primary) !important; + height: calc(var(--header-height) - 5px); + margin-right: 0; + border-radius: 0 0 var(--radius-m) var(--radius-m); + border-width: 0 1px 1px 1px; + border-style: solid; + border-color: var(--tab-outline-color); + --icon-color: var(--text-muted); + --icon-color-hover: var(--text-muted); + --icon-color-active: var(--text-accent); + --icon-color-focused: var(--text-normal); +} +.anp-colorful-frame .sidebar-toggle-button .clickable-icon { + --icon-color: var(--text-muted) !important; + --icon-color-hover: var(--text-muted) !important; + --icon-color-active: var(--text-accent) !important; + --icon-color-focused: var(--text-normal) !important; +} + +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).anp-mini-tab-toggle.is-focused .mod-active.mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-icon, +.anp-colorful-frame:not(.anp-card-layout, .anp-border-layout).anp-mini-tab-toggle.is-focused .mod-active.mod-top .workspace-tab-header.is-active .workspace-tab-header-inner-title { + color: var(--background-primary); +} + +.anp-colorful-frame.mod-macos .sidebar-toggle-button.mod-right { + border-radius: 0 0 0 var(--radius-m); +} + +.anp-colorful-frame.is-fullscreen:not(.is-popout-window) .sidebar-toggle-button.mod-left { + border-radius: 0 0 var(--radius-m) 0; +} + +body.anp-colorful-frame.anp-card-layout .workspace, +.anp-colorful-frame.anuppuccin-accent-toggle.anp-card-layout .workspace-tabs { + background-color: var(--tab-container-background); +} + +.anp-colorful-frame.anp-card-layout, +.anp-colorful-frame.anp-card-layout .workspace-tab-container, +.anp-colorful-frame.anp-card-layout.anp-mini-tab-toggle .mod-vertical .workspace-tab-header.is-active, +.anp-colorful-frame.anp-card-layout:not(.anp-card-layout-filebrowser) .workspace-leaf-content[data-type=file-explorer] { + --tab-text-color: var(--background-secondary-alt); + --tab-text-color-focused: var(--background-secondary-alt); + --tab-text-color-focused-active: var(--background-secondary-alt); + --tab-text-color-focused-highlighted: var(--background-secondary-alt); + --tab-text-color-focused-active-current: var(--background-secondary-alt); + --icon-color: var(--background-secondary-alt); + --icon-color-hover: var(--background-secondary-alt); + --icon-color-active: var(--background-secondary-alt); + --icon-color-focused: var(--background-secondary-alt); +} + +.anp-colorful-frame.anp-card-layout:not(.anp-card-layout-filebrowser).anp-colorful-frame-icon-toggle-light.theme-light .workspace-leaf-content[data-type=file-explorer], .anp-colorful-frame.anp-card-layout:not(.anp-card-layout-filebrowser).anp-colorful-frame-icon-toggle-dark.theme-dark .workspace-leaf-content[data-type=file-explorer] { + --tab-text-color: var(--text-normal); + --tab-text-color-focused: var(--text-normal); + --tab-text-color-focused-active: var(--text-normal); + --tab-text-color-focused-highlighted: var(--text-normal); + --tab-text-color-focused-active-current: var(--text-normal); + --icon-color: var(--text-normal); + --icon-color-hover: var(--text-normal); + --icon-color-active: var(--text-normal); + --icon-color-focused: var(--text-normal); +} + +.anp-colorful-frame.anp-card-layout.anp-colorful-frame-icon-toggle-light.theme-light, +.anp-colorful-frame.anp-card-layout.anp-colorful-frame-icon-toggle-dark.theme-dark, +.anp-colorful-frame.anp-card-layout.anp-card-layout-actions .workspace-ribbon, +.anp-colorful-frame.anp-card-layout .workspace-tab-container, +.anp-colorful-frame.anp-card-layout .modal, +.anp-colorful-frame.anp-card-layout .mod-vertical .workspace-tab-header.is-active, +.anp-colorful-frame.anp-card-layout.anp-alternate-tab-toggle .mod-vertical .workspace-tab-header { + --tab-text-color: var(--text-faint); + --tab-text-color-active: var(--text-muted); + --tab-text-color-focused: var(--text-muted); + --tab-text-color-focused-active: var(--text-muted); + --tab-text-color-focused-highlighted: var(--text-accent); + --tab-text-color-focused-active-current: var(--text-normal); + --icon-color: var(--text-muted); + --icon-color-hover: var(--text-muted); + --icon-color-active: var(--text-accent); + --icon-color-focused: var(--text-normal); +} + +.anp-colorful-frame.anp-card-layout:not(.anp-alternate-layout) .workspace-tab-header-status-icon { + color: var(--icon-color); +} + +.anp-colorful-frame.anp-card-layout.is-focused:not(.anp-mini-tab-toggle) .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-icon, +.anp-colorful-frame.anp-card-layout.is-focused:not(.anp-mini-tab-toggle) .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-title { + color: var(--color-accent); +} + +.anp-colorful-frame.anp-card-layout.anp-mini-tab-toggle .mod-vertical .workspace-tab-header .workspace-tab-header-inner-title, +.anp-colorful-frame.anp-card-layout.anp-mini-tab-toggle .mod-vertical .workspace-tab-header .workspace-tab-header-inner-title, +.anp-colorful-frame.anp-card-layout.is-focused:not(.anp-colorful-frame-icon-toggle-dark.theme-dark) .mod-left-split .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-icon, +.anp-colorful-frame.anp-card-layout.is-focused:not(.anp-colorful-frame-icon-toggle-light.theme-light) .mod-left-split .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-icon, +.anp-colorful-frame.anp-card-layout.is-focused:not(.anp-colorful-frame-icon-toggle-dark.theme-dark) .mod-right-split .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-icon, +.anp-colorful-frame.anp-card-layout.is-focused:not(.anp-colorful-frame-icon-toggle-light.theme-light) .mod-right-split .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-icon { + color: var(--background-secondary-alt); +} + +.anp-colorful-frame.anp-card-layout.is-focused.anp-colorful-frame-icon-toggle-light.theme-light .mod-left-split .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-icon, +.anp-colorful-frame.anp-card-layout.is-focused.anp-colorful-frame-icon-toggle-light.theme-light .mod-right-split .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-icon, .anp-colorful-frame.anp-card-layout.is-focused.anp-colorful-frame-icon-toggle-dark.theme-dark .mod-left-split .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-icon, +.anp-colorful-frame.anp-card-layout.is-focused.anp-colorful-frame-icon-toggle-dark.theme-dark .mod-right-split .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-icon { + color: var(--text-normal); +} + +.anp-colorful-frame.anp-card-layout .mod-left-split .workspace-tab-container, +.anp-colorful-frame.anp-card-layout .mod-right-split .workspace-tab-container { + background-color: transparent; +} +.anp-colorful-frame.anp-card-layout .mod-left-split { + background-color: transparent; +} +.anp-colorful-frame.anp-card-layout .mod-vertical .workspace-tab-container { + background-color: transparent; +} + +.anp-colorful-frame.anp-card-layout .mod-right-split .workspace-tab-header.is-active, +.anp-colorful-frame.anp-card-layout .mod-left-split .workspace-tab-header.is-active { + background-color: rgba(var(--ctp-crust), 0.2); +} +.anp-colorful-frame.anp-card-layout .mod-right-split .workspace-tab-header.is-active:hover, +.anp-colorful-frame.anp-card-layout .mod-left-split .workspace-tab-header.is-active:hover { + background-color: rgba(var(--ctp-crust), 0.3); +} + +.anp-colorful-frame.anp-card-layout.anp-colorful-frame-icon-toggle-light.theme-light .mod-right-split .workspace-tab-header.is-active, +.anp-colorful-frame.anp-card-layout.anp-colorful-frame-icon-toggle-light.theme-light .mod-left-split .workspace-tab-header.is-active, .anp-colorful-frame.anp-card-layout.anp-colorful-frame-icon-toggle-dark.theme-dark .mod-right-split .workspace-tab-header.is-active, +.anp-colorful-frame.anp-card-layout.anp-colorful-frame-icon-toggle-dark.theme-dark .mod-left-split .workspace-tab-header.is-active { + background-color: rgba(var(--ctp-text), 0.3); +} + +.mod-top .workspace-tab-header-inner::after { + display: none; +} + +.anp-colorful-frame.anp-card-layout:not(.anp-mini-tab-toggle) .mod-vertical .workspace-tab-header.is-active { + --tab-text-color-focused: var(--text-muted); + --tab-text-color-focused-active: var(--text-normal); +} + +.anp-mini-tab-toggle.anp-colorful-frame .workspace-split:not(.mod-left-split):not(.mod-right-split) .workspace-tabs.mod-top .workspace-tab-header-container-inner .workspace-tab-header.is-active { + border-bottom: 2px solid var(--background-secondary-alt); +} + +.anp-colorful-frame.anp-card-layout .workspace-drop-overlay:before { + background-color: var(--background-secondary-alt); + border-radius: var(--radius-m); + opacity: 0.5; +} + +.anp-colorful-frame { + --titlebar-background: var(--anp-colorful-frame-color, var(--color-accent)); + --titlebar-background-focused: var(--anp-colorful-frame-color, var(--color-accent)); + --titlebar-text-color: var(--background-primary); + --titlebar-text-color-focused: var(--background-secondary-alt); +} + +.anp-colorful-frame.is-frameless:not(.is-hidden-frameless) .sidebar-toggle-button.mod-right, +.anp-colorful-frame.is-frameless:not(.is-hidden-frameless) .sidebar-toggle-button.mod-left { + border-radius: var(--radius-m); +} + +.anp-colorful-frame:not(.is-frameless) .sidebar-toggle-button.mod-right, +.anp-colorful-frame:not(.is-frameless) .sidebar-toggle-button.mod-left { + border-radius: var(--radius-m); +} + +body.anp-colorful-frame.anp-border-layout .horizontal-main-container { + background-color: var(--colorful-frame-color); + --titlebar-background: var(--colorful-frame-color); + --ribbon-background: var(--colorful-frame-color); + --ribbon-background-collapsed: var(--colorful-frame-color); + --card-background-color: var(--colorful-frame-color); +} +body.anp-colorful-frame.anp-border-layout .workspace-ribbon { + --icon-color: var(--colorful-icon-color); + --icon-color-hover: var(--colorful-icon-color-alt); + --icon-color-active: var(--colorful-icon-color-alt); + --icon-color-focused: var(--colorful-icon-color); +} +body.anp-colorful-frame.anp-border-layout .workspace-ribbon .clickable-icon:hover { + background-color: rgba(var(--ctp-crust), 0.2); +} +body.anp-colorful-frame.anp-border-layout .workspace-ribbon .clickable-icon:active { + background-color: rgba(var(--ctp-crust), 0.3); +} +body.anp-colorful-frame.anp-border-layout .workspace-tabs.mod-top .workspace-tab-header-container .clickable-icon { + --icon-color: var(--colorful-icon-color); + --icon-color-hover: var(--colorful-icon-color-alt); + --icon-color-active: var(--colorful-icon-color-alt); + --icon-color-focused: var(--colorful-icon-color); +} +body.anp-colorful-frame.anp-border-layout .workspace-tabs.mod-top .workspace-tab-header-container .clickable-icon:hover { + background-color: rgba(var(--ctp-crust), 0.2); +} +body.anp-colorful-frame.anp-border-layout .workspace-tabs.mod-top .workspace-tab-header-container .clickable-icon:active { + background-color: rgba(var(--ctp-crust), 0.3); +} +body.anp-colorful-frame.anp-border-layout .workspace-split.mod-right-split .workspace-tabs.mod-top > .workspace-tab-header-container, body.anp-colorful-frame.anp-border-layout .workspace-split.mod-left-split .workspace-tabs.mod-top > .workspace-tab-header-container { + --icon-color: var(--colorful-icon-color); + --icon-color-hover: var(--colorful-icon-color-alt); + --icon-color-active: var(--colorful-icon-color-alt); + --icon-color-focused: var(--colorful-icon-color); +} +body.anp-colorful-frame.anp-border-layout .workspace-split.mod-right-split .workspace-tabs.mod-top > .workspace-tab-header-container .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner, body.anp-colorful-frame.anp-border-layout .workspace-split.mod-left-split .workspace-tabs.mod-top > .workspace-tab-header-container .workspace-tab-header:not(.is-active):hover .workspace-tab-header-inner { + background-color: rgba(var(--ctp-crust), 0.2); +} +body.anp-colorful-frame.anp-border-layout .workspace-split.mod-right-split .workspace-tabs.mod-top > .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner, body.anp-colorful-frame.anp-border-layout .workspace-split.mod-left-split .workspace-tabs.mod-top > .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner { + background-color: rgba(var(--ctp-crust), 0.3); +} +body.anp-colorful-frame.anp-border-layout .workspace-split.mod-right-split .workspace-tabs.mod-top > .workspace-tab-header-container .clickable-icon:hover, body.anp-colorful-frame.anp-border-layout .workspace-split.mod-left-split .workspace-tabs.mod-top > .workspace-tab-header-container .clickable-icon:hover { + background-color: rgba(var(--ctp-crust), 0.2); +} +body.anp-colorful-frame.anp-border-layout .workspace-split.mod-right-split .workspace-tabs.mod-top > .workspace-tab-header-container .clickable-icon:active, body.anp-colorful-frame.anp-border-layout .workspace-split.mod-left-split .workspace-tabs.mod-top > .workspace-tab-header-container .clickable-icon:active { + background-color: rgba(var(--ctp-crust), 0.3); +} +body.anp-colorful-frame.anp-border-layout .workspace-split.mod-right-split .workspace-tabs.mod-top > .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner-icon, +body.anp-colorful-frame.anp-border-layout .workspace-split.mod-right-split .workspace-tabs.mod-top > .workspace-tab-header-container .is-focused .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-title, body.anp-colorful-frame.anp-border-layout .workspace-split.mod-left-split .workspace-tabs.mod-top > .workspace-tab-header-container .workspace-tab-header.is-active .workspace-tab-header-inner-icon, +body.anp-colorful-frame.anp-border-layout .workspace-split.mod-left-split .workspace-tabs.mod-top > .workspace-tab-header-container .is-focused .mod-active .workspace-tab-header.is-active .workspace-tab-header-inner-title { + color: var(--colorful-icon-color); +} +body.anp-colorful-frame.anp-border-layout.anp-mini-tab-toggle .workspace-tabs.mod-top .workspace-tab-header-inner-title, +body.anp-colorful-frame.anp-border-layout.anp-mini-tab-toggle .workspace-tabs.mod-top .workspace-tab-header-status-container, +body.anp-colorful-frame.anp-border-layout.anp-mini-tab-toggle .workspace-tabs.mod-top .workspace-tab-header-inner-close-button, +body.anp-colorful-frame.anp-border-layout.anp-mini-tab-toggle .workspace-tabs.mod-top .workspace-tab-header-inner-icon { + color: var(--background-primary); +} + +/*------------CUSTOM CHECKBOXES-----------*/ +/*---------------------------------- +This feature is inspired by Cecilia May's Primary theme: https://github.com/ceciliamay/obsidianmd-theme-primary +None of the original code was used and only the checkbox ideas were utilised. +Icons were taken from Font Awesome: https://fontawesome.com/ +----------------------------------*/ +.anp-custom-checkboxes [data-task=x] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=x] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=x][type=checkbox]:checked { + --checkbox-color: rgb(var(--ctp-green)); + --checkbox-color-hover: rgb(var(--ctp-green)); +} +.anp-custom-checkboxes [data-task="!"] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task="!"] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task="!"][type=checkbox]:checked { + --checkbox-color: rgb(var(--ctp-yellow)); + --checkbox-color-hover: rgb(var(--ctp-yellow)); +} +.anp-custom-checkboxes [data-task="!"] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task="!"] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task="!"][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 128 512'%3E%3C!--! --%3E%3Cpath d='M96 64c0-17.7-14.3-32-32-32S32 46.3 32 64V320c0 17.7 14.3 32 32 32s32-14.3 32-32V64zM64 480c22.1 0 40-17.9 40-40s-17.9-40-40-40s-40 17.9-40 40s17.9 40 40 40z'/%3E%3C/svg%3E"); + -webkit-mask-size: 20%; +} +.anp-custom-checkboxes [data-task="!"] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task="!"] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task="!"][type=checkbox]:checked:before { + color: var(--checkbox-color); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task="?"] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task="?"] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task="?"][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task="?"] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task="?"] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task="?"][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3C!--! --%3E%3Cpath d='M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM169.8 165.3c7.9-22.3 29.1-37.3 52.8-37.3h58.3c34.9 0 63.1 28.3 63.1 63.1c0 22.6-12.1 43.5-31.7 54.8L280 264.4c-.2 13-10.9 23.6-24 23.6c-13.3 0-24-10.7-24-24V250.5c0-8.6 4.6-16.5 12.1-20.8l44.3-25.4c4.7-2.7 7.6-7.7 7.6-13.1c0-8.4-6.8-15.1-15.1-15.1H222.6c-3.4 0-6.4 2.1-7.5 5.3l-.4 1.2c-4.4 12.5-18.2 19-30.6 14.6s-19-18.2-14.6-30.6l.4-1.2zM288 352c0 17.7-14.3 32-32 32s-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32z'/%3E%3C/svg%3E"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-peach)); + left: 0px; +} +.anp-custom-checkboxes [data-task="?"] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task="?"] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task="?"][type=checkbox]:checked:before { + color: rgb(var(--ctp-peach)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task="-"] { + text-decoration: var(--checklist-done-decoration); + color: var(--checklist-done-color); +} +.anp-custom-checkboxes [data-task="-"] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task="-"] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task="-"][type=checkbox]:checked { + --checkbox-color: rgb(var(--ctp-red)); + --checkbox-color-hover: rgb(var(--ctp-red)); +} +.anp-custom-checkboxes [data-task="-"] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task="-"] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task="-"][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 512'%3E%3C!--! --%3E%3Cpath d='M310.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L160 210.7 54.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L114.7 256 9.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L160 301.3 265.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L205.3 256 310.6 150.6z'/%3E%3C/svg%3E"); + -webkit-mask-size: 50%; +} +.anp-custom-checkboxes [data-task="-"] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task="-"] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task="-"][type=checkbox]:checked:before { + color: var(--checkbox-color); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task=b] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=b] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=b][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task=b] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task=b] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task=b][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3C!--! --%3E%3Cpath d='M0 48V487.7C0 501.1 10.9 512 24.3 512c5 0 9.9-1.5 14-4.4L192 400 345.7 507.6c4.1 2.9 9 4.4 14 4.4c13.4 0 24.3-10.9 24.3-24.3V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48z'/%3E%3C/svg%3E"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-red)); + left: 0px; +} +.anp-custom-checkboxes [data-task=b] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task=b] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task=b][type=checkbox]:checked:before { + color: rgb(var(--ctp-red)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task=I] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=I] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=I][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task=I] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task=I] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task=I][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3C!--! --%3E%3Cpath d='M272 384c9.6-31.9 29.5-59.1 49.2-86.2l0 0c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4l0 0c19.8 27.1 39.7 54.4 49.2 86.2H272zM192 512c44.2 0 80-35.8 80-80V416H112v16c0 44.2 35.8 80 80 80zM112 176c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80z'/%3E%3C/svg%3E"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-yellow)); + left: 0px; +} +.anp-custom-checkboxes [data-task=I] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task=I] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task=I][type=checkbox]:checked:before { + color: rgb(var(--ctp-yellow)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task=p] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=p] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=p][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task=p] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task=p] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task=p][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3C!--! --%3E%3Cpath d='M313.4 32.9c26 5.2 42.9 30.5 37.7 56.5l-2.3 11.4c-5.3 26.7-15.1 52.1-28.8 75.2H464c26.5 0 48 21.5 48 48c0 25.3-19.5 46-44.3 47.9c7.7 8.5 12.3 19.8 12.3 32.1c0 23.4-16.8 42.9-38.9 47.1c4.4 7.2 6.9 15.8 6.9 24.9c0 21.3-13.9 39.4-33.1 45.6c.7 3.3 1.1 6.8 1.1 10.4c0 26.5-21.5 48-48 48H294.5c-19 0-37.5-5.6-53.3-16.1l-38.5-25.7C176 420.4 160 390.4 160 358.3V320 272 247.1c0-29.2 13.3-56.7 36-75l7.4-5.9c26.5-21.2 44.6-51 51.2-84.2l2.3-11.4c5.2-26 30.5-42.9 56.5-37.7zM32 192H96c17.7 0 32 14.3 32 32V448c0 17.7-14.3 32-32 32H32c-17.7 0-32-14.3-32-32V224c0-17.7 14.3-32 32-32z'/%3E%3C/svg%3E"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-green)); + left: 0px; +} +.anp-custom-checkboxes [data-task=p] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task=p] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task=p][type=checkbox]:checked:before { + color: rgb(var(--ctp-green)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task=c] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=c] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=c][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task=c] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task=c] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task=c][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3C!--! --%3E%3Cpath d='M313.4 479.1c26-5.2 42.9-30.5 37.7-56.5l-2.3-11.4c-5.3-26.7-15.1-52.1-28.8-75.2H464c26.5 0 48-21.5 48-48c0-25.3-19.5-46-44.3-47.9c7.7-8.5 12.3-19.8 12.3-32.1c0-23.4-16.8-42.9-38.9-47.1c4.4-7.3 6.9-15.8 6.9-24.9c0-21.3-13.9-39.4-33.1-45.6c.7-3.3 1.1-6.8 1.1-10.4c0-26.5-21.5-48-48-48H294.5c-19 0-37.5 5.6-53.3 16.1L202.7 73.8C176 91.6 160 121.6 160 153.7V192v48 24.9c0 29.2 13.3 56.7 36 75l7.4 5.9c26.5 21.2 44.6 51 51.2 84.2l2.3 11.4c5.2 26 30.5 42.9 56.5 37.7zM32 320H96c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64V288c0 17.7 14.3 32 32 32z'/%3E%3C/svg%3E"); + -webkit-mask-size: 100%; + background-color: rgb(var(--ctp-red)); + left: 0px; +} +.anp-custom-checkboxes [data-task=c] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task=c] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task=c][type=checkbox]:checked:before { + color: var(--checkbox-color); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task=i] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=i] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=i][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task=i] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task=i] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task=i][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3C!--! --%3E%3Cpath d='M256 512c141.4 0 256-114.6 256-256S397.4 0 256 0S0 114.6 0 256S114.6 512 256 512zM216 336h24V272H216c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24H216c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-144c-17.7 0-32-14.3-32-32s14.3-32 32-32s32 14.3 32 32s-14.3 32-32 32z'/%3E%3C/svg%3E"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-blue)); + left: 0px; +} +.anp-custom-checkboxes [data-task=i] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task=i] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task=i][type=checkbox]:checked:before { + color: rgb(var(--ctp-blue)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task=l] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=l] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=l][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task=l] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task=l] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task=l][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3C!--! --%3E%3Cpath d='M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 256c-35.3 0-64-28.7-64-64s28.7-64 64-64s64 28.7 64 64s-28.7 64-64 64z'/%3E%3C/svg%3E"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-mauve)); + left: 0px; +} +.anp-custom-checkboxes [data-task=l] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task=l] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task=l][type=checkbox]:checked:before { + color: rgb(var(--ctp-mauve)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task="*"] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task="*"] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task="*"][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task="*"] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task="*"] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task="*"][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 576 512'%3E%3C!--! --%3E%3Cpath d='M316.9 18C311.6 7 300.4 0 288.1 0s-23.4 7-28.8 18L195 150.3 51.4 171.5c-12 1.8-22 10.2-25.7 21.7s-.7 24.2 7.9 32.7L137.8 329 113.2 474.7c-2 12 3 24.2 12.9 31.3s23 8 33.8 2.3l128.3-68.5 128.3 68.5c10.8 5.7 23.9 4.9 33.8-2.3s14.9-19.3 12.9-31.3L438.5 329 542.7 225.9c8.6-8.5 11.7-21.2 7.9-32.7s-13.7-19.9-25.7-21.7L381.2 150.3 316.9 18z'/%3E%3C/svg%3E"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-yellow)); + left: 0px; +} +.anp-custom-checkboxes [data-task="*"] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task="*"] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task="*"][type=checkbox]:checked:before { + color: rgb(var(--ctp-yellow)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task=n] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=n] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=n][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task=n] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task=n] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task=n][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 384 512'%3E%3C!--! --%3E%3Cpath d='M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z'/%3E%3C/svg%3E"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-maroon)); + left: 0px; +} +.anp-custom-checkboxes [data-task=n] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task=n] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task=n][type=checkbox]:checked:before { + color: rgb(var(--ctp-maroon)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task=S] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=S] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=S][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task=S] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task=S] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task=S][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3C!--! --%3E%3Cpath d='M320 96H192L144.6 24.9C137.5 14.2 145.1 0 157.9 0H354.1c12.8 0 20.4 14.2 13.3 24.9L320 96zM192 128H320c3.8 2.5 8.1 5.3 13 8.4C389.7 172.7 512 250.9 512 416c0 53-43 96-96 96H96c-53 0-96-43-96-96C0 250.9 122.3 172.7 179 136.4l0 0 0 0c4.8-3.1 9.2-5.9 13-8.4zm84.1 96c0-11.1-9-20.1-20.1-20.1s-20.1 9-20.1 20.1v6c-5.6 1.2-10.9 2.9-15.9 5.1c-15 6.8-27.9 19.4-31.1 37.7c-1.8 10.2-.8 20 3.4 29c4.2 8.8 10.7 15 17.3 19.5c11.6 7.9 26.9 12.5 38.6 16l2.2 .7c13.9 4.2 23.4 7.4 29.3 11.7c2.5 1.8 3.4 3.2 3.8 4.1c.3 .8 .9 2.6 .2 6.7c-.6 3.5-2.5 6.4-8 8.8c-6.1 2.6-16 3.9-28.8 1.9c-6-1-16.7-4.6-26.2-7.9l0 0 0 0 0 0 0 0c-2.2-.8-4.3-1.5-6.3-2.1c-10.5-3.5-21.8 2.2-25.3 12.7s2.2 21.8 12.7 25.3c1.2 .4 2.7 .9 4.4 1.5c7.9 2.7 20.3 6.9 29.8 9.1V416c0 11.1 9 20.1 20.1 20.1s20.1-9 20.1-20.1v-5.5c5.4-1 10.5-2.5 15.4-4.6c15.7-6.7 28.4-19.7 31.6-38.7c1.8-10.4 1-20.3-3-29.4c-3.9-9-10.2-15.6-16.9-20.5c-12.2-8.8-28.3-13.7-40.4-17.4l-.8-.2c-14.2-4.3-23.8-7.3-29.9-11.4c-2.6-1.8-3.4-3-3.6-3.5c-.2-.3-.7-1.6-.1-5c.3-1.9 1.9-5.2 8.2-8.1c6.4-2.9 16.4-4.5 28.6-2.6c4.3 .7 17.9 3.3 21.7 4.3c10.7 2.8 21.6-3.5 24.5-14.2s-3.5-21.6-14.2-24.5c-4.4-1.2-14.4-3.2-21-4.4V224z'/%3E%3C/svg%3E"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-green)); + left: 0px; +} +.anp-custom-checkboxes [data-task=S] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task=S] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task=S][type=checkbox]:checked:before { + color: rgb(var(--ctp-green)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task="/"] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task="/"] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task="/"][type=checkbox]:checked { + --checkbox-color: rgba(var(--ctp-subtext0), 0.3); + --checkbox-color-hover: rgba(var(--ctp-subtext0), 0.3); + border-color: rgb(var(--ctp-subtext0)) !important; +} +.anp-custom-checkboxes [data-task="/"] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task="/"] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task="/"][type=checkbox]:checked:after { + background-color: transparent; +} +.anp-custom-checkboxes [data-task="/"] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task="/"] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task="/"][type=checkbox]:checked:before { + color: rgb(var(--ctp-subtext0)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task="<"] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task="<"] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task="<"][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task="<"] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task="<"] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task="<"][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3C!--! --%3E%3Cpath d='M96 32V64H48C21.5 64 0 85.5 0 112v48H448V112c0-26.5-21.5-48-48-48H352V32c0-17.7-14.3-32-32-32s-32 14.3-32 32V64H160V32c0-17.7-14.3-32-32-32S96 14.3 96 32zM448 192H0V464c0 26.5 21.5 48 48 48H400c26.5 0 48-21.5 48-48V192z'/%3E%3C/svg%3E"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-teal)); + left: 0px; +} +.anp-custom-checkboxes [data-task="<"] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task="<"] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task="<"][type=checkbox]:checked:before { + color: rgb(var(--ctp-teal)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task=">"] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=">"] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=">"][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task=">"] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task=">"] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task=">"][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512'%3E%3C!--! --%3E%3Cpath d='M307 34.8c-11.5 5.1-19 16.6-19 29.2v64H176C78.8 128 0 206.8 0 304C0 417.3 81.5 467.9 100.2 478.1c2.5 1.4 5.3 1.9 8.1 1.9c10.9 0 19.7-8.9 19.7-19.7c0-7.5-4.3-14.4-9.8-19.5C108.8 431.9 96 414.4 96 384c0-53 43-96 96-96h96v64c0 12.6 7.4 24.1 19 29.2s25 3 34.4-5.4l160-144c6.7-6.1 10.6-14.7 10.6-23.8s-3.8-17.7-10.6-23.8l-160-144c-9.4-8.5-22.9-10.6-34.4-5.4z'/%3E%3C/svg%3E"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-sapphire)); + left: 0px; +} +.anp-custom-checkboxes [data-task=">"] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task=">"] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task=">"][type=checkbox]:checked:before { + color: rgb(var(--ctp-sapphire)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task='"'] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task='"'] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task='"'][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task='"'] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task='"'] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task='"'][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 448 512'%3E%3C!--! --%3E%3Cpath d='M0 216C0 149.7 53.7 96 120 96h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H64c-35.3 0-64-28.7-64-64V320 288 216zm256 0c0-66.3 53.7-120 120-120h8c17.7 0 32 14.3 32 32s-14.3 32-32 32h-8c-30.9 0-56 25.1-56 56v8h64c35.3 0 64 28.7 64 64v64c0 35.3-28.7 64-64 64H320c-35.3 0-64-28.7-64-64V320 288 216z'/%3E%3C/svg%3E"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-subtext0)); + left: 0px; +} +.anp-custom-checkboxes [data-task='"'] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task='"'] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task='"'][type=checkbox]:checked:before { + color: rgb(var(--ctp-subtext0)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task=u] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=u] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=u][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task=u] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task=u] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task=u][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLXRyZW5kaW5nLXVwIj48cG9seWxpbmUgcG9pbnRzPSIyMiA3IDEzLjUgMTUuNSA4LjUgMTAuNSAyIDE3Ii8+PHBvbHlsaW5lIHBvaW50cz0iMTYgNyAyMiA3IDIyIDEzIi8+PC9zdmc+"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-green)); + left: 0px; +} +.anp-custom-checkboxes [data-task=u] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task=u] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task=u][type=checkbox]:checked:before { + color: rgb(var(--ctp-green)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task=d] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=d] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=d][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task=d] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task=d] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task=d][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLXRyZW5kaW5nLWRvd24iPjxwb2x5bGluZSBwb2ludHM9IjIyIDE3IDEzLjUgOC41IDguNSAxMy41IDIgNyIvPjxwb2x5bGluZSBwb2ludHM9IjE2IDE3IDIyIDE3IDIyIDExIi8+PC9zdmc+"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-red)); + left: 0px; +} +.anp-custom-checkboxes [data-task=d] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task=d] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task=d][type=checkbox]:checked:before { + color: rgb(var(--ctp-red)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task=f] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=f] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=f][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task=f] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task=f] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task=f][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWZsYW1lIj48cGF0aCBkPSJNOC41IDE0LjVBMi41IDIuNSAwIDAgMCAxMSAxMmMwLTEuMzgtLjUtMi0xLTMtMS4wNzItMi4xNDMtLjIyNC00LjA1NCAyLTYgLjUgMi41IDIgNC45IDQgNi41IDIgMS42IDMgMy41IDMgNS41YTcgNyAwIDEgMS0xNCAwYzAtMS4xNTMuNDMzLTIuMjk0IDEtM2EyLjUgMi41IDAgMCAwIDIuNSAyLjV6Ii8+PC9zdmc+"); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-red)); + left: 0px; +} +.anp-custom-checkboxes [data-task=f] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task=f] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task=f][type=checkbox]:checked:before { + color: rgb(var(--ctp-red)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task=k] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=k] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=k][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task=k] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task=k] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task=k][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWtleS1yb3VuZCI+PHBhdGggZD0iTTIgMTh2M2MwIC42LjQgMSAxIDFoNHYtM2gzdi0zaDJsMS40LTEuNGE2LjUgNi41IDAgMSAwLTQtNFoiLz48Y2lyY2xlIGN4PSIxNi41IiBjeT0iNy41IiByPSIuNSIvPjwvc3ZnPg=="); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-yellow)); + left: 0px; +} +.anp-custom-checkboxes [data-task=k] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task=k] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task=k][type=checkbox]:checked:before { + color: rgb(var(--ctp-yellow)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} +.anp-custom-checkboxes [data-task=w] > input[type=checkbox]:checked, +.anp-custom-checkboxes [data-task=w] > p > input[type=checkbox]:checked, .anp-custom-checkboxes [data-task=w][type=checkbox]:checked { + --checkbox-color: transparent; + --checkbox-color-hover: transparent; + border-width: 0; +} +.anp-custom-checkboxes [data-task=w] > input[type=checkbox]:checked:after, +.anp-custom-checkboxes [data-task=w] > p > input[type=checkbox]:checked:after, .anp-custom-checkboxes [data-task=w][type=checkbox]:checked:after { + -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWNha2UiPjxwYXRoIGQ9Ik0yMCAyMXYtOGEyIDIgMCAwIDAtMi0ySDZhMiAyIDAgMCAwLTIgMnY4Ii8+PHBhdGggZD0iTTQgMTZzLjUtMSAyLTEgMi41IDIgNCAyIDIuNS0yIDQtMiAyLjUgMiA0IDIgMi0xIDItMSIvPjxwYXRoIGQ9Ik0yIDIxaDIwIi8+PHBhdGggZD0iTTcgOHYzIi8+PHBhdGggZD0iTTEyIDh2MyIvPjxwYXRoIGQ9Ik0xNyA4djMiLz48cGF0aCBkPSJNNyA0aDAuMDEiLz48cGF0aCBkPSJNMTIgNGgwLjAxIi8+PHBhdGggZD0iTTE3IDRoMC4wMSIvPjwvc3ZnPg=="); + -webkit-mask-size: contain; + background-color: rgb(var(--ctp-mauve)); + left: 0px; +} +.anp-custom-checkboxes [data-task=w] > input[type=checkbox]:checked:before, +.anp-custom-checkboxes [data-task=w] > p > input[type=checkbox]:checked:before, .anp-custom-checkboxes [data-task=w][type=checkbox]:checked:before { + color: rgb(var(--ctp-mauve)); + margin: 0 3px; + position: absolute; + left: calc(var(--checkbox-size) * 1); + font-weight: bold; +} + +.anp-custom-checkboxes-labels [data-task="!"] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task="!"][type=checkbox]:checked:before { + content: "IMP"; +} + +.anp-custom-checkboxes-labels [data-task=">"] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task=">"][type=checkbox]:checked:before { + content: "RSCH"; +} + +.anp-custom-checkboxes-labels [data-task="<"] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task="<"][type=checkbox]:checked:before { + content: "SCH"; +} + +.anp-custom-checkboxes-labels [data-task="-"] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task="-"][type=checkbox]:checked:before { + content: "CNCL"; +} + +.anp-custom-checkboxes-labels [data-task="/"] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task="/"][type=checkbox]:checked:before { + content: "PRG"; +} + +.anp-custom-checkboxes-labels [data-task="?"] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task="?"][type=checkbox]:checked:before { + content: "QUE"; +} + +.anp-custom-checkboxes-labels [data-task="*"] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task="*"][type=checkbox]:checked:before { + content: "STAR"; +} + +.anp-custom-checkboxes-labels [data-task=n] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task=n][type=checkbox]:checked:before { + content: "NOTE"; +} + +.anp-custom-checkboxes-labels [data-task=l] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task=l][type=checkbox]:checked:before { + content: "LCTN"; +} + +.anp-custom-checkboxes-labels [data-task=i] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task=i][type=checkbox]:checked:before { + content: "INFO"; +} + +.anp-custom-checkboxes-labels [data-task=I] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task=I][type=checkbox]:checked:before { + content: "IDEA"; +} + +.anp-custom-checkboxes-labels [data-task=S] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task=S][type=checkbox]:checked:before { + content: "AMT"; +} + +.anp-custom-checkboxes-labels [data-task=p] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task=p][type=checkbox]:checked:before { + content: "PRO"; +} + +.anp-custom-checkboxes-labels [data-task=c] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task=c][type=checkbox]:checked:before { + content: "CON"; +} + +.anp-custom-checkboxes-labels [data-task=b] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task=b][type=checkbox]:checked:before { + content: "BKMK"; +} + +.anp-custom-checkboxes-labels [data-task='"'] input[type=checkbox]:checked:before, .anp-custom-checkboxes-labels [data-task='"'][type=checkbox]:checked:before { + content: "QUOT"; +} +.anp-custom-checkboxes-labels .task-list-item .task-list-item-checkbox { + margin-right: calc(var(--checkbox-size) * 2.7); +} + +.anp-speech-bubble [data-task="0"], +.anp-speech-bubble [data-task="1"], +.anp-speech-bubble [data-task="2"], +.anp-speech-bubble [data-task="3"], +.anp-speech-bubble [data-task="4"], +.anp-speech-bubble [data-task="5"], +.anp-speech-bubble [data-task="6"], +.anp-speech-bubble [data-task="7"], +.anp-speech-bubble [data-task="8"], +.anp-speech-bubble [data-task="9"] { + margin-inline-start: -15px; + padding: 3px 10px !important; + border-radius: 3px 10px 10px 10px; + max-width: fit-content; + color: var(--text-normal); + --bold-color: var(--text-normal); + --italic-color: var(--text-normal); +} +.anp-speech-bubble [data-task="0"] p, +.anp-speech-bubble [data-task="1"] p, +.anp-speech-bubble [data-task="2"] p, +.anp-speech-bubble [data-task="3"] p, +.anp-speech-bubble [data-task="4"] p, +.anp-speech-bubble [data-task="5"] p, +.anp-speech-bubble [data-task="6"] p, +.anp-speech-bubble [data-task="7"] p, +.anp-speech-bubble [data-task="8"] p, +.anp-speech-bubble [data-task="9"] p { + margin-top: 0; + margin-bottom: 0; +} +.anp-speech-bubble [data-task="0"] .task-list-item-checkbox, +.anp-speech-bubble [data-task="1"] .task-list-item-checkbox, +.anp-speech-bubble [data-task="2"] .task-list-item-checkbox, +.anp-speech-bubble [data-task="3"] .task-list-item-checkbox, +.anp-speech-bubble [data-task="4"] .task-list-item-checkbox, +.anp-speech-bubble [data-task="5"] .task-list-item-checkbox, +.anp-speech-bubble [data-task="6"] .task-list-item-checkbox, +.anp-speech-bubble [data-task="7"] .task-list-item-checkbox, +.anp-speech-bubble [data-task="8"] .task-list-item-checkbox, +.anp-speech-bubble [data-task="9"] .task-list-item-checkbox { + display: none; +} +.anp-speech-bubble [data-task="0"]::selection, +.anp-speech-bubble [data-task="1"]::selection, +.anp-speech-bubble [data-task="2"]::selection, +.anp-speech-bubble [data-task="3"]::selection, +.anp-speech-bubble [data-task="4"]::selection, +.anp-speech-bubble [data-task="5"]::selection, +.anp-speech-bubble [data-task="6"]::selection, +.anp-speech-bubble [data-task="7"]::selection, +.anp-speech-bubble [data-task="8"]::selection, +.anp-speech-bubble [data-task="9"]::selection { + background-color: rgba(var(--ctp-text), 0.2); +} + +.theme-dark.anp-speech-bubble [data-task="0"], +.theme-dark.anp-speech-bubble [data-task="1"], +.theme-dark.anp-speech-bubble [data-task="2"], +.theme-dark.anp-speech-bubble [data-task="3"], +.theme-dark.anp-speech-bubble [data-task="4"], +.theme-dark.anp-speech-bubble [data-task="5"], +.theme-dark.anp-speech-bubble [data-task="6"], +.theme-dark.anp-speech-bubble [data-task="7"], +.theme-dark.anp-speech-bubble [data-task="8"], +.theme-dark.anp-speech-bubble [data-task="9"] { + --text-normal: var(--background-primary); + transition: background-color 0.2s, background 0.2s, border-radius 0.2s; +} +.theme-dark.anp-speech-bubble [data-task="0"]::selection, +.theme-dark.anp-speech-bubble [data-task="1"]::selection, +.theme-dark.anp-speech-bubble [data-task="2"]::selection, +.theme-dark.anp-speech-bubble [data-task="3"]::selection, +.theme-dark.anp-speech-bubble [data-task="4"]::selection, +.theme-dark.anp-speech-bubble [data-task="5"]::selection, +.theme-dark.anp-speech-bubble [data-task="6"]::selection, +.theme-dark.anp-speech-bubble [data-task="7"]::selection, +.theme-dark.anp-speech-bubble [data-task="8"]::selection, +.theme-dark.anp-speech-bubble [data-task="9"]::selection { + background-color: rgba(var(--ctp-crust), 0.2); + background: rgba(var(--ctp-crust), 0.2); +} + +.anp-speech-bubble .is-live-preview [data-task="0"].cm-active, +.anp-speech-bubble .is-live-preview [data-task="1"].cm-active, +.anp-speech-bubble .is-live-preview [data-task="2"].cm-active, +.anp-speech-bubble .is-live-preview [data-task="3"].cm-active, +.anp-speech-bubble .is-live-preview [data-task="4"].cm-active, +.anp-speech-bubble .is-live-preview [data-task="5"].cm-active, +.anp-speech-bubble .is-live-preview [data-task="6"].cm-active, +.anp-speech-bubble .is-live-preview [data-task="7"].cm-active, +.anp-speech-bubble .is-live-preview [data-task="8"].cm-active, +.anp-speech-bubble .is-live-preview [data-task="9"].cm-active { + border-radius: 0; + --text-normal: rgb(var(--ctp-text)); + background: rgba(var(--ctp-surface1), 0.4); +} +.anp-speech-bubble .is-live-preview [data-task="0"]:not(.cm-active), +.anp-speech-bubble .is-live-preview [data-task="1"]:not(.cm-active), +.anp-speech-bubble .is-live-preview [data-task="2"]:not(.cm-active), +.anp-speech-bubble .is-live-preview [data-task="3"]:not(.cm-active), +.anp-speech-bubble .is-live-preview [data-task="4"]:not(.cm-active), +.anp-speech-bubble .is-live-preview [data-task="5"]:not(.cm-active), +.anp-speech-bubble .is-live-preview [data-task="6"]:not(.cm-active), +.anp-speech-bubble .is-live-preview [data-task="7"]:not(.cm-active), +.anp-speech-bubble .is-live-preview [data-task="8"]:not(.cm-active), +.anp-speech-bubble .is-live-preview [data-task="9"]:not(.cm-active) { + max-width: max-content; +} + +/* Dirty Speech Bubble Fix */ +.anp-speech-bubble .HyperMD-task-line[data-task="0"], .anp-speech-bubble .HyperMD-task-line[data-task="1"], .anp-speech-bubble .HyperMD-task-line[data-task="2"], .anp-speech-bubble .HyperMD-task-line[data-task="3"], .anp-speech-bubble .HyperMD-task-line[data-task="4"], .anp-speech-bubble .HyperMD-task-line[data-task="5"], .anp-speech-bubble .HyperMD-task-line[data-task="6"], .anp-speech-bubble .HyperMD-task-line[data-task="7"], .anp-speech-bubble .HyperMD-task-line[data-task="8"], .anp-speech-bubble .HyperMD-task-line[data-task="9"] { + text-indent: 0px !important; +} + +.anp-speech-bubble [data-task="0"] { + background-color: rgba(var(--ctp-red), var(--anp-speech-bubble-opacity)); +} + +.anp-speech-bubble [data-task="1"] { + background-color: rgba(var(--ctp-peach), var(--anp-speech-bubble-opacity)); +} + +.anp-speech-bubble [data-task="2"] { + background-color: rgba(var(--ctp-yellow), var(--anp-speech-bubble-opacity)); +} + +.anp-speech-bubble [data-task="3"] { + background-color: rgba(var(--ctp-green), var(--anp-speech-bubble-opacity)); +} + +.anp-speech-bubble [data-task="4"] { + background-color: rgba(var(--ctp-teal), var(--anp-speech-bubble-opacity)); +} + +.anp-speech-bubble [data-task="5"] { + background-color: rgba(var(--ctp-sky), var(--anp-speech-bubble-opacity)); +} + +.anp-speech-bubble [data-task="6"] { + background-color: rgba(var(--ctp-blue), var(--anp-speech-bubble-opacity)); +} + +.anp-speech-bubble [data-task="7"] { + background-color: rgba(var(--ctp-mauve), var(--anp-speech-bubble-opacity)); +} + +.anp-speech-bubble [data-task="8"] { + background: linear-gradient(to right, rgba(var(--ctp-red), var(--anp-speech-bubble-opacity)), rgba(var(--ctp-yellow), var(--anp-speech-bubble-opacity))); +} + +.anp-speech-bubble [data-task="9"] { + background: linear-gradient(to left, rgba(var(--ctp-lavender), var(--anp-speech-bubble-opacity)), rgba(var(--ctp-mauve), var(--anp-speech-bubble-opacity))); +} + +/*------------FLOATING VAULT TITLE-----------*/ +/*---------------------------------- +This feature is inspired by Cecilia May's Primary theme: https://github.com/ceciliamay/obsidianmd-theme-primary +None of the original code was used and the feature was implemented from scratch. +----------------------------------*/ +.anp-floating-header .nav-folder.mod-root > .nav-folder-title { + background-color: var(--background-secondary); + position: sticky; + top: 0; + z-index: var(--layer-popover); + width: 100%; + border: 1px solid var(--background-modifier-border); + border-radius: var(--radius-s); + box-shadow: 0 3px 4px 0px rgba(0, 0, 0, 0.05); +} + +.anp-floating-header.anp-card-layout .nav-folder.mod-root > .nav-folder-title { + background-color: var(--card-foreground-color, var(--background-primary)); +} + +.anp-floating-header.anp-custom-vault-toggle .nav-folder.mod-root > .nav-folder-title { + padding-top: 10px; +} + +.anp-codeblock-numbers .HyperMD-codeblock-begin { + counter-reset: line-numbers; +} + +.anp-codeblock-numbers .HyperMD-codeblock.cm-line:not(.HyperMD-codeblock-begin):not(.HyperMD-codeblock-end) { + padding-left: 5em; + position: relative; +} + +.anp-codeblock-numbers .HyperMD-codeblock.cm-line:not(.HyperMD-codeblock-begin):not(.HyperMD-codeblock-end)::before { + align-items: flex-end; + border-right: 1px solid var(--scrollbar-thumb-bg); + color: var(--anp-code-text-color, var(--text-faint)); + content: counter(line-numbers); + counter-increment: line-numbers; + display: table-caption; + font-size: 0.8em; + height: 100%; + justify-content: flex-end; + left: 0; + padding-right: 0.5em; + padding-top: 1px; + position: absolute; + text-align: right; + width: 3em; +} + +.anp-codeblock-numbers .HyperMD-codeblock.cm-line.cm-active:not(.HyperMD-codeblock-begin):not(.HyperMD-codeblock-end)::before { + color: var(--color-accent); +} + +.anp-codeblock-numbers .HyperMD-codeblock .cm-foldPlaceholder::before { + display: none; +} + +.anp-file-icons .nav-file .nav-file-title[data-path] { + align-items: center; +} + +.anp-file-icons .nav-file .nav-file-title[data-path]::before { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z'/%3E%3Cpath d='M14 2v6h6'/%3E%3C/svg%3E%0A"); + -webkit-mask-repeat: no-repeat; + background-color: var(--icon-color); + content: ""; + display: flex; + flex-shrink: 0; + height: var(--size-4-4); + margin-left: calc(-1 * var(--size-4-5)); + opacity: var(--icon-opacity); + position: absolute; + width: var(--size-4-4); +} + +.anp-file-icons .nav-file .nav-file-title[data-path$=".md"]::before { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z'/%3E%3Cpath d='M14 2v6h6m-4 5H8m8 4H8m2-8H8'/%3E%3C/svg%3E%0A"); + -webkit-mask-repeat: no-repeat; +} + +.anp-file-icons .nav-file .nav-file-title[data-path$=".canvas"]::before { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 3h7v9H3zm11 0h7v5h-7zm0 9h7v9h-7zM3 16h7v5H3z'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; +} + +.anp-file-icons .nav-file .nav-file-title[data-path$=".excalidraw.md"]::before { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 13.5V4a2 2 0 0 1 2-2h8.5L20 7.5V20a2 2 0 0 1-2 2h-5.5'/%3E%3Cpath d='M14 2v6h6'/%3E%3Cpath d='M10.4 12.6a2 2 0 0 1 3 3L8 21l-4 1 1-4Z'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; +} + +.anp-file-icons .nav-file .nav-file-title[data-path$=".svg"]::before, +.anp-file-icons .nav-file .nav-file-title[data-path$=".bmp"]::before, +.anp-file-icons .nav-file .nav-file-title[data-path$=".jpg"]::before, +.anp-file-icons .nav-file .nav-file-title[data-path$=".gif"]::before, +.anp-file-icons .nav-file .nav-file-title[data-path$=".webp"]::before, +.anp-file-icons .nav-file .nav-file-title[data-path$=".jpeg"]::before, +.anp-file-icons .nav-file .nav-file-title[data-path$=".png"]::before { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z'/%3E%3Cpath d='M14 2v6h6'/%3E%3Ccircle cx='10' cy='13' r='2'/%3E%3Cpath d='m20 17-1.09-1.09a2 2 0 0 0-2.82 0L10 22'/%3E%3C/svg%3E%0A"); + -webkit-mask-repeat: no-repeat; +} + +.anp-file-icons .nav-file .nav-file-title[data-path$=".mp3"]::before, +.anp-file-icons .nav-file .nav-file-title[data-path$=".wav"]::before, +.anp-file-icons .nav-file .nav-file-title[data-path$=".m4a"]::before, +.anp-file-icons .nav-file .nav-file-title[data-path$=".ogg"]::before, +.anp-file-icons .nav-file .nav-file-title[data-path$=".flac"]::before, +.anp-file-icons .nav-file .nav-file-title[data-path$=".3gp"]::before { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18V5l12-2v13M9 9l12-2'/%3E%3Ccircle cx='6' cy='18' r='3'/%3E%3Ccircle cx='18' cy='16' r='3'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; +} + +.anp-file-icons .nav-file .nav-file-title[data-path$=".webm"]::before { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M10 8l6 4-6 4V8z'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; +} + +.anp-file-icons .nav-file .nav-file-title[data-path$=".mp4"]::before, +.anp-file-icons .nav-file .nav-file-title[data-path$=".ogv"]::before, +.anp-file-icons .nav-file .nav-file-title[data-path$=".mov"]::before, +.anp-file-icons .nav-file .nav-file-title[data-path$=".mkv"]::before { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 11v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8H4Z'/%3E%3Cpath d='m4 11-.88-2.87a2 2 0 0 1 1.33-2.5l11.48-3.5a2 2 0 0 1 2.5 1.32l.87 2.87L4 11.01Z'/%3E%3Cpath d='M6.6 4.99l3.38 4.2m1.88-5.81l3.38 4.2'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; +} + +.anp-file-icons .nav-file .nav-file-title[data-path$=".loom"]::before { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v18'/%3E%3Crect width='18' height='18' x='3' y='3' rx='2'/%3E%3Cpath d='M3 9h18M3 15h18'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; +} + +/*--------------DISABLING IN-FRONTMATTER---------------*/ +.heading-normal-toggle { + --h1-color: var(--text-normal) !important; + --h2-color: var(--text-normal) !important; + --h3-color: var(--text-normal) !important; + --h4-color: var(--text-normal) !important; + --h5-color: var(--text-normal) !important; + --h6-color: var(--text-normal) !important; +} + +.decorations-normal-toggle, +.decorations-normal-toggle.markdown-rendered { + --bold-color: var(--text-normal) !important; + --italic-color: var(--text-normal) !important; +} + +.decorations-normal-toggle.markdown-rendered .table-view-table, +.decorations-normal-toggle.is-live-preview .table-view-table { + --bold-color: var(--text-muted) !important; + --italic-color: var(--text-muted) !important; +} + +/*=============================================================== +* RAINBOW FOLDERS +* Author: AnubisNekhet +* https://www.buymeacoffee.com/anubisnekhet +*===============================================================*/ +/*--------------------------------------------------------------- +* RAIBOW FOLDER VARIABLE + +* --rainbow-folder-color is a raw rgb variable whose value +* is cycled per child folder in a folder tree. +* Applying "inherit" to every child folder excluding first-order +* child folders results in folders "inheriting" their parent +* folder colors. +*---------------------------------------------------------------*/ +.nav-folder-children > .nav-folder:nth-child(11n+2), +.nav-files-container > div > .nav-folder:nth-child(11n+2), +[data-type=bookmarks] .tree-item:nth-child(11n+2) { + --rainbow-folder-color: var(--ctp-red); +} +.nav-folder-children > .nav-folder:nth-child(11n+3), +.nav-files-container > div > .nav-folder:nth-child(11n+3), +[data-type=bookmarks] .tree-item:nth-child(11n+3) { + --rainbow-folder-color: var(--ctp-maroon); +} +.nav-folder-children > .nav-folder:nth-child(11n+4), +.nav-files-container > div > .nav-folder:nth-child(11n+4), +[data-type=bookmarks] .tree-item:nth-child(11n+4) { + --rainbow-folder-color: var(--ctp-peach); +} +.nav-folder-children > .nav-folder:nth-child(11n+5), +.nav-files-container > div > .nav-folder:nth-child(11n+5), +[data-type=bookmarks] .tree-item:nth-child(11n+5) { + --rainbow-folder-color: var(--ctp-yellow); +} +.nav-folder-children > .nav-folder:nth-child(11n+6), +.nav-files-container > div > .nav-folder:nth-child(11n+6), +[data-type=bookmarks] .tree-item:nth-child(11n+6) { + --rainbow-folder-color: var(--ctp-green); +} +.nav-folder-children > .nav-folder:nth-child(11n+7), +.nav-files-container > div > .nav-folder:nth-child(11n+7), +[data-type=bookmarks] .tree-item:nth-child(11n+7) { + --rainbow-folder-color: var(--ctp-teal); +} +.nav-folder-children > .nav-folder:nth-child(11n+8), +.nav-files-container > div > .nav-folder:nth-child(11n+8), +[data-type=bookmarks] .tree-item:nth-child(11n+8) { + --rainbow-folder-color: var(--ctp-sky); +} +.nav-folder-children > .nav-folder:nth-child(11n+9), +.nav-files-container > div > .nav-folder:nth-child(11n+9), +[data-type=bookmarks] .tree-item:nth-child(11n+9) { + --rainbow-folder-color: var(--ctp-sapphire); +} +.nav-folder-children > .nav-folder:nth-child(11n+10), +.nav-files-container > div > .nav-folder:nth-child(11n+10), +[data-type=bookmarks] .tree-item:nth-child(11n+10) { + --rainbow-folder-color: var(--ctp-blue); +} +.nav-folder-children > .nav-folder:nth-child(11n+11), +.nav-files-container > div > .nav-folder:nth-child(11n+11), +[data-type=bookmarks] .tree-item:nth-child(11n+11) { + --rainbow-folder-color: var(--ctp-lavender); +} +.nav-folder-children > .nav-folder:nth-child(11n+12), +.nav-files-container > div > .nav-folder:nth-child(11n+12), +[data-type=bookmarks] .tree-item:nth-child(11n+12) { + --rainbow-folder-color: var(--ctp-mauve); +} + +.anp-rainbow-subfolder-color-toggle .nav-files-container .nav-folder.nav-folder .nav-folder, +.anp-rainbow-subfolder-color-toggle [data-type=bookmarks] .tree-item .tree-item { + --rainbow-folder-color: inherit; +} + +/*--------------------------------------------------------------- +* FULL RAINBOW STYLE +*---------------------------------------------------------------*/ +.anp-full-rainbow-color-toggle .nav-files-container > div > .nav-folder .nav-folder-title, +.anp-full-rainbow-color-toggle .nav-files-container > div > .nav-folder .nav-file-title, +.anp-full-rainbow-color-toggle .nav-files-container .collapse-icon svg.svg-icon, +.anp-full-rainbow-color-toggle .tree-item-self .tree-item-icon { + color: var(--anp-full-rainbow-text-inverted, var(--background-primary)); + --icon-color: var(--anp-full-rainbow-text-inverted, + var(--background-primary)); +} +.anp-full-rainbow-color-toggle.anp-rainbow-file-toggle .nav-files-container > div > .nav-folder-children > .nav-file .nav-file-title { + color: var(--anp-full-rainbow-text-inverted, var(--background-primary)); +} +.anp-full-rainbow-color-toggle.anp-rainbow-file-toggle.theme-dark .nav-files-container > .nav-folder-children > .nav-file { + background-color: rgba(var(--ctp-text), var(--anp-rainbow-folder-bg-opacity)); +} +.anp-full-rainbow-color-toggle.anp-rainbow-file-toggle.theme-light .nav-files-container > div > .nav-file { + background-color: rgba(var(--ctp-overlay1), var(--anp-rainbow-folder-bg-opacity)); +} +.anp-full-rainbow-color-toggle.anp-rainbow-file-toggle .nav-files-container > div > .nav-file { + border-radius: 5px; + margin-bottom: 2px; +} +.anp-full-rainbow-color-toggle:not(.is-grabbing) .nav-files-container > div > .nav-folder .nav-folder-title:hover, +.anp-full-rainbow-color-toggle:not(.is-grabbing) .nav-files-container > div .nav-file .nav-file-title:hover { + background-color: rgba(var(--ctp-base), 0.1); +} +.anp-full-rainbow-color-toggle:not(.is-grabbing) .nav-files-container > div > .nav-folder .nav-file-title.is-active { + border-color: rgba(var(--ctp-base), 0.2); + background-color: rgba(var(--ctp-base), 0.2); +} +.anp-full-rainbow-color-toggle .nav-file { + overflow-y: hidden; +} +.anp-full-rainbow-color-toggle .nav-file-title-content.is-being-renamed, +.anp-full-rainbow-color-toggle .nav-folder-title-content.is-being-renamed { + cursor: text; + border-color: var(--interactive-accent); + background-color: rgba(var(--ctp-crust), 0.2); +} +.anp-full-rainbow-color-toggle .nav-file-title-content.is-being-renamed::selection, +.anp-full-rainbow-color-toggle .nav-folder-title-content.is-being-renamed::selection { + background-color: hsla(var(--color-accent-hsl), 0.2); +} +.anp-full-rainbow-color-toggle .nav-file-title-content.is-being-renamed::selection { + background-color: rgba(var(--ctp-accent), 0.2); +} +.anp-full-rainbow-color-toggle .nav-files-container .nav-folder > .nav-folder-children { + padding: 0 5px 0 5px; +} +.anp-full-rainbow-color-toggle .nav-files-container > div > .nav-folder { + transition: background-color 0.4s; + background-color: rgba(var(--rainbow-folder-color), var(--anp-rainbow-folder-bg-opacity)); + margin-bottom: 2px; + border-radius: 5px; +} +.anp-full-rainbow-color-toggle .nav-files-container > div > .nav-folder .nav-folder-children { + border-color: rgba(var(--ctp-crust), 0.4); +} +.anp-full-rainbow-color-toggle .nav-files-container > div > .nav-file.has-focus { + background-color: rgba(var(--ctp-text), var(--anp-rainbow-folder-bg-opacity)); + border-left: none; + border-color: rgb(var(--ctp-accent)); +} +.anp-full-rainbow-color-toggle .nav-files-container > div > .nav-file > .nav-file-title, .anp-full-rainbow-color-toggle .nav-files-container > div > .nav-file.has-focus > .nav-file-title { + margin-bottom: 0; +} +.anp-full-rainbow-color-toggle .workspace-leaf.mod-active .nav-folder.has-focus > .nav-file-title, .anp-full-rainbow-color-toggle .workspace-leaf.mod-active .nav-folder.has-focus > .nav-file-title:focus-within, +.anp-full-rainbow-color-toggle .workspace-leaf.mod-active .nav-folder.has-focus > .nav-folder-title, +.anp-full-rainbow-color-toggle .workspace-leaf.mod-active .nav-folder.has-focus > .nav-folder-title:focus-within { + box-shadow: none; +} + +.anp-full-rainbow-text-color-toggle-dark.theme-dark, +.anp-full-rainbow-text-color-toggle-light.theme-light { + --anp-full-rainbow-text-inverted: rgb(var(--ctp-text)); +} + +/*--------------------------------------------------------------- +* SIMPLE RAINBOW STYLE +*---------------------------------------------------------------*/ +.anp-simple-rainbow-color-toggle.anp-simple-rainbow-title-toggle .nav-files-container > div > .nav-folder .nav-folder-title, +.anp-simple-rainbow-color-toggle.anp-simple-rainbow-title-toggle [data-type=bookmarks] .tree-item .tree-item-inner { + transition: color 0.4s; + color: rgba(var(--rainbow-folder-color), var(--anp-simple-rainbow-opacity, 1)); + --nav-item-background-hover: rgba(var(--rainbow-folder-color), 0.1); + --nav-item-background-active: rgba(var(--rainbow-folder-color), 0.1); +} +.anp-simple-rainbow-color-toggle.anp-simple-rainbow-title-toggle .nav-folder.is-being-dragged-over { + background-color: rgba(var(--rainbow-folder-color), 0.1); +} +.anp-simple-rainbow-color-toggle.anp-simple-rainbow-icon-toggle .nav-files-container > div > .nav-folder .nav-folder-title:after, +.anp-simple-rainbow-color-toggle.anp-simple-rainbow-icon-toggle [data-type=bookmarks] .tree-item .tree-item-inner:after { + transition: color 0.4s; + color: rgba(var(--rainbow-folder-color), var(--anp-simple-rainbow-opacity, 1)); + content: "⬤"; + font-size: 10px; + position: relative; + margin-left: 4px; + opacity: 0.5; + top: -0.5px; +} +.anp-simple-rainbow-color-toggle.anp-simple-rainbow-icon-toggle [data-type=bookmarks] .tree-item .tree-item-inner { + align-items: center; + display: flex; + flex-grow: 1; + justify-content: space-between; +} +.anp-simple-rainbow-color-toggle.anp-simple-rainbow-indentation-toggle .nav-files-container .nav-folder > .nav-folder-children, +.anp-simple-rainbow-color-toggle.anp-simple-rainbow-indentation-toggle [data-type=bookmarks] .tree-item .tree-item-children { + transition: color 0.4s; + border-color: rgba(var(--rainbow-folder-color), 0.5); +} +.anp-simple-rainbow-color-toggle.anp-simple-rainbow-collapse-icon-toggle .tree-item-self .tree-item-icon { + --icon-color: rgba(var(--rainbow-folder-color), + var(--anp-simple-rainbow-opacity, 1)); + --nav-collapse-icon-color: rgba(var(--rainbow-folder-color), + var(--anp-simple-rainbow-opacity, 1)); + --nav-collapse-icon-color-collapsed: rgba(var(--rainbow-folder-color), + var(--anp-simple-rainbow-opacity, 1)); +} + +.modal { + --h1-font: var(--interface-font); +} + +.style-settings-container:empty { + display: none; +} + +.style-settings-heading[data-level] { + padding-top: var(--size-4-2); + padding-bottom: var(--size-4-2); +} + +.style-settings-heading[data-level="0"]:not(.is-collapsed) { + margin-bottom: var(--size-4-2); +} + +.style-settings-heading:not([data-level="0"]) { + border-top: 1px solid rgba(var(--ctp-text), 0.2); + border-bottom: none; +} + +.style-settings-heading:not([data-level="0"], .is-collapsed) { + margin-bottom: 0; +} + +.style-settings-heading:not([data-level="0"]) + .style-settings-container { + border: 1px solid rgba(var(--ctp-text), 0.2); + border-radius: var(--radius-s); + padding: var(--size-4-2); + padding-left: var(--size-4-6); + background-color: rgba(var(--ctp-crust), 0.3); + overflow-x: hidden; +} + +.style-settings-heading[data-level="0"]:not(.is-collapsed) + .style-settings-container { + border-bottom: 1px solid var(--background-modifier-border); +} + +.style-settings-heading[data-level="1"] { + border-top-color: var(--background-modifier-border); +} + +.style-settings-heading:not([data-level="0"]):nth-child(-n+2), +.style-settings-heading:not([data-level="0"], .is-collapsed) + .style-settings-container + .style-settings-heading, +.style-settings-container .setting-item + .setting-item-heading { + border-top-width: 0; +} + +.style-settings-heading:is([data-id=anuppuccin-theme-settings], +[data-id=anuppuccin-theme-settings-extended]) { + border-color: hsla(var(--color-accent-hsl), 0.2); +} +.style-settings-heading:is([data-id=anuppuccin-theme-settings], +[data-id=anuppuccin-theme-settings-extended]):not(.is-collapsed) + .style-settings-container { + border-color: hsla(var(--color-accent-hsl), 0.2); +} +.style-settings-heading:is([data-id=anuppuccin-theme-settings], +[data-id=anuppuccin-theme-settings-extended]) .setting-item-name { + color: var(--color-accent); +} + +.anuppuccin-accent-toggle .style-settings-heading:is([data-id=anuppuccin-theme-settings], +[data-id=anuppuccin-theme-settings-extended]) { + border-color: rgba(var(--ctp-accent), 0.2); +} +.anuppuccin-accent-toggle .style-settings-heading:is([data-id=anuppuccin-theme-settings], +[data-id=anuppuccin-theme-settings-extended]):not(.is-collapsed) + .style-settings-container { + border-color: rgba(var(--ctp-accent), 0.2); +} + +.style-settings-container .style-settings-heading[data-id=anuppuccin-support] .setting-item-name { + color: var(--color-accent) !important; +} + +.style-settings-container .themed-color-wrapper { + display: flex; + gap: var(--size-4-2); +} + +.style-settings-container .themed-color-wrapper > div + div { + margin-top: 0; +} + +.style-settings-container .setting-item:is([data-id=anuppuccin-extended-colorschemes-links], +[data-id=anp-snippet-minimal-cards-disclaimer], +[data-id=anp-background-image-light], +[data-id=anp-background-image-dark], +[data-id=anuppuccin-theme-donate], +[data-id=anuppuccin-theme-source]) .setting-item-description > div { + display: none; +} + +.style-settings-container .setting-item-control:has(input[type=text]) { + flex-grow: 0; + position: relative; +} +.style-settings-container .setting-item-control:has(input[type=text])::after { + align-items: center; + background-color: var(--background-modifier-hover); + border-radius: var(--radius-s); + display: flex; + font-size: 10px; + font-weight: var(--font-semibold); + height: calc(var(--input-height) - 12px); + justify-content: center; + left: calc(100% - 68px); + letter-spacing: 0.05em; + line-height: var(--line-height-normal); + padding: 0; + position: absolute; + text-transform: uppercase; + top: 6px; + width: 28px; +} +.is-mobile .style-settings-container .setting-item-control:has(input[type=text])::after { + top: 4px; +} + +.style-settings-container .setting-item:is([data-id=tag-border-width], +[data-id=callout-radius], +[data-id=file-line-width], +[data-id=file-margins], +[data-id=anp-card-radius], +[data-id=anp-card-layout-padding], +[data-id=anp-card-header-left-padding], +[data-id=anp-table-thickness], +[data-id=anp-alt-tab-custom-height], +[data-id=anp-depth-tab-gap], +[data-id=anp-safari-tab-radius], +[data-id=anp-safari-tab-gap], +[data-id=anp-safari-border-width], +[data-id=anp-stacked-header-width], +[data-id=anp-border-radius], +[data-id=anp-border-padding]) .setting-item-control::after { + content: "px"; +} + +.style-settings-container .setting-item:is([data-id=h1-size], +[data-id=h2-size], +[data-id=h3-size], +[data-id=h4-size], +[data-id=h5-size], +[data-id=h6-size], +[data-id=list-indent], +[data-id=list-spacing]) .setting-item-control::after { + content: "em"; +} + +.style-settings-container .setting-item:is([data-id=anp-preview-width-pct], +[data-id=anp-table-width-pct]) .setting-item-control::after { + content: "%"; +} + +.setting-item[data-id*=anp-kanban-]:is([data-id$=spacing], [data-id$=radius]) .setting-item-description small::after { + content: "px"; +} + +.setting-item[data-id=anp-colors-section-header] > .setting-item-info > .setting-item-name { + border-bottom: 2px solid; + border-image: linear-gradient(to right, rgb(var(--ctp-rosewater)) 7%, rgb(var(--ctp-flamingo)) 7%, rgb(var(--ctp-flamingo)) 14%, rgb(var(--ctp-mauve)) 14%, rgb(var(--ctp-mauve)) 21%, rgb(var(--ctp-pink)) 21%, rgb(var(--ctp-pink)) 28%, rgb(var(--ctp-red)) 28%, rgb(var(--ctp-red)) 35%, rgb(var(--ctp-maroon)) 35%, rgb(var(--ctp-maroon)) 42%, rgb(var(--ctp-peach)) 42%, rgb(var(--ctp-peach)) 49%, rgb(var(--ctp-yellow)) 49%, rgb(var(--ctp-yellow)) 56%, rgb(var(--ctp-green)) 56%, rgb(var(--ctp-green)) 63%, rgb(var(--ctp-teal)) 63%, rgb(var(--ctp-teal)) 70%, rgb(var(--ctp-sky)) 70%, rgb(var(--ctp-sky)) 77%, rgb(var(--ctp-sapphire)) 77%, rgb(var(--ctp-sapphire)) 85%, rgb(var(--ctp-blue)) 85%, rgb(var(--ctp-blue)) 92%, rgb(var(--ctp-lavender))) 5; +} + +.setting-item:is([data-id^=anuppuccin-url-]) .setting-item-control { + display: none; +} +.setting-item:is([data-id^=anuppuccin-url-]) .setting-item-name::before { + display: inline-flex; + font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + height: fit-content; + padding-right: var(--size-4-2); + width: var(--size-4-4); +} + +.setting-item-heading > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + height: fit-content; + margin-left: var(--size-4-3); + width: var(--size-4-4); +} + +.setting-item[data-id=anuppuccin-url-donate] .setting-item-name::before { + content: " ☕"; +} + +.setting-item[data-id=anuppuccin-url-star-repo] .setting-item-name::before { + content: " ⭐"; +} + +.setting-item[data-id=anuppuccin-url-submit-issue] .setting-item-name::before { + content: " 🐞"; +} + +.setting-item[data-id=anuppuccin-url-minimal-cards-snippet] .setting-item-name::before { + content: " ⬇"; +} + +.setting-item:is([data-id*=anuppuccin-theme-settings]) > .setting-item-info > .setting-item-name { + margin-left: -3px; +} +.setting-item:is([data-id*=anuppuccin-theme-settings]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator { + margin-right: 4px; +} +.setting-item:is([data-id*=anuppuccin-theme-settings]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: contain; + background-color: var(--color-accent); + content: " "; + display: inline-flex; + flex-shrink: 0; + height: calc(var(--font-ui-medium) + 3px); + width: calc(var(--font-ui-medium) + 3px); + margin-left: calc(-0.5 * var(--size-4-1)); + margin-right: calc(var(--size-4-2) - 3px); + transition: transform 0.1s; + vertical-align: text-top; + margin-right: 0; +} +.setting-item:is([data-id*=anuppuccin-theme-settings]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator > svg { + display: none; +} + +.setting-item:is([data-id*=anuppuccin-theme-settings-extended]) > .setting-item-info > .setting-item-name { + margin-left: -3px; +} +.setting-item:is([data-id*=anuppuccin-theme-settings-extended]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator { + margin-right: 4px; +} +.setting-item:is([data-id*=anuppuccin-theme-settings-extended]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: contain; + background-color: var(--color-accent); + content: " "; + display: inline-flex; + flex-shrink: 0; + height: calc(var(--font-ui-medium) + 3px); + width: calc(var(--font-ui-medium) + 3px); + margin-left: calc(-0.5 * var(--size-4-1)); + margin-right: calc(var(--size-4-2) - 3px); + transition: transform 0.1s; + vertical-align: text-top; + margin-right: 0; +} +.setting-item:is([data-id*=anuppuccin-theme-settings-extended]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator > svg { + display: none; +} + +.setting-item:is([data-id*=anp-colors-section-header]) > .setting-item-info > .setting-item-name { + margin-left: -3px; +} +.setting-item:is([data-id*=anp-colors-section-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator { + margin-right: 4px; +} +.setting-item:is([data-id*=anp-colors-section-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: contain; + background-color: var(--color-accent); + content: " "; + display: inline-flex; + flex-shrink: 0; + height: calc(var(--font-ui-medium) + 3px); + width: calc(var(--font-ui-medium) + 3px); + margin-left: calc(-0.5 * var(--size-4-1)); + margin-right: calc(var(--size-4-2) - 3px); + transition: transform 0.1s; + vertical-align: text-top; + margin-right: 0; +} +.setting-item:is([data-id*=anp-colors-section-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator > svg { + display: none; +} + +.setting-item:is([data-id*=anp-editor-header]) > .setting-item-info > .setting-item-name { + margin-left: -3px; +} +.setting-item:is([data-id*=anp-editor-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator { + margin-right: 4px; +} +.setting-item:is([data-id*=anp-editor-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: contain; + background-color: var(--color-accent); + content: " "; + display: inline-flex; + flex-shrink: 0; + height: calc(var(--font-ui-medium) + 3px); + width: calc(var(--font-ui-medium) + 3px); + margin-left: calc(-0.5 * var(--size-4-1)); + margin-right: calc(var(--size-4-2) - 3px); + transition: transform 0.1s; + vertical-align: text-top; + margin-right: 0; +} +.setting-item:is([data-id*=anp-editor-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator > svg { + display: none; +} + +.setting-item:is([data-id*=anp-preview-header]) > .setting-item-info > .setting-item-name { + margin-left: -3px; +} +.setting-item:is([data-id*=anp-preview-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator { + margin-right: 4px; +} +.setting-item:is([data-id*=anp-preview-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: contain; + background-color: var(--color-accent); + content: " "; + display: inline-flex; + flex-shrink: 0; + height: calc(var(--font-ui-medium) + 3px); + width: calc(var(--font-ui-medium) + 3px); + margin-left: calc(-0.5 * var(--size-4-1)); + margin-right: calc(var(--size-4-2) - 3px); + transition: transform 0.1s; + vertical-align: text-top; + margin-right: 0; +} +.setting-item:is([data-id*=anp-preview-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator > svg { + display: none; +} + +.setting-item:is([data-id*=anp-plugin-header]) > .setting-item-info > .setting-item-name { + margin-left: -3px; +} +.setting-item:is([data-id*=anp-plugin-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator { + margin-right: 4px; +} +.setting-item:is([data-id*=anp-plugin-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: contain; + background-color: var(--color-accent); + content: " "; + display: inline-flex; + flex-shrink: 0; + height: calc(var(--font-ui-medium) + 3px); + width: calc(var(--font-ui-medium) + 3px); + margin-left: calc(-0.5 * var(--size-4-1)); + margin-right: calc(var(--size-4-2) - 3px); + transition: transform 0.1s; + vertical-align: text-top; + margin-right: 0; +} +.setting-item:is([data-id*=anp-plugin-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator > svg { + display: none; +} + +.setting-item:is([data-id*=anp-misc-element-header]) > .setting-item-info > .setting-item-name { + margin-left: -3px; +} +.setting-item:is([data-id*=anp-misc-element-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator { + margin-right: 4px; +} +.setting-item:is([data-id*=anp-misc-element-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: contain; + background-color: var(--color-accent); + content: " "; + display: inline-flex; + flex-shrink: 0; + height: calc(var(--font-ui-medium) + 3px); + width: calc(var(--font-ui-medium) + 3px); + margin-left: calc(-0.5 * var(--size-4-1)); + margin-right: calc(var(--size-4-2) - 3px); + transition: transform 0.1s; + vertical-align: text-top; + margin-right: 0; +} +.setting-item:is([data-id*=anp-misc-element-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator > svg { + display: none; +} + +.setting-item:is([data-id*=anp-show-hide-elements-header]) > .setting-item-info > .setting-item-name { + margin-left: -3px; +} +.setting-item:is([data-id*=anp-show-hide-elements-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator { + margin-right: 4px; +} +.setting-item:is([data-id*=anp-show-hide-elements-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: contain; + background-color: var(--color-accent); + content: " "; + display: inline-flex; + flex-shrink: 0; + height: calc(var(--font-ui-medium) + 3px); + width: calc(var(--font-ui-medium) + 3px); + margin-left: calc(-0.5 * var(--size-4-1)); + margin-right: calc(var(--size-4-2) - 3px); + transition: transform 0.1s; + vertical-align: text-top; + margin-right: 0; +} +.setting-item:is([data-id*=anp-show-hide-elements-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator > svg { + display: none; +} + +.setting-item:is([data-id*=anp-typography-header]) > .setting-item-info > .setting-item-name { + margin-left: -3px; +} +.setting-item:is([data-id*=anp-typography-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator { + margin-right: 4px; +} +.setting-item:is([data-id*=anp-typography-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: contain; + background-color: var(--color-accent); + content: " "; + display: inline-flex; + flex-shrink: 0; + height: calc(var(--font-ui-medium) + 3px); + width: calc(var(--font-ui-medium) + 3px); + margin-left: calc(-0.5 * var(--size-4-1)); + margin-right: calc(var(--size-4-2) - 3px); + transition: transform 0.1s; + vertical-align: text-top; + margin-right: 0; +} +.setting-item:is([data-id*=anp-typography-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator > svg { + display: none; +} + +.setting-item:is([data-id*=anp-workspace-header]) > .setting-item-info > .setting-item-name { + margin-left: -3px; +} +.setting-item:is([data-id*=anp-workspace-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator { + margin-right: 4px; +} +.setting-item:is([data-id*=anp-workspace-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: contain; + background-color: var(--color-accent); + content: " "; + display: inline-flex; + flex-shrink: 0; + height: calc(var(--font-ui-medium) + 3px); + width: calc(var(--font-ui-medium) + 3px); + margin-left: calc(-0.5 * var(--size-4-1)); + margin-right: calc(var(--size-4-2) - 3px); + transition: transform 0.1s; + vertical-align: text-top; + margin-right: 0; +} +.setting-item:is([data-id*=anp-workspace-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator > svg { + display: none; +} + +.setting-item:is([data-id*=anuppuccin-support]) > .setting-item-info > .setting-item-name { + margin-left: -3px; +} +.setting-item:is([data-id*=anuppuccin-support]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator { + margin-right: 4px; +} +.setting-item:is([data-id*=anuppuccin-support]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: contain; + background-color: var(--color-accent); + content: " "; + display: inline-flex; + flex-shrink: 0; + height: calc(var(--font-ui-medium) + 3px); + width: calc(var(--font-ui-medium) + 3px); + margin-left: calc(-0.5 * var(--size-4-1)); + margin-right: calc(var(--size-4-2) - 3px); + transition: transform 0.1s; + vertical-align: text-top; + margin-right: 0; +} +.setting-item:is([data-id*=anuppuccin-support]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator > svg { + display: none; +} + +.setting-item:is([data-id*=anp-custom-rainbow-colors]) > .setting-item-info > .setting-item-name { + margin-left: -3px; +} +.setting-item:is([data-id*=anp-custom-rainbow-colors]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator { + margin-right: 4px; +} +.setting-item:is([data-id*=anp-custom-rainbow-colors]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: contain; + background-color: var(--color-accent); + content: " "; + display: inline-flex; + flex-shrink: 0; + height: calc(var(--font-ui-medium) + 3px); + width: calc(var(--font-ui-medium) + 3px); + margin-left: calc(-0.5 * var(--size-4-1)); + margin-right: calc(var(--size-4-2) - 3px); + transition: transform 0.1s; + vertical-align: text-top; + margin-right: 0; +} +.setting-item:is([data-id*=anp-custom-rainbow-colors]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator > svg { + display: none; +} + +.setting-item:is([data-id*=anp-custom-rainbow-colors]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + background: linear-gradient(to right, rgb(var(--ctp-rosewater)) 7%, rgb(var(--ctp-flamingo)) 7%, rgb(var(--ctp-flamingo)) 14%, rgb(var(--ctp-mauve)) 14%, rgb(var(--ctp-mauve)) 21%, rgb(var(--ctp-pink)) 21%, rgb(var(--ctp-pink)) 28%, rgb(var(--ctp-red)) 28%, rgb(var(--ctp-red)) 35%, rgb(var(--ctp-maroon)) 35%, rgb(var(--ctp-maroon)) 42%, rgb(var(--ctp-peach)) 42%, rgb(var(--ctp-peach)) 49%, rgb(var(--ctp-yellow)) 49%, rgb(var(--ctp-yellow)) 56%, rgb(var(--ctp-green)) 56%, rgb(var(--ctp-green)) 63%, rgb(var(--ctp-teal)) 63%, rgb(var(--ctp-teal)) 70%, rgb(var(--ctp-sky)) 70%, rgb(var(--ctp-sky)) 77%, rgb(var(--ctp-sapphire)) 77%, rgb(var(--ctp-sapphire)) 85%, rgb(var(--ctp-blue)) 85%, rgb(var(--ctp-blue)) 92%, rgb(var(--ctp-lavender))); +} + +.setting-item:is([data-id=anuppuccin-theme-settings], +[data-id=anp-colors-section-header], +[data-id=anp-editor-header], +[data-id=anp-misc-element-header], +[data-id=anp-show-hide-elements-header], +[data-id=anp-typography-header], +[data-id=anp-plugin-header], +[data-id=anp-workspace-header], +[data-id=anuppuccin-support], +[data-id=anp-custom-rainbow-colors]):not(.is-collapsed) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + transform: rotate(90deg); + transition: transform 0.1s; +} + +.setting-item:is([data-id=anuppuccin-theme-settings-extended], +[data-id=anp-preview-header]):not(.is-collapsed) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + transform: rotate(-90deg); + transition: transform 0.1s; +} + +.setting-item:is([data-id=anuppuccin-theme-settings]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' data-darkreader-inline-stroke='' style='--darkreader-inline-stroke:currentColor;'%3E%3Ccircle cx='13.5' cy='6.5' r='.5'%3E%3C/circle%3E%3Ccircle cx='17.5' cy='10.5' r='.5'%3E%3C/circle%3E%3Ccircle cx='8.5' cy='7.5' r='.5'%3E%3C/circle%3E%3Ccircle cx='6.5' cy='12.5' r='.5'%3E%3C/circle%3E%3Cpath d='M12 2C6.5 2 2 6.5 2 12s4.5 10 10 10c.926 0 1.648-.746 1.648-1.688 0-.437-.18-.835-.437-1.125-.29-.289-.438-.652-.438-1.125a1.64 1.64 0 0 1 1.668-1.668h1.996c3.051 0 5.555-2.503 5.555-5.554C21.965 6.012 17.461 2 12 2z'%3E%3C/path%3E%3C/svg%3E"); +} + +.setting-item:is([data-id=anuppuccin-theme-settings-extended]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18.37 2.63 14 7l-1.59-1.59a2 2 0 0 0-2.82 0L8 7l9 9 1.59-1.59a2 2 0 0 0 0-2.82L17 10l4.37-4.37a2.12 2.12 0 1 0-3-3Z'%3E%3C/path%3E%3Cpath d='M9 8c-2 3-4 3.5-7 4l8 10c2-1 6-5 6-7'%3E%3C/path%3E%3Cpath d='M14.5 17.5 4.5 15'%3E%3C/path%3E%3C/svg%3E"); +} + +.setting-item:is([data-id=anp-colors-section-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9.06 11.9 8.07-8.06a2.85 2.85 0 1 1 4.03 4.03l-8.06 8.08'%3E%3C/path%3E%3Cpath d='M7.07 14.94c-1.66 0-3 1.35-3 3.02 0 1.33-2.5 1.52-2 2.02 1.08 1.1 2.49 2.02 4 2.02 2.2 0 4-1.8 4-4.04a3.01 3.01 0 0 0-3-3.02z'%3E%3C/path%3E%3C/svg%3E"); +} + +.setting-item:is([data-id=anp-editor-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15.5 3H5a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h14a2 2 0 0 0 2-2V8.5L15.5 3Z'%3E%3C/path%3E%3Cpath d='M15 3v6h6'%3E%3C/path%3E%3C/svg%3E"); +} + +.setting-item:is([data-id=anp-preview-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'%3E%3C/path%3E%3Cpath d='M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z'%3E%3C/path%3E%3C/svg%3E"); +} + +.setting-item:is([data-id=anp-plugin-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 22v-5'%3E%3C/path%3E%3Cpath d='M9 7V2'%3E%3C/path%3E%3Cpath d='M15 7V2'%3E%3C/path%3E%3Cpath d='M6 13V8h12v5a4 4 0 0 1-4 4h-4a4 4 0 0 1-4-4Z'%3E%3C/path%3E%3C/svg%3E"); +} + +.setting-item:is([data-id=anp-misc-element-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='9' y1='18' x2='15' y2='18'%3E%3C/line%3E%3Cline x1='10' y1='22' x2='14' y2='22'%3E%3C/line%3E%3Cpath d='M15.09 14c.18-.98.65-1.74 1.41-2.5A4.65 4.65 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .23 2.23 1.5 3.5A4.61 4.61 0 0 1 8.91 14'%3E%3C/path%3E%3C/svg%3E"); +} + +.setting-item:is([data-id=anp-show-hide-elements-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72Z'%3E%3C/path%3E%3Cpath d='m14 7 3 3'%3E%3C/path%3E%3Cpath d='M5 6v4'%3E%3C/path%3E%3Cpath d='M19 14v4'%3E%3C/path%3E%3Cpath d='M10 2v2'%3E%3C/path%3E%3Cpath d='M7 8H3'%3E%3C/path%3E%3Cpath d='M21 16h-4'%3E%3C/path%3E%3Cpath d='M11 3H9'%3E%3C/path%3E%3C/svg%3E"); +} + +.setting-item:is([data-id=anp-typography-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='4 7 4 4 20 4 20 7'%3E%3C/polyline%3E%3Cline x1='9' y1='20' x2='15' y2='20'%3E%3C/line%3E%3Cline x1='12' y1='4' x2='12' y2='20'%3E%3C/line%3E%3C/svg%3E"); +} + +.setting-item:is([data-id=anp-workspace-header]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='4' width='20' height='5' rx='2'%3E%3C/rect%3E%3Cpath d='M4 9v9a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9'%3E%3C/path%3E%3Cpath d='M10 13h4'%3E%3C/path%3E%3C/svg%3E"); +} + +.setting-item:is([data-id=anuppuccin-support]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.42 4.58a5.4 5.4 0 0 0-7.65 0l-.77.78-.77-.78a5.4 5.4 0 0 0-7.65 0C1.46 6.7 1.33 10.28 4 13l8 8 8-8c2.67-2.72 2.54-6.3.42-8.42z'%3E%3C/path%3E%3C/svg%3E"); +} + +.setting-item:is([data-id=anp-custom-rainbow-colors]) > .setting-item-info > .setting-item-name > .style-settings-collapse-indicator::after { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 19.9V16h3a2 2 0 0 0 2-2v-2H5v2c0 1.1.9 2 2 2h3v3.9a2 2 0 1 0 4 0Z'%3E%3C/path%3E%3Cpath d='M6 12V2h12v10'%3E%3C/path%3E%3Cpath d='M14 2v4'%3E%3C/path%3E%3Cpath d='M10 2v2'%3E%3C/path%3E%3C/svg%3E"); +} + +.excalibrain-searchinput, +.multiselect-wrapper { + --background-modifier-form-field: rgb(var(--ctp-crust)); +} + +.multiselect-wrapper { + -webkit-app-region: no-drag; + background: var(--background-modifier-form-field); + border: var(--input-border-width) solid var(--background-modifier-border); + color: var(--text-normal); + font-family: inherit; + padding: var(--size-4-1) var(--size-4-2); + font-size: var(--font-ui-small); + border-radius: var(--input-radius); + outline: none; +} + +.multiselect-container .multiselect-wrapper .options-wrapper { + background: var(--background-modifier-form-field); + margin-top: -4px; + border-radius: 0 0 var(--input-radius) var(--input-radius); + border-top: none; + width: calc(100% + 2px); + margin-left: -1px; +} + +.excalidraw-dirty { + color: rgb(var(--ctp-red)); +} + +.excalibrain-button.on { + background-color: rgb(var(--ctp-base)); + border-color: var(--color-accent); + --input-shadow: inset 0 0 0 2px var(--color-accent); + --input-shadow-hover: inset 0 0 0 2px var(--color-accent); +} + +.excalibrain-button.off { + background-color: rgb(var(--ctp-crust)); +} + +/*-Fix dataview table header size-*/ +.table-view-table > thead > tr > th { + font-size: medium; + color: var(--text-muted); +} + +.dataview.inline-field-standalone-value, +.dataview.inline-field-key, +.dataview.inline-field-value { + padding-left: 0px; + padding-right: 0px; + font-family: inherit; + background-color: transparent; + color: var(--text-normal); +} + +.dataview.inline-field-standalone-value, +.dataview.inline-field-value { + text-decoration: underline; + text-decoration-line: underline; + text-decoration-color: rgba(var(--ctp-yellow), 0.4); +} + +.dataview.inline-field-key { + font-weight: bold; + color: var(--bold-color); + padding-right: 0; +} +.dataview.inline-field-key::after { + content: ":"; + height: inherit; + width: fit-content; +} + +.dataview.inline-field-value { + padding-left: 8px; +} + +/* Extremely WIP excalidraw support + * Excalidraw, quite frankly, has extremely inconsistent styling and theming. + * This file will be removed if it's determined that excalidraw is not capable of being consistently themed. +**/ +.excalidraw.theme--dark { + --island-bg-color: rgb(var(--ctp-base)); + --color-primary-darkest: rgb(var(--ctp-accent)); + --color-surface-high: rgba(var(--ctp-surface2), 0.4); + --color-surface-low: rgb(var(--ctp-base)); + --color-on-surface: rgb(var(--ctp-text)); + --color-brand-hover: rgb(var(--ctp-base)); + --color-surface-primary-container: rgb(var(--ctp-accent)); + --color-on-primary-container: rgb(var(--ctp-base)); + --color-gray-50: rgb(var(--ctp-mantle)); +} + +.excalidraw .buttonList .zIndexButton.active, +.excalidraw .buttonList button.active, +.excalidraw .buttonList label.active { + --icon-fill-color: rgb(var(--ctp-base)); +} + +.excalidraw.theme--dark.excalidraw .App-menu__left { + --button-hover-bg: rgba(var(--ctp-surface2), 0.6) !important; +} + +.excalidraw .HintViewer { + display: none; +} + +.excalidraw .ExcTextField__input input::placeholder { + color: rgb(var(--ctp-subtext1)); +} + +.excalidraw-container.theme--dark { + color: rgb(var(--ctp-text)); +} + +.excalidraw .layer-ui__result-item b { + color: rgb(var(--ctp-accent)); +} + +.obsidian-icon-folder-icon { + margin-top: -5px; +} + +.anp-simple-rainbow-color-toggle.anp-simple-rainbow-icon-folder-toggle .obsidian-icon-folder-icon { + color: rgb(var(--rainbow-folder-color)); +} + +.obsidian-icon-folder-modal.prompt-results .suggestion-item { + color: var(--text-normal); +} + +.prompt .obsidian-icon-folder-subheadline { + color: var(--text-muted); +} + +.workspace-leaf-content[data-type=advanced-tables-toolbar] .nav-buttons-container { + border-style: dashed; + border-color: var(--background-modifier-border); + border-width: 0px 0px 1px 0px; + margin-top: 10px; + gap: 10px; +} + +#cMenuModalBar { + border: 2px solid rgba(var(--ctp-crust), 0.2); +} +#cMenuModalBar .cMenuCommandItem { + background-color: rgba(var(--ctp-mantle), 0.4); +} +#cMenuModalBar .cMenuCommandItem:hover { + background-color: rgba(var(--ctp-mantle), 0.6); +} + +#cMenuModalBar button.cMenuCommandItem:hover { + background-color: rgba(var(--ctp-mantle), 0.6); +} + +.status-bar-item.plugin-obsidian-discordrpc { + width: 0px; + height: 0px; + text-overflow: clip; + overflow: hidden; + margin-right: 20px; + padding: 0px; +} + +.status-bar-item.plugin-obsidian-discordrpc:after { + position: absolute; + margin-top: 18px; + content: " "; + height: 18px; + width: 20px; + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z'/%3E%3C/svg%3E"); + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 640 512'%3E%3Cpath d='M524.531,69.836a1.5,1.5,0,0,0-.764-.7A485.065,485.065,0,0,0,404.081,32.03a1.816,1.816,0,0,0-1.923.91,337.461,337.461,0,0,0-14.9,30.6,447.848,447.848,0,0,0-134.426,0,309.541,309.541,0,0,0-15.135-30.6,1.89,1.89,0,0,0-1.924-.91A483.689,483.689,0,0,0,116.085,69.137a1.712,1.712,0,0,0-.788.676C39.068,183.651,18.186,294.69,28.43,404.354a2.016,2.016,0,0,0,.765,1.375A487.666,487.666,0,0,0,176.02,479.918a1.9,1.9,0,0,0,2.063-.676A348.2,348.2,0,0,0,208.12,430.4a1.86,1.86,0,0,0-1.019-2.588,321.173,321.173,0,0,1-45.868-21.853,1.885,1.885,0,0,1-.185-3.126c3.082-2.309,6.166-4.711,9.109-7.137a1.819,1.819,0,0,1,1.9-.256c96.229,43.917,200.41,43.917,295.5,0a1.812,1.812,0,0,1,1.924.233c2.944,2.426,6.027,4.851,9.132,7.16a1.884,1.884,0,0,1-.162,3.126,301.407,301.407,0,0,1-45.89,21.83,1.875,1.875,0,0,0-1,2.611,391.055,391.055,0,0,0,30.014,48.815,1.864,1.864,0,0,0,2.063.7A486.048,486.048,0,0,0,610.7,405.729a1.882,1.882,0,0,0,.765-1.352C623.729,277.594,590.933,167.465,524.531,69.836ZM222.491,337.58c-28.972,0-52.844-26.587-52.844-59.239S193.056,219.1,222.491,219.1c29.665,0,53.306,26.82,52.843,59.239C275.334,310.993,251.924,337.58,222.491,337.58Zm195.38,0c-28.971,0-52.843-26.587-52.843-59.239S388.437,219.1,417.871,219.1c29.667,0,53.307,26.82,52.844,59.239C470.715,310.993,447.538,337.58,417.871,337.58Z'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repea; + background-color: var(--status-bar-text-color); +} +.status-bar-item.plugin-obsidian-discordrpc:hover:after { + filter: brightness(60%); +} + +#calendar-container h3 { + font-family: var(--font-interface); + font-weight: bold; +} + +#calendar-container .right-nav .reset-button { + margin: auto; +} + +.calendar .day.svelte-q3wqg9 { + transition: background-color 0.1s; +} +.calendar .day.svelte-q3wqg9:hover { + background-color: rgb(var(--ctp-crust)); +} + +.cMenuToolbarDefaultAesthetic { + margin: 5px 10px 0 10px; + box-shadow: 0 3px 4px 0px rgba(0, 0, 0, 0.05); + background-color: var(--background-primary); +} + +#cMenuToolbarModalBar.top button.cMenuToolbarCommandItem:hover { + background-color: var(--background-secondary); +} + +#cMenuToolbarModalBar.top :is(.cMenuToolbarCommandItem, button[class^=cMenuToolbarCommandsubItem]):not(.cMenuToolbar-Divider-Line) { + transition: all 0s linear; +} + +div[class*=recent-files-] { + --anp-file-label-align: 1; +} + +.gemmy-tooltip.tooltip { + display: block; + --background-modifier-message: rgb(var(--ctp-yellow)); + color: rgb(var(--ctp-base)); + font-size: var(--font-ui-medium); + border-radius: var(--size-4-1); + padding: var(--size-4-2) var(--size-4-3); +} + +/* Recolor Colors */ +div[class*=mk-] [style*="--label-color:#eb3b5a"] { + --label-color: rgb(var(--ctp-red)) !important; +} +div[class*=mk-] [style*="--label-color:#fa8231"] { + --label-color: rgb(var(--ctp-peach)) !important; +} +div[class*=mk-] [style*="--label-color:#f7b731"] { + --label-color: rgb(var(--ctp-yellow)) !important; +} +div[class*=mk-] [style*="--label-color:#0fb9b1"] { + --label-color: rgb(var(--ctp-teal)) !important; +} +div[class*=mk-] [style*="--label-color:#2d98da"] { + --label-color: rgb(var(--ctp-blue)) !important; +} +div[class*=mk-] [style*="--icon-color:#ffffff"] { + --icon-color: rgb(var(--ctp-base)) !important; +} + +/* Context card view */ +.mk-cards-grid .mk-list-group > ul { + justify-content: center; +} +.mk-cards-grid .mk-list-group > ul > .mk-list-item { + box-shadow: none; + border: 1px solid var(--background-modifier-border); + border-radius: var(--radius-m); +} +.mk-cards-grid .mk-list-group > ul > .mk-list-item > .mk-file-preview { + margin-bottom: 0px; +} +.mk-cards-grid .mk-list-group > ul > .mk-list-item > .mk-list-content { + border-top: 1px dashed var(--background-modifier-border); +} + +/* Folder Header */ +.mk-folder-header .inline-title { + --inline-title-color: var(--text-normal); + --inline-title-font: var(--font-interface); + display: block; +} + +.mk-list-container .mk-list-view .mk-list-group .mk-list-item .mk-list-content { + border-bottom: thin dashed var(--divider-color); +} + +/* FIlter Button */ +.mk-filter-bar .mk-filter { + -webkit-app-region: no-drag; + display: inline-flex; + align-items: center; + justify-content: center; + color: var(--text-normal); + font-size: var(--font-ui-small); + border-radius: var(--button-radius); + border: 0; + height: var(--input-height); + font-weight: var(--input-font-weight); + cursor: var(--cursor); + font-family: inherit; + outline: none; + user-select: none; + white-space: nowrap; + background-color: var(--interactive-normal); + box-shadow: var(--input-shadow); +} +.mk-filter-bar .mk-filter > span, +.mk-filter-bar .mk-filter > div { + background-color: transparent; + border-right: 1px solid var(--background-modifier-border); +} +.mk-filter-bar .mk-filter > span:hover, +.mk-filter-bar .mk-filter > div:hover { + background-color: var(--interactive-hover); +} +.mk-filter-bar .mk-filter > div { + height: 100%; + width: 100%; + padding: 0 7px; +} + +/* Recolor Colors */ +.mk-tree-item:has(.mk-file-icon > button[style*="--label-color:#eb3b5a"]) { + --label-color: rgb(var(--ctp-red)) !important; +} +.mk-tree-item:has(.mk-file-icon > button[style*="--label-color:#fa8231"]) { + --label-color: rgb(var(--ctp-peach)) !important; +} +.mk-tree-item:has(.mk-file-icon > button[style*="--label-color:#f7b731"]) { + --label-color: rgb(var(--ctp-yellow)) !important; +} +.mk-tree-item:has(.mk-file-icon > button[style*="--label-color:#0fb9b1"]) { + --label-color: rgb(var(--ctp-teal)) !important; +} +.mk-tree-item:has(.mk-file-icon > button[style*="--label-color:#2d98da"]) { + --label-color: rgb(var(--ctp-blue)) !important; +} +.mk-tree-item:has(.mk-file-icon > button[style*="--icon-color:#ffffff"]) { + --icon-color: rgb(var(--ctp-base)) !important; +} + +.mk-tree-text.nav-file-title-content { + color: var(--label-color); +} + +.mk-table th:hover { + background-color: var(--background-modifier-hover); +} + +/* Notion-Styled Kanban Fix */ +body.theme-dark.theme-dark { + --notion-kanban-card: rgb(var(--ctp-surface0)); + --notion-kanban-card-hover: rgb(var(--ctp-surface1)); +} + +/* Fix bottom padding of kanban board on mobile */ +body.is-mobile .kanban-plugin__board > div { + padding-bottom: 5rem; +} + +/* Fix bottom padding of kanban board when status bar is visible */ +body:not(.is-mobile):not(.anp-hide-status-bar) .kanban-plugin__board > div { + padding-bottom: 2.5rem; +} + +/* Kanban background */ +.kanban-plugin__board > div { + --kanban-dot-color: var(--canvas-dot-pattern); + --kanban-dot-offset: 7px; + --kanban-dot-spacing: 20px; + --kanban-dot-size: 0.7px; + background-image: radial-gradient(circle, var(--kanban-dot-color) var(--kanban-dot-size), transparent var(--kanban-dot-size)); + background-position: var(--kanban-dot-offset) var(--kanban-dot-offset); + background-size: var(--kanban-dot-spacing) var(--kanban-dot-spacing); + flex-grow: 1; +} + +/* Kanban date button and date picker */ +.kanban-plugin__item-metadata-date.is-button { + position: relative; + display: inline-block; +} +.kanban-plugin__item-metadata-date.is-button:hover::before { + position: absolute; + display: inline-flex; + top: -3px; + left: -5px; + right: -5px; + bottom: -3px; + content: ""; + z-index: 0; + background-color: var(--background-modifier-hover); + border-radius: var(--clickable-icon-radius); +} + +.kanban-plugin__date-picker { + --background-primary-alt: var(--background-modifier-hover); + --input-shadow: none; + --input-shadow-hover: none; +} +.kanban-plugin__date-picker .flatpickr-current-month input:hover, .kanban-plugin__date-picker .flatpickr-current-month input:focus, +.kanban-plugin__date-picker .flatpickr-monthDropdown-months:hover, +.kanban-plugin__date-picker .flatpickr-monthDropdown-months:focus { + background-color: var(--background-modifier-hover); + box-shadow: none; +} +.kanban-plugin__date-picker .flatpickr-day:not(.today):hover { + border-width: 0; +} + +/* Kanban Autocomplete Fix */ +.kanban-plugin__autocomplete-item-active em { + color: var(--text-on-accent); +} + +/* Kanban Callout Fix */ +.kanban-plugin__item .callout { + margin-top: 0.66em; +} + +.kanban-plugin__item .callout-fold, +.kanban-plugin__item .callout-icon { + display: none; +} + +/* Kanban conditional settings */ +.setting-item[data-id=anp-kanban-hide-card-menus]:not(:has(.is-enabled)) + [data-id=anp-kanban-hide-archive-btn] { + display: none; +} + +.kanban-plugin button, +.kanban-plugin__drag-container button { + box-shadow: none; +} +.kanban-plugin button:hover, +.kanban-plugin__drag-container button:hover { + background-color: var(--background-modifier-hover); + color: var(--text-normal); + transition: background-color 0.1s; +} +.kanban-plugin .kanban-plugin__new-item-button, +.kanban-plugin__drag-container .kanban-plugin__new-item-button { + font-size: 0.875rem; + gap: 0.25em; + height: auto; + line-height: var(--line-height-tight); + padding: 7px 10px; +} + +.anp-kanban-hide-card-menus:not(.is-mobile) .kanban-plugin__item-title + .kanban-plugin__item-postfix-button-wrapper { + display: none; +} + +.anp-kanban-hide-card-menus.anp-kanban-hide-archive-btn:not(.is-mobile) .kanban-plugin__item-title-wrapper { + padding: 8px; + position: relative; +} +.anp-kanban-hide-card-menus.anp-kanban-hide-archive-btn:not(.is-mobile) .kanban-plugin__item-prefix-button-wrapper { + background-color: var(--background-primary); + border-top-right-radius: var(--anp-kanban-card-radius, 6px); + display: none; + padding: 3px; + position: absolute; + right: 1px; + top: 1px; + z-index: 1; +} +.anp-kanban-hide-card-menus.anp-kanban-hide-archive-btn:not(.is-mobile) .kanban-plugin__item:hover .kanban-plugin__item-prefix-button-wrapper { + display: flex; +} +.anp-kanban-hide-card-menus.anp-kanban-hide-archive-btn.is-mobile .kanban-plugin__item-prefix-button-wrapper { + display: none; +} + +.kanban-plugin__item-wrapper:hover { + z-index: 1; +} + +.kanban-plugin__item { + --checkbox-size: 16px; + --input-radius: var(--anp-kanban-card-radius, 6px); + --tag-color: var(--text-faint); + background-color: rgba(var(--ctp-base), var(--anp-kanban-card-opacity, 1)); + border-width: 0; + box-shadow: inset 0 0 0 1px var(--background-modifier-border); +} +.kanban-plugin__item:hover { + box-shadow: inset 0 0 0 1px var(--background-modifier-border-hover); +} +.kanban-plugin__item.is-search-hit { + box-shadow: 0 15px 25px rgba(0, 0, 0, 0.2), inset 0 0 0 1px var(--background-modifier-border); +} +.kanban-plugin__item.is-complete .kanban-plugin__item-markdown { + color: var(--text-muted); + text-decoration-line: line-through; + opacity: 0.75; +} +.kanban-plugin__item .markdown-preview-view .tag { + --tag-border-width: 0; + --tag-padding-y: 0; + --tag-padding-x: 0; + --tag-background: transparent; + --tag-color: var(--link-color); + --tag-size: reset; +} +.kanban-plugin__item code[class*=language-] { + font-size: 0.875em; + padding: 0.75em; + white-space: pre; +} +.kanban-plugin__item button.copy-code-button { + display: none; +} +.kanban-plugin__item textarea { + background-color: transparent; +} + +.kanban-plugin__item-content-wrapper { + background-color: transparent; +} + +.kanban-plugin__item-title-wrapper { + background-color: transparent; + column-gap: 5px; + padding: 8px; +} + +.kanban-plugin__item .kanban-plugin__item-metadata { + display: flex; + flex-wrap: wrap; + gap: 8px; + width: 100%; +} +.kanban-plugin__item .kanban-plugin__item-metadata:not(:empty) { + padding-top: 8px; +} + +.kanban-plugin__item .kanban-plugin__item-metadata-date-wrapper { + line-height: var(--line-height-tight); +} + +.kanban-plugin__item .kanban-plugin__item-tags { + display: flex; + width: 100%; + flex-wrap: wrap; + gap: 4px; +} +.kanban-plugin__item .kanban-plugin__item-tags:not(:empty) { + padding-top: 0; +} + +.kanban-plugin__item .kanban-plugin__item-tag { + margin: 0; +} + +.kanban-plugin__drag-container p, +.kanban-plugin__drag-container code { + overflow: hidden; +} + +.anp-kanban-hide-card-border .kanban-plugin__item:not(:hover) { + box-shadow: none; +} +.anp-kanban-hide-card-border .kanban-plugin__item.is-search-hit { + box-shadow: 0 15px 25px rgba(0, 0, 0, 0.2); +} + +.kanban-plugin__drag-container > .kanban-plugin__item-wrapper .kanban-plugin__item { + border-color: var(--background-modifier-border-hover); + box-shadow: inset 0 0 0 1px var(--background-modifier-border-hover), var(--shadow-s); +} + +.kanban-plugin__lane { + background-color: rgba(var(--ctp-mantle), var(--anp-kanban-lane-opacity, 1)); + border-radius: var(--anp-kanban-lane-radius, 6px); + border-width: 0; + box-shadow: inset 0 0 0 1px var(--background-modifier-border); +} + +.kanban-plugin__lane-wrapper { + margin-right: var(--anp-kanban-lane-spacing, 10px); + transition: width 200ms; +} + +.kanban-plugin__lane-grip { + color: var(--background-modifier-border); + margin: 0; +} + +.kanban-plugin__lane-header-wrapper { + gap: 5px; + padding-right: 8px; +} + +.kanban-plugin__lane-title p { + font-weight: 500; + white-space: nowrap; +} + +.kanban-plugin__lane .kanban-plugin__lane-title-count { + background-color: var(--background-modifier-hover); + border-radius: 2em; + flex-shrink: 0; + font-size: 12px; + font-weight: 600; + line-height: 20px; + margin: 0; + min-width: 20px; + padding: 0 6px; + text-align: center; +} + +.kanban-plugin__lane-setting-wrapper > div:last-child { + margin-bottom: 0; +} + +.kanban-plugin__lane-items { + margin: 0; + padding: 8px; + position: relative; +} + +.kanban-plugin__lane-items > div { + margin-top: 0; + margin-bottom: var(--anp-kanban-card-spacing, 8px); +} + +.kanban-plugin__action-confirm-wrapper { + margin: 8px 8px 0; +} + +.kanban-plugin__lane-setting-wrapper { + border-bottom: 1px solid var(--background-modifier-border); + display: flex; + flex-direction: column; + gap: 8px; + padding: 12px 0; +} +.kanban-plugin__lane-setting-wrapper > div { + padding: 0 12px; +} +.kanban-plugin__lane-setting-wrapper > div:last-child { + border-width: 0; +} +.kanban-plugin__lane-setting-wrapper .kanban-plugin__checkbox-wrapper { + flex-direction: row-reverse; + gap: 10px; + justify-content: flex-end; +} +.kanban-plugin__lane-setting-wrapper .checkbox-container { + margin-left: 0; +} + +.kanban-plugin__lane-wrapper .kanban-plugin__lane-items > .kanban-plugin__placeholder { + border-width: 2px; + margin-bottom: 0; + width: auto; +} +.kanban-plugin__lane-wrapper .kanban-plugin__lane-items > .kanban-plugin__placeholder:not(:only-child) { + border-width: 0 !important; +} +.kanban-plugin__lane-wrapper.is-sorting .kanban-plugin__lane-items > .kanban-plugin__placeholder { + border-color: var(--background-modifier-border); +} + +.anp-kanban-lanes .kanban-plugin__lane-wrapper { + height: 100%; +} +.anp-kanban-lanes .kanban-plugin__scroll-container.kanban-plugin__vertical { + flex-grow: 1; +} + +.anp-kanban-hide-lane-border .kanban-plugin__lane, +.anp-kanban-hide-lane-border .kanban-plugin__lane-header-wrapper, +.anp-kanban-hide-lane-border .kanban-plugin__item-button-wrapper, +.anp-kanban-hide-lane-border .kanban-plugin__item-form { + border-width: 0; + box-shadow: none; +} +.anp-kanban-hide-lane-border .kanban-plugin__lane-items { + padding-bottom: 0; + padding-top: 0; +} +.anp-kanban-hide-lane-border .kanban-plugin__lane-setting-wrapper { + border-bottom-width: 0; + padding-top: 6px; +} + +.anp-kanban-search-full .kanban-plugin__search-wrapper { + padding: 10px; +} +.anp-kanban-search-full .kanban-plugin__search-wrapper .kanban-plugin__filter-input { + flex: 1; +} +.anp-kanban-search-full .kanban-plugin__search-wrapper .clickable-icon { + position: absolute; + right: calc(1em - 2px); +} +.anp-kanban-search-full .kanban-plugin__search-wrapper .kanban-plugin__icon { + display: flex; +} + +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)), +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]), +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)), +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) { + width: 44px !important; +} +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) .kanban-plugin__lane-header-wrapper, +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) .kanban-plugin__lane-header-wrapper, +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) .kanban-plugin__lane-header-wrapper, +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) .kanban-plugin__lane-header-wrapper { + border-width: 0; + gap: 10px; + position: absolute; + transform-origin: 18px 22px; + transform: rotate(90deg); + z-index: 1; +} +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) .kanban-plugin__lane-grip, +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) .kanban-plugin__lane-grip, +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) .kanban-plugin__lane-grip, +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) .kanban-plugin__lane-grip { + transform: rotate(-90deg); +} +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) .kanban-plugin__lane-settings-button-wrapper, +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) .kanban-plugin__lane-settings-button-wrapper, +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) .kanban-plugin__lane-settings-button-wrapper, +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) .kanban-plugin__lane-settings-button-wrapper { + display: none; +} +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) .kanban-plugin__item-wrapper, +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) .kanban-plugin__item-wrapper, +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) .kanban-plugin__item-wrapper, +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) .kanban-plugin__item-wrapper { + display: none; +} +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) .kanban-plugin__placeholder:only-child, +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) .kanban-plugin__placeholder:only-child, +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) .kanban-plugin__placeholder:only-child, +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) .kanban-plugin__placeholder:only-child { + display: none; +} +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) .kanban-plugin__new-item-button, +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) .kanban-plugin__new-item-button, +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) .kanban-plugin__new-item-button, +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) .kanban-plugin__new-item-button { + font-size: 0; +} +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) .kanban-plugin__item-button-plus, +.anp-kanban-collapse-lanes:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) .kanban-plugin__item-button-plus, +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) .kanban-plugin__item-button-plus, +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container > .kanban-plugin__item-wrapper)) .kanban-plugin__lane-wrapper:not(:has(.kanban-plugin__lane[data-count="0"], +.kanban-plugin__item:not(.is-search-miss), +.kanban-plugin__item-form)) ~ .kanban-plugin__lane-wrapper:has(.kanban-plugin__lane[data-count="0"]) .kanban-plugin__item-button-plus { + font-size: 0.875rem; +} + +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes .kanban-plugin__drag-container[style*="width: 54px;"] .kanban-plugin__lane-wrapper { + width: 44px !important; +} +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes .kanban-plugin__drag-container[style*="width: 54px;"] .kanban-plugin__lane-wrapper .kanban-plugin__lane-header-wrapper { + border-width: 0; + gap: 10px; + position: absolute; + transform-origin: 18px 22px; + transform: rotate(90deg); + z-index: 1; +} +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes .kanban-plugin__drag-container[style*="width: 54px;"] .kanban-plugin__lane-wrapper .kanban-plugin__lane-grip { + transform: rotate(-90deg); +} +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes .kanban-plugin__drag-container[style*="width: 54px;"] .kanban-plugin__lane-wrapper .kanban-plugin__lane-settings-button-wrapper { + display: none; +} +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes .kanban-plugin__drag-container[style*="width: 54px;"] .kanban-plugin__lane-wrapper .kanban-plugin__item-wrapper { + display: none; +} +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes .kanban-plugin__drag-container[style*="width: 54px;"] .kanban-plugin__lane-wrapper .kanban-plugin__placeholder:only-child { + display: none; +} +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes .kanban-plugin__drag-container[style*="width: 54px;"] .kanban-plugin__lane-wrapper .kanban-plugin__new-item-button { + font-size: 0; +} +.anp-kanban-collapse-lanes.anp-kanban-uncollapse-lanes .kanban-plugin__drag-container[style*="width: 54px;"] .kanban-plugin__lane-wrapper .kanban-plugin__item-button-plus { + font-size: 0.875rem; +} + +.anp-kanban-hide-cards:not(.anp-kanban-uncollapse-lanes) .kanban-plugin__item-wrapper:has(.is-search-miss), +.anp-kanban-hide-cards.anp-kanban-uncollapse-lanes:not(:has(.kanban-plugin__drag-container)) .kanban-plugin__item-wrapper:has(.is-search-miss) { + display: none; +} + +.anp-kanban-hide-cards.anp-kanban-hide-card-border .kanban-plugin__item.is-search-hit { + box-shadow: none; +} + +.anp-kanban-hide-cards:not(.anp-kanban-hide-card-border) .kanban-plugin__item.is-search-hit { + box-shadow: inset 0 0 0 1px var(--background-modifier-border); +} + +.anp-kanban-hide-mark .kanban-plugin__item-wrapper .is-search-hit mark { + background-color: transparent; + color: inherit; +} diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json new file mode 100644 index 0000000..8d7f475 --- /dev/null +++ b/.obsidian/workspace.json @@ -0,0 +1,229 @@ +{ + "main": { + "id": "b0766bfba6d96ad8", + "type": "split", + "children": [ + { + "id": "4b28d70396ab62d5", + "type": "tabs", + "children": [ + { + "id": "523c3454e17a9af2", + "type": "leaf", + "state": { + "type": "graph", + "state": {}, + "icon": "lucide-git-fork", + "title": "Graph view" + } + } + ] + } + ], + "direction": "vertical" + }, + "left": { + "id": "8528e1a663696326", + "type": "split", + "children": [ + { + "id": "c045a6b5ec351697", + "type": "tabs", + "children": [ + { + "id": "ad7cc2b439bb5c9f", + "type": "leaf", + "state": { + "type": "file-explorer", + "state": { + "sortOrder": "alphabetical", + "autoReveal": false + }, + "icon": "lucide-folder-closed", + "title": "Files" + } + }, + { + "id": "20989f7c8b992439", + "type": "leaf", + "state": { + "type": "search", + "state": { + "query": "", + "matchingCase": false, + "explainSearch": false, + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical" + }, + "icon": "lucide-search", + "title": "Search" + } + }, + { + "id": "a002966c4fa46607", + "type": "leaf", + "state": { + "type": "bookmarks", + "state": {}, + "icon": "lucide-bookmark", + "title": "Bookmarks" + } + } + ] + } + ], + "direction": "horizontal", + "width": 300 + }, + "right": { + "id": "e0cdc4032215366b", + "type": "split", + "children": [ + { + "id": "27da5e0ee1de57f9", + "type": "tabs", + "children": [ + { + "id": "6b1b368c90d05e2a", + "type": "leaf", + "state": { + "type": "backlink", + "state": { + "file": "Welcome.md", + "collapseAll": false, + "extraContext": false, + "sortOrder": "alphabetical", + "showSearch": false, + "searchQuery": "", + "backlinkCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-coming-in", + "title": "Backlinks for Welcome" + } + }, + { + "id": "4332f773df6d8a0f", + "type": "leaf", + "state": { + "type": "outgoing-link", + "state": { + "file": "Welcome.md", + "linksCollapsed": false, + "unlinkedCollapsed": true + }, + "icon": "links-going-out", + "title": "Outgoing links from Welcome" + } + }, + { + "id": "002b8fa5c591bb38", + "type": "leaf", + "state": { + "type": "tag", + "state": { + "sortOrder": "frequency", + "useHierarchy": true, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-tags", + "title": "Tags" + } + }, + { + "id": "3281458928b919ae", + "type": "leaf", + "state": { + "type": "all-properties", + "state": { + "sortOrder": "frequency", + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-archive", + "title": "All properties" + } + }, + { + "id": "12a906ccddab91be", + "type": "leaf", + "state": { + "type": "outline", + "state": { + "file": "Welcome.md", + "followCursor": false, + "showSearch": false, + "searchQuery": "" + }, + "icon": "lucide-list", + "title": "Outline of Welcome" + } + }, + { + "id": "c8a7d7be0e633299", + "type": "leaf", + "state": { + "type": "calendar", + "state": {}, + "icon": "calendar-with-checkmark", + "title": "Calendar" + } + }, + { + "id": "42cff20645d08777", + "type": "leaf", + "state": { + "type": "git-view", + "state": {}, + "icon": "git-pull-request", + "title": "Source Control" + } + } + ], + "currentTab": 6 + } + ], + "direction": "horizontal", + "width": 300 + }, + "left-ribbon": { + "hiddenItems": { + "switcher:Open quick switcher": false, + "graph:Open graph view": false, + "canvas:Create new canvas": false, + "daily-notes:Open today's daily note": false, + "templates:Insert template": false, + "command-palette:Open command palette": false, + "bases:Create new base": false, + "obsidian-git:Open Git source control": false, + "obsidian42-brat:BRAT": false, + "periodic-notes:Open today": false + } + }, + "active": "523c3454e17a9af2", + "lastOpenFiles": [ + "Ideas/Simmering/3d printed suction ash tray.md", + "Ideas/Ongoing/Optimus.md", + "Ideas/Ongoing/bubb.is.md", + "Ideas/Fresh/agentic vm manager.md", + "Projects/Thinking/GodHand - Agentic VM Manager.md", + "Learning/Ongoing/AI.md", + "Learning/Back Burner/Linux Foundation.md", + "Learning/Back Burner", + "Learning/Ongoing", + "Learning", + "Projects/Doing/Pelagia Portal.md", + "Projects/Doing", + "Projects/Thinking", + "Projects", + "Logs/Daily/2026-05-24.md", + "Ideas/Fresh", + "Ideas/Simmering", + "Scratchpad/test.md", + "Scratchpad", + "Resources/Templates", + "Welcome.md" + ] +} \ No newline at end of file diff --git a/Ideas/Fresh/agentic vm manager.md b/Ideas/Fresh/agentic vm manager.md new file mode 100644 index 0000000..da7b52d --- /dev/null +++ b/Ideas/Fresh/agentic vm manager.md @@ -0,0 +1,3 @@ +A project that focuses specifically on an AI agent that spins up, configures, and controls a full desktop VM (think: agent opens a browser, uses GUI apps, takes screenshots to verify state). Tools like OpenClaw touch on this but it's not their core focus. This project focuses on the combination of VM orchestration + computer-use-style agents. + +Can be used to develop and test non native applications. Example - swift, android, etc diff --git a/Ideas/Ongoing/Optimus.md b/Ideas/Ongoing/Optimus.md new file mode 100644 index 0000000..e1b5438 --- /dev/null +++ b/Ideas/Ongoing/Optimus.md @@ -0,0 +1 @@ +Optimus is a remote pc/server management tool \ No newline at end of file diff --git a/Ideas/Ongoing/bubb.is.md b/Ideas/Ongoing/bubb.is.md new file mode 100644 index 0000000..6f61ba0 --- /dev/null +++ b/Ideas/Ongoing/bubb.is.md @@ -0,0 +1 @@ +A relationship portal \ No newline at end of file diff --git a/Ideas/Simmering/3d printed suction ash tray.md b/Ideas/Simmering/3d printed suction ash tray.md new file mode 100644 index 0000000..0f6b3c9 --- /dev/null +++ b/Ideas/Simmering/3d printed suction ash tray.md @@ -0,0 +1 @@ +self explanatory - stick it anywhere \ No newline at end of file diff --git a/Learning/Back Burner/Linux Foundation.md b/Learning/Back Burner/Linux Foundation.md new file mode 100644 index 0000000..e69de29 diff --git a/Learning/Ongoing/AI.md b/Learning/Ongoing/AI.md new file mode 100644 index 0000000..e69de29 diff --git a/Logs/Daily/2026-05-24.md b/Logs/Daily/2026-05-24.md new file mode 100644 index 0000000..e47367e --- /dev/null +++ b/Logs/Daily/2026-05-24.md @@ -0,0 +1,4 @@ +Installed obsidian for the first time today +Woke up to a beautiful day +Had tea for breakfast and spoke to Appu +Momo had his UPSC exam today \ No newline at end of file diff --git a/Projects/Doing/Pelagia Portal.md b/Projects/Doing/Pelagia Portal.md new file mode 100644 index 0000000..e69de29 diff --git a/Projects/Thinking/GodHand - Agentic VM Manager.md b/Projects/Thinking/GodHand - Agentic VM Manager.md new file mode 100644 index 0000000..cd30c46 --- /dev/null +++ b/Projects/Thinking/GodHand - Agentic VM Manager.md @@ -0,0 +1,40 @@ +[[agentic vm manager]] + +# Plan +**Positioning** + +The wedge is "agent owns the VM lifecycle, not just the screen." Most computer-use demos assume a desktop already exists; OpenClaw, Anthropic's reference container, and Self-Operating Computer mostly treat the VM as a given. Your project treats `spin up → configure → drive → snapshot → tear down` as one programmable surface. Call out two concrete capabilities competitors lack: (1) the agent can request a fresh, reproducible desktop per task, and (2) it can snapshot/branch state mid-task to explore alternatives or retry from a known-good checkpoint. That framing alone gives the repo a clear reason to exist. + +**Architecture sketch** + +Four layers, kept deliberately small: + +1. _VM substrate_ — Docker+VNC for the default path (fast, cross-platform, easy for contributors to run), QEMU/KVM as an optional backend for full-OS scenarios. Expose both behind one `Sandbox` interface with `create`, `snapshot`, `restore`, `destroy`, `exec`. +2. _Capture/control_ — screenshots via VNC framebuffer or `scrot`; input via `xdotool` or direct VNC events. Keep latency budget under ~300ms round-trip or the agent loop gets painful. +3. _Agent loop_ — Claude (or any vision LLM) in a perceive→plan→act→verify cycle. The verify step is where most projects cut corners; make it a first-class screenshot-diff + assertion mechanism. +4. _Orchestrator_ — Python service exposing a task API: "given this goal and this base image, return a trace." Traces are the artifact you publish. + +**8-week milestone plan** + +Weeks 1–2: Docker+VNC sandbox with clean lifecycle API, screenshot capture, basic input injection. Goal: a script that boots a fresh Ubuntu+Firefox container, takes a screenshot, clicks a button, exits cleanly. + +Weeks 3–4: Agent loop with Claude's computer-use API. Get one end-to-end task working reliably (e.g., "open Firefox, search Wikipedia for X, screenshot the result"). Build the trace format here — every step logged with screenshot, action, model reasoning. + +Weeks 5–6: Snapshot/restore as a first-class primitive. This is your differentiator. Implement branching: agent hits a decision point, forks the VM, tries both paths, picks the winner. Even a toy demo of this is rare and memorable. + +Week 7: QEMU backend for one "real OS" demo (installing software, multi-app workflows). Doesn't need parity with Docker path; just prove the abstraction holds. + +Week 8: Benchmark suite (10–20 tasks), README, demo video, blog post. The video matters more than you'd think for portfolio reach. + +**Things worth deciding now** + +A benchmark gives the project teeth — even a small homegrown one (file management, browser tasks, multi-app workflows) lets you make claims with numbers. OSWorld and WebArena exist if you want external comparison, but adapting them costs a week; consider whether that's worth it for your goals. + +Pick a license early (Apache-2.0 is the path of least resistance for portfolio work). And decide upfront whether the agent layer is pluggable or Claude-specific — pluggable is more work but dramatically expands who'll try it. + +**Prior art to study before you start** + +Anthropic's computer-use reference implementation (the Docker container is a useful baseline to surpass), OpenClaw, Self-Operating Computer, OSWorld, and Microsoft's OmniParser. Spend a day reading their code before writing yours — you'll find each one has a specific weakness your project can address explicitly in the README. + +Want me to go deeper on any piece — the snapshot/branching design, the trace format, or the benchmark task list? +