@veloceapps/sdk 4.0.17 → 4.0.19
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/bundles/veloce-sdk-cms.umd.js +12 -0
- package/bundles/veloce-sdk-cms.umd.js.map +1 -1
- package/bundles/veloce-sdk-core.umd.js +10 -4
- package/bundles/veloce-sdk-core.umd.js.map +1 -1
- package/bundles/veloce-sdk.umd.js +1 -1
- package/bundles/veloce-sdk.umd.js.map +1 -1
- package/cms/components/element.component.d.ts +6 -2
- package/cms/components/plugin.component.d.ts +4 -4
- package/core/services/context.service.d.ts +1 -0
- package/esm2015/cms/components/element.component.js +15 -2
- package/esm2015/cms/components/plugin.component.js +2 -2
- package/esm2015/core/services/context.service.js +7 -1
- package/esm2015/core/services/quote-draft.service.js +4 -4
- package/esm2015/src/components/header/header.component.js +2 -2
- package/fesm2015/veloce-sdk-cms.js +12 -0
- package/fesm2015/veloce-sdk-cms.js.map +1 -1
- package/fesm2015/veloce-sdk-core.js +9 -3
- package/fesm2015/veloce-sdk-core.js.map +1 -1
- package/fesm2015/veloce-sdk.js +1 -1
- package/fesm2015/veloce-sdk.js.map +1 -1
- package/package.json +1 -1
@@ -1,13 +1,17 @@
|
|
1
|
-
import { AfterViewInit, Injector, OnDestroy, OnInit } from '@angular/core';
|
1
|
+
import { AfterContentInit, AfterViewChecked, AfterViewInit, DoCheck, Injector, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
|
2
2
|
import { BehaviorSubject } from 'rxjs';
|
3
3
|
import { Entity } from '../engine/models/entity';
|
4
4
|
import { IPluginComponent } from './plugin.component';
|
5
|
-
export declare class ElementComponent extends Entity implements OnInit, AfterViewInit, OnDestroy {
|
5
|
+
export declare class ElementComponent extends Entity implements OnChanges, OnInit, DoCheck, AfterContentInit, AfterViewInit, AfterViewChecked, OnDestroy {
|
6
6
|
injector: Injector;
|
7
7
|
readonly model$: BehaviorSubject<any>;
|
8
8
|
readonly plugins: IPluginComponent[];
|
9
9
|
constructor(injector: Injector);
|
10
|
+
ngOnChanges(changes: SimpleChanges): void;
|
10
11
|
ngOnInit(): void;
|
12
|
+
ngDoCheck(): void;
|
13
|
+
ngAfterContentInit(): void;
|
11
14
|
ngAfterViewInit(): void;
|
15
|
+
ngAfterViewChecked(): void;
|
12
16
|
ngOnDestroy(): void;
|
13
17
|
}
|
@@ -1,11 +1,10 @@
|
|
1
|
+
import { AfterContentChecked, AfterContentInit, AfterViewChecked, AfterViewInit, DoCheck, OnChanges, OnDestroy, OnInit } from '@angular/core';
|
1
2
|
import { ElementComponent } from '.';
|
2
3
|
import { Plugin } from '../engine/models/plugin';
|
3
4
|
import * as i0 from "@angular/core";
|
4
|
-
|
5
|
+
declare type AngularHooks = OnChanges & OnInit & DoCheck & AfterContentInit & AfterContentChecked & AfterViewInit & AfterViewChecked & OnDestroy;
|
6
|
+
export interface IPluginComponent extends Partial<AngularHooks> {
|
5
7
|
host: ElementComponent;
|
6
|
-
ngOnInit?: () => void;
|
7
|
-
ngAfterViewInit?: () => void;
|
8
|
-
ngOnDestroy?: () => void;
|
9
8
|
}
|
10
9
|
export declare class PluginComponent extends Plugin implements IPluginComponent {
|
11
10
|
readonly host: ElementComponent;
|
@@ -13,3 +12,4 @@ export declare class PluginComponent extends Plugin implements IPluginComponent
|
|
13
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<PluginComponent, never>;
|
14
13
|
static ɵdir: i0.ɵɵDirectiveDeclaration<PluginComponent, never, never, {}, {}, never>;
|
15
14
|
}
|
15
|
+
export {};
|
@@ -11,6 +11,7 @@ export declare class ContextService {
|
|
11
11
|
resolve$(): Observable<ConfigurationContext>;
|
12
12
|
create(headerId: string, mode: ConfigurationContextMode): Observable<ConfigurationContext>;
|
13
13
|
update(partialContext: Partial<ConfigurationContext>): ConfigurationContext;
|
14
|
+
set(context: ConfigurationContext): ConfigurationContext;
|
14
15
|
delete(): void;
|
15
16
|
static ɵfac: i0.ɵɵFactoryDeclaration<ContextService, never>;
|
16
17
|
static ɵprov: i0.ɵɵInjectableDeclaration<ContextService>;
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { __decorate, __param } from "tslib";
|
2
|
-
|
2
|
+
/* eslint-disable @angular-eslint/no-conflicting-lifecycle */
|
3
|
+
import { ChangeDetectionStrategy, Component, Inject, Injector, } from '@angular/core';
|
3
4
|
import { BehaviorSubject } from 'rxjs';
|
4
5
|
import { Entity } from '../engine/models/entity';
|
5
6
|
let ElementComponent = class ElementComponent extends Entity {
|
@@ -9,12 +10,24 @@ let ElementComponent = class ElementComponent extends Entity {
|
|
9
10
|
this.model$ = new BehaviorSubject(undefined);
|
10
11
|
super.initPlugins();
|
11
12
|
}
|
13
|
+
ngOnChanges(changes) {
|
14
|
+
this.plugins.forEach(plugin => { var _a; return (_a = plugin.ngOnChanges) === null || _a === void 0 ? void 0 : _a.call(plugin, changes); });
|
15
|
+
}
|
12
16
|
ngOnInit() {
|
13
17
|
this.plugins.forEach(plugin => { var _a; return (_a = plugin.ngOnInit) === null || _a === void 0 ? void 0 : _a.call(plugin); });
|
14
18
|
}
|
19
|
+
ngDoCheck() {
|
20
|
+
this.plugins.forEach(plugin => { var _a; return (_a = plugin.ngDoCheck) === null || _a === void 0 ? void 0 : _a.call(plugin); });
|
21
|
+
}
|
22
|
+
ngAfterContentInit() {
|
23
|
+
this.plugins.forEach(plugin => { var _a; return (_a = plugin.ngAfterContentInit) === null || _a === void 0 ? void 0 : _a.call(plugin); });
|
24
|
+
}
|
15
25
|
ngAfterViewInit() {
|
16
26
|
this.plugins.forEach(plugin => { var _a; return (_a = plugin.ngAfterViewInit) === null || _a === void 0 ? void 0 : _a.call(plugin); });
|
17
27
|
}
|
28
|
+
ngAfterViewChecked() {
|
29
|
+
this.plugins.forEach(plugin => { var _a; return (_a = plugin.ngAfterViewChecked) === null || _a === void 0 ? void 0 : _a.call(plugin); });
|
30
|
+
}
|
18
31
|
ngOnDestroy() {
|
19
32
|
this.plugins.forEach(plugin => { var _a; return (_a = plugin.ngOnDestroy) === null || _a === void 0 ? void 0 : _a.call(plugin); });
|
20
33
|
}
|
@@ -28,4 +41,4 @@ ElementComponent = __decorate([
|
|
28
41
|
__param(0, Inject(Injector))
|
29
42
|
], ElementComponent);
|
30
43
|
export { ElementComponent };
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Nkay9jbXMvY29tcG9uZW50cy9lbGVtZW50LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsNkRBQTZEO0FBQzdELE9BQU8sRUFJTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULE1BQU0sRUFDTixRQUFRLEdBS1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFRakQsSUFBYSxnQkFBZ0IsR0FBN0IsTUFBYSxnQkFDWCxTQUFRLE1BQU07SUFNZCxZQUFxQyxRQUFrQjtRQUNyRCxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFEbUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUh2QyxXQUFNLEdBQUcsSUFBSSxlQUFlLENBQWtCLFNBQVMsQ0FBQyxDQUFDO1FBTXZFLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFdBQUMsT0FBQSxNQUFBLE1BQU0sQ0FBQyxXQUFXLCtDQUFsQixNQUFNLEVBQWUsT0FBTyxDQUFDLENBQUEsRUFBQSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFDLE9BQUEsTUFBQSxNQUFNLENBQUMsUUFBUSwrQ0FBZixNQUFNLENBQWEsQ0FBQSxFQUFBLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFdBQUMsT0FBQSxNQUFBLE1BQU0sQ0FBQyxTQUFTLCtDQUFoQixNQUFNLENBQWMsQ0FBQSxFQUFBLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFdBQUMsT0FBQSxNQUFBLE1BQU0sQ0FBQyxrQkFBa0IsK0NBQXpCLE1BQU0sQ0FBdUIsQ0FBQSxFQUFBLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLFdBQUMsT0FBQSxNQUFBLE1BQU0sQ0FBQyxlQUFlLCtDQUF0QixNQUFNLENBQW9CLENBQUEsRUFBQSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFDLE9BQUEsTUFBQSxNQUFNLENBQUMsa0JBQWtCLCtDQUF6QixNQUFNLENBQXVCLENBQUEsRUFBQSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFDLE9BQUEsTUFBQSxNQUFNLENBQUMsV0FBVywrQ0FBbEIsTUFBTSxDQUFnQixDQUFBLEVBQUEsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDRixDQUFBO0FBeENZLGdCQUFnQjtJQUw1QixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsRUFBRTtRQUNaLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO1FBQy9DLEdBQUcsRUFBRSxJQUFJO0tBQ1YsQ0FBQztJQVFhLFdBQUEsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0dBUGxCLGdCQUFnQixDQXdDNUI7U0F4Q1ksZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWNvbmZsaWN0aW5nLWxpZmVjeWNsZSAqL1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRG9DaGVjayxcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gJy4uL2VuZ2luZS9tb2RlbHMvZW50aXR5JztcbmltcG9ydCB7IElQbHVnaW5Db21wb25lbnQgfSBmcm9tICcuL3BsdWdpbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaml0OiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBFbGVtZW50Q29tcG9uZW50XG4gIGV4dGVuZHMgRW50aXR5XG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkluaXQsIERvQ2hlY2ssIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveVxue1xuICBwdWJsaWMgcmVhZG9ubHkgbW9kZWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnkgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHB1YmxpYyByZWFkb25seSBwbHVnaW5zITogSVBsdWdpbkNvbXBvbmVudFtdO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoSW5qZWN0b3IpIHB1YmxpYyBpbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICBzdXBlcihpbmplY3Rvcik7XG5cbiAgICBzdXBlci5pbml0UGx1Z2lucygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHRoaXMucGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiBwbHVnaW4ubmdPbkNoYW5nZXM/LihjaGFuZ2VzKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLm5nT25Jbml0Py4oKSk7XG4gIH1cblxuICBuZ0RvQ2hlY2soKTogdm9pZCB7XG4gICAgdGhpcy5wbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5uZ0RvQ2hlY2s/LigpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnBsdWdpbnMuZm9yRWFjaChwbHVnaW4gPT4gcGx1Z2luLm5nQWZ0ZXJDb250ZW50SW5pdD8uKCkpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiBwbHVnaW4ubmdBZnRlclZpZXdJbml0Py4oKSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgdGhpcy5wbHVnaW5zLmZvckVhY2gocGx1Z2luID0+IHBsdWdpbi5uZ0FmdGVyVmlld0NoZWNrZWQ/LigpKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMucGx1Z2lucy5mb3JFYWNoKHBsdWdpbiA9PiBwbHVnaW4ubmdPbkRlc3Ryb3k/LigpKTtcbiAgfVxufVxuIl19
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { Directive } from '@angular/core';
|
1
|
+
import { Directive, } from '@angular/core';
|
2
2
|
import { Plugin } from '../engine/models/plugin';
|
3
3
|
import * as i0 from "@angular/core";
|
4
4
|
import * as i1 from ".";
|
@@ -13,4 +13,4 @@ PluginComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "12.0.0", versio
|
|
13
13
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PluginComponent, decorators: [{
|
14
14
|
type: Directive
|
15
15
|
}], ctorParameters: function () { return [{ type: i1.ElementComponent }]; } });
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2Ntcy9jb21wb25lbnRzL3BsdWdpbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUtMLFNBQVMsR0FLVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7OztBQWdCakQsTUFBTSxPQUFPLGVBQWdCLFNBQVEsTUFBTTtJQUN6QyxZQUE0QixJQUFzQjtRQUNoRCxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFEYyxTQUFJLEdBQUosSUFBSSxDQUFrQjtJQUVsRCxDQUFDOzs2R0FIVSxlQUFlO2lHQUFmLGVBQWU7NEZBQWYsZUFBZTtrQkFEM0IsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyQ29udGVudENoZWNrZWQsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIEFmdGVyVmlld0luaXQsXG4gIERpcmVjdGl2ZSxcbiAgRG9DaGVjayxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFbGVtZW50Q29tcG9uZW50IH0gZnJvbSAnLic7XG5pbXBvcnQgeyBQbHVnaW4gfSBmcm9tICcuLi9lbmdpbmUvbW9kZWxzL3BsdWdpbic7XG5cbnR5cGUgQW5ndWxhckhvb2tzID0gT25DaGFuZ2VzICZcbiAgT25Jbml0ICZcbiAgRG9DaGVjayAmXG4gIEFmdGVyQ29udGVudEluaXQgJlxuICBBZnRlckNvbnRlbnRDaGVja2VkICZcbiAgQWZ0ZXJWaWV3SW5pdCAmXG4gIEFmdGVyVmlld0NoZWNrZWQgJlxuICBPbkRlc3Ryb3k7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBsdWdpbkNvbXBvbmVudCBleHRlbmRzIFBhcnRpYWw8QW5ndWxhckhvb2tzPiB7XG4gIGhvc3Q6IEVsZW1lbnRDb21wb25lbnQ7XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGNsYXNzIFBsdWdpbkNvbXBvbmVudCBleHRlbmRzIFBsdWdpbiBpbXBsZW1lbnRzIElQbHVnaW5Db21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgaG9zdDogRWxlbWVudENvbXBvbmVudCkge1xuICAgIHN1cGVyKGhvc3QpO1xuICB9XG59XG4iXX0=
|
@@ -31,6 +31,12 @@ export class ContextService {
|
|
31
31
|
this.context.next(updatedContext);
|
32
32
|
return updatedContext;
|
33
33
|
}
|
34
|
+
set(context) {
|
35
|
+
const originalContext = this.resolve();
|
36
|
+
const updatedContext = Object.assign(Object.assign({}, originalContext), context);
|
37
|
+
this.context.next(updatedContext);
|
38
|
+
return updatedContext;
|
39
|
+
}
|
34
40
|
delete() {
|
35
41
|
this.context.next(null);
|
36
42
|
}
|
@@ -41,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
41
47
|
type: Injectable,
|
42
48
|
args: [{ providedIn: 'root' }]
|
43
49
|
}], ctorParameters: function () { return [{ type: i1.ContextApiService }]; } });
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvY29yZS9zZXJ2aWNlcy9jb250ZXh0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQTRCLE1BQU0sY0FBYyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDL0IsT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBR2xELE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRmhELFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBOEIsSUFBSSxDQUFDLENBQUM7SUFFZCxDQUFDO0lBRTVELElBQUksYUFBYTtRQUNmLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1NBQ3BEO1FBRUQseUJBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUc7SUFDbkMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBK0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFnQixFQUFFLElBQThCO1FBQ3JELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUMzRCxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUMzRixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBMEIsQ0FBQyxDQUNsRCxDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sQ0FBQyxjQUE2QztRQUN6RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFdkMsTUFBTSxjQUFjLGlEQUNmLGVBQWUsR0FDZCxjQUF1QyxLQUMzQyxVQUFVLGtDQUNMLGVBQWUsQ0FBQyxVQUFVLEdBQzFCLGNBQWMsQ0FBQyxVQUFVLElBRS9CLENBQUM7UUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVsQyxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRU0sR0FBRyxDQUFDLE9BQTZCO1FBQ3RDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUV2QyxNQUFNLGNBQWMsbUNBQ2YsZUFBZSxHQUNmLE9BQU8sQ0FDWCxDQUFDO1FBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFbEMsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztJQUVNLE1BQU07UUFDWCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQixDQUFDOzs0R0E1RFUsY0FBYztnSEFBZCxjQUFjLGNBREQsTUFBTTs0RkFDbkIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250ZXh0QXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2UvYXBpJztcbmltcG9ydCB7IENvbmZpZ3VyYXRpb25Db250ZXh0LCBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUgfSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENvbnRleHRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBjb250ZXh0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb25maWd1cmF0aW9uQ29udGV4dCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY29udGV4dEFwaVNlcnZpY2U6IENvbnRleHRBcGlTZXJ2aWNlKSB7fVxuXG4gIGdldCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuY29udGV4dC52YWx1ZSk7XG4gIH1cblxuICByZXNvbHZlKCk6IENvbmZpZ3VyYXRpb25Db250ZXh0IHtcbiAgICBpZiAoIXRoaXMuY29udGV4dC52YWx1ZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb250ZXh0IGlzIG5vdCBpbml0aWFsaXplZCB5ZXQhJyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgLi4udGhpcy5jb250ZXh0LnZhbHVlIH07XG4gIH1cblxuICByZXNvbHZlJCgpOiBPYnNlcnZhYmxlPENvbmZpZ3VyYXRpb25Db250ZXh0PiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5waXBlKGZpbHRlcigoY3R4KTogY3R4IGlzIENvbmZpZ3VyYXRpb25Db250ZXh0ID0+IEJvb2xlYW4oY3R4KSkpO1xuICB9XG5cbiAgY3JlYXRlKGhlYWRlcklkOiBzdHJpbmcsIG1vZGU6IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZSk6IE9ic2VydmFibGU8Q29uZmlndXJhdGlvbkNvbnRleHQ+IHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0QXBpU2VydmljZS5nZXRDb250ZXh0KGhlYWRlcklkLCBtb2RlKS5waXBlKFxuICAgICAgdGFwKGNvbnRleHQgPT4gdGhpcy5jb250ZXh0Lm5leHQobWVyZ2UobmV3IENvbmZpZ3VyYXRpb25Db250ZXh0KGhlYWRlcklkLCBtb2RlKSwgY29udGV4dCkpKSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLnJlc29sdmUoKSBhcyBDb25maWd1cmF0aW9uQ29udGV4dCksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGUocGFydGlhbENvbnRleHQ6IFBhcnRpYWw8Q29uZmlndXJhdGlvbkNvbnRleHQ+KTogQ29uZmlndXJhdGlvbkNvbnRleHQge1xuICAgIGNvbnN0IG9yaWdpbmFsQ29udGV4dCA9IHRoaXMucmVzb2x2ZSgpO1xuXG4gICAgY29uc3QgdXBkYXRlZENvbnRleHQ6IENvbmZpZ3VyYXRpb25Db250ZXh0ID0ge1xuICAgICAgLi4ub3JpZ2luYWxDb250ZXh0LFxuICAgICAgLi4uKHBhcnRpYWxDb250ZXh0IGFzIENvbmZpZ3VyYXRpb25Db250ZXh0KSxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgLi4ub3JpZ2luYWxDb250ZXh0LnByb3BlcnRpZXMsXG4gICAgICAgIC4uLnBhcnRpYWxDb250ZXh0LnByb3BlcnRpZXMsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICB0aGlzLmNvbnRleHQubmV4dCh1cGRhdGVkQ29udGV4dCk7XG5cbiAgICByZXR1cm4gdXBkYXRlZENvbnRleHQ7XG4gIH1cblxuICBwdWJsaWMgc2V0KGNvbnRleHQ6IENvbmZpZ3VyYXRpb25Db250ZXh0KTogQ29uZmlndXJhdGlvbkNvbnRleHQge1xuICAgIGNvbnN0IG9yaWdpbmFsQ29udGV4dCA9IHRoaXMucmVzb2x2ZSgpO1xuXG4gICAgY29uc3QgdXBkYXRlZENvbnRleHQ6IENvbmZpZ3VyYXRpb25Db250ZXh0ID0ge1xuICAgICAgLi4ub3JpZ2luYWxDb250ZXh0LFxuICAgICAgLi4uY29udGV4dCxcbiAgICB9O1xuXG4gICAgdGhpcy5jb250ZXh0Lm5leHQodXBkYXRlZENvbnRleHQpO1xuXG4gICAgcmV0dXJuIHVwZGF0ZWRDb250ZXh0O1xuICB9XG5cbiAgcHVibGljIGRlbGV0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHQubmV4dChudWxsKTtcbiAgfVxufVxuIl19
|
@@ -42,10 +42,10 @@ export class QuoteDraftService {
|
|
42
42
|
this.quoteSubj$.next(null);
|
43
43
|
}
|
44
44
|
init(quoteId, params) {
|
45
|
-
return zip(this.
|
45
|
+
return zip(this.quoteApiService.getQuoteDraft(quoteId, params), this.priceApiService.getPriceLists()).pipe(tap(([quote, allPriceLists]) => {
|
46
46
|
this.allPriceLists = allPriceLists;
|
47
47
|
this.quoteSubj$.next(quote);
|
48
|
-
this.context.update(
|
48
|
+
this.context.update(quote.context);
|
49
49
|
this.populateActivePriceLists$();
|
50
50
|
}), map(() => noop()), take(1));
|
51
51
|
}
|
@@ -62,7 +62,7 @@ export class QuoteDraftService {
|
|
62
62
|
return;
|
63
63
|
}
|
64
64
|
if (update.context) {
|
65
|
-
this.context.
|
65
|
+
this.context.set(update.context);
|
66
66
|
}
|
67
67
|
this.quoteSubj$.next(Object.assign(Object.assign({}, quoteDraft), update));
|
68
68
|
}
|
@@ -198,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
198
198
|
type: Injectable,
|
199
199
|
args: [{ providedIn: 'root' }]
|
200
200
|
}], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i2.QuoteApiService }, { type: i2.PriceApiService }]; } });
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGUtZHJhZnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvc2VydmljZXMvcXVvdGUtZHJhZnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBaUQsTUFBTSxjQUFjLENBQUM7QUFFdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFJdEYsTUFBTSxPQUFPLGlCQUFpQjtJQTJCNUIsWUFDVSxPQUF1QixFQUN2QixlQUFnQyxFQUNoQyxlQUFnQztRQUZoQyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBN0JsQyxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQW9CLElBQUksQ0FBQyxDQUFDO1FBQzFELGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUNoRCx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQWtCMUQsa0JBQWEsR0FBZ0IsRUFBRSxDQUFDO1FBQ2hDLG9CQUFlLEdBQWdCLEVBQUUsQ0FBQztRQUNsQyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsV0FBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7UUFRN0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFB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TyxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsVUFBVSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1NBQ2hHO2FBQU07WUFDTCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1NBQy9CO0lBQ0gsQ0FBQzs7K0dBdFJVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBREosTUFBTTs0RkFDbkIsaUJBQWlCO2tCQUQ3QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByaWNlQXBpU2VydmljZSwgUXVvdGVBcGlTZXJ2aWNlIH0gZnJvbSAnQHZlbG9jZS9hcGknO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLCBMaW5lSXRlbSwgUHJpY2VMaXN0LCBQcmljZVN1bW1hcnksIFF1b3RlRHJhZnQgfSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGNvbWJpbmVMYXRlc3QsIG5vb3AsIE9ic2VydmFibGUsIHppcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHNoYXJlUmVwbGF5LCBza2lwLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi9jb250ZXh0LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFF1b3RlRHJhZnRTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBxdW90ZVN1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxRdW90ZURyYWZ0IHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVzZXRTdWJqJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByaXZhdGUgaXNJbml0aWFsaXplZFN1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyBnZXQgaXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0luaXRpYWxpemVkU3ViaiQuZ2V0VmFsdWUoKTtcbiAgfVxuICBwdWJsaWMgc2V0IGlzSW5pdGlhbGl6ZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5pc0luaXRpYWxpemVkICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5pc0luaXRpYWxpemVkU3ViaiQubmV4dCh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBoYXNBc3NldHMkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLnF1b3RlU3ViaiQucGlwZShtYXAoKCkgPT4gdGhpcy5oYXNBc3NldHMpKTtcbiAgfVxuICBwdWJsaWMgZ2V0IGhhc0Fzc2V0cygpOiBib29sZWFuIHtcbiAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZVN1YmokLnZhbHVlO1xuICAgIHJldHVybiBCb29sZWFuKHF1b3RlRHJhZnQgJiYgcXVvdGVEcmFmdC5jdXJyZW50U3RhdGUubGVuZ3RoID4gMCk7XG4gIH1cblxuICBwdWJsaWMgYWxsUHJpY2VMaXN0czogUHJpY2VMaXN0W10gPSBbXTtcbiAgcHVibGljIGFzc2V0UHJpY2VMaXN0czogUHJpY2VMaXN0W10gPSBbXTtcbiAgcHVibGljIGhhc1Vuc2F2ZWRDaGFuZ2VzID0gZmFsc2U7XG4gIHB1YmxpYyByZXNldCQgPSB0aGlzLnJlc2V0U3ViaiQuYXNPYnNlcnZhYmxlKCk7XG4gIHB1YmxpYyBhY3RpdmVQcmljZUxpc3QkOiBPYnNlcnZhYmxlPFByaWNlTGlzdCB8IG51bGw+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dDogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBxdW90ZUFwaVNlcnZpY2U6IFF1b3RlQXBpU2VydmljZSxcbiAgICBwcml2YXRlIHByaWNlQXBpU2VydmljZTogUHJpY2VBcGlTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLmFjdGl2ZVByaWNlTGlzdCQgPSB0aGlzLmNvbnRleHQucmVzb2x2ZSQoKS5waXBlKFxuICAgICAgbWFwKGN0eCA9PiB0aGlzLmFsbFByaWNlTGlzdHMuZmluZChwcmljZUxpc3QgPT4gcHJpY2VMaXN0LmlkID09PSBjdHgucHJvcGVydGllcy5QcmljZUxpc3RJZCkpLFxuICAgICAgbWFwKHByaWNlTGlzdCA9PiBwcmljZUxpc3QgPz8gbnVsbCksXG4gICAgKTtcblxuICAgIHRoaXMuaXNJbml0aWFsaXplZFN1YmokXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKGlzSW5pdGlhbGl6ZWQgPT4gaXNJbml0aWFsaXplZCksXG4gICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLnF1b3RlU3ViaiQuYXNPYnNlcnZhYmxlKCkpLFxuICAgICAgICBza2lwKDEpLFxuICAgICAgICB0YXAocXVvdGUgPT4gdGhpcy5tYXJrQXNVcGRhdGVkKHF1b3RlKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgdGhpcy5yZXNldFN1YmokLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5xdW90ZVN1YmokLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdChxdW90ZUlkOiBzdHJpbmcsIHBhcmFtczogRGljdGlvbmFyeTxzdHJpbmc+KTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHppcChcbiAgICAgIHRoaXMuY29udGV4dC5yZXNvbHZlJCgpLFxuICAgICAgdGhpcy5xdW90ZUFwaVNlcnZpY2UuZ2V0UXVvdGVEcmFmdChxdW90ZUlkLCBwYXJhbXMpLFxuICAgICAgdGhpcy5wcmljZUFwaVNlcnZpY2UuZ2V0UHJpY2VMaXN0cygpLFxuICAgICkucGlwZShcbiAgICAgIHRhcCgoW2NvbnRleHQsIHF1b3RlLCBhbGxQcmljZUxpc3RzXSkgPT4ge1xuICAgICAgICB0aGlzLmFsbFByaWNlTGlzdHMgPSBhbGxQcmljZUxpc3RzO1xuICAgICAgICB0aGlzLnF1b3RlU3ViaiQubmV4dChxdW90ZSk7XG5cbiAgICAgICAgdGhpcy5jb250ZXh0LnVwZGF0ZSh7XG4gICAgICAgICAgLi4uY29udGV4dCxcbiAgICAgICAgICAuLi5xdW90ZS5jb250ZXh0LFxuICAgICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIC4uLmNvbnRleHQucHJvcGVydGllcyxcbiAgICAgICAgICAgIC4uLnF1b3RlLmNvbnRleHQucHJvcGVydGllcyxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnBvcHVsYXRlQWN0aXZlUHJpY2VMaXN0cyQoKTtcbiAgICAgIH0pLFxuICAgICAgbWFwKCgpID0+IG5vb3AoKSksXG4gICAgICB0YWtlKDEpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc2V0Q3VycmVudExpbmVJdGVtU3RhdGUobGluZUl0ZW1zOiBMaW5lSXRlbVtdKTogdm9pZCB7XG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVTdWJqJC52YWx1ZTtcblxuICAgIGlmICghcXVvdGVEcmFmdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucXVvdGVTdWJqJC5uZXh0KHtcbiAgICAgIC4uLnF1b3RlRHJhZnQsXG4gICAgICBjdXJyZW50U3RhdGU6IGxpbmVJdGVtcyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVRdW90ZURyYWZ0KHVwZGF0ZTogUGFydGlhbDxRdW90ZURyYWZ0Pik6IHZvaWQge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlU3ViaiQudmFsdWU7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlLmNvbnRleHQpIHtcbiAgICAgIHRoaXMuY29udGV4dC51cGRhdGUodXBkYXRlLmNvbnRleHQpO1xuICAgIH1cblxuICAgIHRoaXMucXVvdGVTdWJqJC5uZXh0KHtcbiAgICAgIC4uLnF1b3RlRHJhZnQsXG4gICAgICAuLi51cGRhdGUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQnlQcmljZVN1bW1hcnkocHJpY2VTdW1tYXJ5OiBQcmljZVN1bW1hcnkpOiB2b2lkIHtcbiAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZVN1YmokLnZhbHVlO1xuXG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlZEN1cnJlbnRTdGF0ZSA9IHRoaXMuY3VycmVudFN0YXRlLm1hcChsaW5lSXRlbSA9PiB7XG4gICAgICBjb25zdCB1cGRhdGVkID0gcHJpY2VTdW1tYXJ5LmxpbmVJdGVtcy5maW5kKGxpID0+IGxpLmlkID09PSBsaW5lSXRlbS5pZCk7XG4gICAgICByZXR1cm4gdXBkYXRlZCA/PyBsaW5lSXRlbTtcbiAgICB9KTtcblxuICAgIHRoaXMucXVvdGVTdWJqJC5uZXh0KHtcbiAgICAgIC4uLnF1b3RlRHJhZnQsXG4gICAgICBjdXJyZW50U3RhdGU6IHVwZGF0ZWRDdXJyZW50U3RhdGUsXG4gICAgICB0b3RhbFByaWNlczogcHJpY2VTdW1tYXJ5LnRvdGFsUHJpY2VzLFxuICAgICAgYXBwcm92YWxJdGVtczogcHJpY2VTdW1tYXJ5LmFwcHJvdmFsSXRlbXMsXG4gICAgfSk7XG4gIH1cblxuICBnZXQgcXVvdGVEcmFmdCQoKTogT2JzZXJ2YWJsZTxRdW90ZURyYWZ0PiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW3RoaXMucXVvdGVTdWJqJCwgdGhpcy5jb250ZXh0LnJlc29sdmUkKCldKS5waXBlKFxuICAgICAgbWFwKCgpID0+IHRoaXMucXVvdGVEcmFmdCksXG4gICAgICBmaWx0ZXIoKHF1b3RlKTogcXVvdGUgaXMgUXVvdGVEcmFmdCA9PiBCb29sZWFuKHF1b3RlKSksXG4gICAgICBzaGFyZVJlcGxheSgpLFxuICAgICk7XG4gIH1cblxuICBnZXQgcXVvdGVEcmFmdCgpOiBRdW90ZURyYWZ0IHwgbnVsbCB7XG4gICAgY29uc3QgcXVvdGUgPSB0aGlzLnF1b3RlU3ViaiQudmFsdWU7XG5cbiAgICBpZiAoIXF1b3RlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucXVvdGUsXG4gICAgICBjb250ZXh0OiB0aGlzLmNvbnRleHQucmVzb2x2ZSgpLFxuICAgIH07XG4gIH1cblxuICBnZXQgcXVvdGVEcmFmdEZvckFjdGl2ZVByaWNlTGlzdCgpOiBRdW90ZURyYWZ0IHwgbnVsbCB7XG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVEcmFmdDtcblxuICAgIGlmICghcXVvdGVEcmFmdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnF1b3RlRHJhZnQsXG4gICAgICBpbml0aWFsU3RhdGU6IHRoaXMuZmlsdGVyQnlBY3RpdmVQcmljZUxpc3QocXVvdGVEcmFmdC5pbml0aWFsU3RhdGUpLFxuICAgICAgY3VycmVudFN0YXRlOiB0aGlzLmZpbHRlckJ5QWN0aXZlUHJpY2VMaXN0KHF1b3RlRHJhZnQuY3VycmVudFN0YXRlKSxcbiAgICB9O1xuICB9XG5cbiAgZ2V0IGN1cnJlbnRTdGF0ZSQoKTogT2JzZXJ2YWJsZTxMaW5lSXRlbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdCQucGlwZShtYXAocXVvdGUgPT4gcXVvdGUuY3VycmVudFN0YXRlKSk7XG4gIH1cblxuICBnZXQgY3VycmVudFN0YXRlKCk6IExpbmVJdGVtW10ge1xuICAgIHJldHVybiB0aGlzLnF1b3RlRHJhZnQ/LmN1cnJlbnRTdGF0ZSA/PyBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJlYW0gb2YgYWN0aXZlQ3VycmVudFN0YXRlXG4gICAqL1xuICBnZXQgYWN0aXZlQ3VycmVudFN0YXRlJCgpOiBPYnNlcnZhYmxlPExpbmVJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0JC5waXBlKG1hcCgoKSA9PiB0aGlzLmFjdGl2ZUN1cnJlbnRTdGF0ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGFjdGl2ZUN1cnJlbnRTdGF0ZSBpcyBjdXJyZW50U3RhdGUgcGFzc2VkIHRocm91Z2ggYWRkaXRpb25hbCBmaWx0ZXJzXG4gICAqL1xuICBnZXQgYWN0aXZlQ3VycmVudFN0YXRlKCk6IExpbmVJdGVtW10ge1xuICAgIGxldCBjdXJyZW50U3RhdGUgPSB0aGlzLnF1b3RlRHJhZnQ/LmN1cnJlbnRTdGF0ZSA/PyBbXTtcblxuICAgIGN1cnJlbnRTdGF0ZSA9IHRoaXMuZmlsdGVyQnlBY3RpdmVQcmljZUxpc3QoY3VycmVudFN0YXRlKTtcblxuICAgIHJldHVybiBjdXJyZW50U3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogU3RyZWFtIG9mIGFjdGl2ZUluaXRpYWxTdGF0ZVxuICAgKi9cbiAgZ2V0IGFjdGl2ZUluaXRpYWxTdGF0ZSQoKTogT2JzZXJ2YWJsZTxMaW5lSXRlbVtdPiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdCQucGlwZShtYXAoKCkgPT4gdGhpcy5hY3RpdmVJbml0aWFsU3RhdGUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhY3RpdmVJbml0aWFsU3RhdGUgaXMgaW5pdGlhbFN0YXRlIHBhc3NlZCB0aHJvdWdoIGFkZGl0aW9uYWwgZmlsdGVyc1xuICAgKi9cbiAgZ2V0IGFjdGl2ZUluaXRpYWxTdGF0ZSgpOiBMaW5lSXRlbVtdIHtcbiAgICBjb25zdCBjdHggPSB0aGlzLmNvbnRleHQucmVzb2x2ZSgpO1xuICAgIGxldCBpbml0aWFsU3RhdGUgPSB0aGlzLnF1b3RlRHJhZnQ/LmluaXRpYWxTdGF0ZSA/PyBbXTtcblxuICAgIGlmIChjdHgubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQpIHtcbiAgICAgIGluaXRpYWxTdGF0ZSA9IHRoaXMuZmlsdGVyQnlBY3RpdmVQcmljZUxpc3QoaW5pdGlhbFN0YXRlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5pdGlhbFN0YXRlO1xuICB9XG5cbiAgZ2V0IGlzU3RhbmRhbG9uZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250ZXh0LnJlc29sdmUoKS5wcm9wZXJ0aWVzLnN0YW5kYWxvbmUgPT09ICd0cnVlJztcbiAgfVxuXG4gIGdldCBpc1N0YW5kYWxvbmUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucmVzb2x2ZSQoKS5waXBlKG1hcCgoKSA9PiB0aGlzLmlzU3RhbmRhbG9uZSkpO1xuICB9XG5cbiAgcHVibGljIGlzRWRpdE1vZGUkKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucmVzb2x2ZSQoKS5waXBlKG1hcCgoKSA9PiB0aGlzLmlzRWRpdE1vZGUoKSkpO1xuICB9XG5cbiAgcHVibGljIGlzRWRpdE1vZGUoKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29udGV4dCA9IHRoaXMuY29udGV4dC5yZXNvbHZlKCk7XG5cbiAgICBpZiAoY29udGV4dC5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuQUNDT1VOVCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGNvbnRleHQubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLlFVT1RFKSB7XG4gICAgICByZXR1cm4gY29udGV4dC5wcm9wZXJ0aWVzLlN0YXR1cyA9PT0gJ0RyYWZ0JztcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlQWN0aXZlUHJpY2VMaXN0KHByaWNlTGlzdElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHQudXBkYXRlKHsgcHJvcGVydGllczogeyBQcmljZUxpc3RJZDogcHJpY2VMaXN0SWQgfSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcG9wdWxhdGVBY3RpdmVQcmljZUxpc3RzJCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdHggPSB0aGlzLmNvbnRleHQucmVzb2x2ZSgpO1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnQ7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJbiBBQ0NPVU5UIG1vZGUgcG9wdWxhdGUgcHJpY2UgbGlzdHMgZnJvbSByZWxhdGVkIGFzc2V0c1xuICAgIGlmIChjdHgubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQpIHtcbiAgICAgIC8vIFBvcHVsYXRlIGxpc3Qgb2YgcHJpY2UgbGlzdHNcbiAgICAgIHRoaXMuYXNzZXRQcmljZUxpc3RzID0gcXVvdGVEcmFmdC5jdXJyZW50U3RhdGVcbiAgICAgICAgLm1hcCgoeyBwcmljZUxpc3RJZCB9KSA9PiBwcmljZUxpc3RJZClcbiAgICAgICAgLnJlZHVjZTxQcmljZUxpc3RbXT4oKHRydW5rLCBwcmljZUxpc3RJZCkgPT4ge1xuICAgICAgICAgIGlmICghcHJpY2VMaXN0SWQgfHwgdHJ1bmsuc29tZShpdGVtID0+IGl0ZW0uaWQgPT09IHByaWNlTGlzdElkKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydW5rO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAuLi50cnVuayxcbiAgICAgICAgICAgIHsgaWQ6IHByaWNlTGlzdElkLCBuYW1lOiB0aGlzLmFsbFByaWNlTGlzdHMuZmluZChpdGVtID0+IGl0ZW0uaWQgPT09IHByaWNlTGlzdElkKT8ubmFtZSA/PyAnJyB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH0sIFtdKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZpbHRlckJ5QWN0aXZlUHJpY2VMaXN0KGxpbmVJdGVtczogTGluZUl0ZW1bXSk6IExpbmVJdGVtW10ge1xuICAgIGNvbnN0IGN0eCA9IHRoaXMuY29udGV4dC5yZXNvbHZlKCk7XG5cbiAgICByZXR1cm4gbGluZUl0ZW1zLmZpbHRlcihsaSA9PiAhbGkucHJpY2VMaXN0SWQgfHwgbGkucHJpY2VMaXN0SWQgPT09IGN0eC5wcm9wZXJ0aWVzLlByaWNlTGlzdElkKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFya0FzVXBkYXRlZChxdW90ZTogUXVvdGVEcmFmdCB8IG51bGwpOiB2b2lkIHtcbiAgICBpZiAocXVvdGU/LmNvbnRleHQucHJvcGVydGllcy5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuQUNDT1VOVCkge1xuICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9ICEhcXVvdGUgJiYgIXF1b3RlLmN1cnJlbnRTdGF0ZS5ldmVyeShsaSA9PiBsaS5hY3Rpb25Db2RlID09PSAnRVhJU1QnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oYXNVbnNhdmVkQ2hhbmdlcyA9IHRydWU7XG4gICAgfVxuICB9XG59XG4iXX0=
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVvdGUtZHJhZnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL2NvcmUvc2VydmljZXMvcXVvdGUtZHJhZnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSx3QkFBd0IsRUFBaUQsTUFBTSxjQUFjLENBQUM7QUFFdkcsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFJdEYsTUFBTSxPQUFPLGlCQUFpQjtJQTJCNUIsWUFDVSxPQUF1QixFQUN2QixlQUFnQyxFQUNoQyxlQUFnQztRQUZoQyxZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBN0JsQyxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQW9CLElBQUksQ0FBQyxDQUFDO1FBQzFELGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBVSxJQUFJLENBQUMsQ0FBQztRQUNoRCx1QkFBa0IsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQWtCMUQsa0JBQWEsR0FBZ0IsRUFBRSxDQUFDO1FBQ2hDLG9CQUFlLEdBQWdCLEVBQUUsQ0FBQztRQUNsQyxzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsV0FBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7UUFRN0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFB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QUFVLEtBQUssT0FBTyxDQUFDLENBQUM7U0FDaEc7YUFBTTtZQUNMLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7U0FDL0I7SUFDSCxDQUFDOzsrR0EzUVUsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FESixNQUFNOzRGQUNuQixpQkFBaUI7a0JBRDdCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUHJpY2VBcGlTZXJ2aWNlLCBRdW90ZUFwaVNlcnZpY2UgfSBmcm9tICdAdmVsb2NlL2FwaSc7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUsIExpbmVJdGVtLCBQcmljZUxpc3QsIFByaWNlU3VtbWFyeSwgUXVvdGVEcmFmdCB9IGZyb20gJ0B2ZWxvY2UvY29yZSc7XG5pbXBvcnQgeyBEaWN0aW9uYXJ5IH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbm9vcCwgT2JzZXJ2YWJsZSwgemlwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc2hhcmVSZXBsYXksIHNraXAsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuL2NvbnRleHQuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUXVvdGVEcmFmdFNlcnZpY2Uge1xuICBwcml2YXRlIHF1b3RlU3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFF1b3RlRHJhZnQgfCBudWxsPihudWxsKTtcbiAgcHJpdmF0ZSByZXNldFN1YmokID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcbiAgcHJpdmF0ZSBpc0luaXRpYWxpemVkU3ViaiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIGdldCBpc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5pdGlhbGl6ZWRTdWJqJC5nZXRWYWx1ZSgpO1xuICB9XG4gIHB1YmxpYyBzZXQgaXNJbml0aWFsaXplZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh0aGlzLmlzSW5pdGlhbGl6ZWQgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLmlzSW5pdGlhbGl6ZWRTdWJqJC5uZXh0KHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0Fzc2V0cyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVTdWJqJC5waXBlKG1hcCgoKSA9PiB0aGlzLmhhc0Fzc2V0cykpO1xuICB9XG4gIHB1YmxpYyBnZXQgaGFzQXNzZXRzKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlU3ViaiQudmFsdWU7XG4gICAgcmV0dXJuIEJvb2xlYW4ocXVvdGVEcmFmdCAmJiBxdW90ZURyYWZ0LmN1cnJlbnRTdGF0ZS5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIHB1YmxpYyBhbGxQcmljZUxpc3RzOiBQcmljZUxpc3RbXSA9IFtdO1xuICBwdWJsaWMgYXNzZXRQcmljZUxpc3RzOiBQcmljZUxpc3RbXSA9IFtdO1xuICBwdWJsaWMgaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZTtcbiAgcHVibGljIHJlc2V0JCA9IHRoaXMucmVzZXRTdWJqJC5hc09ic2VydmFibGUoKTtcbiAgcHVibGljIGFjdGl2ZVByaWNlTGlzdCQ6IE9ic2VydmFibGU8UHJpY2VMaXN0IHwgbnVsbD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb250ZXh0OiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIHF1b3RlQXBpU2VydmljZTogUXVvdGVBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgcHJpY2VBcGlTZXJ2aWNlOiBQcmljZUFwaVNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuYWN0aXZlUHJpY2VMaXN0JCA9IHRoaXMuY29udGV4dC5yZXNvbHZlJCgpLnBpcGUoXG4gICAgICBtYXAoY3R4ID0+IHRoaXMuYWxsUHJpY2VMaXN0cy5maW5kKHByaWNlTGlzdCA9PiBwcmljZUxpc3QuaWQgPT09IGN0eC5wcm9wZXJ0aWVzLlByaWNlTGlzdElkKSksXG4gICAgICBtYXAocHJpY2VMaXN0ID0+IHByaWNlTGlzdCA/PyBudWxsKSxcbiAgICApO1xuXG4gICAgdGhpcy5pc0luaXRpYWxpemVkU3ViaiRcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoaXNJbml0aWFsaXplZCA9PiBpc0luaXRpYWxpemVkKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMucXVvdGVTdWJqJC5hc09ic2VydmFibGUoKSksXG4gICAgICAgIHNraXAoMSksXG4gICAgICAgIHRhcChxdW90ZSA9PiB0aGlzLm1hcmtBc1VwZGF0ZWQocXVvdGUpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldCgpIHtcbiAgICB0aGlzLnJlc2V0U3ViaiQubmV4dCh0cnVlKTtcbiAgICB0aGlzLnF1b3RlU3ViaiQubmV4dChudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0KHF1b3RlSWQ6IHN0cmluZywgcGFyYW1zOiBEaWN0aW9uYXJ5PHN0cmluZz4pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gemlwKHRoaXMucXVvdGVBcGlTZXJ2aWNlLmdldFF1b3RlRHJhZnQocXVvdGVJZCwgcGFyYW1zKSwgdGhpcy5wcmljZUFwaVNlcnZpY2UuZ2V0UHJpY2VMaXN0cygpKS5waXBlKFxuICAgICAgdGFwKChbcXVvdGUsIGFsbFByaWNlTGlzdHNdKSA9PiB7XG4gICAgICAgIHRoaXMuYWxsUHJpY2VMaXN0cyA9IGFsbFByaWNlTGlzdHM7XG4gICAgICAgIHRoaXMucXVvdGVTdWJqJC5uZXh0KHF1b3RlKTtcblxuICAgICAgICB0aGlzLmNvbnRleHQudXBkYXRlKHF1b3RlLmNvbnRleHQpO1xuXG4gICAgICAgIHRoaXMucG9wdWxhdGVBY3RpdmVQcmljZUxpc3RzJCgpO1xuICAgICAgfSksXG4gICAgICBtYXAoKCkgPT4gbm9vcCgpKSxcbiAgICAgIHRha2UoMSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRDdXJyZW50TGluZUl0ZW1TdGF0ZShsaW5lSXRlbXM6IExpbmVJdGVtW10pOiB2b2lkIHtcbiAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZVN1YmokLnZhbHVlO1xuXG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5xdW90ZVN1YmokLm5leHQoe1xuICAgICAgLi4ucXVvdGVEcmFmdCxcbiAgICAgIGN1cnJlbnRTdGF0ZTogbGluZUl0ZW1zLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHVwZGF0ZVF1b3RlRHJhZnQodXBkYXRlOiBQYXJ0aWFsPFF1b3RlRHJhZnQ+KTogdm9pZCB7XG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVTdWJqJC52YWx1ZTtcblxuICAgIGlmICghcXVvdGVEcmFmdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh1cGRhdGUuY29udGV4dCkge1xuICAgICAgdGhpcy5jb250ZXh0LnNldCh1cGRhdGUuY29udGV4dCk7XG4gICAgfVxuXG4gICAgdGhpcy5xdW90ZVN1YmokLm5leHQoe1xuICAgICAgLi4ucXVvdGVEcmFmdCxcbiAgICAgIC4uLnVwZGF0ZSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVCeVByaWNlU3VtbWFyeShwcmljZVN1bW1hcnk6IFByaWNlU3VtbWFyeSk6IHZvaWQge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlU3ViaiQudmFsdWU7XG5cbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCB1cGRhdGVkQ3VycmVudFN0YXRlID0gdGhpcy5jdXJyZW50U3RhdGUubWFwKGxpbmVJdGVtID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBwcmljZVN1bW1hcnkubGluZUl0ZW1zLmZpbmQobGkgPT4gbGkuaWQgPT09IGxpbmVJdGVtLmlkKTtcbiAgICAgIHJldHVybiB1cGRhdGVkID8/IGxpbmVJdGVtO1xuICAgIH0pO1xuXG4gICAgdGhpcy5xdW90ZVN1YmokLm5leHQoe1xuICAgICAgLi4ucXVvdGVEcmFmdCxcbiAgICAgIGN1cnJlbnRTdGF0ZTogdXBkYXRlZEN1cnJlbnRTdGF0ZSxcbiAgICAgIHRvdGFsUHJpY2VzOiBwcmljZVN1bW1hcnkudG90YWxQcmljZXMsXG4gICAgICBhcHByb3ZhbEl0ZW1zOiBwcmljZVN1bW1hcnkuYXBwcm92YWxJdGVtcyxcbiAgICB9KTtcbiAgfVxuXG4gIGdldCBxdW90ZURyYWZ0JCgpOiBPYnNlcnZhYmxlPFF1b3RlRHJhZnQ+IHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5xdW90ZVN1YmokLCB0aGlzLmNvbnRleHQucmVzb2x2ZSQoKV0pLnBpcGUoXG4gICAgICBtYXAoKCkgPT4gdGhpcy5xdW90ZURyYWZ0KSxcbiAgICAgIGZpbHRlcigocXVvdGUpOiBxdW90ZSBpcyBRdW90ZURyYWZ0ID0+IEJvb2xlYW4ocXVvdGUpKSxcbiAgICAgIHNoYXJlUmVwbGF5KCksXG4gICAgKTtcbiAgfVxuXG4gIGdldCBxdW90ZURyYWZ0KCk6IFF1b3RlRHJhZnQgfCBudWxsIHtcbiAgICBjb25zdCBxdW90ZSA9IHRoaXMucXVvdGVTdWJqJC52YWx1ZTtcblxuICAgIGlmICghcXVvdGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5xdW90ZSxcbiAgICAgIGNvbnRleHQ6IHRoaXMuY29udGV4dC5yZXNvbHZlKCksXG4gICAgfTtcbiAgfVxuXG4gIGdldCBxdW90ZURyYWZ0Rm9yQWN0aXZlUHJpY2VMaXN0KCk6IFF1b3RlRHJhZnQgfCBudWxsIHtcbiAgICBjb25zdCBxdW90ZURyYWZ0ID0gdGhpcy5xdW90ZURyYWZ0O1xuXG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucXVvdGVEcmFmdCxcbiAgICAgIGluaXRpYWxTdGF0ZTogdGhpcy5maWx0ZXJCeUFjdGl2ZVByaWNlTGlzdChxdW90ZURyYWZ0LmluaXRpYWxTdGF0ZSksXG4gICAgICBjdXJyZW50U3RhdGU6IHRoaXMuZmlsdGVyQnlBY3RpdmVQcmljZUxpc3QocXVvdGVEcmFmdC5jdXJyZW50U3RhdGUpLFxuICAgIH07XG4gIH1cblxuICBnZXQgY3VycmVudFN0YXRlJCgpOiBPYnNlcnZhYmxlPExpbmVJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0JC5waXBlKG1hcChxdW90ZSA9PiBxdW90ZS5jdXJyZW50U3RhdGUpKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50U3RhdGUoKTogTGluZUl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMucXVvdGVEcmFmdD8uY3VycmVudFN0YXRlID8/IFtdO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbSBvZiBhY3RpdmVDdXJyZW50U3RhdGVcbiAgICovXG4gIGdldCBhY3RpdmVDdXJyZW50U3RhdGUkKCk6IE9ic2VydmFibGU8TGluZUl0ZW1bXT4ge1xuICAgIHJldHVybiB0aGlzLnF1b3RlRHJhZnQkLnBpcGUobWFwKCgpID0+IHRoaXMuYWN0aXZlQ3VycmVudFN0YXRlKSk7XG4gIH1cblxuICAvKipcbiAgICogYWN0aXZlQ3VycmVudFN0YXRlIGlzIGN1cnJlbnRTdGF0ZSBwYXNzZWQgdGhyb3VnaCBhZGRpdGlvbmFsIGZpbHRlcnNcbiAgICovXG4gIGdldCBhY3RpdmVDdXJyZW50U3RhdGUoKTogTGluZUl0ZW1bXSB7XG4gICAgbGV0IGN1cnJlbnRTdGF0ZSA9IHRoaXMucXVvdGVEcmFmdD8uY3VycmVudFN0YXRlID8/IFtdO1xuXG4gICAgY3VycmVudFN0YXRlID0gdGhpcy5maWx0ZXJCeUFjdGl2ZVByaWNlTGlzdChjdXJyZW50U3RhdGUpO1xuXG4gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJlYW0gb2YgYWN0aXZlSW5pdGlhbFN0YXRlXG4gICAqL1xuICBnZXQgYWN0aXZlSW5pdGlhbFN0YXRlJCgpOiBPYnNlcnZhYmxlPExpbmVJdGVtW10+IHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZURyYWZ0JC5waXBlKG1hcCgoKSA9PiB0aGlzLmFjdGl2ZUluaXRpYWxTdGF0ZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIGFjdGl2ZUluaXRpYWxTdGF0ZSBpcyBpbml0aWFsU3RhdGUgcGFzc2VkIHRocm91Z2ggYWRkaXRpb25hbCBmaWx0ZXJzXG4gICAqL1xuICBnZXQgYWN0aXZlSW5pdGlhbFN0YXRlKCk6IExpbmVJdGVtW10ge1xuICAgIGNvbnN0IGN0eCA9IHRoaXMuY29udGV4dC5yZXNvbHZlKCk7XG4gICAgbGV0IGluaXRpYWxTdGF0ZSA9IHRoaXMucXVvdGVEcmFmdD8uaW5pdGlhbFN0YXRlID8/IFtdO1xuXG4gICAgaWYgKGN0eC5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuQUNDT1VOVCkge1xuICAgICAgaW5pdGlhbFN0YXRlID0gdGhpcy5maWx0ZXJCeUFjdGl2ZVByaWNlTGlzdChpbml0aWFsU3RhdGUpO1xuICAgIH1cblxuICAgIHJldHVybiBpbml0aWFsU3RhdGU7XG4gIH1cblxuICBnZXQgaXNTdGFuZGFsb25lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRleHQucmVzb2x2ZSgpLnByb3BlcnRpZXMuc3RhbmRhbG9uZSA9PT0gJ3RydWUnO1xuICB9XG5cbiAgZ2V0IGlzU3RhbmRhbG9uZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5yZXNvbHZlJCgpLnBpcGUobWFwKCgpID0+IHRoaXMuaXNTdGFuZGFsb25lKSk7XG4gIH1cblxuICBwdWJsaWMgaXNFZGl0TW9kZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5yZXNvbHZlJCgpLnBpcGUobWFwKCgpID0+IHRoaXMuaXNFZGl0TW9kZSgpKSk7XG4gIH1cblxuICBwdWJsaWMgaXNFZGl0TW9kZSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jb250ZXh0LnJlc29sdmUoKTtcblxuICAgIGlmIChjb250ZXh0Lm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dC5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuUVVPVEUpIHtcbiAgICAgIHJldHVybiBjb250ZXh0LnByb3BlcnRpZXMuU3RhdHVzID09PSAnRHJhZnQnO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVBY3RpdmVQcmljZUxpc3QocHJpY2VMaXN0SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY29udGV4dC51cGRhdGUoeyBwcm9wZXJ0aWVzOiB7IFByaWNlTGlzdElkOiBwcmljZUxpc3RJZCB9IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBwb3B1bGF0ZUFjdGl2ZVByaWNlTGlzdHMkKCk6IHZvaWQge1xuICAgIGNvbnN0IGN0eCA9IHRoaXMuY29udGV4dC5yZXNvbHZlKCk7XG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVEcmFmdDtcblxuICAgIGlmICghcXVvdGVEcmFmdCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEluIEFDQ09VTlQgbW9kZSBwb3B1bGF0ZSBwcmljZSBsaXN0cyBmcm9tIHJlbGF0ZWQgYXNzZXRzXG4gICAgaWYgKGN0eC5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuQUNDT1VOVCkge1xuICAgICAgLy8gUG9wdWxhdGUgbGlzdCBvZiBwcmljZSBsaXN0c1xuICAgICAgdGhpcy5hc3NldFByaWNlTGlzdHMgPSBxdW90ZURyYWZ0LmN1cnJlbnRTdGF0ZVxuICAgICAgICAubWFwKCh7IHByaWNlTGlzdElkIH0pID0+IHByaWNlTGlzdElkKVxuICAgICAgICAucmVkdWNlPFByaWNlTGlzdFtdPigodHJ1bmssIHByaWNlTGlzdElkKSA9PiB7XG4gICAgICAgICAgaWYgKCFwcmljZUxpc3RJZCB8fCB0cnVuay5zb21lKGl0ZW0gPT4gaXRlbS5pZCA9PT0gcHJpY2VMaXN0SWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1bms7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLnRydW5rLFxuICAgICAgICAgICAgeyBpZDogcHJpY2VMaXN0SWQsIG5hbWU6IHRoaXMuYWxsUHJpY2VMaXN0cy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gcHJpY2VMaXN0SWQpPy5uYW1lID8/ICcnIH0sXG4gICAgICAgICAgXTtcbiAgICAgICAgfSwgW10pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyQnlBY3RpdmVQcmljZUxpc3QobGluZUl0ZW1zOiBMaW5lSXRlbVtdKTogTGluZUl0ZW1bXSB7XG4gICAgY29uc3QgY3R4ID0gdGhpcy5jb250ZXh0LnJlc29sdmUoKTtcblxuICAgIHJldHVybiBsaW5lSXRlbXMuZmlsdGVyKGxpID0+ICFsaS5wcmljZUxpc3RJZCB8fCBsaS5wcmljZUxpc3RJZCA9PT0gY3R4LnByb3BlcnRpZXMuUHJpY2VMaXN0SWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrQXNVcGRhdGVkKHF1b3RlOiBRdW90ZURyYWZ0IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmIChxdW90ZT8uY29udGV4dC5wcm9wZXJ0aWVzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UKSB7XG4gICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gISFxdW90ZSAmJiAhcXVvdGUuY3VycmVudFN0YXRlLmV2ZXJ5KGxpID0+IGxpLmFjdGlvbkNvZGUgPT09ICdFWElTVCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhhc1Vuc2F2ZWRDaGFuZ2VzID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
@@ -271,7 +271,7 @@ export class FlowHeaderComponent {
|
|
271
271
|
}
|
272
272
|
}
|
273
273
|
FlowHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowHeaderComponent, deps: [{ token: i1.ContextService }, { token: i1.QuoteDraftService }, { token: i2.QuoteApiService }, { token: i2.SalesforceApiService }, { token: i1.FlowConfigurationService }, { token: i3.FlowRouterService }, { token: i4.FlowDialogService }, { token: i5.IntegrationState }], target: i0.ɵɵFactoryTarget.Component });
|
274
|
-
FlowHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: FlowHeaderComponent, selector: "vl-flow-header", ngImport: i0, template: "<div class=\"flow-info\" *vlLet=\"objectDetails$ | async as details\">\n <nav class=\"nav-item nav-back\" (click)=\"back()\">\n <i class=\"nav-icon vl-icon vl-icon-arrow-left\"></i>\n\n <span> Back to {{ objectName | titlecase }}</span>\n </nav>\n\n <ng-container *ngIf=\"isAccountMode\">\n <span class=\"dot-separator\"></span>\n\n <nav class=\"account-name\" [pTooltip]=\"contextProperties.Name ?? ''\" tooltipPosition=\"bottom\" [showDelay]=\"1000\">\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(contextProperties.Id)\">{{ contextProperties.Name }}</a>\n </nav>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span class=\"dot-separator\"></span>\n\n <span>Quote #{{ details.quoteNumber }}</span>\n\n <span class=\"dot-separator\"></span>\n\n <nav class=\"nav-item\" (click)=\"quoteDetails.toggle($event)\">\n <span>{{ status$ | async }}</span>\n\n <i *ngIf=\"!quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"navigation-settings-overlay flow-header-overlay center\" #quoteDetails>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\">\n <h2 class=\"flow-header-overlay__title\">\n <span>Quote Information</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"quoteDetails.hide()\"></i>\n </h2>\n\n <ul class=\"info-list\">\n <li class=\"info-list__row\">\n <span>Account Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.accountId)\">\n <span>{{ details.accountName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Opportunity Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.opportunityId)\">\n <span>{{ details.opportunityName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Quote Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.quoteId)\">\n <span>{{ details.quoteName }}</span>\n </a>\n </li>\n </ul>\n </div>\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n</div>\n\n<div class=\"flow-navigation\">\n <ng-container *vlLet=\"isReadonlyMode$ | async as isReadonlyMode\">\n <nav\n class=\"nav-item\"\n [ngClass]=\"{ active: (isCatalogRoute$ | async), disabled: isReadonlyMode }\"\n (click)=\"navigateToCatalog()\"\n >\n Catalog\n </nav>\n <nav class=\"nav-item disabled\" [ngClass]=\"{ active: isConfigurationRoute$ | async }\">Configurator</nav>\n <ng-container *vlLet=\"products$ | async as products\">\n <nav\n class=\"nav-item\"\n [ngClass]=\"{ active: (isCartRoute$ | async), disabled: isReadonlyMode }\"\n (click)=\"navigateToShoppingCart()\"\n >\n Shopping Cart ({{ products.length }})\n </nav>\n\n <nav\n class=\"nav-popover-toggle\"\n [ngClass]=\"{ active: (isCartRoute$ | async), disabled: isReadonlyMode }\"\n (click)=\"toggleCartOverlay(cart, $event)\"\n >\n <i *ngIf=\"!cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <vl-cart-preview #cart [products]=\"products\"></vl-cart-preview>\n </ng-container>\n </ng-container>\n</div>\n\n<div class=\"flow-controls\" *vlLet=\"objectDetails$ | async as details\">\n <ng-container *vlLet=\"activePriceList$ | async as priceList\">\n <div>\n <ng-container *ngIf=\"isAccountMode && assetPriceLists.length > 1; else singlePriceList\">\n <nav class=\"nav-item\" (click)=\"priceListsOverlay?.toggle($event)\">\n <span>{{ priceList?.name }}</span>\n <i *ngIf=\"!priceListsOverlay?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"priceListsOverlay?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"price-list-overlay\" #priceListsOverlay>\n <ng-template pTemplate>\n <span\n *ngFor=\"let option of assetPriceLists\"\n class=\"price-list-option\"\n [class.active]=\"priceList?.id === option.id\"\n (click)=\"selectPriceList(option.id); priceListsOverlay.hide()\"\n >{{ option.name }}</span\n >\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n\n <ng-template #singlePriceList>\n <div>{{ priceList?.name }}</div>\n </ng-template>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <div *ngIf=\"contextProperties.StartDate\">{{ contextProperties.StartDate | date: 'MM.dd.yyyy' }}</div>\n </ng-container>\n </div>\n </ng-container>\n\n <span class=\"metrics\">\n <div class=\"metrics__row\">\n <span>MRR:</span>\n <span class=\"font-semibold\">${{ totalMRR$ | async }}</span>\n </div>\n <div class=\"metrics__row\">\n <span>NRR:</span>\n <span class=\"font-semibold\">${{ totalNRR$ | async }}</span>\n </div>\n </span>\n\n <ng-container *vlLet=\"isCartRoute$ | async as isCartRoute\">\n <ng-container *vlLet=\"isReadonlyMode$ | async as isReadonlyMode\">\n <p-button\n class=\"doc-gen-button\"\n icon=\"vl-icon vl-icon-doc-gen\"\n [disabled]=\"isReadonlyMode\"\n (onClick)=\"docGenButtonClickHandler(isCartRoute)\"\n ></p-button>\n\n <ng-container *vlLet=\"isSaveInProgress$ | async as isSaveInProgress\">\n <ng-container *vlLet=\"isSubmitInProgress$ | async as isSubmitInProgress\">\n <p-splitButton\n *ngIf=\"!isSaveInProgress && !isSubmitInProgress\"\n label=\"Save to Quote\"\n (onClick)=\"saveButtonClickHandler(isCartRoute)\"\n [model]=\"getSplitButtonActions(isCartRoute)\"\n [disabled]=\"isReadonlyMode\"\n styleClass=\"p-button-outlined\"\n >\n </p-splitButton>\n\n <p-button\n *ngIf=\"isSaveInProgress\"\n class=\"save-button\"\n styleClass=\"p-button\"\n label=\"Saving\"\n [loading]=\"true\"\n ></p-button>\n\n <p-button\n *ngIf=\"isSubmitInProgress\"\n class=\"submit-button\"\n styleClass=\"p-button\"\n label=\"Submitting\"\n [loading]=\"true\"\n ></p-button>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n", styles: [":host{display:flex;align-items:center;height:48px;width:100%;background-color:var(--vl-primary-color);color:#fff;padding:0 32px;flex-shrink:0}::ng-deep .p-overlaypanel.flow-header-overlay .p-overlaypanel-content{background-color:#fff;padding:16px}::ng-deep .p-overlaypanel.flow-header-overlay.no-padding .p-overlaypanel-content{padding:0}::ng-deep .p-overlaypanel.flow-header-overlay.left:before{left:6px!important}::ng-deep .p-overlaypanel.flow-header-overlay.right:before{right:6px!important}::ng-deep .p-overlaypanel.flow-header-overlay.left .p-overlaypanel-content{margin-left:-16px}::ng-deep .p-overlaypanel.flow-header-overlay.right .p-overlaypanel-content{margin-right:-16px}::ng-deep .p-overlaypanel.flow-header-overlay:before{background-color:#fff}::ng-deep .p-overlaypanel.price-list-overlay .p-overlaypanel-content{border-radius:5px;border-color:var(--vl-border-color);padding:0;display:flex;flex-direction:column;max-height:140px;overflow:auto}:host ::ng-deep p-splitButton{height:32px;width:146px;display:flex}:host ::ng-deep p-splitButton .p-splitbutton{display:flex;font-size:12px;border-radius:2px;height:100%;width:100%;-webkit-backface-visibility:hidden}:host ::ng-deep p-splitButton .p-splitbutton .p-button:focus{box-shadow:none}:host ::ng-deep p-splitButton .p-splitbutton .p-splitbutton-defaultbutton{padding:7px 12px 7px 10px}:host ::ng-deep p-splitButton .p-splitbutton .p-splitbutton-defaultbutton:disabled{opacity:.2}:host ::ng-deep p-splitButton .p-splitbutton .p-splitbutton-menubutton:disabled{opacity:.3}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button{background-color:#fff;color:var(--vl-primary-color);border:1px solid #fff}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button:enabled:hover{background-color:var(--vl-secondary-nav-bg);color:var(--vl-primary-color);border:1px solid var(--vl-secondary-nav-bg);outline:none}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button.p-splitbutton-menubutton{background-color:var(--vl-secondary-nav-bg);border-radius:0 2px 2px 0;border:1px solid var(--vl-secondary-nav-bg);border-left:none}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button.p-splitbutton-menubutton:hover{background-color:var(--vl-secondary-nav-bg);border:1px solid var(--vl-secondary-nav-bg);border-left:none}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button.p-splitbutton-defaultbutton{border-radius:2px 0 0 2px}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button.p-splitbutton-defaultbutton .p-button-label{font-size:12px;line-height:16px;letter-spacing:.3px;white-space:nowrap}:host ::ng-deep p-splitButton .p-splitbutton .p-menu{display:flex;width:auto;margin-top:2px;border-radius:4px;border:1px solid var(--vl-border-color);box-shadow:0 4px 20px #2767c11a}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list{display:flex;flex-direction:column}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem{display:flex;width:100%;height:32px}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem .p-menuitem-link{padding:8px;width:100%;height:100%}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem .p-menuitem-link:not(.p-disabled):hover{background-color:var(--vl-secondary-nav-bg)}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text{color:var(--vl-primary-color)}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem .p-menuitem-link .p-menuitem-text{line-height:16px;font-size:12px;letter-spacing:.3px;white-space:nowrap}:host ::ng-deep .doc-gen-button{height:32px;width:32px;display:inline-flex}:host ::ng-deep .doc-gen-button .p-button{border:1px solid #fff;border-radius:2px;width:100%;height:100%}:host ::ng-deep .doc-gen-button .p-button.p-component:disabled{opacity:.3}:host ::ng-deep .save-button,:host ::ng-deep .submit-button{height:32px;width:146px;display:flex}:host ::ng-deep .save-button .p-button,:host ::ng-deep .submit-button .p-button{border-radius:3px;width:100%;height:100%;background:rgba(255,255,255,.3);opacity:1;border:none}:host ::ng-deep .save-button .p-button .p-button-label,:host ::ng-deep .submit-button .p-button .p-button-label{font-size:12px;line-height:16px;letter-spacing:.3px;white-space:nowrap}.vl-icon{display:inline-block}.flow-info{flex-shrink:0;display:flex;grid-gap:8px;gap:8px;align-items:center}.flow-info .nav-popover-toggle{margin-left:-8px}.flow-info .nav-back{font-weight:bold}.flow-info .nav-item:not(.disabled):hover,.flow-info .nav-popover-toggle:not(.disabled):hover{opacity:.6}nav{display:flex;align-items:center;cursor:pointer;height:14px}nav.disabled{opacity:.6;cursor:default}nav .nav-icon{margin-right:10px}nav .icon-with-margin{margin:0 4px}nav a{color:#fff}nav.account-name{margin-left:4px;display:block;max-width:200px;overflow:hidden;text-overflow:ellipsis}nav.nav-popover-toggle{width:24px;display:flex;justify-content:center}nav.nav-popover-toggle i{pointer-events:none;margin:0}nav i{pointer-events:none}.metrics__row{display:flex;justify-content:space-between;grid-gap:2px;gap:2px}.dot-separator:after{content:\"\";display:block;width:4px;height:4px;border-radius:50%;background:#fff}.slash-separator:after{content:\"\";display:block;background:#fff;width:1px;height:16px}.flow-header-overlay__wrapper{width:360px}.flow-header-overlay__wrapper .close-icon{cursor:pointer}.flow-header-overlay__wrapper .info-list{list-style:none;padding:0;font-size:12px}.flow-header-overlay__wrapper .info-list__row{padding:8px 0;display:flex;justify-content:space-between}.flow-header-overlay__wrapper .info-list__row a{text-align:right}.flow-header-overlay__title{display:flex;justify-content:space-between;align-items:center;margin:0 0 24px}.flow-navigation{flex-grow:1;display:flex;grid-gap:16px;gap:16px;justify-content:center;font-weight:600}.flow-navigation .cart-nav-container{display:flex}.flow-navigation .nav-popover-toggle{margin-left:-14px}.flow-navigation .nav-item,.flow-navigation .nav-popover-toggle{opacity:.6}.flow-navigation .nav-item.active:not(.disabled),.flow-navigation .nav-item:not(.disabled):hover,.flow-navigation .nav-popover-toggle.active:not(.disabled),.flow-navigation .nav-popover-toggle:not(.disabled):hover{opacity:1}.price-list-option{padding:8px;color:var(--vl-primary-color);cursor:pointer}.price-list-option.active,.price-list-option:hover{background:var(--vl-secondary-nav-bg)}.flow-controls{flex-shrink:0;display:flex;align-items:center;grid-gap:16px;gap:16px}\n"], components: [{ type: i6.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { type: i7.CartPreviewComponent, selector: "vl-cart-preview", inputs: ["products"] }, { type: i8.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i9.SplitButton, selector: "p-splitButton", inputs: ["model", "icon", "iconPos", "label", "style", "styleClass", "menuStyle", "menuStyleClass", "disabled", "tabindex", "appendTo", "dir", "expandAriaLabel", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onClick", "onDropdownClick"] }], directives: [{ type: i10.LetDirective, selector: "[vlLet]", inputs: ["vlLet"] }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i13.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i11.AsyncPipe, "titlecase": i11.TitleCasePipe, "date": i11.DatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
274
|
+
FlowHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.15", type: FlowHeaderComponent, selector: "vl-flow-header", ngImport: i0, template: "<div class=\"flow-info\" *vlLet=\"objectDetails$ | async as details\">\n <nav class=\"nav-item nav-back\" (click)=\"back()\">\n <i class=\"nav-icon vl-icon vl-icon-arrow-left\"></i>\n\n <span> Back to {{ objectName | titlecase }}</span>\n </nav>\n\n <ng-container *ngIf=\"isAccountMode\">\n <span class=\"dot-separator\"></span>\n\n <nav class=\"account-name\" [pTooltip]=\"contextProperties.Name ?? ''\" tooltipPosition=\"bottom\" [showDelay]=\"1000\">\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(contextProperties.Id)\">{{ contextProperties.Name }}</a>\n </nav>\n </ng-container>\n\n <ng-container *ngIf=\"isQuoteMode\">\n <span class=\"dot-separator\"></span>\n\n <span>Quote #{{ details.quoteNumber }}</span>\n\n <span class=\"dot-separator\"></span>\n\n <nav class=\"nav-item\" (click)=\"quoteDetails.toggle($event)\">\n <span>{{ status$ | async }}</span>\n\n <i *ngIf=\"!quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"quoteDetails.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"navigation-settings-overlay flow-header-overlay center\" #quoteDetails>\n <ng-template pTemplate>\n <div class=\"flow-header-overlay__wrapper\">\n <h2 class=\"flow-header-overlay__title\">\n <span>Quote Information</span>\n <i class=\"vl-icon vl-icon-close close-icon\" (click)=\"quoteDetails.hide()\"></i>\n </h2>\n\n <ul class=\"info-list\">\n <li class=\"info-list__row\">\n <span>Account Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.accountId)\">\n <span>{{ details.accountName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Opportunity Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.opportunityId)\">\n <span>{{ details.opportunityName }}</span>\n </a>\n </li>\n <li class=\"info-list__row\">\n <span>Quote Name:</span>\n <a target=\"_blank\" [href]=\"getSalesforceObjectLink(details.quoteId)\">\n <span>{{ details.quoteName }}</span>\n </a>\n </li>\n </ul>\n </div>\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n</div>\n\n<div class=\"flow-navigation\">\n <ng-container *vlLet=\"isReadonlyMode$ | async as isReadonlyMode\">\n <nav\n class=\"nav-item\"\n [ngClass]=\"{ active: (isCatalogRoute$ | async), disabled: isReadonlyMode }\"\n (click)=\"navigateToCatalog()\"\n >\n Catalog\n </nav>\n <nav class=\"nav-item disabled\" [ngClass]=\"{ active: isConfigurationRoute$ | async }\">Configurator</nav>\n <ng-container *vlLet=\"products$ | async as products\">\n <nav\n class=\"nav-item\"\n [ngClass]=\"{ active: (isCartRoute$ | async), disabled: isReadonlyMode }\"\n (click)=\"navigateToShoppingCart()\"\n >\n Shopping Cart ({{ products.length }})\n </nav>\n\n <nav\n class=\"nav-popover-toggle\"\n [ngClass]=\"{ active: (isCartRoute$ | async), disabled: isReadonlyMode }\"\n (click)=\"toggleCartOverlay(cart, $event)\"\n >\n <i *ngIf=\"!cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"cart?.overlayPanel?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <vl-cart-preview #cart [products]=\"products\"></vl-cart-preview>\n </ng-container>\n </ng-container>\n</div>\n\n<div class=\"flow-controls\" *vlLet=\"objectDetails$ | async as details\">\n <ng-container *vlLet=\"activePriceList$ | async as priceList\">\n <div>\n <ng-container *ngIf=\"isAccountMode && assetPriceLists.length > 1; else singlePriceList\">\n <nav class=\"nav-item\" (click)=\"priceListsOverlay?.toggle($event)\">\n <span>{{ priceList?.name }}</span>\n <i *ngIf=\"!priceListsOverlay?.overlayVisible\" class=\"vl-icon vl-icon-chevron-down icon-with-margin\"></i>\n <i *ngIf=\"priceListsOverlay?.overlayVisible\" class=\"vl-icon vl-icon-chevron-up icon-with-margin\"></i>\n </nav>\n\n <p-overlayPanel styleClass=\"price-list-overlay\" #priceListsOverlay>\n <ng-template pTemplate>\n <span\n *ngFor=\"let option of assetPriceLists\"\n class=\"price-list-option\"\n [class.active]=\"priceList?.id === option.id\"\n (click)=\"selectPriceList(option.id); priceListsOverlay.hide()\"\n >{{ option.name }}</span\n >\n </ng-template>\n </p-overlayPanel>\n </ng-container>\n\n <ng-template #singlePriceList>\n <div>{{ priceList?.name }}</div>\n </ng-template>\n\n <div *ngIf=\"contextProperties.StartDate\">{{ contextProperties.StartDate | date: 'MM.dd.yyyy' }}</div>\n </div>\n </ng-container>\n\n <span class=\"metrics\">\n <div class=\"metrics__row\">\n <span>MRR:</span>\n <span class=\"font-semibold\">${{ totalMRR$ | async }}</span>\n </div>\n <div class=\"metrics__row\">\n <span>NRR:</span>\n <span class=\"font-semibold\">${{ totalNRR$ | async }}</span>\n </div>\n </span>\n\n <ng-container *vlLet=\"isCartRoute$ | async as isCartRoute\">\n <ng-container *vlLet=\"isReadonlyMode$ | async as isReadonlyMode\">\n <p-button\n class=\"doc-gen-button\"\n icon=\"vl-icon vl-icon-doc-gen\"\n [disabled]=\"isReadonlyMode\"\n (onClick)=\"docGenButtonClickHandler(isCartRoute)\"\n ></p-button>\n\n <ng-container *vlLet=\"isSaveInProgress$ | async as isSaveInProgress\">\n <ng-container *vlLet=\"isSubmitInProgress$ | async as isSubmitInProgress\">\n <p-splitButton\n *ngIf=\"!isSaveInProgress && !isSubmitInProgress\"\n label=\"Save to Quote\"\n (onClick)=\"saveButtonClickHandler(isCartRoute)\"\n [model]=\"getSplitButtonActions(isCartRoute)\"\n [disabled]=\"isReadonlyMode\"\n styleClass=\"p-button-outlined\"\n >\n </p-splitButton>\n\n <p-button\n *ngIf=\"isSaveInProgress\"\n class=\"save-button\"\n styleClass=\"p-button\"\n label=\"Saving\"\n [loading]=\"true\"\n ></p-button>\n\n <p-button\n *ngIf=\"isSubmitInProgress\"\n class=\"submit-button\"\n styleClass=\"p-button\"\n label=\"Submitting\"\n [loading]=\"true\"\n ></p-button>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n</div>\n", styles: [":host{display:flex;align-items:center;height:48px;width:100%;background-color:var(--vl-primary-color);color:#fff;padding:0 32px;flex-shrink:0}::ng-deep .p-overlaypanel.flow-header-overlay .p-overlaypanel-content{background-color:#fff;padding:16px}::ng-deep .p-overlaypanel.flow-header-overlay.no-padding .p-overlaypanel-content{padding:0}::ng-deep .p-overlaypanel.flow-header-overlay.left:before{left:6px!important}::ng-deep .p-overlaypanel.flow-header-overlay.right:before{right:6px!important}::ng-deep .p-overlaypanel.flow-header-overlay.left .p-overlaypanel-content{margin-left:-16px}::ng-deep .p-overlaypanel.flow-header-overlay.right .p-overlaypanel-content{margin-right:-16px}::ng-deep .p-overlaypanel.flow-header-overlay:before{background-color:#fff}::ng-deep .p-overlaypanel.price-list-overlay .p-overlaypanel-content{border-radius:5px;border-color:var(--vl-border-color);padding:0;display:flex;flex-direction:column;max-height:140px;overflow:auto}:host ::ng-deep p-splitButton{height:32px;width:146px;display:flex}:host ::ng-deep p-splitButton .p-splitbutton{display:flex;font-size:12px;border-radius:2px;height:100%;width:100%;-webkit-backface-visibility:hidden}:host ::ng-deep p-splitButton .p-splitbutton .p-button:focus{box-shadow:none}:host ::ng-deep p-splitButton .p-splitbutton .p-splitbutton-defaultbutton{padding:7px 12px 7px 10px}:host ::ng-deep p-splitButton .p-splitbutton .p-splitbutton-defaultbutton:disabled{opacity:.2}:host ::ng-deep p-splitButton .p-splitbutton .p-splitbutton-menubutton:disabled{opacity:.3}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button{background-color:#fff;color:var(--vl-primary-color);border:1px solid #fff}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button:enabled:hover{background-color:var(--vl-secondary-nav-bg);color:var(--vl-primary-color);border:1px solid var(--vl-secondary-nav-bg);outline:none}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button.p-splitbutton-menubutton{background-color:var(--vl-secondary-nav-bg);border-radius:0 2px 2px 0;border:1px solid var(--vl-secondary-nav-bg);border-left:none}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button.p-splitbutton-menubutton:hover{background-color:var(--vl-secondary-nav-bg);border:1px solid var(--vl-secondary-nav-bg);border-left:none}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button.p-splitbutton-defaultbutton{border-radius:2px 0 0 2px}:host ::ng-deep p-splitButton .p-splitbutton.p-button-outlined .p-button.p-splitbutton-defaultbutton .p-button-label{font-size:12px;line-height:16px;letter-spacing:.3px;white-space:nowrap}:host ::ng-deep p-splitButton .p-splitbutton .p-menu{display:flex;width:auto;margin-top:2px;border-radius:4px;border:1px solid var(--vl-border-color);box-shadow:0 4px 20px #2767c11a}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list{display:flex;flex-direction:column}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem{display:flex;width:100%;height:32px}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem .p-menuitem-link{padding:8px;width:100%;height:100%}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem .p-menuitem-link:not(.p-disabled):hover{background-color:var(--vl-secondary-nav-bg)}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem .p-menuitem-link:not(.p-disabled):hover .p-menuitem-text{color:var(--vl-primary-color)}:host ::ng-deep p-splitButton .p-splitbutton .p-menu .p-menu-list .p-menuitem .p-menuitem-link .p-menuitem-text{line-height:16px;font-size:12px;letter-spacing:.3px;white-space:nowrap}:host ::ng-deep .doc-gen-button{height:32px;width:32px;display:inline-flex}:host ::ng-deep .doc-gen-button .p-button{border:1px solid #fff;border-radius:2px;width:100%;height:100%}:host ::ng-deep .doc-gen-button .p-button.p-component:disabled{opacity:.3}:host ::ng-deep .save-button,:host ::ng-deep .submit-button{height:32px;width:146px;display:flex}:host ::ng-deep .save-button .p-button,:host ::ng-deep .submit-button .p-button{border-radius:3px;width:100%;height:100%;background:rgba(255,255,255,.3);opacity:1;border:none}:host ::ng-deep .save-button .p-button .p-button-label,:host ::ng-deep .submit-button .p-button .p-button-label{font-size:12px;line-height:16px;letter-spacing:.3px;white-space:nowrap}.vl-icon{display:inline-block}.flow-info{flex-shrink:0;display:flex;grid-gap:8px;gap:8px;align-items:center}.flow-info .nav-popover-toggle{margin-left:-8px}.flow-info .nav-back{font-weight:bold}.flow-info .nav-item:not(.disabled):hover,.flow-info .nav-popover-toggle:not(.disabled):hover{opacity:.6}nav{display:flex;align-items:center;cursor:pointer;height:14px}nav.disabled{opacity:.6;cursor:default}nav .nav-icon{margin-right:10px}nav .icon-with-margin{margin:0 4px}nav a{color:#fff}nav.account-name{margin-left:4px;display:block;max-width:200px;overflow:hidden;text-overflow:ellipsis}nav.nav-popover-toggle{width:24px;display:flex;justify-content:center}nav.nav-popover-toggle i{pointer-events:none;margin:0}nav i{pointer-events:none}.metrics__row{display:flex;justify-content:space-between;grid-gap:2px;gap:2px}.dot-separator:after{content:\"\";display:block;width:4px;height:4px;border-radius:50%;background:#fff}.slash-separator:after{content:\"\";display:block;background:#fff;width:1px;height:16px}.flow-header-overlay__wrapper{width:360px}.flow-header-overlay__wrapper .close-icon{cursor:pointer}.flow-header-overlay__wrapper .info-list{list-style:none;padding:0;font-size:12px}.flow-header-overlay__wrapper .info-list__row{padding:8px 0;display:flex;justify-content:space-between}.flow-header-overlay__wrapper .info-list__row a{text-align:right}.flow-header-overlay__title{display:flex;justify-content:space-between;align-items:center;margin:0 0 24px}.flow-navigation{flex-grow:1;display:flex;grid-gap:16px;gap:16px;justify-content:center;font-weight:600}.flow-navigation .cart-nav-container{display:flex}.flow-navigation .nav-popover-toggle{margin-left:-14px}.flow-navigation .nav-item,.flow-navigation .nav-popover-toggle{opacity:.6}.flow-navigation .nav-item.active:not(.disabled),.flow-navigation .nav-item:not(.disabled):hover,.flow-navigation .nav-popover-toggle.active:not(.disabled),.flow-navigation .nav-popover-toggle:not(.disabled):hover{opacity:1}.price-list-option{padding:8px;color:var(--vl-primary-color);cursor:pointer}.price-list-option.active,.price-list-option:hover{background:var(--vl-secondary-nav-bg)}.flow-controls{flex-shrink:0;display:flex;align-items:center;grid-gap:16px;gap:16px}\n"], components: [{ type: i6.OverlayPanel, selector: "p-overlayPanel", inputs: ["dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { type: i7.CartPreviewComponent, selector: "vl-cart-preview", inputs: ["products"] }, { type: i8.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "style", "styleClass", "badgeClass"], outputs: ["onClick", "onFocus", "onBlur"] }, { type: i9.SplitButton, selector: "p-splitButton", inputs: ["model", "icon", "iconPos", "label", "style", "styleClass", "menuStyle", "menuStyleClass", "disabled", "tabindex", "appendTo", "dir", "expandAriaLabel", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onClick", "onDropdownClick"] }], directives: [{ type: i10.LetDirective, selector: "[vlLet]", inputs: ["vlLet"] }, { type: i11.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "pTooltip", "tooltipDisabled", "tooltipOptions"] }, { type: i13.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { type: i11.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i11.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i11.AsyncPipe, "titlecase": i11.TitleCasePipe, "date": i11.DatePipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
275
275
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: FlowHeaderComponent, decorators: [{
|
276
276
|
type: Component,
|
277
277
|
args: [{
|
@@ -281,4 +281,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
|
|
281
281
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
282
282
|
}]
|
283
283
|
}], ctorParameters: function () { return [{ type: i1.ContextService }, { type: i1.QuoteDraftService }, { type: i2.QuoteApiService }, { type: i2.SalesforceApiService }, { type: i1.FlowConfigurationService }, { type: i3.FlowRouterService }, { type: i4.FlowDialogService }, { type: i5.IntegrationState }]; } });
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9jb21wb25lbnRzL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQ0wsd0JBQXdCLEdBTXpCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdyRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsS0FBSyxFQUNMLEdBQUcsRUFDSCxJQUFJLEVBRUosRUFBRSxFQUNGLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBY2QsTUFBTSxPQUFPLG1CQUFtQjtJQXFCOUIsWUFDVSxjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsZUFBZ0MsRUFDaEMsWUFBa0MsRUFDbEMsaUJBQTJDLEVBQzNDLGFBQWdDLEVBQ2hDLGFBQWdDLEVBQ2hDLGdCQUFrQztRQVBsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQXNCO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDM0Msa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdC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VUFBVSxLQUFLLFFBQVE7d0JBQ3ZDLE9BQU8sRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7d0JBQzFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRzt3QkFDZixHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQzt3QkFDdkQsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7cUJBQ3hEO2lCQUNGLENBQUM7YUFDSDtZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFTyxjQUFjOztRQUNwQixPQUFPLENBQ0wsQ0FBQSxNQUFBLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLDBDQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxNQUFLLHdCQUF3QixDQUFDLE9BQU87WUFDL0YsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUNsQyxDQUFDO0lBQ0osQ0FBQzs7aUhBcFdVLG1CQUFtQjtxR0FBbkIsbUJBQW1CLHNEQ3hDaEMsNjJOQXFMQTs0RkQ3SWEsbUJBQW1CO2tCQU4vQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFdBQVcsRUFBRSx5QkFBeUI7b0JBQ3RDLFNBQVMsRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUN0QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUXVvdGVBcGlTZXJ2aWNlLCBTYWxlc2ZvcmNlQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2UvYXBpJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZSxcbiAgQ29udGV4dFByb3BlcnRpZXMsXG4gIExpbmVJdGVtLFxuICBQcmljZUxpc3QsXG4gIFNlYXJjaFJlcXVlc3QsXG4gIFZsV2luZG93LFxufSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgSW50ZWdyYXRpb25TdGF0ZSwgT3BlbkRvY0dlbkFjdGlvbiB9IGZyb20gJ0B2ZWxvY2Uvc2RrL2Ntcyc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSwgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBRdW90ZURyYWZ0U2VydmljZSB9IGZyb20gJ0B2ZWxvY2Uvc2RrL2NvcmUnO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaW5hbGl6ZSxcbiAgZmlyc3QsXG4gIG1hcCxcbiAgbm9vcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmxvd0RpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbG93LWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dSb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0UHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4vY2FydC1vdmVybGF5L2NhcnQtcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGVhZGVyT2JqZWN0RGV0YWlscywgSGVhZGVyUHJvZHVjdCB9IGZyb20gJy4vaGVhZGVyLnR5cGVzJztcblxuZGVjbGFyZSBjb25zdCB3aW5kb3c6IFZsV2luZG93O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2bC1mbG93LWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZsb3dIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBvYmplY3ROYW1lID0gJyc7XG4gIHB1YmxpYyBjb250ZXh0UHJvcGVydGllczogQ29udGV4dFByb3BlcnRpZXM7XG4gIHB1YmxpYyBhc3NldFByaWNlTGlzdHM6IFByaWNlTGlzdFtdO1xuICBwdWJsaWMgYWN0aXZlUHJpY2VMaXN0JDogT2JzZXJ2YWJsZTxQcmljZUxpc3QgfCBudWxsPjtcbiAgcHVibGljIGlzUmVhZG9ubHlNb2RlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIHN0YXR1cyQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIG9iamVjdERldGFpbHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIZWFkZXJPYmplY3REZXRhaWxzPih7fSk7XG4gIHB1YmxpYyBwcm9kdWN0cyQ6IE9ic2VydmFibGU8SGVhZGVyUHJvZHVjdFtdPjtcbiAgcHVibGljIGlzQ29uZmlndXJhdGlvblJvdXRlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzQ2FydFJvdXRlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzQ2F0YWxvZ1JvdXRlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzRWRpdE1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaXNTYXZlSW5Qcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIGlzU3VibWl0SW5Qcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIHRvdGFsTVJSJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwdWJsaWMgdG90YWxOUlIkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcHJpdmF0ZSBtb2RlPzogQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlO1xuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVBcGlTZXJ2aWNlOiBRdW90ZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZkFwaVNlcnZpY2U6IFNhbGVzZm9yY2VBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb246IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IEZsb3dSb3V0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRmxvd0RpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnRlZ3JhdGlvblN0YXRlOiBJbnRlZ3JhdGlvblN0YXRlLFxuICApIHtcbiAgICBjb25zdCBjdHggPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKTtcblxuICAgIHRoaXMubW9kZSA9IGN0eC5tb2RlO1xuICAgIHRoaXMub2JqZWN0TmFtZSA9IGN0eC5tb2RlLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5jb250ZXh0UHJvcGVydGllcyA9IGN0eC5wcm9wZXJ0aWVzO1xuICAgIHRoaXMuYXNzZXRQcmljZUxpc3RzID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5hc3NldFByaWNlTGlzdHM7XG5cbiAgICB0aGlzLmFjdGl2ZVByaWNlTGlzdCQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmFjdGl2ZVByaWNlTGlzdCQ7XG4gICAgdGhpcy5pc1JlYWRvbmx5TW9kZSQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc0Fzc2V0cyQucGlwZShtYXAoKCkgPT4gdGhpcy5pc1JlYWRvbmx5TW9kZSgpKSk7XG4gICAgdGhpcy5zdGF0dXMkID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlJCgpLnBpcGUobWFwKGNvbnRleHQgPT4gY29udGV4dC5wcm9wZXJ0aWVzLlN0YXR1cyA/PyAnJykpO1xuICAgIHRoaXMuaXNFZGl0TW9kZSQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzRWRpdE1vZGUkKCk7XG4gICAgdGhpcy5wcm9kdWN0cyQgPSB0aGlzLmZsb3dDb25maWd1cmF0aW9uLmdldCgpLnBpcGUobWFwKGxpbmVJdGVtcyA9PiB0aGlzLmdlbmVyYXRlUHJvZHVjdHMobGluZUl0ZW1zKSkpO1xuICAgIHRoaXMuaXNDb25maWd1cmF0aW9uUm91dGUkID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmlzQ29uZmlndXJhdGlvblJvdXRlJCgpO1xuICAgIHRoaXMuaXNDYXJ0Um91dGUkID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmlzQ2FydFJvdXRlJCgpO1xuICAgIHRoaXMuaXNDYXRhbG9nUm91dGUkID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmlzQ2F0YWxvZ1JvdXRlJCgpO1xuXG4gICAgdGhpcy50b3RhbE1SUiQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUkKCkucGlwZShcbiAgICAgIG1hcChjdHggPT4gY3R4LnByb3BlcnRpZXMuVkRNX1RvdGFsX01SUiksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgbWFwKG1yciA9PiB0aGlzLmZvcm1hdE1ldHJpYyhtcnIpKSxcbiAgICApO1xuXG4gICAgdGhpcy50b3RhbE5SUiQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUkKCkucGlwZShcbiAgICAgIG1hcChjdHggPT4gY3R4LnByb3BlcnRpZXMuVkRNX1RvdGFsX05SUiksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgbWFwKG5yciA9PiB0aGlzLmZvcm1hdE1ldHJpYyhucnIpKSxcbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wb3B1bGF0ZU9iamVjdERldGFpbHMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQWNjb3VudE1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUXVvdGVNb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5RVU9URTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTcGxpdEJ1dHRvbkFjdGlvbnMoaXNDYXJ0Um91dGU6IGJvb2xlYW4pOiBNZW51SXRlbVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBsYWJlbDogJ1NhdmUgdG8gUXVvdGUnLFxuICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZlQnV0dG9uQ2xpY2tIYW5kbGVyKGlzQ2FydFJvdXRlKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnU3VibWl0IEZvciBBcHByb3ZhbCcsXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnN1Ym1pdEJ1dHRvbkNsaWNrSGFuZGxlcihpc0NhcnRSb3V0ZSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgYmFjayhvYmplY3RJZD86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldElkID0gb2JqZWN0SWQgPz8gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCkuaGVhZGVySWQ7XG5cbiAgICBpZiAodGFyZ2V0SWQpIHtcbiAgICAgIHdpbmRvdy5WRUxPX0JBQ0tfRk4uYXBwbHkobnVsbCwgW3RhcmdldElkXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFNhbGVzZm9yY2VPYmplY3RMaW5rKG9iamVjdElkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW9iamVjdElkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59LyR7b2JqZWN0SWR9YDtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvU2hvcHBpbmdDYXJ0KCkge1xuICAgIGlmICghdGhpcy5pc1JlYWRvbmx5TW9kZSgpKSB7XG4gICAgICB0aGlzLnJvdXRlclNlcnZpY2UubmF2aWdhdGVUb1Nob3BwaW5nQ2FydCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvQ2F0YWxvZygpIHtcbiAgICBpZiAoIXRoaXMuaXNSZWFkb25seU1vZGUoKSkge1xuICAgICAgdGhpcy5yb3V0ZXJTZXJ2aWNlLm5hdmlnYXRlVG9DYXRhbG9nKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRvY0dlbkJ1dHRvbkNsaWNrSGFuZGxlcihpc0NhcnRSb3V0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UKSB7XG4gICAgICBpZiAoIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dBY2NvdW50Tm9DaGFuZ2VzRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0RvY2dlbkFjY291bnRVbnNhdmVkQ2hhbmdlc0RpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5xdW90ZURyYWZ0U2VydmljZS5pc0VkaXRNb2RlKCkpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93RG9jZ2VuUmVhZG9ubHlEaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWlzQ2FydFJvdXRlKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0RvY2dlbk91dHNpZGVTaG9wcGluZ0NhcnREaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgc2hvdWxkT3BlbiQgPSBvZih0cnVlKTtcblxuICAgIGlmICh0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc1Vuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICBzaG91bGRPcGVuJCA9IHRoaXMuZGlhbG9nU2VydmljZS5zaG93RG9jZ2VuVW5zYXZlZENoYW5nZXNEaWFsb2coKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoY29uZmlybWVkID0+IHtcbiAgICAgICAgICBpZiAoIWNvbmZpcm1lZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZVF1b3RlJCh0cnVlKS5waXBlKG1hcCgoKSA9PiB0cnVlKSk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBzaG91bGRPcGVuJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHRhcChzaG91bGRPcGVuID0+IHNob3VsZE9wZW4gJiYgdGhpcy5pbnRlZ3JhdGlvblN0YXRlLmRpc3BhdGNoKE9wZW5Eb2NHZW5BY3Rpb24oKSkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHNhdmVCdXR0b25DbGlja0hhbmRsZXIoaXNDYXJ0Um91dGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNFZGl0TW9kZSgpKSB7XG4gICAgICBpZiAodGhpcy5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuUVVPVEUpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dRdW90ZVJlYWRvbmx5TW9kZURpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dSZWFkb25seU1vZGVEaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuQUNDT1VOVCAmJiAhdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dBY2NvdW50Tm9DaGFuZ2VzRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFpc0NhcnRSb3V0ZSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dRdW90ZU91dHNpZGVTaG9wcGluZ0NhcnREaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5lSXRlbXMgPSB0aGlzLmZsb3dDb25maWd1cmF0aW9uLmdldFNuYXBzaG90KCk7XG5cbiAgICBpZiAoIWxpbmVJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93RW1wdHlDYXJ0RGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zYXZlUXVvdGUkKCkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0QnV0dG9uQ2xpY2tIYW5kbGVyKGlzQ2FydFJvdXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLlFVT1RFICYmICF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzRWRpdE1vZGUoKSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dSZWFkb25seVF1b3RlU3VibWl0RmFpbHVyZURpYWxvZygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0FjY291bnRTdWJtaXRGYWlsdXJlRGlhbG9nKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFpc0NhcnRSb3V0ZSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dPdXRzaWRlU2hvcHBpbmdDYXJ0UXVvdGVTdWJtaXRGYWlsdXJlRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzU3VibWl0SW5Qcm9ncmVzcyQubmV4dCh0cnVlKTtcblxuICAgIHRoaXMucXVvdGVBcGlTZXJ2aWNlXG4gICAgICAuc3VibWl0UXVvdGUocXVvdGVEcmFmdClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHsgcXVvdGVJZCB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYmFjayhxdW90ZUlkKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNTdWJtaXRJblByb2dyZXNzJC5uZXh0KGZhbHNlKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdFByaWNlTGlzdChwcmljZUxpc3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS51cGRhdGVBY3RpdmVQcmljZUxpc3QocHJpY2VMaXN0SWQpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUNhcnRPdmVybGF5KGNhcnQ6IENhcnRQcmV2aWV3Q29tcG9uZW50LCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZWFkb25seU1vZGUoKSkge1xuICAgICAgY2FydD8ub3ZlcmxheVBhbmVsLnRvZ2dsZShldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzYXZlUXVvdGUkKHN0YXlPblBhZ2UgPSBmYWxzZSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnRGb3JBY3RpdmVQcmljZUxpc3Q7XG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzU2F2ZUluUHJvZ3Jlc3MkLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5xdW90ZUFwaVNlcnZpY2UudXBzZXJ0UXVvdGUocXVvdGVEcmFmdCkucGlwZShcbiAgICAgIHRhcCgoeyBxdW90ZUlkIH0pID0+IHtcbiAgICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmICghc3RheU9uUGFnZSkge1xuICAgICAgICAgIHRoaXMuYmFjayhxdW90ZUlkKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzU2F2ZUluUHJvZ3Jlc3MkLm5leHQoZmFsc2UpKSxcbiAgICAgIG1hcChub29wKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHF1ZXJ5TmFtZSQob2JqZWN0TmFtZTogc3RyaW5nLCBpZD86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCFpZCkge1xuICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2hSZXF1ZXN0OiBTZWFyY2hSZXF1ZXN0ID0ge1xuICAgICAgY291bnQ6IDEsXG4gICAgICByYXdDb25kaXRpb246IGBJZCA9ICcke2lkfSdgLFxuICAgICAgZmllbGRzOiBbJ05hbWUnXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuc2ZBcGlTZXJ2aWNlLnF1ZXJ5PGFueT4oc2VhcmNoUmVxdWVzdCwgb2JqZWN0TmFtZSkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gcmVzdWx0WzBdPy5OYW1lID8/ICcnKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHBvcHVsYXRlT2JqZWN0RGV0YWlscygpOiB2b2lkIHtcbiAgICBjb25zdCBhY2NvdW50SWQgPSB0aGlzLmlzQWNjb3VudE1vZGUgPyB0aGlzLmNvbnRleHRQcm9wZXJ0aWVzLklkIDogdGhpcy5jb250ZXh0UHJvcGVydGllcy5BY2NvdW50SWQ7XG4gICAgY29uc3Qgb3Bwb3J0dW5pdHlJZCA9IHRoaXMuY29udGV4dFByb3BlcnRpZXMuT3Bwb3J0dW5pdHlJZDtcbiAgICBjb25zdCBxdW90ZUlkID0gdGhpcy5pc1F1b3RlTW9kZSA/IHRoaXMuY29udGV4dFByb3BlcnRpZXMuSWQgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcXVvdGVOYW1lID0gdGhpcy5pc1F1b3RlTW9kZSA/IHRoaXMuY29udGV4dFByb3BlcnRpZXMuTmFtZSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBxdW90ZU51bWJlciA9IHRoaXMuaXNRdW90ZU1vZGUgPyB0aGlzLmNvbnRleHRQcm9wZXJ0aWVzLlF1b3RlTnVtYmVyPy5yZXBsYWNlKC9eMCsvLCAnJykgOiB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLm9iamVjdERldGFpbHMkLm5leHQoe1xuICAgICAgLi4udGhpcy5vYmplY3REZXRhaWxzJC52YWx1ZSxcbiAgICAgIGFjY291bnRJZCxcbiAgICAgIG9wcG9ydHVuaXR5SWQsXG4gICAgICBxdW90ZUlkLFxuICAgICAgcXVvdGVOYW1lLFxuICAgICAgcXVvdGVOdW1iZXIsXG4gICAgfSk7XG5cbiAgICB0aGlzLnF1ZXJ5TmFtZSQoJ0FjY291bnQnLCBhY2NvdW50SWQpLnN1YnNjcmliZShhY2NvdW50TmFtZSA9PlxuICAgICAgdGhpcy5vYmplY3REZXRhaWxzJC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vYmplY3REZXRhaWxzJC52YWx1ZSxcbiAgICAgICAgYWNjb3VudE5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICAgIHRoaXMucXVlcnlOYW1lJCgnT3Bwb3J0dW5pdHknLCBvcHBvcnR1bml0eUlkKS5zdWJzY3JpYmUob3Bwb3J0dW5pdHlOYW1lID0+XG4gICAgICB0aGlzLm9iamVjdERldGFpbHMkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9iamVjdERldGFpbHMkLnZhbHVlLFxuICAgICAgICBvcHBvcnR1bml0eU5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRNZXRyaWModmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiAodmFsdWUgPyBOdW1iZXIodmFsdWUpIDogMCkudG9GaXhlZCgyKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVQcm9kdWN0cyhsaW5lSXRlbXM6IExpbmVJdGVtW10pOiBIZWFkZXJQcm9kdWN0W10ge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgY29uc3Qgbm93ID0gZGF0ZS5nZXRUaW1lKCk7XG4gICAgY29uc3QgdGVybVBhcmVudElkcyA9IGxpbmVJdGVtcy5tYXAobGkgPT4gbGkucmFtcEluc3RhbmNlSWQpLmZpbHRlcihCb29sZWFuKTtcblxuICAgIHJldHVybiBsaW5lSXRlbXMucmVkdWNlKChyZXN1bHQ6IEhlYWRlclByb2R1Y3RbXSwgbGkpID0+IHtcbiAgICAgIC8vIGZpbmQgbWFpbiB0ZXJtIGxpbmUgaXRlbVxuICAgICAgaWYgKGxpLnJhbXBJbnN0YW5jZUlkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGZpbmQgY3VycmVudCB0ZXJtIGxpbmUgaXRlbVxuICAgICAgbGV0IHRhcmdldDogTGluZUl0ZW0gfCB1bmRlZmluZWQgPSBsaTtcbiAgICAgIHdoaWxlICh0YXJnZXQgJiYgdGFyZ2V0LmVuZERhdGUgJiYgbmV3IERhdGUodGFyZ2V0LmVuZERhdGUpLmdldFRpbWUoKSA8PSBub3cpIHtcbiAgICAgICAgdGFyZ2V0ID0gbGluZUl0ZW1zLmZpbmQoc3ViID0+IHN1Yi5yYW1wSW5zdGFuY2VJZCA9PT0gbGkuaWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5wcm9kdWN0SWQpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IHRhcmdldC5pZCxcbiAgICAgICAgICAgIHByb2R1Y3RJZDogdGFyZ2V0LnByb2R1Y3RJZCxcbiAgICAgICAgICAgIG5hbWU6IHRhcmdldC5uYW1lLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0YXJnZXQucHJvcGVydGllc1snI2NvbmZpZ3VyYWJsZSddID09PSAndHJ1ZScsXG4gICAgICAgICAgICBkZWxldGVkOiB0YXJnZXQuYWN0aW9uQ29kZSA9PT0gJ0RFTEVURScsXG4gICAgICAgICAgICBoYXNUZXJtOiB0ZXJtUGFyZW50SWRzLmluY2x1ZGVzKHRhcmdldC5pZCksXG4gICAgICAgICAgICBxdHk6IHRhcmdldC5xdHksXG4gICAgICAgICAgICBtcnI6IHRoaXMuZm9ybWF0TWV0cmljKHRhcmdldC5wcm9wZXJ0aWVzLlZETV9Ub3RhbF9NUlIpLFxuICAgICAgICAgICAgbnJyOiB0aGlzLmZvcm1hdE1ldHJpYyh0YXJnZXQucHJvcGVydGllcy5WRE1fVG90YWxfTlJSKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZWFkb25seU1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdD8uY29udGV4dC5wcm9wZXJ0aWVzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UICYmXG4gICAgICAhdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNBc3NldHNcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxvdy1pbmZvXCIgKnZsTGV0PVwib2JqZWN0RGV0YWlscyQgfCBhc3luYyBhcyBkZXRhaWxzXCI+XG4gIDxuYXYgY2xhc3M9XCJuYXYtaXRlbSBuYXYtYmFja1wiIChjbGljayk9XCJiYWNrKClcIj5cbiAgICA8aSBjbGFzcz1cIm5hdi1pY29uIHZsLWljb24gdmwtaWNvbi1hcnJvdy1sZWZ0XCI+PC9pPlxuXG4gICAgPHNwYW4+IEJhY2sgdG8ge3sgb2JqZWN0TmFtZSB8IHRpdGxlY2FzZSB9fTwvc3Bhbj5cbiAgPC9uYXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQWNjb3VudE1vZGVcIj5cbiAgICA8c3BhbiBjbGFzcz1cImRvdC1zZXBhcmF0b3JcIj48L3NwYW4+XG5cbiAgICA8bmF2IGNsYXNzPVwiYWNjb3VudC1uYW1lXCIgW3BUb29sdGlwXT1cImNvbnRleHRQcm9wZXJ0aWVzLk5hbWUgPz8gJydcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbc2hvd0RlbGF5XT1cIjEwMDBcIj5cbiAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cImdldFNhbGVzZm9yY2VPYmplY3RMaW5rKGNvbnRleHRQcm9wZXJ0aWVzLklkKVwiPnt7IGNvbnRleHRQcm9wZXJ0aWVzLk5hbWUgfX08L2E+XG4gICAgPC9uYXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1F1b3RlTW9kZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZG90LXNlcGFyYXRvclwiPjwvc3Bhbj5cblxuICAgIDxzcGFuPlF1b3RlICN7eyBkZXRhaWxzLnF1b3RlTnVtYmVyIH19PC9zcGFuPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJkb3Qtc2VwYXJhdG9yXCI+PC9zcGFuPlxuXG4gICAgPG5hdiBjbGFzcz1cIm5hdi1pdGVtXCIgKGNsaWNrKT1cInF1b3RlRGV0YWlscy50b2dnbGUoJGV2ZW50KVwiPlxuICAgICAgPHNwYW4+e3sgc3RhdHVzJCB8IGFzeW5jIH19PC9zcGFuPlxuXG4gICAgICA8aSAqbmdJZj1cIiFxdW90ZURldGFpbHMub3ZlcmxheVZpc2libGVcIiBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jaGV2cm9uLWRvd24gaWNvbi13aXRoLW1hcmdpblwiPjwvaT5cbiAgICAgIDxpICpuZ0lmPVwicXVvdGVEZXRhaWxzLm92ZXJsYXlWaXNpYmxlXCIgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi11cCBpY29uLXdpdGgtbWFyZ2luXCI+PC9pPlxuICAgIDwvbmF2PlxuXG4gICAgPHAtb3ZlcmxheVBhbmVsIHN0eWxlQ2xhc3M9XCJuYXZpZ2F0aW9uLXNldHRpbmdzLW92ZXJsYXkgZmxvdy1oZWFkZXItb3ZlcmxheSBjZW50ZXJcIiAjcXVvdGVEZXRhaWxzPlxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsb3ctaGVhZGVyLW92ZXJsYXlfX3dyYXBwZXJcIj5cbiAgICAgICAgICA8aDIgY2xhc3M9XCJmbG93LWhlYWRlci1vdmVybGF5X190aXRsZVwiPlxuICAgICAgICAgICAgPHNwYW4+UXVvdGUgSW5mb3JtYXRpb248L3NwYW4+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jbG9zZSBjbG9zZS1pY29uXCIgKGNsaWNrKT1cInF1b3RlRGV0YWlscy5oaWRlKClcIj48L2k+XG4gICAgICAgICAgPC9oMj5cblxuICAgICAgICAgIDx1bCBjbGFzcz1cImluZm8tbGlzdFwiPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwiaW5mby1saXN0X19yb3dcIj5cbiAgICAgICAgICAgICAgPHNwYW4+QWNjb3VudCBOYW1lOjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiZ2V0U2FsZXNmb3JjZU9iamVjdExpbmsoZGV0YWlscy5hY2NvdW50SWQpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgZGV0YWlscy5hY2NvdW50TmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImluZm8tbGlzdF9fcm93XCI+XG4gICAgICAgICAgICAgIDxzcGFuPk9wcG9ydHVuaXR5IE5hbWU6PC9zcGFuPlxuICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJnZXRTYWxlc2ZvcmNlT2JqZWN0TGluayhkZXRhaWxzLm9wcG9ydHVuaXR5SWQpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgZGV0YWlscy5vcHBvcnR1bml0eU5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJpbmZvLWxpc3RfX3Jvd1wiPlxuICAgICAgICAgICAgICA8c3Bhbj5RdW90ZSBOYW1lOjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiZ2V0U2FsZXNmb3JjZU9iamVjdExpbmsoZGV0YWlscy5xdW90ZUlkKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRldGFpbHMucXVvdGVOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Atb3ZlcmxheVBhbmVsPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZmxvdy1uYXZpZ2F0aW9uXCI+XG4gIDxuZy1jb250YWluZXIgKnZsTGV0PVwiaXNSZWFkb25seU1vZGUkIHwgYXN5bmMgYXMgaXNSZWFkb25seU1vZGVcIj5cbiAgICA8bmF2XG4gICAgICBjbGFzcz1cIm5hdi1pdGVtXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiAoaXNDYXRhbG9nUm91dGUkIHwgYXN5bmMpLCBkaXNhYmxlZDogaXNSZWFkb25seU1vZGUgfVwiXG4gICAgICAoY2xpY2spPVwibmF2aWdhdGVUb0NhdGFsb2coKVwiXG4gICAgPlxuICAgICAgQ2F0YWxvZ1xuICAgIDwvbmF2PlxuICAgIDxuYXYgY2xhc3M9XCJuYXYtaXRlbSBkaXNhYmxlZFwiIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBpc0NvbmZpZ3VyYXRpb25Sb3V0ZSQgfCBhc3luYyB9XCI+Q29uZmlndXJhdG9yPC9uYXY+XG4gICAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJwcm9kdWN0cyQgfCBhc3luYyBhcyBwcm9kdWN0c1wiPlxuICAgICAgPG5hdlxuICAgICAgICBjbGFzcz1cIm5hdi1pdGVtXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IChpc0NhcnRSb3V0ZSQgfCBhc3luYyksIGRpc2FibGVkOiBpc1JlYWRvbmx5TW9kZSB9XCJcbiAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9TaG9wcGluZ0NhcnQoKVwiXG4gICAgICA+XG4gICAgICAgIFNob3BwaW5nIENhcnQgKHt7IHByb2R1Y3RzLmxlbmd0aCB9fSlcbiAgICAgIDwvbmF2PlxuXG4gICAgICA8bmF2XG4gICAgICAgIGNsYXNzPVwibmF2LXBvcG92ZXItdG9nZ2xlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IChpc0NhcnRSb3V0ZSQgfCBhc3luYyksIGRpc2FibGVkOiBpc1JlYWRvbmx5TW9kZSB9XCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNhcnRPdmVybGF5KGNhcnQsICRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aSAqbmdJZj1cIiFjYXJ0Py5vdmVybGF5UGFuZWw/Lm92ZXJsYXlWaXNpYmxlXCIgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi1kb3duIGljb24td2l0aC1tYXJnaW5cIj48L2k+XG4gICAgICAgIDxpICpuZ0lmPVwiY2FydD8ub3ZlcmxheVBhbmVsPy5vdmVybGF5VmlzaWJsZVwiIGNsYXNzPVwidmwtaWNvbiB2bC1pY29uLWNoZXZyb24tdXAgaWNvbi13aXRoLW1hcmdpblwiPjwvaT5cbiAgICAgIDwvbmF2PlxuXG4gICAgICA8dmwtY2FydC1wcmV2aWV3ICNjYXJ0IFtwcm9kdWN0c109XCJwcm9kdWN0c1wiPjwvdmwtY2FydC1wcmV2aWV3PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZmxvdy1jb250cm9sc1wiICp2bExldD1cIm9iamVjdERldGFpbHMkIHwgYXN5bmMgYXMgZGV0YWlsc1wiPlxuICA8bmctY29udGFpbmVyICp2bExldD1cImFjdGl2ZVByaWNlTGlzdCQgfCBhc3luYyBhcyBwcmljZUxpc3RcIj5cbiAgICA8ZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQWNjb3VudE1vZGUgJiYgYXNzZXRQcmljZUxpc3RzLmxlbmd0aCA+IDE7IGVsc2Ugc2luZ2xlUHJpY2VMaXN0XCI+XG4gICAgICAgIDxuYXYgY2xhc3M9XCJuYXYtaXRlbVwiIChjbGljayk9XCJwcmljZUxpc3RzT3ZlcmxheT8udG9nZ2xlKCRldmVudClcIj5cbiAgICAgICAgICA8c3Bhbj57eyBwcmljZUxpc3Q/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgPGkgKm5nSWY9XCIhcHJpY2VMaXN0c092ZXJsYXk/Lm92ZXJsYXlWaXNpYmxlXCIgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi1kb3duIGljb24td2l0aC1tYXJnaW5cIj48L2k+XG4gICAgICAgICAgPGkgKm5nSWY9XCJwcmljZUxpc3RzT3ZlcmxheT8ub3ZlcmxheVZpc2libGVcIiBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jaGV2cm9uLXVwIGljb24td2l0aC1tYXJnaW5cIj48L2k+XG4gICAgICAgIDwvbmF2PlxuXG4gICAgICAgIDxwLW92ZXJsYXlQYW5lbCBzdHlsZUNsYXNzPVwicHJpY2UtbGlzdC1vdmVybGF5XCIgI3ByaWNlTGlzdHNPdmVybGF5PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFzc2V0UHJpY2VMaXN0c1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwicHJpY2UtbGlzdC1vcHRpb25cIlxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInByaWNlTGlzdD8uaWQgPT09IG9wdGlvbi5pZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQcmljZUxpc3Qob3B0aW9uLmlkKTsgcHJpY2VMaXN0c092ZXJsYXkuaGlkZSgpXCJcbiAgICAgICAgICAgICAgPnt7IG9wdGlvbi5uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9wLW92ZXJsYXlQYW5lbD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZVByaWNlTGlzdD5cbiAgICAgICAgPGRpdj57eyBwcmljZUxpc3Q/Lm5hbWUgfX08L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1F1b3RlTW9kZVwiPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwiY29udGV4dFByb3BlcnRpZXMuU3RhcnREYXRlXCI+e3sgY29udGV4dFByb3BlcnRpZXMuU3RhcnREYXRlIHwgZGF0ZTogJ01NLmRkLnl5eXknIH19PC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHNwYW4gY2xhc3M9XCJtZXRyaWNzXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1ldHJpY3NfX3Jvd1wiPlxuICAgICAgPHNwYW4+TVJSOjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiPiR7eyB0b3RhbE1SUiQgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWV0cmljc19fcm93XCI+XG4gICAgICA8c3Bhbj5OUlI6PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkXCI+JHt7IHRvdGFsTlJSJCB8IGFzeW5jIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L3NwYW4+XG5cbiAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJpc0NhcnRSb3V0ZSQgfCBhc3luYyBhcyBpc0NhcnRSb3V0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKnZsTGV0PVwiaXNSZWFkb25seU1vZGUkIHwgYXN5bmMgYXMgaXNSZWFkb25seU1vZGVcIj5cbiAgICAgIDxwLWJ1dHRvblxuICAgICAgICBjbGFzcz1cImRvYy1nZW4tYnV0dG9uXCJcbiAgICAgICAgaWNvbj1cInZsLWljb24gdmwtaWNvbi1kb2MtZ2VuXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVhZG9ubHlNb2RlXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiZG9jR2VuQnV0dG9uQ2xpY2tIYW5kbGVyKGlzQ2FydFJvdXRlKVwiXG4gICAgICA+PC9wLWJ1dHRvbj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJpc1NhdmVJblByb2dyZXNzJCB8IGFzeW5jIGFzIGlzU2F2ZUluUHJvZ3Jlc3NcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJpc1N1Ym1pdEluUHJvZ3Jlc3MkIHwgYXN5bmMgYXMgaXNTdWJtaXRJblByb2dyZXNzXCI+XG4gICAgICAgICAgPHAtc3BsaXRCdXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiIWlzU2F2ZUluUHJvZ3Jlc3MgJiYgIWlzU3VibWl0SW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICBsYWJlbD1cIlNhdmUgdG8gUXVvdGVcIlxuICAgICAgICAgICAgKG9uQ2xpY2spPVwic2F2ZUJ1dHRvbkNsaWNrSGFuZGxlcihpc0NhcnRSb3V0ZSlcIlxuICAgICAgICAgICAgW21vZGVsXT1cImdldFNwbGl0QnV0dG9uQWN0aW9ucyhpc0NhcnRSb3V0ZSlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVhZG9ubHlNb2RlXCJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvcC1zcGxpdEJ1dHRvbj5cblxuICAgICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJpc1NhdmVJblByb2dyZXNzXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2F2ZS1idXR0b25cIlxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uXCJcbiAgICAgICAgICAgIGxhYmVsPVwiU2F2aW5nXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cInRydWVcIlxuICAgICAgICAgID48L3AtYnV0dG9uPlxuXG4gICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImlzU3VibWl0SW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICBjbGFzcz1cInN1Ym1pdC1idXR0b25cIlxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uXCJcbiAgICAgICAgICAgIGxhYmVsPVwiU3VibWl0dGluZ1wiXG4gICAgICAgICAgICBbbG9hZGluZ109XCJ0cnVlXCJcbiAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2RrL3NyYy9jb21wb25lbnRzL2hlYWRlci9oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zZGsvc3JjL2NvbXBvbmVudHMvaGVhZGVyL2hlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUV0RixPQUFPLEVBQ0wsd0JBQXdCLEdBTXpCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFBb0IsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUdyRSxPQUFPLEVBQ0wsZUFBZSxFQUNmLG9CQUFvQixFQUNwQixRQUFRLEVBQ1IsS0FBSyxFQUNMLEdBQUcsRUFDSCxJQUFJLEVBRUosRUFBRSxFQUNGLE9BQU8sRUFDUCxTQUFTLEVBQ1QsU0FBUyxFQUNULEdBQUcsR0FDSixNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7O0FBY2QsTUFBTSxPQUFPLG1CQUFtQjtJQXFCOUIsWUFDVSxjQUE4QixFQUM5QixpQkFBb0MsRUFDcEMsZUFBZ0MsRUFDaEMsWUFBa0MsRUFDbEMsaUJBQTJDLEVBQzNDLGFBQWdDLEVBQ2hDLGFBQWdDLEVBQ2hDLGdCQUFrQztRQVBsQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQXNCO1FBQ2xDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDM0Msa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdC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VUFBVSxLQUFLLFFBQVE7d0JBQ3ZDLE9BQU8sRUFBRSxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7d0JBQzFDLEdBQUcsRUFBRSxNQUFNLENBQUMsR0FBRzt3QkFDZixHQUFHLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQzt3QkFDdkQsR0FBRyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7cUJBQ3hEO2lCQUNGLENBQUM7YUFDSDtZQUVELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFTyxjQUFjOztRQUNwQixPQUFPLENBQ0wsQ0FBQSxNQUFBLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLDBDQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxNQUFLLHdCQUF3QixDQUFDLE9BQU87WUFDL0YsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUNsQyxDQUFDO0lBQ0osQ0FBQzs7aUhBcFdVLG1CQUFtQjtxR0FBbkIsbUJBQW1CLHNEQ3hDaEMsd3lOQW1MQTs0RkQzSWEsbUJBQW1CO2tCQU4vQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFdBQVcsRUFBRSx5QkFBeUI7b0JBQ3RDLFNBQVMsRUFBRSxDQUFDLHlCQUF5QixDQUFDO29CQUN0QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUXVvdGVBcGlTZXJ2aWNlLCBTYWxlc2ZvcmNlQXBpU2VydmljZSB9IGZyb20gJ0B2ZWxvY2UvYXBpJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZSxcbiAgQ29udGV4dFByb3BlcnRpZXMsXG4gIExpbmVJdGVtLFxuICBQcmljZUxpc3QsXG4gIFNlYXJjaFJlcXVlc3QsXG4gIFZsV2luZG93LFxufSBmcm9tICdAdmVsb2NlL2NvcmUnO1xuaW1wb3J0IHsgSW50ZWdyYXRpb25TdGF0ZSwgT3BlbkRvY0dlbkFjdGlvbiB9IGZyb20gJ0B2ZWxvY2Uvc2RrL2Ntcyc7XG5pbXBvcnQgeyBDb250ZXh0U2VydmljZSwgRmxvd0NvbmZpZ3VyYXRpb25TZXJ2aWNlLCBRdW90ZURyYWZ0U2VydmljZSB9IGZyb20gJ0B2ZWxvY2Uvc2RrL2NvcmUnO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBmaW5hbGl6ZSxcbiAgZmlyc3QsXG4gIG1hcCxcbiAgbm9vcCxcbiAgT2JzZXJ2YWJsZSxcbiAgb2YsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZVVudGlsLFxuICB0YXAsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRmxvd0RpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mbG93LWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IEZsb3dSb3V0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmxvdy1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0UHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4vY2FydC1vdmVybGF5L2NhcnQtcHJldmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGVhZGVyT2JqZWN0RGV0YWlscywgSGVhZGVyUHJvZHVjdCB9IGZyb20gJy4vaGVhZGVyLnR5cGVzJztcblxuZGVjbGFyZSBjb25zdCB3aW5kb3c6IFZsV2luZG93O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2bC1mbG93LWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9oZWFkZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEZsb3dIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBvYmplY3ROYW1lID0gJyc7XG4gIHB1YmxpYyBjb250ZXh0UHJvcGVydGllczogQ29udGV4dFByb3BlcnRpZXM7XG4gIHB1YmxpYyBhc3NldFByaWNlTGlzdHM6IFByaWNlTGlzdFtdO1xuICBwdWJsaWMgYWN0aXZlUHJpY2VMaXN0JDogT2JzZXJ2YWJsZTxQcmljZUxpc3QgfCBudWxsPjtcbiAgcHVibGljIGlzUmVhZG9ubHlNb2RlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIHN0YXR1cyQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgcHVibGljIG9iamVjdERldGFpbHMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxIZWFkZXJPYmplY3REZXRhaWxzPih7fSk7XG4gIHB1YmxpYyBwcm9kdWN0cyQ6IE9ic2VydmFibGU8SGVhZGVyUHJvZHVjdFtdPjtcbiAgcHVibGljIGlzQ29uZmlndXJhdGlvblJvdXRlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzQ2FydFJvdXRlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzQ2F0YWxvZ1JvdXRlJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgcHVibGljIGlzRWRpdE1vZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBwdWJsaWMgaXNTYXZlSW5Qcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIGlzU3VibWl0SW5Qcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcHVibGljIHRvdGFsTVJSJDogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuICBwdWJsaWMgdG90YWxOUlIkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgcHJpdmF0ZSBtb2RlPzogQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlO1xuICBwcml2YXRlIGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVEcmFmdFNlcnZpY2U6IFF1b3RlRHJhZnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcXVvdGVBcGlTZXJ2aWNlOiBRdW90ZUFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzZkFwaVNlcnZpY2U6IFNhbGVzZm9yY2VBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmxvd0NvbmZpZ3VyYXRpb246IEZsb3dDb25maWd1cmF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJvdXRlclNlcnZpY2U6IEZsb3dSb3V0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nU2VydmljZTogRmxvd0RpYWxvZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnRlZ3JhdGlvblN0YXRlOiBJbnRlZ3JhdGlvblN0YXRlLFxuICApIHtcbiAgICBjb25zdCBjdHggPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUoKTtcblxuICAgIHRoaXMubW9kZSA9IGN0eC5tb2RlO1xuICAgIHRoaXMub2JqZWN0TmFtZSA9IGN0eC5tb2RlLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5jb250ZXh0UHJvcGVydGllcyA9IGN0eC5wcm9wZXJ0aWVzO1xuICAgIHRoaXMuYXNzZXRQcmljZUxpc3RzID0gdGhpcy5xdW90ZURyYWZ0U2VydmljZS5hc3NldFByaWNlTGlzdHM7XG5cbiAgICB0aGlzLmFjdGl2ZVByaWNlTGlzdCQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmFjdGl2ZVByaWNlTGlzdCQ7XG4gICAgdGhpcy5pc1JlYWRvbmx5TW9kZSQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc0Fzc2V0cyQucGlwZShtYXAoKCkgPT4gdGhpcy5pc1JlYWRvbmx5TW9kZSgpKSk7XG4gICAgdGhpcy5zdGF0dXMkID0gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlJCgpLnBpcGUobWFwKGNvbnRleHQgPT4gY29udGV4dC5wcm9wZXJ0aWVzLlN0YXR1cyA/PyAnJykpO1xuICAgIHRoaXMuaXNFZGl0TW9kZSQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzRWRpdE1vZGUkKCk7XG4gICAgdGhpcy5wcm9kdWN0cyQgPSB0aGlzLmZsb3dDb25maWd1cmF0aW9uLmdldCgpLnBpcGUobWFwKGxpbmVJdGVtcyA9PiB0aGlzLmdlbmVyYXRlUHJvZHVjdHMobGluZUl0ZW1zKSkpO1xuICAgIHRoaXMuaXNDb25maWd1cmF0aW9uUm91dGUkID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmlzQ29uZmlndXJhdGlvblJvdXRlJCgpO1xuICAgIHRoaXMuaXNDYXJ0Um91dGUkID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmlzQ2FydFJvdXRlJCgpO1xuICAgIHRoaXMuaXNDYXRhbG9nUm91dGUkID0gdGhpcy5yb3V0ZXJTZXJ2aWNlLmlzQ2F0YWxvZ1JvdXRlJCgpO1xuXG4gICAgdGhpcy50b3RhbE1SUiQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUkKCkucGlwZShcbiAgICAgIG1hcChjdHggPT4gY3R4LnByb3BlcnRpZXMuVkRNX1RvdGFsX01SUiksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgbWFwKG1yciA9PiB0aGlzLmZvcm1hdE1ldHJpYyhtcnIpKSxcbiAgICApO1xuXG4gICAgdGhpcy50b3RhbE5SUiQgPSB0aGlzLmNvbnRleHRTZXJ2aWNlLnJlc29sdmUkKCkucGlwZShcbiAgICAgIG1hcChjdHggPT4gY3R4LnByb3BlcnRpZXMuVkRNX1RvdGFsX05SUiksXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgbWFwKG5yciA9PiB0aGlzLmZvcm1hdE1ldHJpYyhucnIpKSxcbiAgICApO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wb3B1bGF0ZU9iamVjdERldGFpbHMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5kZXN0cm95ZWQkLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzQWNjb3VudE1vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLkFDQ09VTlQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzUXVvdGVNb2RlKCkge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5RVU9URTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTcGxpdEJ1dHRvbkFjdGlvbnMoaXNDYXJ0Um91dGU6IGJvb2xlYW4pOiBNZW51SXRlbVtdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBsYWJlbDogJ1NhdmUgdG8gUXVvdGUnLFxuICAgICAgICBjb21tYW5kOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZlQnV0dG9uQ2xpY2tIYW5kbGVyKGlzQ2FydFJvdXRlKTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiAnU3VibWl0IEZvciBBcHByb3ZhbCcsXG4gICAgICAgIGNvbW1hbmQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnN1Ym1pdEJ1dHRvbkNsaWNrSGFuZGxlcihpc0NhcnRSb3V0ZSk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwdWJsaWMgYmFjayhvYmplY3RJZD86IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldElkID0gb2JqZWN0SWQgPz8gdGhpcy5jb250ZXh0U2VydmljZS5yZXNvbHZlKCkuaGVhZGVySWQ7XG5cbiAgICBpZiAodGFyZ2V0SWQpIHtcbiAgICAgIHdpbmRvdy5WRUxPX0JBQ0tfRk4uYXBwbHkobnVsbCwgW3RhcmdldElkXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldFNhbGVzZm9yY2VPYmplY3RMaW5rKG9iamVjdElkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW9iamVjdElkKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3dpbmRvdy5sb2NhdGlvbi5vcmlnaW59LyR7b2JqZWN0SWR9YDtcbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvU2hvcHBpbmdDYXJ0KCkge1xuICAgIGlmICghdGhpcy5pc1JlYWRvbmx5TW9kZSgpKSB7XG4gICAgICB0aGlzLnJvdXRlclNlcnZpY2UubmF2aWdhdGVUb1Nob3BwaW5nQ2FydCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuYXZpZ2F0ZVRvQ2F0YWxvZygpIHtcbiAgICBpZiAoIXRoaXMuaXNSZWFkb25seU1vZGUoKSkge1xuICAgICAgdGhpcy5yb3V0ZXJTZXJ2aWNlLm5hdmlnYXRlVG9DYXRhbG9nKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRvY0dlbkJ1dHRvbkNsaWNrSGFuZGxlcihpc0NhcnRSb3V0ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UKSB7XG4gICAgICBpZiAoIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dBY2NvdW50Tm9DaGFuZ2VzRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0RvY2dlbkFjY291bnRVbnNhdmVkQ2hhbmdlc0RpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5xdW90ZURyYWZ0U2VydmljZS5pc0VkaXRNb2RlKCkpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93RG9jZ2VuUmVhZG9ubHlEaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWlzQ2FydFJvdXRlKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0RvY2dlbk91dHNpZGVTaG9wcGluZ0NhcnREaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgc2hvdWxkT3BlbiQgPSBvZih0cnVlKTtcblxuICAgIGlmICh0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmhhc1Vuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICBzaG91bGRPcGVuJCA9IHRoaXMuZGlhbG9nU2VydmljZS5zaG93RG9jZ2VuVW5zYXZlZENoYW5nZXNEaWFsb2coKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoY29uZmlybWVkID0+IHtcbiAgICAgICAgICBpZiAoIWNvbmZpcm1lZCkge1xuICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc2F2ZVF1b3RlJCh0cnVlKS5waXBlKG1hcCgoKSA9PiB0cnVlKSk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBzaG91bGRPcGVuJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpcnN0KCksXG4gICAgICAgIHRhcChzaG91bGRPcGVuID0+IHNob3VsZE9wZW4gJiYgdGhpcy5pbnRlZ3JhdGlvblN0YXRlLmRpc3BhdGNoKE9wZW5Eb2NHZW5BY3Rpb24oKSkpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHNhdmVCdXR0b25DbGlja0hhbmRsZXIoaXNDYXJ0Um91dGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucXVvdGVEcmFmdFNlcnZpY2UuaXNFZGl0TW9kZSgpKSB7XG4gICAgICBpZiAodGhpcy5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuUVVPVEUpIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dRdW90ZVJlYWRvbmx5TW9kZURpYWxvZygpLnN1YnNjcmliZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dSZWFkb25seU1vZGVEaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tb2RlID09PSBDb25maWd1cmF0aW9uQ29udGV4dE1vZGUuQUNDT1VOVCAmJiAhdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dBY2NvdW50Tm9DaGFuZ2VzRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFpc0NhcnRSb3V0ZSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dRdW90ZU91dHNpZGVTaG9wcGluZ0NhcnREaWFsb2coKS5zdWJzY3JpYmUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5lSXRlbXMgPSB0aGlzLmZsb3dDb25maWd1cmF0aW9uLmdldFNuYXBzaG90KCk7XG5cbiAgICBpZiAoIWxpbmVJdGVtcy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZGlhbG9nU2VydmljZS5zaG93RW1wdHlDYXJ0RGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zYXZlUXVvdGUkKCkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwdWJsaWMgc3VibWl0QnV0dG9uQ2xpY2tIYW5kbGVyKGlzQ2FydFJvdXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubW9kZSA9PT0gQ29uZmlndXJhdGlvbkNvbnRleHRNb2RlLlFVT1RFICYmICF0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLmlzRWRpdE1vZGUoKSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dSZWFkb25seVF1b3RlU3VibWl0RmFpbHVyZURpYWxvZygpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UKSB7XG4gICAgICB0aGlzLmRpYWxvZ1NlcnZpY2Uuc2hvd0FjY291bnRTdWJtaXRGYWlsdXJlRGlhbG9nKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCFpc0NhcnRSb3V0ZSkge1xuICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLnNob3dPdXRzaWRlU2hvcHBpbmdDYXJ0UXVvdGVTdWJtaXRGYWlsdXJlRGlhbG9nKCkuc3Vic2NyaWJlKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcXVvdGVEcmFmdCA9IHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdDtcbiAgICBpZiAoIXF1b3RlRHJhZnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLmlzU3VibWl0SW5Qcm9ncmVzcyQubmV4dCh0cnVlKTtcblxuICAgIHRoaXMucXVvdGVBcGlTZXJ2aWNlXG4gICAgICAuc3VibWl0UXVvdGUocXVvdGVEcmFmdClcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKHsgcXVvdGVJZCB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuYmFjayhxdW90ZUlkKTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbmFsaXplKCgpID0+IHRoaXMuaXNTdWJtaXRJblByb2dyZXNzJC5uZXh0KGZhbHNlKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdFByaWNlTGlzdChwcmljZUxpc3RJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS51cGRhdGVBY3RpdmVQcmljZUxpc3QocHJpY2VMaXN0SWQpO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZUNhcnRPdmVybGF5KGNhcnQ6IENhcnRQcmV2aWV3Q29tcG9uZW50LCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZWFkb25seU1vZGUoKSkge1xuICAgICAgY2FydD8ub3ZlcmxheVBhbmVsLnRvZ2dsZShldmVudCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzYXZlUXVvdGUkKHN0YXlPblBhZ2UgPSBmYWxzZSk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnN0IHF1b3RlRHJhZnQgPSB0aGlzLnF1b3RlRHJhZnRTZXJ2aWNlLnF1b3RlRHJhZnRGb3JBY3RpdmVQcmljZUxpc3Q7XG4gICAgaWYgKCFxdW90ZURyYWZ0KSB7XG4gICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICB0aGlzLmlzU2F2ZUluUHJvZ3Jlc3MkLm5leHQodHJ1ZSk7XG5cbiAgICByZXR1cm4gdGhpcy5xdW90ZUFwaVNlcnZpY2UudXBzZXJ0UXVvdGUocXVvdGVEcmFmdCkucGlwZShcbiAgICAgIHRhcCgoeyBxdW90ZUlkIH0pID0+IHtcbiAgICAgICAgdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlO1xuXG4gICAgICAgIGlmICghc3RheU9uUGFnZSkge1xuICAgICAgICAgIHRoaXMuYmFjayhxdW90ZUlkKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmlzU2F2ZUluUHJvZ3Jlc3MkLm5leHQoZmFsc2UpKSxcbiAgICAgIG1hcChub29wKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHF1ZXJ5TmFtZSQob2JqZWN0TmFtZTogc3RyaW5nLCBpZD86IHN0cmluZyk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgaWYgKCFpZCkge1xuICAgICAgcmV0dXJuIG9mKCcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzZWFyY2hSZXF1ZXN0OiBTZWFyY2hSZXF1ZXN0ID0ge1xuICAgICAgY291bnQ6IDEsXG4gICAgICByYXdDb25kaXRpb246IGBJZCA9ICcke2lkfSdgLFxuICAgICAgZmllbGRzOiBbJ05hbWUnXSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHRoaXMuc2ZBcGlTZXJ2aWNlLnF1ZXJ5PGFueT4oc2VhcmNoUmVxdWVzdCwgb2JqZWN0TmFtZSkucGlwZShcbiAgICAgIG1hcChyZXN1bHQgPT4gcmVzdWx0WzBdPy5OYW1lID8/ICcnKSxcbiAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHBvcHVsYXRlT2JqZWN0RGV0YWlscygpOiB2b2lkIHtcbiAgICBjb25zdCBhY2NvdW50SWQgPSB0aGlzLmlzQWNjb3VudE1vZGUgPyB0aGlzLmNvbnRleHRQcm9wZXJ0aWVzLklkIDogdGhpcy5jb250ZXh0UHJvcGVydGllcy5BY2NvdW50SWQ7XG4gICAgY29uc3Qgb3Bwb3J0dW5pdHlJZCA9IHRoaXMuY29udGV4dFByb3BlcnRpZXMuT3Bwb3J0dW5pdHlJZDtcbiAgICBjb25zdCBxdW90ZUlkID0gdGhpcy5pc1F1b3RlTW9kZSA/IHRoaXMuY29udGV4dFByb3BlcnRpZXMuSWQgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgcXVvdGVOYW1lID0gdGhpcy5pc1F1b3RlTW9kZSA/IHRoaXMuY29udGV4dFByb3BlcnRpZXMuTmFtZSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBxdW90ZU51bWJlciA9IHRoaXMuaXNRdW90ZU1vZGUgPyB0aGlzLmNvbnRleHRQcm9wZXJ0aWVzLlF1b3RlTnVtYmVyPy5yZXBsYWNlKC9eMCsvLCAnJykgOiB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLm9iamVjdERldGFpbHMkLm5leHQoe1xuICAgICAgLi4udGhpcy5vYmplY3REZXRhaWxzJC52YWx1ZSxcbiAgICAgIGFjY291bnRJZCxcbiAgICAgIG9wcG9ydHVuaXR5SWQsXG4gICAgICBxdW90ZUlkLFxuICAgICAgcXVvdGVOYW1lLFxuICAgICAgcXVvdGVOdW1iZXIsXG4gICAgfSk7XG5cbiAgICB0aGlzLnF1ZXJ5TmFtZSQoJ0FjY291bnQnLCBhY2NvdW50SWQpLnN1YnNjcmliZShhY2NvdW50TmFtZSA9PlxuICAgICAgdGhpcy5vYmplY3REZXRhaWxzJC5uZXh0KHtcbiAgICAgICAgLi4udGhpcy5vYmplY3REZXRhaWxzJC52YWx1ZSxcbiAgICAgICAgYWNjb3VudE5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICAgIHRoaXMucXVlcnlOYW1lJCgnT3Bwb3J0dW5pdHknLCBvcHBvcnR1bml0eUlkKS5zdWJzY3JpYmUob3Bwb3J0dW5pdHlOYW1lID0+XG4gICAgICB0aGlzLm9iamVjdERldGFpbHMkLm5leHQoe1xuICAgICAgICAuLi50aGlzLm9iamVjdERldGFpbHMkLnZhbHVlLFxuICAgICAgICBvcHBvcnR1bml0eU5hbWUsXG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRNZXRyaWModmFsdWU/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiAodmFsdWUgPyBOdW1iZXIodmFsdWUpIDogMCkudG9GaXhlZCgyKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVQcm9kdWN0cyhsaW5lSXRlbXM6IExpbmVJdGVtW10pOiBIZWFkZXJQcm9kdWN0W10ge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgY29uc3Qgbm93ID0gZGF0ZS5nZXRUaW1lKCk7XG4gICAgY29uc3QgdGVybVBhcmVudElkcyA9IGxpbmVJdGVtcy5tYXAobGkgPT4gbGkucmFtcEluc3RhbmNlSWQpLmZpbHRlcihCb29sZWFuKTtcblxuICAgIHJldHVybiBsaW5lSXRlbXMucmVkdWNlKChyZXN1bHQ6IEhlYWRlclByb2R1Y3RbXSwgbGkpID0+IHtcbiAgICAgIC8vIGZpbmQgbWFpbiB0ZXJtIGxpbmUgaXRlbVxuICAgICAgaWYgKGxpLnJhbXBJbnN0YW5jZUlkKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGZpbmQgY3VycmVudCB0ZXJtIGxpbmUgaXRlbVxuICAgICAgbGV0IHRhcmdldDogTGluZUl0ZW0gfCB1bmRlZmluZWQgPSBsaTtcbiAgICAgIHdoaWxlICh0YXJnZXQgJiYgdGFyZ2V0LmVuZERhdGUgJiYgbmV3IERhdGUodGFyZ2V0LmVuZERhdGUpLmdldFRpbWUoKSA8PSBub3cpIHtcbiAgICAgICAgdGFyZ2V0ID0gbGluZUl0ZW1zLmZpbmQoc3ViID0+IHN1Yi5yYW1wSW5zdGFuY2VJZCA9PT0gbGkuaWQpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGFyZ2V0ICYmIHRhcmdldC5wcm9kdWN0SWQpIHtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IHRhcmdldC5pZCxcbiAgICAgICAgICAgIHByb2R1Y3RJZDogdGFyZ2V0LnByb2R1Y3RJZCxcbiAgICAgICAgICAgIG5hbWU6IHRhcmdldC5uYW1lLFxuICAgICAgICAgICAgY29uZmlndXJhYmxlOiB0YXJnZXQucHJvcGVydGllc1snI2NvbmZpZ3VyYWJsZSddID09PSAndHJ1ZScsXG4gICAgICAgICAgICBkZWxldGVkOiB0YXJnZXQuYWN0aW9uQ29kZSA9PT0gJ0RFTEVURScsXG4gICAgICAgICAgICBoYXNUZXJtOiB0ZXJtUGFyZW50SWRzLmluY2x1ZGVzKHRhcmdldC5pZCksXG4gICAgICAgICAgICBxdHk6IHRhcmdldC5xdHksXG4gICAgICAgICAgICBtcnI6IHRoaXMuZm9ybWF0TWV0cmljKHRhcmdldC5wcm9wZXJ0aWVzLlZETV9Ub3RhbF9NUlIpLFxuICAgICAgICAgICAgbnJyOiB0aGlzLmZvcm1hdE1ldHJpYyh0YXJnZXQucHJvcGVydGllcy5WRE1fVG90YWxfTlJSKSxcbiAgICAgICAgICB9LFxuICAgICAgICBdO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNSZWFkb25seU1vZGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMucXVvdGVEcmFmdFNlcnZpY2UucXVvdGVEcmFmdD8uY29udGV4dC5wcm9wZXJ0aWVzLm1vZGUgPT09IENvbmZpZ3VyYXRpb25Db250ZXh0TW9kZS5BQ0NPVU5UICYmXG4gICAgICAhdGhpcy5xdW90ZURyYWZ0U2VydmljZS5oYXNBc3NldHNcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZmxvdy1pbmZvXCIgKnZsTGV0PVwib2JqZWN0RGV0YWlscyQgfCBhc3luYyBhcyBkZXRhaWxzXCI+XG4gIDxuYXYgY2xhc3M9XCJuYXYtaXRlbSBuYXYtYmFja1wiIChjbGljayk9XCJiYWNrKClcIj5cbiAgICA8aSBjbGFzcz1cIm5hdi1pY29uIHZsLWljb24gdmwtaWNvbi1hcnJvdy1sZWZ0XCI+PC9pPlxuXG4gICAgPHNwYW4+IEJhY2sgdG8ge3sgb2JqZWN0TmFtZSB8IHRpdGxlY2FzZSB9fTwvc3Bhbj5cbiAgPC9uYXY+XG5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQWNjb3VudE1vZGVcIj5cbiAgICA8c3BhbiBjbGFzcz1cImRvdC1zZXBhcmF0b3JcIj48L3NwYW4+XG5cbiAgICA8bmF2IGNsYXNzPVwiYWNjb3VudC1uYW1lXCIgW3BUb29sdGlwXT1cImNvbnRleHRQcm9wZXJ0aWVzLk5hbWUgPz8gJydcIiB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIiBbc2hvd0RlbGF5XT1cIjEwMDBcIj5cbiAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIFtocmVmXT1cImdldFNhbGVzZm9yY2VPYmplY3RMaW5rKGNvbnRleHRQcm9wZXJ0aWVzLklkKVwiPnt7IGNvbnRleHRQcm9wZXJ0aWVzLk5hbWUgfX08L2E+XG4gICAgPC9uYXY+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1F1b3RlTW9kZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwiZG90LXNlcGFyYXRvclwiPjwvc3Bhbj5cblxuICAgIDxzcGFuPlF1b3RlICN7eyBkZXRhaWxzLnF1b3RlTnVtYmVyIH19PC9zcGFuPlxuXG4gICAgPHNwYW4gY2xhc3M9XCJkb3Qtc2VwYXJhdG9yXCI+PC9zcGFuPlxuXG4gICAgPG5hdiBjbGFzcz1cIm5hdi1pdGVtXCIgKGNsaWNrKT1cInF1b3RlRGV0YWlscy50b2dnbGUoJGV2ZW50KVwiPlxuICAgICAgPHNwYW4+e3sgc3RhdHVzJCB8IGFzeW5jIH19PC9zcGFuPlxuXG4gICAgICA8aSAqbmdJZj1cIiFxdW90ZURldGFpbHMub3ZlcmxheVZpc2libGVcIiBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jaGV2cm9uLWRvd24gaWNvbi13aXRoLW1hcmdpblwiPjwvaT5cbiAgICAgIDxpICpuZ0lmPVwicXVvdGVEZXRhaWxzLm92ZXJsYXlWaXNpYmxlXCIgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi11cCBpY29uLXdpdGgtbWFyZ2luXCI+PC9pPlxuICAgIDwvbmF2PlxuXG4gICAgPHAtb3ZlcmxheVBhbmVsIHN0eWxlQ2xhc3M9XCJuYXZpZ2F0aW9uLXNldHRpbmdzLW92ZXJsYXkgZmxvdy1oZWFkZXItb3ZlcmxheSBjZW50ZXJcIiAjcXVvdGVEZXRhaWxzPlxuICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsb3ctaGVhZGVyLW92ZXJsYXlfX3dyYXBwZXJcIj5cbiAgICAgICAgICA8aDIgY2xhc3M9XCJmbG93LWhlYWRlci1vdmVybGF5X190aXRsZVwiPlxuICAgICAgICAgICAgPHNwYW4+UXVvdGUgSW5mb3JtYXRpb248L3NwYW4+XG4gICAgICAgICAgICA8aSBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jbG9zZSBjbG9zZS1pY29uXCIgKGNsaWNrKT1cInF1b3RlRGV0YWlscy5oaWRlKClcIj48L2k+XG4gICAgICAgICAgPC9oMj5cblxuICAgICAgICAgIDx1bCBjbGFzcz1cImluZm8tbGlzdFwiPlxuICAgICAgICAgICAgPGxpIGNsYXNzPVwiaW5mby1saXN0X19yb3dcIj5cbiAgICAgICAgICAgICAgPHNwYW4+QWNjb3VudCBOYW1lOjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiZ2V0U2FsZXNmb3JjZU9iamVjdExpbmsoZGV0YWlscy5hY2NvdW50SWQpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgZGV0YWlscy5hY2NvdW50TmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDxsaSBjbGFzcz1cImluZm8tbGlzdF9fcm93XCI+XG4gICAgICAgICAgICAgIDxzcGFuPk9wcG9ydHVuaXR5IE5hbWU6PC9zcGFuPlxuICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBbaHJlZl09XCJnZXRTYWxlc2ZvcmNlT2JqZWN0TGluayhkZXRhaWxzLm9wcG9ydHVuaXR5SWQpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgZGV0YWlscy5vcHBvcnR1bml0eU5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJpbmZvLWxpc3RfX3Jvd1wiPlxuICAgICAgICAgICAgICA8c3Bhbj5RdW90ZSBOYW1lOjwvc3Bhbj5cbiAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgW2hyZWZdPVwiZ2V0U2FsZXNmb3JjZU9iamVjdExpbmsoZGV0YWlscy5xdW90ZUlkKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGRldGFpbHMucXVvdGVOYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L3Atb3ZlcmxheVBhbmVsPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZmxvdy1uYXZpZ2F0aW9uXCI+XG4gIDxuZy1jb250YWluZXIgKnZsTGV0PVwiaXNSZWFkb25seU1vZGUkIHwgYXN5bmMgYXMgaXNSZWFkb25seU1vZGVcIj5cbiAgICA8bmF2XG4gICAgICBjbGFzcz1cIm5hdi1pdGVtXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiAoaXNDYXRhbG9nUm91dGUkIHwgYXN5bmMpLCBkaXNhYmxlZDogaXNSZWFkb25seU1vZGUgfVwiXG4gICAgICAoY2xpY2spPVwibmF2aWdhdGVUb0NhdGFsb2coKVwiXG4gICAgPlxuICAgICAgQ2F0YWxvZ1xuICAgIDwvbmF2PlxuICAgIDxuYXYgY2xhc3M9XCJuYXYtaXRlbSBkaXNhYmxlZFwiIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBpc0NvbmZpZ3VyYXRpb25Sb3V0ZSQgfCBhc3luYyB9XCI+Q29uZmlndXJhdG9yPC9uYXY+XG4gICAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJwcm9kdWN0cyQgfCBhc3luYyBhcyBwcm9kdWN0c1wiPlxuICAgICAgPG5hdlxuICAgICAgICBjbGFzcz1cIm5hdi1pdGVtXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IChpc0NhcnRSb3V0ZSQgfCBhc3luYyksIGRpc2FibGVkOiBpc1JlYWRvbmx5TW9kZSB9XCJcbiAgICAgICAgKGNsaWNrKT1cIm5hdmlnYXRlVG9TaG9wcGluZ0NhcnQoKVwiXG4gICAgICA+XG4gICAgICAgIFNob3BwaW5nIENhcnQgKHt7IHByb2R1Y3RzLmxlbmd0aCB9fSlcbiAgICAgIDwvbmF2PlxuXG4gICAgICA8bmF2XG4gICAgICAgIGNsYXNzPVwibmF2LXBvcG92ZXItdG9nZ2xlXCJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IChpc0NhcnRSb3V0ZSQgfCBhc3luYyksIGRpc2FibGVkOiBpc1JlYWRvbmx5TW9kZSB9XCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUNhcnRPdmVybGF5KGNhcnQsICRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8aSAqbmdJZj1cIiFjYXJ0Py5vdmVybGF5UGFuZWw/Lm92ZXJsYXlWaXNpYmxlXCIgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi1kb3duIGljb24td2l0aC1tYXJnaW5cIj48L2k+XG4gICAgICAgIDxpICpuZ0lmPVwiY2FydD8ub3ZlcmxheVBhbmVsPy5vdmVybGF5VmlzaWJsZVwiIGNsYXNzPVwidmwtaWNvbiB2bC1pY29uLWNoZXZyb24tdXAgaWNvbi13aXRoLW1hcmdpblwiPjwvaT5cbiAgICAgIDwvbmF2PlxuXG4gICAgICA8dmwtY2FydC1wcmV2aWV3ICNjYXJ0IFtwcm9kdWN0c109XCJwcm9kdWN0c1wiPjwvdmwtY2FydC1wcmV2aWV3PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZmxvdy1jb250cm9sc1wiICp2bExldD1cIm9iamVjdERldGFpbHMkIHwgYXN5bmMgYXMgZGV0YWlsc1wiPlxuICA8bmctY29udGFpbmVyICp2bExldD1cImFjdGl2ZVByaWNlTGlzdCQgfCBhc3luYyBhcyBwcmljZUxpc3RcIj5cbiAgICA8ZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQWNjb3VudE1vZGUgJiYgYXNzZXRQcmljZUxpc3RzLmxlbmd0aCA+IDE7IGVsc2Ugc2luZ2xlUHJpY2VMaXN0XCI+XG4gICAgICAgIDxuYXYgY2xhc3M9XCJuYXYtaXRlbVwiIChjbGljayk9XCJwcmljZUxpc3RzT3ZlcmxheT8udG9nZ2xlKCRldmVudClcIj5cbiAgICAgICAgICA8c3Bhbj57eyBwcmljZUxpc3Q/Lm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgPGkgKm5nSWY9XCIhcHJpY2VMaXN0c092ZXJsYXk/Lm92ZXJsYXlWaXNpYmxlXCIgY2xhc3M9XCJ2bC1pY29uIHZsLWljb24tY2hldnJvbi1kb3duIGljb24td2l0aC1tYXJnaW5cIj48L2k+XG4gICAgICAgICAgPGkgKm5nSWY9XCJwcmljZUxpc3RzT3ZlcmxheT8ub3ZlcmxheVZpc2libGVcIiBjbGFzcz1cInZsLWljb24gdmwtaWNvbi1jaGV2cm9uLXVwIGljb24td2l0aC1tYXJnaW5cIj48L2k+XG4gICAgICAgIDwvbmF2PlxuXG4gICAgICAgIDxwLW92ZXJsYXlQYW5lbCBzdHlsZUNsYXNzPVwicHJpY2UtbGlzdC1vdmVybGF5XCIgI3ByaWNlTGlzdHNPdmVybGF5PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGFzc2V0UHJpY2VMaXN0c1wiXG4gICAgICAgICAgICAgIGNsYXNzPVwicHJpY2UtbGlzdC1vcHRpb25cIlxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInByaWNlTGlzdD8uaWQgPT09IG9wdGlvbi5pZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RQcmljZUxpc3Qob3B0aW9uLmlkKTsgcHJpY2VMaXN0c092ZXJsYXkuaGlkZSgpXCJcbiAgICAgICAgICAgICAgPnt7IG9wdGlvbi5uYW1lIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9wLW92ZXJsYXlQYW5lbD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZVByaWNlTGlzdD5cbiAgICAgICAgPGRpdj57eyBwcmljZUxpc3Q/Lm5hbWUgfX08L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCJjb250ZXh0UHJvcGVydGllcy5TdGFydERhdGVcIj57eyBjb250ZXh0UHJvcGVydGllcy5TdGFydERhdGUgfCBkYXRlOiAnTU0uZGQueXl5eScgfX08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPHNwYW4gY2xhc3M9XCJtZXRyaWNzXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1ldHJpY3NfX3Jvd1wiPlxuICAgICAgPHNwYW4+TVJSOjwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1zZW1pYm9sZFwiPiR7eyB0b3RhbE1SUiQgfCBhc3luYyB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWV0cmljc19fcm93XCI+XG4gICAgICA8c3Bhbj5OUlI6PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJmb250LXNlbWlib2xkXCI+JHt7IHRvdGFsTlJSJCB8IGFzeW5jIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L3NwYW4+XG5cbiAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJpc0NhcnRSb3V0ZSQgfCBhc3luYyBhcyBpc0NhcnRSb3V0ZVwiPlxuICAgIDxuZy1jb250YWluZXIgKnZsTGV0PVwiaXNSZWFkb25seU1vZGUkIHwgYXN5bmMgYXMgaXNSZWFkb25seU1vZGVcIj5cbiAgICAgIDxwLWJ1dHRvblxuICAgICAgICBjbGFzcz1cImRvYy1nZW4tYnV0dG9uXCJcbiAgICAgICAgaWNvbj1cInZsLWljb24gdmwtaWNvbi1kb2MtZ2VuXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVhZG9ubHlNb2RlXCJcbiAgICAgICAgKG9uQ2xpY2spPVwiZG9jR2VuQnV0dG9uQ2xpY2tIYW5kbGVyKGlzQ2FydFJvdXRlKVwiXG4gICAgICA+PC9wLWJ1dHRvbj5cblxuICAgICAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJpc1NhdmVJblByb2dyZXNzJCB8IGFzeW5jIGFzIGlzU2F2ZUluUHJvZ3Jlc3NcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqdmxMZXQ9XCJpc1N1Ym1pdEluUHJvZ3Jlc3MkIHwgYXN5bmMgYXMgaXNTdWJtaXRJblByb2dyZXNzXCI+XG4gICAgICAgICAgPHAtc3BsaXRCdXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiIWlzU2F2ZUluUHJvZ3Jlc3MgJiYgIWlzU3VibWl0SW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICBsYWJlbD1cIlNhdmUgdG8gUXVvdGVcIlxuICAgICAgICAgICAgKG9uQ2xpY2spPVwic2F2ZUJ1dHRvbkNsaWNrSGFuZGxlcihpc0NhcnRSb3V0ZSlcIlxuICAgICAgICAgICAgW21vZGVsXT1cImdldFNwbGl0QnV0dG9uQWN0aW9ucyhpc0NhcnRSb3V0ZSlcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzUmVhZG9ubHlNb2RlXCJcbiAgICAgICAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1vdXRsaW5lZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvcC1zcGxpdEJ1dHRvbj5cblxuICAgICAgICAgIDxwLWJ1dHRvblxuICAgICAgICAgICAgKm5nSWY9XCJpc1NhdmVJblByb2dyZXNzXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2F2ZS1idXR0b25cIlxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uXCJcbiAgICAgICAgICAgIGxhYmVsPVwiU2F2aW5nXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cInRydWVcIlxuICAgICAgICAgID48L3AtYnV0dG9uPlxuXG4gICAgICAgICAgPHAtYnV0dG9uXG4gICAgICAgICAgICAqbmdJZj1cImlzU3VibWl0SW5Qcm9ncmVzc1wiXG4gICAgICAgICAgICBjbGFzcz1cInN1Ym1pdC1idXR0b25cIlxuICAgICAgICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uXCJcbiAgICAgICAgICAgIGxhYmVsPVwiU3VibWl0dGluZ1wiXG4gICAgICAgICAgICBbbG9hZGluZ109XCJ0cnVlXCJcbiAgICAgICAgICA+PC9wLWJ1dHRvbj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiJdfQ==
|
@@ -102,12 +102,24 @@ let ElementComponent = class ElementComponent extends Entity {
|
|
102
102
|
this.model$ = new BehaviorSubject(undefined);
|
103
103
|
super.initPlugins();
|
104
104
|
}
|
105
|
+
ngOnChanges(changes) {
|
106
|
+
this.plugins.forEach(plugin => { var _a; return (_a = plugin.ngOnChanges) === null || _a === void 0 ? void 0 : _a.call(plugin, changes); });
|
107
|
+
}
|
105
108
|
ngOnInit() {
|
106
109
|
this.plugins.forEach(plugin => { var _a; return (_a = plugin.ngOnInit) === null || _a === void 0 ? void 0 : _a.call(plugin); });
|
107
110
|
}
|
111
|
+
ngDoCheck() {
|
112
|
+
this.plugins.forEach(plugin => { var _a; return (_a = plugin.ngDoCheck) === null || _a === void 0 ? void 0 : _a.call(plugin); });
|
113
|
+
}
|
114
|
+
ngAfterContentInit() {
|
115
|
+
this.plugins.forEach(plugin => { var _a; return (_a = plugin.ngAfterContentInit) === null || _a === void 0 ? void 0 : _a.call(plugin); });
|
116
|
+
}
|
108
117
|
ngAfterViewInit() {
|
109
118
|
this.plugins.forEach(plugin => { var _a; return (_a = plugin.ngAfterViewInit) === null || _a === void 0 ? void 0 : _a.call(plugin); });
|
110
119
|
}
|
120
|
+
ngAfterViewChecked() {
|
121
|
+
this.plugins.forEach(plugin => { var _a; return (_a = plugin.ngAfterViewChecked) === null || _a === void 0 ? void 0 : _a.call(plugin); });
|
122
|
+
}
|
111
123
|
ngOnDestroy() {
|
112
124
|
this.plugins.forEach(plugin => { var _a; return (_a = plugin.ngOnDestroy) === null || _a === void 0 ? void 0 : _a.call(plugin); });
|
113
125
|
}
|