astro-vscode 0.23.2 → 0.24.1

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.
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Astro global available in all contexts in .astro files
3
+ *
4
+ * [Astro documentation](https://docs.astro.build/reference/api-reference/#astro-global)
5
+ */
6
+ declare const Astro: any;
7
+ declare const Fragment: any;
8
+
9
+ declare module '*.md' {
10
+ const md: any;
11
+ export default md;
12
+ }
13
+
14
+ declare module '*.mdx' {
15
+ const mdx: any;
16
+ export default mdx;
17
+ }
18
+
19
+ declare module '*.html' {
20
+ const html: any;
21
+ export default html;
22
+ }
package/package.json CHANGED
@@ -23,14 +23,17 @@
23
23
  "color": "#FFBE2D",
24
24
  "theme": "dark"
25
25
  },
26
- "version": "0.23.2",
26
+ "version": "0.24.1",
27
27
  "author": "withastro",
28
28
  "license": "MIT",
29
29
  "publisher": "astro-build",
30
30
  "scripts": {
31
- "vscode:prepublish": "yarn build",
32
- "build": "astro-scripts build \"src/**/*.ts\" && tsc -p tsconfig.json",
33
- "dev": "astro-scripts dev \"src/**/*.ts\"",
31
+ "build": "yarn run build:node & yarn run build:browser",
32
+ "dev": "yarn run build:node --watch & yarn run build:browser --watch",
33
+ "build:node": "node ./scripts/build-node.js",
34
+ "build:browser": "node ./scripts/build-browser.js",
35
+ "build:ci:node": "yarn run build:node & yarn run build:browser --empty",
36
+ "build:ci:browser": "yarn run build:browser & yarn run build:node --empty",
34
37
  "test": "yarn run test:vscode && yarn run test:grammar",
35
38
  "test:vscode": "node ./test/runTest.js",
36
39
  "test:grammar": "node ./test/grammar/test.mjs",
@@ -44,18 +47,22 @@
44
47
  "workspaceContains:astro.config.*"
45
48
  ],
46
49
  "dependencies": {
47
- "@astrojs/language-server": "0.23.2",
48
- "@astrojs/ts-plugin": "0.2.1",
49
- "vscode-languageclient": "^8.0.1"
50
+ "@astrojs/ts-plugin": "0.3.0",
51
+ "prettier": "^2.7.1",
52
+ "prettier-plugin-astro": "^0.5.4"
50
53
  },
51
54
  "devDependencies": {
55
+ "esbuild-plugin-copy": "^1.3.0",
56
+ "@astrojs/language-server": "0.24.1",
52
57
  "@types/vscode": "^1.67.0",
53
58
  "@vscode/test-electron": "^2.1.3",
54
- "vscode-tmgrammar-test": "^0.1.1",
55
- "astro-scripts": "file:../../scripts"
59
+ "path-browserify": "^1.0.1",
60
+ "typescript": "~4.8.2",
61
+ "vscode-languageclient": "^8.0.1",
62
+ "vscode-tmgrammar-test": "^0.1.1"
56
63
  },
57
- "main": "./dist/index.js",
58
- "browser": "./dist/index.js",
64
+ "main": "./dist/node/client.js",
65
+ "browser": "./dist/browser/client.js",
59
66
  "files": [
60
67
  "dist/",
61
68
  "languages/",
@@ -81,6 +88,10 @@
81
88
  {
82
89
  "command": "astro.showTSXOutput",
83
90
  "title": "Astro: Debug: Show TSX Output"
91
+ },
92
+ {
93
+ "command": "astro.selectTypescriptVersion",
94
+ "title": "Astro: Select Typescript Version..."
84
95
  }
85
96
  ],
86
97
  "configuration": {
@@ -1,5 +0,0 @@
1
- import { Disposable, TextDocument, Position } from 'vscode';
2
- /** */
3
- export declare function activateTagClosing(tagProvider: (document: TextDocument, position: Position) => Thenable<string>, supportedLanguages: {
4
- [id: string]: boolean;
5
- }, configName: string): Disposable;
@@ -1,98 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
9
- var __export = (target, all) => {
10
- for (var name in all)
11
- __defProp(target, name, {get: all[name], enumerable: true});
12
- };
13
- var __reExport = (target, module2, desc) => {
14
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
15
- for (let key of __getOwnPropNames(module2))
16
- if (!__hasOwnProp.call(target, key) && key !== "default")
17
- __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});
18
- }
19
- return target;
20
- };
21
- var __toModule = (module2) => {
22
- return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
23
- };
24
- __markAsModule(exports);
25
- __export(exports, {
26
- activateTagClosing: () => activateTagClosing
27
- });
28
- var import_vscode = __toModule(require("vscode"));
29
- function activateTagClosing(tagProvider, supportedLanguages, configName) {
30
- const disposables = [];
31
- import_vscode.workspace.onDidChangeTextDocument((event) => onDidChangeTextDocument(event.document, event.contentChanges), null, disposables);
32
- let isEnabled = false;
33
- updateEnabledState();
34
- import_vscode.window.onDidChangeActiveTextEditor(updateEnabledState, null, disposables);
35
- let timeout = void 0;
36
- function updateEnabledState() {
37
- isEnabled = false;
38
- const editor = import_vscode.window.activeTextEditor;
39
- if (!editor) {
40
- return;
41
- }
42
- const document = editor.document;
43
- if (!supportedLanguages[document.languageId]) {
44
- return;
45
- }
46
- if (!import_vscode.workspace.getConfiguration(void 0, document.uri).get(configName)) {
47
- return;
48
- }
49
- isEnabled = true;
50
- }
51
- function onDidChangeTextDocument(document, changes) {
52
- var _a;
53
- if (!isEnabled) {
54
- return;
55
- }
56
- const activeDocument = import_vscode.window.activeTextEditor && import_vscode.window.activeTextEditor.document;
57
- if (document !== activeDocument || changes.length === 0) {
58
- return;
59
- }
60
- if (typeof timeout !== "undefined") {
61
- clearTimeout(timeout);
62
- }
63
- const lastChange = changes[changes.length - 1];
64
- const lastCharacter = lastChange.text[lastChange.text.length - 1];
65
- if ("range" in lastChange && ((_a = lastChange.rangeLength) != null ? _a : 0) > 0 || lastCharacter !== ">" && lastCharacter !== "/") {
66
- return;
67
- }
68
- const rangeStart = "range" in lastChange ? lastChange.range.start : new import_vscode.Position(0, document.getText().length);
69
- const version = document.version;
70
- timeout = setTimeout(() => {
71
- const position = new import_vscode.Position(rangeStart.line, rangeStart.character + lastChange.text.length);
72
- tagProvider(document, position).then((text) => {
73
- if (text && isEnabled) {
74
- const activeEditor = import_vscode.window.activeTextEditor;
75
- if (activeEditor) {
76
- const activeEditorDocument = activeEditor.document;
77
- if (document === activeEditorDocument && activeEditorDocument.version === version) {
78
- const selections = activeEditor.selections;
79
- if (selections.length && selections.some((s) => s.active.isEqual(position))) {
80
- activeEditor.insertSnippet(new import_vscode.SnippetString(text), selections.map((s) => s.active));
81
- } else {
82
- activeEditor.insertSnippet(new import_vscode.SnippetString(text), position);
83
- }
84
- }
85
- }
86
- }
87
- });
88
- timeout = void 0;
89
- }, 100);
90
- }
91
- return import_vscode.Disposable.from(...disposables);
92
- }
93
- "use strict";
94
- // Annotate the CommonJS export names for ESM import in node:
95
- 0 && (module.exports = {
96
- activateTagClosing
97
- });
98
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vc3JjL2h0bWwvYXV0b0Nsb3NlLnRzIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQVFBLG9CQUFxRjtBQUs5RSw0QkFDTixhQUNBLG9CQUNBLFlBQ2E7QUFDYixRQUFNLGNBQTRCO0FBQ2xDLDBCQUFVLHdCQUNULENBQUMsVUFBVSx3QkFBd0IsTUFBTSxVQUFVLE1BQU0saUJBQ3pELE1BQ0E7QUFHRCxNQUFJLFlBQVk7QUFDaEI7QUFDQSx1QkFBTyw0QkFBNEIsb0JBQW9CLE1BQU07QUFFN0QsTUFBSSxVQUFvQztBQUd4QyxnQ0FBOEI7QUFDN0IsZ0JBQVk7QUFDWixVQUFNLFNBQVMscUJBQU87QUFDdEIsUUFBSSxDQUFDLFFBQVE7QUFDWjtBQUFBO0FBRUQsVUFBTSxXQUFXLE9BQU87QUFDeEIsUUFBSSxDQUFDLG1CQUFtQixTQUFTLGFBQWE7QUFDN0M7QUFBQTtBQUVELFFBQUksQ0FBQyx3QkFBVSxpQkFBaUIsUUFBUSxTQUFTLEtBQUssSUFBYSxhQUFhO0FBQy9FO0FBQUE7QUFFRCxnQkFBWTtBQUFBO0FBSWIsbUNBQWlDLFVBQXdCLFNBQW9EO0FBakQ5RztBQWtERSxRQUFJLENBQUMsV0FBVztBQUNmO0FBQUE7QUFFRCxVQUFNLGlCQUFpQixxQkFBTyxvQkFBb0IscUJBQU8saUJBQWlCO0FBQzFFLFFBQUksYUFBYSxrQkFBa0IsUUFBUSxXQUFXLEdBQUc7QUFDeEQ7QUFBQTtBQUVELFFBQUksT0FBTyxZQUFZLGFBQWE7QUFDbkMsbUJBQWE7QUFBQTtBQUVkLFVBQU0sYUFBYSxRQUFRLFFBQVEsU0FBUztBQUM1QyxVQUFNLGdCQUFnQixXQUFXLEtBQUssV0FBVyxLQUFLLFNBQVM7QUFDL0QsUUFDRSxXQUFXLGNBQWUsa0JBQVcsZ0JBQVgsWUFBMEIsS0FBSyxLQUN6RCxrQkFBa0IsT0FBTyxrQkFBa0IsS0FDM0M7QUFDRDtBQUFBO0FBRUQsVUFBTSxhQUFhLFdBQVcsYUFBYSxXQUFXLE1BQU0sUUFBUSxJQUFJLHVCQUFTLEdBQUcsU0FBUyxVQUFVO0FBQ3ZHLFVBQU0sVUFBVSxTQUFTO0FBQ3pCLGNBQVUsV0FBVyxNQUFNO0FBQzFCLFlBQU0sV0FBVyxJQUFJLHVCQUFTLFdBQVcsTUFBTSxXQUFXLFlBQVksV0FBVyxLQUFLO0FBQ3RGLGtCQUFZLFVBQVUsVUFBVSxLQUFLLENBQUMsU0FBUztBQUM5QyxZQUFJLFFBQVEsV0FBVztBQUN0QixnQkFBTSxlQUFlLHFCQUFPO0FBQzVCLGNBQUksY0FBYztBQUNqQixrQkFBTSx1QkFBdUIsYUFBYTtBQUMxQyxnQkFBSSxhQUFhLHdCQUF3QixxQkFBcUIsWUFBWSxTQUFTO0FBQ2xGLG9CQUFNLGFBQWEsYUFBYTtBQUNoQyxrQkFBSSxXQUFXLFVBQVUsV0FBVyxLQUFLLENBQUMsTUFBTSxFQUFFLE9BQU8sUUFBUSxZQUFZO0FBQzVFLDZCQUFhLGNBQ1osSUFBSSw0QkFBYyxPQUNsQixXQUFXLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFBQSxxQkFFbkI7QUFDTiw2QkFBYSxjQUFjLElBQUksNEJBQWMsT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNekQsZ0JBQVU7QUFBQSxPQUNSO0FBQUE7QUFFSixTQUFPLHlCQUFXLEtBQUssR0FBRztBQUFBOyIsCiAgIm5hbWVzIjogW10KfQo=
package/dist/index.d.ts DELETED
@@ -1,6 +0,0 @@
1
- import { ExtensionContext } from 'vscode';
2
- import { LanguageClient } from 'vscode-languageclient/node';
3
- export declare function activate(context: ExtensionContext): Promise<{
4
- getLanguageServer: () => LanguageClient;
5
- }>;
6
- export declare function deactivate(): Promise<void> | undefined;
package/dist/index.js DELETED
@@ -1,160 +0,0 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __markAsModule = (target) => __defProp(target, "__esModule", {value: true});
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, {get: all[name], enumerable: true});
11
- };
12
- var __reExport = (target, module2, desc) => {
13
- if (module2 && typeof module2 === "object" || typeof module2 === "function") {
14
- for (let key of __getOwnPropNames(module2))
15
- if (!__hasOwnProp.call(target, key) && key !== "default")
16
- __defProp(target, key, {get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable});
17
- }
18
- return target;
19
- };
20
- var __toModule = (module2) => {
21
- return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? {get: () => module2.default, enumerable: true} : {value: module2, enumerable: true})), module2);
22
- };
23
- __markAsModule(exports);
24
- __export(exports, {
25
- activate: () => activate,
26
- deactivate: () => deactivate
27
- });
28
- var path = __toModule(require("path"));
29
- var import_vscode = __toModule(require("vscode"));
30
- var import_node = __toModule(require("vscode-languageclient/node"));
31
- var import_autoClose = __toModule(require("./html/autoClose.js"));
32
- const TagCloseRequest = new import_node.RequestType("html/tag");
33
- let client;
34
- async function activate(context) {
35
- const runtimeConfig = import_vscode.workspace.getConfiguration("astro.language-server");
36
- const {workspaceFolders} = import_vscode.workspace;
37
- const rootPath = workspaceFolders == null ? void 0 : workspaceFolders[0].uri.fsPath;
38
- let lsPath = runtimeConfig.get("ls-path");
39
- if (typeof lsPath === "string" && lsPath.trim() !== "" && typeof rootPath === "string") {
40
- lsPath = path.isAbsolute(lsPath) ? lsPath : path.join(rootPath, lsPath);
41
- console.info(`Using language server at ${lsPath}`);
42
- } else {
43
- lsPath = void 0;
44
- }
45
- const serverModule = lsPath != null ? require.resolve(lsPath) : require.resolve("@astrojs/language-server/bin/nodeServer.js");
46
- const port = 6040;
47
- const debugOptions = {execArgv: ["--nolazy", "--inspect=" + port]};
48
- const serverOptions = {
49
- run: {module: serverModule, transport: import_node.TransportKind.ipc},
50
- debug: {
51
- module: serverModule,
52
- transport: import_node.TransportKind.ipc,
53
- options: debugOptions
54
- }
55
- };
56
- const serverRuntime = runtimeConfig.get("runtime");
57
- if (serverRuntime) {
58
- serverOptions.run.runtime = serverRuntime;
59
- serverOptions.debug.runtime = serverRuntime;
60
- console.info(`Using ${serverRuntime} as runtime`);
61
- }
62
- const clientOptions = {
63
- documentSelector: [{scheme: "file", language: "astro"}],
64
- synchronize: {
65
- fileEvents: import_vscode.workspace.createFileSystemWatcher("{**/*.js,**/*.ts}", false, false, false)
66
- },
67
- initializationOptions: {
68
- environment: "node",
69
- dontFilterIncompleteCompletions: true,
70
- isTrusted: import_vscode.workspace.isTrusted
71
- }
72
- };
73
- client = createLanguageServer(serverOptions, clientOptions);
74
- client.start().then(() => {
75
- const tagRequestor = (document, position) => {
76
- const param = client.code2ProtocolConverter.asTextDocumentPositionParams(document, position);
77
- return client.sendRequest(TagCloseRequest, param);
78
- };
79
- const disposable = (0, import_autoClose.activateTagClosing)(tagRequestor, {astro: true}, "html.autoClosingTags");
80
- context.subscriptions.push(disposable);
81
- }).catch((err) => {
82
- console.error("Astro, unable to load language server.", err);
83
- });
84
- import_vscode.workspace.onDidSaveTextDocument(async (doc) => {
85
- var _a;
86
- const fileName = (_a = doc.fileName.split(/\/|\\/).pop()) != null ? _a : doc.fileName;
87
- if ([/^tsconfig\.json$/, /^jsconfig\.json$/].some((regex) => regex.test(fileName))) {
88
- await restartClient(false);
89
- }
90
- });
91
- import_vscode.workspace.onDidChangeTextDocument((params) => {
92
- var _a;
93
- if (["vue", "svelte", "javascript", "typescript", "javascriptreact", "typescriptreact", "json", "jsonc"].includes(params.document.languageId)) {
94
- const fileName = (_a = params.document.fileName.split(/\/|\\/).pop()) != null ? _a : params.document.fileName;
95
- if (["json", "jsonc"].includes(params.document.languageId) && (fileName.startsWith("tsconfig") || fileName.startsWith("jsconfig"))) {
96
- return;
97
- }
98
- getLSClient().sendNotification("$/onDidChangeNonAstroFile", {
99
- uri: params.document.uri.toString(true),
100
- changes: ["vue", "svelte"].includes(params.document.languageId) ? void 0 : params.contentChanges.map((c) => ({
101
- range: {
102
- start: {line: c.range.start.line, character: c.range.start.character},
103
- end: {line: c.range.end.line, character: c.range.end.character}
104
- },
105
- text: c.text
106
- }))
107
- });
108
- }
109
- });
110
- context.subscriptions.push(import_vscode.commands.registerCommand("astro.restartLanguageServer", async () => {
111
- await restartClient(true);
112
- }), import_vscode.commands.registerCommand("astro.showTSXOutput", async () => {
113
- var _a;
114
- const content = await getLSClient().sendRequest("$/getTSXOutput", (_a = import_vscode.window.activeTextEditor) == null ? void 0 : _a.document.uri.toString());
115
- if (content) {
116
- const document = await import_vscode.workspace.openTextDocument({content, language: "typescriptreact"});
117
- await import_vscode.window.showTextDocument(document, {
118
- preview: true,
119
- viewColumn: import_vscode.ViewColumn.Beside
120
- });
121
- } else {
122
- import_vscode.window.showErrorMessage("Could not open the current document's TSX output");
123
- }
124
- }));
125
- let restartingClient = false;
126
- async function restartClient(showNotification) {
127
- if (restartingClient) {
128
- return;
129
- }
130
- restartingClient = true;
131
- await client.stop();
132
- client = createLanguageServer(serverOptions, clientOptions);
133
- await client.start();
134
- if (showNotification) {
135
- import_vscode.window.showInformationMessage("Astro language server restarted.");
136
- }
137
- restartingClient = false;
138
- }
139
- function getLSClient() {
140
- return client;
141
- }
142
- return {
143
- getLanguageServer: getLSClient
144
- };
145
- }
146
- function deactivate() {
147
- if (!client) {
148
- return void 0;
149
- }
150
- return client.stop();
151
- }
152
- function createLanguageServer(serverOptions, clientOptions) {
153
- return new import_node.LanguageClient("astro", "Astro", serverOptions, clientOptions);
154
- }
155
- // Annotate the CommonJS export names for ESM import in node:
156
- 0 && (module.exports = {
157
- activate,
158
- deactivate
159
- });
160
- //# sourceMappingURL=data:application/json;base64,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UUFDM0QsS0FBSyxPQUFPLFNBQVMsSUFBSSxTQUFTO0FBQUEsUUFFbEMsU0FBUyxDQUFDLE9BQU8sVUFBVSxTQUFTLE9BQU8sU0FBUyxjQUNqRCxTQUNBLE9BQU8sZUFBZSxJQUFJLENBQUMsTUFBTztBQUFBLFVBQ2xDLE9BQU87QUFBQSxZQUNOLE9BQU8sQ0FBRSxNQUFNLEVBQUUsTUFBTSxNQUFNLE1BQU0sV0FBVyxFQUFFLE1BQU0sTUFBTTtBQUFBLFlBQzVELEtBQUssQ0FBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLE1BQU0sV0FBVyxFQUFFLE1BQU0sSUFBSTtBQUFBO0FBQUEsVUFFdkQsTUFBTSxFQUFFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFNZCxVQUFRLGNBQWMsS0FDckIsdUJBQVMsZ0JBQWdCLCtCQUErQixZQUFZO0FBQ25FLFVBQU0sY0FBYztBQUFBLE1BRXJCLHVCQUFTLGdCQUFnQix1QkFBdUIsWUFBWTtBQXRJOUQ7QUF1SUcsVUFBTSxVQUFVLE1BQU0sY0FBYyxZQUNuQyxrQkFDQSwyQkFBTyxxQkFBUCxtQkFBeUIsU0FBUyxJQUFJO0FBR3ZDLFFBQUksU0FBUztBQUNaLFlBQU0sV0FBVyxNQUFNLHdCQUFVLGlCQUFpQixDQUFFLFNBQVMsVUFBVTtBQUV2RSxZQUFNLHFCQUFPLGlCQUFpQixVQUFVO0FBQUEsUUFDdkMsU0FBUztBQUFBLFFBQ1QsWUFBWSx5QkFBVztBQUFBO0FBQUEsV0FFbEI7QUFDTiwyQkFBTyxpQkFBaUI7QUFBQTtBQUFBO0FBSzNCLE1BQUksbUJBQW1CO0FBQ3ZCLCtCQUE2QixrQkFBMkI7QUFDdkQsUUFBSSxrQkFBa0I7QUFDckI7QUFBQTtBQUdELHVCQUFtQjtBQUNuQixVQUFNLE9BQU87QUFFYixhQUFTLHFCQUFxQixlQUFlO0FBQzdDLFVBQU0sT0FBTztBQUViLFFBQUksa0JBQWtCO0FBQ3JCLDJCQUFPLHVCQUF1QjtBQUFBO0FBRy9CLHVCQUFtQjtBQUFBO0FBR3BCLHlCQUF1QjtBQUN0QixXQUFPO0FBQUE7QUFHUixTQUFPO0FBQUEsSUFDTixtQkFBbUI7QUFBQTtBQUFBO0FBSWQsc0JBQWlEO0FBQ3ZELE1BQUksQ0FBQyxRQUFRO0FBQ1osV0FBTztBQUFBO0FBR1IsU0FBTyxPQUFPO0FBQUE7QUFHZiw4QkFBOEIsZUFBOEIsZUFBc0M7QUFDakcsU0FBTyxJQUFJLDJCQUFlLFNBQVMsU0FBUyxlQUFlO0FBQUE7IiwKICAibmFtZXMiOiBbXQp9Cg==