@wavemaker/app-ng-runtime 11.7.3-next.26384 → 11.7.3-next.26385
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.
- app-ng-runtime/core/bundles/index.umd.js +0 -23
- app-ng-runtime/core/esm2022/public_api.mjs +1 -2
- app-ng-runtime/core/fesm2022/index.mjs +3 -25
- app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/public_api.d.ts +0 -1
- app-ng-runtime/package.json +1 -1
- app-ng-runtime/runtime/base/bundles/index.umd.js +3 -5
- app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +1 -3
- app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -7
- app-ng-runtime/runtime/base/fesm2022/index.mjs +3 -5
- app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
- app-ng-runtime/core/esm2022/services/custom-icons-loader.service.mjs +0 -26
- app-ng-runtime/core/services/custom-icons-loader.service.d.ts +0 -7
|
@@ -15,7 +15,6 @@ export * from './services/field-type.service';
|
|
|
15
15
|
export * from './services/field-widget.service';
|
|
16
16
|
export * from './services/script-loader.service';
|
|
17
17
|
export * from './services/user-custom-pipe-manager.service';
|
|
18
|
-
export * from './services/custom-icons-loader.service';
|
|
19
18
|
export { StatePersistence } from './services/state-persistence.service';
|
|
20
19
|
export { PaginationService } from './services/pagination.service';
|
|
21
20
|
export * from './core.module';
|
app-ng-runtime/package.json
CHANGED
|
@@ -3689,7 +3689,7 @@
|
|
|
3689
3689
|
i0__namespace.ɵɵproperty("ngIf", !ctx_r0.isApplicationType);
|
|
3690
3690
|
} }
|
|
3691
3691
|
class AppComponent {
|
|
3692
|
-
constructor(_pipeProvider, _appRef, elRef, oAuthService, dialogService, spinnerService, ngZone, router, app, appManager
|
|
3692
|
+
constructor(_pipeProvider, _appRef, elRef, oAuthService, dialogService, spinnerService, ngZone, router, app, appManager) {
|
|
3693
3693
|
this.elRef = elRef;
|
|
3694
3694
|
this.oAuthService = oAuthService;
|
|
3695
3695
|
this.dialogService = dialogService;
|
|
@@ -3697,7 +3697,6 @@
|
|
|
3697
3697
|
this.router = router;
|
|
3698
3698
|
this.app = app;
|
|
3699
3699
|
this.appManager = appManager;
|
|
3700
|
-
this.customIconsLoaderService = customIconsLoaderService;
|
|
3701
3700
|
this.startApp = false;
|
|
3702
3701
|
this.isApplicationType = false;
|
|
3703
3702
|
this.spinner = { show: false, messages: [], arialabel: '' };
|
|
@@ -3705,7 +3704,6 @@
|
|
|
3705
3704
|
i1.setPipeProvider(_pipeProvider);
|
|
3706
3705
|
i1.setNgZone(ngZone);
|
|
3707
3706
|
i1.setAppRef(_appRef);
|
|
3708
|
-
this.customIconsLoaderService.load();
|
|
3709
3707
|
this.isApplicationType = i1.getWmProjectProperties().type === 'APPLICATION';
|
|
3710
3708
|
this.appManager.beforeAppReady();
|
|
3711
3709
|
// subscribe to OAuth changes
|
|
@@ -3822,7 +3820,7 @@
|
|
|
3822
3820
|
ngDoCheck() {
|
|
3823
3821
|
i1.$invokeWatchers();
|
|
3824
3822
|
}
|
|
3825
|
-
static { this.ɵfac = function AppComponent_Factory(t) { return new (t || AppComponent)(i0__namespace.ɵɵdirectiveInject(PipeProvider), i0__namespace.ɵɵdirectiveInject(i0__namespace.ApplicationRef), i0__namespace.ɵɵdirectiveInject(i0__namespace.ElementRef), i0__namespace.ɵɵdirectiveInject(i2$2__namespace.OAuthService), i0__namespace.ɵɵdirectiveInject(i1__namespace.AbstractDialogService), i0__namespace.ɵɵdirectiveInject(i1__namespace.AbstractSpinnerService), i0__namespace.ɵɵdirectiveInject(i0__namespace.NgZone), i0__namespace.ɵɵdirectiveInject(i1$1__namespace.Router), i0__namespace.ɵɵdirectiveInject(i1__namespace.App), i0__namespace.ɵɵdirectiveInject(AppManagerService)
|
|
3823
|
+
static { this.ɵfac = function AppComponent_Factory(t) { return new (t || AppComponent)(i0__namespace.ɵɵdirectiveInject(PipeProvider), i0__namespace.ɵɵdirectiveInject(i0__namespace.ApplicationRef), i0__namespace.ɵɵdirectiveInject(i0__namespace.ElementRef), i0__namespace.ɵɵdirectiveInject(i2$2__namespace.OAuthService), i0__namespace.ɵɵdirectiveInject(i1__namespace.AbstractDialogService), i0__namespace.ɵɵdirectiveInject(i1__namespace.AbstractSpinnerService), i0__namespace.ɵɵdirectiveInject(i0__namespace.NgZone), i0__namespace.ɵɵdirectiveInject(i1$1__namespace.Router), i0__namespace.ɵɵdirectiveInject(i1__namespace.App), i0__namespace.ɵɵdirectiveInject(AppManagerService)); }; }
|
|
3826
3824
|
static { this.ɵcmp = /*@__PURE__*/ i0__namespace.ɵɵdefineComponent({ type: AppComponent, selectors: [["app-root"]], viewQuery: function AppComponent_Query(rf, ctx) { if (rf & 1) {
|
|
3827
3825
|
i0__namespace.ɵɵviewQuery(i1$1.RouterOutlet, 5);
|
|
3828
3826
|
i0__namespace.ɵɵviewQuery(_c0, 5, i0.ViewContainerRef);
|
|
@@ -3840,7 +3838,7 @@
|
|
|
3840
3838
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0__namespace.ɵsetClassMetadata(AppComponent, [{
|
|
3841
3839
|
type: i0.Component,
|
|
3842
3840
|
args: [{ selector: 'app-root', encapsulation: i0.ViewEncapsulation.None, template: "<ng-container *ngIf=\"startApp\">\n <router-outlet></router-outlet>\n <div wmContainer partialContainer content=\"Common\" hidden class=\"ng-hide\" *ngIf=\"isApplicationType\"></div>\n <app-spinner name=\"globalspinner\" classname=\"global-spinner\" role=\"alert\" aria-live=\"assertive\" [attr.aria-label]=\"spinner.arialabel || 'Loading'\" [show]=\"spinner.show\" [spinnermessages]=\"spinner.messages\"></app-spinner>\n <div wmDialog name=\"oAuthLoginDialog\" title=\"Application is requesting you to sign in with\"\n close.event=\"closeOAuthDialog()\">\n <ng-template #dialogBody>\n <ul class=\"list-items\">\n <li class=\"list-item\" *ngFor=\"let provider of providersConfig\">\n <button class=\"btn\" (click)=\"provider.invoke()\">{{provider.name}}</button>\n </li>\n </ul>\n </ng-template>\n </div>\n <div wmConfirmDialog name=\"_app-confirm-dialog\" title.bind=\"title\" message.bind=\"message\" oktext.bind=\"oktext\"\n canceltext.bind=\"canceltext\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div *ngIf=\"!isApplicationType\" wmConfirmDialog name=\"PrefabConfirmDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div *ngIf=\"!isApplicationType\" wmAlertDialog name=\"PrefabAlertDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div wmAppExt></div>\n <i id=\"wm-mobile-display\"></i>\n</ng-container>\n<!--Dummy container to create the component dynamically-->\n<ng-container #dynamicComponent></ng-container>\n" }]
|
|
3843
|
-
}], function () { return [{ type: PipeProvider }, { type: i0__namespace.ApplicationRef }, { type: i0__namespace.ElementRef }, { type: i2$2__namespace.OAuthService }, { type: i1__namespace.AbstractDialogService }, { type: i1__namespace.AbstractSpinnerService }, { type: i0__namespace.NgZone }, { type: i1$1__namespace.Router }, { type: i1__namespace.App }, { type: AppManagerService }
|
|
3841
|
+
}], function () { return [{ type: PipeProvider }, { type: i0__namespace.ApplicationRef }, { type: i0__namespace.ElementRef }, { type: i2$2__namespace.OAuthService }, { type: i1__namespace.AbstractDialogService }, { type: i1__namespace.AbstractSpinnerService }, { type: i0__namespace.NgZone }, { type: i1$1__namespace.Router }, { type: i1__namespace.App }, { type: AppManagerService }]; }, { routerOutlet: [{
|
|
3844
3842
|
type: i0.ViewChild,
|
|
3845
3843
|
args: [i1$1.RouterOutlet]
|
|
3846
3844
|
}], dynamicComponentContainerRef: [{
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ApplicationRef, DoCheck, ElementRef, NgZone, ViewContainerRef, AfterViewInit } from '@angular/core';
|
|
2
2
|
import { Router, RouterOutlet } from '@angular/router';
|
|
3
|
-
import { CustomIconsLoaderService } from '@wm/core';
|
|
4
3
|
import { AbstractDialogService, AbstractSpinnerService, App } from '@wm/core';
|
|
5
4
|
import { OAuthService } from '@wm/oAuth';
|
|
6
5
|
import { AppManagerService } from '../../services/app.manager.service';
|
|
@@ -19,13 +18,12 @@ export declare class AppComponent implements DoCheck, AfterViewInit {
|
|
|
19
18
|
private router;
|
|
20
19
|
private app;
|
|
21
20
|
private appManager;
|
|
22
|
-
private customIconsLoaderService;
|
|
23
21
|
startApp: boolean;
|
|
24
22
|
isApplicationType: boolean;
|
|
25
23
|
routerOutlet: RouterOutlet;
|
|
26
24
|
dynamicComponentContainerRef: ViewContainerRef;
|
|
27
25
|
spinner: SPINNER;
|
|
28
|
-
constructor(_pipeProvider: PipeProvider, _appRef: ApplicationRef, elRef: ElementRef, oAuthService: OAuthService, dialogService: AbstractDialogService, spinnerService: AbstractSpinnerService, ngZone: NgZone, router: Router, app: App, appManager: AppManagerService
|
|
26
|
+
constructor(_pipeProvider: PipeProvider, _appRef: ApplicationRef, elRef: ElementRef, oAuthService: OAuthService, dialogService: AbstractDialogService, spinnerService: AbstractSpinnerService, ngZone: NgZone, router: Router, app: App, appManager: AppManagerService);
|
|
29
27
|
providersConfig: any;
|
|
30
28
|
isOAuthDialogOpen: boolean;
|
|
31
29
|
showOAuthDialog(): void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ApplicationRef, Component, ElementRef, NgZone, ViewEncapsulation, ViewChild, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import { NavigationCancel, NavigationEnd, NavigationError, NavigationStart, Router, RouterOutlet } from '@angular/router';
|
|
3
3
|
import { setTheme } from 'ngx-bootstrap/utils';
|
|
4
|
-
import {
|
|
4
|
+
import { noop } from '@wm/core';
|
|
5
5
|
import { $invokeWatchers, AbstractDialogService, AbstractSpinnerService, getWmProjectProperties, hasCordova, setAppRef, setNgZone, setPipeProvider, App, addClass, removeClass } from '@wm/core';
|
|
6
6
|
import { OAuthService } from '@wm/oAuth';
|
|
7
7
|
import { AppManagerService } from '../../services/app.manager.service';
|
|
@@ -75,7 +75,7 @@ function AppComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
75
75
|
i0.ɵɵproperty("ngIf", !ctx_r0.isApplicationType);
|
|
76
76
|
} }
|
|
77
77
|
export class AppComponent {
|
|
78
|
-
constructor(_pipeProvider, _appRef, elRef, oAuthService, dialogService, spinnerService, ngZone, router, app, appManager
|
|
78
|
+
constructor(_pipeProvider, _appRef, elRef, oAuthService, dialogService, spinnerService, ngZone, router, app, appManager) {
|
|
79
79
|
this.elRef = elRef;
|
|
80
80
|
this.oAuthService = oAuthService;
|
|
81
81
|
this.dialogService = dialogService;
|
|
@@ -83,7 +83,6 @@ export class AppComponent {
|
|
|
83
83
|
this.router = router;
|
|
84
84
|
this.app = app;
|
|
85
85
|
this.appManager = appManager;
|
|
86
|
-
this.customIconsLoaderService = customIconsLoaderService;
|
|
87
86
|
this.startApp = false;
|
|
88
87
|
this.isApplicationType = false;
|
|
89
88
|
this.spinner = { show: false, messages: [], arialabel: '' };
|
|
@@ -91,7 +90,6 @@ export class AppComponent {
|
|
|
91
90
|
setPipeProvider(_pipeProvider);
|
|
92
91
|
setNgZone(ngZone);
|
|
93
92
|
setAppRef(_appRef);
|
|
94
|
-
this.customIconsLoaderService.load();
|
|
95
93
|
this.isApplicationType = getWmProjectProperties().type === 'APPLICATION';
|
|
96
94
|
this.appManager.beforeAppReady();
|
|
97
95
|
// subscribe to OAuth changes
|
|
@@ -208,7 +206,7 @@ export class AppComponent {
|
|
|
208
206
|
ngDoCheck() {
|
|
209
207
|
$invokeWatchers();
|
|
210
208
|
}
|
|
211
|
-
static { this.ɵfac = function AppComponent_Factory(t) { return new (t || AppComponent)(i0.ɵɵdirectiveInject(i1.PipeProvider), i0.ɵɵdirectiveInject(i0.ApplicationRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.OAuthService), i0.ɵɵdirectiveInject(i3.AbstractDialogService), i0.ɵɵdirectiveInject(i3.AbstractSpinnerService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i4.Router), i0.ɵɵdirectiveInject(i3.App), i0.ɵɵdirectiveInject(i5.AppManagerService)
|
|
209
|
+
static { this.ɵfac = function AppComponent_Factory(t) { return new (t || AppComponent)(i0.ɵɵdirectiveInject(i1.PipeProvider), i0.ɵɵdirectiveInject(i0.ApplicationRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.OAuthService), i0.ɵɵdirectiveInject(i3.AbstractDialogService), i0.ɵɵdirectiveInject(i3.AbstractSpinnerService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i4.Router), i0.ɵɵdirectiveInject(i3.App), i0.ɵɵdirectiveInject(i5.AppManagerService)); }; }
|
|
212
210
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AppComponent, selectors: [["app-root"]], viewQuery: function AppComponent_Query(rf, ctx) { if (rf & 1) {
|
|
213
211
|
i0.ɵɵviewQuery(RouterOutlet, 5);
|
|
214
212
|
i0.ɵɵviewQuery(_c0, 5, ViewContainerRef);
|
|
@@ -226,11 +224,11 @@ export class AppComponent {
|
|
|
226
224
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppComponent, [{
|
|
227
225
|
type: Component,
|
|
228
226
|
args: [{ selector: 'app-root', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"startApp\">\n <router-outlet></router-outlet>\n <div wmContainer partialContainer content=\"Common\" hidden class=\"ng-hide\" *ngIf=\"isApplicationType\"></div>\n <app-spinner name=\"globalspinner\" classname=\"global-spinner\" role=\"alert\" aria-live=\"assertive\" [attr.aria-label]=\"spinner.arialabel || 'Loading'\" [show]=\"spinner.show\" [spinnermessages]=\"spinner.messages\"></app-spinner>\n <div wmDialog name=\"oAuthLoginDialog\" title=\"Application is requesting you to sign in with\"\n close.event=\"closeOAuthDialog()\">\n <ng-template #dialogBody>\n <ul class=\"list-items\">\n <li class=\"list-item\" *ngFor=\"let provider of providersConfig\">\n <button class=\"btn\" (click)=\"provider.invoke()\">{{provider.name}}</button>\n </li>\n </ul>\n </ng-template>\n </div>\n <div wmConfirmDialog name=\"_app-confirm-dialog\" title.bind=\"title\" message.bind=\"message\" oktext.bind=\"oktext\"\n canceltext.bind=\"canceltext\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div *ngIf=\"!isApplicationType\" wmConfirmDialog name=\"PrefabConfirmDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div *ngIf=\"!isApplicationType\" wmAlertDialog name=\"PrefabAlertDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div wmAppExt></div>\n <i id=\"wm-mobile-display\"></i>\n</ng-container>\n<!--Dummy container to create the component dynamically-->\n<ng-container #dynamicComponent></ng-container>\n" }]
|
|
229
|
-
}], function () { return [{ type: i1.PipeProvider }, { type: i0.ApplicationRef }, { type: i0.ElementRef }, { type: i2.OAuthService }, { type: i3.AbstractDialogService }, { type: i3.AbstractSpinnerService }, { type: i0.NgZone }, { type: i4.Router }, { type: i3.App }, { type: i5.AppManagerService }
|
|
227
|
+
}], function () { return [{ type: i1.PipeProvider }, { type: i0.ApplicationRef }, { type: i0.ElementRef }, { type: i2.OAuthService }, { type: i3.AbstractDialogService }, { type: i3.AbstractSpinnerService }, { type: i0.NgZone }, { type: i4.Router }, { type: i3.App }, { type: i5.AppManagerService }]; }, { routerOutlet: [{
|
|
230
228
|
type: ViewChild,
|
|
231
229
|
args: [RouterOutlet]
|
|
232
230
|
}], dynamicComponentContainerRef: [{
|
|
233
231
|
type: ViewChild,
|
|
234
232
|
args: ['dynamicComponent', { read: ViewContainerRef }]
|
|
235
233
|
}] }); })();
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9hcHAtY29tcG9uZW50L2FwcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC9hcHAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQVcsVUFBVSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RKLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDak0sT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNQaEUsMEJBQTBHOzs7O0lBTTlGLDhCQUErRCxpQkFBQTtJQUN2QyxrTkFB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R0FBRyxFQUFFO1lBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3JELE9BQU8sWUFBWSxDQUFDO1FBQ3hCLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxlQUFlO1FBQ1gsSUFBSSxVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUMxQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ25FO2FBQU07WUFDSCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEI7SUFDTCxDQUFDO0lBRUQsU0FBUztRQUNMLGVBQWUsRUFBRSxDQUFDO0lBQ3RCLENBQUM7NkVBN0pRLFlBQVk7b0VBQVosWUFBWTsyQkFJVixZQUFZO21DQUVlLGdCQUFnQjs7Ozs7O1lDNUIxRCxnRkF5QmU7WUFFZixpQ0FBK0M7O1lBM0JoQyxtQ0FBYzs7O3VGRHNCaEIsWUFBWTtjQUx4QixTQUFTOzJCQUNJLFVBQVUsaUJBRUwsaUJBQWlCLENBQUMsSUFBSTs0VkFNWixZQUFZO2tCQUFwQyxTQUFTO21CQUFDLFlBQVk7WUFFa0MsNEJBQTRCO2tCQUFwRixTQUFTO21CQUFDLGtCQUFrQixFQUFFLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXBwbGljYXRpb25SZWYsIENvbXBvbmVudCwgRG9DaGVjaywgRWxlbWVudFJlZiwgTmdab25lLCBWaWV3RW5jYXBzdWxhdGlvbiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmLCBBZnRlclZpZXdJbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uQ2FuY2VsLCBOYXZpZ2F0aW9uRW5kLCBOYXZpZ2F0aW9uRXJyb3IsIE5hdmlnYXRpb25TdGFydCwgUm91dGVyLCBSb3V0ZXJPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBzZXRUaGVtZSB9IGZyb20gJ25neC1ib290c3RyYXAvdXRpbHMnO1xuXG5pbXBvcnQgeyBDdXN0b21JY29uc0xvYWRlclNlcnZpY2UsIG5vb3AgfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyAkaW52b2tlV2F0Y2hlcnMsIEFic3RyYWN0RGlhbG9nU2VydmljZSwgQWJzdHJhY3RTcGlubmVyU2VydmljZSwgZ2V0V21Qcm9qZWN0UHJvcGVydGllcywgaGFzQ29yZG92YSwgc2V0QXBwUmVmLCBzZXROZ1pvbmUsIHNldFBpcGVQcm92aWRlciwgQXBwLCBhZGRDbGFzcywgcmVtb3ZlQ2xhc3MgfSBmcm9tICdAd20vY29yZSc7XG5pbXBvcnQgeyBPQXV0aFNlcnZpY2UgfSBmcm9tICdAd20vb0F1dGgnO1xuaW1wb3J0IHsgQXBwTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hcHAubWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFBpcGVQcm92aWRlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3BpcGUtcHJvdmlkZXIuc2VydmljZSc7XG5cbmludGVyZmFjZSBTUElOTkVSIHtcbiAgICBzaG93OiBib29sZWFuO1xuICAgIG1lc3NhZ2VzOiBBcnJheTxzdHJpbmc+O1xuICAgIGFyaWFsYWJlbDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1yb290JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYXBwLmNvbXBvbmVudC5odG1sJyxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEFwcENvbXBvbmVudCBpbXBsZW1lbnRzIERvQ2hlY2ssIEFmdGVyVmlld0luaXQge1xuICAgIHB1YmxpYyBzdGFydEFwcCA9IGZhbHNlO1xuICAgIHB1YmxpYyBpc0FwcGxpY2F0aW9uVHlwZSA9IGZhbHNlO1xuXG4gICAgQFZpZXdDaGlsZChSb3V0ZXJPdXRsZXQpIHJvdXRlck91dGxldDogUm91dGVyT3V0bGV0O1xuXG4gICAgQFZpZXdDaGlsZCgnZHluYW1pY0NvbXBvbmVudCcsIHtyZWFkOiBWaWV3Q29udGFpbmVyUmVmfSkgZHluYW1pY0NvbXBvbmVudENvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZjtcblxuICAgIHNwaW5uZXI6IFNQSU5ORVIgPSB7c2hvdzogZmFsc2UsIG1lc3NhZ2VzOiBbXSwgYXJpYWxhYmVsOiAnJ307XG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIF9waXBlUHJvdmlkZXI6IFBpcGVQcm92aWRlcixcbiAgICAgICAgX2FwcFJlZjogQXBwbGljYXRpb25SZWYsXG4gICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgb0F1dGhTZXJ2aWNlOiBPQXV0aFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogQWJzdHJhY3REaWFsb2dTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHNwaW5uZXJTZXJ2aWNlOiBBYnN0cmFjdFNwaW5uZXJTZXJ2aWNlLFxuICAgICAgICBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICAgICAgcHJpdmF0ZSBhcHA6IEFwcCxcbiAgICAgICAgcHJpdmF0ZSBhcHBNYW5hZ2VyOiBBcHBNYW5hZ2VyU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjdXN0b21JY29uc0xvYWRlclNlcnZpY2U6IEN1c3RvbUljb25zTG9hZGVyU2VydmljZVxuICAgICkge1xuICAgICAgICBzZXRQaXBlUHJvdmlkZXIoX3BpcGVQcm92aWRlcik7XG4gICAgICAgIHNldE5nWm9uZShuZ1pvbmUpO1xuICAgICAgICBzZXRBcHBSZWYoX2FwcFJlZik7XG5cbiAgICAgICAgdGhpcy5jdXN0b21JY29uc0xvYWRlclNlcnZpY2UubG9hZCgpO1xuICAgICAgICB0aGlzLmlzQXBwbGljYXRpb25UeXBlID0gZ2V0V21Qcm9qZWN0UHJvcGVydGllcygpLnR5cGUgPT09ICdBUFBMSUNBVElPTic7XG5cbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLmJlZm9yZUFwcFJlYWR5KCk7XG5cbiAgICAgICAgLy8gc3Vic2NyaWJlIHRvIE9BdXRoIGNoYW5nZXNcbiAgICAgICAgb0F1dGhTZXJ2aWNlLmdldE9BdXRoUHJvdmlkZXJzQXNPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKChwcm92aWRlcnM6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm92aWRlcnNDb25maWcgPSBwcm92aWRlcnM7XG4gICAgICAgICAgICBpZiAocHJvdmlkZXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2hvd09BdXRoRGlhbG9nKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VPQXV0aERpYWxvZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gdGhlIG1lc3NhZ2Ugc291cmNlIHRvIHNob3cvaGlkZSBhcHAgc3Bpbm5lclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmdldE1lc3NhZ2VTb3VyY2UoKS5hc09ic2VydmFibGUoKS5zdWJzY3JpYmUoKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gc2V0VGltZW91dCBpcyB0byBhdm9pZCAnRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcidcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuc3Bpbm5lci5zaG93ID0gZGF0YS5zaG93O1xuICAgICAgICAgICAgICAgIHRoaXMuc3Bpbm5lci5tZXNzYWdlcyA9IGRhdGEubWVzc2FnZXM7XG4gICAgICAgICAgICAgICAgdGhpcy5zcGlubmVyLmFyaWFsYWJlbCA9IGRhdGEubWVzc2FnZXMudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBzZXQgdGhlbWUgdG8gYnMzIG9uIG5neC1ib290c3RyYXAuIFRoaXMgYXZvaWRzIHJ1bnRpbWUgY2FsY3VsYXRpb24gdG8gZGV0ZXJtaW5lIGJzIHRoZW1lLiBUaHVzIHJlc29sdmVzIHBlcmZvcm1hbmNlLlxuICAgICAgICBzZXRUaGVtZSgnYnMzJyk7XG5cbiAgICAgICAgbGV0IHNwaW5uZXJJZDtcblxuICAgICAgICBsZXQgb25QYWdlUmVuZGVyZWQgPSBub29wO1xuXG4gICAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZSA9PiB7XG4gICAgICAgICAgICBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgICAgICAgIGxldCBwYWdlID0gZS51cmwuc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICAgICAgICBwYWdlID0gcGFnZS5zdWJzdHJpbmcoMSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIXBhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHAuYWN0aXZlTGF5b3V0TmFtZSA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcC5sYXlvdXRQYWdlcyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZih0aGlzLmFwcC5hY3RpdmVMYXlvdXROYW1lICYmIHRoaXMuYXBwLmxheW91dFBhZ2VzICYmIHRoaXMuYXBwLmxheW91dFBhZ2VzLmxlbmd0aCAmJiB0aGlzLmFwcC5sYXlvdXRQYWdlcy5pbmNsdWRlcyhwYWdlKSkge1xuICAgICAgICAgICAgICAgICAgICBzcGlubmVySWQgPSB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coJycsICd3bVJvdXRlck91dGxldCcsICcnLCAnd21Sb3V0ZXJPdXRsZXQnKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzcGlubmVySWQgPSB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coJycsICdnbG9iYWxTcGlubmVyJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2FwcC1wYWdlLW91dGxldCcpIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFkZENsYXNzKG5vZGUsICdwYWdlLWxvYWQtaW4tcHJvZ3Jlc3MnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBwYWdlTG9hZFN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgICAgb25QYWdlUmVuZGVyZWQgPSAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZShzcGlubmVySWQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXBwLXBhZ2Utb3V0bGV0JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChub2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVDbGFzcyhub2RlLCAncGFnZS1sb2FkLWluLXByb2dyZXNzJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb25QYWdlUmVuZGVyZWQgPSBub29wO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcC5hY3RpdmVQYWdlTG9hZFRpbWUgPSBEYXRlLm5vdygpIC0gcGFnZUxvYWRTdGFydFRpbWU7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQgfHwgZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25DYW5jZWwgfHwgZSBpbnN0YW5jZW9mIE5hdmlnYXRpb25FcnJvcikge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT57XG4gICAgICAgICAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkKCk7XG4gICAgICAgICAgICAgICAgfSwgMTAwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXIuc3Vic2NyaWJlKCdwYWdlUmVhZHknLCAoKSA9PiB7XG4gICAgICAgICAgICBvblBhZ2VSZW5kZXJlZCgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5hcHBNYW5hZ2VyLnN1YnNjcmliZSgncGFnZUF0dGFjaCcsICgpID0+IHtcbiAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3ZpZGVyc0NvbmZpZztcbiAgICBpc09BdXRoRGlhbG9nT3BlbiA9IGZhbHNlO1xuXG4gICAgc2hvd09BdXRoRGlhbG9nKCkge1xuICAgICAgICBpZiAoIXRoaXMuaXNPQXV0aERpYWxvZ09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuaXNPQXV0aERpYWxvZ09wZW4gPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oJ29BdXRoTG9naW5EaWFsb2cnLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNsb3NlT0F1dGhEaWFsb2coKSB7XG4gICAgICAgIGlmICh0aGlzLmlzT0F1dGhEaWFsb2dPcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzT0F1dGhEaWFsb2dPcGVuID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2UuY2xvc2UoJ29BdXRoTG9naW5EaWFsb2cnLCB0aGlzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhcnQoKSB7XG4gICAgICAgIC8vdG8gZml4IHRoZSBpc3N1ZSB0aGF0IGhhcHBlbnMgb25seSBpbiB0aGUgZGV2ZWxvcG1lbnQgbW9kZVxuICAgICAgICAvL0V4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JcbiAgICAgICAgLy9maXg6IGh0dHBzOi8vYmxvZy5hbmd1bGFyLXVuaXZlcnNpdHkuaW8vYW5ndWxhci1kZWJ1Z2dpbmcvXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdGFydEFwcCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXBwLmR5bmFtaWNDb21wb25lbnRDb250YWluZXJSZWYgPSB0aGlzLmR5bmFtaWNDb21wb25lbnRDb250YWluZXJSZWY7XG4gICAgICAgICAgICB0aGlzLm92ZXJyaWRlUm91dGVyT3V0bGV0KCk7XG4gICAgICAgIH0sIDEwKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG92ZXJyaWRlUm91dGVyT3V0bGV0KCkge1xuICAgICAgICAvL292ZXJyaWRlIHRoZSBhdHRhY2gvZGV0YWNoIG1ldGhvZHNcbiAgICAgICAgY29uc3Qgb0F0dGFjaCA9IHRoaXMucm91dGVyT3V0bGV0LmF0dGFjaDtcbiAgICAgICAgY29uc3Qgb0RldGFjaCA9IHRoaXMucm91dGVyT3V0bGV0LmRldGFjaDtcbiAgICAgICAgdGhpcy5yb3V0ZXJPdXRsZXQuYXR0YWNoID0gKGNvbXBvbmVudFJlZjogYW55KSA9PiB7XG4gICAgICAgICAgICBvQXR0YWNoLmNhbGwodGhpcy5yb3V0ZXJPdXRsZXQsIGNvbXBvbmVudFJlZik7XG4gICAgICAgICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UubmdPbkF0dGFjaCgpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLnJvdXRlck91dGxldC5kZXRhY2ggPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFwcC5hY3RpdmVQYWdlLm5nT25EZXRhY2goKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IG9EZXRhY2guY2FsbCh0aGlzLnJvdXRlck91dGxldCk7XG4gICAgICAgICAgICByZXR1cm4gY29tcG9uZW50UmVmO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKGhhc0NvcmRvdmEoKSAmJiAhd2luZG93Wyd3bURldmljZVJlYWR5J10pIHtcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3dtRGV2aWNlUmVhZHknICwgKCkgPT4gdGhpcy5zdGFydCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhcnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nRG9DaGVjaygpIHtcbiAgICAgICAgJGludm9rZVdhdGNoZXJzKCk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInN0YXJ0QXBwXCI+XG4gICAgPHJvdXRlci1vdXRsZXQ+PC9yb3V0ZXItb3V0bGV0PlxuICAgIDxkaXYgd21Db250YWluZXIgcGFydGlhbENvbnRhaW5lciBjb250ZW50PVwiQ29tbW9uXCIgaGlkZGVuIGNsYXNzPVwibmctaGlkZVwiICpuZ0lmPVwiaXNBcHBsaWNhdGlvblR5cGVcIj48L2Rpdj5cbiAgICA8YXBwLXNwaW5uZXIgbmFtZT1cImdsb2JhbHNwaW5uZXJcIiBjbGFzc25hbWU9XCJnbG9iYWwtc3Bpbm5lclwiIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiIFthdHRyLmFyaWEtbGFiZWxdPVwic3Bpbm5lci5hcmlhbGFiZWwgfHwgJ0xvYWRpbmcnXCIgW3Nob3ddPVwic3Bpbm5lci5zaG93XCIgW3NwaW5uZXJtZXNzYWdlc109XCJzcGlubmVyLm1lc3NhZ2VzXCI+PC9hcHAtc3Bpbm5lcj5cbiAgICA8ZGl2IHdtRGlhbG9nIG5hbWU9XCJvQXV0aExvZ2luRGlhbG9nXCIgdGl0bGU9XCJBcHBsaWNhdGlvbiBpcyByZXF1ZXN0aW5nIHlvdSB0byBzaWduIGluIHdpdGhcIlxuICAgICAgICAgY2xvc2UuZXZlbnQ9XCJjbG9zZU9BdXRoRGlhbG9nKClcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkaWFsb2dCb2R5PlxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1pdGVtc1wiPlxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtaXRlbVwiICpuZ0Zvcj1cImxldCBwcm92aWRlciBvZiBwcm92aWRlcnNDb25maWdcIj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0blwiIChjbGljayk9XCJwcm92aWRlci5pbnZva2UoKVwiPnt7cHJvdmlkZXIubmFtZX19PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG4gICAgPGRpdiB3bUNvbmZpcm1EaWFsb2cgbmFtZT1cIl9hcHAtY29uZmlybS1kaWFsb2dcIiB0aXRsZS5iaW5kPVwidGl0bGVcIiBtZXNzYWdlLmJpbmQ9XCJtZXNzYWdlXCIgb2t0ZXh0LmJpbmQ9XCJva3RleHRcIlxuICAgICAgICAgY2FuY2VsdGV4dC5iaW5kPVwiY2FuY2VsdGV4dFwiIGNsb3NhYmxlPVwiZmFsc2VcIiBpY29uY2xhc3MuYmluZD1cImljb25jbGFzc1wiXG4gICAgICAgICBlc2NhcGUuZXZlbnQ9XCJvbkVzY2FwZSgpXCIgb2suZXZlbnQ9XCJvbk9rKClcIiBjYW5jZWwuZXZlbnQ9XCJvbkNhbmNlbCgpXCIgY2xvc2UuZXZlbnQ9XCJvbkNsb3NlKClcIiBvcGVuZWQuZXZlbnQ9XCJvbk9wZW4oKVwiPjwvZGl2PlxuICAgIDxkaXYgICpuZ0lmPVwiIWlzQXBwbGljYXRpb25UeXBlXCIgd21Db25maXJtRGlhbG9nIG5hbWU9XCJQcmVmYWJDb25maXJtRGlhbG9nXCIgdGl0bGUuYmluZD1cInRpdGxlXCIgbWVzc2FnZS5iaW5kPVwidGV4dFwiIG9rdGV4dC5iaW5kPVwib2tCdXR0b25UZXh0XCJcbiAgICAgICAgIGNhbmNlbHRleHQuYmluZD1cImNhbmNlbEJ1dHRvblRleHRcIiBjbG9zYWJsZT1cImZhbHNlXCIgaWNvbmNsYXNzLmJpbmQ9XCJpY29uY2xhc3NcIlxuICAgICAgICAgZXNjYXBlLmV2ZW50PVwib25Fc2NhcGUoKVwiIG9rLmV2ZW50PVwib25PaygpXCIgY2FuY2VsLmV2ZW50PVwib25DYW5jZWwoKVwiIGNsb3NlLmV2ZW50PVwib25DbG9zZSgpXCIgb3BlbmVkLmV2ZW50PVwib25PcGVuKClcIj48L2Rpdj5cbiAgICA8ZGl2ICAqbmdJZj1cIiFpc0FwcGxpY2F0aW9uVHlwZVwiIHdtQWxlcnREaWFsb2cgbmFtZT1cIlByZWZhYkFsZXJ0RGlhbG9nXCIgdGl0bGUuYmluZD1cInRpdGxlXCIgbWVzc2FnZS5iaW5kPVwidGV4dFwiIG9rdGV4dC5iaW5kPVwib2tCdXR0b25UZXh0XCJcbiAgICAgICAgIGNhbmNlbHRleHQuYmluZD1cImNhbmNlbEJ1dHRvblRleHRcIiBjbG9zYWJsZT1cImZhbHNlXCIgaWNvbmNsYXNzLmJpbmQ9XCJpY29uY2xhc3NcIlxuICAgICAgICAgZXNjYXBlLmV2ZW50PVwib25Fc2NhcGUoKVwiIG9rLmV2ZW50PVwib25PaygpXCIgY2FuY2VsLmV2ZW50PVwib25DYW5jZWwoKVwiIGNsb3NlLmV2ZW50PVwib25DbG9zZSgpXCIgb3BlbmVkLmV2ZW50PVwib25PcGVuKClcIj48L2Rpdj5cbiAgICA8ZGl2IHdtQXBwRXh0PjwvZGl2PlxuICAgIDxpIGlkPVwid20tbW9iaWxlLWRpc3BsYXlcIj48L2k+XG48L25nLWNvbnRhaW5lcj5cbjwhLS1EdW1teSBjb250YWluZXIgdG8gY3JlYXRlIHRoZSBjb21wb25lbnQgZHluYW1pY2FsbHktLT5cbjxuZy1jb250YWluZXIgI2R5bmFtaWNDb21wb25lbnQ+PC9uZy1jb250YWluZXI+XG4iXX0=
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3J1bnRpbWUtYmFzZS9zcmMvY29tcG9uZW50cy9hcHAtY29tcG9uZW50L2FwcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ydW50aW1lLWJhc2Uvc3JjL2NvbXBvbmVudHMvYXBwLWNvbXBvbmVudC9hcHAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQVcsVUFBVSxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3RKLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFMUgsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRS9DLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDOUIsT0FBTyxFQUFFLGVBQWUsRUFBRSxxQkFBcUIsRUFBRSxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDak0sT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7SUNQaEUsMEJBQTBHOzs7O0lBTTlGLDhCQUErRCxpQkFBQTtJQUN2QyxrTkFBUyxlQUFBLG9CQUFp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QyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDckQsT0FBTyxZQUFZLENBQUM7UUFDeEIsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLFVBQVUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQzFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLEVBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7U0FDbkU7YUFBTTtZQUNILElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNoQjtJQUNMLENBQUM7SUFFRCxTQUFTO1FBQ0wsZUFBZSxFQUFFLENBQUM7SUFDdEIsQ0FBQzs2RUEzSlEsWUFBWTtvRUFBWixZQUFZOzJCQUlWLFlBQVk7bUNBRWUsZ0JBQWdCOzs7Ozs7WUM1QjFELGdGQXlCZTtZQUVmLGlDQUErQzs7WUEzQmhDLG1DQUFjOzs7dUZEc0JoQixZQUFZO2NBTHhCLFNBQVM7MkJBQ0ksVUFBVSxpQkFFTCxpQkFBaUIsQ0FBQyxJQUFJO3FUQU1aLFlBQVk7a0JBQXBDLFNBQVM7bUJBQUMsWUFBWTtZQUVrQyw0QkFBNEI7a0JBQXBGLFNBQVM7bUJBQUMsa0JBQWtCLEVBQUUsRUFBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcHBsaWNhdGlvblJlZiwgQ29tcG9uZW50LCBEb0NoZWNrLCBFbGVtZW50UmVmLCBOZ1pvbmUsIFZpZXdFbmNhcHN1bGF0aW9uLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYsIEFmdGVyVmlld0luaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25FcnJvciwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIsIFJvdXRlck91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IHNldFRoZW1lIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC91dGlscyc7XG5cbmltcG9ydCB7bm9vcH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgJGludm9rZVdhdGNoZXJzLCBBYnN0cmFjdERpYWxvZ1NlcnZpY2UsIEFic3RyYWN0U3Bpbm5lclNlcnZpY2UsIGdldFdtUHJvamVjdFByb3BlcnRpZXMsIGhhc0NvcmRvdmEsIHNldEFwcFJlZiwgc2V0Tmdab25lLCBzZXRQaXBlUHJvdmlkZXIsIEFwcCwgYWRkQ2xhc3MsIHJlbW92ZUNsYXNzIH0gZnJvbSAnQHdtL2NvcmUnO1xuaW1wb3J0IHsgT0F1dGhTZXJ2aWNlIH0gZnJvbSAnQHdtL29BdXRoJztcbmltcG9ydCB7IEFwcE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXBwLm1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQaXBlUHJvdmlkZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9waXBlLXByb3ZpZGVyLnNlcnZpY2UnO1xuXG5pbnRlcmZhY2UgU1BJTk5FUiB7XG4gICAgc2hvdzogYm9vbGVhbjtcbiAgICBtZXNzYWdlczogQXJyYXk8c3RyaW5nPjtcbiAgICBhcmlhbGFiZWw6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtcm9vdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FwcC5jb21wb25lbnQuaHRtbCcsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBBcHBDb21wb25lbnQgaW1wbGVtZW50cyBEb0NoZWNrLCBBZnRlclZpZXdJbml0IHtcbiAgICBwdWJsaWMgc3RhcnRBcHAgPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNBcHBsaWNhdGlvblR5cGUgPSBmYWxzZTtcblxuICAgIEBWaWV3Q2hpbGQoUm91dGVyT3V0bGV0KSByb3V0ZXJPdXRsZXQ6IFJvdXRlck91dGxldDtcblxuICAgIEBWaWV3Q2hpbGQoJ2R5bmFtaWNDb21wb25lbnQnLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pIGR5bmFtaWNDb21wb25lbnRDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWY7XG5cbiAgICBzcGlubmVyOiBTUElOTkVSID0ge3Nob3c6IGZhbHNlLCBtZXNzYWdlczogW10sIGFyaWFsYWJlbDogJyd9O1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBfcGlwZVByb3ZpZGVyOiBQaXBlUHJvdmlkZXIsXG4gICAgICAgIF9hcHBSZWY6IEFwcGxpY2F0aW9uUmVmLFxuICAgICAgICBwcml2YXRlIGVsUmVmOiBFbGVtZW50UmVmLFxuICAgICAgICBwcml2YXRlIG9BdXRoU2VydmljZTogT0F1dGhTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGRpYWxvZ1NlcnZpY2U6IEFic3RyYWN0RGlhbG9nU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBzcGlubmVyU2VydmljZTogQWJzdHJhY3RTcGlubmVyU2VydmljZSxcbiAgICAgICAgbmdab25lOiBOZ1pvbmUsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgIHByaXZhdGUgYXBwOiBBcHAsXG4gICAgICAgIHByaXZhdGUgYXBwTWFuYWdlcjogQXBwTWFuYWdlclNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgc2V0UGlwZVByb3ZpZGVyKF9waXBlUHJvdmlkZXIpO1xuICAgICAgICBzZXROZ1pvbmUobmdab25lKTtcbiAgICAgICAgc2V0QXBwUmVmKF9hcHBSZWYpO1xuXG4gICAgICAgIHRoaXMuaXNBcHBsaWNhdGlvblR5cGUgPSBnZXRXbVByb2plY3RQcm9wZXJ0aWVzKCkudHlwZSA9PT0gJ0FQUExJQ0FUSU9OJztcblxuICAgICAgICB0aGlzLmFwcE1hbmFnZXIuYmVmb3JlQXBwUmVhZHkoKTtcblxuICAgICAgICAvLyBzdWJzY3JpYmUgdG8gT0F1dGggY2hhbmdlc1xuICAgICAgICBvQXV0aFNlcnZpY2UuZ2V0T0F1dGhQcm92aWRlcnNBc09ic2VydmFibGUoKS5zdWJzY3JpYmUoKHByb3ZpZGVyczogYW55KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb3ZpZGVyc0NvbmZpZyA9IHByb3ZpZGVycztcbiAgICAgICAgICAgIGlmIChwcm92aWRlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93T0F1dGhEaWFsb2coKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZU9BdXRoRGlhbG9nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIFN1YnNjcmliZSB0byB0aGUgbWVzc2FnZSBzb3VyY2UgdG8gc2hvdy9oaWRlIGFwcCBzcGlubmVyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuZ2V0TWVzc2FnZVNvdXJjZSgpLmFzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgICAgICAvLyBzZXRUaW1lb3V0IGlzIHRvIGF2b2lkICdFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yJ1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zcGlubmVyLnNob3cgPSBkYXRhLnNob3c7XG4gICAgICAgICAgICAgICAgdGhpcy5zcGlubmVyLm1lc3NhZ2VzID0gZGF0YS5tZXNzYWdlcztcbiAgICAgICAgICAgICAgICB0aGlzLnNwaW5uZXIuYXJpYWxhYmVsID0gZGF0YS5tZXNzYWdlcy50b1N0cmluZygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIHNldCB0aGVtZSB0byBiczMgb24gbmd4LWJvb3RzdHJhcC4gVGhpcyBhdm9pZHMgcnVudGltZSBjYWxjdWxhdGlvbiB0byBkZXRlcm1pbmUgYnMgdGhlbWUuIFRodXMgcmVzb2x2ZXMgcGVyZm9ybWFuY2UuXG4gICAgICAgIHNldFRoZW1lKCdiczMnKTtcblxuICAgICAgICBsZXQgc3Bpbm5lcklkO1xuXG4gICAgICAgIGxldCBvblBhZ2VSZW5kZXJlZCA9IG5vb3A7XG5cbiAgICAgICAgdGhpcy5yb3V0ZXIuZXZlbnRzLnN1YnNjcmliZShlID0+IHtcbiAgICAgICAgICAgIGlmIChlIGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgbGV0IHBhZ2UgPSBlLnVybC5zcGxpdCgnPycpWzBdO1xuICAgICAgICAgICAgICAgIHBhZ2UgPSBwYWdlLnN1YnN0cmluZygxKTtcblxuICAgICAgICAgICAgICAgIGlmICghcGFnZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcC5hY3RpdmVMYXlvdXROYW1lID0gJyc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwLmxheW91dFBhZ2VzID0gW107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmKHRoaXMuYXBwLmFjdGl2ZUxheW91dE5hbWUgJiYgdGhpcy5hcHAubGF5b3V0UGFnZXMgJiYgdGhpcy5hcHAubGF5b3V0UGFnZXMubGVuZ3RoICYmIHRoaXMuYXBwLmxheW91dFBhZ2VzLmluY2x1ZGVzKHBhZ2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNwaW5uZXJJZCA9IHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygnJywgJ3dtUm91dGVyT3V0bGV0JywgJycsICd3bVJvdXRlck91dGxldCcpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNwaW5uZXJJZCA9IHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygnJywgJ2dsb2JhbFNwaW5uZXInKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYXBwLXBhZ2Utb3V0bGV0JykgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgYWRkQ2xhc3Mobm9kZSwgJ3BhZ2UtbG9hZC1pbi1wcm9ncmVzcycpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IHBhZ2VMb2FkU3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgICBvblBhZ2VSZW5kZXJlZCA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKHNwaW5uZXJJZCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdhcHAtcGFnZS1vdXRsZXQnKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZUNsYXNzKG5vZGUsICdwYWdlLWxvYWQtaW4tcHJvZ3Jlc3MnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBvblBhZ2VSZW5kZXJlZCA9IG5vb3A7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwLmFjdGl2ZVBhZ2VMb2FkVGltZSA9IERhdGUubm93KCkgLSBwYWdlTG9hZFN0YXJ0VGltZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCB8fCBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkNhbmNlbCB8fCBlIGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PntcbiAgICAgICAgICAgICAgICAgICAgb25QYWdlUmVuZGVyZWQoKTtcbiAgICAgICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYXBwTWFuYWdlci5zdWJzY3JpYmUoJ3BhZ2VSZWFkeScsICgpID0+IHtcbiAgICAgICAgICAgIG9uUGFnZVJlbmRlcmVkKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFwcE1hbmFnZXIuc3Vic2NyaWJlKCdwYWdlQXR0YWNoJywgKCkgPT4ge1xuICAgICAgICAgICAgb25QYWdlUmVuZGVyZWQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdmlkZXJzQ29uZmlnO1xuICAgIGlzT0F1dGhEaWFsb2dPcGVuID0gZmFsc2U7XG5cbiAgICBzaG93T0F1dGhEaWFsb2coKSB7XG4gICAgICAgIGlmICghdGhpcy5pc09BdXRoRGlhbG9nT3Blbikge1xuICAgICAgICAgICAgdGhpcy5pc09BdXRoRGlhbG9nT3BlbiA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uub3Blbignb0F1dGhMb2dpbkRpYWxvZycsIHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xvc2VPQXV0aERpYWxvZygpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNPQXV0aERpYWxvZ09wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuaXNPQXV0aERpYWxvZ09wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5jbG9zZSgnb0F1dGhMb2dpbkRpYWxvZycsIHRoaXMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGFydCgpIHtcbiAgICAgICAgLy90byBmaXggdGhlIGlzc3VlIHRoYXQgaGFwcGVucyBvbmx5IGluIHRoZSBkZXZlbG9wbWVudCBtb2RlXG4gICAgICAgIC8vRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgICAgICAvL2ZpeDogaHR0cHM6Ly9ibG9nLmFuZ3VsYXItdW5pdmVyc2l0eS5pby9hbmd1bGFyLWRlYnVnZ2luZy9cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0QXBwID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hcHAuZHluYW1pY0NvbXBvbmVudENvbnRhaW5lclJlZiA9IHRoaXMuZHluYW1pY0NvbXBvbmVudENvbnRhaW5lclJlZjtcbiAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVSb3V0ZXJPdXRsZXQoKTtcbiAgICAgICAgfSwgMTApO1xuICAgIH1cblxuICAgIHByaXZhdGUgb3ZlcnJpZGVSb3V0ZXJPdXRsZXQoKSB7XG4gICAgICAgIC8vb3ZlcnJpZGUgdGhlIGF0dGFjaC9kZXRhY2ggbWV0aG9kc1xuICAgICAgICBjb25zdCBvQXR0YWNoID0gdGhpcy5yb3V0ZXJPdXRsZXQuYXR0YWNoO1xuICAgICAgICBjb25zdCBvRGV0YWNoID0gdGhpcy5yb3V0ZXJPdXRsZXQuZGV0YWNoO1xuICAgICAgICB0aGlzLnJvdXRlck91dGxldC5hdHRhY2ggPSAoY29tcG9uZW50UmVmOiBhbnkpID0+IHtcbiAgICAgICAgICAgIG9BdHRhY2guY2FsbCh0aGlzLnJvdXRlck91dGxldCwgY29tcG9uZW50UmVmKTtcbiAgICAgICAgICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5uZ09uQXR0YWNoKCk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucm91dGVyT3V0bGV0LmRldGFjaCA9ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYXBwLmFjdGl2ZVBhZ2UubmdPbkRldGFjaCgpO1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gb0RldGFjaC5jYWxsKHRoaXMucm91dGVyT3V0bGV0KTtcbiAgICAgICAgICAgIHJldHVybiBjb21wb25lbnRSZWY7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAoaGFzQ29yZG92YSgpICYmICF3aW5kb3dbJ3dtRGV2aWNlUmVhZHknXSkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignd21EZXZpY2VSZWFkeScgLCAoKSA9PiB0aGlzLnN0YXJ0KCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGFydCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICAkaW52b2tlV2F0Y2hlcnMoKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwic3RhcnRBcHBcIj5cbiAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XG4gICAgPGRpdiB3bUNvbnRhaW5lciBwYXJ0aWFsQ29udGFpbmVyIGNvbnRlbnQ9XCJDb21tb25cIiBoaWRkZW4gY2xhc3M9XCJuZy1oaWRlXCIgKm5nSWY9XCJpc0FwcGxpY2F0aW9uVHlwZVwiPjwvZGl2PlxuICAgIDxhcHAtc3Bpbm5lciBuYW1lPVwiZ2xvYmFsc3Bpbm5lclwiIGNsYXNzbmFtZT1cImdsb2JhbC1zcGlubmVyXCIgcm9sZT1cImFsZXJ0XCIgYXJpYS1saXZlPVwiYXNzZXJ0aXZlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJzcGlubmVyLmFyaWFsYWJlbCB8fCAnTG9hZGluZydcIiBbc2hvd109XCJzcGlubmVyLnNob3dcIiBbc3Bpbm5lcm1lc3NhZ2VzXT1cInNwaW5uZXIubWVzc2FnZXNcIj48L2FwcC1zcGlubmVyPlxuICAgIDxkaXYgd21EaWFsb2cgbmFtZT1cIm9BdXRoTG9naW5EaWFsb2dcIiB0aXRsZT1cIkFwcGxpY2F0aW9uIGlzIHJlcXVlc3RpbmcgeW91IHRvIHNpZ24gaW4gd2l0aFwiXG4gICAgICAgICBjbG9zZS5ldmVudD1cImNsb3NlT0F1dGhEaWFsb2coKVwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RpYWxvZ0JvZHk+XG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LWl0ZW1zXCI+XG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1pdGVtXCIgKm5nRm9yPVwibGV0IHByb3ZpZGVyIG9mIHByb3ZpZGVyc0NvbmZpZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuXCIgKGNsaWNrKT1cInByb3ZpZGVyLmludm9rZSgpXCI+e3twcm92aWRlci5uYW1lfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IHdtQ29uZmlybURpYWxvZyBuYW1lPVwiX2FwcC1jb25maXJtLWRpYWxvZ1wiIHRpdGxlLmJpbmQ9XCJ0aXRsZVwiIG1lc3NhZ2UuYmluZD1cIm1lc3NhZ2VcIiBva3RleHQuYmluZD1cIm9rdGV4dFwiXG4gICAgICAgICBjYW5jZWx0ZXh0LmJpbmQ9XCJjYW5jZWx0ZXh0XCIgY2xvc2FibGU9XCJmYWxzZVwiIGljb25jbGFzcy5iaW5kPVwiaWNvbmNsYXNzXCJcbiAgICAgICAgIGVzY2FwZS5ldmVudD1cIm9uRXNjYXBlKClcIiBvay5ldmVudD1cIm9uT2soKVwiIGNhbmNlbC5ldmVudD1cIm9uQ2FuY2VsKClcIiBjbG9zZS5ldmVudD1cIm9uQ2xvc2UoKVwiIG9wZW5lZC5ldmVudD1cIm9uT3BlbigpXCI+PC9kaXY+XG4gICAgPGRpdiAgKm5nSWY9XCIhaXNBcHBsaWNhdGlvblR5cGVcIiB3bUNvbmZpcm1EaWFsb2cgbmFtZT1cIlByZWZhYkNvbmZpcm1EaWFsb2dcIiB0aXRsZS5iaW5kPVwidGl0bGVcIiBtZXNzYWdlLmJpbmQ9XCJ0ZXh0XCIgb2t0ZXh0LmJpbmQ9XCJva0J1dHRvblRleHRcIlxuICAgICAgICAgY2FuY2VsdGV4dC5iaW5kPVwiY2FuY2VsQnV0dG9uVGV4dFwiIGNsb3NhYmxlPVwiZmFsc2VcIiBpY29uY2xhc3MuYmluZD1cImljb25jbGFzc1wiXG4gICAgICAgICBlc2NhcGUuZXZlbnQ9XCJvbkVzY2FwZSgpXCIgb2suZXZlbnQ9XCJvbk9rKClcIiBjYW5jZWwuZXZlbnQ9XCJvbkNhbmNlbCgpXCIgY2xvc2UuZXZlbnQ9XCJvbkNsb3NlKClcIiBvcGVuZWQuZXZlbnQ9XCJvbk9wZW4oKVwiPjwvZGl2PlxuICAgIDxkaXYgICpuZ0lmPVwiIWlzQXBwbGljYXRpb25UeXBlXCIgd21BbGVydERpYWxvZyBuYW1lPVwiUHJlZmFiQWxlcnREaWFsb2dcIiB0aXRsZS5iaW5kPVwidGl0bGVcIiBtZXNzYWdlLmJpbmQ9XCJ0ZXh0XCIgb2t0ZXh0LmJpbmQ9XCJva0J1dHRvblRleHRcIlxuICAgICAgICAgY2FuY2VsdGV4dC5iaW5kPVwiY2FuY2VsQnV0dG9uVGV4dFwiIGNsb3NhYmxlPVwiZmFsc2VcIiBpY29uY2xhc3MuYmluZD1cImljb25jbGFzc1wiXG4gICAgICAgICBlc2NhcGUuZXZlbnQ9XCJvbkVzY2FwZSgpXCIgb2suZXZlbnQ9XCJvbk9rKClcIiBjYW5jZWwuZXZlbnQ9XCJvbkNhbmNlbCgpXCIgY2xvc2UuZXZlbnQ9XCJvbkNsb3NlKClcIiBvcGVuZWQuZXZlbnQ9XCJvbk9wZW4oKVwiPjwvZGl2PlxuICAgIDxkaXYgd21BcHBFeHQ+PC9kaXY+XG4gICAgPGkgaWQ9XCJ3bS1tb2JpbGUtZGlzcGxheVwiPjwvaT5cbjwvbmctY29udGFpbmVyPlxuPCEtLUR1bW15IGNvbnRhaW5lciB0byBjcmVhdGUgdGhlIGNvbXBvbmVudCBkeW5hbWljYWxseS0tPlxuPG5nLWNvbnRhaW5lciAjZHluYW1pY0NvbXBvbmVudD48L25nLWNvbnRhaW5lcj5cbiJdfQ==
|
|
@@ -3747,7 +3747,7 @@ function AppComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
|
|
|
3747
3747
|
i0.ɵɵproperty("ngIf", !ctx_r0.isApplicationType);
|
|
3748
3748
|
} }
|
|
3749
3749
|
class AppComponent {
|
|
3750
|
-
constructor(_pipeProvider, _appRef, elRef, oAuthService, dialogService, spinnerService, ngZone, router, app, appManager
|
|
3750
|
+
constructor(_pipeProvider, _appRef, elRef, oAuthService, dialogService, spinnerService, ngZone, router, app, appManager) {
|
|
3751
3751
|
this.elRef = elRef;
|
|
3752
3752
|
this.oAuthService = oAuthService;
|
|
3753
3753
|
this.dialogService = dialogService;
|
|
@@ -3755,7 +3755,6 @@ class AppComponent {
|
|
|
3755
3755
|
this.router = router;
|
|
3756
3756
|
this.app = app;
|
|
3757
3757
|
this.appManager = appManager;
|
|
3758
|
-
this.customIconsLoaderService = customIconsLoaderService;
|
|
3759
3758
|
this.startApp = false;
|
|
3760
3759
|
this.isApplicationType = false;
|
|
3761
3760
|
this.spinner = { show: false, messages: [], arialabel: '' };
|
|
@@ -3763,7 +3762,6 @@ class AppComponent {
|
|
|
3763
3762
|
setPipeProvider(_pipeProvider);
|
|
3764
3763
|
setNgZone(ngZone);
|
|
3765
3764
|
setAppRef(_appRef);
|
|
3766
|
-
this.customIconsLoaderService.load();
|
|
3767
3765
|
this.isApplicationType = getWmProjectProperties().type === 'APPLICATION';
|
|
3768
3766
|
this.appManager.beforeAppReady();
|
|
3769
3767
|
// subscribe to OAuth changes
|
|
@@ -3880,7 +3878,7 @@ class AppComponent {
|
|
|
3880
3878
|
ngDoCheck() {
|
|
3881
3879
|
$invokeWatchers();
|
|
3882
3880
|
}
|
|
3883
|
-
static { this.ɵfac = function AppComponent_Factory(t) { return new (t || AppComponent)(i0.ɵɵdirectiveInject(PipeProvider), i0.ɵɵdirectiveInject(i0.ApplicationRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2$2.OAuthService), i0.ɵɵdirectiveInject(i1.AbstractDialogService), i0.ɵɵdirectiveInject(i1.AbstractSpinnerService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1$1.Router), i0.ɵɵdirectiveInject(i1.App), i0.ɵɵdirectiveInject(AppManagerService)
|
|
3881
|
+
static { this.ɵfac = function AppComponent_Factory(t) { return new (t || AppComponent)(i0.ɵɵdirectiveInject(PipeProvider), i0.ɵɵdirectiveInject(i0.ApplicationRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2$2.OAuthService), i0.ɵɵdirectiveInject(i1.AbstractDialogService), i0.ɵɵdirectiveInject(i1.AbstractSpinnerService), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1$1.Router), i0.ɵɵdirectiveInject(i1.App), i0.ɵɵdirectiveInject(AppManagerService)); }; }
|
|
3884
3882
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AppComponent, selectors: [["app-root"]], viewQuery: function AppComponent_Query(rf, ctx) { if (rf & 1) {
|
|
3885
3883
|
i0.ɵɵviewQuery(RouterOutlet, 5);
|
|
3886
3884
|
i0.ɵɵviewQuery(_c0, 5, ViewContainerRef);
|
|
@@ -3898,7 +3896,7 @@ class AppComponent {
|
|
|
3898
3896
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AppComponent, [{
|
|
3899
3897
|
type: Component,
|
|
3900
3898
|
args: [{ selector: 'app-root', encapsulation: ViewEncapsulation.None, template: "<ng-container *ngIf=\"startApp\">\n <router-outlet></router-outlet>\n <div wmContainer partialContainer content=\"Common\" hidden class=\"ng-hide\" *ngIf=\"isApplicationType\"></div>\n <app-spinner name=\"globalspinner\" classname=\"global-spinner\" role=\"alert\" aria-live=\"assertive\" [attr.aria-label]=\"spinner.arialabel || 'Loading'\" [show]=\"spinner.show\" [spinnermessages]=\"spinner.messages\"></app-spinner>\n <div wmDialog name=\"oAuthLoginDialog\" title=\"Application is requesting you to sign in with\"\n close.event=\"closeOAuthDialog()\">\n <ng-template #dialogBody>\n <ul class=\"list-items\">\n <li class=\"list-item\" *ngFor=\"let provider of providersConfig\">\n <button class=\"btn\" (click)=\"provider.invoke()\">{{provider.name}}</button>\n </li>\n </ul>\n </ng-template>\n </div>\n <div wmConfirmDialog name=\"_app-confirm-dialog\" title.bind=\"title\" message.bind=\"message\" oktext.bind=\"oktext\"\n canceltext.bind=\"canceltext\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div *ngIf=\"!isApplicationType\" wmConfirmDialog name=\"PrefabConfirmDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div *ngIf=\"!isApplicationType\" wmAlertDialog name=\"PrefabAlertDialog\" title.bind=\"title\" message.bind=\"text\" oktext.bind=\"okButtonText\"\n canceltext.bind=\"cancelButtonText\" closable=\"false\" iconclass.bind=\"iconclass\"\n escape.event=\"onEscape()\" ok.event=\"onOk()\" cancel.event=\"onCancel()\" close.event=\"onClose()\" opened.event=\"onOpen()\"></div>\n <div wmAppExt></div>\n <i id=\"wm-mobile-display\"></i>\n</ng-container>\n<!--Dummy container to create the component dynamically-->\n<ng-container #dynamicComponent></ng-container>\n" }]
|
|
3901
|
-
}], function () { return [{ type: PipeProvider }, { type: i0.ApplicationRef }, { type: i0.ElementRef }, { type: i2$2.OAuthService }, { type: i1.AbstractDialogService }, { type: i1.AbstractSpinnerService }, { type: i0.NgZone }, { type: i1$1.Router }, { type: i1.App }, { type: AppManagerService }
|
|
3899
|
+
}], function () { return [{ type: PipeProvider }, { type: i0.ApplicationRef }, { type: i0.ElementRef }, { type: i2$2.OAuthService }, { type: i1.AbstractDialogService }, { type: i1.AbstractSpinnerService }, { type: i0.NgZone }, { type: i1$1.Router }, { type: i1.App }, { type: AppManagerService }]; }, { routerOutlet: [{
|
|
3902
3900
|
type: ViewChild,
|
|
3903
3901
|
args: [RouterOutlet]
|
|
3904
3902
|
}], dynamicComponentContainerRef: [{
|