wxt 0.7.5 → 0.8.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.
- package/dist/browser.d.ts +4 -0
- package/dist/browser.js +1 -1
- package/dist/cli.cjs +63 -21
- package/dist/client.d.ts +17 -16
- package/dist/client.js +2 -1
- package/dist/index.cjs +62 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +40 -16
- package/dist/index.d.ts +40 -16
- package/dist/index.js +62 -20
- package/dist/index.js.map +1 -1
- package/dist/sandbox.d.ts +28 -0
- package/dist/sandbox.js +10 -0
- package/dist/virtual-modules/background-entrypoint.js +1 -1
- package/dist/virtual-modules/background-entrypoint.js.map +1 -1
- package/dist/virtual-modules/content-script-entrypoint.js +5 -1
- package/dist/virtual-modules/content-script-entrypoint.js.map +1 -1
- package/dist/virtual-modules/unlisted-script-entrypoint.js +33 -0
- package/dist/virtual-modules/unlisted-script-entrypoint.js.map +1 -0
- package/package.json +18 -11
package/dist/client.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ declare class ContentScriptContext extends AbortController {
|
|
|
11
11
|
#private;
|
|
12
12
|
private readonly contentScriptName;
|
|
13
13
|
readonly options?: Omit<ContentScriptDefinition, "main"> | undefined;
|
|
14
|
-
static SCRIPT_STARTED_MESSAGE_TYPE
|
|
14
|
+
private static SCRIPT_STARTED_MESSAGE_TYPE;
|
|
15
15
|
constructor(contentScriptName: string, options?: Omit<ContentScriptDefinition, "main"> | undefined);
|
|
16
16
|
get isInvalid(): boolean;
|
|
17
17
|
get isValid(): boolean;
|
|
@@ -72,6 +72,7 @@ declare class ContentScriptContext extends AbortController {
|
|
|
72
72
|
*/
|
|
73
73
|
addEventListener(target: any, type: string, handler: (event: Event) => void, options?: AddEventListenerOptions): void;
|
|
74
74
|
/**
|
|
75
|
+
* @internal
|
|
75
76
|
* Abort the abort controller and execute all `onInvalidated` listeners.
|
|
76
77
|
*/
|
|
77
78
|
notifyInvalidated(): void;
|
|
@@ -139,7 +140,7 @@ interface ContentScriptDefinition extends ExcludableEntrypoint {
|
|
|
139
140
|
*/
|
|
140
141
|
main(ctx: ContentScriptContext): void | Promise<void>;
|
|
141
142
|
}
|
|
142
|
-
interface
|
|
143
|
+
interface BackgroundDefinition extends ExcludableEntrypoint {
|
|
143
144
|
type?: PerBrowserOption<'module'>;
|
|
144
145
|
persistent?: PerBrowserOption<boolean>;
|
|
145
146
|
main(): void;
|
|
@@ -166,14 +167,14 @@ interface ExcludableEntrypoint {
|
|
|
166
167
|
|
|
167
168
|
declare function defineContentScript(definition: ContentScriptDefinition): ContentScriptDefinition;
|
|
168
169
|
|
|
169
|
-
declare function defineBackground(main: () => void):
|
|
170
|
-
declare function defineBackground(definition:
|
|
170
|
+
declare function defineBackground(main: () => void): BackgroundDefinition;
|
|
171
|
+
declare function defineBackground(definition: BackgroundDefinition): BackgroundDefinition;
|
|
171
172
|
|
|
172
173
|
/**
|
|
173
174
|
* Utility for mounting content script UI's with isolated styles. Automatically removed from the DOM
|
|
174
175
|
* when the content script's context is invalidated.
|
|
175
176
|
*
|
|
176
|
-
* See
|
|
177
|
+
* See https://wxt.dev/entrypoints/content-scripts.html#ui for full documentation.
|
|
177
178
|
*
|
|
178
179
|
* @example
|
|
179
180
|
* // entrypoints/example-ui.content/index.ts
|
|
@@ -197,8 +198,8 @@ declare function defineBackground(definition: BackgroundScriptDefintition): Back
|
|
|
197
198
|
* }
|
|
198
199
|
* })
|
|
199
200
|
*/
|
|
200
|
-
declare function createContentScriptUi<
|
|
201
|
-
interface ContentScriptUi<
|
|
201
|
+
declare function createContentScriptUi<TApp>(ctx: ContentScriptContext, options: ContentScriptUiOptions<TApp>): Promise<ContentScriptUi<TApp>>;
|
|
202
|
+
interface ContentScriptUi<TApp> {
|
|
202
203
|
/**
|
|
203
204
|
* The `HTMLElement` hosting the shadow root used to isolate the UI's styles. This is the element
|
|
204
205
|
* that get's added to the DOM. This element's style is not isolated from the webpage.
|
|
@@ -216,7 +217,7 @@ interface ContentScriptUi<T> {
|
|
|
216
217
|
/**
|
|
217
218
|
* Custom data returned from the `options.mount` function.
|
|
218
219
|
*/
|
|
219
|
-
mounted:
|
|
220
|
+
mounted: TApp;
|
|
220
221
|
/**
|
|
221
222
|
* Function that mounts or remounts the UI on the page.
|
|
222
223
|
*/
|
|
@@ -226,7 +227,7 @@ interface ContentScriptUi<T> {
|
|
|
226
227
|
*/
|
|
227
228
|
remove: () => void;
|
|
228
229
|
}
|
|
229
|
-
interface BaseContentScriptUiOptions<
|
|
230
|
+
interface BaseContentScriptUiOptions<TApp> {
|
|
230
231
|
/**
|
|
231
232
|
* The name of the custom component used to host the ShadowRoot. Must be kebab-case.
|
|
232
233
|
*/
|
|
@@ -253,22 +254,22 @@ interface BaseContentScriptUiOptions<T> {
|
|
|
253
254
|
*
|
|
254
255
|
* Optionally return a value that can be accessed at `ui.mounted` or in the `onRemove` callback.
|
|
255
256
|
*/
|
|
256
|
-
mount: (container: Element) =>
|
|
257
|
+
mount: (container: Element) => TApp;
|
|
257
258
|
/**
|
|
258
259
|
* Callback called when the UI is removed from the webpage. Use to cleanup your UI, like
|
|
259
260
|
* unmounting your vue or react apps.
|
|
260
261
|
*/
|
|
261
|
-
onRemove?: (mounted:
|
|
262
|
+
onRemove?: (mounted: TApp) => void;
|
|
262
263
|
/**
|
|
263
264
|
* Custom CSS text to apply to the UI. If your content script imports/generates CSS and you've
|
|
264
265
|
* set `cssInjectionMode: "ui"`, the imported CSS will be included automatically. You do not need
|
|
265
266
|
* to pass those styles in here. This is for any additional styles not in the imported CSS.
|
|
266
267
|
*
|
|
267
|
-
* See
|
|
268
|
+
* See https://wxt.dev/entrypoints/content-scripts.html#ui for more info.
|
|
268
269
|
*/
|
|
269
270
|
css?: string;
|
|
270
271
|
}
|
|
271
|
-
type OverlayContentScriptUiOptions<
|
|
272
|
+
type OverlayContentScriptUiOptions<TApp> = BaseContentScriptUiOptions<TApp> & {
|
|
272
273
|
type: 'overlay';
|
|
273
274
|
/**
|
|
274
275
|
* When using `type: "overlay"`, the mounted element is 0px by 0px in size. Alignment specifies
|
|
@@ -283,7 +284,7 @@ type OverlayContentScriptUiOptions<T> = BaseContentScriptUiOptions<T> & {
|
|
|
283
284
|
*/
|
|
284
285
|
zIndex?: number;
|
|
285
286
|
};
|
|
286
|
-
type ModalContentScriptUiOptions<
|
|
287
|
+
type ModalContentScriptUiOptions<TApp> = BaseContentScriptUiOptions<TApp> & {
|
|
287
288
|
type: 'modal';
|
|
288
289
|
/**
|
|
289
290
|
* The `z-index` used on the `shadowHost`. Set to a positive number to show your UI over website
|
|
@@ -291,11 +292,11 @@ type ModalContentScriptUiOptions<T> = BaseContentScriptUiOptions<T> & {
|
|
|
291
292
|
*/
|
|
292
293
|
zIndex?: number;
|
|
293
294
|
};
|
|
294
|
-
type InlineContentScriptUiOptions<
|
|
295
|
+
type InlineContentScriptUiOptions<TApp> = BaseContentScriptUiOptions<TApp> & {
|
|
295
296
|
type: 'inline';
|
|
296
297
|
};
|
|
297
298
|
type ContentScriptUiOverlayAlignment = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
298
299
|
type ContentScriptAppendMode = 'last' | 'first' | 'replace' | 'before' | 'after';
|
|
299
|
-
type ContentScriptUiOptions<
|
|
300
|
+
type ContentScriptUiOptions<TApp> = OverlayContentScriptUiOptions<TApp> | ModalContentScriptUiOptions<TApp> | InlineContentScriptUiOptions<TApp>;
|
|
300
301
|
|
|
301
302
|
export { ContentScriptAppendMode, ContentScriptContext, ContentScriptUi, ContentScriptUiOptions, ContentScriptUiOverlayAlignment, InlineContentScriptUiOptions, ModalContentScriptUiOptions, OverlayContentScriptUiOptions, createContentScriptUi, defineBackground, defineContentScript };
|
package/dist/client.js
CHANGED
|
@@ -272,6 +272,7 @@ var ContentScriptContext = class _ContentScriptContext extends AbortController {
|
|
|
272
272
|
);
|
|
273
273
|
}
|
|
274
274
|
/**
|
|
275
|
+
* @internal
|
|
275
276
|
* Abort the abort controller and execute all `onInvalidated` listeners.
|
|
276
277
|
*/
|
|
277
278
|
notifyInvalidated() {
|
|
@@ -305,4 +306,4 @@ export {
|
|
|
305
306
|
defineBackground,
|
|
306
307
|
defineContentScript
|
|
307
308
|
};
|
|
308
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NsaWVudC9kZWZpbmVDb250ZW50U2NyaXB0LnRzIiwgIi4uL3NyYy9jbGllbnQvZGVmaW5lQmFja2dyb3VuZC50cyIsICIuLi9zcmMvY2xpZW50L2NyZWF0ZUNvbnRlbnRTY3JpcHRVaS50cyIsICIuLi9zcmMvY2xpZW50L2Jyb3dzZXIudHMiLCAiLi4vc3JjL2NsaWVudC91dGlscy9sb2dnZXIudHMiLCAiLi4vc3JjL2NsaWVudC91dGlscy9Db250ZW50U2NyaXB0Q29udGV4dC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQ29udGVudFNjcmlwdERlZmluaXRpb24gfSBmcm9tICcuLi9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUNvbnRlbnRTY3JpcHQoXG4gIGRlZmluaXRpb246IENvbnRlbnRTY3JpcHREZWZpbml0aW9uLFxuKTogQ29udGVudFNjcmlwdERlZmluaXRpb24ge1xuICByZXR1cm4gZGVmaW5pdGlvbjtcbn1cbiIsICJpbXBvcnQgeyBCYWNrZ3JvdW5kU2NyaXB0RGVmaW50aXRpb24gfSBmcm9tICcuLic7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVCYWNrZ3JvdW5kKG1haW46ICgpID0+IHZvaWQpOiBCYWNrZ3JvdW5kU2NyaXB0RGVmaW50aXRpb247XG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lQmFja2dyb3VuZChcbiAgZGVmaW5pdGlvbjogQmFja2dyb3VuZFNjcmlwdERlZmludGl0aW9uLFxuKTogQmFja2dyb3VuZFNjcmlwdERlZmludGl0aW9uO1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUJhY2tncm91bmQoXG4gIGFyZzogKCgpID0+IHZvaWQpIHwgQmFja2dyb3VuZFNjcmlwdERlZmludGl0aW9uLFxuKTogQmFja2dyb3VuZFNjcmlwdERlZmludGl0aW9uIHtcbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbicpIHJldHVybiB7IG1haW46IGFyZyB9O1xuICByZXR1cm4gYXJnO1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUlzb2xhdGVkRWxlbWVudCB9IGZyb20gJ0B3ZWJleHQtY29yZS9pc29sYXRlZC1lbGVtZW50JztcbmltcG9ydCB7IGJyb3dzZXIgfSBmcm9tICcuL2Jyb3dzZXInO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi91dGlscy9sb2dnZXInO1xuaW1wb3J0IHsgQ29udGVudFNjcmlwdENvbnRleHQgfSBmcm9tICcuJztcblxuLyoqXG4gKiBVdGlsaXR5IGZvciBtb3VudGluZyBjb250ZW50IHNjcmlwdCBVSSdzIHdpdGggaXNvbGF0ZWQgc3R5bGVzLiBBdXRvbWF0aWNhbGx5IHJlbW92ZWQgZnJvbSB0aGUgRE9NXG4gKiB3aGVuIHRoZSBjb250ZW50IHNjcmlwdCdzIGNvbnRleHQgaXMgaW52YWxpZGF0ZWQuXG4gKlxuICogU2VlIDxodHRwczovL3d4dC5kZXYvZW50cnlwb2ludHMvY29udGVudC1zY3JpcHRzLmh0bWwjdWk+IGZvciBmdWxsIGRvY3VtZW50YXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIGVudHJ5cG9pbnRzL2V4YW1wbGUtdWkuY29udGVudC9pbmRleC50c1xuICogaW1wb3J0IFwiLi9zdHlsZS5jc3NcIlxuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbnRlbnRTY3JpcHQoe1xuICogICBtYXRjaGVzOiBbXCIqOi8vKi5nb29nbGUuY29tLypcIl0sXG4gKiAgIGNzc0luamVjdGlvbk1vZGU6IFwidWlcIixcbiAqXG4gKiAgIGFzeW5jIG1haW4oY3R4KSB7XG4gKiAgICAgY29uc3QgdWkgPSBhd2FpdCBjcmVhdGVDb250ZW50U2NyaXB0VWkoY3R4LCB7XG4gKiAgICAgICBuYW1lOiBcImV4YW1wbGUtb3ZlcmxheVwiLFxuICogICAgICAgdHlwZTogXCJtb2RhbFwiLFxuICogICAgICAgbW91bnQoY29udGFpbmVyKSB7XG4gKiAgICAgICAgIGNvbnN0IGFwcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gKiAgICAgICAgIGFwcC50ZXh0Q29udGVudCA9IFwiQ29udGVudCBTY3JpcHQgVUlcIjtcbiAqICAgICAgICAgY29udGFpbmVyLmFwcGVuZChhcHApO1xuICogICAgICAgfVxuICogICAgIH0pXG4gKiAgICAgdWkubW91bnQoKTtcbiAqICAgfVxuICogfSlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbnRlbnRTY3JpcHRVaTxUPihcbiAgY3R4OiBDb250ZW50U2NyaXB0Q29udGV4dCxcbiAgb3B0aW9uczogQ29udGVudFNjcmlwdFVpT3B0aW9uczxUPixcbik6IFByb21pc2U8Q29udGVudFNjcmlwdFVpPFQ+PiB7XG4gIGNvbnN0IGNzcyA9IFtvcHRpb25zLmNzcyA/PyAnJ107XG4gIGlmIChjdHgub3B0aW9ucz8uY3NzSW5qZWN0aW9uTW9kZSA9PT0gJ3VpJykge1xuICAgIGNzcy5wdXNoKGF3YWl0IGxvYWRDc3MoKSk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgaXNvbGF0ZWRFbGVtZW50OiB1aUNvbnRhaW5lcixcbiAgICBwYXJlbnRFbGVtZW50OiBzaGFkb3dIb3N0LFxuICAgIHNoYWRvdyxcbiAgfSA9IGF3YWl0IGNyZWF0ZUlzb2xhdGVkRWxlbWVudCh7XG4gICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgIGNzczoge1xuICAgICAgdGV4dENvbnRlbnQ6IGNzcy5qb2luKCdcXG4nKS50cmltKCksXG4gICAgfSxcbiAgICBtb2RlOiAnb3BlbicsXG4gIH0pO1xuXG4gIGNvbnN0IGdldEFuY2hvciA9ICgpOiBFbGVtZW50IHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAob3B0aW9ucy5hbmNob3IgPT0gbnVsbCkgcmV0dXJuIGRvY3VtZW50LmJvZHk7XG5cbiAgICBsZXQgcmVzb2x2ZWQgPVxuICAgICAgdHlwZW9mIG9wdGlvbnMuYW5jaG9yID09PSAnZnVuY3Rpb24nID8gb3B0aW9ucy5hbmNob3IoKSA6IG9wdGlvbnMuYW5jaG9yO1xuICAgIGlmICh0eXBlb2YgcmVzb2x2ZWQgPT09ICdzdHJpbmcnKVxuICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8RWxlbWVudD4ocmVzb2x2ZWQpID8/IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzb2x2ZWQgPz8gdW5kZWZpbmVkO1xuICB9O1xuXG4gIGxldCBtb3VudGVkOiBUO1xuXG4gIGNvbnN0IG1vdW50ID0gKCkgPT4ge1xuICAgIGNvbnN0IGFuY2hvciA9IGdldEFuY2hvcigpO1xuICAgIGlmIChhbmNob3IgPT0gbnVsbClcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAnRmFpbGVkIHRvIG1vdW50IGNvbnRlbnQgc2NyaXB0IHVpOiBjb3VsZCBub3QgZmluZCBhbmNob3IgZWxlbWVudCcsXG4gICAgICApO1xuXG4gICAgLy8gTW91bnQgVUkgaW5zaWRlIHNoYWRvdyByb290XG4gICAgbW91bnRlZCA9IG9wdGlvbnMubW91bnQodWlDb250YWluZXIpO1xuXG4gICAgLy8gQWRkIHNoYWRvdyByb290IGVsZW1lbnQgdG8gRE9NXG4gICAgc3dpdGNoIChvcHRpb25zLmFwcGVuZCkge1xuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICBjYXNlICdsYXN0JzpcbiAgICAgICAgYW5jaG9yLmFwcGVuZChzaGFkb3dIb3N0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmaXJzdCc6XG4gICAgICAgIGlmIChhbmNob3IuZmlyc3RDaGlsZCkge1xuICAgICAgICAgIGFuY2hvci5pbnNlcnRCZWZvcmUoc2hhZG93SG9zdCwgYW5jaG9yLmZpcnN0Q2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFuY2hvci5hcHBlbmQoc2hhZG93SG9zdCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXBsYWNlJzpcbiAgICAgICAgYW5jaG9yLnJlcGxhY2VXaXRoKHNoYWRvd0hvc3QpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FmdGVyJzpcbiAgICAgICAgYW5jaG9yLnJlcGxhY2VXaXRoKGFuY2hvciwgc2hhZG93SG9zdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYmVmb3JlJzpcbiAgICAgICAgYW5jaG9yLnJlcGxhY2VXaXRoKHNoYWRvd0hvc3QsIGFuY2hvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgb3B0aW9ucy5hcHBlbmQoYW5jaG9yLCBzaGFkb3dIb3N0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgdHlwZXNcbiAgICBpZiAob3B0aW9ucy50eXBlICE9PSAnaW5saW5lJykge1xuICAgICAgaWYgKG9wdGlvbnMuekluZGV4ICE9IG51bGwpXG4gICAgICAgIHNoYWRvd0hvc3Quc3R5bGUuekluZGV4ID0gU3RyaW5nKG9wdGlvbnMuekluZGV4KTtcblxuICAgICAgc2hhZG93SG9zdC5zdHlsZS5vdmVyZmxvdyA9ICd2aXNpYmxlJztcbiAgICAgIHNoYWRvd0hvc3Quc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgICAgc2hhZG93SG9zdC5zdHlsZS53aWR0aCA9ICcwJztcbiAgICAgIHNoYWRvd0hvc3Quc3R5bGUuaGVpZ2h0ID0gJzAnO1xuICAgICAgc2hhZG93SG9zdC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICAgICAgY29uc3QgaHRtbCA9IHNoYWRvdy5xdWVyeVNlbGVjdG9yKCdodG1sJykhO1xuICAgICAgLy8gSFRNTCBkb2Vzbid0IGV4aXN0IGluIHRlc3RzXG4gICAgICBpZiAob3B0aW9ucy50eXBlID09PSAnb3ZlcmxheScpIHtcbiAgICAgICAgaHRtbC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIGlmIChvcHRpb25zLmFsaWdubWVudD8uc3RhcnRzV2l0aCgnYm90dG9tLScpKSBodG1sLnN0eWxlLmJvdHRvbSA9ICcwJztcbiAgICAgICAgZWxzZSBodG1sLnN0eWxlLnRvcCA9ICcwJztcblxuICAgICAgICBpZiAob3B0aW9ucy5hbGlnbm1lbnQ/LmVuZHNXaXRoKCctcmlnaHQnKSkgaHRtbC5zdHlsZS5yaWdodCA9ICcwJztcbiAgICAgICAgZWxzZSBodG1sLnN0eWxlLmxlZnQgPSAnMCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBodG1sLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcbiAgICAgICAgaHRtbC5zdHlsZS50b3AgPSAnMCc7XG4gICAgICAgIGh0bWwuc3R5bGUuYm90dG9tID0gJzAnO1xuICAgICAgICBodG1sLnN0eWxlLmxlZnQgPSAnMCc7XG4gICAgICAgIGh0bWwuc3R5bGUucmlnaHQgPSAnMCc7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlbW92ZSA9ICgpID0+IHtcbiAgICAvLyBEZXRhdGNoIHNoYWRvdyByb290IGZyb20gRE9NXG4gICAgc2hhZG93SG9zdC5yZW1vdmUoKTtcbiAgICAvLyBDbGVhbnVwIG1vdW50ZWQgc3RhdGVcbiAgICBvcHRpb25zLm9uUmVtb3ZlPy4obW91bnRlZCk7XG4gICAgLy8gUmVtb3ZlIGNoaWxkcmVuIGZyb20gdWlDb250YWluZXJcbiAgICB3aGlsZSAodWlDb250YWluZXIubGFzdENoaWxkKVxuICAgICAgdWlDb250YWluZXIucmVtb3ZlQ2hpbGQodWlDb250YWluZXIubGFzdENoaWxkKTtcbiAgfTtcblxuICBjdHgub25JbnZhbGlkYXRlZChyZW1vdmUpO1xuXG4gIHJldHVybiB7XG4gICAgc2hhZG93LFxuICAgIHNoYWRvd0hvc3QsXG4gICAgdWlDb250YWluZXIsXG4gICAgbW91bnQsXG4gICAgcmVtb3ZlLFxuICAgIG1vdW50ZWQ6IG1vdW50ZWQhLFxuICB9O1xufVxuXG4vKipcbiAqIExvYWQgdGhlIENTUyBmb3IgdGhlIGN1cnJlbnQgZW50cnlwb2ludC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZENzcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB1cmwgPSBicm93c2VyLnJ1bnRpbWUuZ2V0VVJMKGAvY29udGVudC1zY3JpcHRzLyR7X19FTlRSWVBPSU5UX199LmNzc2ApO1xuICB0cnkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHVybCk7XG4gICAgY29uc3QgY3NzID0gYXdhaXQgcmVzLnRleHQoKTtcblxuICAgIC8vIFJlcGxhY2UgOnJvb3Qgc2VsZWN0b3JzIHdpdGggOmhvc3Qgc2luY2Ugd2UncmUgaW4gYSBzaGFkb3cgcm9vdFxuICAgIHJldHVybiBjc3MucmVwbGFjZUFsbCgnOnJvb3QnLCAnOmhvc3QnKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLndhcm4oXG4gICAgICBgRmFpbGVkIHRvIGxvYWQgc3R5bGVzIEAgJHt1cmx9LiBEaWQgeW91IGZvcmdldCB0byBpbXBvcnQgdGhlIHN0eWxlc2hlZXQgaW4geW91ciBlbnRyeXBvaW50P2AsXG4gICAgICBlcnIsXG4gICAgKTtcbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50U2NyaXB0VWk8VD4ge1xuICAvKipcbiAgICogVGhlIGBIVE1MRWxlbWVudGAgaG9zdGluZyB0aGUgc2hhZG93IHJvb3QgdXNlZCB0byBpc29sYXRlIHRoZSBVSSdzIHN0eWxlcy4gVGhpcyBpcyB0aGUgZWxlbWVudFxuICAgKiB0aGF0IGdldCdzIGFkZGVkIHRvIHRoZSBET00uIFRoaXMgZWxlbWVudCdzIHN0eWxlIGlzIG5vdCBpc29sYXRlZCBmcm9tIHRoZSB3ZWJwYWdlLlxuICAgKi9cbiAgc2hhZG93SG9zdDogSFRNTEVsZW1lbnQ7XG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVyIGVsZW1lbnQgaW5zaWRlIHRoZSBgU2hhZG93Um9vdGAgd2hvc2Ugc3R5bGVzIGFyZSBpc29sYXRlZC4gVGhlIFVJIGlzIG1vdW50ZWRcbiAgICogaW5zaWRlIHRoaXMgYEhUTUxFbGVtZW50YC5cbiAgICovXG4gIHVpQ29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgLyoqXG4gICAqIFRoZSBzaGFkb3cgcm9vdCBwZXJmb3JtaW5nIHRoZSBpc29sYXRpb24uXG4gICAqL1xuICBzaGFkb3c6IFNoYWRvd1Jvb3Q7XG4gIC8qKlxuICAgKiBDdXN0b20gZGF0YSByZXR1cm5lZCBmcm9tIHRoZSBgb3B0aW9ucy5tb3VudGAgZnVuY3Rpb24uXG4gICAqL1xuICBtb3VudGVkOiBUO1xuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCBtb3VudHMgb3IgcmVtb3VudHMgdGhlIFVJIG9uIHRoZSBwYWdlLlxuICAgKi9cbiAgbW91bnQ6ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0aGF0IHJlbW92ZXMgdGhlIFVJIGZyb20gdGhlIHdlYnBhZ2UuXG4gICAqL1xuICByZW1vdmU6ICgpID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBCYXNlQ29udGVudFNjcmlwdFVpT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY3VzdG9tIGNvbXBvbmVudCB1c2VkIHRvIGhvc3QgdGhlIFNoYWRvd1Jvb3QuIE11c3QgYmUga2ViYWItY2FzZS5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEluIGNvbWJpbmF0aW9uIHdpdGggYGFuY2hvcmAsIGRlY2lkZSBob3cgdG8gYWRkIHRoZSBVSSB0byB0aGUgRE9NLlxuICAgKlxuICAgKiAtIGBcImxhc3RcImAgKGRlZmF1bHQpIC0gQWRkIHRoZSBVSSBhcyB0aGUgbGFzdCBjaGlsZCBvZiB0aGUgYGFuY2hvcmAgZWxlbWVudFxuICAgKiAtIGBcImZpcnN0XCJgIC0gQWRkIHRoZSBVSSBhcyB0aGUgbGFzdCBjaGlsZCBvZiB0aGUgYGFuY2hvcmAgZWxlbWVudFxuICAgKiAtIGBcInJlcGxhY2VcImAgLSBSZXBsYWNlIHRoZSBgYW5jaG9yYCBlbGVtZW50IHdpdGggdGhlIFVJLlxuICAgKiAtIGBcImJlZm9yZVwiYCAtIEFkZCB0aGUgVUkgYXMgdGhlIHNpYmxpbmcgYmVmb3JlIHRoZSBgYW5jaG9yYCBlbGVtZW50XG4gICAqIC0gYFwiYWZ0ZXJcImAgLSBBZGQgdGhlIFVJIGFzIHRoZSBzaWJsaW5nIGFmdGVyIHRoZSBgYW5jaG9yYCBlbGVtZW50XG4gICAqIC0gYChhbmNob3IsIHVpKSA9PiB2b2lkYCAtIEN1c3RvbWl6YWJsZSBmdW5jdGlvbiB0aGF0IGxldCdzIHlvdSBhZGQgdGhlIFVJIHRvIHRoZSBET01cbiAgICovXG4gIGFwcGVuZD86IENvbnRlbnRTY3JpcHRBcHBlbmRNb2RlIHwgKChhbmNob3I6IEVsZW1lbnQsIHVpOiBFbGVtZW50KSA9PiB2b2lkKTtcbiAgLyoqXG4gICAqIEEgQ1NTIHNlbGVjdG9yLCBlbGVtZW50LCBvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgb25lIG9mIHRoZSB0d28uIEFsb25nIHdpdGggYGFwcGVuZGAsIHRoZVxuICAgKiBgYW5jaG9yYCBkaWN0YXRlcyB3aGVyZSBpbiB0aGUgcGFnZSB0aGUgVUkgd2lsbCBiZSBhZGRlZC5cbiAgICovXG4gIGFuY2hvcj86XG4gICAgfCBzdHJpbmdcbiAgICB8IEVsZW1lbnRcbiAgICB8IG51bGxcbiAgICB8IHVuZGVmaW5lZFxuICAgIHwgKCgpID0+IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkKTtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGV4ZWN1dGVkIHdoZW4gbW91bnRpbmcgdGhlIFVJLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBjcmVhdGUgYW5kIGFwcGVuZCB0aGUgVUkgdG8gdGhlXG4gICAqIGBjb250YWluZXJgIGVsZW1lbnQuIEl0IGlzIGNhbGxlZCBldmVyeSB0aW1lIGB1aS5tb3VudCgpYCBpcyBjYWxsZWRcbiAgICpcbiAgICogT3B0aW9uYWxseSByZXR1cm4gYSB2YWx1ZSB0aGF0IGNhbiBiZSBhY2Nlc3NlZCBhdCBgdWkubW91bnRlZGAgb3IgaW4gdGhlIGBvblJlbW92ZWAgY2FsbGJhY2suXG4gICAqL1xuICBtb3VudDogKGNvbnRhaW5lcjogRWxlbWVudCkgPT4gVDtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGNhbGxlZCB3aGVuIHRoZSBVSSBpcyByZW1vdmVkIGZyb20gdGhlIHdlYnBhZ2UuIFVzZSB0byBjbGVhbnVwIHlvdXIgVUksIGxpa2VcbiAgICogdW5tb3VudGluZyB5b3VyIHZ1ZSBvciByZWFjdCBhcHBzLlxuICAgKi9cbiAgb25SZW1vdmU/OiAobW91bnRlZDogVCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEN1c3RvbSBDU1MgdGV4dCB0byBhcHBseSB0byB0aGUgVUkuIElmIHlvdXIgY29udGVudCBzY3JpcHQgaW1wb3J0cy9nZW5lcmF0ZXMgQ1NTIGFuZCB5b3UndmVcbiAgICogc2V0IGBjc3NJbmplY3Rpb25Nb2RlOiBcInVpXCJgLCB0aGUgaW1wb3J0ZWQgQ1NTIHdpbGwgYmUgaW5jbHVkZWQgYXV0b21hdGljYWxseS4gWW91IGRvIG5vdCBuZWVkXG4gICAqIHRvIHBhc3MgdGhvc2Ugc3R5bGVzIGluIGhlcmUuIFRoaXMgaXMgZm9yIGFueSBhZGRpdGlvbmFsIHN0eWxlcyBub3QgaW4gdGhlIGltcG9ydGVkIENTUy5cbiAgICpcbiAgICogU2VlIDxodHRwczovL3d4dC5kZXYvZW50cnlwb2ludHMvY29udGVudC1zY3JpcHRzLmh0bWwjdWk+IGZvciBtb3JlIGluZm8uXG4gICAqL1xuICBjc3M/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIE92ZXJsYXlDb250ZW50U2NyaXB0VWlPcHRpb25zPFQ+ID0gQmFzZUNvbnRlbnRTY3JpcHRVaU9wdGlvbnM8VD4gJiB7XG4gIHR5cGU6ICdvdmVybGF5JztcbiAgLyoqXG4gICAqIFdoZW4gdXNpbmcgYHR5cGU6IFwib3ZlcmxheVwiYCwgdGhlIG1vdW50ZWQgZWxlbWVudCBpcyAwcHggYnkgMHB4IGluIHNpemUuIEFsaWdubWVudCBzcGVjaWZpZXNcbiAgICogd2hpY2ggY29ybmVyIGlzIGFsaWduZWQgd2l0aCB0aGF0IDB4MCBwaXhlbCBzcGFjZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ0b3AtbGVmdFwiXG4gICAqL1xuICBhbGlnbm1lbnQ/OiBDb250ZW50U2NyaXB0VWlPdmVybGF5QWxpZ25tZW50O1xuICAvKipcbiAgICogVGhlIGB6LWluZGV4YCB1c2VkIG9uIHRoZSBgc2hhZG93SG9zdGAuIFNldCB0byBhIHBvc2l0aXZlIG51bWJlciB0byBzaG93IHlvdXIgVUkgb3ZlciB3ZWJzaXRlXG4gICAqIGNvbnRlbnQuXG4gICAqL1xuICB6SW5kZXg/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBNb2RhbENvbnRlbnRTY3JpcHRVaU9wdGlvbnM8VD4gPSBCYXNlQ29udGVudFNjcmlwdFVpT3B0aW9uczxUPiAmIHtcbiAgdHlwZTogJ21vZGFsJztcbiAgLyoqXG4gICAqIFRoZSBgei1pbmRleGAgdXNlZCBvbiB0aGUgYHNoYWRvd0hvc3RgLiBTZXQgdG8gYSBwb3NpdGl2ZSBudW1iZXIgdG8gc2hvdyB5b3VyIFVJIG92ZXIgd2Vic2l0ZVxuICAgKiBjb250ZW50LlxuICAgKi9cbiAgekluZGV4PzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgSW5saW5lQ29udGVudFNjcmlwdFVpT3B0aW9uczxUPiA9IEJhc2VDb250ZW50U2NyaXB0VWlPcHRpb25zPFQ+ICYge1xuICB0eXBlOiAnaW5saW5lJztcbn07XG5cbmV4cG9ydCB0eXBlIENvbnRlbnRTY3JpcHRVaU92ZXJsYXlBbGlnbm1lbnQgPVxuICB8ICd0b3AtbGVmdCdcbiAgfCAndG9wLXJpZ2h0J1xuICB8ICdib3R0b20tbGVmdCdcbiAgfCAnYm90dG9tLXJpZ2h0JztcblxuZXhwb3J0IHR5cGUgQ29udGVudFNjcmlwdEFwcGVuZE1vZGUgPVxuICB8ICdsYXN0J1xuICB8ICdmaXJzdCdcbiAgfCAncmVwbGFjZSdcbiAgfCAnYmVmb3JlJ1xuICB8ICdhZnRlcic7XG5cbmV4cG9ydCB0eXBlIENvbnRlbnRTY3JpcHRVaU9wdGlvbnM8VD4gPVxuICB8IE92ZXJsYXlDb250ZW50U2NyaXB0VWlPcHRpb25zPFQ+XG4gIHwgTW9kYWxDb250ZW50U2NyaXB0VWlPcHRpb25zPFQ+XG4gIHwgSW5saW5lQ29udGVudFNjcmlwdFVpT3B0aW9uczxUPjtcbiIsICJpbXBvcnQgb3JpZ2luYWxCcm93c2VyLCB7IEJyb3dzZXIsIFJ1bnRpbWUsIEkxOG4gfSBmcm9tICd3ZWJleHRlbnNpb24tcG9seWZpbGwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1Z21lbnRlZEJyb3dzZXIgZXh0ZW5kcyBCcm93c2VyIHtcbiAgcnVudGltZTogV3h0UnVudGltZTtcbiAgaTE4bjogV3h0STE4bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXeHRSdW50aW1lIGV4dGVuZHMgUnVudGltZS5TdGF0aWMge1xuICAvLyBPdmVycmlkZW4gcGVyLXByb2plY3Rcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXeHRJMThuIGV4dGVuZHMgSTE4bi5TdGF0aWMge1xuICAvLyBPdmVycmlkZW4gcGVyLXByb2plY3Rcbn1cblxuZXhwb3J0IGNvbnN0IGJyb3dzZXI6IEF1Z21lbnRlZEJyb3dzZXIgPSBvcmlnaW5hbEJyb3dzZXI7XG4iLCAiZnVuY3Rpb24gcHJpbnQobWV0aG9kOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQsIC4uLmFyZ3M6IGFueVtdKSB7XG4gIGlmIChpbXBvcnQubWV0YS5lbnYuTU9ERSA9PT0gJ3Byb2R1Y3Rpb24nKSByZXR1cm47XG5cbiAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhcmdzLnNoaWZ0KCk7XG4gICAgbWV0aG9kKGBbd3h0XSAke21lc3NhZ2V9YCwgLi4uYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgbWV0aG9kKCdbd3h0XScsIC4uLmFyZ3MpO1xuICB9XG59XG5cbi8qKlxuICogV3JhcHBlciBhcm91bmQgYGNvbnNvbGVgIHdpdGggYSBcIlt3eHRdXCIgcHJlZml4XG4gKi9cbmV4cG9ydCBjb25zdCBsb2dnZXIgPSB7XG4gIGRlYnVnOiAoLi4uYXJnczogYW55W10pID0+IHByaW50KGNvbnNvbGUuZGVidWcsIC4uLmFyZ3MpLFxuICBsb2c6ICguLi5hcmdzOiBhbnlbXSkgPT4gcHJpbnQoY29uc29sZS5sb2csIC4uLmFyZ3MpLFxuICB3YXJuOiAoLi4uYXJnczogYW55W10pID0+IHByaW50KGNvbnNvbGUud2FybiwgLi4uYXJncyksXG4gIGVycm9yOiAoLi4uYXJnczogYW55W10pID0+IHByaW50KGNvbnNvbGUuZXJyb3IsIC4uLmFyZ3MpLFxufTtcbiIsICJpbXBvcnQgeyBDb250ZW50U2NyaXB0RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgYnJvd3NlciB9IGZyb20gJy4uL2Jyb3dzZXInO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuXG4vKipcbiAqIEV4dGVuZHMgW2BBYm9ydENvbnRyb2xsZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQWJvcnRDb250cm9sbGVyKS5cbiAqIFVzZWQgdG8gZGV0ZWN0IGFuZCBzdG9wIGNvbnRlbnQgc2NyaXB0IGNvZGUgd2hlbiB0aGUgc2NyaXB0IGlzIGludmFsaWRhdGVkLlxuICpcbiAqIEl0IGFsc28gcHJvdmlkZXMgc2V2ZXJhbCB1dGlsaXRpZXMgbGlrZSBgY3R4LnNldFRpbWVvdXRgIGFuZCBgY3R4LnNldEludGVydmFsYCB0aGF0IHNob3VsZCBiZSB1c2VkIGluXG4gKiBjb250ZW50IHNjcmlwdHMgaW5zdGVhZCBvZiBgd2luZG93LnNldFRpbWVvdXRgIG9yIGB3aW5kb3cuc2V0SW50ZXJ2YWxgLlxuICovXG5leHBvcnQgY2xhc3MgQ29udGVudFNjcmlwdENvbnRleHQgZXh0ZW5kcyBBYm9ydENvbnRyb2xsZXIge1xuICBzdGF0aWMgU0NSSVBUX1NUQVJURURfTUVTU0FHRV9UWVBFID0gJ3d4dDpjb250ZW50LXNjcmlwdC1zdGFydGVkJztcblxuICAjaXNUb3BGcmFtZSA9IHdpbmRvdy5zZWxmID09PSB3aW5kb3cudG9wO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGVudFNjcmlwdE5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9ucz86IE9taXQ8Q29udGVudFNjcmlwdERlZmluaXRpb24sICdtYWluJz4sXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAodGhpcy4jaXNUb3BGcmFtZSkge1xuICAgICAgdGhpcy4jc3RvcE9sZFNjcmlwdHMoKTtcbiAgICB9XG4gICAgdGhpcy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIFJ1biBvbiBuZXh0IHRpY2sgc28gdGhlIGxpc3RlbmVyIGl0IGFkZHMgaXNuJ3QgdHJpZ2dlcmVkIGJ5IHN0b3BPbGRTY3JpcHRcbiAgICAgIHRoaXMuI2xpc3RlbkZvck5ld2VyU2NyaXB0cygpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGlzSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICBpZiAoYnJvd3Nlci5ydW50aW1lLmlkID09IG51bGwpIHtcbiAgICAgIHRoaXMubm90aWZ5SW52YWxpZGF0ZWQoKTsgLy8gU2V0cyBgc2lnbmFsLmFib3J0ZWRgIHRvIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2lnbmFsLmFib3J0ZWQ7XG4gIH1cblxuICBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNJbnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGxpc3RlbmVyIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIGNvbnRlbnQgc2NyaXB0J3MgY29udGV4dCBpcyBpbnZhbGlkYXRlZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0byByZW1vdmUgdGhlIGxpc3RlbmVyLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBicm93c2VyLnJ1bnRpbWUub25NZXNzYWdlLmFkZExpc3RlbmVyKGNiKTtcbiAgICogY29uc3QgcmVtb3ZlSW52YWxpZGF0ZWRMaXN0ZW5lciA9IGN0eC5vbkludmFsaWRhdGVkKCgpID0+IHtcbiAgICogICBicm93c2VyLnJ1bnRpbWUub25NZXNzYWdlLnJlbW92ZUxpc3RlbmVyKGNiKTtcbiAgICogfSlcbiAgICogLy8gLi4uXG4gICAqIHJlbW92ZUludmFsaWRhdGVkTGlzdGVuZXIoKTtcbiAgICovXG4gIG9uSW52YWxpZGF0ZWQoY2I6ICgpID0+IHZvaWQpOiAoKSA9PiB2b2lkIHtcbiAgICB0aGlzLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGNiKTtcbiAgICByZXR1cm4gKCkgPT4gdGhpcy5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBjYik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgcHJvbWlzZSB0aGF0IG5ldmVyIHJlc29sdmVzLiBVc2VmdWwgaWYgeW91IGhhdmUgYW4gYXN5bmMgZnVuY3Rpb24gdGhhdCBzaG91bGRuJ3QgcnVuXG4gICAqIGFmdGVyIHRoZSBjb250ZXh0IGlzIGV4cGlyZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IGdldFZhbHVlRnJvbVN0b3JhZ2UgPSBhc3luYyAoKSA9PiB7XG4gICAqICAgaWYgKGN0eC5pc0ludmFsaWQpIHJldHVybiBjdHguYmxvY2soKTtcbiAgICpcbiAgICogICAvLyAuLi5cbiAgICogfVxuICAgKi9cbiAgYmxvY2s8VD4oKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpID0+IHtcbiAgICAgIC8vIG5vb3BcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcmFwcGVyIGFyb3VuZCBgd2luZG93LnNldEludGVydmFsYCB0aGF0IGF1dG9tYXRpY2FsbHkgY2xlYXJzIHRoZSBpbnRlcnZhbCB3aGVuIGludmFsaWRhdGVkLlxuICAgKi9cbiAgc2V0SW50ZXJ2YWwoaGFuZGxlcjogKCkgPT4gdm9pZCwgdGltZW91dD86IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgaWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1ZhbGlkKSBoYW5kbGVyKCk7XG4gICAgfSwgdGltZW91dCkgYXMgdW5rbm93biBhcyBudW1iZXI7XG4gICAgdGhpcy5vbkludmFsaWRhdGVkKCgpID0+IGNsZWFySW50ZXJ2YWwoaWQpKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlciBhcm91bmQgYHdpbmRvdy5zZXRUaW1lb3V0YCB0aGF0IGF1dG9tYXRpY2FsbHkgY2xlYXJzIHRoZSBpbnRlcnZhbCB3aGVuIGludmFsaWRhdGVkLlxuICAgKi9cbiAgc2V0VGltZW91dChoYW5kbGVyOiAoKSA9PiB2b2lkLCB0aW1lb3V0PzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBpZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZCkgaGFuZGxlcigpO1xuICAgIH0sIHRpbWVvdXQpIGFzIHVua25vd24gYXMgbnVtYmVyO1xuICAgIHRoaXMub25JbnZhbGlkYXRlZCgoKSA9PiBjbGVhclRpbWVvdXQoaWQpKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlciBhcm91bmQgYHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIHRoYXQgYXV0b21hdGljYWxseSBjYW5jZWxzIHRoZSByZXF1ZXN0IHdoZW5cbiAgICogaW52YWxpZGF0ZWQuXG4gICAqL1xuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2s6IEZyYW1lUmVxdWVzdENhbGxiYWNrKTogbnVtYmVyIHtcbiAgICBjb25zdCBpZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoLi4uYXJncykgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZCkgY2FsbGJhY2soLi4uYXJncyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uSW52YWxpZGF0ZWQoKCkgPT4gY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlciBhcm91bmQgYHdpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrYCB0aGF0IGF1dG9tYXRpY2FsbHkgY2FuY2VscyB0aGUgcmVxdWVzdCB3aGVuXG4gICAqIGludmFsaWRhdGVkLlxuICAgKi9cbiAgcmVxdWVzdElkbGVDYWxsYmFjayhcbiAgICBjYWxsYmFjazogSWRsZVJlcXVlc3RDYWxsYmFjayxcbiAgICBvcHRpb25zPzogSWRsZVJlcXVlc3RPcHRpb25zLFxuICApOiBudW1iZXIge1xuICAgIGNvbnN0IGlkID0gcmVxdWVzdElkbGVDYWxsYmFjaygoLi4uYXJncykgPT4ge1xuICAgICAgaWYgKCF0aGlzLnNpZ25hbC5hYm9ydGVkKSBjYWxsYmFjayguLi5hcmdzKTtcbiAgICB9LCBvcHRpb25zKTtcblxuICAgIHRoaXMub25JbnZhbGlkYXRlZCgoKSA9PiBjYW5jZWxJZGxlQ2FsbGJhY2soaWQpKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCBgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXJgIGFuZCByZW1vdmUgdGhlIGV2ZW50IGxpc3RlbmVyIHdoZW4gdGhlIGNvbnRleHQgaXMgaW52YWxpZGF0ZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGN0eC5hZGRFdmVudExpc3RlbmVyKHdpbmRvdywgXCJtb3VzZW1vdmVcIiwgKCkgPT4ge1xuICAgKiAgIC8vIC4uLlxuICAgKiB9KTtcbiAgICogY3R4LmFkZEV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIFwidmlzaWJpbGl0eWNoYW5nZVwiLCAoKSA9PiB7XG4gICAqICAgLy8gLi4uXG4gICAqIH0pO1xuICAgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcihcbiAgICB0YXJnZXQ6IGFueSxcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgaGFuZGxlcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCxcbiAgICBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMsXG4gICkge1xuICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyPy4odHlwZSwgaGFuZGxlciwgb3B0aW9ucyk7XG4gICAgdGhpcy5vbkludmFsaWRhdGVkKFxuICAgICAgKCkgPT4gdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXI/Lih0eXBlLCBoYW5kbGVyLCBvcHRpb25zKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFib3J0IHRoZSBhYm9ydCBjb250cm9sbGVyIGFuZCBleGVjdXRlIGFsbCBgb25JbnZhbGlkYXRlZGAgbGlzdGVuZXJzLlxuICAgKi9cbiAgbm90aWZ5SW52YWxpZGF0ZWQoKSB7XG4gICAgdGhpcy5hYm9ydCgnQ29udGVudCBzY3JpcHQgY29udGV4dCBpbnZhbGlkYXRlZCcpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBDb250ZW50IHNjcmlwdCBcIiR7dGhpcy5jb250ZW50U2NyaXB0TmFtZX1cIiBjb250ZXh0IGludmFsaWRhdGVkYCxcbiAgICApO1xuICB9XG5cbiAgI3N0b3BPbGRTY3JpcHRzKCkge1xuICAgIC8vIFVzZSBwb3N0TWVzc2FnZSBzbyBpdCBnZXQncyBzZW50IHRvIGFsbCB0aGUgZnJhbWVzIG9mIHRoZSBwYWdlLlxuICAgIHdpbmRvdy5wb3N0TWVzc2FnZShcbiAgICAgIHtcbiAgICAgICAgZXZlbnQ6IENvbnRlbnRTY3JpcHRDb250ZXh0LlNDUklQVF9TVEFSVEVEX01FU1NBR0VfVFlQRSxcbiAgICAgICAgY29udGVudFNjcmlwdE5hbWU6IHRoaXMuY29udGVudFNjcmlwdE5hbWUsXG4gICAgICB9LFxuICAgICAgJyonLFxuICAgICk7XG4gIH1cblxuICAjbGlzdGVuRm9yTmV3ZXJTY3JpcHRzKCkge1xuICAgIGNvbnN0IGNiID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgZXZlbnQuZGF0YT8udHlwZSA9PT0gQ29udGVudFNjcmlwdENvbnRleHQuU0NSSVBUX1NUQVJURURfTUVTU0FHRV9UWVBFICYmXG4gICAgICAgIGV2ZW50LmRhdGE/LmNvbnRlbnRTY3JpcHROYW1lID09PSB0aGlzLmNvbnRlbnRTY3JpcHROYW1lXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5ub3RpZnlJbnZhbGlkYXRlZCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBhZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgY2IpO1xuICAgIHRoaXMub25JbnZhbGlkYXRlZCgoKSA9PiByZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgY2IpKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUVPLFNBQVMsb0JBQ2QsWUFDeUI7QUFDekIsU0FBTztBQUNUOzs7QUNBTyxTQUFTLGlCQUNkLEtBQzZCO0FBQzdCLE1BQUksT0FBTyxRQUFRO0FBQVksV0FBTyxFQUFFLE1BQU0sSUFBSTtBQUNsRCxTQUFPO0FBQ1Q7OztBQ1hBLFNBQVMsNkJBQTZCOzs7QUNBdEMsT0FBTyxxQkFBaUQ7QUFlakQsSUFBTSxVQUE0Qjs7O0FDZnpDLFNBQVMsTUFBTSxXQUFxQyxNQUFhO0FBQy9ELE1BQUksWUFBWSxJQUFJLFNBQVM7QUFBYztBQUUzQyxNQUFJLE9BQU8sS0FBSyxDQUFDLE1BQU0sVUFBVTtBQUMvQixVQUFNLFVBQVUsS0FBSyxNQUFNO0FBQzNCLFdBQU8sU0FBUyxPQUFPLElBQUksR0FBRyxJQUFJO0FBQUEsRUFDcEMsT0FBTztBQUNMLFdBQU8sU0FBUyxHQUFHLElBQUk7QUFBQSxFQUN6QjtBQUNGO0FBS08sSUFBTSxTQUFTO0FBQUEsRUFDcEIsT0FBTyxJQUFJLFNBQWdCLE1BQU0sUUFBUSxPQUFPLEdBQUcsSUFBSTtBQUFBLEVBQ3ZELEtBQUssSUFBSSxTQUFnQixNQUFNLFFBQVEsS0FBSyxHQUFHLElBQUk7QUFBQSxFQUNuRCxNQUFNLElBQUksU0FBZ0IsTUFBTSxRQUFRLE1BQU0sR0FBRyxJQUFJO0FBQUEsRUFDckQsT0FBTyxJQUFJLFNBQWdCLE1BQU0sUUFBUSxPQUFPLEdBQUcsSUFBSTtBQUN6RDs7O0FGY0EsZUFBc0Isc0JBQ3BCLEtBQ0EsU0FDNkI7QUFDN0IsUUFBTSxNQUFNLENBQUMsUUFBUSxPQUFPLEVB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
|
|
309
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NsaWVudC9kZWZpbmVDb250ZW50U2NyaXB0LnRzIiwgIi4uL3NyYy9jbGllbnQvZGVmaW5lQmFja2dyb3VuZC50cyIsICIuLi9zcmMvY2xpZW50L2NyZWF0ZUNvbnRlbnRTY3JpcHRVaS50cyIsICIuLi9zcmMvY2xpZW50L2Jyb3dzZXIudHMiLCAiLi4vc3JjL2NsaWVudC91dGlscy9sb2dnZXIudHMiLCAiLi4vc3JjL2NsaWVudC91dGlscy9Db250ZW50U2NyaXB0Q29udGV4dC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQ29udGVudFNjcmlwdERlZmluaXRpb24gfSBmcm9tICcuLi9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUNvbnRlbnRTY3JpcHQoXG4gIGRlZmluaXRpb246IENvbnRlbnRTY3JpcHREZWZpbml0aW9uLFxuKTogQ29udGVudFNjcmlwdERlZmluaXRpb24ge1xuICByZXR1cm4gZGVmaW5pdGlvbjtcbn1cbiIsICJpbXBvcnQgeyBCYWNrZ3JvdW5kRGVmaW5pdGlvbiB9IGZyb20gJy4uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUJhY2tncm91bmQobWFpbjogKCkgPT4gdm9pZCk6IEJhY2tncm91bmREZWZpbml0aW9uO1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUJhY2tncm91bmQoXG4gIGRlZmluaXRpb246IEJhY2tncm91bmREZWZpbml0aW9uLFxuKTogQmFja2dyb3VuZERlZmluaXRpb247XG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lQmFja2dyb3VuZChcbiAgYXJnOiAoKCkgPT4gdm9pZCkgfCBCYWNrZ3JvdW5kRGVmaW5pdGlvbixcbik6IEJhY2tncm91bmREZWZpbml0aW9uIHtcbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbicpIHJldHVybiB7IG1haW46IGFyZyB9O1xuICByZXR1cm4gYXJnO1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUlzb2xhdGVkRWxlbWVudCB9IGZyb20gJ0B3ZWJleHQtY29yZS9pc29sYXRlZC1lbGVtZW50JztcbmltcG9ydCB7IGJyb3dzZXIgfSBmcm9tICcuL2Jyb3dzZXInO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi91dGlscy9sb2dnZXInO1xuaW1wb3J0IHsgQ29udGVudFNjcmlwdENvbnRleHQgfSBmcm9tICcuJztcblxuLyoqXG4gKiBVdGlsaXR5IGZvciBtb3VudGluZyBjb250ZW50IHNjcmlwdCBVSSdzIHdpdGggaXNvbGF0ZWQgc3R5bGVzLiBBdXRvbWF0aWNhbGx5IHJlbW92ZWQgZnJvbSB0aGUgRE9NXG4gKiB3aGVuIHRoZSBjb250ZW50IHNjcmlwdCdzIGNvbnRleHQgaXMgaW52YWxpZGF0ZWQuXG4gKlxuICogU2VlIGh0dHBzOi8vd3h0LmRldi9lbnRyeXBvaW50cy9jb250ZW50LXNjcmlwdHMuaHRtbCN1aSBmb3IgZnVsbCBkb2N1bWVudGF0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBlbnRyeXBvaW50cy9leGFtcGxlLXVpLmNvbnRlbnQvaW5kZXgudHNcbiAqIGltcG9ydCBcIi4vc3R5bGUuY3NzXCJcbiAqXG4gKiBleHBvcnQgZGVmYXVsdCBkZWZpbmVDb250ZW50U2NyaXB0KHtcbiAqICAgbWF0Y2hlczogW1wiKjovLyouZ29vZ2xlLmNvbS8qXCJdLFxuICogICBjc3NJbmplY3Rpb25Nb2RlOiBcInVpXCIsXG4gKlxuICogICBhc3luYyBtYWluKGN0eCkge1xuICogICAgIGNvbnN0IHVpID0gYXdhaXQgY3JlYXRlQ29udGVudFNjcmlwdFVpKGN0eCwge1xuICogICAgICAgbmFtZTogXCJleGFtcGxlLW92ZXJsYXlcIixcbiAqICAgICAgIHR5cGU6IFwibW9kYWxcIixcbiAqICAgICAgIG1vdW50KGNvbnRhaW5lcikge1xuICogICAgICAgICBjb25zdCBhcHAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICogICAgICAgICBhcHAudGV4dENvbnRlbnQgPSBcIkNvbnRlbnQgU2NyaXB0IFVJXCI7XG4gKiAgICAgICAgIGNvbnRhaW5lci5hcHBlbmQoYXBwKTtcbiAqICAgICAgIH1cbiAqICAgICB9KVxuICogICAgIHVpLm1vdW50KCk7XG4gKiAgIH1cbiAqIH0pXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVDb250ZW50U2NyaXB0VWk8VEFwcD4oXG4gIGN0eDogQ29udGVudFNjcmlwdENvbnRleHQsXG4gIG9wdGlvbnM6IENvbnRlbnRTY3JpcHRVaU9wdGlvbnM8VEFwcD4sXG4pOiBQcm9taXNlPENvbnRlbnRTY3JpcHRVaTxUQXBwPj4ge1xuICBjb25zdCBjc3MgPSBbb3B0aW9ucy5jc3MgPz8gJyddO1xuICBpZiAoY3R4Lm9wdGlvbnM/LmNzc0luamVjdGlvbk1vZGUgPT09ICd1aScpIHtcbiAgICBjc3MucHVzaChhd2FpdCBsb2FkQ3NzKCkpO1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGlzb2xhdGVkRWxlbWVudDogdWlDb250YWluZXIsXG4gICAgcGFyZW50RWxlbWVudDogc2hhZG93SG9zdCxcbiAgICBzaGFkb3csXG4gIH0gPSBhd2FpdCBjcmVhdGVJc29sYXRlZEVsZW1lbnQoe1xuICAgIG5hbWU6IG9wdGlvbnMubmFtZSxcbiAgICBjc3M6IHtcbiAgICAgIHRleHRDb250ZW50OiBjc3Muam9pbignXFxuJykudHJpbSgpLFxuICAgIH0sXG4gICAgbW9kZTogJ29wZW4nLFxuICB9KTtcblxuICBjb25zdCBnZXRBbmNob3IgPSAoKTogRWxlbWVudCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKG9wdGlvbnMuYW5jaG9yID09IG51bGwpIHJldHVybiBkb2N1bWVudC5ib2R5O1xuXG4gICAgbGV0IHJlc29sdmVkID1cbiAgICAgIHR5cGVvZiBvcHRpb25zLmFuY2hvciA9PT0gJ2Z1bmN0aW9uJyA/IG9wdGlvbnMuYW5jaG9yKCkgOiBvcHRpb25zLmFuY2hvcjtcbiAgICBpZiAodHlwZW9mIHJlc29sdmVkID09PSAnc3RyaW5nJylcbiAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEVsZW1lbnQ+KHJlc29sdmVkKSA/PyB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHJlc29sdmVkID8/IHVuZGVmaW5lZDtcbiAgfTtcblxuICBsZXQgbW91bnRlZDogVEFwcDtcblxuICBjb25zdCBtb3VudCA9ICgpID0+IHtcbiAgICBjb25zdCBhbmNob3IgPSBnZXRBbmNob3IoKTtcbiAgICBpZiAoYW5jaG9yID09IG51bGwpXG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ0ZhaWxlZCB0byBtb3VudCBjb250ZW50IHNjcmlwdCB1aTogY291bGQgbm90IGZpbmQgYW5jaG9yIGVsZW1lbnQnLFxuICAgICAgKTtcblxuICAgIC8vIE1vdW50IFVJIGluc2lkZSBzaGFkb3cgcm9vdFxuICAgIG1vdW50ZWQgPSBvcHRpb25zLm1vdW50KHVpQ29udGFpbmVyKTtcblxuICAgIC8vIEFkZCBzaGFkb3cgcm9vdCBlbGVtZW50IHRvIERPTVxuICAgIHN3aXRjaCAob3B0aW9ucy5hcHBlbmQpIHtcbiAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgY2FzZSAnbGFzdCc6XG4gICAgICAgIGFuY2hvci5hcHBlbmQoc2hhZG93SG9zdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnZmlyc3QnOlxuICAgICAgICBpZiAoYW5jaG9yLmZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICBhbmNob3IuaW5zZXJ0QmVmb3JlKHNoYWRvd0hvc3QsIGFuY2hvci5maXJzdENoaWxkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhbmNob3IuYXBwZW5kKHNoYWRvd0hvc3QpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAncmVwbGFjZSc6XG4gICAgICAgIGFuY2hvci5yZXBsYWNlV2l0aChzaGFkb3dIb3N0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdhZnRlcic6XG4gICAgICAgIGFuY2hvci5yZXBsYWNlV2l0aChhbmNob3IsIHNoYWRvd0hvc3QpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JlZm9yZSc6XG4gICAgICAgIGFuY2hvci5yZXBsYWNlV2l0aChzaGFkb3dIb3N0LCBhbmNob3IpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIG9wdGlvbnMuYXBwZW5kKGFuY2hvciwgc2hhZG93SG9zdCk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIEFwcGx5IHR5cGVzXG4gICAgaWYgKG9wdGlvbnMudHlwZSAhPT0gJ2lubGluZScpIHtcbiAgICAgIGlmIChvcHRpb25zLnpJbmRleCAhPSBudWxsKVxuICAgICAgICBzaGFkb3dIb3N0LnN0eWxlLnpJbmRleCA9IFN0cmluZyhvcHRpb25zLnpJbmRleCk7XG5cbiAgICAgIHNoYWRvd0hvc3Quc3R5bGUub3ZlcmZsb3cgPSAndmlzaWJsZSc7XG4gICAgICBzaGFkb3dIb3N0LnN0eWxlLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICAgIHNoYWRvd0hvc3Quc3R5bGUud2lkdGggPSAnMCc7XG4gICAgICBzaGFkb3dIb3N0LnN0eWxlLmhlaWdodCA9ICcwJztcbiAgICAgIHNoYWRvd0hvc3Quc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG5cbiAgICAgIGNvbnN0IGh0bWwgPSBzaGFkb3cucXVlcnlTZWxlY3RvcignaHRtbCcpITtcbiAgICAgIC8vIEhUTUwgZG9lc24ndCBleGlzdCBpbiB0ZXN0c1xuICAgICAgaWYgKG9wdGlvbnMudHlwZSA9PT0gJ292ZXJsYXknKSB7XG4gICAgICAgIGh0bWwuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuICAgICAgICBpZiAob3B0aW9ucy5hbGlnbm1lbnQ/LnN0YXJ0c1dpdGgoJ2JvdHRvbS0nKSkgaHRtbC5zdHlsZS5ib3R0b20gPSAnMCc7XG4gICAgICAgIGVsc2UgaHRtbC5zdHlsZS50b3AgPSAnMCc7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuYWxpZ25tZW50Py5lbmRzV2l0aCgnLXJpZ2h0JykpIGh0bWwuc3R5bGUucmlnaHQgPSAnMCc7XG4gICAgICAgIGVsc2UgaHRtbC5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaHRtbC5zdHlsZS5wb3NpdGlvbiA9ICdmaXhlZCc7XG4gICAgICAgIGh0bWwuc3R5bGUudG9wID0gJzAnO1xuICAgICAgICBodG1sLnN0eWxlLmJvdHRvbSA9ICcwJztcbiAgICAgICAgaHRtbC5zdHlsZS5sZWZ0ID0gJzAnO1xuICAgICAgICBodG1sLnN0eWxlLnJpZ2h0ID0gJzAnO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCByZW1vdmUgPSAoKSA9PiB7XG4gICAgLy8gRGV0YXRjaCBzaGFkb3cgcm9vdCBmcm9tIERPTVxuICAgIHNoYWRvd0hvc3QucmVtb3ZlKCk7XG4gICAgLy8gQ2xlYW51cCBtb3VudGVkIHN0YXRlXG4gICAgb3B0aW9ucy5vblJlbW92ZT8uKG1vdW50ZWQpO1xuICAgIC8vIFJlbW92ZSBjaGlsZHJlbiBmcm9tIHVpQ29udGFpbmVyXG4gICAgd2hpbGUgKHVpQ29udGFpbmVyLmxhc3RDaGlsZClcbiAgICAgIHVpQ29udGFpbmVyLnJlbW92ZUNoaWxkKHVpQ29udGFpbmVyLmxhc3RDaGlsZCk7XG4gIH07XG5cbiAgY3R4Lm9uSW52YWxpZGF0ZWQocmVtb3ZlKTtcblxuICByZXR1cm4ge1xuICAgIHNoYWRvdyxcbiAgICBzaGFkb3dIb3N0LFxuICAgIHVpQ29udGFpbmVyLFxuICAgIG1vdW50LFxuICAgIHJlbW92ZSxcbiAgICBtb3VudGVkOiBtb3VudGVkISxcbiAgfTtcbn1cblxuLyoqXG4gKiBMb2FkIHRoZSBDU1MgZm9yIHRoZSBjdXJyZW50IGVudHJ5cG9pbnQuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxvYWRDc3MoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgY29uc3QgdXJsID0gYnJvd3Nlci5ydW50aW1lLmdldFVSTChgL2NvbnRlbnQtc2NyaXB0cy8ke19fRU5UUllQT0lOVF9ffS5jc3NgKTtcbiAgdHJ5IHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCh1cmwpO1xuICAgIGNvbnN0IGNzcyA9IGF3YWl0IHJlcy50ZXh0KCk7XG5cbiAgICAvLyBSZXBsYWNlIDpyb290IHNlbGVjdG9ycyB3aXRoIDpob3N0IHNpbmNlIHdlJ3JlIGluIGEgc2hhZG93IHJvb3RcbiAgICByZXR1cm4gY3NzLnJlcGxhY2VBbGwoJzpyb290JywgJzpob3N0Jyk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci53YXJuKFxuICAgICAgYEZhaWxlZCB0byBsb2FkIHN0eWxlcyBAICR7dXJsfS4gRGlkIHlvdSBmb3JnZXQgdG8gaW1wb3J0IHRoZSBzdHlsZXNoZWV0IGluIHlvdXIgZW50cnlwb2ludD9gLFxuICAgICAgZXJyLFxuICAgICk7XG4gICAgcmV0dXJuICcnO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudFNjcmlwdFVpPFRBcHA+IHtcbiAgLyoqXG4gICAqIFRoZSBgSFRNTEVsZW1lbnRgIGhvc3RpbmcgdGhlIHNoYWRvdyByb290IHVzZWQgdG8gaXNvbGF0ZSB0aGUgVUkncyBzdHlsZXMuIFRoaXMgaXMgdGhlIGVsZW1lbnRcbiAgICogdGhhdCBnZXQncyBhZGRlZCB0byB0aGUgRE9NLiBUaGlzIGVsZW1lbnQncyBzdHlsZSBpcyBub3QgaXNvbGF0ZWQgZnJvbSB0aGUgd2VicGFnZS5cbiAgICovXG4gIHNoYWRvd0hvc3Q6IEhUTUxFbGVtZW50O1xuICAvKipcbiAgICogVGhlIGNvbnRhaW5lciBlbGVtZW50IGluc2lkZSB0aGUgYFNoYWRvd1Jvb3RgIHdob3NlIHN0eWxlcyBhcmUgaXNvbGF0ZWQuIFRoZSBVSSBpcyBtb3VudGVkXG4gICAqIGluc2lkZSB0aGlzIGBIVE1MRWxlbWVudGAuXG4gICAqL1xuICB1aUNvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XG4gIC8qKlxuICAgKiBUaGUgc2hhZG93IHJvb3QgcGVyZm9ybWluZyB0aGUgaXNvbGF0aW9uLlxuICAgKi9cbiAgc2hhZG93OiBTaGFkb3dSb290O1xuICAvKipcbiAgICogQ3VzdG9tIGRhdGEgcmV0dXJuZWQgZnJvbSB0aGUgYG9wdGlvbnMubW91bnRgIGZ1bmN0aW9uLlxuICAgKi9cbiAgbW91bnRlZDogVEFwcDtcbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHRoYXQgbW91bnRzIG9yIHJlbW91bnRzIHRoZSBVSSBvbiB0aGUgcGFnZS5cbiAgICovXG4gIG1vdW50OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCByZW1vdmVzIHRoZSBVSSBmcm9tIHRoZSB3ZWJwYWdlLlxuICAgKi9cbiAgcmVtb3ZlOiAoKSA9PiB2b2lkO1xufVxuXG5pbnRlcmZhY2UgQmFzZUNvbnRlbnRTY3JpcHRVaU9wdGlvbnM8VEFwcD4ge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGN1c3RvbSBjb21wb25lbnQgdXNlZCB0byBob3N0IHRoZSBTaGFkb3dSb290LiBNdXN0IGJlIGtlYmFiLWNhc2UuXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJbiBjb21iaW5hdGlvbiB3aXRoIGBhbmNob3JgLCBkZWNpZGUgaG93IHRvIGFkZCB0aGUgVUkgdG8gdGhlIERPTS5cbiAgICpcbiAgICogLSBgXCJsYXN0XCJgIChkZWZhdWx0KSAtIEFkZCB0aGUgVUkgYXMgdGhlIGxhc3QgY2hpbGQgb2YgdGhlIGBhbmNob3JgIGVsZW1lbnRcbiAgICogLSBgXCJmaXJzdFwiYCAtIEFkZCB0aGUgVUkgYXMgdGhlIGxhc3QgY2hpbGQgb2YgdGhlIGBhbmNob3JgIGVsZW1lbnRcbiAgICogLSBgXCJyZXBsYWNlXCJgIC0gUmVwbGFjZSB0aGUgYGFuY2hvcmAgZWxlbWVudCB3aXRoIHRoZSBVSS5cbiAgICogLSBgXCJiZWZvcmVcImAgLSBBZGQgdGhlIFVJIGFzIHRoZSBzaWJsaW5nIGJlZm9yZSB0aGUgYGFuY2hvcmAgZWxlbWVudFxuICAgKiAtIGBcImFmdGVyXCJgIC0gQWRkIHRoZSBVSSBhcyB0aGUgc2libGluZyBhZnRlciB0aGUgYGFuY2hvcmAgZWxlbWVudFxuICAgKiAtIGAoYW5jaG9yLCB1aSkgPT4gdm9pZGAgLSBDdXN0b21pemFibGUgZnVuY3Rpb24gdGhhdCBsZXQncyB5b3UgYWRkIHRoZSBVSSB0byB0aGUgRE9NXG4gICAqL1xuICBhcHBlbmQ/OiBDb250ZW50U2NyaXB0QXBwZW5kTW9kZSB8ICgoYW5jaG9yOiBFbGVtZW50LCB1aTogRWxlbWVudCkgPT4gdm9pZCk7XG4gIC8qKlxuICAgKiBBIENTUyBzZWxlY3RvciwgZWxlbWVudCwgb3IgZnVuY3Rpb24gdGhhdCByZXR1cm5zIG9uZSBvZiB0aGUgdHdvLiBBbG9uZyB3aXRoIGBhcHBlbmRgLCB0aGVcbiAgICogYGFuY2hvcmAgZGljdGF0ZXMgd2hlcmUgaW4gdGhlIHBhZ2UgdGhlIFVJIHdpbGwgYmUgYWRkZWQuXG4gICAqL1xuICBhbmNob3I/OlxuICAgIHwgc3RyaW5nXG4gICAgfCBFbGVtZW50XG4gICAgfCBudWxsXG4gICAgfCB1bmRlZmluZWRcbiAgICB8ICgoKSA9PiBzdHJpbmcgfCBFbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCk7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBleGVjdXRlZCB3aGVuIG1vdW50aW5nIHRoZSBVSS4gVGhpcyBmdW5jdGlvbiBzaG91bGQgY3JlYXRlIGFuZCBhcHBlbmQgdGhlIFVJIHRvIHRoZVxuICAgKiBgY29udGFpbmVyYCBlbGVtZW50LiBJdCBpcyBjYWxsZWQgZXZlcnkgdGltZSBgdWkubW91bnQoKWAgaXMgY2FsbGVkXG4gICAqXG4gICAqIE9wdGlvbmFsbHkgcmV0dXJuIGEgdmFsdWUgdGhhdCBjYW4gYmUgYWNjZXNzZWQgYXQgYHVpLm1vdW50ZWRgIG9yIGluIHRoZSBgb25SZW1vdmVgIGNhbGxiYWNrLlxuICAgKi9cbiAgbW91bnQ6IChjb250YWluZXI6IEVsZW1lbnQpID0+IFRBcHA7XG4gIC8qKlxuICAgKiBDYWxsYmFjayBjYWxsZWQgd2hlbiB0aGUgVUkgaXMgcmVtb3ZlZCBmcm9tIHRoZSB3ZWJwYWdlLiBVc2UgdG8gY2xlYW51cCB5b3VyIFVJLCBsaWtlXG4gICAqIHVubW91bnRpbmcgeW91ciB2dWUgb3IgcmVhY3QgYXBwcy5cbiAgICovXG4gIG9uUmVtb3ZlPzogKG1vdW50ZWQ6IFRBcHApID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDdXN0b20gQ1NTIHRleHQgdG8gYXBwbHkgdG8gdGhlIFVJLiBJZiB5b3VyIGNvbnRlbnQgc2NyaXB0IGltcG9ydHMvZ2VuZXJhdGVzIENTUyBhbmQgeW91J3ZlXG4gICAqIHNldCBgY3NzSW5qZWN0aW9uTW9kZTogXCJ1aVwiYCwgdGhlIGltcG9ydGVkIENTUyB3aWxsIGJlIGluY2x1ZGVkIGF1dG9tYXRpY2FsbHkuIFlvdSBkbyBub3QgbmVlZFxuICAgKiB0byBwYXNzIHRob3NlIHN0eWxlcyBpbiBoZXJlLiBUaGlzIGlzIGZvciBhbnkgYWRkaXRpb25hbCBzdHlsZXMgbm90IGluIHRoZSBpbXBvcnRlZCBDU1MuXG4gICAqXG4gICAqIFNlZSBodHRwczovL3d4dC5kZXYvZW50cnlwb2ludHMvY29udGVudC1zY3JpcHRzLmh0bWwjdWkgZm9yIG1vcmUgaW5mby5cbiAgICovXG4gIGNzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgT3ZlcmxheUNvbnRlbnRTY3JpcHRVaU9wdGlvbnM8VEFwcD4gPVxuICBCYXNlQ29udGVudFNjcmlwdFVpT3B0aW9uczxUQXBwPiAmIHtcbiAgICB0eXBlOiAnb3ZlcmxheSc7XG4gICAgLyoqXG4gICAgICogV2hlbiB1c2luZyBgdHlwZTogXCJvdmVybGF5XCJgLCB0aGUgbW91bnRlZCBlbGVtZW50IGlzIDBweCBieSAwcHggaW4gc2l6ZS4gQWxpZ25tZW50IHNwZWNpZmllc1xuICAgICAqIHdoaWNoIGNvcm5lciBpcyBhbGlnbmVkIHdpdGggdGhhdCAweDAgcGl4ZWwgc3BhY2UuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBcInRvcC1sZWZ0XCJcbiAgICAgKi9cbiAgICBhbGlnbm1lbnQ/OiBDb250ZW50U2NyaXB0VWlPdmVybGF5QWxpZ25tZW50O1xuICAgIC8qKlxuICAgICAqIFRoZSBgei1pbmRleGAgdXNlZCBvbiB0aGUgYHNoYWRvd0hvc3RgLiBTZXQgdG8gYSBwb3NpdGl2ZSBudW1iZXIgdG8gc2hvdyB5b3VyIFVJIG92ZXIgd2Vic2l0ZVxuICAgICAqIGNvbnRlbnQuXG4gICAgICovXG4gICAgekluZGV4PzogbnVtYmVyO1xuICB9O1xuXG5leHBvcnQgdHlwZSBNb2RhbENvbnRlbnRTY3JpcHRVaU9wdGlvbnM8VEFwcD4gPVxuICBCYXNlQ29udGVudFNjcmlwdFVpT3B0aW9uczxUQXBwPiAmIHtcbiAgICB0eXBlOiAnbW9kYWwnO1xuICAgIC8qKlxuICAgICAqIFRoZSBgei1pbmRleGAgdXNlZCBvbiB0aGUgYHNoYWRvd0hvc3RgLiBTZXQgdG8gYSBwb3NpdGl2ZSBudW1iZXIgdG8gc2hvdyB5b3VyIFVJIG92ZXIgd2Vic2l0ZVxuICAgICAqIGNvbnRlbnQuXG4gICAgICovXG4gICAgekluZGV4PzogbnVtYmVyO1xuICB9O1xuXG5leHBvcnQgdHlwZSBJbmxpbmVDb250ZW50U2NyaXB0VWlPcHRpb25zPFRBcHA+ID1cbiAgQmFzZUNvbnRlbnRTY3JpcHRVaU9wdGlvbnM8VEFwcD4gJiB7XG4gICAgdHlwZTogJ2lubGluZSc7XG4gIH07XG5cbmV4cG9ydCB0eXBlIENvbnRlbnRTY3JpcHRVaU92ZXJsYXlBbGlnbm1lbnQgPVxuICB8ICd0b3AtbGVmdCdcbiAgfCAndG9wLXJpZ2h0J1xuICB8ICdib3R0b20tbGVmdCdcbiAgfCAnYm90dG9tLXJpZ2h0JztcblxuZXhwb3J0IHR5cGUgQ29udGVudFNjcmlwdEFwcGVuZE1vZGUgPVxuICB8ICdsYXN0J1xuICB8ICdmaXJzdCdcbiAgfCAncmVwbGFjZSdcbiAgfCAnYmVmb3JlJ1xuICB8ICdhZnRlcic7XG5cbmV4cG9ydCB0eXBlIENvbnRlbnRTY3JpcHRVaU9wdGlvbnM8VEFwcD4gPVxuICB8IE92ZXJsYXlDb250ZW50U2NyaXB0VWlPcHRpb25zPFRBcHA+XG4gIHwgTW9kYWxDb250ZW50U2NyaXB0VWlPcHRpb25zPFRBcHA+XG4gIHwgSW5saW5lQ29udGVudFNjcmlwdFVpT3B0aW9uczxUQXBwPjtcbiIsICIvKipcbiAqIEBtb2R1bGUgd3h0L2Jyb3dzZXJcbiAqL1xuaW1wb3J0IG9yaWdpbmFsQnJvd3NlciwgeyBCcm93c2VyLCBSdW50aW1lLCBJMThuIH0gZnJvbSAnd2ViZXh0ZW5zaW9uLXBvbHlmaWxsJztcblxuZXhwb3J0IGludGVyZmFjZSBBdWdtZW50ZWRCcm93c2VyIGV4dGVuZHMgQnJvd3NlciB7XG4gIHJ1bnRpbWU6IFd4dFJ1bnRpbWU7XG4gIGkxOG46IFd4dEkxOG47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3h0UnVudGltZSBleHRlbmRzIFJ1bnRpbWUuU3RhdGljIHtcbiAgLy8gT3ZlcnJpZGVuIHBlci1wcm9qZWN0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV3h0STE4biBleHRlbmRzIEkxOG4uU3RhdGljIHtcbiAgLy8gT3ZlcnJpZGVuIHBlci1wcm9qZWN0XG59XG5cbmV4cG9ydCBjb25zdCBicm93c2VyOiBBdWdtZW50ZWRCcm93c2VyID0gb3JpZ2luYWxCcm93c2VyO1xuIiwgImZ1bmN0aW9uIHByaW50KG1ldGhvZDogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLCAuLi5hcmdzOiBhbnlbXSkge1xuICBpZiAoaW1wb3J0Lm1ldGEuZW52Lk1PREUgPT09ICdwcm9kdWN0aW9uJykgcmV0dXJuO1xuXG4gIGlmICh0eXBlb2YgYXJnc1swXSA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gYXJncy5zaGlmdCgpO1xuICAgIG1ldGhvZChgW3d4dF0gJHttZXNzYWdlfWAsIC4uLmFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIG1ldGhvZCgnW3d4dF0nLCAuLi5hcmdzKTtcbiAgfVxufVxuXG4vKipcbiAqIFdyYXBwZXIgYXJvdW5kIGBjb25zb2xlYCB3aXRoIGEgXCJbd3h0XVwiIHByZWZpeFxuICovXG5leHBvcnQgY29uc3QgbG9nZ2VyID0ge1xuICBkZWJ1ZzogKC4uLmFyZ3M6IGFueVtdKSA9PiBwcmludChjb25zb2xlLmRlYnVnLCAuLi5hcmdzKSxcbiAgbG9nOiAoLi4uYXJnczogYW55W10pID0+IHByaW50KGNvbnNvbGUubG9nLCAuLi5hcmdzKSxcbiAgd2FybjogKC4uLmFyZ3M6IGFueVtdKSA9PiBwcmludChjb25zb2xlLndhcm4sIC4uLmFyZ3MpLFxuICBlcnJvcjogKC4uLmFyZ3M6IGFueVtdKSA9PiBwcmludChjb25zb2xlLmVycm9yLCAuLi5hcmdzKSxcbn07XG4iLCAiaW1wb3J0IHsgQ29udGVudFNjcmlwdERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzJztcbmltcG9ydCB7IGJyb3dzZXIgfSBmcm9tICcuLi9icm93c2VyJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcblxuLyoqXG4gKiBFeHRlbmRzIFtgQWJvcnRDb250cm9sbGVyYF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0Fib3J0Q29udHJvbGxlcikuXG4gKiBVc2VkIHRvIGRldGVjdCBhbmQgc3RvcCBjb250ZW50IHNjcmlwdCBjb2RlIHdoZW4gdGhlIHNjcmlwdCBpcyBpbnZhbGlkYXRlZC5cbiAqXG4gKiBJdCBhbHNvIHByb3ZpZGVzIHNldmVyYWwgdXRpbGl0aWVzIGxpa2UgYGN0eC5zZXRUaW1lb3V0YCBhbmQgYGN0eC5zZXRJbnRlcnZhbGAgdGhhdCBzaG91bGQgYmUgdXNlZCBpblxuICogY29udGVudCBzY3JpcHRzIGluc3RlYWQgb2YgYHdpbmRvdy5zZXRUaW1lb3V0YCBvciBgd2luZG93LnNldEludGVydmFsYC5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbnRlbnRTY3JpcHRDb250ZXh0IGV4dGVuZHMgQWJvcnRDb250cm9sbGVyIHtcbiAgcHJpdmF0ZSBzdGF0aWMgU0NSSVBUX1NUQVJURURfTUVTU0FHRV9UWVBFID0gJ3d4dDpjb250ZW50LXNjcmlwdC1zdGFydGVkJztcblxuICAjaXNUb3BGcmFtZSA9IHdpbmRvdy5zZWxmID09PSB3aW5kb3cudG9wO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGVudFNjcmlwdE5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9ucz86IE9taXQ8Q29udGVudFNjcmlwdERlZmluaXRpb24sICdtYWluJz4sXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAodGhpcy4jaXNUb3BGcmFtZSkge1xuICAgICAgdGhpcy4jc3RvcE9sZFNjcmlwdHMoKTtcbiAgICB9XG4gICAgdGhpcy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIFJ1biBvbiBuZXh0IHRpY2sgc28gdGhlIGxpc3RlbmVyIGl0IGFkZHMgaXNuJ3QgdHJpZ2dlcmVkIGJ5IHN0b3BPbGRTY3JpcHRcbiAgICAgIHRoaXMuI2xpc3RlbkZvck5ld2VyU2NyaXB0cygpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGlzSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICBpZiAoYnJvd3Nlci5ydW50aW1lLmlkID09IG51bGwpIHtcbiAgICAgIHRoaXMubm90aWZ5SW52YWxpZGF0ZWQoKTsgLy8gU2V0cyBgc2lnbmFsLmFib3J0ZWRgIHRvIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2lnbmFsLmFib3J0ZWQ7XG4gIH1cblxuICBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNJbnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGxpc3RlbmVyIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIGNvbnRlbnQgc2NyaXB0J3MgY29udGV4dCBpcyBpbnZhbGlkYXRlZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0byByZW1vdmUgdGhlIGxpc3RlbmVyLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBicm93c2VyLnJ1bnRpbWUub25NZXNzYWdlLmFkZExpc3RlbmVyKGNiKTtcbiAgICogY29uc3QgcmVtb3ZlSW52YWxpZGF0ZWRMaXN0ZW5lciA9IGN0eC5vbkludmFsaWRhdGVkKCgpID0+IHtcbiAgICogICBicm93c2VyLnJ1bnRpbWUub25NZXNzYWdlLnJlbW92ZUxpc3RlbmVyKGNiKTtcbiAgICogfSlcbiAgICogLy8gLi4uXG4gICAqIHJlbW92ZUludmFsaWRhdGVkTGlzdGVuZXIoKTtcbiAgICovXG4gIG9uSW52YWxpZGF0ZWQoY2I6ICgpID0+IHZvaWQpOiAoKSA9PiB2b2lkIHtcbiAgICB0aGlzLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGNiKTtcbiAgICByZXR1cm4gKCkgPT4gdGhpcy5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBjYik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgcHJvbWlzZSB0aGF0IG5ldmVyIHJlc29sdmVzLiBVc2VmdWwgaWYgeW91IGhhdmUgYW4gYXN5bmMgZnVuY3Rpb24gdGhhdCBzaG91bGRuJ3QgcnVuXG4gICAqIGFmdGVyIHRoZSBjb250ZXh0IGlzIGV4cGlyZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IGdldFZhbHVlRnJvbVN0b3JhZ2UgPSBhc3luYyAoKSA9PiB7XG4gICAqICAgaWYgKGN0eC5pc0ludmFsaWQpIHJldHVybiBjdHguYmxvY2soKTtcbiAgICpcbiAgICogICAvLyAuLi5cbiAgICogfVxuICAgKi9cbiAgYmxvY2s8VD4oKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpID0+IHtcbiAgICAgIC8vIG5vb3BcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcmFwcGVyIGFyb3VuZCBgd2luZG93LnNldEludGVydmFsYCB0aGF0IGF1dG9tYXRpY2FsbHkgY2xlYXJzIHRoZSBpbnRlcnZhbCB3aGVuIGludmFsaWRhdGVkLlxuICAgKi9cbiAgc2V0SW50ZXJ2YWwoaGFuZGxlcjogKCkgPT4gdm9pZCwgdGltZW91dD86IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgaWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1ZhbGlkKSBoYW5kbGVyKCk7XG4gICAgfSwgdGltZW91dCkgYXMgdW5rbm93biBhcyBudW1iZXI7XG4gICAgdGhpcy5vbkludmFsaWRhdGVkKCgpID0+IGNsZWFySW50ZXJ2YWwoaWQpKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlciBhcm91bmQgYHdpbmRvdy5zZXRUaW1lb3V0YCB0aGF0IGF1dG9tYXRpY2FsbHkgY2xlYXJzIHRoZSBpbnRlcnZhbCB3aGVuIGludmFsaWRhdGVkLlxuICAgKi9cbiAgc2V0VGltZW91dChoYW5kbGVyOiAoKSA9PiB2b2lkLCB0aW1lb3V0PzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBpZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZCkgaGFuZGxlcigpO1xuICAgIH0sIHRpbWVvdXQpIGFzIHVua25vd24gYXMgbnVtYmVyO1xuICAgIHRoaXMub25JbnZhbGlkYXRlZCgoKSA9PiBjbGVhclRpbWVvdXQoaWQpKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlciBhcm91bmQgYHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIHRoYXQgYXV0b21hdGljYWxseSBjYW5jZWxzIHRoZSByZXF1ZXN0IHdoZW5cbiAgICogaW52YWxpZGF0ZWQuXG4gICAqL1xuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2s6IEZyYW1lUmVxdWVzdENhbGxiYWNrKTogbnVtYmVyIHtcbiAgICBjb25zdCBpZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoLi4uYXJncykgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZCkgY2FsbGJhY2soLi4uYXJncyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uSW52YWxpZGF0ZWQoKCkgPT4gY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlciBhcm91bmQgYHdpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrYCB0aGF0IGF1dG9tYXRpY2FsbHkgY2FuY2VscyB0aGUgcmVxdWVzdCB3aGVuXG4gICAqIGludmFsaWRhdGVkLlxuICAgKi9cbiAgcmVxdWVzdElkbGVDYWxsYmFjayhcbiAgICBjYWxsYmFjazogSWRsZVJlcXVlc3RDYWxsYmFjayxcbiAgICBvcHRpb25zPzogSWRsZVJlcXVlc3RPcHRpb25zLFxuICApOiBudW1iZXIge1xuICAgIGNvbnN0IGlkID0gcmVxdWVzdElkbGVDYWxsYmFjaygoLi4uYXJncykgPT4ge1xuICAgICAgaWYgKCF0aGlzLnNpZ25hbC5hYm9ydGVkKSBjYWxsYmFjayguLi5hcmdzKTtcbiAgICB9LCBvcHRpb25zKTtcblxuICAgIHRoaXMub25JbnZhbGlkYXRlZCgoKSA9PiBjYW5jZWxJZGxlQ2FsbGJhY2soaWQpKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCBgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXJgIGFuZCByZW1vdmUgdGhlIGV2ZW50IGxpc3RlbmVyIHdoZW4gdGhlIGNvbnRleHQgaXMgaW52YWxpZGF0ZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGN0eC5hZGRFdmVudExpc3RlbmVyKHdpbmRvdywgXCJtb3VzZW1vdmVcIiwgKCkgPT4ge1xuICAgKiAgIC8vIC4uLlxuICAgKiB9KTtcbiAgICogY3R4LmFkZEV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIFwidmlzaWJpbGl0eWNoYW5nZVwiLCAoKSA9PiB7XG4gICAqICAgLy8gLi4uXG4gICAqIH0pO1xuICAgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcihcbiAgICB0YXJnZXQ6IGFueSxcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgaGFuZGxlcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCxcbiAgICBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMsXG4gICkge1xuICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyPy4odHlwZSwgaGFuZGxlciwgb3B0aW9ucyk7XG4gICAgdGhpcy5vbkludmFsaWRhdGVkKFxuICAgICAgKCkgPT4gdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXI/Lih0eXBlLCBoYW5kbGVyLCBvcHRpb25zKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBBYm9ydCB0aGUgYWJvcnQgY29udHJvbGxlciBhbmQgZXhlY3V0ZSBhbGwgYG9uSW52YWxpZGF0ZWRgIGxpc3RlbmVycy5cbiAgICovXG4gIG5vdGlmeUludmFsaWRhdGVkKCkge1xuICAgIHRoaXMuYWJvcnQoJ0NvbnRlbnQgc2NyaXB0IGNvbnRleHQgaW52YWxpZGF0ZWQnKTtcbiAgICBsb2dnZXIuZGVidWcoXG4gICAgICBgQ29udGVudCBzY3JpcHQgXCIke3RoaXMuY29udGVudFNjcmlwdE5hbWV9XCIgY29udGV4dCBpbnZhbGlkYXRlZGAsXG4gICAgKTtcbiAgfVxuXG4gICNzdG9wT2xkU2NyaXB0cygpIHtcbiAgICAvLyBVc2UgcG9zdE1lc3NhZ2Ugc28gaXQgZ2V0J3Mgc2VudCB0byBhbGwgdGhlIGZyYW1lcyBvZiB0aGUgcGFnZS5cbiAgICB3aW5kb3cucG9zdE1lc3NhZ2UoXG4gICAgICB7XG4gICAgICAgIGV2ZW50OiBDb250ZW50U2NyaXB0Q29udGV4dC5TQ1JJUFRfU1RBUlRFRF9NRVNTQUdFX1RZUEUsXG4gICAgICAgIGNvbnRlbnRTY3JpcHROYW1lOiB0aGlzLmNvbnRlbnRTY3JpcHROYW1lLFxuICAgICAgfSxcbiAgICAgICcqJyxcbiAgICApO1xuICB9XG5cbiAgI2xpc3RlbkZvck5ld2VyU2NyaXB0cygpIHtcbiAgICBjb25zdCBjYiA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50LmRhdGE/LnR5cGUgPT09IENvbnRlbnRTY3JpcHRDb250ZXh0LlNDUklQVF9TVEFSVEVEX01FU1NBR0VfVFlQRSAmJlxuICAgICAgICBldmVudC5kYXRhPy5jb250ZW50U2NyaXB0TmFtZSA9PT0gdGhpcy5jb250ZW50U2NyaXB0TmFtZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMubm90aWZ5SW52YWxpZGF0ZWQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGNiKTtcbiAgICB0aGlzLm9uSW52YWxpZGF0ZWQoKCkgPT4gcmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGNiKSk7XG4gIH1cbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7QUFFTyxTQUFTLG9CQUNkLFlBQ3lCO0FBQ3pCLFNBQU87QUFDVDs7O0FDQU8sU0FBUyxpQkFDZCxLQUNzQjtBQUN0QixNQUFJLE9BQU8sUUFBUTtBQUFZLFdBQU8sRUFBRSxNQUFNLElBQUk7QUFDbEQsU0FBTztBQUNUOzs7QUNYQSxTQUFTLDZCQUE2Qjs7O0FDR3RDLE9BQU8scUJBQWlEO0FBZWpELElBQU0sVUFBNEI7OztBQ2xCekMsU0FBUyxNQUFNLFdBQXFDLE1BQWE7QUFDL0QsTUFBSSxZQUFZLElBQUksU0FBUztBQUFjO0FBRTNDLE1BQUksT0FBTyxLQUFLLENBQUMsTUFBTSxVQUFVO0FBQy9CLFVBQU0sVUFBVSxLQUFLLE1BQU07QUFDM0IsV0FBTyxTQUFTLE9BQU8sSUFBSSxHQUFHLElBQUk7QUFBQSxFQUNwQyxPQUFPO0FBQ0wsV0FBTyxTQUFTLEdBQUcsSUFBSTtBQUFBLEVBQ3pCO0FBQ0Y7QUFLTyxJQUFNLFNBQVM7QUFBQSxFQUNwQixPQUFPLElBQUksU0FBZ0IsTUFBTSxRQUFRLE9BQU8sR0FBRyxJQUFJO0FBQUEsRUFDdkQsS0FBSyxJQUFJLFNBQWdCLE1BQU0sUUFBUSxLQUFLLEdBQUcsSUFBSTtBQUFBLEVBQ25ELE1BQU0sSUFBSSxTQUFnQixNQUFNLFFBQVEsTUFBTSxHQUFHLElB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
|
package/dist/index.cjs
CHANGED
|
@@ -1219,7 +1219,11 @@ function getUnimportOptions(config) {
|
|
|
1219
1219
|
const defaultOptions = {
|
|
1220
1220
|
debugLog: config.logger.debug,
|
|
1221
1221
|
imports: [{ name: "defineConfig", from: "wxt" }],
|
|
1222
|
-
presets: [
|
|
1222
|
+
presets: [
|
|
1223
|
+
{ package: "wxt/client" },
|
|
1224
|
+
{ package: "wxt/browser" },
|
|
1225
|
+
{ package: "wxt/sandbox" }
|
|
1226
|
+
],
|
|
1223
1227
|
warn: config.logger.warn,
|
|
1224
1228
|
dirs: ["components", "composables", "hooks", "utils"]
|
|
1225
1229
|
};
|
|
@@ -1260,7 +1264,7 @@ function unimport(config) {
|
|
|
1260
1264
|
// src/core/vite-plugins/virtualEntrypoint.ts
|
|
1261
1265
|
var import_fs_extra4 = __toESM(require("fs-extra"), 1);
|
|
1262
1266
|
var import_path4 = require("path");
|
|
1263
|
-
function
|
|
1267
|
+
function virtualEntrypoint(type, config) {
|
|
1264
1268
|
const virtualId = `virtual:wxt-${type}?`;
|
|
1265
1269
|
const resolvedVirtualId = `\0${virtualId}`;
|
|
1266
1270
|
return {
|
|
@@ -1585,10 +1589,13 @@ async function resolveInternalViteConfig(env, mergedConfig, finalConfig) {
|
|
|
1585
1589
|
internalVite.plugins.push(devHtmlPrerender(finalConfig));
|
|
1586
1590
|
internalVite.plugins.push(unimport(finalConfig));
|
|
1587
1591
|
internalVite.plugins.push(
|
|
1588
|
-
|
|
1592
|
+
virtualEntrypoint("background", finalConfig)
|
|
1589
1593
|
);
|
|
1590
1594
|
internalVite.plugins.push(
|
|
1591
|
-
|
|
1595
|
+
virtualEntrypoint("content-script", finalConfig)
|
|
1596
|
+
);
|
|
1597
|
+
internalVite.plugins.push(
|
|
1598
|
+
virtualEntrypoint("unlisted-script", finalConfig)
|
|
1592
1599
|
);
|
|
1593
1600
|
internalVite.plugins.push(devServerGlobals(finalConfig));
|
|
1594
1601
|
internalVite.plugins.push(tsconfigPaths(finalConfig));
|
|
@@ -1753,7 +1760,11 @@ async function buildEntrypoints(groups, config, spinner) {
|
|
|
1753
1760
|
return { publicAssets, steps };
|
|
1754
1761
|
}
|
|
1755
1762
|
async function buildSingleEntrypoint(entrypoint, config) {
|
|
1756
|
-
const isVirtual = [
|
|
1763
|
+
const isVirtual = [
|
|
1764
|
+
"background",
|
|
1765
|
+
"content-script",
|
|
1766
|
+
"unlisted-script"
|
|
1767
|
+
].includes(entrypoint.type);
|
|
1757
1768
|
const entry = isVirtual ? `virtual:wxt-${entrypoint.type}?${entrypoint.inputPath}` : entrypoint.inputPath;
|
|
1758
1769
|
const plugins = [];
|
|
1759
1770
|
if (entrypoint.type === "content-script-style" || entrypoint.type === "unlisted-style") {
|
|
@@ -1892,6 +1903,7 @@ function removeImportStatements(text) {
|
|
|
1892
1903
|
function removeProjectImportStatements(text) {
|
|
1893
1904
|
const noImports = removeImportStatements(text);
|
|
1894
1905
|
return `import { defineContentScript, defineBackground } from 'wxt/client';
|
|
1906
|
+
import { defineUnlistedScript } from 'wxt/sandbox';
|
|
1895
1907
|
|
|
1896
1908
|
${noImports}`;
|
|
1897
1909
|
}
|
|
@@ -1917,7 +1929,6 @@ async function importEntrypointFile(path9, config) {
|
|
|
1917
1929
|
cache: false,
|
|
1918
1930
|
debug: config.debug,
|
|
1919
1931
|
esmResolve: true,
|
|
1920
|
-
interopDefault: true,
|
|
1921
1932
|
alias: {
|
|
1922
1933
|
"webextension-polyfill": (0, import_path7.resolve)(
|
|
1923
1934
|
config.root,
|
|
@@ -1936,7 +1947,8 @@ async function importEntrypointFile(path9, config) {
|
|
|
1936
1947
|
}
|
|
1937
1948
|
});
|
|
1938
1949
|
try {
|
|
1939
|
-
|
|
1950
|
+
const res = await jiti(path9);
|
|
1951
|
+
return res.default;
|
|
1940
1952
|
} catch (err) {
|
|
1941
1953
|
config.logger.error(err);
|
|
1942
1954
|
throw err;
|
|
@@ -1994,15 +2006,14 @@ ${JSON.stringify(
|
|
|
1994
2006
|
hasBackground = true;
|
|
1995
2007
|
break;
|
|
1996
2008
|
case "content-script":
|
|
1997
|
-
entrypoint = await getContentScriptEntrypoint(
|
|
1998
|
-
config,
|
|
1999
|
-
getEntrypointName(config.entrypointsDir, path9),
|
|
2000
|
-
path9
|
|
2001
|
-
);
|
|
2009
|
+
entrypoint = await getContentScriptEntrypoint(config, path9);
|
|
2002
2010
|
break;
|
|
2003
2011
|
case "unlisted-page":
|
|
2004
2012
|
entrypoint = await getUnlistedPageEntrypoint(config, path9);
|
|
2005
2013
|
break;
|
|
2014
|
+
case "unlisted-script":
|
|
2015
|
+
entrypoint = await getUnlistedScriptEntrypoint(config, path9);
|
|
2016
|
+
break;
|
|
2006
2017
|
case "content-script-style":
|
|
2007
2018
|
entrypoint = {
|
|
2008
2019
|
type,
|
|
@@ -2146,19 +2157,46 @@ async function getUnlistedPageEntrypoint(config, path9) {
|
|
|
2146
2157
|
options: getHtmlBaseOptions(document)
|
|
2147
2158
|
};
|
|
2148
2159
|
}
|
|
2160
|
+
async function getUnlistedScriptEntrypoint(config, path9) {
|
|
2161
|
+
const name = getEntrypointName(config.entrypointsDir, path9);
|
|
2162
|
+
const defaultExport = await importEntrypointFile(
|
|
2163
|
+
path9,
|
|
2164
|
+
config
|
|
2165
|
+
);
|
|
2166
|
+
if (defaultExport == null) {
|
|
2167
|
+
throw Error(
|
|
2168
|
+
`${name}: Default export not found, did you forget to call "export default defineUnlistedScript(...)"?`
|
|
2169
|
+
);
|
|
2170
|
+
}
|
|
2171
|
+
const { main: _, ...moduleOptions } = defaultExport;
|
|
2172
|
+
const options = moduleOptions;
|
|
2173
|
+
return {
|
|
2174
|
+
type: "unlisted-script",
|
|
2175
|
+
name,
|
|
2176
|
+
inputPath: path9,
|
|
2177
|
+
outputDir: config.outDir,
|
|
2178
|
+
options
|
|
2179
|
+
};
|
|
2180
|
+
}
|
|
2149
2181
|
async function getBackgroundEntrypoint(config, path9) {
|
|
2182
|
+
const name = "background";
|
|
2150
2183
|
let options = {};
|
|
2151
2184
|
if (path9 !== VIRTUAL_NOOP_BACKGROUND_MODULE_ID) {
|
|
2152
|
-
const defaultExport = await importEntrypointFile(
|
|
2185
|
+
const defaultExport = await importEntrypointFile(
|
|
2186
|
+
path9,
|
|
2187
|
+
config
|
|
2188
|
+
);
|
|
2153
2189
|
if (defaultExport == null) {
|
|
2154
|
-
throw Error(
|
|
2190
|
+
throw Error(
|
|
2191
|
+
`${name}: Default export not found, did you forget to call "export default defineBackground(...)"?`
|
|
2192
|
+
);
|
|
2155
2193
|
}
|
|
2156
2194
|
const { main: _, ...moduleOptions } = defaultExport;
|
|
2157
2195
|
options = moduleOptions;
|
|
2158
2196
|
}
|
|
2159
2197
|
return {
|
|
2160
2198
|
type: "background",
|
|
2161
|
-
name
|
|
2199
|
+
name,
|
|
2162
2200
|
inputPath: path9,
|
|
2163
2201
|
outputDir: config.outDir,
|
|
2164
2202
|
options: {
|
|
@@ -2168,14 +2206,17 @@ async function getBackgroundEntrypoint(config, path9) {
|
|
|
2168
2206
|
}
|
|
2169
2207
|
};
|
|
2170
2208
|
}
|
|
2171
|
-
async function getContentScriptEntrypoint(config,
|
|
2209
|
+
async function getContentScriptEntrypoint(config, path9) {
|
|
2210
|
+
const name = getEntrypointName(config.entrypointsDir, path9);
|
|
2172
2211
|
const { main: _, ...options } = await importEntrypointFile(path9, config);
|
|
2173
2212
|
if (options == null) {
|
|
2174
|
-
throw Error(
|
|
2213
|
+
throw Error(
|
|
2214
|
+
`${name}: Default export not found, did you forget to call "export default defineContentScript(...)"?`
|
|
2215
|
+
);
|
|
2175
2216
|
}
|
|
2176
2217
|
return {
|
|
2177
2218
|
type: "content-script",
|
|
2178
|
-
name
|
|
2219
|
+
name,
|
|
2179
2220
|
inputPath: path9,
|
|
2180
2221
|
outputDir: (0, import_path8.resolve)(config.outDir, CONTENT_SCRIPT_OUT_DIR),
|
|
2181
2222
|
options
|
|
@@ -2697,7 +2738,8 @@ function addEntrypoints(manifest, entrypoints, buildOutput, config) {
|
|
|
2697
2738
|
);
|
|
2698
2739
|
const options2 = {
|
|
2699
2740
|
default_icon: popup.options.defaultIcon,
|
|
2700
|
-
default_title: popup.options.defaultTitle
|
|
2741
|
+
default_title: popup.options.defaultTitle,
|
|
2742
|
+
browser_style: popup.options.browserStyle
|
|
2701
2743
|
};
|
|
2702
2744
|
if (manifest.manifest_version === 3) {
|
|
2703
2745
|
manifest.action = {
|
|
@@ -4577,7 +4619,7 @@ async function clean(root = process.cwd()) {
|
|
|
4577
4619
|
}
|
|
4578
4620
|
|
|
4579
4621
|
// package.json
|
|
4580
|
-
var version2 = "0.
|
|
4622
|
+
var version2 = "0.8.1";
|
|
4581
4623
|
|
|
4582
4624
|
// src/core/utils/defineConfig.ts
|
|
4583
4625
|
function defineConfig(config) {
|