@vgip/meta-ui 1.7.2 → 1.7.4
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/esm2022/lib/common/metaIcons.pipe.mjs +3 -3
- package/esm2022/lib/common/metaModel.pipe.mjs +3 -5
- package/esm2022/lib/common/metaNormalizer.mjs +8 -3
- package/esm2022/lib/common/utils/colorThemes.mjs +1 -3
- package/esm2022/lib/common/utils/indexedDbStore/index.mjs +3 -3
- package/esm2022/lib/common/utils/templateBuilder.mjs +3 -3
- package/esm2022/lib/fieldAbstract.mjs +7 -3
- package/esm2022/lib/fieldComposite/index.mjs +19 -2
- package/esm2022/lib/fieldDatetime/index.mjs +6 -4
- package/esm2022/lib/fieldInput/index.mjs +3 -3
- package/esm2022/lib/fieldList/index.mjs +3 -3
- package/esm2022/lib/fieldRadio/index.mjs +3 -3
- package/esm2022/lib/fieldReference/index.mjs +12 -8
- package/esm2022/lib/fieldRichtext/index.mjs +3 -3
- package/esm2022/lib/fieldSelect/index.mjs +11 -6
- package/esm2022/lib/fieldText/index.mjs +3 -3
- package/esm2022/lib/fieldUnknown/index.mjs +3 -3
- package/esm2022/lib/layout/index.mjs +26 -20
- package/esm2022/lib/metaField/index.mjs +3 -3
- package/esm2022/lib/refDialog/index.mjs +14 -6
- package/esm2022/lib/resource/index.mjs +9 -5
- package/esm2022/lib/services/metaMsg/index.mjs +2 -2
- package/esm2022/lib/services/metaReference/index.mjs +2 -2
- package/esm2022/lib/services/metaResource/index.mjs +4 -4
- package/esm2022/lib/services/metaResource/metaHttpClient.mjs +2 -2
- package/esm2022/lib/services/resourceDrafts/index.mjs +9 -8
- package/fesm2022/{vgip-meta-ui-fieldAbstract-ce47588e.mjs → vgip-meta-ui-fieldAbstract-9955be39.mjs} +7 -5
- package/fesm2022/vgip-meta-ui-fieldAbstract-9955be39.mjs.map +1 -0
- package/fesm2022/{vgip-meta-ui-index-78d7b9be.mjs → vgip-meta-ui-index-0349968f.mjs} +8 -6
- package/fesm2022/vgip-meta-ui-index-0349968f.mjs.map +1 -0
- package/fesm2022/{vgip-meta-ui-index-617c4bac.mjs → vgip-meta-ui-index-24fe289e.mjs} +58 -35
- package/fesm2022/vgip-meta-ui-index-24fe289e.mjs.map +1 -0
- package/fesm2022/{vgip-meta-ui-index-eba0dd05.mjs → vgip-meta-ui-index-44af92c9.mjs} +6 -6
- package/fesm2022/vgip-meta-ui-index-44af92c9.mjs.map +1 -0
- package/fesm2022/vgip-meta-ui-index-5871a6f2.mjs +95 -0
- package/fesm2022/vgip-meta-ui-index-5871a6f2.mjs.map +1 -0
- package/fesm2022/vgip-meta-ui-index-5891b8e7.mjs +24 -0
- package/fesm2022/vgip-meta-ui-index-5891b8e7.mjs.map +1 -0
- package/fesm2022/{vgip-meta-ui-index-cb0d4f82.mjs → vgip-meta-ui-index-5d13f5e6.mjs} +2 -2
- package/fesm2022/{vgip-meta-ui-index-cb0d4f82.mjs.map → vgip-meta-ui-index-5d13f5e6.mjs.map} +1 -1
- package/fesm2022/vgip-meta-ui-index-9c99e9b0.mjs +74 -0
- package/fesm2022/vgip-meta-ui-index-9c99e9b0.mjs.map +1 -0
- package/fesm2022/{vgip-meta-ui-index-5509b1d2.mjs → vgip-meta-ui-index-9e4137fe.mjs} +6 -6
- package/fesm2022/vgip-meta-ui-index-9e4137fe.mjs.map +1 -0
- package/fesm2022/{vgip-meta-ui-index-f0fa2cbd.mjs → vgip-meta-ui-index-9fd8e1b0.mjs} +21 -4
- package/fesm2022/vgip-meta-ui-index-9fd8e1b0.mjs.map +1 -0
- package/fesm2022/vgip-meta-ui-index-a3a43cf7.mjs +862 -0
- package/fesm2022/vgip-meta-ui-index-a3a43cf7.mjs.map +1 -0
- package/fesm2022/vgip-meta-ui-index-b0a76073.mjs +97 -0
- package/fesm2022/vgip-meta-ui-index-b0a76073.mjs.map +1 -0
- package/fesm2022/{vgip-meta-ui-index-cfb67422.mjs → vgip-meta-ui-index-bc945c3c.mjs} +16 -11
- package/fesm2022/vgip-meta-ui-index-bc945c3c.mjs.map +1 -0
- package/fesm2022/{vgip-meta-ui-index-eef5fc0f.mjs → vgip-meta-ui-index-c39ea0ec.mjs} +3 -3
- package/fesm2022/{vgip-meta-ui-index-eef5fc0f.mjs.map → vgip-meta-ui-index-c39ea0ec.mjs.map} +1 -1
- package/fesm2022/{vgip-meta-ui-index-f5e42e1d.mjs → vgip-meta-ui-index-c5756fbe.mjs} +16 -16
- package/fesm2022/vgip-meta-ui-index-c5756fbe.mjs.map +1 -0
- package/fesm2022/{vgip-meta-ui-index-1467556e.mjs → vgip-meta-ui-index-ea5c2466.mjs} +3 -3
- package/fesm2022/vgip-meta-ui-index-ea5c2466.mjs.map +1 -0
- package/fesm2022/{vgip-meta-ui-metaModel.pipe-3487ede2.mjs → vgip-meta-ui-metaModel.pipe-6b803e66.mjs} +3 -5
- package/fesm2022/vgip-meta-ui-metaModel.pipe-6b803e66.mjs.map +1 -0
- package/fesm2022/vgip-meta-ui.mjs +31 -30
- package/fesm2022/vgip-meta-ui.mjs.map +1 -1
- package/lib/common/metaIcons.pipe.d.ts +1 -1
- package/lib/common/metaModel.pipe.d.ts +1 -2
- package/lib/common/utils/indexedDbStore/index.d.ts +2 -2
- package/lib/fieldAbstract.d.ts +0 -4
- package/lib/fieldComposite/index.d.ts +6 -3
- package/lib/fieldReference/index.d.ts +1 -1
- package/lib/fieldSelect/index.d.ts +1 -1
- package/lib/layout/index.d.ts +4 -4
- package/lib/refDialog/index.d.ts +3 -3
- package/lib/resource/index.d.ts +1 -1
- package/package.json +2 -2
- package/fesm2022/vgip-meta-ui-fieldAbstract-ce47588e.mjs.map +0 -1
- package/fesm2022/vgip-meta-ui-index-1467556e.mjs.map +0 -1
- package/fesm2022/vgip-meta-ui-index-5509b1d2.mjs.map +0 -1
- package/fesm2022/vgip-meta-ui-index-5d664781.mjs +0 -858
- package/fesm2022/vgip-meta-ui-index-5d664781.mjs.map +0 -1
- package/fesm2022/vgip-meta-ui-index-617c4bac.mjs.map +0 -1
- package/fesm2022/vgip-meta-ui-index-6dcb4942.mjs +0 -24
- package/fesm2022/vgip-meta-ui-index-6dcb4942.mjs.map +0 -1
- package/fesm2022/vgip-meta-ui-index-78d7b9be.mjs.map +0 -1
- package/fesm2022/vgip-meta-ui-index-85109066.mjs +0 -97
- package/fesm2022/vgip-meta-ui-index-85109066.mjs.map +0 -1
- package/fesm2022/vgip-meta-ui-index-86211382.mjs +0 -74
- package/fesm2022/vgip-meta-ui-index-86211382.mjs.map +0 -1
- package/fesm2022/vgip-meta-ui-index-adb42356.mjs +0 -95
- package/fesm2022/vgip-meta-ui-index-adb42356.mjs.map +0 -1
- package/fesm2022/vgip-meta-ui-index-cfb67422.mjs.map +0 -1
- package/fesm2022/vgip-meta-ui-index-eba0dd05.mjs.map +0 -1
- package/fesm2022/vgip-meta-ui-index-f0fa2cbd.mjs.map +0 -1
- package/fesm2022/vgip-meta-ui-index-f5e42e1d.mjs.map +0 -1
- package/fesm2022/vgip-meta-ui-metaModel.pipe-3487ede2.mjs.map +0 -1
|
@@ -95,7 +95,7 @@ export class MetaResource {
|
|
|
95
95
|
setEditMode() {
|
|
96
96
|
this.edit = true;
|
|
97
97
|
}
|
|
98
|
-
loadMetadata(layoutId, refresh = false) {
|
|
98
|
+
loadMetadata(layoutId, refresh = false, ev) {
|
|
99
99
|
const layoutStoreKey = `vgis.layout_${this.metaContext.vgipUserId}_${this.integrationCode}_${this.resource.resourceType}`;
|
|
100
100
|
if (!layoutId) {
|
|
101
101
|
layoutId = localStorage.getItem(layoutStoreKey);
|
|
@@ -131,6 +131,11 @@ export class MetaResource {
|
|
|
131
131
|
this.forceUiUpdate();
|
|
132
132
|
}
|
|
133
133
|
});
|
|
134
|
+
if (ev) {
|
|
135
|
+
ev.preventDefault();
|
|
136
|
+
ev.stopPropagation();
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
134
139
|
}
|
|
135
140
|
changeLayout() {
|
|
136
141
|
localStorage.setItem(`vgis.layout_${this.metaContext.vgipUserId}_${this.integrationCode}_${this.resource.resourceType}`, this.currentLayoutId);
|
|
@@ -315,7 +320,6 @@ export class MetaResource {
|
|
|
315
320
|
catch (err) {
|
|
316
321
|
console.log('....', err);
|
|
317
322
|
}
|
|
318
|
-
;
|
|
319
323
|
}
|
|
320
324
|
else if (errorResult.status === 422) {
|
|
321
325
|
this.showParsedError(resourceForm, errorResult.error);
|
|
@@ -467,11 +471,11 @@ export class MetaResource {
|
|
|
467
471
|
this.el.nativeElement.dispatchEvent(e);
|
|
468
472
|
}
|
|
469
473
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: MetaResource, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.MetaResourceService }, { token: i2.MetaContextService }, { token: i3.MetaMsgService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
470
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.11", type: MetaResource, selector: "vgip-meta-resource", inputs: { resource: "resource", model: "model", metaResourceServiceDelegated: "metaResourceServiceDelegated", theme: "theme", editMode: "editMode" }, outputs: { done: "done" }, viewQueries: [{ propertyName: "resourceForm", first: true, predicate: ["resourceForm"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf='generalError' class=\"Vlt-callout Vlt-callout--critical\" style='overflow: auto; margin: 20px;'>\n\t<i></i>\n\t<div class=\"Vlt-callout__content\">\n\t\t<p>{{generalError}}</p>\n\t</div>\n</div>\n<div *ngIf='!meta' class=\"Vlt-progress\">\n\t<div class=\"Vlt-progress__bar\" [ngClass]=\"{ loading: metaLoading }\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuetext=\"Loading Metadata\" aria-valuemax=\"100\"></div>\n</div>\n<form [vgipMetaFormAutofocus]='!resource || !resource.externalId' *ngIf='meta && !generalError' #resourceForm=\"ngForm\" [name]='resource.resourceType' (ngSubmit)='submit(resourceForm)' novalidate>\n\t<div class='form-content' style='overflow: hidden;'>\n\t\t<div [ngClass]=\"{ 'Vlt-callout--dismissed': !formErrors }\" class=\"Vlt-callout Vlt-callout--banner Vlt-callout--critical\">\n\t\t\t<i></i>\n\t\t\t<div class=\"Vlt-callout__content\" style=\"margin-top: auto;\">\n\t\t\t\t<p>There is a problem with one or more fields</p>\n\t\t\t\t<small style='font-weight: 600; font-size: 1.0em;' *ngIf='formErrors'>{{ formErrors.message || formErrors }}</small>\n\t\t\t</div>\n\t\t\t<button type='button' class=\"Vlt-callout__dismiss\" (click)='clearFormErrors()' aria-label=\"Dismiss\"></button>\n\t\t</div>\n\t\t<div class=\"Vlt-card__content\" style='min-height: 40px;'>\n\t\t\t<vgip-meta-layout *ngIf='edit' [meta]='meta.layout' [resource]='model' [preview]='false' [integration]='meta.integration' [type]='resource.resourceType' theme='inherit'></vgip-meta-layout>\n\t\t\t<vgip-meta-layout *ngIf='!edit' [meta]='meta.layout' [resource]='model' [preview]='true' [integration]='meta.integration' [type]='resource.resourceType' theme='inherit'></vgip-meta-layout>\n\t\t</div>\n\t</div>\n\t<div class=\"Vlt-card__footer\">\n\t\t<button class=\"Vlt-btn Vlt-btn--secondary Vlt-btn--app Vlt-btn--outline\" type='button' aria-label='Cancel' (click)='close()'>\n\t\t\t{{ edit ? 'Cancel' : 'Close' }}\n\t\t</button>\n\t\t<button *ngIf='edit' class=\"Vlt-btn Vlt-btn--app\" [ngClass]=\"{ 'Vlt-btn--primary': isPersistent, 'Vlt-btn--secondary': !isPersistent }\" type='submit'>\n\t\t\t{{ (resource && resource.externalId) ? 'Update' : 'Create' }}\n\t\t</button>\n\t\t<button (click)='setEditMode()' *ngIf='!edit && isEditable' [disabled]='!isEditable' class=\"Vlt-btn Vlt-btn--app Vlt-btn--primary\" type='button' aria-label='Edit'>\n\t\t\tEdit\n\t\t</button>\n\t\t<div style='margin-right: 8px; flex: 1;'>\n\t\t\t<div *ngIf='meta.availableLayouts && meta.availableLayouts.length' class=\"Vlt-form__element Vlt-form__element--big\" style='padding: 0; margin: -8px -18px -8px 0;'>\n\t\t\t\t<div class=\"Vlt-select\">\n\t\t\t\t\t<label style='all: inherit;'>\n\t\t\t\t\t\t<select style='border: 0; margin-top: 3px; background: transparent;' (change)='changeLayout()' [(ngModel)]='currentLayoutId' [ngModelOptions]='{ standalone: true }' [disabled]='isPersistent'>\n\t\t\t\t\t\t\t<option selected disabled>Select layout</option>\n\t\t\t\t\t\t\t<option *ngFor='let layout of meta.availableLayouts' [ngValue]='layout.id'>{{layout.name}}</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t\t<label>Layout</label
|
|
474
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.11", type: MetaResource, selector: "vgip-meta-resource", inputs: { resource: "resource", model: "model", metaResourceServiceDelegated: "metaResourceServiceDelegated", theme: "theme", editMode: "editMode" }, outputs: { done: "done" }, viewQueries: [{ propertyName: "resourceForm", first: true, predicate: ["resourceForm"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div *ngIf='generalError' class=\"Vlt-callout Vlt-callout--critical\" style='overflow: auto; margin: 20px;'>\n\t<i></i>\n\t<div class=\"Vlt-callout__content\">\n\t\t<p>{{generalError}}</p>\n\t</div>\n</div>\n<div *ngIf='!meta' class=\"Vlt-progress\">\n\t<div class=\"Vlt-progress__bar\" [ngClass]=\"{ loading: metaLoading }\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuetext=\"Loading Metadata\" aria-valuemax=\"100\"></div>\n</div>\n<form [vgipMetaFormAutofocus]='!resource || !resource.externalId' *ngIf='meta && !generalError' #resourceForm=\"ngForm\" [name]='resource.resourceType' (ngSubmit)='submit(resourceForm)' novalidate>\n\t<div class='form-content' style='overflow: hidden;'>\n\t\t<div [ngClass]=\"{ 'Vlt-callout--dismissed': !formErrors }\" class=\"Vlt-callout Vlt-callout--banner Vlt-callout--critical\">\n\t\t\t<i></i>\n\t\t\t<div class=\"Vlt-callout__content\" style=\"margin-top: auto;\">\n\t\t\t\t<p>There is a problem with one or more fields</p>\n\t\t\t\t<small style='font-weight: 600; font-size: 1.0em;' *ngIf='formErrors'>{{ formErrors.message || formErrors }}</small>\n\t\t\t</div>\n\t\t\t<button type='button' class=\"Vlt-callout__dismiss\" (click)='clearFormErrors()' aria-label=\"Dismiss\"></button>\n\t\t</div>\n\t\t<div class=\"Vlt-card__content\" style='min-height: 40px;'>\n\t\t\t<vgip-meta-layout *ngIf='edit' [meta]='meta.layout' [resource]='model' [preview]='false' [integration]='meta.integration' [type]='resource.resourceType' theme='inherit'></vgip-meta-layout>\n\t\t\t<vgip-meta-layout *ngIf='!edit' [meta]='meta.layout' [resource]='model' [preview]='true' [integration]='meta.integration' [type]='resource.resourceType' theme='inherit'></vgip-meta-layout>\n\t\t</div>\n\t</div>\n\t<div class=\"Vlt-card__footer\">\n\t\t<button class=\"Vlt-btn Vlt-btn--secondary Vlt-btn--app Vlt-btn--outline\" type='button' aria-label='Cancel' (click)='close()'>\n\t\t\t{{ edit ? 'Cancel' : 'Close' }}\n\t\t</button>\n\t\t<button *ngIf='edit' class=\"Vlt-btn Vlt-btn--app\" [ngClass]=\"{ 'Vlt-btn--primary': isPersistent, 'Vlt-btn--secondary': !isPersistent }\" type='submit'>\n\t\t\t{{ (resource && resource.externalId) ? 'Update' : 'Create' }}\n\t\t</button>\n\t\t<button (click)='setEditMode()' *ngIf='!edit && isEditable' [disabled]='!isEditable' class=\"Vlt-btn Vlt-btn--app Vlt-btn--primary\" type='button' aria-label='Edit'>\n\t\t\tEdit\n\t\t</button>\n\t\t<div style='margin-right: 8px; flex: 1;'>\n\t\t\t<div *ngIf='meta.availableLayouts && meta.availableLayouts.length' class=\"Vlt-form__element Vlt-form__element--big\" style='padding: 0; margin: -8px -18px -8px 0;'>\n\t\t\t\t<div class=\"Vlt-select\">\n\t\t\t\t\t<label style='all: inherit;'>\n\t\t\t\t\t\t<select style='border: 0; margin-top: 3px; background: transparent;' (change)='changeLayout()' [(ngModel)]='currentLayoutId' [ngModelOptions]='{ standalone: true }' [disabled]='isPersistent'>\n\t\t\t\t\t\t\t<option selected disabled>Select layout</option>\n\t\t\t\t\t\t\t<option *ngFor='let layout of meta.availableLayouts' [ngValue]='layout.id'>{{layout.name}}</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t\t<label>Layout</label> <!-- eslint-disable-line @angular-eslint/template/label-has-associated-control -->\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"Vlt-dropdown resource-menu\" [ngClass]=\"{ 'Vlt-dropdown--expanded': resourceMenuVisible }\" style='margin-left: 2px;'>\n\t\t\t<div class=\"Vlt-dropdown__panel\" style='bottom: 40px; right: -4px; top: initial;'>\n\t\t\t\t<div class=\"Vlt-dropdown__panel__content\">\n\t\t\t\t\t<a href='#' class=\"Vlt-dropdown__link\" (click)='loadMetadata(currentLayoutId, true, $event)'>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<svg class='Vlt-icon Vlt-icon--smaller'><use xlink:href=\"volta/volta-icons.svg#Vlt-icon-refresh\"/></svg> Refresh metadata\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"Vlt-dropdown__trigger\">\n\t\t\t\t<button type='button' (click)='openResourceMenu()' class=\"Vlt-btn Vlt-btn--link\" aria-label='Resource menu'>\n\t\t\t\t\t<svg class='Vlt-icon Vlt-icon--small' style='margin: 0;'><use xlink:href=\"volta/volta-icons.svg#Vlt-icon-more-v-negative\"/></svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</form>\n<div class='busy-mask' [ngClass]=\"{ active: busy }\">\n\t<div style='height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center;'>\n\t\t<div class=\"Vlt-spinner\"></div>\n\t</div>\n</div>\n", styles: [":host{flex:1;display:flex;flex-direction:column;min-height:0;color:var(--vgip-meta-resource-color)}.Vlt-callout--banner{justify-content:initial;text-align:initial;overflow-y:auto}.Vlt-callout--banner.Vlt-callout--dismissed{padding:0}.Vlt-callout--banner:not(.Vlt-callout--dismissed){min-height:78px}.Vlt-spinner:before,.Vlt-spinner:after{border:6px solid #616266;border-color:#616266 transparent transparent}.Vlt-card__content{padding:8px 8px 8px 16px;display:flex;flex-direction:column;min-height:0;flex:1;overflow-y:scroll;overflow-x:hidden;background-color:var(--vgip-meta-resource-bg-color)}@media (hover: none){.Vlt-card__content{padding-right:16px}}.Vlt-card__content::-webkit-scrollbar{width:8px}.Vlt-card__content::-webkit-scrollbar-thumb{background-color:var(--vgip-meta-scrollbar-color);border:2px solid transparent;border-radius:6px;background-clip:content-box}.Vlt-card__footer{background:var(--vgip-meta-resource-bar-color);border-top:1px solid var(--vgip-meta-separator-color);display:flex;flex-direction:row;margin:16px -24px -24px;padding:8px 8px 8px 16px;box-shadow:0 0 4px #00000040;z-index:1}.Vlt-card__footer .Vlt-select select{color:var(--vgip-meta-input-color)}.Vlt-card__footer .Vlt-select select:disabled{background:initial;cursor:not-allowed}.Vlt-card__footer .Vlt-select:after{background-image:var(--vgip-meta-dropdown-icon)}.Vlt-card__footer .resource-menu .Vlt-icon:not(:hover){fill:var(--vgip-meta-input-label-color)}.Vlt-card__footer button.Vlt-btn--secondary{border:none;box-shadow:inset 0 0 0 1px var(--vgip-meta-button-border-color)}.Vlt-card__footer button.Vlt-btn--secondary:not([type=submit]){color:var(--vgip-meta-input-color)}.Vlt-card__footer button.Vlt-btn--secondary:hover{box-shadow:inset 0 0 0 1px var(--vgip-meta-input-accent-color)}.Vlt-card__footer button.Vlt-btn--secondary:hover[type=submit]{background-color:var(--vgip-meta-submit-hover-bg-color)}.Vlt-progress{margin:0;position:sticky}.Vlt-progress .Vlt-progress__bar{width:0;transition:width 5s}.Vlt-progress .Vlt-progress__bar.loading{width:100%}form{border-radius:6px;padding:24px;display:flex;flex-direction:column;min-height:0;flex:1}form .form-content{margin:-24px -24px -16px;padding-bottom:0;flex:1;display:flex;flex-direction:column}.busy-mask{position:absolute;inset:0;background:rgba(0,0,0,.32);opacity:1;z-index:898;display:none;border-bottom-left-radius:6px;border-bottom-right-radius:6px;margin:1px;cursor:progress}.busy-mask.active{display:block}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MetaLayout, selector: "vgip-meta-layout", inputs: ["meta", "resource", "integration", "type", "preview", "theme"] }, { kind: "directive", type: i7.MetaAutofocusDirective, selector: "[vgipMetaFormAutofocus]", inputs: ["vgipMetaFormAutofocus"] }] }); }
|
|
471
475
|
}
|
|
472
476
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImport: i0, type: MetaResource, decorators: [{
|
|
473
477
|
type: Component,
|
|
474
|
-
args: [{ selector: 'vgip-meta-resource', template: "<div *ngIf='generalError' class=\"Vlt-callout Vlt-callout--critical\" style='overflow: auto; margin: 20px;'>\n\t<i></i>\n\t<div class=\"Vlt-callout__content\">\n\t\t<p>{{generalError}}</p>\n\t</div>\n</div>\n<div *ngIf='!meta' class=\"Vlt-progress\">\n\t<div class=\"Vlt-progress__bar\" [ngClass]=\"{ loading: metaLoading }\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuetext=\"Loading Metadata\" aria-valuemax=\"100\"></div>\n</div>\n<form [vgipMetaFormAutofocus]='!resource || !resource.externalId' *ngIf='meta && !generalError' #resourceForm=\"ngForm\" [name]='resource.resourceType' (ngSubmit)='submit(resourceForm)' novalidate>\n\t<div class='form-content' style='overflow: hidden;'>\n\t\t<div [ngClass]=\"{ 'Vlt-callout--dismissed': !formErrors }\" class=\"Vlt-callout Vlt-callout--banner Vlt-callout--critical\">\n\t\t\t<i></i>\n\t\t\t<div class=\"Vlt-callout__content\" style=\"margin-top: auto;\">\n\t\t\t\t<p>There is a problem with one or more fields</p>\n\t\t\t\t<small style='font-weight: 600; font-size: 1.0em;' *ngIf='formErrors'>{{ formErrors.message || formErrors }}</small>\n\t\t\t</div>\n\t\t\t<button type='button' class=\"Vlt-callout__dismiss\" (click)='clearFormErrors()' aria-label=\"Dismiss\"></button>\n\t\t</div>\n\t\t<div class=\"Vlt-card__content\" style='min-height: 40px;'>\n\t\t\t<vgip-meta-layout *ngIf='edit' [meta]='meta.layout' [resource]='model' [preview]='false' [integration]='meta.integration' [type]='resource.resourceType' theme='inherit'></vgip-meta-layout>\n\t\t\t<vgip-meta-layout *ngIf='!edit' [meta]='meta.layout' [resource]='model' [preview]='true' [integration]='meta.integration' [type]='resource.resourceType' theme='inherit'></vgip-meta-layout>\n\t\t</div>\n\t</div>\n\t<div class=\"Vlt-card__footer\">\n\t\t<button class=\"Vlt-btn Vlt-btn--secondary Vlt-btn--app Vlt-btn--outline\" type='button' aria-label='Cancel' (click)='close()'>\n\t\t\t{{ edit ? 'Cancel' : 'Close' }}\n\t\t</button>\n\t\t<button *ngIf='edit' class=\"Vlt-btn Vlt-btn--app\" [ngClass]=\"{ 'Vlt-btn--primary': isPersistent, 'Vlt-btn--secondary': !isPersistent }\" type='submit'>\n\t\t\t{{ (resource && resource.externalId) ? 'Update' : 'Create' }}\n\t\t</button>\n\t\t<button (click)='setEditMode()' *ngIf='!edit && isEditable' [disabled]='!isEditable' class=\"Vlt-btn Vlt-btn--app Vlt-btn--primary\" type='button' aria-label='Edit'>\n\t\t\tEdit\n\t\t</button>\n\t\t<div style='margin-right: 8px; flex: 1;'>\n\t\t\t<div *ngIf='meta.availableLayouts && meta.availableLayouts.length' class=\"Vlt-form__element Vlt-form__element--big\" style='padding: 0; margin: -8px -18px -8px 0;'>\n\t\t\t\t<div class=\"Vlt-select\">\n\t\t\t\t\t<label style='all: inherit;'>\n\t\t\t\t\t\t<select style='border: 0; margin-top: 3px; background: transparent;' (change)='changeLayout()' [(ngModel)]='currentLayoutId' [ngModelOptions]='{ standalone: true }' [disabled]='isPersistent'>\n\t\t\t\t\t\t\t<option selected disabled>Select layout</option>\n\t\t\t\t\t\t\t<option *ngFor='let layout of meta.availableLayouts' [ngValue]='layout.id'>{{layout.name}}</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t\t<label>Layout</label
|
|
478
|
+
args: [{ selector: 'vgip-meta-resource', template: "<div *ngIf='generalError' class=\"Vlt-callout Vlt-callout--critical\" style='overflow: auto; margin: 20px;'>\n\t<i></i>\n\t<div class=\"Vlt-callout__content\">\n\t\t<p>{{generalError}}</p>\n\t</div>\n</div>\n<div *ngIf='!meta' class=\"Vlt-progress\">\n\t<div class=\"Vlt-progress__bar\" [ngClass]=\"{ loading: metaLoading }\" role=\"progressbar\" aria-valuemin=\"0\" aria-valuetext=\"Loading Metadata\" aria-valuemax=\"100\"></div>\n</div>\n<form [vgipMetaFormAutofocus]='!resource || !resource.externalId' *ngIf='meta && !generalError' #resourceForm=\"ngForm\" [name]='resource.resourceType' (ngSubmit)='submit(resourceForm)' novalidate>\n\t<div class='form-content' style='overflow: hidden;'>\n\t\t<div [ngClass]=\"{ 'Vlt-callout--dismissed': !formErrors }\" class=\"Vlt-callout Vlt-callout--banner Vlt-callout--critical\">\n\t\t\t<i></i>\n\t\t\t<div class=\"Vlt-callout__content\" style=\"margin-top: auto;\">\n\t\t\t\t<p>There is a problem with one or more fields</p>\n\t\t\t\t<small style='font-weight: 600; font-size: 1.0em;' *ngIf='formErrors'>{{ formErrors.message || formErrors }}</small>\n\t\t\t</div>\n\t\t\t<button type='button' class=\"Vlt-callout__dismiss\" (click)='clearFormErrors()' aria-label=\"Dismiss\"></button>\n\t\t</div>\n\t\t<div class=\"Vlt-card__content\" style='min-height: 40px;'>\n\t\t\t<vgip-meta-layout *ngIf='edit' [meta]='meta.layout' [resource]='model' [preview]='false' [integration]='meta.integration' [type]='resource.resourceType' theme='inherit'></vgip-meta-layout>\n\t\t\t<vgip-meta-layout *ngIf='!edit' [meta]='meta.layout' [resource]='model' [preview]='true' [integration]='meta.integration' [type]='resource.resourceType' theme='inherit'></vgip-meta-layout>\n\t\t</div>\n\t</div>\n\t<div class=\"Vlt-card__footer\">\n\t\t<button class=\"Vlt-btn Vlt-btn--secondary Vlt-btn--app Vlt-btn--outline\" type='button' aria-label='Cancel' (click)='close()'>\n\t\t\t{{ edit ? 'Cancel' : 'Close' }}\n\t\t</button>\n\t\t<button *ngIf='edit' class=\"Vlt-btn Vlt-btn--app\" [ngClass]=\"{ 'Vlt-btn--primary': isPersistent, 'Vlt-btn--secondary': !isPersistent }\" type='submit'>\n\t\t\t{{ (resource && resource.externalId) ? 'Update' : 'Create' }}\n\t\t</button>\n\t\t<button (click)='setEditMode()' *ngIf='!edit && isEditable' [disabled]='!isEditable' class=\"Vlt-btn Vlt-btn--app Vlt-btn--primary\" type='button' aria-label='Edit'>\n\t\t\tEdit\n\t\t</button>\n\t\t<div style='margin-right: 8px; flex: 1;'>\n\t\t\t<div *ngIf='meta.availableLayouts && meta.availableLayouts.length' class=\"Vlt-form__element Vlt-form__element--big\" style='padding: 0; margin: -8px -18px -8px 0;'>\n\t\t\t\t<div class=\"Vlt-select\">\n\t\t\t\t\t<label style='all: inherit;'>\n\t\t\t\t\t\t<select style='border: 0; margin-top: 3px; background: transparent;' (change)='changeLayout()' [(ngModel)]='currentLayoutId' [ngModelOptions]='{ standalone: true }' [disabled]='isPersistent'>\n\t\t\t\t\t\t\t<option selected disabled>Select layout</option>\n\t\t\t\t\t\t\t<option *ngFor='let layout of meta.availableLayouts' [ngValue]='layout.id'>{{layout.name}}</option>\n\t\t\t\t\t\t</select>\n\t\t\t\t\t\t<label>Layout</label> <!-- eslint-disable-line @angular-eslint/template/label-has-associated-control -->\n\t\t\t\t\t</label>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"Vlt-dropdown resource-menu\" [ngClass]=\"{ 'Vlt-dropdown--expanded': resourceMenuVisible }\" style='margin-left: 2px;'>\n\t\t\t<div class=\"Vlt-dropdown__panel\" style='bottom: 40px; right: -4px; top: initial;'>\n\t\t\t\t<div class=\"Vlt-dropdown__panel__content\">\n\t\t\t\t\t<a href='#' class=\"Vlt-dropdown__link\" (click)='loadMetadata(currentLayoutId, true, $event)'>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<svg class='Vlt-icon Vlt-icon--smaller'><use xlink:href=\"volta/volta-icons.svg#Vlt-icon-refresh\"/></svg> Refresh metadata\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"Vlt-dropdown__trigger\">\n\t\t\t\t<button type='button' (click)='openResourceMenu()' class=\"Vlt-btn Vlt-btn--link\" aria-label='Resource menu'>\n\t\t\t\t\t<svg class='Vlt-icon Vlt-icon--small' style='margin: 0;'><use xlink:href=\"volta/volta-icons.svg#Vlt-icon-more-v-negative\"/></svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</form>\n<div class='busy-mask' [ngClass]=\"{ active: busy }\">\n\t<div style='height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center;'>\n\t\t<div class=\"Vlt-spinner\"></div>\n\t</div>\n</div>\n", styles: [":host{flex:1;display:flex;flex-direction:column;min-height:0;color:var(--vgip-meta-resource-color)}.Vlt-callout--banner{justify-content:initial;text-align:initial;overflow-y:auto}.Vlt-callout--banner.Vlt-callout--dismissed{padding:0}.Vlt-callout--banner:not(.Vlt-callout--dismissed){min-height:78px}.Vlt-spinner:before,.Vlt-spinner:after{border:6px solid #616266;border-color:#616266 transparent transparent}.Vlt-card__content{padding:8px 8px 8px 16px;display:flex;flex-direction:column;min-height:0;flex:1;overflow-y:scroll;overflow-x:hidden;background-color:var(--vgip-meta-resource-bg-color)}@media (hover: none){.Vlt-card__content{padding-right:16px}}.Vlt-card__content::-webkit-scrollbar{width:8px}.Vlt-card__content::-webkit-scrollbar-thumb{background-color:var(--vgip-meta-scrollbar-color);border:2px solid transparent;border-radius:6px;background-clip:content-box}.Vlt-card__footer{background:var(--vgip-meta-resource-bar-color);border-top:1px solid var(--vgip-meta-separator-color);display:flex;flex-direction:row;margin:16px -24px -24px;padding:8px 8px 8px 16px;box-shadow:0 0 4px #00000040;z-index:1}.Vlt-card__footer .Vlt-select select{color:var(--vgip-meta-input-color)}.Vlt-card__footer .Vlt-select select:disabled{background:initial;cursor:not-allowed}.Vlt-card__footer .Vlt-select:after{background-image:var(--vgip-meta-dropdown-icon)}.Vlt-card__footer .resource-menu .Vlt-icon:not(:hover){fill:var(--vgip-meta-input-label-color)}.Vlt-card__footer button.Vlt-btn--secondary{border:none;box-shadow:inset 0 0 0 1px var(--vgip-meta-button-border-color)}.Vlt-card__footer button.Vlt-btn--secondary:not([type=submit]){color:var(--vgip-meta-input-color)}.Vlt-card__footer button.Vlt-btn--secondary:hover{box-shadow:inset 0 0 0 1px var(--vgip-meta-input-accent-color)}.Vlt-card__footer button.Vlt-btn--secondary:hover[type=submit]{background-color:var(--vgip-meta-submit-hover-bg-color)}.Vlt-progress{margin:0;position:sticky}.Vlt-progress .Vlt-progress__bar{width:0;transition:width 5s}.Vlt-progress .Vlt-progress__bar.loading{width:100%}form{border-radius:6px;padding:24px;display:flex;flex-direction:column;min-height:0;flex:1}form .form-content{margin:-24px -24px -16px;padding-bottom:0;flex:1;display:flex;flex-direction:column}.busy-mask{position:absolute;inset:0;background:rgba(0,0,0,.32);opacity:1;z-index:898;display:none;border-bottom-left-radius:6px;border-bottom-right-radius:6px;margin:1px;cursor:progress}.busy-mask.active{display:block}\n"] }]
|
|
475
479
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.MetaResourceService }, { type: i2.MetaContextService }, { type: i3.MetaMsgService }]; }, propDecorators: { resource: [{
|
|
476
480
|
type: Input
|
|
477
481
|
}], model: [{
|
|
@@ -488,4 +492,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImpo
|
|
|
488
492
|
type: ViewChild,
|
|
489
493
|
args: ['resourceForm']
|
|
490
494
|
}] } });
|
|
491
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvcmVzb3VyY2UvaW5kZXgudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvcmVzb3VyY2Uvdmlldy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEksT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7QUFPbEUsTUFBTSxPQUFPLFlBQVk7SUEwQnZCLFlBQ1UsR0FBc0IsRUFDdEIsRUFBYyxFQUNkLG1CQUF3QyxFQUN4QyxXQUErQixFQUMvQixjQUE4QjtRQUo5QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2Qsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBMUIvQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ1IsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFXM0MsU0FBSSxHQUFHLElBQUksQ0FBQztRQUtaLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQWtXeEIsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDaEMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFD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QkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDVyxJQUFJO3NCQUFwQixNQUFNO2dCQUUyQixZQUFZO3NCQUE3QyxTQUFTO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nRm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1ldGFSZXNvdXJjZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tZXRhUmVzb3VyY2UnO1xuaW1wb3J0IHsgbWV0YURhcmssIG1ldGFMaWdodCB9IGZyb20gJy4uL2NvbW1vbi91dGlscy9jb2xvclRoZW1lcyc7XG5pbXBvcnQgeyBNZXRhQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tZXRhQ29udGV4dCc7XG5pbXBvcnQgeyBNZXRhTXNnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL21ldGFNc2cnO1xuaW1wb3J0IHsgbWV0YU5vcm1hbGl6ZXIgfSBmcm9tICcuLi9jb21tb24vbWV0YU5vcm1hbGl6ZXInO1xuaW1wb3J0IHsgdGVtcGxhdGVCdWlsZGVyIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzL3RlbXBsYXRlQnVpbGRlcic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZnaXAtbWV0YS1yZXNvdXJjZScsXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zdHlsZS5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTWV0YVJlc291cmNlIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSByZXNvdXJjZTogYW55O1xuICBASW5wdXQoKSBtb2RlbDogYW55O1xuICBASW5wdXQoKSBtZXRhUmVzb3VyY2VTZXJ2aWNlRGVsZWdhdGVkOiBNZXRhUmVzb3VyY2VTZXJ2aWNlOyAvLyBjYXJ5IGl0IGZyb20gdGhlIHBhcmVudCB0byBrZWVwIHRoZSBpbnRlcmNlcHRvcnNcbiAgQElucHV0KCkgdGhlbWU6IHN0cmluZztcbiAgQElucHV0KCkgZWRpdE1vZGUgPSB0cnVlO1xuICBAT3V0cHV0KCkgcHVibGljIGRvbmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQFZpZXdDaGlsZCgncmVzb3VyY2VGb3JtJykgcHVibGljIHJlc291cmNlRm9ybTogTmdGb3JtO1xuXG4gIGludGVncmF0aW9uQ29kZTogc3RyaW5nO1xuICByZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgbWV0YTogYW55O1xuICBzZXJ2aWNlOiBNZXRhUmVzb3VyY2VTZXJ2aWNlO1xuICBjdXJyZW50TGF5b3V0SWQ6IGFueTtcbiAgZm9ybUVycm9yczogYW55O1xuICBmaWVsZHNNYXA6IGFueTtcbiAgZWRpdCA9IHRydWU7XG4gIGJ1c3k6IGJvb2xlYW47XG4gIG1ldGFMb2FkaW5nOiBib29sZWFuO1xuICBnZW5lcmFsRXJyb3I6IHN0cmluZztcbiAgcmVzb3VyY2VNZW51VmlzaWJsZTogYm9vbGVhbjtcbiAgY29udGFjdHNTdWdnZXN0aW9uc0RvbmUgPSBmYWxzZTtcbiAgaXNFZGl0YWJsZTogYm9vbGVhbjtcbiAgaXNQZXJzaXN0ZW50OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgbWV0YVJlc291cmNlU2VydmljZTogTWV0YVJlc291cmNlU2VydmljZSxcbiAgICBwcml2YXRlIG1ldGFDb250ZXh0OiBNZXRhQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXRhTXNnU2VydmljZTogTWV0YU1zZ1NlcnZpY2VcbiAgKSB7XG5cbiAgfVxuXG4gIGdldCBuaWNlRmllbGRzKCkge1xuICAgIGlmIChcbiAgICAgICF0aGlzLnJlc291cmNlLm5pY2VGaWVsZHNcbiAgICAgICYmIHRoaXMucmVzb3VyY2UubWV0YVxuICAgICAgJiYgdGhpcy5yZXNvdXJjZS5tZXRhLmxheW91dFxuICAgICAgJiYgdGhpcy5yZXNvdXJjZS5tZXRhLmxheW91dC5zZWN0aW9uc1xuICAgICkge1xuICAgICAgY29uc3QgZXh0cmFjdFNlY3Rpb25GaWVsZHMgPSAocykgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGYgb2Ygcy5maWVsZHMpIHtcbiAgICAgICAgICBpZiAoZi5uYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnJlc291cmNlLm5pY2VGaWVsZHNbZi5uYW1lXSA9IGY7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmLmZpZWxkcyAmJiBmLmZpZWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGV4dHJhY3RTZWN0aW9uRmllbGRzKGYpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICAgIHRoaXMucmVzb3VyY2UubmljZUZpZWxkcyA9IHt9O1xuICAgICAgZm9yIChjb25zdCBzIG9mIHRoaXMucmVzb3VyY2UubWV0YS5sYXlvdXQuc2VjdGlvbnMpIHtcbiAgICAgICAgZXh0cmFjdFNlY3Rpb25GaWVsZHMocyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnJlc291cmNlLm5pY2VGaWVsZHM7XG4gIH1cblxuICBnZXQgZmllbGROYW1lcygpIHtcbiAgICBjb25zdCBuYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMubmljZUZpZWxkcyk7XG4gICAgaWYgKHRoaXMucmVzb3VyY2UubWV0YS5sYXlvdXQuY2hpbGRyZW4pIHtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5yZXNvdXJjZS5tZXRhLmxheW91dC5jaGlsZHJlbikge1xuICAgICAgICBuYW1lcy5wdXNoKGNoaWxkLm5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmFtZXM7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmludGVncmF0aW9uQ29kZSA9ICh0aGlzLnJlc291cmNlLmludGVncmF0aW9uQ29kZSB8fCAnJykudG9VcHBlckNhc2UoKTtcbiAgICB0aGlzLnJlc291cmNlVHlwZSA9IHRoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlO1xuICAgIHRoaXMuc2VydmljZSA9ICh0aGlzLm1ldGFSZXNvdXJjZVNlcnZpY2VEZWxlZ2F0ZWQgfHwgdGhpcy5tZXRhUmVzb3VyY2VTZXJ2aWNlKS5uZXcodGhpcy5yZXNvdXJjZSk7XG4gICAgaWYgKCF0aGlzLm1vZGVsKSB7XG4gICAgICB0aGlzLm1vZGVsID0ge307XG4gICAgfVxuICAgIGlmICh0aGlzLnJlc291cmNlLmFjdGl2aXR5ICYmIHRoaXMucmVzb3VyY2UucmVmLmVkaXRhYmxlID09PSBmYWxzZSAmJiAhdGhpcy5yZXNvdXJjZS5leHRlcm5hbElkKSB7XG4gICAgICB0aGlzLnJlc291cmNlLmV4dGVybmFsSWQgPSAnTUlTU0lOR19FWFRFUk5BTF9JRCc7XG4gICAgfVxuICAgIHRoaXMuaXNQZXJzaXN0ZW50ID0gdGhpcy5yZXNvdXJjZSAmJiB0aGlzLnJlc291cmNlLmV4dGVybmFsSWQ7XG4gICAgaWYgKCF0aGlzLnJlc291cmNlLm1ldGEpIHtcbiAgICAgIHRoaXMubG9hZE1ldGFkYXRhKHRoaXMucmVzb3VyY2UubGF5b3V0SWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyAgIGlmICh0aGlzLmlzUGVyc2lzdGVudCAmJiAoIXRoaXMuaXNFZGl0YWJsZSB8fCB0aGlzLnJlc291cmNlc1tyZWYubmFtZV0ubWV0YS5sYXlvdXQuY2hpbGRyZW4pKSB7XG4gICAgICAvLyAgICAgdGhpcy5lZGl0ID0gZmFsc2U7XG4gICAgICAvLyAgIH1cbiAgICAgIHRoaXMubWV0YSA9IHRoaXMucmVzb3VyY2UubWV0YTtcbiAgICAgIHRoaXMuY3VycmVudExheW91dElkID0gdGhpcy5tZXRhLmxheW91dC5pZDtcbiAgICAgIHRoaXMuZ2V0RGV0YWlscygpO1xuICAgICAgdGhpcy5nZXRGaWVsZHNNYXAoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMudGhlbWUgIT09ICdpbmhlcml0Jykge1xuICAgICAgdGhpcy5hcHBseVRoZW1lKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogYW55KSB7XG4gICAgaWYgKGNoYW5nZXMudGhlbWUpIHtcbiAgICAgIHRoaXMudGhlbWUgPSBjaGFuZ2VzLnRoZW1lLmN1cnJlbnRWYWx1ZTtcbiAgICAgIGlmICh0aGlzLnRoZW1lICE9PSAnaW5oZXJpdCcpIHtcbiAgICAgICAgdGhpcy5hcHBseVRoZW1lKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0RWRpdE1vZGUoKSB7XG4gICAgdGhpcy5lZGl0ID0gdHJ1ZTtcbiAgfVxuXG4gIGxvYWRNZXRhZGF0YShsYXlvdXRJZD8sIHJlZnJlc2ggPSBmYWxzZSkge1xuICAgIGNvbnN0IGxheW91dFN0b3JlS2V5ID0gYHZnaXMubGF5b3V0XyR7dGhpcy5tZXRhQ29udGV4dC52Z2lwVXNlcklkfV8ke3RoaXMuaW50ZWdyYXRpb25Db2RlfV8ke3RoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlfWA7XG4gICAgaWYgKCFsYXlvdXRJZCkge1xuICAgICAgbGF5b3V0SWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsYXlvdXRTdG9yZUtleSk7XG4gICAgfVxuICAgIHRoaXMuYnVzeSA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1ldGFMb2FkaW5nID0gdHJ1ZTtcbiAgICB9LCAwKTtcbiAgICBkZWxldGUgdGhpcy5yZXNvdXJjZS5uaWNlRmllbGRzO1xuICAgIHRoaXMuc2VydmljZS5nZXRNZXRhZGF0YShsYXlvdXRJZCwgcmVmcmVzaCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChtZXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50TGF5b3V0SWQgPSBtZXRhLmxheW91dC5pZDtcbiAgICAgICAgaWYgKGxheW91dElkICE9PSBtZXRhLmxheW91dC5pZCAmJiAhdGhpcy5pc1BlcnNpc3RlbnQpIHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShsYXlvdXRTdG9yZUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tZXRhID0gbWV0YU5vcm1hbGl6ZXIobWV0YSwgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsIHRoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlKTtcbiAgICAgICAgdGhpcy5pc0VkaXRhYmxlID0gdGhpcy5tZXRhLmxheW91dCAmJiB0aGlzLm1ldGEubGF5b3V0LmVkaXRhYmxlICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZS5tZXRhID0gdGhpcy5tZXRhO1xuICAgICAgICBpZiAodGhpcy5pc1BlcnNpc3RlbnQgJiYgKCF0aGlzLmlzRWRpdGFibGUgfHwgdGhpcy5lZGl0TW9kZSA9PT0gZmFsc2UgfHwgdGhpcy5tZXRhLmxheW91dC5jaGlsZHJlbikpIHtcbiAgICAgICAgICB0aGlzLmVkaXQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgICB0aGlzLmdldERldGFpbHMoKTtcbiAgICAgICAgdGhpcy5nZXRGaWVsZHNNYXAoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKG1ldGFFcnJvcjogYW55KSA9PiB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmJ1c3k7XG4gICAgICAgIHRoaXMuZ2VuZXJhbEVycm9yID0gYEVycm9yIGxvYWRpbmcgcmVzb3VyY2UgbWV0YWRhdGEgKCR7bWV0YUVycm9yLnN0YXR1c1RleHR9KWA7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGxheW91dFN0b3JlS2V5KTtcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5tZXRhTG9hZGluZztcbiAgICAgICAgdGhpcy5mb3JjZVVpVXBkYXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjaGFuZ2VMYXlvdXQoKSB7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICBgdmdpcy5sYXlvdXRfJHt0aGlzLm1ldGFDb250ZXh0LnZnaXBVc2VySWR9XyR7dGhpcy5pbnRlZ3JhdGlvbkNvZGV9XyR7dGhpcy5yZXNvdXJjZS5yZXNvdXJjZVR5cGV9YCxcbiAgICAgIHRoaXMuY3VycmVudExheW91dElkXG4gICAgKTtcbiAgICB0aGlzLmxvYWRNZXRhZGF0YSh0aGlzLmN1cnJlbnRMYXlvdXRJZCk7XG4gIH1cblxuICBnZXREZXRhaWxzKCkge1xuICAgIGlmICh0aGlzLnJlc291cmNlICYmICh0aGlzLnJlc291cmNlLmV4dGVybmFsSWQgfHwgdGhpcy5yZXNvdXJjZS5pZCkpIHtcbiAgICAgIGlmICh0aGlzLnJlc291cmNlLnBhcmVudCAmJiB0aGlzLnJlc291cmNlLmFjdGl2aXR5IC8vIHNraXAgZmV0Y2hcbiAgICAgICAgJiYgdGhpcy5tZXRhLmxheW91dC5lZGl0YWJsZSA9PT0gZmFsc2UgJiYgIXRoaXMubWV0YS5sYXlvdXQuY2hpbGRyZW5cbiAgICAgICkge1xuICAgICAgICBmb3IgKGNvbnN0IHAgaW4gdGhpcy5yZXNvdXJjZS5hY3Rpdml0eSkge1xuICAgICAgICAgIGlmICh0aGlzLnJlc291cmNlLmFjdGl2aXR5W3BdICYmIHRoaXMuZmllbGROYW1lcy5pbmRleE9mKHApICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbFtwXSA9IHRoaXMucmVzb3VyY2UuYWN0aXZpdHlbcF07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmJ1c3kgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlcnZpY2UuZ2V0RGV0YWlscyhcbiAgICAgICAgICAodGhpcy5yZXNvdXJjZS5leHRlcm5hbElkIHx8IHRoaXMucmVzb3VyY2UuaWQpLCB7XG4gICAgICAgICAgZXZlbnRJZDogdGhpcy5yZXNvdXJjZS5ldmVudElkICE9PSAnTk9fRVZFTlQnID8gdGhpcy5yZXNvdXJjZS5ldmVudElkIDogbnVsbCwgbGF5b3V0SWQ6IHRoaXMucmVzb3VyY2UubGF5b3V0SWRcbiAgICAgICAgfVxuICAgICAgICApLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKHJlc291cmNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG4gICAgICAgICAgICBpZiAocmVzb3VyY2UuX3ZnaXMpIHtcbiAgICAgICAgICAgICAgaWYgKHJlc291cmNlLl92Z2lzLmV2ZW50SWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGFDb250ZXh0LnZnaXBFdmVudElkID0gcmVzb3VyY2UuX3ZnaXMuZXZlbnRJZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAocmVzb3VyY2UubGF5b3V0SWQgJiYgcmVzb3VyY2UuX3ZnaXMubGF5b3V0SWQgIT09IHRoaXMuY3VycmVudExheW91dElkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkTWV0YWRhdGEocmVzb3VyY2UuX3ZnaXMubGF5b3V0SWQpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiBlc2xpbnQtZW5hYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHAgaW4gcmVzb3VyY2UpIHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiAocmVzb3VyY2VbcF0gIT09ICd1bmRlZmluZWQnKSAmJiAodGhpcy5maWVsZE5hbWVzLmluZGV4T2YocCkgIT09IC0xIHx8IHAgPT09ICdfdmdpcycpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RlbFtwXSA9IHJlc291cmNlW3BdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6IChyZXNvdXJjZUVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYWxFcnJvciA9IHJlc291cmNlRXJyb3IuZXJyb3IgPyByZXNvdXJjZUVycm9yLmVycm9yLm1lc3NhZ2UgfHwgcmVzb3VyY2VFcnJvci5tZXNzYWdlIDogcmVzb3VyY2VFcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMuYnVzeTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcmNlVWlVcGRhdGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5yZXNvdXJjZS5yZWYgJiYgdGhpcy5yZXNvdXJjZS5yZWYuYWN0aXZpdHkpIHsgLy8gcmV1c2UgZmFpbGVkIGF1dG9hY3Rpdml0aWVzIGRhdGFcbiAgICAgICAgZm9yIChjb25zdCBwIGluIHRoaXMucmVzb3VyY2UucmVmLmFjdGl2aXR5KSB7XG4gICAgICAgICAgaWYgKHRoaXMucmVzb3VyY2UucmVmLmFjdGl2aXR5ICYmIHRoaXMuZmllbGROYW1lcy5pbmRleE9mKHApICE9PSAtMSkge1xuICAgICAgICAgICAgdGhpcy5tb2RlbFtwXSA9IHRoaXMucmVzb3VyY2UucmVmLmFjdGl2aXR5W3BdOyAvLyBWR0lTLTcyMTUgKGNvcHkgb25seSB2YWxpZCBmaWVsZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnBlcmZvcm1BdXRvRmlsbCgpO1xuICAgIH1cbiAgfVxuXG4gIHBlcmZvcm1BdXRvRmlsbCgpIHtcbiAgICB0aGlzLm1ldGFNc2dTZXJ2aWNlLnNlbmRNZXNzYWdlKFxuICAgICAgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsXG4gICAgICB7XG4gICAgICAgIGFjdGlvbjogJ2F1dG9GaWxsJyxcbiAgICAgICAgaW50ZWdyYXRpb246IHRoaXMuaW50ZWdyYXRpb25Db2RlLFxuICAgICAgICByZXNvdXJjZVR5cGU6IHRoaXMucmVzb3VyY2VUeXBlLFxuICAgICAgICByZXNvdXJjZTogSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLm1vZGVsKSksXG4gICAgICAgIGZpZWxkczogdGhpcy5uaWNlRmllbGRzLFxuICAgICAgICBldmVudDogdGhpcy5tZXRhQ29udGV4dC5jb250ZXh0LFxuICAgICAgICBwcm9maWxlOiB0aGlzLm1ldGFDb250ZXh0LnByb2ZpbGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlXVxuICAgICAgfSxcbiAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlLmVycm9yKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBhZnAgaW4gcmVzcG9uc2UuYXV0b0ZpbGwpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5tb2RlbFthZnBdKSB7XG4gICAgICAgICAgICAgIHRoaXMubW9kZWxbYWZwXSA9IHJlc3BvbnNlLmF1dG9GaWxsW2FmcF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGdldEZpZWxkc01hcCgpIHtcbiAgICBpZiAodGhpcy5tZXRhLmZpZWxkc01hcCkge1xuICAgICAgdGhpcy5maWVsZHNNYXAgPSB0aGlzLm1ldGEuZmllbGRzTWFwO1xuICAgICAgdGhpcy5tYXJrQ29udGFjdGFibGVzKCk7XG4gICAgICB0aGlzLmJ1aWxkQ29udGFjdHNTdWdnZXN0aW9ucygpO1xuICAgICAgaWYgKCF0aGlzLnJlc291cmNlLmV4dGVybmFsSWQpIHtcbiAgICAgICAgdGhpcy5idWlsZFN1YmplY3RUZW1wbGF0ZSgpO1xuICAgICAgICB0aGlzLmV4ZWNUcmFuc2Zvcm1lcigpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1ldGFNc2dTZXJ2aWNlLnNlbmRNZXNzYWdlKFxuICAgICAgICB0aGlzLmludGVncmF0aW9uQ29kZSxcbiAgICAgICAgeyBhY3Rpb246ICdmaWVsZHNNYXAnLCBpbnRlZ3JhdGlvbjogdGhpcy5pbnRlZ3JhdGlvbkNvZGUsIHJlc291cmNlVHlwZTogdGhpcy5yZXNvdXJjZVR5cGUgfSxcbiAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgaWYgKCFyZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgICAgdGhpcy5maWVsZHNNYXAgPSByZXNwb25zZS5maWVsZHNNYXA7XG4gICAgICAgICAgICB0aGlzLm1hcmtDb250YWN0YWJsZXMoKTtcbiAgICAgICAgICAgIHRoaXMuYnVpbGRDb250YWN0c1N1Z2dlc3Rpb25zKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMucmVzb3VyY2UuZXh0ZXJuYWxJZCkge1xuICAgICAgICAgICAgICB0aGlzLmJ1aWxkU3ViamVjdFRlbXBsYXRlKCk7XG4gICAgICAgICAgICAgIHRoaXMuZXhlY1RyYW5zZm9ybWVyKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdObyBmaWVsZHMgbWFwJywgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsIHRoaXMucmVzb3VyY2VUeXBlLCByZXNwb25zZS5lcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG9wZW5SZXNvdXJjZU1lbnUoKSB7XG4gICAgdGhpcy5yZXNvdXJjZU1lbnVWaXNpYmxlID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vbk1lbnVDbGlja291dCk7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgY2xvc2UocmVzdWx0Pykge1xuICAgIHRoaXMuZG9uZS5lbWl0KHJlc3VsdCk7XG4gIH1cblxuICBzaG93UGFyc2VkRXJyb3IocmVzb3VyY2VGb3JtLCBwYXJzZWRFcnJvcikge1xuICAgIHRoaXMuZm9ybUVycm9ycyA9IHBhcnNlZEVycm9yLm1lc3NhZ2UgfHwgJ1RoZXJlIGlzIGEgcHJvYmxlbSB3aXRoIG9uZSBvciBtb3JlIGZpZWxkcyc7XG4gICAgaWYgKHBhcnNlZEVycm9yLmVycm9ycyAmJiBwYXJzZWRFcnJvci5lcnJvcnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmZvcm1FcnJvcnMgKz0gYCAoJHtwYXJzZWRFcnJvci5lcnJvcnMubWFwKGUgPT4gZS5tZXNzYWdlKS5qb2luKCcsICcpfSlgO1xuICAgICAgZm9yIChjb25zdCBwZSBvZiBwYXJzZWRFcnJvci5lcnJvcnMpIHtcbiAgICAgICAgaWYgKHJlc291cmNlRm9ybS5jb250cm9sc1twZS5maWVsZF0pIHtcbiAgICAgICAgICByZXNvdXJjZUZvcm0uY29udHJvbHNbcGUuZmllbGRdLnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUsIGN1c3RvbTogcGUubWVzc2FnZSB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZpcnN0SW52YWxpZDogSFRNTElucHV0RWxlbWVudCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuVmx0LWZvcm1fX2VsZW1lbnQtLWVycm9yIC5tYWluOm5vdCguc3RhbmRhbG9uZSknKTtcbiAgICAgICAgaWYgKGZpcnN0SW52YWxpZCkge1xuICAgICAgICAgIGZpcnN0SW52YWxpZC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzdWJtaXQocmVzb3VyY2VGb3JtKSB7XG4gICAgZGVsZXRlIHRoaXMuZm9ybUVycm9ycztcbiAgICByZXNvdXJjZUZvcm0uZm9ybS5zdWJtaXR0ZWQgPSB0cnVlO1xuICAgIGlmIChyZXNvdXJjZUZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuYnVzeSA9IHRydWU7XG4gICAgICBpZiAodGhpcy5tZXRhQ29udGV4dC52Z2lwRXZlbnRJZCkge1xuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuICAgICAgICBpZiAoIXRoaXMubW9kZWwuX3ZnaXMpIHtcbiAgICAgICAgICB0aGlzLm1vZGVsLl92Z2lzID0ge1xuICAgICAgICAgICAgY29ubmVjdG9yOiB0aGlzLmludGVncmF0aW9uQ29kZSxcbiAgICAgICAgICAgIHJlc291cmNlVHlwZTogdGhpcy5yZXNvdXJjZVR5cGVcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubW9kZWwuX3ZnaXMubGF5b3V0SWQgPSB0aGlzLmN1cnJlbnRMYXlvdXRJZDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgLy8gdGhpcy5tb2RlbC5fdmdpcy50aW1lWm9uZU9mZnNldEluTWludXRlcyA9IDA7IC8vIHdlIGFyZSBub3QgcHJvdmlkaW5nIHRpbWV6b25lIGFueW1vcmUgKGFzIFYzKSwgaW5zdGVhZCB0aGUgJ3RpbWUnIGFuZCAnZGF0ZScgb2JqZWN0cyBhcmUgY29udmVydGVkIHNvIHRoZSBVVEMgdGltZS9kYXRlIGlzIGNvcnJlY3RcbiAgICAgICAgdGhpcy5tb2RlbC5fdmdpcy5ldmVudElkID0gdGhpcy5tZXRhQ29udGV4dC52Z2lwRXZlbnRJZDtcbiAgICAgICAgLyogZXNsaW50LWVuYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuICAgICAgfVxuICAgICAgdGhpcy5zZXJ2aWNlLnNhdmUodGhpcy5tb2RlbCkuc3Vic2NyaWJlKChyZXN1bHQ6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm1vZGVsID0gcmVzdWx0O1xuICAgICAgICB0aGlzLnJlc291cmNlLmV4dGVybmFsSWQgPSByZXN1bHQuX3ZnaXMuZXh0ZXJuYWxJZDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgICAgICB0aGlzLmlzUGVyc2lzdGVudCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2xvc2UocmVzdWx0KTtcbiAgICAgICAgdGhpcy5lZGl0ID0gZmFsc2U7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmJ1c3k7XG4gICAgICB9LCAoZXJyb3JSZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKChlcnJvclJlc3VsdC5zdGF0dXMgPT09IDQyMiAmJiBlcnJvclJlc3VsdC5lcnJvciAmJiAhZXJyb3JSZXN1bHQuZXJyb3IuZXJyb3JzICYmIGVycm9yUmVzdWx0LmVycm9yLmludGVncmF0aW9uRXJyb3IpXG4gICAgICAgICAgfHwgKGVycm9yUmVzdWx0LmVycm9yICYmIGVycm9yUmVzdWx0LmVycm9yLmVycm9ycyAmJiBlcnJvclJlc3VsdC5lcnJvci5lcnJvcnMubGVuZ3RoICYmICFlcnJvclJlc3VsdC5lcnJvci5lcnJvcnNbMF0uZmllbGQpXG4gICAgICAgICAgLy8gYmFja2VuZCBpbXBsZW1lbnRlZCBlcnJvciBwYXJzaW5nIGJ1dCBicm9rZW4gVkdJUy03MzY2XG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuZm9ybUVycm9ycyA9ICdUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCBvbmUgb3IgbW9yZSBmaWVsZHMnO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLm1ldGFNc2dTZXJ2aWNlLnNlbmRNZXNzYWdlKFxuICAgICAgICAgICAgICB0aGlzLmludGVncmF0aW9uQ29kZSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFjdGlvbjogJ3BhcnNlRXJyb3JNZXNzYWdlJyxcbiAgICAgICAgICAgICAgICBpbnRlZ3JhdGlvbkNvZGU6IHRoaXMuaW50ZWdyYXRpb25Db2RlLFxuICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogZXJyb3JSZXN1bHQuZXJyb3IucmVzb3VyY2VUeXBlLFxuICAgICAgICAgICAgICAgIHJhd0Vycm9yOiBlcnJvclJlc3VsdC5lcnJvci5pbnRlZ3JhdGlvbkVycm9yLFxuICAgICAgICAgICAgICAgIHByb2ZpbGU6IHRoaXMubWV0YUNvbnRleHQucHJvZmlsZXNbdGhpcy5pbnRlZ3JhdGlvbkNvZGUudG9VcHBlckNhc2UoKV1cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnBhcnNlZEVycm9yKSB7XG4gICAgICAgICAgICAgICAgICB0aGlzLnNob3dQYXJzZWRFcnJvcihyZXNvdXJjZUZvcm0sIHJlc3BvbnNlLnBhcnNlZEVycm9yKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVyc2NvcmUtZGFuZ2xlXG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBlcnJvciBwYXJzZXIgZm9yJywgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsIGVycm9yUmVzdWx0LmVycm9yLmludGVncmF0aW9uRXJyb3IpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtRXJyb3JzID0gZXJyb3JSZXN1bHQuZXJyb3I7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJy4uLi4nLCBlcnIpO1xuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JSZXN1bHQuc3RhdHVzID09PSA0MjIpIHtcbiAgICAgICAgICB0aGlzLnNob3dQYXJzZWRFcnJvcihyZXNvdXJjZUZvcm0sIGVycm9yUmVzdWx0LmVycm9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZvcm1FcnJvcnMgPSBlcnJvclJlc3VsdC5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUVycm9ycyA9IE9iamVjdC5rZXlzKHJlc291cmNlRm9ybS5jb250cm9scylcbiAgICAgICAgLmZpbHRlcigoYykgPT4gcmVzb3VyY2VGb3JtLmNvbnRyb2xzW2NdLmludmFsaWQpXG4gICAgICAgIC5tYXAoKGYpID0+ICh0aGlzLm5pY2VGaWVsZHNbZl0gPyAodGhpcy5uaWNlRmllbGRzW2ZdLmxhYmVsIHx8IGYpIDogZikpLmpvaW4oJywgJyk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSBgZm9ybVtuYW1lPVwiJHt0aGlzLnJlc291cmNlVHlwZX1cIl0gLlZsdC1mb3JtX19lbGVtZW50LS1lcnJvciAubWFpbjpub3QoLnN0YW5kYWxvbmUpYDtcbiAgICAgICAgY29uc3QgZmlyc3RJbnZhbGlkOiBIVE1MSW5wdXRFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgICBpZiAoZmlyc3RJbnZhbGlkKSB7XG4gICAgICAgICAgZmlyc3RJbnZhbGlkLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyRm9ybUVycm9ycygpIHtcbiAgICBkZWxldGUgdGhpcy5mb3JtRXJyb3JzO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1lbnVDbGlja291dCA9ICgpID0+IHtcbiAgICBkZWxldGUgdGhpcy5yZXNvdXJjZU1lbnVWaXNpYmxlO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vbk1lbnVDbGlja291dCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBzdWdnZXN0RmllbGRQcm9wZXJ0eShrZXksIHZhbHVlKSB7XG4gICAgaWYgKGtleSAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgZmllbGROYW1lcyA9IHRoaXMuZmllbGROYW1lcztcbiAgICAgIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICAgIGNvbnN0IG5lc3RNYXRjaCA9IGtleS5tYXRjaCgvKFxcUyspXFxbXFxkXFxdXFwuKFxcUyspLyk7XG4gICAgICAgIGlmIChuZXN0TWF0Y2ggJiYgZmllbGROYW1lcy5pbmRleE9mKG5lc3RNYXRjaFsxXSkgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5tb2RlbFtuZXN0TWF0Y2hbMV1dID0gW107XG4gICAgICAgICAgY29uc3QgbmVzdEtleXM6IGFueSA9IHt9O1xuICAgICAgICAgIG5lc3RLZXlzW25lc3RNYXRjaFsyXV0gPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLm1vZGVsW25lc3RNYXRjaFsxXV0ucHVzaChuZXN0S2V5cyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGROYW1lcy5pbmRleE9mKGtleSkgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5tb2RlbFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV4ZWNUcmFuc2Zvcm1lcigpIHtcbiAgICBpZiAodGhpcy5tZXRhQ29udGV4dCAmJiB0aGlzLmZpZWxkc01hcCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3VnZ2VzdEZpZWxkUHJvcGVydHkodGhpcy5maWVsZHNNYXAucGhvbmVOdW1iZXIsIHRoaXMubWV0YUNvbnRleHQucGhvbmVOdW1iZXIpO1xuICAgICAgICBpZiAodGhpcy5maWVsZHNNYXAuZmlyc3ROYW1lIHx8IHRoaXMuZmllbGRzTWFwLmxhc3ROYW1lKSB7XG4gICAgICAgICAgY29uc3QgbmFtZXMgPSAodGhpcy5tZXRhQ29udGV4dC5kaXNwbGF5TmFtZSB8fCAnJykuc3BsaXQoJyAnKTtcbiAgICAgICAgICB0aGlzLnN1Z2dlc3RGaWVsZFByb3BlcnR5KHRoaXMuZmllbGRzTWFwLmZpcnN0TmFtZSwgbmFtZXNbMF0pO1xuICAgICAgICAgIHRoaXMuc3VnZ2VzdEZpZWxkUHJvcGVydHkodGhpcy5maWVsZHNNYXAubGFzdE5hbWUsIG5hbWVzWzFdKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkc01hcC5kaXNwbGF5TmFtZSkge1xuICAgICAgICAgIHRoaXMuc3VnZ2VzdEZpZWxkUHJvcGVydHkodGhpcy5maWVsZHNNYXAuZGlzcGxheU5hbWUsIHRoaXMubWV0YUNvbnRleHQuZGlzcGxheU5hbWUpO1xuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFya0NvbnRhY3RhYmxlcygpIHtcbiAgICBpZiAodGhpcy5maWVsZHNNYXAuY29udGFjdGFibGVzICYmIHRoaXMuZmllbGRzTWFwLmNvbnRhY3RhYmxlcy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgYyBvZiB0aGlzLmZpZWxkc01hcC5jb250YWN0YWJsZXMpIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLm5pY2VGaWVsZHNbY107XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmaWVsZCwgJyRpc0NvbnRhY3RhYmxlJywge1xuICAgICAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFN1YmplY3RUZW1wbGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMubW9kZWxbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0gJiYgdGhpcy5maWVsZHNNYXAuc3ViamVjdCAmJiB0aGlzLm5pY2VGaWVsZHNbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0pIHtcbiAgICAgIGxldCBzdWJqZWN0VGVtcGxhdGU6IHN0cmluZztcbiAgICAgIGlmICh0aGlzLm5pY2VGaWVsZHNbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0uZGVmYXVsdCkge1xuICAgICAgICBzdWJqZWN0VGVtcGxhdGUgPSB0aGlzLm5pY2VGaWVsZHNbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0uZGVmYXVsdC5pZCB8fCB0aGlzLm5pY2VGaWVsZHNbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0uZGVmYXVsdDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tZXRhQ29udGV4dC5wcm9maWxlc1t0aGlzLmludGVncmF0aW9uQ29kZV0pIHtcbiAgICAgICAgY29uc3QgcHJvZmlsZSA9IHRoaXMubWV0YUNvbnRleHQucHJvZmlsZXNbdGhpcy5pbnRlZ3JhdGlvbkNvZGVdIHx8IHt9O1xuICAgICAgICBzdWJqZWN0VGVtcGxhdGUgPSBwcm9maWxlLmRlZmF1bHRTdWJqZWN0ID9cbiAgICAgICAgICBwcm9maWxlLmRlZmF1bHRTdWJqZWN0WygodGhpcy5tZXRhQ29udGV4dC5jb250ZXh0IHx8ICdDQUxMJykudHlwZSB8fCAnJykudG9VcHBlckNhc2UoKV0gOlxuICAgICAgICAgIHByb2ZpbGUuYWN0aXZpdHlEZWZhdWx0U3ViamVjdFRlbXBsYXRlO1xuICAgICAgfVxuICAgICAgaWYgKHN1YmplY3RUZW1wbGF0ZSkge1xuICAgICAgICB0aGlzLm1vZGVsW3RoaXMuZmllbGRzTWFwLnN1YmplY3RdID0gdGVtcGxhdGVCdWlsZGVyKHRoaXMubWV0YUNvbnRleHQsIHN1YmplY3RUZW1wbGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbnRhY3RzU3VnZ2VzdGlvbnMoKSB7XG4gICAgLy8gbGV0IGhhc0RlZmF1bHRDb250YWN0ID0gZmFsc2U7XG4gICAgaWYgKHRoaXMubWV0YUNvbnRleHQuY29udGFjdGFibGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlXSAmJiB0aGlzLm1ldGEubGF5b3V0ICYmIHRoaXMubWV0YS5sYXlvdXQuc2VjdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3QgcyBvZiB0aGlzLm1ldGEubGF5b3V0LnNlY3Rpb25zKSB7XG4gICAgICAgIGZvciAoY29uc3QgZiBvZiAocy5maWVsZHMgfHwgW10pKSB7XG4gICAgICAgICAgaWYgKGYudHlwZSA9PT0gJ3JlZmVyZW5jZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZlR5cGVzID0gKGYucmVmZXJlbmNlLmxlbmd0aCA/IGYucmVmZXJlbmNlIDogW2YucmVmZXJlbmNlXSkubWFwKHIgPT4gci5uYW1lKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYyBvZiB0aGlzLm1ldGFDb250ZXh0LmNvbnRhY3RhYmxlc1t0aGlzLmludGVncmF0aW9uQ29kZV0pIHtcbiAgICAgICAgICAgICAgaWYgKHJlZlR5cGVzLmluZGV4T2YoYy5yZXNvdXJjZVR5cGUgfHwgYy50eXBlKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWYuc3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgIGYuc3VnZ2VzdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgZi5zdWdnZXN0aW9ucyA9IGYuc3VnZ2VzdGlvbnMuZmlsdGVyKHNnID0+ICFzZy5hdXRvKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IHRMYWJlbCA9IGMuZGlzcGxheU5hbWUgfHwgYy5uYW1lO1xuICAgICAgICAgICAgICAgIGlmIChjLnBob25lTnVtYmVycykge1xuICAgICAgICAgICAgICAgICAgdExhYmVsICs9ICgnIOKchicgKyBjLnBob25lTnVtYmVycy5tYXAocCA9PiBwLnBob25lTnVtYmVyKS5qb2luKCcsJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmLnN1Z2dlc3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgaWQ6IGMuZXh0ZXJuYWxJZCB8fCBjLmlkZW50aWZpZXIgfHwgYy5pZCxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiB0TGFiZWwsXG4gICAgICAgICAgICAgICAgICB0eXBlOiBjLnJlc291cmNlVHlwZSB8fCBjLnR5cGUsXG4gICAgICAgICAgICAgICAgICBhdXRvOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodGhpcy5maWVsZHNNYXAuY29udGFjdGFibGVzIHx8IFtdKS5pbmRleE9mKGYubmFtZSkgIT09IC0xKSB7IC8vIGV2YWx1YXRlIHVzYWJpbGl0eT9cbiAgICAgICAgICAgICAgZi5hbHdheXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIChcbiAgICAgICAgICAgIC8vICAgIWhhc0RlZmF1bHRDb250YWN0ICYmIHRoaXMubWV0YUNvbnRleHQuZGVmYXVsdENvbnRhY3RhYmxlc1t0aGlzLmludGVncmF0aW9uQ29kZV1cbiAgICAgICAgICAgIC8vICAgJiYgcmVmVHlwZXMuaW5kZXhPZih0aGlzLm1ldGFDb250ZXh0LmRlZmF1bHRDb250YWN0YWJsZXNbdGhpcy5pbnRlZ3JhdGlvbkNvZGVdLnR5cGUpICE9PSAtMVxuICAgICAgICAgICAgLy8gKSB7XG4gICAgICAgICAgICAvLyAgIHRoaXMucmVzb3VyY2VbZi5uYW1lXSA9IHRoaXMubWV0YUNvbnRleHQuZGVmYXVsdENvbnRhY3RhYmxlc1t0aGlzLmludGVncmF0aW9uQ29kZV07XG4gICAgICAgICAgICAvLyAgIGhhc0RlZmF1bHRDb250YWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAoIWhhc0RlZmF1bHRDb250YWN0ICYmIHRoaXMuZmllbGRzTWFwLmNvbnRhY3RhYmxlcyAmJiBmLnN1Z2dlc3Rpb25zICYmIGYuc3VnZ2VzdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAvLyAgIGlmICh0aGlzLmZpZWxkc01hcC5jb250YWN0YWJsZXMuaW5kZXhPZihmLm5hbWUpICE9PSAtMSAmJiAhZi5kZWZhdWx0KSB7XG4gICAgICAgICAgICAvLyAgICAgZi5kZWZhdWx0ID0gZi5zdWdnZXN0aW9uc1swXTtcbiAgICAgICAgICAgIC8vICAgICBoYXNEZWZhdWx0Q29udGFjdCA9IHRydWU7XG4gICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGFjdHNTdWdnZXN0aW9uc0RvbmUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlUaGVtZSgpIHtcbiAgICBjb25zdCBtZXRhVGhlbWUgPSB0aGlzLnRoZW1lID09PSAnZGFyaycgPyBtZXRhRGFyayA6IG1ldGFMaWdodDtcbiAgICBjb25zb2xlLmxvZygncmVzb3VyY2UgYXBwbHkgdGhlbWUnLCB0aGlzLnRoZW1lKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtZXRhVGhlbWUucHJvcGVydGllcykpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIG1ldGFUaGVtZS5wcm9wZXJ0aWVzW2tleV0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9yY2VVaVVwZGF0ZSgpIHsgLy8gaU9TIHdlYnZpZXcgZG9lcyBub3QgdXBkYXRlIHRoZSBVSSBhZnRlciBhc3ljIGNoYW5nZXMuIFRlbXAgZml4IDooXG4gICAgLy8gdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnN0IGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnRzJyk7XG4gICAgZS5pbml0RXZlbnQoJ2NsaWNrJywgdHJ1ZSwgZmFsc2UpO1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KGUpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPSdnZW5lcmFsRXJyb3InIGNsYXNzPVwiVmx0LWNhbGxvdXQgVmx0LWNhbGxvdXQtLWNyaXRpY2FsXCIgc3R5bGU9J292ZXJmbG93OiBhdXRvOyBtYXJnaW46IDIwcHg7Jz5cblx0PGk+PC9pPlxuXHQ8ZGl2IGNsYXNzPVwiVmx0LWNhbGxvdXRfX2NvbnRlbnRcIj5cblx0XHQ8cD57e2dlbmVyYWxFcnJvcn19PC9wPlxuXHQ8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj0nIW1ldGEnIGNsYXNzPVwiVmx0LXByb2dyZXNzXCI+XG5cdDxkaXYgY2xhc3M9XCJWbHQtcHJvZ3Jlc3NfX2JhclwiIFtuZ0NsYXNzXT1cInsgbG9hZGluZzogbWV0YUxvYWRpbmcgfVwiIHJvbGU9XCJwcm9ncmVzc2JhclwiIGFyaWEtdmFsdWVtaW49XCIwXCIgYXJpYS12YWx1ZXRleHQ9XCJMb2FkaW5nIE1ldGFkYXRhXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiPjwvZGl2PlxuPC9kaXY+XG48Zm9ybSBbdmdpcE1ldGFGb3JtQXV0b2ZvY3VzXT0nIXJlc291cmNlIHx8ICFyZXNvdXJjZS5leHRlcm5hbElkJyAqbmdJZj0nbWV0YSAmJiAhZ2VuZXJhbEVycm9yJyAjcmVzb3VyY2VGb3JtPVwibmdGb3JtXCIgW25hbWVdPSdyZXNvdXJjZS5yZXNvdXJjZVR5cGUnIChuZ1N1Ym1pdCk9J3N1Ym1pdChyZXNvdXJjZUZvcm0pJyBub3ZhbGlkYXRlPlxuXHQ8ZGl2IGNsYXNzPSdmb3JtLWNvbnRlbnQnIHN0eWxlPSdvdmVyZmxvdzogaGlkZGVuOyc+XG5cdFx0PGRpdiBbbmdDbGFzc109XCJ7ICdWbHQtY2FsbG91dC0tZGlzbWlzc2VkJzogIWZvcm1FcnJvcnMgfVwiIGNsYXNzPVwiVmx0LWNhbGxvdXQgVmx0LWNhbGxvdXQtLWJhbm5lciBWbHQtY2FsbG91dC0tY3JpdGljYWxcIj5cblx0XHRcdDxpPjwvaT5cblx0XHRcdDxkaXYgY2xhc3M9XCJWbHQtY2FsbG91dF9fY29udGVudFwiIHN0eWxlPVwibWFyZ2luLXRvcDogYXV0bztcIj5cblx0XHRcdFx0PHA+VGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggb25lIG9yIG1vcmUgZmllbGRzPC9wPlxuXHRcdFx0XHQ8c21hbGwgc3R5bGU9J2ZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMS4wZW07JyAqbmdJZj0nZm9ybUVycm9ycyc+e3sgZm9ybUVycm9ycy5tZXNzYWdlIHx8IGZvcm1FcnJvcnMgfX08L3NtYWxsPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8YnV0dG9uIHR5cGU9J2J1dHRvbicgY2xhc3M9XCJWbHQtY2FsbG91dF9fZGlzbWlzc1wiIChjbGljayk9J2NsZWFyRm9ybUVycm9ycygpJyBhcmlhLWxhYmVsPVwiRGlzbWlzc1wiPjwvYnV0dG9uPlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJWbHQtY2FyZF9fY29udGVudFwiIHN0eWxlPSdtaW4taGVpZ2h0OiA0MHB4Oyc+XG5cdFx0XHQ8dmdpcC1tZXRhLWxheW91dCAqbmdJZj0nZWRpdCcgW21ldGFdPSdtZXRhLmxheW91dCcgW3Jlc291cmNlXT0nbW9kZWwnIFtwcmV2aWV3XT0nZmFsc2UnIFtpbnRlZ3JhdGlvbl09J21ldGEuaW50ZWdyYXRpb24nIFt0eXBlXT0ncmVzb3VyY2UucmVzb3VyY2VUeXBlJyB0aGVtZT0naW5oZXJpdCc+PC92Z2lwLW1ldGEtbGF5b3V0PlxuXHRcdFx0PHZnaXAtbWV0YS1sYXlvdXQgKm5nSWY9JyFlZGl0JyBbbWV0YV09J21ldGEubGF5b3V0JyBbcmVzb3VyY2VdPSdtb2RlbCcgW3ByZXZpZXddPSd0cnVlJyBbaW50ZWdyYXRpb25dPSdtZXRhLmludGVncmF0aW9uJyBbdHlwZV09J3Jlc291cmNlLnJlc291cmNlVHlwZScgdGhlbWU9J2luaGVyaXQnPjwvdmdpcC1tZXRhLWxheW91dD5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJWbHQtY2FyZF9fZm9vdGVyXCI+XG5cdFx0PGJ1dHRvbiBjbGFzcz1cIlZsdC1idG4gVmx0LWJ0bi0tc2Vjb25kYXJ5IFZsdC1idG4tLWFwcCBWbHQtYnRuLS1vdXRsaW5lXCIgdHlwZT0nYnV0dG9uJyBhcmlhLWxhYmVsPSdDYW5jZWwnIChjbGljayk9J2Nsb3NlKCknPlxuXHRcdFx0e3sgZWRpdCA/ICdDYW5jZWwnIDogJ0Nsb3NlJyB9fVxuXHRcdDwvYnV0dG9uPlxuXHRcdDxidXR0b24gKm5nSWY9J2VkaXQnIGNsYXNzPVwiVmx0LWJ0biBWbHQtYnRuLS1hcHBcIiBbbmdDbGFzc109XCJ7ICdWbHQtYnRuLS1wcmltYXJ5JzogaXNQZXJzaXN0ZW50LCAnVmx0LWJ0bi0tc2Vjb25kYXJ5JzogIWlzUGVyc2lzdGVudCB9XCIgdHlwZT0nc3VibWl0Jz5cblx0XHRcdHt7IChyZXNvdXJjZSAmJiByZXNvdXJjZS5leHRlcm5hbElkKSA/ICdVcGRhdGUnIDogJ0NyZWF0ZScgfX1cblx0XHQ8L2J1dHRvbj5cblx0XHQ8YnV0dG9uIChjbGljayk9J3NldEVkaXRNb2RlKCknICpuZ0lmPSchZWRpdCAmJiBpc0VkaXRhYmxlJyBbZGlzYWJsZWRdPSchaXNFZGl0YWJsZScgY2xhc3M9XCJWbHQtYnRuIFZsdC1idG4tLWFwcCBWbHQtYnRuLS1wcmltYXJ5XCIgdHlwZT0nYnV0dG9uJyBhcmlhLWxhYmVsPSdFZGl0Jz5cblx0XHRcdEVkaXRcblx0XHQ8L2J1dHRvbj5cblx0XHQ8ZGl2IHN0eWxlPSdtYXJnaW4tcmlnaHQ6IDhweDsgZmxleDogMTsnPlxuXHRcdFx0PGRpdiAqbmdJZj0nbWV0YS5hdmFpbGFibGVMYXlvdXRzICYmIG1ldGEuYXZhaWxhYmxlTGF5b3V0cy5sZW5ndGgnIGNsYXNzPVwiVmx0LWZvcm1fX2VsZW1lbnQgVmx0LWZvcm1fX2VsZW1lbnQtLWJpZ1wiIHN0eWxlPSdwYWRkaW5nOiAwOyBtYXJnaW46IC04cHggLTE4cHggLThweCAwOyc+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJWbHQtc2VsZWN0XCI+XG5cdFx0XHRcdFx0PGxhYmVsIHN0eWxlPSdhbGw6IGluaGVyaXQ7Jz5cblx0XHRcdFx0XHRcdDxzZWxlY3Qgc3R5bGU9J2JvcmRlcjogMDsgbWFyZ2luLXRvcDogM3B4OyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsnIChjaGFuZ2UpPSdjaGFuZ2VMYXlvdXQoKScgWyhuZ01vZGVsKV09J2N1cnJlbnRMYXlvdXRJZCcgW25nTW9kZWxPcHRpb25zXT0neyBzdGFuZGFsb25lOiB0cnVlIH0nIFtkaXNhYmxlZF09J2lzUGVyc2lzdGVudCc+XG5cdFx0XHRcdFx0XHRcdDxvcHRpb24gc2VsZWN0ZWQgZGlzYWJsZWQ+U2VsZWN0IGxheW91dDwvb3B0aW9uPlxuXHRcdFx0XHRcdFx0XHQ8b3B0aW9uICpuZ0Zvcj0nbGV0IGxheW91dCBvZiBtZXRhLmF2YWlsYWJsZUxheW91dHMnIFtuZ1ZhbHVlXT0nbGF5b3V0LmlkJz57e2xheW91dC5uYW1lfX08L29wdGlvbj5cblx0XHRcdFx0XHRcdDwvc2VsZWN0PlxuXHRcdFx0XHRcdFx0PGxhYmVsPkxheW91dDwvbGFiZWw+XG5cdFx0XHRcdFx0PC9sYWJlbD5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0XHQ8ZGl2IGNsYXNzPVwiVmx0LWRyb3Bkb3duIHJlc291cmNlLW1lbnVcIiBbbmdDbGFzc109XCJ7ICdWbHQtZHJvcGRvd24tLWV4cGFuZGVkJzogcmVzb3VyY2VNZW51VmlzaWJsZSB9XCIgc3R5bGU9J21hcmdpbi1sZWZ0OiAycHg7Jz5cblx0XHRcdDxkaXYgY2xhc3M9XCJWbHQtZHJvcGRvd25fX3BhbmVsXCIgc3R5bGU9J2JvdHRvbTogNDBweDsgcmlnaHQ6IC00cHg7IHRvcDogaW5pdGlhbDsnPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiVmx0LWRyb3Bkb3duX19wYW5lbF9fY29udGVudFwiPlxuXHRcdFx0XHRcdDxhIGNsYXNzPVwiVmx0LWRyb3Bkb3duX19saW5rXCIgKGNsaWNrKT0nbG9hZE1ldGFkYXRhKGN1cnJlbnRMYXlvdXRJZCwgdHJ1ZSknPlxuXHRcdFx0XHRcdFx0PGRpdj5cblx0XHRcdFx0XHRcdFx0PHN2ZyBjbGFzcz0nVmx0LWljb24gVmx0LWljb24tLXNtYWxsZXInPjx1c2UgeGxpbms6aHJlZj1cInZvbHRhL3ZvbHRhLWljb25zLnN2ZyNWbHQtaWNvbi1yZWZyZXNoXCIvPjwvc3ZnPiZuYnNwOyZuYnNwO1JlZnJlc2ggbWV0YWRhdGFcblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvYT5cblx0XHRcdFx0PC9kaXY+XG5cdFx0XHQ8L2Rpdj5cblx0XHRcdDxkaXYgY2xhc3M9XCJWbHQtZHJvcGRvd25fX3RyaWdnZXJcIj5cblx0XHRcdFx0PGJ1dHRvbiB0eXBlPSdidXR0b24nIChjbGljayk9J29wZW5SZXNvdXJjZU1lbnUoKScgY2xhc3M9XCJWbHQtYnRuIFZsdC1idG4tLWxpbmtcIiBhcmlhLWxhYmVsPSdSZXNvdXJjZSBtZW51Jz5cblx0XHRcdFx0XHQ8c3ZnIGNsYXNzPSdWbHQtaWNvbiBWbHQtaWNvbi0tc21hbGwnIHN0eWxlPSdtYXJnaW46IDA7Jz48dXNlIHhsaW5rOmhyZWY9XCJ2b2x0YS92b2x0YS1pY29ucy5zdmcjVmx0LWljb24tbW9yZS12LW5lZ2F0aXZlXCIvPjwvc3ZnPlxuXHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cbjwvZm9ybT5cbjxkaXYgY2xhc3M9J2J1c3ktbWFzaycgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGJ1c3kgfVwiPlxuXHQ8ZGl2IHN0eWxlPSdoZWlnaHQ6IDEwMCU7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOyc+XG5cdFx0PGRpdiBjbGFzcz1cIlZsdC1zcGlubmVyXCI+PC9kaXY+XG5cdDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
495
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvcmVzb3VyY2UvaW5kZXgudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvcmVzb3VyY2Uvdmlldy5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHcEksT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUdsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7QUFPbEUsTUFBTSxPQUFPLFlBQVk7SUEwQnZCLFlBQ1UsR0FBc0IsRUFDdEIsRUFBYyxFQUNkLG1CQUF3QyxFQUN4QyxXQUErQixFQUMvQixjQUE4QjtRQUo5QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2Qsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFDL0IsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBMUIvQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ1IsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFXM0MsU0FBSSxHQUFHLElBQUksQ0FBQztRQUtaLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQXVXeEIsbUJBQWMsR0FBRyxHQUFHLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDaEMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFD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eERhLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0Usb0JBQW9CO2lPQUtyQixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyw0QkFBNEI7c0JBQXBDLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ1csSUFBSTtzQkFBcEIsTUFBTTtnQkFFMkIsWUFBWTtzQkFBN0MsU0FBUzt1QkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNZXRhUmVzb3VyY2VTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWV0YVJlc291cmNlJztcbmltcG9ydCB7IG1ldGFEYXJrLCBtZXRhTGlnaHQgfSBmcm9tICcuLi9jb21tb24vdXRpbHMvY29sb3JUaGVtZXMnO1xuaW1wb3J0IHsgTWV0YUNvbnRleHRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWV0YUNvbnRleHQnO1xuaW1wb3J0IHsgTWV0YU1zZ1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9tZXRhTXNnJztcbmltcG9ydCB7IG1ldGFOb3JtYWxpemVyIH0gZnJvbSAnLi4vY29tbW9uL21ldGFOb3JtYWxpemVyJztcbmltcG9ydCB7IHRlbXBsYXRlQnVpbGRlciB9IGZyb20gJy4uL2NvbW1vbi91dGlscy90ZW1wbGF0ZUJ1aWxkZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2Z2lwLW1ldGEtcmVzb3VyY2UnLFxuICB0ZW1wbGF0ZVVybDogJy4vdmlldy5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc3R5bGUuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE1ldGFSZXNvdXJjZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcmVzb3VyY2U6IGFueTtcbiAgQElucHV0KCkgbW9kZWw6IGFueTtcbiAgQElucHV0KCkgbWV0YVJlc291cmNlU2VydmljZURlbGVnYXRlZDogTWV0YVJlc291cmNlU2VydmljZTsgLy8gY2FyeSBpdCBmcm9tIHRoZSBwYXJlbnQgdG8ga2VlcCB0aGUgaW50ZXJjZXB0b3JzXG4gIEBJbnB1dCgpIHRoZW1lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGVkaXRNb2RlID0gdHJ1ZTtcbiAgQE91dHB1dCgpIHB1YmxpYyBkb25lID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3Jlc291cmNlRm9ybScpIHB1YmxpYyByZXNvdXJjZUZvcm06IE5nRm9ybTtcblxuICBpbnRlZ3JhdGlvbkNvZGU6IHN0cmluZztcbiAgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIG1ldGE6IGFueTtcbiAgc2VydmljZTogTWV0YVJlc291cmNlU2VydmljZTtcbiAgY3VycmVudExheW91dElkOiBhbnk7XG4gIGZvcm1FcnJvcnM6IGFueTtcbiAgZmllbGRzTWFwOiBhbnk7XG4gIGVkaXQgPSB0cnVlO1xuICBidXN5OiBib29sZWFuO1xuICBtZXRhTG9hZGluZzogYm9vbGVhbjtcbiAgZ2VuZXJhbEVycm9yOiBzdHJpbmc7XG4gIHJlc291cmNlTWVudVZpc2libGU6IGJvb2xlYW47XG4gIGNvbnRhY3RzU3VnZ2VzdGlvbnNEb25lID0gZmFsc2U7XG4gIGlzRWRpdGFibGU6IGJvb2xlYW47XG4gIGlzUGVyc2lzdGVudDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIG1ldGFSZXNvdXJjZVNlcnZpY2U6IE1ldGFSZXNvdXJjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtZXRhQ29udGV4dDogTWV0YUNvbnRleHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbWV0YU1zZ1NlcnZpY2U6IE1ldGFNc2dTZXJ2aWNlXG4gICkge1xuXG4gIH1cblxuICBnZXQgbmljZUZpZWxkcygpIHtcbiAgICBpZiAoXG4gICAgICAhdGhpcy5yZXNvdXJjZS5uaWNlRmllbGRzXG4gICAgICAmJiB0aGlzLnJlc291cmNlLm1ldGFcbiAgICAgICYmIHRoaXMucmVzb3VyY2UubWV0YS5sYXlvdXRcbiAgICAgICYmIHRoaXMucmVzb3VyY2UubWV0YS5sYXlvdXQuc2VjdGlvbnNcbiAgICApIHtcbiAgICAgIGNvbnN0IGV4dHJhY3RTZWN0aW9uRmllbGRzID0gKHMpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBmIG9mIHMuZmllbGRzKSB7XG4gICAgICAgICAgaWYgKGYubmFtZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNvdXJjZS5uaWNlRmllbGRzW2YubmFtZV0gPSBmO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZi5maWVsZHMgJiYgZi5maWVsZHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBleHRyYWN0U2VjdGlvbkZpZWxkcyhmKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLnJlc291cmNlLm5pY2VGaWVsZHMgPSB7fTtcbiAgICAgIGZvciAoY29uc3QgcyBvZiB0aGlzLnJlc291cmNlLm1ldGEubGF5b3V0LnNlY3Rpb25zKSB7XG4gICAgICAgIGV4dHJhY3RTZWN0aW9uRmllbGRzKHMpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5uaWNlRmllbGRzO1xuICB9XG5cbiAgZ2V0IGZpZWxkTmFtZXMoKSB7XG4gICAgY29uc3QgbmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLm5pY2VGaWVsZHMpO1xuICAgIGlmICh0aGlzLnJlc291cmNlLm1ldGEubGF5b3V0LmNoaWxkcmVuKSB7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMucmVzb3VyY2UubWV0YS5sYXlvdXQuY2hpbGRyZW4pIHtcbiAgICAgICAgbmFtZXMucHVzaChjaGlsZC5uYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5hbWVzO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbnRlZ3JhdGlvbkNvZGUgPSAodGhpcy5yZXNvdXJjZS5pbnRlZ3JhdGlvbkNvZGUgfHwgJycpLnRvVXBwZXJDYXNlKCk7XG4gICAgdGhpcy5yZXNvdXJjZVR5cGUgPSB0aGlzLnJlc291cmNlLnJlc291cmNlVHlwZTtcbiAgICB0aGlzLnNlcnZpY2UgPSAodGhpcy5tZXRhUmVzb3VyY2VTZXJ2aWNlRGVsZWdhdGVkIHx8IHRoaXMubWV0YVJlc291cmNlU2VydmljZSkubmV3KHRoaXMucmVzb3VyY2UpO1xuICAgIGlmICghdGhpcy5tb2RlbCkge1xuICAgICAgdGhpcy5tb2RlbCA9IHt9O1xuICAgIH1cbiAgICBpZiAodGhpcy5yZXNvdXJjZS5hY3Rpdml0eSAmJiB0aGlzLnJlc291cmNlLnJlZi5lZGl0YWJsZSA9PT0gZmFsc2UgJiYgIXRoaXMucmVzb3VyY2UuZXh0ZXJuYWxJZCkge1xuICAgICAgdGhpcy5yZXNvdXJjZS5leHRlcm5hbElkID0gJ01JU1NJTkdfRVhURVJOQUxfSUQnO1xuICAgIH1cbiAgICB0aGlzLmlzUGVyc2lzdGVudCA9IHRoaXMucmVzb3VyY2UgJiYgdGhpcy5yZXNvdXJjZS5leHRlcm5hbElkO1xuICAgIGlmICghdGhpcy5yZXNvdXJjZS5tZXRhKSB7XG4gICAgICB0aGlzLmxvYWRNZXRhZGF0YSh0aGlzLnJlc291cmNlLmxheW91dElkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gICBpZiAodGhpcy5pc1BlcnNpc3RlbnQgJiYgKCF0aGlzLmlzRWRpdGFibGUgfHwgdGhpcy5yZXNvdXJjZXNbcmVmLm5hbWVdLm1ldGEubGF5b3V0LmNoaWxkcmVuKSkge1xuICAgICAgLy8gICAgIHRoaXMuZWRpdCA9IGZhbHNlO1xuICAgICAgLy8gICB9XG4gICAgICB0aGlzLm1ldGEgPSB0aGlzLnJlc291cmNlLm1ldGE7XG4gICAgICB0aGlzLmN1cnJlbnRMYXlvdXRJZCA9IHRoaXMubWV0YS5sYXlvdXQuaWQ7XG4gICAgICB0aGlzLmdldERldGFpbHMoKTtcbiAgICAgIHRoaXMuZ2V0RmllbGRzTWFwKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRoZW1lICE9PSAnaW5oZXJpdCcpIHtcbiAgICAgIHRoaXMuYXBwbHlUaGVtZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IGFueSkge1xuICAgIGlmIChjaGFuZ2VzLnRoZW1lKSB7XG4gICAgICB0aGlzLnRoZW1lID0gY2hhbmdlcy50aGVtZS5jdXJyZW50VmFsdWU7XG4gICAgICBpZiAodGhpcy50aGVtZSAhPT0gJ2luaGVyaXQnKSB7XG4gICAgICAgIHRoaXMuYXBwbHlUaGVtZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldEVkaXRNb2RlKCkge1xuICAgIHRoaXMuZWRpdCA9IHRydWU7XG4gIH1cblxuICBsb2FkTWV0YWRhdGEobGF5b3V0SWQ/LCByZWZyZXNoID0gZmFsc2UsIGV2Pykge1xuICAgIGNvbnN0IGxheW91dFN0b3JlS2V5ID0gYHZnaXMubGF5b3V0XyR7dGhpcy5tZXRhQ29udGV4dC52Z2lwVXNlcklkfV8ke3RoaXMuaW50ZWdyYXRpb25Db2RlfV8ke3RoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlfWA7XG4gICAgaWYgKCFsYXlvdXRJZCkge1xuICAgICAgbGF5b3V0SWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShsYXlvdXRTdG9yZUtleSk7XG4gICAgfVxuICAgIHRoaXMuYnVzeSA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm1ldGFMb2FkaW5nID0gdHJ1ZTtcbiAgICB9LCAwKTtcbiAgICBkZWxldGUgdGhpcy5yZXNvdXJjZS5uaWNlRmllbGRzO1xuICAgIHRoaXMuc2VydmljZS5nZXRNZXRhZGF0YShsYXlvdXRJZCwgcmVmcmVzaCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChtZXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50TGF5b3V0SWQgPSBtZXRhLmxheW91dC5pZDtcbiAgICAgICAgaWYgKGxheW91dElkICE9PSBtZXRhLmxheW91dC5pZCAmJiAhdGhpcy5pc1BlcnNpc3RlbnQpIHtcbiAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShsYXlvdXRTdG9yZUtleSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5tZXRhID0gbWV0YU5vcm1hbGl6ZXIobWV0YSwgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsIHRoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlKTtcbiAgICAgICAgdGhpcy5pc0VkaXRhYmxlID0gdGhpcy5tZXRhLmxheW91dCAmJiB0aGlzLm1ldGEubGF5b3V0LmVkaXRhYmxlICE9PSBmYWxzZTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZS5tZXRhID0gdGhpcy5tZXRhO1xuICAgICAgICBpZiAodGhpcy5pc1BlcnNpc3RlbnQgJiYgKCF0aGlzLmlzRWRpdGFibGUgfHwgdGhpcy5lZGl0TW9kZSA9PT0gZmFsc2UgfHwgdGhpcy5tZXRhLmxheW91dC5jaGlsZHJlbikpIHtcbiAgICAgICAgICB0aGlzLmVkaXQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgICB0aGlzLmdldERldGFpbHMoKTtcbiAgICAgICAgdGhpcy5nZXRGaWVsZHNNYXAoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogKG1ldGFFcnJvcjogYW55KSA9PiB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmJ1c3k7XG4gICAgICAgIHRoaXMuZ2VuZXJhbEVycm9yID0gYEVycm9yIGxvYWRpbmcgcmVzb3VyY2UgbWV0YWRhdGEgKCR7bWV0YUVycm9yLnN0YXR1c1RleHR9KWA7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGxheW91dFN0b3JlS2V5KTtcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICBkZWxldGUgdGhpcy5tZXRhTG9hZGluZztcbiAgICAgICAgdGhpcy5mb3JjZVVpVXBkYXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgaWYgKGV2KSB7XG4gICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlTGF5b3V0KCkge1xuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgYHZnaXMubGF5b3V0XyR7dGhpcy5tZXRhQ29udGV4dC52Z2lwVXNlcklkfV8ke3RoaXMuaW50ZWdyYXRpb25Db2RlfV8ke3RoaXMucmVzb3VyY2UucmVzb3VyY2VUeXBlfWAsXG4gICAgICB0aGlzLmN1cnJlbnRMYXlvdXRJZFxuICAgICk7XG4gICAgdGhpcy5sb2FkTWV0YWRhdGEodGhpcy5jdXJyZW50TGF5b3V0SWQpO1xuICB9XG5cbiAgZ2V0RGV0YWlscygpIHtcbiAgICBpZiAodGhpcy5yZXNvdXJjZSAmJiAodGhpcy5yZXNvdXJjZS5leHRlcm5hbElkIHx8IHRoaXMucmVzb3VyY2UuaWQpKSB7XG4gICAgICBpZiAodGhpcy5yZXNvdXJjZS5wYXJlbnQgJiYgdGhpcy5yZXNvdXJjZS5hY3Rpdml0eSAvLyBza2lwIGZldGNoXG4gICAgICAgICYmIHRoaXMubWV0YS5sYXlvdXQuZWRpdGFibGUgPT09IGZhbHNlICYmICF0aGlzLm1ldGEubGF5b3V0LmNoaWxkcmVuXG4gICAgICApIHtcbiAgICAgICAgZm9yIChjb25zdCBwIGluIHRoaXMucmVzb3VyY2UuYWN0aXZpdHkpIHtcbiAgICAgICAgICBpZiAodGhpcy5yZXNvdXJjZS5hY3Rpdml0eVtwXSAmJiB0aGlzLmZpZWxkTmFtZXMuaW5kZXhPZihwKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWxbcF0gPSB0aGlzLnJlc291cmNlLmFjdGl2aXR5W3BdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5idXN5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZXJ2aWNlLmdldERldGFpbHMoXG4gICAgICAgICAgKHRoaXMucmVzb3VyY2UuZXh0ZXJuYWxJZCB8fCB0aGlzLnJlc291cmNlLmlkKSwge1xuICAgICAgICAgIGV2ZW50SWQ6IHRoaXMucmVzb3VyY2UuZXZlbnRJZCAhPT0gJ05PX0VWRU5UJyA/IHRoaXMucmVzb3VyY2UuZXZlbnRJZCA6IG51bGwsIGxheW91dElkOiB0aGlzLnJlc291cmNlLmxheW91dElkXG4gICAgICAgIH1cbiAgICAgICAgKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChyZXNvdXJjZTogYW55KSA9PiB7XG4gICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuICAgICAgICAgICAgaWYgKHJlc291cmNlLl92Z2lzKSB7XG4gICAgICAgICAgICAgIGlmIChyZXNvdXJjZS5fdmdpcy5ldmVudElkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRhQ29udGV4dC52Z2lwRXZlbnRJZCA9IHJlc291cmNlLl92Z2lzLmV2ZW50SWQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlc291cmNlLmxheW91dElkICYmIHJlc291cmNlLl92Z2lzLmxheW91dElkICE9PSB0aGlzLmN1cnJlbnRMYXlvdXRJZCkge1xuICAgICAgICAgICAgICAgIHRoaXMubG9hZE1ldGFkYXRhKHJlc291cmNlLl92Z2lzLmxheW91dElkKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLyogZXNsaW50LWVuYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuICAgICAgICAgICAgZm9yIChjb25zdCBwIGluIHJlc291cmNlKSB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgKHJlc291cmNlW3BdICE9PSAndW5kZWZpbmVkJykgJiYgKHRoaXMuZmllbGROYW1lcy5pbmRleE9mKHApICE9PSAtMSB8fCBwID09PSAnX3ZnaXMnKSkge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kZWxbcF0gPSByZXNvdXJjZVtwXTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVsZXRlIHRoaXMuYnVzeTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAocmVzb3VyY2VFcnJvcikgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmFsRXJyb3IgPSByZXNvdXJjZUVycm9yLmVycm9yID8gcmVzb3VyY2VFcnJvci5lcnJvci5tZXNzYWdlIHx8IHJlc291cmNlRXJyb3IubWVzc2FnZSA6IHJlc291cmNlRXJyb3IubWVzc2FnZTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLmJ1c3k7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5mb3JjZVVpVXBkYXRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMucmVzb3VyY2UucmVmICYmIHRoaXMucmVzb3VyY2UucmVmLmFjdGl2aXR5KSB7IC8vIHJldXNlIGZhaWxlZCBhdXRvYWN0aXZpdGllcyBkYXRhXG4gICAgICAgIGZvciAoY29uc3QgcCBpbiB0aGlzLnJlc291cmNlLnJlZi5hY3Rpdml0eSkge1xuICAgICAgICAgIGlmICh0aGlzLnJlc291cmNlLnJlZi5hY3Rpdml0eSAmJiB0aGlzLmZpZWxkTmFtZXMuaW5kZXhPZihwKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMubW9kZWxbcF0gPSB0aGlzLnJlc291cmNlLnJlZi5hY3Rpdml0eVtwXTsgLy8gVkdJUy03MjE1IChjb3B5IG9ubHkgdmFsaWQgZmllbGRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5wZXJmb3JtQXV0b0ZpbGwoKTtcbiAgICB9XG4gIH1cblxuICBwZXJmb3JtQXV0b0ZpbGwoKSB7XG4gICAgdGhpcy5tZXRhTXNnU2VydmljZS5zZW5kTWVzc2FnZShcbiAgICAgIHRoaXMuaW50ZWdyYXRpb25Db2RlLFxuICAgICAge1xuICAgICAgICBhY3Rpb246ICdhdXRvRmlsbCcsXG4gICAgICAgIGludGVncmF0aW9uOiB0aGlzLmludGVncmF0aW9uQ29kZSxcbiAgICAgICAgcmVzb3VyY2VUeXBlOiB0aGlzLnJlc291cmNlVHlwZSxcbiAgICAgICAgcmVzb3VyY2U6IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5tb2RlbCkpLFxuICAgICAgICBmaWVsZHM6IHRoaXMubmljZUZpZWxkcyxcbiAgICAgICAgZXZlbnQ6IHRoaXMubWV0YUNvbnRleHQuY29udGV4dCxcbiAgICAgICAgcHJvZmlsZTogdGhpcy5tZXRhQ29udGV4dC5wcm9maWxlc1t0aGlzLmludGVncmF0aW9uQ29kZV1cbiAgICAgIH0sXG4gICAgICAocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5lcnJvcikge1xuICAgICAgICAgIGZvciAoY29uc3QgYWZwIGluIHJlc3BvbnNlLmF1dG9GaWxsKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubW9kZWxbYWZwXSkge1xuICAgICAgICAgICAgICB0aGlzLm1vZGVsW2FmcF0gPSByZXNwb25zZS5hdXRvRmlsbFthZnBdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBnZXRGaWVsZHNNYXAoKSB7XG4gICAgaWYgKHRoaXMubWV0YS5maWVsZHNNYXApIHtcbiAgICAgIHRoaXMuZmllbGRzTWFwID0gdGhpcy5tZXRhLmZpZWxkc01hcDtcbiAgICAgIHRoaXMubWFya0NvbnRhY3RhYmxlcygpO1xuICAgICAgdGhpcy5idWlsZENvbnRhY3RzU3VnZ2VzdGlvbnMoKTtcbiAgICAgIGlmICghdGhpcy5yZXNvdXJjZS5leHRlcm5hbElkKSB7XG4gICAgICAgIHRoaXMuYnVpbGRTdWJqZWN0VGVtcGxhdGUoKTtcbiAgICAgICAgdGhpcy5leGVjVHJhbnNmb3JtZXIoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tZXRhTXNnU2VydmljZS5zZW5kTWVzc2FnZShcbiAgICAgICAgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsXG4gICAgICAgIHsgYWN0aW9uOiAnZmllbGRzTWFwJywgaW50ZWdyYXRpb246IHRoaXMuaW50ZWdyYXRpb25Db2RlLCByZXNvdXJjZVR5cGU6IHRoaXMucmVzb3VyY2VUeXBlIH0sXG4gICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgIGlmICghcmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRzTWFwID0gcmVzcG9uc2UuZmllbGRzTWFwO1xuICAgICAgICAgICAgdGhpcy5tYXJrQ29udGFjdGFibGVzKCk7XG4gICAgICAgICAgICB0aGlzLmJ1aWxkQ29udGFjdHNTdWdnZXN0aW9ucygpO1xuICAgICAgICAgICAgaWYgKCF0aGlzLnJlc291cmNlLmV4dGVybmFsSWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5idWlsZFN1YmplY3RUZW1wbGF0ZSgpO1xuICAgICAgICAgICAgICB0aGlzLmV4ZWNUcmFuc2Zvcm1lcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnTm8gZmllbGRzIG1hcCcsIHRoaXMuaW50ZWdyYXRpb25Db2RlLCB0aGlzLnJlc291cmNlVHlwZSwgcmVzcG9uc2UuZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBvcGVuUmVzb3VyY2VNZW51KCkge1xuICAgIHRoaXMucmVzb3VyY2VNZW51VmlzaWJsZSA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMub25NZW51Q2xpY2tvdXQpO1xuICAgIH0sIDEwKTtcbiAgfVxuXG4gIGNsb3NlKHJlc3VsdD8pIHtcbiAgICB0aGlzLmRvbmUuZW1pdChyZXN1bHQpO1xuICB9XG5cbiAgc2hvd1BhcnNlZEVycm9yKHJlc291cmNlRm9ybSwgcGFyc2VkRXJyb3IpIHtcbiAgICB0aGlzLmZvcm1FcnJvcnMgPSBwYXJzZWRFcnJvci5tZXNzYWdlIHx8ICdUaGVyZSBpcyBhIHByb2JsZW0gd2l0aCBvbmUgb3IgbW9yZSBmaWVsZHMnO1xuICAgIGlmIChwYXJzZWRFcnJvci5lcnJvcnMgJiYgcGFyc2VkRXJyb3IuZXJyb3JzLmxlbmd0aCkge1xuICAgICAgdGhpcy5mb3JtRXJyb3JzICs9IGAgKCR7cGFyc2VkRXJyb3IuZXJyb3JzLm1hcChlID0+IGUubWVzc2FnZSkuam9pbignLCAnKX0pYDtcbiAgICAgIGZvciAoY29uc3QgcGUgb2YgcGFyc2VkRXJyb3IuZXJyb3JzKSB7XG4gICAgICAgIGlmIChyZXNvdXJjZUZvcm0uY29udHJvbHNbcGUuZmllbGRdKSB7XG4gICAgICAgICAgcmVzb3VyY2VGb3JtLmNvbnRyb2xzW3BlLmZpZWxkXS5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlLCBjdXN0b206IHBlLm1lc3NhZ2UgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBjb25zdCBmaXJzdEludmFsaWQ6IEhUTUxJbnB1dEVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLlZsdC1mb3JtX19lbGVtZW50LS1lcnJvciAubWFpbjpub3QoLnN0YW5kYWxvbmUpJyk7XG4gICAgICAgIGlmIChmaXJzdEludmFsaWQpIHtcbiAgICAgICAgICBmaXJzdEludmFsaWQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgc3VibWl0KHJlc291cmNlRm9ybSkge1xuICAgIGRlbGV0ZSB0aGlzLmZvcm1FcnJvcnM7XG4gICAgcmVzb3VyY2VGb3JtLmZvcm0uc3VibWl0dGVkID0gdHJ1ZTtcbiAgICBpZiAocmVzb3VyY2VGb3JtLnZhbGlkKSB7XG4gICAgICB0aGlzLmJ1c3kgPSB0cnVlO1xuICAgICAgaWYgKHRoaXMubWV0YUNvbnRleHQudmdpcEV2ZW50SWQpIHtcbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsLl92Z2lzKSB7XG4gICAgICAgICAgdGhpcy5tb2RlbC5fdmdpcyA9IHtcbiAgICAgICAgICAgIGNvbm5lY3RvcjogdGhpcy5pbnRlZ3JhdGlvbkNvZGUsXG4gICAgICAgICAgICByZXNvdXJjZVR5cGU6IHRoaXMucmVzb3VyY2VUeXBlXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1vZGVsLl92Z2lzLmxheW91dElkID0gdGhpcy5jdXJyZW50TGF5b3V0SWQ7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgIC8vIHRoaXMubW9kZWwuX3ZnaXMudGltZVpvbmVPZmZzZXRJbk1pbnV0ZXMgPSAwOyAvLyB3ZSBhcmUgbm90IHByb3ZpZGluZyB0aW1lem9uZSBhbnltb3JlIChhcyBWMyksIGluc3RlYWQgdGhlICd0aW1lJyBhbmQgJ2RhdGUnIG9iamVjdHMgYXJlIGNvbnZlcnRlZCBzbyB0aGUgVVRDIHRpbWUvZGF0ZSBpcyBjb3JyZWN0XG4gICAgICAgIHRoaXMubW9kZWwuX3ZnaXMuZXZlbnRJZCA9IHRoaXMubWV0YUNvbnRleHQudmdpcEV2ZW50SWQ7XG4gICAgICAgIC8qIGVzbGludC1lbmFibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUgKi9cbiAgICAgIH1cbiAgICAgIHRoaXMuc2VydmljZS5zYXZlKHRoaXMubW9kZWwpLnN1YnNjcmliZSgocmVzdWx0OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5tb2RlbCA9IHJlc3VsdDtcbiAgICAgICAgdGhpcy5yZXNvdXJjZS5leHRlcm5hbElkID0gcmVzdWx0Ll92Z2lzLmV4dGVybmFsSWQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZXJzY29yZS1kYW5nbGVcbiAgICAgICAgdGhpcy5pc1BlcnNpc3RlbnQgPSB0cnVlO1xuICAgICAgICB0aGlzLmNsb3NlKHJlc3VsdCk7XG4gICAgICAgIHRoaXMuZWRpdCA9IGZhbHNlO1xuICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgfSwgKGVycm9yUmVzdWx0KSA9PiB7XG4gICAgICAgIGlmICgoZXJyb3JSZXN1bHQuc3RhdHVzID09PSA0MjIgJiYgZXJyb3JSZXN1bHQuZXJyb3IgJiYgIWVycm9yUmVzdWx0LmVycm9yLmVycm9ycyAmJiBlcnJvclJlc3VsdC5lcnJvci5pbnRlZ3JhdGlvbkVycm9yKVxuICAgICAgICAgIHx8IChlcnJvclJlc3VsdC5lcnJvciAmJiBlcnJvclJlc3VsdC5lcnJvci5lcnJvcnMgJiYgZXJyb3JSZXN1bHQuZXJyb3IuZXJyb3JzLmxlbmd0aCAmJiAhZXJyb3JSZXN1bHQuZXJyb3IuZXJyb3JzWzBdLmZpZWxkKVxuICAgICAgICAgIC8vIGJhY2tlbmQgaW1wbGVtZW50ZWQgZXJyb3IgcGFyc2luZyBidXQgYnJva2VuIFZHSVMtNzM2NlxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmZvcm1FcnJvcnMgPSAnVGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggb25lIG9yIG1vcmUgZmllbGRzJztcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5tZXRhTXNnU2VydmljZS5zZW5kTWVzc2FnZShcbiAgICAgICAgICAgICAgdGhpcy5pbnRlZ3JhdGlvbkNvZGUsXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdwYXJzZUVycm9yTWVzc2FnZScsXG4gICAgICAgICAgICAgICAgaW50ZWdyYXRpb25Db2RlOiB0aGlzLmludGVncmF0aW9uQ29kZSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IGVycm9yUmVzdWx0LmVycm9yLnJlc291cmNlVHlwZSxcbiAgICAgICAgICAgICAgICByYXdFcnJvcjogZXJyb3JSZXN1bHQuZXJyb3IuaW50ZWdyYXRpb25FcnJvcixcbiAgICAgICAgICAgICAgICBwcm9maWxlOiB0aGlzLm1ldGFDb250ZXh0LnByb2ZpbGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlLnRvVXBwZXJDYXNlKCldXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5wYXJzZWRFcnJvcikge1xuICAgICAgICAgICAgICAgICAgdGhpcy5zaG93UGFyc2VkRXJyb3IocmVzb3VyY2VGb3JtLCByZXNwb25zZS5wYXJzZWRFcnJvcik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlcnNjb3JlLWRhbmdsZVxuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignTm8gZXJyb3IgcGFyc2VyIGZvcicsIHRoaXMuaW50ZWdyYXRpb25Db2RlLCBlcnJvclJlc3VsdC5lcnJvci5pbnRlZ3JhdGlvbkVycm9yKTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUVycm9ycyA9IGVycm9yUmVzdWx0LmVycm9yO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCcuLi4uJywgZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZXJyb3JSZXN1bHQuc3RhdHVzID09PSA0MjIpIHtcbiAgICAgICAgICB0aGlzLnNob3dQYXJzZWRFcnJvcihyZXNvdXJjZUZvcm0sIGVycm9yUmVzdWx0LmVycm9yKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZvcm1FcnJvcnMgPSBlcnJvclJlc3VsdC5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgICBkZWxldGUgdGhpcy5idXN5O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZm9ybUVycm9ycyA9IE9iamVjdC5rZXlzKHJlc291cmNlRm9ybS5jb250cm9scylcbiAgICAgICAgLmZpbHRlcigoYykgPT4gcmVzb3VyY2VGb3JtLmNvbnRyb2xzW2NdLmludmFsaWQpXG4gICAgICAgIC5tYXAoKGYpID0+ICh0aGlzLm5pY2VGaWVsZHNbZl0gPyAodGhpcy5uaWNlRmllbGRzW2ZdLmxhYmVsIHx8IGYpIDogZikpLmpvaW4oJywgJyk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSBgZm9ybVtuYW1lPVwiJHt0aGlzLnJlc291cmNlVHlwZX1cIl0gLlZsdC1mb3JtX19lbGVtZW50LS1lcnJvciAubWFpbjpub3QoLnN0YW5kYWxvbmUpYDtcbiAgICAgICAgY29uc3QgZmlyc3RJbnZhbGlkOiBIVE1MSW5wdXRFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgICAgICBpZiAoZmlyc3RJbnZhbGlkKSB7XG4gICAgICAgICAgZmlyc3RJbnZhbGlkLmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyRm9ybUVycm9ycygpIHtcbiAgICBkZWxldGUgdGhpcy5mb3JtRXJyb3JzO1xuICB9XG5cbiAgcHJpdmF0ZSBvbk1lbnVDbGlja291dCA9ICgpID0+IHtcbiAgICBkZWxldGUgdGhpcy5yZXNvdXJjZU1lbnVWaXNpYmxlO1xuICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5vbk1lbnVDbGlja291dCk7XG4gIH07XG5cbiAgcHJpdmF0ZSBzdWdnZXN0RmllbGRQcm9wZXJ0eShrZXksIHZhbHVlKSB7XG4gICAgaWYgKGtleSAmJiB2YWx1ZSkge1xuICAgICAgY29uc3QgZmllbGROYW1lcyA9IHRoaXMuZmllbGROYW1lcztcbiAgICAgIGlmICh0aGlzLm1vZGVsKSB7XG4gICAgICAgIGNvbnN0IG5lc3RNYXRjaCA9IGtleS5tYXRjaCgvKFxcUyspXFxbXFxkXFxdXFwuKFxcUyspLyk7XG4gICAgICAgIGlmIChuZXN0TWF0Y2ggJiYgZmllbGROYW1lcy5pbmRleE9mKG5lc3RNYXRjaFsxXSkgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5tb2RlbFtuZXN0TWF0Y2hbMV1dID0gW107XG4gICAgICAgICAgY29uc3QgbmVzdEtleXM6IGFueSA9IHt9O1xuICAgICAgICAgIG5lc3RLZXlzW25lc3RNYXRjaFsyXV0gPSB2YWx1ZTtcbiAgICAgICAgICB0aGlzLm1vZGVsW25lc3RNYXRjaFsxXV0ucHVzaChuZXN0S2V5cyk7XG4gICAgICAgIH0gZWxzZSBpZiAoZmllbGROYW1lcy5pbmRleE9mKGtleSkgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5tb2RlbFtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGV4ZWNUcmFuc2Zvcm1lcigpIHtcbiAgICBpZiAodGhpcy5tZXRhQ29udGV4dCAmJiB0aGlzLmZpZWxkc01hcCkge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3VnZ2VzdEZpZWxkUHJvcGVydHkodGhpcy5maWVsZHNNYXAucGhvbmVOdW1iZXIsIHRoaXMubWV0YUNvbnRleHQucGhvbmVOdW1iZXIpO1xuICAgICAgICBpZiAodGhpcy5maWVsZHNNYXAuZmlyc3ROYW1lIHx8IHRoaXMuZmllbGRzTWFwLmxhc3ROYW1lKSB7XG4gICAgICAgICAgY29uc3QgbmFtZXMgPSAodGhpcy5tZXRhQ29udGV4dC5kaXNwbGF5TmFtZSB8fCAnJykuc3BsaXQoJyAnKTtcbiAgICAgICAgICB0aGlzLnN1Z2dlc3RGaWVsZFByb3BlcnR5KHRoaXMuZmllbGRzTWFwLmZpcnN0TmFtZSwgbmFtZXNbMF0pO1xuICAgICAgICAgIHRoaXMuc3VnZ2VzdEZpZWxkUHJvcGVydHkodGhpcy5maWVsZHNNYXAubGFzdE5hbWUsIG5hbWVzWzFdKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpZWxkc01hcC5kaXNwbGF5TmFtZSkge1xuICAgICAgICAgIHRoaXMuc3VnZ2VzdEZpZWxkUHJvcGVydHkodGhpcy5maWVsZHNNYXAuZGlzcGxheU5hbWUsIHRoaXMubWV0YUNvbnRleHQuZGlzcGxheU5hbWUpO1xuICAgICAgICB9XG4gICAgICB9LCAxMDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbWFya0NvbnRhY3RhYmxlcygpIHtcbiAgICBpZiAodGhpcy5maWVsZHNNYXAuY29udGFjdGFibGVzICYmIHRoaXMuZmllbGRzTWFwLmNvbnRhY3RhYmxlcy5sZW5ndGgpIHtcbiAgICAgIGZvciAoY29uc3QgYyBvZiB0aGlzLmZpZWxkc01hcC5jb250YWN0YWJsZXMpIHtcbiAgICAgICAgY29uc3QgZmllbGQgPSB0aGlzLm5pY2VGaWVsZHNbY107XG4gICAgICAgIGlmIChmaWVsZCkge1xuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShmaWVsZCwgJyRpc0NvbnRhY3RhYmxlJywge1xuICAgICAgICAgICAgdmFsdWU6IHRydWUsXG4gICAgICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFN1YmplY3RUZW1wbGF0ZSgpIHtcbiAgICBpZiAoIXRoaXMubW9kZWxbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0gJiYgdGhpcy5maWVsZHNNYXAuc3ViamVjdCAmJiB0aGlzLm5pY2VGaWVsZHNbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0pIHtcbiAgICAgIGxldCBzdWJqZWN0VGVtcGxhdGU6IHN0cmluZztcbiAgICAgIGlmICh0aGlzLm5pY2VGaWVsZHNbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0uZGVmYXVsdCkge1xuICAgICAgICBzdWJqZWN0VGVtcGxhdGUgPSB0aGlzLm5pY2VGaWVsZHNbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0uZGVmYXVsdC5pZCB8fCB0aGlzLm5pY2VGaWVsZHNbdGhpcy5maWVsZHNNYXAuc3ViamVjdF0uZGVmYXVsdDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5tZXRhQ29udGV4dC5wcm9maWxlc1t0aGlzLmludGVncmF0aW9uQ29kZV0pIHtcbiAgICAgICAgY29uc3QgcHJvZmlsZSA9IHRoaXMubWV0YUNvbnRleHQucHJvZmlsZXNbdGhpcy5pbnRlZ3JhdGlvbkNvZGVdIHx8IHt9O1xuICAgICAgICBzdWJqZWN0VGVtcGxhdGUgPSBwcm9maWxlLmRlZmF1bHRTdWJqZWN0ID9cbiAgICAgICAgICBwcm9maWxlLmRlZmF1bHRTdWJqZWN0WygodGhpcy5tZXRhQ29udGV4dC5jb250ZXh0IHx8ICdDQUxMJykudHlwZSB8fCAnJykudG9VcHBlckNhc2UoKV0gOlxuICAgICAgICAgIHByb2ZpbGUuYWN0aXZpdHlEZWZhdWx0U3ViamVjdFRlbXBsYXRlO1xuICAgICAgfVxuICAgICAgaWYgKHN1YmplY3RUZW1wbGF0ZSkge1xuICAgICAgICB0aGlzLm1vZGVsW3RoaXMuZmllbGRzTWFwLnN1YmplY3RdID0gdGVtcGxhdGVCdWlsZGVyKHRoaXMubWV0YUNvbnRleHQsIHN1YmplY3RUZW1wbGF0ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbnRhY3RzU3VnZ2VzdGlvbnMoKSB7XG4gICAgLy8gbGV0IGhhc0RlZmF1bHRDb250YWN0ID0gZmFsc2U7XG4gICAgaWYgKHRoaXMubWV0YUNvbnRleHQuY29udGFjdGFibGVzW3RoaXMuaW50ZWdyYXRpb25Db2RlXSAmJiB0aGlzLm1ldGEubGF5b3V0ICYmIHRoaXMubWV0YS5sYXlvdXQuc2VjdGlvbnMpIHtcbiAgICAgIGZvciAoY29uc3QgcyBvZiB0aGlzLm1ldGEubGF5b3V0LnNlY3Rpb25zKSB7XG4gICAgICAgIGZvciAoY29uc3QgZiBvZiAocy5maWVsZHMgfHwgW10pKSB7XG4gICAgICAgICAgaWYgKGYudHlwZSA9PT0gJ3JlZmVyZW5jZScpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlZlR5cGVzID0gKGYucmVmZXJlbmNlLmxlbmd0aCA/IGYucmVmZXJlbmNlIDogW2YucmVmZXJlbmNlXSkubWFwKHIgPT4gci5uYW1lKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgYyBvZiB0aGlzLm1ldGFDb250ZXh0LmNvbnRhY3RhYmxlc1t0aGlzLmludGVncmF0aW9uQ29kZV0pIHtcbiAgICAgICAgICAgICAgaWYgKHJlZlR5cGVzLmluZGV4T2YoYy5yZXNvdXJjZVR5cGUgfHwgYy50eXBlKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWYuc3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgIGYuc3VnZ2VzdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgZi5zdWdnZXN0aW9ucyA9IGYuc3VnZ2VzdGlvbnMuZmlsdGVyKHNnID0+ICFzZy5hdXRvKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IHRMYWJlbCA9IGMuZGlzcGxheU5hbWUgfHwgYy5uYW1lO1xuICAgICAgICAgICAgICAgIGlmIChjLnBob25lTnVtYmVycykge1xuICAgICAgICAgICAgICAgICAgdExhYmVsICs9ICgnIOKchicgKyBjLnBob25lTnVtYmVycy5tYXAocCA9PiBwLnBob25lTnVtYmVyKS5qb2luKCcsJykpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmLnN1Z2dlc3Rpb25zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgaWQ6IGMuZXh0ZXJuYWxJZCB8fCBjLmlkZW50aWZpZXIgfHwgYy5pZCxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiB0TGFiZWwsXG4gICAgICAgICAgICAgICAgICB0eXBlOiBjLnJlc291cmNlVHlwZSB8fCBjLnR5cGUsXG4gICAgICAgICAgICAgICAgICBhdXRvOiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgodGhpcy5maWVsZHNNYXAuY29udGFjdGFibGVzIHx8IFtdKS5pbmRleE9mKGYubmFtZSkgIT09IC0xKSB7IC8vIGV2YWx1YXRlIHVzYWJpbGl0eT9cbiAgICAgICAgICAgICAgZi5hbHdheXNWaXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGlmIChcbiAgICAgICAgICAgIC8vICAgIWhhc0RlZmF1bHRDb250YWN0ICYmIHRoaXMubWV0YUNvbnRleHQuZGVmYXVsdENvbnRhY3RhYmxlc1t0aGlzLmludGVncmF0aW9uQ29kZV1cbiAgICAgICAgICAgIC8vICAgJiYgcmVmVHlwZXMuaW5kZXhPZih0aGlzLm1ldGFDb250ZXh0LmRlZmF1bHRDb250YWN0YWJsZXNbdGhpcy5pbnRlZ3JhdGlvbkNvZGVdLnR5cGUpICE9PSAtMVxuICAgICAgICAgICAgLy8gKSB7XG4gICAgICAgICAgICAvLyAgIHRoaXMucmVzb3VyY2VbZi5uYW1lXSA9IHRoaXMubWV0YUNvbnRleHQuZGVmYXVsdENvbnRhY3RhYmxlc1t0aGlzLmludGVncmF0aW9uQ29kZV07XG4gICAgICAgICAgICAvLyAgIGhhc0RlZmF1bHRDb250YWN0ID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIH0gZWxzZSBpZiAoIWhhc0RlZmF1bHRDb250YWN0ICYmIHRoaXMuZmllbGRzTWFwLmNvbnRhY3RhYmxlcyAmJiBmLnN1Z2dlc3Rpb25zICYmIGYuc3VnZ2VzdGlvbnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAvLyAgIGlmICh0aGlzLmZpZWxkc01hcC5jb250YWN0YWJsZXMuaW5kZXhPZihmLm5hbWUpICE9PSAtMSAmJiAhZi5kZWZhdWx0KSB7XG4gICAgICAgICAgICAvLyAgICAgZi5kZWZhdWx0ID0gZi5zdWdnZXN0aW9uc1swXTtcbiAgICAgICAgICAgIC8vICAgICBoYXNEZWZhdWx0Q29udGFjdCA9IHRydWU7XG4gICAgICAgICAgICAvLyAgIH1cbiAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGFjdHNTdWdnZXN0aW9uc0RvbmUgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlUaGVtZSgpIHtcbiAgICBjb25zdCBtZXRhVGhlbWUgPSB0aGlzLnRoZW1lID09PSAnZGFyaycgPyBtZXRhRGFyayA6IG1ldGFMaWdodDtcbiAgICBjb25zb2xlLmxvZygncmVzb3VyY2UgYXBwbHkgdGhlbWUnLCB0aGlzLnRoZW1lKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtZXRhVGhlbWUucHJvcGVydGllcykpIHtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIG1ldGFUaGVtZS5wcm9wZXJ0aWVzW2tleV0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9yY2VVaVVwZGF0ZSgpIHsgLy8gaU9TIHdlYnZpZXcgZG9lcyBub3QgdXBkYXRlIHRoZSBVSSBhZnRlciBhc3ljIGNoYW5nZXMuIFRlbXAgZml4IDooXG4gICAgLy8gdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIGNvbnN0IGUgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnRzJyk7XG4gICAgZS5pbml0RXZlbnQoJ2NsaWNrJywgdHJ1ZSwgZmFsc2UpO1xuICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5kaXNwYXRjaEV2ZW50KGUpO1xuICB9XG59XG4iLCI8ZGl2ICpuZ0lmPSdnZW5lcmFsRXJyb3InIGNsYXNzPVwiVmx0LWNhbGxvdXQgVmx0LWNhbGxvdXQtLWNyaXRpY2FsXCIgc3R5bGU9J292ZXJmbG93OiBhdXRvOyBtYXJnaW46IDIwcHg7Jz5cblx0PGk+PC9pPlxuXHQ8ZGl2IGNsYXNzPVwiVmx0LWNhbGxvdXRfX2NvbnRlbnRcIj5cblx0XHQ8cD57e2dlbmVyYWxFcnJvcn19PC9wPlxuXHQ8L2Rpdj5cbjwvZGl2PlxuPGRpdiAqbmdJZj0nIW1ldGEnIGNsYXNzPVwiVmx0LXByb2dyZXNzXCI+XG5cdDxkaXYgY2xhc3M9XCJWbHQtcHJvZ3Jlc3NfX2JhclwiIFtuZ0NsYXNzXT1cInsgbG9hZGluZzogbWV0YUxvYWRpbmcgfVwiIHJvbGU9XCJwcm9ncmVzc2JhclwiIGFyaWEtdmFsdWVtaW49XCIwXCIgYXJpYS12YWx1ZXRleHQ9XCJMb2FkaW5nIE1ldGFkYXRhXCIgYXJpYS12YWx1ZW1heD1cIjEwMFwiPjwvZGl2PlxuPC9kaXY+XG48Zm9ybSBbdmdpcE1ldGFGb3JtQXV0b2ZvY3VzXT0nIXJlc291cmNlIHx8ICFyZXNvdXJjZS5leHRlcm5hbElkJyAqbmdJZj0nbWV0YSAmJiAhZ2VuZXJhbEVycm9yJyAjcmVzb3VyY2VGb3JtPVwibmdGb3JtXCIgW25hbWVdPSdyZXNvdXJjZS5yZXNvdXJjZVR5cGUnIChuZ1N1Ym1pdCk9J3N1Ym1pdChyZXNvdXJjZUZvcm0pJyBub3ZhbGlkYXRlPlxuXHQ8ZGl2IGNsYXNzPSdmb3JtLWNvbnRlbnQnIHN0eWxlPSdvdmVyZmxvdzogaGlkZGVuOyc+XG5cdFx0PGRpdiBbbmdDbGFzc109XCJ7ICdWbHQtY2FsbG91dC0tZGlzbWlzc2VkJzogIWZvcm1FcnJvcnMgfVwiIGNsYXNzPVwiVmx0LWNhbGxvdXQgVmx0LWNhbGxvdXQtLWJhbm5lciBWbHQtY2FsbG91dC0tY3JpdGljYWxcIj5cblx0XHRcdDxpPjwvaT5cblx0XHRcdDxkaXYgY2xhc3M9XCJWbHQtY2FsbG91dF9fY29udGVudFwiIHN0eWxlPVwibWFyZ2luLXRvcDogYXV0bztcIj5cblx0XHRcdFx0PHA+VGhlcmUgaXMgYSBwcm9ibGVtIHdpdGggb25lIG9yIG1vcmUgZmllbGRzPC9wPlxuXHRcdFx0XHQ8c21hbGwgc3R5bGU9J2ZvbnQtd2VpZ2h0OiA2MDA7IGZvbnQtc2l6ZTogMS4wZW07JyAqbmdJZj0nZm9ybUVycm9ycyc+e3sgZm9ybUVycm9ycy5tZXNzYWdlIHx8IGZvcm1FcnJvcnMgfX08L3NtYWxsPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8YnV0dG9uIHR5cGU9J2J1dHRvbicgY2xhc3M9XCJWbHQtY2FsbG91dF9fZGlzbWlzc1wiIChjbGljayk9J2NsZWFyRm9ybUVycm9ycygpJyBhcmlhLWxhYmVsPVwiRGlzbWlzc1wiPjwvYnV0dG9uPlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJWbHQtY2FyZF9fY29udGVudFwiIHN0eWxlPSdtaW4taGVpZ2h0OiA0MHB4Oyc+XG5cdFx0XHQ8dmdpcC1tZXRhLWxheW91dCAqbmdJZj0nZWRpdCcgW21ldGFdPSdtZXRhLmxheW91dCcgW3Jlc291cmNlXT0nbW9kZWwnIFtwcmV2aWV3XT0nZmFsc2UnIFtpbnRlZ3JhdGlvbl09J21ldGEuaW50ZWdyYXRpb24nIFt0eXBlXT0ncmVzb3VyY2UucmVzb3VyY2VUeXBlJyB0aGVtZT0naW5oZXJpdCc+PC92Z2lwLW1ldGEtbGF5b3V0PlxuXHRcdFx0PHZnaXAtbWV0YS1sYXlvdXQgKm5nSWY9JyFlZGl0JyBbbWV0YV09J21ldGEubGF5b3V0JyBbcmVzb3VyY2VdPSdtb2RlbCcgW3ByZXZpZXddPSd0cnVlJyBbaW50ZWdyYXRpb25dPSdtZXRhLmludGVncmF0aW9uJyBbdHlwZV09J3Jlc291cmNlLnJlc291cmNlVHlwZScgdGhlbWU9J2luaGVyaXQnPjwvdmdpcC1tZXRhLWxheW91dD5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG5cdDxkaXYgY2xhc3M9XCJWbHQtY2FyZF9fZm9vdGVyXCI+XG5cdFx0PGJ1dHRvbiBjbGFzcz1cIlZsdC1idG4gVmx0LWJ0bi0tc2Vjb25kYXJ5IFZsdC1idG4tLWFwcCBWbHQtYnRuLS1vdXRsaW5lXCIgdHlwZT0nYnV0dG9uJyBhcmlhLWxhYmVsPSdDYW5jZWwnIChjbGljayk9J2Nsb3NlKCknPlxuXHRcdFx0e3sgZWRpdCA/ICdDYW5jZWwnIDogJ0Nsb3NlJyB9fVxuXHRcdDwvYnV0dG9uPlxuXHRcdDxidXR0b24gKm5nSWY9J2VkaXQnIGNsYXNzPVwiVmx0LWJ0biBWbHQtYnRuLS1hcHBcIiBbbmdDbGFzc109XCJ7ICdWbHQtYnRuLS1wcmltYXJ5JzogaXNQZXJzaXN0ZW50LCAnVmx0LWJ0bi0tc2Vjb25kYXJ5JzogIWlzUGVyc2lzdGVudCB9XCIgdHlwZT0nc3VibWl0Jz5cblx0XHRcdHt7IChyZXNvdXJjZSAmJiByZXNvdXJjZS5leHRlcm5hbElkKSA/ICdVcGRhdGUnIDogJ0NyZWF0ZScgfX1cblx0XHQ8L2J1dHRvbj5cblx0XHQ8YnV0dG9uIChjbGljayk9J3NldEVkaXRNb2RlKCknICpuZ0lmPSchZWRpdCAmJiBpc0VkaXRhYmxlJyBbZGlzYWJsZWRdPSchaXNFZGl0YWJsZScgY2xhc3M9XCJWbHQtYnRuIFZsdC1idG4tLWFwcCBWbHQtYnRuLS1wcmltYXJ5XCIgdHlwZT0nYnV0dG9uJyBhcmlhLWxhYmVsPSdFZGl0Jz5cblx0XHRcdEVkaXRcblx0XHQ8L2J1dHRvbj5cblx0XHQ8ZGl2IHN0eWxlPSdtYXJnaW4tcmlnaHQ6IDhweDsgZmxleDogMTsnPlxuXHRcdFx0PGRpdiAqbmdJZj0nbWV0YS5hdmFpbGFibGVMYXlvdXRzICYmIG1ldGEuYXZhaWxhYmxlTGF5b3V0cy5sZW5ndGgnIGNsYXNzPVwiVmx0LWZvcm1fX2VsZW1lbnQgVmx0LWZvcm1fX2VsZW1lbnQtLWJpZ1wiIHN0eWxlPSdwYWRkaW5nOiAwOyBtYXJnaW46IC04cHggLTE4cHggLThweCAwOyc+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJWbHQtc2VsZWN0XCI+XG5cdFx0XHRcdFx0PGxhYmVsIHN0eWxlPSdhbGw6IGluaGVyaXQ7Jz5cblx0XHRcdFx0XHRcdDxzZWxlY3Qgc3R5bGU9J2JvcmRlcjogMDsgbWFyZ2luLXRvcDogM3B4OyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsnIChjaGFuZ2UpPSdjaGFuZ2VMYXlvdXQoKScgWyhuZ01vZGVsKV09J2N1cnJlbnRMYXlvdXRJZCcgW25nTW9kZWxPcHRpb25zXT0neyBzdGFuZGFsb25lOiB0cnVlIH0nIFtkaXNhYmxlZF09J2lzUGVyc2lzdGVudCc+XG5cdFx0XHRcdFx0XHRcdDxvcHRpb24gc2VsZWN0ZWQgZGlzYWJsZWQ+U2VsZWN0IGxheW91dDwvb3B0aW9uPlxuXHRcdFx0XHRcdFx0XHQ8b3B0aW9uICpuZ0Zvcj0nbGV0IGxheW91dCBvZiBtZXRhLmF2YWlsYWJsZUxheW91dHMnIFtuZ1ZhbHVlXT0nbGF5b3V0LmlkJz57e2xheW91dC5uYW1lfX08L29wdGlvbj5cblx0XHRcdFx0XHRcdDwvc2VsZWN0PlxuXHRcdFx0XHRcdFx0PGxhYmVsPkxheW91dDwvbGFiZWw+IDwhLS0gZXNsaW50LWRpc2FibGUtbGluZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvbGFiZWwtaGFzLWFzc29jaWF0ZWQtY29udHJvbCAtLT5cblx0XHRcdFx0XHQ8L2xhYmVsPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHRcdDxkaXYgY2xhc3M9XCJWbHQtZHJvcGRvd24gcmVzb3VyY2UtbWVudVwiIFtuZ0NsYXNzXT1cInsgJ1ZsdC1kcm9wZG93bi0tZXhwYW5kZWQnOiByZXNvdXJjZU1lbnVWaXNpYmxlIH1cIiBzdHlsZT0nbWFyZ2luLWxlZnQ6IDJweDsnPlxuXHRcdFx0PGRpdiBjbGFzcz1cIlZsdC1kcm9wZG93bl9fcGFuZWxcIiBzdHlsZT0nYm90dG9tOiA0MHB4OyByaWdodDogLTRweDsgdG9wOiBpbml0aWFsOyc+XG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJWbHQtZHJvcGRvd25fX3BhbmVsX19jb250ZW50XCI+XG5cdFx0XHRcdFx0PGEgaHJlZj0nIycgY2xhc3M9XCJWbHQtZHJvcGRvd25fX2xpbmtcIiAoY2xpY2spPSdsb2FkTWV0YWRhdGEoY3VycmVudExheW91dElkLCB0cnVlLCAkZXZlbnQpJz5cblx0XHRcdFx0XHRcdDxkaXY+XG5cdFx0XHRcdFx0XHRcdDxzdmcgY2xhc3M9J1ZsdC1pY29uIFZsdC1pY29uLS1zbWFsbGVyJz48dXNlIHhsaW5rOmhyZWY9XCJ2b2x0YS92b2x0YS1pY29ucy5zdmcjVmx0LWljb24tcmVmcmVzaFwiLz48L3N2Zz4mbmJzcDsmbmJzcDtSZWZyZXNoIG1ldGFkYXRhXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHQ8L2E+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwiVmx0LWRyb3Bkb3duX190cmlnZ2VyXCI+XG5cdFx0XHRcdDxidXR0b24gdHlwZT0nYnV0dG9uJyAoY2xpY2spPSdvcGVuUmVzb3VyY2VNZW51KCknIGNsYXNzPVwiVmx0LWJ0biBWbHQtYnRuLS1saW5rXCIgYXJpYS1sYWJlbD0nUmVzb3VyY2UgbWVudSc+XG5cdFx0XHRcdFx0PHN2ZyBjbGFzcz0nVmx0LWljb24gVmx0LWljb24tLXNtYWxsJyBzdHlsZT0nbWFyZ2luOiAwOyc+PHVzZSB4bGluazpocmVmPVwidm9sdGEvdm9sdGEtaWNvbnMuc3ZnI1ZsdC1pY29uLW1vcmUtdi1uZWdhdGl2ZVwiLz48L3N2Zz5cblx0XHRcdFx0PC9idXR0b24+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Rpdj5cblx0PC9kaXY+XG48L2Zvcm0+XG48ZGl2IGNsYXNzPSdidXN5LW1hc2snIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBidXN5IH1cIj5cblx0PGRpdiBzdHlsZT0naGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsnPlxuXHRcdDxkaXYgY2xhc3M9XCJWbHQtc3Bpbm5lclwiPjwvZGl2PlxuXHQ8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -40,7 +40,7 @@ export class MetaMsgService {
|
|
|
40
40
|
let state; // message unique identifier
|
|
41
41
|
do {
|
|
42
42
|
state = new Date().getTime();
|
|
43
|
-
} while (
|
|
43
|
+
} while (this.msgCallbacks[state]);
|
|
44
44
|
this.msgCallbacks[state] = callback; // register message callback
|
|
45
45
|
msg.$state = state;
|
|
46
46
|
providerWorker.postMessage(msg);
|
|
@@ -81,4 +81,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImpo
|
|
|
81
81
|
providedIn: 'root'
|
|
82
82
|
}]
|
|
83
83
|
}], ctorParameters: function () { return [{ type: i1.MetaContextService }]; } });
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvc2VydmljZXMvbWV0YU1zZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVGOzs7RUFHRTtBQUNILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU8zQyxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUFvQixXQUErQjtRQUEvQixnQkFBVyxHQUFYLFdBQVcsQ0FBb0I7UUFGM0MsaUJBQVksR0FBMkIsRUFBRSxDQUFDLENBQUMsNkJBQTZCO1FBQ3hFLGtCQUFhLEdBQWtCLEVBQUUsQ0FBQyxDQUFDLHlDQUF5QztRQTBDNUUsc0JBQWlCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNsQyxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUN6RCxNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztnQkFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLDhCQUE4QjtnQkFDekUsSUFBSSxRQUFRLEVBQUU7b0JBQ1osT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztvQkFDdkIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDcEI7Z0JBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsNkNBQTZDO2FBQy9FO1lBQ0QsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUMsQ0FBQyx3Q0FBd0M7UUFDekUsQ0FBQyxDQUFDO0lBbkRGLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBZ0IsRUFB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QWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEBBdXRob3I6IEFsZXhhbmRlci5WYW5nZWxvdkB2b25hZ2UuY29tXG4gKiBARGF0ZTogMjAxOS0wOS0xOSAxNzozNToxOVxuICogQExhc3QgTW9kaWZpZWQgYnk6IEFsZXhhbmRlci5WYW5nZWxvdkB2b25hZ2UuY29tXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDIwLTA1LTAzIDIxOjMxOjE2XG4gKi9cblxuIC8qXG4gKiBXb3JrZXIgbWVzc2FnZXMgc3lzdGVtcy4gRXZlcnkgaW50ZWdyYXRpb24gbWF5IGV4dGVuZCB0aGUgYmFzZSBmdW5jdGlvbmFsaXR5IGJ5IHJlZ2lzdGVyaW5nIGFuIGludGVncmF0aW9uIHdvcmtlci5cbiAqIFRoaXMgc2VydmljZSBwcm92aWRlcyBzaW5nbGUgcmVzcG9uc2UgZm9yIHRoZSB3b3JrZXIgbWVzc2FnZSByZXF1ZXN0cyBhcyBhIGNhbGxiYWNrLlxuICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1ldGFDb250ZXh0U2VydmljZSB9IGZyb20gJy4uL21ldGFDb250ZXh0JztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWV0YU1zZ1NlcnZpY2Uge1xuICBwcml2YXRlIG1zZ0NhbGxiYWNrczoge1tzdGF0ZTogbnVtYmVyXTogYW55fSA9IHt9OyAvLyBtZXNzYWdlIHN1YnNjcmliZXJzIGhvbGRlclxuICBwcml2YXRlIG1zZ0xpc3RlbmVyZXM6IEFycmF5PHN0cmluZz4gPSBbXTsgLy8gZW5zdXJlIGxpc3RlbmVyIGlzIHJlZ2lzdGVyZCBvbmx5IG9uY2VcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBtZXRhQ29udGV4dDogTWV0YUNvbnRleHRTZXJ2aWNlKSB7XG4gIH1cblxuICBzZW5kTWVzc2FnZShwcm92aWRlcjogc3RyaW5nLCBtc2c6IGFueSwgY2FsbGJhY2s6IChyZXNwb25zZSkgPT4gdm9pZCwgaXNMb25nID0gZmFsc2UpIHtcbiAgICBwcm92aWRlciA9IChwcm92aWRlciB8fCAnJykudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBwcm92aWRlcldvcmtlciA9IHRoaXMubWV0YUNvbnRleHQud29ya2Vyc1twcm92aWRlcl07XG4gICAgaWYgKHByb3ZpZGVyV29ya2VyKSB7XG4gICAgICBpZiAodGhpcy5tc2dMaXN0ZW5lcmVzLmluZGV4T2YocHJvdmlkZXIpKSB7XG4gICAgICAgIHRoaXMubXNnTGlzdGVuZXJlcy5wdXNoKHByb3ZpZGVyKTtcbiAgICAgICAgcHJvdmlkZXJXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMud29ya2VyTXNnTGlzdGVuZXIsIGZhbHNlKTsgLy8gcmVnaXN0ZXIgYSBzaG9ydCB0aW1lIGxpc3RlbmVyXG4gICAgICB9XG4gICAgICBsZXQgc3RhdGU7IC8vIG1lc3NhZ2UgdW5pcXVlIGlkZW50aWZpZXJcbiAgICAgIGRvIHtcbiAgICAgICAgc3RhdGUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgIH0gd2hpbGUgKHRoaXMubXNnQ2FsbGJhY2tzW3N0YXRlXSk7XG5cbiAgICAgIHRoaXMubXNnQ2FsbGJhY2tzW3N0YXRlXSA9IGNhbGxiYWNrOyAvLyByZWdpc3RlciBtZXNzYWdlIGNhbGxiYWNrXG4gICAgICBtc2cuJHN0YXRlID0gc3RhdGU7XG4gICAgICBwcm92aWRlcldvcmtlci5wb3N0TWVzc2FnZShtc2cpO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jYW5jZWxNc2dMaXN0ZW5lcihtc2cuYWN0aW9uLCBzdGF0ZSk7IC8vIGdpdmUgdXAsIHdvcmtlciBkb2VzIG5vdCByZXBsaWVkIG9uIHRpbWVcbiAgICAgICAgY29uc3QgbGlzdGVuZXJJbmRleCA9IHRoaXMubXNnTGlzdGVuZXJlcy5pbmRleE9mKHByb3ZpZGVyKTtcbiAgICAgICAgaWYgKGxpc3RlbmVySW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5tc2dMaXN0ZW5lcmVzLnNwbGljZShsaXN0ZW5lckluZGV4LCAxKTtcbiAgICAgICAgfVxuICAgICAgICBwcm92aWRlcldvcmtlci5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy53b3JrZXJNc2dMaXN0ZW5lcik7IC8vIHJlbW92ZSBsaXN0ZW5lciB3aGVuIGRvbmVcbiAgICAgIH0sIGlzTG9uZyA/IDYwMDAwIDogMjAwMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrKHsgYWN0aW9uOiBtc2cuYWN0aW9uLCBlcnJvcjogYFdvcmtlciAke3Byb3ZpZGVyfSBpcyBub3QgcmVnaXN0ZXJlZGAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjYW5jZWxNc2dMaXN0ZW5lcihhY3Rpb24sIHN0b3JlZFN0YXRlKSB7XG4gICAgY29uc3Qgc3RvcmVkQ2FsbGJhY2sgPSB0aGlzLm1zZ0NhbGxiYWNrc1tzdG9yZWRTdGF0ZV07XG4gICAgaWYgKHN0b3JlZENhbGxiYWNrKSB7XG4gICAgICBzdG9yZWRDYWxsYmFjayh7IGFjdGlvbiwgZXJyb3I6ICdUaW1lb3V0Jywgc3RhdGU6IHN0b3JlZFN0YXRlIH0pOyAvLyBhbHdheXMgcmVwbHkgd2l0aCBzb21ldGhpbmdcbiAgICB9XG4gICAgZGVsZXRlIHRoaXMubXNnQ2FsbGJhY2tzW3N0b3JlZFN0YXRlXTtcbiAgfVxuXG4gIHByaXZhdGUgd29ya2VyTXNnTGlzdGVuZXIgPSAobXNnKSA9PiB7XG4gICAgaWYgKG1zZyAmJiBtc2cuZGF0YSAmJiBtc2cuZGF0YS5hY3Rpb24gJiYgbXNnLmRhdGEuJHN0YXRlKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IG1zZy5kYXRhLiRzdGF0ZTtcbiAgICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5tc2dDYWxsYmFja3Nbc3RhdGVdOyAvLyBvcmlnaW5hbCByZXF1ZXN0ZXIgY2FsbGJhY2tcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBkZWxldGUgbXNnLmRhdGEuJHN0YXRlO1xuICAgICAgICBjYWxsYmFjayhtc2cuZGF0YSk7XG4gICAgICB9XG4gICAgICBkZWxldGUgdGhpcy5tc2dDYWxsYmFja3Nbc3RhdGVdOyAvLyBnZXQgcmlkIG9mIHRoZSBsaXN0ZW5lciBjYWxsYmFjayB3aGVuIGRvbmVcbiAgICB9XG4gICAgdGhpcy5yZW1vdmVFeHBpcmVkTGlzdGVuZXJzKCk7IC8vIHdpcGUgb3V0IHRoZSBleHBpcmVkIGxpc3RlbmVycyBpZiBhbnlcbiAgfTtcblxuICBwcml2YXRlIHJlbW92ZUV4cGlyZWRMaXN0ZW5lcnMoKSB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBmb3IgKGNvbnN0IHN0YXRlIGluIHRoaXMubXNnQ2FsbGJhY2tzKSB7IC8vIGNsZWFudXAgZXhwaXJlZCBsaXN0ZW5lcnMgKDwgMSBtaW4gYWdvKTtcbiAgICAgIGlmIChwYXJzZUludChzdGF0ZSwgMTApIDwgbm93LnNldE1pbnV0ZXMobm93LmdldE1pbnV0ZXMoKSAtIDEpKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLm1zZ0NhbGxiYWNrc1tzdGF0ZV07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -12,7 +12,7 @@ export class MetaReferenceService {
|
|
|
12
12
|
constructor(router) {
|
|
13
13
|
this.router = router;
|
|
14
14
|
this.dialogs = [];
|
|
15
|
-
this.router.events.subscribe((
|
|
15
|
+
this.router.events.subscribe(() => {
|
|
16
16
|
if (this.dialogs.length) {
|
|
17
17
|
for (let d = (this.dialogs.length - 1); d >= 0; d--) {
|
|
18
18
|
this.dialogs[d].onComplete();
|
|
@@ -86,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImpo
|
|
|
86
86
|
providedIn: 'root'
|
|
87
87
|
}]
|
|
88
88
|
}], ctorParameters: function () { return [{ type: i1.Router }]; } });
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvc2VydmljZXMvbWV0YVJlZmVyZW5jZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7R0FLRztBQUVILE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0FBS2xDLE1BQU0sT0FBTyxvQkFBb0I7SUFFL0IsWUFDVSxNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNwQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2hDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7Z0JBQ3ZCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO29CQUNuRCxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO2lCQUM5QjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUgsVUFBVSxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBaUIsRUFBRSxrQkFBbUIsRUFBRSxLQUFjO1FBQ2pJLE1BQU0sVUFBVSxHQUFHLENBQUMsQ0FBQyxTQUFTLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENB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Q3pDO3FCQUFNO29CQUNMLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDakI7Z0JBQ0QsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwQixZQUFZLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDOytHQTNFVSxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZuQixNQUFNOzs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIEBBdXRob3I6IEFsZXhhbmRlci5WYW5nZWxvdkB2b25hZ2UuY29tXG4gKiBARGF0ZTogMjAxOS0wOS0xOSAxNzozNToxOVxuICogQExhc3QgTW9kaWZpZWQgYnk6IEFsZXhhbmRlci5WYW5nZWxvdkB2b25hZ2UuY29tXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDIwLTA1LTAzIDIxOjMxOjQ0XG4gKi9cblxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgTWV0YVJlZmVyZW5jZVNlcnZpY2Uge1xuICBkaWFsb2dzOiBBcnJheTxhbnk+O1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyKSB7XG4gICAgICB0aGlzLmRpYWxvZ3MgPSBbXTtcbiAgICAgIHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dzLmxlbmd0aCkge1xuICAgICAgICAgIGZvciAobGV0IGQgPSAodGhpcy5kaWFsb2dzLmxlbmd0aCAtIDEpOyBkID49IDA7IGQtLSkge1xuICAgICAgICAgICAgdGhpcy5kaWFsb2dzW2RdLm9uQ29tcGxldGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICBvcGVuRGlhbG9nKGNvbXBvbmVudFJlZiwgbWV0YVJlc291cmNlLCBpbnRlZ3JhdGlvbkNvZGUsIHJlZmVyZW5jZSwgcmVzb3VyY2UsIHByZXZpZXc/OiBib29sZWFuLCBwcmVmZXJSZXNvdXJjZVR5cGU/LCB0aGVtZT86IHN0cmluZykge1xuICAgIGNvbnN0IHJlZmVyZW5jZXMgPSAhKHJlZmVyZW5jZSBpbnN0YW5jZW9mIEFycmF5KSA/IFtyZWZlcmVuY2VdIDogcmVmZXJlbmNlLmZpbHRlcigocikgPT4gci5jcmVhdGFibGUgIT09IGZhbHNlKTtcbiAgICBpZiAocmVzb3VyY2UgJiYgcmVzb3VyY2UudHlwZSkge1xuICAgICAgaWYgKCFyZWZlcmVuY2VzLmZpbmQoKGYpID0+IChmLm5hbWUgfHwgZi5yZXNvdXJjZVR5cGUpID09PSAocmVzb3VyY2UucmVzb3VyY2VUeXBlIHx8IHJlc291cmNlLnR5cGUpKSkge1xuICAgICAgICByZWZlcmVuY2VzLnB1c2goe1xuICAgICAgICAgIG5hbWU6IHJlc291cmNlLnJlc291cmNlVHlwZSB8fCByZXNvdXJjZS50eXBlLFxuICAgICAgICAgIHJlc291cmNlVHlwZTogcmVzb3VyY2UucmVzb3VyY2VUeXBlIHx8IHJlc291cmNlLnR5cGUsXG4gICAgICAgICAgbGFiZWw6IHJlc291cmNlLmxhYmVsIHx8IHJlc291cmNlLnJlc291cmNlVHlwZSB8fCByZXNvdXJjZS50eXBlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG1vZGFsT2JzZXJ2YWJsZSA9IG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIGNvbnN0IHJlZkRpYWxvZyA9IGNvbXBvbmVudFJlZi5pbnN0YW5jZTtcbiAgICAgIHJlZkRpYWxvZy5pbnRlZ3JhdGlvbkNvZGUgPSBpbnRlZ3JhdGlvbkNvZGU7XG4gICAgICByZWZEaWFsb2cucmVmZXJlbmNlID0gcmVmZXJlbmNlcztcbiAgICAgIHJlZkRpYWxvZy5yZXNvdXJjZSA9IHJlc291cmNlO1xuICAgICAgcmVmRGlhbG9nLm1ldGFSZXNvdXJjZSA9IG1ldGFSZXNvdXJjZTtcbiAgICAgIHJlZkRpYWxvZy5lZGl0ID0gIXByZXZpZXc7XG4gICAgICByZWZEaWFsb2cucHJlZmVyUmVzb3VyY2VUeXBlID0gcHJlZmVyUmVzb3VyY2VUeXBlO1xuICAgICAgcmVmRGlhbG9nLnRoZW1lID0gdGhlbWU7XG5cbiAgICAgIGNvbnN0IGRvbUVsZW0gPSBjb21wb25lbnRSZWYuaG9zdFZpZXcucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICBjb25zdCBkaWFsb2dJbmRleCA9IHRoaXMuZGlhbG9ncy5wdXNoKHJlZkRpYWxvZyk7XG5cbiAgICAgIGlmIChkaWFsb2dJbmRleCA+IDEpIHtcbiAgICAgICAgY29uc3QgbW9kYWxQYW5lbDogSFRNTEVsZW1lbnQgPSBkb21FbGVtLnF1ZXJ5U2VsZWN0b3IoJy5WbHQtbW9kYWxfX3BhbmVsJyk7XG4gICAgICAgIGlmIChtb2RhbFBhbmVsKSB7XG4gICAgICAgICAgbW9kYWxQYW5lbC5zdHlsZS5tYXJnaW5MZWZ0ID0gYCR7KGRpYWxvZ0luZGV4ICogNSl9cHhgO1xuICAgICAgICAgIG1vZGFsUGFuZWwuc3R5bGUubWFyZ2luVG9wID0gYCR7KGRpYWxvZ0luZGV4ICogMTApfXB4YDtcbiAgICAgICAgICBtb2RhbFBhbmVsLnN0eWxlLm1hcmdpbkJvdHRvbSA9IGAkeygoZGlhbG9nSW5kZXggLSAxKSAqIDgpfXB4YDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xuXG4gICAgICByZWZEaWFsb2cub25Db21wbGV0ZSA9IChyZXN1bHQpID0+IHtcbiAgICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLXVuZGVyc2NvcmUtZGFuZ2xlICovXG4gICAgICAgICAgaWYgKHJlc3VsdC5fdmdpcykge1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dCh7XG4gICAgICAgICAgICAgIGlkOiByZXN1bHQuX3ZnaXMuZXh0ZXJuYWxJZCB8fCByZXN1bHQuX3ZnaXMuaWQsXG4gICAgICAgICAgICAgIGxhYmVsOiByZXN1bHQuX3ZnaXMubGFiZWwsXG4gICAgICAgICAgICAgIHR5cGU6IHJlc3VsdC5fdmdpcy5yZXNvdXJjZVR5cGUsXG4gICAgICAgICAgICAgIHJhdzogcmVzdWx0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ29uQ29tcGxldGUgbm9uIFZHSVMgcmVzdWx0JywgcmVzdWx0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLyogZXNsaW50LWVuYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSAqL1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoKTtcbiAgICAgICAgfVxuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICBjb21wb25lbnRSZWYuZGVzdHJveSgpO1xuICAgICAgICB0aGlzLmRpYWxvZ3Muc3BsaWNlKGRpYWxvZ0luZGV4IC0gMSwgMSk7XG4gICAgICB9O1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG1vZGFsT2JzZXJ2YWJsZTtcbiAgfVxufVxuIl19
|
|
@@ -23,7 +23,7 @@ export class MetaResourceService {
|
|
|
23
23
|
this.httpClient = httpClient;
|
|
24
24
|
}
|
|
25
25
|
setConfig(config) {
|
|
26
|
-
this.baseIntegrationUrl = INTEGRATION_URL_TEMPLATE.replace(/\${\s*([\w
|
|
26
|
+
this.baseIntegrationUrl = INTEGRATION_URL_TEMPLATE.replace(/\${\s*([\w.]+)\s*}/g, (m, value) => {
|
|
27
27
|
for (const storage of Object.keys(STORAGE_PARAMS_REGEXES)) {
|
|
28
28
|
const match = value.match(STORAGE_PARAMS_REGEXES[storage]);
|
|
29
29
|
if (match) {
|
|
@@ -32,7 +32,7 @@ export class MetaResourceService {
|
|
|
32
32
|
}
|
|
33
33
|
return config[value];
|
|
34
34
|
});
|
|
35
|
-
this.baseResourceUrl = RESOURCE_URL_TEMPLATE.replace(/\${\s*([\w
|
|
35
|
+
this.baseResourceUrl = RESOURCE_URL_TEMPLATE.replace(/\${\s*([\w.]+)\s*}/g, (m, value) => {
|
|
36
36
|
for (const storage of Object.keys(STORAGE_PARAMS_REGEXES)) {
|
|
37
37
|
const match = value.match(STORAGE_PARAMS_REGEXES[storage]);
|
|
38
38
|
if (match) {
|
|
@@ -54,7 +54,7 @@ export class MetaResourceService {
|
|
|
54
54
|
return config[value];
|
|
55
55
|
}
|
|
56
56
|
});
|
|
57
|
-
this.newResourceUrl = NEW_RESOURCE_URL_TEMPLATE.replace(/\${\s*([\w
|
|
57
|
+
this.newResourceUrl = NEW_RESOURCE_URL_TEMPLATE.replace(/\${\s*([\w.]+)\s*}/g, (m, value) => {
|
|
58
58
|
for (const storage of Object.keys(STORAGE_PARAMS_REGEXES)) {
|
|
59
59
|
const match = value.match(STORAGE_PARAMS_REGEXES[storage]);
|
|
60
60
|
if (match) {
|
|
@@ -136,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.11", ngImpo
|
|
|
136
136
|
providedIn: 'root'
|
|
137
137
|
}]
|
|
138
138
|
}], ctorParameters: function () { return [{ type: i1.MetaHttpClient }]; } });
|
|
139
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvc2VydmljZXMvbWV0YVJlc291cmNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBSTNDLE1BQU0sc0JBQXNCLEdBQUc7SUFDN0IsWUFBWSxFQUFFLHFCQUFxQjtJQUNuQyxjQUFjLEVBQUUsdUJBQXVCO0NBQ3hDLENBQUM7QUFFRixNQUFNLHdCQUF3QixHQUM1Qix3SEFBd0gsQ0FBQztBQUMzSCxNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixHQUFHLGdDQUFnQyxDQUFDO0FBQzFGLE1BQU0seUJBQXlCLEdBQUcsd0JBQXdCLEdBQUcsMENBQTBDLENBQUM7QUFFeEcsTUFBTSxPQUFPLGlCQUFpQjtDQUk3QjtBQUNELE1BQU0sT0FBTyxtQkFBbUI7Q0FNL0I7QUFLRCxNQUFNLE9BQU8sbUJBQW1CO0lBTTlCLFlBQW9CLFVBQTBCO1FBQTFCLGVBQVUsR0FBVixVQUFVLENBQWdCO0lBQUksQ0FBQztJQUVuRCxTQUFTLENBQUMsTUFBMkI7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM5RixLQUFLLE1BQU0sT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRTtnQkFDekQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLEtBQUssRUFBRTtvQkFDVCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFD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LlZhbmdlbG92QHZvbmFnZS5jb20gXG4gKiBARGF0ZTogMjAxOS0wOS0xOSAxNzozNToxOSBcbiAqIEBMYXN0IE1vZGlmaWVkIGJ5OiBBbGV4YW5kZXIuVmFuZ2Vsb3ZAdm9uYWdlLmNvbVxuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAyMC0wOC0xMCAyMjozNTozMVxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTWV0YUh0dHBDbGllbnQgfSBmcm9tICcuL21ldGFIdHRwQ2xpZW50JztcblxuY29uc3QgU1RPUkFHRV9QQVJBTVNfUkVHRVhFUyA9IHtcbiAgbG9jYWxTdG9yYWdlOiAvXmxvY2FsU3RvcmFnZVxcLiguKikvLFxuICBzZXNzaW9uU3RvcmFnZTogL15zZXNzaW9uU3RvcmFnZVxcLiguKikvLFxufTtcblxuY29uc3QgSU5URUdSQVRJT05fVVJMX1RFTVBMQVRFID1cbiAgJy9leHRlbnNpb25zL3YyL2FjY291bnRzLyR7bG9jYWxTdG9yYWdlLnZnaXMuYWNjb3VudElkfS91c2Vycy8ke2xvY2FsU3RvcmFnZS52Z2lzLnVzZXJJZH0vY29ubmVjdG9ycy8ke2ludGVncmF0aW9uQ29kZX0nO1xuY29uc3QgUkVTT1VSQ0VfVVJMX1RFTVBMQVRFID0gSU5URUdSQVRJT05fVVJMX1RFTVBMQVRFICsgJyR7cGFyZW50c1BhdGh9LyR7cmVzb3VyY2VUeXBlfSc7XG5jb25zdCBORVdfUkVTT1VSQ0VfVVJMX1RFTVBMQVRFID0gSU5URUdSQVRJT05fVVJMX1RFTVBMQVRFICsgJyR7cGFyZW50c1BhdGh9L3Jlc291cmNlcy8ke3Jlc291cmNlVHlwZX0nO1xuXG5leHBvcnQgY2xhc3MgSU1ldGFQYXJlbnRDb25maWcge1xuICByZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgZXh0ZXJuYWxJZDogc3RyaW5nO1xuICBwYXJlbnQ/OiBJTWV0YVBhcmVudENvbmZpZztcbn1cbmV4cG9ydCBjbGFzcyBJTWV0YVJlc291cmNlQ29uZmlnIHtcbiAgaW50ZWdyYXRpb25Db2RlOiBzdHJpbmc7XG4gIHJlc291cmNlVHlwZTogc3RyaW5nO1xuICBleHRlcm5hbElkPzogc3RyaW5nO1xuICBwYXJlbnQ/OiBJTWV0YVBhcmVudENvbmZpZztcbiAgdXJsVGVtcGxhdGU/OiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1ldGFSZXNvdXJjZVNlcnZpY2Uge1xuICBiYXNlSW50ZWdyYXRpb25Vcmw6IHN0cmluZztcbiAgYmFzZVJlc291cmNlVXJsOiBzdHJpbmc7XG4gIG5ld1Jlc291cmNlVXJsOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwQ2xpZW50OiBNZXRhSHR0cENsaWVudCkgeyB9XG5cbiAgc2V0Q29uZmlnKGNvbmZpZzogSU1ldGFSZXNvdXJjZUNvbmZpZykge1xuICAgIHRoaXMuYmFzZUludGVncmF0aW9uVXJsID0gSU5URUdSQVRJT05fVVJMX1RFTVBMQVRFLnJlcGxhY2UoL1xcJHtcXHMqKFtcXHdcXC5dKylcXHMqfS9nLCAobSwgdmFsdWUpID0+IHtcbiAgICAgIGZvciAoY29uc3Qgc3RvcmFnZSBvZiBPYmplY3Qua2V5cyhTVE9SQUdFX1BBUkFNU19SRUdFWEVTKSkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHZhbHVlLm1hdGNoKFNUT1JBR0VfUEFSQU1TX1JFR0VYRVNbc3RvcmFnZV0pO1xuICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICByZXR1cm4gd2luZG93W3N0b3JhZ2VdLmdldEl0ZW0obWF0Y2hbMV0pIHx8IHdpbmRvd1tzdG9yYWdlXS5nZXRJdGVtKGBjdGkuJHttYXRjaFsxXX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbmZpZ1t2YWx1ZV07XG4gICAgfSk7XG4gICAgdGhpcy5iYXNlUmVzb3VyY2VVcmwgPSBSRVNPVVJDRV9VUkxfVEVNUExBVEUucmVwbGFjZSgvXFwke1xccyooW1xcd1xcLl0rKVxccyp9L2csIChtLCB2YWx1ZSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBzdG9yYWdlIG9mIE9iamVjdC5rZXlzKFNUT1JBR0VfUEFSQU1TX1JFR0VYRVMpKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gdmFsdWUubWF0Y2goU1RPUkFHRV9QQVJBTVNfUkVHRVhFU1tzdG9yYWdlXSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHJldHVybiB3aW5kb3dbc3RvcmFnZV0uZ2V0SXRlbShtYXRjaFsxXSkgfHwgd2luZG93W3N0b3JhZ2VdLmdldEl0ZW0oYGN0aS4ke21hdGNoWzFdfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgPT09ICdwYXJlbnRzUGF0aCcpIHtcbiAgICAgICAgbGV0IHBhcmVudHNQYXRoID0gJyc7XG4gICAgICAgIGlmIChjb25maWcucGFyZW50KSB7IC8vIGNvbmZpZy5wYXJlbnQ6IHsgcmVzb3VyY2VUeXBlOiAnLi4uJywgaWQ6ICcuLi4nLCBwYXJlbnQ6IHsuLi59IH1cbiAgICAgICAgICBsZXQgcm9vdFBhcmVudDogYW55ID0gY29uZmlnLnBhcmVudDtcbiAgICAgICAgICB3aGlsZSAocm9vdFBhcmVudCkge1xuICAgICAgICAgICAgcGFyZW50c1BhdGggKz0gYC8ke3Jvb3RQYXJlbnQucmVzb3VyY2VUeXBlIHx8IHJvb3RQYXJlbnQudHlwZX0vJHtyb290UGFyZW50LmV4dGVybmFsSWQgfHwgcm9vdFBhcmVudC5pZH1gO1xuICAgICAgICAgICAgcm9vdFBhcmVudCA9IHJvb3RQYXJlbnQucGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyZW50c1BhdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29uZmlnW3ZhbHVlXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm5ld1Jlc291cmNlVXJsID0gTkVXX1JFU09VUkNFX1VSTF9URU1QTEFURS5yZXBsYWNlKC9cXCR7XFxzKihbXFx3XFwuXSspXFxzKn0vZywgKG0sIHZhbHVlKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IHN0b3JhZ2Ugb2YgT2JqZWN0LmtleXMoU1RPUkFHRV9QQVJBTVNfUkVHRVhFUykpIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB2YWx1ZS5tYXRjaChTVE9SQUdFX1BBUkFNU19SRUdFWEVTW3N0b3JhZ2VdKTtcbiAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgcmV0dXJuIHdpbmRvd1tzdG9yYWdlXS5nZXRJdGVtKG1hdGNoWzFdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHZhbHVlID09PSAncGFyZW50c1BhdGgnKSB7XG4gICAgICAgIGxldCBwYXJlbnRzUGF0aCA9ICcnO1xuICAgICAgICBpZiAoY29uZmlnLnBhcmVudCkgeyAvLyBjb25maWcucGFyZW50OiB7IHJlc291cmNlVHlwZTogJy4uLicsIGlkOiAnLi4uJywgcGFyZW50OiB7Li4ufSB9XG4gICAgICAgICAgbGV0IHJvb3RQYXJlbnQ6IGFueSA9IGNvbmZpZy5wYXJlbnQ7XG4gICAgICAgICAgd2hpbGUgKHJvb3RQYXJlbnQpIHtcbiAgICAgICAgICAgIHBhcmVudHNQYXRoICs9IGAvJHtyb290UGFyZW50LnJlc291cmNlVHlwZSB8fCByb290UGFyZW50LnR5cGV9LyR7cm9vdFBhcmVudC5leHRlcm5hbElkIHx8IHJvb3RQYXJlbnQuaWR9YDtcbiAgICAgICAgICAgIHJvb3RQYXJlbnQgPSByb290UGFyZW50LnBhcmVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHBhcmVudHNQYXRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGNvbmZpZ1t2YWx1ZV07XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5pZCA9IGNvbmZpZy5leHRlcm5hbElkO1xuICB9XG5cbiAgbmV3KGNvbmZpZzogSU1ldGFSZXNvdXJjZUNvbmZpZykge1xuICAgIGNvbnN0IHMgPSBuZXcgTWV0YVJlc291cmNlU2VydmljZSh0aGlzLmh0dHBDbGllbnQpO1xuICAgIHMuc2V0Q29uZmlnKGNvbmZpZyk7XG4gICAgcmV0dXJuIHM7XG4gIH1cblxuICBzZWFyY2hJbnRlZ3JhdGlvbihxdWVyeSwgc2NvcGU/OiBzdHJpbmcpIHtcbiAgICBsZXQgc2VhcmNoVXJsID0gYCR7dGhpcy5iYXNlSW50ZWdyYXRpb25Vcmx9L3NlYXJjaD9xPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5KX1gO1xuICAgIGlmIChzY29wZSkge1xuICAgICAgc2VhcmNoVXJsICs9IGAmc2NvcGU9JHtlbmNvZGVVUklDb21wb25lbnQoc2NvcGUpfWA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KHNlYXJjaFVybCk7XG4gIH1cblxuICBnZXRNZXRhZGF0YShsYXlvdXRJZD8sIHJlZnJlc2g/KSB7XG4gICAgbGV0IHVybCA9IGAke3RoaXMuYmFzZVJlc291cmNlVXJsLnJlcGxhY2UoJy92Mi8nLCAnL3YzLycpfS9tZXRhZGF0YWA7XG4gICAgdXJsICs9IGA/dD0ke25ldyBEYXRlKCkuZ2V0VGltZSgpfWA7XG4gICAgaWYgKHJlZnJlc2gpIHtcbiAgICAgIHVybCArPSAnJnJlZnJlc2g9dHJ1ZSc7XG4gICAgfVxuICAgIGlmIChsYXlvdXRJZCkge1xuICAgICAgdXJsICs9IGAmbGF5b3V0SWQ9JHtsYXlvdXRJZH1gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldCh1cmwpO1xuICB9XG5cbiAgZ2V0RGV0YWlscyhleHRlcm5hbElkLCBleHRyYVBhcmFtcz8pIHtcbiAgICBsZXQgcGFyYW1zID0gJ3JlZmVyZW5jZURldGFpbHM9dHJ1ZSc7XG4gICAgaWYgKGV4dHJhUGFyYW1zKSB7XG4gICAgICBmb3IgKGNvbnN0IHAgaW4gZXh0cmFQYXJhbXMpIHtcbiAgICAgICAgaWYgKGV4dHJhUGFyYW1zW3BdKSB7XG4gICAgICAgICAgcGFyYW1zICs9IGAmJHtwfT0ke2V4dHJhUGFyYW1zW3BdfWA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQoYCR7dGhpcy5iYXNlUmVzb3VyY2VVcmx9LyR7ZXh0ZXJuYWxJZH0/JHtwYXJhbXN9YCk7XG4gIH1cblxuICBnZXRCeVBhdGgocGF0aCkgeyAvLyBUT0RPIG5vdCB1bml2ZXJzYWwhXG4gICAgbGV0IGZ1bGxQYXRoID0gYCR7dGhpcy5uZXdSZXNvdXJjZVVybH0ke3BhdGh9YDtcbiAgICBpZiAoL14uLlxcLy8udGVzdChwYXRoKSkge1xuICAgICAgZnVsbFBhdGggPSBgJHt0aGlzLmJhc2VJbnRlZ3JhdGlvblVybH0ke3BhdGguc3Vic3RyaW5nKDIpfWA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGZ1bGxQYXRoKTtcbiAgfVxuXG4gIHNhdmUocGF5bG9hZCkge1xuICAgIGlmICh0aGlzLmlkKSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnB1dChcbiAgICAgICAgYCR7dGhpcy5iYXNlUmVzb3VyY2VVcmx9LyR7dGhpcy5pZH1gLFxuICAgICAgICBwYXlsb2FkXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnBvc3QoXG4gICAgICAgIGAke3RoaXMuYmFzZVJlc291cmNlVXJsfWAsXG4gICAgICAgIHBheWxvYWRcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tZXRhLXVpL3NyYy9saWIvc2VydmljZXMvbWV0YVJlc291cmNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBSTNDLE1BQU0sc0JBQXNCLEdBQUc7SUFDN0IsWUFBWSxFQUFFLHFCQUFxQjtJQUNuQyxjQUFjLEVBQUUsdUJBQXVCO0NBQ3hDLENBQUM7QUFFRixNQUFNLHdCQUF3QixHQUM1Qix3SEFBd0gsQ0FBQztBQUMzSCxNQUFNLHFCQUFxQixHQUFHLHdCQUF3QixHQUFHLGdDQUFnQyxDQUFDO0FBQzFGLE1BQU0seUJBQXlCLEdBQUcsd0JBQXdCLEdBQUcsMENBQTBDLENBQUM7QUFFeEcsTUFBTSxPQUFPLGlCQUFpQjtDQUk3QjtBQUNELE1BQU0sT0FBTyxtQkFBbUI7Q0FNL0I7QUFLRCxNQUFNLE9BQU8sbUJBQW1CO0lBTTlCLFlBQW9CLFVBQTBCO1FBQTFCLGVBQVUsR0FBVixVQUFVLENBQWdCO0lBQUksQ0FBQztJQUVuRCxTQUFTLENBQUMsTUFBMkI7UUFDbkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM3RixLQUFLLE1BQU0sT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsRUFBRTtnQkFDekQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUMzRCxJQUFJLEtBQUssRUFBRTtvQkFDVCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFD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LlZhbmdlbG92QHZvbmFnZS5jb21cbiAqIEBEYXRlOiAyMDE5LTA5LTE5IDE3OjM1OjE5XG4gKiBATGFzdCBNb2RpZmllZCBieTogQWxleGFuZGVyLlZhbmdlbG92QHZvbmFnZS5jb21cbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMjAtMDgtMTAgMjI6MzU6MzFcbiAqL1xuXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE1ldGFIdHRwQ2xpZW50IH0gZnJvbSAnLi9tZXRhSHR0cENsaWVudCc7XG5cbmNvbnN0IFNUT1JBR0VfUEFSQU1TX1JFR0VYRVMgPSB7XG4gIGxvY2FsU3RvcmFnZTogL15sb2NhbFN0b3JhZ2VcXC4oLiopLyxcbiAgc2Vzc2lvblN0b3JhZ2U6IC9ec2Vzc2lvblN0b3JhZ2VcXC4oLiopLyxcbn07XG5cbmNvbnN0IElOVEVHUkFUSU9OX1VSTF9URU1QTEFURSA9XG4gICcvZXh0ZW5zaW9ucy92Mi9hY2NvdW50cy8ke2xvY2FsU3RvcmFnZS52Z2lzLmFjY291bnRJZH0vdXNlcnMvJHtsb2NhbFN0b3JhZ2Uudmdpcy51c2VySWR9L2Nvbm5lY3RvcnMvJHtpbnRlZ3JhdGlvbkNvZGV9JztcbmNvbnN0IFJFU09VUkNFX1VSTF9URU1QTEFURSA9IElOVEVHUkFUSU9OX1VSTF9URU1QTEFURSArICcke3BhcmVudHNQYXRofS8ke3Jlc291cmNlVHlwZX0nO1xuY29uc3QgTkVXX1JFU09VUkNFX1VSTF9URU1QTEFURSA9IElOVEVHUkFUSU9OX1VSTF9URU1QTEFURSArICcke3BhcmVudHNQYXRofS9yZXNvdXJjZXMvJHtyZXNvdXJjZVR5cGV9JztcblxuZXhwb3J0IGNsYXNzIElNZXRhUGFyZW50Q29uZmlnIHtcbiAgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG4gIGV4dGVybmFsSWQ6IHN0cmluZztcbiAgcGFyZW50PzogSU1ldGFQYXJlbnRDb25maWc7XG59XG5leHBvcnQgY2xhc3MgSU1ldGFSZXNvdXJjZUNvbmZpZyB7XG4gIGludGVncmF0aW9uQ29kZTogc3RyaW5nO1xuICByZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgZXh0ZXJuYWxJZD86IHN0cmluZztcbiAgcGFyZW50PzogSU1ldGFQYXJlbnRDb25maWc7XG4gIHVybFRlbXBsYXRlPzogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNZXRhUmVzb3VyY2VTZXJ2aWNlIHtcbiAgYmFzZUludGVncmF0aW9uVXJsOiBzdHJpbmc7XG4gIGJhc2VSZXNvdXJjZVVybDogc3RyaW5nO1xuICBuZXdSZXNvdXJjZVVybDogc3RyaW5nO1xuICBpZDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cENsaWVudDogTWV0YUh0dHBDbGllbnQpIHsgfVxuXG4gIHNldENvbmZpZyhjb25maWc6IElNZXRhUmVzb3VyY2VDb25maWcpIHtcbiAgICB0aGlzLmJhc2VJbnRlZ3JhdGlvblVybCA9IElOVEVHUkFUSU9OX1VSTF9URU1QTEFURS5yZXBsYWNlKC9cXCR7XFxzKihbXFx3Ll0rKVxccyp9L2csIChtLCB2YWx1ZSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBzdG9yYWdlIG9mIE9iamVjdC5rZXlzKFNUT1JBR0VfUEFSQU1TX1JFR0VYRVMpKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gdmFsdWUubWF0Y2goU1RPUkFHRV9QQVJBTVNfUkVHRVhFU1tzdG9yYWdlXSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHJldHVybiB3aW5kb3dbc3RvcmFnZV0uZ2V0SXRlbShtYXRjaFsxXSkgfHwgd2luZG93W3N0b3JhZ2VdLmdldEl0ZW0oYGN0aS4ke21hdGNoWzFdfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY29uZmlnW3ZhbHVlXTtcbiAgICB9KTtcbiAgICB0aGlzLmJhc2VSZXNvdXJjZVVybCA9IFJFU09VUkNFX1VSTF9URU1QTEFURS5yZXBsYWNlKC9cXCR7XFxzKihbXFx3Ll0rKVxccyp9L2csIChtLCB2YWx1ZSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBzdG9yYWdlIG9mIE9iamVjdC5rZXlzKFNUT1JBR0VfUEFSQU1TX1JFR0VYRVMpKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gdmFsdWUubWF0Y2goU1RPUkFHRV9QQVJBTVNfUkVHRVhFU1tzdG9yYWdlXSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHJldHVybiB3aW5kb3dbc3RvcmFnZV0uZ2V0SXRlbShtYXRjaFsxXSkgfHwgd2luZG93W3N0b3JhZ2VdLmdldEl0ZW0oYGN0aS4ke21hdGNoWzFdfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAodmFsdWUgPT09ICdwYXJlbnRzUGF0aCcpIHtcbiAgICAgICAgbGV0IHBhcmVudHNQYXRoID0gJyc7XG4gICAgICAgIGlmIChjb25maWcucGFyZW50KSB7IC8vIGNvbmZpZy5wYXJlbnQ6IHsgcmVzb3VyY2VUeXBlOiAnLi4uJywgaWQ6ICcuLi4nLCBwYXJlbnQ6IHsuLi59IH1cbiAgICAgICAgICBsZXQgcm9vdFBhcmVudDogYW55ID0gY29uZmlnLnBhcmVudDtcbiAgICAgICAgICB3aGlsZSAocm9vdFBhcmVudCkge1xuICAgICAgICAgICAgcGFyZW50c1BhdGggKz0gYC8ke3Jvb3RQYXJlbnQucmVzb3VyY2VUeXBlIHx8IHJvb3RQYXJlbnQudHlwZX0vJHtyb290UGFyZW50LmV4dGVybmFsSWQgfHwgcm9vdFBhcmVudC5pZH1gO1xuICAgICAgICAgICAgcm9vdFBhcmVudCA9IHJvb3RQYXJlbnQucGFyZW50O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyZW50c1BhdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gY29uZmlnW3ZhbHVlXTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm5ld1Jlc291cmNlVXJsID0gTkVXX1JFU09VUkNFX1VSTF9URU1QTEFURS5yZXBsYWNlKC9cXCR7XFxzKihbXFx3Ll0rKVxccyp9L2csIChtLCB2YWx1ZSkgPT4ge1xuICAgICAgZm9yIChjb25zdCBzdG9yYWdlIG9mIE9iamVjdC5rZXlzKFNUT1JBR0VfUEFSQU1TX1JFR0VYRVMpKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoID0gdmFsdWUubWF0Y2goU1RPUkFHRV9QQVJBTVNfUkVHRVhFU1tzdG9yYWdlXSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIHJldHVybiB3aW5kb3dbc3RvcmFnZV0uZ2V0SXRlbShtYXRjaFsxXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh2YWx1ZSA9PT0gJ3BhcmVudHNQYXRoJykge1xuICAgICAgICBsZXQgcGFyZW50c1BhdGggPSAnJztcbiAgICAgICAgaWYgKGNvbmZpZy5wYXJlbnQpIHsgLy8gY29uZmlnLnBhcmVudDogeyByZXNvdXJjZVR5cGU6ICcuLi4nLCBpZDogJy4uLicsIHBhcmVudDogey4uLn0gfVxuICAgICAgICAgIGxldCByb290UGFyZW50OiBhbnkgPSBjb25maWcucGFyZW50O1xuICAgICAgICAgIHdoaWxlIChyb290UGFyZW50KSB7XG4gICAgICAgICAgICBwYXJlbnRzUGF0aCArPSBgLyR7cm9vdFBhcmVudC5yZXNvdXJjZVR5cGUgfHwgcm9vdFBhcmVudC50eXBlfS8ke3Jvb3RQYXJlbnQuZXh0ZXJuYWxJZCB8fCByb290UGFyZW50LmlkfWA7XG4gICAgICAgICAgICByb290UGFyZW50ID0gcm9vdFBhcmVudC5wYXJlbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwYXJlbnRzUGF0aDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjb25maWdbdmFsdWVdO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuaWQgPSBjb25maWcuZXh0ZXJuYWxJZDtcbiAgfVxuXG4gIG5ldyhjb25maWc6IElNZXRhUmVzb3VyY2VDb25maWcpIHtcbiAgICBjb25zdCBzID0gbmV3IE1ldGFSZXNvdXJjZVNlcnZpY2UodGhpcy5odHRwQ2xpZW50KTtcbiAgICBzLnNldENvbmZpZyhjb25maWcpO1xuICAgIHJldHVybiBzO1xuICB9XG5cbiAgc2VhcmNoSW50ZWdyYXRpb24ocXVlcnksIHNjb3BlPzogc3RyaW5nKSB7XG4gICAgbGV0IHNlYXJjaFVybCA9IGAke3RoaXMuYmFzZUludGVncmF0aW9uVXJsfS9zZWFyY2g/cT0ke2VuY29kZVVSSUNvbXBvbmVudChxdWVyeSl9YDtcbiAgICBpZiAoc2NvcGUpIHtcbiAgICAgIHNlYXJjaFVybCArPSBgJnNjb3BlPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHNjb3BlKX1gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChzZWFyY2hVcmwpO1xuICB9XG5cbiAgZ2V0TWV0YWRhdGEobGF5b3V0SWQ/LCByZWZyZXNoPykge1xuICAgIGxldCB1cmwgPSBgJHt0aGlzLmJhc2VSZXNvdXJjZVVybC5yZXBsYWNlKCcvdjIvJywgJy92My8nKX0vbWV0YWRhdGFgO1xuICAgIHVybCArPSBgP3Q9JHtuZXcgRGF0ZSgpLmdldFRpbWUoKX1gO1xuICAgIGlmIChyZWZyZXNoKSB7XG4gICAgICB1cmwgKz0gJyZyZWZyZXNoPXRydWUnO1xuICAgIH1cbiAgICBpZiAobGF5b3V0SWQpIHtcbiAgICAgIHVybCArPSBgJmxheW91dElkPSR7bGF5b3V0SWR9YDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5nZXQodXJsKTtcbiAgfVxuXG4gIGdldERldGFpbHMoZXh0ZXJuYWxJZCwgZXh0cmFQYXJhbXM/KSB7XG4gICAgbGV0IHBhcmFtcyA9ICdyZWZlcmVuY2VEZXRhaWxzPXRydWUnO1xuICAgIGlmIChleHRyYVBhcmFtcykge1xuICAgICAgZm9yIChjb25zdCBwIGluIGV4dHJhUGFyYW1zKSB7XG4gICAgICAgIGlmIChleHRyYVBhcmFtc1twXSkge1xuICAgICAgICAgIHBhcmFtcyArPSBgJiR7cH09JHtleHRyYVBhcmFtc1twXX1gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuYmFzZVJlc291cmNlVXJsfS8ke2V4dGVybmFsSWR9PyR7cGFyYW1zfWApO1xuICB9XG5cbiAgZ2V0QnlQYXRoKHBhdGgpIHsgLy8gVE9ETyBub3QgdW5pdmVyc2FsIVxuICAgIGxldCBmdWxsUGF0aCA9IGAke3RoaXMubmV3UmVzb3VyY2VVcmx9JHtwYXRofWA7XG4gICAgaWYgKC9eLi5cXC8vLnRlc3QocGF0aCkpIHtcbiAgICAgIGZ1bGxQYXRoID0gYCR7dGhpcy5iYXNlSW50ZWdyYXRpb25Vcmx9JHtwYXRoLnN1YnN0cmluZygyKX1gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LmdldChmdWxsUGF0aCk7XG4gIH1cblxuICBzYXZlKHBheWxvYWQpIHtcbiAgICBpZiAodGhpcy5pZCkge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wdXQoXG4gICAgICAgIGAke3RoaXMuYmFzZVJlc291cmNlVXJsfS8ke3RoaXMuaWR9YCxcbiAgICAgICAgcGF5bG9hZFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5wb3N0KFxuICAgICAgICBgJHt0aGlzLmJhc2VSZXNvdXJjZVVybH1gLFxuICAgICAgICBwYXlsb2FkXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|