wxt 0.7.1 → 0.7.2
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/README.md +4 -4
- package/dist/cli.cjs +54 -20
- package/dist/client.d.ts +17 -13
- package/dist/client.js +1 -1
- package/dist/index.cjs +53 -19
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +17 -13
- package/dist/index.d.ts +17 -13
- package/dist/index.js +53 -19
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/client.d.ts
CHANGED
|
@@ -79,47 +79,47 @@ declare class ContentScriptContext extends AbortController {
|
|
|
79
79
|
|
|
80
80
|
type TargetBrowser = string;
|
|
81
81
|
interface ContentScriptDefinition extends ExcludableEntrypoint {
|
|
82
|
-
matches: Manifest.ContentScript['matches']
|
|
82
|
+
matches: PerBrowserOption<Manifest.ContentScript['matches']>;
|
|
83
83
|
/**
|
|
84
84
|
* See https://developer.chrome.com/docs/extensions/mv3/content_scripts/
|
|
85
85
|
* @default "documentIdle"
|
|
86
86
|
*/
|
|
87
|
-
runAt?: Manifest.ContentScript['run_at']
|
|
87
|
+
runAt?: PerBrowserOption<Manifest.ContentScript['run_at']>;
|
|
88
88
|
/**
|
|
89
89
|
* See https://developer.chrome.com/docs/extensions/mv3/content_scripts/
|
|
90
90
|
* @default false
|
|
91
91
|
*/
|
|
92
|
-
matchAboutBlank?: Manifest.ContentScript['match_about_blank']
|
|
92
|
+
matchAboutBlank?: PerBrowserOption<Manifest.ContentScript['match_about_blank']>;
|
|
93
93
|
/**
|
|
94
94
|
* See https://developer.chrome.com/docs/extensions/mv3/content_scripts/
|
|
95
95
|
* @default []
|
|
96
96
|
*/
|
|
97
|
-
excludeMatches?: Manifest.ContentScript['exclude_matches']
|
|
97
|
+
excludeMatches?: PerBrowserOption<Manifest.ContentScript['exclude_matches']>;
|
|
98
98
|
/**
|
|
99
99
|
* See https://developer.chrome.com/docs/extensions/mv3/content_scripts/
|
|
100
100
|
* @default []
|
|
101
101
|
*/
|
|
102
|
-
includeGlobs?: Manifest.ContentScript['include_globs']
|
|
102
|
+
includeGlobs?: PerBrowserOption<Manifest.ContentScript['include_globs']>;
|
|
103
103
|
/**
|
|
104
104
|
* See https://developer.chrome.com/docs/extensions/mv3/content_scripts/
|
|
105
105
|
* @default []
|
|
106
106
|
*/
|
|
107
|
-
excludeGlobs?: Manifest.ContentScript['exclude_globs']
|
|
107
|
+
excludeGlobs?: PerBrowserOption<Manifest.ContentScript['exclude_globs']>;
|
|
108
108
|
/**
|
|
109
109
|
* See https://developer.chrome.com/docs/extensions/mv3/content_scripts/
|
|
110
110
|
* @default false
|
|
111
111
|
*/
|
|
112
|
-
allFrames?: Manifest.ContentScript['all_frames']
|
|
112
|
+
allFrames?: PerBrowserOption<Manifest.ContentScript['all_frames']>;
|
|
113
113
|
/**
|
|
114
114
|
* See https://developer.chrome.com/docs/extensions/mv3/content_scripts/
|
|
115
115
|
* @default false
|
|
116
116
|
*/
|
|
117
|
-
matchOriginAsFallback?: boolean
|
|
117
|
+
matchOriginAsFallback?: PerBrowserOption<boolean>;
|
|
118
118
|
/**
|
|
119
119
|
* See https://developer.chrome.com/docs/extensions/mv3/content_scripts/
|
|
120
120
|
* @default "ISOLATED"
|
|
121
121
|
*/
|
|
122
|
-
world?: 'ISOLATED' | 'MAIN'
|
|
122
|
+
world?: PerBrowserOption<'ISOLATED' | 'MAIN'>;
|
|
123
123
|
/**
|
|
124
124
|
* Customize how imported/generated styles are injected with the content script. Regardless of the
|
|
125
125
|
* mode selected, CSS will always be built and included in the output directory.
|
|
@@ -131,16 +131,20 @@ interface ContentScriptDefinition extends ExcludableEntrypoint {
|
|
|
131
131
|
*
|
|
132
132
|
* @default "manifest"
|
|
133
133
|
*/
|
|
134
|
-
cssInjectionMode?: 'manifest' | 'manual' | 'ui'
|
|
134
|
+
cssInjectionMode?: PerBrowserOption<'manifest' | 'manual' | 'ui'>;
|
|
135
135
|
/**
|
|
136
136
|
* Main function executed when the content script is loaded.
|
|
137
137
|
*/
|
|
138
138
|
main(ctx: ContentScriptContext): void | Promise<void>;
|
|
139
139
|
}
|
|
140
140
|
interface BackgroundScriptDefintition extends ExcludableEntrypoint {
|
|
141
|
-
type?: 'module'
|
|
141
|
+
type?: PerBrowserOption<'module'>;
|
|
142
|
+
persistent?: PerBrowserOption<boolean>;
|
|
142
143
|
main(): void;
|
|
143
144
|
}
|
|
145
|
+
type PerBrowserOption<T> = T | {
|
|
146
|
+
[browser: TargetBrowser]: T;
|
|
147
|
+
};
|
|
144
148
|
interface ExcludableEntrypoint {
|
|
145
149
|
/**
|
|
146
150
|
* List of target browsers to include this entrypoint in. Defaults to being included in all
|
|
@@ -167,7 +171,7 @@ declare function defineBackground(definition: BackgroundScriptDefintition): Back
|
|
|
167
171
|
* Utility for mounting content script UI's with isolated styles. Automatically removed from the DOM
|
|
168
172
|
* when the content script's context is invalidated.
|
|
169
173
|
*
|
|
170
|
-
* See <https://wxt.dev/
|
|
174
|
+
* See <https://wxt.dev/entrypoints/content-scripts.html#ui> for full documentation.
|
|
171
175
|
*
|
|
172
176
|
* @example
|
|
173
177
|
* // entrypoints/example-ui.content/index.ts
|
|
@@ -258,7 +262,7 @@ interface BaseContentScriptUiOptions<T> {
|
|
|
258
262
|
* set `cssInjectionMode: "ui"`, the imported CSS will be included automatically. You do not need
|
|
259
263
|
* to pass those styles in here. This is for any additional styles not in the imported CSS.
|
|
260
264
|
*
|
|
261
|
-
* See <https://wxt.dev/
|
|
265
|
+
* See <https://wxt.dev/entrypoints/content-scripts.html#ui> for more info.
|
|
262
266
|
*/
|
|
263
267
|
css?: string;
|
|
264
268
|
}
|
package/dist/client.js
CHANGED
|
@@ -305,4 +305,4 @@ export {
|
|
|
305
305
|
defineBackground,
|
|
306
306
|
defineContentScript
|
|
307
307
|
};
|
|
308
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vc3JjL2NsaWVudC9kZWZpbmVDb250ZW50U2NyaXB0LnRzIiwgIi4uL3NyYy9jbGllbnQvZGVmaW5lQmFja2dyb3VuZC50cyIsICIuLi9zcmMvY2xpZW50L2NyZWF0ZUNvbnRlbnRTY3JpcHRVaS50cyIsICIuLi9zcmMvY2xpZW50L2Jyb3dzZXIudHMiLCAiLi4vc3JjL2NsaWVudC91dGlscy9sb2dnZXIudHMiLCAiLi4vc3JjL2NsaWVudC91dGlscy9Db250ZW50U2NyaXB0Q29udGV4dC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiaW1wb3J0IHsgQ29udGVudFNjcmlwdERlZmluaXRpb24gfSBmcm9tICcuLi9jb3JlL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUNvbnRlbnRTY3JpcHQoXG4gIGRlZmluaXRpb246IENvbnRlbnRTY3JpcHREZWZpbml0aW9uLFxuKTogQ29udGVudFNjcmlwdERlZmluaXRpb24ge1xuICByZXR1cm4gZGVmaW5pdGlvbjtcbn1cbiIsICJpbXBvcnQgeyBCYWNrZ3JvdW5kU2NyaXB0RGVmaW50aXRpb24gfSBmcm9tICcuLic7XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVCYWNrZ3JvdW5kKG1haW46ICgpID0+IHZvaWQpOiBCYWNrZ3JvdW5kU2NyaXB0RGVmaW50aXRpb247XG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lQmFja2dyb3VuZChcbiAgZGVmaW5pdGlvbjogQmFja2dyb3VuZFNjcmlwdERlZmludGl0aW9uLFxuKTogQmFja2dyb3VuZFNjcmlwdERlZmludGl0aW9uO1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUJhY2tncm91bmQoXG4gIGFyZzogKCgpID0+IHZvaWQpIHwgQmFja2dyb3VuZFNjcmlwdERlZmludGl0aW9uLFxuKTogQmFja2dyb3VuZFNjcmlwdERlZmludGl0aW9uIHtcbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbicpIHJldHVybiB7IG1haW46IGFyZyB9O1xuICByZXR1cm4gYXJnO1xufVxuIiwgImltcG9ydCB7IGNyZWF0ZUlzb2xhdGVkRWxlbWVudCB9IGZyb20gJ0B3ZWJleHQtY29yZS9pc29sYXRlZC1lbGVtZW50JztcbmltcG9ydCB7IGJyb3dzZXIgfSBmcm9tICcuL2Jyb3dzZXInO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi91dGlscy9sb2dnZXInO1xuaW1wb3J0IHsgQ29udGVudFNjcmlwdENvbnRleHQgfSBmcm9tICcuJztcblxuLyoqXG4gKiBVdGlsaXR5IGZvciBtb3VudGluZyBjb250ZW50IHNjcmlwdCBVSSdzIHdpdGggaXNvbGF0ZWQgc3R5bGVzLiBBdXRvbWF0aWNhbGx5IHJlbW92ZWQgZnJvbSB0aGUgRE9NXG4gKiB3aGVuIHRoZSBjb250ZW50IHNjcmlwdCdzIGNvbnRleHQgaXMgaW52YWxpZGF0ZWQuXG4gKlxuICogU2VlIDxodHRwczovL3d4dC5kZXYvZ3VpZGUvY29udGVudC1zY3JpcHRzLmh0bWwjdWk+IGZvciBmdWxsIGRvY3VtZW50YXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIGVudHJ5cG9pbnRzL2V4YW1wbGUtdWkuY29udGVudC9pbmRleC50c1xuICogaW1wb3J0IFwiLi9zdHlsZS5jc3NcIlxuICpcbiAqIGV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbnRlbnRTY3JpcHQoe1xuICogICBtYXRjaGVzOiBbXCIqOi8vKi5nb29nbGUuY29tLypcIl0sXG4gKiAgIGNzc0luamVjdGlvbk1vZGU6IFwidWlcIixcbiAqXG4gKiAgIGFzeW5jIG1haW4oY3R4KSB7XG4gKiAgICAgY29uc3QgdWkgPSBhd2FpdCBjcmVhdGVDb250ZW50U2NyaXB0VWkoY3R4LCB7XG4gKiAgICAgICBuYW1lOiBcImV4YW1wbGUtb3ZlcmxheVwiLFxuICogICAgICAgdHlwZTogXCJtb2RhbFwiLFxuICogICAgICAgbW91bnQoY29udGFpbmVyKSB7XG4gKiAgICAgICAgIGNvbnN0IGFwcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gKiAgICAgICAgIGFwcC50ZXh0Q29udGVudCA9IFwiQ29udGVudCBTY3JpcHQgVUlcIjtcbiAqICAgICAgICAgY29udGFpbmVyLmFwcGVuZChhcHApO1xuICogICAgICAgfVxuICogICAgIH0pXG4gKiAgICAgdWkubW91bnQoKTtcbiAqICAgfVxuICogfSlcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNvbnRlbnRTY3JpcHRVaTxUPihcbiAgY3R4OiBDb250ZW50U2NyaXB0Q29udGV4dCxcbiAgb3B0aW9uczogQ29udGVudFNjcmlwdFVpT3B0aW9uczxUPixcbik6IFByb21pc2U8Q29udGVudFNjcmlwdFVpPFQ+PiB7XG4gIGNvbnN0IGNzcyA9IFtvcHRpb25zLmNzcyA/PyAnJ107XG4gIGlmIChjdHgub3B0aW9ucz8uY3NzSW5qZWN0aW9uTW9kZSA9PT0gJ3VpJykge1xuICAgIGNzcy5wdXNoKGF3YWl0IGxvYWRDc3MoKSk7XG4gIH1cblxuICBjb25zdCB7XG4gICAgaXNvbGF0ZWRFbGVtZW50OiB1aUNvbnRhaW5lcixcbiAgICBwYXJlbnRFbGVtZW50OiBzaGFkb3dIb3N0LFxuICAgIHNoYWRvdyxcbiAgfSA9IGF3YWl0IGNyZWF0ZUlzb2xhdGVkRWxlbWVudCh7XG4gICAgbmFtZTogb3B0aW9ucy5uYW1lLFxuICAgIGNzczoge1xuICAgICAgdGV4dENvbnRlbnQ6IGNzcy5qb2luKCdcXG4nKS50cmltKCksXG4gICAgfSxcbiAgICBtb2RlOiAnb3BlbicsXG4gIH0pO1xuXG4gIGNvbnN0IGdldEFuY2hvciA9ICgpOiBFbGVtZW50IHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAob3B0aW9ucy5hbmNob3IgPT0gbnVsbCkgcmV0dXJuIGRvY3VtZW50LmJvZHk7XG5cbiAgICBsZXQgcmVzb2x2ZWQgPVxuICAgICAgdHlwZW9mIG9wdGlvbnMuYW5jaG9yID09PSAnZnVuY3Rpb24nID8gb3B0aW9ucy5hbmNob3IoKSA6IG9wdGlvbnMuYW5jaG9yO1xuICAgIGlmICh0eXBlb2YgcmVzb2x2ZWQgPT09ICdzdHJpbmcnKVxuICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8RWxlbWVudD4ocmVzb2x2ZWQpID8/IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzb2x2ZWQgPz8gdW5kZWZpbmVkO1xuICB9O1xuXG4gIGxldCBtb3VudGVkOiBUO1xuXG4gIGNvbnN0IG1vdW50ID0gKCkgPT4ge1xuICAgIGNvbnN0IGFuY2hvciA9IGdldEFuY2hvcigpO1xuICAgIGlmIChhbmNob3IgPT0gbnVsbClcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAnRmFpbGVkIHRvIG1vdW50IGNvbnRlbnQgc2NyaXB0IHVpOiBjb3VsZCBub3QgZmluZCBhbmNob3IgZWxlbWVudCcsXG4gICAgICApO1xuXG4gICAgLy8gTW91bnQgVUkgaW5zaWRlIHNoYWRvdyByb290XG4gICAgbW91bnRlZCA9IG9wdGlvbnMubW91bnQodWlDb250YWluZXIpO1xuXG4gICAgLy8gQWRkIHNoYWRvdyByb290IGVsZW1lbnQgdG8gRE9NXG4gICAgc3dpdGNoIChvcHRpb25zLmFwcGVuZCkge1xuICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICBjYXNlICdsYXN0JzpcbiAgICAgICAgYW5jaG9yLmFwcGVuZChzaGFkb3dIb3N0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdmaXJzdCc6XG4gICAgICAgIGlmIChhbmNob3IuZmlyc3RDaGlsZCkge1xuICAgICAgICAgIGFuY2hvci5pbnNlcnRCZWZvcmUoc2hhZG93SG9zdCwgYW5jaG9yLmZpcnN0Q2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFuY2hvci5hcHBlbmQoc2hhZG93SG9zdCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdyZXBsYWNlJzpcbiAgICAgICAgYW5jaG9yLnJlcGxhY2VXaXRoKHNoYWRvd0hvc3QpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2FmdGVyJzpcbiAgICAgICAgYW5jaG9yLnJlcGxhY2VXaXRoKGFuY2hvciwgc2hhZG93SG9zdCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYmVmb3JlJzpcbiAgICAgICAgYW5jaG9yLnJlcGxhY2VXaXRoKHNoYWRvd0hvc3QsIGFuY2hvcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgb3B0aW9ucy5hcHBlbmQoYW5jaG9yLCBzaGFkb3dIb3N0KTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgdHlwZXNcbiAgICBpZiAob3B0aW9ucy50eXBlICE9PSAnaW5saW5lJykge1xuICAgICAgaWYgKG9wdGlvbnMuekluZGV4ICE9IG51bGwpXG4gICAgICAgIHNoYWRvd0hvc3Quc3R5bGUuekluZGV4ID0gU3RyaW5nKG9wdGlvbnMuekluZGV4KTtcblxuICAgICAgc2hhZG93SG9zdC5zdHlsZS5vdmVyZmxvdyA9ICd2aXNpYmxlJztcbiAgICAgIHNoYWRvd0hvc3Quc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnO1xuICAgICAgc2hhZG93SG9zdC5zdHlsZS53aWR0aCA9ICcwJztcbiAgICAgIHNoYWRvd0hvc3Quc3R5bGUuaGVpZ2h0ID0gJzAnO1xuICAgICAgc2hhZG93SG9zdC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICAgICAgY29uc3QgaHRtbCA9IHNoYWRvdy5xdWVyeVNlbGVjdG9yKCdodG1sJykhO1xuICAgICAgLy8gSFRNTCBkb2Vzbid0IGV4aXN0IGluIHRlc3RzXG4gICAgICBpZiAob3B0aW9ucy50eXBlID09PSAnb3ZlcmxheScpIHtcbiAgICAgICAgaHRtbC5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgIGlmIChvcHRpb25zLmFsaWdubWVudD8uc3RhcnRzV2l0aCgnYm90dG9tLScpKSBodG1sLnN0eWxlLmJvdHRvbSA9ICcwJztcbiAgICAgICAgZWxzZSBodG1sLnN0eWxlLnRvcCA9ICcwJztcblxuICAgICAgICBpZiAob3B0aW9ucy5hbGlnbm1lbnQ/LmVuZHNXaXRoKCctcmlnaHQnKSkgaHRtbC5zdHlsZS5yaWdodCA9ICcwJztcbiAgICAgICAgZWxzZSBodG1sLnN0eWxlLmxlZnQgPSAnMCc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBodG1sLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJztcbiAgICAgICAgaHRtbC5zdHlsZS50b3AgPSAnMCc7XG4gICAgICAgIGh0bWwuc3R5bGUuYm90dG9tID0gJzAnO1xuICAgICAgICBodG1sLnN0eWxlLmxlZnQgPSAnMCc7XG4gICAgICAgIGh0bWwuc3R5bGUucmlnaHQgPSAnMCc7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlbW92ZSA9ICgpID0+IHtcbiAgICAvLyBEZXRhdGNoIHNoYWRvdyByb290IGZyb20gRE9NXG4gICAgc2hhZG93SG9zdC5yZW1vdmUoKTtcbiAgICAvLyBDbGVhbnVwIG1vdW50ZWQgc3RhdGVcbiAgICBvcHRpb25zLm9uUmVtb3ZlPy4obW91bnRlZCk7XG4gICAgLy8gUmVtb3ZlIGNoaWxkcmVuIGZyb20gdWlDb250YWluZXJcbiAgICB3aGlsZSAodWlDb250YWluZXIubGFzdENoaWxkKVxuICAgICAgdWlDb250YWluZXIucmVtb3ZlQ2hpbGQodWlDb250YWluZXIubGFzdENoaWxkKTtcbiAgfTtcblxuICBjdHgub25JbnZhbGlkYXRlZChyZW1vdmUpO1xuXG4gIHJldHVybiB7XG4gICAgc2hhZG93LFxuICAgIHNoYWRvd0hvc3QsXG4gICAgdWlDb250YWluZXIsXG4gICAgbW91bnQsXG4gICAgcmVtb3ZlLFxuICAgIG1vdW50ZWQ6IG1vdW50ZWQhLFxuICB9O1xufVxuXG4vKipcbiAqIExvYWQgdGhlIENTUyBmb3IgdGhlIGN1cnJlbnQgZW50cnlwb2ludC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gbG9hZENzcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCB1cmwgPSBicm93c2VyLnJ1bnRpbWUuZ2V0VVJMKGAvY29udGVudC1zY3JpcHRzLyR7X19FTlRSWVBPSU5UX199LmNzc2ApO1xuICB0cnkge1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKHVybCk7XG4gICAgY29uc3QgY3NzID0gYXdhaXQgcmVzLnRleHQoKTtcblxuICAgIC8vIFJlcGxhY2UgOnJvb3Qgc2VsZWN0b3JzIHdpdGggOmhvc3Qgc2luY2Ugd2UncmUgaW4gYSBzaGFkb3cgcm9vdFxuICAgIHJldHVybiBjc3MucmVwbGFjZUFsbCgnOnJvb3QnLCAnOmhvc3QnKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLndhcm4oXG4gICAgICBgRmFpbGVkIHRvIGxvYWQgc3R5bGVzIEAgJHt1cmx9LiBEaWQgeW91IGZvcmdldCB0byBpbXBvcnQgdGhlIHN0eWxlc2hlZXQgaW4geW91ciBlbnRyeXBvaW50P2AsXG4gICAgICBlcnIsXG4gICAgKTtcbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb250ZW50U2NyaXB0VWk8VD4ge1xuICAvKipcbiAgICogVGhlIGBIVE1MRWxlbWVudGAgaG9zdGluZyB0aGUgc2hhZG93IHJvb3QgdXNlZCB0byBpc29sYXRlIHRoZSBVSSdzIHN0eWxlcy4gVGhpcyBpcyB0aGUgZWxlbWVudFxuICAgKiB0aGF0IGdldCdzIGFkZGVkIHRvIHRoZSBET00uIFRoaXMgZWxlbWVudCdzIHN0eWxlIGlzIG5vdCBpc29sYXRlZCBmcm9tIHRoZSB3ZWJwYWdlLlxuICAgKi9cbiAgc2hhZG93SG9zdDogSFRNTEVsZW1lbnQ7XG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVyIGVsZW1lbnQgaW5zaWRlIHRoZSBgU2hhZG93Um9vdGAgd2hvc2Ugc3R5bGVzIGFyZSBpc29sYXRlZC4gVGhlIFVJIGlzIG1vdW50ZWRcbiAgICogaW5zaWRlIHRoaXMgYEhUTUxFbGVtZW50YC5cbiAgICovXG4gIHVpQ29udGFpbmVyOiBIVE1MRWxlbWVudDtcbiAgLyoqXG4gICAqIFRoZSBzaGFkb3cgcm9vdCBwZXJmb3JtaW5nIHRoZSBpc29sYXRpb24uXG4gICAqL1xuICBzaGFkb3c6IFNoYWRvd1Jvb3Q7XG4gIC8qKlxuICAgKiBDdXN0b20gZGF0YSByZXR1cm5lZCBmcm9tIHRoZSBgb3B0aW9ucy5tb3VudGAgZnVuY3Rpb24uXG4gICAqL1xuICBtb3VudGVkOiBUO1xuICAvKipcbiAgICogRnVuY3Rpb24gdGhhdCBtb3VudHMgb3IgcmVtb3VudHMgdGhlIFVJIG9uIHRoZSBwYWdlLlxuICAgKi9cbiAgbW91bnQ6ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBGdW5jdGlvbiB0aGF0IHJlbW92ZXMgdGhlIFVJIGZyb20gdGhlIHdlYnBhZ2UuXG4gICAqL1xuICByZW1vdmU6ICgpID0+IHZvaWQ7XG59XG5cbmludGVyZmFjZSBCYXNlQ29udGVudFNjcmlwdFVpT3B0aW9uczxUPiB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY3VzdG9tIGNvbXBvbmVudCB1c2VkIHRvIGhvc3QgdGhlIFNoYWRvd1Jvb3QuIE11c3QgYmUga2ViYWItY2FzZS5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIEluIGNvbWJpbmF0aW9uIHdpdGggYGFuY2hvcmAsIGRlY2lkZSBob3cgdG8gYWRkIHRoZSBVSSB0byB0aGUgRE9NLlxuICAgKlxuICAgKiAtIGBcImxhc3RcImAgKGRlZmF1bHQpIC0gQWRkIHRoZSBVSSBhcyB0aGUgbGFzdCBjaGlsZCBvZiB0aGUgYGFuY2hvcmAgZWxlbWVudFxuICAgKiAtIGBcImZpcnN0XCJgIC0gQWRkIHRoZSBVSSBhcyB0aGUgbGFzdCBjaGlsZCBvZiB0aGUgYGFuY2hvcmAgZWxlbWVudFxuICAgKiAtIGBcInJlcGxhY2VcImAgLSBSZXBsYWNlIHRoZSBgYW5jaG9yYCBlbGVtZW50IHdpdGggdGhlIFVJLlxuICAgKiAtIGBcImJlZm9yZVwiYCAtIEFkZCB0aGUgVUkgYXMgdGhlIHNpYmxpbmcgYmVmb3JlIHRoZSBgYW5jaG9yYCBlbGVtZW50XG4gICAqIC0gYFwiYWZ0ZXJcImAgLSBBZGQgdGhlIFVJIGFzIHRoZSBzaWJsaW5nIGFmdGVyIHRoZSBgYW5jaG9yYCBlbGVtZW50XG4gICAqIC0gYChhbmNob3IsIHVpKSA9PiB2b2lkYCAtIEN1c3RvbWl6YWJsZSBmdW5jdGlvbiB0aGF0IGxldCdzIHlvdSBhZGQgdGhlIFVJIHRvIHRoZSBET01cbiAgICovXG4gIGFwcGVuZD86IENvbnRlbnRTY3JpcHRBcHBlbmRNb2RlIHwgKChhbmNob3I6IEVsZW1lbnQsIHVpOiBFbGVtZW50KSA9PiB2b2lkKTtcbiAgLyoqXG4gICAqIEEgQ1NTIHNlbGVjdG9yLCBlbGVtZW50LCBvciBmdW5jdGlvbiB0aGF0IHJldHVybnMgb25lIG9mIHRoZSB0d28uIEFsb25nIHdpdGggYGFwcGVuZGAsIHRoZVxuICAgKiBgYW5jaG9yYCBkaWN0YXRlcyB3aGVyZSBpbiB0aGUgcGFnZSB0aGUgVUkgd2lsbCBiZSBhZGRlZC5cbiAgICovXG4gIGFuY2hvcj86XG4gICAgfCBzdHJpbmdcbiAgICB8IEVsZW1lbnRcbiAgICB8IG51bGxcbiAgICB8IHVuZGVmaW5lZFxuICAgIHwgKCgpID0+IHN0cmluZyB8IEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkKTtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGV4ZWN1dGVkIHdoZW4gbW91bnRpbmcgdGhlIFVJLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBjcmVhdGUgYW5kIGFwcGVuZCB0aGUgVUkgdG8gdGhlXG4gICAqIGBjb250YWluZXJgIGVsZW1lbnQuIEl0IGlzIGNhbGxlZCBldmVyeSB0aW1lIGB1aS5tb3VudCgpYCBpcyBjYWxsZWRcbiAgICpcbiAgICogT3B0aW9uYWxseSByZXR1cm4gYSB2YWx1ZSB0aGF0IGNhbiBiZSBhY2Nlc3NlZCBhdCBgdWkubW91bnRlZGAgb3IgaW4gdGhlIGBvblJlbW92ZWAgY2FsbGJhY2suXG4gICAqL1xuICBtb3VudDogKGNvbnRhaW5lcjogRWxlbWVudCkgPT4gVDtcbiAgLyoqXG4gICAqIENhbGxiYWNrIGNhbGxlZCB3aGVuIHRoZSBVSSBpcyByZW1vdmVkIGZyb20gdGhlIHdlYnBhZ2UuIFVzZSB0byBjbGVhbnVwIHlvdXIgVUksIGxpa2VcbiAgICogdW5tb3VudGluZyB5b3VyIHZ1ZSBvciByZWFjdCBhcHBzLlxuICAgKi9cbiAgb25SZW1vdmU/OiAobW91bnRlZDogVCkgPT4gdm9pZDtcbiAgLyoqXG4gICAqIEN1c3RvbSBDU1MgdGV4dCB0byBhcHBseSB0byB0aGUgVUkuIElmIHlvdXIgY29udGVudCBzY3JpcHQgaW1wb3J0cy9nZW5lcmF0ZXMgQ1NTIGFuZCB5b3UndmVcbiAgICogc2V0IGBjc3NJbmplY3Rpb25Nb2RlOiBcInVpXCJgLCB0aGUgaW1wb3J0ZWQgQ1NTIHdpbGwgYmUgaW5jbHVkZWQgYXV0b21hdGljYWxseS4gWW91IGRvIG5vdCBuZWVkXG4gICAqIHRvIHBhc3MgdGhvc2Ugc3R5bGVzIGluIGhlcmUuIFRoaXMgaXMgZm9yIGFueSBhZGRpdGlvbmFsIHN0eWxlcyBub3QgaW4gdGhlIGltcG9ydGVkIENTUy5cbiAgICpcbiAgICogU2VlIDxodHRwczovL3d4dC5kZXYvZ3VpZGUvY29udGVudC1zY3JpcHRzLmh0bWwjdWk+IGZvciBtb3JlIGluZm8uXG4gICAqL1xuICBjc3M/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIE92ZXJsYXlDb250ZW50U2NyaXB0VWlPcHRpb25zPFQ+ID0gQmFzZUNvbnRlbnRTY3JpcHRVaU9wdGlvbnM8VD4gJiB7XG4gIHR5cGU6ICdvdmVybGF5JztcbiAgLyoqXG4gICAqIFdoZW4gdXNpbmcgYHR5cGU6IFwib3ZlcmxheVwiYCwgdGhlIG1vdW50ZWQgZWxlbWVudCBpcyAwcHggYnkgMHB4IGluIHNpemUuIEFsaWdubWVudCBzcGVjaWZpZXNcbiAgICogd2hpY2ggY29ybmVyIGlzIGFsaWduZWQgd2l0aCB0aGF0IDB4MCBwaXhlbCBzcGFjZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJ0b3AtbGVmdFwiXG4gICAqL1xuICBhbGlnbm1lbnQ/OiBDb250ZW50U2NyaXB0VWlPdmVybGF5QWxpZ25tZW50O1xuICAvKipcbiAgICogVGhlIGB6LWluZGV4YCB1c2VkIG9uIHRoZSBgc2hhZG93SG9zdGAuIFNldCB0byBhIHBvc2l0aXZlIG51bWJlciB0byBzaG93IHlvdXIgVUkgb3ZlciB3ZWJzaXRlXG4gICAqIGNvbnRlbnQuXG4gICAqL1xuICB6SW5kZXg/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBNb2RhbENvbnRlbnRTY3JpcHRVaU9wdGlvbnM8VD4gPSBCYXNlQ29udGVudFNjcmlwdFVpT3B0aW9uczxUPiAmIHtcbiAgdHlwZTogJ21vZGFsJztcbiAgLyoqXG4gICAqIFRoZSBgei1pbmRleGAgdXNlZCBvbiB0aGUgYHNoYWRvd0hvc3RgLiBTZXQgdG8gYSBwb3NpdGl2ZSBudW1iZXIgdG8gc2hvdyB5b3VyIFVJIG92ZXIgd2Vic2l0ZVxuICAgKiBjb250ZW50LlxuICAgKi9cbiAgekluZGV4PzogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgSW5saW5lQ29udGVudFNjcmlwdFVpT3B0aW9uczxUPiA9IEJhc2VDb250ZW50U2NyaXB0VWlPcHRpb25zPFQ+ICYge1xuICB0eXBlOiAnaW5saW5lJztcbn07XG5cbmV4cG9ydCB0eXBlIENvbnRlbnRTY3JpcHRVaU92ZXJsYXlBbGlnbm1lbnQgPVxuICB8ICd0b3AtbGVmdCdcbiAgfCAndG9wLXJpZ2h0J1xuICB8ICdib3R0b20tbGVmdCdcbiAgfCAnYm90dG9tLXJpZ2h0JztcblxuZXhwb3J0IHR5cGUgQ29udGVudFNjcmlwdEFwcGVuZE1vZGUgPVxuICB8ICdsYXN0J1xuICB8ICdmaXJzdCdcbiAgfCAncmVwbGFjZSdcbiAgfCAnYmVmb3JlJ1xuICB8ICdhZnRlcic7XG5cbmV4cG9ydCB0eXBlIENvbnRlbnRTY3JpcHRVaU9wdGlvbnM8VD4gPVxuICB8IE92ZXJsYXlDb250ZW50U2NyaXB0VWlPcHRpb25zPFQ+XG4gIHwgTW9kYWxDb250ZW50U2NyaXB0VWlPcHRpb25zPFQ+XG4gIHwgSW5saW5lQ29udGVudFNjcmlwdFVpT3B0aW9uczxUPjtcbiIsICJpbXBvcnQgb3JpZ2luYWxCcm93c2VyLCB7IEJyb3dzZXIsIFJ1bnRpbWUsIEkxOG4gfSBmcm9tICd3ZWJleHRlbnNpb24tcG9seWZpbGwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEF1Z21lbnRlZEJyb3dzZXIgZXh0ZW5kcyBCcm93c2VyIHtcbiAgcnVudGltZTogV3h0UnVudGltZTtcbiAgaTE4bjogV3h0STE4bjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXeHRSdW50aW1lIGV4dGVuZHMgUnVudGltZS5TdGF0aWMge1xuICAvLyBPdmVycmlkZW4gcGVyLXByb2plY3Rcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXeHRJMThuIGV4dGVuZHMgSTE4bi5TdGF0aWMge1xuICAvLyBPdmVycmlkZW4gcGVyLXByb2plY3Rcbn1cblxuZXhwb3J0IGNvbnN0IGJyb3dzZXI6IEF1Z21lbnRlZEJyb3dzZXIgPSBvcmlnaW5hbEJyb3dzZXI7XG4iLCAiZnVuY3Rpb24gcHJpbnQobWV0aG9kOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQsIC4uLmFyZ3M6IGFueVtdKSB7XG4gIGlmIChpbXBvcnQubWV0YS5lbnYuTU9ERSA9PT0gJ3Byb2R1Y3Rpb24nKSByZXR1cm47XG5cbiAgaWYgKHR5cGVvZiBhcmdzWzBdID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBhcmdzLnNoaWZ0KCk7XG4gICAgbWV0aG9kKGBbd3h0XSAke21lc3NhZ2V9YCwgLi4uYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgbWV0aG9kKCdbd3h0XScsIC4uLmFyZ3MpO1xuICB9XG59XG5cbi8qKlxuICogV3JhcHBlciBhcm91bmQgYGNvbnNvbGVgIHdpdGggYSBcIlt3eHRdXCIgcHJlZml4XG4gKi9cbmV4cG9ydCBjb25zdCBsb2dnZXIgPSB7XG4gIGRlYnVnOiAoLi4uYXJnczogYW55W10pID0+IHByaW50KGNvbnNvbGUuZGVidWcsIC4uLmFyZ3MpLFxuICBsb2c6ICguLi5hcmdzOiBhbnlbXSkgPT4gcHJpbnQoY29uc29sZS5sb2csIC4uLmFyZ3MpLFxuICB3YXJuOiAoLi4uYXJnczogYW55W10pID0+IHByaW50KGNvbnNvbGUud2FybiwgLi4uYXJncyksXG4gIGVycm9yOiAoLi4uYXJnczogYW55W10pID0+IHByaW50KGNvbnNvbGUuZXJyb3IsIC4uLmFyZ3MpLFxufTtcbiIsICJpbXBvcnQgeyBDb250ZW50U2NyaXB0RGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMnO1xuaW1wb3J0IHsgYnJvd3NlciB9IGZyb20gJy4uL2Jyb3dzZXInO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi9sb2dnZXInO1xuXG4vKipcbiAqIEV4dGVuZHMgW2BBYm9ydENvbnRyb2xsZXJgXShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQWJvcnRDb250cm9sbGVyKS5cbiAqIFVzZWQgdG8gZGV0ZWN0IGFuZCBzdG9wIGNvbnRlbnQgc2NyaXB0IGNvZGUgd2hlbiB0aGUgc2NyaXB0IGlzIGludmFsaWRhdGVkLlxuICpcbiAqIEl0IGFsc28gcHJvdmlkZXMgc2V2ZXJhbCB1dGlsaXRpZXMgbGlrZSBgY3R4LnNldFRpbWVvdXRgIGFuZCBgY3R4LnNldEludGVydmFsYCB0aGF0IHNob3VsZCBiZSB1c2VkIGluXG4gKiBjb250ZW50IHNjcmlwdHMgaW5zdGVhZCBvZiBgd2luZG93LnNldFRpbWVvdXRgIG9yIGB3aW5kb3cuc2V0SW50ZXJ2YWxgLlxuICovXG5leHBvcnQgY2xhc3MgQ29udGVudFNjcmlwdENvbnRleHQgZXh0ZW5kcyBBYm9ydENvbnRyb2xsZXIge1xuICBzdGF0aWMgU0NSSVBUX1NUQVJURURfTUVTU0FHRV9UWVBFID0gJ3d4dDpjb250ZW50LXNjcmlwdC1zdGFydGVkJztcblxuICAjaXNUb3BGcmFtZSA9IHdpbmRvdy5zZWxmID09PSB3aW5kb3cudG9wO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGVudFNjcmlwdE5hbWU6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9ucz86IE9taXQ8Q29udGVudFNjcmlwdERlZmluaXRpb24sICdtYWluJz4sXG4gICkge1xuICAgIHN1cGVyKCk7XG5cbiAgICBpZiAodGhpcy4jaXNUb3BGcmFtZSkge1xuICAgICAgdGhpcy4jc3RvcE9sZFNjcmlwdHMoKTtcbiAgICB9XG4gICAgdGhpcy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIC8vIFJ1biBvbiBuZXh0IHRpY2sgc28gdGhlIGxpc3RlbmVyIGl0IGFkZHMgaXNuJ3QgdHJpZ2dlcmVkIGJ5IHN0b3BPbGRTY3JpcHRcbiAgICAgIHRoaXMuI2xpc3RlbkZvck5ld2VyU2NyaXB0cygpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGlzSW52YWxpZCgpOiBib29sZWFuIHtcbiAgICBpZiAoYnJvd3Nlci5ydW50aW1lLmlkID09IG51bGwpIHtcbiAgICAgIHRoaXMubm90aWZ5SW52YWxpZGF0ZWQoKTsgLy8gU2V0cyBgc2lnbmFsLmFib3J0ZWRgIHRvIHRydWVcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2lnbmFsLmFib3J0ZWQ7XG4gIH1cblxuICBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuaXNJbnZhbGlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGxpc3RlbmVyIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIGNvbnRlbnQgc2NyaXB0J3MgY29udGV4dCBpcyBpbnZhbGlkYXRlZC5cbiAgICpcbiAgICogQHJldHVybnMgQSBmdW5jdGlvbiB0byByZW1vdmUgdGhlIGxpc3RlbmVyLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBicm93c2VyLnJ1bnRpbWUub25NZXNzYWdlLmFkZExpc3RlbmVyKGNiKTtcbiAgICogY29uc3QgcmVtb3ZlSW52YWxpZGF0ZWRMaXN0ZW5lciA9IGN0eC5vbkludmFsaWRhdGVkKCgpID0+IHtcbiAgICogICBicm93c2VyLnJ1bnRpbWUub25NZXNzYWdlLnJlbW92ZUxpc3RlbmVyKGNiKTtcbiAgICogfSlcbiAgICogLy8gLi4uXG4gICAqIHJlbW92ZUludmFsaWRhdGVkTGlzdGVuZXIoKTtcbiAgICovXG4gIG9uSW52YWxpZGF0ZWQoY2I6ICgpID0+IHZvaWQpOiAoKSA9PiB2b2lkIHtcbiAgICB0aGlzLnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGNiKTtcbiAgICByZXR1cm4gKCkgPT4gdGhpcy5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBjYik7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgcHJvbWlzZSB0aGF0IG5ldmVyIHJlc29sdmVzLiBVc2VmdWwgaWYgeW91IGhhdmUgYW4gYXN5bmMgZnVuY3Rpb24gdGhhdCBzaG91bGRuJ3QgcnVuXG4gICAqIGFmdGVyIHRoZSBjb250ZXh0IGlzIGV4cGlyZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGNvbnN0IGdldFZhbHVlRnJvbVN0b3JhZ2UgPSBhc3luYyAoKSA9PiB7XG4gICAqICAgaWYgKGN0eC5pc0ludmFsaWQpIHJldHVybiBjdHguYmxvY2soKTtcbiAgICpcbiAgICogICAvLyAuLi5cbiAgICogfVxuICAgKi9cbiAgYmxvY2s8VD4oKTogUHJvbWlzZTxUPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKCgpID0+IHtcbiAgICAgIC8vIG5vb3BcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcmFwcGVyIGFyb3VuZCBgd2luZG93LnNldEludGVydmFsYCB0aGF0IGF1dG9tYXRpY2FsbHkgY2xlYXJzIHRoZSBpbnRlcnZhbCB3aGVuIGludmFsaWRhdGVkLlxuICAgKi9cbiAgc2V0SW50ZXJ2YWwoaGFuZGxlcjogKCkgPT4gdm9pZCwgdGltZW91dD86IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgaWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pc1ZhbGlkKSBoYW5kbGVyKCk7XG4gICAgfSwgdGltZW91dCkgYXMgdW5rbm93biBhcyBudW1iZXI7XG4gICAgdGhpcy5vbkludmFsaWRhdGVkKCgpID0+IGNsZWFySW50ZXJ2YWwoaWQpKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlciBhcm91bmQgYHdpbmRvdy5zZXRUaW1lb3V0YCB0aGF0IGF1dG9tYXRpY2FsbHkgY2xlYXJzIHRoZSBpbnRlcnZhbCB3aGVuIGludmFsaWRhdGVkLlxuICAgKi9cbiAgc2V0VGltZW91dChoYW5kbGVyOiAoKSA9PiB2b2lkLCB0aW1lb3V0PzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBjb25zdCBpZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZCkgaGFuZGxlcigpO1xuICAgIH0sIHRpbWVvdXQpIGFzIHVua25vd24gYXMgbnVtYmVyO1xuICAgIHRoaXMub25JbnZhbGlkYXRlZCgoKSA9PiBjbGVhclRpbWVvdXQoaWQpKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlciBhcm91bmQgYHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIHRoYXQgYXV0b21hdGljYWxseSBjYW5jZWxzIHRoZSByZXF1ZXN0IHdoZW5cbiAgICogaW52YWxpZGF0ZWQuXG4gICAqL1xuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2FsbGJhY2s6IEZyYW1lUmVxdWVzdENhbGxiYWNrKTogbnVtYmVyIHtcbiAgICBjb25zdCBpZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoLi4uYXJncykgPT4ge1xuICAgICAgaWYgKHRoaXMuaXNWYWxpZCkgY2FsbGJhY2soLi4uYXJncyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uSW52YWxpZGF0ZWQoKCkgPT4gY2FuY2VsQW5pbWF0aW9uRnJhbWUoaWQpKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlciBhcm91bmQgYHdpbmRvdy5yZXF1ZXN0SWRsZUNhbGxiYWNrYCB0aGF0IGF1dG9tYXRpY2FsbHkgY2FuY2VscyB0aGUgcmVxdWVzdCB3aGVuXG4gICAqIGludmFsaWRhdGVkLlxuICAgKi9cbiAgcmVxdWVzdElkbGVDYWxsYmFjayhcbiAgICBjYWxsYmFjazogSWRsZVJlcXVlc3RDYWxsYmFjayxcbiAgICBvcHRpb25zPzogSWRsZVJlcXVlc3RPcHRpb25zLFxuICApOiBudW1iZXIge1xuICAgIGNvbnN0IGlkID0gcmVxdWVzdElkbGVDYWxsYmFjaygoLi4uYXJncykgPT4ge1xuICAgICAgaWYgKCF0aGlzLnNpZ25hbC5hYm9ydGVkKSBjYWxsYmFjayguLi5hcmdzKTtcbiAgICB9LCBvcHRpb25zKTtcblxuICAgIHRoaXMub25JbnZhbGlkYXRlZCgoKSA9PiBjYW5jZWxJZGxlQ2FsbGJhY2soaWQpKTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2FsbCBgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXJgIGFuZCByZW1vdmUgdGhlIGV2ZW50IGxpc3RlbmVyIHdoZW4gdGhlIGNvbnRleHQgaXMgaW52YWxpZGF0ZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGN0eC5hZGRFdmVudExpc3RlbmVyKHdpbmRvdywgXCJtb3VzZW1vdmVcIiwgKCkgPT4ge1xuICAgKiAgIC8vIC4uLlxuICAgKiB9KTtcbiAgICogY3R4LmFkZEV2ZW50TGlzdGVuZXIoZG9jdW1lbnQsIFwidmlzaWJpbGl0eWNoYW5nZVwiLCAoKSA9PiB7XG4gICAqICAgLy8gLi4uXG4gICAqIH0pO1xuICAgKi9cbiAgYWRkRXZlbnRMaXN0ZW5lcihcbiAgICB0YXJnZXQ6IGFueSxcbiAgICB0eXBlOiBzdHJpbmcsXG4gICAgaGFuZGxlcjogKGV2ZW50OiBFdmVudCkgPT4gdm9pZCxcbiAgICBvcHRpb25zPzogQWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMsXG4gICkge1xuICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyPy4odHlwZSwgaGFuZGxlciwgb3B0aW9ucyk7XG4gICAgdGhpcy5vbkludmFsaWRhdGVkKFxuICAgICAgKCkgPT4gdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXI/Lih0eXBlLCBoYW5kbGVyLCBvcHRpb25zKSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFib3J0IHRoZSBhYm9ydCBjb250cm9sbGVyIGFuZCBleGVjdXRlIGFsbCBgb25JbnZhbGlkYXRlZGAgbGlzdGVuZXJzLlxuICAgKi9cbiAgbm90aWZ5SW52YWxpZGF0ZWQoKSB7XG4gICAgdGhpcy5hYm9ydCgnQ29udGVudCBzY3JpcHQgY29udGV4dCBpbnZhbGlkYXRlZCcpO1xuICAgIGxvZ2dlci5kZWJ1ZyhcbiAgICAgIGBDb250ZW50IHNjcmlwdCBcIiR7dGhpcy5jb250ZW50U2NyaXB0TmFtZX1cIiBjb250ZXh0IGludmFsaWRhdGVkYCxcbiAgICApO1xuICB9XG5cbiAgI3N0b3BPbGRTY3JpcHRzKCkge1xuICAgIC8vIFVzZSBwb3N0TWVzc2FnZSBzbyBpdCBnZXQncyBzZW50IHRvIGFsbCB0aGUgZnJhbWVzIG9mIHRoZSBwYWdlLlxuICAgIHdpbmRvdy5wb3N0TWVzc2FnZShcbiAgICAgIHtcbiAgICAgICAgZXZlbnQ6IENvbnRlbnRTY3JpcHRDb250ZXh0LlNDUklQVF9TVEFSVEVEX01FU1NBR0VfVFlQRSxcbiAgICAgICAgY29udGVudFNjcmlwdE5hbWU6IHRoaXMuY29udGVudFNjcmlwdE5hbWUsXG4gICAgICB9LFxuICAgICAgJyonLFxuICAgICk7XG4gIH1cblxuICAjbGlzdGVuRm9yTmV3ZXJTY3JpcHRzKCkge1xuICAgIGNvbnN0IGNiID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgZXZlbnQuZGF0YT8udHlwZSA9PT0gQ29udGVudFNjcmlwdENvbnRleHQuU0NSSVBUX1NUQVJURURfTUVTU0FHRV9UWVBFICYmXG4gICAgICAgIGV2ZW50LmRhdGE/LmNvbnRlbnRTY3JpcHROYW1lID09PSB0aGlzLmNvbnRlbnRTY3JpcHROYW1lXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5ub3RpZnlJbnZhbGlkYXRlZCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBhZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgY2IpO1xuICAgIHRoaXMub25JbnZhbGlkYXRlZCgoKSA9PiByZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgY2IpKTtcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjtBQUVPLFNBQVMsb0JBQ2QsWUFDeUI7QUFDekIsU0FBTztBQUNUOzs7QUNBTyxTQUFTLGlCQUNkLEtBQzZCO0FBQzdCLE1BQUksT0FBTyxRQUFRO0FBQVksV0FBTyxFQUFFLE1BQU0sSUFBSTtBQUNsRCxTQUFPO0FBQ1Q7OztBQ1hBLFNBQVMsNkJBQTZCOzs7QUNBdEMsT0FBTyxxQkFBaUQ7QUFlakQsSUFBTSxVQUE0Qjs7O0FDZnpDLFNBQVMsTUFBTSxXQUFxQyxNQUFhO0FBQy9ELE1BQUksWUFBWSxJQUFJLFNBQVM7QUFBYztBQUUzQyxNQUFJLE9BQU8sS0FBSyxDQUFDLE1BQU0sVUFBVTtBQUMvQixVQUFNLFVBQVUsS0FBSyxNQUFNO0FBQzNCLFdBQU8sU0FBUyxPQUFPLElBQUksR0FBRyxJQUFJO0FBQUEsRUFDcEMsT0FBTztBQUNMLFdBQU8sU0FBUyxHQUFHLElBQUk7QUFBQSxFQUN6QjtBQUNGO0FBS08sSUFBTSxTQUFTO0FBQUEsRUFDcEIsT0FBTyxJQUFJLFNBQWdCLE1BQU0sUUFBUSxPQUFPLEdBQUcsSUFBSTtBQUFBLEVBQ3ZELEtBQUssSUFBSSxTQUFnQixNQUFNLFFBQVEsS0FBSyxHQUFHLElBQUk7QUFBQSxFQUNuRCxNQUFNLElBQUksU0FBZ0IsTUFBTSxRQUFRLE1BQU0sR0FBRyxJQUFJO0FBQUEsRUFDckQsT0FBTyxJQUFJLFNBQWdCLE1BQU0sUUFBUSxPQUFPLEdBQUcsSUFBSTtBQUN6RDs7O0FGY0EsZUFBc0Isc0JBQ3BCLEtBQ0EsU0FDNkI7QUFDN0IsUUFBTSxNQUFNLENBQUMsUUFBUSxPQUFPLEVBQUU7QUFDOUIsTUFB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
|
|
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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
|
package/dist/index.cjs
CHANGED
|
@@ -951,6 +951,11 @@ function getEntrypointBundlePath(entrypoint, outDir, ext) {
|
|
|
951
951
|
(0, import_node_path2.relative)(outDir, getEntrypointOutputFile(entrypoint, ext))
|
|
952
952
|
);
|
|
953
953
|
}
|
|
954
|
+
function resolvePerBrowserOption(option, browser) {
|
|
955
|
+
if (typeof option === "object" && !Array.isArray(option))
|
|
956
|
+
return option[browser];
|
|
957
|
+
return option;
|
|
958
|
+
}
|
|
954
959
|
|
|
955
960
|
// src/core/vite-plugins/devHtmlPrerender.ts
|
|
956
961
|
var import_linkedom = require("linkedom");
|
|
@@ -1374,7 +1379,7 @@ async function getInternalConfig(inlineConfig, command) {
|
|
|
1374
1379
|
if (debug)
|
|
1375
1380
|
logger.level = import_consola.LogLevels.debug;
|
|
1376
1381
|
const browser = mergedConfig.browser ?? "chrome";
|
|
1377
|
-
const manifestVersion = mergedConfig.manifestVersion ?? (browser
|
|
1382
|
+
const manifestVersion = mergedConfig.manifestVersion ?? (browser === "firefox" || browser === "safari" ? 2 : 3);
|
|
1378
1383
|
const mode = mergedConfig.mode ?? (command === "build" ? "production" : "development");
|
|
1379
1384
|
const env = { browser, command, manifestVersion, mode };
|
|
1380
1385
|
const root = import_node_path4.default.resolve(
|
|
@@ -2094,7 +2099,11 @@ async function getBackgroundEntrypoint(config, path9) {
|
|
|
2094
2099
|
name: "background",
|
|
2095
2100
|
inputPath: path9,
|
|
2096
2101
|
outputDir: config.outDir,
|
|
2097
|
-
options
|
|
2102
|
+
options: {
|
|
2103
|
+
...options,
|
|
2104
|
+
type: resolvePerBrowserOption(options.type, config.browser),
|
|
2105
|
+
persistent: resolvePerBrowserOption(options.persistent, config.browser)
|
|
2106
|
+
}
|
|
2098
2107
|
};
|
|
2099
2108
|
}
|
|
2100
2109
|
async function getContentScriptEntrypoint(config, name, path9) {
|
|
@@ -2439,17 +2448,32 @@ function hashContentScriptOptions(options) {
|
|
|
2439
2448
|
}).sort((l, r) => l[0].localeCompare(r[0]))
|
|
2440
2449
|
);
|
|
2441
2450
|
}
|
|
2442
|
-
function mapWxtOptionsToContentScript(options) {
|
|
2451
|
+
function mapWxtOptionsToContentScript(options, config) {
|
|
2443
2452
|
return {
|
|
2444
|
-
matches: options.matches,
|
|
2445
|
-
all_frames: options.allFrames,
|
|
2446
|
-
match_about_blank:
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2453
|
+
matches: resolvePerBrowserOption(options.matches, config.browser),
|
|
2454
|
+
all_frames: resolvePerBrowserOption(options.allFrames, config.browser),
|
|
2455
|
+
match_about_blank: resolvePerBrowserOption(
|
|
2456
|
+
options.matchAboutBlank,
|
|
2457
|
+
config.browser
|
|
2458
|
+
),
|
|
2459
|
+
exclude_globs: resolvePerBrowserOption(
|
|
2460
|
+
options.excludeGlobs,
|
|
2461
|
+
config.browser
|
|
2462
|
+
),
|
|
2463
|
+
exclude_matches: resolvePerBrowserOption(
|
|
2464
|
+
options.excludeMatches,
|
|
2465
|
+
config.browser
|
|
2466
|
+
),
|
|
2467
|
+
include_globs: resolvePerBrowserOption(
|
|
2468
|
+
options.includeGlobs,
|
|
2469
|
+
config.browser
|
|
2470
|
+
),
|
|
2471
|
+
run_at: resolvePerBrowserOption(options.runAt, config.browser),
|
|
2451
2472
|
// @ts-expect-error: untyped chrome options
|
|
2452
|
-
match_origin_as_fallback:
|
|
2473
|
+
match_origin_as_fallback: resolvePerBrowserOption(
|
|
2474
|
+
options.matchOriginAsFallback,
|
|
2475
|
+
config.browser
|
|
2476
|
+
),
|
|
2453
2477
|
world: options.world
|
|
2454
2478
|
};
|
|
2455
2479
|
}
|
|
@@ -2673,7 +2697,11 @@ function addEntrypoints(manifest, entrypoints, buildOutput, config) {
|
|
|
2673
2697
|
if (config.command === "serve" && config.manifestVersion === 3) {
|
|
2674
2698
|
const hostPermissions = new Set(manifest.host_permissions ?? []);
|
|
2675
2699
|
contentScripts.forEach((script) => {
|
|
2676
|
-
|
|
2700
|
+
const matches = resolvePerBrowserOption(
|
|
2701
|
+
script.options.matches,
|
|
2702
|
+
config.browser
|
|
2703
|
+
);
|
|
2704
|
+
matches.forEach((matchPattern) => {
|
|
2677
2705
|
hostPermissions.add(matchPattern);
|
|
2678
2706
|
});
|
|
2679
2707
|
});
|
|
@@ -2691,7 +2719,7 @@ function addEntrypoints(manifest, entrypoints, buildOutput, config) {
|
|
|
2691
2719
|
}, /* @__PURE__ */ new Map());
|
|
2692
2720
|
const newContentScripts = Array.from(hashToEntrypointsMap.entries()).map(
|
|
2693
2721
|
([, scripts]) => ({
|
|
2694
|
-
...mapWxtOptionsToContentScript(scripts[0].options),
|
|
2722
|
+
...mapWxtOptionsToContentScript(scripts[0].options, config),
|
|
2695
2723
|
// TOOD: Sorting css and js arrays here so we get consistent test results... but we
|
|
2696
2724
|
// shouldn't have to. Where is the inconsistency coming from?
|
|
2697
2725
|
css: getContentScriptCssFiles(scripts, cssMap)?.sort(),
|
|
@@ -4415,12 +4443,18 @@ function reloadContentScripts(steps, config, server) {
|
|
|
4415
4443
|
const cssMap = getContentScriptsCssMap(server.currentOutput, [entry]);
|
|
4416
4444
|
const css = getContentScriptCssFiles([entry], cssMap);
|
|
4417
4445
|
server.reloadContentScript({
|
|
4418
|
-
allFrames:
|
|
4419
|
-
|
|
4420
|
-
|
|
4421
|
-
|
|
4446
|
+
allFrames: resolvePerBrowserOption(
|
|
4447
|
+
entry.options.allFrames,
|
|
4448
|
+
config.browser
|
|
4449
|
+
),
|
|
4450
|
+
excludeMatches: resolvePerBrowserOption(
|
|
4451
|
+
entry.options.excludeMatches,
|
|
4452
|
+
config.browser
|
|
4453
|
+
),
|
|
4454
|
+
matches: resolvePerBrowserOption(entry.options.matches, config.browser),
|
|
4455
|
+
runAt: resolvePerBrowserOption(entry.options.runAt, config.browser),
|
|
4422
4456
|
// @ts-expect-error: Chrome accepts this, not typed in webextension-polyfill (https://developer.chrome.com/docs/extensions/reference/scripting/#type-RegisteredContentScript)
|
|
4423
|
-
world: entry.options.world,
|
|
4457
|
+
world: resolvePerBrowserOption(entry.options.world, config.browser),
|
|
4424
4458
|
js,
|
|
4425
4459
|
css
|
|
4426
4460
|
});
|
|
@@ -4472,7 +4506,7 @@ async function clean(root = process.cwd()) {
|
|
|
4472
4506
|
}
|
|
4473
4507
|
|
|
4474
4508
|
// package.json
|
|
4475
|
-
var version2 = "0.7.
|
|
4509
|
+
var version2 = "0.7.2";
|
|
4476
4510
|
|
|
4477
4511
|
// src/core/utils/defineConfig.ts
|
|
4478
4512
|
function defineConfig(config) {
|