diff --git a/.eslintrc b/.eslintrc index 12b4baf1..5eced1fc 100644 --- a/.eslintrc +++ b/.eslintrc @@ -16,6 +16,7 @@ } }, "rules": { + "no-undef": "error", "semi": "error", "space-infix-ops": "error", "quotes": ["error", "double", {"allowTemplateLiterals": true}], diff --git a/data/locales/ja.json b/data/locales/ja.json new file mode 100644 index 00000000..b8910225 --- /dev/null +++ b/data/locales/ja.json @@ -0,0 +1,207 @@ +{ + "Panels": { + "plugins": "プラグイン", + "themes": "テーマ", + "customcss": "カスタム CSS" + }, + "Collections": { + "settings": { + "name": "BD設定", + "general": { + "name": "全般", + "emotes": { + "name": "BD絵文字システム", + "note": "BetterDiscordの絵文字システムを有効にします。" + }, + "publicServers": { + "name": "公開サーバボタン", + "note": "公開サーバボタンを表示します" + }, + "voiceDisconnect": { + "name": "ボイスチャンネル自動切断", + "note": "Discordを終了する際、自動的にボイスチャンネルから切断します。" + }, + "twentyFourHour": { + "name": "24時間表記", + "note": "時間を24時間表記に変更します。" + }, + "classNormalizer": { + "name": "クラス標準化", + "note": "値が変動しないCSSクラスを追加します。" + }, + "showToasts": { + "name": "トースト表示", + "note": "重要な情報を小さな通知として表示します。" + } + }, + "appearance": { + "name": "外観", + "voiceMode": { + "name": "ボイスモード", + "note": "ボイスチャンネル以外を表示しないようにします" + }, + "minimalMode": { + "name": "コンパクトモード", + "note": "表示をコンパクトにします。" + }, + "hideChannels": { + "name": "チャンネルリストを非表示", + "note": "コンパクトモードのときは、チャンネルリストを表示しません" + }, + "darkMode": { + "name": "ダークモード", + "note": "ダークモードを有効にします" + }, + "coloredText": { + "name": "カラーテキスト", + "note": "テキストカラーをサーバルールの色と同じにします。" + } + }, + "addons": { + "name": "アドオンマネージャ", + "addonErrors": { + "name": "アドオンエラーの表示", + "note": "プラグイン/テーマで発生したエラーを表示" + }, + "autoScroll": { + "name": "設定までスクロール", + "note": "プラグインの設定が収まらない場合、自動でスクロールします" + }, + "autoReload": { + "name": "自動リロード", + "note": "プラグイン・テーマを自動でロード・アンロード・リロードします" + } + }, + "customcss": { + "name": "カスタム CSS", + "customcss": { + "name": "カスタム CSS", + "note": "カスタム CSS タブを有効にします" + }, + "liveUpdate": { + "name": "自動更新", + "note": "コードを自動再読み込みする" + }, + "startDetached": { + "name": "デタッチ", + "note": "カスタムCSSエディターをウィンドウに独立させます" + }, + "nativeOpen": { + "name": "外部エディタを起動", + "note": "カスタムCSSを外部のエディタで起動します" + } + }, + "developer": { + "name": "開発者設定", + "developerMode": { + "name": "開発者モード", + "note": "デバッグモードを有効にします(デバッガ起動はF8)" + }, + "copySelector": { + "name": "セレクターコピー", + "note": "開発者モードが有効時に、コンテキストメニューに\"Copy Selector\"を追加します" + } + }, + "window": { + "name": "ウィンドウ設定", + "transparency": { + "name": "透過を有効", + "note": "Discordのメインウィンドウを透過します(要再起動)" + }, + "frame": { + "name": "ウィンドウフレーム表示", + "note": "OSにあわせたフレームを追加します" + } + } + }, + "emotes": { + "name": "絵文字", + "general": { + "name": "全般", + "download": { + "name": "絵文字をダウンロード", + "note": "絵文字をダウンロードします(1週間ごと)" + }, + "emoteMenu": { + "name": "絵文字メニュー", + "note": "Twitch/お気に入りの絵文字を表示します" + }, + "hideEmojiMenu": { + "name": "絵文字メニューを非表示", + "note": "Discord標準の絵文字メニューを非表示にします" + }, + "autoCaps": { + "name": "絵文字自動補完", + "note": "絵文字を自動で補完します" + }, + "showNames": { + "name": "名前を表示", + "note": "ホバー時に絵文字の名前を表示します" + }, + "modifiers": { + "name": "BetterDiscord絵文字を表示", + "note": "BetterDiscordの絵文字を有効化します(flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)" + }, + "animateOnHover": { + "name": "ホバー時にアニメーション", + "note": "ホバー時にアニメーションします(アニメーション絵文字限定)" + } + }, + "categories": { + "name": "カテゴリ", + "twitch": { + "name": "Twitch", + "note": "Twitchに登録されている絵文字を表示します" + }, + "ffz": { + "name": "FrankerFaceZ", + "note": "FFZに登録されている絵文字を表示します" + }, + "bttv": { + "name": "BetterTTV", + "note": "BTTVに登録されている絵文字を表示します" + } + } + } + }, + "Emotes": { + "downloading": "絵文字をダウンロード中…", + "downloaded": "すべての絵文字のダウンロードが完了しました", + "clearEmotes": "絵文字データをクリアします", + "favoriteAction": "お気に入り!!" + }, + "CustomCSS": { + "confirmationText": "Discordを終了すると、保存されていないカスタムCSSは破棄されます", + "update": "更新", + "save": "保存", + "openNative": "外部エディタで開く", + "openDetached": "別ウィンドウで開く", + "settings": "エディター設定", + "editorTitle": "カスタム CSS エディター" + }, + "PublicServers": { + "button": "公開サーバ", + "join": "参加", + "joining": "参加中", + "joined": "参加済み", + "loading": "読み込み中", + "loadMore": "もっと読み込む", + "notConnected": "DiscordServers.comに接続できませんでした", + "search": "検索", + "connect": "接続", + "reconnect": "再接続", + "categories": "カテゴリ", + "connection": "接続済み: {{username}}#{{discriminator}}", + "results": "カテゴリ{{category}} 合計{{total}}中 {{start}}-{{end}}を表示中", + "query": "クエリー:{{query}}" + }, + "Modals": { + "confirmClose": "Discordを終了しますか?", + "okay": "はい", + "cancel": "いいえ", + "name": "名前", + "message": "メッセージ", + "error": "エラー", + "addonErrors": "アドオンエラー" + } +} \ No newline at end of file diff --git a/data/locales/sv.json b/data/locales/sv.json new file mode 100644 index 00000000..6dcc92cf --- /dev/null +++ b/data/locales/sv.json @@ -0,0 +1,207 @@ +{ + "Panels": { + "plugins": "Tillägg", + "themes": "Teman", + "customcss": "Egen CSS" + }, + "Collections": { + "settings": { + "name": "Inställningar", + "general": { + "name": "Generellt", + "emotes": { + "name": "Emotessystem", + "note": "Aktiverar BD's emotessystem" + }, + "publicServers": { + "name": "Publika Servrar", + "note": "Visa knappen för publika servrar" + }, + "voiceDisconnect": { + "name": "Lämna Röst", + "note": "Lämna röstsamtal när Discord stängs ner" + }, + "twentyFourHour": { + "name": "24-Timmars Tidsstämpel", + "note": "Visar 24-timmars tidsstämplar istället för AM/PM" + }, + "classNormalizer": { + "name": "Normalisera Klasser", + "note": "Lägger till statiska klasser för att underlätta teman (ex. lägger till .da-channels på .channels-Ie2l6A)" + }, + "showToasts": { + "name": "Visa Toasts", + "note": "Visar en liten notification för viktig information" + } + }, + "appearance": { + "name": "Utseende", + "voiceMode": { + "name": "Röstläge", + "note": "Gömmer allt förutom röstchatt" + }, + "minimalMode": { + "name": "Minimalt Läge", + "note": "Gömmer och förminskar komponenter" + }, + "hideChannels": { + "name": "Göm Kanaler", + "note": "Gömmer kanaler när minimalt läge är aktiverat" + }, + "darkMode": { + "name": "Mörkt Läge", + "note": "Gör vissa komponenter mörka" + }, + "coloredText": { + "name": "Färgad Text", + "note": "Gör att text får samma färg som rollfärgen" + } + }, + "addons": { + "name": "Tilläggshanterare", + "addonErrors": { + "name": "Visa tilläggsfel", + "note": "Visar en modal med tillägg- och temafel" + }, + "autoScroll": { + "name": "Skrolla till inställningar Scroll To Settings", + "note": "Skrollar automatisks till ett tilläggs inställningar när knappen är tryckt (endast om inställningarna är utanför vy)" + }, + "autoReload": { + "name": "Automatisk Laddning", + "note": "Laddar automatisk in, om och ur tillägg och teman" + } + }, + "customcss": { + "name": "Egen CSS", + "customcss": { + "name": "Egen CSS", + "note": "Aktiverar \"Egen CSS\"-fliken" + }, + "liveUpdate": { + "name": "Uppdatera Direkt", + "note": "Uppdaterar css allteftersom du skriver" + }, + "startDetached": { + "name": "Starta Frånkopplad", + "note": "Öppnar CSS redigeraren i ett separat fönster när \"Egen CSS\"-fliken klickas" + }, + "nativeOpen": { + "name": "Öppna I Standardredigerare", + "note": "Öppnar CSS filen i operativsystemets standardredigerare när \"Egen CSS\"-fliken klickas" + } + }, + "developer": { + "name": "Utvecklarinställningar", + "developerMode": { + "name": "Utvecklarläge", + "note": "Gör det möjligt att aktivera avlusare med F8" + }, + "copySelector": { + "name": "Kopiera Selektor", + "note": "Lägger till valet \"Kopiera Selektor\" i kontext menyn när utvecklarläge är aktiverat" + } + }, + "window": { + "name": "Fönsterinställningar", + "transparency": { + "name": "Aktivera Genomskinlighet", + "note": "Gör att huvudfönstret blir genomskinligt (kräver omstart)" + }, + "frame": { + "name": "Fönsterram", + "note": "Lägger till operativsystemets standard fönsterram runt huvudfönstret" + } + } + }, + "emotes": { + "name": "Emotes", + "general": { + "name": "Generellt", + "download": { + "name": "Ladda Ner Emotes", + "note": "Ladda ner emotes en gång i veckan för att hålla sig uppdaterad" + }, + "emoteMenu": { + "name": "Emote Meny", + "note": "Visa Twitch/Favorit emotes i emote meny" + }, + "hideEmojiMenu": { + "name": "Gömmer Emoji Meny", + "note": "Gömmer Discord's emoji meny när emote meny är aktiverad" + }, + "autoCaps": { + "name": "Automatiskt Stor Bokstav I Emotes", + "note": "Gör automatiskt stor bokstav i emote kommandon" + }, + "showNames": { + "name": "Visa namn", + "note": "Visa namn när musen hålls över en emote" + }, + "modifiers": { + "name": "Visa Emote Modifierare", + "note": "Aktivera emote modifierare (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)" + }, + "animateOnHover": { + "name": "Animera När Musen Hålls Över", + "note": "Animera endast emote midiferare när musen hålls över emoten" + } + }, + "categories": { + "name": "Kategorier", + "twitch": { + "name": "Twitch", + "note": "Visa Twitch global & prenumerant emotes" + }, + "ffz": { + "name": "FrankerFaceZ", + "note": "Visa emotes från FFZ" + }, + "bttv": { + "name": "BetterTTV", + "note": "Visa emotes från BTTV" + } + } + } + }, + "Emotes": { + "downloading": "Laddar ner emotes i backgrunden, ladda inte om", + "downloaded": "Alla emotes laddades ner utan problem.", + "clearEmotes": "Rensa Emote Data", + "favoriteAction": "Favorit!" + }, + "CustomCSS": { + "confirmationText": "Du har osparade ändringar av egna CSS:en. Alla ändringar kommer försvinna om du stänger det här fönstret", + "update": "Uppdatera", + "save": "Spara", + "openNative": "Öppna I Standardredigerare", + "openDetached": "Koppla Loss Fönster", + "settings": "Inställningar för redigerare", + "editorTitle": "Egen CSS Redigerare" + }, + "PublicServers": { + "button": "Publik", + "join": "Gå med", + "joining": "Går med", + "joined": "Gick med", + "loading": "Laddar", + "loadMore": "ladda mer", + "notConnected": "Ingen anslutning till DiscordServers.com!", + "search": "Sök", + "connect": "Anslut", + "reconnect": "Återanslut", + "categories": "Kategorier", + "connection": "Ansluten som: {{username}}#{{discriminator}}", + "results": "Visar {{start}}-{{end}} av {{total}} resultat i {{category}}", + "query": "för {{query}}" + }, + "Modals": { + "confirmClose": "Är du säker?", + "okay": "Okej", + "cancel": "Avbryt", + "name": "Namn", + "message": "Meddelande", + "error": "Fel", + "addonErrors": "Tilläggsfel" + } +} \ No newline at end of file diff --git a/js/main.js b/js/main.js index 43333b30..832215a8 100644 --- a/js/main.js +++ b/js/main.js @@ -335,7 +335,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n en: {\n Panels: {\n plugins: \"Plugins\",\n themes: \"Themes\",\n customcss: \"Custom CSS\"\n },\n Collections: {\n settings: {\n name: \"Settings\",\n general: {\n name: \"General\",\n emotes: {\n name: \"Emote System\",\n note: \"Enables BD's emote system\"\n },\n publicServers: {\n name: \"Public Servers\",\n note: \"Display public servers button\"\n },\n voiceDisconnect: {\n name: \"Voice Disconnect\",\n note: \"Disconnect from voice server when closing Discord\"\n },\n twentyFourHour: {\n name: \"24-Hour Timestamps\",\n note: \"Hides channels when in minimal mode\"\n },\n classNormalizer: {\n name: \"Normalize Classes\",\n note: \"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)\"\n },\n showToasts: {\n name: \"Show Toasts\",\n note: \"Shows a small notification for important information\"\n }\n },\n appearance: {\n name: \"Appearance\",\n voiceMode: {\n name: \"Voice Mode\",\n note: \"Hides everything that isn't voice chat\"\n },\n minimalMode: {\n name: \"Minimal Mode\",\n note: \"Hide elements and reduce the size of elements\"\n },\n hideChannels: {\n name: \"Hide Channels\",\n note: \"Hides channels when in minimal mode\"\n },\n darkMode: {\n name: \"Dark Mode\",\n note: \"Make certain elements dark by default\"\n },\n coloredText: {\n name: \"Colored Text\",\n note: \"Make text colour the same as role color\"\n }\n },\n addons: {\n name: \"Addon Manager\",\n addonErrors: {\n name: \"Show Addon Errors\",\n note: \"Shows a modal with plugin/theme errors\"\n },\n autoScroll: {\n name: \"Scroll To Settings\",\n note: \"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)\"\n },\n autoReload: {\n name: \"Automatic Loading\",\n note: \"Automatically loads, reloads, and unloads plugins and themes\"\n }\n },\n customcss: {\n name: \"Custom CSS\",\n customcss: {\n name: \"Custom CSS\",\n note: \"Enables the Custom CSS tab\"\n },\n liveUpdate: {\n name: \"Live Update\",\n note: \"Updates the css as you type\"\n },\n startDetached: {\n name: \"Start Detached\",\n note: \"Clicking the Custom CSS tab opens the editor in a separate window\"\n },\n nativeOpen: {\n name: \"Open in Native Editor\",\n note: \"Clicking the Custom CSS tab opens your custom css in your native editor\"\n }\n },\n developer: {\n name: \"Developer Settings\",\n developerMode: {\n name: \"Developer Mode\",\n note: \"Allows activating debugger when pressing F8\"\n },\n copySelector: {\n name: \"Copy Selector\",\n note: \"Adds a \\\"Copy Selector\\\" option to context menus when developer mode is active\"\n }\n },\n window: {\n name: \"Window Preferences\",\n transparency: {\n name: \"Enable Transparency\",\n note: \"Enables the main window to be see-through (requires restart)\"\n },\n frame: {\n name: \"Window Frame\",\n note: \"Adds the native os window frame to the main window\"\n }\n }\n },\n emotes: {\n name: \"Emotes\",\n general: {\n name: \"General\",\n download: {\n name: \"Download Emotes\",\n note: \"Download emotes once a week to stay up to date\"\n },\n emoteMenu: {\n name: \"Emote Menu\",\n note: \"Show Twitch/Favourite emotes in emote menu\"\n },\n hideEmojiMenu: {\n name: \"Hide Emoji Menu\",\n note: \"Hides Discord's emoji menu when using emote menu\"\n },\n autoCaps: {\n name: \"Emote Autocapitalization\",\n note: \"Autocapitalize emote commands\"\n },\n showNames: {\n name: \"Show Names\",\n note: \"Show emote names on hover\"\n },\n modifiers: {\n name: \"Show Emote Modifiers\",\n note: \"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)\"\n },\n animateOnHover: {\n name: \"Animate On Hover\",\n note: \"Only animate the emote modifiers on hover\"\n }\n },\n categories: {\n name: \"Categories\",\n twitch: {\n name: \"Twitch\",\n note: \"Show Twitch global & subscriber emotes\"\n },\n ffz: {\n name: \"FrankerFaceZ\",\n note: \"Show emotes from FFZ\"\n },\n bttv: {\n name: \"BetterTTV\",\n note: \"Show emotes from BTTV\"\n }\n }\n }\n },\n Addons: {\n title: \"{{name}} v{{version}} by {{author}}\",\n openFolder: \"Open {{type}} Folder\",\n reload: \"Reload\",\n pluginSettings: \"Settings\",\n website: \"Website\",\n source: \"Source\",\n server: \"Support Server\",\n donate: \"Donate\"\n },\n Emotes: {\n downloading: \"Downloading emotes in the background do not reload.\",\n downloaded: \"All emotes successfully downloaded.\",\n clearEmotes: \"Clear Emote Data\",\n favoriteAction: \"Favorite!\"\n },\n CustomCSS: {\n confirmationText: \"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.\",\n update: \"Update\",\n save: \"Save\",\n openNative: \"Open in System Editor\",\n openDetached: \"Detach Window\",\n settings: \"Editor Settings\",\n editorTitle: \"Custom CSS Editor\"\n },\n PublicServers: {\n button: \"public\",\n join: \"Join\",\n joining: \"Joining\",\n joined: \"Joined\",\n loading: \"Loading\",\n loadMore: \"Load More\",\n notConnected: \"Not connected to DiscordServers.com!\",\n search: \"Search\",\n connect: \"Connect\",\n reconnect: \"Reconnect\",\n categories: \"Categories\",\n connection: \"Connected as: {{username}}#{{discriminator}}\",\n results: \"Showing {{start}}-{{end}} of {{total}} results in {{category}}\",\n query: \"for {{query}}\"\n },\n Modals: {\n confirmClose: \"Are You Sure?\",\n okay: \"Okay\",\n cancel: \"Cancel\",\n name: \"Name\",\n message: \"Message\",\n error: \"Error\",\n addonErrors: \"Addon Errors\"\n }\n },\n es: {\n Collections: {\n settings: {\n name: \"Ajustes\",\n addons: {\n addonErrors: {\n name: \"Mostrar Errores de Addons\"\n }\n }\n }\n }\n },\n sv: {\n Panels: {\n plugins: \"Tillägg\",\n themes: \"Teman\",\n customcss: \"Egen CSS\"\n },\n Collections: {\n settings: {\n name: \"Inställningar\",\n general: {\n name: \"Generellt\",\n emotes: {\n name: \"Emotessystem\",\n note: \"Aktiverar BD's emotessystem\"\n },\n publicServers: {\n name: \"Publika Servrar\",\n note: \"Visa knappen för publika servrar\"\n },\n voiceDisconnect: {\n name: \"Lämna Röst\",\n note: \"Lämna röstsamtal när Discord stängs ner\"\n },\n twentyFourHour: {\n name: \"24-Timmars Tidsstämpel\",\n note: \"Visar 24-timmars tidsstämplar istället för AM/PM\"\n },\n classNormalizer: {\n name: \"Normalisera Klasser\",\n note: \"Lägger till statiska klasser för att underlätta teman (ex. lägger till .da-channels på .channels-Ie2l6A)\"\n },\n showToasts: {\n name: \"Visa Toasts\",\n note: \"Visar en liten notification för viktig information\"\n }\n },\n appearance: {\n name: \"Utseende\",\n voiceMode: {\n name: \"Röstläge\",\n note: \"Gömmer allt förutom röstchatt\"\n },\n minimalMode: {\n name: \"Minimalt Läge\",\n note: \"Gömmer och förminskar komponenter\"\n },\n hideChannels: {\n name: \"Göm Kanaler\",\n note: \"Gömmer kanaler när minimalt läge är aktiverat\"\n },\n darkMode: {\n name: \"Mörkt Läge\",\n note: \"Gör vissa komponenter mörka\"\n },\n coloredText: {\n name: \"Färgad Text\",\n note: \"Gör att text får samma färg som rollfärgen\"\n }\n },\n addons: {\n name: \"Tilläggshanterare\",\n addonErrors: {\n name: \"Visa tilläggsfel\",\n note: \"Visar en modal med tillägg- och temafel\"\n },\n autoScroll: {\n name: \"Skrolla till inställningar Scroll To Settings\",\n note: \"Skrollar automatisks till ett tilläggs inställningar när knappen är tryckt (endast om inställningarna är utanför vy)\"\n },\n autoReload: {\n name: \"Automatisk Laddning\",\n note: \"Laddar automatisk in, om och ur tillägg och teman\"\n }\n },\n customcss: {\n name: \"Egen CSS\",\n customcss: {\n name: \"Egen CSS\",\n note: \"Aktiverar \\\"Egen CSS\\\"-fliken\"\n },\n liveUpdate: {\n name: \"Uppdatera Direkt\",\n note: \"Uppdaterar css allteftersom du skriver\"\n },\n startDetached: {\n name: \"Starta Frånkopplad\",\n note: \"Öppnar CSS redigeraren i ett separat fönster när \\\"Egen CSS\\\"-fliken klickas\"\n },\n nativeOpen: {\n name: \"Öppna I Standardredigerare\",\n note: \"Öppnar CSS filen i operativsystemets standardredigerare när \\\"Egen CSS\\\"-fliken klickas\"\n }\n },\n developer: {\n name: \"Utvecklarinställningar\",\n developerMode: {\n name: \"Utvecklarläge\",\n note: \"Gör det möjligt att aktivera avlusare med F8\"\n },\n copySelector: {\n name: \"Kopiera Selektor\",\n note: \"Lägger till valet \\\"Kopiera Selektor\\\" i kontext menyn när utvecklarläge är aktiverat\"\n }\n },\n window: {\n name: \"Fönsterinställningar\",\n transparency: {\n name: \"Aktivera Genomskinlighet\",\n note: \"Gör att huvudfönstret blir genomskinligt (kräver omstart)\"\n },\n frame: {\n name: \"Fönsterram\",\n note: \"Lägger till operativsystemets standard fönsterram runt huvudfönstret\"\n }\n }\n },\n emotes: {\n name: \"Emotes\",\n general: {\n name: \"Generellt\",\n download: {\n name: \"Ladda Ner Emotes\",\n note: \"Ladda ner emotes en gång i veckan för att hålla sig uppdaterad\"\n },\n emoteMenu: {\n name: \"Emote Meny\",\n note: \"Visa Twitch/Favorit emotes i emote meny\"\n },\n hideEmojiMenu: {\n name: \"Gömmer Emoji Meny\",\n note: \"Gömmer Discord's emoji meny när emote meny är aktiverad\"\n },\n autoCaps: {\n name: \"Automatiskt Stor Bokstav I Emotes\",\n note: \"Gör automatiskt stor bokstav i emote kommandon\"\n },\n showNames: {\n name: \"Visa namn\",\n note: \"Visa namn när musen hålls över en emote\"\n },\n modifiers: {\n name: \"Visa Emote Modifierare\",\n note: \"Aktivera emote modifierare (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)\"\n },\n animateOnHover: {\n name: \"Animera När Musen Hålls Över\",\n note: \"Animera endast emote midiferare när musen hålls över emoten\"\n }\n },\n categories: {\n name: \"Kategorier\",\n twitch: {\n name: \"Twitch\",\n note: \"Visa Twitch global & prenumerant emotes\"\n },\n ffz: {\n name: \"FrankerFaceZ\",\n note: \"Visa emotes från FFZ\"\n },\n bttv: {\n name: \"BetterTTV\",\n note: \"Visa emotes från BTTV\"\n }\n }\n }\n },\n Emotes: {\n downloading: \"Laddar ner emotes i backgrunden, ladda inte om\",\n downloaded: \"Alla emotes laddades ner utan problem.\",\n clearEmotes: \"Rensa Emote Data\",\n favoriteAction: \"Favorit!\"\n },\n CustomCSS: {\n confirmationText: \"Du har osparade ändringar av egna CSS:en. Alla ändringar kommer försvinna om du stänger det här fönstret\",\n update: \"Uppdatera\",\n save: \"Spara\",\n openNative: \"Öppna I Standardredigerare\",\n openDetached: \"Koppla Loss Fönster\",\n settings: \"Inställningar för redigerare\",\n editorTitle: \"Egen CSS Redigerare\"\n },\n PublicServers: {\n button: \"Publik\",\n join: \"Gå med\",\n joining: \"Går med\",\n joined: \"Gick med\",\n loading: \"Laddar\",\n loadMore: \"ladda mer\",\n notConnected: \"Ingen anslutning till DiscordServers.com!\",\n search: \"Sök\",\n connect: \"Anslut\",\n reconnect: \"Återanslut\",\n categories: \"Kategorier\",\n connection: \"Ansluten som: {{username}}#{{discriminator}}\",\n results: \"Visar {{start}}-{{end}} av {{total}} resultat i {{category}}\",\n query: \"för {{query}}\"\n },\n Modals: {\n confirmClose: \"Är du säker?\",\n okay: \"Okej\",\n cancel: \"Avbryt\",\n name: \"Namn\",\n message: \"Meddelande\",\n error: \"Fel\",\n addonErrors: \"Tilläggsfel\"\n }\n },\n ja: {\n Panels: {\n plugins: \"プラグイン\",\n themes: \"テーマ\",\n customcss: \"カスタム CSS\"\n },\n Collections: {\n settings: {\n name: \"BD設定\",\n general: {\n name: \"全般\",\n emotes: {\n name: \"BD絵文字システム\",\n note: \"BetterDiscordの絵文字システムを有効にします。\"\n },\n publicServers: {\n name: \"公開サーバボタン\",\n note: \"公開サーバボタンを表示します\"\n },\n voiceDisconnect: {\n name: \"ボイスチャンネル自動切断\",\n note: \"Discordを終了する際、自動的にボイスチャンネルから切断します。\"\n },\n twentyFourHour: {\n name: \"24時間表記\",\n note: \"時間を24時間表記に変更します。\"\n },\n classNormalizer: {\n name: \"クラス標準化\",\n note: \"値が変動しないCSSクラスを追加します。\"\n },\n showToasts: {\n name: \"トースト表示\",\n note: \"重要な情報を小さな通知として表示します。\"\n }\n },\n appearance: {\n name: \"外観\",\n voiceMode: {\n name: \"ボイスモード\",\n note: \"ボイスチャンネル以外を表示しないようにします\"\n },\n minimalMode: {\n name: \"コンパクトモード\",\n note: \"表示をコンパクトにします。\"\n },\n hideChannels: {\n name: \"チャンネルリストを非表示\",\n note: \"コンパクトモードのときは、チャンネルリストを表示しません\"\n },\n darkMode: {\n name: \"ダークモード\",\n note: \"ダークモードを有効にします\"\n },\n coloredText: {\n name: \"カラーテキスト\",\n note: \"テキストカラーをサーバルールの色と同じにします。\"\n }\n },\n addons: {\n name: \"アドオンマネージャ\",\n addonErrors: {\n name: \"アドオンエラーの表示\",\n note: \"プラグイン/テーマで発生したエラーを表示\"\n },\n autoScroll: {\n name: \"設定までスクロール\",\n note: \"プラグインの設定が収まらない場合、自動でスクロールします\"\n },\n autoReload: {\n name: \"自動リロード\",\n note: \"プラグイン・テーマを自動でロード・アンロード・リロードします\"\n }\n },\n customcss: {\n name: \"カスタム CSS\",\n customcss: {\n name: \"カスタム CSS\",\n note: \"カスタム CSS タブを有効にします\"\n },\n liveUpdate: {\n name: \"自動更新\",\n note: \"コードを自動再読み込みする\"\n },\n startDetached: {\n name: \"デタッチ\",\n note: \"カスタムCSSエディターをウィンドウに独立させます\"\n },\n nativeOpen: {\n name: \"外部エディタを起動\",\n note: \"カスタムCSSを外部のエディタで起動します\"\n }\n },\n developer: {\n name: \"開発者設定\",\n developerMode: {\n name: \"開発者モード\",\n note: \"デバッグモードを有効にします(デバッガ起動はF8)\"\n },\n copySelector: {\n name: \"セレクターコピー\",\n note: \"開発者モードが有効時に、コンテキストメニューに\\\"Copy Selector\\\"を追加します\"\n }\n },\n window: {\n name: \"ウィンドウ設定\",\n transparency: {\n name: \"透過を有効\",\n note: \"Discordのメインウィンドウを透過します(要再起動)\"\n },\n frame: {\n name: \"ウィンドウフレーム表示\",\n note: \"OSにあわせたフレームを追加します\"\n }\n }\n },\n emotes: {\n name: \"絵文字\",\n general: {\n name: \"全般\",\n download: {\n name: \"絵文字をダウンロード\",\n note: \"絵文字をダウンロードします(1週間ごと)\"\n },\n emoteMenu: {\n name: \"絵文字メニュー\",\n note: \"Twitch/お気に入りの絵文字を表示します\"\n },\n hideEmojiMenu: {\n name: \"絵文字メニューを非表示\",\n note: \"Discord標準の絵文字メニューを非表示にします\"\n },\n autoCaps: {\n name: \"絵文字自動補完\",\n note: \"絵文字を自動で補完します\"\n },\n showNames: {\n name: \"名前を表示\",\n note: \"ホバー時に絵文字の名前を表示します\"\n },\n modifiers: {\n name: \"BetterDiscord絵文字を表示\",\n note: \"BetterDiscordの絵文字を有効化します(flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)\"\n },\n animateOnHover: {\n name: \"ホバー時にアニメーション\",\n note: \"ホバー時にアニメーションします(アニメーション絵文字限定)\"\n }\n },\n categories: {\n name: \"カテゴリ\",\n twitch: {\n name: \"Twitch\",\n note: \"Twitchに登録されている絵文字を表示します\"\n },\n ffz: {\n name: \"FrankerFaceZ\",\n note: \"FFZに登録されている絵文字を表示します\"\n },\n bttv: {\n name: \"BetterTTV\",\n note: \"BTTVに登録されている絵文字を表示します\"\n }\n }\n }\n },\n Emotes: {\n downloading: \"絵文字をダウンロード中…\",\n downloaded: \"すべての絵文字のダウンロードが完了しました\",\n clearEmotes: \"絵文字データをクリアします\",\n favoriteAction: \"お気に入り!!\"\n },\n CustomCSS: {\n confirmationText: \"Discordを終了すると、保存されていないカスタムCSSは破棄されます\",\n update: \"更新\",\n save: \"保存\",\n openNative: \"外部エディタで開く\",\n openDetached: \"別ウィンドウで開く\",\n settings: \"エディター設定\",\n editorTitle: \"カスタム CSS エディター\"\n },\n PublicServers: {\n button: \"公開サーバ\",\n join: \"参加\",\n joining: \"参加中\",\n joined: \"参加済み\",\n loading: \"読み込み中\",\n loadMore: \"もっと読み込む\",\n notConnected: \"DiscordServers.comに接続できませんでした\",\n search: \"検索\",\n connect: \"接続\",\n reconnect: \"再接続\",\n categories: \"カテゴリ\",\n connection: \"接続済み: {{username}}#{{discriminator}}\",\n results: \"カテゴリ{{category}} 合計{{total}}中 {{start}}-{{end}}を表示中\",\n query: \"クエリー:{{query}}\"\n },\n Modals: {\n confirmClose: \"Discordを終了しますか?\",\n okay: \"はい\",\n cancel: \"いいえ\",\n name: \"名前\",\n message: \"メッセージ\",\n error: \"エラー\",\n addonErrors: \"アドオンエラー\"\n }\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2RhdGEvc3RyaW5ncy5qcz9iYzcxIl0sIm5hbWVzIjpbImVuIiwiUGFuZWxzIiwicGx1Z2lucyIsInRoZW1lcyIsImN1c3RvbWNzcyIsIkNvbGxlY3Rpb25zIiwic2V0dGluZ3MiLCJuYW1lIiwiZ2VuZXJhbCIsImVtb3RlcyIsIm5vdGUiLCJwdWJsaWNTZXJ2ZXJzIiwidm9pY2VEaXNjb25uZWN0IiwidHdlbnR5Rm91ckhvdXIiLCJjbGFzc05vcm1hbGl6ZXIiLCJzaG93VG9hc3RzIiwiYXBwZWFyYW5jZSIsInZvaWNlTW9kZSIsIm1pbmltYWxNb2RlIiwiaGlkZUNoYW5uZWxzIiwiZGFya01vZGUiLCJjb2xvcmVkVGV4dCIsImFkZG9ucyIsImFkZG9uRXJyb3JzIiwiYXV0b1Njcm9sbCIsImF1dG9SZWxvYWQiLCJsaXZlVXBkYXRlIiwic3RhcnREZXRhY2hlZCIsIm5hdGl2ZU9wZW4iLCJkZXZlbG9wZXIiLCJkZXZlbG9wZXJNb2RlIiwiY29weVNlbGVjdG9yIiwid2luZG93IiwidHJhbnNwYXJlbmN5IiwiZnJhbWUiLCJkb3dubG9hZCIsImVtb3RlTWVudSIsImhpZGVFbW9qaU1lbnUiLCJhdXRvQ2FwcyIsInNob3dOYW1lcyIsIm1vZGlmaWVycyIsImFuaW1hdGVPbkhvdmVyIiwiY2F0ZWdvcmllcyIsInR3aXRjaCIsImZmeiIsImJ0dHYiLCJBZGRvbnMiLCJ0aXRsZSIsIm9wZW5Gb2xkZXIiLCJyZWxvYWQiLCJwbHVnaW5TZXR0aW5ncyIsIndlYnNpdGUiLCJzb3VyY2UiLCJzZXJ2ZXIiLCJkb25hdGUiLCJFbW90ZXMiLCJkb3dubG9hZGluZyIsImRvd25sb2FkZWQiLCJjbGVhckVtb3RlcyIsImZhdm9yaXRlQWN0aW9uIiwiQ3VzdG9tQ1NTIiwiY29uZmlybWF0aW9uVGV4dCIsInVwZGF0ZSIsInNhdmUiLCJvcGVuTmF0aXZlIiwib3BlbkRldGFjaGVkIiwiZWRpdG9yVGl0bGUiLCJQdWJsaWNTZXJ2ZXJzIiwiYnV0dG9uIiwiam9pbiIsImpvaW5pbmciLCJqb2luZWQiLCJsb2FkaW5nIiwibG9hZE1vcmUiLCJub3RDb25uZWN0ZWQiLCJzZWFyY2giLCJjb25uZWN0IiwicmVjb25uZWN0IiwiY29ubmVjdGlvbiIsInJlc3VsdHMiLCJxdWVyeSIsIk1vZGFscyIsImNvbmZpcm1DbG9zZSIsIm9rYXkiLCJjYW5jZWwiLCJtZXNzYWdlIiwiZXJyb3IiLCJlcyIsInN2IiwiamEiXSwibWFwcGluZ3MiOiJBQUFBO0FBQWU7QUFDWEEsSUFBRSxFQUFFO0FBQ0FDLFVBQU0sRUFBRTtBQUNKQyxhQUFPLEVBQUUsU0FETDtBQUVKQyxZQUFNLEVBQUUsUUFGSjtBQUdKQyxlQUFTLEVBQUU7QUFIUCxLQURSO0FBTUFDLGVBQVcsRUFBRTtBQUNUQyxjQUFRLEVBQUU7QUFDTkMsWUFBSSxFQUFFLFVBREE7QUFFTkMsZUFBTyxFQUFFO0FBQ0xELGNBQUksRUFBRSxTQUREO0FBRUxFLGdCQUFNLEVBQUU7QUFDSkYsZ0JBQUksRUFBRSxjQURGO0FBRUpHLGdCQUFJLEVBQUU7QUFGRixXQUZIO0FBTUxDLHVCQUFhLEVBQUU7QUFDWEosZ0JBQUksRUFBRSxnQkFESztBQUVYRyxnQkFBSSxFQUFFO0FBRkssV0FOVjtBQVVMRSx5QkFBZSxFQUFFO0FBQ2JMLGdCQUFJLEVBQUUsa0JBRE87QUFFYkcsZ0JBQUksRUFBRTtBQUZPLFdBVlo7QUFjTEcsd0JBQWMsRUFBRTtBQUNaTixnQkFBSSxFQUFFLG9CQURNO0FBRVpHLGdCQUFJLEVBQUU7QUFGTSxXQWRYO0FBa0JMSSx5QkFBZSxFQUFFO0FBQ2JQLGdCQUFJLEVBQUUsbUJBRE87QUFFYkcsZ0JBQUksRUFBRTtBQUZPLFdBbEJaO0FBc0JMSyxvQkFBVSxFQUFFO0FBQ1JSLGdCQUFJLEVBQUUsYUFERTtBQUVSRyxnQkFBSSxFQUFFO0FBRkU7QUF0QlAsU0FGSDtBQTZCTk0sa0JBQVUsRUFBRTtBQUNSVCxjQUFJLEVBQUUsWUFERTtBQUVSVSxtQkFBUyxFQUFFO0FBQ1BWLGdCQUFJLEVBQUUs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TyxFQUFFLE9BTEU7QUFNWEMsY0FBUSxFQUFFLFNBTkM7QUFPWEMsa0JBQVksRUFBRSwrQkFQSDtBQVFYQyxZQUFNLEVBQUUsSUFSRztBQVNYQyxhQUFPLEVBQUUsSUFURTtBQVVYQyxlQUFTLEVBQUUsS0FWQTtBQVdYbkMsZ0JBQVUsRUFBRSxNQVhEO0FBWVhvQyxnQkFBVSxFQUFFLHNDQVpEO0FBYVhDLGFBQU8sRUFBRSxzREFiRTtBQWNYQyxXQUFLLEVBQUU7QUFkSSxLQXJMZjtBQXFNQUMsVUFBTSxFQUFFO0FBQ0pDLGtCQUFZLEVBQUUsaUJBRFY7QUFFSkMsVUFBSSxFQUFFLElBRkY7QUFHSkMsWUFBTSxFQUFFLEtBSEo7QUFJSjdFLFVBQUksRUFBRSxJQUpGO0FBS0o4RSxhQUFPLEVBQUUsT0FMTDtBQU1KQyxXQUFLLEVBQUUsS0FOSDtBQU9KL0QsaUJBQVcsRUFBRTtBQVBUO0FBck1SO0FBcmJPLENBQWYiLCJmaWxlIjoiLi9zcmMvZGF0YS9zdHJpbmdzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgZW46IHtcclxuICAgICAgICBQYW5lbHM6IHtcclxuICAgICAgICAgICAgcGx1Z2luczogXCJQbHVnaW5zXCIsXHJcbiAgICAgICAgICAgIHRoZW1lczogXCJUaGVtZXNcIixcclxuICAgICAgICAgICAgY3VzdG9tY3NzOiBcIkN1c3RvbSBDU1NcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ29sbGVjdGlvbnM6IHtcclxuICAgICAgICAgICAgc2V0dGluZ3M6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgICAgIGdlbmVyYWw6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkdlbmVyYWxcIixcclxuICAgICAgICAgICAgICAgICAgICBlbW90ZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbW90ZSBTeXN0ZW1cIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJFbmFibGVzIEJEJ3MgZW1vdGUgc3lzdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHB1YmxpY1NlcnZlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJQdWJsaWMgU2VydmVyc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkRpc3BsYXkgcHVibGljIHNlcnZlcnMgYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHZvaWNlRGlzY29ubmVjdDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlZvaWNlIERpc2Nvbm5lY3RcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJEaXNjb25uZWN0IGZyb20gdm9pY2Ugc2VydmVyIHdoZW4gY2xvc2luZyBEaXNjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHR3ZW50eUZvdXJIb3VyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiMjQtSG91ciBUaW1lc3RhbXBzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZXMgY2hhbm5lbHMgd2hlbiBpbiBtaW5pbWFsIG1vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOb3JtYWxpemVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTm9ybWFsaXplIENsYXNzZXNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBZGRzIHN0YWJsZSBjbGFzc2VzIHRvIGVsZW1lbnRzIHRvIGhlbHAgdGhlbWVzLiAoZS5nLiBhZGRzIC5kYS1jaGFubmVscyB0byAuY2hhbm5lbHMtSWUybDZBKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzaG93VG9hc3RzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2hvdyBUb2FzdHNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93cyBhIHNtYWxsIG5vdGlmaWNhdGlvbiBmb3IgaW1wb3J0YW50IGluZm9ybWF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYXBwZWFyYW5jZToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQXBwZWFyYW5jZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHZvaWNlTW9kZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlZvaWNlIE1vZGVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlcyBldmVyeXRoaW5nIHRoYXQgaXNuJ3Qgdm9pY2UgY2hhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBtaW5pbWFsTW9kZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIk1pbmltYWwgTW9kZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkhpZGUgZWxlbWVudHMgYW5kIHJlZHVjZSB0aGUgc2l6ZSBvZiBlbGVtZW50c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBoaWRlQ2hhbm5lbHM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJIaWRlIENoYW5uZWxzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZXMgY2hhbm5lbHMgd2hlbiBpbiBtaW5pbWFsIG1vZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZGFya01vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJEYXJrIE1vZGVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJNYWtlIGNlcnRhaW4gZWxlbWVudHMgZGFyayBieSBkZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yZWRUZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQ29sb3JlZCBUZXh0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiTWFrZSB0ZXh0IGNvbG91ciB0aGUgc2FtZSBhcyByb2xlIGNvbG9yXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYWRkb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJBZGRvbiBNYW5hZ2VyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgYWRkb25FcnJvcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTaG93IEFkZG9uIEVycm9yc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3dzIGEgbW9kYWwgd2l0aCBwbHVnaW4vdGhlbWUgZXJyb3JzXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9TY3JvbGw6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTY3JvbGwgVG8gU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBdXRvLXNjcm9sbHMgdG8gYSBwbHVnaW4ncyBzZXR0aW5ncyB3aGVuIHRoZSBidXR0b24gaXMgY2xpY2tlZCAob25seSBpZiBvdXQgb2YgdmlldylcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b1JlbG9hZDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkF1dG9tYXRpYyBMb2FkaW5nXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQXV0b21hdGljYWxseSBsb2FkcywgcmVsb2FkcywgYW5kIHVubG9hZHMgcGx1Z2lucyBhbmQgdGhlbWVzXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGN1c3RvbWNzczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQ3VzdG9tIENTU1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbWNzczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkN1c3RvbSBDU1NcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJFbmFibGVzIHRoZSBDdXN0b20gQ1NTIHRhYlwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBsaXZlVXBkYXRlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTGl2ZSBVcGRhdGVcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJVcGRhdGVzIHRoZSBjc3MgYXMgeW91IHR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhcnREZXRhY2hlZDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlN0YXJ0IERldGFjaGVkXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQ2xpY2tpbmcgdGhlIEN1c3RvbSBDU1MgdGFiIG9wZW5zIHRoZSBlZGl0b3IgaW4gYSBzZXBhcmF0ZSB3aW5kb3dcIixcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIG5hdGl2ZU9wZW46IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJPcGVuIGluIE5hdGl2ZSBFZGl0b3JcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJDbGlja2luZyB0aGUgQ3VzdG9tIENTUyB0YWIgb3BlbnMgeW91ciBjdXN0b20gY3NzIGluIHlvdXIgbmF0aXZlIGVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGRldmVsb3Blcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRGV2ZWxvcGVyIFNldHRpbmdzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGV2ZWxvcGVyTW9kZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkRldmVsb3BlciBNb2RlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWxsb3dzIGFjdGl2YXRpbmcgZGVidWdnZXIgd2hlbiBwcmVzc2luZyBGOFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBjb3B5U2VsZWN0b3I6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDb3B5IFNlbGVjdG9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWRkcyBhIFxcXCJDb3B5IFNlbGVjdG9yXFxcIiBvcHRpb24gdG8gY29udGV4dCBtZW51cyB3aGVuIGRldmVsb3BlciBtb2RlIGlzIGFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHdpbmRvdzoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiV2luZG93IFByZWZlcmVuY2VzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNwYXJlbmN5OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRW5hYmxlIFRyYW5zcGFyZW5jeVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZXMgdGhlIG1haW4gd2luZG93IHRvIGJlIHNlZS10aHJvdWdoIChyZXF1aXJlcyByZXN0YXJ0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmcmFtZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIldpbmRvdyBGcmFtZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkFkZHMgdGhlIG5hdGl2ZSBvcyB3aW5kb3cgZnJhbWUgdG8gdGhlIG1haW4gd2luZG93XCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVtb3Rlczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJFbW90ZXNcIixcclxuICAgICAgICAgICAgICAgIGdlbmVyYWw6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkdlbmVyYWxcIixcclxuICAgICAgICAgICAgICAgICAgICBkb3dubG9hZDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkRvd25sb2FkIEVtb3Rlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkRvd25sb2FkIGVtb3RlcyBvbmNlIGEgd2VlayB0byBzdGF5IHVwIHRvIGRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZW1vdGVNZW51OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRW1vdGUgTWVudVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgVHdpdGNoL0Zhdm91cml0ZSBlbW90ZXMgaW4gZW1vdGUgbWVudVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBoaWRlRW1vamlNZW51OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiSGlkZSBFbW9qaSBNZW51XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZXMgRGlzY29yZCdzIGVtb2ppIG1lbnUgd2hlbiB1c2luZyBlbW90ZSBtZW51XCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGF1dG9DYXBzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRW1vdGUgQXV0b2NhcGl0YWxpemF0aW9uXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQXV0b2NhcGl0YWxpemUgZW1vdGUgY29tbWFuZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd05hbWVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2hvdyBOYW1lc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgZW1vdGUgbmFtZXMgb24gaG92ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2hvdyBFbW90ZSBNb2RpZmllcnNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJFbmFibGUgZW1vdGUgbW9kcyAoZmxpcCwgc3BpbiwgcHVsc2UsIHNwaW4yLCBzcGluMywgMXNwaW4sIDJzcGluLCAzc3BpbiwgdHIsIGJsLCBiciwgc2hha2UsIHNoYWtlMiwgc2hha2UzLCBmbGFwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBhbmltYXRlT25Ib3Zlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkFuaW1hdGUgT24gSG92ZXJcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJPbmx5IGFuaW1hdGUgdGhlIGVtb3RlIG1vZGlmaWVycyBvbiBob3ZlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNhdGVnb3JpZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkNhdGVnb3JpZXNcIixcclxuICAgICAgICAgICAgICAgICAgICB0d2l0Y2g6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJUd2l0Y2hcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IFR3aXRjaCBnbG9iYWwgJiBzdWJzY3JpYmVyIGVtb3Rlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmZno6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJGcmFua2VyRmFjZVpcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IGVtb3RlcyBmcm9tIEZGWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBidHR2OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQmV0dGVyVFRWXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiU2hvdyBlbW90ZXMgZnJvbSBCVFRWXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIEFkZG9uczoge1xyXG4gICAgICAgICAgICB0aXRsZTogXCJ7e25hbWV9fSB2e3t2ZXJzaW9ufX0gYnkge3thdXRob3J9fVwiLFxyXG4gICAgICAgICAgICBvcGVuRm9sZGVyOiBcIk9wZW4ge3t0eXBlfX0gRm9sZGVyXCIsXHJcbiAgICAgICAgICAgIHJlbG9hZDogXCJSZWxvYWRcIixcclxuICAgICAgICAgICAgcGx1Z2luU2V0dGluZ3M6IFwiU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgd2Vic2l0ZTogXCJXZWJzaXRlXCIsXHJcbiAgICAgICAgICAgIHNvdXJjZTogXCJTb3VyY2VcIixcclxuICAgICAgICAgICAgc2VydmVyOiBcIlN1cHBvcnQgU2VydmVyXCIsXHJcbiAgICAgICAgICAgIGRvbmF0ZTogXCJEb25hdGVcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgRW1vdGVzOiB7XHJcbiAgICAgICAgICAgIGRvd25sb2FkaW5nOiBcIkRvd25sb2FkaW5nIGVtb3RlcyBpbiB0aGUgYmFja2dyb3VuZCBkbyBub3QgcmVsb2FkLlwiLFxyXG4gICAgICAgICAgICBkb3dubG9hZGVkOiBcIkFsbCBlbW90ZXMgc3VjY2Vzc2Z1bGx5IGRvd25sb2FkZWQuXCIsXHJcbiAgICAgICAgICAgIGNsZWFyRW1vdGVzOiBcIkNsZWFyIEVtb3RlIERhdGFcIixcclxuICAgICAgICAgICAgZmF2b3JpdGVBY3Rpb246IFwiRmF2b3JpdGUhXCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIEN1c3RvbUNTUzoge1xyXG4gICAgICAgICAgICBjb25maXJtYXRpb25UZXh0OiBcIllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyB0byB5b3VyIEN1c3RvbSBDU1MuIENsb3NpbmcgdGhpcyB3aW5kb3cgd2lsbCBsb3NlIGFsbCB0aG9zZSBjaGFuZ2VzLlwiLFxyXG4gICAgICAgICAgICB1cGRhdGU6IFwiVXBkYXRlXCIsXHJcbiAgICAgICAgICAgIHNhdmU6IFwiU2F2ZVwiLFxyXG4gICAgICAgICAgICBvcGVuTmF0aXZlOiBcIk9wZW4gaW4gU3lzdGVtIEVkaXRvclwiLFxyXG4gICAgICAgICAgICBvcGVuRGV0YWNoZWQ6IFwiRGV0YWNoIFdpbmRvd1wiLFxyXG4gICAgICAgICAgICBzZXR0aW5nczogXCJFZGl0b3IgU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgZWRpdG9yVGl0bGU6IFwiQ3VzdG9tIENTUyBFZGl0b3JcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgUHVibGljU2VydmVyczoge1xyXG4gICAgICAgICAgICBidXR0b246IFwicHVibGljXCIsXHJcbiAgICAgICAgICAgIGpvaW46IFwiSm9pblwiLFxyXG4gICAgICAgICAgICBqb2luaW5nOiBcIkpvaW5pbmdcIixcclxuICAgICAgICAgICAgam9pbmVkOiBcIkpvaW5lZFwiLFxyXG4gICAgICAgICAgICBsb2FkaW5nOiBcIkxvYWRpbmdcIixcclxuICAgICAgICAgICAgbG9hZE1vcmU6IFwiTG9hZCBNb3JlXCIsXHJcbiAgICAgICAgICAgIG5vdENvbm5lY3RlZDogXCJOb3QgY29ubmVjdGVkIHRvIERpc2NvcmRTZXJ2ZXJzLmNvbSFcIixcclxuICAgICAgICAgICAgc2VhcmNoOiBcIlNlYXJjaFwiLFxyXG4gICAgICAgICAgICBjb25uZWN0OiBcIkNvbm5lY3RcIixcclxuICAgICAgICAgICAgcmVjb25uZWN0OiBcIlJlY29ubmVjdFwiLFxyXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiBcIkNhdGVnb3JpZXNcIixcclxuICAgICAgICAgICAgY29ubmVjdGlvbjogXCJDb25uZWN0ZWQgYXM6IHt7dXNlcm5hbWV9fSN7e2Rpc2NyaW1pbmF0b3J9fVwiLFxyXG4gICAgICAgICAgICByZXN1bHRzOiBcIlNob3dpbmcge3tzdGFydH19LXt7ZW5kfX0gb2Yge3t0b3RhbH19IHJlc3VsdHMgaW4ge3tjYXRlZ29yeX19XCIsXHJcbiAgICAgICAgICAgIHF1ZXJ5OiBcImZvciB7e3F1ZXJ5fX1cIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgTW9kYWxzOiB7XHJcbiAgICAgICAgICAgIGNvbmZpcm1DbG9zZTogXCJBcmUgWW91IFN1cmU/XCIsXHJcbiAgICAgICAgICAgIG9rYXk6IFwiT2theVwiLFxyXG4gICAgICAgICAgICBjYW5jZWw6IFwiQ2FuY2VsXCIsXHJcbiAgICAgICAgICAgIG5hbWU6IFwiTmFtZVwiLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiBcIk1lc3NhZ2VcIixcclxuICAgICAgICAgICAgZXJyb3I6IFwiRXJyb3JcIixcclxuICAgICAgICAgICAgYWRkb25FcnJvcnM6IFwiQWRkb24gRXJyb3JzXCJcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgZXM6IHtcclxuICAgICAgICBDb2xsZWN0aW9uczoge1xyXG4gICAgICAgICAgICBzZXR0aW5nczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJBanVzdGVzXCIsXHJcbiAgICAgICAgICAgICAgICBhZGRvbnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBhZGRvbkVycm9yczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIk1vc3RyYXIgRXJyb3JlcyBkZSBBZGRvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzdjoge1xyXG4gICAgICAgIFBhbmVsczoge1xyXG4gICAgICAgICAgICBwbHVnaW5zOiBcIlRpbGzDpGdnXCIsXHJcbiAgICAgICAgICAgIHRoZW1lczogXCJUZW1hblwiLFxyXG4gICAgICAgICAgICBjdXN0b21jc3M6IFwiRWdlbiBDU1NcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ29sbGVjdGlvbnM6IHtcclxuICAgICAgICAgICAgc2V0dGluZ3M6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiSW5zdMOkbGxuaW5nYXJcIixcclxuICAgICAgICAgICAgICAgIGdlbmVyYWw6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkdlbmVyZWxsdFwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGVtb3Rlczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkVtb3Rlc3N5c3RlbVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkFrdGl2ZXJhciBCRCdzIGVtb3Rlc3N5c3RlbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBwdWJsaWNTZXJ2ZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiUHVibGlrYSBTZXJ2cmFyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiVmlzYSBrbmFwcGVuIGbDtnIgcHVibGlrYSBzZXJ2cmFyXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHZvaWNlRGlzY29ubmVjdDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkzDpG1uYSBSw7ZzdFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkzDpG1uYSByw7ZzdHNhbXRhbCBuw6RyIERpc2NvcmQgc3TDpG5ncyBuZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdHdlbnR5Rm91ckhvdXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCIyNC1UaW1tYXJzIFRpZHNzdMOkbXBlbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlZpc2FyIDI0LXRpbW1hcnMgdGlkc3N0w6RtcGxhciBpc3TDpGxsZXQgZsO2ciBBTS9QTVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05vcm1hbGl6ZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJOb3JtYWxpc2VyYSBLbGFzc2VyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiTMOkZ2dlciB0aWxsIHN0YXRpc2thIGtsYXNzZXIgZsO2ciBhdHQgdW5kZXJsw6R0dGEgdGVtYW4gKGV4LiBsw6RnZ2VyIHRpbGwgLmRhLWNoYW5uZWxzIHDDpSAuY2hhbm5lbHMtSWUybDZBKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzaG93VG9hc3RzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVmlzYSBUb2FzdHNcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJWaXNhciBlbiBsaXRlbiBub3RpZmljYXRpb24gZsO2ciB2aWt0aWcgaW5mb3JtYXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJVdHNlZW5kZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHZvaWNlTW9kZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlLDtnN0bMOkZ2VcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJHw7ZtbWVyIGFsbHQgZsO2cnV0b20gcsO2c3RjaGF0dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBtaW5pbWFsTW9kZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIk1pbmltYWx0IEzDpGdlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiR8O2bW1lciBvY2ggZsO2cm1pbnNrYXIga29tcG9uZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGlkZUNoYW5uZWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiR8O2bSBLYW5hbGVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiR8O2bW1lciBrYW5hbGVyIG7DpHIgbWluaW1hbHQgbMOkZ2Ugw6RyIGFrdGl2ZXJhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBkYXJrTW9kZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIk3DtnJrdCBMw6RnZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkfDtnIgdmlzc2Ega29tcG9uZW50ZXIgbcO2cmthXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yZWRUZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRsOkcmdhZCBUZXh0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiR8O2ciBhdHQgdGV4dCBmw6VyIHNhbW1hIGbDpHJnIHNvbSByb2xsZsOkcmdlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGFkZG9uczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVGlsbMOkZ2dzaGFudGVyYXJlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgYWRkb25FcnJvcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJWaXNhIHRpbGzDpGdnc2ZlbFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlZpc2FyIGVuIG1vZGFsIG1lZCB0aWxsw6RnZy0gb2NoIHRlbWFmZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b1Njcm9sbDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNrcm9sbGEgdGlsbCBpbnN0w6RsbG5pbmdhciBTY3JvbGwgVG8gU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTa3JvbGxhciBhdXRvbWF0aXNrcyB0aWxsIGV0dCB0aWxsw6RnZ3MgaW5zdMOkbGxuaW5nYXIgbsOkciBrbmFwcGVuIMOkciB0cnlja3QgKGVuZGFzdCBvbSBpbnN0w6RsbG5pbmdhcm5hIMOkciB1dGFuZsO2ciB2eSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b1JlbG9hZDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkF1dG9tYXRpc2sgTGFkZG5pbmdcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJMYWRkYXIgYXV0b21hdGlzayBpbiwgb20gb2NoIHVyIHRpbGzDpGdnIG9jaCB0ZW1hblwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBjdXN0b21jc3M6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkVnZW4gQ1NTXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgY3VzdG9tY3NzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRWdlbiBDU1NcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBa3RpdmVyYXIgXFxcIkVnZW4gQ1NTXFxcIi1mbGlrZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgbGl2ZVVwZGF0ZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlVwcGRhdGVyYSBEaXJla3RcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJVcHBkYXRlcmFyIGNzcyBhbGx0ZWZ0ZXJzb20gZHUgc2tyaXZlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzdGFydERldGFjaGVkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU3RhcnRhIEZyw6Vua29wcGxhZFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIsOWcHBuYXIgQ1NTIHJlZGlnZXJhcmVuIGkgZXR0IHNlcGFyYXQgZsO2bnN0ZXIgbsOkciBcXFwiRWdlbiBDU1NcXFwiLWZsaWtlbiBrbGlja2FzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBuYXRpdmVPcGVuOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiw5ZwcG5hIEkgU3RhbmRhcmRyZWRpZ2VyYXJlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiw5ZwcG5hciBDU1MgZmlsZW4gaSBvcGVyYXRpdnN5c3RlbWV0cyBzdGFuZGFyZHJlZGlnZXJhcmUgbsOkciBcXFwiRWdlbiBDU1NcXFwiLWZsaWtlbiBrbGlja2FzXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZGV2ZWxvcGVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJVdHZlY2tsYXJpbnN0w6RsbG5pbmdhclwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGRldmVsb3Blck1vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJVdHZlY2tsYXJsw6RnZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkfDtnIgZGV0IG3DtmpsaWd0IGF0dCBha3RpdmVyYSBhdmx1c2FyZSBtZWQgRjhcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY29weVNlbGVjdG9yOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiS29waWVyYSBTZWxla3RvclwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkzDpGdnZXIgdGlsbCB2YWxldCBcXFwiS29waWVyYSBTZWxla3RvclxcXCIgaSBrb250ZXh0IG1lbnluIG7DpHIgdXR2ZWNrbGFybMOkZ2Ugw6RyIGFrdGl2ZXJhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHdpbmRvdzoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRsO2bnN0ZXJpbnN0w6RsbG5pbmdhclwiLFxyXG4gICAgICAgICAgICAgICAgICAgIHRyYW5zcGFyZW5jeToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkFrdGl2ZXJhIEdlbm9tc2tpbmxpZ2hldFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkfDtnIgYXR0IGh1dnVkZsO2bnN0cmV0IGJsaXIgZ2Vub21za2lubGlndCAoa3LDpHZlciBvbXN0YXJ0KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBmcmFtZToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkbDtm5zdGVycmFtXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiTMOkZ2dlciB0aWxsIG9wZXJhdGl2c3lzdGVtZXRzIHN0YW5kYXJkIGbDtm5zdGVycmFtIHJ1bnQgaHV2dWRmw7Zuc3RyZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZW1vdGVzOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkVtb3Rlc1wiLFxyXG4gICAgICAgICAgICAgICAgZ2VuZXJhbDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiR2VuZXJlbGx0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJMYWRkYSBOZXIgRW1vdGVzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiTGFkZGEgbmVyIGVtb3RlcyBlbiBnw6VuZyBpIHZlY2thbiBmw7ZyIGF0dCBow6VsbGEgc2lnIHVwcGRhdGVyYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZW1vdGVNZW51OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRW1vdGUgTWVueVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlZpc2EgVHdpdGNoL0Zhdm9yaXQgZW1vdGVzIGkgZW1vdGUgbWVueVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBoaWRlRW1vamlNZW51OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiR8O2bW1lciBFbW9qaSBNZW55XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiR8O2bW1lciBEaXNjb3JkJ3MgZW1vamkgbWVueSBuw6RyIGVtb3RlIG1lbnkgw6RyIGFrdGl2ZXJhZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBhdXRvQ2Fwczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkF1dG9tYXRpc2t0IFN0b3IgQm9rc3RhdiBJIEVtb3Rlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkfDtnIgYXV0b21hdGlza3Qgc3RvciBib2tzdGF2IGkgZW1vdGUga29tbWFuZG9uXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dOYW1lczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlZpc2EgbmFtblwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlZpc2EgbmFtbiBuw6RyIG11c2VuIGjDpWxscyDDtnZlciBlbiBlbW90ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJWaXNhIEVtb3RlIE1vZGlmaWVyYXJlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWt0aXZlcmEgZW1vdGUgbW9kaWZpZXJhcmUgKGZsaXAsIHNwaW4sIHB1bHNlLCBzcGluMiwgc3BpbjMsIDFzcGluLCAyc3BpbiwgM3NwaW4sIHRyLCBibCwgYnIsIHNoYWtlLCBzaGFrZTIsIHNoYWtlMywgZmxhcClcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZU9uSG92ZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJBbmltZXJhIE7DpHIgTXVzZW4gSMOlbGxzIMOWdmVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQW5pbWVyYSBlbmRhc3QgZW1vdGUgbWlkaWZlcmFyZSBuw6RyIG11c2VuIGjDpWxscyDDtnZlciBlbW90ZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJLYXRlZ29yaWVyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdHdpdGNoOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVHdpdGNoXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiVmlzYSBUd2l0Y2ggZ2xvYmFsICYgcHJlbnVtZXJhbnQgZW1vdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZmejoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkZyYW5rZXJGYWNlWlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlZpc2EgZW1vdGVzIGZyw6VuIEZGWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBidHR2OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQmV0dGVyVFRWXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiVmlzYSBlbW90ZXMgZnLDpW4gQlRUVlwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBFbW90ZXM6IHtcclxuICAgICAgICAgICAgZG93bmxvYWRpbmc6IFwiTGFkZGFyIG5lciBlbW90ZXMgaSBiYWNrZ3J1bmRlbiwgbGFkZGEgaW50ZSBvbVwiLFxyXG4gICAgICAgICAgICBkb3dubG9hZGVkOiBcIkFsbGEgZW1vdGVzIGxhZGRhZGVzIG5lciB1dGFuIHByb2JsZW0uXCIsXHJcbiAgICAgICAgICAgIGNsZWFyRW1vdGVzOiBcIlJlbnNhIEVtb3RlIERhdGFcIixcclxuICAgICAgICAgICAgZmF2b3JpdGVBY3Rpb246IFwiRmF2b3JpdCFcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgQ3VzdG9tQ1NTOiB7XHJcbiAgICAgICAgICAgIGNvbmZpcm1hdGlvblRleHQ6IFwiRHUgaGFyIG9zcGFyYWRlIMOkbmRyaW5nYXIgYXYgZWduYSBDU1M6ZW4uIEFsbGEgw6RuZHJpbmdhciBrb21tZXIgZsO2cnN2aW5uYSBvbSBkdSBzdMOkbmdlciBkZXQgaMOkciBmw7Zuc3RyZXRcIixcclxuICAgICAgICAgICAgdXBkYXRlOiBcIlVwcGRhdGVyYVwiLFxyXG4gICAgICAgICAgICBzYXZlOiBcIlNwYXJhXCIsXHJcbiAgICAgICAgICAgIG9wZW5OYXRpdmU6IFwiw5ZwcG5hIEkgU3RhbmRhcmRyZWRpZ2VyYXJlXCIsXHJcbiAgICAgICAgICAgIG9wZW5EZXRhY2hlZDogXCJLb3BwbGEgTG9zcyBGw7Zuc3RlclwiLFxyXG4gICAgICAgICAgICBzZXR0aW5nczogXCJJbnN0w6RsbG5pbmdhciBmw7ZyIHJlZGlnZXJhcmVcIixcclxuICAgICAgICAgICAgZWRpdG9yVGl0bGU6IFwiRWdlbiBDU1MgUmVkaWdlcmFyZVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBQdWJsaWNTZXJ2ZXJzOiB7XHJcbiAgICAgICAgICAgIGJ1dHRvbjogXCJQdWJsaWtcIixcclxuICAgICAgICAgICAgam9pbjogXCJHw6UgbWVkXCIsXHJcbiAgICAgICAgICAgIGpvaW5pbmc6IFwiR8OlciBtZWRcIixcclxuICAgICAgICAgICAgam9pbmVkOiBcIkdpY2sgbWVkXCIsXHJcbiAgICAgICAgICAgIGxvYWRpbmc6IFwiTGFkZGFyXCIsXHJcbiAgICAgICAgICAgIGxvYWRNb3JlOiBcImxhZGRhIG1lclwiLFxyXG4gICAgICAgICAgICBub3RDb25uZWN0ZWQ6IFwiSW5nZW4gYW5zbHV0bmluZyB0aWxsIERpc2NvcmRTZXJ2ZXJzLmNvbSFcIixcclxuICAgICAgICAgICAgc2VhcmNoOiBcIlPDtmtcIixcclxuICAgICAgICAgICAgY29ubmVjdDogXCJBbnNsdXRcIixcclxuICAgICAgICAgICAgcmVjb25uZWN0OiBcIsOFdGVyYW5zbHV0XCIsXHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IFwiS2F0ZWdvcmllclwiLFxyXG4gICAgICAgICAgICBjb25uZWN0aW9uOiBcIkFuc2x1dGVuIHNvbToge3t1c2VybmFtZX19I3t7ZGlzY3JpbWluYXRvcn19XCIsXHJcbiAgICAgICAgICAgIHJlc3VsdHM6IFwiVmlzYXIge3tzdGFydH19LXt7ZW5kfX0gYXYge3t0b3RhbH19IHJlc3VsdGF0IGkge3tjYXRlZ29yeX19XCIsXHJcbiAgICAgICAgICAgIHF1ZXJ5OiBcImbDtnIge3txdWVyeX19XCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIE1vZGFsczoge1xyXG4gICAgICAgICAgICBjb25maXJtQ2xvc2U6IFwiw4RyIGR1IHPDpGtlcj9cIixcclxuICAgICAgICAgICAgb2theTogXCJPa2VqXCIsXHJcbiAgICAgICAgICAgIGNhbmNlbDogXCJBdmJyeXRcIixcclxuICAgICAgICAgICAgbmFtZTogXCJOYW1uXCIsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IFwiTWVkZGVsYW5kZVwiLFxyXG4gICAgICAgICAgICBlcnJvcjogXCJGZWxcIixcclxuICAgICAgICAgICAgYWRkb25FcnJvcnM6IFwiVGlsbMOkZ2dzZmVsXCJcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgamE6IHtcclxuICAgICAgICBQYW5lbHM6IHtcclxuICAgICAgICAgICAgcGx1Z2luczogXCLjg5fjg6njgrDjgqTjg7NcIixcclxuICAgICAgICAgICAgdGhlbWVzOiBcIuODhuODvOODnlwiLFxyXG4gICAgICAgICAgICBjdXN0b21jc3M6IFwi44Kr44K544K/44OgIENTU1wiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBDb2xsZWN0aW9uczoge1xyXG4gICAgICAgICAgICBzZXR0aW5nczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJCROioreWumlwiLFxyXG4gICAgICAgICAgICAgICAgZ2VuZXJhbDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi5YWo6IisXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZW1vdGVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQkTntbXmloflrZfjgrfjgrnjg4bjg6BcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJCZXR0ZXJEaXNjb3Jk44Gu57W15paH5a2X44K344K544OG44Og44KS5pyJ5Yq544Gr44GX44G+44GZ44CCXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHB1YmxpY1NlcnZlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCLlhazplovjgrXjg7zjg5Djg5zjgr/jg7NcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCLlhazplovjgrXjg7zjg5Djg5zjgr/jg7PjgpLooajnpLrjgZfjgb7jgZlcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdm9pY2VEaXNjb25uZWN0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi44Oc44Kk44K544OB44Oj44Oz44ON44Or6Ieq5YuV5YiH5patXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRGlzY29yZOOCkue1guS6huOBmeOCi+mam+OAgeiHquWLleeahOOBq+ODnOOCpOOCueODgeODo+ODs+ODjeODq+OBi+OCieWIh+aWreOBl+OBvuOBmeOAglwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB0d2VudHlGb3VySG91cjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIjI05pmC6ZaT6KGo6KiYXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwi5pmC6ZaT44KSMjTmmYLplpPooajoqJjjgavlpInmm7TjgZfjgb7jgZnjgIJcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOb3JtYWxpemVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi44Kv44Op44K55qiZ5rqW5YyWXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwi5YCk44GM5aSJ5YuV44GX44Gq44GEQ1NT44Kv44Op44K544KS6L+95Yqg44GX44G+44GZ44CCXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dUb2FzdHM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCLjg4jjg7zjgrnjg4jooajnpLpcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCLph43opoHjgarmg4XloLHjgpLlsI/jgZXjgarpgJrnn6XjgajjgZfjgabooajnpLrjgZfjgb7jgZnjgIJcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhcHBlYXJhbmNlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCLlpJboprNcIixcclxuICAgICAgICAgICAgICAgICAgICB2b2ljZU1vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCLjg5zjgqTjgrnjg6Ljg7zjg4lcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCLjg5zjgqTjgrnjg4Hjg6Pjg7Pjg43jg6vku6XlpJbjgpLooajnpLrjgZfjgarjgYTjgojjgYbjgavjgZfjgb7jgZlcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgbWluaW1hbE1vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCLjgrPjg7Pjg5Hjgq/jg4jjg6Ljg7zjg4lcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCLooajnpLrjgpLjgrPjg7Pjg5Hjgq/jg4jjgavjgZfjgb7jgZnjgIJcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgaGlkZUNoYW5uZWxzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi44OB44Oj44Oz44ON44Or44Oq44K544OI44KS6Z2e6KGo56S6XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwi44Kz44Oz44OR44Kv44OI44Oi44O844OJ44Gu44Go44GN44Gv44CB44OB44Oj44Oz44ON44Or44Oq44K544OI44KS6KGo56S644GX44G+44Gb44KTXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGRhcmtNb2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi44OA44O844Kv44Oi44O844OJXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwi44OA44O844Kv44Oi44O844OJ44KS5pyJ5Yq544Gr44GX44G+44GZXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yZWRUZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi44Kr44Op44O844OG44Kt44K544OIXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwi44OG44Kt44K544OI44Kr44Op44O844KS44K144O844OQ44Or44O844Or44Gu6Imy44Go5ZCM44GY44Gr44GX44G+44GZ44CCXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYWRkb25zOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCLjgqLjg4njgqrjg7Pjg57jg43jg7zjgrjjg6NcIixcclxuICAgICAgICAgICAgICAgICAgICBhZGRvbkVycm9yczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIuOCouODieOCquODs+OCqOODqeODvOOBruihqOekulwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIuODl+ODqeOCsOOCpOODsy/jg4bjg7zjg57jgafnmbrnlJ/jgZfjgZ/jgqjjg6njg7zjgpLooajnpLpcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgYXV0b1Njcm9sbDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIuioreWumuOBvuOBp+OCueOCr+ODreODvOODq1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIuODl+ODqeOCsOOCpOODs+OBruioreWumuOBjOWPjuOBvuOCieOBquOBhOWgtOWQiOOAgeiHquWLleOBp+OCueOCr+ODreODvOODq+OBl+OBvuOBmVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBhdXRvUmVsb2FkOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi6Ieq5YuV44Oq44Ot44O844OJXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwi44OX44Op44Kw44Kk44Oz44O744OG44O844Oe44KS6Ieq5YuV44Gn44Ot44O844OJ44O744Ki44Oz44Ot44O844OJ44O744Oq44Ot44O844OJ44GX44G+44GZXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGN1c3RvbWNzczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi44Kr44K544K/44OgIENTU1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbWNzczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIuOCq+OCueOCv+ODoCBDU1NcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCLjgqvjgrnjgr/jg6AgQ1NTIOOCv+ODluOCkuacieWKueOBq+OBl+OBvuOBmVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBsaXZlVXBkYXRlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi6Ieq5YuV5pu05pawXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwi44Kz44O844OJ44KS6Ieq5YuV5YaN6Kqt44G/6L6844G/44GZ44KLXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHN0YXJ0RGV0YWNoZWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCLjg4fjgr/jg4Pjg4FcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCLjgqvjgrnjgr/jg6BDU1Pjgqjjg4fjgqPjgr/jg7zjgpLjgqbjgqPjg7Pjg4njgqbjgavni6znq4vjgZXjgZvjgb7jgZlcIixcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIG5hdGl2ZU9wZW46IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCLlpJbpg6jjgqjjg4fjgqPjgr/jgpLotbfli5VcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCLjgqvjgrnjgr/jg6BDU1PjgpLlpJbpg6jjga7jgqjjg4fjgqPjgr/jgafotbfli5XjgZfjgb7jgZlcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBkZXZlbG9wZXI6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIumWi+eZuuiAheioreWumlwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGRldmVsb3Blck1vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCLplovnmbrogIXjg6Ljg7zjg4lcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCLjg4fjg5Djg4PjgrDjg6Ljg7zjg4njgpLmnInlirnjgavjgZfjgb7jgZko44OH44OQ44OD44Ks6LW35YuV44GvRjgpXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGNvcHlTZWxlY3Rvcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIuOCu+ODrOOCr+OCv+ODvOOCs+ODlOODvFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIumWi+eZuuiAheODouODvOODieOBjOacieWKueaZguOBq+OAgeOCs+ODs+ODhuOCreOCueODiOODoeODi+ODpeODvOOBq1xcXCJDb3B5IFNlbGVjdG9yXFxcIuOCkui/veWKoOOBl+OBvuOBmVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHdpbmRvdzoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi44Km44Kj44Oz44OJ44Km6Kit5a6aXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNwYXJlbmN5OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi6YCP6YGO44KS5pyJ5Yq5XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRGlzY29yZOOBruODoeOCpOODs+OCpuOCo+ODs+ODieOCpuOCkumAj+mBjuOBl+OBvuOBmSjopoHlho3otbfli5UpXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZyYW1lOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi44Km44Kj44Oz44OJ44Km44OV44Os44O844Og6KGo56S6XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiT1PjgavjgYLjgo/jgZvjgZ/jg5Xjg6zjg7zjg6DjgpLov73liqDjgZfjgb7jgZlcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZW1vdGVzOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIue1teaWh+Wtl1wiLFxyXG4gICAgICAgICAgICAgICAgZ2VuZXJhbDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi5YWo6IisXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZG93bmxvYWQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCLntbXmloflrZfjgpLjg4Djgqbjg7Pjg63jg7zjg4lcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCLntbXmloflrZfjgpLjg4Djgqbjg7Pjg63jg7zjg4njgZfjgb7jgZkoMemAsemWk+OBlOOBqClcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgZW1vdGVNZW51OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi57W15paH5a2X44Oh44OL44Ol44O8XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiVHdpdGNoL+OBiuawl+OBq+WFpeOCiuOBrue1teaWh+Wtl+OCkuihqOekuuOBl+OBvuOBmVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBoaWRlRW1vamlNZW51OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi57W15paH5a2X44Oh44OL44Ol44O844KS6Z2e6KGo56S6XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiRGlzY29yZOaomea6luOBrue1teaWh+Wtl+ODoeODi+ODpeODvOOCkumdnuihqOekuuOBq+OBl+OBvuOBmVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBhdXRvQ2Fwczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIue1teaWh+Wtl+iHquWLleijnOWujFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIue1teaWh+Wtl+OCkuiHquWLleOBp+ijnOWujOOBl+OBvuOBmVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBzaG93TmFtZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXCLlkI3liY3jgpLooajnpLpcIixcclxuICAgICAgICAgICAgICAgICAgICAgICAgbm90ZTogXCLjg5vjg5Djg7zmmYLjgavntbXmloflrZfjga7lkI3liY3jgpLooajnpLrjgZfjgb7jgZlcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQmV0dGVyRGlzY29yZOe1teaWh+Wtl+OCkuihqOekulwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkJldHRlckRpc2NvcmTjga7ntbXmloflrZfjgpLmnInlirnljJbjgZfjgb7jgZkoZmxpcCwgc3BpbiwgcHVsc2UsIHNwaW4yLCBzcGluMywgMXNwaW4sIDJzcGluLCAzc3BpbiwgdHIsIGJsLCBiciwgc2hha2UsIHNoYWtlMiwgc2hha2UzLCBmbGFwKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBhbmltYXRlT25Ib3Zlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIuODm+ODkOODvOaZguOBq+OCouODi+ODoeODvOOCt+ODp+ODs1wiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIuODm+ODkOODvOaZguOBq+OCouODi+ODoeODvOOCt+ODp+ODs+OBl+OBvuOBmSjjgqLjg4vjg6Hjg7zjgrfjg6fjg7PntbXmloflrZfpmZDlrpopXCJcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY2F0ZWdvcmllczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwi44Kr44OG44K044OqXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgdHdpdGNoOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVHdpdGNoXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiVHdpdGNo44Gr55m76Yyy44GV44KM44Gm44GE44KL57W15paH5a2X44KS6KGo56S644GX44G+44GZXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIGZmejoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkZyYW5rZXJGYWNlWlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkZGWuOBq+eZu+mMsuOBleOCjOOBpuOBhOOCi+e1teaWh+Wtl+OCkuihqOekuuOBl+OBvuOBmVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICBidHR2OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQmV0dGVyVFRWXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQlRUVuOBq+eZu+mMsuOBleOCjOOBpuOBhOOCi+e1teaWh+Wtl+OCkuihqOekuuOBl+OBvuOBmVwiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBFbW90ZXM6IHtcclxuICAgICAgICAgICAgZG93bmxvYWRpbmc6IFwi57W15paH5a2X44KS44OA44Km44Oz44Ot44O844OJ5Lit4oCmXCIsXHJcbiAgICAgICAgICAgIGRvd25sb2FkZWQ6IFwi44GZ44G544Gm44Gu57W15paH5a2X44Gu44OA44Km44Oz44Ot44O844OJ44GM5a6M5LqG44GX44G+44GX44GfXCIsXHJcbiAgICAgICAgICAgIGNsZWFyRW1vdGVzOiBcIue1teaWh+Wtl+ODh+ODvOOCv+OCkuOCr+ODquOCouOBl+OBvuOBmVwiLFxyXG4gICAgICAgICAgICBmYXZvcml0ZUFjdGlvbjogXCLjgYrmsJfjgavlhaXjgoohIVwiXHJcbiAgICAgICAgfSxcclxuICAgICAgICBDdXN0b21DU1M6IHtcclxuICAgICAgICAgICAgY29uZmlybWF0aW9uVGV4dDogXCJEaXNjb3Jk44KS57WC5LqG44GZ44KL44Go44CB5L+d5a2Y44GV44KM44Gm44GE44Gq44GE44Kr44K544K/44OgQ1NT44Gv56C05qOE44GV44KM44G+44GZXCIsXHJcbiAgICAgICAgICAgIHVwZGF0ZTogXCLmm7TmlrBcIixcclxuICAgICAgICAgICAgc2F2ZTogXCLkv53lrZhcIixcclxuICAgICAgICAgICAgb3Blbk5hdGl2ZTogXCLlpJbpg6jjgqjjg4fjgqPjgr/jgafplovjgY9cIixcclxuICAgICAgICAgICAgb3BlbkRldGFjaGVkOiBcIuWIpeOCpuOCo+ODs+ODieOCpuOBp+mWi+OBj1wiLFxyXG4gICAgICAgICAgICBzZXR0aW5nczogXCLjgqjjg4fjgqPjgr/jg7zoqK3lrppcIixcclxuICAgICAgICAgICAgZWRpdG9yVGl0bGU6IFwi44Kr44K544K/44OgIENTUyDjgqjjg4fjgqPjgr/jg7xcIlxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgUHVibGljU2VydmVyczoge1xyXG4gICAgICAgICAgICBidXR0b246IFwi5YWs6ZaL44K144O844OQXCIsXHJcbiAgICAgICAgICAgIGpvaW46IFwi5Y+C5YqgXCIsXHJcbiAgICAgICAgICAgIGpvaW5pbmc6IFwi5Y+C5Yqg5LitXCIsXHJcbiAgICAgICAgICAgIGpvaW5lZDogXCLlj4LliqDmuIjjgb9cIixcclxuICAgICAgICAgICAgbG9hZGluZzogXCLoqq3jgb/ovrzjgb/kuK1cIixcclxuICAgICAgICAgICAgbG9hZE1vcmU6IFwi44KC44Gj44Go6Kqt44G/6L6844KAXCIsXHJcbiAgICAgICAgICAgIG5vdENvbm5lY3RlZDogXCJEaXNjb3JkU2VydmVycy5jb23jgavmjqXntprjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ9cIixcclxuICAgICAgICAgICAgc2VhcmNoOiBcIuaknOe0olwiLFxyXG4gICAgICAgICAgICBjb25uZWN0OiBcIuaOpee2mlwiLFxyXG4gICAgICAgICAgICByZWNvbm5lY3Q6IFwi5YaN5o6l57aaXCIsXHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IFwi44Kr44OG44K044OqXCIsXHJcbiAgICAgICAgICAgIGNvbm5lY3Rpb246IFwi5o6l57aa5riI44G/OiB7e3VzZXJuYW1lfX0je3tkaXNjcmltaW5hdG9yfX1cIixcclxuICAgICAgICAgICAgcmVzdWx0czogXCLjgqvjg4bjgrTjg6p7e2NhdGVnb3J5fX0gIOWQiOioiHt7dG90YWx9feS4rSB7e3N0YXJ0fX0te3tlbmR9feOCkuihqOekuuS4rVwiLFxyXG4gICAgICAgICAgICBxdWVyeTogXCLjgq/jgqjjg6rjg7w6e3txdWVyeX19XCJcclxuICAgICAgICB9LFxyXG4gICAgICAgIE1vZGFsczoge1xyXG4gICAgICAgICAgICBjb25maXJtQ2xvc2U6IFwiRGlzY29yZOOCkue1guS6huOBl+OBvuOBmeOBiz9cIixcclxuICAgICAgICAgICAgb2theTogXCLjga/jgYRcIixcclxuICAgICAgICAgICAgY2FuY2VsOiBcIuOBhOOBhOOBiFwiLFxyXG4gICAgICAgICAgICBuYW1lOiBcIuWQjeWJjVwiLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiBcIuODoeODg+OCu+ODvOOCuFwiLFxyXG4gICAgICAgICAgICBlcnJvcjogXCLjgqjjg6njg7xcIixcclxuICAgICAgICAgICAgYWRkb25FcnJvcnM6IFwi44Ki44OJ44Kq44Oz44Ko44Op44O8XCJcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn07XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/data/strings.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n Panels: {\n plugins: \"Plugins\",\n themes: \"Themes\",\n customcss: \"Custom CSS\"\n },\n Collections: {\n settings: {\n name: \"Settings\",\n general: {\n name: \"General\",\n emotes: {\n name: \"Emote System\",\n note: \"Enables BD's emote system\"\n },\n publicServers: {\n name: \"Public Servers\",\n note: \"Display public servers button\"\n },\n voiceDisconnect: {\n name: \"Voice Disconnect\",\n note: \"Disconnect from voice server when closing Discord\"\n },\n twentyFourHour: {\n name: \"24-Hour Timestamps\",\n note: \"Hides channels when in minimal mode\"\n },\n classNormalizer: {\n name: \"Normalize Classes\",\n note: \"Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)\"\n },\n showToasts: {\n name: \"Show Toasts\",\n note: \"Shows a small notification for important information\"\n }\n },\n appearance: {\n name: \"Appearance\",\n voiceMode: {\n name: \"Voice Mode\",\n note: \"Hides everything that isn't voice chat\"\n },\n minimalMode: {\n name: \"Minimal Mode\",\n note: \"Hide elements and reduce the size of elements\"\n },\n hideChannels: {\n name: \"Hide Channels\",\n note: \"Hides channels when in minimal mode\"\n },\n darkMode: {\n name: \"Dark Mode\",\n note: \"Make certain elements dark by default\"\n },\n coloredText: {\n name: \"Colored Text\",\n note: \"Make text colour the same as role color\"\n }\n },\n addons: {\n name: \"Addon Manager\",\n addonErrors: {\n name: \"Show Addon Errors\",\n note: \"Shows a modal with plugin/theme errors\"\n },\n autoScroll: {\n name: \"Scroll To Settings\",\n note: \"Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)\"\n },\n autoReload: {\n name: \"Automatic Loading\",\n note: \"Automatically loads, reloads, and unloads plugins and themes\"\n }\n },\n customcss: {\n name: \"Custom CSS\",\n customcss: {\n name: \"Custom CSS\",\n note: \"Enables the Custom CSS tab\"\n },\n liveUpdate: {\n name: \"Live Update\",\n note: \"Updates the css as you type\"\n },\n startDetached: {\n name: \"Start Detached\",\n note: \"Clicking the Custom CSS tab opens the editor in a separate window\"\n },\n nativeOpen: {\n name: \"Open in Native Editor\",\n note: \"Clicking the Custom CSS tab opens your custom css in your native editor\"\n }\n },\n developer: {\n name: \"Developer Settings\",\n developerMode: {\n name: \"Developer Mode\",\n note: \"Allows activating debugger when pressing F8\"\n },\n copySelector: {\n name: \"Copy Selector\",\n note: \"Adds a \\\"Copy Selector\\\" option to context menus when developer mode is active\"\n }\n },\n window: {\n name: \"Window Preferences\",\n transparency: {\n name: \"Enable Transparency\",\n note: \"Enables the main window to be see-through (requires restart)\"\n },\n frame: {\n name: \"Window Frame\",\n note: \"Adds the native os window frame to the main window\"\n }\n }\n },\n emotes: {\n name: \"Emotes\",\n general: {\n name: \"General\",\n download: {\n name: \"Download Emotes\",\n note: \"Download emotes once a week to stay up to date\"\n },\n emoteMenu: {\n name: \"Emote Menu\",\n note: \"Show Twitch/Favourite emotes in emote menu\"\n },\n hideEmojiMenu: {\n name: \"Hide Emoji Menu\",\n note: \"Hides Discord's emoji menu when using emote menu\"\n },\n autoCaps: {\n name: \"Emote Autocapitalization\",\n note: \"Autocapitalize emote commands\"\n },\n showNames: {\n name: \"Show Names\",\n note: \"Show emote names on hover\"\n },\n modifiers: {\n name: \"Show Emote Modifiers\",\n note: \"Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)\"\n },\n animateOnHover: {\n name: \"Animate On Hover\",\n note: \"Only animate the emote modifiers on hover\"\n }\n },\n categories: {\n name: \"Categories\",\n twitch: {\n name: \"Twitch\",\n note: \"Show Twitch global & subscriber emotes\"\n },\n ffz: {\n name: \"FrankerFaceZ\",\n note: \"Show emotes from FFZ\"\n },\n bttv: {\n name: \"BetterTTV\",\n note: \"Show emotes from BTTV\"\n }\n }\n }\n },\n Addons: {\n title: \"{{name}} v{{version}} by {{author}}\",\n openFolder: \"Open {{type}} Folder\",\n reload: \"Reload\",\n pluginSettings: \"Settings\",\n website: \"Website\",\n source: \"Source\",\n server: \"Support Server\",\n donate: \"Donate\"\n },\n Emotes: {\n downloading: \"Downloading emotes in the background do not reload.\",\n downloaded: \"All emotes successfully downloaded.\",\n clearEmotes: \"Clear Emote Data\",\n favoriteAction: \"Favorite!\"\n },\n CustomCSS: {\n confirmationText: \"You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.\",\n update: \"Update\",\n save: \"Save\",\n openNative: \"Open in System Editor\",\n openDetached: \"Detach Window\",\n settings: \"Editor Settings\",\n editorTitle: \"Custom CSS Editor\"\n },\n PublicServers: {\n button: \"public\",\n join: \"Join\",\n joining: \"Joining\",\n joined: \"Joined\",\n loading: \"Loading\",\n loadMore: \"Load More\",\n notConnected: \"Not connected to DiscordServers.com!\",\n search: \"Search\",\n connect: \"Connect\",\n reconnect: \"Reconnect\",\n categories: \"Categories\",\n connection: \"Connected as: {{username}}#{{discriminator}}\",\n results: \"Showing {{start}}-{{end}} of {{total}} results in {{category}}\",\n query: \"for {{query}}\"\n },\n Modals: {\n confirmClose: \"Are You Sure?\",\n okay: \"Okay\",\n cancel: \"Cancel\",\n name: \"Name\",\n message: \"Message\",\n error: \"Error\",\n addonErrors: \"Addon Errors\"\n }\n});//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL2RhdGEvc3RyaW5ncy5qcz9iYzcxIl0sIm5hbWVzIjpbIlBhbmVscyIsInBsdWdpbnMiLCJ0aGVtZXMiLCJjdXN0b21jc3MiLCJDb2xsZWN0aW9ucyIsInNldHRpbmdzIiwibmFtZSIsImdlbmVyYWwiLCJlbW90ZXMiLCJub3RlIiwicHVibGljU2VydmVycyIsInZvaWNlRGlzY29ubmVjdCIsInR3ZW50eUZvdXJIb3VyIiwiY2xhc3NOb3JtYWxpemVyIiwic2hvd1RvYXN0cyIsImFwcGVhcmFuY2UiLCJ2b2ljZU1vZGUiLCJtaW5pbWFsTW9kZSIsImhpZGVDaGFubmVscyIsImRhcmtNb2RlIiwiY29sb3JlZFRleHQiLCJhZGRvbnMiLCJhZGRvbkVycm9ycyIsImF1dG9TY3JvbGwiLCJhdXRvUmVsb2FkIiwibGl2ZVVwZGF0ZSIsInN0YXJ0RGV0YWNoZWQiLCJuYXRpdmVPcGVuIiwiZGV2ZWxvcGVyIiwiZGV2ZWxvcGVyTW9kZSIsImNvcHlTZWxlY3RvciIsIndpbmRvdyIsInRyYW5zcGFyZW5jeSIsImZyYW1lIiwiZG93bmxvYWQiLCJlbW90ZU1lbnUiLCJoaWRlRW1vamlNZW51IiwiYXV0b0NhcHMiLCJzaG93TmFtZXMiLCJtb2RpZmllcnMiLCJhbmltYXRlT25Ib3ZlciIsImNhdGVnb3JpZXMiLCJ0d2l0Y2giLCJmZnoiLCJidHR2IiwiQWRkb25zIiwidGl0bGUiLCJvcGVuRm9sZGVyIiwicmVsb2FkIiwicGx1Z2luU2V0dGluZ3MiLCJ3ZWJzaXRlIiwic291cmNlIiwic2VydmVyIiwiZG9uYXRlIiwiRW1vdGVzIiwiZG93bmxvYWRpbmciLCJkb3dubG9hZGVkIiwiY2xlYXJFbW90ZXMiLCJmYXZvcml0ZUFjdGlvbiIsIkN1c3RvbUNTUyIsImNvbmZpcm1hdGlvblRleHQiLCJ1cGRhdGUiLCJzYXZlIiwib3Blbk5hdGl2ZSIsIm9wZW5EZXRhY2hlZCIsImVkaXRvclRpdGxlIiwiUHVibGljU2VydmVycyIsImJ1dHRvbiIsImpvaW4iLCJqb2luaW5nIiwiam9pbmVkIiwibG9hZGluZyIsImxvYWRNb3JlIiwibm90Q29ubmVjdGVkIiwic2VhcmNoIiwiY29ubmVjdCIsInJlY29ubmVjdCIsImNvbm5lY3Rpb24iLCJyZXN1bHRzIiwicXVlcnkiLCJNb2RhbHMiLCJjb25maXJtQ2xvc2UiLCJva2F5IiwiY2FuY2VsIiwibWVzc2FnZSIsImVycm9yIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFlO0FBQ1hBLFFBQU0sRUFBRTtBQUNKQyxXQUFPLEVBQUUsU0FETDtBQUVKQyxVQUFNLEVBQUUsUUFGSjtBQUdKQyxhQUFTLEVBQUU7QUFIUCxHQURHO0FBTVhDLGFBQVcsRUFBRTtBQUNUQyxZQUFRLEVBQUU7QUFDTkMsVUFBSSxFQUFFLFVBREE7QUFFTkMsYUFBTyxFQUFFO0FBQ0xELFlBQUksRUFBRSxTQUREO0FBRUxFLGNBQU0sRUFBRTtBQUNKRixjQUFJLEVBQUUsY0FERjtBQUVKRyxjQUFJLEVBQUU7QUFGRixTQUZIO0FBTUxDLHFCQUFhLEVBQUU7QUFDWEosY0FBSSxFQUFFLGdCQURLO0FBRVhHLGNBQUksRUFBRTtBQUZLLFNBTlY7QUFVTEUsdUJBQWUsRUFBRTtBQUNiTCxjQUFJLEVBQUUsa0JBRE87QUFFYkcsY0FBSSxFQUFFO0FBRk8sU0FWWjtBQWNMRyxzQkFBYyxFQUFFO0FBQ1pOLGNBQUksRUFBRSxvQkFETTtBQUVaRyxjQUFJLEVBQUU7QUFGTSxTQWRYO0FBa0JMSSx1QkFBZSxFQUFFO0FBQ2JQLGNBQUksRUFBRSxtQkFETztBQUViRyxjQUFJLEVBQUU7QUFGTyxTQWxCWjtBQXNCTEssa0JBQVUsRUFBRTtBQUNSUixjQUFJLEVBQUUsYUFERTtBQUVSRyxjQUFJLEVBQUU7QUFGRTtBQXRCUCxPQUZIO0FBNkJOTSxnQkFBVSxFQUFFO0FBQ1JULFlBQUksRUFBRSxZQURFO0FBRVJVLGlCQUFTLEVBQUU7QUFDUFYsY0FBSSxFQUFFLFlBREM7QUFFUEcsY0FBSSxFQUFFO0FBRkMsU0FGSDtBQU1SUSxtQkFBVyxFQUFFO0FB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RDtBQVlYb0MsY0FBVSxFQUFFLDhDQVpEO0FBYVhDLFdBQU8sRUFBRSxnRUFiRTtBQWNYQyxTQUFLLEVBQUU7QUFkSSxHQS9MSjtBQStNWEMsUUFBTSxFQUFFO0FBQ0pDLGdCQUFZLEVBQUUsZUFEVjtBQUVKQyxRQUFJLEVBQUUsTUFGRjtBQUdKQyxVQUFNLEVBQUUsUUFISjtBQUlKN0UsUUFBSSxFQUFFLE1BSkY7QUFLSjhFLFdBQU8sRUFBRSxTQUxMO0FBTUpDLFNBQUssRUFBRSxPQU5IO0FBT0ovRCxlQUFXLEVBQUU7QUFQVDtBQS9NRyxDQUFmIiwiZmlsZSI6Ii4vc3JjL2RhdGEvc3RyaW5ncy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcclxuICAgIFBhbmVsczoge1xyXG4gICAgICAgIHBsdWdpbnM6IFwiUGx1Z2luc1wiLFxyXG4gICAgICAgIHRoZW1lczogXCJUaGVtZXNcIixcclxuICAgICAgICBjdXN0b21jc3M6IFwiQ3VzdG9tIENTU1wiXHJcbiAgICB9LFxyXG4gICAgQ29sbGVjdGlvbnM6IHtcclxuICAgICAgICBzZXR0aW5nczoge1xyXG4gICAgICAgICAgICBuYW1lOiBcIlNldHRpbmdzXCIsXHJcbiAgICAgICAgICAgIGdlbmVyYWw6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiR2VuZXJhbFwiLFxyXG4gICAgICAgICAgICAgICAgZW1vdGVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbW90ZSBTeXN0ZW1cIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZXMgQkQncyBlbW90ZSBzeXN0ZW1cIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHB1YmxpY1NlcnZlcnM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlB1YmxpYyBTZXJ2ZXJzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJEaXNwbGF5IHB1YmxpYyBzZXJ2ZXJzIGJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgdm9pY2VEaXNjb25uZWN0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJWb2ljZSBEaXNjb25uZWN0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJEaXNjb25uZWN0IGZyb20gdm9pY2Ugc2VydmVyIHdoZW4gY2xvc2luZyBEaXNjb3JkXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICB0d2VudHlGb3VySG91cjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiMjQtSG91ciBUaW1lc3RhbXBzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlcyBjaGFubmVscyB3aGVuIGluIG1pbmltYWwgbW9kZVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgY2xhc3NOb3JtYWxpemVyOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJOb3JtYWxpemUgQ2xhc3Nlc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWRkcyBzdGFibGUgY2xhc3NlcyB0byBlbGVtZW50cyB0byBoZWxwIHRoZW1lcy4gKGUuZy4gYWRkcyAuZGEtY2hhbm5lbHMgdG8gLmNoYW5uZWxzLUllMmw2QSlcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHNob3dUb2FzdHM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNob3cgVG9hc3RzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93cyBhIHNtYWxsIG5vdGlmaWNhdGlvbiBmb3IgaW1wb3J0YW50IGluZm9ybWF0aW9uXCJcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYXBwZWFyYW5jZToge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJBcHBlYXJhbmNlXCIsXHJcbiAgICAgICAgICAgICAgICB2b2ljZU1vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlZvaWNlIE1vZGVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkhpZGVzIGV2ZXJ5dGhpbmcgdGhhdCBpc24ndCB2b2ljZSBjaGF0XCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBtaW5pbWFsTW9kZToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTWluaW1hbCBNb2RlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlIGVsZW1lbnRzIGFuZCByZWR1Y2UgdGhlIHNpemUgb2YgZWxlbWVudHNcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGhpZGVDaGFubmVsczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiSGlkZSBDaGFubmVsc1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiSGlkZXMgY2hhbm5lbHMgd2hlbiBpbiBtaW5pbWFsIG1vZGVcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGRhcmtNb2RlOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJEYXJrIE1vZGVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIk1ha2UgY2VydGFpbiBlbGVtZW50cyBkYXJrIGJ5IGRlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGNvbG9yZWRUZXh0OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDb2xvcmVkIFRleHRcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIk1ha2UgdGV4dCBjb2xvdXIgdGhlIHNhbWUgYXMgcm9sZSBjb2xvclwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGFkZG9uczoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJBZGRvbiBNYW5hZ2VyXCIsXHJcbiAgICAgICAgICAgICAgICBhZGRvbkVycm9yczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2hvdyBBZGRvbiBFcnJvcnNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3dzIGEgbW9kYWwgd2l0aCBwbHVnaW4vdGhlbWUgZXJyb3JzXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhdXRvU2Nyb2xsOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJTY3JvbGwgVG8gU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkF1dG8tc2Nyb2xscyB0byBhIHBsdWdpbidzIHNldHRpbmdzIHdoZW4gdGhlIGJ1dHRvbiBpcyBjbGlja2VkIChvbmx5IGlmIG91dCBvZiB2aWV3KVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgYXV0b1JlbG9hZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQXV0b21hdGljIExvYWRpbmdcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkF1dG9tYXRpY2FsbHkgbG9hZHMsIHJlbG9hZHMsIGFuZCB1bmxvYWRzIHBsdWdpbnMgYW5kIHRoZW1lc1wiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjdXN0b21jc3M6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiQ3VzdG9tIENTU1wiLFxyXG4gICAgICAgICAgICAgICAgY3VzdG9tY3NzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJDdXN0b20gQ1NTXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJFbmFibGVzIHRoZSBDdXN0b20gQ1NTIHRhYlwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbGl2ZVVwZGF0ZToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiTGl2ZSBVcGRhdGVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlVwZGF0ZXMgdGhlIGNzcyBhcyB5b3UgdHlwZVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3RhcnREZXRhY2hlZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU3RhcnQgRGV0YWNoZWRcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkNsaWNraW5nIHRoZSBDdXN0b20gQ1NTIHRhYiBvcGVucyB0aGUgZWRpdG9yIGluIGEgc2VwYXJhdGUgd2luZG93XCIsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgbmF0aXZlT3Blbjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiT3BlbiBpbiBOYXRpdmUgRWRpdG9yXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJDbGlja2luZyB0aGUgQ3VzdG9tIENTUyB0YWIgb3BlbnMgeW91ciBjdXN0b20gY3NzIGluIHlvdXIgbmF0aXZlIGVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRldmVsb3Blcjoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJEZXZlbG9wZXIgU2V0dGluZ3NcIixcclxuICAgICAgICAgICAgICAgIGRldmVsb3Blck1vZGU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkRldmVsb3BlciBNb2RlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJBbGxvd3MgYWN0aXZhdGluZyBkZWJ1Z2dlciB3aGVuIHByZXNzaW5nIEY4XCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBjb3B5U2VsZWN0b3I6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkNvcHkgU2VsZWN0b3JcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkFkZHMgYSBcXFwiQ29weSBTZWxlY3RvclxcXCIgb3B0aW9uIHRvIGNvbnRleHQgbWVudXMgd2hlbiBkZXZlbG9wZXIgbW9kZSBpcyBhY3RpdmVcIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB3aW5kb3c6IHtcclxuICAgICAgICAgICAgICAgIG5hbWU6IFwiV2luZG93IFByZWZlcmVuY2VzXCIsXHJcbiAgICAgICAgICAgICAgICB0cmFuc3BhcmVuY3k6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkVuYWJsZSBUcmFuc3BhcmVuY3lcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZXMgdGhlIG1haW4gd2luZG93IHRvIGJlIHNlZS10aHJvdWdoIChyZXF1aXJlcyByZXN0YXJ0KVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZnJhbWU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIldpbmRvdyBGcmFtZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiQWRkcyB0aGUgbmF0aXZlIG9zIHdpbmRvdyBmcmFtZSB0byB0aGUgbWFpbiB3aW5kb3dcIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlbW90ZXM6IHtcclxuICAgICAgICAgICAgbmFtZTogXCJFbW90ZXNcIixcclxuICAgICAgICAgICAgZ2VuZXJhbDoge1xyXG4gICAgICAgICAgICAgICAgbmFtZTogXCJHZW5lcmFsXCIsXHJcbiAgICAgICAgICAgICAgICBkb3dubG9hZDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiRG93bmxvYWQgRW1vdGVzXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJEb3dubG9hZCBlbW90ZXMgb25jZSBhIHdlZWsgdG8gc3RheSB1cCB0byBkYXRlXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBlbW90ZU1lbnU6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIkVtb3RlIE1lbnVcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgVHdpdGNoL0Zhdm91cml0ZSBlbW90ZXMgaW4gZW1vdGUgbWVudVwiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgaGlkZUVtb2ppTWVudToge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiSGlkZSBFbW9qaSBNZW51XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJIaWRlcyBEaXNjb3JkJ3MgZW1vamkgbWVudSB3aGVuIHVzaW5nIGVtb3RlIG1lbnVcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIGF1dG9DYXBzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJFbW90ZSBBdXRvY2FwaXRhbGl6YXRpb25cIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkF1dG9jYXBpdGFsaXplIGVtb3RlIGNvbW1hbmRzXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBzaG93TmFtZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBcIlNob3cgTmFtZXNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgZW1vdGUgbmFtZXMgb24gaG92ZXJcIlxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG1vZGlmaWVyczoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiU2hvdyBFbW90ZSBNb2RpZmllcnNcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIkVuYWJsZSBlbW90ZSBtb2RzIChmbGlwLCBzcGluLCBwdWxzZSwgc3BpbjIsIHNwaW4zLCAxc3BpbiwgMnNwaW4sIDNzcGluLCB0ciwgYmwsIGJyLCBzaGFrZSwgc2hha2UyLCBzaGFrZTMsIGZsYXApXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBhbmltYXRlT25Ib3Zlcjoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiQW5pbWF0ZSBPbiBIb3ZlclwiLFxyXG4gICAgICAgICAgICAgICAgICAgIG5vdGU6IFwiT25seSBhbmltYXRlIHRoZSBlbW90ZSBtb2RpZmllcnMgb24gaG92ZXJcIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjYXRlZ29yaWVzOiB7XHJcbiAgICAgICAgICAgICAgICBuYW1lOiBcIkNhdGVnb3JpZXNcIixcclxuICAgICAgICAgICAgICAgIHR3aXRjaDoge1xyXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IFwiVHdpdGNoXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgbm90ZTogXCJTaG93IFR3aXRjaCBnbG9iYWwgJiBzdWJzY3JpYmVyIGVtb3Rlc1wiXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgZmZ6OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJGcmFua2VyRmFjZVpcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgZW1vdGVzIGZyb20gRkZaXCJcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICBidHR2OiB7XHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogXCJCZXR0ZXJUVFZcIixcclxuICAgICAgICAgICAgICAgICAgICBub3RlOiBcIlNob3cgZW1vdGVzIGZyb20gQlRUVlwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gICAgQWRkb25zOiB7XHJcbiAgICAgICAgdGl0bGU6IFwie3tuYW1lfX0gdnt7dmVyc2lvbn19IGJ5IHt7YXV0aG9yfX1cIixcclxuICAgICAgICBvcGVuRm9sZGVyOiBcIk9wZW4ge3t0eXBlfX0gRm9sZGVyXCIsXHJcbiAgICAgICAgcmVsb2FkOiBcIlJlbG9hZFwiLFxyXG4gICAgICAgIHBsdWdpblNldHRpbmdzOiBcIlNldHRpbmdzXCIsXHJcbiAgICAgICAgd2Vic2l0ZTogXCJXZWJzaXRlXCIsXHJcbiAgICAgICAgc291cmNlOiBcIlNvdXJjZVwiLFxyXG4gICAgICAgIHNlcnZlcjogXCJTdXBwb3J0IFNlcnZlclwiLFxyXG4gICAgICAgIGRvbmF0ZTogXCJEb25hdGVcIlxyXG4gICAgfSxcclxuICAgIEVtb3Rlczoge1xyXG4gICAgICAgIGRvd25sb2FkaW5nOiBcIkRvd25sb2FkaW5nIGVtb3RlcyBpbiB0aGUgYmFja2dyb3VuZCBkbyBub3QgcmVsb2FkLlwiLFxyXG4gICAgICAgIGRvd25sb2FkZWQ6IFwiQWxsIGVtb3RlcyBzdWNjZXNzZnVsbHkgZG93bmxvYWRlZC5cIixcclxuICAgICAgICBjbGVhckVtb3RlczogXCJDbGVhciBFbW90ZSBEYXRhXCIsXHJcbiAgICAgICAgZmF2b3JpdGVBY3Rpb246IFwiRmF2b3JpdGUhXCJcclxuICAgIH0sXHJcbiAgICBDdXN0b21DU1M6IHtcclxuICAgICAgICBjb25maXJtYXRpb25UZXh0OiBcIllvdSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyB0byB5b3VyIEN1c3RvbSBDU1MuIENsb3NpbmcgdGhpcyB3aW5kb3cgd2lsbCBsb3NlIGFsbCB0aG9zZSBjaGFuZ2VzLlwiLFxyXG4gICAgICAgIHVwZGF0ZTogXCJVcGRhdGVcIixcclxuICAgICAgICBzYXZlOiBcIlNhdmVcIixcclxuICAgICAgICBvcGVuTmF0aXZlOiBcIk9wZW4gaW4gU3lzdGVtIEVkaXRvclwiLFxyXG4gICAgICAgIG9wZW5EZXRhY2hlZDogXCJEZXRhY2ggV2luZG93XCIsXHJcbiAgICAgICAgc2V0dGluZ3M6IFwiRWRpdG9yIFNldHRpbmdzXCIsXHJcbiAgICAgICAgZWRpdG9yVGl0bGU6IFwiQ3VzdG9tIENTUyBFZGl0b3JcIlxyXG4gICAgfSxcclxuICAgIFB1YmxpY1NlcnZlcnM6IHtcclxuICAgICAgICBidXR0b246IFwicHVibGljXCIsXHJcbiAgICAgICAgam9pbjogXCJKb2luXCIsXHJcbiAgICAgICAgam9pbmluZzogXCJKb2luaW5nXCIsXHJcbiAgICAgICAgam9pbmVkOiBcIkpvaW5lZFwiLFxyXG4gICAgICAgIGxvYWRpbmc6IFwiTG9hZGluZ1wiLFxyXG4gICAgICAgIGxvYWRNb3JlOiBcIkxvYWQgTW9yZVwiLFxyXG4gICAgICAgIG5vdENvbm5lY3RlZDogXCJOb3QgY29ubmVjdGVkIHRvIERpc2NvcmRTZXJ2ZXJzLmNvbSFcIixcclxuICAgICAgICBzZWFyY2g6IFwiU2VhcmNoXCIsXHJcbiAgICAgICAgY29ubmVjdDogXCJDb25uZWN0XCIsXHJcbiAgICAgICAgcmVjb25uZWN0OiBcIlJlY29ubmVjdFwiLFxyXG4gICAgICAgIGNhdGVnb3JpZXM6IFwiQ2F0ZWdvcmllc1wiLFxyXG4gICAgICAgIGNvbm5lY3Rpb246IFwiQ29ubmVjdGVkIGFzOiB7e3VzZXJuYW1lfX0je3tkaXNjcmltaW5hdG9yfX1cIixcclxuICAgICAgICByZXN1bHRzOiBcIlNob3dpbmcge3tzdGFydH19LXt7ZW5kfX0gb2Yge3t0b3RhbH19IHJlc3VsdHMgaW4ge3tjYXRlZ29yeX19XCIsXHJcbiAgICAgICAgcXVlcnk6IFwiZm9yIHt7cXVlcnl9fVwiXHJcbiAgICB9LFxyXG4gICAgTW9kYWxzOiB7XHJcbiAgICAgICAgY29uZmlybUNsb3NlOiBcIkFyZSBZb3UgU3VyZT9cIixcclxuICAgICAgICBva2F5OiBcIk9rYXlcIixcclxuICAgICAgICBjYW5jZWw6IFwiQ2FuY2VsXCIsXHJcbiAgICAgICAgbmFtZTogXCJOYW1lXCIsXHJcbiAgICAgICAgbWVzc2FnZTogXCJNZXNzYWdlXCIsXHJcbiAgICAgICAgZXJyb3I6IFwiRXJyb3JcIixcclxuICAgICAgICBhZGRvbkVycm9yczogXCJBZGRvbiBFcnJvcnNcIlxyXG4gICAgfVxyXG59O1xyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/data/strings.js\n"); /***/ }), @@ -383,7 +383,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _componentpatcher__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./componentpatcher */ \"./src/modules/componentpatcher.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _pluginmanager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pluginmanager */ \"./src/modules/pluginmanager.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./thememanager */ \"./src/modules/thememanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var builtins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! builtins */ \"./src/builtins/builtins.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _reactcomponents__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./reactcomponents */ \"./src/modules/reactcomponents.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n\n\n // import EmoteModule from \"./emotes\";\n// import QuickEmoteMenu from \"../builtins/emotemenu\";\n\n\n\n\n\n\n\n\n\n\nconst GuildClasses = _discordmodules__WEBPACK_IMPORTED_MODULE_11__[\"default\"].GuildClasses;\n\nfunction Core() {}\n\nCore.prototype.setConfig = function (config) {\n Object.assign(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"], config);\n};\n\nCore.prototype.init = async function () {\n if (data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version < data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].minSupportedVersion) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(\"Not Supported\", \"BetterDiscord v\" + data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version + \" (your version)\" + \" is not supported by the latest js (\" + data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion + \").

Please download the latest version from GitHub\");\n return;\n } // const latestLocalVersion = Config.updater ? Config.updater.LatestVersion : Config.latestVersion;\n // if (latestLocalVersion > Config.version) {\n // Modals.alert(\"Update Available\", `\n // An update for BandagedBD is available (${latestLocalVersion})! Please Reinstall!

\n // Download Installer\n // `);\n // }\n // DataStore.initialize();\n\n\n _reactcomponents__WEBPACK_IMPORTED_MODULE_9__[\"default\"].initialize();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Initializing Settings\");\n _settingsmanager__WEBPACK_IMPORTED_MODULE_6__[\"default\"].initialize();\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].initialize();\n await this.waitForGuilds();\n _componentpatcher__WEBPACK_IMPORTED_MODULE_0__[\"default\"].initialize();\n\n for (const module in builtins__WEBPACK_IMPORTED_MODULE_7__) builtins__WEBPACK_IMPORTED_MODULE_7__[module].initialize();\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Loading Plugins\");\n const pluginErrors = _pluginmanager__WEBPACK_IMPORTED_MODULE_4__[\"default\"].initialize();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Loading Themes\");\n const themeErrors = _thememanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].initialize();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Removing Loading Icon\");\n document.getElementsByClassName(\"bd-loaderv2\")[0].remove(); // Show loading errors\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Collecting Startup Errors\");\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showContentErrors({\n plugins: pluginErrors,\n themes: themeErrors\n });\n};\n\nCore.prototype.waitForGuilds = function () {\n return new Promise(resolve => {\n const checkForGuilds = function () {\n if (document.readyState != \"complete\") setTimeout(checkForGuilds, 100);\n const wrapper = GuildClasses.wrapper.split(\" \")[0];\n const guild = GuildClasses.listItem.split(\" \")[0];\n const blob = GuildClasses.blobContainer.split(\" \")[0];\n if (document.querySelectorAll(`.${wrapper} .${guild} .${blob}`).length > 0) return resolve(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].deferLoaded = true);\n setTimeout(checkForGuilds, 100);\n };\n\n checkForGuilds();\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new Core());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvY29yZS5qcz9iNmRlIl0sIm5hbWVzIjpbIkd1aWxkQ2xhc3NlcyIsIkRpc2NvcmRNb2R1bGVzIiwiQ29yZSIsInByb3RvdHlwZSIsInNldENvbmZpZyIsImNvbmZpZyIsIk9iamVjdCIsImFzc2lnbiIsIkNvbmZpZyIsImluaXQiLCJ2ZXJzaW9uIiwibWluU3VwcG9ydGVkVmVyc2lvbiIsIk1vZGFscyIsImFsZXJ0IiwiYmJkVmVyc2lvbiIsIlJlYWN0Q29tcG9uZW50cyIsImluaXRpYWxpemUiLCJMb2dnZXIiLCJsb2ciLCJTZXR0aW5ncyIsIkRPTU1hbmFnZXIiLCJ3YWl0Rm9yR3VpbGRzIiwiQ29tcG9uZW50UGF0Y2hlciIsIm1vZHVsZSIsIkJ1aWx0aW5zIiwicGx1Z2luRXJyb3JzIiwiUGx1Z2luTWFuYWdlciIsInRoZW1lRXJyb3JzIiwiVGhlbWVNYW5hZ2VyIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwicmVtb3ZlIiwic2hvd0NvbnRlbnRFcnJvcnMiLCJwbHVnaW5zIiwidGhlbWVzIiwiUHJvbWlzZSIsInJlc29sdmUiLCJjaGVja0Zvckd1aWxkcyIsInJlYWR5U3RhdGUiLCJzZXRUaW1lb3V0Iiwid3JhcHBlciIsInNwbGl0IiwiZ3VpbGQiLCJsaXN0SXRlbSIsImJsb2IiLCJibG9iQ29udGFpbmVyIiwicXVlcnlTZWxlY3RvckFsbCIsImxlbmd0aCIsImRlZmVyTG9hZGVkIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7Q0FFQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLFlBQVksR0FBR0Msd0RBQWMsQ0FBQ0QsWUFBcEM7O0FBRUEsU0FBU0UsSUFBVCxHQUFnQixDQUNmOztBQUVEQSxJ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SixFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvY29yZS5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDb21wb25lbnRQYXRjaGVyIGZyb20gXCIuL2NvbXBvbmVudHBhdGNoZXJcIjtcclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IHtDb25maWd9IGZyb20gXCJkYXRhXCI7XHJcbi8vIGltcG9ydCBFbW90ZU1vZHVsZSBmcm9tIFwiLi9lbW90ZXNcIjtcclxuLy8gaW1wb3J0IFF1aWNrRW1vdGVNZW51IGZyb20gXCIuLi9idWlsdGlucy9lbW90ZW1lbnVcIjtcclxuaW1wb3J0IERPTU1hbmFnZXIgZnJvbSBcIi4vZG9tbWFuYWdlclwiO1xyXG5pbXBvcnQgUGx1Z2luTWFuYWdlciBmcm9tIFwiLi9wbHVnaW5tYW5hZ2VyXCI7XHJcbmltcG9ydCBUaGVtZU1hbmFnZXIgZnJvbSBcIi4vdGhlbWVtYW5hZ2VyXCI7XHJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5nc21hbmFnZXJcIjtcclxuaW1wb3J0ICogYXMgQnVpbHRpbnMgZnJvbSBcImJ1aWx0aW5zXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgUmVhY3RDb21wb25lbnRzIGZyb20gXCIuL3JlYWN0Y29tcG9uZW50c1wiO1xyXG5pbXBvcnQgRGF0YVN0b3JlIGZyb20gXCIuL2RhdGFzdG9yZVwiO1xyXG5pbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuXHJcbmNvbnN0IEd1aWxkQ2xhc3NlcyA9IERpc2NvcmRNb2R1bGVzLkd1aWxkQ2xhc3NlcztcclxuXHJcbmZ1bmN0aW9uIENvcmUoKSB7XHJcbn1cclxuXHJcbkNvcmUucHJvdG90eXBlLnNldENvbmZpZyA9IGZ1bmN0aW9uKGNvbmZpZykge1xyXG4gICAgT2JqZWN0LmFzc2lnbihDb25maWcsIGNvbmZpZyk7XHJcbn07XHJcblxyXG5Db3JlLnByb3RvdHlwZS5pbml0ID0gYXN5bmMgZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAoQ29uZmlnLnZlcnNpb24gPCBDb25maWcubWluU3VwcG9ydGVkVmVyc2lvbikge1xyXG4gICAgICAgIE1vZGFscy5hbGVydChcIk5vdCBTdXBwb3J0ZWRcIiwgXCJCZXR0ZXJEaXNjb3JkIHZcIiArIENvbmZpZy52ZXJzaW9uICsgXCIgKHlvdXIgdmVyc2lvbilcIiArIFwiIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGxhdGVzdCBqcyAoXCIgKyBDb25maWcuYmJkVmVyc2lvbiArIFwiKS48YnI+PGJyPiBQbGVhc2UgZG93bmxvYWQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb20gPGEgaHJlZj0naHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcC9yZWxlYXNlcy9sYXRlc3QnIHRhcmdldD0nX2JsYW5rJz5HaXRIdWI8L2E+XCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIGNvbnN0IGxhdGVzdExvY2FsVmVyc2lvbiA9IENvbmZpZy51cGRhdGVyID8gQ29uZmlnLnVwZGF0ZXIuTGF0ZXN0VmVyc2lvbiA6IENvbmZpZy5sYXRlc3RWZXJzaW9uO1xyXG4gICAgLy8gaWYgKGxhdGVzdExvY2FsVmVyc2lvbiA+IENvbmZpZy52ZXJzaW9uKSB7XHJcbiAgICAvLyAgICAgTW9kYWxzLmFsZXJ0KFwiVXBkYXRlIEF2YWlsYWJsZVwiLCBgXHJcbiAgICAvLyAgICAgICAgIEFuIHVwZGF0ZSBmb3IgQmFuZGFnZWRCRCBpcyBhdmFpbGFibGUgKCR7bGF0ZXN0TG9jYWxWZXJzaW9ufSkhIFBsZWFzZSBSZWluc3RhbGwhPGJyIC8+PGJyIC8+XHJcbiAgICAvLyAgICAgICAgIDxhIGhyZWY9J2h0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvcmVsZWFzZXMvbGF0ZXN0JyB0YXJnZXQ9J19ibGFuayc+RG93bmxvYWQgSW5zdGFsbGVyPC9hPlxyXG4gICAgLy8gICAgIGApO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIC8vIERhdGFTdG9yZS5pbml0aWFsaXplKCk7XHJcbiAgICBSZWFjdENvbXBvbmVudHMuaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgIExvZ2dlci5sb2coXCJTdGFydHVwXCIsIFwiSW5pdGlhbGl6aW5nIFNldHRpbmdzXCIpO1xyXG4gICAgU2V0dGluZ3MuaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgIERPTU1hbmFnZXIuaW5pdGlhbGl6ZSgpO1xyXG4gICAgYXdhaXQgdGhpcy53YWl0Rm9yR3VpbGRzKCk7XHJcbiAgICBDb21wb25lbnRQYXRjaGVyLmluaXRpYWxpemUoKTtcclxuICAgIGZvciAoY29uc3QgbW9kdWxlIGluIEJ1aWx0aW5zKSBCdWlsdGluc1ttb2R1bGVdLmluaXRpYWxpemUoKTtcclxuXHJcbiAgICBMb2dnZXIubG9nKFwiU3RhcnR1cFwiLCBcIkxvYWRpbmcgUGx1Z2luc1wiKTtcclxuICAgIGNvbnN0IHBsdWdpbkVycm9ycyA9IFBsdWdpbk1hbmFnZXIuaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgIExvZ2dlci5sb2coXCJTdGFydHVwXCIsIFwiTG9hZGluZyBUaGVtZXNcIik7XHJcbiAgICBjb25zdCB0aGVtZUVycm9ycyA9IFRoZW1lTWFuYWdlci5pbml0aWFsaXplKCk7XHJcblxyXG4gICAgTG9nZ2VyLmxvZyhcIlN0YXJ0dXBcIiwgXCJSZW1vdmluZyBMb2FkaW5nIEljb25cIik7XHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFwiYmQtbG9hZGVydjJcIilbMF0ucmVtb3ZlKCk7XHJcblxyXG4gICAgLy8gU2hvdyBsb2FkaW5nIGVycm9yc1xyXG4gICAgTG9nZ2VyLmxvZyhcIlN0YXJ0dXBcIiwgXCJDb2xsZWN0aW5nIFN0YXJ0dXAgRXJyb3JzXCIpO1xyXG4gICAgTW9kYWxzLnNob3dDb250ZW50RXJyb3JzKHtwbHVnaW5zOiBwbHVnaW5FcnJvcnMsIHRoZW1lczogdGhlbWVFcnJvcnN9KTtcclxufTtcclxuXHJcbkNvcmUucHJvdG90eXBlLndhaXRGb3JHdWlsZHMgPSBmdW5jdGlvbigpIHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuICAgICAgICBjb25zdCBjaGVja0Zvckd1aWxkcyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSAhPSBcImNvbXBsZXRlXCIpIHNldFRpbWVvdXQoY2hlY2tGb3JHdWlsZHMsIDEwMCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHdyYXBwZXIgPSBHdWlsZENsYXNzZXMud3JhcHBlci5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgICAgIGNvbnN0IGd1aWxkID0gR3VpbGRDbGFzc2VzLmxpc3RJdGVtLnNwbGl0KFwiIFwiKVswXTtcclxuICAgICAgICAgICAgY29uc3QgYmxvYiA9IEd1aWxkQ2xhc3Nlcy5ibG9iQ29udGFpbmVyLnNwbGl0KFwiIFwiKVswXTtcclxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYC4ke3dyYXBwZXJ9IC4ke2d1aWxkfSAuJHtibG9ifWApLmxlbmd0aCA+IDApIHJldHVybiByZXNvbHZlKENvbmZpZy5kZWZlckxvYWRlZCA9IHRydWUpO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGNoZWNrRm9yR3VpbGRzLCAxMDApO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGNoZWNrRm9yR3VpbGRzKCk7XHJcbiAgICB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBDb3JlKCk7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/core.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _localemanager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./localemanager */ \"./src/modules/localemanager.js\");\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony import */ var _pluginmanager__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pluginmanager */ \"./src/modules/pluginmanager.js\");\n/* harmony import */ var _thememanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./thememanager */ \"./src/modules/thememanager.js\");\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony import */ var builtins__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! builtins */ \"./src/builtins/builtins.js\");\n/* harmony import */ var _ui_modals__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../ui/modals */ \"./src/ui/modals.js\");\n/* harmony import */ var _reactcomponents__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./reactcomponents */ \"./src/modules/reactcomponents.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _componentpatcher__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./componentpatcher */ \"./src/modules/componentpatcher.js\");\n\n\n // import EmoteModule from \"./emotes\";\n// import QuickEmoteMenu from \"../builtins/emotemenu\";\n\n\n\n\n\n\n\n\n\n\n\nconst GuildClasses = _discordmodules__WEBPACK_IMPORTED_MODULE_11__[\"default\"].GuildClasses;\n\nfunction Core() {}\n\nCore.prototype.setConfig = function (config) {\n Object.assign(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"], config);\n};\n\nCore.prototype.init = async function () {\n if (data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version < data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].minSupportedVersion) {\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].alert(\"Not Supported\", \"BetterDiscord v\" + data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].version + \" (your version)\" + \" is not supported by the latest js (\" + data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].bbdVersion + \").

Please download the latest version from GitHub\");\n return;\n } // const latestLocalVersion = Config.updater ? Config.updater.LatestVersion : Config.latestVersion;\n // if (latestLocalVersion > Config.version) {\n // Modals.alert(\"Update Available\", `\n // An update for BandagedBD is available (${latestLocalVersion})! Please Reinstall!

\n // Download Installer\n // `);\n // }\n\n\n _datastore__WEBPACK_IMPORTED_MODULE_10__[\"default\"].initialize();\n await _localemanager__WEBPACK_IMPORTED_MODULE_0__[\"default\"].initialize();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Initializing Settings\");\n _settingsmanager__WEBPACK_IMPORTED_MODULE_6__[\"default\"].initialize();\n _dommanager__WEBPACK_IMPORTED_MODULE_3__[\"default\"].initialize();\n await this.waitForGuilds();\n _reactcomponents__WEBPACK_IMPORTED_MODULE_9__[\"default\"].initialize();\n _componentpatcher__WEBPACK_IMPORTED_MODULE_12__[\"default\"].initialize();\n\n for (const module in builtins__WEBPACK_IMPORTED_MODULE_7__) builtins__WEBPACK_IMPORTED_MODULE_7__[module].initialize();\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Loading Plugins\");\n const pluginErrors = _pluginmanager__WEBPACK_IMPORTED_MODULE_4__[\"default\"].initialize();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Loading Themes\");\n const themeErrors = _thememanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"].initialize();\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Removing Loading Icon\");\n document.getElementsByClassName(\"bd-loaderv2\")[0].remove(); // Show loading errors\n\n _logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].log(\"Startup\", \"Collecting Startup Errors\");\n _ui_modals__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showContentErrors({\n plugins: pluginErrors,\n themes: themeErrors\n });\n};\n\nCore.prototype.waitForGuilds = function () {\n return new Promise(resolve => {\n const checkForGuilds = function () {\n if (document.readyState != \"complete\") setTimeout(checkForGuilds, 100);\n const wrapper = GuildClasses.wrapper.split(\" \")[0];\n const guild = GuildClasses.listItem.split(\" \")[0];\n const blob = GuildClasses.blobContainer.split(\" \")[0];\n if (document.querySelectorAll(`.${wrapper} .${guild} .${blob}`).length > 0) return resolve(data__WEBPACK_IMPORTED_MODULE_2__[\"Config\"].deferLoaded = true);\n setTimeout(checkForGuilds, 100);\n };\n\n checkForGuilds();\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new Core());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvY29yZS5qcz9iNmRlIl0sIm5hbWVzIjpbIkd1aWxkQ2xhc3NlcyIsIkRpc2NvcmRNb2R1bGVzIiwiQ29yZSIsInByb3RvdHlwZSIsInNldENvbmZpZyIsImNvbmZpZyIsIk9iamVjdCIsImFzc2lnbiIsIkNvbmZpZyIsImluaXQiLCJ2ZXJzaW9uIiwibWluU3VwcG9ydGVkVmVyc2lvbiIsIk1vZGFscyIsImFsZXJ0IiwiYmJkVmVyc2lvbiIsIkRhdGFTdG9yZSIsImluaXRpYWxpemUiLCJMb2NhbGVNYW5hZ2VyIiwiTG9nZ2VyIiwibG9nIiwiU2V0dGluZ3MiLCJET01NYW5hZ2VyIiwid2FpdEZvckd1aWxkcyIsIlJlYWN0Q29tcG9uZW50cyIsIkNvbXBvbmVudFBhdGNoZXIiLCJtb2R1bGUiLCJCdWlsdGlucyIsInBsdWdpbkVycm9ycyIsIlBsdWdpbk1hbmFnZXIiLCJ0aGVtZUVycm9ycyIsIlRoZW1lTWFuYWdlciIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsInJlbW92ZSIsInNob3dDb250ZW50RXJyb3JzIiwicGx1Z2lucyIsInRoZW1lcyIsIlByb21pc2UiLCJyZXNvbHZlIiwiY2hlY2tGb3JHdWlsZHMiLCJyZWFkeVN0YXRlIiwic2V0VGltZW91dCIsIndyYXBwZXIiLCJzcGxpdCIsImd1aWxkIiwibGlzdEl0ZW0iLCJibG9iIiwiYmxvYkNvbnRhaW5lciIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJsZW5ndGgiLCJkZWZlckxvYWRlZCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7Q0FFQTtBQUNBOztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0EsTUFBTUEsWUFBWSxHQUFHQyx3REFBYyxDQUFDRCxZQUFw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LGNBQUQsRUFBaUIsR0FBakIsQ0FBVjtBQUNILEtBUEQ7O0FBU0FBLGtCQUFjO0FBQ2pCLEdBWE0sQ0FBUDtBQVlILENBYkQ7O0FBZWUsbUVBQUlyQyxJQUFKLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9jb3JlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvY2FsZU1hbmFnZXIgZnJvbSBcIi4vbG9jYWxlbWFuYWdlclwiO1xyXG5cclxuaW1wb3J0IExvZ2dlciBmcm9tIFwiLi9sb2dnZXJcIjtcclxuaW1wb3J0IHtDb25maWd9IGZyb20gXCJkYXRhXCI7XHJcbi8vIGltcG9ydCBFbW90ZU1vZHVsZSBmcm9tIFwiLi9lbW90ZXNcIjtcclxuLy8gaW1wb3J0IFF1aWNrRW1vdGVNZW51IGZyb20gXCIuLi9idWlsdGlucy9lbW90ZW1lbnVcIjtcclxuaW1wb3J0IERPTU1hbmFnZXIgZnJvbSBcIi4vZG9tbWFuYWdlclwiO1xyXG5pbXBvcnQgUGx1Z2luTWFuYWdlciBmcm9tIFwiLi9wbHVnaW5tYW5hZ2VyXCI7XHJcbmltcG9ydCBUaGVtZU1hbmFnZXIgZnJvbSBcIi4vdGhlbWVtYW5hZ2VyXCI7XHJcbmltcG9ydCBTZXR0aW5ncyBmcm9tIFwiLi9zZXR0aW5nc21hbmFnZXJcIjtcclxuaW1wb3J0ICogYXMgQnVpbHRpbnMgZnJvbSBcImJ1aWx0aW5zXCI7XHJcbmltcG9ydCBNb2RhbHMgZnJvbSBcIi4uL3VpL21vZGFsc1wiO1xyXG5pbXBvcnQgUmVhY3RDb21wb25lbnRzIGZyb20gXCIuL3JlYWN0Y29tcG9uZW50c1wiO1xyXG5pbXBvcnQgRGF0YVN0b3JlIGZyb20gXCIuL2RhdGFzdG9yZVwiO1xyXG5pbXBvcnQgRGlzY29yZE1vZHVsZXMgZnJvbSBcIi4vZGlzY29yZG1vZHVsZXNcIjtcclxuaW1wb3J0IENvbXBvbmVudFBhdGNoZXIgZnJvbSBcIi4vY29tcG9uZW50cGF0Y2hlclwiO1xyXG5cclxuXHJcbmNvbnN0IEd1aWxkQ2xhc3NlcyA9IERpc2NvcmRNb2R1bGVzLkd1aWxkQ2xhc3NlcztcclxuXHJcbmZ1bmN0aW9uIENvcmUoKSB7XHJcbn1cclxuXHJcbkNvcmUucHJvdG90eXBlLnNldENvbmZpZyA9IGZ1bmN0aW9uKGNvbmZpZykge1xyXG4gICAgT2JqZWN0LmFzc2lnbihDb25maWcsIGNvbmZpZyk7XHJcbn07XHJcblxyXG5Db3JlLnByb3RvdHlwZS5pbml0ID0gYXN5bmMgZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAoQ29uZmlnLnZlcnNpb24gPCBDb25maWcubWluU3VwcG9ydGVkVmVyc2lvbikge1xyXG4gICAgICAgIE1vZGFscy5hbGVydChcIk5vdCBTdXBwb3J0ZWRcIiwgXCJCZXR0ZXJEaXNjb3JkIHZcIiArIENvbmZpZy52ZXJzaW9uICsgXCIgKHlvdXIgdmVyc2lvbilcIiArIFwiIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGxhdGVzdCBqcyAoXCIgKyBDb25maWcuYmJkVmVyc2lvbiArIFwiKS48YnI+PGJyPiBQbGVhc2UgZG93bmxvYWQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb20gPGEgaHJlZj0naHR0cHM6Ly9naXRodWIuY29tL3JhdWVuemkvQmV0dGVyRGlzY29yZEFwcC9yZWxlYXNlcy9sYXRlc3QnIHRhcmdldD0nX2JsYW5rJz5HaXRIdWI8L2E+XCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIC8vIGNvbnN0IGxhdGVzdExvY2FsVmVyc2lvbiA9IENvbmZpZy51cGRhdGVyID8gQ29uZmlnLnVwZGF0ZXIuTGF0ZXN0VmVyc2lvbiA6IENvbmZpZy5sYXRlc3RWZXJzaW9uO1xyXG4gICAgLy8gaWYgKGxhdGVzdExvY2FsVmVyc2lvbiA+IENvbmZpZy52ZXJzaW9uKSB7XHJcbiAgICAvLyAgICAgTW9kYWxzLmFsZXJ0KFwiVXBkYXRlIEF2YWlsYWJsZVwiLCBgXHJcbiAgICAvLyAgICAgICAgIEFuIHVwZGF0ZSBmb3IgQmFuZGFnZWRCRCBpcyBhdmFpbGFibGUgKCR7bGF0ZXN0TG9jYWxWZXJzaW9ufSkhIFBsZWFzZSBSZWluc3RhbGwhPGJyIC8+PGJyIC8+XHJcbiAgICAvLyAgICAgICAgIDxhIGhyZWY9J2h0dHBzOi8vZ2l0aHViLmNvbS9yYXVlbnppL0JldHRlckRpc2NvcmRBcHAvcmVsZWFzZXMvbGF0ZXN0JyB0YXJnZXQ9J19ibGFuayc+RG93bmxvYWQgSW5zdGFsbGVyPC9hPlxyXG4gICAgLy8gICAgIGApO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIERhdGFTdG9yZS5pbml0aWFsaXplKCk7XHJcbiAgICBhd2FpdCBMb2NhbGVNYW5hZ2VyLmluaXRpYWxpemUoKTtcclxuICAgIFxyXG5cclxuICAgIExvZ2dlci5sb2coXCJTdGFydHVwXCIsIFwiSW5pdGlhbGl6aW5nIFNldHRpbmdzXCIpO1xyXG4gICAgU2V0dGluZ3MuaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgIERPTU1hbmFnZXIuaW5pdGlhbGl6ZSgpO1xyXG4gICAgYXdhaXQgdGhpcy53YWl0Rm9yR3VpbGRzKCk7XHJcbiAgICBSZWFjdENvbXBvbmVudHMuaW5pdGlhbGl6ZSgpO1xyXG4gICAgQ29tcG9uZW50UGF0Y2hlci5pbml0aWFsaXplKCk7XHJcbiAgICBmb3IgKGNvbnN0IG1vZHVsZSBpbiBCdWlsdGlucykgQnVpbHRpbnNbbW9kdWxlXS5pbml0aWFsaXplKCk7XHJcblxyXG4gICAgTG9nZ2VyLmxvZyhcIlN0YXJ0dXBcIiwgXCJMb2FkaW5nIFBsdWdpbnNcIik7XHJcbiAgICBjb25zdCBwbHVnaW5FcnJvcnMgPSBQbHVnaW5NYW5hZ2VyLmluaXRpYWxpemUoKTtcclxuXHJcbiAgICBMb2dnZXIubG9nKFwiU3RhcnR1cFwiLCBcIkxvYWRpbmcgVGhlbWVzXCIpO1xyXG4gICAgY29uc3QgdGhlbWVFcnJvcnMgPSBUaGVtZU1hbmFnZXIuaW5pdGlhbGl6ZSgpO1xyXG5cclxuICAgIExvZ2dlci5sb2coXCJTdGFydHVwXCIsIFwiUmVtb3ZpbmcgTG9hZGluZyBJY29uXCIpO1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImJkLWxvYWRlcnYyXCIpWzBdLnJlbW92ZSgpO1xyXG5cclxuICAgIC8vIFNob3cgbG9hZGluZyBlcnJvcnNcclxuICAgIExvZ2dlci5sb2coXCJTdGFydHVwXCIsIFwiQ29sbGVjdGluZyBTdGFydHVwIEVycm9yc1wiKTtcclxuICAgIE1vZGFscy5zaG93Q29udGVudEVycm9ycyh7cGx1Z2luczogcGx1Z2luRXJyb3JzLCB0aGVtZXM6IHRoZW1lRXJyb3JzfSk7XHJcbn07XHJcblxyXG5Db3JlLnByb3RvdHlwZS53YWl0Rm9yR3VpbGRzID0gZnVuY3Rpb24oKSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgY29uc3QgY2hlY2tGb3JHdWlsZHMgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgIT0gXCJjb21wbGV0ZVwiKSBzZXRUaW1lb3V0KGNoZWNrRm9yR3VpbGRzLCAxMDApO1xyXG4gICAgICAgICAgICBjb25zdCB3cmFwcGVyID0gR3VpbGRDbGFzc2VzLndyYXBwZXIuc3BsaXQoXCIgXCIpWzBdO1xyXG4gICAgICAgICAgICBjb25zdCBndWlsZCA9IEd1aWxkQ2xhc3Nlcy5saXN0SXRlbS5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBHdWlsZENsYXNzZXMuYmxvYkNvbnRhaW5lci5zcGxpdChcIiBcIilbMF07XHJcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAuJHt3cmFwcGVyfSAuJHtndWlsZH0gLiR7YmxvYn1gKS5sZW5ndGggPiAwKSByZXR1cm4gcmVzb2x2ZShDb25maWcuZGVmZXJMb2FkZWQgPSB0cnVlKTtcclxuICAgICAgICAgICAgc2V0VGltZW91dChjaGVja0Zvckd1aWxkcywgMTAwKTtcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBjaGVja0Zvckd1aWxkcygpO1xyXG4gICAgfSk7XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgQ29yZSgpOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/core.js\n"); /***/ }), @@ -395,7 +395,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _com /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n\n\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst releaseChannel = DiscordNative.globals.releaseChannel; // Schema\n// =======================\n// %appdata%\\BetterDiscord\n// -> data\n// -> [releaseChannel]\\ (stable/canary/ptb)\n// -> settings.json\n// -> plugins.json\n// -> themes.json\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DataStore {\n constructor() {\n this.data = {\n misc: {}\n };\n this.pluginData = {};\n this.initialize();\n }\n\n initialize() {\n if (!fs.existsSync(this.baseFolder)) fs.mkdirSync(this.baseFolder);\n if (!fs.existsSync(this.dataFolder)) fs.mkdirSync(this.dataFolder);\n if (!fs.existsSync(this.localeFolder)) fs.mkdirSync(this.localeFolder);\n if (!fs.existsSync(this.BDFile)) fs.writeFileSync(this.BDFile, JSON.stringify(this.data.misc, null, 4));\n if (!fs.existsSync(this.customCSS)) fs.writeFileSync(this.customCSS, \"\");\n const dataFiles = fs.readdirSync(this.dataFolder).filter(f => !fs.statSync(path.resolve(this.dataFolder, f)).isDirectory() && f.endsWith(\".json\"));\n\n for (const file of dataFiles) {\n this.data[file.split(\".\")[0]] = require(path.resolve(this.dataFolder, file));\n } // this.data = __non_webpack_require__(this.BDFile);\n // if (data.hasOwnProperty(\"settings\")) this.data = data;\n // if (!fs.existsSync(this.settingsFile)) return;\n // let settings = __non_webpack_require__(this.settingsFile);\n // fs.unlinkSync(this.settingsFile);\n // if (settings.hasOwnProperty(\"settings\")) settings = Object.assign({stable: {}, canary: {}, ptb: {}}, {[releaseChannel]: settings});\n // else settings = Object.assign({stable: {}, canary: {}, ptb: {}}, settings);\n // this.setBDData(\"settings\", settings);\n\n }\n\n get customCSS() {\n return this._customCSS || (this._customCSS = path.resolve(this.dataFolder, \"custom.css\"));\n }\n\n get baseFolder() {\n return this._baseFolder || (this._baseFolder = path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"data\"));\n }\n\n get dataFolder() {\n return this._dataFolder || (this._dataFolder = path.resolve(this.baseFolder, `${releaseChannel}`));\n }\n\n get localeFolder() {\n return this._localeFolder || (this._localeFolder = path.resolve(this.baseFolder, `locales`));\n }\n\n get BDFile() {\n return this._BDFile || (this._BDFile = path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"data\", `${releaseChannel}.json`));\n } // get settingsFile() {return this._settingsFile || (this._settingsFile = path.resolve(Config.dataPath, \"bdsettings.json\"));}\n\n\n getPluginFile(pluginName) {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"plugins\", pluginName + \".config.json\");\n } // getSettingGroup(key) {\n // return this.data.settings[key] || null;\n // }\n // setSettingGroup(key, data) {\n // this.data.settings[key] = data;\n // fs.writeFileSync(this.BDFile, JSON.stringify(this.data, null, 4));\n // }\n\n\n _getFile(key) {\n if (key == \"settings\" || key == \"plugins\" || key == \"themes\") return path.resolve(this.dataFolder, `${key}.json`);\n return path.resolve(this.dataFolder, `misc.json`);\n }\n\n getBDData(key) {\n return this.data.misc[key] || \"\";\n }\n\n setBDData(key, value) {\n this.data.misc[key] = value;\n fs.writeFileSync(path.resolve(this.dataFolder, `misc.json`), JSON.stringify(this.data.misc, null, 4));\n }\n\n getLocale(locale) {\n const file = path.resolve(this.localeFolder, `${locale}.json`);\n if (!fs.existsSync(file)) return null;\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(fs.readFileSync(file).toString());\n }\n\n saveLocale(locale, strings) {\n fs.writeFileSync(path.resolve(this.localeFolder, `${locale}.json`), JSON.stringify(strings, null, 4));\n }\n\n getData(key) {\n return this.data[key] || \"\";\n }\n\n setData(key, value) {\n this.data[key] = value;\n fs.writeFileSync(path.resolve(this.dataFolder, `${key}.json`), JSON.stringify(value, null, 4));\n }\n\n loadCustomCSS() {\n return fs.readFileSync(this.customCSS).toString();\n }\n\n saveCustomCSS(css) {\n return fs.writeFileSync(this.customCSS, css);\n }\n\n getPluginData(pluginName, key) {\n if (this.pluginData[pluginName] !== undefined) return this.pluginData[pluginName][key] || undefined;\n if (!fs.existsSync(this.getPluginFile(pluginName))) return undefined;\n this.pluginData[pluginName] = JSON.parse(fs.readFileSync(this.getPluginFile(pluginName)));\n return this.pluginData[pluginName][key] || undefined;\n }\n\n setPluginData(pluginName, key, value) {\n if (value === undefined) return;\n if (this.pluginData[pluginName] === undefined) this.pluginData[pluginName] = {};\n this.pluginData[pluginName][key] = value;\n fs.writeFileSync(this.getPluginFile(pluginName), JSON.stringify(this.pluginData[pluginName], null, 4));\n }\n\n deletePluginData(pluginName, key) {\n if (this.pluginData[pluginName] === undefined) this.pluginData[pluginName] = {};\n delete this.pluginData[pluginName][key];\n fs.writeFileSync(this.getPluginFile(pluginName), JSON.stringify(this.pluginData[pluginName], null, 4));\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvZGF0YXN0b3JlLmpzPzEwNTIiXSwibmFtZXMiOlsiZnMiLCJyZXF1aXJlIiwicGF0aCIsInJlbGVhc2VDaGFubmVsIiwiRGlzY29yZE5hdGl2ZSIsImdsb2JhbHMiLCJEYXRhU3RvcmUiLCJjb25zdHJ1Y3RvciIsImRhdGEiLCJtaXNjIiwicGx1Z2luRGF0YSIsImluaXRpYWxpemUiLCJleGlzdHNTeW5jIiwiYmFzZUZvbGRlciIsIm1rZGlyU3luYyIsImRhdGFGb2xkZXIiLCJsb2NhbGVGb2xkZXIiLCJCREZpbGUiLCJ3cml0ZUZpbGVTeW5jIiwiSlNPTiIsInN0cmluZ2lmeSIsImN1c3RvbUNTUyIsImRhdGFGaWxlcyIsInJlYWRkaXJTeW5jIiwiZmlsdGVyIiwiZiIsInN0YXRTeW5jIiwicmVzb2x2ZSIsImlzRGlyZWN0b3J5IiwiZW5kc1dpdGgiLCJmaWxlIiwic3BsaXQiLCJfX25vbl93ZWJwYWNrX3JlcXVpcmVfXyIsIl9jdXN0b21DU1MiLCJfYmFzZUZvbGRlciIsIkNvbmZpZyIsImRhdGFQYXRoIiwiX2RhdGFGb2xkZXIiLCJfbG9jYWxlRm9sZGVyIiwiX0JERmlsZSIsImdldFBsdWdpbkZpbGUiLCJwbHVnaW5OYW1lIiwiX2dldEZpbGUiLCJrZXkiLCJnZXRCRERhdGEiLCJzZXRCRERhdGEiLCJ2YWx1ZSIsImdldExvY2FsZSIsImxvY2FsZSIsIlV0aWxpdGllcyIsInRlc3RKU09OIiwicmVhZEZpbGVTeW5jIiwidG9TdHJpbmciLCJzYXZlTG9jYWxlIiwic3RyaW5ncyIsImdldERhdGEiLCJzZXREYXRhIiwibG9hZEN1c3RvbUNTUyIsInNhdmVDdXN0b21DU1MiLCJjc3MiLCJnZXRQbHVnaW5EYXRhIiwidW5kZWZpbmVkIiwicGFyc2UiLCJzZXRQbHVnaW5EYXRhIiwiZGVsZXRlUGx1Z2luRGF0YSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7QUFDQSxNQUFNQSxF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QUFoQixJQUE4QixFQUE5QjtBQUMvQyxTQUFLL0IsVUFBTCxDQUFnQitCLFVBQWhCLEVBQTRCRSxHQUE1QixJQUFtQ0csS0FBbkM7QUFDQTlDLE1BQUUsQ0FBQ2tCLGFBQUgsQ0FBaUIsS0FBS3NCLGFBQUwsQ0FBbUJDLFVBQW5CLENBQWpCLEVBQWlEdEIsSUFBSSxDQUFDQyxTQUFMLENBQWUsS0FBS1YsVUFBTCxDQUFnQitCLFVBQWhCLENBQWYsRUFBNEMsSUFBNUMsRUFBa0QsQ0FBbEQsQ0FBakQ7QUFDSDs7QUFFRHVCLGtCQUFnQixDQUFDdkIsVUFBRCxFQUFhRSxHQUFiLEVBQWtCO0FBQzlCLFFBQUksS0FBS2pDLFVBQUwsQ0FBZ0IrQixVQUFoQixNQUFnQ29CLFNBQXBDLEVBQStDLEtBQUtuRCxVQUFMLENBQWdCK0IsVUFBaEIsSUFBOEIsRUFBOUI7QUFDL0MsV0FBTyxLQUFLL0IsVUFBTCxDQUFnQitCLFVBQWhCLEVBQTRCRSxHQUE1QixDQUFQO0FBQ0EzQyxNQUFFLENBQUNrQixhQUFILENBQWlCLEtBQUtzQixhQUFMLENBQW1CQyxVQUFuQixDQUFqQixFQUFpRHRCLElBQUksQ0FBQ0MsU0FBTCxDQUFlLEtBQUtWLFVBQUwsQ0FBZ0IrQixVQUFoQixDQUFmLEVBQTRDLElBQTVDLEVBQWtELENBQWxELENBQWpEO0FBQ0g7O0FBdkc4QixDQUFwQixFQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvZGF0YXN0b3JlLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25maWd9IGZyb20gXCJkYXRhXCI7XHJcbmltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmNvbnN0IGZzID0gcmVxdWlyZShcImZzXCIpO1xyXG5jb25zdCBwYXRoID0gcmVxdWlyZShcInBhdGhcIik7XHJcbmNvbnN0IHJlbGVhc2VDaGFubmVsID0gRGlzY29yZE5hdGl2ZS5nbG9iYWxzLnJlbGVhc2VDaGFubmVsO1xyXG5cclxuLy8gU2NoZW1hXHJcbi8vID09PT09PT09PT09PT09PT09PT09PT09XHJcbi8vICVhcHBkYXRhJVxcQmV0dGVyRGlzY29yZFxyXG4vLyAgICAgLT4gZGF0YVxyXG4vLyAgICAgICAgIC0+IFtyZWxlYXNlQ2hhbm5lbF1cXCAoc3RhYmxlL2NhbmFyeS9wdGIpXHJcbi8vICAgICAgICAgICAgIC0+IHNldHRpbmdzLmpzb25cclxuLy8gICAgICAgICAgICAgLT4gcGx1Z2lucy5qc29uXHJcbi8vICAgICAgICAgICAgIC0+IHRoZW1lcy5qc29uXHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgRGF0YVN0b3JlIHtcclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuZGF0YSA9IHttaXNjOiB7fX07XHJcbiAgICAgICAgdGhpcy5wbHVnaW5EYXRhID0ge307XHJcbiAgICAgICAgdGhpcy5pbml0aWFsaXplKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5pdGlhbGl6ZSgpIHtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5iYXNlRm9sZGVyKSkgZnMubWtkaXJTeW5jKHRoaXMuYmFzZUZvbGRlcik7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMuZGF0YUZvbGRlcikpIGZzLm1rZGlyU3luYyh0aGlzLmRhdGFGb2xkZXIpO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmxvY2FsZUZvbGRlcikpIGZzLm1rZGlyU3luYyh0aGlzLmxvY2FsZUZvbGRlcik7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMuQkRGaWxlKSkgZnMud3JpdGVGaWxlU3luYyh0aGlzLkJERmlsZSwgSlNPTi5zdHJpbmdpZnkodGhpcy5kYXRhLm1pc2MsIG51bGwsIDQpKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5jdXN0b21DU1MpKSBmcy53cml0ZUZpbGVTeW5jKHRoaXMuY3VzdG9tQ1NTLCBcIlwiKTtcclxuICAgICAgICBjb25zdCBkYXRhRmlsZXMgPSBmcy5yZWFkZGlyU3luYyh0aGlzLmRhdGFGb2xkZXIpLmZpbHRlcihmID0+ICFmcy5zdGF0U3luYyhwYXRoLnJlc29sdmUodGhpcy5kYXRhRm9sZGVyLCBmKSkuaXNEaXJlY3RvcnkoKSAmJiBmLmVuZHNXaXRoKFwiLmpzb25cIikpO1xyXG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBkYXRhRmlsZXMpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRhW2ZpbGUuc3BsaXQoXCIuXCIpWzBdXSA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIGZpbGUpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdGhpcy5kYXRhID0gX19ub25fd2VicGFja19yZXF1aXJlX18odGhpcy5CREZpbGUpO1xyXG4gICAgICAgIC8vIGlmIChkYXRhLmhhc093blByb3BlcnR5KFwic2V0dGluZ3NcIikpIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgICAgICAgLy8gaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMuc2V0dGluZ3NGaWxlKSkgcmV0dXJuO1xyXG4gICAgICAgIC8vIGxldCBzZXR0aW5ncyA9IF9fbm9uX3dlYnBhY2tfcmVxdWlyZV9fKHRoaXMuc2V0dGluZ3NGaWxlKTtcclxuICAgICAgICAvLyBmcy51bmxpbmtTeW5jKHRoaXMuc2V0dGluZ3NGaWxlKTtcclxuICAgICAgICAvLyBpZiAoc2V0dGluZ3MuaGFzT3duUHJvcGVydHkoXCJzZXR0aW5nc1wiKSkgc2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHtzdGFibGU6IHt9LCBjYW5hcnk6IHt9LCBwdGI6IHt9fSwge1tyZWxlYXNlQ2hhbm5lbF06IHNldHRpbmdzfSk7XHJcbiAgICAgICAgLy8gZWxzZSBzZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe3N0YWJsZToge30sIGNhbmFyeToge30sIHB0Yjoge319LCBzZXR0aW5ncyk7XHJcbiAgICAgICAgLy8gdGhpcy5zZXRCRERhdGEoXCJzZXR0aW5nc1wiLCBzZXR0aW5ncyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGN1c3RvbUNTUygpIHtyZXR1cm4gdGhpcy5fY3VzdG9tQ1NTIHx8ICh0aGlzLl9jdXN0b21DU1MgPSBwYXRoLnJlc29sdmUodGhpcy5kYXRhRm9sZGVyLCBcImN1c3RvbS5jc3NcIikpO31cclxuICAgIGdldCBiYXNlRm9sZGVyKCkge3JldHVybiB0aGlzLl9iYXNlRm9sZGVyIHx8ICh0aGlzLl9iYXNlRm9sZGVyID0gcGF0aC5yZXNvbHZlKENvbmZpZy5kYXRhUGF0aCwgXCJkYXRhXCIpKTt9XHJcbiAgICBnZXQgZGF0YUZvbGRlcigpIHtyZXR1cm4gdGhpcy5fZGF0YUZvbGRlciB8fCAodGhpcy5fZGF0YUZvbGRlciA9IHBhdGgucmVzb2x2ZSh0aGlzLmJhc2VGb2xkZXIsIGAke3JlbGVhc2VDaGFubmVsfWApKTt9XHJcbiAgICBnZXQgbG9jYWxlRm9sZGVyKCkge3JldHVybiB0aGlzLl9sb2NhbGVGb2xkZXIgfHwgKHRoaXMuX2xvY2FsZUZvbGRlciA9IHBhdGgucmVzb2x2ZSh0aGlzLmJhc2VGb2xkZXIsIGBsb2NhbGVzYCkpO31cclxuICAgIGdldCBCREZpbGUoKSB7cmV0dXJuIHRoaXMuX0JERmlsZSB8fCAodGhpcy5fQkRGaWxlID0gcGF0aC5yZXNvbHZlKENvbmZpZy5kYXRhUGF0aCwgXCJkYXRhXCIsIGAke3JlbGVhc2VDaGFubmVsfS5qc29uYCkpO31cclxuICAgIC8vIGdldCBzZXR0aW5nc0ZpbGUoKSB7cmV0dXJuIHRoaXMuX3NldHRpbmdzRmlsZSB8fCAodGhpcy5fc2V0dGluZ3NGaWxlID0gcGF0aC5yZXNvbHZlKENvbmZpZy5kYXRhUGF0aCwgXCJiZHNldHRpbmdzLmpzb25cIikpO31cclxuICAgIGdldFBsdWdpbkZpbGUocGx1Z2luTmFtZSkge3JldHVybiBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcInBsdWdpbnNcIiwgcGx1Z2luTmFtZSArIFwiLmNvbmZpZy5qc29uXCIpO31cclxuXHJcbiAgICAvLyBnZXRTZXR0aW5nR3JvdXAoa2V5KSB7XHJcbiAgICAvLyAgICAgcmV0dXJuIHRoaXMuZGF0YS5zZXR0aW5nc1trZXldIHx8IG51bGw7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgLy8gc2V0U2V0dGluZ0dyb3VwKGtleSwgZGF0YSkge1xyXG4gICAgLy8gICAgIHRoaXMuZGF0YS5zZXR0aW5nc1trZXldID0gZGF0YTtcclxuICAgIC8vICAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMuQkRGaWxlLCBKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEsIG51bGwsIDQpKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBfZ2V0RmlsZShrZXkpIHtcclxuICAgICAgICBpZiAoa2V5ID09IFwic2V0dGluZ3NcIiB8fCBrZXkgPT0gXCJwbHVnaW5zXCIgfHwga2V5ID09IFwidGhlbWVzXCIpIHJldHVybiBwYXRoLnJlc29sdmUodGhpcy5kYXRhRm9sZGVyLCBgJHtrZXl9Lmpzb25gKTtcclxuICAgICAgICByZXR1cm4gcGF0aC5yZXNvbHZlKHRoaXMuZGF0YUZvbGRlciwgYG1pc2MuanNvbmApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEJERGF0YShrZXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLm1pc2Nba2V5XSB8fCBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEJERGF0YShrZXksIHZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhLm1pc2Nba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5yZXNvbHZlKHRoaXMuZGF0YUZvbGRlciwgYG1pc2MuanNvbmApLCBKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEubWlzYywgbnVsbCwgNCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldExvY2FsZShsb2NhbGUpIHtcclxuICAgICAgICBjb25zdCBmaWxlID0gcGF0aC5yZXNvbHZlKHRoaXMubG9jYWxlRm9sZGVyLCBgJHtsb2NhbGV9Lmpzb25gKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZmlsZSkpIHJldHVybiBudWxsO1xyXG4gICAgICAgIHJldHVybiBVdGlsaXRpZXMudGVzdEpTT04oZnMucmVhZEZpbGVTeW5jKGZpbGUpLnRvU3RyaW5nKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVMb2NhbGUobG9jYWxlLCBzdHJpbmdzKSB7XHJcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLnJlc29sdmUodGhpcy5sb2NhbGVGb2xkZXIsIGAke2xvY2FsZX0uanNvbmApLCBKU09OLnN0cmluZ2lmeShzdHJpbmdzLCBudWxsLCA0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0RGF0YShrZXkpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kYXRhW2tleV0gfHwgXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBzZXREYXRhKGtleSwgdmFsdWUpIHtcclxuICAgICAgICB0aGlzLmRhdGFba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMocGF0aC5yZXNvbHZlKHRoaXMuZGF0YUZvbGRlciwgYCR7a2V5fS5qc29uYCksIEpTT04uc3RyaW5naWZ5KHZhbHVlLCBudWxsLCA0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9hZEN1c3RvbUNTUygpIHtcclxuICAgICAgICByZXR1cm4gZnMucmVhZEZpbGVTeW5jKHRoaXMuY3VzdG9tQ1NTKS50b1N0cmluZygpO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVDdXN0b21DU1MoY3NzKSB7XHJcbiAgICAgICAgcmV0dXJuIGZzLndyaXRlRmlsZVN5bmModGhpcy5jdXN0b21DU1MsIGNzcyk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UGx1Z2luRGF0YShwbHVnaW5OYW1lLCBrZXkpIHtcclxuICAgICAgICBpZiAodGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdICE9PSB1bmRlZmluZWQpIHJldHVybiB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV1ba2V5XSB8fCB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMuZ2V0UGx1Z2luRmlsZShwbHVnaW5OYW1lKSkpIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICAgICAgdGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmModGhpcy5nZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpKSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXVtrZXldIHx8IHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBzZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSwgdmFsdWUpIHtcclxuICAgICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgICAgIGlmICh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gPT09IHVuZGVmaW5lZCkgdGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdID0ge307XHJcbiAgICAgICAgdGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdW2tleV0gPSB2YWx1ZTtcclxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMuZ2V0UGx1Z2luRmlsZShwbHVnaW5OYW1lKSwgSlNPTi5zdHJpbmdpZnkodGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdLCBudWxsLCA0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgZGVsZXRlUGx1Z2luRGF0YShwbHVnaW5OYW1lLCBrZXkpIHtcclxuICAgICAgICBpZiAodGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdID09PSB1bmRlZmluZWQpIHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXSA9IHt9O1xyXG4gICAgICAgIGRlbGV0ZSB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV1ba2V5XTtcclxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHRoaXMuZ2V0UGx1Z2luRmlsZShwbHVnaW5OYW1lKSwgSlNPTi5zdHJpbmdpZnkodGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdLCBudWxsLCA0KSk7XHJcbiAgICB9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/datastore.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! data */ \"./src/data/data.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n\n\n\nconst fs = __webpack_require__(/*! fs */ \"fs\");\n\nconst path = __webpack_require__(/*! path */ \"path\");\n\nconst releaseChannel = DiscordNative.globals.releaseChannel; // Schema\n// =======================\n// %appdata%\\BetterDiscord\n// -> data\n// -> [releaseChannel]\\ (stable/canary/ptb)\n// -> settings.json\n// -> plugins.json\n// -> themes.json\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class DataStore {\n constructor() {\n this.data = {\n misc: {}\n };\n this.pluginData = {};\n }\n\n initialize() {\n if (!fs.existsSync(this.baseFolder)) fs.mkdirSync(this.baseFolder);\n if (!fs.existsSync(this.dataFolder)) fs.mkdirSync(this.dataFolder);\n if (!fs.existsSync(this.localeFolder)) fs.mkdirSync(this.localeFolder);\n if (!fs.existsSync(this.BDFile)) fs.writeFileSync(this.BDFile, JSON.stringify(this.data.misc, null, 4));\n if (!fs.existsSync(this.customCSS)) fs.writeFileSync(this.customCSS, \"\");\n const dataFiles = fs.readdirSync(this.dataFolder).filter(f => !fs.statSync(path.resolve(this.dataFolder, f)).isDirectory() && f.endsWith(\".json\"));\n\n for (const file of dataFiles) {\n this.data[file.split(\".\")[0]] = require(path.resolve(this.dataFolder, file));\n } // this.data = __non_webpack_require__(this.BDFile);\n // if (data.hasOwnProperty(\"settings\")) this.data = data;\n // if (!fs.existsSync(this.settingsFile)) return;\n // let settings = __non_webpack_require__(this.settingsFile);\n // fs.unlinkSync(this.settingsFile);\n // if (settings.hasOwnProperty(\"settings\")) settings = Object.assign({stable: {}, canary: {}, ptb: {}}, {[releaseChannel]: settings});\n // else settings = Object.assign({stable: {}, canary: {}, ptb: {}}, settings);\n // this.setBDData(\"settings\", settings);\n\n }\n\n get customCSS() {\n return this._customCSS || (this._customCSS = path.resolve(this.dataFolder, \"custom.css\"));\n }\n\n get baseFolder() {\n return this._baseFolder || (this._baseFolder = path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"data\"));\n }\n\n get dataFolder() {\n return this._dataFolder || (this._dataFolder = path.resolve(this.baseFolder, `${releaseChannel}`));\n }\n\n get localeFolder() {\n return this._localeFolder || (this._localeFolder = path.resolve(this.baseFolder, `locales`));\n }\n\n get BDFile() {\n return this._BDFile || (this._BDFile = path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"data\", `${releaseChannel}.json`));\n } // get settingsFile() {return this._settingsFile || (this._settingsFile = path.resolve(Config.dataPath, \"bdsettings.json\"));}\n\n\n getPluginFile(pluginName) {\n return path.resolve(data__WEBPACK_IMPORTED_MODULE_0__[\"Config\"].dataPath, \"plugins\", pluginName + \".config.json\");\n } // getSettingGroup(key) {\n // return this.data.settings[key] || null;\n // }\n // setSettingGroup(key, data) {\n // this.data.settings[key] = data;\n // fs.writeFileSync(this.BDFile, JSON.stringify(this.data, null, 4));\n // }\n\n\n _getFile(key) {\n if (key == \"settings\" || key == \"plugins\" || key == \"themes\") return path.resolve(this.dataFolder, `${key}.json`);\n return path.resolve(this.dataFolder, `misc.json`);\n }\n\n getBDData(key) {\n return this.data.misc[key] || \"\";\n }\n\n setBDData(key, value) {\n this.data.misc[key] = value;\n fs.writeFileSync(path.resolve(this.dataFolder, `misc.json`), JSON.stringify(this.data.misc, null, 4));\n }\n\n getLocale(locale) {\n const file = path.resolve(this.localeFolder, `${locale}.json`);\n if (!fs.existsSync(file)) return null;\n return _utilities__WEBPACK_IMPORTED_MODULE_1__[\"default\"].testJSON(fs.readFileSync(file).toString());\n }\n\n saveLocale(locale, strings) {\n fs.writeFileSync(path.resolve(this.localeFolder, `${locale}.json`), JSON.stringify(strings, null, 4));\n }\n\n getData(key) {\n return this.data[key] || \"\";\n }\n\n setData(key, value) {\n this.data[key] = value;\n fs.writeFileSync(path.resolve(this.dataFolder, `${key}.json`), JSON.stringify(value, null, 4));\n }\n\n loadCustomCSS() {\n return fs.readFileSync(this.customCSS).toString();\n }\n\n saveCustomCSS(css) {\n return fs.writeFileSync(this.customCSS, css);\n }\n\n getPluginData(pluginName, key) {\n if (this.pluginData[pluginName] !== undefined) return this.pluginData[pluginName][key] || undefined;\n if (!fs.existsSync(this.getPluginFile(pluginName))) return undefined;\n this.pluginData[pluginName] = JSON.parse(fs.readFileSync(this.getPluginFile(pluginName)));\n return this.pluginData[pluginName][key] || undefined;\n }\n\n setPluginData(pluginName, key, value) {\n if (value === undefined) return;\n if (this.pluginData[pluginName] === undefined) this.pluginData[pluginName] = {};\n this.pluginData[pluginName][key] = value;\n fs.writeFileSync(this.getPluginFile(pluginName), JSON.stringify(this.pluginData[pluginName], null, 4));\n }\n\n deletePluginData(pluginName, key) {\n if (this.pluginData[pluginName] === undefined) this.pluginData[pluginName] = {};\n delete this.pluginData[pluginName][key];\n fs.writeFileSync(this.getPluginFile(pluginName), JSON.stringify(this.pluginData[pluginName], null, 4));\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvZGF0YXN0b3JlLmpzPzEwNTIiXSwibmFtZXMiOlsiZnMiLCJyZXF1aXJlIiwicGF0aCIsInJlbGVhc2VDaGFubmVsIiwiRGlzY29yZE5hdGl2ZSIsImdsb2JhbHMiLCJEYXRhU3RvcmUiLCJjb25zdHJ1Y3RvciIsImRhdGEiLCJtaXNjIiwicGx1Z2luRGF0YSIsImluaXRpYWxpemUiLCJleGlzdHNTeW5jIiwiYmFzZUZvbGRlciIsIm1rZGlyU3luYyIsImRhdGFGb2xkZXIiLCJsb2NhbGVGb2xkZXIiLCJCREZpbGUiLCJ3cml0ZUZpbGVTeW5jIiwiSlNPTiIsInN0cmluZ2lmeSIsImN1c3RvbUNTUyIsImRhdGFGaWxlcyIsInJlYWRkaXJTeW5jIiwiZmlsdGVyIiwiZiIsInN0YXRTeW5jIiwicmVzb2x2ZSIsImlzRGlyZWN0b3J5IiwiZW5kc1dpdGgiLCJmaWxlIiwic3BsaXQiLCJfX25vbl93ZWJwYWNrX3JlcXVpcmVfXyIsIl9jdXN0b21DU1MiLCJfYmFzZUZvbGRlciIsIkNvbmZpZyIsImRhdGFQYXRoIiwiX2RhdGFGb2xkZXIiLCJfbG9jYWxlRm9sZGVyIiwiX0JERmlsZSIsImdldFBsdWdpbkZpbGUiLCJwbHVnaW5OYW1lIiwiX2dldEZpbGUiLCJrZXkiLCJnZXRCRERhdGEiLCJzZXRCRERhdGEiLCJ2YWx1ZSIsImdldExvY2FsZSIsImxvY2FsZSIsIlV0aWxpdGllcyIsInRlc3RKU09OIiwicmVhZEZpbGVTeW5jIiwidG9TdHJpbmciLCJzYXZlTG9jYWxlIiwic3RyaW5ncyIsImdldERhdGEiLCJzZXREYXRhIiwibG9hZEN1c3RvbUNTUyIsInNhdmVDdXN0b21DU1MiLCJjc3MiLCJnZXRQbHVnaW5EYXRhIiwidW5kZWZpbmVkIiwicGFyc2UiLCJzZXRQbHVnaW5EYXRhIiwiZGVsZXRlUGx1Z2luRGF0YSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTs7QUFDQSxNQUFNQSxF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O0FBQy9DLFNBQUsvQixVQUFMLENBQWdCK0IsVUFBaEIsRUFBNEJFLEdBQTVCLElBQW1DRyxLQUFuQztBQUNBOUMsTUFBRSxDQUFDa0IsYUFBSCxDQUFpQixLQUFLc0IsYUFBTCxDQUFtQkMsVUFBbkIsQ0FBakIsRUFBaUR0QixJQUFJLENBQUNDLFNBQUwsQ0FBZSxLQUFLVixVQUFMLENBQWdCK0IsVUFBaEIsQ0FBZixFQUE0QyxJQUE1QyxFQUFrRCxDQUFsRCxDQUFqRDtBQUNIOztBQUVEdUIsa0JBQWdCLENBQUN2QixVQUFELEVBQWFFLEdBQWIsRUFBa0I7QUFDOUIsUUFBSSxLQUFLakMsVUFBTCxDQUFnQitCLFVBQWhCLE1BQWdDb0IsU0FBcEMsRUFBK0MsS0FBS25ELFVBQUwsQ0FBZ0IrQixVQUFoQixJQUE4QixFQUE5QjtBQUMvQyxXQUFPLEtBQUsvQixVQUFMLENBQWdCK0IsVUFBaEIsRUFBNEJFLEdBQTVCLENBQVA7QUFDQTNDLE1BQUUsQ0FBQ2tCLGFBQUgsQ0FBaUIsS0FBS3NCLGFBQUwsQ0FBbUJDLFVBQW5CLENBQWpCLEVBQWlEdEIsSUFBSSxDQUFDQyxTQUFMLENBQWUsS0FBS1YsVUFBTCxDQUFnQitCLFVBQWhCLENBQWYsRUFBNEMsSUFBNUMsRUFBa0QsQ0FBbEQsQ0FBakQ7QUFDSDs7QUF0RzhCLENBQXBCLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9kYXRhc3RvcmUuanMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbmZpZ30gZnJvbSBcImRhdGFcIjtcclxuaW1wb3J0IFV0aWxpdGllcyBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuY29uc3QgZnMgPSByZXF1aXJlKFwiZnNcIik7XHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgcmVsZWFzZUNoYW5uZWwgPSBEaXNjb3JkTmF0aXZlLmdsb2JhbHMucmVsZWFzZUNoYW5uZWw7XHJcblxyXG4vLyBTY2hlbWFcclxuLy8gPT09PT09PT09PT09PT09PT09PT09PT1cclxuLy8gJWFwcGRhdGElXFxCZXR0ZXJEaXNjb3JkXHJcbi8vICAgICAtPiBkYXRhXHJcbi8vICAgICAgICAgLT4gW3JlbGVhc2VDaGFubmVsXVxcIChzdGFibGUvY2FuYXJ5L3B0YilcclxuLy8gICAgICAgICAgICAgLT4gc2V0dGluZ3MuanNvblxyXG4vLyAgICAgICAgICAgICAtPiBwbHVnaW5zLmpzb25cclxuLy8gICAgICAgICAgICAgLT4gdGhlbWVzLmpzb25cclxuXHJcbmV4cG9ydCBkZWZhdWx0IG5ldyBjbGFzcyBEYXRhU3RvcmUge1xyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5kYXRhID0ge21pc2M6IHt9fTtcclxuICAgICAgICB0aGlzLnBsdWdpbkRhdGEgPSB7fTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0aWFsaXplKCkge1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmJhc2VGb2xkZXIpKSBmcy5ta2RpclN5bmModGhpcy5iYXNlRm9sZGVyKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5kYXRhRm9sZGVyKSkgZnMubWtkaXJTeW5jKHRoaXMuZGF0YUZvbGRlcik7XHJcbiAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHRoaXMubG9jYWxlRm9sZGVyKSkgZnMubWtkaXJTeW5jKHRoaXMubG9jYWxlRm9sZGVyKTtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5CREZpbGUpKSBmcy53cml0ZUZpbGVTeW5jKHRoaXMuQkRGaWxlLCBKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEubWlzYywgbnVsbCwgNCkpO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmN1c3RvbUNTUykpIGZzLndyaXRlRmlsZVN5bmModGhpcy5jdXN0b21DU1MsIFwiXCIpO1xyXG4gICAgICAgIGNvbnN0IGRhdGFGaWxlcyA9IGZzLnJlYWRkaXJTeW5jKHRoaXMuZGF0YUZvbGRlcikuZmlsdGVyKGYgPT4gIWZzLnN0YXRTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIGYpKS5pc0RpcmVjdG9yeSgpICYmIGYuZW5kc1dpdGgoXCIuanNvblwiKSk7XHJcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGRhdGFGaWxlcykge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGFbZmlsZS5zcGxpdChcIi5cIilbMF1dID0gX19ub25fd2VicGFja19yZXF1aXJlX18ocGF0aC5yZXNvbHZlKHRoaXMuZGF0YUZvbGRlciwgZmlsZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyB0aGlzLmRhdGEgPSBfX25vbl93ZWJwYWNrX3JlcXVpcmVfXyh0aGlzLkJERmlsZSk7XHJcbiAgICAgICAgLy8gaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoXCJzZXR0aW5nc1wiKSkgdGhpcy5kYXRhID0gZGF0YTtcclxuICAgICAgICAvLyBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5zZXR0aW5nc0ZpbGUpKSByZXR1cm47XHJcbiAgICAgICAgLy8gbGV0IHNldHRpbmdzID0gX19ub25fd2VicGFja19yZXF1aXJlX18odGhpcy5zZXR0aW5nc0ZpbGUpO1xyXG4gICAgICAgIC8vIGZzLnVubGlua1N5bmModGhpcy5zZXR0aW5nc0ZpbGUpO1xyXG4gICAgICAgIC8vIGlmIChzZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eShcInNldHRpbmdzXCIpKSBzZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe3N0YWJsZToge30sIGNhbmFyeToge30sIHB0Yjoge319LCB7W3JlbGVhc2VDaGFubmVsXTogc2V0dGluZ3N9KTtcclxuICAgICAgICAvLyBlbHNlIHNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7c3RhYmxlOiB7fSwgY2FuYXJ5OiB7fSwgcHRiOiB7fX0sIHNldHRpbmdzKTtcclxuICAgICAgICAvLyB0aGlzLnNldEJERGF0YShcInNldHRpbmdzXCIsIHNldHRpbmdzKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY3VzdG9tQ1NTKCkge3JldHVybiB0aGlzLl9jdXN0b21DU1MgfHwgKHRoaXMuX2N1c3RvbUNTUyA9IHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIFwiY3VzdG9tLmNzc1wiKSk7fVxyXG4gICAgZ2V0IGJhc2VGb2xkZXIoKSB7cmV0dXJuIHRoaXMuX2Jhc2VGb2xkZXIgfHwgKHRoaXMuX2Jhc2VGb2xkZXIgPSBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcImRhdGFcIikpO31cclxuICAgIGdldCBkYXRhRm9sZGVyKCkge3JldHVybiB0aGlzLl9kYXRhRm9sZGVyIHx8ICh0aGlzLl9kYXRhRm9sZGVyID0gcGF0aC5yZXNvbHZlKHRoaXMuYmFzZUZvbGRlciwgYCR7cmVsZWFzZUNoYW5uZWx9YCkpO31cclxuICAgIGdldCBsb2NhbGVGb2xkZXIoKSB7cmV0dXJuIHRoaXMuX2xvY2FsZUZvbGRlciB8fCAodGhpcy5fbG9jYWxlRm9sZGVyID0gcGF0aC5yZXNvbHZlKHRoaXMuYmFzZUZvbGRlciwgYGxvY2FsZXNgKSk7fVxyXG4gICAgZ2V0IEJERmlsZSgpIHtyZXR1cm4gdGhpcy5fQkRGaWxlIHx8ICh0aGlzLl9CREZpbGUgPSBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcImRhdGFcIiwgYCR7cmVsZWFzZUNoYW5uZWx9Lmpzb25gKSk7fVxyXG4gICAgLy8gZ2V0IHNldHRpbmdzRmlsZSgpIHtyZXR1cm4gdGhpcy5fc2V0dGluZ3NGaWxlIHx8ICh0aGlzLl9zZXR0aW5nc0ZpbGUgPSBwYXRoLnJlc29sdmUoQ29uZmlnLmRhdGFQYXRoLCBcImJkc2V0dGluZ3MuanNvblwiKSk7fVxyXG4gICAgZ2V0UGx1Z2luRmlsZShwbHVnaW5OYW1lKSB7cmV0dXJuIHBhdGgucmVzb2x2ZShDb25maWcuZGF0YVBhdGgsIFwicGx1Z2luc1wiLCBwbHVnaW5OYW1lICsgXCIuY29uZmlnLmpzb25cIik7fVxyXG5cclxuICAgIC8vIGdldFNldHRpbmdHcm91cChrZXkpIHtcclxuICAgIC8vICAgICByZXR1cm4gdGhpcy5kYXRhLnNldHRpbmdzW2tleV0gfHwgbnVsbDtcclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBzZXRTZXR0aW5nR3JvdXAoa2V5LCBkYXRhKSB7XHJcbiAgICAvLyAgICAgdGhpcy5kYXRhLnNldHRpbmdzW2tleV0gPSBkYXRhO1xyXG4gICAgLy8gICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5CREZpbGUsIEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YSwgbnVsbCwgNCkpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIF9nZXRGaWxlKGtleSkge1xyXG4gICAgICAgIGlmIChrZXkgPT0gXCJzZXR0aW5nc1wiIHx8IGtleSA9PSBcInBsdWdpbnNcIiB8fCBrZXkgPT0gXCJ0aGVtZXNcIikgcmV0dXJuIHBhdGgucmVzb2x2ZSh0aGlzLmRhdGFGb2xkZXIsIGAke2tleX0uanNvbmApO1xyXG4gICAgICAgIHJldHVybiBwYXRoLnJlc29sdmUodGhpcy5kYXRhRm9sZGVyLCBgbWlzYy5qc29uYCk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0QkREYXRhKGtleSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEubWlzY1trZXldIHx8IFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0QkREYXRhKGtleSwgdmFsdWUpIHtcclxuICAgICAgICB0aGlzLmRhdGEubWlzY1trZXldID0gdmFsdWU7XHJcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLnJlc29sdmUodGhpcy5kYXRhRm9sZGVyLCBgbWlzYy5qc29uYCksIEpTT04uc3RyaW5naWZ5KHRoaXMuZGF0YS5taXNjLCBudWxsLCA0KSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TG9jYWxlKGxvY2FsZSkge1xyXG4gICAgICAgIGNvbnN0IGZpbGUgPSBwYXRoLnJlc29sdmUodGhpcy5sb2NhbGVGb2xkZXIsIGAke2xvY2FsZX0uanNvbmApO1xyXG4gICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlKSkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgcmV0dXJuIFV0aWxpdGllcy50ZXN0SlNPTihmcy5yZWFkRmlsZVN5bmMoZmlsZSkudG9TdHJpbmcoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUxvY2FsZShsb2NhbGUsIHN0cmluZ3MpIHtcclxuICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHBhdGgucmVzb2x2ZSh0aGlzLmxvY2FsZUZvbGRlciwgYCR7bG9jYWxlfS5qc29uYCksIEpTT04uc3RyaW5naWZ5KHN0cmluZ3MsIG51bGwsIDQpKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXREYXRhKGtleSkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFba2V5XSB8fCBcIlwiO1xyXG4gICAgfVxyXG5cclxuICAgIHNldERhdGEoa2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuZGF0YVtrZXldID0gdmFsdWU7XHJcbiAgICAgICAgZnMud3JpdGVGaWxlU3luYyhwYXRoLnJlc29sdmUodGhpcy5kYXRhRm9sZGVyLCBgJHtrZXl9Lmpzb25gKSwgSlNPTi5zdHJpbmdpZnkodmFsdWUsIG51bGwsIDQpKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2FkQ3VzdG9tQ1NTKCkge1xyXG4gICAgICAgIHJldHVybiBmcy5yZWFkRmlsZVN5bmModGhpcy5jdXN0b21DU1MpLnRvU3RyaW5nKCk7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZUN1c3RvbUNTUyhjc3MpIHtcclxuICAgICAgICByZXR1cm4gZnMud3JpdGVGaWxlU3luYyh0aGlzLmN1c3RvbUNTUywgY3NzKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgICAgIGlmICh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gIT09IHVuZGVmaW5lZCkgcmV0dXJuIHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXVtrZXldIHx8IHVuZGVmaW5lZDtcclxuICAgICAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5nZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpKSkgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgICAgICB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gPSBKU09OLnBhcnNlKGZzLnJlYWRGaWxlU3luYyh0aGlzLmdldFBsdWdpbkZpbGUocGx1Z2luTmFtZSkpKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdW2tleV0gfHwgdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHNldFBsdWdpbkRhdGEocGx1Z2luTmFtZSwga2V5LCB2YWx1ZSkge1xyXG4gICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm47XHJcbiAgICAgICAgaWYgKHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXSA9PT0gdW5kZWZpbmVkKSB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gPSB7fTtcclxuICAgICAgICB0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV1ba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5nZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpLCBKU09OLnN0cmluZ2lmeSh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0sIG51bGwsIDQpKTtcclxuICAgIH1cclxuXHJcbiAgICBkZWxldGVQbHVnaW5EYXRhKHBsdWdpbk5hbWUsIGtleSkge1xyXG4gICAgICAgIGlmICh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0gPT09IHVuZGVmaW5lZCkgdGhpcy5wbHVnaW5EYXRhW3BsdWdpbk5hbWVdID0ge307XHJcbiAgICAgICAgZGVsZXRlIHRoaXMucGx1Z2luRGF0YVtwbHVnaW5OYW1lXVtrZXldO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5nZXRQbHVnaW5GaWxlKHBsdWdpbk5hbWUpLCBKU09OLnN0cmluZ2lmeSh0aGlzLnBsdWdpbkRhdGFbcGx1Z2luTmFtZV0sIG51bGwsIDQpKTtcclxuICAgIH1cclxufTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/datastore.js\n"); /***/ }), @@ -435,6 +435,18 @@ eval("__webpack_require__.r(__webpack_exports__);\nconst EventEmitter = __webpac /***/ }), +/***/ "./src/modules/localemanager.js": +/*!**************************************!*\ + !*** ./src/modules/localemanager.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _data_strings__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../data/strings */ \"./src/data/strings.js\");\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n\n\n\n\n\n\nconst request = __webpack_require__(/*! request */ \"request\");\n\nconst {\n Dispatcher,\n DiscordConstants,\n UserSettingsStore\n} = _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (new class LocaleManager {\n get discordLocale() {\n return UserSettingsStore.locale.split(\"-\")[0];\n }\n\n get defaultLocale() {\n return \"en\";\n }\n\n constructor() {\n this.locale = \"\";\n this.strings = {};\n }\n\n async initialize() {\n await this.setLocale(this.discordLocale);\n Dispatcher.subscribe(DiscordConstants.ActionTypes.USER_SETTINGS_UPDATE, ({\n settings\n }) => {\n const newLocale = settings.locale;\n if (newLocale && newLocale != this.locale) this.setLocale(newLocale.split(\"-\")[0]);\n });\n }\n\n async setLocale(newLocale) {\n let newStrings;\n\n if (newLocale != this.defaultLocale) {\n const savedStrings = _datastore__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getLocale(newLocale);\n newStrings = savedStrings || (await this.downloadLocale(newLocale));\n if (!newStrings) return this.setLocale(this.defaultLocale);\n } else {\n newStrings = _data_strings__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\n }\n\n this.locale = newLocale;\n _utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(this.strings, newStrings);\n _emitter__WEBPACK_IMPORTED_MODULE_3__[\"default\"].emit(\"strings-updated\");\n }\n\n downloadLocale(locale) {\n return new Promise(resolve => {\n const options = {\n url: `https://raw.githubusercontent.com/rauenzi/BetterDiscordApp/development/data/locales/${locale}.json`,\n //`https://rauenzi.github.io/BetterDiscordApp/data/locales/${discordLocale}.json`,\n timeout: 2000,\n json: true\n };\n request.get(options, (err, resp, newStrings) => {\n if (err || resp.statusCode !== 200) return resolve(null);\n resolve(newStrings);\n });\n });\n }\n\n}());//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvbG9jYWxlbWFuYWdlci5qcz8yMzlkIl0sIm5hbWVzIjpbInJlcXVlc3QiLCJyZXF1aXJlIiwiRGlzcGF0Y2hlciIsIkRpc2NvcmRDb25zdGFudHMiLCJVc2VyU2V0dGluZ3NTdG9yZSIsIkRpc2NvcmRNb2R1bGVzIiwiTG9jYWxlTWFuYWdlciIsImRpc2NvcmRMb2NhbGUiLCJsb2NhbGUiLCJzcGxpdCIsImRlZmF1bHRMb2NhbGUiLCJjb25zdHJ1Y3RvciIsInN0cmluZ3MiLCJpbml0aWFsaXplIiwic2V0TG9jYWxlIiwic3Vic2NyaWJlIiwiQWN0aW9uVHlwZXMiLCJVU0VSX1NFVFRJTkdTX1VQREFURSIsInNldHRpbmdzIiwibmV3TG9jYWxlIiwibmV3U3RyaW5ncyIsInNhdmVkU3RyaW5ncyIsIkRhdGFTdG9yZSIsImdldExvY2FsZSIsImRvd25sb2FkTG9jYWxlIiwiRGVmYXVsdFN0cmluZ3MiLCJVdGlsaXRpZXMiLCJleHRlbmQiLCJFdmVudHMiLCJlbWl0IiwiUHJvbWlzZSIsInJlc29sdmUiLCJvcHRpb25zIiwidXJsIiwidGltZW91dCIsImpzb24iLCJnZXQiLCJlcnIiLCJyZXNwIiwic3RhdHVzQ29kZSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFDQSxNQUFNQSxPQUFPLEdBQUdDLG1CQUFPLENBQUMsd0JBQUQsQ0FBdkI7O0FBRUEsTUFBTTtBQUFDQyxZQUFEO0FBQWFDLGtCQUFiO0FBQStCQztBQUEvQixJQUFvREMsdURBQTFEO0FBRWUsbUVBQUksTUFBTUMsYUFBTixDQUFvQjtBQUN0QyxNQUFJQyxhQUFKLEdBQW9CO0FBQUMsV0FBT0gsaUJBQWlCLENBQUNJLE1BQWxCLENBQXlCQyxLQUF6QixDQUErQixHQUEvQixFQUFvQyxDQUFwQyxDQUFQO0FBQStDOztBQUNwRSxNQUFJQyxhQUFKLEdBQW9CO0FBQUMsV0FBTyxJQUFQO0FBQWE7O0FBRWxDQyxhQUFXLEdBQUc7QUFDUCxTQUFLSCxNQUFMLEdBQWMsRUFBZDtBQUNBLFNBQUtJLE9BQUwsR0FBZSxFQUFmO0FBQ047O0FBRUQsUUFBTUMsVUFBTixHQUFtQjtBQUNaLFVBQU0sS0FBS0MsU0FBTCxDQUFlLEtBQUtQLGFBQXBCLENBQU47QUFDQUwsY0FBVSxDQUFDYSxTQUFYLENBQXFCWixnQkFBZ0IsQ0FBQ2EsV0FBakIsQ0FBNkJDLG9CQUFsRCxFQUF3RSxDQUFDO0FBQUNDO0FBQUQsS0FBRCxLQUFnQjtBQUNwRixZQUFNQyxTQUFTLEdBQUdELFFBQVEsQ0FBQ1YsTUFBM0I7QUFDQSxVQUFJVyxTQUFTLElBQUlBLFNBQVMsSUFBSSxLQUFLWCxNQUFuQyxFQUEyQyxLQUFLTSxTQUFMLENBQWVLLFNBQVMsQ0FBQ1YsS0FBVixDQUFnQixHQUFoQixFQUFxQixDQUFyQixDQUFmO0FBQzlDLEtBSEQ7QUFJTjs7QUFFRCxRQUFNSyxTQUFOLENBQWdCSyxTQUFoQixFQUEyQjtBQUNwQixRQUFJQyxVQUFKOztBQUNBLFFBQUlELFNBQVMsSUFBSSxLQUFLVCxhQUF0QixFQUFxQztBQUNqQyxZQUFNVyxZQUFZLEdBQUdDLGtEQUFTLENBQUNDLFNBQVYsQ0FBb0JKLFNBQXBCLENBQXJCO0FBQ0FDLGdCQUFVLEdBQUdDLFlBQVksS0FBSSxNQUFNLEtBQUtHLGNBQUwsQ0FBb0JMLFNBQXBCLENBQVYsQ0FBekI7QUFDQSxVQUFJLENBQUNDLFVBQUwsRUFBaUIsT0FBTyxLQUFLTixTQUFMLENBQWUsS0FBS0osYUFBcEIsQ0FBUDtBQUNwQixLQUpELE1BS0s7QUFDRFUsZ0JBQVUsR0FBR0sscURBQWI7QUFDSDs7QUFDUCxTQUFLakIsTUFBTCxHQUFjVyxTQUFkO0FBQ0FPLHNEQUFTLENBQUNDLE1BQVYsQ0FBaUIsS0FBS2YsT0FBdEIsRUFBK0JRLFVBQS9CO0FBQ0FRLG9EQUFNLENBQUNDLElBQVAsQ0FBWSxpQkFBWjtBQUNBOztBQUVETCxnQkFBYyxDQUFDaEIsTUFBRCxFQUFTO0FBQ3RCLFdBQU8sSUFBSXNCLE9BQUosQ0FBWUMsT0FBTyxJQUFJO0FBQzdCLFlBQU1DLE9BQU8sR0FBRztBQUNmQyxXQUFHLEVBQUcsdUZBQXNGekIsTUFBTyxPQURwRjtBQUMyRjtBQUMxRzBCLGVBQU8sRUFBRSxJQUZNO0FBR2ZDLFlBQUksRUFBRTtBQUhTLE9BQWhCO0FBS0FuQyxhQUFPLENBQUNvQyxHQUFSLENBQVlKLE9BQVosRUFBcUIsQ0FBQ0ssR0FBRCxFQUFNQyxJQUFOLEVBQVlsQixVQUFaLEtBQTJCO0FBQy9DLFlBQUlpQixHQUFHLElBQUlDLElBQUksQ0FBQ0MsVUFBTCxLQUFvQixHQUEvQixFQUFvQyxPQUFPUixPQUFPLENBQUMsSUFBRCxDQUFkO0FBQ3BDQSxlQUFPLENBQUNYLFVBQUQsQ0FBUDtBQUNBLE9BSEQ7QUFJQSxLQVZNLENBQVA7QUFXQTs7QUE1Q3FDLENBQXhCLEVBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9sb2NhbGVtYW5hZ2VyLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERlZmF1bHRTdHJpbmdzIGZyb20gXCIuLi9kYXRhL3N0cmluZ3NcIjtcclxuaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmltcG9ydCBFdmVudHMgZnJvbSBcIi4vZW1pdHRlclwiO1xyXG5pbXBvcnQgRGF0YVN0b3JlIGZyb20gXCIuL2RhdGFzdG9yZVwiO1xyXG5jb25zdCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XHJcblxyXG5jb25zdCB7RGlzcGF0Y2hlciwgRGlzY29yZENvbnN0YW50cywgVXNlclNldHRpbmdzU3RvcmV9ID0gRGlzY29yZE1vZHVsZXM7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgY2xhc3MgTG9jYWxlTWFuYWdlciB7XHJcblx0Z2V0IGRpc2NvcmRMb2NhbGUoKSB7cmV0dXJuIFVzZXJTZXR0aW5nc1N0b3JlLmxvY2FsZS5zcGxpdChcIi1cIilbMF07fVxyXG5cdGdldCBkZWZhdWx0TG9jYWxlKCkge3JldHVybiBcImVuXCI7fVxyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmxvY2FsZSA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5zdHJpbmdzID0ge307XHJcblx0fVxyXG5cdFxyXG5cdGFzeW5jIGluaXRpYWxpemUoKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zZXRMb2NhbGUodGhpcy5kaXNjb3JkTG9jYWxlKTtcclxuICAgICAgICBEaXNwYXRjaGVyLnN1YnNjcmliZShEaXNjb3JkQ29uc3RhbnRzLkFjdGlvblR5cGVzLlVTRVJfU0VUVElOR1NfVVBEQVRFLCAoe3NldHRpbmdzfSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdMb2NhbGUgPSBzZXR0aW5ncy5sb2NhbGU7XHJcbiAgICAgICAgICAgIGlmIChuZXdMb2NhbGUgJiYgbmV3TG9jYWxlICE9IHRoaXMubG9jYWxlKSB0aGlzLnNldExvY2FsZShuZXdMb2NhbGUuc3BsaXQoXCItXCIpWzBdKTtcclxuICAgICAgICB9KTtcclxuXHR9XHJcblxyXG5cdGFzeW5jIHNldExvY2FsZShuZXdMb2NhbGUpIHtcclxuICAgICAgICBsZXQgbmV3U3RyaW5ncztcclxuICAgICAgICBpZiAobmV3TG9jYWxlICE9IHRoaXMuZGVmYXVsdExvY2FsZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzYXZlZFN0cmluZ3MgPSBEYXRhU3RvcmUuZ2V0TG9jYWxlKG5ld0xvY2FsZSk7XHJcbiAgICAgICAgICAgIG5ld1N0cmluZ3MgPSBzYXZlZFN0cmluZ3MgfHwgYXdhaXQgdGhpcy5kb3dubG9hZExvY2FsZShuZXdMb2NhbGUpO1xyXG4gICAgICAgICAgICBpZiAoIW5ld1N0cmluZ3MpIHJldHVybiB0aGlzLnNldExvY2FsZSh0aGlzLmRlZmF1bHRMb2NhbGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgbmV3U3RyaW5ncyA9IERlZmF1bHRTdHJpbmdzO1xyXG4gICAgICAgIH1cclxuXHRcdHRoaXMubG9jYWxlID0gbmV3TG9jYWxlO1xyXG5cdFx0VXRpbGl0aWVzLmV4dGVuZCh0aGlzLnN0cmluZ3MsIG5ld1N0cmluZ3MpO1xyXG5cdFx0RXZlbnRzLmVtaXQoXCJzdHJpbmdzLXVwZGF0ZWRcIik7XHJcblx0fVxyXG5cclxuXHRkb3dubG9hZExvY2FsZShsb2NhbGUpIHtcclxuXHRcdHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcclxuXHRcdFx0Y29uc3Qgb3B0aW9ucyA9IHtcclxuXHRcdFx0XHR1cmw6IGBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vcmF1ZW56aS9CZXR0ZXJEaXNjb3JkQXBwL2RldmVsb3BtZW50L2RhdGEvbG9jYWxlcy8ke2xvY2FsZX0uanNvbmAsLy9gaHR0cHM6Ly9yYXVlbnppLmdpdGh1Yi5pby9CZXR0ZXJEaXNjb3JkQXBwL2RhdGEvbG9jYWxlcy8ke2Rpc2NvcmRMb2NhbGV9Lmpzb25gLFxyXG5cdFx0XHRcdHRpbWVvdXQ6IDIwMDAsXHJcblx0XHRcdFx0anNvbjogdHJ1ZVxyXG5cdFx0XHR9O1xyXG5cdFx0XHRyZXF1ZXN0LmdldChvcHRpb25zLCAoZXJyLCByZXNwLCBuZXdTdHJpbmdzKSA9PiB7XHJcblx0XHRcdFx0aWYgKGVyciB8fCByZXNwLnN0YXR1c0NvZGUgIT09IDIwMCkgcmV0dXJuIHJlc29sdmUobnVsbCk7XHJcblx0XHRcdFx0cmVzb2x2ZShuZXdTdHJpbmdzKTtcclxuXHRcdFx0fSk7XHJcblx0XHR9KTtcclxuXHR9XHJcbn07Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./src/modules/localemanager.js\n"); + +/***/ }), + /***/ "./src/modules/logger.js": /*!*******************************!*\ !*** ./src/modules/logger.js ***! @@ -451,11 +463,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /*!********************************!*\ !*** ./src/modules/modules.js ***! \********************************/ -/*! exports provided: WebpackModules, React, ReactDOM, DiscordModules, Utilities, DataStore, Events, Settings, DOMManager, Logger, Patcher, ReactComponents, Strings */ +/*! exports provided: WebpackModules, React, ReactDOM, DiscordModules, Utilities, DataStore, Events, Settings, DOMManager, Logger, Patcher, ReactComponents, LocaleManager, Strings */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"React\", function() { return React; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ReactDOM\", function() { return ReactDOM; });\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WebpackModules\", function() { return _webpackmodules__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DiscordModules\", function() { return _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Utilities\", function() { return _utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DataStore\", function() { return _datastore__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Events\", function() { return _emitter__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Settings\", function() { return _settingsmanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DOMManager\", function() { return _dommanager__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Logger\", function() { return _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Patcher\", function() { return _patcher__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _reactcomponents__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./reactcomponents */ \"./src/modules/reactcomponents.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ReactComponents\", function() { return _reactcomponents__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Strings\", function() { return _strings__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].React;\nconst ReactDOM = _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ReactDOM;\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvbW9kdWxlcy5qcz8xNGRiIl0sIm5hbWVzIjpbIlJlYWN0IiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdERPTSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNPLE1BQU1BLEtBQUssR0FBR0MsdURBQWMsQ0FBQ0QsS0FBN0I7QUFDQSxNQUFNRSxRQUFRLEdBQUdELHVEQUFjLENBQUNDLFFBQWhDO0FBQ1A7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvbW9kdWxlcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7ZGVmYXVsdCBhcyBXZWJwYWNrTW9kdWxlc30gZnJvbSBcIi4vd2VicGFja21vZHVsZXNcIjtcclxuXHJcbmltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5leHBvcnQgY29uc3QgUmVhY3QgPSBEaXNjb3JkTW9kdWxlcy5SZWFjdDtcclxuZXhwb3J0IGNvbnN0IFJlYWN0RE9NID0gRGlzY29yZE1vZHVsZXMuUmVhY3RET007XHJcbmV4cG9ydCB7RGlzY29yZE1vZHVsZXN9O1xyXG5cclxuZXhwb3J0IHtkZWZhdWx0IGFzIFV0aWxpdGllc30gZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBEYXRhU3RvcmV9IGZyb20gXCIuL2RhdGFzdG9yZVwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgRXZlbnRzfSBmcm9tIFwiLi9lbWl0dGVyXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBTZXR0aW5nc30gZnJvbSBcIi4vc2V0dGluZ3NtYW5hZ2VyXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBET01NYW5hZ2VyfSBmcm9tIFwiLi9kb21tYW5hZ2VyXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBMb2dnZXJ9IGZyb20gXCIuL2xvZ2dlclwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgUGF0Y2hlcn0gZnJvbSBcIi4vcGF0Y2hlclwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgUmVhY3RDb21wb25lbnRzfSBmcm9tIFwiLi9yZWFjdGNvbXBvbmVudHNcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIFN0cmluZ3N9IGZyb20gXCIuL3N0cmluZ3NcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/modules.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"React\", function() { return React; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ReactDOM\", function() { return ReactDOM; });\n/* harmony import */ var _webpackmodules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./webpackmodules */ \"./src/modules/webpackmodules.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WebpackModules\", function() { return _webpackmodules__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DiscordModules\", function() { return _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Utilities\", function() { return _utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DataStore\", function() { return _datastore__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Events\", function() { return _emitter__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _settingsmanager__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./settingsmanager */ \"./src/modules/settingsmanager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Settings\", function() { return _settingsmanager__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _dommanager__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./dommanager */ \"./src/modules/dommanager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"DOMManager\", function() { return _dommanager__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _logger__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./logger */ \"./src/modules/logger.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Logger\", function() { return _logger__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _patcher__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./patcher */ \"./src/modules/patcher.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Patcher\", function() { return _patcher__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _reactcomponents__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./reactcomponents */ \"./src/modules/reactcomponents.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ReactComponents\", function() { return _reactcomponents__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _localemanager__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./localemanager */ \"./src/modules/localemanager.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LocaleManager\", function() { return _localemanager__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _strings__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./strings */ \"./src/modules/strings.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Strings\", function() { return _strings__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n\n\nconst React = _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].React;\nconst ReactDOM = _discordmodules__WEBPACK_IMPORTED_MODULE_1__[\"default\"].ReactDOM;\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvbW9kdWxlcy5qcz8xNGRiIl0sIm5hbWVzIjpbIlJlYWN0IiwiRGlzY29yZE1vZHVsZXMiLCJSZWFjdERPTSJdLCJtYXBwaW5ncyI6IkFBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNPLE1BQU1BLEtBQUssR0FBR0MsdURBQWMsQ0FBQ0QsS0FBN0I7QUFDQSxNQUFNRSxRQUFRLEdBQUdELHVEQUFjLENBQUNDLFFBQWhDO0FBQ1A7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9tb2R1bGVzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtkZWZhdWx0IGFzIFdlYnBhY2tNb2R1bGVzfSBmcm9tIFwiLi93ZWJwYWNrbW9kdWxlc1wiO1xyXG5cclxuaW1wb3J0IERpc2NvcmRNb2R1bGVzIGZyb20gXCIuL2Rpc2NvcmRtb2R1bGVzXCI7XHJcbmV4cG9ydCBjb25zdCBSZWFjdCA9IERpc2NvcmRNb2R1bGVzLlJlYWN0O1xyXG5leHBvcnQgY29uc3QgUmVhY3RET00gPSBEaXNjb3JkTW9kdWxlcy5SZWFjdERPTTtcclxuZXhwb3J0IHtEaXNjb3JkTW9kdWxlc307XHJcblxyXG5leHBvcnQge2RlZmF1bHQgYXMgVXRpbGl0aWVzfSBmcm9tIFwiLi91dGlsaXRpZXNcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIERhdGFTdG9yZX0gZnJvbSBcIi4vZGF0YXN0b3JlXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBFdmVudHN9IGZyb20gXCIuL2VtaXR0ZXJcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIFNldHRpbmdzfSBmcm9tIFwiLi9zZXR0aW5nc21hbmFnZXJcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIERPTU1hbmFnZXJ9IGZyb20gXCIuL2RvbW1hbmFnZXJcIjtcclxuZXhwb3J0IHtkZWZhdWx0IGFzIExvZ2dlcn0gZnJvbSBcIi4vbG9nZ2VyXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBQYXRjaGVyfSBmcm9tIFwiLi9wYXRjaGVyXCI7XHJcbmV4cG9ydCB7ZGVmYXVsdCBhcyBSZWFjdENvbXBvbmVudHN9IGZyb20gXCIuL3JlYWN0Y29tcG9uZW50c1wiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgTG9jYWxlTWFuYWdlcn0gZnJvbSBcIi4vbG9jYWxlbWFuYWdlclwiO1xyXG5leHBvcnQge2RlZmF1bHQgYXMgU3RyaW5nc30gZnJvbSBcIi4vc3RyaW5nc1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/modules/modules.js\n"); /***/ }), @@ -523,11 +535,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var data /*!********************************!*\ !*** ./src/modules/strings.js ***! \********************************/ -/*! exports provided: currentLocale, setLocale, default */ +/*! exports provided: default */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"currentLocale\", function() { return currentLocale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setLocale\", function() { return setLocale; });\n/* harmony import */ var _discordmodules__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./discordmodules */ \"./src/modules/discordmodules.js\");\n/* harmony import */ var _data_strings__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../data/strings */ \"./src/data/strings.js\");\n/* harmony import */ var _utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utilities */ \"./src/modules/utilities.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../structs/string */ \"./src/structs/string.js\");\n/* harmony import */ var _emitter__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./emitter */ \"./src/modules/emitter.js\");\n/* harmony import */ var _datastore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./datastore */ \"./src/modules/datastore.js\");\n\n\n\n\n\n\n\nconst request = __webpack_require__(/*! request */ \"request\");\n\nconst discordLocale = UserSettingsStore.locale.split(\"-\")[0];\nconst savedStrings = _datastore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getLocale(discordLocale);\n\nif (!savedStrings) {\n const options = {\n url: \"https://rauenzi.github.io/BetterDiscordApp/data/emotedata_twitch_subscriber.json\",\n timeout: 5000,\n json: true\n };\n request.get(options, (err, resp, newStrings) => {\n if (err) return;\n _datastore__WEBPACK_IMPORTED_MODULE_5__[\"default\"].saveLocale(discordLocale, newStrings);\n _utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(Messages, newStrings);\n _emitter__WEBPACK_IMPORTED_MODULE_4__[\"default\"].emit(\"strings-updated\");\n });\n}\n\nconst {\n Dispatcher,\n DiscordConstants,\n UserSettingsStore\n} = _discordmodules__WEBPACK_IMPORTED_MODULE_0__[\"default\"];\nconst Messages = {};\nlet currentLocale = \"en\";\nfunction setLocale(newLocale) {\n currentLocale = newLocale;\n _utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(Messages, _data_strings__WEBPACK_IMPORTED_MODULE_1__[\"default\"][currentLocale]);\n _emitter__WEBPACK_IMPORTED_MODULE_4__[\"default\"].emit(\"strings-updated\");\n}\n_utilities__WEBPACK_IMPORTED_MODULE_2__[\"default\"].extend(Messages, _data_strings__WEBPACK_IMPORTED_MODULE_1__[\"default\"][currentLocale]); // if (RawStrings[discordLocale] && discordLocale != currentLocale) setLocale(discordLocale);\n\nDispatcher.subscribe(DiscordConstants.ActionTypes.USER_SETTINGS_UPDATE, ({\n settings\n}) => {\n const newLocale = settings.locale;\n if (newLocale && newLocale != currentLocale) setLocale(newLocale.split(\"-\")[0]);\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (new Proxy(Messages, {\n get: function (strings, category) {\n if (!strings.hasOwnProperty(category)) {\n return new Proxy({}, {\n get: function () {\n return `String group \"${category}\" not found.`;\n }\n });\n }\n\n return new Proxy(strings[category], {\n get: function (obj, prop) {\n if (typeof obj[prop] == \"string\") return new _structs_string__WEBPACK_IMPORTED_MODULE_3__[\"default\"](obj[prop]);\n return obj[prop];\n }\n });\n }\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvc3RyaW5ncy5qcz8zNTllIl0sIm5hbWVzIjpbInJlcXVlc3QiLCJyZXF1aXJlIiwiZGlzY29yZExvY2FsZSIsIlVzZXJTZXR0aW5nc1N0b3JlIiwibG9jYWxlIiwic3BsaXQiLCJzYXZlZFN0cmluZ3MiLCJEYXRhU3RvcmUiLCJnZXRMb2NhbGUiLCJvcHRpb25zIiwidXJsIiwidGltZW91dCIsImpzb24iLCJnZXQiLCJlcnIiLCJyZXNwIiwibmV3U3RyaW5ncyIsInNhdmVMb2NhbGUiLCJVdGlsaXRpZXMiLCJleHRlbmQiLCJNZXNzYWdlcyIsIkV2ZW50cyIsImVtaXQiLCJEaXNwYXRjaGVyIiwiRGlzY29yZENvbnN0YW50cyIsIkRpc2NvcmRNb2R1bGVzIiwiY3VycmVudExvY2FsZSIsInNldExvY2FsZSIsIm5ld0xvY2FsZSIsIlJhd1N0cmluZ3MiLCJzdWJzY3JpYmUiLCJBY3Rpb25UeXBlcyIsIlVTRVJfU0VUVElOR1NfVVBEQVRFIiwic2V0dGluZ3MiLCJQcm94eSIsInN0cmluZ3MiLCJjYXRlZ29yeSIsImhhc093blByb3BlcnR5Iiwib2JqIiwicHJvcCIsIkZvcm1hdHRhYmxlU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsTUFBTUEsT0FBTyxHQUFHQyxtQkFBTyxDQUFDLHdCQUFELENBQXZCOztBQUNBLE1BQU1DLGFBQWEsR0FBR0MsaUJBQWlCLENBQUNDLE1BQWxCLENBQXlCQyxLQUF6QixDQUErQixHQUEvQixFQUFvQyxDQUFwQyxDQUF0QjtBQUVBLE1BQU1DLFlBQVksR0FBR0Msa0RBQVMsQ0FBQ0MsU0FBVixDQUFvQk4sYUFBcEIsQ0FBckI7O0FBQ0EsSUFBSSxDQUFDSSxZQUFMLEVBQW1CO0FBQ2xCLFFBQU1HLE9BQU8sR0FBRztBQUNmQyxPQUFHLEVBQUUsa0ZBRFU7QUFFZkMsV0FBTyxFQUFFLElBRk07QUFHVEMsUUFBSSxFQUFFO0FBSEcsR0FBaEI7QUFLQVosU0FBTyxDQUFDYSxHQUFSLENBQVlKLE9BQVosRUFBcUIsQ0FBQ0ssR0FBRCxFQUFNQyxJQUFOLEVBQVlDLFVBQVosS0FBMkI7QUFDL0MsUUFBSUYsR0FBSixFQUFTO0FBQ1RQLHNEQUFTLENBQUNVLFVBQVYsQ0FBcUJmLGFBQXJCLEVBQW9DYyxVQUFwQztBQUNBRSxzREFBUyxDQUFDQyxNQUFWLENBQWlCQyxRQUFqQixFQUEyQkosVUFBM0I7QUFDQUssb0RBQU0sQ0FBQ0MsSUFBUCxDQUFZLGlCQUFaO0FBQ0EsR0FMRDtBQU1BOztBQUVELE1BQU07QUFBQ0MsWUFBRDtBQUFhQyxrQkFBYjtBQUErQnJCO0FBQS9CLElBQW9Ec0IsdURBQTFEO0FBQ0EsTUFBTUwsUUFBUSxHQUFHLEVBQWpCO0FBSU8sSUFBSU0sYUFBYSxHQUFHLElBQXBCO0FBQ0EsU0FBU0MsU0FBVCxDQUFtQkMsU0FBbkIsRUFBOEI7QUFDakNGLGVBQWEsR0FBR0UsU0FBaEI7QUFDSFYsb0RBQVMsQ0FBQ0MsTUFBVixDQUFpQkMsUUFBakIsRUFBMkJTLHFEQUFVLENBQUNILGFBQUQsQ0FBckM7QUFDQUwsa0RBQU0sQ0FBQ0MsSUFBUCxDQUFZLGlCQUFaO0FBQ0E7QUFFREosa0RBQVMsQ0FBQ0MsTUFBVixDQUFpQkMsUUFBakIsRUFBMkJTLHFEQUFVLENBQUNILGFBQUQsQ0FBckMsRSxDQUVBOztBQUVBSCxVQUFVLENBQUNPLFNBQVgsQ0FBcUJOLGdCQUFnQixDQUFDTyxXQUFqQixDQUE2QkMsb0JBQWxELEVBQXdFLENBQUM7QUFBQ0M7QUFBRCxDQUFELEtBQWdCO0FBQ3BGLFFBQU1MLFNBQVMsR0FBR0ssUUFBUSxDQUFDN0IsTUFBM0I7QUFDQSxNQUFJd0IsU0FBUyxJQUFJQSxTQUFTLElBQUlGLGFBQTlCLEVBQTZDQyxTQUFTLENBQUNDLFNBQVMsQ0FBQ3ZCLEtBQVYsQ0FBZ0IsR0FBaEIsRUFBcUIsQ0FBckIsQ0FBRCxDQUFUO0FBQ2hELENBSEQ7QUFNZSxtRUFBSTZCLEtBQUosQ0FBVWQsUUFBVixFQUFvQjtBQUNsQ1AsS0FBRyxFQUFFLFVBQVNzQixPQUFULEVBQWtCQyxRQUFsQixFQUE0QjtBQUMxQixRQUFJLENBQUNELE9BQU8sQ0FBQ0UsY0FBUixDQUF1QkQsUUFBdkIsQ0FBTCxFQUF1QztBQUM1QyxhQUFPLElBQUlGLEtBQUosQ0FBVSxFQUFWLEVBQWM7QUFDcEJyQixXQUFHLEVBQUUsWUFBVztBQUNmLGlCQUFRLGlCQUFnQnVCLFFBQVMsY0FBakM7QUFDQTtBQUhtQixPQUFkLENBQVA7QUFLQTs7QUFDRCxXQUFPLElBQUlGLEtBQUosQ0FBVUMsT0FBTyxDQUFDQyxRQUFELENBQWpCLEVBQTZCO0FBQ25DdkIsU0FBRyxFQUFFLFVBQVN5QixHQUFULEVBQWNDLElBQWQsRUFBb0I7QUFDeEIsWUFBSSxPQUFPRCxHQUFHLENBQUNDLElBQUQsQ0FBVixJQUFxQixRQUF6QixFQUFtQyxPQUFPLElBQUlDLHVEQUFKLENBQXNCRixHQUFHLENBQUNDLElBQUQsQ0FBekIsQ0FBUDtBQUNuQyxlQUFPRCxHQUFHLENBQUNDLElBQUQsQ0FBVjtBQUNBO0FBSmtDLEtBQTdCLENBQVA7QUFNQTtBQWZpQyxDQUFwQixDQUFmIiwiZmlsZSI6Ii4vc3JjL21vZHVsZXMvc3RyaW5ncy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaXNjb3JkTW9kdWxlcyBmcm9tIFwiLi9kaXNjb3JkbW9kdWxlc1wiO1xyXG5pbXBvcnQgUmF3U3RyaW5ncyBmcm9tIFwiLi4vZGF0YS9zdHJpbmdzXCI7XHJcbmltcG9ydCBVdGlsaXRpZXMgZnJvbSBcIi4vdXRpbGl0aWVzXCI7XHJcbmltcG9ydCBGb3JtYXR0YWJsZVN0cmluZyBmcm9tIFwiLi4vc3RydWN0cy9zdHJpbmdcIjtcclxuaW1wb3J0IEV2ZW50cyBmcm9tIFwiLi9lbWl0dGVyXCI7XHJcbmltcG9ydCBEYXRhU3RvcmUgZnJvbSBcIi4vZGF0YXN0b3JlXCI7XHJcblxyXG5jb25zdCByZXF1ZXN0ID0gcmVxdWlyZShcInJlcXVlc3RcIik7XHJcbmNvbnN0IGRpc2NvcmRMb2NhbGUgPSBVc2VyU2V0dGluZ3NTdG9yZS5sb2NhbGUuc3BsaXQoXCItXCIpWzBdO1xyXG5cclxuY29uc3Qgc2F2ZWRTdHJpbmdzID0gRGF0YVN0b3JlLmdldExvY2FsZShkaXNjb3JkTG9jYWxlKTtcclxuaWYgKCFzYXZlZFN0cmluZ3MpIHtcclxuXHRjb25zdCBvcHRpb25zID0ge1xyXG5cdFx0dXJsOiBcImh0dHBzOi8vcmF1ZW56aS5naXRodWIuaW8vQmV0dGVyRGlzY29yZEFwcC9kYXRhL2Vtb3RlZGF0YV90d2l0Y2hfc3Vic2NyaWJlci5qc29uXCIsXHJcblx0XHR0aW1lb3V0OiA1MDAwLFxyXG4gICAgICAgIGpzb246IHRydWVcclxuXHR9O1xyXG5cdHJlcXVlc3QuZ2V0KG9wdGlvbnMsIChlcnIsIHJlc3AsIG5ld1N0cmluZ3MpID0+IHtcclxuXHRcdGlmIChlcnIpIHJldHVybjtcclxuXHRcdERhdGFTdG9yZS5zYXZlTG9jYWxlKGRpc2NvcmRMb2NhbGUsIG5ld1N0cmluZ3MpO1xyXG5cdFx0VXRpbGl0aWVzLmV4dGVuZChNZXNzYWdlcywgbmV3U3RyaW5ncyk7XHJcblx0XHRFdmVudHMuZW1pdChcInN0cmluZ3MtdXBkYXRlZFwiKTtcclxuXHR9KTtcclxufVxyXG5cclxuY29uc3Qge0Rpc3BhdGNoZXIsIERpc2NvcmRDb25zdGFudHMsIFVzZXJTZXR0aW5nc1N0b3JlfSA9IERpc2NvcmRNb2R1bGVzO1xyXG5jb25zdCBNZXNzYWdlcyA9IHt9O1xyXG5cclxuXHJcblxyXG5leHBvcnQgbGV0IGN1cnJlbnRMb2NhbGUgPSBcImVuXCI7XHJcbmV4cG9ydCBmdW5jdGlvbiBzZXRMb2NhbGUobmV3TG9jYWxlKSB7XHJcbiAgICBjdXJyZW50TG9jYWxlID0gbmV3TG9jYWxlO1xyXG5cdFV0aWxpdGllcy5leHRlbmQoTWVzc2FnZXMsIFJhd1N0cmluZ3NbY3VycmVudExvY2FsZV0pO1xyXG5cdEV2ZW50cy5lbWl0KFwic3RyaW5ncy11cGRhdGVkXCIpO1xyXG59XHJcblxyXG5VdGlsaXRpZXMuZXh0ZW5kKE1lc3NhZ2VzLCBSYXdTdHJpbmdzW2N1cnJlbnRMb2NhbGVdKTtcclxuXHJcbi8vIGlmIChSYXdTdHJpbmdzW2Rpc2NvcmRMb2NhbGVdICYmIGRpc2NvcmRMb2NhbGUgIT0gY3VycmVudExvY2FsZSkgc2V0TG9jYWxlKGRpc2NvcmRMb2NhbGUpO1xyXG5cclxuRGlzcGF0Y2hlci5zdWJzY3JpYmUoRGlzY29yZENvbnN0YW50cy5BY3Rpb25UeXBlcy5VU0VSX1NFVFRJTkdTX1VQREFURSwgKHtzZXR0aW5nc30pID0+IHtcclxuICAgIGNvbnN0IG5ld0xvY2FsZSA9IHNldHRpbmdzLmxvY2FsZTtcclxuICAgIGlmIChuZXdMb2NhbGUgJiYgbmV3TG9jYWxlICE9IGN1cnJlbnRMb2NhbGUpIHNldExvY2FsZShuZXdMb2NhbGUuc3BsaXQoXCItXCIpWzBdKTtcclxufSk7XHJcblxyXG5cclxuZXhwb3J0IGRlZmF1bHQgbmV3IFByb3h5KE1lc3NhZ2VzLCB7XHJcblx0Z2V0OiBmdW5jdGlvbihzdHJpbmdzLCBjYXRlZ29yeSkge1xyXG4gICAgICAgIGlmICghc3RyaW5ncy5oYXNPd25Qcm9wZXJ0eShjYXRlZ29yeSkpIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm94eSh7fSwge1xyXG5cdFx0XHRcdGdldDogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gYFN0cmluZyBncm91cCBcIiR7Y2F0ZWdvcnl9XCIgbm90IGZvdW5kLmA7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBuZXcgUHJveHkoc3RyaW5nc1tjYXRlZ29yeV0sIHtcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbihvYmosIHByb3ApIHtcclxuXHRcdFx0XHRpZiAodHlwZW9mKG9ialtwcm9wXSkgPT0gXCJzdHJpbmdcIikgcmV0dXJuIG5ldyBGb3JtYXR0YWJsZVN0cmluZyhvYmpbcHJvcF0pO1xyXG5cdFx0XHRcdHJldHVybiBvYmpbcHJvcF07XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxufSk7XHJcblxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/strings.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _localemanager__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./localemanager */ \"./src/modules/localemanager.js\");\n/* harmony import */ var _structs_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../structs/string */ \"./src/structs/string.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new Proxy(_localemanager__WEBPACK_IMPORTED_MODULE_0__[\"default\"].strings, {\n get: function (strings, category) {\n if (!strings.hasOwnProperty(category)) {\n return new Proxy({}, {\n get: function () {\n return `String group \"${category}\" not found.`;\n }\n });\n }\n\n return new Proxy(strings[category], {\n get: function (obj, prop) {\n if (typeof obj[prop] == \"string\") return new _structs_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"](obj[prop]);\n return obj[prop];\n }\n });\n }\n}));//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Db3JlLy4vc3JjL21vZHVsZXMvc3RyaW5ncy5qcz8zNTllIl0sIm5hbWVzIjpbIlByb3h5IiwiTG9jYWxlTWFuYWdlciIsInN0cmluZ3MiLCJnZXQiLCJjYXRlZ29yeSIsImhhc093blByb3BlcnR5Iiwib2JqIiwicHJvcCIsIkZvcm1hdHRhYmxlU3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBRWUsbUVBQUlBLEtBQUosQ0FBVUMsc0RBQWEsQ0FBQ0MsT0FBeEIsRUFBaUM7QUFDL0NDLEtBQUcsRUFBRSxVQUFTRCxPQUFULEVBQWtCRSxRQUFsQixFQUE0QjtBQUMxQixRQUFJLENBQUNGLE9BQU8sQ0FBQ0csY0FBUixDQUF1QkQsUUFBdkIsQ0FBTCxFQUF1QztBQUM1QyxhQUFPLElBQUlKLEtBQUosQ0FBVSxFQUFWLEVBQWM7QUFDcEJHLFdBQUcsRUFBRSxZQUFXO0FBQ2YsaUJBQVEsaUJBQWdCQyxRQUFTLGNBQWpDO0FBQ0E7QUFIbUIsT0FBZCxDQUFQO0FBS0E7O0FBQ0QsV0FBTyxJQUFJSixLQUFKLENBQVVFLE9BQU8sQ0FBQ0UsUUFBRCxDQUFqQixFQUE2QjtBQUNuQ0QsU0FBRyxFQUFFLFVBQVNHLEdBQVQsRUFBY0MsSUFBZCxFQUFvQjtBQUN4QixZQUFJLE9BQU9ELEdBQUcsQ0FBQ0MsSUFBRCxDQUFWLElBQXFCLFFBQXpCLEVBQW1DLE9BQU8sSUFBSUMsdURBQUosQ0FBc0JGLEdBQUcsQ0FBQ0MsSUFBRCxDQUF6QixDQUFQO0FBQ25DLGVBQU9ELEdBQUcsQ0FBQ0MsSUFBRCxDQUFWO0FBQ0E7QUFKa0MsS0FBN0IsQ0FBUDtBQU1BO0FBZjhDLENBQWpDLENBQWYiLCJmaWxlIjoiLi9zcmMvbW9kdWxlcy9zdHJpbmdzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvY2FsZU1hbmFnZXIgZnJvbSBcIi4vbG9jYWxlbWFuYWdlclwiO1xyXG5pbXBvcnQgRm9ybWF0dGFibGVTdHJpbmcgZnJvbSBcIi4uL3N0cnVjdHMvc3RyaW5nXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBuZXcgUHJveHkoTG9jYWxlTWFuYWdlci5zdHJpbmdzLCB7XHJcblx0Z2V0OiBmdW5jdGlvbihzdHJpbmdzLCBjYXRlZ29yeSkge1xyXG4gICAgICAgIGlmICghc3RyaW5ncy5oYXNPd25Qcm9wZXJ0eShjYXRlZ29yeSkpIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm94eSh7fSwge1xyXG5cdFx0XHRcdGdldDogZnVuY3Rpb24oKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gYFN0cmluZyBncm91cCBcIiR7Y2F0ZWdvcnl9XCIgbm90IGZvdW5kLmA7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBuZXcgUHJveHkoc3RyaW5nc1tjYXRlZ29yeV0sIHtcclxuXHRcdFx0Z2V0OiBmdW5jdGlvbihvYmosIHByb3ApIHtcclxuXHRcdFx0XHRpZiAodHlwZW9mKG9ialtwcm9wXSkgPT0gXCJzdHJpbmdcIikgcmV0dXJuIG5ldyBGb3JtYXR0YWJsZVN0cmluZyhvYmpbcHJvcF0pO1xyXG5cdFx0XHRcdHJldHVybiBvYmpbcHJvcF07XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxufSk7XHJcblxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./src/modules/strings.js\n"); /***/ }), diff --git a/src/data/strings.js b/src/data/strings.js index 68b7b266..de0c15d2 100644 --- a/src/data/strings.js +++ b/src/data/strings.js @@ -1,645 +1,217 @@ export default { - en: { - Panels: { - plugins: "Plugins", - themes: "Themes", - customcss: "Custom CSS" - }, - Collections: { - settings: { - name: "Settings", - general: { - name: "General", - emotes: { - name: "Emote System", - note: "Enables BD's emote system" - }, - publicServers: { - name: "Public Servers", - note: "Display public servers button" - }, - voiceDisconnect: { - name: "Voice Disconnect", - note: "Disconnect from voice server when closing Discord" - }, - twentyFourHour: { - name: "24-Hour Timestamps", - note: "Hides channels when in minimal mode" - }, - classNormalizer: { - name: "Normalize Classes", - note: "Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)" - }, - showToasts: { - name: "Show Toasts", - note: "Shows a small notification for important information" - } + Panels: { + plugins: "Plugins", + themes: "Themes", + customcss: "Custom CSS" + }, + Collections: { + settings: { + name: "Settings", + general: { + name: "General", + emotes: { + name: "Emote System", + note: "Enables BD's emote system" }, - appearance: { - name: "Appearance", - voiceMode: { - name: "Voice Mode", - note: "Hides everything that isn't voice chat" - }, - minimalMode: { - name: "Minimal Mode", - note: "Hide elements and reduce the size of elements" - }, - hideChannels: { - name: "Hide Channels", - note: "Hides channels when in minimal mode" - }, - darkMode: { - name: "Dark Mode", - note: "Make certain elements dark by default" - }, - coloredText: { - name: "Colored Text", - note: "Make text colour the same as role color" - } + publicServers: { + name: "Public Servers", + note: "Display public servers button" }, - addons: { - name: "Addon Manager", - addonErrors: { - name: "Show Addon Errors", - note: "Shows a modal with plugin/theme errors" - }, - autoScroll: { - name: "Scroll To Settings", - note: "Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)" - }, - autoReload: { - name: "Automatic Loading", - note: "Automatically loads, reloads, and unloads plugins and themes" - }, + voiceDisconnect: { + name: "Voice Disconnect", + note: "Disconnect from voice server when closing Discord" }, + twentyFourHour: { + name: "24-Hour Timestamps", + note: "Hides channels when in minimal mode" + }, + classNormalizer: { + name: "Normalize Classes", + note: "Adds stable classes to elements to help themes. (e.g. adds .da-channels to .channels-Ie2l6A)" + }, + showToasts: { + name: "Show Toasts", + note: "Shows a small notification for important information" + } + }, + appearance: { + name: "Appearance", + voiceMode: { + name: "Voice Mode", + note: "Hides everything that isn't voice chat" + }, + minimalMode: { + name: "Minimal Mode", + note: "Hide elements and reduce the size of elements" + }, + hideChannels: { + name: "Hide Channels", + note: "Hides channels when in minimal mode" + }, + darkMode: { + name: "Dark Mode", + note: "Make certain elements dark by default" + }, + coloredText: { + name: "Colored Text", + note: "Make text colour the same as role color" + } + }, + addons: { + name: "Addon Manager", + addonErrors: { + name: "Show Addon Errors", + note: "Shows a modal with plugin/theme errors" + }, + autoScroll: { + name: "Scroll To Settings", + note: "Auto-scrolls to a plugin's settings when the button is clicked (only if out of view)" + }, + autoReload: { + name: "Automatic Loading", + note: "Automatically loads, reloads, and unloads plugins and themes" + }, + }, + customcss: { + name: "Custom CSS", customcss: { name: "Custom CSS", - customcss: { - name: "Custom CSS", - note: "Enables the Custom CSS tab" - }, - liveUpdate: { - name: "Live Update", - note: "Updates the css as you type" - }, - startDetached: { - name: "Start Detached", - note: "Clicking the Custom CSS tab opens the editor in a separate window", - }, - nativeOpen: { - name: "Open in Native Editor", - note: "Clicking the Custom CSS tab opens your custom css in your native editor" - } + note: "Enables the Custom CSS tab" }, - developer: { - name: "Developer Settings", - developerMode: { - name: "Developer Mode", - note: "Allows activating debugger when pressing F8" - }, - copySelector: { - name: "Copy Selector", - note: "Adds a \"Copy Selector\" option to context menus when developer mode is active" - } + liveUpdate: { + name: "Live Update", + note: "Updates the css as you type" }, - window: { - name: "Window Preferences", - transparency: { - name: "Enable Transparency", - note: "Enables the main window to be see-through (requires restart)" - }, - frame: { - name: "Window Frame", - note: "Adds the native os window frame to the main window" - } + startDetached: { + name: "Start Detached", + note: "Clicking the Custom CSS tab opens the editor in a separate window", + }, + nativeOpen: { + name: "Open in Native Editor", + note: "Clicking the Custom CSS tab opens your custom css in your native editor" } }, - emotes: { - name: "Emotes", - general: { - name: "General", - download: { - name: "Download Emotes", - note: "Download emotes once a week to stay up to date" - }, - emoteMenu: { - name: "Emote Menu", - note: "Show Twitch/Favourite emotes in emote menu" - }, - hideEmojiMenu: { - name: "Hide Emoji Menu", - note: "Hides Discord's emoji menu when using emote menu" - }, - autoCaps: { - name: "Emote Autocapitalization", - note: "Autocapitalize emote commands" - }, - showNames: { - name: "Show Names", - note: "Show emote names on hover" - }, - modifiers: { - name: "Show Emote Modifiers", - note: "Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)" - }, - animateOnHover: { - name: "Animate On Hover", - note: "Only animate the emote modifiers on hover" - } + developer: { + name: "Developer Settings", + developerMode: { + name: "Developer Mode", + note: "Allows activating debugger when pressing F8" }, - categories: { - name: "Categories", - twitch: { - name: "Twitch", - note: "Show Twitch global & subscriber emotes" - }, - ffz: { - name: "FrankerFaceZ", - note: "Show emotes from FFZ" - }, - bttv: { - name: "BetterTTV", - note: "Show emotes from BTTV" - } + copySelector: { + name: "Copy Selector", + note: "Adds a \"Copy Selector\" option to context menus when developer mode is active" + } + }, + window: { + name: "Window Preferences", + transparency: { + name: "Enable Transparency", + note: "Enables the main window to be see-through (requires restart)" + }, + frame: { + name: "Window Frame", + note: "Adds the native os window frame to the main window" } } }, - Addons: { - title: "{{name}} v{{version}} by {{author}}", - openFolder: "Open {{type}} Folder", - reload: "Reload", - pluginSettings: "Settings", - website: "Website", - source: "Source", - server: "Support Server", - donate: "Donate" - }, - Emotes: { - downloading: "Downloading emotes in the background do not reload.", - downloaded: "All emotes successfully downloaded.", - clearEmotes: "Clear Emote Data", - favoriteAction: "Favorite!" - }, - CustomCSS: { - confirmationText: "You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.", - update: "Update", - save: "Save", - openNative: "Open in System Editor", - openDetached: "Detach Window", - settings: "Editor Settings", - editorTitle: "Custom CSS Editor" - }, - PublicServers: { - button: "public", - join: "Join", - joining: "Joining", - joined: "Joined", - loading: "Loading", - loadMore: "Load More", - notConnected: "Not connected to DiscordServers.com!", - search: "Search", - connect: "Connect", - reconnect: "Reconnect", - categories: "Categories", - connection: "Connected as: {{username}}#{{discriminator}}", - results: "Showing {{start}}-{{end}} of {{total}} results in {{category}}", - query: "for {{query}}" - }, - Modals: { - confirmClose: "Are You Sure?", - okay: "Okay", - cancel: "Cancel", - name: "Name", - message: "Message", - error: "Error", - addonErrors: "Addon Errors" - } - }, - es: { - Collections: { - settings: { - name: "Ajustes", - addons: { - addonErrors: { - name: "Mostrar Errores de Addons" - } + emotes: { + name: "Emotes", + general: { + name: "General", + download: { + name: "Download Emotes", + note: "Download emotes once a week to stay up to date" + }, + emoteMenu: { + name: "Emote Menu", + note: "Show Twitch/Favourite emotes in emote menu" + }, + hideEmojiMenu: { + name: "Hide Emoji Menu", + note: "Hides Discord's emoji menu when using emote menu" + }, + autoCaps: { + name: "Emote Autocapitalization", + note: "Autocapitalize emote commands" + }, + showNames: { + name: "Show Names", + note: "Show emote names on hover" + }, + modifiers: { + name: "Show Emote Modifiers", + note: "Enable emote mods (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)" + }, + animateOnHover: { + name: "Animate On Hover", + note: "Only animate the emote modifiers on hover" + } + }, + categories: { + name: "Categories", + twitch: { + name: "Twitch", + note: "Show Twitch global & subscriber emotes" + }, + ffz: { + name: "FrankerFaceZ", + note: "Show emotes from FFZ" + }, + bttv: { + name: "BetterTTV", + note: "Show emotes from BTTV" } } } }, - sv: { - Panels: { - plugins: "Tillägg", - themes: "Teman", - customcss: "Egen CSS" - }, - Collections: { - settings: { - name: "Inställningar", - general: { - name: "Generellt", - emotes: { - name: "Emotessystem", - note: "Aktiverar BD's emotessystem" - }, - publicServers: { - name: "Publika Servrar", - note: "Visa knappen för publika servrar" - }, - voiceDisconnect: { - name: "Lämna Röst", - note: "Lämna röstsamtal när Discord stängs ner" - }, - twentyFourHour: { - name: "24-Timmars Tidsstämpel", - note: "Visar 24-timmars tidsstämplar istället för AM/PM" - }, - classNormalizer: { - name: "Normalisera Klasser", - note: "Lägger till statiska klasser för att underlätta teman (ex. lägger till .da-channels på .channels-Ie2l6A)" - }, - showToasts: { - name: "Visa Toasts", - note: "Visar en liten notification för viktig information" - } - }, - appearance: { - name: "Utseende", - voiceMode: { - name: "Röstläge", - note: "Gömmer allt förutom röstchatt" - }, - minimalMode: { - name: "Minimalt Läge", - note: "Gömmer och förminskar komponenter" - }, - hideChannels: { - name: "Göm Kanaler", - note: "Gömmer kanaler när minimalt läge är aktiverat" - }, - darkMode: { - name: "Mörkt Läge", - note: "Gör vissa komponenter mörka" - }, - coloredText: { - name: "Färgad Text", - note: "Gör att text får samma färg som rollfärgen" - } - }, - addons: { - name: "Tilläggshanterare", - addonErrors: { - name: "Visa tilläggsfel", - note: "Visar en modal med tillägg- och temafel" - }, - autoScroll: { - name: "Skrolla till inställningar Scroll To Settings", - note: "Skrollar automatisks till ett tilläggs inställningar när knappen är tryckt (endast om inställningarna är utanför vy)" - }, - autoReload: { - name: "Automatisk Laddning", - note: "Laddar automatisk in, om och ur tillägg och teman" - }, - }, - customcss: { - name: "Egen CSS", - customcss: { - name: "Egen CSS", - note: "Aktiverar \"Egen CSS\"-fliken" - }, - liveUpdate: { - name: "Uppdatera Direkt", - note: "Uppdaterar css allteftersom du skriver" - }, - startDetached: { - name: "Starta Frånkopplad", - note: "Öppnar CSS redigeraren i ett separat fönster när \"Egen CSS\"-fliken klickas", - }, - nativeOpen: { - name: "Öppna I Standardredigerare", - note: "Öppnar CSS filen i operativsystemets standardredigerare när \"Egen CSS\"-fliken klickas" - } - }, - developer: { - name: "Utvecklarinställningar", - developerMode: { - name: "Utvecklarläge", - note: "Gör det möjligt att aktivera avlusare med F8" - }, - copySelector: { - name: "Kopiera Selektor", - note: "Lägger till valet \"Kopiera Selektor\" i kontext menyn när utvecklarläge är aktiverat" - } - }, - window: { - name: "Fönsterinställningar", - transparency: { - name: "Aktivera Genomskinlighet", - note: "Gör att huvudfönstret blir genomskinligt (kräver omstart)" - }, - frame: { - name: "Fönsterram", - note: "Lägger till operativsystemets standard fönsterram runt huvudfönstret" - } - } - }, - emotes: { - name: "Emotes", - general: { - name: "Generellt", - download: { - name: "Ladda Ner Emotes", - note: "Ladda ner emotes en gång i veckan för att hålla sig uppdaterad" - }, - emoteMenu: { - name: "Emote Meny", - note: "Visa Twitch/Favorit emotes i emote meny" - }, - hideEmojiMenu: { - name: "Gömmer Emoji Meny", - note: "Gömmer Discord's emoji meny när emote meny är aktiverad" - }, - autoCaps: { - name: "Automatiskt Stor Bokstav I Emotes", - note: "Gör automatiskt stor bokstav i emote kommandon" - }, - showNames: { - name: "Visa namn", - note: "Visa namn när musen hålls över en emote" - }, - modifiers: { - name: "Visa Emote Modifierare", - note: "Aktivera emote modifierare (flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)" - }, - animateOnHover: { - name: "Animera När Musen Hålls Över", - note: "Animera endast emote midiferare när musen hålls över emoten" - } - }, - categories: { - name: "Kategorier", - twitch: { - name: "Twitch", - note: "Visa Twitch global & prenumerant emotes" - }, - ffz: { - name: "FrankerFaceZ", - note: "Visa emotes från FFZ" - }, - bttv: { - name: "BetterTTV", - note: "Visa emotes från BTTV" - } - } - } - }, - Emotes: { - downloading: "Laddar ner emotes i backgrunden, ladda inte om", - downloaded: "Alla emotes laddades ner utan problem.", - clearEmotes: "Rensa Emote Data", - favoriteAction: "Favorit!" - }, - CustomCSS: { - confirmationText: "Du har osparade ändringar av egna CSS:en. Alla ändringar kommer försvinna om du stänger det här fönstret", - update: "Uppdatera", - save: "Spara", - openNative: "Öppna I Standardredigerare", - openDetached: "Koppla Loss Fönster", - settings: "Inställningar för redigerare", - editorTitle: "Egen CSS Redigerare" - }, - PublicServers: { - button: "Publik", - join: "Gå med", - joining: "Går med", - joined: "Gick med", - loading: "Laddar", - loadMore: "ladda mer", - notConnected: "Ingen anslutning till DiscordServers.com!", - search: "Sök", - connect: "Anslut", - reconnect: "Återanslut", - categories: "Kategorier", - connection: "Ansluten som: {{username}}#{{discriminator}}", - results: "Visar {{start}}-{{end}} av {{total}} resultat i {{category}}", - query: "för {{query}}" - }, - Modals: { - confirmClose: "Är du säker?", - okay: "Okej", - cancel: "Avbryt", - name: "Namn", - message: "Meddelande", - error: "Fel", - addonErrors: "Tilläggsfel" - } + Addons: { + title: "{{name}} v{{version}} by {{author}}", + openFolder: "Open {{type}} Folder", + reload: "Reload", + pluginSettings: "Settings", + website: "Website", + source: "Source", + server: "Support Server", + donate: "Donate" }, - ja: { - Panels: { - plugins: "プラグイン", - themes: "テーマ", - customcss: "カスタム CSS" - }, - Collections: { - settings: { - name: "BD設定", - general: { - name: "全般", - emotes: { - name: "BD絵文字システム", - note: "BetterDiscordの絵文字システムを有効にします。" - }, - publicServers: { - name: "公開サーバボタン", - note: "公開サーバボタンを表示します" - }, - voiceDisconnect: { - name: "ボイスチャンネル自動切断", - note: "Discordを終了する際、自動的にボイスチャンネルから切断します。" - }, - twentyFourHour: { - name: "24時間表記", - note: "時間を24時間表記に変更します。" - }, - classNormalizer: { - name: "クラス標準化", - note: "値が変動しないCSSクラスを追加します。" - }, - showToasts: { - name: "トースト表示", - note: "重要な情報を小さな通知として表示します。" - } - }, - appearance: { - name: "外観", - voiceMode: { - name: "ボイスモード", - note: "ボイスチャンネル以外を表示しないようにします" - }, - minimalMode: { - name: "コンパクトモード", - note: "表示をコンパクトにします。" - }, - hideChannels: { - name: "チャンネルリストを非表示", - note: "コンパクトモードのときは、チャンネルリストを表示しません" - }, - darkMode: { - name: "ダークモード", - note: "ダークモードを有効にします" - }, - coloredText: { - name: "カラーテキスト", - note: "テキストカラーをサーバルールの色と同じにします。" - } - }, - addons: { - name: "アドオンマネージャ", - addonErrors: { - name: "アドオンエラーの表示", - note: "プラグイン/テーマで発生したエラーを表示" - }, - autoScroll: { - name: "設定までスクロール", - note: "プラグインの設定が収まらない場合、自動でスクロールします" - }, - autoReload: { - name: "自動リロード", - note: "プラグイン・テーマを自動でロード・アンロード・リロードします" - }, - }, - customcss: { - name: "カスタム CSS", - customcss: { - name: "カスタム CSS", - note: "カスタム CSS タブを有効にします" - }, - liveUpdate: { - name: "自動更新", - note: "コードを自動再読み込みする" - }, - startDetached: { - name: "デタッチ", - note: "カスタムCSSエディターをウィンドウに独立させます", - }, - nativeOpen: { - name: "外部エディタを起動", - note: "カスタムCSSを外部のエディタで起動します" - } - }, - developer: { - name: "開発者設定", - developerMode: { - name: "開発者モード", - note: "デバッグモードを有効にします(デバッガ起動はF8)" - }, - copySelector: { - name: "セレクターコピー", - note: "開発者モードが有効時に、コンテキストメニューに\"Copy Selector\"を追加します" - } - }, - window: { - name: "ウィンドウ設定", - transparency: { - name: "透過を有効", - note: "Discordのメインウィンドウを透過します(要再起動)" - }, - frame: { - name: "ウィンドウフレーム表示", - note: "OSにあわせたフレームを追加します" - } - } - }, - emotes: { - name: "絵文字", - general: { - name: "全般", - download: { - name: "絵文字をダウンロード", - note: "絵文字をダウンロードします(1週間ごと)" - }, - emoteMenu: { - name: "絵文字メニュー", - note: "Twitch/お気に入りの絵文字を表示します" - }, - hideEmojiMenu: { - name: "絵文字メニューを非表示", - note: "Discord標準の絵文字メニューを非表示にします" - }, - autoCaps: { - name: "絵文字自動補完", - note: "絵文字を自動で補完します" - }, - showNames: { - name: "名前を表示", - note: "ホバー時に絵文字の名前を表示します" - }, - modifiers: { - name: "BetterDiscord絵文字を表示", - note: "BetterDiscordの絵文字を有効化します(flip, spin, pulse, spin2, spin3, 1spin, 2spin, 3spin, tr, bl, br, shake, shake2, shake3, flap)" - }, - animateOnHover: { - name: "ホバー時にアニメーション", - note: "ホバー時にアニメーションします(アニメーション絵文字限定)" - } - }, - categories: { - name: "カテゴリ", - twitch: { - name: "Twitch", - note: "Twitchに登録されている絵文字を表示します" - }, - ffz: { - name: "FrankerFaceZ", - note: "FFZに登録されている絵文字を表示します" - }, - bttv: { - name: "BetterTTV", - note: "BTTVに登録されている絵文字を表示します" - } - } - } - }, - Emotes: { - downloading: "絵文字をダウンロード中…", - downloaded: "すべての絵文字のダウンロードが完了しました", - clearEmotes: "絵文字データをクリアします", - favoriteAction: "お気に入り!!" - }, - CustomCSS: { - confirmationText: "Discordを終了すると、保存されていないカスタムCSSは破棄されます", - update: "更新", - save: "保存", - openNative: "外部エディタで開く", - openDetached: "別ウィンドウで開く", - settings: "エディター設定", - editorTitle: "カスタム CSS エディター" - }, - PublicServers: { - button: "公開サーバ", - join: "参加", - joining: "参加中", - joined: "参加済み", - loading: "読み込み中", - loadMore: "もっと読み込む", - notConnected: "DiscordServers.comに接続できませんでした", - search: "検索", - connect: "接続", - reconnect: "再接続", - categories: "カテゴリ", - connection: "接続済み: {{username}}#{{discriminator}}", - results: "カテゴリ{{category}} 合計{{total}}中 {{start}}-{{end}}を表示中", - query: "クエリー:{{query}}" - }, - Modals: { - confirmClose: "Discordを終了しますか?", - okay: "はい", - cancel: "いいえ", - name: "名前", - message: "メッセージ", - error: "エラー", - addonErrors: "アドオンエラー" - } + Emotes: { + downloading: "Downloading emotes in the background do not reload.", + downloaded: "All emotes successfully downloaded.", + clearEmotes: "Clear Emote Data", + favoriteAction: "Favorite!" + }, + CustomCSS: { + confirmationText: "You have unsaved changes to your Custom CSS. Closing this window will lose all those changes.", + update: "Update", + save: "Save", + openNative: "Open in System Editor", + openDetached: "Detach Window", + settings: "Editor Settings", + editorTitle: "Custom CSS Editor" + }, + PublicServers: { + button: "public", + join: "Join", + joining: "Joining", + joined: "Joined", + loading: "Loading", + loadMore: "Load More", + notConnected: "Not connected to DiscordServers.com!", + search: "Search", + connect: "Connect", + reconnect: "Reconnect", + categories: "Categories", + connection: "Connected as: {{username}}#{{discriminator}}", + results: "Showing {{start}}-{{end}} of {{total}} results in {{category}}", + query: "for {{query}}" + }, + Modals: { + confirmClose: "Are You Sure?", + okay: "Okay", + cancel: "Cancel", + name: "Name", + message: "Message", + error: "Error", + addonErrors: "Addon Errors" } }; diff --git a/src/modules/core.js b/src/modules/core.js index 73eca16c..3a8cf45a 100644 --- a/src/modules/core.js +++ b/src/modules/core.js @@ -1,4 +1,5 @@ -import ComponentPatcher from "./componentpatcher"; +import LocaleManager from "./localemanager"; + import Logger from "./logger"; import {Config} from "data"; // import EmoteModule from "./emotes"; @@ -12,6 +13,8 @@ import Modals from "../ui/modals"; import ReactComponents from "./reactcomponents"; import DataStore from "./datastore"; import DiscordModules from "./discordmodules"; +import ComponentPatcher from "./componentpatcher"; + const GuildClasses = DiscordModules.GuildClasses; @@ -35,14 +38,16 @@ Core.prototype.init = async function() { // `); // } - // DataStore.initialize(); - ReactComponents.initialize(); + DataStore.initialize(); + await LocaleManager.initialize(); + Logger.log("Startup", "Initializing Settings"); Settings.initialize(); DOMManager.initialize(); await this.waitForGuilds(); + ReactComponents.initialize(); ComponentPatcher.initialize(); for (const module in Builtins) Builtins[module].initialize(); diff --git a/src/modules/datastore.js b/src/modules/datastore.js index a71a2042..2a4f4da2 100644 --- a/src/modules/datastore.js +++ b/src/modules/datastore.js @@ -17,7 +17,6 @@ export default new class DataStore { constructor() { this.data = {misc: {}}; this.pluginData = {}; - this.initialize(); } initialize() { diff --git a/src/modules/localemanager.js b/src/modules/localemanager.js new file mode 100644 index 00000000..e41e2745 --- /dev/null +++ b/src/modules/localemanager.js @@ -0,0 +1,55 @@ +import DefaultStrings from "../data/strings"; +import DiscordModules from "./discordmodules"; +import Utilities from "./utilities"; +import Events from "./emitter"; +import DataStore from "./datastore"; +const request = require("request"); + +const {Dispatcher, DiscordConstants, UserSettingsStore} = DiscordModules; + +export default new class LocaleManager { + get discordLocale() {return UserSettingsStore.locale.split("-")[0];} + get defaultLocale() {return "en";} + + constructor() { + this.locale = ""; + this.strings = {}; + } + + async initialize() { + await this.setLocale(this.discordLocale); + Dispatcher.subscribe(DiscordConstants.ActionTypes.USER_SETTINGS_UPDATE, ({settings}) => { + const newLocale = settings.locale; + if (newLocale && newLocale != this.locale) this.setLocale(newLocale.split("-")[0]); + }); + } + + async setLocale(newLocale) { + let newStrings; + if (newLocale != this.defaultLocale) { + const savedStrings = DataStore.getLocale(newLocale); + newStrings = savedStrings || await this.downloadLocale(newLocale); + if (!newStrings) return this.setLocale(this.defaultLocale); + } + else { + newStrings = DefaultStrings; + } + this.locale = newLocale; + Utilities.extend(this.strings, newStrings); + Events.emit("strings-updated"); + } + + downloadLocale(locale) { + return new Promise(resolve => { + const options = { + url: `https://raw.githubusercontent.com/rauenzi/BetterDiscordApp/development/data/locales/${locale}.json`,//`https://rauenzi.github.io/BetterDiscordApp/data/locales/${discordLocale}.json`, + timeout: 2000, + json: true + }; + request.get(options, (err, resp, newStrings) => { + if (err || resp.statusCode !== 200) return resolve(null); + resolve(newStrings); + }); + }); + } +}; \ No newline at end of file diff --git a/src/modules/modules.js b/src/modules/modules.js index c9a0ef94..f0ad3fba 100644 --- a/src/modules/modules.js +++ b/src/modules/modules.js @@ -13,4 +13,5 @@ export {default as DOMManager} from "./dommanager"; export {default as Logger} from "./logger"; export {default as Patcher} from "./patcher"; export {default as ReactComponents} from "./reactcomponents"; +export {default as LocaleManager} from "./localemanager"; export {default as Strings} from "./strings"; \ No newline at end of file diff --git a/src/modules/strings.js b/src/modules/strings.js index 6d104d1a..8df5332d 100644 --- a/src/modules/strings.js +++ b/src/modules/strings.js @@ -1,51 +1,7 @@ -import DiscordModules from "./discordmodules"; -import RawStrings from "../data/strings"; -import Utilities from "./utilities"; +import LocaleManager from "./localemanager"; import FormattableString from "../structs/string"; -import Events from "./emitter"; -import DataStore from "./datastore"; -const request = require("request"); -const discordLocale = UserSettingsStore.locale.split("-")[0]; - -const savedStrings = DataStore.getLocale(discordLocale); -if (!savedStrings) { - const options = { - url: "https://rauenzi.github.io/BetterDiscordApp/data/emotedata_twitch_subscriber.json", - timeout: 5000, - json: true - }; - request.get(options, (err, resp, newStrings) => { - if (err) return; - DataStore.saveLocale(discordLocale, newStrings); - Utilities.extend(Messages, newStrings); - Events.emit("strings-updated"); - }); -} - -const {Dispatcher, DiscordConstants, UserSettingsStore} = DiscordModules; -const Messages = {}; - - - -export let currentLocale = "en"; -export function setLocale(newLocale) { - currentLocale = newLocale; - Utilities.extend(Messages, RawStrings[currentLocale]); - Events.emit("strings-updated"); -} - -Utilities.extend(Messages, RawStrings[currentLocale]); - -// if (RawStrings[discordLocale] && discordLocale != currentLocale) setLocale(discordLocale); - -Dispatcher.subscribe(DiscordConstants.ActionTypes.USER_SETTINGS_UPDATE, ({settings}) => { - const newLocale = settings.locale; - if (newLocale && newLocale != currentLocale) setLocale(newLocale.split("-")[0]); -}); - - -export default new Proxy(Messages, { +export default new Proxy(LocaleManager.strings, { get: function(strings, category) { if (!strings.hasOwnProperty(category)) { return new Proxy({}, {