@wavemaker/app-ng-runtime 11.11.6-rc.6191 → 11.11.7-rc.6211
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/build-task/bundles/index.umd.js +1 -1
- package/build-task/esm2022/input/default/checkbox/checkbox.build.mjs +2 -2
- package/build-task/fesm2022/index.mjs +1 -1
- package/build-task/fesm2022/index.mjs.map +1 -1
- package/components/base/bundles/index.umd.js +21 -3
- package/components/base/components.module.d.ts +1 -1
- package/components/base/esm2022/components.module.mjs +8 -5
- package/components/base/esm2022/pipes/custom-pipes.mjs +16 -2
- package/components/base/esm2022/public_api.mjs +2 -2
- package/components/base/fesm2022/index.mjs +24 -7
- package/components/base/fesm2022/index.mjs.map +1 -1
- package/components/base/pipes/custom-pipes.d.ts +5 -0
- package/components/base/public_api.d.ts +1 -1
- package/components/basic/default/bundles/index.umd.js +8 -1
- package/components/basic/default/esm2022/label/label.directive.mjs +9 -2
- package/components/basic/default/fesm2022/index.mjs +8 -1
- package/components/basic/default/fesm2022/index.mjs.map +1 -1
- package/components/basic/search/bundles/index.umd.js +19 -4
- package/components/basic/search/esm2022/search.component.mjs +20 -5
- package/components/basic/search/fesm2022/index.mjs +19 -4
- package/components/basic/search/fesm2022/index.mjs.map +1 -1
- package/components/basic/search/search.component.d.ts +1 -0
- package/components/containers/wizard/bundles/index.umd.js +135 -5
- package/components/containers/wizard/esm2022/wizard.component.mjs +137 -7
- package/components/containers/wizard/fesm2022/index.mjs +136 -6
- package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
- package/components/containers/wizard/wizard.component.d.ts +7 -0
- package/components/input/chips/bundles/index.umd.js +5 -2
- package/components/input/chips/esm2022/chips.component.mjs +6 -3
- package/components/input/chips/fesm2022/index.mjs +5 -2
- package/components/input/chips/fesm2022/index.mjs.map +1 -1
- package/components/input/default/bundles/index.umd.js +14 -2
- package/components/input/default/esm2022/base-form.component.mjs +15 -3
- package/components/input/default/fesm2022/index.mjs +14 -2
- package/components/input/default/fesm2022/index.mjs.map +1 -1
- package/components/input/epoch/bundles/index.umd.js +15 -4
- package/components/input/epoch/esm2022/base-date-time.component.mjs +16 -5
- package/components/input/epoch/fesm2022/index.mjs +15 -4
- package/components/input/epoch/fesm2022/index.mjs.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/runtime/base/bundles/index.umd.js +8 -4
- package/runtime/base/esm2022/services/app.manager.service.mjs +8 -5
- package/runtime/base/esm2022/services/pipe-provider.service.mjs +4 -3
- package/runtime/base/fesm2022/index.mjs +10 -6
- package/runtime/base/fesm2022/index.mjs.map +1 -1
- package/scripts/datatable/datatable.js +7 -3
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavemaker/app-ng-runtime",
|
|
3
|
-
"version": "11.11.
|
|
3
|
+
"version": "11.11.7-rc.6211",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@wavemaker/app-ng-runtime",
|
|
9
|
-
"version": "11.11.
|
|
9
|
+
"version": "11.11.7-rc.6211",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"engines": {
|
|
12
12
|
"node": ">=18.16.1",
|
package/package-lock.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wavemaker/app-ng-runtime",
|
|
3
|
-
"version": "11.11.
|
|
3
|
+
"version": "11.11.7-rc.6211",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@wavemaker/app-ng-runtime",
|
|
9
|
-
"version": "11.11.
|
|
9
|
+
"version": "11.11.7-rc.6211",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"engines": {
|
|
12
12
|
"node": ">=18.16.1",
|
package/package.json
CHANGED
|
@@ -237,11 +237,9 @@
|
|
|
237
237
|
}
|
|
238
238
|
handleSSOLogin(config, options) {
|
|
239
239
|
const SSO_URL = 'services/security/ssologin', PREVIEW_WINDOW_NAME = 'WM_PREVIEW_WINDOW';
|
|
240
|
-
let page, queryParams;
|
|
240
|
+
let page = '', queryParams;
|
|
241
241
|
// do not provide redirectTo page if fetching HOME page resulted 401
|
|
242
242
|
// on app load, by default Home page is loaded
|
|
243
|
-
page = this.$security.getRedirectPage(config);
|
|
244
|
-
page = page ? '?redirectPage=' + encodeURIComponent(page) : '';
|
|
245
243
|
/*
|
|
246
244
|
* For preview, this.$security.getRedirectedRouteQueryParams() gets the queryparams form the activated route(pagewrappercomponent)
|
|
247
245
|
* For deployed app, canactivate guard resolved to false and gets the queryparams from the canactivate gurard(no active route component)
|
|
@@ -249,6 +247,11 @@
|
|
|
249
247
|
queryParams = (options && options.queryParams) || this.$security.getRedirectedRouteQueryParams();
|
|
250
248
|
queryParams = this.$security.getQueryString(queryParams);
|
|
251
249
|
queryParams = queryParams ? '?' + queryParams : '';
|
|
250
|
+
const redirectPage = this.$security.getCurrentRoutePage();
|
|
251
|
+
const homePage = i1.getWmProjectProperties().homePage;
|
|
252
|
+
if (redirectPage && (redirectPage !== homePage || !!queryParams)) {
|
|
253
|
+
page = '?redirectPage=' + encodeURIComponent(redirectPage);
|
|
254
|
+
}
|
|
252
255
|
// showing a redirecting message
|
|
253
256
|
document.body.textContent = lodashEs.get(this.getAppLocale(), ['MESSAGE_LOGIN_REDIRECTION']) || 'Redirecting to sso login...';
|
|
254
257
|
// appending redirect to page and page params
|
|
@@ -2625,7 +2628,8 @@
|
|
|
2625
2628
|
this.preparePipeMeta(i3.StringToNumberPipe, 'stringToNumber', true),
|
|
2626
2629
|
this.preparePipeMeta(i3.CustomPipe, 'custom', true, [this.injector.get(i1.CustomPipeManager)]),
|
|
2627
2630
|
this.preparePipeMeta(i3.TrustAsPipe, 'trustAs', true, [this.domSanitizer]),
|
|
2628
|
-
this.preparePipeMeta(i3.SanitizePipe, 'sanitize', true, [this.domSanitizer])
|
|
2631
|
+
this.preparePipeMeta(i3.SanitizePipe, 'sanitize', true, [this.domSanitizer]),
|
|
2632
|
+
this.preparePipeMeta(i3.TemplateReplacePipe, 'templateReplace', true),
|
|
2629
2633
|
];
|
|
2630
2634
|
}
|
|
2631
2635
|
unknownPipe(name) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
2
|
import { Router } from '@angular/router';
|
|
3
3
|
import { DatePipe } from '@angular/common';
|
|
4
|
-
import { AbstractDialogService, AbstractHttpService, AbstractI18nService, AbstractSpinnerService, App, fetchContent, isDefined, triggerFn, $appDigest } from '@wm/core';
|
|
4
|
+
import { AbstractDialogService, AbstractHttpService, AbstractI18nService, AbstractSpinnerService, App, fetchContent, isDefined, triggerFn, $appDigest, getWmProjectProperties } from '@wm/core';
|
|
5
5
|
import { SecurityService } from '@wm/security';
|
|
6
6
|
import { $rootScope, MetadataService, VariablesService } from '@wm/variables';
|
|
7
7
|
import { extend, forEach, get, isEmpty, isObject, isUndefined, merge, trim } from "lodash-es";
|
|
@@ -191,11 +191,9 @@ export class AppManagerService {
|
|
|
191
191
|
}
|
|
192
192
|
handleSSOLogin(config, options) {
|
|
193
193
|
const SSO_URL = 'services/security/ssologin', PREVIEW_WINDOW_NAME = 'WM_PREVIEW_WINDOW';
|
|
194
|
-
let page, queryParams;
|
|
194
|
+
let page = '', queryParams;
|
|
195
195
|
// do not provide redirectTo page if fetching HOME page resulted 401
|
|
196
196
|
// on app load, by default Home page is loaded
|
|
197
|
-
page = this.$security.getRedirectPage(config);
|
|
198
|
-
page = page ? '?redirectPage=' + encodeURIComponent(page) : '';
|
|
199
197
|
/*
|
|
200
198
|
* For preview, this.$security.getRedirectedRouteQueryParams() gets the queryparams form the activated route(pagewrappercomponent)
|
|
201
199
|
* For deployed app, canactivate guard resolved to false and gets the queryparams from the canactivate gurard(no active route component)
|
|
@@ -203,6 +201,11 @@ export class AppManagerService {
|
|
|
203
201
|
queryParams = (options && options.queryParams) || this.$security.getRedirectedRouteQueryParams();
|
|
204
202
|
queryParams = this.$security.getQueryString(queryParams);
|
|
205
203
|
queryParams = queryParams ? '?' + queryParams : '';
|
|
204
|
+
const redirectPage = this.$security.getCurrentRoutePage();
|
|
205
|
+
const homePage = getWmProjectProperties().homePage;
|
|
206
|
+
if (redirectPage && (redirectPage !== homePage || !!queryParams)) {
|
|
207
|
+
page = '?redirectPage=' + encodeURIComponent(redirectPage);
|
|
208
|
+
}
|
|
206
209
|
// showing a redirecting message
|
|
207
210
|
document.body.textContent = get(this.getAppLocale(), ['MESSAGE_LOGIN_REDIRECTION']) || 'Redirecting to sso login...';
|
|
208
211
|
// appending redirect to page and page params
|
|
@@ -472,4 +475,4 @@ export class AppManagerService {
|
|
|
472
475
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppManagerService, [{
|
|
473
476
|
type: Injectable
|
|
474
477
|
}], () => [{ type: i1.AbstractHttpService }, { type: i2.SecurityService }, { type: i1.AbstractDialogService }, { type: i3.Router }, { type: i1.App }, { type: i4.VariablesService }, { type: i4.MetadataService }, { type: i1.AbstractSpinnerService }, { type: i1.AbstractI18nService }, { type: i5.DatePipe }], null); })();
|
|
475
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvc2VydmljZXMvYXBwLm1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUNILHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixHQUFHLEVBQ0gsWUFBWSxFQUNaLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNiLE1BQU0sVUFBVSxDQUFDO0FBQ2xCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxFQUFhLFVBQVUsRUFBa0IsZUFBZSxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFDOzs7Ozs7O0FBRTVGLElBQUssYUFPSjtBQVBELFdBQUssYUFBYTtJQUNkLHNFQUFxRCxDQUFBO0lBQ3JELHNFQUFxRCxDQUFBO0lBQ3JELHlEQUFpRCxDQUFBO0lBQ2pELG9EQUE0QyxDQUFBO0lBQzVDLGlFQUFtRCxDQUFBO0lBQ25ELG9DQUFvQyxDQUFBO0FBQ3hDLENBQUMsRUFQSSxhQUFhLEtBQWIsYUFBYSxRQU9qQjtBQUdELE1BQU0sT0FBTyxpQkFBaUI7YUFDVixpQkFBWSxHQUFHLG1CQUFtQixBQUF0QixDQUF1QjtJQVFuRCxZQUNZLEtBQTBC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LFFBQVEsRUFBQyxDQUFDLENBQUM7WUFDdkYsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN6QyxDQUFDO0lBQ0wsQ0FBQztrSEEzZlEsaUJBQWlCO3VFQUFqQixpQkFBaUIsV0FBakIsaUJBQWlCOztpRkFBakIsaUJBQWlCO2NBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRGF0ZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5pbXBvcnQge1xuICAgIEFic3RyYWN0RGlhbG9nU2VydmljZSxcbiAgICBBYnN0cmFjdEh0dHBTZXJ2aWNlLFxuICAgIEFic3RyYWN0STE4blNlcnZpY2UsXG4gICAgQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICBBcHAsXG4gICAgZmV0Y2hDb250ZW50LFxuICAgIGlzRGVmaW5lZCxcbiAgICB0cmlnZ2VyRm4sXG4gICAgJGFwcERpZ2VzdFxufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBTZWN1cml0eVNlcnZpY2UgfSBmcm9tICdAd20vc2VjdXJpdHknO1xuaW1wb3J0IHsgQ09OU1RBTlRTLCAkcm9vdFNjb3BlLCByb3V0ZXJTZXJ2aWNlLCAgTWV0YWRhdGFTZXJ2aWNlLCBWYXJpYWJsZXNTZXJ2aWNlIH0gZnJvbSAnQHdtL3ZhcmlhYmxlcyc7XG5pbXBvcnQge2V4dGVuZCwgZm9yRWFjaCwgZ2V0LCBpc0VtcHR5LCBpc09iamVjdCwgaXNVbmRlZmluZWQsIG1lcmdlLCB0cmltfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmVudW0gUE9TVF9NRVNTQUdFUyB7XG4gICAgSElERV9URU1QTEFURVNfU0hPV19DQVNFID0gJ2hpZGUtdGVtcGxhdGVzLXNob3ctY2FzZScsXG4gICAgU0hPV19URU1QTEFURVNfU0hPV19DQVNFID0gJ3Nob3ctdGVtcGxhdGVzLXNob3ctY2FzZScsXG4gICAgVVBEQVRFX0xPQ0FUSU9OICAgICAgICAgID0gJ3VwZGF0ZS1sb2NhdGlvbi1wYXRoJyxcbiAgICBTRUxFQ1RfVEVNUExBVEUgICAgICAgICAgPSAnc2VsZWN0LXRlbXBsYXRlJyxcbiAgICBURU1QTEFURUJVTkRMRV9DT05GSUcgICAgPSAndGVtcGxhdGUtYnVuZGxlLWNvbmZpZycsXG4gICAgT05fTE9BRCAgICAgICAgICAgICAgICAgID0gJ29uLWxvYWQnXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBNYW5hZ2VyU2VydmljZSB7XG4gICAgc3RhdGljIHJlYWRvbmx5IFNFUlZJQ0VfTkFNRSA9ICdBcHBNYW5hZ2VyU2VydmljZSc7XG5cbiAgICBwcml2YXRlIGFwcFZhcmlhYmxlc0xvYWRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgYXBwVmFyaWFibGVzRmlyZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9ub1JlZGlyZWN0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZXM6IEFycmF5PGFueT47XG4gICAgcHJpdmF0ZSBsYXN0TG9nZ2VkVXNlcklkO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgJGh0dHA6IEFic3RyYWN0SHR0cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgJHNlY3VyaXR5OiBTZWN1cml0eVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgJGRpYWxvZzogQWJzdHJhY3REaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlICRyb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSAkYXBwOiBBcHAsXG4gICAgICAgIHByaXZhdGUgJHZhcmlhYmxlczogVmFyaWFibGVzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkbWV0YWRhdGE6IE1ldGFkYXRhU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkc3Bpbm5lcjogQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkaTE4bjogQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgICkge1xuICAgICAgICAvLyByZWdpc3RlciBtZXRob2QgdG8gaW52b2tlIG9uIHNlc3Npb24gdGltZW91dFxuICAgICAgICB0aGlzLiRodHRwLnJlZ2lzdGVyT25TZXNzaW9uVGltZW91dCh0aGlzLmhhbmRsZTQwMS5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLiR2YXJpYWJsZXMucmVnaXN0ZXJEZXBlbmRlbmN5KCdhcHBNYW5hZ2VyJywgdGhpcyk7XG5cbiAgICAgICAgdGhpcy4kYXBwLnN1YnNjcmliZSgndG9nZ2xlLXZhcmlhYmxlLXN0YXRlJywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlID0gZGF0YS52YXJpYWJsZSxcbiAgICAgICAgICAgICAgICBhY3RpdmUgPSBkYXRhLmFjdGl2ZTtcbiAgICAgICAgICAgIGlmICghaXNFbXB0eSh0cmltKHZhcmlhYmxlLnNwaW5uZXJDb250ZXh0KSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzcGlubmVyRXhpc3RzO1xuICAgICAgICAgICAgICAgICAgICAvLyBXTVMtMjExMTcgOiBEbyBub3QgdHJpZ2dlciBzcGlubmVyLCBpZiB0aGUgY3VycmVudCB2YXJpYWJsZSBpcyBzYW1lIGFzIHNwaW5uZXIgd2hpY2ggaXMgaW4gY29udGV4dFxuICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUuX3NwaW5uZXJJZCAmJiB2YXJpYWJsZS5fc3Bpbm5lcklkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yRWFjaCh2YXJpYWJsZS5fc3Bpbm5lcklkLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnNsaWNlKDAsIGl0ZW0ubGFzdEluZGV4T2YoJ18nKSkgPT09IHZhcmlhYmxlLl9pZCAmJiAodGhpcy4kc3Bpbm5lciBhcyBhbnkpLm1lc3NhZ2VzQnlDb250ZXh0ICYmICh0aGlzLiRzcGlubmVyIGFzIGFueSkubWVzc2FnZXNCeUNvbnRleHRbdmFyaWFibGUuc3Bpbm5lckNvbnRleHRdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YXJpYWJsZS5zcGlubmVyTWVzc2FnZSA9PT0gKHRoaXMuJHNwaW5uZXIgYXMgYW55KS5tZXNzYWdlc0J5Q29udGV4dFt2YXJpYWJsZS5zcGlubmVyQ29udGV4dF1bXCJmaW5hbE1lc3NhZ2VcIl0gfHwgdmFyaWFibGUuc3Bpbm5lck1lc3NhZ2UgPT09ICh0aGlzLiRzcGlubmVyIGFzIGFueSkubWVzc2FnZXNCeUNvbnRleHRbdmFyaWFibGUuc3Bpbm5lckNvbnRleHRdW2l0ZW1dKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGlubmVyRXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3Bpbm5lckV4aXN0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX3NwaW5uZXJJZCA9IHZhcmlhYmxlLl9zcGlubmVySWQgfHwgW107XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGlubmVySWQgPSB0aGlzLiRzcGlubmVyLnNob3codmFyaWFibGUuc3Bpbm5lck1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX2lkICsgJ18nICsgRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS5zcGlubmVyY2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuc3Bpbm5lckNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX3NwaW5uZXJJZC5wdXNoKHNwaW5uZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzcGlubmVyLmhpZGUodmFyaWFibGUuX3NwaW5uZXJJZC5zaGlmdCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiRhcHAuc3Vic2NyaWJlKCd1c2VyTG9nZ2VkSW4nLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldExhbmRpbmdQYWdlKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0TG9nZ2VkVXNlcklkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc2VjdXJpdHkuZ2V0Q29uZmlnKGNvbmZpZyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmKGNvbmZpZyAmJiBjb25maWcudXNlckluZm8udXNlcklkICE9PSB0aGlzLmxhc3RMb2dnZWRVc2VySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGFwcC5jbGVhclBhZ2VDYWNoZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiRhcHAuc3Vic2NyaWJlKCd1c2VyTG9nZ2VkT3V0JywgKCkgPT4gdGhpcy5zZXRMYW5kaW5nUGFnZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4kYXBwLmNsZWFyUGFnZUNhY2hlKCk7XG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy4kYXBwLnN1YnNjcmliZSgnaHR0cDQwMScsIChkID0ge30pID0+IHRoaXMuaGFuZGxlNDAxKGQucGFnZSwgZC5vcHRpb25zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gc2Vzc2lvbiB0aW1lb3V0LCBpZiB0aGUgc2Vzc2lvbiB0aW1lb3V0IGNvbmZpZyBpcyBzZXQgdG8gYSBkaWFsb2csIHRoZW4gb3BlbiBsb2dpbiBkaWFsb2dcbiAgICAgKi9cbiAgICBwcml2YXRlIHNob3dMb2dpbkRpYWxvZygpIHtcbiAgICAgICAgdGhpcy4kc3Bpbm5lci5oaWRlKCdnbG9iYWxTcGlubmVyJyk7XG4gICAgICAgIC8vIFJlbW92aW5nIHRoZSBjbG9zZSBhbGwgZGlhbG9ncyBjYWxsLCBzbyB0aGUgZXhpc3RpbmcgZGlhbG9ncyByZW1haW4gb3BlbiBhbmRcbiAgICAgICAgLy8gdGhlIGxvZ2luIGRpYWxvZyBjb21lcyBvbiB0b3Agb2YgaXQuXG4gICAgICAgIHRoaXMuJGRpYWxvZy5vcGVuKCdDb21tb25Mb2dpbkRpYWxvZycpO1xuICAgICAgICAvLyBTaW5jZSB0aGUgbG9naW4gZGlhbG9nIGlzIGNsb3NlZCBhbmQgb3BlbmVkIGl0cyB1cGRhdGVkIHByb3BlcnR5IGlzbid0IHJlYWQgYnkgYW5ndWxhci5cbiAgICAgICAgLy8gSGVuY2Ugd2UgdHJpZ2dlciB0aGUgZGlnZXN0IGN5Y2xlXG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cbiAgICBsb2FkQXBwSlMoKSB7XG5cbiAgICB9XG5cbiAgICBsb2FkQ29tbW9uUGFnZSgpIHtcblxuICAgIH1cblxuICAgIGxvYWRTZWN1cml0eUNvbmZpZyhmb3JjZUZsYWc/OiBib29sZWFuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzZWN1cml0eS5sb2FkKGZvcmNlRmxhZykudGhlbigocikgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLiRhcHAubGFuZGluZ1BhZ2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRMYW5kaW5nUGFnZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxvYWRNZXRhZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJG1ldGFkYXRhLmxvYWQoKTtcbiAgICB9XG5cbiAgICBsb2FkQXBwVmFyaWFibGVzKHZhcmlhYmxlcz86IGFueSkge1xuICAgICAgICBpZiAodGhpcy5hcHBWYXJpYWJsZXNMb2FkZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluaXQgPSByZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy4kdmFyaWFibGVzLnJlZ2lzdGVyKCdhcHAnLCByZXNwb25zZSwgdGhpcy4kYXBwKTtcbiAgICAgICAgICAgIC8vIG5vdCBhc3NpZ25pbmcgZGlyZWN0bHkgdG8gdGhpcy4kYXBwIHRvIGtlZXAgdGhlIHJlZmVyZW5jZSBpbiB0YWN0XG4gICAgICAgICAgICBleHRlbmQodGhpcy4kYXBwLlZhcmlhYmxlcywgZGF0YS5WYXJpYWJsZXMpO1xuICAgICAgICAgICAgZXh0ZW5kKHRoaXMuJGFwcC5BY3Rpb25zLCBkYXRhLkFjdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2dnZWRJblVzZXJWYXJpYWJsZSgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdXBwb3J0ZWRMb2NhbGVWYXJpYWJsZSgpO1xuICAgICAgICAgICAgdGhpcy5hcHBWYXJpYWJsZXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hcHBWYXJpYWJsZXNGaXJlZCA9IGZhbHNlO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChpc0RlZmluZWQodmFyaWFibGVzKSkge1xuICAgICAgICAgICAgaW5pdCh2YXJpYWJsZXMpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuJGh0dHAuZ2V0KCcuL2FwcC52YXJpYWJsZXMuanNvbicpLnRoZW4ocmVzcG9uc2UgPT4gaW5pdChyZXNwb25zZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldHRlciBhbmQgc2V0dGVyIGZvciB0aGUgcHJvcGVydHkgYXBwVmFyaWFibGVzRmlyZWRcbiAgICAgKiB0aGlzIGZsYWcgZGV0ZXJtaW5lcyBpZiB0aGUgYXBwIHZhcmlhYmxlcyh3aXRoIHN0YXJ0VXBkYXRlOnRydWUpIGhhdmUgYmVlbiBmaXJlZFxuICAgICAqIHRoZXkgc2hvdWxkIGdldCBmaXJlZCBvbmx5IG9uY2UgdGhyb3VnaCBhcHAgbGlmZWN5Y2xlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBpc0ZpcmVkXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgaXNBcHBWYXJpYWJsZXNGaXJlZChpc0ZpcmVkPzogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNEZWZpbmVkKGlzRmlyZWQpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcFZhcmlhYmxlc0ZpcmVkID0gaXNGaXJlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5hcHBWYXJpYWJsZXNGaXJlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyTG9nZ2VkSW5Vc2VyVmFyaWFibGUodmFyaWFibGUpIHtcbiAgICAgICAgdmFyaWFibGUuaXNBdXRoZW50aWNhdGVkID0gZmFsc2U7XG4gICAgICAgIHZhcmlhYmxlLnJvbGVzICAgICAgICAgICA9IFtdO1xuICAgICAgICB2YXJpYWJsZS5uYW1lICAgICAgICAgICAgPSB1bmRlZmluZWQ7XG4gICAgICAgIHZhcmlhYmxlLmlkICAgICAgICAgICAgICA9IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyaWFibGUudGVuYW50SWQgICAgICAgID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9nZ2VkSW5Vc2VyVmFyaWFibGUoKSB7XG4gICAgICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IGdldCh0aGlzLiRhcHAsICdWYXJpYWJsZXMubG9nZ2VkSW5Vc2VyLmRhdGFTZXQnKTtcblxuICAgICAgICAvLyBzYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKCFsb2dnZWRJblVzZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy4kc2VjdXJpdHkubG9hZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VjdXJpdHlDb25maWcgPSB0aGlzLiRzZWN1cml0eS5nZXQoKTtcbiAgICAgICAgICAgIGlmIChzZWN1cml0eUNvbmZpZyAmJiBzZWN1cml0eUNvbmZpZy5zZWN1cml0eUVuYWJsZWQgJiYgc2VjdXJpdHlDb25maWcuYXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pc0F1dGhlbnRpY2F0ZWQgPSBzZWN1cml0eUNvbmZpZy5hdXRoZW50aWNhdGVkO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5yb2xlcyAgICAgICAgICAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VyUm9sZXM7XG4gICAgICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLm5hbWUgICAgICAgICAgICA9IHNlY3VyaXR5Q29uZmlnLnVzZXJJbmZvLnVzZXJOYW1lO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pZCAgICAgICAgICAgICAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VySWQ7XG4gICAgICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLnRlbmFudElkICAgICAgICA9IHNlY3VyaXR5Q29uZmlnLnVzZXJJbmZvLnRlbmFudElkO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci51c2VyQXR0cmlidXRlcyAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VyQXR0cmlidXRlczsgLy8gYXNzaWduIHRoZSBleHRyYSB1c2VyQXR0cmlidXRlcyBmb3IgY3VzdG9tIHVzYWdlLlxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyTG9nZ2VkSW5Vc2VyVmFyaWFibGUobG9nZ2VkSW5Vc2VyKTtcbiAgICAgICAgICAgICAgICBsb2dnZWRJblVzZXIuaXNTZWN1cml0eUVuYWJsZWQgPSBzZWN1cml0eUNvbmZpZyAmJiBzZWN1cml0eUNvbmZpZy5zZWN1cml0eUVuYWJsZWQ7XG4gICAgICAgICAgICAgICAgdGhyb3cgbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZWN1cml0eUNvbmZpZztcbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pc0F1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5yb2xlcyAgICAgICAgICAgPSBbXTtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5uYW1lICAgICAgICAgICAgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsb2dnZWRJblVzZXIuaWQgICAgICAgICAgICAgID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLnRlbmFudElkICAgICAgICA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci51c2VyQXR0cmlidXRlcyAgPSB7fTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGluZyB0aGUgYXBwIHZhcmlhYmxlIHN1cHBvcnRlZCBsb2NhbGUgd2l0aCB0aGUgd21Qcm9wZXJ0aWVzIGkxOG4gRGF0YVZhbHVlc1xuICAgICAqXG4gICAgICogVE9ET1tWaWJodV06XG4gICAgICogQ2FuIHdyaXRlIGEgc2ltcGxlIG1pZ3JhdGlvbiB0byBzeW5jIHRoZSBzdXBwb3J0ZWRMb2NhbGUgdmFyaWFibGUgd2l0aCAnX1dNX0FQUF9QUk9QRVJUSUVTLnN1cHBvcnRlZExhbmd1YWdlcydcbiAgICAgKiBIZW5jZSwgdGhpcyBtYXkgbm90IGJlIHJlcXVpcmVkXG4gICAgICpcbiAgICAgKi9cbiAgICB1cGRhdGVTdXBwb3J0ZWRMb2NhbGVWYXJpYWJsZSgpIHtcbiAgICAgICAgY29uc3Qgc3VwcG9ydGVkTG9jYWxlVmFyID0gZ2V0KHRoaXMuJGFwcCwgJ1ZhcmlhYmxlcy5zdXBwb3J0ZWRMb2NhbGUnKTtcbiAgICB9XG5cbiAgICBoYW5kbGVTU09Mb2dpbihjb25maWcsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgU1NPX1VSTCA9ICdzZXJ2aWNlcy9zZWN1cml0eS9zc29sb2dpbicsXG4gICAgICAgICAgICBQUkVWSUVXX1dJTkRPV19OQU1FID0gJ1dNX1BSRVZJRVdfV0lORE9XJztcbiAgICAgICAgbGV0IHBhZ2UsXG4gICAgICAgICAgICBxdWVyeVBhcmFtcztcblxuICAgICAgICAvLyBkbyBub3QgcHJvdmlkZSByZWRpcmVjdFRvIHBhZ2UgaWYgZmV0Y2hpbmcgSE9NRSBwYWdlIHJlc3VsdGVkIDQwMVxuICAgICAgICAvLyBvbiBhcHAgbG9hZCwgYnkgZGVmYXVsdCBIb21lIHBhZ2UgaXMgbG9hZGVkXG4gICAgICAgIHBhZ2UgPSB0aGlzLiRzZWN1cml0eS5nZXRSZWRpcmVjdFBhZ2UoY29uZmlnKTtcblxuICAgICAgICAgICAgcGFnZSA9IHBhZ2UgPyAnP3JlZGlyZWN0UGFnZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHBhZ2UpIDogJyc7XG4gICAgICAgICAgICAvKlxuICAgICAgICAgICAgICogRm9yIHByZXZpZXcsIHRoaXMuJHNlY3VyaXR5LmdldFJlZGlyZWN0ZWRSb3V0ZVF1ZXJ5UGFyYW1zKCkgZ2V0cyB0aGUgcXVlcnlwYXJhbXMgZm9ybSB0aGUgYWN0aXZhdGVkIHJvdXRlKHBhZ2V3cmFwcGVyY29tcG9uZW50KVxuICAgICAgICAgICAgICogRm9yIGRlcGxveWVkIGFwcCwgY2FuYWN0aXZhdGUgZ3VhcmQgcmVzb2x2ZWQgdG8gZmFsc2UgYW5kIGdldHMgdGhlIHF1ZXJ5cGFyYW1zIGZyb20gdGhlIGNhbmFjdGl2YXRlIGd1cmFyZChubyBhY3RpdmUgcm91dGUgY29tcG9uZW50KVxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBxdWVyeVBhcmFtcyA9IChvcHRpb25zICYmIG9wdGlvbnMucXVlcnlQYXJhbXMpIHx8IHRoaXMuJHNlY3VyaXR5LmdldFJlZGlyZWN0ZWRSb3V0ZVF1ZXJ5UGFyYW1zKCk7XG4gICAgICAgICAgICBxdWVyeVBhcmFtcyA9IHRoaXMuJHNlY3VyaXR5LmdldFF1ZXJ5U3RyaW5nKHF1ZXJ5UGFyYW1zKTtcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXMgPyAnPycgKyBxdWVyeVBhcmFtcyA6ICcnO1xuICAgICAgICAgICAgLy8gc2hvd2luZyBhIHJlZGlyZWN0aW5nIG1lc3NhZ2VcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQgPSBnZXQodGhpcy5nZXRBcHBMb2NhbGUoKSwgWydNRVNTQUdFX0xPR0lOX1JFRElSRUNUSU9OJ10pIHx8ICdSZWRpcmVjdGluZyB0byBzc28gbG9naW4uLi4nO1xuICAgICAgICAgICAgLy8gYXBwZW5kaW5nIHJlZGlyZWN0IHRvIHBhZ2UgYW5kIHBhZ2UgcGFyYW1zXG4gICAgICAgICAgICBjb25zdCBzc29VcmwgPSB0aGlzLmdldERlcGxveWVkVVJMKCkgKyBTU09fVVJMICsgcGFnZSArIHF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIHJlbW92ZSBpRnJhbWUgd2hlbiByZWRpcmVjdGVkIHRvIElkUCBsb2dpbiBwYWdlLlxuICAgICAgICAgICAgICogdGhpcyBpcyBiZWluZyBkb25lIGFzIElEUHMgZG8gbm90IGFsbG93IHRvIGdldCB0aGVtc2VsdmVzIGxvYWRlZCBpbnRvIGlGcmFtZXMuXG4gICAgICAgICAgICAgKiByZW1vdmUtdG9vbGJhciBoYXMgYmVlbiBhc3NpZ25lZCB3aXRoIGEgd2luZG93IG5hbWUgV01fUFJFVklFV19XSU5ET1csIGNoZWNrIGlmIHRoZSBpZnJhbWUgaXMgb3VyIHRvb2xiYXIgcmVsYXRlZCBhbmRcbiAgICAgICAgICAgICAqIHNhZmVseSBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mIHRoZSBwYXJlbnQgdG9vbGJhciB3aXRoIGN1cnJlbnQgdXJsLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAod2luZG93LnNlbGYgIT09IHdpbmRvdy50b3ApIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnBhcmVudCAmJiB3aW5kb3cubG9jYXRpb24ub3JpZ2luID09PSB3aW5kb3cucGFyZW50Lm9yaWdpbil7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cucGFyZW50Lm5hbWUgPT09IFBSRVZJRVdfV0lORE9XX05BTUUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cucGFyZW50LmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cuc2VsZi5sb2NhdGlvbi5ocmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5wYXJlbnQubmFtZSA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc3NvVXJsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHNzb1VybDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc3NvVXJsO1xuICAgICAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgdGhlIGFwcCB3aGVuIGEgWEhSIHJlcXVlc3QgcmV0dXJucyA0MDEgcmVzcG9uc2VcbiAgICAgKiBJZiBubyB1c2VyIHdhcyBsb2dnZWQgaW4gYmVmb3JlIDQwMSBvY2N1cnJlZCwgRmlyc3QgdGltZSBMb2dpbiBpcyBzaW11bGF0ZWRcbiAgICAgKiBFbHNlLCBhIHNlc3Npb24gdGltZW91dCBoYXMgb2NjdXJyZWQgYW5kIHRoZSBzYW1lIGlzIHNpbXVsYXRlZFxuICAgICAqIEBwYXJhbSBwYWdlICBpZiBwcm92aWRlZCwgcmVwcmVzZW50cyB0aGUgcGFnZSBuYW1lIGZvciB3aGljaCBYSFIgcmVxdWVzdCByZXR1cm5lZCA0MDEsIG9uIHJlLWxvZ2luXG4gICAgICogICAgICAgICAgICAgIGlmIG5vdCBwcm92aWRlZCwgYSBzZXJ2aWNlIHJlcXVlc3QgcmV0dXJuZWQgNDAxXG4gICAgICogQHBhcmFtIG9uU3VjY2VzcyBzdWNjZXNzIGhhbmRsZXJcbiAgICAgKiBAcGFyYW0gb25FcnJvciBlcnJvciBoYW5kbGVyXG4gICAgICovXG4gICAgaGFuZGxlNDAxKHBhZ2U/LCBvcHRpb25zPykge1xuICAgICAgICBsZXQgc2Vzc2lvblRpbWVvdXRDb25maWcsXG4gICAgICAgICAgICBzZXNzaW9uVGltZW91dE1ldGhvZCxcbiAgICAgICAgICAgIGxvZ2luQ29uZmlnLFxuICAgICAgICAgICAgbG9naW5NZXRob2Q7XG4gICAgICAgIGNvbnN0IExPR0lOX01FVEhPRCA9IHtcbiAgICAgICAgICAgICAgICAnRElBTE9HJyA6ICdESUFMT0cnLFxuICAgICAgICAgICAgICAgICdQQUdFJyAgIDogJ1BBR0UnLFxuICAgICAgICAgICAgICAgICdTU08nICAgIDogJ1NTTydcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy4kc2VjdXJpdHkuZ2V0KCk7XG4gICAgICAgIGxldCBxdWVyeVBhcmFtc09iaiA9IHt9O1xuICAgICAgICBsb2dpbkNvbmZpZyA9IGNvbmZpZy5sb2dpbkNvbmZpZztcbiAgICAgICAgdGhpcy5sYXN0TG9nZ2VkVXNlcklkID0gY29uZmlnLnVzZXJJbmZvICYmIGNvbmZpZy51c2VySW5mby51c2VySWQ7XG4gICAgICAgIC8vIGlmIHVzZXIgZm91bmQsIDQwMSB3YXMgdGhyb3duIGFmdGVyIHNlc3Npb24gdGltZVxuICAgICAgICBpZiAoY29uZmlnLnVzZXJJbmZvICYmIGNvbmZpZy51c2VySW5mby51c2VyTmFtZSkge1xuICAgICAgICAgICAgY29uZmlnLmF1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHNlc3Npb25UaW1lb3V0Q29uZmlnID0gbG9naW5Db25maWcuc2Vzc2lvblRpbWVvdXQgfHwgeyd0eXBlJzogTE9HSU5fTUVUSE9ELkRJQUxPR307XG4gICAgICAgICAgICBzZXNzaW9uVGltZW91dE1ldGhvZCA9IHNlc3Npb25UaW1lb3V0Q29uZmlnLnR5cGUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIHN3aXRjaCAoc2Vzc2lvblRpbWVvdXRNZXRob2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlIExPR0lOX01FVEhPRC5ESUFMT0c6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0xvZ2luRGlhbG9nKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTE9HSU5fTUVUSE9ELlBBR0U6XG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSA9IHRoaXMuJHNlY3VyaXR5LmdldEN1cnJlbnRSb3V0ZVBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc09ialsncmVkaXJlY3RUbyddID0gcGFnZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQWRkaW5nIHF1ZXJ5IHBhcmFtcyhwYWdlIHBhcmFtcyBvZiBwYWdlIGJlaW5nIHJlZGlyZWN0ZWQgdG8pIHRvIHRoZSBVUkwuXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zT2JqID0gbWVyZ2UocXVlcnlQYXJhbXNPYmosIHRoaXMuJHNlY3VyaXR5LmdldFJlZGlyZWN0ZWRSb3V0ZVF1ZXJ5UGFyYW1zKCkpO1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVkaXJlY3QgcGFnZSBzaG91bGQgbm90IGJlIHNhbWUgYXMgc2Vzc2lvbiB0aW1lb3V0IGxvZ2luIHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBwYWdlICE9PSBzZXNzaW9uVGltZW91dENvbmZpZy5wYWdlTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLm5hdmlnYXRlKFtzZXNzaW9uVGltZW91dENvbmZpZy5wYWdlTmFtZV0sIHtxdWVyeVBhcmFtczogcXVlcnlQYXJhbXNPYmp9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIExPR0lOX01FVEhPRC5TU086XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU1NPTG9naW4oY29uZmlnLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldExhbmRpbmdQYWdlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBpZiBubyB1c2VyIGZvdW5kLCA0MDEgd2FzIHRocm93biBmb3IgZmlyc3QgdGltZSBsb2dpblxuICAgICAgICAgICAgbG9naW5NZXRob2QgPSBsb2dpbkNvbmZpZy50eXBlLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBzd2l0Y2ggKGxvZ2luTWV0aG9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuRElBTE9HOlxuICAgICAgICAgICAgICAgICAgICAvLyBUaHJvdWdoIGxvZ2luRGlhbG9nLCB1c2VyIHdpbGwgcmVtYWluIGluIHRoZSBjdXJyZW50IHN0YXRlIGFuZCBmYWlsZWQgY2FsbHMgd2lsbCBiZSBleGVjdXRlZCBwb3N0IGxvZ2luIHRocm91Z2ggTG9naW5WYXJpYWJsZVNlcnZpY2UuXG4gICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHVzZXIgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHJlc3BlY3RpdmUgbGFuZGluZyBwYWdlIG9ubHkgaWYgZGlhbG9nIGlzIG9wZW5lZCBtYW51YWxseShub3QgdGhyb3VnaCBhIGZhaWxlZCA0MDEgY2FsbCkuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9SZWRpcmVjdCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93TG9naW5EaWFsb2coKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuUEFHRTpcbiAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90IHByb3ZpZGUgcmVkaXJlY3RUbyBwYWdlIGlmIGZldGNoaW5nIEhPTUUgcGFnZSByZXN1bHRlZCA0MDFcbiAgICAgICAgICAgICAgICAgICAgLy8gb24gYXBwIGxvYWQsIGJ5IGRlZmF1bHQgSG9tZSBwYWdlIGlzIGxvYWRlZFxuICAgICAgICAgICAgICAgICAgICBwYWdlID0gdGhpcy4kc2VjdXJpdHkuZ2V0UmVkaXJlY3RQYWdlKGNvbmZpZywgcGFnZSk7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zT2JqWydyZWRpcmVjdFRvJ10gPSBwYWdlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHRyYVF1ZXJ5UGFyYW1zID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5xdWVyeVBhcmFtcykgfHwgdGhpcy4kc2VjdXJpdHkuZ2V0UmVkaXJlY3RlZFJvdXRlUXVlcnlQYXJhbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNPYmogPSBtZXJnZShxdWVyeVBhcmFtc09iaiwgZXh0cmFRdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHJvdXRlci5uYXZpZ2F0ZShbbG9naW5Db25maWcucGFnZU5hbWVdLCB7cXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zT2JqfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGFwcC5sYW5kaW5nUGFnZU5hbWUgPSBsb2dpbkNvbmZpZy5wYWdlTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuU1NPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNTT0xvZ2luKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBkYXRhIGRlcGVuZGVudCBvbiBsb2dnZWQgaW4gdXNlclxuICAgICAqIFJlbG9hZHMgc2VjdXJpdHkgY29uZmlnLCBtZXRhZGF0YVxuICAgICAqIFVwZGF0ZXMgdGhlIGxvZ2dlZEluVXNlclZhcmlhYmxlXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAgICovXG4gICAgcmVsb2FkQXBwRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZFNlY3VyaXR5Q29uZmlnKHRydWUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZE1ldGFkYXRhKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTG9nZ2VkSW5Vc2VyVmFyaWFibGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBub1JlZGlyZWN0KHZhbHVlPzogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9SZWRpcmVjdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX25vUmVkaXJlY3QgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vUmVkaXJlY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaW52b2tlcyBzZXNzaW9uIGZhaWx1cmUgcmVxdWVzdHNcbiAgICAgKi9cbiAgICBleGVjdXRlU2Vzc2lvbkZhaWx1cmVSZXF1ZXN0cygpIHtcbiAgICAgICAgdGhpcy4kaHR0cC5leGVjdXRlU2Vzc2lvbkZhaWx1cmVSZXF1ZXN0cygpO1xuICAgIH1cblxuICAgIHB1c2hUb1Nlc3Npb25GYWlsdXJlUmVxdWVzdHMoY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy4kaHR0cC5wdXNoVG9TZXNzaW9uRmFpbHVyZVF1ZXVlKGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVwbG95ZWRVUkwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuZGVwbG95ZWRVcmwgPyB0aGlzLiRhcHAuZGVwbG95ZWRVcmwgOiAkcm9vdFNjb3BlLnByb2plY3QuZGVwbG95ZWRVcmw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmV0Y2hlcyB0aGUgY3VzdG9tdXJsc2NoZW1lIGZvciBhIG1vYmlsZSBhcHBcbiAgICAgKiB3aGljaCBpcyB1c2VkIGZvciByZWRpcmVjdGlvbiBiYWNrIHRvIHRoZSBhcHAgZnJvbSBicm93c2VyIGluIGltcGxpY2l0IG9BdXRoIGZsb3dcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDdXN0b21VcmxTY2hlbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuY3VzdG9tVXJsU2NoZW1lO1xuICAgIH1cblxuICAgIG5vdGlmeShldmVudE5hbWUsIGRhdGEpIHtcbiAgICAgICAgdGhpcy4kYXBwLm5vdGlmeShldmVudE5hbWUsIGRhdGEpO1xuICAgIH1cblxuICAgIHN1YnNjcmliZShldmVudE5hbWUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5zdWJzY3JpYmUoZXZlbnROYW1lLCBkYXRhKTtcbiAgICB9XG5cbiAgICBnZXRBY3RpdmVQYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kYXBwLmFjdGl2ZVBhZ2U7XG4gICAgfVxuXG4gICAgZ2V0QXBwTG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kYXBwLmFwcExvY2FsZTtcbiAgICB9XG5cbiAgICBnZXRTZWxlY3RlZExvY2FsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGkxOG4uZ2V0U2VsZWN0ZWRMb2NhbGUoKTtcbiAgICB9XG5cbiAgICBub3RpZnlBcHAodGVtcGxhdGUsIHR5cGUsIHRpdGxlPykge1xuICAgICAgICB0aGlzLiRhcHAubm90aWZ5QXBwKHRlbXBsYXRlLCB0eXBlLCB0aXRsZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcnMgdGhlIG9uQmVmb3JlU2VydmljZSBtZXRob2QgZGVmaW5lZCBpbiBhcHAuanMgb2YgdGhlIGFwcFxuICAgICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1zXG4gICAgICovXG4gICAgYXBwT25CZWZvcmVTZXJ2aWNlQ2FsbChyZXF1ZXN0UGFyYW1zOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRyaWdnZXJGbih0aGlzLiRhcHAub25CZWZvcmVTZXJ2aWNlQ2FsbCwgcmVxdWVzdFBhcmFtcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcnMgdGhlIG9uU2VydmljZVN1Y2Nlc3MgbWV0aG9kIGRlZmluZWQgaW4gYXBwLmpzIG9mIHRoZSBhcHBcbiAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAqIEBwYXJhbSB4aHJPYmpcbiAgICAgKi9cbiAgICBhcHBPblNlcnZpY2VTdWNjZXNzKGRhdGE6IGFueSwgeGhyT2JqOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRyaWdnZXJGbih0aGlzLiRhcHAub25TZXJ2aWNlU3VjY2VzcywgZGF0YSwgeGhyT2JqKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyB0aGUgb25TZXJ2aWNlRXJyb3IgbWV0aG9kIGRlZmluZWQgaW4gYXBwLmpzIG9mIHRoZSBhcHBcbiAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAqIEBwYXJhbSB4aHJPYlxuICAgICAqL1xuICAgIGFwcE9uU2VydmljZUVycm9yKGRhdGE6IGFueSwgeGhyT2I/OiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRyaWdnZXJGbih0aGlzLiRhcHAub25TZXJ2aWNlRXJyb3IsIGRhdGEsIHhock9iKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyB0aGUgYXBwVmFyaWFibGVzUmVhZHkgbWV0aG9kIGRlZmluZWQgaW4gYXBwLmpzIG9mIHRoZSBhcHBcbiAgICAgKi9cbiAgICBhcHBWYXJpYWJsZXNSZWFkeSgpIHtcbiAgICAgICAgdHJpZ2dlckZuKHRoaXMuJGFwcC5vbkFwcFZhcmlhYmxlc1JlYWR5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyB0aGUgb25CZWZvcmVBcHBSZWFkeSBtZXRob2QgZGVmaW5lZCBpbiBhcHAuanMgb2YgdGhlIGFwcFxuICAgICAqL1xuICAgIGJlZm9yZUFwcFJlYWR5KCkge1xuICAgICAgICB0cmlnZ2VyRm4odGhpcy4kYXBwLm9uQmVmb3JlQXBwUmVhZHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHBpcGUgYmFzZWQgb24gdGhlIGlucHV0XG4gICAgICovXG4gICAgZ2V0UGlwZShwaXBlKSB7XG4gICAgICAgIGlmIChwaXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiRkYXRlUGlwZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TGFuZGluZ1BhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzZWN1cml0eS5nZXRQYWdlQnlMb2dnZWRJblVzZXIoKS50aGVuKHAgPT4gdGhpcy4kYXBwLmxhbmRpbmdQYWdlTmFtZSA9IDxzdHJpbmc+IHApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybiB0cnVlIGlmIHByZWZhYiB0eXBlIGFwcFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIGlzUHJlZmFiVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5pc1ByZWZhYlR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJuIHRydWUgaWYgdGVtcGxhdGUgYnVuZGxlIHR5cGUgYXBwXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgaXNUZW1wbGF0ZUJ1bmRsZVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuaXNUZW1wbGF0ZUJ1bmRsZVR5cGU7XG4gICAgfVxuXG4gICAgcG9zdE1lc3NhZ2UoY29udGVudCkge1xuICAgICAgICB3aW5kb3cudG9wLnBvc3RNZXNzYWdlKGNvbnRlbnQsICcqJyk7XG4gICAgfVxuXG4gICAgc2hvd1RlbXBsYXRlKGlkeCkge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGVzW2lkeF07XG4gICAgICAgIC8vIHNjb3BlLmFjdGl2ZVRlbXBsYXRlSW5kZXggPSBpZHg7XG4gICAgICAgIHRoaXMuJHJvdXRlci5uYXZpZ2F0ZShbdGVtcGxhdGUuaWRdKTtcbiAgICB9XG4gICAgcG9zdFRlbXBsYXRlQnVuZGxlSW5mbygpIHtcblxuICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gKGV2dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbXNnRGF0YSA9IGV2dC5kYXRhO1xuXG4gICAgICAgICAgICBpZiAoIWlzT2JqZWN0KG1zZ0RhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBtc2dEYXRhLmtleTtcblxuICAgICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFBPU1RfTUVTU0FHRVMuSElERV9URU1QTEFURVNfU0hPV19DQVNFOlxuICAgICAgICAgICAgICAgICAgICAvLyBzY29wZS5oaWRlU2hvd0Nhc2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFBPU1RfTUVTU0FHRVMuU0VMRUNUX1RFTVBMQVRFOlxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RlbXBsYXRlKG1zZ0RhdGEudGVtcGxhdGVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb3N0TWVzc2FnZSh7a2V5OiBQT1NUX01FU1NBR0VTLk9OX0xPQUR9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZldGNoQ29udGVudCgnanNvbicsICcuL2NvbmZpZy5qc29uJywgdHJ1ZSwgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSBbXTtcbiAgICAgICAgICAgIGlmICghcmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlcyA9IHJlc3BvbnNlLnRlbXBsYXRlcztcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RNZXNzYWdlKHsna2V5JzogUE9TVF9NRVNTQUdFUy5URU1QTEFURUJVTkRMRV9DT05GSUcsICdjb25maWcnOiByZXNwb25zZX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwb3N0QXBwVHlwZUluZm8oKSB7XG4gICAgICAgIGlmICh0aGlzLmlzVGVtcGxhdGVCdW5kbGVUeXBlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3RUZW1wbGF0ZUJ1bmRsZUluZm8oKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
478
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLm1hbmFnZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvc2VydmljZXMvYXBwLm1hbmFnZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUNILHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0QixHQUFHLEVBQ0gsWUFBWSxFQUNaLFNBQVMsRUFDVCxTQUFTLEVBQ1QsVUFBVSxFQUNWLHNCQUFzQixFQUN6QixNQUFNLFVBQVUsQ0FBQztBQUNsQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQy9DLE9BQU8sRUFBYSxVQUFVLEVBQWtCLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RyxPQUFPLEVBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7OztBQUU1RixJQUFLLGFBT0o7QUFQRCxXQUFLLGFBQWE7SUFDZCxzRUFBcUQsQ0FBQTtJQUNyRCxzRUFBcUQsQ0FBQTtJQUNyRCx5REFBaUQsQ0FBQTtJQUNqRCxvREFBNEMsQ0FBQTtJQUM1QyxpRUFBbUQsQ0FBQTtJQUNuRCxvQ0FBb0MsQ0FBQTtBQUN4QyxDQUFDLEVBUEksYUFBYSxLQUFiLGFBQWEsUUFPakI7QUFHRCxNQUFNLE9BQU8saUJBQWlCO2FBQ1YsaUJBQVksR0FBRyxtQkFBbUIsQUFBdEIsQ0FBdUI7SUFRbkQsWUFDWSxLQUEwQixFQUMxQixTQUEwQixFQUMxQixPQUE4QixFQUM5QixPQUFlLEVBQ2YsSUFBUyxFQUNULFVBQTRCLEVBQzVCLFNBQTBCLEVBQzFCLFFBQWdDLEVBQ2hDLEtBQTBCLEVBQzFCLFNBQW1CO1FBVG5CLFVBQUssR0FBTCxLQUFLLENBQXFCO1FBQzFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO1FBQzFCLFlBQU8sR0FBUCxPQUFPLENBQXVCO1FBQzlCLFlBQU8sR0FBUCxPQUFPLENBQVE7UUFDZixTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ1QsZUFBVSxHQUFWLFVBQVUsQ0FBa0I7UUFDNUIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFDMUIsYUFBUSxHQUFSLFFBQVEsQ0FBd0I7UUFDaEMsVUFBSyxHQUFMLEtBQUssQ0FBcUI7UUFDMUIsY0FBUyxHQUFULFNBQVMsQ0FBVTtRQWhCdkIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQWdCeEIsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxLQUFLLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUUvRCxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV2RCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2xELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQzFCLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLElBQUksTUFBTSxFQUFFLENBQUM7b0JBQ1QsSUFBSSxhQUFhLENBQUM7b0JBQ2xCLHFHQUFxRztvQkFDckcsSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQ3BELE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7NEJBQ2xDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FBQyxHQUFHLElBQUssSUFBSSxDQUFDLFFBQWdCLENBQUMsaUJBQWlCLElBQUssSUFBSSxDQUFDLFFBQWdCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztnQ0FDdEssQ0FBQyxRQUFRLENBQUMsY0FBYyxLQUFNLElBQUksQ0FBQyxRQUFnQixDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxRQUFRLENBQUMsY0FBYyxLQUFNLElBQUksQ0FBQyxRQUFnQixDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0NBQ3pOLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0NBQ3JCLE9BQU87NEJBQ1gsQ0FBQzt3QkFDTCxDQUFDLENBQUMsQ0FBQztvQkFDUCxDQUFDO29CQUNELElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQzt3QkFDakIsUUFBUSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQzt3QkFDaEQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGNBQWMsRUFDeEQsUUFBUSxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUMvQixRQUFRLENBQUMsWUFBWSxFQUNyQixRQUFRLENBQUMsY0FBYyxDQUFDLENBQUM7d0JBQzdCLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUN4QyxDQUFDO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDSixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQ3BELENBQUM7WUFDTCxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsR0FBRyxFQUFFO1lBQ3JDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN0QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDOUIsSUFBRyxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7d0JBQzVELElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQy9CLENBQUM7Z0JBQ0wsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2IsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQ7O09BRUc7SUFDSyxlQUFlO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3BDLCtFQUErRTtRQUMvRSx1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUN2QywwRkFBMEY7UUFDMUYsb0NBQW9DO1FBQ3BDLFVBQVUsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxTQUFTO0lBRVQsQ0FBQztJQUVELGNBQWM7SUFFZCxDQUFDO0lBRUQsa0JBQWtCLENBQUMsU0FBbUI7UUFDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzFCLENBQUM7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFlBQVk7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELGdCQUFnQixDQUFDLFNBQWU7UUFDNUIsSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQixPQUFPLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEUsb0VBQW9FO1lBQ3BFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztZQUNyQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQy9CLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDbkMsQ0FBQyxDQUFDO1FBRUYsSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDaEIsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDN0IsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNuRixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsbUJBQW1CLENBQUMsT0FBaUI7UUFDakMsSUFBSSxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsT0FBTyxDQUFDO1FBQ3JDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNsQyxDQUFDO0lBRU8seUJBQXlCLENBQUMsUUFBUTtRQUN0QyxRQUFRLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUNqQyxRQUFRLENBQUMsS0FBSyxHQUFhLEVBQUUsQ0FBQztRQUM5QixRQUFRLENBQUMsSUFBSSxHQUFjLFNBQVMsQ0FBQztRQUNyQyxRQUFRLENBQUMsRUFBRSxHQUFnQixTQUFTLENBQUM7UUFDckMsUUFBUSxDQUFDLFFBQVEsR0FBVSxTQUFTLENBQUM7SUFDekMsQ0FBQztJQUVPLDBCQUEwQjtRQUM5QixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFDO1FBRXRFLGVBQWU7UUFDZixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDaEIsT0FBTztRQUNYLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNuQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzVDLElBQUksY0FBYyxJQUFJLGNBQWMsQ0FBQyxlQUFlLElBQUksY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNuRixZQUFZLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQyxhQUFhLENBQUM7Z0JBQzVELFlBQVksQ0FBQyxLQUFLLEdBQWEsY0FBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQ2pFLFlBQVksQ0FBQyxJQUFJLEdBQWMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQ2hFLFlBQVksQ0FBQyxFQUFFLEdBQWdCLGNBQWMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUM5RCxZQUFZLENBQUMsUUFBUSxHQUFVLGNBQWMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO2dCQUNoRSxZQUFZLENBQUMsY0FBYyxHQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLENBQUMsb0RBQW9EO1lBQy9ILENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzdDLFlBQVksQ0FBQyxpQkFBaUIsR0FBRyxjQUFjLElBQUksY0FBYyxDQUFDLGVBQWUsQ0FBQztnQkFDbEYsTUFBTSxJQUFJLENBQUM7WUFDZixDQUFDO1lBQ0QsT0FBTyxjQUFjLENBQUM7UUFDMUIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ1gsWUFBWSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7WUFDckMsWUFBWSxDQUFDLEtBQUssR0FBYSxFQUFFLENBQUM7WUFDbEMsWUFBWSxDQUFDLElBQUksR0FBYyxTQUFTLENBQUM7WUFDekMsWUFBWSxDQUFDLEVBQUUsR0FBZ0IsU0FBUyxDQUFDO1lBQ3pDLFlBQVksQ0FBQyxRQUFRLEdBQVUsU0FBUyxDQUFDO1lBQ3pDLFlBQVksQ0FBQyxjQUFjLEdBQUksRUFBRSxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCw2QkFBNkI7UUFDekIsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxjQUFjLENBQUMsTUFBTSxFQUFFLE9BQU87UUFDMUIsTUFBTSxPQUFPLEdBQUcsNEJBQTRCLEVBQ3hDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO1FBQzlDLElBQUksSUFBSSxHQUFHLEVBQUUsRUFDVCxXQUFXLENBQUM7UUFFaEIsb0VBQW9FO1FBQ3BFLDhDQUE4QztRQUUxQzs7O1dBR0c7UUFDSCxXQUFXLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsNkJBQTZCLEVBQUUsQ0FBQztRQUNqRyxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekQsV0FBVyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBRW5ELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMxRCxNQUFNLFFBQVEsR0FBRyxzQkFBc0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztRQUNuRCxJQUFJLFlBQVksSUFBSSxDQUFDLFlBQVksS0FBSyxRQUFRLElBQUksQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7WUFDL0QsSUFBSSxHQUFHLGdCQUFnQixHQUFHLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxnQ0FBZ0M7UUFDaEMsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLDJCQUEyQixDQUFDLENBQUMsSUFBSSw2QkFBNkIsQ0FBQztRQUNySCw2Q0FBNkM7UUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLE9BQU8sR0FBRyxJQUFJLEdBQUcsV0FBVyxDQUFDO1FBQ3BFOzs7OztXQUtHO1FBQ0gsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUM7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFDLENBQUM7b0JBQ2xFLElBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssbUJBQW1CLEVBQUUsQ0FBQzt3QkFDNUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDeEQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFBO29CQUMzQixDQUFDO2dCQUNMLENBQUM7cUJBQU0sQ0FBQztvQkFDSixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUE7Z0JBQ2pDLENBQUM7WUFDTCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUM7WUFDbEMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ2xDLENBQUM7SUFDVCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxTQUFTLENBQUMsSUFBSyxFQUFFLE9BQVE7UUFDckIsSUFBSSxvQkFBb0IsRUFDcEIsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxXQUFXLENBQUM7UUFDaEIsTUFBTSxZQUFZLEdBQUc7WUFDYixRQUFRLEVBQUcsUUFBUTtZQUNuQixNQUFNLEVBQUssTUFBTTtZQUNqQixLQUFLLEVBQU0sS0FBSztTQUNuQixDQUFDO1FBRU4sTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNwQyxJQUFJLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDeEIsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDbEUsbURBQW1EO1FBQ25ELElBQUksTUFBTSxDQUFDLFFBQVEsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1lBQzdCLG9CQUFvQixHQUFHLFdBQVcsQ0FBQyxjQUFjLElBQUksRUFBQyxNQUFNLEVBQUUsWUFBWSxDQUFDLE1BQU0sRUFBQyxDQUFDO1lBQ25GLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUMvRCxRQUFRLG9CQUFvQixFQUFFLENBQUM7Z0JBQzNCLEtBQUssWUFBWSxDQUFDLE1BQU07b0JBQ3BCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDdkIsTUFBTTtnQkFDVixLQUFLLFlBQVksQ0FBQyxJQUFJO29CQUNsQixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ1IsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztvQkFDaEQsQ0FBQztvQkFDRCxjQUFjLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO29CQUNwQywyRUFBMkU7b0JBQzNFLGNBQWMsR0FBRyxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDO29CQUN2RixxRUFBcUU7b0JBQ3JFLElBQUssSUFBSSxLQUFLLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxDQUFDO3dCQUMxQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUMsV0FBVyxFQUFFLGNBQWMsRUFBQyxDQUFDLENBQUM7b0JBQzFGLENBQUM7b0JBQ0QsTUFBTTtnQkFDVixLQUFLLFlBQVksQ0FBQyxHQUFHO29CQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztvQkFDckMsTUFBTTtZQUNkLENBQUM7WUFDRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDMUIsQ0FBQzthQUFNLENBQUM7WUFDSix3REFBd0Q7WUFDeEQsV0FBVyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0MsUUFBUSxXQUFXLEVBQUUsQ0FBQztnQkFDbEIsS0FBSyxZQUFZLENBQUMsTUFBTTtvQkFDcEIsd0lBQXdJO29CQUN4SSw2SEFBNkg7b0JBQzdILElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDdkIsTUFBTTtnQkFDVixLQUFLLFlBQVksQ0FBQyxJQUFJO29CQUNsQixvRUFBb0U7b0JBQ3BFLDhDQUE4QztvQkFDOUMsSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFDcEQsY0FBYyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDcEMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO29CQUM1RyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO29CQUN6RCxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUMsQ0FBQyxDQUFDO29CQUM3RSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO29CQUNqRCxNQUFNO2dCQUNWLEtBQUssWUFBWSxDQUFDLEdBQUc7b0JBQ2pCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO29CQUNyQyxNQUFNO1lBQ2QsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxhQUFhO1FBQ1QsT0FBTyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMzQyxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUNqQyxPQUFPLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQzdDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWU7UUFDdEIsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDNUIsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSCw2QkFBNkI7UUFDekIsSUFBSSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO0lBQy9DLENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxRQUFRO1FBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVNLGNBQWM7UUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDO0lBQzFGLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksa0JBQWtCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDckMsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSTtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFNBQVMsQ0FBQyxTQUFTLEVBQUUsSUFBSTtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsYUFBYTtRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVk7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQy9CLENBQUM7SUFFRCxpQkFBaUI7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBTTtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxzQkFBc0IsQ0FBQyxhQUFrQjtRQUNyQyxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLGFBQWEsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsSUFBUyxFQUFFLE1BQVc7UUFDdEMsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxpQkFBaUIsQ0FBQyxJQUFTLEVBQUUsS0FBVztRQUNwQyxPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCO1FBQ2IsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxjQUFjO1FBQ1YsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsSUFBSTtRQUNSLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ2xCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUMxQixDQUFDO0lBQ0wsQ0FBQztJQUVPLGNBQWM7UUFDbEIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQVksQ0FBQyxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUVEOzs7T0FHRztJQUNILFlBQVk7UUFDUixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxvQkFBb0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDO0lBQzFDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBTztRQUNmLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsWUFBWSxDQUFDLEdBQUc7UUFDWixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3JDLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxzQkFBc0I7UUFFbEIsTUFBTSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ3ZCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFFekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNyQixPQUFPO1lBQ1gsQ0FBQztZQUVELGFBQWE7WUFDYixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDO1lBRXhCLFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBQ1YsS0FBSyxhQUFhLENBQUMsd0JBQXdCO29CQUN2Qyw2QkFBNkI7b0JBQzdCLE1BQU07Z0JBQ1YsS0FBSyxhQUFhLENBQUMsZUFBZTtvQkFDOUIsYUFBYTtvQkFDYixJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDekMsTUFBTTtZQUNkLENBQUM7UUFDTCxDQUFDLENBQUM7UUFFRixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsT0FBTyxFQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sWUFBWSxDQUFDLE1BQU0sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxFQUFFO1lBQzFELElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFDLEtBQUssRUFBRSxhQUFhLENBQUMscUJBQXFCLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7WUFDdkYsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLENBQUM7WUFDOUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUN6QyxDQUFDO0lBQ0wsQ0FBQztrSEFoZ0JRLGlCQUFpQjt1RUFBakIsaUJBQWlCLFdBQWpCLGlCQUFpQjs7aUZBQWpCLGlCQUFpQjtjQUQ3QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuaW1wb3J0IHtcbiAgICBBYnN0cmFjdERpYWxvZ1NlcnZpY2UsXG4gICAgQWJzdHJhY3RIdHRwU2VydmljZSxcbiAgICBBYnN0cmFjdEkxOG5TZXJ2aWNlLFxuICAgIEFic3RyYWN0U3Bpbm5lclNlcnZpY2UsXG4gICAgQXBwLFxuICAgIGZldGNoQ29udGVudCxcbiAgICBpc0RlZmluZWQsXG4gICAgdHJpZ2dlckZuLFxuICAgICRhcHBEaWdlc3QsXG4gICAgZ2V0V21Qcm9qZWN0UHJvcGVydGllc1xufSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBTZWN1cml0eVNlcnZpY2UgfSBmcm9tICdAd20vc2VjdXJpdHknO1xuaW1wb3J0IHsgQ09OU1RBTlRTLCAkcm9vdFNjb3BlLCByb3V0ZXJTZXJ2aWNlLCAgTWV0YWRhdGFTZXJ2aWNlLCBWYXJpYWJsZXNTZXJ2aWNlIH0gZnJvbSAnQHdtL3ZhcmlhYmxlcyc7XG5pbXBvcnQge2V4dGVuZCwgZm9yRWFjaCwgZ2V0LCBpc0VtcHR5LCBpc09iamVjdCwgaXNVbmRlZmluZWQsIG1lcmdlLCB0cmltfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5cbmVudW0gUE9TVF9NRVNTQUdFUyB7XG4gICAgSElERV9URU1QTEFURVNfU0hPV19DQVNFID0gJ2hpZGUtdGVtcGxhdGVzLXNob3ctY2FzZScsXG4gICAgU0hPV19URU1QTEFURVNfU0hPV19DQVNFID0gJ3Nob3ctdGVtcGxhdGVzLXNob3ctY2FzZScsXG4gICAgVVBEQVRFX0xPQ0FUSU9OICAgICAgICAgID0gJ3VwZGF0ZS1sb2NhdGlvbi1wYXRoJyxcbiAgICBTRUxFQ1RfVEVNUExBVEUgICAgICAgICAgPSAnc2VsZWN0LXRlbXBsYXRlJyxcbiAgICBURU1QTEFURUJVTkRMRV9DT05GSUcgICAgPSAndGVtcGxhdGUtYnVuZGxlLWNvbmZpZycsXG4gICAgT05fTE9BRCAgICAgICAgICAgICAgICAgID0gJ29uLWxvYWQnXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBcHBNYW5hZ2VyU2VydmljZSB7XG4gICAgc3RhdGljIHJlYWRvbmx5IFNFUlZJQ0VfTkFNRSA9ICdBcHBNYW5hZ2VyU2VydmljZSc7XG5cbiAgICBwcml2YXRlIGFwcFZhcmlhYmxlc0xvYWRlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgYXBwVmFyaWFibGVzRmlyZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF9ub1JlZGlyZWN0ID0gZmFsc2U7XG4gICAgcHJpdmF0ZSB0ZW1wbGF0ZXM6IEFycmF5PGFueT47XG4gICAgcHJpdmF0ZSBsYXN0TG9nZ2VkVXNlcklkO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgJGh0dHA6IEFic3RyYWN0SHR0cFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgJHNlY3VyaXR5OiBTZWN1cml0eVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgJGRpYWxvZzogQWJzdHJhY3REaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlICRyb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSAkYXBwOiBBcHAsXG4gICAgICAgIHByaXZhdGUgJHZhcmlhYmxlczogVmFyaWFibGVzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkbWV0YWRhdGE6IE1ldGFkYXRhU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkc3Bpbm5lcjogQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkaTE4bjogQWJzdHJhY3RJMThuU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSAkZGF0ZVBpcGU6IERhdGVQaXBlLFxuICAgICkge1xuICAgICAgICAvLyByZWdpc3RlciBtZXRob2QgdG8gaW52b2tlIG9uIHNlc3Npb24gdGltZW91dFxuICAgICAgICB0aGlzLiRodHRwLnJlZ2lzdGVyT25TZXNzaW9uVGltZW91dCh0aGlzLmhhbmRsZTQwMS5iaW5kKHRoaXMpKTtcblxuICAgICAgICB0aGlzLiR2YXJpYWJsZXMucmVnaXN0ZXJEZXBlbmRlbmN5KCdhcHBNYW5hZ2VyJywgdGhpcyk7XG5cbiAgICAgICAgdGhpcy4kYXBwLnN1YnNjcmliZSgndG9nZ2xlLXZhcmlhYmxlLXN0YXRlJywgKGRhdGEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHZhcmlhYmxlID0gZGF0YS52YXJpYWJsZSxcbiAgICAgICAgICAgICAgICBhY3RpdmUgPSBkYXRhLmFjdGl2ZTtcbiAgICAgICAgICAgIGlmICghaXNFbXB0eSh0cmltKHZhcmlhYmxlLnNwaW5uZXJDb250ZXh0KSkpIHtcbiAgICAgICAgICAgICAgICBpZiAoYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBzcGlubmVyRXhpc3RzO1xuICAgICAgICAgICAgICAgICAgICAvLyBXTVMtMjExMTcgOiBEbyBub3QgdHJpZ2dlciBzcGlubmVyLCBpZiB0aGUgY3VycmVudCB2YXJpYWJsZSBpcyBzYW1lIGFzIHNwaW5uZXIgd2hpY2ggaXMgaW4gY29udGV4dFxuICAgICAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUuX3NwaW5uZXJJZCAmJiB2YXJpYWJsZS5fc3Bpbm5lcklkLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yRWFjaCh2YXJpYWJsZS5fc3Bpbm5lcklkLCAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLnNsaWNlKDAsIGl0ZW0ubGFzdEluZGV4T2YoJ18nKSkgPT09IHZhcmlhYmxlLl9pZCAmJiAodGhpcy4kc3Bpbm5lciBhcyBhbnkpLm1lc3NhZ2VzQnlDb250ZXh0ICYmICh0aGlzLiRzcGlubmVyIGFzIGFueSkubWVzc2FnZXNCeUNvbnRleHRbdmFyaWFibGUuc3Bpbm5lckNvbnRleHRdICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YXJpYWJsZS5zcGlubmVyTWVzc2FnZSA9PT0gKHRoaXMuJHNwaW5uZXIgYXMgYW55KS5tZXNzYWdlc0J5Q29udGV4dFt2YXJpYWJsZS5zcGlubmVyQ29udGV4dF1bXCJmaW5hbE1lc3NhZ2VcIl0gfHwgdmFyaWFibGUuc3Bpbm5lck1lc3NhZ2UgPT09ICh0aGlzLiRzcGlubmVyIGFzIGFueSkubWVzc2FnZXNCeUNvbnRleHRbdmFyaWFibGUuc3Bpbm5lckNvbnRleHRdW2l0ZW1dKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGlubmVyRXhpc3RzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmICghc3Bpbm5lckV4aXN0cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX3NwaW5uZXJJZCA9IHZhcmlhYmxlLl9zcGlubmVySWQgfHwgW107XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGlubmVySWQgPSB0aGlzLiRzcGlubmVyLnNob3codmFyaWFibGUuc3Bpbm5lck1lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX2lkICsgJ18nICsgRGF0ZS5ub3coKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS5zcGlubmVyY2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuc3Bpbm5lckNvbnRleHQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUuX3NwaW5uZXJJZC5wdXNoKHNwaW5uZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzcGlubmVyLmhpZGUodmFyaWFibGUuX3NwaW5uZXJJZC5zaGlmdCgpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiRhcHAuc3Vic2NyaWJlKCd1c2VyTG9nZ2VkSW4nLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldExhbmRpbmdQYWdlKCk7XG4gICAgICAgICAgICBpZiAodGhpcy5sYXN0TG9nZ2VkVXNlcklkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kc2VjdXJpdHkuZ2V0Q29uZmlnKGNvbmZpZyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmKGNvbmZpZyAmJiBjb25maWcudXNlckluZm8udXNlcklkICE9PSB0aGlzLmxhc3RMb2dnZWRVc2VySWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuJGFwcC5jbGVhclBhZ2VDYWNoZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgbnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLiRhcHAuc3Vic2NyaWJlKCd1c2VyTG9nZ2VkT3V0JywgKCkgPT4gdGhpcy5zZXRMYW5kaW5nUGFnZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy4kYXBwLmNsZWFyUGFnZUNhY2hlKCk7XG4gICAgICAgIH0pKTtcbiAgICAgICAgdGhpcy4kYXBwLnN1YnNjcmliZSgnaHR0cDQwMScsIChkID0ge30pID0+IHRoaXMuaGFuZGxlNDAxKGQucGFnZSwgZC5vcHRpb25zKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT24gc2Vzc2lvbiB0aW1lb3V0LCBpZiB0aGUgc2Vzc2lvbiB0aW1lb3V0IGNvbmZpZyBpcyBzZXQgdG8gYSBkaWFsb2csIHRoZW4gb3BlbiBsb2dpbiBkaWFsb2dcbiAgICAgKi9cbiAgICBwcml2YXRlIHNob3dMb2dpbkRpYWxvZygpIHtcbiAgICAgICAgdGhpcy4kc3Bpbm5lci5oaWRlKCdnbG9iYWxTcGlubmVyJyk7XG4gICAgICAgIC8vIFJlbW92aW5nIHRoZSBjbG9zZSBhbGwgZGlhbG9ncyBjYWxsLCBzbyB0aGUgZXhpc3RpbmcgZGlhbG9ncyByZW1haW4gb3BlbiBhbmRcbiAgICAgICAgLy8gdGhlIGxvZ2luIGRpYWxvZyBjb21lcyBvbiB0b3Agb2YgaXQuXG4gICAgICAgIHRoaXMuJGRpYWxvZy5vcGVuKCdDb21tb25Mb2dpbkRpYWxvZycpO1xuICAgICAgICAvLyBTaW5jZSB0aGUgbG9naW4gZGlhbG9nIGlzIGNsb3NlZCBhbmQgb3BlbmVkIGl0cyB1cGRhdGVkIHByb3BlcnR5IGlzbid0IHJlYWQgYnkgYW5ndWxhci5cbiAgICAgICAgLy8gSGVuY2Ugd2UgdHJpZ2dlciB0aGUgZGlnZXN0IGN5Y2xlXG4gICAgICAgICRhcHBEaWdlc3QoKTtcbiAgICB9XG5cbiAgICBsb2FkQXBwSlMoKSB7XG5cbiAgICB9XG5cbiAgICBsb2FkQ29tbW9uUGFnZSgpIHtcblxuICAgIH1cblxuICAgIGxvYWRTZWN1cml0eUNvbmZpZyhmb3JjZUZsYWc/OiBib29sZWFuKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzZWN1cml0eS5sb2FkKGZvcmNlRmxhZykudGhlbigocikgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLiRhcHAubGFuZGluZ1BhZ2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRMYW5kaW5nUGFnZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHI7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGxvYWRNZXRhZGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJG1ldGFkYXRhLmxvYWQoKTtcbiAgICB9XG5cbiAgICBsb2FkQXBwVmFyaWFibGVzKHZhcmlhYmxlcz86IGFueSkge1xuICAgICAgICBpZiAodGhpcy5hcHBWYXJpYWJsZXNMb2FkZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGluaXQgPSByZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gdGhpcy4kdmFyaWFibGVzLnJlZ2lzdGVyKCdhcHAnLCByZXNwb25zZSwgdGhpcy4kYXBwKTtcbiAgICAgICAgICAgIC8vIG5vdCBhc3NpZ25pbmcgZGlyZWN0bHkgdG8gdGhpcy4kYXBwIHRvIGtlZXAgdGhlIHJlZmVyZW5jZSBpbiB0YWN0XG4gICAgICAgICAgICBleHRlbmQodGhpcy4kYXBwLlZhcmlhYmxlcywgZGF0YS5WYXJpYWJsZXMpO1xuICAgICAgICAgICAgZXh0ZW5kKHRoaXMuJGFwcC5BY3Rpb25zLCBkYXRhLkFjdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVMb2dnZWRJblVzZXJWYXJpYWJsZSgpO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTdXBwb3J0ZWRMb2NhbGVWYXJpYWJsZSgpO1xuICAgICAgICAgICAgdGhpcy5hcHBWYXJpYWJsZXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hcHBWYXJpYWJsZXNGaXJlZCA9IGZhbHNlO1xuICAgICAgICB9O1xuXG4gICAgICAgIGlmIChpc0RlZmluZWQodmFyaWFibGVzKSkge1xuICAgICAgICAgICAgaW5pdCh2YXJpYWJsZXMpO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuJGh0dHAuZ2V0KCcuL2FwcC52YXJpYWJsZXMuanNvbicpLnRoZW4ocmVzcG9uc2UgPT4gaW5pdChyZXNwb25zZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldHRlciBhbmQgc2V0dGVyIGZvciB0aGUgcHJvcGVydHkgYXBwVmFyaWFibGVzRmlyZWRcbiAgICAgKiB0aGlzIGZsYWcgZGV0ZXJtaW5lcyBpZiB0aGUgYXBwIHZhcmlhYmxlcyh3aXRoIHN0YXJ0VXBkYXRlOnRydWUpIGhhdmUgYmVlbiBmaXJlZFxuICAgICAqIHRoZXkgc2hvdWxkIGdldCBmaXJlZCBvbmx5IG9uY2UgdGhyb3VnaCBhcHAgbGlmZWN5Y2xlXG4gICAgICogQHBhcmFtIHtib29sZWFufSBpc0ZpcmVkXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgaXNBcHBWYXJpYWJsZXNGaXJlZChpc0ZpcmVkPzogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNEZWZpbmVkKGlzRmlyZWQpKSB7XG4gICAgICAgICAgICB0aGlzLmFwcFZhcmlhYmxlc0ZpcmVkID0gaXNGaXJlZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5hcHBWYXJpYWJsZXNGaXJlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNsZWFyTG9nZ2VkSW5Vc2VyVmFyaWFibGUodmFyaWFibGUpIHtcbiAgICAgICAgdmFyaWFibGUuaXNBdXRoZW50aWNhdGVkID0gZmFsc2U7XG4gICAgICAgIHZhcmlhYmxlLnJvbGVzICAgICAgICAgICA9IFtdO1xuICAgICAgICB2YXJpYWJsZS5uYW1lICAgICAgICAgICAgPSB1bmRlZmluZWQ7XG4gICAgICAgIHZhcmlhYmxlLmlkICAgICAgICAgICAgICA9IHVuZGVmaW5lZDtcbiAgICAgICAgdmFyaWFibGUudGVuYW50SWQgICAgICAgID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlTG9nZ2VkSW5Vc2VyVmFyaWFibGUoKSB7XG4gICAgICAgIGNvbnN0IGxvZ2dlZEluVXNlciA9IGdldCh0aGlzLiRhcHAsICdWYXJpYWJsZXMubG9nZ2VkSW5Vc2VyLmRhdGFTZXQnKTtcblxuICAgICAgICAvLyBzYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKCFsb2dnZWRJblVzZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy4kc2VjdXJpdHkubG9hZCgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VjdXJpdHlDb25maWcgPSB0aGlzLiRzZWN1cml0eS5nZXQoKTtcbiAgICAgICAgICAgIGlmIChzZWN1cml0eUNvbmZpZyAmJiBzZWN1cml0eUNvbmZpZy5zZWN1cml0eUVuYWJsZWQgJiYgc2VjdXJpdHlDb25maWcuYXV0aGVudGljYXRlZCkge1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pc0F1dGhlbnRpY2F0ZWQgPSBzZWN1cml0eUNvbmZpZy5hdXRoZW50aWNhdGVkO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5yb2xlcyAgICAgICAgICAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VyUm9sZXM7XG4gICAgICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLm5hbWUgICAgICAgICAgICA9IHNlY3VyaXR5Q29uZmlnLnVzZXJJbmZvLnVzZXJOYW1lO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pZCAgICAgICAgICAgICAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VySWQ7XG4gICAgICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLnRlbmFudElkICAgICAgICA9IHNlY3VyaXR5Q29uZmlnLnVzZXJJbmZvLnRlbmFudElkO1xuICAgICAgICAgICAgICAgIGxvZ2dlZEluVXNlci51c2VyQXR0cmlidXRlcyAgPSBzZWN1cml0eUNvbmZpZy51c2VySW5mby51c2VyQXR0cmlidXRlczsgLy8gYXNzaWduIHRoZSBleHRyYSB1c2VyQXR0cmlidXRlcyBmb3IgY3VzdG9tIHVzYWdlLlxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyTG9nZ2VkSW5Vc2VyVmFyaWFibGUobG9nZ2VkSW5Vc2VyKTtcbiAgICAgICAgICAgICAgICBsb2dnZWRJblVzZXIuaXNTZWN1cml0eUVuYWJsZWQgPSBzZWN1cml0eUNvbmZpZyAmJiBzZWN1cml0eUNvbmZpZy5zZWN1cml0eUVuYWJsZWQ7XG4gICAgICAgICAgICAgICAgdGhyb3cgbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBzZWN1cml0eUNvbmZpZztcbiAgICAgICAgfSkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5pc0F1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5yb2xlcyAgICAgICAgICAgPSBbXTtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci5uYW1lICAgICAgICAgICAgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBsb2dnZWRJblVzZXIuaWQgICAgICAgICAgICAgID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgbG9nZ2VkSW5Vc2VyLnRlbmFudElkICAgICAgICA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGxvZ2dlZEluVXNlci51c2VyQXR0cmlidXRlcyAgPSB7fTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3ZlcnJpZGluZyB0aGUgYXBwIHZhcmlhYmxlIHN1cHBvcnRlZCBsb2NhbGUgd2l0aCB0aGUgd21Qcm9wZXJ0aWVzIGkxOG4gRGF0YVZhbHVlc1xuICAgICAqXG4gICAgICogVE9ET1tWaWJodV06XG4gICAgICogQ2FuIHdyaXRlIGEgc2ltcGxlIG1pZ3JhdGlvbiB0byBzeW5jIHRoZSBzdXBwb3J0ZWRMb2NhbGUgdmFyaWFibGUgd2l0aCAnX1dNX0FQUF9QUk9QRVJUSUVTLnN1cHBvcnRlZExhbmd1YWdlcydcbiAgICAgKiBIZW5jZSwgdGhpcyBtYXkgbm90IGJlIHJlcXVpcmVkXG4gICAgICpcbiAgICAgKi9cbiAgICB1cGRhdGVTdXBwb3J0ZWRMb2NhbGVWYXJpYWJsZSgpIHtcbiAgICAgICAgY29uc3Qgc3VwcG9ydGVkTG9jYWxlVmFyID0gZ2V0KHRoaXMuJGFwcCwgJ1ZhcmlhYmxlcy5zdXBwb3J0ZWRMb2NhbGUnKTtcbiAgICB9XG5cbiAgICBoYW5kbGVTU09Mb2dpbihjb25maWcsIG9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgU1NPX1VSTCA9ICdzZXJ2aWNlcy9zZWN1cml0eS9zc29sb2dpbicsXG4gICAgICAgICAgICBQUkVWSUVXX1dJTkRPV19OQU1FID0gJ1dNX1BSRVZJRVdfV0lORE9XJztcbiAgICAgICAgbGV0IHBhZ2UgPSAnJyxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zO1xuXG4gICAgICAgIC8vIGRvIG5vdCBwcm92aWRlIHJlZGlyZWN0VG8gcGFnZSBpZiBmZXRjaGluZyBIT01FIHBhZ2UgcmVzdWx0ZWQgNDAxXG4gICAgICAgIC8vIG9uIGFwcCBsb2FkLCBieSBkZWZhdWx0IEhvbWUgcGFnZSBpcyBsb2FkZWRcblxuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIEZvciBwcmV2aWV3LCB0aGlzLiRzZWN1cml0eS5nZXRSZWRpcmVjdGVkUm91dGVRdWVyeVBhcmFtcygpIGdldHMgdGhlIHF1ZXJ5cGFyYW1zIGZvcm0gdGhlIGFjdGl2YXRlZCByb3V0ZShwYWdld3JhcHBlcmNvbXBvbmVudClcbiAgICAgICAgICAgICAqIEZvciBkZXBsb3llZCBhcHAsIGNhbmFjdGl2YXRlIGd1YXJkIHJlc29sdmVkIHRvIGZhbHNlIGFuZCBnZXRzIHRoZSBxdWVyeXBhcmFtcyBmcm9tIHRoZSBjYW5hY3RpdmF0ZSBndXJhcmQobm8gYWN0aXZlIHJvdXRlIGNvbXBvbmVudClcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgcXVlcnlQYXJhbXMgPSAob3B0aW9ucyAmJiBvcHRpb25zLnF1ZXJ5UGFyYW1zKSB8fCB0aGlzLiRzZWN1cml0eS5nZXRSZWRpcmVjdGVkUm91dGVRdWVyeVBhcmFtcygpO1xuICAgICAgICAgICAgcXVlcnlQYXJhbXMgPSB0aGlzLiRzZWN1cml0eS5nZXRRdWVyeVN0cmluZyhxdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICBxdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zID8gJz8nICsgcXVlcnlQYXJhbXMgOiAnJztcblxuICAgICAgICAgICAgY29uc3QgcmVkaXJlY3RQYWdlID0gdGhpcy4kc2VjdXJpdHkuZ2V0Q3VycmVudFJvdXRlUGFnZSgpO1xuICAgICAgICAgICAgY29uc3QgaG9tZVBhZ2UgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkuaG9tZVBhZ2U7XG4gICAgICAgICAgICBpZiAocmVkaXJlY3RQYWdlICYmIChyZWRpcmVjdFBhZ2UgIT09IGhvbWVQYWdlIHx8ICEhcXVlcnlQYXJhbXMpKSB7XG4gICAgICAgICAgICAgICAgcGFnZSA9ICc/cmVkaXJlY3RQYWdlPScgKyBlbmNvZGVVUklDb21wb25lbnQocmVkaXJlY3RQYWdlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gc2hvd2luZyBhIHJlZGlyZWN0aW5nIG1lc3NhZ2VcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkudGV4dENvbnRlbnQgPSBnZXQodGhpcy5nZXRBcHBMb2NhbGUoKSwgWydNRVNTQUdFX0xPR0lOX1JFRElSRUNUSU9OJ10pIHx8ICdSZWRpcmVjdGluZyB0byBzc28gbG9naW4uLi4nO1xuICAgICAgICAgICAgLy8gYXBwZW5kaW5nIHJlZGlyZWN0IHRvIHBhZ2UgYW5kIHBhZ2UgcGFyYW1zXG4gICAgICAgICAgICBjb25zdCBzc29VcmwgPSB0aGlzLmdldERlcGxveWVkVVJMKCkgKyBTU09fVVJMICsgcGFnZSArIHF1ZXJ5UGFyYW1zO1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAqIHJlbW92ZSBpRnJhbWUgd2hlbiByZWRpcmVjdGVkIHRvIElkUCBsb2dpbiBwYWdlLlxuICAgICAgICAgICAgICogdGhpcyBpcyBiZWluZyBkb25lIGFzIElEUHMgZG8gbm90IGFsbG93IHRvIGdldCB0aGVtc2VsdmVzIGxvYWRlZCBpbnRvIGlGcmFtZXMuXG4gICAgICAgICAgICAgKiByZW1vdmUtdG9vbGJhciBoYXMgYmVlbiBhc3NpZ25lZCB3aXRoIGEgd2luZG93IG5hbWUgV01fUFJFVklFV19XSU5ET1csIGNoZWNrIGlmIHRoZSBpZnJhbWUgaXMgb3VyIHRvb2xiYXIgcmVsYXRlZCBhbmRcbiAgICAgICAgICAgICAqIHNhZmVseSBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mIHRoZSBwYXJlbnQgdG9vbGJhciB3aXRoIGN1cnJlbnQgdXJsLlxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBpZiAod2luZG93LnNlbGYgIT09IHdpbmRvdy50b3ApIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBpZiAod2luZG93LnBhcmVudCAmJiB3aW5kb3cubG9jYXRpb24ub3JpZ2luID09PSB3aW5kb3cucGFyZW50Lm9yaWdpbil7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZih3aW5kb3cucGFyZW50Lm5hbWUgPT09IFBSRVZJRVdfV0lORE9XX05BTUUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cucGFyZW50LmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cuc2VsZi5sb2NhdGlvbi5ocmVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5wYXJlbnQubmFtZSA9IFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc3NvVXJsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IHNzb1VybDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gc3NvVXJsO1xuICAgICAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgdGhlIGFwcCB3aGVuIGEgWEhSIHJlcXVlc3QgcmV0dXJucyA0MDEgcmVzcG9uc2VcbiAgICAgKiBJZiBubyB1c2VyIHdhcyBsb2dnZWQgaW4gYmVmb3JlIDQwMSBvY2N1cnJlZCwgRmlyc3QgdGltZSBMb2dpbiBpcyBzaW11bGF0ZWRcbiAgICAgKiBFbHNlLCBhIHNlc3Npb24gdGltZW91dCBoYXMgb2NjdXJyZWQgYW5kIHRoZSBzYW1lIGlzIHNpbXVsYXRlZFxuICAgICAqIEBwYXJhbSBwYWdlICBpZiBwcm92aWRlZCwgcmVwcmVzZW50cyB0aGUgcGFnZSBuYW1lIGZvciB3aGljaCBYSFIgcmVxdWVzdCByZXR1cm5lZCA0MDEsIG9uIHJlLWxvZ2luXG4gICAgICogICAgICAgICAgICAgIGlmIG5vdCBwcm92aWRlZCwgYSBzZXJ2aWNlIHJlcXVlc3QgcmV0dXJuZWQgNDAxXG4gICAgICogQHBhcmFtIG9uU3VjY2VzcyBzdWNjZXNzIGhhbmRsZXJcbiAgICAgKiBAcGFyYW0gb25FcnJvciBlcnJvciBoYW5kbGVyXG4gICAgICovXG4gICAgaGFuZGxlNDAxKHBhZ2U/LCBvcHRpb25zPykge1xuICAgICAgICBsZXQgc2Vzc2lvblRpbWVvdXRDb25maWcsXG4gICAgICAgICAgICBzZXNzaW9uVGltZW91dE1ldGhvZCxcbiAgICAgICAgICAgIGxvZ2luQ29uZmlnLFxuICAgICAgICAgICAgbG9naW5NZXRob2Q7XG4gICAgICAgIGNvbnN0IExPR0lOX01FVEhPRCA9IHtcbiAgICAgICAgICAgICAgICAnRElBTE9HJyA6ICdESUFMT0cnLFxuICAgICAgICAgICAgICAgICdQQUdFJyAgIDogJ1BBR0UnLFxuICAgICAgICAgICAgICAgICdTU08nICAgIDogJ1NTTydcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy4kc2VjdXJpdHkuZ2V0KCk7XG4gICAgICAgIGxldCBxdWVyeVBhcmFtc09iaiA9IHt9O1xuICAgICAgICBsb2dpbkNvbmZpZyA9IGNvbmZpZy5sb2dpbkNvbmZpZztcbiAgICAgICAgdGhpcy5sYXN0TG9nZ2VkVXNlcklkID0gY29uZmlnLnVzZXJJbmZvICYmIGNvbmZpZy51c2VySW5mby51c2VySWQ7XG4gICAgICAgIC8vIGlmIHVzZXIgZm91bmQsIDQwMSB3YXMgdGhyb3duIGFmdGVyIHNlc3Npb24gdGltZVxuICAgICAgICBpZiAoY29uZmlnLnVzZXJJbmZvICYmIGNvbmZpZy51c2VySW5mby51c2VyTmFtZSkge1xuICAgICAgICAgICAgY29uZmlnLmF1dGhlbnRpY2F0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHNlc3Npb25UaW1lb3V0Q29uZmlnID0gbG9naW5Db25maWcuc2Vzc2lvblRpbWVvdXQgfHwgeyd0eXBlJzogTE9HSU5fTUVUSE9ELkRJQUxPR307XG4gICAgICAgICAgICBzZXNzaW9uVGltZW91dE1ldGhvZCA9IHNlc3Npb25UaW1lb3V0Q29uZmlnLnR5cGUudG9VcHBlckNhc2UoKTtcbiAgICAgICAgICAgIHN3aXRjaCAoc2Vzc2lvblRpbWVvdXRNZXRob2QpIHtcbiAgICAgICAgICAgICAgICBjYXNlIExPR0lOX01FVEhPRC5ESUFMT0c6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0xvZ2luRGlhbG9nKCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgTE9HSU5fTUVUSE9ELlBBR0U6XG4gICAgICAgICAgICAgICAgICAgIGlmICghcGFnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSA9IHRoaXMuJHNlY3VyaXR5LmdldEN1cnJlbnRSb3V0ZVBhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBxdWVyeVBhcmFtc09ialsncmVkaXJlY3RUbyddID0gcGFnZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQWRkaW5nIHF1ZXJ5IHBhcmFtcyhwYWdlIHBhcmFtcyBvZiBwYWdlIGJlaW5nIHJlZGlyZWN0ZWQgdG8pIHRvIHRoZSBVUkwuXG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zT2JqID0gbWVyZ2UocXVlcnlQYXJhbXNPYmosIHRoaXMuJHNlY3VyaXR5LmdldFJlZGlyZWN0ZWRSb3V0ZVF1ZXJ5UGFyYW1zKCkpO1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVkaXJlY3QgcGFnZSBzaG91bGQgbm90IGJlIHNhbWUgYXMgc2Vzc2lvbiB0aW1lb3V0IGxvZ2luIHBhZ2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKCBwYWdlICE9PSBzZXNzaW9uVGltZW91dENvbmZpZy5wYWdlTmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLm5hdmlnYXRlKFtzZXNzaW9uVGltZW91dENvbmZpZy5wYWdlTmFtZV0sIHtxdWVyeVBhcmFtczogcXVlcnlQYXJhbXNPYmp9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIExPR0lOX01FVEhPRC5TU086XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlU1NPTG9naW4oY29uZmlnLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNldExhbmRpbmdQYWdlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBpZiBubyB1c2VyIGZvdW5kLCA0MDEgd2FzIHRocm93biBmb3IgZmlyc3QgdGltZSBsb2dpblxuICAgICAgICAgICAgbG9naW5NZXRob2QgPSBsb2dpbkNvbmZpZy50eXBlLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgICAgICBzd2l0Y2ggKGxvZ2luTWV0aG9kKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuRElBTE9HOlxuICAgICAgICAgICAgICAgICAgICAvLyBUaHJvdWdoIGxvZ2luRGlhbG9nLCB1c2VyIHdpbGwgcmVtYWluIGluIHRoZSBjdXJyZW50IHN0YXRlIGFuZCBmYWlsZWQgY2FsbHMgd2lsbCBiZSBleGVjdXRlZCBwb3N0IGxvZ2luIHRocm91Z2ggTG9naW5WYXJpYWJsZVNlcnZpY2UuXG4gICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IHVzZXIgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHJlc3BlY3RpdmUgbGFuZGluZyBwYWdlIG9ubHkgaWYgZGlhbG9nIGlzIG9wZW5lZCBtYW51YWxseShub3QgdGhyb3VnaCBhIGZhaWxlZCA0MDEgY2FsbCkuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9SZWRpcmVjdCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93TG9naW5EaWFsb2coKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuUEFHRTpcbiAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90IHByb3ZpZGUgcmVkaXJlY3RUbyBwYWdlIGlmIGZldGNoaW5nIEhPTUUgcGFnZSByZXN1bHRlZCA0MDFcbiAgICAgICAgICAgICAgICAgICAgLy8gb24gYXBwIGxvYWQsIGJ5IGRlZmF1bHQgSG9tZSBwYWdlIGlzIGxvYWRlZFxuICAgICAgICAgICAgICAgICAgICBwYWdlID0gdGhpcy4kc2VjdXJpdHkuZ2V0UmVkaXJlY3RQYWdlKGNvbmZpZywgcGFnZSk7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zT2JqWydyZWRpcmVjdFRvJ10gPSBwYWdlO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBleHRyYVF1ZXJ5UGFyYW1zID0gKG9wdGlvbnMgJiYgb3B0aW9ucy5xdWVyeVBhcmFtcykgfHwgdGhpcy4kc2VjdXJpdHkuZ2V0UmVkaXJlY3RlZFJvdXRlUXVlcnlQYXJhbXMoKTtcbiAgICAgICAgICAgICAgICAgICAgcXVlcnlQYXJhbXNPYmogPSBtZXJnZShxdWVyeVBhcmFtc09iaiwgZXh0cmFRdWVyeVBhcmFtcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHJvdXRlci5uYXZpZ2F0ZShbbG9naW5Db25maWcucGFnZU5hbWVdLCB7cXVlcnlQYXJhbXM6IHF1ZXJ5UGFyYW1zT2JqfSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJGFwcC5sYW5kaW5nUGFnZU5hbWUgPSBsb2dpbkNvbmZpZy5wYWdlTmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBMT0dJTl9NRVRIT0QuU1NPOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNTT0xvZ2luKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyBkYXRhIGRlcGVuZGVudCBvbiBsb2dnZWQgaW4gdXNlclxuICAgICAqIFJlbG9hZHMgc2VjdXJpdHkgY29uZmlnLCBtZXRhZGF0YVxuICAgICAqIFVwZGF0ZXMgdGhlIGxvZ2dlZEluVXNlclZhcmlhYmxlXG4gICAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAgICovXG4gICAgcmVsb2FkQXBwRGF0YSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZFNlY3VyaXR5Q29uZmlnKHRydWUpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9hZE1ldGFkYXRhKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMudXBkYXRlTG9nZ2VkSW5Vc2VyVmFyaWFibGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBub1JlZGlyZWN0KHZhbHVlPzogYm9vbGVhbikge1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQodmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fbm9SZWRpcmVjdDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX25vUmVkaXJlY3QgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX25vUmVkaXJlY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogaW52b2tlcyBzZXNzaW9uIGZhaWx1cmUgcmVxdWVzdHNcbiAgICAgKi9cbiAgICBleGVjdXRlU2Vzc2lvbkZhaWx1cmVSZXF1ZXN0cygpIHtcbiAgICAgICAgdGhpcy4kaHR0cC5leGVjdXRlU2Vzc2lvbkZhaWx1cmVSZXF1ZXN0cygpO1xuICAgIH1cblxuICAgIHB1c2hUb1Nlc3Npb25GYWlsdXJlUmVxdWVzdHMoY2FsbGJhY2spIHtcbiAgICAgICAgdGhpcy4kaHR0cC5wdXNoVG9TZXNzaW9uRmFpbHVyZVF1ZXVlKGNhbGxiYWNrKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RGVwbG95ZWRVUkwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuZGVwbG95ZWRVcmwgPyB0aGlzLiRhcHAuZGVwbG95ZWRVcmwgOiAkcm9vdFNjb3BlLnByb2plY3QuZGVwbG95ZWRVcmw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRmV0Y2hlcyB0aGUgY3VzdG9tdXJsc2NoZW1lIGZvciBhIG1vYmlsZSBhcHBcbiAgICAgKiB3aGljaCBpcyB1c2VkIGZvciByZWRpcmVjdGlvbiBiYWNrIHRvIHRoZSBhcHAgZnJvbSBicm93c2VyIGluIGltcGxpY2l0IG9BdXRoIGZsb3dcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDdXN0b21VcmxTY2hlbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuY3VzdG9tVXJsU2NoZW1lO1xuICAgIH1cblxuICAgIG5vdGlmeShldmVudE5hbWUsIGRhdGEpIHtcbiAgICAgICAgdGhpcy4kYXBwLm5vdGlmeShldmVudE5hbWUsIGRhdGEpO1xuICAgIH1cblxuICAgIHN1YnNjcmliZShldmVudE5hbWUsIGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5zdWJzY3JpYmUoZXZlbnROYW1lLCBkYXRhKTtcbiAgICB9XG5cbiAgICBnZXRBY3RpdmVQYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kYXBwLmFjdGl2ZVBhZ2U7XG4gICAgfVxuXG4gICAgZ2V0QXBwTG9jYWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kYXBwLmFwcExvY2FsZTtcbiAgICB9XG5cbiAgICBnZXRTZWxlY3RlZExvY2FsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGkxOG4uZ2V0U2VsZWN0ZWRMb2NhbGUoKTtcbiAgICB9XG5cbiAgICBub3RpZnlBcHAodGVtcGxhdGUsIHR5cGUsIHRpdGxlPykge1xuICAgICAgICB0aGlzLiRhcHAubm90aWZ5QXBwKHRlbXBsYXRlLCB0eXBlLCB0aXRsZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcnMgdGhlIG9uQmVmb3JlU2VydmljZSBtZXRob2QgZGVmaW5lZCBpbiBhcHAuanMgb2YgdGhlIGFwcFxuICAgICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1zXG4gICAgICovXG4gICAgYXBwT25CZWZvcmVTZXJ2aWNlQ2FsbChyZXF1ZXN0UGFyYW1zOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRyaWdnZXJGbih0aGlzLiRhcHAub25CZWZvcmVTZXJ2aWNlQ2FsbCwgcmVxdWVzdFBhcmFtcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcnMgdGhlIG9uU2VydmljZVN1Y2Nlc3MgbWV0aG9kIGRlZmluZWQgaW4gYXBwLmpzIG9mIHRoZSBhcHBcbiAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAqIEBwYXJhbSB4aHJPYmpcbiAgICAgKi9cbiAgICBhcHBPblNlcnZpY2VTdWNjZXNzKGRhdGE6IGFueSwgeGhyT2JqOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRyaWdnZXJGbih0aGlzLiRhcHAub25TZXJ2aWNlU3VjY2VzcywgZGF0YSwgeGhyT2JqKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyB0aGUgb25TZXJ2aWNlRXJyb3IgbWV0aG9kIGRlZmluZWQgaW4gYXBwLmpzIG9mIHRoZSBhcHBcbiAgICAgKiBAcGFyYW0gZGF0YVxuICAgICAqIEBwYXJhbSB4aHJPYlxuICAgICAqL1xuICAgIGFwcE9uU2VydmljZUVycm9yKGRhdGE6IGFueSwgeGhyT2I/OiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIHRyaWdnZXJGbih0aGlzLiRhcHAub25TZXJ2aWNlRXJyb3IsIGRhdGEsIHhock9iKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyB0aGUgYXBwVmFyaWFibGVzUmVhZHkgbWV0aG9kIGRlZmluZWQgaW4gYXBwLmpzIG9mIHRoZSBhcHBcbiAgICAgKi9cbiAgICBhcHBWYXJpYWJsZXNSZWFkeSgpIHtcbiAgICAgICAgdHJpZ2dlckZuKHRoaXMuJGFwcC5vbkFwcFZhcmlhYmxlc1JlYWR5KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUcmlnZ2VycyB0aGUgb25CZWZvcmVBcHBSZWFkeSBtZXRob2QgZGVmaW5lZCBpbiBhcHAuanMgb2YgdGhlIGFwcFxuICAgICAqL1xuICAgIGJlZm9yZUFwcFJlYWR5KCkge1xuICAgICAgICB0cmlnZ2VyRm4odGhpcy4kYXBwLm9uQmVmb3JlQXBwUmVhZHkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHBpcGUgYmFzZWQgb24gdGhlIGlucHV0XG4gICAgICovXG4gICAgZ2V0UGlwZShwaXBlKSB7XG4gICAgICAgIGlmIChwaXBlID09PSAnZGF0ZScpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLiRkYXRlUGlwZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2V0TGFuZGluZ1BhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzZWN1cml0eS5nZXRQYWdlQnlMb2dnZWRJblVzZXIoKS50aGVuKHAgPT4gdGhpcy4kYXBwLmxhbmRpbmdQYWdlTmFtZSA9IDxzdHJpbmc+IHApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybiB0cnVlIGlmIHByZWZhYiB0eXBlIGFwcFxuICAgICAqIEByZXR1cm5zIHtib29sZWFufVxuICAgICAqL1xuICAgIGlzUHJlZmFiVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGFwcC5pc1ByZWZhYlR5cGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJuIHRydWUgaWYgdGVtcGxhdGUgYnVuZGxlIHR5cGUgYXBwXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAgICovXG4gICAgaXNUZW1wbGF0ZUJ1bmRsZVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRhcHAuaXNUZW1wbGF0ZUJ1bmRsZVR5cGU7XG4gICAgfVxuXG4gICAgcG9zdE1lc3NhZ2UoY29udGVudCkge1xuICAgICAgICB3aW5kb3cudG9wLnBvc3RNZXNzYWdlKGNvbnRlbnQsICcqJyk7XG4gICAgfVxuXG4gICAgc2hvd1RlbXBsYXRlKGlkeCkge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMudGVtcGxhdGVzW2lkeF07XG4gICAgICAgIC8vIHNjb3BlLmFjdGl2ZVRlbXBsYXRlSW5kZXggPSBpZHg7XG4gICAgICAgIHRoaXMuJHJvdXRlci5uYXZpZ2F0ZShbdGVtcGxhdGUuaWRdKTtcbiAgICB9XG4gICAgcG9zdFRlbXBsYXRlQnVuZGxlSW5mbygpIHtcblxuICAgICAgICB3aW5kb3cub25tZXNzYWdlID0gKGV2dCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbXNnRGF0YSA9IGV2dC5kYXRhO1xuXG4gICAgICAgICAgICBpZiAoIWlzT2JqZWN0KG1zZ0RhdGEpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBrZXkgPSBtc2dEYXRhLmtleTtcblxuICAgICAgICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgICAgICAgICBjYXNlIFBPU1RfTUVTU0FHRVMuSElERV9URU1QTEFURVNfU0hPV19DQVNFOlxuICAgICAgICAgICAgICAgICAgICAvLyBzY29wZS5oaWRlU2hvd0Nhc2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFBPU1RfTUVTU0FHRVMuU0VMRUNUX1RFTVBMQVRFOlxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd1RlbXBsYXRlKG1zZ0RhdGEudGVtcGxhdGVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb3N0TWVzc2FnZSh7a2V5OiBQT1NUX01FU1NBR0VTLk9OX0xPQUR9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZldGNoQ29udGVudCgnanNvbicsICcuL2NvbmZpZy5qc29uJywgdHJ1ZSwgcmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSBbXTtcbiAgICAgICAgICAgIGlmICghcmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnRlbXBsYXRlcyA9IHJlc3BvbnNlLnRlbXBsYXRlcztcbiAgICAgICAgICAgICAgICB0aGlzLnBvc3RNZXNzYWdlKHsna2V5JzogUE9TVF9NRVNTQUdFUy5URU1QTEFURUJVTkRMRV9DT05GSUcsICdjb25maWcnOiByZXNwb25zZX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwb3N0QXBwVHlwZUluZm8oKSB7XG4gICAgICAgIGlmICh0aGlzLmlzVGVtcGxhdGVCdW5kbGVUeXBlKCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnBvc3RUZW1wbGF0ZUJ1bmRsZUluZm8oKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Compiler, Injectable, Injector, ChangeDetectorRef, KeyValueDiffers } from '@angular/core';
|
|
2
2
|
import { AsyncPipe, UpperCasePipe, LowerCasePipe, JsonPipe, SlicePipe, DecimalPipe, PercentPipe, TitleCasePipe, CurrencyPipe, DatePipe, I18nPluralPipe, I18nSelectPipe, KeyValuePipe, NgLocalization } from '@angular/common';
|
|
3
|
-
import { SuffixPipe, ToDatePipe, FileIconClassPipe, FileExtensionFromMimePipe, FilterPipe, FileSizePipe, ToNumberPipe, ToCurrencyPipe, PrefixPipe, TimeFromNowPipe, NumberToStringPipe, StateClassPipe, StringToNumberPipe, CustomPipe, TrustAsPipe, SanitizePipe } from '@wm/components/base';
|
|
3
|
+
import { SuffixPipe, ToDatePipe, FileIconClassPipe, FileExtensionFromMimePipe, FilterPipe, FileSizePipe, ToNumberPipe, ToCurrencyPipe, PrefixPipe, TimeFromNowPipe, NumberToStringPipe, StateClassPipe, StringToNumberPipe, CustomPipe, TrustAsPipe, SanitizePipe, TemplateReplacePipe } from '@wm/components/base';
|
|
4
4
|
import { getSessionStorageItem, CustomPipeManager, AbstractI18nService } from '@wm/core';
|
|
5
5
|
import { DomSanitizer } from "@angular/platform-browser";
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
@@ -53,7 +53,8 @@ export class PipeProvider {
|
|
|
53
53
|
this.preparePipeMeta(StringToNumberPipe, 'stringToNumber', true),
|
|
54
54
|
this.preparePipeMeta(CustomPipe, 'custom', true, [this.injector.get(CustomPipeManager)]),
|
|
55
55
|
this.preparePipeMeta(TrustAsPipe, 'trustAs', true, [this.domSanitizer]),
|
|
56
|
-
this.preparePipeMeta(SanitizePipe, 'sanitize', true, [this.domSanitizer])
|
|
56
|
+
this.preparePipeMeta(SanitizePipe, 'sanitize', true, [this.domSanitizer]),
|
|
57
|
+
this.preparePipeMeta(TemplateReplacePipe, 'templateReplace', true),
|
|
57
58
|
];
|
|
58
59
|
}
|
|
59
60
|
unknownPipe(name) {
|
|
@@ -120,4 +121,4 @@ export class PipeProvider {
|
|
|
120
121
|
providedIn: 'root'
|
|
121
122
|
}]
|
|
122
123
|
}], () => [{ type: i0.Compiler }, { type: i0.Injector }, { type: i1.DomSanitizer }, { type: i2.AbstractI18nService }], null); })();
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9waXBlLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFrQixlQUFlLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFDSCxTQUFTLEVBQ1QsYUFBYSxFQUNiLGFBQWEsRUFDYixRQUFRLEVBQ1IsU0FBUyxFQUNULFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLFlBQVksRUFDWixRQUFRLEVBQ1IsY0FBYyxFQUNkLGNBQWMsRUFDZCxZQUFZLEVBQ1osY0FBYyxFQUNqQixNQUFNLGlCQUFpQixDQUFBO0FBQ3hCLE9BQU8sRUFDSCxVQUFVLEVBQ1YsVUFBVSxFQUNWLGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osY0FBYyxFQUNkLFVBQVUsRUFDVixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ2YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDekYsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLDJCQUEyQixDQUFDOzs7O0FBS3ZELE1BQU0sT0FBTyxZQUFZO0lBZ0JyQixXQUFXO1FBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNiLDJCQUEyQjtZQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZ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LElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxFQUN6QyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1AsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDO1FBRUQsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNmLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNyQixDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNoQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25CLENBQUM7WUFDRCxPQUFPLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDNUIsQ0FBQztJQUNMLENBQUM7NkdBekhRLFlBQVk7dUVBQVosWUFBWSxXQUFaLFlBQVksbUJBRlQsTUFBTTs7aUZBRVQsWUFBWTtjQUh4QixVQUFVO2VBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21waWxlciwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIENoYW5nZURldGVjdG9yUmVmLCBJbmplY3Rpb25Ub2tlbiwgS2V5VmFsdWVEaWZmZXJzLCBQaXBlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQXN5bmNQaXBlLFxuICAgIFVwcGVyQ2FzZVBpcGUsXG4gICAgTG93ZXJDYXNlUGlwZSxcbiAgICBKc29uUGlwZSxcbiAgICBTbGljZVBpcGUsXG4gICAgRGVjaW1hbFBpcGUsXG4gICAgUGVyY2VudFBpcGUsXG4gICAgVGl0bGVDYXNlUGlwZSxcbiAgICBDdXJyZW5jeVBpcGUsXG4gICAgRGF0ZVBpcGUsXG4gICAgSTE4blBsdXJhbFBpcGUsXG4gICAgSTE4blNlbGVjdFBpcGUsXG4gICAgS2V5VmFsdWVQaXBlLFxuICAgIE5nTG9jYWxpemF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7XG4gICAgU3VmZml4UGlwZSxcbiAgICBUb0RhdGVQaXBlLFxuICAgIEZpbGVJY29uQ2xhc3NQaXBlLFxuICAgIEZpbGVFeHRlbnNpb25Gcm9tTWltZVBpcGUsXG4gICAgRmlsdGVyUGlwZSxcbiAgICBGaWxlU2l6ZVBpcGUsXG4gICAgVG9OdW1iZXJQaXBlLFxuICAgIFRvQ3VycmVuY3lQaXBlLFxuICAgIFByZWZpeFBpcGUsXG4gICAgVGltZUZyb21Ob3dQaXBlLFxuICAgIE51bWJlclRvU3RyaW5nUGlwZSxcbiAgICBTdGF0ZUNsYXNzUGlwZSxcbiAgICBTdHJpbmdUb051bWJlclBpcGUsXG4gICAgQ3VzdG9tUGlwZSxcbiAgICBUcnVzdEFzUGlwZSxcbiAgICBTYW5pdGl6ZVBpcGVcbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0sIEN1c3RvbVBpcGVNYW5hZ2VyLCBBYnN0cmFjdEkxOG5TZXJ2aWNlIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXJ9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGlwZVByb3ZpZGVyIHtcbiAgICBfcGlwZU1ldGE7XG4gICAgX2xvY2FsZSA9IGdldFNlc3Npb25TdG9yYWdlSXRlbSgnc2VsZWN0ZWRMb2NhbGUnKSB8fCAnZW4nO1xuICAgIGZvcm1hdHNCeUxvY2FsZTtcbiAgICBwcmVwYXJlUGlwZU1ldGEgPSAoXG4gICAgICAgIHJlZmVyZW5jZTogUGlwZSxcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBwdXJlOiBib29sZWFuLFxuICAgICAgICBkaURlcHMgPSBbXVxuICAgICkgPT4gKHtcbiAgICAgICAgdHlwZTogeyByZWZlcmVuY2UsIGRpRGVwcyB9LFxuICAgICAgICBuYW1lLFxuICAgICAgICBwdXJlXG4gICAgfSk7XG4gICAgX3BpcGVEYXRhID0gW107XG5cbiAgICBzZXRQaXBlRGF0YSgpIHtcbiAgICAgICAgdGhpcy5fcGlwZURhdGEgPSBbXG4gICAgICAgICAgICAvLyBUT0RPIHwgTkVFRCBUTyBCRSBURVNURURcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKEFzeW5jUGlwZSwgJ2FzeW5jJywgZmFsc2UsIFtDaGFuZ2VEZXRlY3RvclJlZl0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoU2xpY2VQaXBlLCAnc2xpY2UnLCBmYWxzZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShQZXJjZW50UGlwZSwgJ3BlcmNlbnQnLCB0cnVlLCBbdGhpcy5fbG9jYWxlXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShJMThuUGx1cmFsUGlwZSwgJ2kxOG5QbHVyYWwnLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgTmdMb2NhbGl6YXRpb25cbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoSTE4blNlbGVjdFBpcGUsICdpMThuU2VsZWN0JywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShLZXlWYWx1ZVBpcGUsICdrZXl2YWx1ZScsIGZhbHNlLCBbXG4gICAgICAgICAgICAgICAgS2V5VmFsdWVEaWZmZXJzXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKEZpbGVJY29uQ2xhc3NQaXBlLCAnZmlsZUljb25DbGFzcycsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoXG4gICAgICAgICAgICAgICAgRmlsZUV4dGVuc2lvbkZyb21NaW1lUGlwZSxcbiAgICAgICAgICAgICAgICAnZmlsZUV4dGVuc2lvbkZyb21NaW1lJyxcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoU3RhdGVDbGFzc1BpcGUsICdzdGF0ZUNsYXNzJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShGaWxlU2l6ZVBpcGUsICdmaWxlc2l6ZScsIHRydWUpLFxuICAgICAgICAgICAgLy8gVEVTVEVEXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShGaWx0ZXJQaXBlLCAnZmlsdGVyJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShVcHBlckNhc2VQaXBlLCAndXBwZXJjYXNlJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShMb3dlckNhc2VQaXBlLCAnbG93ZXJjYXNlJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShKc29uUGlwZSwgJ2pzb24nLCBmYWxzZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShEZWNpbWFsUGlwZSwgJ251bWJlcicsIHRydWUsIFt0aGlzLl9sb2NhbGVdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRpdGxlQ2FzZVBpcGUsICd0aXRsZWNhc2UnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKEN1cnJlbmN5UGlwZSwgJ2N1cnJlbmN5JywgdHJ1ZSwgW3RoaXMuX2xvY2FsZV0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRGF0ZVBpcGUsICdkYXRlJywgdHJ1ZSwgW3RoaXMuX2xvY2FsZV0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVG9EYXRlUGlwZSwgJ3RvRGF0ZScsIHRydWUsIFtcbiAgICAgICAgICAgICAgICBuZXcgRGF0ZVBpcGUodGhpcy5fbG9jYWxlKSwgdW5kZWZpbmVkLCB0aGlzLmluamVjdG9yLmdldChDdXN0b21QaXBlTWFuYWdlcilcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVG9OdW1iZXJQaXBlLCAndG9OdW1iZXInLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgbmV3IERlY2ltYWxQaXBlKHRoaXMuX2xvY2FsZSksXG4gICAgICAgICAgICAgICAgdGhpcy5pMThzZXJ2aWNlXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRvQ3VycmVuY3lQaXBlLCAndG9DdXJyZW5jeScsIHRydWUsIFtcbiAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbFBpcGUodGhpcy5fbG9jYWxlKSxcbiAgICAgICAgICAgICAgICB0aGlzLmkxOHNlcnZpY2VcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoUHJlZml4UGlwZSwgJ3ByZWZpeCcsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoU3VmZml4UGlwZSwgJ3N1ZmZpeCcsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVGltZUZyb21Ob3dQaXBlLCAndGltZUZyb21Ob3cnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKE51bWJlclRvU3RyaW5nUGlwZSwgJ251bWJlclRvU3RyaW5nJywgdHJ1ZSwgW1xuICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsUGlwZSh0aGlzLl9sb2NhbGUpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFN0cmluZ1RvTnVtYmVyUGlwZSwgJ3N0cmluZ1RvTnVtYmVyJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShDdXN0b21QaXBlLCAnY3VzdG9tJywgdHJ1ZSwgW3RoaXMuaW5qZWN0b3IuZ2V0KEN1c3RvbVBpcGVNYW5hZ2VyKV0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVHJ1c3RBc1BpcGUsICd0cnVzdEFzJywgdHJ1ZSwgW3RoaXMuZG9tU2FuaXRpemVyXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShTYW5pdGl6ZVBpcGUsICdzYW5pdGl6ZScsIHRydWUsIFt0aGlzLmRvbVNhbml0aXplcl0pXG4gICAgICAgIF07XG4gICAgfVxuXG5cbiAgICB1bmtub3duUGlwZShuYW1lKSB7XG4gICAgICAgIHRocm93IEVycm9yKGBUaGUgcGlwZSAnJHtuYW1lfScgY291bGQgbm90IGJlIGZvdW5kYCk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjb21waWxlcjogQ29tcGlsZXIsIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIGRvbVNhbml0aXplcjpEb21TYW5pdGl6ZXIsIHByaXZhdGUgaTE4c2VydmljZTogQWJzdHJhY3RJMThuU2VydmljZSkge1xuICAgICAgICB0aGlzLl9waXBlTWV0YSA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5zZXRQaXBlRGF0YSgpO1xuICAgICAgICB0aGlzLl9waXBlRGF0YS5mb3JFYWNoKHYgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcGlwZU1ldGEuc2V0KHYubmFtZSwgdik7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmZvcm1hdHNCeUxvY2FsZSA9IHRoaXMuaTE4c2VydmljZT8gdGhpcy5pMThzZXJ2aWNlLmdldHdpZGdldExvY2FsZSgpIDoge307XG4gICAgfVxuXG4gICAgbWV0YShuYW1lKSB7XG4gICAgICAgIGNvbnN0IG1ldGEgPSB0aGlzLl9waXBlTWV0YS5nZXQobmFtZSk7XG4gICAgICAgIGlmICghbWV0YSkge1xuICAgICAgICAgICAgdGhpcy51bmtub3duUGlwZShuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWV0YTtcbiAgICB9XG5cbiAgICBnZXRQaXBlTmFtZVZzSXNQdXJlTWFwKCkge1xuICAgICAgICBjb25zdCBfbWFwID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLl9waXBlTWV0YS5mb3JFYWNoKCh2LCBrKSA9PiB7XG4gICAgICAgICAgICBfbWFwLnNldChrLCB2LnB1cmUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIF9tYXA7XG4gICAgfVxuXG4gICAgcmVzb2x2ZURlcChkZXApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5qZWN0b3IuZ2V0KGRlcC50b2tlbi5pZGVudGlmaWVyLnJlZmVyZW5jZSk7XG4gICAgfVxuXG4gICAgZ2V0SW5zdGFuY2UobmFtZSkge1xuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICB0eXBlOiB7IHJlZmVyZW5jZTogcmVmLCBkaURlcHM6IGRlcHMgfVxuICAgICAgICB9ID0gdGhpcy5tZXRhKG5hbWUpO1xuICAgICAgICBpZiAoIXJlZikge1xuICAgICAgICAgICAgdGhpcy51bmtub3duUGlwZShuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZGVwcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgcmVmKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBhcmdzID0gW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBkZXBzKSB7XG4gICAgICAgICAgICAgICAgYXJncy5wdXNoKGRlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3IHJlZiguLi5hcmdzKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZS1wcm92aWRlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvcnVudGltZS1iYXNlL3NyYy9zZXJ2aWNlcy9waXBlLXByb3ZpZGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFrQixlQUFlLEVBQWdCLE1BQU0sZUFBZSxDQUFDO0FBQ2pJLE9BQU8sRUFDSCxTQUFTLEVBQ1QsYUFBYSxFQUNiLGFBQWEsRUFDYixRQUFRLEVBQ1IsU0FBUyxFQUNULFdBQVcsRUFDWCxXQUFXLEVBQ1gsYUFBYSxFQUNiLFlBQVksRUFDWixRQUFRLEVBQ1IsY0FBYyxFQUNkLGNBQWMsRUFDZCxZQUFZLEVBQ1osY0FBYyxFQUNqQixNQUFNLGlCQUFpQixDQUFBO0FBQ3hCLE9BQU8sRUFDSCxVQUFVLEVBQ1YsVUFBVSxFQUNWLGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osY0FBYyxFQUNkLFVBQVUsRUFDVixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGNBQWMsRUFDZCxrQkFBa0IsRUFDbEIsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osbUJBQW1CLEVBQ3RCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGlCQUFpQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3pGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7OztBQUt2RCxNQUFNLE9BQU8sWUFBWTtJQWdCckIsV0FBVztRQUNQLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDYiwyQkFBMkI7WUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLGlCQUFp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QUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxXQUFXLENBQUMsSUFBSTtRQUNaLE1BQU0sRUFDRixJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsRUFDekMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZixPQUFPLElBQUksR0FBRyxFQUFFLENBQUM7UUFDckIsQ0FBQzthQUFNLENBQUM7WUFDSixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7WUFDaEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQixDQUFDO1lBQ0QsT0FBTyxJQUFJLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzVCLENBQUM7SUFDTCxDQUFDOzZHQTFIUSxZQUFZO3VFQUFaLFlBQVksV0FBWixZQUFZLG1CQUZULE1BQU07O2lGQUVULFlBQVk7Y0FIeEIsVUFBVTtlQUFDO2dCQUNSLFVBQVUsRUFBRSxNQUFNO2FBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcGlsZXIsIEluamVjdGFibGUsIEluamVjdG9yLCBDaGFuZ2VEZXRlY3RvclJlZiwgSW5qZWN0aW9uVG9rZW4sIEtleVZhbHVlRGlmZmVycywgUGlwZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICAgIEFzeW5jUGlwZSxcbiAgICBVcHBlckNhc2VQaXBlLFxuICAgIExvd2VyQ2FzZVBpcGUsXG4gICAgSnNvblBpcGUsXG4gICAgU2xpY2VQaXBlLFxuICAgIERlY2ltYWxQaXBlLFxuICAgIFBlcmNlbnRQaXBlLFxuICAgIFRpdGxlQ2FzZVBpcGUsXG4gICAgQ3VycmVuY3lQaXBlLFxuICAgIERhdGVQaXBlLFxuICAgIEkxOG5QbHVyYWxQaXBlLFxuICAgIEkxOG5TZWxlY3RQaXBlLFxuICAgIEtleVZhbHVlUGlwZSxcbiAgICBOZ0xvY2FsaXphdGlvblxufSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQge1xuICAgIFN1ZmZpeFBpcGUsXG4gICAgVG9EYXRlUGlwZSxcbiAgICBGaWxlSWNvbkNsYXNzUGlwZSxcbiAgICBGaWxlRXh0ZW5zaW9uRnJvbU1pbWVQaXBlLFxuICAgIEZpbHRlclBpcGUsXG4gICAgRmlsZVNpemVQaXBlLFxuICAgIFRvTnVtYmVyUGlwZSxcbiAgICBUb0N1cnJlbmN5UGlwZSxcbiAgICBQcmVmaXhQaXBlLFxuICAgIFRpbWVGcm9tTm93UGlwZSxcbiAgICBOdW1iZXJUb1N0cmluZ1BpcGUsXG4gICAgU3RhdGVDbGFzc1BpcGUsXG4gICAgU3RyaW5nVG9OdW1iZXJQaXBlLFxuICAgIEN1c3RvbVBpcGUsXG4gICAgVHJ1c3RBc1BpcGUsXG4gICAgU2FuaXRpemVQaXBlLFxuICAgIFRlbXBsYXRlUmVwbGFjZVBpcGVcbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5pbXBvcnQgeyBnZXRTZXNzaW9uU3RvcmFnZUl0ZW0sIEN1c3RvbVBpcGVNYW5hZ2VyLCBBYnN0cmFjdEkxOG5TZXJ2aWNlIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXJ9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgUGlwZVByb3ZpZGVyIHtcbiAgICBfcGlwZU1ldGE7XG4gICAgX2xvY2FsZSA9IGdldFNlc3Npb25TdG9yYWdlSXRlbSgnc2VsZWN0ZWRMb2NhbGUnKSB8fCAnZW4nO1xuICAgIGZvcm1hdHNCeUxvY2FsZTtcbiAgICBwcmVwYXJlUGlwZU1ldGEgPSAoXG4gICAgICAgIHJlZmVyZW5jZTogUGlwZSxcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBwdXJlOiBib29sZWFuLFxuICAgICAgICBkaURlcHMgPSBbXVxuICAgICkgPT4gKHtcbiAgICAgICAgdHlwZTogeyByZWZlcmVuY2UsIGRpRGVwcyB9LFxuICAgICAgICBuYW1lLFxuICAgICAgICBwdXJlXG4gICAgfSk7XG4gICAgX3BpcGVEYXRhID0gW107XG5cbiAgICBzZXRQaXBlRGF0YSgpIHtcbiAgICAgICAgdGhpcy5fcGlwZURhdGEgPSBbXG4gICAgICAgICAgICAvLyBUT0RPIHwgTkVFRCBUTyBCRSBURVNURURcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKEFzeW5jUGlwZSwgJ2FzeW5jJywgZmFsc2UsIFtDaGFuZ2VEZXRlY3RvclJlZl0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoU2xpY2VQaXBlLCAnc2xpY2UnLCBmYWxzZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShQZXJjZW50UGlwZSwgJ3BlcmNlbnQnLCB0cnVlLCBbdGhpcy5fbG9jYWxlXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShJMThuUGx1cmFsUGlwZSwgJ2kxOG5QbHVyYWwnLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgTmdMb2NhbGl6YXRpb25cbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoSTE4blNlbGVjdFBpcGUsICdpMThuU2VsZWN0JywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShLZXlWYWx1ZVBpcGUsICdrZXl2YWx1ZScsIGZhbHNlLCBbXG4gICAgICAgICAgICAgICAgS2V5VmFsdWVEaWZmZXJzXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKEZpbGVJY29uQ2xhc3NQaXBlLCAnZmlsZUljb25DbGFzcycsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoXG4gICAgICAgICAgICAgICAgRmlsZUV4dGVuc2lvbkZyb21NaW1lUGlwZSxcbiAgICAgICAgICAgICAgICAnZmlsZUV4dGVuc2lvbkZyb21NaW1lJyxcbiAgICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoU3RhdGVDbGFzc1BpcGUsICdzdGF0ZUNsYXNzJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShGaWxlU2l6ZVBpcGUsICdmaWxlc2l6ZScsIHRydWUpLFxuICAgICAgICAgICAgLy8gVEVTVEVEXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShGaWx0ZXJQaXBlLCAnZmlsdGVyJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShVcHBlckNhc2VQaXBlLCAndXBwZXJjYXNlJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShMb3dlckNhc2VQaXBlLCAnbG93ZXJjYXNlJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShKc29uUGlwZSwgJ2pzb24nLCBmYWxzZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShEZWNpbWFsUGlwZSwgJ251bWJlcicsIHRydWUsIFt0aGlzLl9sb2NhbGVdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRpdGxlQ2FzZVBpcGUsICd0aXRsZWNhc2UnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKEN1cnJlbmN5UGlwZSwgJ2N1cnJlbmN5JywgdHJ1ZSwgW3RoaXMuX2xvY2FsZV0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoRGF0ZVBpcGUsICdkYXRlJywgdHJ1ZSwgW3RoaXMuX2xvY2FsZV0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVG9EYXRlUGlwZSwgJ3RvRGF0ZScsIHRydWUsIFtcbiAgICAgICAgICAgICAgICBuZXcgRGF0ZVBpcGUodGhpcy5fbG9jYWxlKSwgdW5kZWZpbmVkLCB0aGlzLmluamVjdG9yLmdldChDdXN0b21QaXBlTWFuYWdlcilcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVG9OdW1iZXJQaXBlLCAndG9OdW1iZXInLCB0cnVlLCBbXG4gICAgICAgICAgICAgICAgbmV3IERlY2ltYWxQaXBlKHRoaXMuX2xvY2FsZSksXG4gICAgICAgICAgICAgICAgdGhpcy5pMThzZXJ2aWNlXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFRvQ3VycmVuY3lQaXBlLCAndG9DdXJyZW5jeScsIHRydWUsIFtcbiAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbFBpcGUodGhpcy5fbG9jYWxlKSxcbiAgICAgICAgICAgICAgICB0aGlzLmkxOHNlcnZpY2VcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoUHJlZml4UGlwZSwgJ3ByZWZpeCcsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoU3VmZml4UGlwZSwgJ3N1ZmZpeCcsIHRydWUpLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVGltZUZyb21Ob3dQaXBlLCAndGltZUZyb21Ob3cnLCB0cnVlKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKE51bWJlclRvU3RyaW5nUGlwZSwgJ251bWJlclRvU3RyaW5nJywgdHJ1ZSwgW1xuICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsUGlwZSh0aGlzLl9sb2NhbGUpXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVBpcGVNZXRhKFN0cmluZ1RvTnVtYmVyUGlwZSwgJ3N0cmluZ1RvTnVtYmVyJywgdHJ1ZSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShDdXN0b21QaXBlLCAnY3VzdG9tJywgdHJ1ZSwgW3RoaXMuaW5qZWN0b3IuZ2V0KEN1c3RvbVBpcGVNYW5hZ2VyKV0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVHJ1c3RBc1BpcGUsICd0cnVzdEFzJywgdHJ1ZSwgW3RoaXMuZG9tU2FuaXRpemVyXSksXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVQaXBlTWV0YShTYW5pdGl6ZVBpcGUsICdzYW5pdGl6ZScsIHRydWUsIFt0aGlzLmRvbVNhbml0aXplcl0pLFxuICAgICAgICAgICAgdGhpcy5wcmVwYXJlUGlwZU1ldGEoVGVtcGxhdGVSZXBsYWNlUGlwZSwgJ3RlbXBsYXRlUmVwbGFjZScsIHRydWUpLFxuICAgICAgICBdO1xuICAgIH1cblxuXG4gICAgdW5rbm93blBpcGUobmFtZSkge1xuICAgICAgICB0aHJvdyBFcnJvcihgVGhlIHBpcGUgJyR7bmFtZX0nIGNvdWxkIG5vdCBiZSBmb3VuZGApO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29tcGlsZXI6IENvbXBpbGVyLCBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSBkb21TYW5pdGl6ZXI6RG9tU2FuaXRpemVyLCBwcml2YXRlIGkxOHNlcnZpY2U6IEFic3RyYWN0STE4blNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy5fcGlwZU1ldGEgPSBuZXcgTWFwKCk7XG4gICAgICAgIHRoaXMuc2V0UGlwZURhdGEoKTtcbiAgICAgICAgdGhpcy5fcGlwZURhdGEuZm9yRWFjaCh2ID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3BpcGVNZXRhLnNldCh2Lm5hbWUsIHYpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtYXRzQnlMb2NhbGUgPSB0aGlzLmkxOHNlcnZpY2U/IHRoaXMuaTE4c2VydmljZS5nZXR3aWRnZXRMb2NhbGUoKSA6IHt9O1xuICAgIH1cblxuICAgIG1ldGEobmFtZSkge1xuICAgICAgICBjb25zdCBtZXRhID0gdGhpcy5fcGlwZU1ldGEuZ2V0KG5hbWUpO1xuICAgICAgICBpZiAoIW1ldGEpIHtcbiAgICAgICAgICAgIHRoaXMudW5rbm93blBpcGUobmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1ldGE7XG4gICAgfVxuXG4gICAgZ2V0UGlwZU5hbWVWc0lzUHVyZU1hcCgpIHtcbiAgICAgICAgY29uc3QgX21hcCA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5fcGlwZU1ldGEuZm9yRWFjaCgodiwgaykgPT4ge1xuICAgICAgICAgICAgX21hcC5zZXQoaywgdi5wdXJlKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBfbWFwO1xuICAgIH1cblxuICAgIHJlc29sdmVEZXAoZGVwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmluamVjdG9yLmdldChkZXAudG9rZW4uaWRlbnRpZmllci5yZWZlcmVuY2UpO1xuICAgIH1cblxuICAgIGdldEluc3RhbmNlKG5hbWUpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgdHlwZTogeyByZWZlcmVuY2U6IHJlZiwgZGlEZXBzOiBkZXBzIH1cbiAgICAgICAgfSA9IHRoaXMubWV0YShuYW1lKTtcbiAgICAgICAgaWYgKCFyZWYpIHtcbiAgICAgICAgICAgIHRoaXMudW5rbm93blBpcGUobmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWRlcHMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IHJlZigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgYXJncyA9IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCBkZXAgb2YgZGVwcykge1xuICAgICAgICAgICAgICAgIGFyZ3MucHVzaChkZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyByZWYoLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
|
|
@@ -5,7 +5,7 @@ import { ActivatedRoute, Router, RouterOutlet, NavigationStart, NavigationEnd, N
|
|
|
5
5
|
import * as i5 from '@angular/common';
|
|
6
6
|
import { CommonModule, AsyncPipe, SlicePipe, PercentPipe, I18nPluralPipe, NgLocalization, I18nSelectPipe, KeyValuePipe, UpperCasePipe, LowerCasePipe, JsonPipe, DecimalPipe, TitleCasePipe, CurrencyPipe, DatePipe, DOCUMENT, ɵgetDOM as _getDOM } from '@angular/common';
|
|
7
7
|
import * as i1 from '@wm/core';
|
|
8
|
-
import { $appDigest, isDefined, triggerFn, fetchContent, _WM_APP_PROJECT, stringStartsWith, loadStyleSheets, loadScripts, noop as noop$1, App, AbstractI18nService, ScriptLoaderService, Viewport, UtilsService, $invokeWatchers, registerFnByExpr, LRUCache, muteWatchers, AbstractNavigationService,
|
|
8
|
+
import { $appDigest, isDefined, getWmProjectProperties, triggerFn, fetchContent, _WM_APP_PROJECT, stringStartsWith, loadStyleSheets, loadScripts, noop as noop$1, App, AbstractI18nService, ScriptLoaderService, Viewport, UtilsService, $invokeWatchers, registerFnByExpr, LRUCache, muteWatchers, AbstractNavigationService, isIos, isAndroid, unMuteWatchers, $watch, isIE, CustomPipeManager, getSessionStorageItem, AbstractDialogService, StatePersistence, AbstractSpinnerService, AbstractToasterService, ConstantService, FieldTypeService, FieldWidgetService, DynamicComponentRefProvider, EventNotifier, setCSS, setSessionStorageItem, replace, setPipeProvider, setNgZone, setAppRef, addClass, removeClass, extendProto, $parseExpr, AppDefaults, isObject as isObject$1, isIphone, isIpod, isIpad } from '@wm/core';
|
|
9
9
|
import * as i2 from '@wm/security';
|
|
10
10
|
import { SecurityService } from '@wm/security';
|
|
11
11
|
import * as i4 from '@wm/variables';
|
|
@@ -14,7 +14,7 @@ import { isEmpty, trim, forEach, extend, get, merge, isUndefined, isObject, ends
|
|
|
14
14
|
import { SpaPageDirective, PageDirective, LayoutDirective, ContentComponent, PageContentComponent, RouterOutletDirective } from '@wm/components/page';
|
|
15
15
|
import { Subject } from 'rxjs';
|
|
16
16
|
import * as i3 from '@wm/components/base';
|
|
17
|
-
import { WidgetRef, PartialDirective, WmComponentsModule, FileIconClassPipe, FileExtensionFromMimePipe, StateClassPipe, FileSizePipe, FilterPipe, ToDatePipe, ToNumberPipe, ToCurrencyPipe, PrefixPipe, SuffixPipe, TimeFromNowPipe, NumberToStringPipe, StringToNumberPipe, CustomPipe, TrustAsPipe, SanitizePipe } from '@wm/components/base';
|
|
17
|
+
import { WidgetRef, PartialDirective, WmComponentsModule, FileIconClassPipe, FileExtensionFromMimePipe, StateClassPipe, FileSizePipe, FilterPipe, ToDatePipe, ToNumberPipe, ToCurrencyPipe, PrefixPipe, SuffixPipe, TimeFromNowPipe, NumberToStringPipe, StringToNumberPipe, CustomPipe, TrustAsPipe, SanitizePipe, TemplateReplacePipe } from '@wm/components/base';
|
|
18
18
|
import { __decorate, __param, __metadata } from 'tslib';
|
|
19
19
|
import { RadiosetComponent, CheckboxsetComponent, ButtonComponent, ButtonGroupDirective, CaptionPositionDirective, CheckboxComponent, CompositeDirective, NumberComponent, SelectComponent, SwitchComponent, InputCalendarComponent, InputColorComponent, InputEmailComponent, InputNumberComponent, InputTextComponent, TextareaComponent } from '@wm/components/input';
|
|
20
20
|
import { PrefabContainerDirective, PrefabDirective as PrefabDirective$1 } from '@wm/components/prefab';
|
|
@@ -295,11 +295,9 @@ class AppManagerService {
|
|
|
295
295
|
}
|
|
296
296
|
handleSSOLogin(config, options) {
|
|
297
297
|
const SSO_URL = 'services/security/ssologin', PREVIEW_WINDOW_NAME = 'WM_PREVIEW_WINDOW';
|
|
298
|
-
let page, queryParams;
|
|
298
|
+
let page = '', queryParams;
|
|
299
299
|
// do not provide redirectTo page if fetching HOME page resulted 401
|
|
300
300
|
// on app load, by default Home page is loaded
|
|
301
|
-
page = this.$security.getRedirectPage(config);
|
|
302
|
-
page = page ? '?redirectPage=' + encodeURIComponent(page) : '';
|
|
303
301
|
/*
|
|
304
302
|
* For preview, this.$security.getRedirectedRouteQueryParams() gets the queryparams form the activated route(pagewrappercomponent)
|
|
305
303
|
* For deployed app, canactivate guard resolved to false and gets the queryparams from the canactivate gurard(no active route component)
|
|
@@ -307,6 +305,11 @@ class AppManagerService {
|
|
|
307
305
|
queryParams = (options && options.queryParams) || this.$security.getRedirectedRouteQueryParams();
|
|
308
306
|
queryParams = this.$security.getQueryString(queryParams);
|
|
309
307
|
queryParams = queryParams ? '?' + queryParams : '';
|
|
308
|
+
const redirectPage = this.$security.getCurrentRoutePage();
|
|
309
|
+
const homePage = getWmProjectProperties().homePage;
|
|
310
|
+
if (redirectPage && (redirectPage !== homePage || !!queryParams)) {
|
|
311
|
+
page = '?redirectPage=' + encodeURIComponent(redirectPage);
|
|
312
|
+
}
|
|
310
313
|
// showing a redirecting message
|
|
311
314
|
document.body.textContent = get(this.getAppLocale(), ['MESSAGE_LOGIN_REDIRECTION']) || 'Redirecting to sso login...';
|
|
312
315
|
// appending redirect to page and page params
|
|
@@ -2683,7 +2686,8 @@ class PipeProvider {
|
|
|
2683
2686
|
this.preparePipeMeta(StringToNumberPipe, 'stringToNumber', true),
|
|
2684
2687
|
this.preparePipeMeta(CustomPipe, 'custom', true, [this.injector.get(CustomPipeManager)]),
|
|
2685
2688
|
this.preparePipeMeta(TrustAsPipe, 'trustAs', true, [this.domSanitizer]),
|
|
2686
|
-
this.preparePipeMeta(SanitizePipe, 'sanitize', true, [this.domSanitizer])
|
|
2689
|
+
this.preparePipeMeta(SanitizePipe, 'sanitize', true, [this.domSanitizer]),
|
|
2690
|
+
this.preparePipeMeta(TemplateReplacePipe, 'templateReplace', true),
|
|
2687
2691
|
];
|
|
2688
2692
|
}
|
|
2689
2693
|
unknownPipe(name) {
|