diff --git a/.obsidian/app.json b/.obsidian/app.json index 5ec93b0..0676041 100644 --- a/.obsidian/app.json +++ b/.obsidian/app.json @@ -1,6 +1,16 @@ { "legacyEditor": false, - "livePreview": false, + "livePreview": true, "attachmentFolderPath": "attachment", - "alwaysUpdateLinks": true + "alwaysUpdateLinks": true, + "communityThemeSortOrder": "alphabeticalReverse", + "trashOption": "local", + "readableLineLength": true, + "showLineNumber": true, + "rightToLeft": false, + "spellcheck": true, + "spellcheckLanguages": [ + "en-GB", + "de" + ] } \ No newline at end of file diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index e3d2121..431e842 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -1,6 +1,5 @@ [ "obsidian-git", "table-editor-obsidian", - "obsidian-image-toolkit", - "discordian-plugin" + "obsidian-image-toolkit" ] \ No newline at end of file diff --git a/.obsidian/graph.json b/.obsidian/graph.json index 09a70b2..0afcb70 100644 --- a/.obsidian/graph.json +++ b/.obsidian/graph.json @@ -17,6 +17,6 @@ "repelStrength": 16.3760683760684, "linkStrength": 0.777777777777778, "linkDistance": 30, - "scale": 0.2726859917360091, + "scale": 0.11716719648998458, "close": false } \ No newline at end of file diff --git a/.obsidian/page-preview.json b/.obsidian/page-preview.json index 1ff1fe9..9e26dfe 100644 --- a/.obsidian/page-preview.json +++ b/.obsidian/page-preview.json @@ -1,3 +1 @@ -{ - "editor": false -} \ No newline at end of file +{} \ No newline at end of file diff --git a/.obsidian/plugins/discordian-plugin/data.json b/.obsidian/plugins/discordian-plugin/data.json deleted file mode 100644 index 09f22d9..0000000 --- a/.obsidian/plugins/discordian-plugin/data.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "hideVault": false, - "hideTitleBar": false, - "hideStatusBar": false, - "originalMarkings": false, - "relationLinesPreview": true, - "prettyTasksEditor": true, - "darkEnhance": false, - "fontSizeNotes": 14, - "fontSizeFileExplorer": 14, - "writerMode": true, - "paragraphFocusMode": false, - "paragraphFocusFade": 75, - "flatAndyMode": false, - "readableLength": 45 -} \ No newline at end of file diff --git a/.obsidian/plugins/discordian-plugin/main.js b/.obsidian/plugins/discordian-plugin/main.js deleted file mode 100644 index 589cb12..0000000 --- a/.obsidian/plugins/discordian-plugin/main.js +++ /dev/null @@ -1,489 +0,0 @@ -'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. -***************************************************************************** */ -/* global Reflect, Promise */ - -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); -}; - -function __extends(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 __()); -} - -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()); - }); -} - -function __generator(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 DiscordianPlugin = /** @class */ (function (_super) { - __extends(DiscordianPlugin, _super); - function DiscordianPlugin() { - var _this = _super !== null && _super.apply(this, arguments) || this; - // refresh function for when we change settings - _this.refresh = function () { - // re-load the style - _this.updateStyle(); - }; - return _this; - } - DiscordianPlugin.prototype.onload = function () { - return __awaiter(this, void 0, void 0, function () { - var _a; - return __generator(this, function (_b) { - switch (_b.label) { - case 0: - _a = this; - return [4 /*yield*/, this.loadData()]; - case 1: - _a.settings = (_b.sent()) || { - hideVault: true, - hideTitleBar: true, - hideStatusBar: true, - originalMarkings: false, - relationLinesPreview: true, - prettyTasksEditor: true, - darkEnhance: false, - fontSizeNotes: 14, - fontSizeFileExplorer: 14, - writerMode: false, - paragraphFocusMode: false, - paragraphFocusFade: 75, - flatAndyMode: true, - readableLength: 45 - }; - this.addSettingTab(new DiscordianPluginSettingsTab(this.app, this)); - this.addStyle(); - this.addCommands(); - this.refresh(); - return [2 /*return*/]; - } - }); - }); - }; - DiscordianPlugin.prototype.onunload = function () { - this.removeStyle(); - }; - DiscordianPlugin.prototype.addCommands = function () { - var _this = this; - this.addCommand({ - id: 'toggle-discordian-writer-mode', - name: 'Toggle Writer Mode', - callback: function () { - _this.settings.writerMode = !_this.settings.writerMode; - _this.saveData(_this.settings); - _this.refresh(); - } - }); - this.addCommand({ - id: 'toggle-flat-andy-mode', - name: 'Toggle Flat Andy Mode', - callback: function () { - _this.settings.flatAndyMode = !_this.settings.flatAndyMode; - _this.saveData(_this.settings); - _this.refresh(); - } - }); - this.addCommand({ - id: 'toggle-paragraph-focus-mode', - name: 'Toggle Paragraph Focus Mode', - callback: function () { - _this.settings.paragraphFocusMode = !_this.settings.paragraphFocusMode; - _this.saveData(_this.settings); - _this.refresh(); - } - }); - this.addCommand({ - id: 'toggle-discord-original-markings', - name: 'Toggle Discord original markings', - callback: function () { - _this.settings.originalMarkings = !_this.settings.originalMarkings; - _this.saveData(_this.settings); - _this.refresh(); - } - }); - this.addCommand({ - id: 'toggle-relationship-lines-preview', - name: 'Toggle relationship lines in Preview mode', - callback: function () { - _this.settings.relationLinesPreview = !_this.settings.relationLinesPreview; - _this.saveData(_this.settings); - _this.refresh(); - } - }); - this.addCommand({ - id: 'toggle-pretty-tasks-preview', - name: 'Toggle Pretty Task Lists in Editor mode', - callback: function () { - _this.settings.prettyTasksEditor = !_this.settings.prettyTasksEditor; - _this.saveData(_this.settings); - _this.refresh(); - } - }); - this.addCommand({ - id: 'toggle-dark-enhance', - name: 'Toggle Dark note headers', - callback: function () { - _this.settings.darkEnhance = !_this.settings.darkEnhance; - _this.saveData(_this.settings); - _this.refresh(); - } - }); - }; - // add the styling elements we need - DiscordianPlugin.prototype.addStyle = function () { - // add a css block for our settings-dependent styles - var css = document.createElement('style'); - css.id = 'discordian-theme'; - document.getElementsByTagName("head")[0].appendChild(css); - // add the main class - document.body.classList.add('discordian-theme'); - document.body.classList.add('discordian-readable-length'); - document.body.classList.add('discordian-paragraph-focus-fade'); - // update the style with the settings-dependent styles - this.updateStyle(); - }; - DiscordianPlugin.prototype.removeStyle = function () { - var discordianClasses = [ - 'discordian-theme', - 'discordian-writer-mode', - 'discordian-flat-andy-mode', - 'discordian-paragraph-focus', - 'discordian-paragraph-focus-fade', - 'discordian-readable-length', - 'discordian-font-size-notes', - 'discordian-font-size-file-explorer', - 'discordian-discord-markings', - 'discordian-rel-preview', - 'discordian-pretty-tasks-editor', - 'discordian-dark-enhance', - 'discordian-hide-vault', - 'discordian-hide-titlebar', - 'discordian-hide-statusbar' - ]; - document.body.removeClasses(discordianClasses); - }; - DiscordianPlugin.prototype.initStyles = function () { - var discordianEl = document.getElementById('discordian-theme'); - if (discordianEl) { - var len = this.settings.readableLength + 'rem'; - var fade = 100 - this.settings.paragraphFocusFade; - var fontSizeNotes = this.settings.fontSizeNotes / 16 + 'rem'; - var fontSizeFileExplorer = this.settings.fontSizeFileExplorer / 16 + 'rem'; - var letterSpacingNotes = (this.settings.fontSizeNotes < 16 ? -0.2 : -0.4) + 'px'; - discordianEl.innerText = "\n body.discordian-theme {\n --readable-line-length:" + len + ";\n --paragraph-focus-fade: 0." + fade + ";\n --font-size-notes: " + fontSizeNotes + ";\n --font-size-file-explorer: " + fontSizeFileExplorer + ";\n --letter-spacing-notes: " + letterSpacingNotes + ";\n }\n "; - } - else { - throw "Could not find Discordian Theme"; - } - }; - // update the styles (at the start, or as the result of a settings change) - DiscordianPlugin.prototype.updateStyle = function () { - document.body.classList.toggle('discordian-writer-mode', this.settings.writerMode); - document.body.classList.toggle('discordian-flat-andy-mode', this.settings.flatAndyMode); - document.body.classList.toggle('discordian-paragraph-focus', this.settings.paragraphFocusMode); - document.body.classList.toggle('discordian-hide-vault', this.settings.hideVault); - document.body.classList.toggle('discordian-hide-titlebar', this.settings.hideTitleBar); - document.body.classList.toggle('discordian-hide-statusbar', this.settings.hideStatusBar); - document.body.classList.toggle('discordian-original-markings', this.settings.originalMarkings); - document.body.classList.toggle('discordian-rel-preview', this.settings.relationLinesPreview); - document.body.classList.toggle('discordian-pretty-tasks-editor', this.settings.prettyTasksEditor); - document.body.classList.toggle('discordian-dark-enhance', this.settings.darkEnhance); - this.initStyles(); - }; - return DiscordianPlugin; -}(obsidian.Plugin)); -var DiscordianPluginSettingsTab = /** @class */ (function (_super) { - __extends(DiscordianPluginSettingsTab, _super); - function DiscordianPluginSettingsTab(app, plugin) { - var _this = _super.call(this, app, plugin) || this; - _this.plugin = plugin; - return _this; - } - DiscordianPluginSettingsTab.prototype.display = function () { - var containerEl = this.containerEl; - var settings = this.plugin.settings; - containerEl.empty(); - this.addPluginDescription(containerEl); - this.addPluginSettingsHeader(containerEl, 'Theme Settings'); - this.addWriterModeSettings(containerEl, settings); - this.addFlatAndyModeSettings(containerEl, settings); - this.addParagraphFocusModeSettings(containerEl, settings); - this.addReadableLengthSettings(containerEl, settings); - this.addOriginalMarkingsSettings(containerEl, settings); - this.addRelationLinesPreviewSettings(containerEl, settings); - this.addPrettyTasksEditorSettings(containerEl, settings); - this.addDarkEnhanceSettings(containerEl, settings); - this.addPluginSettingsSeparator(containerEl); - this.addPluginSettingsHeader(containerEl, 'Fonts'); - this.addNotesFontSizeSettings(containerEl, settings); - this.addFileExplorerFontSizeSettings(containerEl, settings); - this.addPluginSettingsSeparator(containerEl); - this.addPluginSettingsHeader(containerEl, 'If not using Hider plugin'); - this.addHideVaultSettings(containerEl, settings); - this.addHideTitleBarSettings(containerEl, settings); - this.addHideStatusBarSettings(containerEl, settings); - }; - DiscordianPluginSettingsTab.prototype.addPluginDescription = function (containerEl) { - var description = containerEl.createEl('div', { cls: 'plugin-description' }); - description.createEl('h3', { text: 'Thanks for using Discordian !' }); - description.createEl('p', { text: 'If you notice any issues, try to update to the latest version and reload Obsidian.' }); - description.createEl('p', { text: 'Otherwise feel free to bring it up on Github or better yet contribute a fix.' }); - description.createEl('a', { - text: 'https://github.com/radekkozak/discordian/issues/', - attr: { 'href': 'https://github.com/radekkozak/discordian/issues/', 'target': '_blank' } - }); - }; - DiscordianPluginSettingsTab.prototype.addPluginSettingsHeader = function (containerEl, headerTitle) { - containerEl.createEl('h4', { text: headerTitle }); - }; - DiscordianPluginSettingsTab.prototype.addPluginSettingsSeparator = function (containerEl) { - containerEl.createEl('p', { text: '⊷', cls: 'plugin-description separator' }); - }; - DiscordianPluginSettingsTab.prototype.addWriterModeSettings = function (containerEl, settings) { - var _this = this; - var description = new DocumentFragment(); - description.appendText('Hides visual excess when sidebars are collapsed (accessible by hover)'); - description.createEl('br'); - description.appendText('NOTE : this setting will hide Status bar and Title bar ' + - 'regardless of their individual options'); - new obsidian.Setting(containerEl) - .setName('Writer mode') - .setDesc(description) - .addToggle(function (toggle) { return toggle.setValue(settings.writerMode) - .onChange(function (value) { - settings.writerMode = value; - _this.plugin.saveData(settings); - _this.plugin.refresh(); - }); }); - }; - DiscordianPluginSettingsTab.prototype.addFlatAndyModeSettings = function (containerEl, settings) { - var _this = this; - new obsidian.Setting(containerEl) - .setName('Flat Andy Mode') - .setDesc('Flatter notes stacking when in Andy Mode (no elevation shadow)') - .addToggle(function (toggle) { return toggle.setValue(settings.flatAndyMode) - .onChange(function (value) { - settings.flatAndyMode = value; - _this.plugin.saveData(settings); - _this.plugin.refresh(); - }); }); - }; - DiscordianPluginSettingsTab.prototype.addParagraphFocusModeSettings = function (containerEl, settings) { - var _this = this; - new obsidian.Setting(containerEl) - .setName('Paragraph focus mode') - .setDesc('This aims to imitate well-known iA Writer paragraph focus.') - .addToggle(function (toggle) { return toggle.setValue(settings.paragraphFocusMode) - .onChange(function (value) { - settings.paragraphFocusMode = value; - _this.plugin.saveData(settings); - setting.settingEl.classList.toggle('discordian-plugin-setting-disabled', !value); - _this.plugin.refresh(); - }); }); - var nameFade = 'Paragraph Focus Mode fade '; - var setting = new obsidian.Setting(containerEl) - .setName(nameFade + '( = ' + settings.paragraphFocusFade + '% )') - .setDesc('Amount of fade out when in Paragraph Focus Mode (default 75%)') - .addSlider(function (slider) { return slider.setLimits(25, 90, 5) - .setValue(settings.paragraphFocusFade) - .onChange(function (value) { - settings.paragraphFocusFade = value; - setting.settingEl.classList.toggle('discordian-plugin-setting-disabled', !value); - _this.plugin.saveData(settings); - _this.plugin.refresh(); - setting.setName(nameFade + '( = ' + settings.paragraphFocusFade + '% )'); - }); }); - setting.settingEl.classList.toggle('discordian-plugin-setting-disabled', !settings.paragraphFocusMode); - }; - DiscordianPluginSettingsTab.prototype.addReadableLengthSettings = function (containerEl, settings) { - var _this = this; - var readableLineLength = document.getElementsByClassName('is-readable-line-width'); - var name = 'Readable line length '; - var setting = new obsidian.Setting(containerEl) - .setName(name + '( = ' + settings.readableLength + 'rem )') - .setDesc('Obsidian\'s Readable line length needs to be enabled (default 45 rem)') - .addSlider(function (slider) { return slider.setLimits(45, 120, 5) - .setValue(settings.readableLength) - .onChange(function (value) { - settings.readableLength = value; - _this.plugin.saveData(settings); - _this.plugin.refresh(); - setting.setName(name + '( = ' + settings.readableLength + 'rem )'); - }); }); - setting.settingEl.classList.toggle('discordian-plugin-setting-disabled', readableLineLength.length == 0); - }; - DiscordianPluginSettingsTab.prototype.addOriginalMarkingsSettings = function (containerEl, settings) { - var _this = this; - new obsidian.Setting(containerEl) - .setName('Discord original markings') - .setDesc('Use Discord original markings such as bold, italics, inline code, quotes and so on') - .addToggle(function (toggle) { return toggle.setValue(settings.originalMarkings) - .onChange(function (value) { - settings.originalMarkings = value; - _this.plugin.saveData(settings); - _this.plugin.refresh(); - }); }); - }; - DiscordianPluginSettingsTab.prototype.addDarkEnhanceSettings = function (containerEl, settings) { - var _this = this; - new obsidian.Setting(containerEl) - .setName('Dark note headers') - .setDesc('Make note headers more prominent') - .addToggle(function (toggle) { return toggle.setValue(settings.darkEnhance) - .onChange(function (value) { - settings.darkEnhance = value; - _this.plugin.saveData(settings); - _this.plugin.refresh(); - }); }); - }; - DiscordianPluginSettingsTab.prototype.addRelationLinesPreviewSettings = function (containerEl, settings) { - var _this = this; - new obsidian.Setting(containerEl) - .setName('Relationship lines in Preview mode') - .setDesc('Show lines connecting related bullet points and task lists') - .addToggle(function (toggle) { return toggle.setValue(settings.relationLinesPreview) - .onChange(function (value) { - settings.relationLinesPreview = value; - _this.plugin.saveData(settings); - _this.plugin.refresh(); - }); }); - }; - DiscordianPluginSettingsTab.prototype.addPrettyTasksEditorSettings = function (containerEl, settings) { - var _this = this; - new obsidian.Setting(containerEl) - .setName('Pretty Task Lists in Editor mode') - .setDesc("HACKISH : please use both 'Smart indent lists' and 'Use tabs' options for best experience") - .addToggle(function (toggle) { return toggle.setValue(settings.prettyTasksEditor) - .onChange(function (value) { - settings.prettyTasksEditor = value; - _this.plugin.saveData(settings); - _this.plugin.refresh(); - }); }); - }; - DiscordianPluginSettingsTab.prototype.addNotesFontSizeSettings = function (containerEl, settings) { - var _this = this; - var name = 'Notes font size '; - var setting = new obsidian.Setting(containerEl) - .setName(name + '( = ' + settings.fontSizeNotes + 'px )') - .setDesc('Used in editor/preview mode (default 14px)') - .addSlider(function (slider) { return slider.setLimits(14, 22, 2) - .setValue(settings.fontSizeNotes) - .onChange(function (value) { - settings.fontSizeNotes = value; - _this.plugin.saveData(settings); - _this.plugin.refresh(); - setting.setName(name + '( = ' + value + 'px )'); - }); }); - }; - DiscordianPluginSettingsTab.prototype.addFileExplorerFontSizeSettings = function (containerEl, settings) { - var _this = this; - var name = 'File Explorer font size '; - var setting = new obsidian.Setting(containerEl) - .setName(name + '( = ' + settings.fontSizeFileExplorer + 'px )') - .setDesc('Used in File Explorer (default 14px)') - .addSlider(function (slider) { return slider.setLimits(12, 18, 2) - .setValue(settings.fontSizeFileExplorer) - .onChange(function (value) { - settings.fontSizeFileExplorer = value; - _this.plugin.saveData(settings); - _this.plugin.refresh(); - setting.setName(name + '( = ' + value + 'px )'); - }); }); - }; - DiscordianPluginSettingsTab.prototype.addHideVaultSettings = function (containerEl, settings) { - var _this = this; - new obsidian.Setting(containerEl) - .setName('Hide vault name') - .setDesc('Hides vault name in File Explorer') - .addToggle(function (toggle) { return toggle.setValue(settings.hideVault) - .onChange(function (value) { - settings.hideVault = value; - _this.plugin.saveData(settings); - _this.plugin.refresh(); - }); }); - }; - DiscordianPluginSettingsTab.prototype.addHideTitleBarSettings = function (containerEl, settings) { - var _this = this; - new obsidian.Setting(containerEl) - .setName('Hide title bar') - .setDesc('Hides main title bar (theme\'s default)') - .addToggle(function (toggle) { return toggle.setValue(settings.hideTitleBar) - .onChange(function (value) { - settings.hideTitleBar = value; - _this.plugin.saveData(settings); - _this.plugin.refresh(); - }); }); - }; - DiscordianPluginSettingsTab.prototype.addHideStatusBarSettings = function (containerEl, settings) { - var _this = this; - new obsidian.Setting(containerEl) - .setName('Hide status bar') - .setDesc('Hides status bar (theme\'s default)') - .addToggle(function (toggle) { return toggle.setValue(settings.hideStatusBar) - .onChange(function (value) { - settings.hideStatusBar = value; - _this.plugin.saveData(settings); - _this.plugin.refresh(); - }); }); - }; - return DiscordianPluginSettingsTab; -}(obsidian.PluginSettingTab)); - -module.exports = DiscordianPlugin; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsInNyYy9tYWluLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5Db3B5cmlnaHQgKGMpIE1pY3Jvc29mdCBDb3Jwb3JhdGlvbi5cclxuXHJcblBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxyXG5wdXJwb3NlIHdpdGggb3Igd2l0aG91dCBmZWUgaXMgaGVyZWJ5IGdyYW50ZWQuXHJcblxyXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIXHJcblJFR0FSRCBUTyBUSElTIFNPRlRXQVJFIElOQ0xVRElORyBBTEwgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWVxyXG5BTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsXHJcbklORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMgV0hBVFNPRVZFUiBSRVNVTFRJTkcgRlJPTVxyXG5MT1NTIE9GIFVTRSwgREFUQSBPUiBQUk9GSVRTLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUlxyXG5PVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SXHJcblBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXHJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqICovXHJcbi8qIGdsb2JhbCBSZWZsZWN0LCBQcm9taXNlICovXHJcblxyXG52YXIgZXh0ZW5kU3RhdGljcyA9IGZ1bmN0aW9uKGQsIGIpIHtcclxuICAgIGV4dGVuZFN0YXRpY3MgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHxcclxuICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcclxuICAgIHJldHVybiBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXh0ZW5kcyhkLCBiKSB7XHJcbiAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcclxuICAgIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbiAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cclxuICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2Fzc2lnbiA9IGZ1bmN0aW9uKCkge1xyXG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uIF9fYXNzaWduKHQpIHtcclxuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKSB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXHJcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcclxuICAgICAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcclxuICAgIHZhciBjID0gYXJndW1lbnRzLmxlbmd0aCwgciA9IGMgPCAzID8gdGFyZ2V0IDogZGVzYyA9PT0gbnVsbCA/IGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRhcmdldCwga2V5KSA6IGRlc2MsIGQ7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QuZGVjb3JhdGUgPT09IFwiZnVuY3Rpb25cIikgciA9IFJlZmxlY3QuZGVjb3JhdGUoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpO1xyXG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcclxuICAgIHJldHVybiBjID4gMyAmJiByICYmIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGtleSwgciksIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3BhcmFtKHBhcmFtSW5kZXgsIGRlY29yYXRvcikge1xyXG4gICAgcmV0dXJuIGZ1bmN0aW9uICh0YXJnZXQsIGtleSkgeyBkZWNvcmF0b3IodGFyZ2V0LCBrZXksIHBhcmFtSW5kZXgpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKGYgPSAxLCB5ICYmICh0ID0gb3BbMF0gJiAyID8geVtcInJldHVyblwiXSA6IG9wWzBdID8geVtcInRocm93XCJdIHx8ICgodCA9IHlbXCJyZXR1cm5cIl0pICYmIHQuY2FsbCh5KSwgMCkgOiB5Lm5leHQpICYmICEodCA9IHQuY2FsbCh5LCBvcFsxXSkpLmRvbmUpIHJldHVybiB0O1xyXG4gICAgICAgICAgICBpZiAoeSA9IDAsIHQpIG9wID0gW29wWzBdICYgMiwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fY3JlYXRlQmluZGluZyA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfSk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tKSB7XHJcbiAgICBmb3IgKHZhciBpID0gMCwgaWwgPSBmcm9tLmxlbmd0aCwgaiA9IHRvLmxlbmd0aDsgaSA8IGlsOyBpKyssIGorKylcclxuICAgICAgICB0b1tqXSA9IGZyb21baV07XHJcbiAgICByZXR1cm4gdG87XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0KHYpIHtcclxuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgX19hd2FpdCA/ICh0aGlzLnYgPSB2LCB0aGlzKSA6IG5ldyBfX2F3YWl0KHYpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY0dlbmVyYXRvcih0aGlzQXJnLCBfYXJndW1lbnRzLCBnZW5lcmF0b3IpIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgZyA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSwgaSwgcSA9IFtdO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlmIChnW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChhLCBiKSB7IHEucHVzaChbbiwgdiwgYSwgYl0pID4gMSB8fCByZXN1bWUobiwgdik7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiByZXN1bWUobiwgdikgeyB0cnkgeyBzdGVwKGdbbl0odikpOyB9IGNhdGNoIChlKSB7IHNldHRsZShxWzBdWzNdLCBlKTsgfSB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKHIpIHsgci52YWx1ZSBpbnN0YW5jZW9mIF9fYXdhaXQgPyBQcm9taXNlLnJlc29sdmUoci52YWx1ZS52KS50aGVuKGZ1bGZpbGwsIHJlamVjdCkgOiBzZXR0bGUocVswXVsyXSwgcik7IH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlbbl0gPSBvW25dID8gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9IDogZjsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hc3luY1ZhbHVlcyhvKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIG0gPSBvW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSwgaTtcclxuICAgIHJldHVybiBtID8gbS5jYWxsKG8pIDogKG8gPSB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCksIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiKSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuYXN5bmNJdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpKTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpW25dID0gb1tuXSAmJiBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkgeyB2ID0gb1tuXSh2KSwgc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgdi5kb25lLCB2LnZhbHVlKTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShyZXNvbHZlLCByZWplY3QsIGQsIHYpIHsgUHJvbWlzZS5yZXNvbHZlKHYpLnRoZW4oZnVuY3Rpb24odikgeyByZXNvbHZlKHsgdmFsdWU6IHYsIGRvbmU6IGQgfSk7IH0sIHJlamVjdCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWFrZVRlbXBsYXRlT2JqZWN0KGNvb2tlZCwgcmF3KSB7XHJcbiAgICBpZiAoT2JqZWN0LmRlZmluZVByb3BlcnR5KSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb29rZWQsIFwicmF3XCIsIHsgdmFsdWU6IHJhdyB9KTsgfSBlbHNlIHsgY29va2VkLnJhdyA9IHJhdzsgfVxyXG4gICAgcmV0dXJuIGNvb2tlZDtcclxufTtcclxuXHJcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcclxufSkgOiBmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBvW1wiZGVmYXVsdFwiXSA9IHY7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnRTdGFyKG1vZCkge1xyXG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcclxuICAgIHZhciByZXN1bHQgPSB7fTtcclxuICAgIGlmIChtb2QgIT0gbnVsbCkgZm9yICh2YXIgayBpbiBtb2QpIGlmIChrICE9PSBcImRlZmF1bHRcIiAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW9kLCBrKSkgX19jcmVhdGVCaW5kaW5nKHJlc3VsdCwgbW9kLCBrKTtcclxuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19pbXBvcnREZWZhdWx0KG1vZCkge1xyXG4gICAgcmV0dXJuIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpID8gbW9kIDogeyBkZWZhdWx0OiBtb2QgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRHZXQocmVjZWl2ZXIsIHByaXZhdGVNYXApIHtcclxuICAgIGlmICghcHJpdmF0ZU1hcC5oYXMocmVjZWl2ZXIpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImF0dGVtcHRlZCB0byBnZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2VcIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcHJpdmF0ZU1hcC5nZXQocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZFNldChyZWNlaXZlciwgcHJpdmF0ZU1hcCwgdmFsdWUpIHtcclxuICAgIGlmICghcHJpdmF0ZU1hcC5oYXMocmVjZWl2ZXIpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImF0dGVtcHRlZCB0byBzZXQgcHJpdmF0ZSBmaWVsZCBvbiBub24taW5zdGFuY2VcIik7XHJcbiAgICB9XHJcbiAgICBwcml2YXRlTWFwLnNldChyZWNlaXZlciwgdmFsdWUpO1xyXG4gICAgcmV0dXJuIHZhbHVlO1xyXG59XHJcbiIsImltcG9ydCB7QXBwLCBQbHVnaW4sIFBsdWdpblNldHRpbmdUYWIsIFNldHRpbmd9IGZyb20gXCJvYnNpZGlhblwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlzY29yZGlhblBsdWdpbiBleHRlbmRzIFBsdWdpbiB7XHJcbiAgICBzZXR0aW5nczogRGlzY29yZGlhblBsdWdpblNldHRpbmdzO1xyXG5cclxuICAgIGFzeW5jIG9ubG9hZCgpIHtcclxuXHJcbiAgICAgICAgdGhpcy5zZXR0aW5ncyA9IGF3YWl0IHRoaXMubG9hZERhdGEoKSB8fCB7XHJcbiAgICAgICAgICAgIGhpZGVWYXVsdDogdHJ1ZSxcclxuICAgICAgICAgICAgaGlkZVRpdGxlQmFyOiB0cnVlLFxyXG4gICAgICAgICAgICBoaWRlU3RhdHVzQmFyOiB0cnVlLFxyXG4gICAgICAgICAgICBvcmlnaW5hbE1hcmtpbmdzOiBmYWxzZSxcclxuICAgICAgICAgICAgcmVsYXRpb25MaW5lc1ByZXZpZXc6IHRydWUsXHJcbiAgICAgICAgICAgIHByZXR0eVRhc2tzRWRpdG9yOiB0cnVlLFxyXG4gICAgICAgICAgICBkYXJrRW5oYW5jZTogZmFsc2UsXHJcbiAgICAgICAgICAgIGZvbnRTaXplTm90ZXM6IDE0LFxyXG4gICAgICAgICAgICBmb250U2l6ZUZpbGVFeHBsb3JlcjogMTQsXHJcbiAgICAgICAgICAgIHdyaXRlck1vZGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBwYXJhZ3JhcGhGb2N1c01vZGU6IGZhbHNlLFxyXG4gICAgICAgICAgICBwYXJhZ3JhcGhGb2N1c0ZhZGU6IDc1LFxyXG4gICAgICAgICAgICBmbGF0QW5keU1vZGU6IHRydWUsXHJcbiAgICAgICAgICAgIHJlYWRhYmxlTGVuZ3RoOiA0NVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgRGlzY29yZGlhblBsdWdpblNldHRpbmdzVGFiKHRoaXMuYXBwLCB0aGlzKSk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkU3R5bGUoKVxyXG5cclxuICAgICAgICB0aGlzLmFkZENvbW1hbmRzKClcclxuXHJcbiAgICAgICAgdGhpcy5yZWZyZXNoKClcclxuICAgIH1cclxuXHJcbiAgICBvbnVubG9hZCgpIHtcclxuICAgICAgICB0aGlzLnJlbW92ZVN0eWxlKClcclxuICAgIH1cclxuXHJcbiAgICBhZGRDb21tYW5kcygpIHtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgICAgICAgaWQ6ICd0b2dnbGUtZGlzY29yZGlhbi13cml0ZXItbW9kZScsXHJcbiAgICAgICAgICAgIG5hbWU6ICdUb2dnbGUgV3JpdGVyIE1vZGUnLFxyXG4gICAgICAgICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy53cml0ZXJNb2RlID0gIXRoaXMuc2V0dGluZ3Mud3JpdGVyTW9kZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICAgICAgICBpZDogJ3RvZ2dsZS1mbGF0LWFuZHktbW9kZScsXHJcbiAgICAgICAgICAgIG5hbWU6ICdUb2dnbGUgRmxhdCBBbmR5IE1vZGUnLFxyXG4gICAgICAgICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5mbGF0QW5keU1vZGUgPSAhdGhpcy5zZXR0aW5ncy5mbGF0QW5keU1vZGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgICAgICAgaWQ6ICd0b2dnbGUtcGFyYWdyYXBoLWZvY3VzLW1vZGUnLFxyXG4gICAgICAgICAgICBuYW1lOiAnVG9nZ2xlIFBhcmFncmFwaCBGb2N1cyBNb2RlJyxcclxuICAgICAgICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MucGFyYWdyYXBoRm9jdXNNb2RlID0gIXRoaXMuc2V0dGluZ3MucGFyYWdyYXBoRm9jdXNNb2RlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zYXZlRGF0YSh0aGlzLnNldHRpbmdzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuYWRkQ29tbWFuZCh7XHJcbiAgICAgICAgICAgIGlkOiAndG9nZ2xlLWRpc2NvcmQtb3JpZ2luYWwtbWFya2luZ3MnLFxyXG4gICAgICAgICAgICBuYW1lOiAnVG9nZ2xlIERpc2NvcmQgb3JpZ2luYWwgbWFya2luZ3MnLFxyXG4gICAgICAgICAgICBjYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5ncy5vcmlnaW5hbE1hcmtpbmdzID0gIXRoaXMuc2V0dGluZ3Mub3JpZ2luYWxNYXJraW5ncztcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICAgICAgICBpZDogJ3RvZ2dsZS1yZWxhdGlvbnNoaXAtbGluZXMtcHJldmlldycsXHJcbiAgICAgICAgICAgIG5hbWU6ICdUb2dnbGUgcmVsYXRpb25zaGlwIGxpbmVzIGluIFByZXZpZXcgbW9kZScsXHJcbiAgICAgICAgICAgIGNhbGxiYWNrOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldHRpbmdzLnJlbGF0aW9uTGluZXNQcmV2aWV3ID0gIXRoaXMuc2V0dGluZ3MucmVsYXRpb25MaW5lc1ByZXZpZXc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNhdmVEYXRhKHRoaXMuc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgICAgICAgaWQ6ICd0b2dnbGUtcHJldHR5LXRhc2tzLXByZXZpZXcnLFxyXG4gICAgICAgICAgICBuYW1lOiAnVG9nZ2xlIFByZXR0eSBUYXNrIExpc3RzIGluIEVkaXRvciBtb2RlJyxcclxuICAgICAgICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MucHJldHR5VGFza3NFZGl0b3IgPSAhdGhpcy5zZXR0aW5ncy5wcmV0dHlUYXNrc0VkaXRvcjtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICAgICAgICBpZDogJ3RvZ2dsZS1kYXJrLWVuaGFuY2UnLFxyXG4gICAgICAgICAgICBuYW1lOiAnVG9nZ2xlIERhcmsgbm90ZSBoZWFkZXJzJyxcclxuICAgICAgICAgICAgY2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0dGluZ3MuZGFya0VuaGFuY2UgPSAhdGhpcy5zZXR0aW5ncy5kYXJrRW5oYW5jZTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2F2ZURhdGEodGhpcy5zZXR0aW5ncyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIGFkZCB0aGUgc3R5bGluZyBlbGVtZW50cyB3ZSBuZWVkXHJcbiAgICBhZGRTdHlsZSgpIHtcclxuICAgICAgICAvLyBhZGQgYSBjc3MgYmxvY2sgZm9yIG91ciBzZXR0aW5ncy1kZXBlbmRlbnQgc3R5bGVzXHJcbiAgICAgICAgY29uc3QgY3NzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgICAgICBjc3MuaWQgPSAnZGlzY29yZGlhbi10aGVtZSc7XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdLmFwcGVuZENoaWxkKGNzcyk7XHJcblxyXG4gICAgICAgIC8vIGFkZCB0aGUgbWFpbiBjbGFzc1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnZGlzY29yZGlhbi10aGVtZScpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnZGlzY29yZGlhbi1yZWFkYWJsZS1sZW5ndGgnKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2Rpc2NvcmRpYW4tcGFyYWdyYXBoLWZvY3VzLWZhZGUnKTtcclxuXHJcbiAgICAgICAgLy8gdXBkYXRlIHRoZSBzdHlsZSB3aXRoIHRoZSBzZXR0aW5ncy1kZXBlbmRlbnQgc3R5bGVzXHJcbiAgICAgICAgdGhpcy51cGRhdGVTdHlsZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZVN0eWxlKCkge1xyXG4gICAgICAgIGNvbnN0IGRpc2NvcmRpYW5DbGFzc2VzID0gW1xyXG4gICAgICAgICAgICAnZGlzY29yZGlhbi10aGVtZScsXHJcbiAgICAgICAgICAgICdkaXNjb3JkaWFuLXdyaXRlci1tb2RlJyxcclxuICAgICAgICAgICAgJ2Rpc2NvcmRpYW4tZmxhdC1hbmR5LW1vZGUnLFxyXG4gICAgICAgICAgICAnZGlzY29yZGlhbi1wYXJhZ3JhcGgtZm9jdXMnLFxyXG4gICAgICAgICAgICAnZGlzY29yZGlhbi1wYXJhZ3JhcGgtZm9jdXMtZmFkZScsXHJcbiAgICAgICAgICAgICdkaXNjb3JkaWFuLXJlYWRhYmxlLWxlbmd0aCcsXHJcbiAgICAgICAgICAgICdkaXNjb3JkaWFuLWZvbnQtc2l6ZS1ub3RlcycsXHJcbiAgICAgICAgICAgICdkaXNjb3JkaWFuLWZvbnQtc2l6ZS1maWxlLWV4cGxvcmVyJyxcclxuICAgICAgICAgICAgJ2Rpc2NvcmRpYW4tZGlzY29yZC1tYXJraW5ncycsXHJcbiAgICAgICAgICAgICdkaXNjb3JkaWFuLXJlbC1wcmV2aWV3JyxcclxuICAgICAgICAgICAgJ2Rpc2NvcmRpYW4tcHJldHR5LXRhc2tzLWVkaXRvcicsXHJcbiAgICAgICAgICAgICdkaXNjb3JkaWFuLWRhcmstZW5oYW5jZScsXHJcbiAgICAgICAgICAgICdkaXNjb3JkaWFuLWhpZGUtdmF1bHQnLFxyXG4gICAgICAgICAgICAnZGlzY29yZGlhbi1oaWRlLXRpdGxlYmFyJyxcclxuICAgICAgICAgICAgJ2Rpc2NvcmRpYW4taGlkZS1zdGF0dXNiYXInXHJcbiAgICAgICAgXVxyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2xhc3NlcyhkaXNjb3JkaWFuQ2xhc3Nlcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdFN0eWxlcygpIHtcclxuICAgICAgICBjb25zdCBkaXNjb3JkaWFuRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGlzY29yZGlhbi10aGVtZScpXHJcbiAgICAgICAgaWYgKGRpc2NvcmRpYW5FbCkge1xyXG4gICAgICAgICAgICBjb25zdCBsZW4gPSB0aGlzLnNldHRpbmdzLnJlYWRhYmxlTGVuZ3RoICsgJ3JlbSdcclxuICAgICAgICAgICAgY29uc3QgZmFkZSA9IDEwMCAtIHRoaXMuc2V0dGluZ3MucGFyYWdyYXBoRm9jdXNGYWRlXHJcbiAgICAgICAgICAgIGNvbnN0IGZvbnRTaXplTm90ZXMgPSB0aGlzLnNldHRpbmdzLmZvbnRTaXplTm90ZXMgLyAxNiArICdyZW0nXHJcbiAgICAgICAgICAgIGNvbnN0IGZvbnRTaXplRmlsZUV4cGxvcmVyID0gdGhpcy5zZXR0aW5ncy5mb250U2l6ZUZpbGVFeHBsb3JlciAvIDE2ICsgJ3JlbSdcclxuICAgICAgICAgICAgY29uc3QgbGV0dGVyU3BhY2luZ05vdGVzID0gKHRoaXMuc2V0dGluZ3MuZm9udFNpemVOb3RlcyA8IDE2ID8gLTAuMiA6IC0wLjQpICsgJ3B4J1xyXG5cclxuICAgICAgICAgICAgZGlzY29yZGlhbkVsLmlubmVyVGV4dCA9IGBcclxuICAgICAgICAgICAgICAgICAgICBib2R5LmRpc2NvcmRpYW4tdGhlbWUge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAtLXJlYWRhYmxlLWxpbmUtbGVuZ3RoOiR7bGVufTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLS1wYXJhZ3JhcGgtZm9jdXMtZmFkZTogMC4ke2ZhZGV9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAtLWZvbnQtc2l6ZS1ub3RlczogJHtmb250U2l6ZU5vdGVzfTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLS1mb250LXNpemUtZmlsZS1leHBsb3JlcjogJHtmb250U2l6ZUZpbGVFeHBsb3Jlcn07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC0tbGV0dGVyLXNwYWNpbmctbm90ZXM6ICR7bGV0dGVyU3BhY2luZ05vdGVzfTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBgO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IFwiQ291bGQgbm90IGZpbmQgRGlzY29yZGlhbiBUaGVtZVwiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyB1cGRhdGUgdGhlIHN0eWxlcyAoYXQgdGhlIHN0YXJ0LCBvciBhcyB0aGUgcmVzdWx0IG9mIGEgc2V0dGluZ3MgY2hhbmdlKVxyXG4gICAgdXBkYXRlU3R5bGUoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdkaXNjb3JkaWFuLXdyaXRlci1tb2RlJywgdGhpcy5zZXR0aW5ncy53cml0ZXJNb2RlKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2Rpc2NvcmRpYW4tZmxhdC1hbmR5LW1vZGUnLCB0aGlzLnNldHRpbmdzLmZsYXRBbmR5TW9kZSk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdkaXNjb3JkaWFuLXBhcmFncmFwaC1mb2N1cycsIHRoaXMuc2V0dGluZ3MucGFyYWdyYXBoRm9jdXNNb2RlKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2Rpc2NvcmRpYW4taGlkZS12YXVsdCcsIHRoaXMuc2V0dGluZ3MuaGlkZVZhdWx0KTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2Rpc2NvcmRpYW4taGlkZS10aXRsZWJhcicsIHRoaXMuc2V0dGluZ3MuaGlkZVRpdGxlQmFyKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2Rpc2NvcmRpYW4taGlkZS1zdGF0dXNiYXInLCB0aGlzLnNldHRpbmdzLmhpZGVTdGF0dXNCYXIpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnZGlzY29yZGlhbi1vcmlnaW5hbC1tYXJraW5ncycsIHRoaXMuc2V0dGluZ3Mub3JpZ2luYWxNYXJraW5ncyk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdkaXNjb3JkaWFuLXJlbC1wcmV2aWV3JywgdGhpcy5zZXR0aW5ncy5yZWxhdGlvbkxpbmVzUHJldmlldyk7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdkaXNjb3JkaWFuLXByZXR0eS10YXNrcy1lZGl0b3InLCB0aGlzLnNldHRpbmdzLnByZXR0eVRhc2tzRWRpdG9yKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2Rpc2NvcmRpYW4tZGFyay1lbmhhbmNlJywgdGhpcy5zZXR0aW5ncy5kYXJrRW5oYW5jZSk7XHJcblxyXG4gICAgICAgIHRoaXMuaW5pdFN0eWxlcygpXHJcbiAgICB9XHJcblxyXG4vLyByZWZyZXNoIGZ1bmN0aW9uIGZvciB3aGVuIHdlIGNoYW5nZSBzZXR0aW5nc1xyXG4gICAgcmVmcmVzaCA9ICgpID0+IHtcclxuICAgICAgICAvLyByZS1sb2FkIHRoZSBzdHlsZVxyXG4gICAgICAgIHRoaXMudXBkYXRlU3R5bGUoKVxyXG4gICAgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgRGlzY29yZGlhblBsdWdpblNldHRpbmdzIHtcclxuICAgIGhpZGVWYXVsdDogYm9vbGVhblxyXG4gICAgaGlkZU1ldGFkYXRhOiBib29sZWFuXHJcbiAgICBoaWRlVGl0bGVCYXI6IGJvb2xlYW5cclxuICAgIGhpZGVTdGF0dXNCYXI6IGJvb2xlYW5cclxuICAgIG9yaWdpbmFsTWFya2luZ3M6IGJvb2xlYW5cclxuICAgIHJlbGF0aW9uTGluZXNQcmV2aWV3OiBib29sZWFuXHJcbiAgICBwcmV0dHlUYXNrc0VkaXRvcjogYm9vbGVhblxyXG4gICAgZGFya0VuaGFuY2U6IGJvb2xlYW5cclxuICAgIGZvbnRTaXplTm90ZXM6IG51bWJlclxyXG4gICAgZm9udFNpemVGaWxlRXhwbG9yZXI6IG51bWJlclxyXG4gICAgbGV0dGVyU3BhY2luZ05vdGVzOiBudW1iZXJcclxuICAgIHdyaXRlck1vZGU6IGJvb2xlYW5cclxuICAgIHBhcmFncmFwaEZvY3VzTW9kZTogYm9vbGVhblxyXG4gICAgcGFyYWdyYXBoRm9jdXNGYWRlOiBudW1iZXJcclxuICAgIGZsYXRBbmR5TW9kZTogYm9vbGVhblxyXG4gICAgcmVhZGFibGVMZW5ndGg6IG51bWJlclxyXG59XHJcblxyXG5jbGFzcyBEaXNjb3JkaWFuUGx1Z2luU2V0dGluZ3NUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcclxuICAgIHBsdWdpbjogRGlzY29yZGlhblBsdWdpbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihhcHA6IEFwcCwgcGx1Z2luOiBEaXNjb3JkaWFuUGx1Z2luKSB7XHJcbiAgICAgICAgc3VwZXIoYXBwLCBwbHVnaW4pO1xyXG4gICAgICAgIHRoaXMucGx1Z2luID0gcGx1Z2luO1xyXG4gICAgfVxyXG5cclxuICAgIGRpc3BsYXkoKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3Qge2NvbnRhaW5lckVsfSA9IHRoaXM7XHJcbiAgICAgICAgY29uc3Qgc2V0dGluZ3MgPSB0aGlzLnBsdWdpbi5zZXR0aW5ncztcclxuXHJcbiAgICAgICAgY29udGFpbmVyRWwuZW1wdHkoKTtcclxuXHJcbiAgICAgICAgdGhpcy5hZGRQbHVnaW5EZXNjcmlwdGlvbihjb250YWluZXJFbClcclxuXHJcbiAgICAgICAgdGhpcy5hZGRQbHVnaW5TZXR0aW5nc0hlYWRlcihjb250YWluZXJFbCwgJ1RoZW1lIFNldHRpbmdzJylcclxuICAgICAgICB0aGlzLmFkZFdyaXRlck1vZGVTZXR0aW5ncyhjb250YWluZXJFbCwgc2V0dGluZ3MpXHJcbiAgICAgICAgdGhpcy5hZGRGbGF0QW5keU1vZGVTZXR0aW5ncyhjb250YWluZXJFbCwgc2V0dGluZ3MpXHJcbiAgICAgICAgdGhpcy5hZGRQYXJhZ3JhcGhGb2N1c01vZGVTZXR0aW5ncyhjb250YWluZXJFbCwgc2V0dGluZ3MpXHJcbiAgICAgICAgdGhpcy5hZGRSZWFkYWJsZUxlbmd0aFNldHRpbmdzKGNvbnRhaW5lckVsLCBzZXR0aW5ncylcclxuICAgICAgICB0aGlzLmFkZE9yaWdpbmFsTWFya2luZ3NTZXR0aW5ncyhjb250YWluZXJFbCwgc2V0dGluZ3MpXHJcbiAgICAgICAgdGhpcy5hZGRSZWxhdGlvbkxpbmVzUHJldmlld1NldHRpbmdzKGNvbnRhaW5lckVsLCBzZXR0aW5ncylcclxuICAgICAgICB0aGlzLmFkZFByZXR0eVRhc2tzRWRpdG9yU2V0dGluZ3MoY29udGFpbmVyRWwsIHNldHRpbmdzKVxyXG4gICAgICAgIHRoaXMuYWRkRGFya0VuaGFuY2VTZXR0aW5ncyhjb250YWluZXJFbCwgc2V0dGluZ3MpXHJcblxyXG4gICAgICAgIHRoaXMuYWRkUGx1Z2luU2V0dGluZ3NTZXBhcmF0b3IoY29udGFpbmVyRWwpXHJcblxyXG4gICAgICAgIHRoaXMuYWRkUGx1Z2luU2V0dGluZ3NIZWFkZXIoY29udGFpbmVyRWwsICdGb250cycpXHJcbiAgICAgICAgdGhpcy5hZGROb3Rlc0ZvbnRTaXplU2V0dGluZ3MoY29udGFpbmVyRWwsIHNldHRpbmdzKVxyXG4gICAgICAgIHRoaXMuYWRkRmlsZUV4cGxvcmVyRm9udFNpemVTZXR0aW5ncyhjb250YWluZXJFbCwgc2V0dGluZ3MpXHJcblxyXG4gICAgICAgIHRoaXMuYWRkUGx1Z2luU2V0dGluZ3NTZXBhcmF0b3IoY29udGFpbmVyRWwpXHJcblxyXG4gICAgICAgIHRoaXMuYWRkUGx1Z2luU2V0dGluZ3NIZWFkZXIoY29udGFpbmVyRWwsICdJZiBub3QgdXNpbmcgSGlkZXIgcGx1Z2luJylcclxuICAgICAgICB0aGlzLmFkZEhpZGVWYXVsdFNldHRpbmdzKGNvbnRhaW5lckVsLCBzZXR0aW5ncylcclxuICAgICAgICB0aGlzLmFkZEhpZGVUaXRsZUJhclNldHRpbmdzKGNvbnRhaW5lckVsLCBzZXR0aW5ncylcclxuICAgICAgICB0aGlzLmFkZEhpZGVTdGF0dXNCYXJTZXR0aW5ncyhjb250YWluZXJFbCwgc2V0dGluZ3MpXHJcbiAgICB9XHJcblxyXG4gICAgYWRkUGx1Z2luRGVzY3JpcHRpb24oY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KSB7XHJcbiAgICAgICAgY29uc3QgZGVzY3JpcHRpb24gPSBjb250YWluZXJFbC5jcmVhdGVFbCgnZGl2Jywge2NsczogJ3BsdWdpbi1kZXNjcmlwdGlvbid9KTtcclxuXHJcbiAgICAgICAgZGVzY3JpcHRpb24uY3JlYXRlRWwoJ2gzJywge3RleHQ6ICdUaGFua3MgZm9yIHVzaW5nIERpc2NvcmRpYW4gISd9KTtcclxuICAgICAgICBkZXNjcmlwdGlvbi5jcmVhdGVFbCgncCcsIHt0ZXh0OiAnSWYgeW91IG5vdGljZSBhbnkgaXNzdWVzLCB0cnkgdG8gdXBkYXRlIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBhbmQgcmVsb2FkIE9ic2lkaWFuLid9KTtcclxuICAgICAgICBkZXNjcmlwdGlvbi5jcmVhdGVFbCgncCcsIHt0ZXh0OiAnT3RoZXJ3aXNlIGZlZWwgZnJlZSB0byBicmluZyBpdCB1cCBvbiBHaXRodWIgb3IgYmV0dGVyIHlldCBjb250cmlidXRlIGEgZml4Lid9KTtcclxuICAgICAgICBkZXNjcmlwdGlvbi5jcmVhdGVFbCgnYScsIHtcclxuICAgICAgICAgICAgdGV4dDogJ2h0dHBzOi8vZ2l0aHViLmNvbS9yYWRla2tvemFrL2Rpc2NvcmRpYW4vaXNzdWVzLycsXHJcbiAgICAgICAgICAgIGF0dHI6IHsnaHJlZic6ICdodHRwczovL2dpdGh1Yi5jb20vcmFkZWtrb3phay9kaXNjb3JkaWFuL2lzc3Vlcy8nLCAndGFyZ2V0JzogJ19ibGFuayd9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkUGx1Z2luU2V0dGluZ3NIZWFkZXIoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50LCBoZWFkZXJUaXRsZTogc3RyaW5nKSB7XHJcbiAgICAgICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ2g0Jywge3RleHQ6IGhlYWRlclRpdGxlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkUGx1Z2luU2V0dGluZ3NTZXBhcmF0b3IoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50KSB7XHJcbiAgICAgICAgY29udGFpbmVyRWwuY3JlYXRlRWwoJ3AnLCB7dGV4dDogJ+KKtycsIGNsczogJ3BsdWdpbi1kZXNjcmlwdGlvbiBzZXBhcmF0b3InfSk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkV3JpdGVyTW9kZVNldHRpbmdzKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCwgc2V0dGluZ3M6IERpc2NvcmRpYW5QbHVnaW5TZXR0aW5ncykge1xyXG4gICAgICAgIGxldCBkZXNjcmlwdGlvbiA9IG5ldyBEb2N1bWVudEZyYWdtZW50KClcclxuICAgICAgICBkZXNjcmlwdGlvbi5hcHBlbmRUZXh0KCdIaWRlcyB2aXN1YWwgZXhjZXNzIHdoZW4gc2lkZWJhcnMgYXJlIGNvbGxhcHNlZCAoYWNjZXNzaWJsZSBieSBob3ZlciknKVxyXG4gICAgICAgIGRlc2NyaXB0aW9uLmNyZWF0ZUVsKCdicicpXHJcbiAgICAgICAgZGVzY3JpcHRpb24uYXBwZW5kVGV4dCgnTk9URSA6IHRoaXMgc2V0dGluZyB3aWxsIGhpZGUgU3RhdHVzIGJhciBhbmQgVGl0bGUgYmFyICcgK1xyXG4gICAgICAgICAgICAncmVnYXJkbGVzcyBvZiB0aGVpciBpbmRpdmlkdWFsIG9wdGlvbnMnKVxyXG5cclxuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAgICAgLnNldE5hbWUoJ1dyaXRlciBtb2RlJylcclxuICAgICAgICAgICAgLnNldERlc2MoZGVzY3JpcHRpb24pXHJcbiAgICAgICAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZShzZXR0aW5ncy53cml0ZXJNb2RlKVxyXG4gICAgICAgICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLndyaXRlck1vZGUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YShzZXR0aW5ncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRGbGF0QW5keU1vZGVTZXR0aW5ncyhjb250YWluZXJFbDogSFRNTEVsZW1lbnQsIHNldHRpbmdzOiBEaXNjb3JkaWFuUGx1Z2luU2V0dGluZ3MpIHtcclxuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAgICAgLnNldE5hbWUoJ0ZsYXQgQW5keSBNb2RlJylcclxuICAgICAgICAgICAgLnNldERlc2MoJ0ZsYXR0ZXIgbm90ZXMgc3RhY2tpbmcgd2hlbiBpbiBBbmR5IE1vZGUgKG5vIGVsZXZhdGlvbiBzaGFkb3cpJylcclxuICAgICAgICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLmZsYXRBbmR5TW9kZSlcclxuICAgICAgICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5mbGF0QW5keU1vZGUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YShzZXR0aW5ncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRQYXJhZ3JhcGhGb2N1c01vZGVTZXR0aW5ncyhjb250YWluZXJFbDogSFRNTEVsZW1lbnQsIHNldHRpbmdzOiBEaXNjb3JkaWFuUGx1Z2luU2V0dGluZ3MpIHtcclxuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAgICAgLnNldE5hbWUoJ1BhcmFncmFwaCBmb2N1cyBtb2RlJylcclxuICAgICAgICAgICAgLnNldERlc2MoJ1RoaXMgYWltcyB0byBpbWl0YXRlIHdlbGwta25vd24gaUEgV3JpdGVyIHBhcmFncmFwaCBmb2N1cy4nKVxyXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MucGFyYWdyYXBoRm9jdXNNb2RlKVxyXG4gICAgICAgICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLnBhcmFncmFwaEZvY3VzTW9kZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHNldHRpbmdzKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLnNldHRpbmdFbC5jbGFzc0xpc3QudG9nZ2xlKCdkaXNjb3JkaWFuLXBsdWdpbi1zZXR0aW5nLWRpc2FibGVkJywgIXZhbHVlKVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbnN0IG5hbWVGYWRlID0gJ1BhcmFncmFwaCBGb2N1cyBNb2RlIGZhZGUgJ1xyXG4gICAgICAgIGNvbnN0IHNldHRpbmcgPSBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAgICAgLnNldE5hbWUobmFtZUZhZGUgKyAnKCA9ICcgKyBzZXR0aW5ncy5wYXJhZ3JhcGhGb2N1c0ZhZGUgKyAnJSApJylcclxuICAgICAgICAgICAgLnNldERlc2MoJ0Ftb3VudCBvZiBmYWRlIG91dCB3aGVuIGluIFBhcmFncmFwaCBGb2N1cyBNb2RlIChkZWZhdWx0IDc1JSknKVxyXG4gICAgICAgICAgICAuYWRkU2xpZGVyKHNsaWRlciA9PiBzbGlkZXIuc2V0TGltaXRzKDI1LCA5MCwgNSlcclxuICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5wYXJhZ3JhcGhGb2N1c0ZhZGUpXHJcbiAgICAgICAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MucGFyYWdyYXBoRm9jdXNGYWRlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5zZXR0aW5nRWwuY2xhc3NMaXN0LnRvZ2dsZSgnZGlzY29yZGlhbi1wbHVnaW4tc2V0dGluZy1kaXNhYmxlZCcsICF2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEoc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLnNldE5hbWUobmFtZUZhZGUgKyAnKCA9ICcgKyBzZXR0aW5ncy5wYXJhZ3JhcGhGb2N1c0ZhZGUgKyAnJSApJylcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIHNldHRpbmcuc2V0dGluZ0VsLmNsYXNzTGlzdC50b2dnbGUoJ2Rpc2NvcmRpYW4tcGx1Z2luLXNldHRpbmctZGlzYWJsZWQnLCAhc2V0dGluZ3MucGFyYWdyYXBoRm9jdXNNb2RlKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRSZWFkYWJsZUxlbmd0aFNldHRpbmdzKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCwgc2V0dGluZ3M6IERpc2NvcmRpYW5QbHVnaW5TZXR0aW5ncykge1xyXG4gICAgICAgIGNvbnN0IHJlYWRhYmxlTGluZUxlbmd0aCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2lzLXJlYWRhYmxlLWxpbmUtd2lkdGgnKVxyXG5cclxuICAgICAgICBjb25zdCBuYW1lID0gJ1JlYWRhYmxlIGxpbmUgbGVuZ3RoICdcclxuICAgICAgICBjb25zdCBzZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgICAgICAgIC5zZXROYW1lKG5hbWUgKyAnKCA9ICcgKyBzZXR0aW5ncy5yZWFkYWJsZUxlbmd0aCArICdyZW0gKScpXHJcbiAgICAgICAgICAgIC5zZXREZXNjKCdPYnNpZGlhblxcJ3MgUmVhZGFibGUgbGluZSBsZW5ndGggbmVlZHMgdG8gYmUgZW5hYmxlZCAoZGVmYXVsdCA0NSByZW0pJylcclxuICAgICAgICAgICAgLmFkZFNsaWRlcihzbGlkZXIgPT4gc2xpZGVyLnNldExpbWl0cyg0NSwgMTIwLCA1KVxyXG4gICAgICAgICAgICAgICAgLnNldFZhbHVlKHNldHRpbmdzLnJlYWRhYmxlTGVuZ3RoKVxyXG4gICAgICAgICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLnJlYWRhYmxlTGVuZ3RoID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEoc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5nLnNldE5hbWUobmFtZSArICcoID0gJyArIHNldHRpbmdzLnJlYWRhYmxlTGVuZ3RoICsgJ3JlbSApJylcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgIHNldHRpbmcuc2V0dGluZ0VsLmNsYXNzTGlzdC50b2dnbGUoJ2Rpc2NvcmRpYW4tcGx1Z2luLXNldHRpbmctZGlzYWJsZWQnLCByZWFkYWJsZUxpbmVMZW5ndGgubGVuZ3RoID09IDApO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZE9yaWdpbmFsTWFya2luZ3NTZXR0aW5ncyhjb250YWluZXJFbDogSFRNTEVsZW1lbnQsIHNldHRpbmdzOiBEaXNjb3JkaWFuUGx1Z2luU2V0dGluZ3MpIHtcclxuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAgICAgLnNldE5hbWUoJ0Rpc2NvcmQgb3JpZ2luYWwgbWFya2luZ3MnKVxyXG4gICAgICAgICAgICAuc2V0RGVzYygnVXNlIERpc2NvcmQgb3JpZ2luYWwgbWFya2luZ3Mgc3VjaCBhcyBib2xkLCBpdGFsaWNzLCBpbmxpbmUgY29kZSwgcXVvdGVzIGFuZCBzbyBvbicpXHJcbiAgICAgICAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZS5zZXRWYWx1ZShzZXR0aW5ncy5vcmlnaW5hbE1hcmtpbmdzKVxyXG4gICAgICAgICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLm9yaWdpbmFsTWFya2luZ3MgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YShzZXR0aW5ncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGREYXJrRW5oYW5jZVNldHRpbmdzKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCwgc2V0dGluZ3M6IERpc2NvcmRpYW5QbHVnaW5TZXR0aW5ncykge1xyXG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgICAgICAuc2V0TmFtZSgnRGFyayBub3RlIGhlYWRlcnMnKVxyXG4gICAgICAgICAgICAuc2V0RGVzYygnTWFrZSBub3RlIGhlYWRlcnMgbW9yZSBwcm9taW5lbnQnKVxyXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MuZGFya0VuaGFuY2UpXHJcbiAgICAgICAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuZGFya0VuaGFuY2UgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YShzZXR0aW5ncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRSZWxhdGlvbkxpbmVzUHJldmlld1NldHRpbmdzKGNvbnRhaW5lckVsOiBIVE1MRWxlbWVudCwgc2V0dGluZ3M6IERpc2NvcmRpYW5QbHVnaW5TZXR0aW5ncykge1xyXG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgICAgICAuc2V0TmFtZSgnUmVsYXRpb25zaGlwIGxpbmVzIGluIFByZXZpZXcgbW9kZScpXHJcbiAgICAgICAgICAgIC5zZXREZXNjKCdTaG93IGxpbmVzIGNvbm5lY3RpbmcgcmVsYXRlZCBidWxsZXQgcG9pbnRzIGFuZCB0YXNrIGxpc3RzJylcclxuICAgICAgICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLnJlbGF0aW9uTGluZXNQcmV2aWV3KVxyXG4gICAgICAgICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLnJlbGF0aW9uTGluZXNQcmV2aWV3ID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEoc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkUHJldHR5VGFza3NFZGl0b3JTZXR0aW5ncyhjb250YWluZXJFbDogSFRNTEVsZW1lbnQsIHNldHRpbmdzOiBEaXNjb3JkaWFuUGx1Z2luU2V0dGluZ3MpIHtcclxuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAgICAgLnNldE5hbWUoJ1ByZXR0eSBUYXNrIExpc3RzIGluIEVkaXRvciBtb2RlJylcclxuICAgICAgICAgICAgLnNldERlc2MoXCJIQUNLSVNIIDogcGxlYXNlIHVzZSBib3RoICdTbWFydCBpbmRlbnQgbGlzdHMnIGFuZCAnVXNlIHRhYnMnIG9wdGlvbnMgZm9yIGJlc3QgZXhwZXJpZW5jZVwiKVxyXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MucHJldHR5VGFza3NFZGl0b3IpXHJcbiAgICAgICAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MucHJldHR5VGFza3NFZGl0b3IgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YShzZXR0aW5ncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGROb3Rlc0ZvbnRTaXplU2V0dGluZ3MoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50LCBzZXR0aW5nczogRGlzY29yZGlhblBsdWdpblNldHRpbmdzKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9ICdOb3RlcyBmb250IHNpemUgJ1xyXG4gICAgICAgIGNvbnN0IHNldHRpbmcgPSBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAgICAgLnNldE5hbWUobmFtZSArICcoID0gJyArIHNldHRpbmdzLmZvbnRTaXplTm90ZXMgKyAncHggKScpXHJcbiAgICAgICAgICAgIC5zZXREZXNjKCdVc2VkIGluIGVkaXRvci9wcmV2aWV3IG1vZGUgKGRlZmF1bHQgMTRweCknKVxyXG4gICAgICAgICAgICAuYWRkU2xpZGVyKHNsaWRlciA9PiBzbGlkZXIuc2V0TGltaXRzKDE0LCAyMiwgMilcclxuICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5mb250U2l6ZU5vdGVzKVxyXG4gICAgICAgICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLmZvbnRTaXplTm90ZXMgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YShzZXR0aW5ncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmcuc2V0TmFtZShuYW1lICsgJyggPSAnICsgdmFsdWUgKyAncHggKScpXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEZpbGVFeHBsb3JlckZvbnRTaXplU2V0dGluZ3MoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50LCBzZXR0aW5nczogRGlzY29yZGlhblBsdWdpblNldHRpbmdzKSB7XHJcbiAgICAgICAgY29uc3QgbmFtZSA9ICdGaWxlIEV4cGxvcmVyIGZvbnQgc2l6ZSAnXHJcbiAgICAgICAgY29uc3Qgc2V0dGluZyA9IG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAgICAgICAuc2V0TmFtZShuYW1lICsgJyggPSAnICsgc2V0dGluZ3MuZm9udFNpemVGaWxlRXhwbG9yZXIgKyAncHggKScpXHJcbiAgICAgICAgICAgIC5zZXREZXNjKCdVc2VkIGluIEZpbGUgRXhwbG9yZXIgKGRlZmF1bHQgMTRweCknKVxyXG4gICAgICAgICAgICAuYWRkU2xpZGVyKHNsaWRlciA9PiBzbGlkZXIuc2V0TGltaXRzKDEyLCAxOCwgMilcclxuICAgICAgICAgICAgICAgIC5zZXRWYWx1ZShzZXR0aW5ncy5mb250U2l6ZUZpbGVFeHBsb3JlcilcclxuICAgICAgICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5mb250U2l6ZUZpbGVFeHBsb3JlciA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHNldHRpbmdzKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZy5zZXROYW1lKG5hbWUgKyAnKCA9ICcgKyB2YWx1ZSArICdweCApJylcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkSGlkZVZhdWx0U2V0dGluZ3MoY29udGFpbmVyRWw6IEhUTUxFbGVtZW50LCBzZXR0aW5nczogRGlzY29yZGlhblBsdWdpblNldHRpbmdzKSB7XHJcbiAgICAgICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgICAgICAgIC5zZXROYW1lKCdIaWRlIHZhdWx0IG5hbWUnKVxyXG4gICAgICAgICAgICAuc2V0RGVzYygnSGlkZXMgdmF1bHQgbmFtZSBpbiBGaWxlIEV4cGxvcmVyJylcclxuICAgICAgICAgICAgLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlLnNldFZhbHVlKHNldHRpbmdzLmhpZGVWYXVsdClcclxuICAgICAgICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5oaWRlVmF1bHQgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5zYXZlRGF0YShzZXR0aW5ncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4ucmVmcmVzaCgpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBhZGRIaWRlVGl0bGVCYXJTZXR0aW5ncyhjb250YWluZXJFbDogSFRNTEVsZW1lbnQsIHNldHRpbmdzOiBEaXNjb3JkaWFuUGx1Z2luU2V0dGluZ3MpIHtcclxuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAgICAgLnNldE5hbWUoJ0hpZGUgdGl0bGUgYmFyJylcclxuICAgICAgICAgICAgLnNldERlc2MoJ0hpZGVzIG1haW4gdGl0bGUgYmFyICh0aGVtZVxcJ3MgZGVmYXVsdCknKVxyXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MuaGlkZVRpdGxlQmFyKVxyXG4gICAgICAgICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLmhpZGVUaXRsZUJhciA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVEYXRhKHNldHRpbmdzKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsdWdpbi5yZWZyZXNoKCk7XHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZEhpZGVTdGF0dXNCYXJTZXR0aW5ncyhjb250YWluZXJFbDogSFRNTEVsZW1lbnQsIHNldHRpbmdzOiBEaXNjb3JkaWFuUGx1Z2luU2V0dGluZ3MpIHtcclxuICAgICAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgICAgICAgLnNldE5hbWUoJ0hpZGUgc3RhdHVzIGJhcicpXHJcbiAgICAgICAgICAgIC5zZXREZXNjKCdIaWRlcyBzdGF0dXMgYmFyICh0aGVtZVxcJ3MgZGVmYXVsdCknKVxyXG4gICAgICAgICAgICAuYWRkVG9nZ2xlKHRvZ2dsZSA9PiB0b2dnbGUuc2V0VmFsdWUoc2V0dGluZ3MuaGlkZVN0YXR1c0JhcilcclxuICAgICAgICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5oaWRlU3RhdHVzQmFyID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZURhdGEoc2V0dGluZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGx1Z2luLnJlZnJlc2goKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICB9XHJcbn1cclxuIl0sIm5hbWVzIjpbIlBsdWdpbiIsIlNldHRpbmciLCJQbHVnaW5TZXR0aW5nVGFiIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLGFBQWEsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDbkMsSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLGNBQWM7QUFDekMsU0FBUyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUUsWUFBWSxLQUFLLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFNBQVMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3BGLFFBQVEsVUFBVSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQzFHLElBQUksT0FBTyxhQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9CLENBQUMsQ0FBQztBQUNGO0FBQ08sU0FBUyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNoQyxJQUFJLElBQUksT0FBTyxDQUFDLEtBQUssVUFBVSxJQUFJLENBQUMsS0FBSyxJQUFJO0FBQzdDLFFBQVEsTUFBTSxJQUFJLFNBQVMsQ0FBQyxzQkFBc0IsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsK0JBQStCLENBQUMsQ0FBQztBQUNsRyxJQUFJLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDeEIsSUFBSSxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDM0MsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3pGLENBQUM7QUF1Q0Q7QUFDTyxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUU7QUFDN0QsSUFBSSxTQUFTLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEtBQUssWUFBWSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLFVBQVUsT0FBTyxFQUFFLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDaEgsSUFBSSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxVQUFVLE9BQU8sRUFBRSxNQUFNLEVBQUU7QUFDL0QsUUFBUSxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ25HLFFBQVEsU0FBUyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0FBQ3RHLFFBQVEsU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsTUFBTSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3RILFFBQVEsSUFBSSxDQUFDLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQzlFLEtBQUssQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNEO0FBQ08sU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUMzQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDckgsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsT0FBTyxNQUFNLEtBQUssVUFBVSxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsV0FBVyxFQUFFLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM3SixJQUFJLFNBQVMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sVUFBVSxDQUFDLEVBQUUsRUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQ3RFLElBQUksU0FBUyxJQUFJLENBQUMsRUFBRSxFQUFFO0FBQ3RCLFFBQVEsSUFBSSxDQUFDLEVBQUUsTUFBTSxJQUFJLFNBQVMsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0FBQ3RFLFFBQVEsT0FBTyxDQUFDLEVBQUUsSUFBSTtBQUN0QixZQUFZLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQ3pLLFlBQVksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwRCxZQUFZLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN6QixnQkFBZ0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsTUFBTTtBQUM5QyxnQkFBZ0IsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ3hFLGdCQUFnQixLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO0FBQ2pFLGdCQUFnQixLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTO0FBQ2pFLGdCQUFnQjtBQUNoQixvQkFBb0IsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRTtBQUNoSSxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRTtBQUMxRyxvQkFBb0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxD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 diff --git a/.obsidian/plugins/discordian-plugin/manifest.json b/.obsidian/plugins/discordian-plugin/manifest.json deleted file mode 100644 index 4b38802..0000000 --- a/.obsidian/plugins/discordian-plugin/manifest.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "id": "discordian-plugin", - "name": "Discordian Theme", - "version": "0.7.1", - "minAppVersion": "0.10.6", - "description": "Discordian plugin for tweaking Discordian theme", - "author": "@radekkozak", - "authorUrl": "https://github.com/radekkozak", - "isDesktopOnly": false -} - diff --git a/.obsidian/plugins/discordian-plugin/styles.css b/.obsidian/plugins/discordian-plugin/styles.css deleted file mode 100644 index 710cecc..0000000 --- a/.obsidian/plugins/discordian-plugin/styles.css +++ /dev/null @@ -1 +0,0 @@ -/* Empty */ diff --git a/.obsidian/themes/Discordian.css b/.obsidian/themes/Discordian.css deleted file mode 100644 index eb4c2d9..0000000 --- a/.obsidian/themes/Discordian.css +++ /dev/null @@ -1,4174 +0,0 @@ -/*---------------------------------------------------------------- -DISCORDIAN THEME version 0.8.6 -----------------------------------------------------------------*/ - -:root { - --default-font: Catamaran, Helvetica Neue, Helvetica, Arial, sans-serif; - --font-editor: Catamaran SSm, Helvetica Neue, Helvetica, Arial, sans-serif; - --font-monospace: Consolas, Andale Mono, Lucida Console, Source Code Pro, iA Writer Mono S, Jetbrains Mono, Menlo, SFMono-Regular, Lucida Sans Typewriter, DejaVu Sans Mono, Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Monaco, Courier New, Courier, monospace; - - /* discord palette */ - --discord-green: hsla(153, 46%, 49%, 1); - --discord-yellow: hsla(38, 96%, 54%, 1); - --discord-yellow-alt: hsla(37, 65%, 63%, 1); - --discord-yellow-light: hsla(50, 42%, 48%, 1); - --discord-yellow-bg: hsla(38, 96%, 54%, 0.1); - --discord-orange: hsla(20, 84%, 52%, 1); - --discord-orange-light: hsla(24, 90%, 61%, 1); - --discord-red: hsla(0, 85%, 61%, 1); - --discord-red-hover: hsla(0, 66%, 55%, 1); - --discord-blue: hsla(227, 58%, 65%, 1); - --discord-blue-hover: hsla(227, 44%, 59%, 1); - --discord-grey: hsla(214, 10%, 50%, 1); - --discord-grey-hover: hsla(214, 10%, 45%, 1); - --discord-grey-toggle: hsla(218, 5%, 47%, 1); - --discord-dark: hsla(216, 7%, 14%, 1); - --discord-dark-hover: hsla(216, 7%, 14%, 0.7); - - --elevation-stroke: 0 1px 0 1px hsla(240, 11%, 2%, 0.1); - --elevation-low: 0 1px 0 hsla(240, 11%, 2%, 0.2), 0 1.5px 0 hsla(240, 8%, 3%, 0.05), 0 2px 0 hsla(240, 11%, 2%, 0.05); - --elevation-medium: 0 4px 4px hsla(0, 0%, 0%, 0.16); - --elevation-high: 0 8px 16px hsla(0, 0%, 0%, 0.24); - - --readable-line-length: 45rem; - --font-size-notes: 0.875rem; - --font-size-file-explorer: 0.875rem; - --letter-spacing-notes: -0.2px; -} - -.theme-dark { - --background-primary: hsla(220, 8%, 23%, 1); - --background-primary-alt: hsla(232, 14%, 31%, 1); - --background-secondary: hsla(223, 7%, 20%, 1); - --background-secondary-alt: hsla(216, 7%, 14%, 1); - --background-tertiary: hsla(220, 7%, 17%, 1); - - --background-accent: hsla(217, 8%, 34%, 1); - - --background-code: hsla(204, 6%, 17%, 1); - --background-code-preview: hsla(204, 6%, 17%, 1); - --background-code-border: hsla(0, 0%, 16%, 1); - - --background-modifier-cover: hsla(220, 8%, 23%, 1); - --background-modifier-hover: hsla(217, 8%, 34%, 0.16); - --background-modifier-active: hsla(217, 8%, 34%, 0.24); - --background-modifier-selected: hsla(217, 8%, 34%, 0.32); - --background-modifier-accent: hsla(0, 0%, 100%, 0.06); - --background-modifier-error: var(--discord-red); - --background-modifier-error-hover: var(--discord-red-hover); - --background-modifier-form-field: hsla(0, 0%, 0%, 0.2); - --background-modifier-form-field-highlighted: hsla(0, 0%, 0%, 0.2); - --background-modifier-border: var(--background-secondary-alt); - - --text-normal: hsla(213, 3%, 82%, 1); - --text-muted: hsla(213, 4%, 57%, 1); - --text-faint: hsla(0, 0%, 61%, 1); - --text-link: hsla(197, 100%, 48%, 1); - --text-accent: hsla(265, 66%, 72%, 1); - --text-on-accent: hsla(210, 3%, 87%, 1); - --text-selection: hsla(212, 34%, 54%, 0.5); - --text-highlight-bg: hsla(212, 34%, 54%, 1); - --text-linenumber: hsla(216, 3%, 32%, 0.85); - --text-linenumber-active: hsla(0, 0%, 61%, 0.85); - - --text-strong: var(--discord-yellow-alt); - --text-em: hsla(62, 31%, 61%, 1); - --text-tag: hsla(27, 100%, 63%, 0.73); - --text-mark: hsla(37, 82%, 74%, 1); - - --markup-code: hsla(34, 89%, 61%, 1); - - --text-header: hsla(233, 45%, 69%, 1); - - --text-title-h1: hsla(243, 35%, 65%, 1); - --text-title-h2: var(--text-header); - --text-title-h3: var(--text-header); - --text-title-h4: var(--text-header); - --text-title-h5: var(--text-header); - --text-title-h6: hsla(192, 13%, 53%, 1); - - --text-a: hsla(322, 65%, 70%, 1); - --text-a-hover: hsla(327, 100%, 77%, 1); - - --interactive-accent: var(--discord-green); - --interactive-accent-hover: hsla(152, 60%, 43%, 1); - --interactive-accent-light: var(--discord-yellow-light); - - --interactive-accent-alt: hsla(220, 7%, 17%, 1); - --interactive-hover: hsla(210, 3%, 87%, 1); - --interactive-muted: hsla(217, 8%, 34%, 1); - --interactive-normal: hsla(216, 4%, 74%, 1); - --interactive-active: hsla(0, 100%, 100%, 1); - - --blockquote-border: hsla(286, 22%, 66%, 1); - --blockquote-bg: hsla(240, 11%, 2%, 0.07); - - --scrollbar-bg: transparent; - --scrollbar-thin-thumb: hsla(216, 7%, 14%, 1); - --scrollbar-thin-track: transparent; - --scrollbar-auto-thumb: hsla(216, 7%, 14%, 1); - --scrollbar-auto-track: hsla(210, 10%, 20%, 1); - --scrollbar-auto-scrollbar-color-thumb: hsla(216, 7%, 14%, 1); - --scrollbar-auto-scrollbar-color-track: hsla(223, 7%, 20%, 1); - - --cursor: default; - --opacity-translucency: 1; - - --graph-line: hsla(191, 57%, 35%, 1); - --graph-line-highlight: hsla(191, 57%, 59%, 1); - --graph-circle-outline: transparent; - --graph-circle-fill: hsla(59, 99%, 50%, 1); - --graph-circle-fill-highlight: hsla(59, 99%, 50%, 1); - --graph-circle-fill-unresolved: hsla(206, 89%, 71%, 1); - --graph-fill-tag: hsla(250, 100%, 77%, 1); - --graph-fill-attachment: hsla(314, 57%, 63%, 1); - --graph-arrow: hsla(314, 57%, 63%, 1); -} - -/* HACK for settings panel if title bar is brought back by user */ -body.theme-dark:not(.hider-frameless):not(.discordian-writer):not(.discordian-theme) .modal-container { - top: -22px !important; - height: 100vh !important; -} - -/*---------------------------------------------------------------- -HIDDEN (comment in/out to toggle things) -----------------------------------------------------------------*/ - -/*---------------------------------------------------------------- -Hide main title bar */ - -.titlebar { - display: none; -} - -body { - padding-top: 0 !important; -} - -body:not(.mod-windows):not(.discordian-theme) .mod-left-split .workspace-tab-header-container { - padding-left: 24px !important; -} - -body:not(.plugin-sliding-panes):not(.is-fullscreen):not(.mod-windows) .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header { - padding-left: 30px; - transition: padding-left .15s ease; -} - -body.hider-ribbon:not(.plugin-sliding-panes):not(.is-fullscreen):not(.mod-windows) .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header { - padding-left: 62px; - transition: padding-left .15s ease; -} - -body.theme-dark:not(.hider-frameless):not(.discordian-writer):not(.discordian-theme) .modal-container, -body.theme-dark:not(.hider-frameless) .modal-container, -body.theme-dark:not(.discordian-writer) .modal-container, -body.theme-dark:not(.discordian-theme) .modal-container { - top: 0 !important; - height: 100vh !important; -} - -/*---------------------------------------------------------------- -Hide status bar */ - -.status-bar { - display: none; -} - -/*---------------------------------------------------------------- -Hide the name of the root folder (vault) */ - -.nav-folder.mod-root > .nav-folder-title { - display: none; -} - -/*---------------------------------------------------------------- -FOUNDATION -----------------------------------------------------------------*/ - -/* font for everything outside of editor/preview panes */ -body, -.app-container { - font-size: 16px; - line-height: 22px !important; - font-family: var(--default-font); - color: var(--text-normal); - word-wrap: break-word; - text-rendering: optimizeLegibility; - vertical-align: baseline; - -webkit-font-feature-settings: "tnum"; - -moz-font-feature-settings: "tnum"; - font-feature-settings: "tnum"; - -webkit-font-variant-numeric: tabular-nums; - -moz-font-variant-numeric: tabular-nums; - font-variant-numeric: tabular-nums; - margin: 0 !important; -} - -.cm-s-obsidian .hmd-fold-html-stub, -.cm-s-obsidian .hmd-fold-code-stub, -.cm-s-obsidian.CodeMirror .HyperMD-hover > .HyperMD-hover-content code, -.cm-s-obsidian .cm-formatting-hashtag, -.cm-s-obsidian .cm-inline-code, -.cm-s-obsidian .HyperMD-codeblock, -.cm-s-obsidian .HyperMD-hr, -.cm-s-obsidian .cm-hmd-frontmatter, -.cm-s-obsidian .cm-hmd-orgmode-markup, -.cm-s-obsidian .cm-formatting-code, -.cm-s-obsidian .cm-math, -.cm-s-obsidian span.hmd-fold-math-placeholder, -.cm-s-obsidian .CodeMirror-linewidget kbd, -.cm-s-obsidian .hmd-fold-html kbd { - font-family: var(--font-monospace); - font-weight: normal; - color: var(--text-muted); - font-size: 100%; - letter-spacing: 0; -} - -button, -input[type="text"], -input[type="email"], -input[type="password"], -input[type="number"], -input[type='search'], -.splash-brand-name, -.dropdown, -.setting-hotkey, -.suggestion-hotkey { - font-family: var(--default-font) !important; - border-color: var(--background-secondary-alt) !important; - letter-spacing: -0.01rem; -} - -button { - -webkit-transition: background-color .17s ease, color .17s ease; - transition: background-color .17s ease, color .17s ease; -} - -input[type='text'], -input[type='search'], -input[type='email'], -input[type='password'], -input[type='number'] { - font-size: 0.875rem; - color: var(--text-muted); - border-radius: 4px; - background-color: var(--discord-dark) !important; -} - -input[type='text']:focus-within, -input[type='search']:focus-within, -input[type='email']:focus-within, -input[type='password']:focus-within, -input[type='number']:focus-within { - color: var(--text-normal); -} - -ul li { - margin: 4px 0; -} - -p { - margin-block-start: 1.4375rem; - margin-block-end: 1.4375rem; -} - -.markdown-preview-pusher + div > p { - margin-block-start: 0; -} - -p.mod-warning { - color: var(--discord-red); -} - -.search-result-file-match::after { - background-color: var(--background-tertiary); -} - -/* Discord-like tooltip */ -.tooltip { - font-size: 1rem; - padding: 10px; -} - -/* html tags in editor */ -.cm-tag, -.cm-attribute { /* .cm-string */ - color: var(--text-muted) !important; -} - -/* horizontal line in preview */ -.markdown-preview-view hr { - background-color: var(--text-muted); - border: none; - height: 1px; - margin: 1.4375rem 0; -} - -/* internal embedded link rendering in preview */ -.markdown-embed-title { - font-weight: 600; - color: var(--text-link); -} - -.markdown-embed { - padding-left: 8px !important; - padding-right: 4px !important; - margin-left: 8px !important; - margin-right: 4px !important; -} - -/* NO FILE OPEN page */ - -.empty-state-title { - color: var(--discord-yellow-alt) !important; -} - -.empty-state-action { - color: var(--text-muted) !important; -} - -.empty-state-action:hover { - color: var(--text-normal) !important; -} - -/*---------------------------------------------------------------- -BLOCKQUOTES */ - -.cm-s-obsidian span.cm-quote { - color: var(--interactive-accent); -} - -.cm-hmd-indent-in-quote { - padding-left: 4px; -} - -.markdown-preview-view blockquote { - color: var(--interactive-accent) !important; - border: none; - border-left: 3px solid var(--blockquote-border) !important; - border-radius: 4px !important; - margin: 1.5rem 1.5rem 1.5rem 3.5rem; - background-color: var(--blockquote-bg); - display: grid; -} - -/*---------------------------------------------------------------- -IMAGES */ - -img { - display: block; - margin: 0 auto; -} - -/*---------------------------------------------------------------- -Normal text outside of headings and code */ - -/* preview */ -.markdown-preview-view { - font-family: var(--font-editor); - color: var(--text-normal); - font-weight: 400; - font-size: var(--font-size-notes); - letter-spacing: var(--letter-spacing-notes); - line-height: 1.65 !important; - overflow-x: hidden; -} - -/* editor */ -.cm-s-obsidian { - font-family: var(--font-editor); - color: var(--text-normal); - font-weight: 400; - font-size: var(--font-size-notes); - letter-spacing: var(--letter-spacing-notes); - line-height: 1.65 !important; - - /* Editor font: make it thicker so it is like in Preview */ - -webkit-font-smoothing: subpixel-antialiased !important; -} - -/*---------------------------------------------------------------- -Bold */ - -strong { - color: var(--discord-yellow-alt); - font-weight: 600; -} - -.cm-s-obsidian .cm-strong { - color: var(--discord-yellow-alt); - font-weight: 600; -} - -/*---------------------------------------------------------------- -Italics */ - -em { - color: var(--text-em); -} - -.cm-em { - color: var(--text-em); -} - -.cm-formatting-em { - font-style: normal; -} - -.cm-em:not(.cm-formatting-em) { - margin-left: -1px; -} - -/*---------------------------------------------------------------- -Highlights */ - -.markdown-preview-view mark { - background-color: transparent !important; - -webkit-box-shadow: inset 0 -2px var(--discord-yellow-alt); - box-shadow: inset 0 -2px var(--discord-yellow-alt); - padding-bottom: 4px; -} - -.cm-s-obsidian span.cm-formatting-highlight, -.cm-s-obsidian span.cm-highlight { - background-color: unset; - -webkit-box-shadow: var(--discord-yellow-alt) 0 -2px 0 0 inset; - box-shadow: var(--discord-yellow-alt) 0 -2px 0 0 inset; - margin: 4px 0; - padding-bottom: 4px; -} - -.cm-s-obsidian span.cm-formatting-highlight { - color: var(--text-muted); -} - -mark > strong { - color: var(--discord-yellow-alt) !important; - font-weight: 500; - padding: 0 2px; -} - -/*---------------------------------------------------------------- -Popup notifications */ - -.notice { - color: var(--text-on-accent) !important; - background-color: var(--background-primary-alt) !important; -} - -/*---------------------------------------------------------------- -Dropdown */ - -.dropdown { - background-color: rgba(0, 0, 0, 0.1); - border: 1px solid rgba(32, 34, 37, 0.5) !important; - border-radius: 6px; - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='20' width='20' viewBox='0 0 20 20' focusable='false' stroke-width='px' fill='%23B9BBBE' class='dropdown-svg'%3E%3Cpath d='M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z'%3E%3C/path%3E%3C/svg%3E"); - background-repeat: no-repeat, repeat; - background-position: right 0.7em top 50%, 0 0; - background-size: 1.2em auto, 100%; - -webkit-transition: background-color .17s ease, color .17s ease; - transition: background-color .17s ease, color .17s ease; - outline: 0 !important; - cursor: pointer; -} - -.dropdown:hover { - background-color: var(--background-modifier-form-field); -} - -.dropdown:focus { - background-color: var(--background-modifier-form-field-highlighted); -} - -/*---------------------------------------------------------------- -Selections */ - -.markdown-preview-view .mod-highlighted { - background-color: var(--text-selection); - color: inherit; -} - -/* flashing and selections when searching */ -.is-flashing { - background-color: var(--text-highlight-bg); - transition: all 0.7s ease-in !important; -} - -/*---------------------------------------------------------------- -WYSIWYG - -This make switching between Editor and Preview seamless -but mostly in terms of size / width / margins and visual shifts -----------------------------------------------------------------*/ - -.CodeMirror-lines { - padding: 0 0 20px 0; -} - -.CodeMirror pre.CodeMirror-line, -.CodeMirror pre.CodeMirror-line-like { - padding: 0; -} - -.cm-s-obsidian .CodeMirror-code { - padding-right: 0; -} - -.markdown-source-view, -.markdown-preview-view, -.markdown-source-view.mod-cm5 { - padding: 1.5rem 1.5rem 0 1.5rem; -} - -.CodeMirror, -.markdown-source-view.is-readable-line-width .CodeMirror, -.markdown-preview-section { - padding-left: 0; - padding-right: 0; - margin: 0 auto; -} - -/*---------------------------------------------------------------- -Editor */ - -/* to be concise between Editor and Preview we need to account for scrollbar */ -.markdown-source-view.is-readable-line-width .CodeMirror, -.CodeMirror { - max-width: 100%; -} - -.markdown-source-view.is-readable-line-width .CodeMirror { - width: calc(var(--readable-line-length) + 16px); -} - -.discordian-writer-mode .markdown-source-view.is-readable-line-width .CodeMirror { - width: calc(var(--readable-line-length) + 0px); -} - -.CodeMirror-scroll { - padding-left: 4rem; - padding-right: 3rem; - margin-right: 0; - margin-bottom: 0; -} - -.CodeMirror-sizer { - margin-left: 0 !important; - border-right: 0 !important; -} - -/*---------------------------------------------------------------- -Preview */ - -.markdown-preview-view.is-readable-line-width .markdown-preview-sizer { - max-width: 100%; -} - -.markdown-preview-section > div { - padding-left: 4rem; - padding-right: 2rem; - margin: 0 auto 0 auto; - max-width: 100%; -} - -.markdown-preview-view.is-readable-line-width .markdown-preview-section { - max-width: 100%; - width: var(--readable-line-length); -} - -.markdown-preview-view.is-readable-line-width .markdown-preview-section > div { - width: var(--readable-line-length); -} - -/*---------------------------------------------------------------- -HEADINGS -----------------------------------------------------------------*/ - -/*---------------------------------------------------------------- -Preview */ - -.markdown-preview-view h1, -.markdown-preview-view h2, -.markdown-preview-view h3, -.markdown-preview-view h4, -.markdown-preview-view h5, -.markdown-preview-view h6 { - font-weight: 600; - margin-block-start: 1em; - margin-block-end: 1em; - line-height: 125% !important; -} - -.markdown-preview-view h1 { - font-size: 2rem; - color: var(--text-title-h1); - margin-block-start: 0; - margin-block-end: 0; - margin-top: 0; -} - -.markdown-preview-view h2 { - font-size: 1.625rem; - color: var(--text-title-h2); -} - -.markdown-preview-view h3 { - font-size: 1.375rem; - color: var(--text-title-h3); -} - -.markdown-preview-view h4 { - font-size: 1.125rem; - color: var(--text-title-h4); -} - -.markdown-preview-view h5 { - font-size: 1.125rem; - color: var(--text-title-h5); -} - -.markdown-preview-view h6 { - font-size: 1rem; - color: var(--text-title-h6); -} - -/*---------------------------------------------------------------- -Editor */ - -.cm-formatting.cm-formatting-header.cm-header { - font-weight: 400; -} - -.cm-header-1, -.cm-header-2, -.cm-header-3, -.cm-header-4, -.cm-header-5, -.cm-header-6 { - font-weight: 600; - margin-block-start: 1em; - line-height: 125% !important; -} - -.cm-header-1 { - font-size: 2rem; - color: var(--text-title-h1); - margin-block-start: 0; -} - -.cm-header-2 { - font-size: 1.625rem; - color: var(--text-title-h2); -} - -.cm-header-3 { - font-size: 1.375rem; - color: var(--text-title-h3); -} - -.cm-header-4 { - font-size: 1.125rem; - color: var(--text-title-h4); -} - -.cm-header-5 { - font-size: 1.125rem; - color: var(--text-title-h5); -} - -.cm-header-6 { - font-size: 1rem; - color: var(--text-title-h6); -} - -.cm-s-obsidian span.cm-header-1.cm-footref, -.cm-s-obsidian span.cm-header-1.cm-blockid, -.cm-s-obsidian span.cm-header-2.cm-footref, -.cm-s-obsidian span.cm-header-2.cm-blockid, -.cm-s-obsidian span.cm-header-3.cm-footref, -.cm-s-obsidian span.cm-header-3.cm-blockid { - font-size: 1rem; - vertical-align: text-top; - margin-top: -1rem; -} - -.cm-s-obsidian span.cm-header-4.cm-footref, -.cm-s-obsidian span.cm-header-4.cm-blockid, -.cm-s-obsidian span.cm-header-5.cm-footref, -.cm-s-obsidian span.cm-header-5.cm-blockid, -.cm-s-obsidian span.cm-header-6.cm-footref, -.cm-s-obsidian span.cm-header-6.cm-blockid { - font-size: 0.75rem; - vertical-align: text-top; - margin-top: -0.75rem; -} - -.cm-s-obsidian pre.HyperMD-header { - padding-bottom: 0; - padding-left: 0 !important; -} - -.vertical-tab-content h1:first-child, -.vertical-tab-content h2:first-child, -.vertical-tab-content h3:first-child { - margin-block-start: 0; -} - -/*---------------------------------------------------------------- -Links in headers should be visually the same as normal headers -This is purely for visual aesthetics but makes sense when using -Bryan Jenks (@tallguyjenks) idea of self-correcting titles -*/ - -/*---------------------------------------------------------------- -Preview */ - -.markdown-preview-view h1 a.internal-link { - color: var(--text-title-h1); -} - -.markdown-preview-view h2 a.internal-link { - color: var(--text-title-h2); -} - -.markdown-preview-view h3 a.internal-link { - color: var(--text-title-h3); -} - -.markdown-preview-view h4 a.internal-link { - color: var(--text-title-h4); -} - -.markdown-preview-view h5 a.internal-link { - color: var(--text-title-h5); -} - -/*---------------------------------------------------------------- -Editor */ - -.cm-s-obsidian span.cm-formatting-link.cm-header-1, -.cm-s-obsidian span.cm-hmd-internal-link.cm-header-1 { - color: var(--text-title-h1); -} - -.cm-s-obsidian span.cm-hmd-internal-link.cm-header-1:hover { - color: var(--text-title-h1); -} - -.cm-s-obsidian span.cm-formatting-link.cm-header-2, -.cm-s-obsidian span.cm-hmd-internal-link.cm-header-2 { - color: var(--text-title-h2); -} - -.cm-s-obsidian span.cm-hmd-internal-link.cm-header-2:hover { - color: var(--text-title-h2); -} - -.cm-s-obsidian span.cm-formatting-link.cm-header-3, -.cm-s-obsidian span.cm-hmd-internal-link.cm-header-3 { - color: var(--text-title-h3); -} - -.cm-s-obsidian span.cm-hmd-internal-link.cm-header-3:hover { - color: var(--text-title-h3); -} - -.cm-s-obsidian span.cm-formatting-link.cm-header-4, -.cm-s-obsidian span.cm-hmd-internal-link.cm-header-4 { - color: var(--text-title-h4); -} - -.cm-s-obsidian span.cm-hmd-internal-link.cm-header-4:hover { - color: var(--text-title-h4); -} - -.cm-s-obsidian span.cm-formatting-link.cm-header-5, -.cm-s-obsidian span.cm-hmd-internal-link.cm-header-5 { - color: var(--text-title-h5); -} - -.cm-s-obsidian span.cm-hmd-internal-link.cm-header-5:hover { - color: var(--text-title-h5); -} - -/*---------------------------------------------------------------- -Inline code in headers should respect header size -*/ - -.cm-s-obsidian span.cm-inline-code.cm-header-1:not(.cm-formatting):not(.cm-hmd-indented-code):not(.obsidian-search-match-highlight), -.cm-s-obsidian span.cm-inline-code.cm-header-1 { - font-size: 2rem; -} - -.cm-s-obsidian span.cm-inline-code.cm-header-2:not(.cm-formatting):not(.cm-hmd-indented-code):not(.obsidian-search-match-highlight), -.cm-s-obsidian span.cm-inline-code.cm-header-2 { - font-size: 1.625rem; -} - -.cm-s-obsidian span.cm-inline-code.cm-header-3:not(.cm-formatting):not(.cm-hmd-indented-code):not(.obsidian-search-match-highlight), -.cm-s-obsidian span.cm-inline-code.cm-header-3 { - font-size: 1.375rem; -} - -.cm-s-obsidian span.cm-inline-code.cm-header-4:not(.cm-formatting):not(.cm-hmd-indented-code):not(.obsidian-search-match-highlight), -.cm-s-obsidian span.cm-inline-code.cm-header-4, -.cm-s-obsidian span.cm-inline-code.cm-header-5:not(.cm-formatting):not(.cm-hmd-indented-code):not(.obsidian-search-match-highlight), -.cm-s-obsidian span.cm-inline-code.cm-header-5 { - font-size: 1.125rem; -} - -.cm-s-obsidian span.cm-inline-code.cm-header-6:not(.cm-formatting):not(.cm-hmd-indented-code):not(.obsidian-search-match-highlight), -.cm-s-obsidian span.cm-inline-code.cm-header-6 { - font-size: 1rem; -} - -.cm-s-obsidian span.cm-inline-code { - padding-bottom: 0; -} - -/*---------------------------------------------------------------- -POPOVERS -----------------------------------------------------------------*/ - -.menu, -div.popover.hover-popover, -.suggestion-container { - background-color: var(--background-secondary); - border-radius: 4px; - border: none !important; - min-width: 15rem; - font-family: var(--font-editor); - font-size: 15px !important; - -webkit-box-shadow: var(--elevation-stroke), var(--elevation-high); - box-shadow: var(--elevation-stroke), var(--elevation-high); -} - -/* Bigger popovers */ -div.popover.hover-popover { - width: 35rem; - max-height: 25rem; -} - -div.popover.hover-popover .markdown-preview-view { - font-size: 13px !important; -} - -div.popover.hover-popover .markdown-embed-content .markdown-preview-section { - padding: 1.5rem; -} - -.popover.hover-popover .markdown-embed { - height: 25rem; -} - -div.popover.hover-popover .markdown-preview-view h1 { - font-size: 1.375rem; -} - -div.popover.hover-popover .markdown-preview-view h2 { - font-size: 1.25rem; -} - -div.popover.hover-popover .markdown-preview-view h3 { - font-size: 1.125rem; -} - -div.popover.hover-popover .markdown-preview-view h4 { - font-size: 1rem; -} - -div.popover.hover-popover .markdown-preview-view h5, -div.popover.hover-popover .markdown-preview-view h6 { - font-size: 0.875rem; -} - -/*---------------------------------------------------------------- -SUGGESTIONS -----------------------------------------------------------------*/ - -.suggestion-item, -.suggestion-empty { - font-size: 15px; -} - -.suggestion .suggestion-item.is-selected { - background-color: var(--background-modifier-form-field-highlighted); - color: var(--text-on-accent); -} - -.suggestion-highlight { - color: var(--interactive-accent) !important; -} - -/*---------------------------------------------------------------- -SCROLLBARS -----------------------------------------------------------------*/ - -/*---------------------------------------------------------------- -theme-default thin scrollbars */ - -::-webkit-scrollbar { - width: 8px; - height: 8px; -} - -::-webkit-scrollbar-track { - border-color: var(--scrollbar-thin-track); - background-color: var(--background-secondary); - border: 2px solid var(--scrollbar-thin-track); -} - -::-webkit-scrollbar-thumb { - background-clip: padding-box; - border: 2px solid transparent; - border-radius: 4px; - background-color: var(--scrollbar-thin-thumb); - min-height: 40px; -} - -::-webkit-scrollbar-corner { - background-color: transparent; -} - -/* Clean up secondary scrollbar*/ -.CodeMirror-scroll::-webkit-scrollbar { - display: none !important; -} - -/*---------------------------------------------------------------- -scrollbars in editor & preview */ - -.mod-root { - scrollbar-width: auto; - scrollbar-color: var(--scrollbar-auto-scrollbar-color-thumb) var(--scrollbar-auto-scrollbar-color-track); -} - -.mod-root ::-webkit-scrollbar { - width: 16px !important; - height: 16px !important; -} - -.mod-root ::-webkit-scrollbar-track { - background-color: var(--scrollbar-auto-track); - border: 4px solid var(--background-primary); -} - -.mod-root ::-webkit-scrollbar-thumb, -.mod-root ::-webkit-scrollbar-track { - border: 4px solid transparent; - background-clip: padding-box; - border-radius: 8px; -} - -.mod-root ::-webkit-scrollbar-thumb { - background-color: var(--scrollbar-auto-thumb); - min-height: 40px; -} - -.mod-root ::-webkit-scrollbar-corner { - background-color: transparent; -} - -/*---------------------------------------------------------------- -graph controls scrollbars */ - -.mod-root .graph-controls::-webkit-scrollbar { - width: 8px !important; - height: 8px !important; -} - -.mod-root .graph-controls::-webkit-scrollbar-track { - border-color: var(--background-secondary-alt) !important; - background-color: var(--background-primary) !important; - border: 0 solid var(--scrollbar-thin-track) !important; - border-radius: 0 !important; -} - -.mod-root .graph-controls::-webkit-scrollbar-thumb { - background-clip: padding-box !important; - border: 2px solid transparent !important; - border-radius: 0 !important; - background-color: var(--scrollbar-thin-thumb); - min-height: 40px !important; -} - -.mod-root .graph-controls::-webkit-scrollbar-corner { - background-color: transparent !important; -} - -/*---------------------------------------------------------------- -codeblocks - scrollable content without horizontal scrollbar */ - -.markdown-preview-section pre::-webkit-scrollbar-track { - border: 0; - border-radius: 0; - background-color: var(--background-primary); -} - -.markdown-preview-section pre::-webkit-scrollbar-thumb { - background-color: var(--background-primary); /* --scrollbar-thin-thumb to reveal */ - border: 6px solid transparent; -} - -/*---------------------------------------------------------------- -tables - scrollable content without horizontal scrollbar */ - -.CodeMirror-hscrollbar::-webkit-scrollbar-track { - border: 0; - border-radius: 0; - background-color: var(--background-primary); -} - -.CodeMirror-hscrollbar::-webkit-scrollbar-thumb { - background-color: var(--background-primary); /* --scrollbar-thin-thumb to reveal */ - border: 6px solid transparent; -} - -.markdown-preview-view.is-readable-line-width .markdown-preview-section { - overflow-x: auto; -} - -.markdown-preview-view.is-readable-line-width .markdown-preview-section::-webkit-scrollbar-track { - border: 0; - border-radius: 0; - background-color: var(--background-primary); -} - -.markdown-preview-view.is-readable-line-width .markdown-preview-section::-webkit-scrollbar-thumb { - background-color: var(--background-primary); /* --scrollbar-thin-thumb to reveal */ - border: 6px solid transparent; -} - -/*---------------------------------------------------------------- -WORKSPACE -----------------------------------------------------------------*/ - -.app-container { - border-top: 1px solid var(--background-tertiary) !important; -} - -.view-content { - height: calc(100% - 32px); -} - -.titlebar-button-container { - top: 0; -} - -.nav-action-button.is-active { - background-color: var(--interactive-accent-alt); - color: var(--text-on-accent); -} - -/* straight corners */ -.workspace-split.mod-left-split .workspace-tabs .workspace-leaf, -.workspace-split.mod-right-split .workspace-tabs .workspace-leaf, -.workspace-leaf-content { - border-top-left-radius: 0 !important; - border-top-right-radius: 0 !important; -} - -/*---------------------------------------------------------------- -Collapsed Ribbons */ - -.workspace-ribbon.is-collapsed { - background-color: var(--background-secondary-alt) !important; -} - -.workspace-ribbon.mod-right.is-collapsed { - background-color: var(--background-secondary-alt) !important; -} - -.workspace-ribbon.mod-left.is-collapsed { - background-color: var(--background-secondary-alt) !important; -} - -/*---------------------------------------------------------------- -Tabs */ - -.workspace-tabs { - background-color: var(--background-secondary); - overflow: hidden; - padding: 0 0 1rem 0; - position: relative; -} - -.workspace-tab-header { - color: var(--text-muted) !important; - text-decoration: none !important; -} - -.workspace-tab-header:hover { - color: var(--text-normal) !important; -} - -.workspace-tags, -.tag-container { - padding: 0; -} - -/*---------------------------------------------------------------- -Resize Handlers */ - -body.is-translucent { - background-color: var(--background-primary); -} - -.workspace-leaf-resize-handle, -.is-translucent .workspace-leaf-resize-handle { - background-color: var(--background-secondary); /*--background-secondary-alt*/ - margin: 0; -} - -.workspace-leaf-resize-handle:hover, -.is-translucent .workspace-leaf-resize-handle:hover { - background-color: var(--interactive-accent-light); -} - -/*---------------------------------------------------------------- -Split Mode */ - -.workspace-split.mod-vertical > * > .workspace-leaf-resize-handle, -.workspace-split.mod-left-split > .workspace-leaf-resize-handle, -.workspace-split.mod-right-split > .workspace-leaf-resize-handle { - width: 2px !important; -} - -.workspace-split.mod-horizontal > * > .workspace-leaf-resize-handle { - height: 2px; -} - -.workspace-split.mod-root > .workspace-leaf:first-of-type .workspace-leaf-content { - padding-right: 0; -} - -.workspace-split.mod-vertical > .workspace-leaf { - padding-right: 0; -} - -.workspace-split.mod-root { - background-color: transparent !important; -} - -/* no animation for panels - feels more snappier */ -.workspace-split.mod-left-split, -.workspace-split.mod-right-split { - transition: none; -} - -.workspace-split.mod-root > .workspace-leaf:first-of-type .workspace-leaf-content .view-content { - padding-right: 0; -} - -/*---------------------------------------------------------------- -Side Dock */ - -.side-dock-ribbon-action { - color: var(--text-muted) !important; -} - -.side-dock-ribbon-action:hover { - color: var(--text-normal) !important; -} - -.side-dock-ribbon-tab.is-active { - color: var(--interactive-accent) !important; -} - -.side-dock-ribbon-tab.is-active .side-dock-ribbon-tab-inner:hover { - color: #6272a4 !important; - background-color: var(--background-secondary); -} - -.side-dock-panels-container { - font-size: 13px !important; - background-color: var(--background-secondary-alt) !important; - color: var(--background-secondary-alt); -} - -/* side dock titles at top */ -.side-dock-title { - font-size: 20px !important; - font-weight: 800 !important; -} - -.side-dock-collapsible-section-header { - font-size: 14px; -} - -/* hover actions on side dock navigation */ -.side-dock-ribbon-tab:hover, -.side-dock-ribbon-tab-inner:hover, -.side-dock-ribbon-action:hover, -.side-dock-ribbon-action.is-active:hover, -.nav-action-button:hover, -.side-dock-collapse-btn:hover { - color: var(--text-normal); -} - -/*---------------------------------------------------------------- -Navigation & File Explorer */ - -.nav-action-button { - margin-bottom: 5px; -} - -.nav-action-button svg { - width: 15px; -} - -.nav-header { - padding: 8px 20px 4px 20px; -} - -.nav-file-title, -.nav-folder-title { - cursor: var(--cursor); - align-items: baseline; - width: 100%; - vertical-align: middle; - line-height: 1.25; - border: 1px solid var(--background-secondary); -} - -.nav-file-title { - padding: 8px 10px 6px 10px; - margin-left: 10px; - margin-right: 10px; - font-family: var(--font-editor); - font-variant-numeric: tabular-nums !important; - font-size: var(--font-size-file-explorer); - border-radius: 4px; - color: var(--text-muted) !important; - background-color: var(--background-secondary); - display: inline-flex; - -webkit-font-feature-settings: "tnum" !important; - -moz-font-feature-settings: "tnum" !important; - font-feature-settings: "tnum" !important; - -webkit-font-variant-numeric: tabular-nums !important; - -moz-font-variant-numeric: tabular-nums !important; -} - -.nav-file-title:hover, -.nav-folder-title:hover { - color: var(--text-normal) !important; -} - -.nav-folder-title { - font-size: calc(var(--font-size-file-explorer) + 0.125rem); - color: var(--interactive-active) !important; - background-color: var(--background-secondary); - padding: 2px 10px 2px 22px; -} - -/*---------------------------------------------------------------- -Condense line spacing on file explorer title list. -Avoid character-level word breaks */ - -.nav-file-title-content, -.search-result-file-title { - padding-top: 0 !important; - padding-bottom: 0 !important; - line-height: normal !important; - word-break: keep-all; -} - -.nav-file-title-content, -.nav-folder-title-content { - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - display: block; -} - -.nav-folder-title-content { - padding: 1px 4px; -} - -.nav-file-title-content { - width: 100%; -} - -.nav-files-container { - overflow-x: hidden !important; - padding-bottom: 25px; -} - -/* smaller & bold vault title */ -.nav-folder.mod-root > .nav-folder-title { - padding-left: 6px; - font-size: 14px; - font-weight: 600; - top: 0; - text-transform: uppercase; - letter-spacing: 1px; - cursor: default; - color: var(--text-accent) !important; -} - -.nav-file { - margin-right: 10px; -} - -.nav-folder-children .nav-folder-children > .nav-file > .nav-file-title { - padding: 6px 10px 6px 10px; - margin-left: 0 !important; - margin-right: 10px; -} - -.nav-folder-children .nav-folder-children > .nav-file > .nav-file-title > .nav-file-title-content { - padding: 2px 0; -} - -/*---------------------------------------------------------------- -Files & folders: active & hover */ - -.nav-file.is-active .nav-file-tag { - color: var(--text-normal); -} - -.nav-file-title.is-active::before { - content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='8' width='8'%3E%3Ccircle cx='4' cy='4' r='4' stroke='white' stroke-width='0' fill='white'/%3E%3C/svg%3E"); - position: absolute; - left: -4px; -} - -.nav-folder-children .nav-folder-children > .nav-file > .nav-file-title.is-active::before { - content: none; -} - -.nav-file-title.is-active, -.nav-folder-title.is-active, -body:not(.is-grabbing) .nav-file-title:hover, -body:not(.is-grabbing) .nav-folder-title:hover { - border-radius: 4px; -} - -body:not(.is-grabbing) .nav-folder-title:hover { - color: var(--interactive-active) !important; -} - -.nav-folder.mod-root > .nav-folder-title:hover { - color: var(--text-accent) !important; -} - -.nav-file-title.is-active, -.nav-folder-title.is-active { - background-color: var(--background-primary); -} - -body:not(.is-grabbing) .nav-file-title:hover, -body:not(.is-grabbing) .nav-folder-title:hover { - background-color: var(--background-modifier-hover); -} - -body:not(.is-grabbing) .nav-file-title.is-active, -body:not(.is-grabbing) .nav-file-title.is-active:hover { - background-color: var(--background-primary); - color: var(--text-normal) !important; -} - -.nav-folder-collapse-indicator { - background-color: transparent !important; -} - -.collapse-icon svg { - height: 12px; -} - -.nav-file-tag { - background-color: var(--background-secondary-alt); - top: -1px; - margin-left: 0; -} - -.nav-file-tag + .nav-file-title-content { - margin-left: 4px; -} - -/*---------------------------------------------------------------- -Search */ - -.search-result { - margin-bottom: 0; -} - -.search-result-file-title { - color: var(--text-a) !important; - background-color: var(--background-secondary); - font-weight: 400; -} - -.search-result-file-title:hover { - background-color: var(--background-secondary); -} - -.search-result-file-matches { - font-size: 13px; - line-height: 16px; - margin-right: 5px; - border-bottom: 0; -} - -.search-result-file-match::before { - display: none; -} - -.search-result-file-match:not(:first-child) { - margin-top: 0; -} - -.search-result-file-match { - line-height: normal !important; - word-break: keep-all; - left: 0; - width: 100%; - padding-top: 4px !important; - padding-bottom: 4px !important; -} - -.search-result-file-match:hover { - background-color: var(--background-tertiary); -} - -.search-result-file-matched-text { - background-color: var(--text-selection); -} - -.search-result-collapse-indicator { - top: -5px !important; -} - -.search-result-file-match-replace-button { - color: var(--text-on-accent); - top: 3px; - right: 8px; - opacity: 0.8; - font-size: .625rem; - text-transform: uppercase; - background-color: var(--interactive-accent) !important; - height: .9375rem; - padding: 0 .275rem; - margin-top: .075em; - border-radius: .1875rem; - letter-spacing: 1px; -} - -.tree-item-self .collapse-icon { - margin-top: -1px; -} - -.tree-item-flair { - background-color: unset; -} - -.tree-item-self .tree-item-flair { - font-family: var(--font-editor); - font-size: 0.6875rem; -} - -.tree-item-self:hover .tree-item-flair { - background-color: unset; - color: var(--text-a); -} - -.backlink-pane .tree-item-inner { - font-size: 0.875rem; -} - -.backlink-pane > .tree-item-self:hover .tree-item-flair { - color: var(--text-normal); -} - -.tag-container .tree-item-self:hover .tree-item-flair { - color: var(--text-normal); -} - -.tree-item-children { - margin-left: 15px; -} - -/* search count boxes */ -.search-result-count { - font-family: var(--font-monospace); - letter-spacing: 0; -} - -.search-result-file-title .pane-list-item-ending-flair { - position: absolute; - top: 1px; - font-size: 12px; - background-color: var(--background-secondary-alt); - line-height: 12px; - border-radius: 3px; -} - -/* clean up side bar empty state (e.g. unlinked mentions) */ -.search-empty-state { - width: auto; - padding-left: 15px; - padding-right: 15px; - line-height: normal; - font-size: 0.875rem; - color: var(--discord-red-hover); -} - -/*---------------------------------------------------------------- -Header */ - -.workspace-split.mod-root > .workspace-leaf:first-of-type:last-of-type .view-header { - border-bottom: 0; - background-color: var(--background-primary); -} - -.view-header { - height: 30px; - border-top: 0; - border-bottom: 0; - background-color: var(--background-primary); -} - -.view-header::before { - content: ""; - position: absolute; - display: block; - left: 0; - right: 0; - top: 28px; - height: 1px; - -webkit-box-shadow: var(--elevation-low) !important; - box-shadow: var(--elevation-low) !important; - z-index: 1; - pointer-events: none; -} - -.view-header-title { - font-size: 13px; - line-height: 32px; - font-family: var(--font-editor) !important; -} - -.view-header-title-container { - position: relative; -} - -.workspace-leaf.mod-active .view-header { - background-color: var(--background-primary); - border-bottom: 2px solid var(--discord-yellow-light); -} - -/* fix the long-title-obscuring shadows */ -.workspace-leaf.mod-active .view-header-title-container::after, -.view-header-title-container::after { - content: ' '; - position: absolute; - top: 0; - right: 0; - height: 28px; - background: linear-gradient(to right, transparent, var(--background-primary)) !important; /* rgb(51,53,59) */ -} - -.view-header-title-container::after { - background: linear-gradient(to right, transparent, var(--background-primary)) !important; -} - -/* Change color of note title active pane */ -.workspace-leaf.mod-active .view-header-title { - color: var(--text-normal); -} - -.workspace-leaf-content .view-content, -.workspace-leaf-content[data-type='tag'] { - padding: 10px; -} - -.item-list { - overflow-x: hidden; -} - -.view-header-icon { - top: 0 !important; -} - -/*---------------------------------------------------------------- -View Actions */ - -.view-action { - top: 0; - color: var(--text-muted) !important; - text-decoration: none !important; -} - -.view-action:hover, -.view-action.is-active { - color: var(--text-normal) !important; -} - -.view-actions { - padding: 5px 10px; - margin-left: auto; -} - -.view-action.mod-close-leaf > svg { - margin-top: 1px; -} - -.view-action.mod-pin-leaf > svg { - height: 15px; -} - -/* icons at top of panes */ -.file-view-actions a { - color: var(--text-muted) !important; -} - -.file-view-actions a:hover { - color: var(--text-muted) !important; -} - -/*---------------------------------------------------------------- -Top Window Frame */ - -.titlebar { - background: var(--background-primary); -} - -.titlebar-text { - display: none; - color: var(--text-faint); - letter-spacing: inherit; -} - -.titlebar-button { - opacity: 1; - cursor: var(--cursor); -} - -.titlebar-button svg path { - fill: var(--text-muted) !important; - stroke: var(--text-muted) !important; -} - -.titlebar-button:hover svg path { - fill: var(--text-normal) !important; - stroke: var(--text-normal) !important; -} - -/*---------------------------------------------------------------- -Status Bar */ - -.status-bar { - border-top: 0; - background-color: var(--background-secondary-alt) !important; - color: var(--text-faint); - padding: 0 4em 0 0; -} - -.status-bar-item { - padding: 0 5px; - font-size: 13px; -} - -.status-bar-item-segment { - margin-right: 1rem; -} - -/*---------------------------------------------------------------- -LISTS -----------------------------------------------------------------*/ - -ul { - padding-inline-start: 2em; - list-style: none; - list-style-type: none; -} - -ul ul, -ol ul, -ol ol ul, -ol ul ul, -ul ol ul, -ul ul ul { - list-style: none; - list-style-type: none; -} - -ul > li:not(.task-list-item)::before { - content: "\2022"; - color: var(--text-faint); - font-weight: 400; - display: inline-block; - width: 1em; - margin-left: -1em; -} - -ul li p, -ol li p { - display: inline; -} - -ol { - padding-inline-start: 1rem; - margin-left: 1rem; - list-style: none; - counter-reset: counter; - position: relative; -} - -ol > li { - counter-increment: counter; - margin: 0.3rem 0 0.3rem 0; -} - -ol > li::before { - content: counter(counter) ". "; - color: var(--text-faint); - position: absolute; - text-align: right; - left: -1.25rem; - width: 2rem; -} - -.markdown-preview-section > ul.contains-task-list { - margin-block-end: 2rem; -} - -/*---------------------------------------------------------------- -TASK LISTS -----------------------------------------------------------------*/ - -input[type=checkbox] { - -webkit-appearance: none; - appearance: none; - padding: 0; - cursor: pointer; - background-color: var(--background-primary); - border: 1px solid var(--text-faint); - border-radius: 3px; -} - -input[type=checkbox]:focus, -input[type=checkbox]:hover { - outline: 0; - border-color: var(--text-faint); -} - -input[type=checkbox]:checked { - background-color: var(--discord-blue) !important; - border: 1px solid var(--discord-blue); - background-position: center; - background-size: 70%; - background-repeat: no-repeat; - background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' aria-hidden='true' focusable='false' width='1em' height='1em' style='-ms-transform: rotate(360deg); -webkit-transform: rotate(360deg); transform: rotate(360deg);' preserveAspectRatio='xMidYMid meet' viewBox='0 0 20 20'%3E%3Cpath d='M0 11l2-2l5 5L18 3l2 2L7 18z' fill='%23fff'/%3E%3C/svg%3E"); -} - -/*---------------------------------------------------------------- -Preview Mode */ - -.markdown-preview-view .task-list-item-checkbox { - top: 8px; - width: calc(var(--font-size-notes) + 0.375rem); - height: calc(var(--font-size-notes) + 0.375rem); - margin-left: -0.2rem; - margin-right: 0.5rem; - filter: none; -} - -ul.contains-task-list li > div.list-collapse-indicator { - margin-top: 0.5rem; - padding: 0; -} - -ul.contains-task-list li { - margin: 0; -} - -/*---------------------------------------------------------------- -Smart Visual Task Lists ALSO in Editor Mode ! (HACKISH) - -This works properly only with "Smart Indent List" setting enabled -as it produces checkboxes automatically when entering next line. -Best combined with "Toggle checklist status" command shortcut. - -FOR DEFAULT BEHAVIOUR PLEASE REMOVE THIS WHOLE SECTION TILL END */ - -.discordian-pretty-tasks-editor .cm-s-obsidian span.cm-formatting-list { - margin: 0; -} - -.discordian-pretty-tasks-editor .cm-s-obsidian pre.HyperMD-list-line { - padding-top: 0; -} - -.discordian-pretty-tasks-editor .cm-s-obsidian span.cm-formatting-task { - white-space: pre; - text-align: center; - color: transparent; - font-size: calc(0.7 * calc(var(--font-size-notes) + 0.125rem)); - line-height: 2rem; - background-color: var(--background-primary); - font-family: var(--default-font); - margin-left: -0.8rem; - padding-bottom: 0.1rem; -} - -.discordian-pretty-tasks-editor .cm-formatting-task { - border: 1px solid var(--text-faint); - border-radius: 3px; - padding: 0; -} - -/* HACK: makes unchecked task same size as checked one */ -.discordian-pretty-tasks-editor .cm-s-obsidian span.cm-formatting-task::after { - content: '\0020\0020\0020\0020'; - color: transparent; -} - -.discordian-pretty-tasks-editor input[type=checkbox]:checked, -.discordian-pretty-tasks-editor .cm-formatting-task.cm-property { - background-color: var(--discord-blue) !important; - border: 1px solid var(--discord-blue); -} - -.discordian-pretty-tasks-editor .cm-formatting-task.cm-property::after { - content: '\0020\0020\0020' !important; - color: transparent !important; -} - -.discordian-pretty-tasks-editor .cm-formatting-task + span { - padding-left: 0.3rem; - vertical-align: sub; -} - -.discordian-pretty-tasks-editor .cm-formatting-task ~ span { - vertical-align: sub !important; -} - -/*---------------------------------------------------------------- -Adjust nested level task lists when collapsed -Order matters here - from top level supported (7) down to first */ - -.discordian-pretty-tasks-editor pre.HyperMD-list-line-7 { - padding-left: calc(12.25 * calc(var(--font-size-notes) + 0.125rem)) !important; -} - -.discordian-pretty-tasks-editor pre.HyperMD-list-line-6 { - padding-left: calc(10.5 * calc(var(--font-size-notes) + 0.125rem)) !important; -} - -.discordian-pretty-tasks-editor pre.HyperMD-list-line-5 { - padding-left: calc(8.75 * calc(var(--font-size-notes) + 0.125rem)) !important; -} - -.discordian-pretty-tasks-editor pre.HyperMD-list-line-4 { - padding-left: calc(7 * calc(var(--font-size-notes) + 0.125rem)) !important; -} - -.discordian-pretty-tasks-editor pre.HyperMD-list-line-3 { - padding-left: calc(5.25 * calc(var(--font-size-notes) + 0.125rem)) !important; -} - -.discordian-pretty-tasks-editor pre.HyperMD-list-line-2:not(.HyperMD-list-line-1) { - padding-left: calc(3.5 * calc(var(--font-size-notes) + 0.125rem)) !important; -} - -/*---------------------------------------------------------------- -LINKS & BRACKETS -----------------------------------------------------------------*/ - -a, -.internal-link, -.cm-hmd-internal-link, -.cm-link, -.cm-url, -.cm-formatting-link, -.cm-s-obsidian span.cm-link, -.cm-s-obsidian span.cm-hmd-internal-link { - color: var(--text-a); - text-decoration: none; -} - -a:hover, -.internal-link:hover, -.cm-hmd-internal-link:hover, -.cm-link:hover, -.cm-url:hover, -.cm-formatting-link:hover { - color: var(--text-a-hover); - text-decoration: none; -} - -.cm-s-obsidian span.cm-formatting-link { - color: var(--text-a); - padding: 0 1px; -} - -.cm-s-obsidian span.cm-link:hover, -.cm-s-obsidian span.cm-hmd-internal-link:hover { - color: var(--text-a-hover); - text-decoration: none; -} - -/* regular urls in editor */ -.cm-s-obsidian span.cm-url { - /*text-decoration: none;*/ -} - -/* preview */ -.markdown-preview-view .internal-link { - text-decoration: none; -} - -.markdown-preview-view .internal-link.is-unresolved { - opacity: 1; -} - -.external-link { - background-image: unset; - padding-right: 0; -} - -.markdown-preview-view .external-link { - color: var(--text-link); -} - -a:not(.internal-link) { - color: var(--text-link); -} - -a:not(.internal-link):hover { - color: var(--text-link); - text-decoration: underline; -} - -a:not(.internal-link).footnote-link { - color: var(--text-a); - text-decoration: none; -} - -/*---------------------------------------------------------------- -TAGS -----------------------------------------------------------------*/ - -.cm-s-obsidian .cm-formatting-hashtag { - font-family: var(--font-editor); -} - -a.tag, -span:not(.cm-header).cm-hashtag { - font-weight: 400; - unicode-bidi: -moz-plaintext; - unicode-bidi: plaintext; - color: var(--discord-blue); - background: rgba(114, 137, 218, 0.1); - position: relative; - -webkit-transition: background-color .15s ease-out, color .15s ease-out; - transition: background-color .15s ease-out, color .15s ease-out; -} - -span:not(.cm-header).cm-hashtag-begin { - border-top-left-radius: 3px; - border-bottom-left-radius: 3px; - padding-left: 4px; - padding-top: 3px; - padding-bottom: 1px; -} - -span:not(.cm-header).cm-hashtag-end { - border-top-right-radius: 3px; - border-bottom-right-radius: 3px; - padding: 3px 3px 1px 0; - margin-right: 2px; -} - -a.tag { - padding: 3px 4px 1px 4px !important; - border-radius: 3px; - margin-right: 2px; -} - -span:not(.cm-header).cm-hashtag { - text-decoration: none !important; -} - -a.tag:hover { - text-decoration: none !important; - color: var(--discord-blue); - background-color: rgba(114, 137, 218, 0.2); -} - -h1 a.tag, -h2 a.tag, -h3 a.tag, -h4 a.tag, -h5 a.tag, -h6 a.tag { - background: unset; - font-style: italic; - color: unset; - filter: invert(30%); -} - -h1 a.tag:hover, -h2 a.tag:hover, -h3 a.tag:hover, -h4 a.tag:hover, -h5 a.tag:hover, -h6 a.tag:hover { - background: unset; - color: unset; -} - -span.cm-hashtag { - text-decoration: none !important; -} - -/*---------------------------------------------------------------- -FOOTNOTES -----------------------------------------------------------------*/ - -sup { - letter-spacing: 0; - padding-left: 0.2rem; -} - -.cm-s-obsidian span.cm-footref, -.cm-s-obsidian span.cm-blockid { - vertical-align: super; - margin-top: 0; - font-size: small; -} - -.cm-s-obsidian pre.HyperMD-footnote { - padding-left: 3rem; - padding-bottom: 0.5rem; - font-size: small; -} - -.footnotes { - font-size: small; -} - -.footnote-link { - color: var(--text-a); -} - -.footnote-link:hover { - text-decoration: none; -} - -.footnote-backref { - color: var(--text-muted); - margin-left: 0.2rem; -} - -/*---------------------------------------------------------------- -TOGGLE SWITCHES -----------------------------------------------------------------*/ - -.checkbox-container { - background-color: var(--discord-grey-toggle); - border: none; - box-shadow: none; - width: 40px; - height: 24px; - -webkit-transition: all .17s; - transition: all .17s ease; -} - -.checkbox-container.is-enabled { - background-color: var(--interactive-accent); -} - -.checkbox-container::before, -.checkbox-container::after { - color: var(--discord-grey-toggle); -} - -.checkbox-container::before { - content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 44 20' preserveAspectRatio='xMinYMid meet'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath fill='rgba(114, 118, 125, 1)' d='M5.13231 6.72963L6.7233 5.13864L14.855 13.2704L13.264 14.8614L5.13231 6.72963Z'%3E%3C/path%3E%3Cpath fill='rgba(114, 118, 125, 1)' d='M13.2704 5.13864L14.8614 6.72963L6.72963 14.8614L5.13864 13.2704L13.2704 5.13864Z'%3E%3C/path%3E%3C/svg%3E%3C/svg%3E"); - display: block; - position: absolute; - opacity: 1; - z-index: 1; - transform: translate3d(-7px, 3px, 0); -} - -.checkbox-container.is-enabled::before { - content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 44 20' preserveAspectRatio='xMinYMid meet'%3E%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath fill='rgba(67, 181, 129, 1)' d='M7.89561 14.8538L6.30462 13.2629L14.3099 5.25755L15.9009 6.84854L7.89561 14.8538Z'%3E%3C/path%3E%3Cpath fill='rgba(67, 181, 129, 1)' d='M4.08643 11.0903L5.67742 9.49929L9.4485 13.2704L7.85751 14.8614L4.08643 11.0903Z'%3E%3C/path%3E%3C/svg%3E%3C/svg%3E"); - transform: translate3d(7px, 3px, 0); -} - -.checkbox-container.is-enabled::after { - transform: translate3d(15px, 0, 0); -} - -.checkbox-container::after { - box-shadow: none !important; - width: 18px; - height: 18px; - transform: translate3d(1px, 0, 0); -} - -/*---------------------------------------------------------------- -TABLES -----------------------------------------------------------------*/ - -th { - font-weight: 800; -} - -thead { - border-top: 2px solid var(--discord-yellow-alt); -} - -table { - border-collapse: collapse; -} - -/*---------------------------------------------------------------- -Preview Mode */ - -.markdown-preview-view table { - margin: 2rem 0; -} - -.markdown-preview-view td, -.markdown-preview-view th { - border: none; -} - -.markdown-preview-view th { - font-family: var(--default-font); - font-weight: bold; -} - -.markdown-preview-view thead > tr { - border-top: 0 !important; -} - -.markdown-preview-view tr { - border-top: 1px solid var(--background-accent); -} - -.markdown-preview-view td, -.markdown-preview-view tr > th { - border-left: 1px solid var(--background-accent); -} - -.markdown-preview-view tr > td:first-of-type, -tr > th:first-of-type { - border-left: 0; -} - -/*---------------------------------------------------------------- -Editor Mode */ - -.CodeMirror pre.HyperMD-table-row { - font-family: var(--font-monospace); - font-size: 100%; - letter-spacing: 0; -} - -.CodeMirror pre.HyperMD-table-row span.cm-formatting-link { - padding: 0; -} - -.cm-s-obsidian pre.HyperMD-table-row.HyperMD-table-row-0 { - margin-top: 0.15rem; -} - -/*---------------------------------------------------------------- -CODEBLOCKS & INLINE CODE -----------------------------------------------------------------*/ - -code, -.cm-inline-code { - padding: 2px 1px; -} - -/*---------------------------------------------------------------- -editor */ - -.cm-s-obsidian span.cm-inline-code:not(.cm-formatting):not(.cm-hmd-indented-code):not(.obsidian-search-match-highlight) { - color: var(--markup-code); - font-size: 100%; - background-color: var(--discord-yellow-bg); -} - -.cm-s-obsidian span.cm-inline-code { - color: var(--markup-code); - font-size: 100%; - background-color: var(--discord-yellow-bg); - border-radius: 3px; - padding-top: 4px; - padding-bottom: 1px; -} - -.cm-s-obsidian span.cm-inline-code.cm-inline-code { - margin-left: 0; -} - -span.cm-inline-code.cm-hmd-indented-code, -.cm-s-obsidian span.cm-inline-code.cm-hmd-indented-code { - background-color: unset !important; - color: var(--text-normal); - padding: 0.2rem 0; -} - -.cm-s-obsidian span.cm-formatting-code.cm-inline-code { - border-right-width: 0; - border-top-right-radius: 0; - border-bottom-right-radius: 0; -} - -.cm-s-obsidian span.cm-formatting-code.cm-inline-code + span.cm-inline-code { - border-right: none; - border-left: none; - border-radius: 0; -} - -.cm-s-obsidian span.cm-formatting-code.cm-inline-code + span.cm-inline-code + span.cm-formatting-code.cm-inline-code { - border-left-width: 0; - border-right-width: 1px; - border-radius: 0 3px 3px 0; -} - -.cm-s-obsidian pre.HyperMD-codeblock { - padding: 0 0.5rem; - color: var(--interactive-normal); - font-family: var(--font-monospace); - font-size: 100%; - white-space: pre-wrap; - background-clip: border-box; -} - -.cm-s-obsidian div.HyperMD-codeblock-bg { - background-color: var(--background-code-preview); -} - -.cm-s-obsidian pre.HyperMD-codeblock.HyperMD-codeblock-begin { - border-top-left-radius: 4px; - border-top-right-radius: 4px; - padding-top: 0.5rem; -} - -.cm-s-obsidian pre.HyperMD-codeblock.HyperMD-codeblock-end { - border-bottom-left-radius: 4px; - border-bottom-right-radius: 4px; -} - -/*---------------------------------------------------------------- -preview */ - -.theme-dark :not(pre) > code[class*="language-"], -.theme-dark pre[class*="language-"] { - background: var(--background-code-preview); - text-shadow: unset !important; - padding: 6px 10px; - margin: 1.5rem 0; -} - -.markdown-preview-view pre { - background-color: var(--background-code-preview); - margin: 2rem 0; -} - -.markdown-preview-view code { - text-shadow: unset !important; - color: var(--markup-code) !important; - background-color: var(--discord-yellow-bg); - font-size: 100%; - padding-top: 4px; - padding-bottom: 1px; -} - -.markdown-preview-view pre code { - color: var(--text-normal) !important; - background-color: unset !important; - font-size: 100%; -} - -pre.frontmatter[class*="language-"] { - background-color: transparent; - text-shadow: unset !important; - color: var(--text-normal) !important; - padding: 0; - margin: 0 0 1.5rem 0; - line-height: 20px; -} - -/*---------------------------------------------------------------- -frontmatter */ - -.markdown-preview-view pre code.language-yaml, -.markdown-preview-view pre code.language-yaml span.token { - color: var(--text-muted) !important; -} - -.frontmatter-container { - background-color: var(--background-code-preview); - border: 0; - margin: 0 0 1.5rem 0; -} - -.frontmatter-container .frontmatter-section { - margin: 0; -} - -.frontmatter-container .frontmatter-container-header { - border-bottom: 0; -} - -.frontmatter-container .frontmatter-collapse-indicator { - margin-top: -1px; -} - -.frontmatter-container .frontmatter-section-label { - text-transform: lowercase; - display: inline-flex; - font-size: 0.8125rem; -} - -.frontmatter-container .frontmatter-section-label::after { - content: ':'; - display: inline-block; -} - -.frontmatter-container .tag, -.frontmatter-container .frontmatter-alias { - background-color: var(--background-code-preview); - border-radius: 3px !important; - margin: 0 4px; -} - -.frontmatter-container a.tag { - padding: 0 4px !important; -} - -.frontmatter-container .tag:hover { - border: 1px solid transparent; -} - -.frontmatter-container .frontmatter-alias { - padding: 1px 4px !important; -} - -.cm-s-obsidian .cm-hmd-frontmatter { - font-size: 0.8125rem; -} - -/*---------------------------------------------------------------- -MODALS -----------------------------------------------------------------*/ - -/*---------------------------------------------------------------- -Settings Modal */ - -.modal.mod-settings { - width: 100vw; - max-width: 100%; -} - -.modal:not(.mod-settings) { - -webkit-box-shadow: var(--elevation-stroke), var(--elevation-high); - box-shadow: var(--elevation-stroke), var(--elevation-high); - padding: 0; - border: 0 !important; -} - -.modal:not(.mod-settings) .modal-content { - padding: 30px 50px; - margin-top: 0; -} - -.modal:not(.mod-settings) .modal-title { - font-size: 22px; - line-height: 36px; - padding: 1rem 2rem; - background-color: var(--background-secondary-alt); - border-top-left-radius: 4px; - border-top-right-radius: 4px; -} - -.modal.mod-settings, -.modal.mod-settings .vertical-tab-content-container, -.modal.mod-settings .vertical-tab-header { - height: 100vh; - max-height: 100%; -} - -.modal.mod-settings .modal-close-button { - display: flex; - -webkit-box-pack: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-box-align: center; - -ms-flex-align: center; - align-items: center; - -webkit-box-flex: 0; - -ms-flex: 0 0 36px; - flex: 0 0 36px; - border-width: 2px; - border-style: solid; - border-radius: 50%; - width: 36px; - height: 36px; - padding-top: 2px; - top: 3.75rem; - right: 11vw; - content: none !important; -} - -.modal.mod-settings .modal-close-button:hover { - background-color: rgba(114, 118, 125, .3); -} - -.modal.mod-settings .modal-close-button::before { - content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' width='18' height='18' viewBox='0 0 24 24'%3E%3Cpath fill='%23dcddde' d='M18.4 4L12 10.4L5.6 4L4 5.6L10.4 12L4 18.4L5.6 20L12 13.6L18.4 20L20 18.4L13.6 12L20 5.6L18.4 4Z'%3E%3C/path%3E%3C/svg%3E"); -} - -.modal.mod-settings .modal-close-button::after { - position: absolute; - content: 'ESC'; - font-weight: 600; - font-size: 13px; - text-align: right; - width: 36px; - height: 36px; - margin-top: 4.75rem; - margin-left: -1rem; - cursor: default; - pointer-events: none; -} - -.horizontal-tab-content, -.vertical-tab-content { - background-color: var(--background-primary); - padding: 3.75rem 0 5rem 2.5rem; -} - -.vertical-tabs-container { - padding: 0; -} - -.modal.mod-settings .vertical-tab-header { - padding-top: 2.5rem; - - --scrollbar-thin-thumb: transparent; - - flex: 1 0 auto; - display: grid; - grid-template-rows: min-content; - -webkit-box-flex: 1; - -webkit-box-pack: end; - justify-content: flex-end; - -webkit-box-orient: horizontal; - -webkit-box-direction: normal; - -ms-flex-direction: row; - flex-direction: row; - -ms-flex-pack: end; - -webkit-box-align: start; - -ms-flex-align: start; - align-items: flex-start; -} - -.modal.mod-settings .vertical-tab-header:hover { - --scrollbar-thin-thumb: unset; -} - -.modal.mod-settings .setting-item { - margin-right: 17vw; -} - -.modal.mod-settings .vertical-tab-content > div:not(.setting-item):not(.plugin-list-plugins):not(.loader-cube):not(.hotkey-settings-container) { - margin-right: 17vw; -} - -.modal.mod-settings .setting-editor-extra-setting-button { - margin-right: 1rem; -} - -.modal.mod-settings .vertical-tab-content-container { - background-color: var(--background-primary); - padding: 0; - flex: 1 1 50rem; -} - -.vertical-tab-header { - background-color: var(--background-secondary); -} - -.horizontal-tab-nav-item.is-active, -.vertical-tab-nav-item.is-active { - color: var(--interactive-active); - background-color: var(--background-modifier-active); -} - -.horizontal-tab-nav-item:hover, -.vertical-tab-nav-item:hover { - color: var(--interactive-hover); - background-color: var(--background-modifier-hover); -} - -.horizontal-tab-nav-item, -.vertical-tab-nav-item { - background-color: var(--background-secondary); - letter-spacing: 0; - padding: 6px 6px 6px 24px; - margin: 0 10px; - color: var(--interactive-normal); - border-radius: 3px; -} - -.setting-item { - border-top: thin solid var(--background-modifier-accent); -} - -.setting-item-control button { - padding: 5px 16px; -} - -.setting-hotkey { - min-height: unset; - padding: 0 0 0 10px; -} - -.setting-delete-hotkey { - line-height: unset; - top: 0; - right: 0; - height: unset; - border-radius: 0; - margin-left: 5px; -} - -.setting-add-hotkey-button:hover, -.setting-restore-hotkey-button:hover { - background-color: unset; -} - -.hotkey-list-container { - padding-left: 2px; - padding-right: 0; -} - -.community-theme-filters-container, -.hotkey-search-container { - padding: 0 10px 30px 0; -} - -.modal.mod-settings button { - margin: 0; -} - -/*---------------------------------------------------------------- -Document Search */ - -.document-search-container { - background-color: var(--background-primary); - padding-top: 10px; - height: 50px; -} - -.document-search-button { - background-color: var(--discord-dark) !important; - color: var(--text-muted) !important; -} - -.document-search-button:hover { - background-color: var(--discord-dark-hover) !important; - color: var(--text-normal) !important; -} - -.document-search-close-button { - color: var(--discord-dark); -} - -.document-replace-input { - margin-right: 8px; -} - -.document-replace-buttons { - margin-right: 4px; -} - -.document-search-container.mod-replace-mode { - height: 90px; -} - -/*---------------------------------------------------------------- -Modal Confirmations */ - -.modal-button-container { - margin-top: 0; - margin-bottom: 1.5rem; -} - -/*---------------------------------------------------------------- -Prompts - Discord-like */ - -.prompt { - background-color: var(--background-secondary); - border-radius: 8px; - padding: 1.25rem 1.25rem 0.75rem 1.25rem; -} - -input.prompt-input::placeholder { - color: var(--text-normal); - font-weight: 400; -} - -input.prompt-input::-webkit-input-placeholder { - color: #ffffff4d; - font-weight: 400; -} - -input.prompt-input::-ms-input-placeholder { - color: var(--text-normal); - font-weight: 400; -} - -input.prompt-input { - position: relative; - z-index: 1; - -webkit-box-flex: 0; - -ms-flex: 0 0 auto; - flex: 0 0 auto; - display: block; - padding: 0 12px; - font-size: 21px; - border-radius: 5px; - border: none; - height: 70px; - line-height: 70px; - background-color: var(--text-muted) !important; - color: var(--text-on-accent); - -webkit-box-shadow: var(--elevation-high); - box-shadow: var(--elevation-high); -} - -input.prompt-input:focus-within { - color: var(--text-on-accent); -} - -.prompt-results { - margin-right: -12px; -} - -.prompt-results .suggestion-item { - color: var(--interactive-normal); - padding: 0 10px; - line-height: 2rem; - font-weight: 500; - border-radius: 3px; - width: calc(100% - 12px); -} - -.prompt-results .suggestion-item.is-selected, -.prompt-results .suggestion-item:hover { - background-color: var(--background-modifier-selected); -} - -.prompt-results .suggestion-hotkey { - border-color: transparent; - background-color: transparent; - border-radius: 0; - padding-right: 20px; -} - -.prompt-results .suggestion-item.is-selected .suggestion-hotkey, -.prompt-results .suggestion-item:hover .suggestion-hotkey { - margin-right: -12px; -} - -.suggestion-container .prompt-instructions { - padding: 0.625rem; -} - -.prompt-instructions { - padding: 0.625rem 0.625rem 0 0.625rem; - border-top: 1px solid var(--background-modifier-accent); - opacity: 1; - color: var(--text-on-accent); - font-size: 11px; - line-height: 16px; -} - -.prompt-instruction span { - opacity: 0.6; -} - -.prompt-instruction:first-of-type::before { - content: 'tips:'; - text-transform: uppercase; - color: var(--interactive-accent); - margin-right: 0.5rem; - font-weight: 600; -} - -.prompt-instruction-command { - font-size: 11px; -} - -/*---------------------------------------------------------------- -Community plugins panel */ - -.community-plugin-details { - font-size: 0.875rem; - line-height: 1.65; -} - -.community-plugin-search { - background-color: var(--background-secondary); - padding: 20px 0 0 0; -} - -.modal-content.community-plugin { - padding: 0 0 50px 0 !important; -} - -.community-plugin-readme { - overflow-x: hidden; - padding: 40px 30px 20px 30px; -} - -.community-plugin-readme img { - margin: unset !important; -} - -.community-plugin-search .setting-item-info { - display: none; -} - -.community-plugin-search .search-input-container { - width: 70%; -} - -.flair { - padding: 0 4px; -} - -/*---------------------------------------------------------------- -Community themes panel */ - -.community-theme-filters-container { - padding: 10px 30px 30px 0; - width: fit-content !important; -} - -.community-theme { - padding: 10px 20px 20px 0; -} - -.community-theme-search-container { - display: inline-block; - margin-right: 2rem; -} - -.community-theme-list { - margin-top: 1rem; - justify-content: flex-start; -} - -.community-theme-mode-toggle-label { - bottom: 6px; -} - -.community-theme-container button { - margin-right: 8px; -} - -.community-theme a { - vertical-align: middle; -} - -.modal.mod-community-theme { - max-width: 56rem; -} - -/*---------------------------------------------------------------- -BUTTONS -----------------------------------------------------------------*/ - -button { -} - -button.mod-cta { - background-color: var(--discord-blue); - color: #fff; - font-size: 0.875rem; - font-weight: 400; -} - -button.mod-cta:hover { - background-color: var(--discord-blue-hover); -} - -button:not(.mod-cta):not(.mod-warning), -.modal button:not(.mod-cta):not(.mod-warning) { - background-color: var(--discord-grey); - color: white; -} - -button:not(.mod-cta):not(.mod-warning):hover { - background-color: var(--discord-grey-hover); -} - -button.mod-cta a { - font-family: var(--default-font); -} - -button.mod-cta a:hover { - text-decoration: none; - color: inherit; -} - -.modal.mod-settings a > button { - margin-right: 8px; -} - -.modal-close-button::before { - content: none; -} - -.modal-close-button { - content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' width='18' height='18' viewBox='0 0 24 24'%3E%3Cpath fill='%238D9196' d='M18.4 4L12 10.4L5.6 4L4 5.6L10.4 12L4 18.4L5.6 20L12 13.6L18.4 20L20 18.4L13.6 12L20 5.6L18.4 4Z'%3E%3C/path%3E%3C/svg%3E"); -} - -.search-input-clear-button { - top: 6px; -} - -.search-input-clear-button::before { - content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' width='16' height='16' viewBox='0 0 24 24'%3E%3Cpath fill='%238D9196' d='M18.4 4L12 10.4L5.6 4L4 5.6L10.4 12L4 18.4L5.6 20L12 13.6L18.4 20L20 18.4L13.6 12L20 5.6L18.4 4Z'%3E%3C/path%3E%3C/svg%3E"); -} - -.clickable-icon[aria-label="Delete workspace"] { - margin-top: 4px; -} - -/*---------------------------------------------------------------- -GRAPH -----------------------------------------------------------------*/ - -.theme-dark .graph-controls { - background-color: var(--background-tertiary); - border: none; -} - -.theme-dark .graph-view.color-line { - color: var(--graph-line); - opacity: 0.7; -} - -.theme-dark .graph-view.color-line-highlight { - color: var(--graph-line-highlight); -} - -.theme-dark .graph-view.color-fill { - color: var(--graph-circle-fill); - opacity: 0.9; -} - -.theme-dark .graph-view.color-fill-highlight { - color: var(--graph-circle-fill-highlight); -} - -.theme-dark .graph-view.color-circle { - color: var(--graph-circle-outline); -} - -/*---------------------------------------------------------------- -Graph filters */ - -.theme-dark .graph-view.color-fill-tag { - color: var(--graph-fill-tag); -} - -.theme-dark .graph-view.color-fill-attachment { - color: var(--graph-fill-attachment); -} - -.theme-dark .graph-view.color-fill-unresolved { - color: var(--graph-circle-fill-unresolved); - opacity: 1; -} - -.theme-dark .graph-view.color-arrow { - color: var(--graph-arrow); -} - -/*---------------------------------------------------------------- -Graph controls */ - -.graph-control-search-button { - background-color: transparent !important; - opacity: 0.7; -} - -.graph-control-search-button:hover { - opacity: 1; -} - -.mod-root .graph-controls { - top: 20px; - left: 30px; -} - -.graph-controls .setting-item { - border: 0; -} - -.graph-control-section:not(:last-child) .tree-item-children { - border-bottom: thin solid var(--background-modifier-accent); -} - -.graph-control-section:not(:last-child) .tree-item-children > .setting-item:last-child { - padding-bottom: 20px; -} - -.graph-controls .setting-item.mod-search-setting .setting-item-control .search-input-container { - width: 100%; -} - -.graph-controls .clickable-icon[aria-label="Delete group"] > svg { - margin-top: -2px; - content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' aria-hidden='true' width='16' height='16' viewBox='0 0 24 24'%3E%3Cpath fill='%238D9196' d='M18.4 4L12 10.4L5.6 4L4 5.6L10.4 12L4 18.4L5.6 20L12 13.6L18.4 20L20 18.4L13.6 12L20 5.6L18.4 4Z'%3E%3C/path%3E%3C/svg%3E") !important; -} - -.graph-controls .graph-color-button-container { - margin: 15px 0 20px 0; - text-align: center; -} - -.graph-controls .graph-color-button-container > button { - padding: 1px 6px; - font-size: 0.75rem; -} - -/*---------------------------------------------------------------- -FOLDING (credits to @mgmeyers for svg icons) -----------------------------------------------------------------*/ - -.markdown-preview-view .collapse-indicator { - position: relative; - cursor: pointer; - margin: 0; - float: none; - padding-left: 0; - display: inline-block; - line-height: inherit; - font-size: unset; - width: 0; - height: 0.5em; -} - -.markdown-preview-view .collapse-indicator > svg { - display: none; -} - -.markdown-preview-view .collapse-indicator::before { - position: absolute; - left: -2.5rem; - top: calc(-0.5em - 3px); -} - -.markdown-preview-view .heading-collapse-indicator { - margin-left: -2px; - padding: 0; -} - -.markdown-preview-view .heading-collapse-indicator::before { - left: -2rem; -} - -.markdown-preview-view .frontmatter-collapse-indicator::before { - left: -2.9rem; -} - -.markdown-preview-view .collapse-indicator::before, -.CodeMirror-foldgutter-open::after { - display: block; - width: 18px; - opacity: 0.3; - content: url('data:image/svg+xml; utf8, '); -} - -.theme-dark .markdown-preview-view .collapse-indicator::before, -.theme-dark .CodeMirror-foldgutter-open::after { - content: url('data:image/svg+xml; utf8, '); -} - -.theme-dark .markdown-preview-view .collapse-indicator::before { - margin-left: 2px; -} - -.theme-dark .markdown-preview-view ul li .collapse-indicator::before { - margin-left: calc(1rem - var(--font-size-notes) + 0.125rem); - margin-top: 2px; -} - -.theme-dark .markdown-preview-view ol li .collapse-indicator::before { - margin-left: calc(1rem - var(--font-size-notes)); - margin-top: 2px; -} - -.theme-dark .markdown-preview-view ul.contains-task-list li .collapse-indicator::before { - margin-left: 18px; - margin-top: 0; -} - -.markdown-preview-view .is-collapsed .collapse-indicator::before, -.CodeMirror-foldgutter-folded::after { - display: block; - width: 18px; - /*height: 18px;*/ - opacity: 0.3; - content: url('data:image/svg+xml; utf8, '); -} - -.theme-dark .markdown-preview-view .is-collapsed .collapse-indicator::before, -.theme-dark .CodeMirror-foldgutter-folded::after { - content: url('data:image/svg+xml; utf8, '); -} - -.CodeMirror-gutter-wrapper { - padding: 0; - width: 18px; - left: -2rem !important; - display: flex; -} - -.CodeMirror-gutter-elt { - width: unset !important; - position: static; - height: 100%; -} - -.CodeMirror-foldgutter-open, -.CodeMirror-foldgutter-folded { - color: var(--text-faint); - display: flex; - height: 100%; - align-items: center; - transition: color 100ms ease; -} - -.cm-s-obsidian .CodeMirror-gutters { - width: 18px; - left: 8px !important; - padding-right: 0; - transform: translateX(2rem); -} - -.CodeMirror-foldgutter { - width: 18px; -} - -/*---------------------------------------------------------------- -line numbers */ - -.CodeMirror-linenumbers { - margin-left: -26px; -} - -.cm-s-obsidian .CodeMirror-linenumber { - width: 18px !important; - min-width: 18px !important; - position: absolute; - padding: 0; - display: flex; - justify-content: flex-end; - font-feature-settings: normal; - font-size: 0.75rem; - font-weight: 500; - color: var(--text-linenumber); - margin-left: -1.5rem; - left: 0 !important; -} - -.cm-s-obsidian .CodeMirror-activeline-gutter > .CodeMirror-linenumber { - color: var(--text-linenumber-active); -} - -/*---------------------------------------------------------------- -EMBEDS -----------------------------------------------------------------*/ - -/*---------------------------------------------------------------- -Seamless notes transclusions */ - -.markdown-preview-view .markdown-embed { - margin: 2rem 0 0 0 !important; - padding: 0 !important; - border-top: 0 !important; - border-bottom: 0 !important; -} - -.markdown-preview-view .markdown-embed-content { - max-height: none !important; -} - -.markdown-embed-content .markdown-preview-section { - min-height: unset !important; -} - -.markdown-embed-content .markdown-preview-section > div { - padding-left: 0; - padding-right: 0; -} - -/* Hide frontmatters in embeds */ -.markdown-preview-view .markdown-embed-content .frontmatter { - display: none; -} - -.markdown-embed-title, -.internal-embed .markdown-preview-section { - max-width: 100%; -} - -.markdown-embed-title { - display: none !important; -} - -.markdown-preview-view .markdown-embed-content > .markdown-preview-view { - max-height: none !important; -} - -.markdown-embed .markdown-preview-view { - padding: 0 !important; -} - -.file-embed-link svg, -.markdown-embed-link svg { - width: 16px; - opacity: 0; -} - -.markdown-embed:hover .file-embed-link svg, -.markdown-embed:hover .markdown-embed-link svg { - opacity: 1; -} - -/*---------------------------------------------------------------- -Audio embed */ - -audio, -.theme-dark audio { - filter: unset !important; -} - -.theme-dark audio::-webkit-media-controls-enclosure { - filter: sepia(10%) contrast(90%) invert(90%) !important; - opacity: 0.8; - border-radius: 6px; - height: 20px; -} - -audio::-webkit-media-controls-enclosure { - filter: sepia(10%) contrast(90%) invert(90%) !important; - opacity: 0.8; - border-radius: 6px; - height: 20px; -} - -.markdown-preview-view img:not([width]), -.markdown-preview-view audio, -.markdown-preview-view video { - margin: 0 auto; -} - -/*---------------------------------------------------------------- -Internal Queries */ - -.markdown-preview-view .internal-query.is-embed { - border-top: 0; - border-bottom: 0; - background-color: var(--background-code-preview); - border-radius: 4px; - cursor: default !important; -} - -.markdown-preview-view .internal-query.is-embed .internal-query-header-title::before, -.markdown-preview-view .internal-query.is-embed .internal-query-header-title::after { - content: ""; -} - -/* Seamless internal queries - no scrollbar */ -.markdown-preview-view .internal-query.is-embed .search-results-children { - max-height: none !important; - padding: 0; -} - -.internal-query .search-result-file-matches { - margin-top: 10px; - margin-bottom: 0; - padding-bottom: 0; -} - -.internal-query .search-result-file-title { - background-color: transparent; - opacity: 1; -} - -.internal-query .search-result-file-title:hover { - color: var(--text-a-hover) !important; - opacity: 1; -} - -.internal-query .tree-item-self.is-clickable:hover { - background-color: transparent; -} - -.internal-query .tree-item.search-result { - padding: 10px; -} - -.internal-query .tree-item.search-result.is-collapsed:hover { - background-color: var(--background-modifier-border); - cursor: pointer; -} - -.internal-query .search-result-file-matched-text { - padding: 2px; - border-radius: 2px; -} - -.internal-query .search-result-file-match { - opacity: 1; - padding: 6px 0 6px 10px !important; -} - -.internal-query .search-result-file-match:hover { - background-color: var(--background-modifier-cover); -} - -.internal-query .search-result-file-match::after { - background-color: transparent; -} - -/*---------------------------------------------------------------- -RELATIONSHIP LINES -----------------------------------------------------------------*/ - -body.discordian-theme.discordian-rel-preview .markdown-preview-view ul ul, -body:not(.discordian-theme) .markdown-preview-view ul ul { - position: relative; -} - -body.discordian-theme.discordian-rel-preview .markdown-preview-view ul ul::before, -body:not(.discordian-theme) .markdown-preview-view ul ul::before { - content: ""; - border-left: 1px solid var(--text-muted); - opacity: 0.2; - position: absolute; - margin-left: -0.8em; - left: 0; - top: 0; - bottom: 0; -} - -body.discordian-theme.discordian-rel-preview .markdown-preview-view ul.contains-task-list ul::before, -body:not(.discordian-theme) .markdown-preview-view ul.contains-task-list ul::before { - left: -0.2em; - top: 0.3em; - bottom: -0.3em; -} - -/*---------------------------------------------------------------- -SYNTAX HIGHLIGHTER COLORS -----------------------------------------------------------------*/ - -.theme-dark { - --syntax-default: rgb(191, 193, 194); - --syntax-red: rgb(224, 108, 117); - --syntax-green: rgb(152, 195, 121); - --syntax-yellow: rgb(209, 154, 102); - --syntax-blue: rgb(86, 156, 214); - --syntax-teal: rgb(86, 182, 194); - --syntax-purple: rgb(198, 120, 221); - --syntax-grey: rgb(112, 128, 144); -} - -.theme-dark .token.property, -.theme-dark .token.tag, -.theme-dark .token.constant, -.theme-dark .token.symbol, -.theme-dark .token.deleted { - color: var(--syntax-red); -} - -.theme-dark .token.selector, -.theme-dark .token.attr-name, -.theme-dark .token.string, -.theme-dark .token.char, -.theme-dark .token.builtin, -.theme-dark .token.inserted { - color: var(--syntax-green); -} - -.theme-dark .token.atrule, -.theme-dark .token.attr-value, -.theme-dark .token.function, -.theme-dark .token.class-name { - color: var(--syntax-yellow); -} - -.theme-dark .token.punctuation { - color: var(--text-normal); -} - -.theme-dark .token.keyword { - color: var(--syntax-blue); -} - -.theme-dark .token.operator, -.theme-dark .token.entity, -.theme-dark .token.url, -.theme-dark .language-css .token.string, -.theme-dark .style .token.string, -.theme-dark .token.variable { - color: var(--syntax-teal); -} - -.theme-dark .token.boolean, -.theme-dark .token.number, -.theme-dark .language-css .token.unit { - color: var(--syntax-purple); -} - -.theme-dark .token.comment, -.theme-dark .token.prolog, -.theme-dark .token.doctype, -.theme-dark .token.cdata { - color: var(--syntax-grey); -} - -/*---------------------------------------------------------------- -IMAGES RELATED ADD-ONS -----------------------------------------------------------------*/ - -/*---------------------------------------------------------------- -Floating images with captions by @radekkozak */ - -.markdown-preview-view .image-embed:not([src$="left"]):not([src$="right"]), -.markdown-preview-view .image-embed[src$="center"] { - clear: both; - margin: 1rem auto; - width: fit-content; -} - -.markdown-preview-view.img-captions .image-embed:not([src$="left"]):not([src$="right"])::after { - content: attr(alt); - padding: 0 1rem 0 1rem; - margin-top: 1rem; - display: block; - caption-side: bottom; - text-align: center; - font-size: 0.8125rem; -} - -.markdown-preview-view .image-embed[src$="left"] { - position: relative; - float: left; - margin-right: 2rem; - margin-bottom: 1rem; - margin-top: 1rem; - clear: both; - display: table; - width: fit-content; -} - -.markdown-preview-view.img-captions .image-embed[src$="left"]::after { - content: attr(alt); - padding: 0 1rem 0 1rem; - margin-top: 1rem; - display: table-caption; - caption-side: bottom; - text-align: center; - font-size: 0.8125rem; -} - -.markdown-preview-view .image-embed[src$="right"] { - position: relative; - float: right; - margin-top: 1rem; - margin-left: 2rem; - margin-bottom: 2rem; - clear: both; - display: table; - width: fit-content; -} - -.markdown-preview-view.img-captions .image-embed[src$="right"]::after { - content: attr(alt); - padding: 0 1rem 0 1rem; - margin-top: 1rem; - display: table-caption; - caption-side: bottom; - text-align: center; - font-size: 0.8125rem; -} - -/*---------------------------------------------------------------- -Modified masonry-like gallery (image grids) -Original credits to @kepano */ - -.img-grid .markdown-preview-section > div > p > .image-embed[alt*="."] { - padding: 0 0.75rem 0 0.75rem; -} - -.img-grid .markdown-preview-section > div > p > .image-embed[alt*="."]:last-child { - padding-right: 0; -} - -.img-grid .markdown-preview-section > div > p > .image-embed[alt*="."]:first-child { - padding-left: 0; -} - -.img-grid .markdown-preview-section > div hr { - width: 100%; -} - -/* Hotfix by @Lithou (due to Obsidian v0.11.3 changes for grouped images) - -Explanation is this: -When no alt pipe is used by the user, Obsidian will add alt text in the form of "filename.ext" by default. -This rule targets any image embeds with a period in it (BE AWARE) to make image grids possible */ - -.img-grid span.image-embed[alt*="."] { - display: table-cell; -} - -.img-grid img[alt*="."] { - max-height: 33vh; - object-fit: cover; -} - -/*---------------------------------------------------------------- -Image zooms. Credits to @kepano */ - -.view-content img { - max-width: 100%; - cursor: zoom-in; -} - -.view-content img:active { - cursor: zoom-out; - display: block; - z-index: 100; - position: fixed; - max-height: calc(100% + 1px); - max-width: calc(100% - 8rem); - height: calc(100% + 1px); - width: 100%; - object-fit: contain; - margin: -0.5px auto 0; - text-align: center; - top: 50%; - transform: translateY(-50%); - padding: 0; - left: 0; - right: 0; - bottom: 0; - background: transparent; -} - -/*---------------------------------------------------------------- -HIDER PLUGIN v1.0.5 -----------------------------------------------------------------*/ - -.hider-ribbon .workspace-split.mod-left-split .nav-files-container { - margin-left: 0; -} - -.hider-frameless:not(.hider-ribbon):not(.mod-windows) .workspace-split.mod-left-split .workspace-tab-header-container, -.discordian-writer-mode:not(.hider-ribbon):not(.mod-windows) .workspace-split.mod-left-split .workspace-tab-header-container { - padding-left: 24px; -} - -.discordian-writer-mode.hider-ribbon:not(.mod-windows) .mod-left-split .workspace-tab-header-container, -.hider-frameless.hider-ribbon:not(.mod-windows) .mod-left-split .workspace-tab-header-container, -.hider-ribbon:not(.mod-windows) .mod-left-split .workspace-tab-header-container { - padding-left: 54px; -} - -body:not(.mod-windows):not(.discordian-theme).hider-ribbon .mod-left-split .workspace-tab-header-container { - padding-left: 54px !important; -} - -.discordian-writer-mode .workspace-split.mod-left-split > .workspace-tabs { - padding-top: 0 !important; -} - -.hider-frameless .workspace-split.mod-left-split > .workspace-tabs { - padding-top: 0 !important; -} - -body.discordian-theme:not(.is-fullscreen):not(.plugin-sliding-panes):not(.mod-windows) .workspace-leaf:first-of-type:last-of-type .view-header, -body.discordian-theme:not(.is-fullscreen):not(.plugin-sliding-panes):not(.mod-windows) .workspace-leaf:first-of-type .view-header { - padding-left: 0 !important; -} - -.discordian-writer-mode:not(.plugin-sliding-panes):not(.is-fullscreen):not(.mod-windows) .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header, -.discordian-writer-mode.hider-frameless:not(.plugin-sliding-panes):not(.is-fullscreen):not(.mod-windows) .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header, -.discordian-writer-mode.discordian-hide-titlebar:not(.plugin-sliding-panes):not(.is-fullscreen):not(.mod-windows) .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header, -.hider-frameless:not(.plugin-sliding-panes):not(.is-fullscreen):not(.mod-windows).discordian-theme .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header, -.hider-frameless:not(.is-fullscreen):not(.plugin-sliding-panes):not(.mod-windows) .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header { - padding-left: 30px !important; - transition: padding-left .15s ease; -} - -.discordian-writer-mode.hider-ribbon:not(.is-fullscreen):not(.plugin-sliding-panes):not(.mod-windows) .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header, -.hider-frameless.hider-ribbon:not(.is-fullscreen):not(.plugin-sliding-panes):not(.mod-windows) .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header, -.hider-ribbon.discordian-hide-titlebar:not(.is-fullscreen):not(.plugin-sliding-panes):not(.mod-windows) .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header, -.hider-ribbon.discordian-theme.discordian-hide-titlebar:not(.hider-frameless):not(.is-fullscreen):not(.plugin-sliding-panes):not(.mod-windows) .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header { - padding-left: 62px !important; - transition: padding-left .15s ease; -} - -.discordian-writer-mode .titlebar, -.hider-frameless .titlebar { - border-bottom: none; -} - -/*---------------------------------------------------------------- -Force-hide titlebar regardless of settings -This is required to make settings modal like in Discord */ - -body:not(.hider-frameless):not(.discordian-writer-mode) .modal-container { - top: 0 !important; - height: 100vh !important; -} - -body.discordian-theme.discordian-writer-mode .modal-container, -body.discordian-theme.hider-frameless .modal-container, -body.discordian-theme.discordian-hide-titlebar .modal-container { - top: 0 !important; - height: 100vh !important; -} - -body.discordian-theme:not(.discordian-hide-titlebar):not(.hider-frameless):not(.discordian-writer-mode) .modal-container { - top: -22px !important; - height: 100vh !important; -} - -body.discordian-theme.is-fullscreen .modal-container { - top: 0 !important; - height: 100vh !important; -} - -/*---------------------------------------------------------------- -CALENDAR PLUGIN v1.4.11 -----------------------------------------------------------------*/ - -.workspace-leaf-content[data-type='calendar'] .view-content { - padding: 5px 0 0 0; -} - -#calendar-container { - padding: 5px 15px; - font-family: var(--font-editor); - font-size: 15px; - - --color-background-day-empty: var(--background-secondary-alt); - --color-background-day-active: var(--background-tertiary); - --color-background-day-hover: var(--background-tertiary); - --color-dot: var(--text-faint); - --color-text-title: var(--text-normal); - --color-text-heading: var(--text-muted); - --color-text-day: var(--text-normal); - --color-text-today: var(--text-accent); - --color-arrow: var(--text-faint); - --color-arrow-hover: var(--text-normal); - --interactive-hover: var(--background-secondary-alt); - --interactive-accent: var(--discord-blue-hover); - --interactive-accent-hover: var(--discord-blue-hover); -} - -#calendar-container .table { - border-collapse: separate; - table-layout: fixed; -} - -#calendar-container h3 { - font-weight: 400; - font-size: 16px; -} - -.mod-root #calendar-container { - width: var(--line-width); - max-width: var(--max-width); - margin: 0 auto; - padding: 0; -} - -#calendar-container .arrow { - color: var(--text-faint); - cursor: var(--cursor); -} - -#calendar-container tr th { - padding: 4px 0; - font-weight: 500; -} - -#calendar-container tr td { - padding: 4px 0 4px; - border-radius: 4px; - border: 2px solid transparent; - transition: none; -} - -#calendar-container .year { - color: var(--discord-green) !important; -} - -#calendar-container .day { - transition: none !important; - cursor: var(--cursor); -} - -#calendar-container .arrow:hover > svg { - color: var(--color-arrow-hover) !important; -} - -#calendar-container .reset-button:hover { - color: var(--color-text-title) !important; -} - -/*---------------------------------------------------------------- -Andy's Mode Sliding Panes v3.2.1 (death_au's plugin) -----------------------------------------------------------------*/ - -/* fill title container for better visual separation */ -body.plugin-sliding-panes-rotate-header .workspace > .mod-root > .workspace-leaf > .workspace-leaf-content > .view-header { - background-color: var(--background-secondary); - border-right: 0 !important; - border-left: 0 !important; -} - -body.plugin-sliding-panes.plugin-sliding-panes-rotate-header .app-container { - border-top: solid 1px var(--background-tertiary) !important; -} - -body.plugin-sliding-panes .app-container::before { - content: none; -} - -body.plugin-sliding-panes .workspace > .mod-root > .workspace-leaf > .workspace-leaf-content > .view-header { - border-left: 0; - box-shadow: none !important; -} - -body.plugin-sliding-panes .view-header::before, -body.plugin-sliding-panes .workspace-leaf.mod-active .view-header::before { - display: none; -} - -/* remove long-title-obscuring gradient in normal mode */ -body.plugin-sliding-panes-rotate-header .workspace > .mod-root > .workspace-leaf > .workspace-leaf-content > .view-header > .view-header-title-container::before, -body.plugin-sliding-panes-rotate-header .workspace > .mod-root > .workspace-leaf.mod-active > .workspace-leaf-content > .view-header > .view-header-title-container::before { - content: none; -} - -/* fix the long-title-obscuring gradient for andy mode */ -body.plugin-sliding-panes-rotate-header .workspace > .mod-root > .workspace-leaf > .workspace-leaf-content > .view-header > .view-header-title-container::after, -body.plugin-sliding-panes-rotate-header .workspace > .mod-root > .workspace-leaf.mod-active > .workspace-leaf-content > .view-header > .view-header-title-container::after { - content: ' '; - position: absolute; - bottom: 100px !important; - top: unset; - right: 0; - width: 26px; - height: 26px; - background: linear-gradient(to bottom, transparent, var(--background-secondary)) !important; -} - -body.plugin-sliding-panes .mod-horizontal .workspace-leaf { - box-shadow: none !important; -} - -body.plugin-sliding-panes:not(.discordian-writer) .workspace-split.mod-left-split { - border-right: 1px solid var(--background-tertiary); -} - -body.plugin-sliding-panes:not(.discordian-writer) .workspace-split.mod-right-split { - border-left: 1px solid var(--background-tertiary); -} - -body.plugin-sliding-panes:not(.plugin-sliding-panes-rotate-header) .workspace > .mod-root > .workspace-leaf.mod-active > .workspace-leaf-content > .view-header { - border-right: none; - border-bottom: 2px solid var(--discord-yellow-light); -} - -body.plugin-sliding-panes.plugin-sliding-panes-rotate-header .workspace > .mod-root > .workspace-leaf.mod-active > .workspace-leaf-content > .view-header { - border-right: 2px solid var(--discord-yellow-light) !important; -} - -body.plugin-sliding-panes.plugin-sliding-panes-rotate-header .workspace > .mod-root > .workspace-leaf.mod-active:first-of-type:last-of-type > .workspace-leaf-content > .view-header { - border-right: 0 !important; -} - -body.plugin-sliding-panes .view-header::after { - content: none; -} - -body.plugin-sliding-panes.hider-frameless .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header { - padding-left: 0 !important; -} - -body.plugin-sliding-panes-rotate-header .workspace > .mod-root .view-header-title-container, -body.plugin-sliding-panes-rotate-header.plugin-sliding-panes-header-alt .workspace > .mod-root .view-header-title { - margin-top: 0; -} - -body.plugin-sliding-panes-rotate-header .workspace > .mod-root .view-header-title-container { - margin-left: 0; - padding-top: 0; -} - -body.plugin-sliding-panes-rotate-header .view-header-title-container { - position: static; -} - -body.plugin-sliding-panes-rotate-header .workspace > .mod-root .view-actions { - padding-left: 0; - padding-bottom: 20px; - margin-left: 0; - bottom: 0; -} - -body.plugin-sliding-panes.is-fullscreen.plugin-sliding-panes-rotate-header .view-header-icon { - padding-top: 8px; -} - -body.plugin-sliding-panes.hider-frameless.hider-ribbon .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header, -body.plugin-sliding-panes.hider-ribbon .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header { - padding-left: 0 !important; -} - -body.plugin-sliding-panes.hider-ribbon:not(.is-fullscreen):not(.hider-ribbon) .mod-left-split .workspace-tab-header-container { - padding-left: 54px !important; -} - -/* or workspace-leaf:first-of-type if only padding first header under OSX icons */ -body.plugin-sliding-panes.plugin-sliding-panes-rotate-header:not(.is-fullscreen):not(.mod-windows).hider-frameless .mod-left-split.is-collapsed + div.mod-root > .workspace-leaf:first-of-type > .workspace-leaf-content > .view-header, -body.plugin-sliding-panes.plugin-sliding-panes-rotate-header:not(.is-fullscreen):not(.mod-windows).discordian-hide-titlebar .mod-left-split.is-collapsed + div.mod-root > .workspace-leaf:first-of-type > .workspace-leaf-content > .view-header { - padding-top: 18px; - /* transition: padding .1s ease;*/ -} - -body.discordian-hide-titlebar:not(.is-fullscreen):not(.hider-ribbon):not(.plugin-sliding-panes):not(.mod-windows) .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header, -body.hider-frameless:not(.is-fullscreen):not(.hider-ribbon):not(.plugin-sliding-panes):not(.mod-windows).discordian-theme .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header, -body.discordian-hide-titlebar:not(.is-fullscreen):not(.hider-ribbon):not(.plugin-sliding-panes-rotate-header):not(.mod-windows) .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header { - padding-left: 30px !important; - transition: padding .15s ease; -} - -body.plugin-sliding-panes.hider-frameless:not(.hider-ribbon):not(.plugin-sliding-panes-rotate-header):not(.is-fullscreen):not(.mod-windows) .mod-left-split.is-collapsed + div.mod-root .workspace-leaf:first-of-type .view-header { - padding-left: 30px !important; -} - -/*---------------------------------------------------------------- -ADVANCED TABLES v0.11.0 -----------------------------------------------------------------*/ - -.workspace-leaf-content[data-type="advanced-tables-toolbar"] .nav-action-button svg.widget-icon { - width: 20px; -} - -img.emoji { - display: inline-block; -} - -/*---------------------------------------------------------------- -HIDE VAULT */ - -body.discordian-hide-vault .nav-folder.mod-root > .nav-folder-title { - display: none !important; -} - -body.discordian-theme .nav-folder.mod-root > .nav-folder-title { - display: block; -} - -/*---------------------------------------------------------------- -HIDE STATUS BAR */ - -.discordian-hide-statusbar.theme-dark .status-bar { - display: none; -} - -.theme-dark:not(.hider-status):not(.discordian-hide-statusbar):not(.discordian-writer-mode) .status-bar { - display: flex; -} - -/*---------------------------------------------------------------- -HIDE TITLE BAR */ - -body.discordian-hide-titlebar .app-container { - border-top: 0; -} - -body.discordian-hide-titlebar .titlebar { - display: none !important; -} - -body.discordian-hide-titlebar { - padding-top: 0 !important; -} - -body.discordian-hide-titlebar:not(.hider-ribbon):not(.mod-windows) .workspace-split.mod-left-split .workspace-tab-header-container { - padding-left: 24px; -} - -body.discordian-hide-titlebar .workspace-leaf:first-of-type:last-of-type .view-header { - padding-left: 0; -} - -/* unhide */ - -body:not(.discordian-hide-titlebar):not(.hider-frameless):not(.discordian-writer-mode) .titlebar { - display: flex !important; -} - -body.discordian-theme:not(.discordian-hide-titlebar):not(.is-fullscreen):not(.hider-frameless):not(.discordian-writer-mode) { - padding-top: 22px !important; -} - -body.discordian-theme.is-fullscreen .workspace-split.mod-left-split .workspace-tab-header-container { - padding-left: 0; -} - -body.discordian-theme:not(.discordian-hide-titlebar):not(.hider-frameless) .workspace-split.mod-left-split .workspace-tab-header-container { - padding-left: 24px; -} - -/*---------------------------------------------------------------- -PARAGRAPH FOCUS MODE */ - -body.discordian-paragraph-focus .CodeMirror-line { - opacity: var(--paragraph-focus-fade); -} - -body.discordian-paragraph-focus .CodeMirror-activeline .CodeMirror-line { - opacity: 1 !important; -} - -/*---------------------------------------------------------------- -DISCORD ORIGINAL MARKINGS */ - -/* bold */ - -.discordian-original-markings .cm-strong, -.discordian-original-markings strong { - color: var(--text-normal); - font-weight: 600; -} - -.discordian-original-markings .cm-formatting-strong { - color: var(--text-muted); -} - -/* italics */ - -.discordian-original-markings .cm-em, -.discordian-original-markings em { - color: var(--text-normal); - margin-right: 0.1rem; -} - -.discordian-original-markings .cm-formatting-em { - color: var(--text-muted); - font-weight: 600; -} - -/* blockquote */ - -.discordian-original-markings blockquote { - background-color: unset; - color: var(--text-normal) !important; - border-left: 4px solid var(--background-accent) !important; - border-radius: 0 !important; -} - -.discordian-original-markings blockquote::before { - content: none; -} - -.discordian-original-markings .cm-s-obsidian span.cm-formatting-quote.cm-quote { - color: var(--text-muted); -} - -.discordian-original-markings .cm-s-obsidian span.cm-quote { - color: var(--text-normal); -} - -/* inline code in Editor */ - -.discordian-original-markings .markdown-preview-view code, -.discordian-original-markings .cm-s-obsidian span.cm-formatting-code.cm-inline-code, -.discordian-original-markings .cm-s-obsidian span.cm-inline-code:not(.cm-formatting):not(.cm-hmd-indented-code):not(.obsidian-search-match-highlight) { - color: var(--text-normal) !important; - background-color: var(--background-secondary); - padding: .3rem 0 0.1rem 0; - width: auto; - height: auto; - text-indent: 0; - white-space: pre-wrap; -} - -.discordian-original-markings .cm-s-obsidian span.cm-inline-code { - font-size: unset; -} - -.discordian-original-markings .cm-s-obsidian span.cm-formatting-code.cm-inline-code { - color: var(--text-muted) !important; - background-color: var(--background-secondary); - border-radius: 3px 0 0 3px; - font-weight: 600; -} - -/* inline code in Preview */ - -.discordian-original-markings .markdown-preview-view code { - border-radius: 3px; - font-size: 100%; - padding: .3rem .3rem .1rem .3rem !important; -} - -.discordian-original-markings .markdown-preview-view pre code { - font-size: 100%; -} - -/* codeblocks in Editor */ - -.discordian-original-markings .cm-s-obsidian div.HyperMD-codeblock-begin-bg { - border-top: 1px solid var(--background-secondary-alt); -} - -.discordian-original-markings .cm-s-obsidian div.HyperMD-codeblock-bg { - background-color: var(--background-secondary); - border-left: 1px solid var(--background-secondary-alt); - border-right: 1px solid var(--background-secondary-alt); -} - -.discordian-original-markings .cm-s-obsidian div.HyperMD-codeblock-end-bg { - border-bottom: 1px solid var(--background-secondary-alt); -} - -/* codeblocks in Preview */ - -.discordian-original-markings.theme-dark :not(pre) > code[class*="language-"], -.discordian-original-markings.theme-dark pre[class*="language-"] { - background-color: var(--background-secondary); - border: 1px solid var(--background-secondary-alt); -} - -/*---------------------------------------------------------------- -DARK NOTE HEADERS */ - -body.discordian-dark-enhance:not(.plugin-sliding-panes):not(.discordian-writer-mode) .view-header::before { - -webkit-box-shadow: var(--elevation-stroke) !important; - box-shadow: var(--elevation-stroke) !important; -} - -body.discordian-dark-enhance:not(.plugin-sliding-panes):not(.discordian-writer-mode) .view-header { - background-color: var(--background-secondary) !important; - height: 30px; -} - -body.discordian-dark-enhance:not(.plugin-sliding-panes):not(.discordian-writer-mode) .workspace-split.mod-root > .workspace-leaf:first-of-type:last-of-type .view-header { - background-color: var(--background-secondary) !important; -} - -body.discordian-dark-enhance:not(.plugin-sliding-panes):not(.discordian-writer-mode) .workspace-split.mod-root > .workspace-leaf:first-of-type:last-of-type .view-header-title-container::after { - background: linear-gradient(to right, transparent, var(--background-secondary)) !important; -} - -body.discordian-dark-enhance:not(.plugin-sliding-panes):not(.discordian-writer-mode) .view-header-title-container::after { - background: linear-gradient(to right, transparent, var(--background-secondary)) !important; -} - -body.discordian-dark-enhance:not(.plugin-sliding-panes):not(.discordian-writer-mode) .workspace-leaf.mod-active .view-header { - background-color: var(--background-secondary) !important; -} - -body.discordian-dark-enhance:not(.plugin-sliding-panes):not(.discordian-writer-mode) .workspace-leaf.mod-active .view-header-title-container::after { - background: linear-gradient(to right, transparent, var(--background-secondary)) !important; -} - -/*---------------------------------------------------------------- -FLAT ANDY MODE */ - -body.discordian-flat-andy-mode.plugin-sliding-panes .workspace > .mod-root > .workspace-leaf, -body.discordian-flat-andy-mode.plugin-sliding-panes .workspace-split.mod-vertical > .workspace-leaf { - box-shadow: var(--background-tertiary) -1px 0 !important; -} - -/*---------------------------------------------------------------- -WRITER MODE */ - -body.discordian-writer-mode .mod-left.is-collapsed ~ .mod-root .mod-active .view-header, -body.discordian-writer-mode .mod-right.is-collapsed ~ .mod-root .mod-active .view-header { - border-bottom: 0; -} - -body.discordian-writer-mode .titlebar { - display: none; -} - -body.discordian-writer-mode .workspace-ribbon.mod-right, -body.discordian-writer-mode .workspace-ribbon.mod-left { - transition: border-color 0s ease-in-out 0s, background-color 0s ease-in-out 0s; -} - -body.discordian-writer-mode .workspace-ribbon.mod-right.is-collapsed, -body.discordian-writer-mode .workspace-ribbon.mod-left.is-collapsed { - border-color: transparent; - background-color: transparent !important; - transition: border-color 0s ease-in-out 0s, background-color 0s ease-in-out 0s; -} - -body.discordian-writer-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-actions, -body.discordian-writer-mode .workspace-ribbon.mod-left.is-collapsed:hover .side-dock-settings { - opacity: 1; - /*transition:opacity 0s ease-in-out;*/ -} - -body.discordian-writer-mode .view-action.is-active { - opacity: 1; -} - -/* view actions */ - -body.discordian-writer-mode .view-actions, -body.discordian-writer-mode .workspace-ribbon.mod-right.is-collapsed ~ .mod-root .view-actions, -body.discordian-writer-mode .workspace-ribbon.mod-left.is-collapsed ~ .mod-root .view-actions, -body.discordian-writer-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-actions, -body.discordian-writer-mode .workspace-ribbon.mod-left.is-collapsed .side-dock-settings { - opacity: 0; - transition: opacity 0.17s ease-in-out; -} - -.workspace-ribbon:not(.is-collapsed) ~ .mod-root .view-actions, -body.discordian-writer-mode .workspace-ribbon:not(.is-collapsed) ~ .mod-root .view-header:hover .view-actions, -.workspace-ribbon.mod-left.is-collapsed ~ .mod-root .view-header:hover .view-actions, -.mod-right.is-collapsed ~ .mod-root .view-header:hover .view-actions { - opacity: 1; - transition: opacity 0.17s ease-in-out; -} - -/* scrollbar */ - -body.discordian-writer-mode .workspace-ribbon.mod-right.is-collapsed ~ .mod-root ::-webkit-scrollbar, -body.discordian-writer-mode .workspace-ribbon.mod-left.is-collapsed ~ .mod-root ::-webkit-scrollbar { - width: 0 !important; -} - -/* in Preview Mode - in contrast to Editor Mode - when hiding scrollbar we need to adjust view by its width */ -body.discordian-writer-mode .workspace-ribbon.mod-right.is-collapsed ~ .mod-root > .markdown-preview-view, -body.discordian-writer-mode .workspace-ribbon.mod-left.is-collapsed ~ .mod-root > .markdown-preview-view { - margin-left: -8px !important; -} - -.workspace-ribbon:not(.is-collapsed) ~ .mod-root ::-webkit-scrollbar, -body.discordian-writer-mode .workspace-ribbon:not(.is-collapsed) ~ .mod-root ::-webkit-scrollbar, -.workspace-ribbon.mod-left.is-collapsed ~ .mod-root ::-webkit-scrollbar, -.mod-right.is-collapsed ~ .mod-root ::-webkit-scrollbar { - width: 16px; - /*transition:opacity 0.17s ease-in-out;*/ -} - -/* note icon */ - -body.discordian-writer-mode:not(.plugin-sliding-panes) .workspace-ribbon.mod-right.is-collapsed ~ .mod-root .view-header .view-header-icon, -body.discordian-writer-mode:not(.plugin-sliding-panes) .workspace-ribbon.mod-left.is-collapsed ~ .mod-root .view-header .view-header-icon { - opacity: 0; - transition: opacity 0.17s ease-in-out; -} - -body.discordian-writer-mode:not(.plugin-sliding-panes) .workspace-ribbon:not(.is-collapsed) ~ .mod-root .view-header .view-header-icon, -body.discordian-writer-mode:not(.plugin-sliding-panes) .workspace-ribbon:not(.is-collapsed) ~ .mod-root .view-header:hover .view-header-icon, -body.discordian-writer-mode:not(.plugin-sliding-panes) .workspace-ribbon.mod-left.is-collapsed ~ .mod-root .view-header:hover .view-header-icon, -body.discordian-writer-mode:not(.plugin-sliding-panes) .mod-right.is-collapsed ~ .mod-root .view-header:hover .view-header-icon { - opacity: 1; - transition: opacity 0.17s ease-in-out; -} - -/* note title */ - -body.discordian-writer-mode:not(.plugin-sliding-panes) .workspace-ribbon.mod-right.is-collapsed ~ .mod-root .view-header .view-header-title, -body.discordian-writer-mode:not(.plugin-sliding-panes) .workspace-ribbon.mod-left.is-collapsed ~ .mod-root .view-header .view-header-title { - opacity: 0; - transition: opacity 0.17s ease-in-out; -} - -body.discordian-writer-mode:not(.plugin-sliding-panes) .workspace-ribbon:not(.is-collapsed) ~ .mod-root .view-header-title, -body.discordian-writer-mode:not(.plugin-sliding-panes) .workspace-ribbon:not(.is-collapsed) ~ .mod-root .view-header:hover .view-header-title, -body.discordian-writer-mode:not(.plugin-sliding-panes) .workspace-ribbon.mod-left.is-collapsed ~ .mod-root .view-header:hover .view-header-title, -body.discordian-writer-mode:not(.plugin-sliding-panes) .mod-right.is-collapsed ~ .mod-root .view-header:hover .view-header-title { - opacity: 1; - transition: opacity 0.17s ease-in-out; -} - -/* note title bottom shadow */ - -body.discordian-writer-mode .workspace-ribbon.mod-right.is-collapsed ~ .mod-root .view-header::before, -body.discordian-writer-mode .workspace-ribbon.mod-left.is-collapsed ~ .mod-root .view-header::before { - box-shadow: none !important; -} - -.workspace-ribbon:not(.is-collapsed) ~ .mod-root .view-header::before, -body.discordian-writer-mode .workspace-ribbon:not(.is-collapsed) ~ .mod-root .view-header::before, -.workspace-ribbon.mod-left.is-collapsed ~ .mod-root .view-header::before, -.mod-right.is-collapsed ~ .mod-root .view-header::before { - -webkit-box-shadow: var(--elevation-low) !important; - box-shadow: var(--elevation-low) !important; -} - -/* no status bar in writer mode */ -body.discordian-writer-mode .status-bar { - display: none; -} - -/*---------------------------------------------------------------- -PLUGIN STYLES */ - -body.discordian-theme .modal.mod-settings .plugin-description { - margin-right: 17vw; - padding: 0 0 1rem 0; - color: var(--text-faint); -} - -body.discordian-theme .modal.mod-settings .plugin-description p { - margin: 0; - color: var(--text-faint); -} - -body.discordian-theme .modal.mod-settings .plugin-description h3 { - margin-block-start: 0; - margin-block-end: 1rem; - text-align: left; - color: var(--text-normal); -} - -body.discordian-theme .modal.mod-settings .plugin-description ~ h4 { - color: var(--text-header); -} - -body.discordian-theme .modal.mod-settings .plugin-description.separator { - font-size: 2rem; - text-align: center; -} - -.discordian-plugin-setting-disabled { - opacity: 0.5; - pointer-events: none; -} diff --git a/Allgemeine Notizen/Der Aufnahme Test.md b/Allgemeine Notizen/Der Aufnahme Test.md index 8f0f09c..3b640e3 100644 --- a/Allgemeine Notizen/Der Aufnahme Test.md +++ b/Allgemeine Notizen/Der Aufnahme Test.md @@ -14,7 +14,7 @@ Der Aufnahmetest besteht aus dieser simplen Parable: ^fe6d1d >Was ist dein nächster Schritt? # Die "Lösung" -Jeh nach Klasse ist die lösung natürlich anders, grundsätzlich geht aber der Ablauf folgendermassen. +Jeh nach Klasse ist die Lösung natürlich anders, grundsätzlich geht aber der Ablauf folgendermassen. | Rolle | Beste Aussage | Schlechteste Aussage | |:-------------:| ---------------------------------------- | ---------------------------------------- |