@mudlet/mudlet-web 0.5.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/README.md +1 -1
  2. package/dist-lib/analytics.d.ts +27 -0
  3. package/dist-lib/assets/fonts/Vera.woff2 +0 -0
  4. package/dist-lib/assets/fonts/VeraBI.woff2 +0 -0
  5. package/dist-lib/assets/fonts/VeraBd.woff2 +0 -0
  6. package/dist-lib/assets/fonts/VeraIt.woff2 +0 -0
  7. package/dist-lib/assets/mapParser.worker-DrVZ3wg_.js +9 -0
  8. package/dist-lib/backupImport-wt8r7JXI.js +233 -0
  9. package/dist-lib/branding.d.ts +111 -13
  10. package/dist-lib/db/sqliteClient.d.ts +195 -7
  11. package/dist-lib/hooks/useAutoReconnect.d.ts +61 -0
  12. package/dist-lib/hooks/useDocumentFullscreen.d.ts +23 -0
  13. package/dist-lib/hooks/useKeyboardShortcuts.d.ts +37 -0
  14. package/dist-lib/hooks/useRecordLastPlayed.d.ts +10 -0
  15. package/dist-lib/import/applyMudletProfile.d.ts +35 -9
  16. package/dist-lib/import/backupImport.d.ts +118 -0
  17. package/dist-lib/import/collectProfileExport.d.ts +33 -2
  18. package/dist-lib/import/defaultPackages.d.ts +57 -14
  19. package/dist-lib/import/defaults/CF-loader/CF-loader.mpackage +0 -0
  20. package/dist-lib/import/defaults/MedBootstrap/MedBootstrap.mpackage +0 -0
  21. package/dist-lib/import/defaults/deleteOldProfiles/deleteOldProfiles.mpackage +0 -0
  22. package/dist-lib/import/defaults/echo/echo.mpackage +0 -0
  23. package/dist-lib/import/defaults/enable-accessibility/enable-accessibility.mpackage +0 -0
  24. package/dist-lib/import/defaults/generic_mapper/generic_mapper.mpackage +0 -0
  25. package/dist-lib/import/defaults/gui-drop/gui-drop.mpackage +0 -0
  26. package/dist-lib/import/defaults/icesus-loader/icesus-loader.mpackage +0 -0
  27. package/dist-lib/import/defaults/mg-loader/mg-loader.mpackage +0 -0
  28. package/dist-lib/import/defaults/mudlet-base-ui/mudlet-base-ui.mpackage +0 -0
  29. package/dist-lib/import/defaults/mudlet-mapper.xml +1215 -389
  30. package/dist-lib/import/mudletControlChars.d.ts +14 -0
  31. package/dist-lib/import/mudletHost.d.ts +73 -10
  32. package/dist-lib/import/mudletLink.d.ts +53 -2
  33. package/dist-lib/import/mudletProfileExport.d.ts +38 -5
  34. package/dist-lib/import/mudletProfileImport.d.ts +110 -12
  35. package/dist-lib/import/mudletVariables.d.ts +4 -3
  36. package/dist-lib/import/mudletWriteback.d.ts +15 -1
  37. package/dist-lib/import/mudletXmlImport.d.ts +46 -0
  38. package/dist-lib/import/packageFonts.d.ts +33 -0
  39. package/dist-lib/import/packageInstaller.d.ts +111 -7
  40. package/dist-lib/import/qtProfileData.d.ts +10 -0
  41. package/dist-lib/import/remotePackageInstall.d.ts +23 -7
  42. package/dist-lib/import/zipEntries.d.ts +45 -0
  43. package/dist-lib/index.d.ts +7 -3
  44. package/dist-lib/index.js +50508 -29836
  45. package/dist-lib/logging/SessionLogger.d.ts +75 -15
  46. package/dist-lib/map/MapSelectionOverlay.d.ts +2 -2
  47. package/dist-lib/map/MapStore.d.ts +387 -60
  48. package/dist-lib/map/MudletHighlightOverlay.d.ts +2 -2
  49. package/dist-lib/map/{MudixMapReader.d.ts → MudletMapReader.d.ts} +2 -2
  50. package/dist-lib/map/areaGraph.d.ts +120 -0
  51. package/dist-lib/map/environmentKit.d.ts +36 -0
  52. package/dist-lib/map/labelPixmap.d.ts +90 -0
  53. package/dist-lib/map/mapImageExport.d.ts +36 -2
  54. package/dist-lib/map/mapStyle.d.ts +11 -0
  55. package/dist-lib/map/mapVersion.d.ts +66 -0
  56. package/dist-lib/map/pathfinding.d.ts +2 -2
  57. package/dist-lib/mud/CharLoginController.d.ts +230 -0
  58. package/dist-lib/mud/ItemIdSequence.d.ts +1 -1
  59. package/dist-lib/mud/MudSession.d.ts +279 -22
  60. package/dist-lib/mud/PatternEngine.d.ts +153 -14
  61. package/dist-lib/mud/aliases/AliasEngine.d.ts +55 -9
  62. package/dist-lib/mud/autoLogin.d.ts +59 -0
  63. package/dist-lib/mud/commandSplit.d.ts +9 -0
  64. package/dist-lib/mud/connection/LineAssembler.d.ts +38 -11
  65. package/dist-lib/mud/connection/MudClient.d.ts +291 -53
  66. package/dist-lib/mud/connection/SubnegotiationRepair.d.ts +24 -0
  67. package/dist-lib/mud/connection/TelnetNegotiator.d.ts +208 -68
  68. package/dist-lib/mud/connection/telnetDebug.d.ts +8 -8
  69. package/dist-lib/mud/events.d.ts +102 -23
  70. package/dist-lib/mud/games/bundledGames.d.ts +12 -7
  71. package/dist-lib/mud/games/gameLinks.d.ts +40 -0
  72. package/dist-lib/mud/games/icons/3Kingdoms.png +0 -0
  73. package/dist-lib/mud/games/icons/3Scapes.png +0 -0
  74. package/dist-lib/mud/games/icons/achaea.png +0 -0
  75. package/dist-lib/mud/games/icons/aetolia.png +0 -0
  76. package/dist-lib/mud/games/icons/banner_astaria.png +0 -0
  77. package/dist-lib/mud/games/icons/banner_darkmists.png +0 -0
  78. package/dist-lib/mud/games/icons/banner_dreamland.png +0 -0
  79. package/dist-lib/mud/games/icons/banner_petria.jpg +0 -0
  80. package/dist-lib/mud/games/icons/banner_ropmud.png +0 -0
  81. package/dist-lib/mud/games/icons/blackmud.png +0 -0
  82. package/dist-lib/mud/games/icons/carrionfields.png +0 -0
  83. package/dist-lib/mud/games/icons/dragonfire_icon.png +0 -0
  84. package/dist-lib/mud/games/icons/fed2-logo.png +0 -0
  85. package/dist-lib/mud/games/icons/icesus_480x120.png +0 -0
  86. package/dist-lib/mud/games/icons/imperian.png +0 -0
  87. package/dist-lib/mud/games/icons/infinity_480x120.png +0 -0
  88. package/dist-lib/mud/games/icons/lusternia.png +0 -0
  89. package/dist-lib/mud/games/icons/morgengrauen_480x120.png +0 -0
  90. package/dist-lib/mud/games/icons/mudlet-tutorial.png +0 -0
  91. package/dist-lib/mud/games/icons/phoenixmud_480x120.png +0 -0
  92. package/dist-lib/mud/games/icons/starmourn.png +0 -0
  93. package/dist-lib/mud/games/icons/voidmud_icon.png +0 -0
  94. package/dist-lib/mud/games/icons/wotmudicon.png +0 -0
  95. package/dist-lib/mud/games/websiteLinks.d.ts +21 -0
  96. package/dist-lib/mud/keybindings/KeyEngine.d.ts +110 -4
  97. package/dist-lib/mud/keybindings/browserReservedKeys.d.ts +2 -2
  98. package/dist-lib/mud/keybindings/keyEventTarget.d.ts +61 -0
  99. package/dist-lib/mud/keybindings/qtKeys.d.ts +91 -12
  100. package/dist-lib/mud/protocol/atcp.d.ts +19 -0
  101. package/dist-lib/mud/protocol/byteString.d.ts +24 -0
  102. package/dist-lib/mud/protocol/charLoginFlow.d.ts +243 -16
  103. package/dist-lib/mud/protocol/charset.d.ts +111 -46
  104. package/dist-lib/mud/protocol/codePages.d.ts +10 -0
  105. package/dist-lib/mud/protocol/constants.d.ts +17 -10
  106. package/dist-lib/mud/protocol/echo.d.ts +23 -27
  107. package/dist-lib/mud/protocol/gmcp.d.ts +36 -6
  108. package/dist-lib/mud/protocol/index.d.ts +3 -2
  109. package/dist-lib/mud/protocol/luaLiteral.d.ts +12 -0
  110. package/dist-lib/mud/protocol/mccp.d.ts +83 -1
  111. package/dist-lib/mud/protocol/mnes.d.ts +41 -58
  112. package/dist-lib/mud/protocol/msdp.d.ts +11 -4
  113. package/dist-lib/mud/protocol/msp.d.ts +3 -2
  114. package/dist-lib/mud/protocol/mssp.d.ts +9 -4
  115. package/dist-lib/mud/protocol/multiByte.d.ts +51 -0
  116. package/dist-lib/mud/protocol/multiByteEncode.d.ts +42 -0
  117. package/dist-lib/mud/protocol/mxp.d.ts +193 -14
  118. package/dist-lib/mud/protocol/oauthClientFlow.d.ts +128 -0
  119. package/dist-lib/mud/protocol/qtCodePages.generated.d.ts +1 -0
  120. package/dist-lib/mud/protocol/tlsCodes.d.ts +40 -3
  121. package/dist-lib/mud/replay/ReplayPlayer.d.ts +16 -1
  122. package/dist-lib/mud/replay/replayFormat.d.ts +29 -2
  123. package/dist-lib/mud/text/Console.d.ts +255 -49
  124. package/dist-lib/mud/text/FormatState.d.ts +137 -14
  125. package/dist-lib/mud/text/ansiEscapes.d.ts +32 -16
  126. package/dist-lib/mud/text/colorParsers.d.ts +14 -2
  127. package/dist-lib/mud/text/colorSpaceId.d.ts +2 -0
  128. package/dist-lib/mud/text/colors.d.ts +17 -10
  129. package/dist-lib/mud/text/controlCharacterMode.d.ts +1 -1
  130. package/dist-lib/mud/text/hyperlinkVisibility.d.ts +1 -1
  131. package/dist-lib/mud/text/lineBreak.d.ts +5 -0
  132. package/dist-lib/mud/text/serverWrap.d.ts +2 -2
  133. package/dist-lib/mud/text/textAnalyzer.d.ts +79 -0
  134. package/dist-lib/mud/text/unicodeRuns.d.ts +11 -0
  135. package/dist-lib/mud/text/unicodeTables.generated.d.ts +3 -0
  136. package/dist-lib/mud/text/wcwidth.d.ts +27 -22
  137. package/dist-lib/mud/timers/TimerEngine.d.ts +163 -11
  138. package/dist-lib/mud/timers/workerClock.d.ts +67 -0
  139. package/dist-lib/mud/triggers/TriggerEngine.d.ts +449 -47
  140. package/dist-lib/mud/triggers/legacyColorPatterns.d.ts +58 -0
  141. package/dist-lib/mud/triggers/pcre/Pcre2.d.ts +83 -1
  142. package/dist-lib/oauth-callback.html +94 -0
  143. package/dist-lib/pcre2Wasm.d.ts +54 -0
  144. package/dist-lib/pcre2Wasm.js +241 -0
  145. package/dist-lib/scripting/EngineHost.d.ts +45 -21
  146. package/dist-lib/scripting/IScriptingRuntime.d.ts +103 -27
  147. package/dist-lib/scripting/MxpFrameManager.d.ts +10 -1
  148. package/dist-lib/scripting/ScriptingAPI.d.ts +1030 -213
  149. package/dist-lib/scripting/ScriptingEngine.d.ts +727 -106
  150. package/dist-lib/scripting/StopwatchManager.d.ts +97 -36
  151. package/dist-lib/scripting/http/HttpService.d.ts +9 -1
  152. package/dist-lib/scripting/http/userUrl.d.ts +41 -0
  153. package/dist-lib/scripting/lua/LuaRuntime.d.ts +352 -77
  154. package/dist-lib/scripting/lua/argContracts.d.ts +71 -0
  155. package/dist-lib/scripting/lua/bindings/automation.d.ts +1 -1
  156. package/dist-lib/scripting/lua/bindings/commands.d.ts +13 -0
  157. package/dist-lib/scripting/lua/bindings/context.d.ts +20 -2
  158. package/dist-lib/scripting/lua/bindings/diagnostics.d.ts +1 -1
  159. package/dist-lib/scripting/lua/bindings/map.d.ts +1 -1
  160. package/dist-lib/scripting/lua/bindings/media.d.ts +2 -2
  161. package/dist-lib/scripting/lua/bindings/output.d.ts +1 -1
  162. package/dist-lib/scripting/lua/bindings/session.d.ts +2 -2
  163. package/dist-lib/scripting/lua/bindings/textEdit.d.ts +1 -1
  164. package/dist-lib/scripting/lua/bindings/userWindows.d.ts +1 -1
  165. package/dist-lib/scripting/lua/byteArmor.d.ts +36 -0
  166. package/dist-lib/scripting/lua/imageSize.d.ts +7 -0
  167. package/dist-lib/scripting/lua/rex.d.ts +4 -2
  168. package/dist-lib/scripting/lua/sqlRowEncoder.d.ts +6 -1
  169. package/dist-lib/scripting/lua/utf8CaseMap.d.ts +1 -0
  170. package/dist-lib/scripting/lua/utf8Patterns.d.ts +21 -1
  171. package/dist-lib/scripting/lua/wellFormedStrings.d.ts +40 -0
  172. package/dist-lib/scripting/lua/yajl.d.ts +43 -5
  173. package/dist-lib/scripting/profilesPresence.d.ts +20 -2
  174. package/dist-lib/scripting/vfs/ProfileVFS.d.ts +164 -10
  175. package/dist-lib/scripting/vfs/fsErrors.d.ts +28 -0
  176. package/dist-lib/scripting/vfs/idbCommit.d.ts +20 -0
  177. package/dist-lib/storage/appStore.d.ts +24 -9
  178. package/dist-lib/storage/hooks.d.ts +5 -1
  179. package/dist-lib/storage/index.d.ts +2 -2
  180. package/dist-lib/storage/mapStorage.d.ts +2 -0
  181. package/dist-lib/storage/persistentStorage.d.ts +3 -1
  182. package/dist-lib/storage/profileStorage.d.ts +15 -0
  183. package/dist-lib/storage/profileVfsData.d.ts +3 -3
  184. package/dist-lib/storage/schema.d.ts +512 -40
  185. package/dist-lib/storage/storageMigration.d.ts +82 -0
  186. package/dist-lib/storage-g5V1b-c1.js +2039 -0
  187. package/dist-lib/styles.css +1 -1
  188. package/dist-lib/ui/AboutModal.d.ts +1 -1
  189. package/dist-lib/ui/BrandLoginFields.d.ts +1 -1
  190. package/dist-lib/ui/BrowserSignInModal.d.ts +23 -0
  191. package/dist-lib/ui/CmdLineMenuRegistry.d.ts +14 -5
  192. package/dist-lib/ui/CommandBar.d.ts +8 -8
  193. package/dist-lib/ui/ConnectionFormModal.d.ts +20 -1
  194. package/dist-lib/ui/ConnectionScreen.d.ts +9 -1
  195. package/dist-lib/ui/GameLinkPrompt.d.ts +28 -0
  196. package/dist-lib/ui/HelpModal.d.ts +5 -1
  197. package/dist-lib/ui/MapSymbolUsageModal.d.ts +32 -0
  198. package/dist-lib/ui/MouseEventRegistry.d.ts +31 -4
  199. package/dist-lib/ui/NotepadModal.d.ts +22 -0
  200. package/dist-lib/ui/ResizableModal.d.ts +16 -1
  201. package/dist-lib/ui/SettingsModal.d.ts +10 -1
  202. package/dist-lib/ui/TlsAlertBanner.d.ts +3 -1
  203. package/dist-lib/ui/Toolbar.d.ts +22 -1
  204. package/dist-lib/ui/VaultManageButton.d.ts +10 -5
  205. package/dist-lib/ui/VaultModal.d.ts +3 -0
  206. package/dist-lib/ui/buttons/ButtonsBar.d.ts +3 -1
  207. package/dist-lib/ui/buttons/inactiveButtons.d.ts +25 -0
  208. package/dist-lib/ui/cmdline/CommandLineManager.d.ts +19 -0
  209. package/dist-lib/ui/cmdline/plainText.d.ts +16 -0
  210. package/dist-lib/ui/cmdline/subCommandLine.d.ts +78 -0
  211. package/dist-lib/ui/cmdline/useCmdLineSelection.d.ts +26 -0
  212. package/dist-lib/ui/cmdline/useSubCommandLineKeys.d.ts +33 -0
  213. package/dist-lib/ui/codemirror/lineParagraphMarks.d.ts +19 -0
  214. package/dist-lib/ui/codemirror/luaHover.d.ts +7 -0
  215. package/dist-lib/ui/codemirror/options.d.ts +33 -0
  216. package/dist-lib/ui/codemirror/theme.d.ts +29 -5
  217. package/dist-lib/ui/commands/addonCommands.d.ts +134 -0
  218. package/dist-lib/ui/commands/appShortcuts.d.ts +86 -0
  219. package/dist-lib/ui/commands/hostCommands.d.ts +88 -0
  220. package/dist-lib/ui/commands/keyMatch.d.ts +20 -0
  221. package/dist-lib/ui/commands/keySequence.d.ts +57 -0
  222. package/dist-lib/ui/components/ContextMenu.d.ts +21 -1
  223. package/dist-lib/ui/components/FontPicker.d.ts +5 -1
  224. package/dist-lib/ui/components/useModalFocus.d.ts +13 -1
  225. package/dist-lib/ui/helpTopics.d.ts +15 -0
  226. package/dist-lib/ui/labels/LabelManager.d.ts +172 -9
  227. package/dist-lib/ui/labels/LabelOverlay.d.ts +19 -0
  228. package/dist-lib/ui/labels/backgroundImageSize.d.ts +19 -0
  229. package/dist-lib/ui/labels/labelModel.d.ts +64 -0
  230. package/dist-lib/ui/labels/qColor.d.ts +13 -0
  231. package/dist-lib/ui/labels/qtCss.d.ts +12 -4
  232. package/dist-lib/ui/landmarks.d.ts +9 -0
  233. package/dist-lib/ui/launcher/ActionMenu.d.ts +19 -0
  234. package/dist-lib/ui/launcher/GameDetails.d.ts +21 -0
  235. package/dist-lib/ui/launcher/GameSection.d.ts +18 -0
  236. package/dist-lib/ui/launcher/LauncherSearch.d.ts +23 -0
  237. package/dist-lib/ui/launcher/ProfileArt.d.ts +20 -0
  238. package/dist-lib/ui/launcher/ProfileSection.d.ts +43 -0
  239. package/dist-lib/ui/launcher/launcherModel.d.ts +72 -0
  240. package/dist-lib/ui/layout/overlayLayerOrder.d.ts +2 -2
  241. package/dist-lib/ui/menu/MenuBar.d.ts +31 -0
  242. package/dist-lib/ui/menu/SplitButton.d.ts +39 -0
  243. package/dist-lib/ui/menu/anchoredPopup.d.ts +74 -0
  244. package/dist-lib/ui/menu/appMenus.d.ts +65 -0
  245. package/dist-lib/ui/menu/menuModel.d.ts +88 -0
  246. package/dist-lib/ui/menu/toolbarModel.d.ts +56 -0
  247. package/dist-lib/ui/notepad.d.ts +76 -0
  248. package/dist-lib/ui/openSignInPage.d.ts +14 -0
  249. package/dist-lib/ui/output/OutputContextMenu.d.ts +14 -1
  250. package/dist-lib/ui/output/OutputRenderer.d.ts +5 -0
  251. package/dist-lib/ui/output/OutputSearchBar.d.ts +5 -1
  252. package/dist-lib/ui/output/StickyOutputPanel.d.ts +17 -3
  253. package/dist-lib/ui/output/TextAnalyzerModal.d.ts +25 -0
  254. package/dist-lib/ui/output/caretMode.d.ts +3 -2
  255. package/dist-lib/ui/output/clearSplit.d.ts +11 -0
  256. package/dist-lib/ui/output/outputCopy.d.ts +41 -2
  257. package/dist-lib/ui/output/outputRows.d.ts +43 -0
  258. package/dist-lib/ui/output/selectionGesture.d.ts +35 -0
  259. package/dist-lib/ui/output/wordSelection.d.ts +33 -0
  260. package/dist-lib/ui/search/matcher.d.ts +14 -4
  261. package/dist-lib/ui/settings/SettingsShell.d.ts +91 -0
  262. package/dist-lib/ui/settings/ShortcutEditor.d.ts +13 -0
  263. package/dist-lib/ui/sound/SoundManager.d.ts +210 -44
  264. package/dist-lib/ui/sound/closedCaption.d.ts +4 -1
  265. package/dist-lib/ui/sound/mediaDirection.d.ts +35 -0
  266. package/dist-lib/ui/tabCompletion.d.ts +53 -0
  267. package/dist-lib/ui/textedit/TextEditManager.d.ts +11 -2
  268. package/dist-lib/ui/useOpenProfiles.d.ts +1 -1
  269. package/dist-lib/ui/video/VideoManager.d.ts +7 -0
  270. package/dist-lib/ui/windows/WindowManager.d.ts +452 -37
  271. package/dist-lib/ui/windows/panels/ScriptEditorPanel.d.ts +14 -0
  272. package/dist-lib/ui/windows/panels/ScriptSearch.d.ts +6 -1
  273. package/dist-lib/ui/windows/panels/TextPanel.d.ts +4 -1
  274. package/dist-lib/ui/windows/panels/VariablesView.d.ts +37 -7
  275. package/dist-lib/ui/windows/panels/WindowCmdLine.d.ts +4 -2
  276. package/dist-lib/ui/windows/panels/aliasLoop.d.ts +24 -0
  277. package/dist-lib/ui/windows/panels/editorClipboard.d.ts +45 -0
  278. package/dist-lib/ui/windows/panels/editorUndo.d.ts +79 -0
  279. package/dist-lib/ui/windows/panels/mapAreaChange.d.ts +10 -0
  280. package/dist-lib/utils/appShellCache.d.ts +25 -0
  281. package/dist-lib/utils/fontFamilyName.d.ts +13 -0
  282. package/dist-lib/utils/fontLoader.d.ts +31 -0
  283. package/dist-lib/utils/formatBytes.d.ts +4 -0
  284. package/dist-lib/utils/mustBeOneOf.d.ts +9 -0
  285. package/dist-lib/utils/profileLock.d.ts +1 -1
  286. package/dist-lib/utils/systemTheme.d.ts +24 -0
  287. package/dist-lib/utils/timeZone.d.ts +10 -0
  288. package/dist-lib/vault/CredentialVault.d.ts +51 -5
  289. package/dist-lib/vault/deviceUnlock.d.ts +47 -0
  290. package/dist-lib/vault/vaultAccess.d.ts +24 -2
  291. package/dist-lib/vault/vaultHelpTopic.d.ts +9 -0
  292. package/dist-lib/vault/vaultRecord.d.ts +33 -1
  293. package/dist-lib/vfs-sw.js +220 -11
  294. package/dist-lib/vite.d.ts +1 -1
  295. package/dist-lib/vite.js +66 -43
  296. package/package.json +22 -14
  297. package/dist-lib/assets/mapParser.worker-t-3rd1zR.js +0 -9
  298. package/dist-lib/mud/connection/PingTracker.d.ts +0 -41
  299. package/dist-lib/ui/BundledGameGrid.d.ts +0 -21
  300. package/dist-lib/ui/ConnectionGrid.d.ts +0 -21
  301. package/dist-lib/ui/bufferWords.d.ts +0 -38
@@ -0,0 +1,2039 @@
1
+ import { createContext as e, useContext as t } from "react";
2
+ import { create as n } from "zustand";
3
+ import { persist as r } from "zustand/middleware";
4
+ //#region src/assets/mudlet-logo.svg?url
5
+ var i = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='147.957'%20height='147.898'%20viewBox='0%200%20147.957%20147.898'%3e%3c!--%20Mudlet%20application%20icon,%20from%20the%20Mudlet%20project%20(github.com/Mudlet/Mudlet,%20mudlet.svg).%20GPL-2.0-or-later,%20copyright%20the%20Mudlet%20contributors.%20Only%20a%20viewBox%20was%20added.%20--%3e%3clinearGradient%20id='a'%3e%3cstop%20offset='0'%20stop-color='%23fff'/%3e%3cstop%20offset='.393'%20stop-color='%23fff'/%3e%3cstop%20offset='1'/%3e%3c/linearGradient%3e%3clinearGradient%20id='b'%3e%3cstop%20offset='0'%20stop-color='%23c3a87a'%20stop-opacity='0'/%3e%3cstop%20offset='1'%20stop-color='%23c29752'/%3e%3c/linearGradient%3e%3clinearGradient%20id='c'%3e%3cstop%20offset='0'%20stop-color='%23826e4a'%20stop-opacity='0'/%3e%3cstop%20offset='.213'%20stop-color='%237d6948'/%3e%3cstop%20offset='1'%20stop-color='%237f6a49'/%3e%3c/linearGradient%3e%3clinearGradient%20id='d'%3e%3cstop%20offset='0'%20stop-color='%23e8d3ae'/%3e%3cstop%20offset='1'%20stop-color='%23dec393'/%3e%3c/linearGradient%3e%3clinearGradient%20id='e'%3e%3cstop%20offset='0'%20stop-color='%23d8b880'/%3e%3cstop%20offset='1'%20stop-color='%23b6a280'/%3e%3c/linearGradient%3e%3clinearGradient%20id='f'%3e%3cstop%20offset='0'%20stop-color='%2356421e'%20stop-opacity='0'/%3e%3cstop%20offset='.361'%20stop-color='%235e4a28'/%3e%3cstop%20offset='1'%20stop-color='%23675332'/%3e%3c/linearGradient%3e%3clinearGradient%20id='g'%3e%3cstop%20offset='0'%20stop-color='%23c2ac88'/%3e%3cstop%20offset='.643'%20stop-color='%23c0ad84'/%3e%3cstop%20offset='1'%20stop-color='%23d4c387'/%3e%3c/linearGradient%3e%3clinearGradient%20id='h'%3e%3cstop%20offset='0'%20stop-color='%23dec495'/%3e%3cstop%20offset='1'%20stop-color='%235d5546'/%3e%3c/linearGradient%3e%3clinearGradient%20id='i'%3e%3cstop%20offset='0'%20stop-color='%23cd9f4b'/%3e%3cstop%20offset='1'%20stop-color='%23cab791'/%3e%3c/linearGradient%3e%3clinearGradient%20id='j'%3e%3cstop%20offset='0'%20stop-color='%23f8e2ba'/%3e%3cstop%20offset='1'%20stop-color='%23e3c897'/%3e%3c/linearGradient%3e%3cclipPath%20id='k'%3e%3crect%20width='55.5'%20height='34'%20x='7.5'%20y='489.5'%20rx='3'/%3e%3c/clipPath%3e%3cclipPath%20id='l'%3e%3crect%20width='36'%20height='54'%20x='17'%20y='435.5'%20rx='3'/%3e%3c/clipPath%3e%3cclipPath%20id='m'%3e%3crect%20width='49'%20height='17'%20x='8'%20y='418.5'%20rx='3'/%3e%3c/clipPath%3e%3cclipPath%20id='n'%3e%3cpath%20d='m27.649267%20414.77215c.378131-17.01867%202.858251-32.8784%207.102372-42.91717.499529-1.54168%202.189612-3.01006%203.393063-2.66431l18.774085%206.94084c1.645393.52253%203.090707%202.14012%202.50279%203.6376-3.592606%2010.89416-6.30948%2024.38484-6.30948%2036.04197%200%201.98793-1.879838%202.7527-3.48145%202.7527h-19.434396c-1.640157-.43948-2.516183-1.98479-2.546984-3.79163z'/%3e%3c/clipPath%3e%3cclipPath%20id='o'%3e%3cpath%20d='m37.391926%20365.06074c3.416875-9.71451%2015.009391-29.13964%2023.619168-35.99848%201.193294-.9942%202.848203-1.29646%204.161818-.30276l14.573276%2013.46865c1.225226%201.21467%201.773765%202.89594.580473%203.84595-8.576892%207.92782-15.651682%2021.05732-19.470112%2029.54243-.707157%201.30356-2.71562%201.11969-4.206012.47953l-18.722332-6.9684c-1.225226-.77273-1.066659-2.71916-.536279-4.06692z'/%3e%3c/clipPath%3e%3cclipPath%20id='p'%3e%3cpath%20d='m65.997202%20324.0991c6.097174-6.52483%2024.799866-19.24027%2040.014248-23.32202%201.72415-.42947%202.77958.541%203.00995%201.74194l4.1895%2019.78632c.35913%201.65171.18735%203.26672-1.19579%203.76231-12.59904%204.6186-22.988128%2011.95434-28.525366%2017.31473-.933234.90303-2.930279-.20233-4.026421-1.3l-14.485127-13.42548c-.963559-1.05348-.143315-3.31395%201.019006-4.5578z'/%3e%3c/clipPath%3e%3cclipPath%20id='q'%3e%3cpath%20d='m135%20287.60225c10.8992%200%2022.70601%208.45621%2026.125%2013.50079l-4.5%2020.56949c-.375%201.54066-1.463%203.58128-3%202.89378-5.84098-2.48853-15.60287-4.05793-18.62511-4.05793-3.01187%200-12.70071%202.01089-18.87489%204.05793-1.15756.54105-2.69064-1.33482-3-2.89378l-4.5-20.81064c3.6766-5.03702%2015.29911-13.25964%2026.375-13.25964z'/%3e%3c/clipPath%3e%3cclipPath%20id='r'%3e%3cpath%20d='m204.0028%20324.0991c-6.09718-6.52483-24.79987-19.24027-40.01425-23.32202-1.72415-.42947-2.77958.541-3.00995%201.74194l-4.1895%2019.78632c-.35913%201.65171-.18735%203.26672%201.19579%203.76231%2012.59904%204.6186%2022.98813%2011.95434%2028.52537%2017.31473.93323.90303%202.93028-.20233%204.02642-1.3l14.48512-13.42548c.96356-1.05348.14332-3.31395-1.019-4.5578z'/%3e%3c/clipPath%3e%3cclipPath%20id='s'%3e%3cpath%20d='m232.60807%20365.06074c-3.41687-9.71451-15.00939-29.13964-23.61916-35.99848-1.1933-.9942-2.84821-1.29646-4.16182-.30276l-14.57328%2013.46865c-1.22522%201.21467-1.77376%202.89594-.58047%203.84595%208.57689%207.92782%2015.65168%2021.05732%2019.47011%2029.54243.70716%201.30356%202.71562%201.11969%204.20601.47953l18.72234-6.9684c1.22522-.77273%201.06665-2.71916.53627-4.06692z'/%3e%3c/clipPath%3e%3cclipPath%20id='t'%3e%3cpath%20d='m242.35073%20414.77215c-.37813-17.01867-2.85825-32.8784-7.10237-42.91717-.49953-1.54168-2.18961-3.01006-3.39306-2.66431l-18.77409%206.94084c-1.64539.52253-3.0907%202.14012-2.50279%203.6376%203.59261%2010.89416%206.30948%2024.38484%206.30948%2036.04197%200%201.98793%201.87984%202.7527%203.48145%202.7527h19.4344c1.64016-.43948%202.51618-1.98479%202.54698-3.79163z'/%3e%3c/clipPath%3e%3cclipPath%20id='u'%3e%3crect%20width='49'%20height='17'%20x='-262'%20y='418.5'%20rx='3'%20transform='scale(-1%201)'/%3e%3c/clipPath%3e%3cclipPath%20id='v'%3e%3crect%20width='36'%20height='54'%20x='-253'%20y='435.5'%20rx='3'%20transform='scale(-1%201)'/%3e%3c/clipPath%3e%3cclipPath%20id='w'%3e%3crect%20width='55.5'%20height='34'%20x='-262.5'%20y='489.5'%20rx='3'%20transform='scale(-1%201)'/%3e%3c/clipPath%3e%3cfilter%20id='x'%20width='1.212'%20height='1.347'%20x='-.106'%20y='-.173'%3e%3cfeGaussianBlur%20stdDeviation='2.454'/%3e%3c/filter%3e%3cfilter%20id='y'%20width='1.369'%20height='1.238'%20x='-.185'%20y='-.119'%3e%3cfeGaussianBlur%20stdDeviation='2.454'/%3e%3c/filter%3e%3cfilter%20id='z'%20width='1.241'%20height='1.274'%20x='-.121'%20y='-.137'%3e%3cfeGaussianBlur%20stdDeviation='2.454'/%3e%3c/filter%3e%3cfilter%20id='A'%20width='1.268'%20height='1.243'%20x='-.134'%20y='-.122'%3e%3cfeGaussianBlur%20stdDeviation='2.454'/%3e%3c/filter%3e%3cfilter%20id='B'%20width='1.327'%20height='1.218'%20x='-.164'%20y='-.109'%3e%3cfeGaussianBlur%20stdDeviation='2.454'/%3e%3c/filter%3e%3cfilter%20id='C'%20width='1.224'%20height='1.318'%20x='-.112'%20y='-.159'%3e%3cfeGaussianBlur%20stdDeviation='2.454'/%3e%3c/filter%3e%3cfilter%20id='D'%20width='1.24'%20height='1.693'%20x='-.12'%20y='-.347'%3e%3cfeGaussianBlur%20stdDeviation='2.454'/%3e%3c/filter%3e%3clinearGradient%20id='E'%20x1='179'%20x2='242.5'%20y1='415'%20y2='435.5'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='F'%20x1='16'%20x2='24'%20y1='413'%20y2='432'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='G'%20x1='40.994'%20x2='58.993'%20y1='338.869'%20y2='366.869'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='H'%20x1='83.053'%20x2='94.873'%20y1='307.194'%20y2='330.194'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='I'%20x1='24.649'%20x2='43.602'%20y1='386.14'%20y2='412.352'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='J'%20x1='122.625'%20x2='131.125'%20y1='287.602'%20y2='315.653'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='K'%20x1='181.5'%20x2='238.5'%20y1='482.5'%20y2='523.5'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='L'%20x1='178.5'%20x2='241'%20y1='438.5'%20y2='489.5'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='M'%20x1='172.009'%20x2='220.006'%20y1='364.369'%20y2='370.369'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='N'%20x1='174.127'%20x2='176.947'%20y1='304.694'%20y2='329.194'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='O'%20x1='178.445'%20x2='230.851'%20y1='387.852'%20y2='415.852'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='P'%20x1='15'%20x2='23'%20y1='482.5'%20y2='523.5'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='Q'%20x1='118.476'%20x2='130.902'%20y1='60.962'%20y2='195.019'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23j'/%3e%3clinearGradient%20id='R'%20x1='129.746'%20x2='143.328'%20y1='60.385'%20y2='195.019'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23i'/%3e%3clinearGradient%20id='S'%20x1='-51.433'%20x2='-39.007'%20y1='60.962'%20y2='195.019'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23j'/%3e%3clinearGradient%20id='T'%20x1='-40.163'%20x2='-26.581'%20y1='60.385'%20y2='195.019'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23i'/%3e%3clinearGradient%20id='U'%20x1='58'%20x2='79.5'%20y1='12.051'%20y2='244'%20gradientTransform='matrix(.5779564%200%200%20.5511991%20-84.954305%2058.15821)'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23d'/%3e%3clinearGradient%20id='V'%20x1='77.5'%20x2='101'%20y1='11.051'%20y2='244'%20gradientTransform='matrix(.5779564%200%200%20.5565506%20-84.954304%2057.32606)'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23i'/%3e%3clinearGradient%20id='W'%20x1='58'%20x2='79.5'%20y1='12.051'%20y2='244'%20gradientTransform='matrix(.5779564%200%200%20.5565507%2084.954305%2057.32606)'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23d'/%3e%3clinearGradient%20id='X'%20x1='77.5'%20x2='101'%20y1='11.051'%20y2='244'%20gradientTransform='matrix(.5779564%200%200%20.5565506%2084.954304%2057.32606)'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23i'/%3e%3clinearGradient%20id='Y'%20x1='129.746'%20x2='143.328'%20y1='60.385'%20y2='195.019'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%23e2c89a'/%3e%3cstop%20offset='1'%20stop-color='%23bba072'/%3e%3c/linearGradient%3e%3clinearGradient%20id='Z'%20x1='17'%20x2='28'%20y1='410'%20y2='489.5'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23h'/%3e%3clinearGradient%20id='aa'%20x1='105.417'%20x2='123.258'%20y1='172.539'%20y2='193.779'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23e'/%3e%3clinearGradient%20id='ab'%20x1='59.801'%20x2='54.254'%20y1='197.681'%20y2='240.441'%20gradientTransform='matrix(-.5779564%200%200%20.5779564%20241.00254%2053.99746)'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23e'/%3e%3clinearGradient%20id='ac'%20x1='135.941'%20x2='190.449'%20y1='74.871'%20y2='137.868'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%23c3a87a'/%3e%3cstop%20offset='1'%20stop-color='%23ceb791'/%3e%3c/linearGradient%3e%3clinearGradient%20id='ad'%20x1='163.42'%20x2='163.42'%20y1='76'%20y2='144.892'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%23b3f8ff'/%3e%3cstop%20offset='1'%20stop-color='%23fff'/%3e%3c/linearGradient%3e%3cclipPath%20id='ae'%3e%3cpath%20d='m9.2807765%20209.98429%2015.7902645-8.285h43.83813c1.368952%200%202.990173%201.44895%202.990173%202.86488v23.23763c0%201.28784-.434978%202.38479-1.018429%203.125l-8.684446%2011.58432z'/%3e%3c/clipPath%3e%3cfilter%20id='af'%20width='1.612'%20height='1.203'%20x='-.306'%20y='-.102'%3e%3cfeGaussianBlur%20stdDeviation='1.693'/%3e%3c/filter%3e%3clinearGradient%20id='ag'%20x1='66.25'%20x2='82.513'%20y1='209.688'%20y2='225.878'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23g'/%3e%3clinearGradient%20id='ah'%20x1='66.25'%20x2='77.917'%20y1='209.688'%20y2='226.232'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23g'/%3e%3cfilter%20id='ai'%3e%3cfeGaussianBlur%20stdDeviation='.601'/%3e%3c/filter%3e%3clinearGradient%20id='aj'%20x1='89.931'%20x2='106.266'%20y1='190.196'%20y2='195.019'%20gradientUnits='userSpaceOnUse'%20spreadMethod='reflect'%20xlink:href='%23f'/%3e%3clinearGradient%20id='ak'%20x1='8.611'%20x2='36.875'%20y1='235.656'%20y2='244'%20gradientTransform='matrix(-.5779564%200%200%20.5779564%20241.00253%2053.99745)'%20gradientUnits='userSpaceOnUse'%20spreadMethod='reflect'%20xlink:href='%23f'/%3e%3cfilter%20id='al'%3e%3cfeGaussianBlur%20stdDeviation='.246'/%3e%3c/filter%3e%3clinearGradient%20id='am'%20x1='94.491'%20x2='105.981'%20y1='172.117'%20y2='174.212'%20gradientUnits='userSpaceOnUse'%20spreadMethod='reflect'%20xlink:href='%23f'/%3e%3clinearGradient%20id='an'%20x1='-43.5'%20x2='-23.619'%20y1='204.375'%20y2='208'%20gradientTransform='matrix(-.5779564%200%200%20.5779564%20206.32515%2053.99745)'%20gradientUnits='userSpaceOnUse'%20spreadMethod='reflect'%20xlink:href='%23f'/%3e%3cclipPath%20id='ao'%3e%3cpath%20d='m-4.71875%20155.28125-9.6875.15625v.0625h-25.59375c-1.662%200-3%201.338-3%203v46c0%201.662%201.338%203%203%203h30c.695352%200%201.336087-.23084%201.84375-.625v.03125l4.5-3.09375c.792279-.61851%201.224877-1.3744%201.28125-2.5625v-43.34375c0-1.29363-1.083352-2.625-2.34375-2.625z'/%3e%3c/clipPath%3e%3cfilter%20id='ap'%20width='1.115'%20height='3.712'%20x='-.057'%20y='-1.356'%3e%3cfeGaussianBlur%20stdDeviation='.971'/%3e%3c/filter%3e%3clinearGradient%20id='aq'%20x1='89.867'%20x2='105.221'%20y1='140.953'%20y2='144.161'%20gradientUnits='userSpaceOnUse'%20spreadMethod='reflect'%20xlink:href='%23c'/%3e%3clinearGradient%20id='ar'%20x1='8.5'%20x2='35.065'%20y1='150.453'%20y2='156.004'%20gradientTransform='matrix(-.5779564%200%200%20.5779564%20241.00253%2053.99745)'%20gradientUnits='userSpaceOnUse'%20spreadMethod='reflect'%20xlink:href='%23c'/%3e%3clinearGradient%20id='as'%20x1='110.144'%20x2='110.144'%20y1='129.019'%20y2='134.433'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23b'/%3e%3clinearGradient%20id='at'%20x1='43.585'%20x2='43.585'%20y1='129.804'%20y2='139.172'%20gradientTransform='matrix(-.5779564%200%200%20.5779564%20241.00254%2053.99746)'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23b'/%3e%3cclipPath%20id='au'%3e%3cpath%20d='m63.10928%20241.45056%208.662058-11.66726c13.798057-17.43491%2043.663052-40.42737%2056.617522-49.82852%209.90658-7.18928%2038.18833-20.11492%2041.4957-32.11484%2010.51625%202.44608%206.79575%2024.44828%207.76346%2035.4108%201.4984%2016.97429%208.87239%2031.95167%2020.31063%2046.21562l8.83477%2011.9842z'/%3e%3c/clipPath%3e%3cfilter%20id='av'%20width='1.178'%20height='1.606'%20x='-.089'%20y='-.303'%3e%3cfeGaussianBlur%20stdDeviation='4.554'/%3e%3c/filter%3e%3cradialGradient%20id='aw'%20cx='55.888'%20cy='238.674'%20r='98.818'%20gradientTransform='matrix(2.1281542%20.3712152%20-.1781874%201.0215381%206.48732%20-47.124421)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%2392d84b'/%3e%3cstop%20offset='.655'%20stop-color='%239ce463'/%3e%3cstop%20offset='1'%20stop-color='%23cbf0a8'/%3e%3c/radialGradient%3e%3cclipPath%20id='ax'%3e%3cpath%20d='m51.265242%20103.1228c39.694702%207.81967%20107.458578%2033.14008%20118.619798%2045.43053%2020.46922%202.11455%2031.46896%202.19053%2066.64218%201.94563v90.15611h-197.636347z'/%3e%3c/clipPath%3e%3clinearGradient%20id='ay'%20x1='157.685'%20x2='62.225'%20y1='143.958'%20y2='218.912'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%2397d766'/%3e%3cstop%20offset='1'%20stop-color='%2387de45'%20stop-opacity='0'/%3e%3c/linearGradient%3e%3cfilter%20id='az'%20width='1.406'%20height='1.451'%20x='-.203'%20y='-.225'%3e%3cfeGaussianBlur%20stdDeviation='10.195'/%3e%3c/filter%3e%3cradialGradient%20id='aA'%20cx='201.195'%20cy='152.835'%20r='64.452'%20gradientTransform='matrix(1.3101069%20-.2311015%20.09384409%20.5319982%20-52.3378%20121.81406)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%2378cb7b'/%3e%3cstop%20offset='1'%20stop-color='%23aee6be'/%3e%3c/radialGradient%3e%3cfilter%20id='aB'%3e%3cfeGaussianBlur%20stdDeviation='.838'/%3e%3c/filter%3e%3cfilter%20id='aC'%3e%3cfeGaussianBlur%20stdDeviation='.397'/%3e%3c/filter%3e%3cfilter%20id='aD'%3e%3cfeGaussianBlur%20stdDeviation='1.086'/%3e%3c/filter%3e%3cradialGradient%20id='aE'%20cx='129.75'%20cy='245.25'%20r='88.25'%20gradientTransform='matrix(1.130307%200%200%20.184136%20-16.907327%20200.09065)'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%23fff6af'/%3e%3cstop%20offset='.655'%20stop-color='%23fff6af'/%3e%3cstop%20offset='1'%20stop-color='%23fff6af'%20stop-opacity='0'/%3e%3c/radialGradient%3e%3clinearGradient%20id='aF'%20x1='119'%20x2='119'%20y1='263'%20y2='148.543'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23a'/%3e%3cmask%20id='aG'%20maskUnits='userSpaceOnUse'%3e%3cpath%20fill='url(%23aF)'%20d='m9.999991%20148.54703h250v114.453h-250z'/%3e%3c/mask%3e%3clinearGradient%20id='aH'%20x1='119'%20x2='119'%20y1='-148.547'%20y2='-263.004'%20gradientUnits='userSpaceOnUse'%20xlink:href='%23a'/%3e%3cmask%20id='aI'%20maskUnits='userSpaceOnUse'%3e%3cpath%20fill='url(%23aH)'%20d='m9.999991-263h250v114.453h-250z'%20transform='scale(1%20-1)'/%3e%3c/mask%3e%3cfilter%20id='aJ'%3e%3cfeGaussianBlur%20stdDeviation='1.604'/%3e%3c/filter%3e%3cfilter%20id='aK'%3e%3cfeGaussianBlur%20stdDeviation='.115'/%3e%3c/filter%3e%3cfilter%20id='aL'%3e%3cfeGaussianBlur%20stdDeviation='.11'/%3e%3c/filter%3e%3cg%20transform='translate(-89%20-58.102252)'%3e%3cpath%20fill='url(%23ad)'%20fill-rule='evenodd'%20d='m111.31397%20159.36976v-43.11542c9.04355-20.49509%2018.25388-40.87662%2052.31064-44.34144%2036.49604%201.98373%2046.79743%2028.72355%2051.90197%2045.1588v42.29806z'/%3e%3cpath%20fill='url(%23aA)'%20fill-rule='evenodd'%20d='m150.1978%20149.8589c24.13641-17.53857%2042.38808-24.67921%2086.32055-34.24041l30.19085%2059.5508-6.24638%2028.82714c-66.05481-16.33279-155.79476-21.05362-110.26502-54.13753z'%20filter='url(%23aD)'%20transform='matrix(.5779564%200%200%20.5779564%2069.349481%2051.68563)'/%3e%3cpath%20fill='url(%23aw)'%20fill-rule='evenodd'%20d='m78.26524%20107.1228c39.6947%207.81967%20107.45858%2033.14008%20118.6198%2045.43053%2020.46922%202.11455%2031.46896%202.19053%2066.64218%201.94563v90.15611h-197.63635z'%20filter='url(%23aB)'%20transform='matrix(.5779564%200%200%20.5779564%2069.349481%2051.68563)'/%3e%3cg%20filter='url(%23aJ)'%20mask='url(%23aI)'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%2053.99746)'%3e%3cpath%20fill='%23fff8af'%20fill-rule='evenodd'%20d='m63.10928%20242.15767%208.662058-11.66726c13.798057-17.43491%2043.663052-40.42737%2056.617522-49.82852%209.90658-7.18928%2038.18833-20.11492%2041.4957-32.11484%2010.51625%202.44608%206.79575%2024.44828%207.76346%2035.4108%201.4984%2016.97429%208.87239%2031.95167%2020.31063%2046.21562l8.83477%2011.9842z'/%3e%3cpath%20fill='url(%23aE)'%20d='m218%20245.25a88.25%2016.25%200%201%201%20-176.5%200%2088.25%2016.25%200%201%201%20176.5%200z'%20transform='matrix(1.1695201%200%200%201.1846154%20-16.745242%20-46.776923)'/%3e%3cpath%20fill='%23f3cf48'%20d='m205.76808%20185.50073a61.518291%2018.031223%200%201%201%20-123.036585%200%2061.518291%2018.031223%200%201%201%20123.036585%200z'%20clip-path='url(%23au)'%20filter='url(%23av)'%20opacity='.075'%20transform='matrix(.9959362%200%200%201.1663781%20.336207%20-29.656146)'/%3e%3c/g%3e%3cg%20mask='url(%23aG)'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%2053.99746)'%3e%3cpath%20fill='%23fff6af'%20fill-rule='evenodd'%20d='m63.10928%20242.15767%208.662058-11.66726c13.798057-17.43491%2043.663052-40.42737%2056.617522-49.82852%209.90658-7.18928%2038.18833-20.11492%2041.4957-32.11484%2010.51625%202.44608%206.79575%2024.44828%207.76346%2035.4108%201.4984%2016.97429%208.87239%2031.95167%2020.31063%2046.21562l8.83477%2011.9842z'/%3e%3cpath%20fill='url(%23aE)'%20d='m218%20245.25a88.25%2016.25%200%201%201%20-176.5%200%2088.25%2016.25%200%201%201%20176.5%200z'%20transform='matrix(1.1695201%200%200%201.1846154%20-16.745242%20-46.776923)'/%3e%3cpath%20fill='%23f3cf48'%20d='m205.76808%20185.50073a61.518291%2018.031223%200%201%201%20-123.036585%200%2061.518291%2018.031223%200%201%201%20123.036585%200z'%20clip-path='url(%23au)'%20filter='url(%23av)'%20opacity='.075'%20transform='matrix(.9959362%200%200%201.1663781%20.336207%20-29.656146)'/%3e%3c/g%3e%3cpath%20fill='%2385e239'%20fill-rule='evenodd'%20d='m196.875%20152.5625c10.51624%202.44607%206.81354%2024.44373%207.78125%2035.40625%201.49839%2016.97428%208.87426%2031.9548%2020.3125%2046.21875l7.71875%2010.46875h30.84375v-90.15625'%20filter='url(%23aC)'%20opacity='.332'%20transform='matrix(.5779564%200%200%20.5779564%2069.349481%2051.68563)'/%3e%3cpath%20fill='url(%23ay)'%20fill-rule='evenodd'%20d='m50.911688%20204.94618c72.779012-42.71761%20119.596962-56.48194%20110.959412-72.80256l9.66295%2018.8198-101.530479%2092.16652z'%20clip-path='url(%23ax)'%20filter='url(%23az)'%20opacity='.409'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%2053.99746)'/%3e%3cpath%20fill='%23282d30'%20d='m24.3125%20228.8125-15.3125%2013.0625c0%201.662%201.338%202.99998%203%203h49.5c1.147627%200%202.120189-.65167%202.625-1.59375l8.5625-12.15625c.966114-1.58514-.030774-2.3125-1.53125-2.3125z'%20filter='url(%23ai)'%20opacity='.72'%20transform='matrix(.5711909%200%200%20.5779564%2085.015193%2053.99746)'/%3e%3cpath%20fill='%23cdb690'%20fill-rule='evenodd'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m206.42029%20143.47881c-.88399%200-1.37268-.47487-1.32355-1.08135v-7.11998c0-.57357.48639-.89686%201.23387-.89686l3.58025-.3251%201.6606%209.90525z'/%3e%3cpath%20fill='%23282d30'%20d='m24.3125%20228.8125-15.3125%2013.0625c0%201.662%201.338%202.99998%203%203h49.5c1.147627%200%202.120189-.65167%202.625-1.59375l8.5625-12.15625c.966114-1.58514-.030774-2.3125-1.53125-2.3125z'%20filter='url(%23ai)'%20opacity='.72'%20transform='matrix(-.5711909%200%200%20.5779564%20241.24817%2053.99746)'/%3e%3cpath%20fill='url(%23ab)'%20fill-rule='evenodd'%20d='m235.63866%20175.35923-9.12609-4.78837h-25.33653c-.79119%200-1.72818.83743-1.72818%201.65578v13.43033c0%20.74432.25139%201.37831.5886%201.80612l5.01923%206.69523z'/%3e%3cpath%20fill='%23282d30'%20d='m34.34375%20199.9375-16.84375%205.5625c0%201.662%201.338%203%203%203h30c.695351%200%201.336087-.23084%201.84375-.625v.03125l4.5-3.09375c.792279-.61851%201.224877-1.3744%201.28125-2.5625z'%20filter='url(%23al)'%20opacity='.528'%20transform='matrix(-.5779564%200%200%20.5779564%20241.20688%2053.99746)'/%3e%3cpath%20fill='url(%23ah)'%20fill-rule='evenodd'%20d='m58.625%20216.5%2015.25-14v37.25l-14.25%2010.625z'%20clip-path='url(%23ae)'%20filter='url(%23af)'%20opacity='.481'%20transform='matrix(-.5779564%200%200%20.5779564%20241.00254%2053.99746)'/%3e%3cpath%20fill='none'%20stroke='%23aa9876'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m235.63866%20175.35923-9.12609-4.78837h-25.33653c-.79119%200-1.72818.83743-1.72818%201.65578v13.43033c0%20.74432.25139%201.37831.5886%201.80612l5.01923%206.69523z'/%3e%3cpath%20fill='%23c0ab87'%20fill-rule='evenodd'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m208.44067%20171.78482c-.45791-.35747-.71272-.79434-.74529-1.48101v-25.03863c0-.74766.62528-1.51417%201.35374-1.51417l5.59376.08902-3.61223%2029.73229z'/%3e%3cpath%20fill='url(%23ac)'%20fill-rule='evenodd'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m125.46544%2085.55026-17.12196%2036.68218%205.27385%2011.79392%203.03427.10837c.88761.07687%201.5352-.39984%201.5352-1.39071.33367-8.53485%201.40835-13.15815%203.64835-19.65052.36075-.62485-.08102-1.49158-.19867-1.60744.1623.05572.77207-.07439%201.08367-.61408%202.39951-6.77828%206.06272-11.57056%2010.34903-16.32727.4065-.36719.64975-.88407.30704-1.40877.4257.45501.86593.17981%201.44489-.18061%204.98132-5.24554%209.72063-7.39278%2015.37003-9.69883.55406-.25936%201.22218-.43875%201.0656-1.39071.29179.67888.78197.65795%201.39071.57796%203.9918-.90596%207.13887-2.14975%2010.29485-2.05897s6.95332%201.21717%2010.36709%202.05897c.60875.07999%201.09893.10092%201.39071-.57796-.15657.95196.51155%201.13135%201.06561%201.39071%205.6494%202.30605%2010.3887%204.45329%2015.37003%209.69883.57896.36042%201.01918.63562%201.44489.18061-.34272.5247-.09946%201.04158.30704%201.40877%204.2863%204.75671%207.94952%209.54899%2010.34903%2016.32727.31159.53969.92137.6698%201.08367.61408-.11765.11586-.55943.98259-.19867%201.60744%202.23999%206.49237%203.31467%2011.11567%203.64835%2019.65052%200%20.99087.64759%201.46758%201.53519%201.39071l3.03428-.10837%205.27385-11.79392-17.12196-36.68218-37.51299-13.31105z'/%3e%3cpath%20fill='url(%23Q)'%20d='m219.39164%20103.15886c-1.97481-5.61457-8.67478-16.84145-13.65085-20.80555-.68968-.57461-1.64614-.74931-2.40535-.17499l-8.42272%207.78429c-.70813.70203-1.02516%201.67373-.33549%202.2228%204.95707%204.58193%209.04599%2012.17021%2011.25288%2017.07423.40871.75341%201.56951.64713%202.43089.27715l10.82069-4.02743c.70813-.4466.61648-1.57156.30995-2.3505z'/%3e%3cpath%20fill='url(%23M)'%20d='m207.125%20325.1875c-1.39457-.11543-2.83681.23667-4.09375%201.1875-.08653.05811-.16998.1207-.25.1875l-14.5625%2013.46875c-.02114.02053-.04197.04136-.0625.0625-.94511.93697-1.72575%202.06691-2.03125%203.5625-.29277%201.43327.24803%203.38386%201.5625%204.5625l-.0625.0625c7.96834%207.36533%2015.05664%2020.28586%2018.78125%2028.5625.02834.07413.05962.1471.09375.21875.9494%201.75012%202.90031%202.46407%204.3125%202.53125%201.36281.06483%202.52587-.27364%203.59375-.71875v.03125l.125-.0625%2018.59375-6.90625c.19683-.07379.38537-.16805.5625-.28125%201.62334-1.02381%202.22808-2.81217%202.3125-4.15625.08212-1.30743-.17307-2.42247-.5625-3.4375-3.70623-10.53721-14.85134-29.58261-24.59375-37.34375-1.00577-.83796-2.32418-1.41582-3.71875-1.53125zm-.46875%205.96875c.09039-.07209.05263-.07587.40625.21875.02071.01066.04155.02108.0625.03125%207.47713%205.95654%2019.52876%2025.76446%2022.65625%2034.65625.0099.03142.02032.06267.03125.09375.07138.1814.09322.35969.125.5625l-17.625%206.5625c-.05266.01937-.10476.04021-.15625.0625-.25313.10872-.45904.11861-.6875.15625-3.89085-8.50392-10.55892-20.78546-19.1875-29.03125.04963-.06804.02372-.05557.09375-.125z'%20clip-path='url(%23s)'%20filter='url(%23A)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='url(%23Q)'%20d='m202.85904%2079.48482c-3.52391-3.77107-14.33325-11.12004-23.1265-13.47912-.99648-.24821-1.60647.31268-1.73962%201.00677l-2.42135%2011.43563c-.20756.95462-.10828%201.88802.69112%202.17445%207.28169%202.66935%2013.28614%206.90909%2016.48642%2010.00716.53937.52191%201.69357-.11694%202.32709-.75134l8.37177-7.75935c.5569-.60886.08284-1.91531-.58893-2.6342z'/%3e%3crect%20width='32.077'%20height='19.651'%20x='-236.668'%20y='175.079'%20fill='url(%23S)'%20rx='1.734'%20transform='scale(-1%201)'/%3e%3cpath%20fill='url(%23K)'%20d='m259.5%20486.5c3.27211%200%206%202.72789%206%206v28c0%203.27211-2.72789%206-6%206h-49.5c-3.27211%200-6-2.72789-6-6v-28c0-3.27211%202.72789-6%206-6zm0%206h-49.5v28h49.5z'%20clip-path='url(%23w)'%20filter='url(%23x)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='url(%23aa)'%20fill-rule='evenodd'%20d='m90.31819%20175.35923%209.12608-4.78837h25.33653c.7912%200%201.72819.83743%201.72819%201.65578v13.43033c0%20.74432-.25139%201.37831-.5886%201.80612l-5.01923%206.69523z'/%3e%3cpath%20fill='url(%23ag)'%20fill-rule='evenodd'%20d='m58.625%20216.5%2015.25-14v37.25l-14.25%2010.625z'%20clip-path='url(%23ae)'%20filter='url(%23af)'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%2053.99746)'/%3e%3cpath%20fill='none'%20stroke='%23aa9876'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m90.31819%20175.35923%209.12608-4.78837h25.33653c.7912%200%201.72819.83743%201.72819%201.65578v13.43033c0%20.74432-.25139%201.37831-.5886%201.80612l-5.01923%206.69523z'/%3e%3cpath%20fill='%23282d30'%20d='m61.34375%20203.9375-16.84375%205.5625c0%201.662%201.338%203%203%203h30c.69535%200%201.33609-.23084%201.84375-.625v.03125l4.5-3.09375c.79228-.61851%201.22488-1.3744%201.28125-2.5625z'%20filter='url(%23al)'%20opacity='.491'%20transform='matrix(.5779564%200%200%20.5779564%2069.349481%2051.68563)'/%3e%3cpath%20fill='%23bca276'%20fill-rule='evenodd'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m117.51618%20171.78482c.4579-.35747.71271-.79434.74529-1.48101v-25.03863c0-.74766-.62528-1.51417-1.35374-1.51417l-5.59376.08902%203.61223%2029.73229z'/%3e%3crect%20width='32.077'%20height='19.651'%20x='89.289'%20y='175.079'%20fill='url(%23Q)'%20rx='1.734'/%3e%3cpath%20fill='url(%23P)'%20d='m10.5%20486.5c-3.2721083%200-6%202.72789-6%206v28c0%203.27211%202.7278917%206%206%206h49.5c3.272108%200%206-2.72789%206-6v-28c0-3.27211-2.727892-6-6-6zm0%206h49.5v28h-49.5z'%20clip-path='url(%23k)'%20filter='url(%23x)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='%23c3a87a'%20fill-rule='evenodd'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m119.53655%20143.47881c.88399%200%201.37269-.47487%201.32355-1.08135v-7.11998c0-.57357-.48638-.89686-1.23386-.89686l-3.58025-.3251-1.66061%209.90525z'/%3e%3crect%20width='20.806'%20height='30.054'%20x='94.78'%20y='143.87'%20fill='url(%23W)'%20rx='1.734'/%3e%3cpath%20fill='url(%23Z)'%20d='m20%20432.5c-3.272108%200-6%202.72789-6%206v48c0%203.27211%202.727888%206.00001%206%206h30c3.272108%200%206-2.72789%206-6v-48c0-3.27211-2.727892-6-6-6zm0%206h30v48h-30z'%20clip-path='url(%23l)'%20filter='url(%23B)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5565507%2084.954305%20-98.50812)'/%3e%3crect%20width='28.32'%20height='9.825'%20x='89.578'%20y='134.044'%20fill='url(%23Q)'%20rx='1.734'/%3e%3cpath%20fill='url(%23F)'%20d='m11%20415.5c-3.2721083%200-6%202.72789-6%206v11c0%203.27211%202.7278917%206%206%206h43c3.272108%200%206-2.72789%206-6v-11c0-3.27211-2.727892-6-6-6zm0%206h43v11h-43z'%20clip-path='url(%23m)'%20filter='url(%23D)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='url(%23Q)'%20d='m106.56521%20103.15886c1.9748-5.61457%208.67478-16.84145%2013.65085-20.80555.68967-.57461%201.64614-.74931%202.40535-.17499l8.42272%207.78429c.70812.70203%201.02516%201.67373.33549%202.2228-4.95707%204.58193-9.04599%2012.17021-11.25288%2017.07423-.40871.75341-1.56951.64713-2.43089.27715l-10.8207-4.02743c-.70812-.4466-.61647-1.57156-.30994-2.3505z'/%3e%3cpath%20fill='url(%23Q)'%20d='m123.09781%2079.48482c3.52391-3.77107%2014.33325-11.12004%2023.1265-13.47912.99648-.24821%201.60647.31268%201.73961%201.00677l2.42135%2011.43563c.20756.95462.10828%201.88802-.69111%202.17445-7.2817%202.66935-13.28614%206.90909-16.48642%2010.00716-.53937.52191-1.69357-.11694-2.3271-.75134l-8.37177-7.75935c-.55689-.60886-.08283-1.91531.58894-2.6342z'/%3e%3cpath%20fill='url(%23H)'%20d='m107.625%20297.75c-.76784-.11154-1.58592-.06376-2.34375.125-.02083-.00022-.04167-.00022-.0625%200-16.126114%204.32635-34.547055%2016.84721-41.40625%2024.1875-.959773%201.0271-1.653608%202.1938-2.03125%203.59375s-.52038%203.40316.96875%205.03125c.060355.0546.122907.10673.1875.15625l14.5%2013.4375c.835974.83714%201.732287%201.49376%203%202%20.633857.25312%201.350408.45415%202.25.4375s2.037644-.37725%202.875-1.1875c5.172645-5.00744%2015.3644-12.20755%2027.5-16.65625%201.62859-.58354%202.77872-2.13843%203.125-3.5s.21254-2.59749-.03125-3.71875l-4.1875-19.75c-.24671-1.28611-.96666-2.53961-2.21875-3.375-.62605-.41769-1.35716-.66971-2.125-.78125zm-1.375%206.125%204.03125%2019.0625c.07298.33564.03212.42796.03125.59375-12.18879%204.58588-22.079259%2011.4048-28%2016.90625-.257963-.15968-.544739-.2945-.71875-.46875-.030556-.03194-.061813-.06319-.09375-.09375l-13.8125-12.8125c.123087-.31306.327761-.72193.5-.90625%205.270626-5.6403%2023.824142-18.27566%2038.0625-22.28125z'%20clip-path='url(%23p)'%20filter='url(%23z)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='url(%23Q)'%20d='m100.93438%20131.88989c.21854-9.83605%201.65194-19.00228%204.10486-24.80426.2887-.89102%201.2655-1.73968%201.96104-1.53985l10.85061%204.0115c.95096.302%201.78629%201.2369%201.4465%202.10238-2.07637%206.29635-3.64661%2014.09337-3.64661%2020.83069%200%201.14893-1.08646%201.59094-2.01212%201.59094h-11.23224c-.94794-.254-1.45424-1.14713-1.47204-2.1914z'/%3e%3cpath%20fill='url(%23I)'%20d='m38.96875%20366.3125c-2.043231-.58702-3.60001.30335-4.6875%201.1875-1.01733.82711-1.7669%201.87252-2.25%203.1875h-.03125c-.023627.05589-.038987.13132-.0625.1875-.007763.02319-.023678.03913-.03125.0625-4.461024%2010.69589-6.869024%2026.63452-7.25%2043.78125-.000488.03125-.000488.0625%200%20.09375.046827%202.74695%201.669592%205.83085%204.75%206.65625.255172.06541.517847.09693.78125.09375h19.4375c1.278297%200%202.667247-.2506%204-1.125s2.499998-2.68541%202.5-4.625c0-11.13728%202.615908-24.3413%206.09375-34.9375.016776-.05111.045685-.10526.0625-.15625l-.0625-.03125c.623058-1.81281.083322-3.71385-.8125-4.90625-.891865-1.18713-2.074804-1.97307-3.4375-2.4375v-.03125l-18.78125-6.9375c-.0721-.02359-.145069-.04444-.21875-.0625zm-1.03125%206%2017.9375%206.625c.041176.0218.082854.04264.125.0625.157798.05011.309916.17474.4375.28125-3.580289%2010.98523-6.231145%2024.29906-6.28125%2036.1875-.11559.03877-.281651.09375-.53125.09375h-18.6875c-.158103-.04915-.26347-.10172-.28125-.8125-.000613-.02451.000443-.00525%200-.03125.382538-16.72065%202.887761-32.33026%206.84375-41.6875.034944-.0819.066225-.16532.09375-.25.022355-.06899.193736-.29087.34375-.46875z'%20clip-path='url(%23n)'%20filter='url(%23y)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='none'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m121.72678%20111.468-3.07039-1.6255'/%3e%3cpath%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20stroke-width='.578'%20d='m100.93438%20131.88989c.21854-9.83605%201.65194-19.00228%204.10486-24.80426.2887-.89102%201.2655-1.73968%201.96104-1.53985l10.85061%204.0115c.95096.302%201.78629%201.2369%201.4465%202.10238-2.07637%206.29635-3.64661%2014.09337-3.64661%2020.83069%200%201.14893-1.08646%201.59094-2.01212%201.59094h-11.23224c-.94794-.254-1.45424-1.14713-1.47204-2.1914z'/%3e%3cpath%20fill='url(%23Q)'%20d='m162.97842%2058.39123c6.29927%200%2013.12309%204.88732%2015.09912%207.80286l-2.60081%2011.88827c-.21673.89043-.84555%202.06983-1.73387%201.67248-3.37583-1.43826-9.01778-2.3453-10.7645-2.3453-1.74073%200-7.34046%201.1622-10.90886%202.3453-.66902.31271-1.55508-.77147-1.73387-1.67248l-2.60081-12.02764c2.12492-2.91118%208.84222-7.66349%2015.2436-7.66349z'/%3e%3cpath%20fill='url(%23J)'%20d='m135%20284.59375c-6.28033%200-12.36767%202.25873-17.4375%205.125s-9.10749%206.26847-11.375%209.375c-.5026.6939-.68455%201.56957-.5%202.40625l4.5%2020.8125c.29413%201.48219.93921%202.60586%201.9375%203.65625.49915.5252%201.0965%201.02722%201.96875%201.375.77971.31088%201.90678.35201%202.9375%200l.03125.0625c2.92068-.96835%206.83215-1.94804%2010.3125-2.6875s6.78673-1.21875%207.625-1.21875c1.98368%200%2012.28696%201.61812%2017.4375%203.8125%201.00962.4516%202.28341.49057%203.28125.125s1.67013-.97574%202.15625-1.5625c.97223-1.17353%201.38306-2.37761%201.65625-3.5.01066-.02071.02108-.04155.03125-.0625l4.5-20.5625c.17511-.81245.00538-1.66115-.46875-2.34375-2.17251-3.20545-6.15685-6.60115-11.21875-9.53125s-11.14954-5.28126-17.375-5.28125zm0%206c4.67374-.00001%209.95394%201.9096%2014.375%204.46875%203.9222%202.27038%206.93861%205.0016%208.5%206.90625l-4.1875%2019.0625c-.03522.14468-.09339.19619-.15625.34375-6.4137-2.46938-14.71615-3.875-18.53125-3.875-2.17361-.00001-5.21442.566-8.875%201.34375-3.30482.70216-6.81123%201.63063-9.875%202.59375-.07521-.14553-.18051-.30851-.1875-.34375.00022-.02083.00022-.04167%200-.0625l-4.15625-19.25c1.68526-1.95071%204.68193-4.60092%208.59375-6.8125%204.42955-2.50429%209.70444-4.375%2014.5-4.375z'%20clip-path='url(%23q)'%20filter='url(%23C)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3crect%20width='20.806'%20height='29.765'%20x='-231.177'%20y='143.87'%20fill='url(%23U)'%20rx='1.734'%20transform='scale(-1%201)'/%3e%3cpath%20fill='url(%23L)'%20d='m250%20432.5c3.27211%200%206%202.72789%206%206v48c0%203.27211-2.72789%206.00001-6%206h-30c-3.27211%200-6-2.72789-6-6v-48c0-3.27211%202.72789-6%206-6zm0%206h-30v48h30z'%20clip-path='url(%23v)'%20filter='url(%23B)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5568851%2084.954305%20-98.65376)'/%3e%3crect%20width='28.32'%20height='9.825'%20x='-236.379'%20y='134.044'%20fill='url(%23S)'%20rx='1.734'%20transform='scale(-1%201)'/%3e%3cpath%20fill='url(%23E)'%20d='m259%20415.5c3.27211%200%206%202.72789%206%206v11c0%203.27211-2.72789%206-6%206h-43c-3.27211%200-6-2.72789-6-6v-11c0-3.27211%202.72789-6%206-6zm0%206h-43v11h43z'%20clip-path='url(%23u)'%20filter='url(%23D)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='url(%23Q)'%20d='m225.02247%20131.88989c-.21854-9.83605-1.65195-19.00228-4.10486-24.80426-.28871-.89102-1.2655-1.73968-1.96104-1.53985l-10.85061%204.0115c-.95096.302-1.78629%201.2369-1.4465%202.10238%202.07637%206.29635%203.6466%2014.09337%203.6466%2020.83069%200%201.14893%201.08647%201.59094%202.01213%201.59094h11.23224c.94794-.254%201.45424-1.14713%201.47204-2.1914z'/%3e%3cpath%20fill='url(%23O)'%20d='m231.03125%20366.3125c-.07368.01806-.14665.03891-.21875.0625l-18.78125%206.9375v.03125c-1.36269.46443-2.54564%201.25037-3.4375%202.4375-.89582%201.1924-1.43555%203.09344-.8125%204.90625l-.0625.03125c.01682.05099.04572.10514.0625.15625%203.47785%2010.5962%206.09375%2023.80022%206.09375%2034.9375.00001%201.93959%201.16725%203.7506%202.5%204.625s2.7217%201.125%204%201.125h19.4375c.2634.00318.52608-.02834.78125-.09375%203.08041-.8254%204.70317-3.90931%204.75-6.65625.00049-.03125.00049-.0625%200-.09375-.38097-17.14673-2.78898-33.08537-7.25-43.78125-.00757-.02337-.02349-.03931-.03125-.0625-.02351-.05618-.03887-.13161-.0625-.1875h-.03125c-.4831-1.31497-1.23267-2.36039-2.25-3.1875-1.08749-.88415-2.64427-1.77452-4.6875-1.1875zm1.03125%206c.15002.17789.32139.39975.34375.46875.02752.08468.05881.1681.09375.25%203.9585%209.36319%206.4637%2024.98606%206.84375%2041.71875-.01778.71079-.12315.76335-.28125.8125h-18.6875c-.2496%200-.41566-.05498-.53125-.09375-.05011-11.88844-2.70095-25.20227-6.28125-36.1875.12758-.10651.27971-.23114.4375-.28125.04215-.01986.08382-.0407.125-.0625z'%20clip-path='url(%23t)'%20filter='url(%23y)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='url(%23G)'%20d='m62.84375%20325.21875c-1.407324.12583-2.744231.69329-3.75%201.53125-9.718525%207.74211-20.766821%2026.66605-24.5%2037.21875-.003512.00892.003491.02231%200%20.03125-.00649.01838-.024805.04418-.03125.0625-.389435%201.01503-.644622%202.13007-.5625%203.4375.084424%201.34407.689159%203.13244%202.3125%204.15625.17713.1132.365665.20746.5625.28125l18.59375%206.90625.125.0625v-.03125c1.067881.44511%202.230943.78358%203.59375.71875%201.412193-.06718%203.363099-.78112%204.3125-2.53125.034131-.07165.065405-.14462.09375-.21875%203.724613-8.27664%2010.812909-21.19717%2018.78125-28.5625l-.0625-.0625c1.314472-1.17864%201.855267-3.12923%201.5625-4.5625-.305495-1.49559-1.086139-2.62553-2.03125-3.5625-.020525-.02114-.041361-.04197-.0625-.0625l-14.5625-13.46875c-.08002-.0668-.163466-.12939-.25-.1875-1.256938-.95083-2.717676-1.28208-4.125-1.15625zm.5%205.9375%2014.375%2013.28125c.02465.02444.010238.00739.03125.03125-8.635756%208.24572-15.325663%2020.52243-19.21875%2029.03125-.228464-.03764-.434374-.04753-.6875-.15625-.051489-.02229-.103593-.04313-.15625-.0625l-17.625-6.5625c.031782-.20281.053616-.3811.125-.5625.010931-.03108.021349-.06233.03125-.09375%203.127505-8.89179%2015.17911-28.69971%2022.65625-34.65625.020954-.01017.041789-.02059.0625-.03125.353621-.29462.315852-.29084.40625-.21875z'%20clip-path='url(%23o)'%20filter='url(%23A)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3cpath%20fill='url(%23N)'%20d='m162.375%20297.75c-.76785.11154-1.49895.36355-2.125.78125-1.25209.83539-1.97204%202.1514-2.21875%203.4375l-4.1875%2019.71875c-.24379%201.12126-.37753%202.32593-.03125%203.6875s1.52766%202.94771%203.15625%203.53125c12.1356%204.4487%2022.2961%2011.61756%2027.46875%2016.625.83736.81025%201.97541%201.17085%202.875%201.1875s1.61614-.18438%202.25-.4375c1.26771-.50624%202.25778-1.25661%203.09375-2.09375l14.40625-13.34375c.06459-.04952.12715-.10165.1875-.15625%201.48913-1.62809%201.34639-3.6313.96875-5.03125s-1.07148-2.56665-2.03125-3.59375c-6.8592-7.34028-25.28014-19.86115-41.40625-24.1875-.02083-.00022-.04167-.00022-.0625%200-.75783-.18876-1.5759-.23654-2.34375-.125zm1.375%206.09375c14.2424%203.99279%2032.78693%2016.66693%2038.0625%2022.3125.17224.18432.37691.59319.5.90625l-13.8125%2012.8125c-.03194.03056-.06319.06181-.09375.09375-.17401.17425-.46079.30907-.71875.46875-5.92071-5.50141-15.81123-12.32038-28-16.90625-.00087-.16579-.04173-.2581.03125-.59375z'%20clip-path='url(%23r)'%20filter='url(%23z)'%20opacity='.24'%20transform='matrix(.5779564%200%200%20.5779564%2084.954305%20-107.83034)'/%3e%3crect%20width='32.077'%20height='19.651'%20x='89.289'%20y='175.079'%20fill='none'%20stroke='url(%23Y)'%20stroke-linecap='square'%20stroke-width='.578'%20rx='1.734'/%3e%3crect%20width='20.806'%20height='30.054'%20x='94.78'%20y='143.87'%20fill='none'%20stroke='url(%23X)'%20stroke-linecap='square'%20stroke-width='.578'%20rx='1.734'/%3e%3crect%20width='32.077'%20height='19.651'%20x='-236.668'%20y='175.079'%20fill='none'%20stroke='url(%23T)'%20stroke-linecap='square'%20stroke-width='.578'%20rx='1.734'%20transform='scale(-1%201)'/%3e%3cpath%20fill='%23282d30'%20fill-rule='evenodd'%20d='m-7.75%20157h-50.375l.875-16.375h61.5l-.375%2014.75z'%20clip-path='url(%23ao)'%20filter='url(%23ap)'%20opacity='.467'%20transform='matrix(.5779564%200%200%20.5779564%20119.63169%2053.99746)'/%3e%3cg%20stroke-width='.578'%3e%3crect%20width='28.32'%20height='9.825'%20x='89.578'%20y='134.044'%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20rx='1.734'/%3e%3cpath%20fill='none'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20d='m133.30397%2093.0637-1.51713-2.23958'/%3e%3cpath%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20d='m106.56521%20103.15886c1.9748-5.61457%208.67478-16.84145%2013.65085-20.80555.68967-.57461%201.64614-.74931%202.40535-.17499l8.42272%207.78429c.70812.70203%201.02516%201.67373.33549%202.2228-4.95707%204.58193-9.04599%2012.17021-11.25288%2017.07423-.40871.75341-1.56951.64713-2.43089.27715l-10.8207-4.02743c-.70812-.4466-.61647-1.57156-.30994-2.3505z'/%3e%3cpath%20fill='none'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20d='m151.27481%2081.84773-.68633-2.70917'/%3e%3cpath%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20d='m123.09781%2079.48482c3.52391-3.77107%2014.33325-11.12004%2023.1265-13.47912.99648-.24821%201.60647.31268%201.73961%201.00677l2.42135%2011.43563c.20756.95462.10828%201.88802-.69111%202.17445-7.2817%202.66935-13.28614%206.90909-16.48642%2010.00716-.53937.52191-1.69357-.11694-2.3271-.75134l-8.37177-7.75935c-.55689-.60886-.08283-1.91531.58894-2.6342z'/%3e%3cpath%20fill='none'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20d='m204.19909%20111.468%203.07039-1.6255'/%3e%3cpath%20fill='none'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20d='m192.6219%2093.0637%201.51713-2.23958'/%3e%3cpath%20fill='none'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20d='m174.65106%2081.84773.68633-2.70917'/%3e%3cpath%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20d='m162.97842%2058.39123c6.29927%200%2013.12309%204.88732%2015.09912%207.80286l-2.60081%2011.88827c-.21673.89043-.84555%202.06983-1.73387%201.67248-3.37583-1.43826-9.01778-2.3453-10.7645-2.3453-1.74073%200-7.34046%201.1622-10.90886%202.3453-.66902.31271-1.55508-.77147-1.73387-1.67248l-2.60081-12.02764c2.12492-2.91118%208.84222-7.66349%2015.2436-7.66349z'/%3e%3cpath%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20d='m202.85904%2079.48482c-3.52391-3.77107-14.33325-11.12004-23.1265-13.47912-.99648-.24821-1.60647.31268-1.73962%201.00677l-2.42135%2011.43563c-.20756.95462-.10828%201.88802.69112%202.17445%207.28169%202.66935%2013.28614%206.90909%2016.48642%2010.00716.53937.52191%201.69357-.11694%202.32709-.75134l8.37177-7.75935c.5569-.60886.08284-1.91531-.58893-2.6342z'/%3e%3cpath%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20d='m225.02247%20131.88989c-.21854-9.83605-1.65195-19.00228-4.10486-24.80426-.28871-.89102-1.2655-1.73968-1.96104-1.53985l-10.85061%204.0115c-.95096.302-1.78629%201.2369-1.4465%202.10238%202.07637%206.29635%203.6466%2014.09337%203.6466%2020.83069%200%201.14893%201.08647%201.59094%202.01213%201.59094h11.23224c.94794-.254%201.45424-1.14713%201.47204-2.1914z'/%3e%3c/g%3e%3cpath%20fill='url(%23at)'%20fill-rule='evenodd'%20d='m218.19132%20105.50782c1.27637.03613%202.3678.43402%202.98009%201.40877.0078.01742.01384.03557.01806.05419%202.47981%205.86558%203.89887%2015.06435%204.11794%2024.92437-.01931%201.13317-.59367%202.16531-1.67968%202.45631-.0232.00911-.04749.01519-.07225.01806h-11.23403c-.14527%200-.28735-.01588-.43346-.03612h-.05419l-2.5105.09031c-.50097.04339-.9568-.06727-1.3004-.36122-.3436-.29396-.54183-.76008-.54183-1.31847-.3319-8.48947-1.39028-13.0572-3.61223-19.50603-.01019-.01765-.00886-.03637-.01806-.05418-.20271-.39264-.17756-.81883-.09031-1.15591.04561-.17619.10218-.32771.16255-.45153.06038-.12383.10534-.19707.19868-.28898.01095-.01309.02303-.02518.03612-.03612%201.41438-1.0049%204.931-3.10962%208.45261-4.47917%201.76081-.68477%203.50972-1.19004%205.021-1.26428.18891-.00928.37755-.00516.55989%200z'%20opacity='.5'/%3e%3cpath%20fill='none'%20stroke='url(%23R)'%20stroke-linecap='square'%20stroke-width='.578'%20d='m219.39164%20103.15886c-1.97481-5.61457-8.67478-16.84145-13.65085-20.80555-.68968-.57461-1.64614-.74931-2.40535-.17499l-8.42272%207.78429c-.70813.70203-1.02516%201.67373-.33549%202.2228%204.95707%204.58193%209.04599%2012.17021%2011.25288%2017.07423.40871.75341%201.56951.64713%202.43089.27715l10.82069-4.02743c.70813-.4466.61648-1.57156.30995-2.3505z'/%3e%3crect%20width='28.32'%20height='9.825'%20x='-236.379'%20y='134.044'%20fill='none'%20stroke='url(%23T)'%20stroke-linecap='square'%20stroke-width='.578'%20rx='1.734'%20transform='scale(-1%201)'/%3e%3crect%20width='20.806'%20height='30.054'%20x='-231.177'%20y='143.87'%20fill='none'%20stroke='url(%23V)'%20stroke-linecap='square'%20stroke-width='.578'%20rx='1.734'%20transform='scale(-1%201)'/%3e%3cpath%20fill='none'%20stroke='url(%23aj)'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m89.288978%20192.99598c0%20.96056.773302%201.73387%201.733872%201.73387h28.60884c.66328%200%201.22538-.37664%201.51714-.92112l4.76814-6.33946c.33721-.42781.59602-1.06179.59602-1.80611'/%3e%3cpath%20fill='none'%20stroke='url(%23ak)'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m236.66787%20192.99598c0%20.96056-.77331%201.73387-1.73387%201.73387h-28.60884c-.66328%200-1.22538-.37664-1.51714-.92112l-4.76814-6.33946c-.33721-.42781-.59602-1.06179-.59602-1.80611'/%3e%3cpath%20fill='none'%20stroke='url(%23am)'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m94.77956%20172.18955c0%20.96056.77331%201.73387%201.73387%201.73387h17.3387c.40188%200%20.7722-.13342%201.0656-.36122v.01806l2.60081-1.78806c.4579-.35747.70793-.79434.7405-1.48101'%20opacity='.64'/%3e%3cpath%20fill='none'%20stroke='url(%23an)'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m231.17728%20172.18955c0%20.96056-.7733%201.73387-1.73387%201.73387h-17.33869c-.40188%200-.7722-.13342-1.06561-.36122v.01806l-2.6008-1.78806c-.4579-.35747-.70793-.79434-.74051-1.48101'%20opacity='.57'/%3e%3cpath%20fill='%23282d30'%20fill-rule='evenodd'%20d='m-7.75%20157h-50.375l.875-16.375h61.5l-.375%2014.75z'%20clip-path='url(%23ao)'%20filter='url(%23ap)'%20opacity='.467'%20transform='matrix(-.5779564%200%200%20.5779564%20206.32516%2053.99746)'/%3e%3cpath%20fill='none'%20stroke='url(%23aq)'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m89.577956%20142.13581c0%20.96057.773304%201.73387%201.733874%201.73387h23.10019c.75158.01652%201.85064.02618%202.25764-.03612l2.87172-.36122c.88399%200%201.36761-.47719%201.31847-1.08367'/%3e%3cpath%20fill='none'%20stroke='url(%23ar)'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.578'%20d='m236.37889%20142.13581c0%20.96057-.77331%201.73387-1.73387%201.73387h-23.10019c-.75159.01652-1.85064.02618-2.25765-.03612l-2.87172-.36122c-.88399%200-1.3676-.47719-1.31846-1.08367'/%3e%3cpath%20fill='url(%23as)'%20fill-rule='evenodd'%20d='m107.76552%20105.50782c-1.27637.03613-2.3678.43402-2.98008%201.40877-.0078.01742-.01385.03557-.01807.05419-2.4798%205.86558-3.89887%2015.06435-4.11794%2024.92437.01932%201.13317.59368%202.16531%201.67969%202.45631.0232.00911.04748.01519.07224.01806h11.23403c.14527%200%20.28736-.01588.43347-.03612h.05418l2.5105.09031c.50098.04339.9568-.06727%201.3004-.36122.34361-.29396.54184-.76008.54184-1.31847.33189-8.48947%201.39028-13.0572%203.61223-19.50603.01019-.01765.00886-.03637.01806-.05418.2027-.39264.17756-.81883.0903-1.15591-.0456-.17619-.10217-.32771-.16255-.45153-.06037-.12383-.10534-.19707-.19867-.28898-.01095-.01309-.02304-.02518-.03612-.03612-1.41438-1.0049-4.931-3.10962-8.45261-4.47917-1.76081-.68477-3.50973-1.19004-5.021-1.26428-.18891-.00928-.37756-.00516-.5599%200z'%20opacity='.5'/%3e%3cpath%20fill='%23d39f41'%20fill-rule='evenodd'%20stroke='%23a6926e'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='1.014'%20d='m135.27045%2014.062569c-11.23424.110709-14.41813%207.230436-9.28507%2019.653468-.93441.210336-1.61748.269906-1.98955.288113-.27625.013522-.10287%201.239763.12214%201.231921%201.4033-.048902%203.90677-.151495%205.42413-.142111.21822.001349.31324-1.580771-.4937-3.716475-.70873-1.87576-1.73583-4.458034-1.69566-7.777628.04018-3.319597.012-7.163446%205.73075-7.635697.17878%204.991039.11614%2011.916356-.11622%2017.282733-.9427.054215-1.6548.222953-1.98652.342861-.26549.095966-.00837%201.412867.21312%201.386923.35044-.041049%202.49724-.072447%204.07658-.072341%201.57934-.000106%202.90029.019214%203.2491.072341.17035.025944.27132-1.372982.01756-1.438074-.31834-.081654-.99267-.237495-1.93537-.29171-.08682-5.318566-.17967-12.014437.13954-17.282733%205.71875.472251%205.57922%204.52071%205.61939%207.840304.04018%203.319597-.90148%205.690979-1.59334%207.573021-.65349%201.777641-.70479%203.716475-.43351%203.716475%201.36396%200%204.04836.00445%205.41691.046011.26791.008137.39836-1.070298.1712-1.116688-.26196-.053503-1.39055-.160343-2.08254-.256093%205.0512-12.245024%202.09932-19.645727-8.56894-19.704621z'%20filter='url(%23aK)'%20opacity='.35'%20transform='matrix(.562%200%200%20.5779564%2087.107152%2053.99746)'/%3e%3cpath%20fill='%23fbeed5'%20fill-rule='evenodd'%20d='m162.22494%2016.626906c-11.23424.110709-14.41813%207.230436-9.28507%2019.653468-.93441.210336-1.61748.269906-1.98955.288113-.27625.013522-.10287%201.239763.12214%201.231921%201.4033-.048902%203.90677-.151495%205.42413-.142111.21822.001349.31324-1.580771-.4937-3.716475-.70873-1.87576-1.73583-4.458034-1.69566-7.777628.04018-3.319597.012-7.163446%205.73075-7.635697.17878%204.991039.11614%2011.916356-.11622%2017.282733-.9427.054215-1.6548.222953-1.98652.342861-.26549.095966-.00837%201.412867.21312%201.386923.35044-.041049%202.49724-.072447%204.07658-.072341%201.57934-.000106%202.90029.019214%203.2491.072341.17035.025944.27132-1.372982.01756-1.438074-.31834-.081654-.99267-.237495-1.93537-.29171-.08682-5.318566-.17967-12.014437.13954-17.282733%205.71875.472251%205.57922%204.52071%205.61939%207.840304.04018%203.319597-.90148%205.690979-1.59334%207.573021-.65349%201.777641-.70479%203.716475-.43351%203.716475%201.36396%200%204.04836.00445%205.41691.046011.26791.008137.39836-1.070298.1712-1.116688-.26196-.053503-1.39055-.160343-2.08254-.256093%205.0512-12.245024%202.09932-19.645727-8.56894-19.704621z'%20filter='url(%23aL)'%20transform='matrix(.5779564%200%200%20.5779564%2069.349481%2051.68563)'/%3e%3cpath%20fill='%23f8e4c2'%20fill-rule='evenodd'%20d='m163.10843%2061.72873c-6.4929.06398-8.33305%204.17887-5.36637%2011.35885-.54005.12156-.93483.15599-1.14987.16651-.15966.00782-.05945.71653.07059.712.81105-.02826%202.25794-.08756%203.13491-.08214.12612.00078.18104-.91361-.28533-2.14796-.40962-1.0841-1.00324-2.57655-.98002-4.49513s.00693-4.14016%203.31212-4.4131c.10333%202.88461.06713%206.88714-.06717%209.98867-.54484.03133-.9564.12886-1.14812.19816-.15344.05546-.00484.81657.12317.80158.20254-.02372%201.4433-.04187%202.35609-.04181.91279-.00006%201.67624.01111%201.87784.04181.09845.01499.15681-.79352.01015-.83114-.18399-.0472-.57372-.13727-1.11856-.1686-.05018-3.0739-.10384-6.94382.08064-9.98867%203.30519.27294%203.22455%202.61278%203.24777%204.53136s-.52102%203.28914-.92088%204.37687c-.37769%201.0274-.40734%202.14796-.25055%202.14796.78831%200%202.33977.00258%203.13073.0266.15484.0047.23024-.61859.09895-.6454-.1514-.03092-.80368-.09267-1.20362-.14801%202.91938-7.07709%201.21332-11.35437-4.95247-11.38841z'/%3e%3c/g%3e%3c/svg%3e", a = [
6
+ {
7
+ value: "dark",
8
+ label: "Dark (Teal)"
9
+ },
10
+ {
11
+ value: "amber",
12
+ label: "Dark (Amber)"
13
+ },
14
+ {
15
+ value: "sky",
16
+ label: "Dark (Sky Blue)"
17
+ },
18
+ {
19
+ value: "light",
20
+ label: "Light (Qt)"
21
+ },
22
+ {
23
+ value: "graylight",
24
+ label: "Light (Gray)"
25
+ },
26
+ {
27
+ value: "system",
28
+ label: "System setting"
29
+ }
30
+ ], o = {
31
+ appName: "Mudlet Web",
32
+ logoUrl: i,
33
+ tagline: "Mudlet, in your browser.",
34
+ aboutText: "Mudlet Web connects to MUD servers over WebSocket with full telnet, GMCP and MSDP support, renders ANSI output, and runs Mudlet Lua scripting right in the browser — with drop-in support for existing Mudlet packages, maps and profiles, and nothing to install.",
35
+ repoUrl: "https://github.com/Mudlet/mudlet-web"
36
+ }, s = o;
37
+ function c(e) {
38
+ s = {
39
+ ...o,
40
+ ...e
41
+ }, e && !("logoUrl" in e) && (s.logoUrl = void 0);
42
+ }
43
+ function l() {
44
+ return s;
45
+ }
46
+ function ee() {
47
+ return !!s.mud;
48
+ }
49
+ function te() {
50
+ let e = (s.themes ?? []).map((e) => ({
51
+ value: e.id,
52
+ label: e.label
53
+ })), t = [...e, ...a.filter((t) => !e.some((e) => e.value === t.value))];
54
+ return s.availableThemes ? s.availableThemes.map((e) => t.find((t) => t.value === e)).filter((e) => !!e) : t;
55
+ }
56
+ function ne(e) {
57
+ let t = s.themes?.find((t) => t.id === e);
58
+ return t ? t.colorScheme === "light" : e === "light" || e === "graylight";
59
+ }
60
+ function u() {
61
+ return (s.themes ?? []).map((e) => {
62
+ let t = e.colorScheme ? `color-scheme: ${e.colorScheme};\n ` : "", n = Object.entries(e.variables).map(([e, t]) => `${e}: ${t};`).join("\n ");
63
+ return `:root[data-theme="${e.id}"] {\n ${t}${n}\n}`;
64
+ }).join("\n");
65
+ }
66
+ function re(e, t) {
67
+ let n = e.mud;
68
+ if (!n) return null;
69
+ let r = {
70
+ name: t?.trim() || n.name || e.appName,
71
+ autoReconnect: n.autoConnect || void 0,
72
+ reconnectOnDrop: n.autoReconnect || void 0
73
+ };
74
+ return n.mode === "mud" ? {
75
+ ...r,
76
+ mode: "mud",
77
+ host: n.host ?? "",
78
+ port: n.port ?? 23,
79
+ url: void 0
80
+ } : {
81
+ ...r,
82
+ mode: "websocket",
83
+ url: n.url ?? "",
84
+ host: void 0,
85
+ port: void 0
86
+ };
87
+ }
88
+ function d(e, t, n) {
89
+ let r = n.addConnection(t);
90
+ return e.profileDefaults && n.patchConnectionProfile(r, e.profileDefaults), r;
91
+ }
92
+ function ie(e, t, n) {
93
+ let r = n?.trim().toLowerCase();
94
+ return t.profileMode === "perLogin" && r ? e.find((e) => e.name.trim().toLowerCase() === r) : e[0];
95
+ }
96
+ //#endregion
97
+ //#region src/storage/schema.ts
98
+ var f = "wss://web-proxy.mudlet.org", ae = {
99
+ gmcp: !0,
100
+ mtts: !0,
101
+ msdp: !1,
102
+ mssp: !0,
103
+ charset: !0,
104
+ msp: !0,
105
+ mccp: !0,
106
+ mxp: !0,
107
+ mnes: !1,
108
+ newEnviron: !0,
109
+ naws: !0,
110
+ wsSubprotocols: ["binary"]
111
+ }, oe = [
112
+ "binary",
113
+ "telnet",
114
+ "telnet.mudstandards.org"
115
+ ], se = {
116
+ strokeColor: "#00e5b2",
117
+ strokeAlpha: 1,
118
+ fillColor: "#00e5b2",
119
+ fillAlpha: 0,
120
+ strokeWidth: .1,
121
+ sizeFactor: 1.7,
122
+ dashLength: .05,
123
+ dashGap: .05,
124
+ dashEnabled: !0,
125
+ matchRoomShape: !1
126
+ };
127
+ function ce(e) {
128
+ if (e !== void 0) return typeof e == "string" ? e.trim() === "" ? void 0 : {
129
+ kind: "system",
130
+ family: e
131
+ } : e.family.trim() === "" ? void 0 : e;
132
+ }
133
+ var le = {
134
+ roomSize: .5,
135
+ roomShape: "rectangle",
136
+ borders: !0,
137
+ lineWidth: .05,
138
+ backgroundColor: "#000000",
139
+ lineColor: "#c0c0c0",
140
+ showDefaultArea: !0,
141
+ gridEnabled: !1,
142
+ gridColor: "rgba(200, 200, 200, 0.15)",
143
+ gridLineWidth: .02,
144
+ symbolFont: "Bitstream Vera Sans Mono",
145
+ lodEnabled: !0,
146
+ lodRoomBudget: 16e3,
147
+ lodExitBudget: 12e3,
148
+ lodHitTestBudget: 1e4,
149
+ playerMarker: se
150
+ }, ue = {
151
+ r: 150,
152
+ g: 150,
153
+ b: 150,
154
+ a: 120
155
+ }, de = {
156
+ Bing: "https://www.bing.com/search?q=",
157
+ DuckDuckGo: "https://duckduckgo.com/?q=",
158
+ Google: "https://www.google.com/search?q="
159
+ }, fe = "Google";
160
+ function pe(e) {
161
+ return e && e in de ? e : fe;
162
+ }
163
+ var p = {
164
+ showTimestamps: !1,
165
+ fontSize: 14,
166
+ outputBackground: "",
167
+ autoClearInput: !1,
168
+ commandSeparator: ";;",
169
+ outputWrapAt: 100
170
+ };
171
+ function me(e) {
172
+ return e === 1 || e === 2 ? e : 0;
173
+ }
174
+ function he(e, t) {
175
+ return !Number.isFinite(e) || t < 2 ? 0 : Math.max(0, Math.min(t - 1, Math.trunc(e)));
176
+ }
177
+ function ge(e) {
178
+ return e.colorize ?? !!e.highlight;
179
+ }
180
+ function _e(e) {
181
+ if (!e.some((e) => e.temporary || m(e.parentId))) return e;
182
+ let t = new Map(e.map((e) => [e.id, e])), n = (e) => {
183
+ let n = e, r = /* @__PURE__ */ new Set();
184
+ for (; n && !r.has(n.id);) {
185
+ if (n.temporary || m(n.parentId)) return !0;
186
+ r.add(n.id), n = n.parentId ? t.get(n.parentId) : void 0;
187
+ }
188
+ return !1;
189
+ };
190
+ return e.filter((e) => !n(e));
191
+ }
192
+ var ve = "temp:";
193
+ function ye(e) {
194
+ return ve + e;
195
+ }
196
+ function m(e) {
197
+ return typeof e == "string" && e.startsWith("temp:");
198
+ }
199
+ function be(e) {
200
+ if (!m(e)) return null;
201
+ let t = Number(e.slice(5));
202
+ return Number.isInteger(t) ? t : null;
203
+ }
204
+ function xe(e, t) {
205
+ let n = e, r = /* @__PURE__ */ new Set();
206
+ for (; n && !r.has(n.id);) {
207
+ if (m(n.parentId)) return be(n.parentId);
208
+ r.add(n.id), n = n.parentId ? t.get(n.parentId) : void 0;
209
+ }
210
+ return null;
211
+ }
212
+ function Se(e) {
213
+ if (!e.some((e) => m(e.parentId))) return e;
214
+ let t = new Map(e.map((e) => [e.id, e]));
215
+ return e.filter((e) => xe(e, t) === null);
216
+ }
217
+ function Ce(e, t) {
218
+ let n = new Map(t.map((e) => [e.id, e])), r = e;
219
+ for (; r;) {
220
+ if (!r.enabled) return !1;
221
+ if (!r.parentId) break;
222
+ r = n.get(r.parentId);
223
+ }
224
+ return !0;
225
+ }
226
+ function we(e) {
227
+ let t = new Set(e.map((e) => e.id)), n = /* @__PURE__ */ new Map();
228
+ for (let r of e) {
229
+ if (!r.parentId || !t.has(r.parentId)) continue;
230
+ let e = n.get(r.parentId);
231
+ e || n.set(r.parentId, e = []), e.push(r);
232
+ }
233
+ let r = [], i = /* @__PURE__ */ new Set(), a = (e) => {
234
+ if (!i.has(e.id)) {
235
+ i.add(e.id), r.push(e);
236
+ for (let t of n.get(e.id) ?? []) a(t);
237
+ }
238
+ };
239
+ for (let n of e) (!n.parentId || !t.has(n.parentId)) && a(n);
240
+ for (let t of e) a(t);
241
+ return r;
242
+ }
243
+ function Te(e, t) {
244
+ let n = new Map(e.map((e) => [e.id, e])), r = /* @__PURE__ */ new Map(), i = (e) => {
245
+ let a = r.get(e.id);
246
+ if (a !== void 0) return a;
247
+ if (r.set(e.id, !0), !e.enabled || t?.has(e.id)) return r.set(e.id, !1), !1;
248
+ if (!e.parentId) return !0;
249
+ let o = n.get(e.parentId), s = !o || i(o);
250
+ return r.set(e.id, s), s;
251
+ }, a = /* @__PURE__ */ new Set();
252
+ for (let t of e) i(t) && a.add(t.id);
253
+ return a;
254
+ }
255
+ var h = {
256
+ connections: [],
257
+ client: { theme: "dark" },
258
+ connectionProfile: {},
259
+ connectionWindowHints: {},
260
+ connectionDockExtents: {},
261
+ connectionScripts: {},
262
+ connectionAliases: {},
263
+ connectionTriggers: {},
264
+ connectionTimers: {},
265
+ connectionKeybindings: {},
266
+ connectionButtons: {},
267
+ connectionScriptEditorBounds: {},
268
+ connectionModalBounds: {},
269
+ connectionPackages: {},
270
+ connectionLayoutSnapshots: {},
271
+ connectionVariables: {}
272
+ };
273
+ function Ee(e, t, n) {
274
+ if (t) {
275
+ let r = e.connectionProfile[t]?.[n];
276
+ if (r !== void 0) return r;
277
+ }
278
+ return p[n];
279
+ }
280
+ function De(e) {
281
+ let t = [["host", e.host ?? ""], ["port", String(e.port ?? 23)]];
282
+ return e.tls && (t.push(["tls", "1"]), e.sslIgnoreExpired && t.push(["tlsIgnoreExpired", "1"]), e.sslIgnoreSelfSigned && t.push(["tlsIgnoreSelfSigned", "1"]), e.sslIgnoreAll && t.push(["tlsIgnoreAll", "1"])), t;
283
+ }
284
+ function Oe(e, t) {
285
+ let n = e.replace(/\/$/, ""), r = n.indexOf("?"), i = r === -1 ? n : n.slice(0, r), a = new URLSearchParams(r === -1 ? "" : n.slice(r + 1));
286
+ for (let [e, n] of t) a.set(e, n);
287
+ return `${i}?${a.toString()}`;
288
+ }
289
+ function ke(e, t) {
290
+ return e.mode === "mud" ? Oe(g(e, t), De(e)) : e.url ?? "";
291
+ }
292
+ function g(e, t) {
293
+ return (e.proxyUrl?.trim() || t || l().proxyUrl || "wss://web-proxy.mudlet.org").replace(/\/$/, "");
294
+ }
295
+ function Ae(e) {
296
+ try {
297
+ let t = new URL(e).hostname.toLowerCase();
298
+ return !(t === new URL("wss://web-proxy.mudlet.org").hostname.toLowerCase() || t === "workers.dev" || t.endsWith(".workers.dev"));
299
+ } catch {
300
+ return !0;
301
+ }
302
+ }
303
+ function je(e) {
304
+ return e.mode === "mud" ? `${e.host ?? ""}:${e.port ?? 23}` : e.url ?? "";
305
+ }
306
+ function _(e, t, n) {
307
+ let r = e.trim().toLowerCase();
308
+ return r ? t.some((e) => e.id !== n && e.name.trim().toLowerCase() === r) : !1;
309
+ }
310
+ function Me(e) {
311
+ let t = e.trim();
312
+ if (t === "") return {
313
+ ok: !0,
314
+ port: 23
315
+ };
316
+ if (!/^\d+$/.test(t)) return {
317
+ ok: !1,
318
+ reason: "notANumber",
319
+ message: "You have to enter a number. Other characters are not permitted."
320
+ };
321
+ let n = Number(t);
322
+ return n < 1 || n > 65535 ? {
323
+ ok: !1,
324
+ reason: "outOfRange",
325
+ message: "Port number must be above zero and below 65535."
326
+ } : {
327
+ ok: !0,
328
+ port: n
329
+ };
330
+ }
331
+ var v = 253, y = 63;
332
+ function Ne(e) {
333
+ return !e.startsWith("[") && (e.match(/:/g)?.length ?? 0) >= 2;
334
+ }
335
+ function Pe(e) {
336
+ if (/\s/.test(e)) return null;
337
+ let t = Ne(e) ? `[${e}]` : e, n;
338
+ try {
339
+ n = new URL(`http://${t}`);
340
+ } catch {
341
+ return null;
342
+ }
343
+ return n.pathname !== "/" || n.search || n.hash || n.username || n.password || n.port || !n.hostname || n.hostname.includes("%") ? null : n.hostname;
344
+ }
345
+ function Fe(e) {
346
+ return e.startsWith("[") ? !0 : /^\d{1,3}(\.\d{1,3}){3}$/.test(e);
347
+ }
348
+ function Ie(e, t = !1) {
349
+ let n = e.trim();
350
+ if (n === "") return {
351
+ ok: !1,
352
+ reason: "empty",
353
+ message: "Please enter the URL or IP address of the Game server."
354
+ };
355
+ if (n.length > v) return {
356
+ ok: !1,
357
+ reason: "tooLong",
358
+ message: `A host name cannot be longer than ${v} characters.`
359
+ };
360
+ let r = Pe(n);
361
+ return r === null ? {
362
+ ok: !1,
363
+ reason: "malformed",
364
+ message: "Please enter the URL or IP address of the Game server."
365
+ } : !r.startsWith("[") && r.split(".").some((e) => e.length > y) ? {
366
+ ok: !1,
367
+ reason: "tooLong",
368
+ message: `Each part of a host name cannot be longer than ${y} characters.`
369
+ } : t && Fe(r) ? {
370
+ ok: !1,
371
+ reason: "rawIpWithTls",
372
+ message: "Secure connections need a host name — a certificate cannot identify a game server by IP address."
373
+ } : {
374
+ ok: !0,
375
+ host: n
376
+ };
377
+ }
378
+ function Le(e, t = typeof location > "u" ? "https:" : location.protocol) {
379
+ let n = e.trim();
380
+ if (n === "") return {
381
+ ok: !1,
382
+ reason: "empty",
383
+ message: "Please enter the WebSocket URL of the game server."
384
+ };
385
+ let r;
386
+ try {
387
+ r = new URL(n);
388
+ } catch {
389
+ return {
390
+ ok: !1,
391
+ reason: "malformed",
392
+ message: "That is not a URL. A WebSocket address looks like wss://mud.example.com:4000."
393
+ };
394
+ }
395
+ return r.protocol !== "ws:" && r.protocol !== "wss:" ? {
396
+ ok: !1,
397
+ reason: "wrongScheme",
398
+ message: `A WebSocket URL has to start with wss:// or ws://, not ${r.protocol}`
399
+ } : {
400
+ ok: !0,
401
+ url: n,
402
+ insecure: r.protocol === "ws:" && t === "https:"
403
+ };
404
+ }
405
+ function Re(e, t = typeof location > "u" ? "https:" : location.protocol) {
406
+ let n = e.trim();
407
+ if (n === "") return {
408
+ ok: !0,
409
+ url: "",
410
+ insecure: !1
411
+ };
412
+ if (!/^[a-z][a-z0-9+.-]*:\/\//i.test(n)) return {
413
+ ok: !1,
414
+ reason: "relative",
415
+ message: "Include the scheme — a proxy address has to start with wss:// or ws://."
416
+ };
417
+ let r;
418
+ try {
419
+ r = new URL(n);
420
+ } catch {
421
+ return {
422
+ ok: !1,
423
+ reason: "malformed",
424
+ message: "That is not a URL."
425
+ };
426
+ }
427
+ return r.protocol !== "ws:" && r.protocol !== "wss:" ? {
428
+ ok: !1,
429
+ reason: "wrongScheme",
430
+ message: `A proxy address has to start with wss:// or ws://, not ${r.protocol}`
431
+ } : {
432
+ ok: !0,
433
+ url: n,
434
+ insecure: r.protocol === "ws:" && t === "https:"
435
+ };
436
+ }
437
+ function b(e, t, n) {
438
+ let r = e.trim();
439
+ if (!_(r, t, n)) return r;
440
+ for (let e = 2;; e++) {
441
+ let i = `${r} (${e})`;
442
+ if (!_(i, t, n)) return i;
443
+ }
444
+ }
445
+ //#endregion
446
+ //#region src/storage/debouncedStorage.ts
447
+ function ze(e) {
448
+ let t = /* @__PURE__ */ new Map(), n = null, r = () => {
449
+ n !== null && (clearTimeout(n), n = null);
450
+ for (let [e, n] of t) try {
451
+ localStorage.setItem(e, JSON.stringify(n));
452
+ } catch (t) {
453
+ console.warn("[persist] write failed for", e, t);
454
+ }
455
+ t.clear();
456
+ };
457
+ return typeof window < "u" && (window.addEventListener("pagehide", r), window.addEventListener("beforeunload", r), document.addEventListener("visibilitychange", () => {
458
+ document.visibilityState === "hidden" && r();
459
+ })), {
460
+ getItem: (e) => {
461
+ let n = t.get(e);
462
+ if (n !== void 0) return n;
463
+ let r = localStorage.getItem(e);
464
+ if (r === null) return null;
465
+ try {
466
+ return JSON.parse(r);
467
+ } catch {
468
+ return null;
469
+ }
470
+ },
471
+ setItem: (i, a) => {
472
+ t.set(i, a), n === null && (n = setTimeout(() => {
473
+ n = null, r();
474
+ }, e));
475
+ },
476
+ removeItem: (e) => {
477
+ t.delete(e), localStorage.removeItem(e);
478
+ }
479
+ };
480
+ }
481
+ //#endregion
482
+ //#region src/storage/storageMigration.ts
483
+ var x = "mudlet_names_migrated", S = "mudlet_idb_names_migrated", Be = [
484
+ ["mudix_v1", "mudlet_v1"],
485
+ ["mudix_vault_v1", "mudlet_vault_v1"],
486
+ ["mudix_analytics_opt_out", "mudlet_analytics_opt_out"],
487
+ ["mudix_profile_migration_v21", "mudlet_profile_migration_v21"],
488
+ ["cmd.history", "mudlet_history"]
489
+ ], Ve = [
490
+ ["mudix_stopwatches_", "mudlet_stopwatches_"],
491
+ ["cmd.history.", "mudlet_history_"],
492
+ ["mudix.debug", "mudlet.debug"]
493
+ ], C = [
494
+ ["mudix_maps", "mudlet_maps"],
495
+ ["mudix_logs", "mudlet_logs"],
496
+ ["mudix_folder_handles", "mudlet_folder_handles"]
497
+ ], w = "mudix_vfs_", He = "mudlet_vfs_", T = 250, E = !1;
498
+ function Ue() {
499
+ if (!E && (E = !0, !(typeof localStorage > "u"))) try {
500
+ if (localStorage.getItem(x)) return;
501
+ for (let [e, t] of Be) D(e, t);
502
+ let e = [];
503
+ for (let t = 0; t < localStorage.length; t++) {
504
+ let n = localStorage.key(t);
505
+ n && e.push(n);
506
+ }
507
+ for (let t of e) for (let [e, n] of Ve) if (t.startsWith(e)) {
508
+ D(t, n + t.slice(e.length));
509
+ break;
510
+ }
511
+ localStorage.setItem(x, "1");
512
+ } catch {}
513
+ }
514
+ function D(e, t) {
515
+ let n = localStorage.getItem(e);
516
+ n !== null && (localStorage.getItem(t) === null && localStorage.setItem(t, n), localStorage.removeItem(e));
517
+ }
518
+ var O = null;
519
+ function k() {
520
+ return O ||= We().catch((e) => {
521
+ console.warn("[storage] database rename did not complete:", e);
522
+ }), O;
523
+ }
524
+ async function We() {
525
+ if (typeof indexedDB > "u" || typeof localStorage < "u" && localStorage.getItem(S)) return;
526
+ let e = await Ge(), t = !0;
527
+ for (let n of e) {
528
+ let e = n.startsWith(w) ? He + n.slice(10) : C.find(([e]) => e === n)?.[1];
529
+ if (e) try {
530
+ await qe(n, e);
531
+ } catch (e) {
532
+ console.warn(`[storage] could not rename ${n}:`, e), t = !1;
533
+ }
534
+ }
535
+ if (t && typeof localStorage < "u") try {
536
+ localStorage.setItem(S, "1");
537
+ } catch {}
538
+ }
539
+ async function Ge() {
540
+ let e = (e) => e.startsWith(w) || C.some(([t]) => t === e);
541
+ if (typeof indexedDB.databases == "function") try {
542
+ return (await indexedDB.databases()).map((e) => e.name).filter((t) => !!t && e(t));
543
+ } catch {}
544
+ let t = C.map(([e]) => e);
545
+ try {
546
+ let e = localStorage.getItem("mudlet_v1") ?? localStorage.getItem("mudix_v1"), n = e ? JSON.parse(e) : null;
547
+ for (let e of n?.state?.connections ?? []) e?.id && t.push(w + e.id);
548
+ } catch {}
549
+ let n = [];
550
+ for (let e of t) {
551
+ let t = await j(e);
552
+ t && (t.close(), n.push(e));
553
+ }
554
+ return n;
555
+ }
556
+ var A = 1e4;
557
+ function Ke(e, t, n) {
558
+ return new Promise((r) => {
559
+ let i = !1, a = (e) => {
560
+ i || (i = !0, r(e));
561
+ }, o = setTimeout(() => {
562
+ console.warn(`[storage] ${n} did not answer in ${A}ms`), a(t);
563
+ }, A);
564
+ e.then((e) => {
565
+ clearTimeout(o), a(e);
566
+ }, () => {
567
+ clearTimeout(o), a(t);
568
+ });
569
+ });
570
+ }
571
+ function j(e) {
572
+ return Ke(new Promise((t) => {
573
+ let n = !1, r;
574
+ try {
575
+ r = indexedDB.open(e);
576
+ } catch {
577
+ t(null);
578
+ return;
579
+ }
580
+ r.onupgradeneeded = () => {
581
+ n = !0;
582
+ }, r.onerror = () => t(null), r.onblocked = () => t(null), r.onsuccess = () => {
583
+ try {
584
+ let i = r.result;
585
+ if (n) {
586
+ i.close(), indexedDB.deleteDatabase(e), t(null);
587
+ return;
588
+ }
589
+ t(i);
590
+ } catch {
591
+ t(null);
592
+ }
593
+ };
594
+ }), null, `opening ${e}`);
595
+ }
596
+ async function qe(e, t) {
597
+ let n = await j(e);
598
+ if (!n) return;
599
+ let r, i;
600
+ try {
601
+ i = n.version, r = Je(n);
602
+ } finally {
603
+ n.close();
604
+ }
605
+ let a = r.map((n) => ({
606
+ ...n,
607
+ target: n.name === e ? t : n.name
608
+ }));
609
+ await tt(t);
610
+ let o = await Ye(t, i, a.map((e) => ({
611
+ ...e,
612
+ name: e.target
613
+ })));
614
+ try {
615
+ for (let t of a) await Xe(e, t.name, t.target, o);
616
+ } finally {
617
+ o.close();
618
+ }
619
+ await $e(e, t, a), await tt(e);
620
+ }
621
+ function Je(e) {
622
+ let t = Array.from(e.objectStoreNames);
623
+ if (!t.length) return [];
624
+ let n = e.transaction(t, "readonly");
625
+ return t.map((e) => {
626
+ let t = n.objectStore(e);
627
+ return {
628
+ name: e,
629
+ keyPath: t.keyPath,
630
+ autoIncrement: t.autoIncrement,
631
+ indexes: Array.from(t.indexNames).map((e) => {
632
+ let n = t.index(e);
633
+ return {
634
+ name: n.name,
635
+ keyPath: n.keyPath,
636
+ unique: n.unique,
637
+ multiEntry: n.multiEntry
638
+ };
639
+ })
640
+ };
641
+ });
642
+ }
643
+ function Ye(e, t, n) {
644
+ return new Promise((r, i) => {
645
+ let a = indexedDB.open(e, t);
646
+ a.onupgradeneeded = () => {
647
+ let e = a.result;
648
+ for (let t of n) {
649
+ let n = e.createObjectStore(t.name, {
650
+ keyPath: t.keyPath,
651
+ autoIncrement: t.autoIncrement
652
+ });
653
+ for (let e of t.indexes) n.createIndex(e.name, e.keyPath, {
654
+ unique: e.unique,
655
+ multiEntry: e.multiEntry
656
+ });
657
+ }
658
+ }, a.onsuccess = () => r(a.result), a.onerror = () => i(a.error), a.onblocked = () => i(/* @__PURE__ */ Error(`another tab is holding ${e} open`));
659
+ });
660
+ }
661
+ async function Xe(e, t, n, r) {
662
+ let i = await j(e);
663
+ if (!i) return;
664
+ let a;
665
+ try {
666
+ a = await M(i.transaction(t, "readonly").objectStore(t).getAllKeys());
667
+ } finally {
668
+ i.close();
669
+ }
670
+ for (let i = 0; i < a.length; i += T) {
671
+ let o = a.slice(i, i + T);
672
+ await Qe(r, n, o, await Ze(e, t, o));
673
+ }
674
+ }
675
+ async function Ze(e, t, n) {
676
+ let r = await j(e);
677
+ if (!r) return [];
678
+ try {
679
+ let e = r.transaction(t, "readonly").objectStore(t);
680
+ return await Promise.all(n.map((t) => M(e.get(t))));
681
+ } finally {
682
+ r.close();
683
+ }
684
+ }
685
+ function Qe(e, t, n, r) {
686
+ return new Promise((i, a) => {
687
+ let o = e.transaction(t, "readwrite"), s = o.objectStore(t);
688
+ for (let e = 0; e < r.length; e++) r[e] !== void 0 && (s.keyPath === null ? s.put(r[e], n[e]) : s.put(r[e]));
689
+ o.oncomplete = () => i(), o.onerror = () => a(o.error), o.onabort = () => a(o.error ?? /* @__PURE__ */ Error("write aborted"));
690
+ });
691
+ }
692
+ async function $e(e, t, n) {
693
+ let r = await et(e, n.map((e) => e.name)), i = await et(t, n.map((e) => e.target));
694
+ for (let a of n) if ((i[a.target] ?? -1) < (r[a.name] ?? 0)) throw Error(`${t}/${a.target} has ${i[a.target]} of ${r[a.name]} records; keeping ${e}`);
695
+ }
696
+ async function et(e, t) {
697
+ let n = await j(e);
698
+ if (!n) return {};
699
+ try {
700
+ let e = {};
701
+ for (let r of t) {
702
+ if (!n.objectStoreNames.contains(r)) {
703
+ e[r] = 0;
704
+ continue;
705
+ }
706
+ e[r] = await M(n.transaction(r, "readonly").objectStore(r).count());
707
+ }
708
+ return e;
709
+ } finally {
710
+ n.close();
711
+ }
712
+ }
713
+ function tt(e) {
714
+ return Ke(new Promise((t) => {
715
+ let n;
716
+ try {
717
+ n = indexedDB.deleteDatabase(e);
718
+ } catch {
719
+ t();
720
+ return;
721
+ }
722
+ n.onsuccess = () => t(), n.onerror = () => t(), n.onblocked = () => t();
723
+ }), void 0, `deleting ${e}`);
724
+ }
725
+ function M(e) {
726
+ return new Promise((t, n) => {
727
+ e.onsuccess = () => t(e.result), e.onerror = () => n(e.error);
728
+ });
729
+ }
730
+ //#endregion
731
+ //#region src/storage/logStorage.ts
732
+ var nt = "mudlet_logs", N = "sessions", P = "entries", rt = 1;
733
+ async function F() {
734
+ return await k(), new Promise((e, t) => {
735
+ let n = indexedDB.open(nt, rt);
736
+ n.onupgradeneeded = () => {
737
+ let e = n.result;
738
+ e.objectStoreNames.contains(N) || e.createObjectStore(N, { keyPath: "id" }).createIndex("connectionId", "connectionId", { unique: !1 }), e.objectStoreNames.contains(P) || e.createObjectStore(P, {
739
+ keyPath: "id",
740
+ autoIncrement: !0
741
+ }).createIndex("sessionId", "sessionId", { unique: !1 });
742
+ }, n.onsuccess = () => e(n.result), n.onerror = () => t(n.error);
743
+ });
744
+ }
745
+ async function it(e) {
746
+ let t = await F();
747
+ return new Promise((n, r) => {
748
+ let i = t.transaction(N, "readwrite");
749
+ i.objectStore(N).put(e), i.oncomplete = () => n(), i.onerror = () => r(i.error);
750
+ });
751
+ }
752
+ async function at(e, t) {
753
+ let n = await F();
754
+ return new Promise((r, i) => {
755
+ let a = n.transaction(N, "readwrite"), o = a.objectStore(N), s = o.get(e);
756
+ s.onsuccess = () => {
757
+ let n = s.result;
758
+ n && o.put({
759
+ ...n,
760
+ ...t,
761
+ id: e
762
+ });
763
+ }, a.oncomplete = () => r(), a.onerror = () => i(a.error);
764
+ });
765
+ }
766
+ async function ot(e) {
767
+ if (e.length === 0) return;
768
+ let t = await F();
769
+ return new Promise((n, r) => {
770
+ let i = t.transaction(P, "readwrite"), a = i.objectStore(P);
771
+ for (let t of e) a.add(t);
772
+ i.oncomplete = () => n(), i.onerror = () => r(i.error);
773
+ });
774
+ }
775
+ async function st(e) {
776
+ let t = await F();
777
+ return new Promise((n, r) => {
778
+ let i = t.transaction(N, "readonly").objectStore(N), a = e ? i.index("connectionId").getAll(IDBKeyRange.only(e)) : i.getAll();
779
+ a.onsuccess = () => {
780
+ let e = a.result ?? [];
781
+ e.sort((e, t) => t.startedAt - e.startedAt), n(e);
782
+ }, a.onerror = () => r(a.error);
783
+ });
784
+ }
785
+ async function ct(e) {
786
+ let t = await F();
787
+ return new Promise((n, r) => {
788
+ let i = t.transaction(P, "readonly").objectStore(P).index("sessionId").getAll(IDBKeyRange.only(e));
789
+ i.onsuccess = () => {
790
+ let e = i.result ?? [];
791
+ e.sort((e, t) => e.seq - t.seq), n(e);
792
+ }, i.onerror = () => r(i.error);
793
+ });
794
+ }
795
+ async function lt(e) {
796
+ let t = await F();
797
+ return new Promise((n, r) => {
798
+ let i = t.transaction([N, P], "readwrite");
799
+ i.objectStore(N).delete(e);
800
+ let a = i.objectStore(P).index("sessionId").openKeyCursor(IDBKeyRange.only(e));
801
+ a.onsuccess = () => {
802
+ let e = a.result;
803
+ e && (i.objectStore(P).delete(e.primaryKey), e.continue());
804
+ }, i.oncomplete = () => n(), i.onerror = () => r(i.error);
805
+ });
806
+ }
807
+ async function ut(e) {
808
+ for (let t of e) await lt(t);
809
+ }
810
+ async function dt(e) {
811
+ await ut((await st(e)).map((e) => e.id));
812
+ }
813
+ async function ft() {
814
+ let e = await F();
815
+ return new Promise((t, n) => {
816
+ let r = e.transaction([N, P], "readwrite");
817
+ r.objectStore(N).clear(), r.objectStore(P).clear(), r.oncomplete = () => t(), r.onerror = () => n(r.error);
818
+ });
819
+ }
820
+ //#endregion
821
+ //#region src/storage/mapStorage.ts
822
+ var pt = "mudlet_maps", I = "maps";
823
+ async function L() {
824
+ return await k(), new Promise((e, t) => {
825
+ let n = indexedDB.open(pt, 1);
826
+ n.onupgradeneeded = () => n.result.createObjectStore(I), n.onsuccess = () => e(n.result), n.onerror = () => t(n.error);
827
+ });
828
+ }
829
+ async function mt(e, t) {
830
+ let n = await L();
831
+ return new Promise((r, i) => {
832
+ let a = n.transaction(I, "readwrite");
833
+ a.objectStore(I).put(t, e), a.oncomplete = () => r(), a.onerror = () => i(a.error);
834
+ });
835
+ }
836
+ async function ht(e) {
837
+ let t = await L();
838
+ return new Promise((n, r) => {
839
+ let i = t.transaction(I, "readwrite");
840
+ i.objectStore(I).delete(e), i.oncomplete = () => n(), i.onerror = () => r(i.error);
841
+ });
842
+ }
843
+ async function gt(e) {
844
+ let t = await L();
845
+ return new Promise((n, r) => {
846
+ let i = t.transaction(I, "readonly").objectStore(I).get(e);
847
+ i.onsuccess = () => n(i.result ?? null), i.onerror = () => r(i.error);
848
+ });
849
+ }
850
+ //#endregion
851
+ //#region src/scripting/vfs/folderHandleStore.ts
852
+ var _t = "mudlet_folder_handles", R = "handles";
853
+ async function z() {
854
+ return await k(), new Promise((e, t) => {
855
+ let n = indexedDB.open(_t, 1);
856
+ n.onupgradeneeded = () => n.result.createObjectStore(R), n.onsuccess = () => e(n.result), n.onerror = () => t(n.error);
857
+ });
858
+ }
859
+ function vt() {
860
+ return typeof window < "u" && typeof window.showDirectoryPicker == "function";
861
+ }
862
+ async function yt(e, t) {
863
+ let n = await z();
864
+ return new Promise((r, i) => {
865
+ let a = n.transaction(R, "readwrite");
866
+ a.objectStore(R).put(t, e), a.oncomplete = () => r(), a.onerror = () => i(a.error);
867
+ });
868
+ }
869
+ async function bt(e) {
870
+ let t = await z();
871
+ return new Promise((n, r) => {
872
+ let i = t.transaction(R, "readonly").objectStore(R).get(e);
873
+ i.onsuccess = () => n(i.result ?? null), i.onerror = () => r(i.error);
874
+ });
875
+ }
876
+ async function xt(e) {
877
+ let t = await z();
878
+ return new Promise((n, r) => {
879
+ let i = t.transaction(R, "readwrite");
880
+ i.objectStore(R).delete(e), i.oncomplete = () => n(), i.onerror = () => r(i.error);
881
+ });
882
+ }
883
+ async function St(e) {
884
+ let t = e;
885
+ if (typeof t.queryPermission != "function") return "unsupported";
886
+ try {
887
+ return await t.queryPermission({ mode: "readwrite" });
888
+ } catch {
889
+ return "denied";
890
+ }
891
+ }
892
+ async function Ct(e) {
893
+ let t = e;
894
+ if (typeof t.requestPermission != "function") return "unsupported";
895
+ try {
896
+ return await t.requestPermission({ mode: "readwrite" });
897
+ } catch {
898
+ return "denied";
899
+ }
900
+ }
901
+ //#endregion
902
+ //#region src/ui/commandHistory.ts
903
+ var wt = "mudlet_history";
904
+ function Tt(e) {
905
+ return e ? `${wt}_${e}` : wt;
906
+ }
907
+ function Et(e) {
908
+ try {
909
+ let t = localStorage.getItem(e);
910
+ if (!t) return [];
911
+ let n = JSON.parse(t);
912
+ return Array.isArray(n) ? n.filter((e) => typeof e == "string").slice(0, 500) : [];
913
+ } catch {
914
+ return [];
915
+ }
916
+ }
917
+ function Dt(e, t, n = 500) {
918
+ try {
919
+ let r = n >= 0 && e.length > n ? e.slice(0, n) : e;
920
+ localStorage.setItem(t, JSON.stringify(r));
921
+ } catch {}
922
+ }
923
+ function Ot(e, t) {
924
+ if (!t) return e;
925
+ let n = t.toLowerCase(), r = e.filter((e) => e.toLowerCase() !== n);
926
+ return r.unshift(t), r.length > 500 && (r.length = 500), r;
927
+ }
928
+ var kt = {
929
+ "prefix-start": 0,
930
+ "prefix-mid": 1,
931
+ subseq: 2
932
+ };
933
+ function At(e, t, n = 10) {
934
+ if (!e) return [];
935
+ let r = e.toLowerCase(), i = [];
936
+ for (let n = 0; n < t.length; n++) {
937
+ let a = t[n], o = a.toLowerCase();
938
+ if (o === r) continue;
939
+ if (o.startsWith(r)) {
940
+ i.push({
941
+ item: a,
942
+ mruIndex: n,
943
+ kind: "prefix-start",
944
+ anchor: 0,
945
+ ranges: [[0, e.length]]
946
+ });
947
+ continue;
948
+ }
949
+ let s = o.indexOf(r);
950
+ if (s > 0) {
951
+ i.push({
952
+ item: a,
953
+ mruIndex: n,
954
+ kind: "prefix-mid",
955
+ anchor: s,
956
+ ranges: [[s, s + e.length]]
957
+ });
958
+ continue;
959
+ }
960
+ let c = jt(o, r);
961
+ c && i.push({
962
+ item: a,
963
+ mruIndex: n,
964
+ kind: "subseq",
965
+ anchor: c[0][0],
966
+ ranges: c
967
+ });
968
+ }
969
+ return i.sort((e, t) => {
970
+ let n = kt[e.kind] - kt[t.kind];
971
+ return n === 0 ? e.mruIndex - t.mruIndex : n;
972
+ }), i.length > n && (i.length = n), i;
973
+ }
974
+ function jt(e, t) {
975
+ if (t.length === 0) return [];
976
+ let n = [], r = 0;
977
+ for (let i = 0; i < e.length && r < t.length; i++) if (e[i] === t[r]) {
978
+ let e = n[n.length - 1];
979
+ e && e[1] === i ? e[1] = i + 1 : n.push([i, i + 1]), r++;
980
+ }
981
+ return r === t.length ? n : null;
982
+ }
983
+ //#endregion
984
+ //#region src/scripting/StopwatchManager.ts
985
+ function B(e) {
986
+ return `mudlet_stopwatches_${e}`;
987
+ }
988
+ function Mt(e) {
989
+ if (typeof localStorage > "u") return;
990
+ let t = B(e);
991
+ return {
992
+ load: () => localStorage.getItem(t),
993
+ save: (e) => localStorage.setItem(t, e)
994
+ };
995
+ }
996
+ var V = (e) => ({ refused: e }), H = (e) => typeof e == "object" && !!e && typeof e.refused == "string", Nt = 864e5, Pt = 36e5, Ft = 6e4, U = 1e3, W = 0x38d7ea4c68000, G = (e) => Math.min(W, Math.max(-0x38d7ea4c68000, e));
997
+ function It(e) {
998
+ let t = e / 1e3, n = Math.abs(Math.round(e)), r = Math.floor(n / Nt);
999
+ n -= r * Nt;
1000
+ let i = Math.floor(n / Pt);
1001
+ n -= i * Pt;
1002
+ let a = Math.floor(n / Ft);
1003
+ n -= a * Ft;
1004
+ let o = Math.floor(n / U);
1005
+ return n -= o * U, {
1006
+ negative: e < 0,
1007
+ days: r,
1008
+ hours: i,
1009
+ minutes: a,
1010
+ seconds: o,
1011
+ milliSeconds: n,
1012
+ decimalSeconds: t
1013
+ };
1014
+ }
1015
+ var Lt = class {
1016
+ storage;
1017
+ watches = /* @__PURE__ */ new Map();
1018
+ constructor(e) {
1019
+ this.storage = e, this.restore();
1020
+ }
1021
+ now() {
1022
+ return Date.now();
1023
+ }
1024
+ elapsedMs(e) {
1025
+ return e.initialised ? G(e.accumulatedMs + (e.running ? this.now() - e.startEpochMs : 0)) : 0;
1026
+ }
1027
+ ordered() {
1028
+ return [...this.watches.values()].sort((e, t) => e.id - t.id);
1029
+ }
1030
+ findByName(e) {
1031
+ return this.ordered().find((t) => t.name === e);
1032
+ }
1033
+ lookup(e, t) {
1034
+ return typeof e == "number" ? this.watches.get(e) ?? V(`stopwatch with ${t} ${e} not found`) : this.findByName(e) ?? V(e === "" ? "no unnamed stopwatches found" : `stopwatch with name '${e}' not found`);
1035
+ }
1036
+ missing(e) {
1037
+ let t = this.lookup(e, "ID");
1038
+ return H(t) ? t : null;
1039
+ }
1040
+ describe(e, t) {
1041
+ return typeof e == "number" ? `stopwatch with id ${t.id}` : `stopwatch with name '${e}' (id:${t.id})`;
1042
+ }
1043
+ restore() {
1044
+ if (!this.storage) return;
1045
+ let e;
1046
+ try {
1047
+ e = this.storage.load();
1048
+ } catch {
1049
+ return;
1050
+ }
1051
+ if (!e) return;
1052
+ let t;
1053
+ try {
1054
+ t = JSON.parse(e);
1055
+ } catch {
1056
+ return;
1057
+ }
1058
+ if (Array.isArray(t)) for (let e of t) {
1059
+ if (!e || typeof e.id != "number") continue;
1060
+ let t = !!e.running, n = Number(e.accumulatedMs) || 0;
1061
+ this.watches.set(e.id, {
1062
+ id: e.id,
1063
+ name: typeof e.name == "string" ? e.name : "",
1064
+ initialised: typeof e.initialised == "boolean" ? e.initialised : t || n !== 0,
1065
+ running: t,
1066
+ accumulatedMs: n,
1067
+ startEpochMs: Number(e.startEpochMs) || 0,
1068
+ persistent: !0
1069
+ });
1070
+ }
1071
+ }
1072
+ savedForProfile(e = Date.now()) {
1073
+ let t = [];
1074
+ for (let n of [...this.watches.values()].sort((e, t) => e.id - t.id)) {
1075
+ if (!n.persistent) continue;
1076
+ let r = this.elapsedMs(n);
1077
+ t.push(n.running ? {
1078
+ id: n.id,
1079
+ name: n.name,
1080
+ running: !0,
1081
+ effectiveStartEpochMs: e - r
1082
+ } : {
1083
+ id: n.id,
1084
+ name: n.name,
1085
+ running: !1,
1086
+ elapsedMs: r
1087
+ });
1088
+ }
1089
+ return t;
1090
+ }
1091
+ persist() {
1092
+ if (!this.storage) return;
1093
+ let e = [];
1094
+ for (let t of this.watches.values()) t.persistent && e.push({
1095
+ id: t.id,
1096
+ name: t.name,
1097
+ initialised: t.initialised,
1098
+ running: t.running,
1099
+ accumulatedMs: t.accumulatedMs,
1100
+ startEpochMs: t.startEpochMs
1101
+ });
1102
+ try {
1103
+ this.storage.save(JSON.stringify(e));
1104
+ } catch {}
1105
+ }
1106
+ touched(e) {
1107
+ e.persistent && this.persist();
1108
+ }
1109
+ startWatch(e) {
1110
+ return e.initialised ? e.running ? !1 : (e.startEpochMs = this.now(), e.running = !0, !0) : (e.initialised = !0, e.accumulatedMs = 0, e.startEpochMs = this.now(), e.running = !0, !0);
1111
+ }
1112
+ stopWatch(e) {
1113
+ return !e.initialised || !e.running ? !1 : (e.accumulatedMs = this.elapsedMs(e), e.running = !1, !0);
1114
+ }
1115
+ resetWatch(e) {
1116
+ return e.initialised ? (e.accumulatedMs = 0, e.running ? e.startEpochMs = this.now() : e.initialised = !1, !0) : !1;
1117
+ }
1118
+ create(e, t) {
1119
+ if (e) {
1120
+ let t = this.findByName(e);
1121
+ if (t) return V(`stopwatch with id ${t.id} called '${e}' already exists`);
1122
+ }
1123
+ let n = 1;
1124
+ for (; this.watches.has(n);) n++;
1125
+ let r = {
1126
+ id: n,
1127
+ name: e || "",
1128
+ initialised: !1,
1129
+ running: !1,
1130
+ accumulatedMs: 0,
1131
+ startEpochMs: 0,
1132
+ persistent: !1
1133
+ };
1134
+ return this.watches.set(n, r), t && this.startWatch(r), n;
1135
+ }
1136
+ start(e, t) {
1137
+ let n = this.lookup(e, "id");
1138
+ if (H(n)) return n;
1139
+ if (t) this.stopWatch(n), this.resetWatch(n), this.startWatch(n);
1140
+ else if (!this.startWatch(n)) return V(`${this.describe(e, n)} was already running`);
1141
+ return this.touched(n), !0;
1142
+ }
1143
+ stop(e) {
1144
+ let t = this.lookup(e, "id");
1145
+ return H(t) ? t : this.stopWatch(t) ? (this.touched(t), this.elapsedMs(t) / 1e3) : V(`${this.describe(e, t)} was already stopped`);
1146
+ }
1147
+ getTime(e) {
1148
+ let t = this.lookup(e, "ID");
1149
+ return H(t) ? t : this.elapsedMs(t) / 1e3;
1150
+ }
1151
+ getBrokenDownTime(e) {
1152
+ let t = this.lookup(e, "id");
1153
+ if (H(t)) return t;
1154
+ let { negative: n, days: r, hours: i, minutes: a, seconds: o, milliSeconds: s } = It(this.elapsedMs(t));
1155
+ return {
1156
+ negative: n,
1157
+ days: r,
1158
+ hours: i,
1159
+ minutes: a,
1160
+ seconds: o,
1161
+ milliSeconds: s
1162
+ };
1163
+ }
1164
+ setName(e, t) {
1165
+ if (typeof e == "number" && t) {
1166
+ let n = this.findByName(t);
1167
+ if (n) return n.id === e || V(`the name '${t}' is already in use for another stopwatch (id:${n.id})`);
1168
+ }
1169
+ let n = this.lookup(e, "id");
1170
+ if (H(n)) return n;
1171
+ if (t) {
1172
+ let e = this.ordered().find((e) => e !== n && e.name === t);
1173
+ if (e) return V(`the name '${t}' is already in use for another stopwatch (id:${e.id})`);
1174
+ }
1175
+ return n.name === t ? !0 : (n.name = t, this.touched(n), !0);
1176
+ }
1177
+ reset(e) {
1178
+ let t = this.lookup(e, "id");
1179
+ return H(t) ? t : this.resetWatch(t) ? (this.touched(t), !0) : V(e === "" ? `the first unnamed stopwatch (id:${t.id}) was already reset` : `${this.describe(e, t)} was already reset`);
1180
+ }
1181
+ adjust(e, t) {
1182
+ let n = this.lookup(e, "ID");
1183
+ if (H(n)) return n;
1184
+ let r = Math.round(t * 1e3);
1185
+ if (!(r >= -0x38d7ea4c68000 && r <= W)) return V(`modification in seconds must be a finite number from -1000000000000 to ${W / U}, got ${t}`);
1186
+ if (n.initialised = !0, n.running) {
1187
+ let e = this.now();
1188
+ n.accumulatedMs = G(this.elapsedMs(n) + r), n.startEpochMs = e;
1189
+ } else n.accumulatedMs = G(n.accumulatedMs + r);
1190
+ return this.touched(n), !0;
1191
+ }
1192
+ delete(e) {
1193
+ let t = this.lookup(e, "ID");
1194
+ return H(t) ? t : (this.watches.delete(t.id), t.persistent && this.persist(), !0);
1195
+ }
1196
+ removeNonPersistent() {
1197
+ for (let e of [...this.watches.values()]) e.persistent || this.watches.delete(e.id);
1198
+ }
1199
+ setPersistence(e, t) {
1200
+ let n = this.lookup(e, "ID");
1201
+ return H(n) ? n : (n.persistent = t, this.persist(), !0);
1202
+ }
1203
+ getAll() {
1204
+ let e = {};
1205
+ for (let t of this.watches.values()) e[String(t.id)] = {
1206
+ name: t.name,
1207
+ isRunning: t.running,
1208
+ isPersistent: t.persistent,
1209
+ elapsedTime: It(this.elapsedMs(t))
1210
+ };
1211
+ return e;
1212
+ }
1213
+ }, K = "mudlet_profile_migration_v21";
1214
+ function Rt(e) {
1215
+ return `mudlet_vfs_${e}`;
1216
+ }
1217
+ function zt(e) {
1218
+ return typeof indexedDB > "u" ? Promise.resolve() : new Promise((t) => {
1219
+ let n = indexedDB.deleteDatabase(Rt(e));
1220
+ n.onsuccess = () => t(), n.onerror = () => t(), n.onblocked = () => t();
1221
+ });
1222
+ }
1223
+ function Bt(e) {
1224
+ try {
1225
+ let t = localStorage.getItem(K);
1226
+ if (!t) return;
1227
+ let n = JSON.parse(t);
1228
+ if (!(e in n)) return;
1229
+ delete n[e], Object.keys(n).length === 0 ? localStorage.removeItem(K) : localStorage.setItem(K, JSON.stringify(n));
1230
+ } catch {}
1231
+ }
1232
+ async function Vt(e) {
1233
+ Bt(e);
1234
+ try {
1235
+ localStorage.removeItem(Tt(e));
1236
+ } catch {}
1237
+ try {
1238
+ localStorage.removeItem(B(e));
1239
+ } catch {}
1240
+ await Promise.allSettled([
1241
+ zt(e),
1242
+ ht(e),
1243
+ xt(e),
1244
+ dt(e)
1245
+ ]);
1246
+ }
1247
+ //#endregion
1248
+ //#region src/vault/vaultAccess.ts
1249
+ var Ht = Object.freeze({
1250
+ exists: !1,
1251
+ locked: !1,
1252
+ entryIds: Object.freeze([]),
1253
+ signInIds: Object.freeze([]),
1254
+ unlockers: Object.freeze([]),
1255
+ rememberedUntil: null
1256
+ }), q = null, Ut = null, Wt = /* @__PURE__ */ new Set();
1257
+ function Gt() {
1258
+ return q;
1259
+ }
1260
+ function Kt() {
1261
+ return Ut;
1262
+ }
1263
+ function qt(e) {
1264
+ return Wt.add(e), () => {
1265
+ Wt.delete(e);
1266
+ };
1267
+ }
1268
+ function Jt() {
1269
+ return Ht;
1270
+ }
1271
+ function Yt(e) {
1272
+ return q?.getPassword(e);
1273
+ }
1274
+ function Xt(e) {
1275
+ return !!q?.locked && (q.hasEntry(e) || q.hasSignIn(e));
1276
+ }
1277
+ function Zt(e) {
1278
+ return q?.getSignIn(e);
1279
+ }
1280
+ function Qt() {
1281
+ return !1;
1282
+ }
1283
+ function $t() {
1284
+ return !!q?.locked;
1285
+ }
1286
+ function en(e) {
1287
+ return !!q?.hasSignIn(e);
1288
+ }
1289
+ function tn() {
1290
+ return !!q?.canStore;
1291
+ }
1292
+ async function nn(e, t) {
1293
+ return t === null;
1294
+ }
1295
+ //#endregion
1296
+ //#region src/storage/appStore.ts
1297
+ function J(e, t) {
1298
+ let n = [], r = [e];
1299
+ for (; r.length > 0;) {
1300
+ let e = r.shift();
1301
+ for (let i of t) i.parentId === e && (n.push(i.id), r.push(i.id));
1302
+ }
1303
+ return n;
1304
+ }
1305
+ function Y(e, t) {
1306
+ let n = new Set(e.map((e) => e.id)), r = t.filter((e) => !n.has(e.node.id));
1307
+ if (r.length === 0) return e;
1308
+ let i = [...e];
1309
+ for (let { index: e, node: t } of [...r].sort((e, t) => e.index - t.index)) i.splice(Math.max(0, Math.min(e, i.length)), 0, t);
1310
+ return i;
1311
+ }
1312
+ function X(e, t, n, r) {
1313
+ let i = /* @__PURE__ */ new Set([t, ...J(t, e)]), a = e.filter((e) => i.has(e.id)), o = e.filter((e) => !i.has(e.id)), s = a.map((e) => e.id === t ? {
1314
+ ...e,
1315
+ parentId: n
1316
+ } : e);
1317
+ if (r === null) return [...o, ...s];
1318
+ let c = o.findIndex((e) => e.id === r);
1319
+ return c === -1 ? [...o, ...s] : [
1320
+ ...o.slice(0, c),
1321
+ ...s,
1322
+ ...o.slice(c)
1323
+ ];
1324
+ }
1325
+ Ue();
1326
+ var Z = "mudlet_v1", rn = [
1327
+ "createdAt",
1328
+ "mudletLinked",
1329
+ "mudletImported",
1330
+ "lastConnectedAt"
1331
+ ];
1332
+ function an(e, t) {
1333
+ let n = {};
1334
+ for (let r of rn) {
1335
+ let i = t[r] ?? e[r];
1336
+ i !== void 0 && Object.assign(n, { [r]: i });
1337
+ }
1338
+ return n;
1339
+ }
1340
+ var Q = n()(r((e) => ({
1341
+ ...h,
1342
+ addConnection: (t) => {
1343
+ let n = crypto.randomUUID(), r = t.createdAt ?? (/* @__PURE__ */ new Date()).toISOString();
1344
+ return e((e) => ({ connections: [...e.connections, {
1345
+ ...t,
1346
+ name: b(t.name, e.connections),
1347
+ createdAt: r,
1348
+ id: n
1349
+ }] })), n;
1350
+ },
1351
+ updateConnection: (t, n) => e((e) => ({ connections: e.connections.map((r) => r.id === t ? {
1352
+ ...n,
1353
+ ...an(r, n),
1354
+ name: b(n.name, e.connections, t),
1355
+ id: t
1356
+ } : r) })),
1357
+ reorderConnections: (t) => e((e) => {
1358
+ let n = new Map(e.connections.map((e) => [e.id, e])), r = /* @__PURE__ */ new Set(), i = [];
1359
+ for (let e of t) {
1360
+ let t = n.get(e);
1361
+ t && !r.has(e) && (i.push(t), r.add(e));
1362
+ }
1363
+ for (let t of e.connections) r.has(t.id) || i.push(t);
1364
+ return { connections: i };
1365
+ }),
1366
+ patchConnection: (t, n) => e((e) => ({ connections: e.connections.map((r) => {
1367
+ if (r.id !== t) return r;
1368
+ let i = {
1369
+ ...r,
1370
+ ...n
1371
+ };
1372
+ n.name !== void 0 && (i.name = b(n.name, e.connections, t));
1373
+ for (let e of Object.keys(n)) n[e] === void 0 && delete i[e];
1374
+ return i;
1375
+ }) })),
1376
+ removeConnection: (t) => e((e) => {
1377
+ Vt(t).catch(() => {}), Gt()?.forgetConnection(t).catch(() => {});
1378
+ let { [t]: n, ...r } = e.connectionWindowHints, { [t]: i, ...a } = e.connectionDockExtents, { [t]: o, ...s } = e.connectionScripts, { [t]: c, ...l } = e.connectionAliases, { [t]: ee, ...te } = e.connectionTriggers, { [t]: ne, ...u } = e.connectionTimers, { [t]: re, ...d } = e.connectionKeybindings, { [t]: ie, ...f } = e.connectionButtons, { [t]: ae, ...oe } = e.connectionScriptEditorBounds, { [t]: se, ...ce } = e.connectionModalBounds, { [t]: le, ...ue } = e.connectionProfile, { [t]: de, ...fe } = e.connectionLayoutSnapshots, { [t]: pe, ...p } = e.connectionVariables;
1379
+ return {
1380
+ connections: e.connections.filter((e) => e.id !== t),
1381
+ connectionProfile: ue,
1382
+ connectionWindowHints: r,
1383
+ connectionDockExtents: a,
1384
+ connectionScripts: s,
1385
+ connectionAliases: l,
1386
+ connectionTriggers: te,
1387
+ connectionTimers: u,
1388
+ connectionKeybindings: d,
1389
+ connectionButtons: f,
1390
+ connectionScriptEditorBounds: oe,
1391
+ connectionModalBounds: ce,
1392
+ connectionPackages: (() => {
1393
+ let { [t]: n, ...r } = e.connectionPackages;
1394
+ return r;
1395
+ })(),
1396
+ connectionLayoutSnapshots: fe,
1397
+ connectionVariables: p
1398
+ };
1399
+ }),
1400
+ patchClient: (t) => e((e) => ({ client: {
1401
+ ...e.client,
1402
+ ...t
1403
+ } })),
1404
+ patchConnectionProfile: (t, n) => e((e) => {
1405
+ let r = {
1406
+ ...e.connectionProfile[t] ?? {},
1407
+ ...n
1408
+ };
1409
+ for (let e of Object.keys(n)) n[e] === void 0 && delete r[e];
1410
+ return { connectionProfile: {
1411
+ ...e.connectionProfile,
1412
+ [t]: r
1413
+ } };
1414
+ }),
1415
+ saveWindowHint: (t, n, r) => e((e) => ({ connectionWindowHints: {
1416
+ ...e.connectionWindowHints,
1417
+ [t]: {
1418
+ ...e.connectionWindowHints[t] ?? {},
1419
+ [n]: r
1420
+ }
1421
+ } })),
1422
+ clearWindowHints: (t) => e((e) => {
1423
+ let { [t]: n, ...r } = e.connectionWindowHints;
1424
+ return { connectionWindowHints: r };
1425
+ }),
1426
+ saveDockExtents: (t, n) => e((e) => ({ connectionDockExtents: {
1427
+ ...e.connectionDockExtents,
1428
+ [t]: n
1429
+ } })),
1430
+ saveLayoutSnapshot: (t, n) => e((e) => ({ connectionLayoutSnapshots: {
1431
+ ...e.connectionLayoutSnapshots,
1432
+ [t]: n
1433
+ } })),
1434
+ addScript: (t, n) => {
1435
+ let r = crypto.randomUUID();
1436
+ return e((e) => ({ connectionScripts: {
1437
+ ...e.connectionScripts,
1438
+ [t]: [...e.connectionScripts[t] ?? [], {
1439
+ ...n,
1440
+ id: r
1441
+ }]
1442
+ } })), r;
1443
+ },
1444
+ updateScript: (t, n, r) => e((e) => ({ connectionScripts: {
1445
+ ...e.connectionScripts,
1446
+ [t]: (e.connectionScripts[t] ?? []).map((e) => e.id === n ? {
1447
+ ...e,
1448
+ ...r
1449
+ } : e)
1450
+ } })),
1451
+ removeScript: (t, n) => e((e) => {
1452
+ let r = e.connectionScripts[t] ?? [], i = /* @__PURE__ */ new Set([n, ...J(n, r)]);
1453
+ return { connectionScripts: {
1454
+ ...e.connectionScripts,
1455
+ [t]: r.filter((e) => !i.has(e.id))
1456
+ } };
1457
+ }),
1458
+ addAlias: (t, n) => {
1459
+ let r = crypto.randomUUID();
1460
+ return e((e) => ({ connectionAliases: {
1461
+ ...e.connectionAliases,
1462
+ [t]: [...e.connectionAliases[t] ?? [], {
1463
+ ...n,
1464
+ id: r
1465
+ }]
1466
+ } })), r;
1467
+ },
1468
+ updateAlias: (t, n, r) => e((e) => ({ connectionAliases: {
1469
+ ...e.connectionAliases,
1470
+ [t]: (e.connectionAliases[t] ?? []).map((e) => e.id === n ? {
1471
+ ...e,
1472
+ ...r
1473
+ } : e)
1474
+ } })),
1475
+ updateAliases: (t, n) => e((e) => {
1476
+ if (n.length === 0) return {};
1477
+ let r = new Map(n.map((e) => [e.id, e.patch]));
1478
+ return { connectionAliases: {
1479
+ ...e.connectionAliases,
1480
+ [t]: (e.connectionAliases[t] ?? []).map((e) => r.has(e.id) ? {
1481
+ ...e,
1482
+ ...r.get(e.id)
1483
+ } : e)
1484
+ } };
1485
+ }),
1486
+ removeAlias: (t, n) => e((e) => {
1487
+ let r = e.connectionAliases[t] ?? [], i = /* @__PURE__ */ new Set([n, ...J(n, r)]);
1488
+ return { connectionAliases: {
1489
+ ...e.connectionAliases,
1490
+ [t]: r.filter((e) => !i.has(e.id))
1491
+ } };
1492
+ }),
1493
+ removeAliases: (t, n) => e((e) => {
1494
+ if (n.length === 0) return {};
1495
+ let r = e.connectionAliases[t] ?? [], i = /* @__PURE__ */ new Set();
1496
+ for (let e of n) {
1497
+ i.add(e);
1498
+ for (let t of J(e, r)) i.add(t);
1499
+ }
1500
+ return { connectionAliases: {
1501
+ ...e.connectionAliases,
1502
+ [t]: r.filter((e) => !i.has(e.id))
1503
+ } };
1504
+ }),
1505
+ addTrigger: (t, n) => {
1506
+ let r = crypto.randomUUID();
1507
+ return e((e) => ({ connectionTriggers: {
1508
+ ...e.connectionTriggers,
1509
+ [t]: [...e.connectionTriggers[t] ?? [], {
1510
+ ...n,
1511
+ id: r
1512
+ }]
1513
+ } })), r;
1514
+ },
1515
+ updateTrigger: (t, n, r) => e((e) => ({ connectionTriggers: {
1516
+ ...e.connectionTriggers,
1517
+ [t]: (e.connectionTriggers[t] ?? []).map((e) => e.id === n ? {
1518
+ ...e,
1519
+ ...r
1520
+ } : e)
1521
+ } })),
1522
+ updateTriggers: (t, n) => e((e) => {
1523
+ if (n.length === 0) return {};
1524
+ let r = new Map(n.map((e) => [e.id, e.patch]));
1525
+ return { connectionTriggers: {
1526
+ ...e.connectionTriggers,
1527
+ [t]: (e.connectionTriggers[t] ?? []).map((e) => r.has(e.id) ? {
1528
+ ...e,
1529
+ ...r.get(e.id)
1530
+ } : e)
1531
+ } };
1532
+ }),
1533
+ removeTrigger: (t, n) => e((e) => {
1534
+ let r = e.connectionTriggers[t] ?? [], i = /* @__PURE__ */ new Set([n, ...J(n, r)]);
1535
+ return { connectionTriggers: {
1536
+ ...e.connectionTriggers,
1537
+ [t]: r.filter((e) => !i.has(e.id))
1538
+ } };
1539
+ }),
1540
+ removeTriggers: (t, n) => e((e) => {
1541
+ if (n.length === 0) return {};
1542
+ let r = e.connectionTriggers[t] ?? [], i = /* @__PURE__ */ new Set();
1543
+ for (let e of n) {
1544
+ i.add(e);
1545
+ for (let t of J(e, r)) i.add(t);
1546
+ }
1547
+ return { connectionTriggers: {
1548
+ ...e.connectionTriggers,
1549
+ [t]: r.filter((e) => !i.has(e.id))
1550
+ } };
1551
+ }),
1552
+ addTimer: (t, n) => {
1553
+ let r = crypto.randomUUID();
1554
+ return e((e) => ({ connectionTimers: {
1555
+ ...e.connectionTimers,
1556
+ [t]: [...e.connectionTimers[t] ?? [], {
1557
+ ...n,
1558
+ id: r
1559
+ }]
1560
+ } })), r;
1561
+ },
1562
+ updateTimer: (t, n, r) => e((e) => ({ connectionTimers: {
1563
+ ...e.connectionTimers,
1564
+ [t]: (e.connectionTimers[t] ?? []).map((e) => e.id === n ? {
1565
+ ...e,
1566
+ ...r
1567
+ } : e)
1568
+ } })),
1569
+ updateTimers: (t, n) => e((e) => {
1570
+ if (n.length === 0) return {};
1571
+ let r = new Map(n.map((e) => [e.id, e.patch]));
1572
+ return { connectionTimers: {
1573
+ ...e.connectionTimers,
1574
+ [t]: (e.connectionTimers[t] ?? []).map((e) => r.has(e.id) ? {
1575
+ ...e,
1576
+ ...r.get(e.id)
1577
+ } : e)
1578
+ } };
1579
+ }),
1580
+ removeTimer: (t, n) => e((e) => {
1581
+ let r = e.connectionTimers[t] ?? [], i = /* @__PURE__ */ new Set([n, ...J(n, r)]);
1582
+ return { connectionTimers: {
1583
+ ...e.connectionTimers,
1584
+ [t]: r.filter((e) => !i.has(e.id))
1585
+ } };
1586
+ }),
1587
+ removeTimers: (t, n) => e((e) => {
1588
+ if (n.length === 0) return {};
1589
+ let r = e.connectionTimers[t] ?? [], i = /* @__PURE__ */ new Set();
1590
+ for (let e of n) {
1591
+ i.add(e);
1592
+ for (let t of J(e, r)) i.add(t);
1593
+ }
1594
+ return { connectionTimers: {
1595
+ ...e.connectionTimers,
1596
+ [t]: r.filter((e) => !i.has(e.id))
1597
+ } };
1598
+ }),
1599
+ addKeybinding: (t, n) => {
1600
+ let r = crypto.randomUUID();
1601
+ return e((e) => ({ connectionKeybindings: {
1602
+ ...e.connectionKeybindings,
1603
+ [t]: [...e.connectionKeybindings[t] ?? [], {
1604
+ ...n,
1605
+ id: r
1606
+ }]
1607
+ } })), r;
1608
+ },
1609
+ updateKeybinding: (t, n, r) => e((e) => ({ connectionKeybindings: {
1610
+ ...e.connectionKeybindings,
1611
+ [t]: (e.connectionKeybindings[t] ?? []).map((e) => e.id === n ? {
1612
+ ...e,
1613
+ ...r
1614
+ } : e)
1615
+ } })),
1616
+ removeKeybinding: (t, n) => e((e) => {
1617
+ let r = e.connectionKeybindings[t] ?? [], i = /* @__PURE__ */ new Set([n, ...J(n, r)]);
1618
+ return { connectionKeybindings: {
1619
+ ...e.connectionKeybindings,
1620
+ [t]: r.filter((e) => !i.has(e.id))
1621
+ } };
1622
+ }),
1623
+ removeKeybindings: (t, n) => e((e) => {
1624
+ if (n.length === 0) return {};
1625
+ let r = e.connectionKeybindings[t] ?? [], i = /* @__PURE__ */ new Set();
1626
+ for (let e of n) {
1627
+ i.add(e);
1628
+ for (let t of J(e, r)) i.add(t);
1629
+ }
1630
+ return { connectionKeybindings: {
1631
+ ...e.connectionKeybindings,
1632
+ [t]: r.filter((e) => !i.has(e.id))
1633
+ } };
1634
+ }),
1635
+ addButton: (t, n) => {
1636
+ let r = crypto.randomUUID();
1637
+ return e((e) => ({ connectionButtons: {
1638
+ ...e.connectionButtons,
1639
+ [t]: [...e.connectionButtons[t] ?? [], {
1640
+ ...n,
1641
+ id: r
1642
+ }]
1643
+ } })), r;
1644
+ },
1645
+ updateButton: (t, n, r) => e((e) => ({ connectionButtons: {
1646
+ ...e.connectionButtons,
1647
+ [t]: (e.connectionButtons[t] ?? []).map((e) => e.id === n ? {
1648
+ ...e,
1649
+ ...r
1650
+ } : e)
1651
+ } })),
1652
+ removeButton: (t, n) => e((e) => {
1653
+ let r = e.connectionButtons[t] ?? [], i = /* @__PURE__ */ new Set([n, ...J(n, r)]);
1654
+ return { connectionButtons: {
1655
+ ...e.connectionButtons,
1656
+ [t]: r.filter((e) => !i.has(e.id))
1657
+ } };
1658
+ }),
1659
+ restoreScripts: (t, n) => e((e) => ({ connectionScripts: {
1660
+ ...e.connectionScripts,
1661
+ [t]: Y(e.connectionScripts[t] ?? [], n)
1662
+ } })),
1663
+ restoreAliases: (t, n) => e((e) => ({ connectionAliases: {
1664
+ ...e.connectionAliases,
1665
+ [t]: Y(e.connectionAliases[t] ?? [], n)
1666
+ } })),
1667
+ restoreTriggers: (t, n) => e((e) => ({ connectionTriggers: {
1668
+ ...e.connectionTriggers,
1669
+ [t]: Y(e.connectionTriggers[t] ?? [], n)
1670
+ } })),
1671
+ restoreTimers: (t, n) => e((e) => ({ connectionTimers: {
1672
+ ...e.connectionTimers,
1673
+ [t]: Y(e.connectionTimers[t] ?? [], n)
1674
+ } })),
1675
+ restoreKeybindings: (t, n) => e((e) => ({ connectionKeybindings: {
1676
+ ...e.connectionKeybindings,
1677
+ [t]: Y(e.connectionKeybindings[t] ?? [], n)
1678
+ } })),
1679
+ restoreButtons: (t, n) => e((e) => ({ connectionButtons: {
1680
+ ...e.connectionButtons,
1681
+ [t]: Y(e.connectionButtons[t] ?? [], n)
1682
+ } })),
1683
+ moveScript: (t, n, r, i) => e((e) => ({ connectionScripts: {
1684
+ ...e.connectionScripts,
1685
+ [t]: X(e.connectionScripts[t] ?? [], n, r, i)
1686
+ } })),
1687
+ moveAlias: (t, n, r, i) => e((e) => ({ connectionAliases: {
1688
+ ...e.connectionAliases,
1689
+ [t]: X(e.connectionAliases[t] ?? [], n, r, i)
1690
+ } })),
1691
+ moveTrigger: (t, n, r, i) => e((e) => ({ connectionTriggers: {
1692
+ ...e.connectionTriggers,
1693
+ [t]: X(e.connectionTriggers[t] ?? [], n, r, i)
1694
+ } })),
1695
+ moveTimer: (t, n, r, i) => e((e) => ({ connectionTimers: {
1696
+ ...e.connectionTimers,
1697
+ [t]: X(e.connectionTimers[t] ?? [], n, r, i)
1698
+ } })),
1699
+ moveKeybinding: (t, n, r, i) => e((e) => ({ connectionKeybindings: {
1700
+ ...e.connectionKeybindings,
1701
+ [t]: X(e.connectionKeybindings[t] ?? [], n, r, i)
1702
+ } })),
1703
+ moveButton: (t, n, r, i) => e((e) => ({ connectionButtons: {
1704
+ ...e.connectionButtons,
1705
+ [t]: X(e.connectionButtons[t] ?? [], n, r, i)
1706
+ } })),
1707
+ saveScriptEditorBounds: (t, n) => e((e) => ({ connectionScriptEditorBounds: {
1708
+ ...e.connectionScriptEditorBounds,
1709
+ [t]: n
1710
+ } })),
1711
+ saveModalBounds: (t, n, r) => e((e) => ({ connectionModalBounds: {
1712
+ ...e.connectionModalBounds,
1713
+ [t]: {
1714
+ ...e.connectionModalBounds[t] ?? {},
1715
+ [n]: r
1716
+ }
1717
+ } })),
1718
+ installPackage: (t, n, r) => e((e) => {
1719
+ let i = (e.connectionPackages[t] ?? []).filter((e) => e.name !== n.name), a = (e) => e.filter((e) => e.packageName !== n.name), o = e.connectionProfile[t] ?? {}, s = o.uninstalledPackages ?? [];
1720
+ return {
1721
+ connectionProfile: s.includes(n.name) ? {
1722
+ ...e.connectionProfile,
1723
+ [t]: {
1724
+ ...o,
1725
+ uninstalledPackages: s.filter((e) => e !== n.name)
1726
+ }
1727
+ } : e.connectionProfile,
1728
+ connectionScripts: {
1729
+ ...e.connectionScripts,
1730
+ [t]: [...a(e.connectionScripts[t] ?? []), ...r.scripts]
1731
+ },
1732
+ connectionAliases: {
1733
+ ...e.connectionAliases,
1734
+ [t]: [...a(e.connectionAliases[t] ?? []), ...r.aliases]
1735
+ },
1736
+ connectionTriggers: {
1737
+ ...e.connectionTriggers,
1738
+ [t]: [...a(e.connectionTriggers[t] ?? []), ...r.triggers]
1739
+ },
1740
+ connectionTimers: {
1741
+ ...e.connectionTimers,
1742
+ [t]: [...a(e.connectionTimers[t] ?? []), ...r.timers]
1743
+ },
1744
+ connectionKeybindings: {
1745
+ ...e.connectionKeybindings,
1746
+ [t]: [...a(e.connectionKeybindings[t] ?? []), ...r.keys]
1747
+ },
1748
+ connectionButtons: {
1749
+ ...e.connectionButtons,
1750
+ [t]: [...a(e.connectionButtons[t] ?? []), ...r.buttons]
1751
+ },
1752
+ connectionPackages: {
1753
+ ...e.connectionPackages,
1754
+ [t]: [...i, n]
1755
+ }
1756
+ };
1757
+ }),
1758
+ updatePackageManifest: (t, n, r) => e((e) => ({ connectionPackages: {
1759
+ ...e.connectionPackages,
1760
+ [t]: (e.connectionPackages[t] ?? []).map((e) => e.name === n ? {
1761
+ ...e,
1762
+ ...r,
1763
+ name: e.name
1764
+ } : e)
1765
+ } })),
1766
+ uninstallPackage: (t, n) => e((e) => {
1767
+ let r = (e) => e.filter((e) => e.packageName !== n), i = e.connectionProfile[t] ?? {}, a = i.uninstalledPackages ?? [];
1768
+ return {
1769
+ connectionProfile: a.includes(n) ? e.connectionProfile : {
1770
+ ...e.connectionProfile,
1771
+ [t]: {
1772
+ ...i,
1773
+ uninstalledPackages: [...a, n]
1774
+ }
1775
+ },
1776
+ connectionScripts: {
1777
+ ...e.connectionScripts,
1778
+ [t]: r(e.connectionScripts[t] ?? [])
1779
+ },
1780
+ connectionAliases: {
1781
+ ...e.connectionAliases,
1782
+ [t]: r(e.connectionAliases[t] ?? [])
1783
+ },
1784
+ connectionTriggers: {
1785
+ ...e.connectionTriggers,
1786
+ [t]: r(e.connectionTriggers[t] ?? [])
1787
+ },
1788
+ connectionTimers: {
1789
+ ...e.connectionTimers,
1790
+ [t]: r(e.connectionTimers[t] ?? [])
1791
+ },
1792
+ connectionKeybindings: {
1793
+ ...e.connectionKeybindings,
1794
+ [t]: r(e.connectionKeybindings[t] ?? [])
1795
+ },
1796
+ connectionButtons: {
1797
+ ...e.connectionButtons,
1798
+ [t]: r(e.connectionButtons[t] ?? [])
1799
+ },
1800
+ connectionPackages: {
1801
+ ...e.connectionPackages,
1802
+ [t]: (e.connectionPackages[t] ?? []).filter((e) => e.name !== n)
1803
+ }
1804
+ };
1805
+ }),
1806
+ setVariableSaveList: (t, n) => e((e) => ({ connectionVariables: {
1807
+ ...e.connectionVariables,
1808
+ [t]: {
1809
+ ...e.connectionVariables[t],
1810
+ saveList: n,
1811
+ values: e.connectionVariables[t]?.values ?? []
1812
+ }
1813
+ } })),
1814
+ setVariableHidden: (t, n) => e((e) => ({ connectionVariables: {
1815
+ ...e.connectionVariables,
1816
+ [t]: {
1817
+ saveList: e.connectionVariables[t]?.saveList ?? [],
1818
+ values: e.connectionVariables[t]?.values ?? [],
1819
+ hidden: n
1820
+ }
1821
+ } })),
1822
+ setVariableValues: (t, n) => e((e) => ({ connectionVariables: {
1823
+ ...e.connectionVariables,
1824
+ [t]: {
1825
+ ...e.connectionVariables[t],
1826
+ saveList: e.connectionVariables[t]?.saveList ?? [],
1827
+ values: n
1828
+ }
1829
+ } })),
1830
+ hydrateConnectionData: (t, n) => e((e) => {
1831
+ let r = {
1832
+ connectionScripts: {
1833
+ ...e.connectionScripts,
1834
+ [t]: n.scripts ?? []
1835
+ },
1836
+ connectionAliases: {
1837
+ ...e.connectionAliases,
1838
+ [t]: n.aliases ?? []
1839
+ },
1840
+ connectionTriggers: {
1841
+ ...e.connectionTriggers,
1842
+ [t]: n.triggers ?? []
1843
+ },
1844
+ connectionTimers: {
1845
+ ...e.connectionTimers,
1846
+ [t]: n.timers ?? []
1847
+ },
1848
+ connectionKeybindings: {
1849
+ ...e.connectionKeybindings,
1850
+ [t]: n.keybindings ?? []
1851
+ },
1852
+ connectionButtons: {
1853
+ ...e.connectionButtons,
1854
+ [t]: n.buttons ?? []
1855
+ },
1856
+ connectionPackages: {
1857
+ ...e.connectionPackages,
1858
+ [t]: n.packages ?? []
1859
+ },
1860
+ connectionVariables: {
1861
+ ...e.connectionVariables,
1862
+ [t]: n.variables ?? {
1863
+ saveList: [],
1864
+ values: []
1865
+ }
1866
+ }
1867
+ };
1868
+ return n.profile !== void 0 && (r.connectionProfile = {
1869
+ ...e.connectionProfile,
1870
+ [t]: n.profile
1871
+ }), n.windowHints !== void 0 && (r.connectionWindowHints = {
1872
+ ...e.connectionWindowHints,
1873
+ [t]: n.windowHints
1874
+ }), n.dockExtents !== void 0 && (r.connectionDockExtents = {
1875
+ ...e.connectionDockExtents,
1876
+ [t]: n.dockExtents
1877
+ }), n.scriptEditorBounds !== void 0 && (r.connectionScriptEditorBounds = {
1878
+ ...e.connectionScriptEditorBounds,
1879
+ [t]: n.scriptEditorBounds
1880
+ }), n.modalBounds !== void 0 && (r.connectionModalBounds = {
1881
+ ...e.connectionModalBounds,
1882
+ [t]: n.modalBounds
1883
+ }), n.layoutSnapshot !== void 0 && (r.connectionLayoutSnapshots = {
1884
+ ...e.connectionLayoutSnapshots,
1885
+ [t]: n.layoutSnapshot
1886
+ }), r;
1887
+ })
1888
+ }), {
1889
+ name: Z,
1890
+ version: 21,
1891
+ storage: ze(5e3),
1892
+ partialize: ({ connections: e, client: t }) => ({
1893
+ connections: e,
1894
+ client: t
1895
+ }),
1896
+ migrate: (e, t) => {
1897
+ let n = e, r = (n.connections ?? []).map((e) => {
1898
+ if (t < 2 && !("url" in e)) {
1899
+ let t = e;
1900
+ return {
1901
+ id: t.id,
1902
+ name: t.name,
1903
+ url: `${t.ssl ? "wss" : "ws"}://${t.host}:${t.port}`
1904
+ };
1905
+ }
1906
+ return e;
1907
+ }), i = n.ui ?? {}, a = n.client ?? {}, o = {
1908
+ theme: a.theme ?? i.theme ?? h.client.theme,
1909
+ ...a.userProxyUrl === void 0 ? {} : { userProxyUrl: a.userProxyUrl },
1910
+ ...a.notificationsEnabled === void 0 ? {} : { notificationsEnabled: a.notificationsEnabled }
1911
+ }, s = n.connectionProfile, c;
1912
+ if (s) c = s;
1913
+ else {
1914
+ let e = {};
1915
+ for (let t of [
1916
+ "showTimestamps",
1917
+ "fontSize",
1918
+ "outputBackground",
1919
+ "outputFont",
1920
+ "outputWrapAt",
1921
+ "outputBackgroundColor",
1922
+ "outputBorders",
1923
+ "outputBorderColor",
1924
+ "promptTimeoutMs"
1925
+ ]) i[t] !== void 0 && (e[t] = i[t]);
1926
+ c = Object.fromEntries(r.map((t) => [t.id, { ...e }]));
1927
+ }
1928
+ if (t < 19) for (let e of Object.values(c)) {
1929
+ let t = e?.mapViewState;
1930
+ t && (e.mapViewStates = {
1931
+ ...e.mapViewStates ?? {},
1932
+ [t.areaId]: { level: t.level }
1933
+ }, e.mapLastAreaId = t.areaId, delete e.mapViewState);
1934
+ }
1935
+ if (t < 21) {
1936
+ for (let e of r) {
1937
+ let t = c[e.id];
1938
+ t && (t.icon !== void 0 && (e.icon = t.icon, delete t.icon), t.charLoginAccount !== void 0 && (e.charLoginAccount = t.charLoginAccount, delete t.charLoginAccount), t.charLoginPassword !== void 0 && (e.charLoginPassword = t.charLoginPassword, delete t.charLoginPassword));
1939
+ }
1940
+ if (a.allowMudPackageInstall === !1) for (let e of r) c[e.id] = {
1941
+ ...c[e.id] ?? {},
1942
+ allowMudPackageInstall: !1
1943
+ };
1944
+ try {
1945
+ let e = {};
1946
+ for (let t of r) e[t.id] = {
1947
+ profile: c[t.id],
1948
+ windowHints: n.connectionWindowHints?.[t.id],
1949
+ dockExtents: n.connectionDockExtents?.[t.id],
1950
+ scriptEditorBounds: n.connectionScriptEditorBounds?.[t.id],
1951
+ modalBounds: n.connectionModalBounds?.[t.id],
1952
+ layoutSnapshot: n.connectionLayoutSnapshots?.[t.id]
1953
+ };
1954
+ localStorage.setItem(K, JSON.stringify(e));
1955
+ } catch {}
1956
+ }
1957
+ return {
1958
+ ...h,
1959
+ connections: r,
1960
+ client: o,
1961
+ connectionProfile: c,
1962
+ connectionWindowHints: n.connectionWindowHints ?? {},
1963
+ connectionDockExtents: n.connectionDockExtents ?? {},
1964
+ ...t >= 10 ? {
1965
+ connectionScriptEditorBounds: n.connectionScriptEditorBounds ?? {},
1966
+ connectionModalBounds: n.connectionModalBounds ?? {}
1967
+ } : {}
1968
+ };
1969
+ }
1970
+ })), on = null;
1971
+ function sn(e) {
1972
+ let t = null;
1973
+ try {
1974
+ t = JSON.parse(e);
1975
+ } catch {
1976
+ return;
1977
+ }
1978
+ if (!t || typeof t != "object" || !t.state || t.version !== 21) return;
1979
+ let n = t.state, r = {};
1980
+ "connections" in n && (r.connections = n.connections), "client" in n && (r.client = n.client), Object.keys(r).length > 0 && Q.setState(r);
1981
+ }
1982
+ var cn = !1;
1983
+ function ln() {
1984
+ cn || typeof window > "u" || (cn = !0, window.addEventListener("storage", (e) => {
1985
+ e.key !== "mudlet_v1" || e.newValue == null || e.newValue !== on && (on = e.newValue, sn(e.newValue));
1986
+ }));
1987
+ }
1988
+ ln();
1989
+ var un = "dark", dn = "light", fn = "(prefers-color-scheme: dark)";
1990
+ function pn() {
1991
+ if (typeof window > "u" || !window.matchMedia) return null;
1992
+ try {
1993
+ return window.matchMedia(fn);
1994
+ } catch {
1995
+ return null;
1996
+ }
1997
+ }
1998
+ function mn() {
1999
+ return pn()?.matches ?? !0;
2000
+ }
2001
+ function hn(e) {
2002
+ return e === "system" ? mn() ? un : dn : e ?? un;
2003
+ }
2004
+ function gn(e) {
2005
+ let t = pn();
2006
+ if (!t) return () => {};
2007
+ let n = () => e();
2008
+ return t.addEventListener ? (t.addEventListener("change", n), () => t.removeEventListener("change", n)) : (t.addListener(n), () => t.removeListener(n));
2009
+ }
2010
+ //#endregion
2011
+ //#region src/storage/hooks.ts
2012
+ var _n = e(null);
2013
+ function $() {
2014
+ return t(_n);
2015
+ }
2016
+ function vn(e) {
2017
+ let t = $();
2018
+ return Q((n) => Ee(n, t, e));
2019
+ }
2020
+ function yn(e) {
2021
+ return Q((t) => t.client[e]);
2022
+ }
2023
+ function bn() {
2024
+ let e = $();
2025
+ return hn(Q((t) => (e ? t.connectionProfile[e]?.theme : void 0) ?? t.client.theme));
2026
+ }
2027
+ function xn() {
2028
+ let e = vn("editor");
2029
+ return {
2030
+ autocomplete: e?.autocomplete ?? !0,
2031
+ showWhitespace: e?.showWhitespace ?? !1,
2032
+ showLineParagraphs: e?.showLineParagraphs ?? !1,
2033
+ showControlChars: e?.showControlChars ?? !1,
2034
+ showItemIds: e?.showItemIds ?? !1,
2035
+ theme: e?.theme ?? "app"
2036
+ };
2037
+ }
2038
+ //#endregion
2039
+ export { le as $, Tt as A, Se as At, ht as B, ie as Bt, K as C, be as Ct, Mt as D, Me as Dt, H as E, Ie as Et, xt as F, u as Ft, it as G, mt as H, vt as I, l as It, ct as J, lt as K, bt as L, te as Lt, At as M, a as Mt, Dt as N, d as Nt, B as O, Re as Ot, St as P, re as Pt, f as Q, Ct as R, ee as Rt, Jt as S, ye as St, Lt as T, b as Tt, ot as U, gt as V, c as Vt, ft as W, at as X, st as Y, k as Z, $t as _, _e as _t, bn as a, oe as at, Yt as b, Ee as bt, hn as c, he as ct, Gt as d, ke as dt, ue as et, Kt as f, g as ft, en as g, m as gt, tn as h, Ce as ht, xn as i, de as it, Et as j, o as jt, Ot as k, Le as kt, Z as l, je as lt, qt as m, ge as mt, yn as n, p as nt, vn as o, me as ot, nn as p, we as pt, ut as q, $ as r, ae as rt, gn as s, Te as st, _n as t, se as tt, Q as u, _ as ut, Qt as v, Ae as vt, Rt as w, xe as wt, Zt as x, ce as xt, Xt as y, pe as yt, yt as z, ne as zt };