@eo-sdk/client 11.4.0-rc.4 → 11.4.0-rc.6

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.
@@ -124,15 +124,15 @@ export class ObjectLinksComponent {
124
124
  return subTypes;
125
125
  }
126
126
  navigateToReference(event, entry) {
127
- const url = window.location.href.split('/object')[0] + '/object/' + entry?.id;
127
+ const url = window.location.href.split(/object|result|favorites|inbox|process|notifications|recyclebin/)[0] + 'object/' + entry?.id;
128
128
  window.open(url, (event && event?.ctrlKey) ? '_blank' : '_self');
129
129
  }
130
130
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ObjectLinksComponent, deps: [{ token: i1.ReferenceService }, { token: i2.AppCacheService }, { token: i2.SystemService }], target: i0.ɵɵFactoryTarget.Component }); }
131
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ObjectLinksComponent, selector: "eo-object-links", inputs: { dmsObject: "dmsObject" }, viewQueries: [{ propertyName: "gridIn", first: true, predicate: ["gridIn"], descendants: true }, { propertyName: "gridOut", first: true, predicate: ["gridOut"], descendants: true }], ngImport: i0, template: "<div class=\"eo-references\">\n <div class=\"object-not-found\" *ngIf=\"!inReferences?.length && !outReferences?.length; else refContainer\">\n <div>{{'eo.references.object.notfound' | translate}}</div>\n </div>\n\n <ng-template #refContainer>\n <div class=\"form-buttons\">\n <div class=\"gridlabels\">\n <div class=\"gridlabel\" [ngClass]=\"{'active': showInReferences}\" (click)=\"switchListVisibilityTo('in')\"\n title=\"{{'eo.references.to.label' | translate}}\">\n <span>{{'eo.references.to.label' | translate}}</span>\n </div>\n <div class=\"gridlabel\" [ngClass]=\"{'active': showOutReferences}\" (click)=\"switchListVisibilityTo('out')\"\n title=\"{{'eo.references.from.label' | translate}}\">\n <span>{{'eo.references.from.label' | translate}}</span>\n </div>\n </div>\n <a class=\"button primary\" [routerLink]=\"'/result'\" [queryParams]=\"superQueryParams\" title=\"{{'eo.references.open.resultlist' | translate}}\">\n <span>{{'eo.references.open.resultlist' | translate}}</span>\n </a>\n </div>\n\n <div class=\"eo-references-lists\">\n\n <!-- list of inReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showInReferences}\">\n\n @if (inReferences?.length) {\n <div class=\"referenceList\">\n @for (entry of inReferences; track entry) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry)\">\n <div class=\"flex-row\">\n <eo-icon class=\"icon\" [objectType]=\"entry?.metaData?.objectType\" [iconTitle]=\"entry?.metaData?.objectType?.label\"></eo-icon>\n <div class=\"title\">\n {{entry?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry?.metaData?.remoteElement?.label}}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n\n <!-- list of outReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showOutReferences}\">\n @if (outReferences?.length) {\n <div class=\"referenceList\">\n @for (entry of outReferences; track entry) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry)\">\n <div class=\"flex-row\">\n <eo-icon class=\"icon\" [objectType]=\"entry?.metaData?.objectType\" [iconTitle]=\"entry?.metaData?.objectType?.label\"></eo-icon>\n <div class=\"title\">\n {{entry?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry?.metaData?.element?.label}}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [".eo-references{background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1);margin:var(--app-pane-padding);height:calc(100% - var(--app-pane-padding) * 2);box-sizing:border-box;display:flex;flex-flow:column}.eo-references .hidden{display:none!important}.eo-references .object-not-found{height:100%;display:flex;justify-content:center;align-items:center}.eo-references .object-not-found div{color:var(--text-color-caption)}.eo-references .form-buttons{width:100%;padding:calc(var(--app-pane-padding) / 2);height:44px;display:flex;justify-content:space-between;background:var(--color-white);box-sizing:border-box}.eo-references .form-buttons .gridlabels{display:flex;width:60%}.eo-references .form-buttons .gridlabel{border:1px solid var(--list-item-border-color);border-radius:4px;padding:0 calc(var(--app-pane-padding) / 2);display:flex;align-items:center;color:var(--text-color-caption);cursor:pointer;margin-right:calc(var(--app-pane-padding) / 2);transition:all var(--app-default-transition-duration) ease-in-out;overflow:hidden}.eo-references .form-buttons .gridlabel span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .form-buttons .gridlabel:hover{color:var(--text-color-body);border-color:#0003}.eo-references .form-buttons .active{color:var(--text-color-body);border-color:#0003;background-color:var(--panel-background-grey)}.eo-references .form-buttons a.button{display:flex;align-items:center;overflow:hidden}.eo-references .form-buttons a.button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .eo-references-lists{flex:1;overflow:hidden;border-top:4px solid rgba(var(--color-black-rgb),.2)}.eo-references .eo-references-lists .resultlist-container{display:flex;flex-flow:column;height:100%;width:100%}.eo-references .eo-references-lists .resultlist-container .notfound{color:var(--text-color-caption);display:flex;align-items:center;justify-content:center;height:100%}.eo-references .eo-references-lists .ag-result{position:absolute;inset:0}.eo-references .eo-references-lists .grid-wrapper{position:relative;flex:1}.referenceList{display:flex;flex-direction:column;border-radius:2px}.referenceList .content{cursor:pointer;margin-top:var(--app-pane-padding);margin-left:calc(var(--app-pane-padding) / 2)}.referenceList .content:hover{background-color:var(--main-background-light)}.referenceList .title{padding-left:calc(var(--app-pane-padding) / 2);font-weight:var(--font-weight-bold)}.referenceList .description,.referenceList .remote-element{padding-left:31px}.referenceList .title,.referenceList .description,.referenceList .icon,.referenceList .remote-element{color:var(--text-color-caption)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i5.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
131
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.1.2", type: ObjectLinksComponent, selector: "eo-object-links", inputs: { dmsObject: "dmsObject" }, viewQueries: [{ propertyName: "gridIn", first: true, predicate: ["gridIn"], descendants: true }, { propertyName: "gridOut", first: true, predicate: ["gridOut"], descendants: true }], ngImport: i0, template: "<div class=\"eo-references\">\n <div class=\"object-not-found\" *ngIf=\"!inReferences?.length && !outReferences?.length; else refContainer\">\n <div>{{'eo.references.object.notfound' | translate}}</div>\n </div>\n\n <ng-template #refContainer>\n <div class=\"form-buttons\">\n <div class=\"gridlabels\">\n <div class=\"gridlabel\" [ngClass]=\"{'active': showInReferences}\" (click)=\"switchListVisibilityTo('in')\"\n title=\"{{'eo.references.to.label' | translate}}\">\n <span>{{'eo.references.to.label' | translate}}</span>\n </div>\n <div class=\"gridlabel\" [ngClass]=\"{'active': showOutReferences}\" (click)=\"switchListVisibilityTo('out')\"\n title=\"{{'eo.references.from.label' | translate}}\">\n <span>{{'eo.references.from.label' | translate}}</span>\n </div>\n </div>\n <a class=\"button primary\" [routerLink]=\"'/result'\" [queryParams]=\"superQueryParams\" title=\"{{'eo.references.open.resultlist' | translate}}\">\n <span>{{'eo.references.open.resultlist' | translate}}</span>\n </a>\n </div>\n\n <div class=\"eo-references-lists\">\n\n <!-- list of inReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showInReferences}\">\n\n @if (inReferences?.length) {\n <div class=\"referenceList\">\n @for (entry of inReferences; track entry) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry)\">\n <div class=\"flex-row\">\n <eo-icon class=\"icon\" [objectType]=\"entry?.metaData?.objectType\" [iconTitle]=\"entry?.metaData?.objectType?.label\"></eo-icon>\n <div class=\"title\">\n {{entry?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry?.metaData?.remoteElement?.label}}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n\n <!-- list of outReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showOutReferences}\">\n @if (outReferences?.length) {\n <div class=\"referenceList\">\n @for (entry of outReferences; track entry) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry)\">\n <div class=\"flex-row\">\n <eo-icon class=\"icon\" [objectType]=\"entry?.metaData?.objectType\" [iconTitle]=\"entry?.metaData?.objectType?.label\"></eo-icon>\n <div class=\"title\">\n {{entry?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry?.metaData?.element?.label}}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [".eo-references{background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1);margin:var(--app-pane-padding);height:calc(100% - var(--app-pane-padding) * 2);box-sizing:border-box;display:flex;flex-flow:column}.eo-references .hidden{display:none!important}.eo-references .object-not-found{height:100%;display:flex;justify-content:center;align-items:center}.eo-references .object-not-found div{color:var(--text-color-caption)}.eo-references .form-buttons{width:100%;padding:calc(var(--app-pane-padding) / 2);height:44px;display:flex;justify-content:space-between;background:var(--color-white);box-sizing:border-box}.eo-references .form-buttons .gridlabels{display:flex;width:60%}.eo-references .form-buttons .gridlabel{border:1px solid var(--list-item-border-color);border-radius:4px;padding:0 calc(var(--app-pane-padding) / 2);display:flex;align-items:center;color:var(--text-color-caption);cursor:pointer;margin-right:calc(var(--app-pane-padding) / 2);transition:all var(--app-default-transition-duration) ease-in-out;overflow:hidden}.eo-references .form-buttons .gridlabel span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .form-buttons .gridlabel:hover{color:var(--text-color-body);border-color:#0003}.eo-references .form-buttons .active{color:var(--text-color-body);border-color:#0003;background-color:var(--panel-background-grey)}.eo-references .form-buttons a.button{display:flex;align-items:center;overflow:hidden}.eo-references .form-buttons a.button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .eo-references-lists{flex:1;overflow:hidden;border-top:4px solid rgba(var(--color-black-rgb),.2)}.eo-references .eo-references-lists .resultlist-container{display:flex;flex-flow:column;height:100%;width:100%;overflow:auto}.eo-references .eo-references-lists .resultlist-container .notfound{color:var(--text-color-caption);display:flex;align-items:center;justify-content:center;height:100%}.eo-references .eo-references-lists .ag-result{position:absolute;inset:0}.eo-references .eo-references-lists .grid-wrapper{position:relative;flex:1}.referenceList{display:flex;flex-direction:column;border-radius:2px}.referenceList .content{cursor:pointer;margin-top:var(--app-pane-padding);margin-left:calc(var(--app-pane-padding) / 2)}.referenceList .content:hover{background-color:var(--main-background-light)}.referenceList .title{padding-left:calc(var(--app-pane-padding) / 2);font-weight:var(--font-weight-bold)}.referenceList .description,.referenceList .remote-element{padding-left:31px}.referenceList .title,.referenceList .description,.referenceList .icon,.referenceList .remote-element{color:var(--text-color-caption)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i5.RouterLinkDirective, selector: "a[routerLink]" }, { kind: "directive", type: i6.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] }); }
132
132
  }
133
133
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: ObjectLinksComponent, decorators: [{
134
134
  type: Component,
135
- args: [{ selector: 'eo-object-links', template: "<div class=\"eo-references\">\n <div class=\"object-not-found\" *ngIf=\"!inReferences?.length && !outReferences?.length; else refContainer\">\n <div>{{'eo.references.object.notfound' | translate}}</div>\n </div>\n\n <ng-template #refContainer>\n <div class=\"form-buttons\">\n <div class=\"gridlabels\">\n <div class=\"gridlabel\" [ngClass]=\"{'active': showInReferences}\" (click)=\"switchListVisibilityTo('in')\"\n title=\"{{'eo.references.to.label' | translate}}\">\n <span>{{'eo.references.to.label' | translate}}</span>\n </div>\n <div class=\"gridlabel\" [ngClass]=\"{'active': showOutReferences}\" (click)=\"switchListVisibilityTo('out')\"\n title=\"{{'eo.references.from.label' | translate}}\">\n <span>{{'eo.references.from.label' | translate}}</span>\n </div>\n </div>\n <a class=\"button primary\" [routerLink]=\"'/result'\" [queryParams]=\"superQueryParams\" title=\"{{'eo.references.open.resultlist' | translate}}\">\n <span>{{'eo.references.open.resultlist' | translate}}</span>\n </a>\n </div>\n\n <div class=\"eo-references-lists\">\n\n <!-- list of inReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showInReferences}\">\n\n @if (inReferences?.length) {\n <div class=\"referenceList\">\n @for (entry of inReferences; track entry) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry)\">\n <div class=\"flex-row\">\n <eo-icon class=\"icon\" [objectType]=\"entry?.metaData?.objectType\" [iconTitle]=\"entry?.metaData?.objectType?.label\"></eo-icon>\n <div class=\"title\">\n {{entry?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry?.metaData?.remoteElement?.label}}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n\n <!-- list of outReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showOutReferences}\">\n @if (outReferences?.length) {\n <div class=\"referenceList\">\n @for (entry of outReferences; track entry) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry)\">\n <div class=\"flex-row\">\n <eo-icon class=\"icon\" [objectType]=\"entry?.metaData?.objectType\" [iconTitle]=\"entry?.metaData?.objectType?.label\"></eo-icon>\n <div class=\"title\">\n {{entry?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry?.metaData?.element?.label}}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [".eo-references{background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1);margin:var(--app-pane-padding);height:calc(100% - var(--app-pane-padding) * 2);box-sizing:border-box;display:flex;flex-flow:column}.eo-references .hidden{display:none!important}.eo-references .object-not-found{height:100%;display:flex;justify-content:center;align-items:center}.eo-references .object-not-found div{color:var(--text-color-caption)}.eo-references .form-buttons{width:100%;padding:calc(var(--app-pane-padding) / 2);height:44px;display:flex;justify-content:space-between;background:var(--color-white);box-sizing:border-box}.eo-references .form-buttons .gridlabels{display:flex;width:60%}.eo-references .form-buttons .gridlabel{border:1px solid var(--list-item-border-color);border-radius:4px;padding:0 calc(var(--app-pane-padding) / 2);display:flex;align-items:center;color:var(--text-color-caption);cursor:pointer;margin-right:calc(var(--app-pane-padding) / 2);transition:all var(--app-default-transition-duration) ease-in-out;overflow:hidden}.eo-references .form-buttons .gridlabel span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .form-buttons .gridlabel:hover{color:var(--text-color-body);border-color:#0003}.eo-references .form-buttons .active{color:var(--text-color-body);border-color:#0003;background-color:var(--panel-background-grey)}.eo-references .form-buttons a.button{display:flex;align-items:center;overflow:hidden}.eo-references .form-buttons a.button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .eo-references-lists{flex:1;overflow:hidden;border-top:4px solid rgba(var(--color-black-rgb),.2)}.eo-references .eo-references-lists .resultlist-container{display:flex;flex-flow:column;height:100%;width:100%}.eo-references .eo-references-lists .resultlist-container .notfound{color:var(--text-color-caption);display:flex;align-items:center;justify-content:center;height:100%}.eo-references .eo-references-lists .ag-result{position:absolute;inset:0}.eo-references .eo-references-lists .grid-wrapper{position:relative;flex:1}.referenceList{display:flex;flex-direction:column;border-radius:2px}.referenceList .content{cursor:pointer;margin-top:var(--app-pane-padding);margin-left:calc(var(--app-pane-padding) / 2)}.referenceList .content:hover{background-color:var(--main-background-light)}.referenceList .title{padding-left:calc(var(--app-pane-padding) / 2);font-weight:var(--font-weight-bold)}.referenceList .description,.referenceList .remote-element{padding-left:31px}.referenceList .title,.referenceList .description,.referenceList .icon,.referenceList .remote-element{color:var(--text-color-caption)}\n"] }]
135
+ args: [{ selector: 'eo-object-links', template: "<div class=\"eo-references\">\n <div class=\"object-not-found\" *ngIf=\"!inReferences?.length && !outReferences?.length; else refContainer\">\n <div>{{'eo.references.object.notfound' | translate}}</div>\n </div>\n\n <ng-template #refContainer>\n <div class=\"form-buttons\">\n <div class=\"gridlabels\">\n <div class=\"gridlabel\" [ngClass]=\"{'active': showInReferences}\" (click)=\"switchListVisibilityTo('in')\"\n title=\"{{'eo.references.to.label' | translate}}\">\n <span>{{'eo.references.to.label' | translate}}</span>\n </div>\n <div class=\"gridlabel\" [ngClass]=\"{'active': showOutReferences}\" (click)=\"switchListVisibilityTo('out')\"\n title=\"{{'eo.references.from.label' | translate}}\">\n <span>{{'eo.references.from.label' | translate}}</span>\n </div>\n </div>\n <a class=\"button primary\" [routerLink]=\"'/result'\" [queryParams]=\"superQueryParams\" title=\"{{'eo.references.open.resultlist' | translate}}\">\n <span>{{'eo.references.open.resultlist' | translate}}</span>\n </a>\n </div>\n\n <div class=\"eo-references-lists\">\n\n <!-- list of inReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showInReferences}\">\n\n @if (inReferences?.length) {\n <div class=\"referenceList\">\n @for (entry of inReferences; track entry) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry)\">\n <div class=\"flex-row\">\n <eo-icon class=\"icon\" [objectType]=\"entry?.metaData?.objectType\" [iconTitle]=\"entry?.metaData?.objectType?.label\"></eo-icon>\n <div class=\"title\">\n {{entry?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry?.metaData?.remoteElement?.label}}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n\n <!-- list of outReferences -->\n <div class=\"resultlist-container\" [ngClass]=\"{'hidden': !showOutReferences}\">\n @if (outReferences?.length) {\n <div class=\"referenceList\">\n @for (entry of outReferences; track entry) {\n <div class=\"content\" (click)=\"navigateToReference($event, entry)\">\n <div class=\"flex-row\">\n <eo-icon class=\"icon\" [objectType]=\"entry?.metaData?.objectType\" [iconTitle]=\"entry?.metaData?.objectType?.label\"></eo-icon>\n <div class=\"title\">\n {{entry?.title}}\n </div>\n </div>\n <div class=\"description\">\n {{entry?.description}}\n </div>\n <div class=\"remote-element\">\n {{'eo.references.field.label' | translate}} {{entry?.metaData?.element?.label}}\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"notfound\">{{'eo.references.object.notfound' | translate}}</div>\n }\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [".eo-references{background:var(--panel-background);border:1px solid rgba(var(--color-black-rgb),.1);margin:var(--app-pane-padding);height:calc(100% - var(--app-pane-padding) * 2);box-sizing:border-box;display:flex;flex-flow:column}.eo-references .hidden{display:none!important}.eo-references .object-not-found{height:100%;display:flex;justify-content:center;align-items:center}.eo-references .object-not-found div{color:var(--text-color-caption)}.eo-references .form-buttons{width:100%;padding:calc(var(--app-pane-padding) / 2);height:44px;display:flex;justify-content:space-between;background:var(--color-white);box-sizing:border-box}.eo-references .form-buttons .gridlabels{display:flex;width:60%}.eo-references .form-buttons .gridlabel{border:1px solid var(--list-item-border-color);border-radius:4px;padding:0 calc(var(--app-pane-padding) / 2);display:flex;align-items:center;color:var(--text-color-caption);cursor:pointer;margin-right:calc(var(--app-pane-padding) / 2);transition:all var(--app-default-transition-duration) ease-in-out;overflow:hidden}.eo-references .form-buttons .gridlabel span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .form-buttons .gridlabel:hover{color:var(--text-color-body);border-color:#0003}.eo-references .form-buttons .active{color:var(--text-color-body);border-color:#0003;background-color:var(--panel-background-grey)}.eo-references .form-buttons a.button{display:flex;align-items:center;overflow:hidden}.eo-references .form-buttons a.button span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.eo-references .eo-references-lists{flex:1;overflow:hidden;border-top:4px solid rgba(var(--color-black-rgb),.2)}.eo-references .eo-references-lists .resultlist-container{display:flex;flex-flow:column;height:100%;width:100%;overflow:auto}.eo-references .eo-references-lists .resultlist-container .notfound{color:var(--text-color-caption);display:flex;align-items:center;justify-content:center;height:100%}.eo-references .eo-references-lists .ag-result{position:absolute;inset:0}.eo-references .eo-references-lists .grid-wrapper{position:relative;flex:1}.referenceList{display:flex;flex-direction:column;border-radius:2px}.referenceList .content{cursor:pointer;margin-top:var(--app-pane-padding);margin-left:calc(var(--app-pane-padding) / 2)}.referenceList .content:hover{background-color:var(--main-background-light)}.referenceList .title{padding-left:calc(var(--app-pane-padding) / 2);font-weight:var(--font-weight-bold)}.referenceList .description,.referenceList .remote-element{padding-left:31px}.referenceList .title,.referenceList .description,.referenceList .icon,.referenceList .remote-element{color:var(--text-color-caption)}\n"] }]
136
136
  }], ctorParameters: () => [{ type: i1.ReferenceService }, { type: i2.AppCacheService }, { type: i2.SystemService }], propDecorators: { gridIn: [{
137
137
  type: ViewChild,
138
138
  args: ['gridIn']
@@ -143,4 +143,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
143
143
  type: Input,
144
144
  args: ['dmsObject']
145
145
  }] } });
146
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWxpbmtzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1kZXRhaWxzL29iamVjdC1saW5rcy9vYmplY3QtbGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWxpbmtzL29iamVjdC1saW5rcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJMUQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBUTlCLE1BQU0sT0FBTyxvQkFBb0I7SUFjL0IsSUFDSSxTQUFTLENBQUMsU0FBb0I7UUFDaEMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFvQixnQkFBa0MsRUFDNUMsS0FBc0IsRUFDdEIsYUFBNEI7UUFGbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUM1QyxVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXJCdEMsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRXRCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFnQjFCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFrQjtRQUN2QyxJQUFJLElB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U0FBUzsrQkFDRSxpQkFBaUI7K0lBZU4sTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUNHLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFHaEIsU0FBUztzQkFEWixLQUFLO3VCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7UmVmZXJlbmNlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvcmVmZXJlbmNlcy9yZWZlcmVuY2Uuc2VydmljZSc7XG5pbXBvcnQge0Rtc09iamVjdCwgQXBwQ2FjaGVTZXJ2aWNlfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtmb3JrSm9pbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1N5c3RlbVNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2VvLW9iamVjdC1saW5rcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9vYmplY3QtbGlua3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vYmplY3QtbGlua3MuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBPYmplY3RMaW5rc0NvbXBvbmVudCB7XG5cbiAgaXRlbTogRG1zT2JqZWN0O1xuICBpblJlZmVyZW5jZXMgPSBbXTtcbiAgb3V0UmVmZXJlbmNlcyA9IFtdO1xuICBxdWVyaWVzO1xuICBzdXBlclF1ZXJ5UGFyYW1zID0ge307XG5cbiAgc2hvd0luUmVmZXJlbmNlcyA9IHRydWU7XG4gIHNob3dPdXRSZWZlcmVuY2VzID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnZ3JpZEluJykgZ3JpZEluO1xuICBAVmlld0NoaWxkKCdncmlkT3V0JykgZ3JpZE91dDtcblxuICBASW5wdXQoJ2Rtc09iamVjdCcpXG4gIHNldCBkbXNPYmplY3QoZG1zT2JqZWN0OiBEbXNPYmplY3QpIHtcbiAgICBpZiAoZG1zT2JqZWN0KSB7XG4gICAgICB0aGlzLml0ZW0gPSBkbXNPYmplY3Q7XG4gICAgICB0aGlzLmluaXQoZG1zT2JqZWN0KTtcbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlZmVyZW5jZVNlcnZpY2U6IFJlZmVyZW5jZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjYWNoZTogQXBwQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSkge1xuICB9XG5cbiAgc3dpdGNoTGlzdFZpc2liaWxpdHlUbyhsaXN0OiAnaW4nIHwgJ291dCcpIHtcbiAgICBpZiAobGlzdCA9PT0gJ2luJykge1xuICAgICAgdGhpcy5zaG93SW5SZWZlcmVuY2VzID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2hvd091dFJlZmVyZW5jZXMgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93SW5SZWZlcmVuY2VzID0gZmFsc2U7XG4gICAgICB0aGlzLnNob3dPdXRSZWZlcmVuY2VzID0gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5jYWNoZS5zZXRJdGVtKCd5dXYucmVmZXJlbmNlLmxpc3Quc2hvdy4nICsgdGhpcy5pdGVtLnR5cGVOYW1lLCBsaXN0KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdChpdGVtKSB7XG4gICAgdGhpcy5jYWNoZS5nZXRJdGVtKCd5dXYucmVmZXJlbmNlLmxpc3Quc2hvdy4nICsgaXRlbS50eXBlTmFtZSkuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLnN3aXRjaExpc3RWaXNpYmlsaXR5VG8ocmVzKSk7XG4gICAgY29uc3Qgb2JzID0gW1xuICAgICAgdGhpcy5yZWZlcmVuY2VTZXJ2aWNlLmdldEluUmVmZXJlbmNlcyhpdGVtKSxcbiAgICAgIHRoaXMucmVmZXJlbmNlU2VydmljZS5nZXRPdXRSZWZlcmVuY2VzKGl0ZW0pXG4gICAgXTtcbiAgICBmb3JrSm9pbihvYnMpXG4gICAgICAuc3Vic2NyaWJlKHJlc3VsdHMgPT4ge1xuICAgICAgICBbdGhpcy5pblJlZmVyZW5jZXMsIHRoaXMub3V0UmVmZXJlbmNlc10gPSByZXN1bHRzO1xuICAgICAgfSwgKGVycm9yKSA9PiBjb25zb2xlLmVycm9yKHtlcnJvcn0pKTtcblxuICAgIHRoaXMucmVmZXJlbmNlU2VydmljZVxuICAgICAgLmdldFF1ZXJpZXMoaXRlbSlcbiAgICAgIC5zdWJzY3JpYmUocXVlcmllcyA9PiB7XG4gICAgICAgIHRoaXMucXVlcmllcyA9IHF1ZXJpZXM7XG4gICAgICAgIGNvbnN0IHN1cGVyUXVlcnkgPSB0aGlzLmNyZWF0ZVN1cGVyUXVlcnlGcm9tUXVlcmllcyh0aGlzLnF1ZXJpZXMpO1xuICAgICAgICB0aGlzLnN1cGVyUXVlcnlQYXJhbXMgPSB7J3F1ZXJ5JzogZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHN1cGVyUXVlcnkpKSwgJ3NpbGVudCc6IHRydWV9O1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVN1cGVyUXVlcnlGcm9tUXVlcmllcyhxdWVyaWVzKSB7XG4gICAgbGV0IHN1cGVyUXVlcnkgPSB7XG4gICAgICB0ZXJtOiAnJyxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZXhwZXJ0bW9kZTogdHJ1ZVxuICAgICAgfVxuICAgIH07XG5cbiAgICBxdWVyaWVzLm91dFJlZmVyZW5jZVF1ZXJpZXMuZm9yRWFjaChxdWVyeSA9PiB7XG4gICAgICBpZiAocXVlcnkuZmlsdGVycykge1xuICAgICAgICBPYmplY3Qua2V5cyhxdWVyeS5maWx0ZXJzKVxuICAgICAgICAgIC5mb3JFYWNoKGZpbHRlck5hbWUgPT4gc3VwZXJRdWVyeS50ZXJtICs9IHRoaXMuY3JlYXRlU3VwZXJRdWVyeVRlcm1QYXJ0KHF1ZXJ5LCBmaWx0ZXJOYW1lKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXBlclF1ZXJ5LnRlcm0gKz0gJygnICsgcXVlcnkudGVybSArICcpJyArICcgT1IgJztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHF1ZXJpZXMuaW5SZWZlcmVuY2VRdWVyaWVzLmZvckVhY2goKHF1ZXJ5KSA9PiB7XG4gICAgICBpZiAocXVlcnkuZmlsdGVycykge1xuICAgICAgICBPYmplY3Qua2V5cyhxdWVyeS5maWx0ZXJzKVxuICAgICAgICAgIC5mb3JFYWNoKGZpbHRlck5hbWUgPT4gc3VwZXJRdWVyeS50ZXJtICs9IHRoaXMuY3JlYXRlU3VwZXJRdWVyeVRlcm1QYXJ0KHF1ZXJ5LCBmaWx0ZXJOYW1lKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdXBlclF1ZXJ5LnRlcm0gKz0gcXVlcnkudGVybTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHN1cGVyUXVlcnkudGVybSA9IHN1cGVyUXVlcnkudGVybS5yZXBsYWNlKG5ldyBSZWdFeHAoJywnLCAnZycpLCAnICcpOyAvLyByZXBsYWNlIGFsbCAnLCcgd2l0aCAnICdcbiAgICBzdXBlclF1ZXJ5LnRlcm0gPSBzdXBlclF1ZXJ5LnRlcm0ucmVwbGFjZShuZXcgUmVnRXhwKCcgT1IgJyArICckJyksICcnKTsgLy8gcmVtb3ZlIGxhc3QgJyBPUiAnXG5cbiAgICByZXR1cm4gc3VwZXJRdWVyeTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3VwZXJRdWVyeVRlcm1QYXJ0KHF1ZXJ5LCBmaWx0ZXJOYW1lKSB7XG4gICAgLy8gcmVzZXJ2ZWQgY2hhcmFjdGVycyBvZiBlbGFzdGljIHNlYXJjaFxuICAgIC8vIHRvZG86IGFkZCAnfHwnXG4gICAgY29uc3QgcmVzZXJ2ZWRDaGFycyA9IFsnXFxcXCcsICcvJywgJ1xcKycsICctJywgJz0nLCAnJiYnLCAnPicsICc8JywgJyEnLCAnXFwoJywgJ1xcKScsICdcXHsnLCAnXFx9JywgJ1xcWycsICdcXF0nLCAnXFxeJywgJ1wiJywgJ1xcficsICdcXConLCAnXFw/JywgJzonXTtcblxuICAgIGNvbnN0IGZpbHRlciA9IHF1ZXJ5LmZpbHRlcnNbZmlsdGVyTmFtZV07XG4gICAgbGV0IHZhbHVlID0gJycgKyBmaWx0ZXIudjEgKyAnJztcbiAgICByZXNlcnZlZENoYXJzLmZvckVhY2goY2hhciA9PiB7XG4gICAgICBpZiAodmFsdWUuaW5kZXhPZihjaGFyKSA+IC0xKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKCdcXFxcJyArIGNoYXIsICdnJyksICdcXFxcJyArIGNoYXIpOyAvLyBlc2NhcGVzIGFsbCByZXNlcnZlZCBjaGFyYWN0ZXJzXG4gICAgICB9XG4gICAgfSk7XG4gICAgbGV0IHR5cGVzID0gdGhpcy5nZXRTdWJUeXBlcyhxdWVyeS50eXBlc1swXSk7XG4gICAgdHlwZXMucHVzaChxdWVyeS50eXBlc1swXSk7XG4gICAgbGV0IGluZGV4TmFtZSA9IHRoaXMuZ2V0SW5kZXhOYW1lQnlRTmFtZShmaWx0ZXJOYW1lKTtcbiAgICBpZiAoIWluZGV4TmFtZSkge1xuICAgICAgaW5kZXhOYW1lID0gJ3N0cl8nICsgZmlsdGVyTmFtZS5yZXBsYWNlKCcuJywgJ18nKTtcbiAgICB9XG4gICAgcmV0dXJuICcoJyArIGluZGV4TmFtZSArICc6KCcgKyB2YWx1ZSArICcpIEFORCBrZXlfdHlwZTooJyArIHR5cGVzICsgJykpIE9SICc7XG4gIH1cblxuICBwcml2YXRlIGdldEluZGV4TmFtZUJ5UU5hbWUocW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdHlwZXMgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZXMoKTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHR5cGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gdHlwZXNbaV0uZWxlbWVudHMuZmluZChlbCA9PiBlbC5xbmFtZSA9PT0gcW5hbWUpO1xuICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuaW5kZXhuYW1lO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3ViVHlwZXModHlwZU5hbWUpIHtcbiAgICBsZXQgdHlwZXMgPSB0aGlzLnN5c3RlbVNlcnZpY2UuZ2V0T2JqZWN0VHlwZXMoKTtcbiAgICBsZXQgc3ViVHlwZXMgPSBbXTtcbiAgICB0eXBlcy5mb3JFYWNoKG9iamVjdFR5cGUgPT4ge1xuICAgICAgY29uc3QgdmFsaWRhdG9yID0gISFvYmplY3RUeXBlLnN1cGVydHlwZXMuZmluZCgodDogYW55KSA9PiB0Lm5hbWUgPT09IHR5cGVOYW1lKTtcbiAgICAgIGlmICh2YWxpZGF0b3IpIHtcbiAgICAgICAgc3ViVHlwZXMucHVzaChvYmplY3RUeXBlLnFuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgKTtcbiAgICByZXR1cm4gc3ViVHlwZXM7XG4gIH1cblxuICBuYXZpZ2F0ZVRvUmVmZXJlbmNlKGV2ZW50LCBlbnRyeSkge1xuICAgIGNvbnN0IHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCcvb2JqZWN0JylbMF0gKyAnL29iamVjdC8nICsgZW50cnk/LmlkO1xuICAgIHdpbmRvdy5vcGVuKHVybCwgKGV2ZW50ICYmIGV2ZW50Py5jdHJsS2V5KSA/ICdfYmxhbmsnIDogJ19zZWxmJyk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlby1yZWZlcmVuY2VzXCI+XG4gIDxkaXYgY2xhc3M9XCJvYmplY3Qtbm90LWZvdW5kXCIgKm5nSWY9XCIhaW5SZWZlcmVuY2VzPy5sZW5ndGggJiYgIW91dFJlZmVyZW5jZXM/Lmxlbmd0aDsgZWxzZSByZWZDb250YWluZXJcIj5cbiAgICA8ZGl2Pnt7J2VvLnJlZmVyZW5jZXMub2JqZWN0Lm5vdGZvdW5kJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy10ZW1wbGF0ZSAjcmVmQ29udGFpbmVyPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWJ1dHRvbnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJncmlkbGFiZWxzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImdyaWRsYWJlbFwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogc2hvd0luUmVmZXJlbmNlc31cIiAoY2xpY2spPVwic3dpdGNoTGlzdFZpc2liaWxpdHlUbygnaW4nKVwiXG4gICAgICAgICAgICB0aXRsZT1cInt7J2VvLnJlZmVyZW5jZXMudG8ubGFiZWwnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3snZW8ucmVmZXJlbmNlcy50by5sYWJlbCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZGxhYmVsXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBzaG93T3V0UmVmZXJlbmNlc31cIiAoY2xpY2spPVwic3dpdGNoTGlzdFZpc2liaWxpdHlUbygnb3V0JylcIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eydlby5yZWZlcmVuY2VzLmZyb20ubGFiZWwnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3snZW8ucmVmZXJlbmNlcy5mcm9tLmxhYmVsJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8YSBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCIgW3JvdXRlckxpbmtdPVwiJy9yZXN1bHQnXCIgW3F1ZXJ5UGFyYW1zXT1cInN1cGVyUXVlcnlQYXJhbXNcIiB0aXRsZT1cInt7J2VvLnJlZmVyZW5jZXMub3Blbi5yZXN1bHRsaXN0JyB8IHRyYW5zbGF0ZX19XCI+XG4gICAgICAgIDxzcGFuPnt7J2VvLnJlZmVyZW5jZXMub3Blbi5yZXN1bHRsaXN0JyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImVvLXJlZmVyZW5jZXMtbGlzdHNcIj5cblxuICAgICAgPCEtLSBsaXN0IG9mIGluUmVmZXJlbmNlcyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHRsaXN0LWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnaGlkZGVuJzogIXNob3dJblJlZmVyZW5jZXN9XCI+XG5cbiAgICAgICAgQGlmIChpblJlZmVyZW5jZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWZlcmVuY2VMaXN0XCI+XG4gICAgICAgICAgICBAZm9yIChlbnRyeSBvZiBpblJlZmVyZW5jZXM7IHRyYWNrIGVudHJ5KSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9SZWZlcmVuY2UoJGV2ZW50LCBlbnRyeSlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiaWNvblwiIFtvYmplY3RUeXBlXT1cImVudHJ5Py5tZXRhRGF0YT8ub2JqZWN0VHlwZVwiIFtpY29uVGl0bGVdPVwiZW50cnk/Lm1ldGFEYXRhPy5vYmplY3RUeXBlPy5sYWJlbFwiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2VudHJ5Py50aXRsZX19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgIHt7ZW50cnk/LmRlc2NyaXB0aW9ufX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVtb3RlLWVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgIHt7J2VvLnJlZmVyZW5jZXMuZmllbGQubGFiZWwnIHwgdHJhbnNsYXRlfX0ge3tlbnRyeT8ubWV0YURhdGE/LnJlbW90ZUVsZW1lbnQ/LmxhYmVsfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3Rmb3VuZFwiPnt7J2VvLnJlZmVyZW5jZXMub2JqZWN0Lm5vdGZvdW5kJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIGxpc3Qgb2Ygb3V0UmVmZXJlbmNlcyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHRsaXN0LWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnaGlkZGVuJzogIXNob3dPdXRSZWZlcmVuY2VzfVwiPlxuICAgICAgICBAaWYgKG91dFJlZmVyZW5jZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZWZlcmVuY2VMaXN0XCI+XG4gICAgICAgICAgICBAZm9yIChlbnRyeSBvZiBvdXRSZWZlcmVuY2VzOyB0cmFjayBlbnRyeSkge1xuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGVudFwiIChjbGljayk9XCJuYXZpZ2F0ZVRvUmVmZXJlbmNlKCRldmVudCwgZW50cnkpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtcm93XCI+XG4gICAgICAgICAgICAgICAgICA8ZW8taWNvbiBjbGFzcz1cImljb25cIiBbb2JqZWN0VHlwZV09XCJlbnRyeT8ubWV0YURhdGE/Lm9iamVjdFR5cGVcIiBbaWNvblRpdGxlXT1cImVudHJ5Py5tZXRhRGF0YT8ub2JqZWN0VHlwZT8ubGFiZWxcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAge3tlbnRyeT8udGl0bGV9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAgICAgICAgICB7e2VudHJ5Py5kZXNjcmlwdGlvbn19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlbW90ZS1lbGVtZW50XCI+XG4gICAgICAgICAgICAgICAgICB7eydlby5yZWZlcmVuY2VzLmZpZWxkLmxhYmVsJyB8IHRyYW5zbGF0ZX19IHt7ZW50cnk/Lm1ldGFEYXRhPy5lbGVtZW50Py5sYWJlbH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibm90Zm91bmRcIj57eydlby5yZWZlcmVuY2VzLm9iamVjdC5ub3Rmb3VuZCcgfCB0cmFuc2xhdGV9fTwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JqZWN0LWxpbmtzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1kZXRhaWxzL29iamVjdC1saW5rcy9vYmplY3QtbGlua3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWRldGFpbHMvb2JqZWN0LWxpbmtzL29iamVjdC1saW5rcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJMUQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBUTlCLE1BQU0sT0FBTyxvQkFBb0I7SUFjL0IsSUFDSSxTQUFTLENBQUMsU0FBb0I7UUFDaEMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFvQixnQkFBa0MsRUFDNUMsS0FBc0IsRUFDdEIsYUFBNEI7UUFGbEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUM1QyxVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQXJCdEMsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFFbkIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBRXRCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUN4QixzQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFnQjFCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxJQUFrQjtRQUN2QyxJQUFJLElB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QyxTQUFTOytCQUNFLGlCQUFpQjsrSUFlTixNQUFNO3NCQUExQixTQUFTO3VCQUFDLFFBQVE7Z0JBQ0csT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQUdoQixTQUFTO3NCQURaLEtBQUs7dUJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Um91dGVyfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtSZWZlcmVuY2VTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9yZWZlcmVuY2VzL3JlZmVyZW5jZS5zZXJ2aWNlJztcbmltcG9ydCB7RG1zT2JqZWN0LCBBcHBDYWNoZVNlcnZpY2V9IGZyb20gJ0Blby1zZGsvY29yZSc7XG5pbXBvcnQge2ZvcmtKb2lufSBmcm9tICdyeGpzJztcbmltcG9ydCB7U3lzdGVtU2VydmljZX0gZnJvbSAnQGVvLXNkay9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tb2JqZWN0LWxpbmtzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL29iamVjdC1saW5rcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL29iamVjdC1saW5rcy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIE9iamVjdExpbmtzQ29tcG9uZW50IHtcblxuICBpdGVtOiBEbXNPYmplY3Q7XG4gIGluUmVmZXJlbmNlcyA9IFtdO1xuICBvdXRSZWZlcmVuY2VzID0gW107XG4gIHF1ZXJpZXM7XG4gIHN1cGVyUXVlcnlQYXJhbXMgPSB7fTtcblxuICBzaG93SW5SZWZlcmVuY2VzID0gdHJ1ZTtcbiAgc2hvd091dFJlZmVyZW5jZXMgPSBmYWxzZTtcblxuICBAVmlld0NoaWxkKCdncmlkSW4nKSBncmlkSW47XG4gIEBWaWV3Q2hpbGQoJ2dyaWRPdXQnKSBncmlkT3V0O1xuXG4gIEBJbnB1dCgnZG1zT2JqZWN0JylcbiAgc2V0IGRtc09iamVjdChkbXNPYmplY3Q6IERtc09iamVjdCkge1xuICAgIGlmIChkbXNPYmplY3QpIHtcbiAgICAgIHRoaXMuaXRlbSA9IGRtc09iamVjdDtcbiAgICAgIHRoaXMuaW5pdChkbXNPYmplY3QpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVmZXJlbmNlU2VydmljZTogUmVmZXJlbmNlU2VydmljZSxcbiAgICBwcml2YXRlIGNhY2hlOiBBcHBDYWNoZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzeXN0ZW1TZXJ2aWNlOiBTeXN0ZW1TZXJ2aWNlKSB7XG4gIH1cblxuICBzd2l0Y2hMaXN0VmlzaWJpbGl0eVRvKGxpc3Q6ICdpbicgfCAnb3V0Jykge1xuICAgIGlmIChsaXN0ID09PSAnaW4nKSB7XG4gICAgICB0aGlzLnNob3dJblJlZmVyZW5jZXMgPSB0cnVlO1xuICAgICAgdGhpcy5zaG93T3V0UmVmZXJlbmNlcyA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3dJblJlZmVyZW5jZXMgPSBmYWxzZTtcbiAgICAgIHRoaXMuc2hvd091dFJlZmVyZW5jZXMgPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmNhY2hlLnNldEl0ZW0oJ3l1di5yZWZlcmVuY2UubGlzdC5zaG93LicgKyB0aGlzLml0ZW0udHlwZU5hbWUsIGxpc3QpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0KGl0ZW0pIHtcbiAgICB0aGlzLmNhY2hlLmdldEl0ZW0oJ3l1di5yZWZlcmVuY2UubGlzdC5zaG93LicgKyBpdGVtLnR5cGVOYW1lKS5zdWJzY3JpYmUocmVzID0+IHRoaXMuc3dpdGNoTGlzdFZpc2liaWxpdHlUbyhyZXMpKTtcbiAgICBjb25zdCBvYnMgPSBbXG4gICAgICB0aGlzLnJlZmVyZW5jZVNlcnZpY2UuZ2V0SW5SZWZlcmVuY2VzKGl0ZW0pLFxuICAgICAgdGhpcy5yZWZlcmVuY2VTZXJ2aWNlLmdldE91dFJlZmVyZW5jZXMoaXRlbSlcbiAgICBdO1xuICAgIGZvcmtKb2luKG9icylcbiAgICAgIC5zdWJzY3JpYmUocmVzdWx0cyA9PiB7XG4gICAgICAgIFt0aGlzLmluUmVmZXJlbmNlcywgdGhpcy5vdXRSZWZlcmVuY2VzXSA9IHJlc3VsdHM7XG4gICAgICB9LCAoZXJyb3IpID0+IGNvbnNvbGUuZXJyb3Ioe2Vycm9yfSkpO1xuXG4gICAgdGhpcy5yZWZlcmVuY2VTZXJ2aWNlXG4gICAgICAuZ2V0UXVlcmllcyhpdGVtKVxuICAgICAgLnN1YnNjcmliZShxdWVyaWVzID0+IHtcbiAgICAgICAgdGhpcy5xdWVyaWVzID0gcXVlcmllcztcbiAgICAgICAgY29uc3Qgc3VwZXJRdWVyeSA9IHRoaXMuY3JlYXRlU3VwZXJRdWVyeUZyb21RdWVyaWVzKHRoaXMucXVlcmllcyk7XG4gICAgICAgIHRoaXMuc3VwZXJRdWVyeVBhcmFtcyA9IHsncXVlcnknOiBlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoc3VwZXJRdWVyeSkpLCAnc2lsZW50JzogdHJ1ZX07XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlU3VwZXJRdWVyeUZyb21RdWVyaWVzKHF1ZXJpZXMpIHtcbiAgICBsZXQgc3VwZXJRdWVyeSA9IHtcbiAgICAgIHRlcm06ICcnLFxuICAgICAgb3B0aW9uczoge1xuICAgICAgICBleHBlcnRtb2RlOiB0cnVlXG4gICAgICB9XG4gICAgfTtcblxuICAgIHF1ZXJpZXMub3V0UmVmZXJlbmNlUXVlcmllcy5mb3JFYWNoKHF1ZXJ5ID0+IHtcbiAgICAgIGlmIChxdWVyeS5maWx0ZXJzKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHF1ZXJ5LmZpbHRlcnMpXG4gICAgICAgICAgLmZvckVhY2goZmlsdGVyTmFtZSA9PiBzdXBlclF1ZXJ5LnRlcm0gKz0gdGhpcy5jcmVhdGVTdXBlclF1ZXJ5VGVybVBhcnQocXVlcnksIGZpbHRlck5hbWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1cGVyUXVlcnkudGVybSArPSAnKCcgKyBxdWVyeS50ZXJtICsgJyknICsgJyBPUiAnO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcXVlcmllcy5pblJlZmVyZW5jZVF1ZXJpZXMuZm9yRWFjaCgocXVlcnkpID0+IHtcbiAgICAgIGlmIChxdWVyeS5maWx0ZXJzKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKHF1ZXJ5LmZpbHRlcnMpXG4gICAgICAgICAgLmZvckVhY2goZmlsdGVyTmFtZSA9PiBzdXBlclF1ZXJ5LnRlcm0gKz0gdGhpcy5jcmVhdGVTdXBlclF1ZXJ5VGVybVBhcnQocXVlcnksIGZpbHRlck5hbWUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN1cGVyUXVlcnkudGVybSArPSBxdWVyeS50ZXJtO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgc3VwZXJRdWVyeS50ZXJtID0gc3VwZXJRdWVyeS50ZXJtLnJlcGxhY2UobmV3IFJlZ0V4cCgnLCcsICdnJyksICcgJyk7IC8vIHJlcGxhY2UgYWxsICcsJyB3aXRoICcgJ1xuICAgIHN1cGVyUXVlcnkudGVybSA9IHN1cGVyUXVlcnkudGVybS5yZXBsYWNlKG5ldyBSZWdFeHAoJyBPUiAnICsgJyQnKSwgJycpOyAvLyByZW1vdmUgbGFzdCAnIE9SICdcblxuICAgIHJldHVybiBzdXBlclF1ZXJ5O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdXBlclF1ZXJ5VGVybVBhcnQocXVlcnksIGZpbHRlck5hbWUpIHtcbiAgICAvLyByZXNlcnZlZCBjaGFyYWN0ZXJzIG9mIGVsYXN0aWMgc2VhcmNoXG4gICAgLy8gdG9kbzogYWRkICd8fCdcbiAgICBjb25zdCByZXNlcnZlZENoYXJzID0gWydcXFxcJywgJy8nLCAnXFwrJywgJy0nLCAnPScsICcmJicsICc+JywgJzwnLCAnIScsICdcXCgnLCAnXFwpJywgJ1xceycsICdcXH0nLCAnXFxbJywgJ1xcXScsICdcXF4nLCAnXCInLCAnXFx+JywgJ1xcKicsICdcXD8nLCAnOiddO1xuXG4gICAgY29uc3QgZmlsdGVyID0gcXVlcnkuZmlsdGVyc1tmaWx0ZXJOYW1lXTtcbiAgICBsZXQgdmFsdWUgPSAnJyArIGZpbHRlci52MSArICcnO1xuICAgIHJlc2VydmVkQ2hhcnMuZm9yRWFjaChjaGFyID0+IHtcbiAgICAgIGlmICh2YWx1ZS5pbmRleE9mKGNoYXIpID4gLTEpIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoJ1xcXFwnICsgY2hhciwgJ2cnKSwgJ1xcXFwnICsgY2hhcik7IC8vIGVzY2FwZXMgYWxsIHJlc2VydmVkIGNoYXJhY3RlcnNcbiAgICAgIH1cbiAgICB9KTtcbiAgICBsZXQgdHlwZXMgPSB0aGlzLmdldFN1YlR5cGVzKHF1ZXJ5LnR5cGVzWzBdKTtcbiAgICB0eXBlcy5wdXNoKHF1ZXJ5LnR5cGVzWzBdKTtcbiAgICBsZXQgaW5kZXhOYW1lID0gdGhpcy5nZXRJbmRleE5hbWVCeVFOYW1lKGZpbHRlck5hbWUpO1xuICAgIGlmICghaW5kZXhOYW1lKSB7XG4gICAgICBpbmRleE5hbWUgPSAnc3RyXycgKyBmaWx0ZXJOYW1lLnJlcGxhY2UoJy4nLCAnXycpO1xuICAgIH1cbiAgICByZXR1cm4gJygnICsgaW5kZXhOYW1lICsgJzooJyArIHZhbHVlICsgJykgQU5EIGtleV90eXBlOignICsgdHlwZXMgKyAnKSkgT1IgJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5kZXhOYW1lQnlRTmFtZShxbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0eXBlcyA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlcygpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdHlwZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0eXBlc1tpXS5lbGVtZW50cy5maW5kKGVsID0+IGVsLnFuYW1lID09PSBxbmFtZSk7XG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5pbmRleG5hbWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdWJUeXBlcyh0eXBlTmFtZSkge1xuICAgIGxldCB0eXBlcyA9IHRoaXMuc3lzdGVtU2VydmljZS5nZXRPYmplY3RUeXBlcygpO1xuICAgIGxldCBzdWJUeXBlcyA9IFtdO1xuICAgIHR5cGVzLmZvckVhY2gob2JqZWN0VHlwZSA9PiB7XG4gICAgICBjb25zdCB2YWxpZGF0b3IgPSAhIW9iamVjdFR5cGUuc3VwZXJ0eXBlcy5maW5kKCh0OiBhbnkpID0+IHQubmFtZSA9PT0gdHlwZU5hbWUpO1xuICAgICAgaWYgKHZhbGlkYXRvcikge1xuICAgICAgICBzdWJUeXBlcy5wdXNoKG9iamVjdFR5cGUucW5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICApO1xuICAgIHJldHVybiBzdWJUeXBlcztcbiAgfVxuXG4gIG5hdmlnYXRlVG9SZWZlcmVuY2UoZXZlbnQsIGVudHJ5KSB7XG4gICAgY29uc3QgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWYuc3BsaXQoL29iamVjdHxyZXN1bHR8ZmF2b3JpdGVzfGluYm94fHByb2Nlc3N8bm90aWZpY2F0aW9uc3xyZWN5Y2xlYmluLylbMF0gKyAnb2JqZWN0LycgKyBlbnRyeT8uaWQ7XG4gICAgd2luZG93Lm9wZW4odXJsLCAoZXZlbnQgJiYgZXZlbnQ/LmN0cmxLZXkpID8gJ19ibGFuaycgOiAnX3NlbGYnKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImVvLXJlZmVyZW5jZXNcIj5cbiAgPGRpdiBjbGFzcz1cIm9iamVjdC1ub3QtZm91bmRcIiAqbmdJZj1cIiFpblJlZmVyZW5jZXM/Lmxlbmd0aCAmJiAhb3V0UmVmZXJlbmNlcz8ubGVuZ3RoOyBlbHNlIHJlZkNvbnRhaW5lclwiPlxuICAgIDxkaXY+e3snZW8ucmVmZXJlbmNlcy5vYmplY3Qubm90Zm91bmQnIHwgdHJhbnNsYXRlfX08L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlICNyZWZDb250YWluZXI+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tYnV0dG9uc1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImdyaWRsYWJlbHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JpZGxhYmVsXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBzaG93SW5SZWZlcmVuY2VzfVwiIChjbGljayk9XCJzd2l0Y2hMaXN0VmlzaWJpbGl0eVRvKCdpbicpXCJcbiAgICAgICAgICAgIHRpdGxlPVwie3snZW8ucmVmZXJlbmNlcy50by5sYWJlbCcgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eydlby5yZWZlcmVuY2VzLnRvLmxhYmVsJyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmlkbGFiZWxcIiBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IHNob3dPdXRSZWZlcmVuY2VzfVwiIChjbGljayk9XCJzd2l0Y2hMaXN0VmlzaWJpbGl0eVRvKCdvdXQnKVwiXG4gICAgICAgICAgICB0aXRsZT1cInt7J2VvLnJlZmVyZW5jZXMuZnJvbS5sYWJlbCcgfCB0cmFuc2xhdGV9fVwiPlxuICAgICAgICAgICAgICA8c3Bhbj57eydlby5yZWZlcmVuY2VzLmZyb20ubGFiZWwnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxhIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIiBbcm91dGVyTGlua109XCInL3Jlc3VsdCdcIiBbcXVlcnlQYXJhbXNdPVwic3VwZXJRdWVyeVBhcmFtc1wiIHRpdGxlPVwie3snZW8ucmVmZXJlbmNlcy5vcGVuLnJlc3VsdGxpc3QnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgICAgPHNwYW4+e3snZW8ucmVmZXJlbmNlcy5vcGVuLnJlc3VsdGxpc3QnIHwgdHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICA8L2E+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZW8tcmVmZXJlbmNlcy1saXN0c1wiPlxuXG4gICAgICA8IS0tIGxpc3Qgb2YgaW5SZWZlcmVuY2VzIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdGxpc3QtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieydoaWRkZW4nOiAhc2hvd0luUmVmZXJlbmNlc31cIj5cblxuICAgICAgICBAaWYgKGluUmVmZXJlbmNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlZmVyZW5jZUxpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIGluUmVmZXJlbmNlczsgdHJhY2sgZW50cnkpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiAoY2xpY2spPVwibmF2aWdhdGVUb1JlZmVyZW5jZSgkZXZlbnQsIGVudHJ5KVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJpY29uXCIgW29iamVjdFR5cGVdPVwiZW50cnk/Lm1ldGFEYXRhPy5vYmplY3RUeXBlXCIgW2ljb25UaXRsZV09XCJlbnRyeT8ubWV0YURhdGE/Lm9iamVjdFR5cGU/LmxhYmVsXCI+PC9lby1pY29uPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRpdGxlXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ZW50cnk/LnRpdGxlfX1cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAgICAgICAge3tlbnRyeT8uZGVzY3JpcHRpb259fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZW1vdGUtZWxlbWVudFwiPlxuICAgICAgICAgICAgICAgICAge3snZW8ucmVmZXJlbmNlcy5maWVsZC5sYWJlbCcgfCB0cmFuc2xhdGV9fSB7e2VudHJ5Py5tZXRhRGF0YT8ucmVtb3RlRWxlbWVudD8ubGFiZWx9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm5vdGZvdW5kXCI+e3snZW8ucmVmZXJlbmNlcy5vYmplY3Qubm90Zm91bmQnIHwgdHJhbnNsYXRlfX08L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIDwhLS0gbGlzdCBvZiBvdXRSZWZlcmVuY2VzIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdGxpc3QtY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieydoaWRkZW4nOiAhc2hvd091dFJlZmVyZW5jZXN9XCI+XG4gICAgICAgIEBpZiAob3V0UmVmZXJlbmNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlZmVyZW5jZUxpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKGVudHJ5IG9mIG91dFJlZmVyZW5jZXM7IHRyYWNrIGVudHJ5KSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50XCIgKGNsaWNrKT1cIm5hdmlnYXRlVG9SZWZlcmVuY2UoJGV2ZW50LCBlbnRyeSlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiaWNvblwiIFtvYmplY3RUeXBlXT1cImVudHJ5Py5tZXRhRGF0YT8ub2JqZWN0VHlwZVwiIFtpY29uVGl0bGVdPVwiZW50cnk/Lm1ldGFEYXRhPy5vYmplY3RUeXBlPy5sYWJlbFwiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICB7e2VudHJ5Py50aXRsZX19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICAgICAgICAgIHt7ZW50cnk/LmRlc2NyaXB0aW9ufX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVtb3RlLWVsZW1lbnRcIj5cbiAgICAgICAgICAgICAgICAgIHt7J2VvLnJlZmVyZW5jZXMuZmllbGQubGFiZWwnIHwgdHJhbnNsYXRlfX0ge3tlbnRyeT8ubWV0YURhdGE/LmVsZW1lbnQ/LmxhYmVsfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJub3Rmb3VuZFwiPnt7J2VvLnJlZmVyZW5jZXMub2JqZWN0Lm5vdGZvdW5kJyB8IHRyYW5zbGF0ZX19PC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -93,9 +93,8 @@ let RowEditComponent = class RowEditComponent {
93
93
  saveEnabled: this.saveEnabled,
94
94
  persisted: !this.isNewRow // Not persisted if it is a new row
95
95
  };
96
- // Call the script function if row was not already saved now
96
+ this._row.tableElement.onrowedit(this._row.tableElement, row);
97
97
  if (!this.saved) {
98
- this._row.tableElement.onrowedit(this._row.tableElement, row);
99
98
  this.onFormStatusChanged();
100
99
  }
101
100
  // ... and respect the result
@@ -235,4 +234,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
235
234
  }], onDelete: [{
236
235
  type: Output
237
236
  }] } });
238
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50LXRhYmxlL3Jvdy1lZGl0L3Jvdy1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC10YWJsZS9yb3ctZWRpdC9yb3ctZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHMUgsT0FBTyxFQUFzQixLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDeEQsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQU9uRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUk1Rjs7R0FFRztBQVNJLElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBNkIzQixJQUFJLGdCQUFnQixDQUFDLEdBQVk7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUU3QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMs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QkFDRSxhQUFhLGlCQUdSLGlCQUFpQixDQUFDLElBQUksYUFDMUIsQ0FBQyx1QkFBdUIsQ0FBQzt5T0FHUixtQkFBbUI7c0JBQTlDLFNBQVM7dUJBQUMsZUFBZTtnQkF3Q2pCLFlBQVk7c0JBQXBCLEtBQUs7Z0JBR0YsR0FBRztzQkFETixLQUFLO2dCQWlCSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1VudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0xvY2FsU3RvcmFnZVNlcnZpY2UsIFV0aWxzfSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtQZW5kaW5nQ2hhbmdlc1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3BlbmRpbmctY2hhbmdlcy9wZW5kaW5nLWNoYW5nZXMuc2VydmljZSc7XG5pbXBvcnQge0Zvcm1TdGF0dXNDaGFuZ2VkRXZlbnR9IGZyb20gJy4uLy4uLy4uL2Zvcm0tc3RhdHVzLWNoYW5nZWQtZXZlbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7Rm9ybUdlblJlc3VsdCwgT2JqZWN0Rm9ybUhlbHBlclNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL29iamVjdC1mb3JtLWhlbHBlci5zZXJ2aWNlJztcbmltcG9ydCB7T2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS1jb250cm9sLXdyYXBwZXInO1xuaW1wb3J0IHtPYmplY3RGb3JtR3JvdXB9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtLWdyb3VwLm1vZGVsJztcbmltcG9ydCB7T2JqZWN0Rm9ybVNjcmlwdFNlcnZpY2V9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtLXNjcmlwdC9vYmplY3QtZm9ybS1zY3JpcHQuc2VydmljZSc7XG5pbXBvcnQge09iamVjdEZvcm1TY3JpcHRpbmdTY29wZX0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0tc2NyaXB0L29iamVjdC1mb3JtLXNjcmlwdGluZy1zY29wZSc7XG5pbXBvcnQge0VkaXRSb3csIEVkaXRSb3dSZXN1bHR9IGZyb20gJy4uL2Zvcm0tZWxlbWVudC5pbnRlcmZhY2UnO1xuXG4vKipcbiAqIENvbXBvbmVudCBmb3IgZWRpdGluZyBhIHJvdyBmcm9tIGFuIG9iamVjdCBmb3JtcyB0YWJsZS5cbiAqL1xuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1yb3ctZWRpdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb3ctZWRpdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Jvdy1lZGl0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW09iamVjdEZvcm1TY3JpcHRTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgUm93RWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ2NvbmZpcm1EZWxldGUnKSBjb25maXJtRGVsZXRlQnV0dG9uOiBFbGVtZW50UmVmO1xuXG4gIC8vIElEIHNldCBieSBwZW5kaW5nQ2hhbmdlcyBzZXJ2aWNlIHdoZW4gZWRpdGluZyByb3cgZGF0YVxuICAvLyBVc2VkIHRvIGZpbmlzaCB0aGUgcGVuZGluZyB0YXNrIHdoZW4gZWRpdGluZyBpcyBkb25lXG4gIHBlbmRpbmdUYXNrSWQ6IHN0cmluZztcblxuICBlZGl0Rm9ybTogT2JqZWN0Rm9ybUdyb3VwO1xuICBlZGl0Rm9ybUNvbnRyb2xzOiBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXJbXSA9IFtdO1xuICBwcml2YXRlIHNjcmlwdGluZ1Njb3BlOiBPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGU7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgLy8gcHJvcGVydHkgZm9yIGhvbGRpbmcgdGhlIGZvcm1zIGRhdGEgdXNlZCBmb3IgY29tcGFyaXNvbiB3aGVuIGEgZm9ybS1jaGFuZ2VkLWV2ZW50XG4gIC8vIGlzIGZldGNoZWQgdG8gaW5kaWNhdGUgd2hlciBvciBub3QgdGhlIGluZGV4ZGF0YSB3ZXJlIGNoYW5nZWQgb3IganVzdCB0aGUgcHJvcGVydGllc1xuICAvLyBvZiB0aGUgZm9ybSBlbGVtZW50cyAoZWcuIGZvcm0gc2NyaXB0IHNldHRpbmcgZmllbGRzIHRvIHJlYWRvbmx5KVxuICBwcml2YXRlIGZvcm1EYXRhOiBhbnk7XG5cbiAgX3JvdzogRWRpdFJvdztcbiAgaXNOZXdSb3c6IGJvb2xlYW47XG4gIGZvcm1TdGF0ZT86IEZvcm1TdGF0dXNDaGFuZ2VkRXZlbnQ7XG4gIHF1ZXJ5RW5hYmxlZCA9IHRydWU7XG4gIGNvcHlFbmFibGVkID0gdHJ1ZTtcbiAgZGVsZXRlRW5hYmxlZCA9IHRydWU7XG4gIHNhdmVFbmFibGVkID0gdHJ1ZTtcbiAgY3JlYXRlTmV3Q2hlY2tib3g6IFVudHlwZWRGb3JtQ29udHJvbDtcbiAgY3JlYXRlTmV3Um93ID0gZmFsc2U7XG4gIF9zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gIHNhdmluZyA9IGZhbHNlO1xuICBzYXZlZCA9IGZhbHNlO1xuXG4gIHNldCBzaG93RGVsZXRlRGlhbG9nKHZhbDogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dEZWxldGVEaWFsb2cgPSB2YWw7XG5cbiAgICBpZiAodGhpcy5fc2hvd0RlbGV0ZURpYWxvZykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmNvbmZpcm1EZWxldGVCdXR0b24ubmF0aXZlRWxlbWVudC5mb2N1cygpLCAwKTtcbiAgICB9XG4gIH1cblxuICBnZXQgc2hvd0RlbGV0ZURpYWxvZygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvd0RlbGV0ZURpYWxvZztcbiAgfVxuXG4gIEBJbnB1dCgpIGxpbWl0UmVhY2hlZDogYm9vbGVhbjtcblxuICBASW5wdXQoKVxuICBzZXQgcm93KHI6IEVkaXRSb3cpIHtcbiAgICBpZiAoIXRoaXMuX3JvdyB8fCB0aGlzLl9yb3cuaW5kZXggIT09IHI/LmluZGV4KSB7XG4gICAgICB0aGlzLnNhdmVkID0gZmFsc2U7XG4gICAgfVxuICAgIHRoaXMuX3JvdyA9IHI7XG4gICAgdGhpcy5mb3JtRGF0YSA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnF1ZXJ5RW5hYmxlZCA9IHI/LnNpdHVhdGlvbiA9PT0gJ1NFQVJDSCc7XG4gICAgdGhpcy5jb3B5RW5hYmxlZCA9ICF0aGlzLnF1ZXJ5RW5hYmxlZDtcbiAgICB0aGlzLnNhdmVFbmFibGVkID0gIXRoaXMucXVlcnlFbmFibGVkO1xuICAgIHRoaXMuZGVsZXRlRW5hYmxlZCA9ICF0aGlzLnF1ZXJ5RW5hYmxlZDtcbiAgICB0aGlzLmlzTmV3Um93ID0gdGhpcy5fcm93Py5pbmRleCA9PT0gLTE7XG4gICAgdGhpcy51bnN1YnNjcmliZUFsbCgpO1xuXG4gICAgdGhpcy5fYnVpbGRSb3dFZGl0Rm9ybSgpO1xuICB9XG5cbiAgQE91dHB1dCgpIG9uQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxFZGl0Um93UmVzdWx0PigpO1xuICBAT3V0cHV0KCkgb25TYXZlQ29weSA9IG5ldyBFdmVudEVtaXR0ZXI8RWRpdFJvd1Jlc3VsdD4oKTtcbiAgQE91dHB1dCgpIG9uRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwZW5kaW5nQ2hhbmdlczogUGVuZGluZ0NoYW5nZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybVNjcmlwdFNlcnZpY2U6IE9iamVjdEZvcm1TY3JpcHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZm9ybUhlbHBlclNlcnZpY2U6IE9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlciwgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogTG9jYWxTdG9yYWdlU2VydmljZSkge1xuICAgIHRoaXMuY3JlYXRlTmV3Um93ID0gISF0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ2NyZWF0ZU5ld1JvdycpO1xuICAgIHRoaXMuY3JlYXRlTmV3Q2hlY2tib3ggPSB0aGlzLmZiLmNvbnRyb2wodGhpcy5jcmVhdGVOZXdSb3cpO1xuICAgIHRoaXMuY3JlYXRlTmV3Q2hlY2tib3gudmFsdWVDaGFuZ2VzLnBpcGUodW50aWxEZXN0cm95ZWQodGhpcykpLnN1YnNjcmliZSgodikgPT4ge1xuICAgICAgdGhpcy5jcmVhdGVOZXdSb3cgPSB2O1xuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5zZXRJdGVtKCdjcmVhdGVOZXdSb3cnLCB0aGlzLmNyZWF0ZU5ld1Jvdyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAqIFJldHVybnMgdGhlIG9ic2VydmVkIG1vZGVsIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgY3VycmVudCBmb3JtIHNjcmlwdCBydW5uaW5nLiBJZiB0aGVyZSBpc1xuICogbm8gZm9ybSBzY3JpcHQsIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIE5VTEwuXG4gKiBAcmV0dXJuc1xuICovXG4gIHByaXZhdGUgX2dldE9ic2VydmVkU2NyaXB0TW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2NyaXB0aW5nU2NvcGUgPyB0aGlzLnNjcmlwdGluZ1Njb3BlLmdldE1vZGVsKCkgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Rm9ybURhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUhlbHBlclNlcnZpY2UuZXh0cmFjdEZvcm1EYXRhKFxuICAgICAgdGhpcy5lZGl0Rm9ybSxcbiAgICAgIHRoaXMuX3Jvdy5zaXR1YXRpb24sXG4gICAgICB0aGlzLl9yb3cuZm9ybS5kYXRhLCB0cnVlXG4gICAgKTtcblxuICB9XG5cbiAgb25Gb3JtUmVhZHkoKSB7XG4gICAgLy8gZXhlY3V0ZSBhZnRlciBmb3JtIGhhcyBiZWVuIHNldCB1cCwgYmVjYXVzZSBvdGhlcndpc2Ugbm90IGFsbCBvZiB0aGUgY29tcG9uZW50cyBhcmUgcmVhZHkgdG8gYmUgdXNlZFxuICAgIC8vIGlmIGZvciBleGFtcGxlIGEgZm9ybSBzY3JpcHQgZXhlY3V0ZWQgYG9ucm93ZWRpdGAgdHJpZXMgdG8gYXBwbHkgYSBmaWx0ZXIgb3Igc29tZXRoaW5nIGxpa2UgdGhhdFxuICAgIGlmICh0aGlzLl9yb3cudGFibGVFbGVtZW50Lm9ucm93ZWRpdCAmJiAhdGhpcy5fcm93LnRhYmxlRWxlbWVudC5yZWFkb25seSkge1xuXG4gICAgICAvLyBHZW5lcmF0ZSByb3cgQVBJIG9iamVjdCAod3JhcHBlcikgZm9yIHRoZSBzY3JpcHRcbiAgICAgIGNvbnN0IHJvdyA9IHtcbiAgICAgICAgbW9kZWw6IHRoaXMuX2dldE9ic2VydmVkU2NyaXB0TW9kZWwoKSxcbiAgICAgICAgaW5kZXg6IHRoaXMuX3Jvdy5pbmRleCxcbiAgICAgICAgY29weUVuYWJsZWQ6IHRoaXMuY29weUVuYWJsZWQsXG4gICAgICAgIGRlbGV0ZUVuYWJsZWQ6IHRoaXMuZGVsZXRlRW5hYmxlZCxcbiAgICAgICAgc2F2ZUVuYWJsZWQ6IHRoaXMuc2F2ZUVuYWJsZWQsXG4gICAgICAgIHBlcnNpc3RlZDogIXRoaXMuaXNOZXdSb3cgLy8gTm90IHBlcnNpc3RlZCBpZiBpdCBpcyBhIG5ldyByb3dcbiAgICAgIH07XG4gICAgICAvLyBDYWxsIHRoZSBzY3JpcHQgZnVuY3Rpb24gaWYgcm93IHdhcyBub3QgYWxyZWFkeSBzYXZlZCBub3dcbiAgICAgIGlmICghdGhpcy5zYXZlZCkge1xuICAgICAgICB0aGlzLl9yb3cudGFibGVFbGVtZW50Lm9ucm93ZWRpdCh0aGlzLl9yb3cudGFibGVFbGVtZW50LCByb3cpO1xuICAgICAgICB0aGlzLm9uRm9ybVN0YXR1c0NoYW5nZWQoKTtcbiAgICAgIH1cbiAgICAgIC8vIC4uLiBhbmQgcmVzcGVjdCB0aGUgcmVzdWx0XG4gICAgICB0aGlzLmNvcHlFbmFibGVkID0gcm93LmNvcHlFbmFibGVkO1xuICAgICAgdGhpcy5kZWxldGVFbmFibGVkID0gcm93LmRlbGV0ZUVuYWJsZWQ7XG4gICAgICB0aGlzLnNhdmVFbmFibGVkID0gcm93LnNhdmVFbmFibGVkO1xuICAgIH1cbiAgfVxuXG4gIG9uRm9ybVN0YXR1c0NoYW5nZWQoKSB7XG5cbiAgICAvLyBjaGVjayBpZiBpbmRleGRhdGEgaGFzIGJlZW4gY2hhbmdlZFxuICAgIGxldCBjdXJyZW50Rm9ybURhdGEgPSB0aGlzLl9nZXRGb3JtRGF0YSgpO1xuICAgIGxldCBpZHhDaGFuZ2UgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1EYXRhKSAhPT0gSlNPTi5zdHJpbmdpZnkoY3VycmVudEZvcm1EYXRhKTtcbiAgICB0aGlzLmZvcm1EYXRhID0gVXRpbHMuZm9ybURhdGFQYXJzZShVdGlscy5mb3JtRGF0YVN0cmluZ2lmeShjdXJyZW50Rm9ybURhdGEpKTtcblxuICAgIHRoaXMuZm9ybVN0YXRlID0ge1xuICAgICAgaW52YWxpZDogdGhpcy5lZGl0Rm9ybS5pbnZhbGlkLFxuICAgICAgZGlydHk6IHRoaXMuZWRpdEZvcm0uZGlydHksXG4gICAgICBkYXRhOiB0aGlzLmZvcm1EYXRhLFxuICAgICAgaW5kZXhkYXRhQ2hhbmdlZDogaWR4Q2hhbmdlXG4gICAgfTtcbiAgICBpZiAodGhpcy5mb3JtU3RhdGUuaW5kZXhkYXRhQ2hhbmdlZCkge1xuICAgICAgdGhpcy5zdGFydFBlbmRpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYnVpbGRSb3dFZGl0Rm9ybSgpIHtcbiAgICBpZiAodGhpcy5fcm93KSB7XG4gICAgICBjb25zdCBmb3JtR2VuUmVzOiBGb3JtR2VuUmVzdWx0ID0gdGhpcy5mb3JtSGVscGVyU2VydmljZS5idWlsZFJlYWN0aXZlRm9ybShcbiAgICAgICAge1xuICAgICAgICAgIGZvcm1Nb2RlbDoge1xuICAgICAgICAgICAgc2l0dWF0aW9uOiB0aGlzLl9yb3cuc2l0dWF0aW9uLFxuICAgICAgICAgICAgZWxlbWVudHM6IFt7XG4gICAgICAgICAgICAgIHR5cGU6ICdvMm1Hcm91cCcsXG4gICAgICAgICAgICAgIGVsZW1lbnRzOiBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5fcm93LmZvcm0uZWxlbWVudHMpXG4gICAgICAgICAgICB9XVxuICAgICAgICAgIH0sIGRpc2FibGVkOiB0aGlzLl9yb3cuZm9ybS5kaXNhYmxlZCwgZGF0YTogdGhpcy5fcm93LmZvcm0uZGF0YVxuICAgICAgICB9LCB0aGlzLmZvcm1TY3JpcHRTZXJ2aWNlLCB0cnVlXG4gICAgICApO1xuICAgICAgdGhpcy5lZGl0Rm9ybSA9IGZvcm1HZW5SZXMuZm9ybTtcbiAgICAgIHRoaXMuc2NyaXB0aW5nU2NvcGUgPSBmb3JtR2VuUmVzLnNjcmlwdGluZ1Njb3BlO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zID0gZm9ybUdlblJlcy5jb250cm9sVmFsdWVTdWJzY3JpcHRpb25zO1xuXG4gICAgICBjb25zdCBjdHJscyA9ICh0aGlzLmVkaXRGb3JtLmNvbnRyb2xzLmNvcmUgYXMgT2JqZWN0Rm9ybUdyb3VwKS5jb250cm9scztcbiAgICAgIHRoaXMuZWRpdEZvcm1Db250cm9scyA9IE9iamVjdC5rZXlzKGN0cmxzKS5tYXAoayA9PiBjdHJsc1trXSBhcyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIpXG4gICAgICB0aGlzLmZvcm1TdGF0ZSA9IHtcbiAgICAgICAgaW52YWxpZDogdGhpcy5lZGl0Rm9ybS5pbnZhbGlkLFxuICAgICAgICBkaXJ0eTogdGhpcy5lZGl0Rm9ybS5kaXJ0eSxcbiAgICAgICAgZGF0YTogdGhpcy5mb3JtRGF0YSxcbiAgICAgICAgaW5kZXhkYXRhQ2hhbmdlZDogZmFsc2VcbiAgICAgIH07XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmVkaXRGb3JtKSByZXR1cm47XG4gICAgICAgIGxldCBmb3JtU3RhdGVXYXRjaCA9IHRoaXMuZWRpdEZvcm0uc3RhdHVzQ2hhbmdlcy5waXBlKClcbiAgICAgICAgICAuc3Vic2NyaWJlKChlKSA9PiB0aGlzLm9uRm9ybVN0YXR1c0NoYW5nZWQoKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGZvcm1TdGF0ZVdhdGNoKTtcbiAgICAgICAgdGhpcy5vbkZvcm1SZWFkeSgpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UGVuZGluZygpIHtcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXG4gICAgLy8gcGVuZGluZyB0YXNrIHdpbGwgb25seSBiZSBzdGFydGVkIG9uY2UgdW50aWwgaXQgd2FzIGZpbmlzaGVkXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xuICAgIH1cbiAgfVxuXG4gIGZpbmlzaFBlbmRpbmcoKSB7XG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcy5maW5pc2hUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICB0aGlzLnNhdmVkID0gdHJ1ZTtcbiAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KHtcbiAgICAgICAgICBpbmRleDogdGhpcy5fcm93LmluZGV4LFxuICAgICAgICAgIHJvd0RhdGE6IHRoaXMuX2dldEZvcm1EYXRhKCksXG4gICAgICAgICAgY3JlYXRlTmV3Um93OiB0aGlzLmNyZWF0ZU5ld1Jvd1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHNhdmVDb3B5KCkge1xuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICB0aGlzLm9uU2F2ZUNvcHkuZW1pdCh7XG4gICAgICAgICAgaW5kZXg6IHRoaXMuX3Jvdy5pbmRleCxcbiAgICAgICAgICByb3dEYXRhOiB0aGlzLl9nZXRGb3JtRGF0YSgpLFxuICAgICAgICAgIGNyZWF0ZU5ld1JvdzogdGhpcy5jcmVhdGVOZXdSb3dcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICBkZWxldGUoKSB7XG4gICAgdGhpcy5vbkRlbGV0ZS5lbWl0KHRoaXMuX3Jvdy5pbmRleCk7XG4gICAgdGhpcy5zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIHVuc3Vic2NyaWJlQWxsKCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3ctZWRpdFwiPlxuICA8ZGl2IGNsYXNzPVwiZWRpdC1oZWFkZXJcIiAqbmdJZj1cIiFxdWVyeUVuYWJsZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibmV3LWluZGljYXRvclwiICpuZ0lmPVwiaXNOZXdSb3dcIiB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmluZGljYXRvci5uZXc8L2Rpdj5cbiAgICA8ZGl2PjwvZGl2PlxuICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NsZWFyLnN2ZydcIiAoY2xpY2spPVwiY2FuY2VsKClcIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWwtaWNvblwiXG4gICAgICBbaWNvblRpdGxlXT1cIignZW8uY3RhLmJ1dHRvbi5jYW5jZWwnIHwgdHJhbnNsYXRlKVwiPjwvZW8taWNvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImVkaXRGb3JtXCIgKm5nSWY9XCJlZGl0Rm9ybVwiPlxuICAgIDxlby1mb3JtLWVsZW1lbnQgKm5nRm9yPVwibGV0IGMgb2YgZWRpdEZvcm1Db250cm9sc1wiIFtlbGVtZW50XT1cImNcIiBbc2l0dWF0aW9uXT1cIl9yb3c/LnNpdHVhdGlvblwiIFtza2lwVG9nZ2xlXT1cImZhbHNlXCI+XG4gICAgPC9lby1mb3JtLWVsZW1lbnQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgPGVvLWNoZWNrYm94ICpuZ0lmPVwiaXNOZXdSb3dcIiB0aXRsZT1cInt7J2VvLmZvcm0udGFibGUub3B0aW9ucy5jaGVja2JveC5uZXcudGl0bGUnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImNyZWF0ZU5ld0NoZWNrYm94XCI+PC9lby1jaGVja2JveD5cbiAgICA8c3BhbiAqbmdJZj1cImlzTmV3Um93XCIgY2xhc3M9XCJhZGQtbGFiZWxcIiB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmNoZWNrYm94Lm5ldzwvc3Bhbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRlbGV0ZUVuYWJsZWQgJiYgIWlzTmV3Um93ICYmICFfcm93Py5mb3JtLmRpc2FibGVkICYmICFxdWVyeUVuYWJsZWRcIlxuICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVEaWFsb2cgPSB0cnVlO1wiIHRpdGxlPVwie3snZW8uY3RhLmJ1dHRvbi5kZWxldGUnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3RyYXNoLnN2ZydcIj48L2VvLWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmVDb3B5KClcIiBjbGFzcz1cInNlY29cIiAqbmdJZj1cImNvcHlFbmFibGVkICYmICFpc05ld1JvdyAmJiAhX3Jvdz8uZm9ybS5kaXNhYmxlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwibGltaXRSZWFjaGVkIHx8IHNhdmluZyB8fCBmb3JtU3RhdGU/LmludmFsaWRcIiB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5jb3B5PC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUoKVwiIGNsYXNzPVwicHJpbWFyeVwiICpuZ0lmPVwic2F2ZUVuYWJsZWQgJiYgIV9yb3c/LmZvcm0uZGlzYWJsZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cIihsaW1pdFJlYWNoZWQgJiYgaXNOZXdSb3cpIHx8IHNhdmluZyB8fCBmb3JtU3RhdGU/LmludmFsaWQgfHwgKCFmb3JtU3RhdGU/LmRpcnR5ICYmICFpc05ld1JvdylcIj57e1xuICAgICAgJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4uc2F2ZScgKyAoaXNOZXdSb3cgPyAnLm5ldycgOiAnJykgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgIDwhLS0gcXVlcnkgYnV0dG9uIGZvciBTRUFSQ0ggc2l0dWF0aW9uIC0tPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIiBjbGFzcz1cInByaW1hcnlcIiAqbmdJZj1cInF1ZXJ5RW5hYmxlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybVN0YXRlPy5pbnZhbGlkIHx8ICFmb3JtU3RhdGU/LmluZGV4ZGF0YUNoYW5nZWRcIiB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5zYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuXG48L2Rpdj5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuY29uZmlybS5kZWxldGUnIHwgdHJhbnNsYXRlKVwiIFsodmlzaWJsZSldPVwic2hvd0RlbGV0ZURpYWxvZ1wiXG4gIFttaW5XaWR0aF09XCI0MDBcIj5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGZsZXgtcm93XCIgc3R5bGU9XCJwYWRkaW5nOiA4cHg7XCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gY2FuY2VsXCIgKGNsaWNrKT1cInNob3dEZWxldGVEaWFsb2cgPSBmYWxzZVwiXG4gICAgICB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5jYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjY29uZmlybURlbGV0ZSAoY2xpY2spPVwiZGVsZXRlKClcIiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcbiAgICAgIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLm9rPC9idXR0b24+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+Il19
237
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWVkaXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1mcmFtZXdvcmsvb2JqZWN0LWZvcm0vb2JqZWN0LWZvcm0vZm9ybS1lbGVtZW50LXRhYmxlL3Jvdy1lZGl0L3Jvdy1lZGl0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvZW8tZnJhbWV3b3JrL29iamVjdC1mb3JtL29iamVjdC1mb3JtL2Zvcm0tZWxlbWVudC10YWJsZS9yb3ctZWRpdC9yb3ctZWRpdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHMUgsT0FBTyxFQUFzQixLQUFLLEVBQUMsTUFBTSxjQUFjLENBQUM7QUFDeEQsT0FBTyxFQUFDLFlBQVksRUFBRSxjQUFjLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQU9uRSxPQUFPLEVBQUMsdUJBQXVCLEVBQUMsTUFBTSxxREFBcUQsQ0FBQzs7Ozs7Ozs7Ozs7OztBQUk1Rjs7R0FFRztBQVNJLElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBNkIzQixJQUFJLGdCQUFnQixDQUFDLEdBQVk7UUFDL0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUU3QixJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQzNCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBSSxnQkFBZ0I7UUFDbEIsT0FBTyxJQUFJLENBQUMs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UixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsdUJBQXVCLENBQUM7eU9BR1IsbUJBQW1CO3NCQUE5QyxTQUFTO3VCQUFDLGVBQWU7Z0JBd0NqQixZQUFZO3NCQUFwQixLQUFLO2dCQUdGLEdBQUc7c0JBRE4sS0FBSztnQkFpQkksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtVbnR5cGVkRm9ybUJ1aWxkZXIsIFVudHlwZWRGb3JtQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtMb2NhbFN0b3JhZ2VTZXJ2aWNlLCBVdGlsc30gZnJvbSAnQGVvLXNkay9jb3JlJztcbmltcG9ydCB7VW50aWxEZXN0cm95LCB1bnRpbERlc3Ryb3llZH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7UGVuZGluZ0NoYW5nZXNTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9lby1mcmFtZXdvcmstY29yZS9wZW5kaW5nLWNoYW5nZXMvcGVuZGluZy1jaGFuZ2VzLnNlcnZpY2UnO1xuaW1wb3J0IHtGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50fSBmcm9tICcuLi8uLi8uLi9mb3JtLXN0YXR1cy1jaGFuZ2VkLWV2ZW50LmludGVyZmFjZSc7XG5pbXBvcnQge0Zvcm1HZW5SZXN1bHQsIE9iamVjdEZvcm1IZWxwZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9vYmplY3QtZm9ybS1oZWxwZXIuc2VydmljZSc7XG5pbXBvcnQge09iamVjdEZvcm1Db250cm9sV3JhcHBlcn0gZnJvbSAnLi4vLi4vb2JqZWN0LWZvcm0tY29udHJvbC13cmFwcGVyJztcbmltcG9ydCB7T2JqZWN0Rm9ybUdyb3VwfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS1ncm91cC5tb2RlbCc7XG5pbXBvcnQge09iamVjdEZvcm1TY3JpcHRTZXJ2aWNlfSBmcm9tICcuLi8uLi9vYmplY3QtZm9ybS1zY3JpcHQvb2JqZWN0LWZvcm0tc2NyaXB0LnNlcnZpY2UnO1xuaW1wb3J0IHtPYmplY3RGb3JtU2NyaXB0aW5nU2NvcGV9IGZyb20gJy4uLy4uL29iamVjdC1mb3JtLXNjcmlwdC9vYmplY3QtZm9ybS1zY3JpcHRpbmctc2NvcGUnO1xuaW1wb3J0IHtFZGl0Um93LCBFZGl0Um93UmVzdWx0fSBmcm9tICcuLi9mb3JtLWVsZW1lbnQuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBDb21wb25lbnQgZm9yIGVkaXRpbmcgYSByb3cgZnJvbSBhbiBvYmplY3QgZm9ybXMgdGFibGUuXG4gKi9cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tcm93LWVkaXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcm93LWVkaXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yb3ctZWRpdC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtPYmplY3RGb3JtU2NyaXB0U2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFJvd0VkaXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdjb25maXJtRGVsZXRlJykgY29uZmlybURlbGV0ZUJ1dHRvbjogRWxlbWVudFJlZjtcblxuICAvLyBJRCBzZXQgYnkgcGVuZGluZ0NoYW5nZXMgc2VydmljZSB3aGVuIGVkaXRpbmcgcm93IGRhdGFcbiAgLy8gVXNlZCB0byBmaW5pc2ggdGhlIHBlbmRpbmcgdGFzayB3aGVuIGVkaXRpbmcgaXMgZG9uZVxuICBwZW5kaW5nVGFza0lkOiBzdHJpbmc7XG5cbiAgZWRpdEZvcm06IE9iamVjdEZvcm1Hcm91cDtcbiAgZWRpdEZvcm1Db250cm9sczogT2JqZWN0Rm9ybUNvbnRyb2xXcmFwcGVyW10gPSBbXTtcbiAgcHJpdmF0ZSBzY3JpcHRpbmdTY29wZTogT2JqZWN0Rm9ybVNjcmlwdGluZ1Njb3BlO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIC8vIHByb3BlcnR5IGZvciBob2xkaW5nIHRoZSBmb3JtcyBkYXRhIHVzZWQgZm9yIGNvbXBhcmlzb24gd2hlbiBhIGZvcm0tY2hhbmdlZC1ldmVudFxuICAvLyBpcyBmZXRjaGVkIHRvIGluZGljYXRlIHdoZXIgb3Igbm90IHRoZSBpbmRleGRhdGEgd2VyZSBjaGFuZ2VkIG9yIGp1c3QgdGhlIHByb3BlcnRpZXNcbiAgLy8gb2YgdGhlIGZvcm0gZWxlbWVudHMgKGVnLiBmb3JtIHNjcmlwdCBzZXR0aW5nIGZpZWxkcyB0byByZWFkb25seSlcbiAgcHJpdmF0ZSBmb3JtRGF0YTogYW55O1xuXG4gIF9yb3c6IEVkaXRSb3c7XG4gIGlzTmV3Um93OiBib29sZWFuO1xuICBmb3JtU3RhdGU/OiBGb3JtU3RhdHVzQ2hhbmdlZEV2ZW50O1xuICBxdWVyeUVuYWJsZWQgPSB0cnVlO1xuICBjb3B5RW5hYmxlZCA9IHRydWU7XG4gIGRlbGV0ZUVuYWJsZWQgPSB0cnVlO1xuICBzYXZlRW5hYmxlZCA9IHRydWU7XG4gIGNyZWF0ZU5ld0NoZWNrYm94OiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIGNyZWF0ZU5ld1JvdyA9IGZhbHNlO1xuICBfc2hvd0RlbGV0ZURpYWxvZyA9IGZhbHNlO1xuICBzYXZpbmcgPSBmYWxzZTtcbiAgc2F2ZWQgPSBmYWxzZTtcblxuICBzZXQgc2hvd0RlbGV0ZURpYWxvZyh2YWw6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93RGVsZXRlRGlhbG9nID0gdmFsO1xuXG4gICAgaWYgKHRoaXMuX3Nob3dEZWxldGVEaWFsb2cpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jb25maXJtRGVsZXRlQnV0dG9uLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHNob3dEZWxldGVEaWFsb2coKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3dEZWxldGVEaWFsb2c7XG4gIH1cblxuICBASW5wdXQoKSBsaW1pdFJlYWNoZWQ6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgc2V0IHJvdyhyOiBFZGl0Um93KSB7XG4gICAgaWYgKCF0aGlzLl9yb3cgfHwgdGhpcy5fcm93LmluZGV4ICE9PSByPy5pbmRleCkge1xuICAgICAgdGhpcy5zYXZlZCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLl9yb3cgPSByO1xuICAgIHRoaXMuZm9ybURhdGEgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5xdWVyeUVuYWJsZWQgPSByPy5zaXR1YXRpb24gPT09ICdTRUFSQ0gnO1xuICAgIHRoaXMuY29weUVuYWJsZWQgPSAhdGhpcy5xdWVyeUVuYWJsZWQ7XG4gICAgdGhpcy5zYXZlRW5hYmxlZCA9ICF0aGlzLnF1ZXJ5RW5hYmxlZDtcbiAgICB0aGlzLmRlbGV0ZUVuYWJsZWQgPSAhdGhpcy5xdWVyeUVuYWJsZWQ7XG4gICAgdGhpcy5pc05ld1JvdyA9IHRoaXMuX3Jvdz8uaW5kZXggPT09IC0xO1xuICAgIHRoaXMudW5zdWJzY3JpYmVBbGwoKTtcblxuICAgIHRoaXMuX2J1aWxkUm93RWRpdEZvcm0oKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8RWRpdFJvd1Jlc3VsdD4oKTtcbiAgQE91dHB1dCgpIG9uU2F2ZUNvcHkgPSBuZXcgRXZlbnRFbWl0dGVyPEVkaXRSb3dSZXN1bHQ+KCk7XG4gIEBPdXRwdXQoKSBvbkRlbGV0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcGVuZGluZ0NoYW5nZXM6IFBlbmRpbmdDaGFuZ2VzU2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1TY3JpcHRTZXJ2aWNlOiBPYmplY3RGb3JtU2NyaXB0U2VydmljZSxcbiAgICBwcml2YXRlIGZvcm1IZWxwZXJTZXJ2aWNlOiBPYmplY3RGb3JtSGVscGVyU2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UpIHtcbiAgICB0aGlzLmNyZWF0ZU5ld1JvdyA9ICEhdGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKCdjcmVhdGVOZXdSb3cnKTtcbiAgICB0aGlzLmNyZWF0ZU5ld0NoZWNrYm94ID0gdGhpcy5mYi5jb250cm9sKHRoaXMuY3JlYXRlTmV3Um93KTtcbiAgICB0aGlzLmNyZWF0ZU5ld0NoZWNrYm94LnZhbHVlQ2hhbmdlcy5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKHYpID0+IHtcbiAgICAgIHRoaXMuY3JlYXRlTmV3Um93ID0gdjtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0SXRlbSgnY3JlYXRlTmV3Um93JywgdGhpcy5jcmVhdGVOZXdSb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gKiBSZXR1cm5zIHRoZSBvYnNlcnZlZCBtb2RlbCB0aGF0IHdhcyBwYXNzZWQgdG8gdGhlIGN1cnJlbnQgZm9ybSBzY3JpcHQgcnVubmluZy4gSWYgdGhlcmUgaXNcbiAqIG5vIGZvcm0gc2NyaXB0LCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBOVUxMLlxuICogQHJldHVybnNcbiAqL1xuICBwcml2YXRlIF9nZXRPYnNlcnZlZFNjcmlwdE1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLnNjcmlwdGluZ1Njb3BlID8gdGhpcy5zY3JpcHRpbmdTY29wZS5nZXRNb2RlbCgpIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2dldEZvcm1EYXRhKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1IZWxwZXJTZXJ2aWNlLmV4dHJhY3RGb3JtRGF0YShcbiAgICAgIHRoaXMuZWRpdEZvcm0sXG4gICAgICB0aGlzLl9yb3cuc2l0dWF0aW9uLFxuICAgICAgdGhpcy5fcm93LmZvcm0uZGF0YSwgdHJ1ZVxuICAgICk7XG5cbiAgfVxuXG4gIG9uRm9ybVJlYWR5KCkge1xuICAgIC8vIGV4ZWN1dGUgYWZ0ZXIgZm9ybSBoYXMgYmVlbiBzZXQgdXAsIGJlY2F1c2Ugb3RoZXJ3aXNlIG5vdCBhbGwgb2YgdGhlIGNvbXBvbmVudHMgYXJlIHJlYWR5IHRvIGJlIHVzZWRcbiAgICAvLyBpZiBmb3IgZXhhbXBsZSBhIGZvcm0gc2NyaXB0IGV4ZWN1dGVkIGBvbnJvd2VkaXRgIHRyaWVzIHRvIGFwcGx5IGEgZmlsdGVyIG9yIHNvbWV0aGluZyBsaWtlIHRoYXRcbiAgICBpZiAodGhpcy5fcm93LnRhYmxlRWxlbWVudC5vbnJvd2VkaXQgJiYgIXRoaXMuX3Jvdy50YWJsZUVsZW1lbnQucmVhZG9ubHkpIHtcblxuICAgICAgLy8gR2VuZXJhdGUgcm93IEFQSSBvYmplY3QgKHdyYXBwZXIpIGZvciB0aGUgc2NyaXB0XG4gICAgICBjb25zdCByb3cgPSB7XG4gICAgICAgIG1vZGVsOiB0aGlzLl9nZXRPYnNlcnZlZFNjcmlwdE1vZGVsKCksXG4gICAgICAgIGluZGV4OiB0aGlzLl9yb3cuaW5kZXgsXG4gICAgICAgIGNvcHlFbmFibGVkOiB0aGlzLmNvcHlFbmFibGVkLFxuICAgICAgICBkZWxldGVFbmFibGVkOiB0aGlzLmRlbGV0ZUVuYWJsZWQsXG4gICAgICAgIHNhdmVFbmFibGVkOiB0aGlzLnNhdmVFbmFibGVkLFxuICAgICAgICBwZXJzaXN0ZWQ6ICF0aGlzLmlzTmV3Um93IC8vIE5vdCBwZXJzaXN0ZWQgaWYgaXQgaXMgYSBuZXcgcm93XG4gICAgICB9O1xuICAgICAgdGhpcy5fcm93LnRhYmxlRWxlbWVudC5vbnJvd2VkaXQodGhpcy5fcm93LnRhYmxlRWxlbWVudCwgcm93KTtcbiAgICAgIGlmICghdGhpcy5zYXZlZCkge1xuICAgICAgICB0aGlzLm9uRm9ybVN0YXR1c0NoYW5nZWQoKTtcbiAgICAgIH1cbiAgICAgIC8vIC4uLiBhbmQgcmVzcGVjdCB0aGUgcmVzdWx0XG4gICAgICB0aGlzLmNvcHlFbmFibGVkID0gcm93LmNvcHlFbmFibGVkO1xuICAgICAgdGhpcy5kZWxldGVFbmFibGVkID0gcm93LmRlbGV0ZUVuYWJsZWQ7XG4gICAgICB0aGlzLnNhdmVFbmFibGVkID0gcm93LnNhdmVFbmFibGVkO1xuICAgIH1cbiAgfVxuXG4gIG9uRm9ybVN0YXR1c0NoYW5nZWQoKSB7XG5cbiAgICAvLyBjaGVjayBpZiBpbmRleGRhdGEgaGFzIGJlZW4gY2hhbmdlZFxuICAgIGxldCBjdXJyZW50Rm9ybURhdGEgPSB0aGlzLl9nZXRGb3JtRGF0YSgpO1xuICAgIGxldCBpZHhDaGFuZ2UgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1EYXRhKSAhPT0gSlNPTi5zdHJpbmdpZnkoY3VycmVudEZvcm1EYXRhKTtcbiAgICB0aGlzLmZvcm1EYXRhID0gVXRpbHMuZm9ybURhdGFQYXJzZShVdGlscy5mb3JtRGF0YVN0cmluZ2lmeShjdXJyZW50Rm9ybURhdGEpKTtcblxuICAgIHRoaXMuZm9ybVN0YXRlID0ge1xuICAgICAgaW52YWxpZDogdGhpcy5lZGl0Rm9ybS5pbnZhbGlkLFxuICAgICAgZGlydHk6IHRoaXMuZWRpdEZvcm0uZGlydHksXG4gICAgICBkYXRhOiB0aGlzLmZvcm1EYXRhLFxuICAgICAgaW5kZXhkYXRhQ2hhbmdlZDogaWR4Q2hhbmdlXG4gICAgfTtcbiAgICBpZiAodGhpcy5mb3JtU3RhdGUuaW5kZXhkYXRhQ2hhbmdlZCkge1xuICAgICAgdGhpcy5zdGFydFBlbmRpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfYnVpbGRSb3dFZGl0Rm9ybSgpIHtcbiAgICBpZiAodGhpcy5fcm93KSB7XG4gICAgICBjb25zdCBmb3JtR2VuUmVzOiBGb3JtR2VuUmVzdWx0ID0gdGhpcy5mb3JtSGVscGVyU2VydmljZS5idWlsZFJlYWN0aXZlRm9ybShcbiAgICAgICAge1xuICAgICAgICAgIGZvcm1Nb2RlbDoge1xuICAgICAgICAgICAgc2l0dWF0aW9uOiB0aGlzLl9yb3cuc2l0dWF0aW9uLFxuICAgICAgICAgICAgZWxlbWVudHM6IFt7XG4gICAgICAgICAgICAgIHR5cGU6ICdvMm1Hcm91cCcsXG4gICAgICAgICAgICAgIGVsZW1lbnRzOiBzdHJ1Y3R1cmVkQ2xvbmUodGhpcy5fcm93LmZvcm0uZWxlbWVudHMpXG4gICAgICAgICAgICB9XVxuICAgICAgICAgIH0sIGRpc2FibGVkOiB0aGlzLl9yb3cuZm9ybS5kaXNhYmxlZCwgZGF0YTogdGhpcy5fcm93LmZvcm0uZGF0YVxuICAgICAgICB9LCB0aGlzLmZvcm1TY3JpcHRTZXJ2aWNlLCB0cnVlXG4gICAgICApO1xuICAgICAgdGhpcy5lZGl0Rm9ybSA9IGZvcm1HZW5SZXMuZm9ybTtcbiAgICAgIHRoaXMuc2NyaXB0aW5nU2NvcGUgPSBmb3JtR2VuUmVzLnNjcmlwdGluZ1Njb3BlO1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb25zID0gZm9ybUdlblJlcy5jb250cm9sVmFsdWVTdWJzY3JpcHRpb25zO1xuXG4gICAgICBjb25zdCBjdHJscyA9ICh0aGlzLmVkaXRGb3JtLmNvbnRyb2xzLmNvcmUgYXMgT2JqZWN0Rm9ybUdyb3VwKS5jb250cm9scztcbiAgICAgIHRoaXMuZWRpdEZvcm1Db250cm9scyA9IE9iamVjdC5rZXlzKGN0cmxzKS5tYXAoayA9PiBjdHJsc1trXSBhcyBPYmplY3RGb3JtQ29udHJvbFdyYXBwZXIpXG4gICAgICB0aGlzLmZvcm1TdGF0ZSA9IHtcbiAgICAgICAgaW52YWxpZDogdGhpcy5lZGl0Rm9ybS5pbnZhbGlkLFxuICAgICAgICBkaXJ0eTogdGhpcy5lZGl0Rm9ybS5kaXJ0eSxcbiAgICAgICAgZGF0YTogdGhpcy5mb3JtRGF0YSxcbiAgICAgICAgaW5kZXhkYXRhQ2hhbmdlZDogZmFsc2VcbiAgICAgIH07XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmVkaXRGb3JtKSByZXR1cm47XG4gICAgICAgIGxldCBmb3JtU3RhdGVXYXRjaCA9IHRoaXMuZWRpdEZvcm0uc3RhdHVzQ2hhbmdlcy5waXBlKClcbiAgICAgICAgICAuc3Vic2NyaWJlKChlKSA9PiB0aGlzLm9uRm9ybVN0YXR1c0NoYW5nZWQoKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKGZvcm1TdGF0ZVdhdGNoKTtcbiAgICAgICAgdGhpcy5vbkZvcm1SZWFkeSgpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXJ0UGVuZGluZygpIHtcbiAgICAvLyBiZWNhdXNlIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGV2ZXJ5IHRpbWUgdGhlIGZvcm0gc3RhdHVzIGNoYW5nZXMsXG4gICAgLy8gcGVuZGluZyB0YXNrIHdpbGwgb25seSBiZSBzdGFydGVkIG9uY2UgdW50aWwgaXQgd2FzIGZpbmlzaGVkXG4gICAgaWYgKCF0aGlzLnBlbmRpbmdDaGFuZ2VzLmhhc1BlbmRpbmdUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCB8fCAnICcpKSB7XG4gICAgICB0aGlzLnBlbmRpbmdUYXNrSWQgPSB0aGlzLnBlbmRpbmdDaGFuZ2VzLnN0YXJ0VGFzaygpO1xuICAgIH1cbiAgfVxuXG4gIGZpbmlzaFBlbmRpbmcoKSB7XG4gICAgdGhpcy5wZW5kaW5nQ2hhbmdlcy5maW5pc2hUYXNrKHRoaXMucGVuZGluZ1Rhc2tJZCk7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICB0aGlzLnNhdmVkID0gdHJ1ZTtcbiAgICB0aGlzLmZpbmlzaFBlbmRpbmcoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICB0aGlzLm9uU2F2ZS5lbWl0KHtcbiAgICAgICAgICBpbmRleDogdGhpcy5fcm93LmluZGV4LFxuICAgICAgICAgIHJvd0RhdGE6IHRoaXMuX2dldEZvcm1EYXRhKCksXG4gICAgICAgICAgY3JlYXRlTmV3Um93OiB0aGlzLmNyZWF0ZU5ld1Jvd1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHNhdmVDb3B5KCkge1xuICAgIHRoaXMuc2F2aW5nID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5mb3JtU3RhdGUuaW52YWxpZCkge1xuICAgICAgICB0aGlzLm9uU2F2ZUNvcHkuZW1pdCh7XG4gICAgICAgICAgaW5kZXg6IHRoaXMuX3Jvdy5pbmRleCxcbiAgICAgICAgICByb3dEYXRhOiB0aGlzLl9nZXRGb3JtRGF0YSgpLFxuICAgICAgICAgIGNyZWF0ZU5ld1JvdzogdGhpcy5jcmVhdGVOZXdSb3dcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnNhdmluZyA9IGZhbHNlO1xuICAgIH0sIDUwMCk7XG4gIH1cblxuICBkZWxldGUoKSB7XG4gICAgdGhpcy5vbkRlbGV0ZS5lbWl0KHRoaXMuX3Jvdy5pbmRleCk7XG4gICAgdGhpcy5zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5maW5pc2hQZW5kaW5nKCk7XG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIHVuc3Vic2NyaWJlQWxsKCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbnMubGVuZ3RoKSB7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnVuc3Vic2NyaWJlQWxsKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJyb3ctZWRpdFwiPlxuICA8ZGl2IGNsYXNzPVwiZWRpdC1oZWFkZXJcIiAqbmdJZj1cIiFxdWVyeUVuYWJsZWRcIj5cbiAgICA8ZGl2IGNsYXNzPVwibmV3LWluZGljYXRvclwiICpuZ0lmPVwiaXNOZXdSb3dcIiB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmluZGljYXRvci5uZXc8L2Rpdj5cbiAgICA8ZGl2PjwvZGl2PlxuICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2NsZWFyLnN2ZydcIiAoY2xpY2spPVwiY2FuY2VsKClcIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWwtaWNvblwiXG4gICAgICBbaWNvblRpdGxlXT1cIignZW8uY3RhLmJ1dHRvbi5jYW5jZWwnIHwgdHJhbnNsYXRlKVwiPjwvZW8taWNvbj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImVkaXRGb3JtXCIgKm5nSWY9XCJlZGl0Rm9ybVwiPlxuICAgIDxlby1mb3JtLWVsZW1lbnQgKm5nRm9yPVwibGV0IGMgb2YgZWRpdEZvcm1Db250cm9sc1wiIFtlbGVtZW50XT1cImNcIiBbc2l0dWF0aW9uXT1cIl9yb3c/LnNpdHVhdGlvblwiIFtza2lwVG9nZ2xlXT1cImZhbHNlXCI+XG4gICAgPC9lby1mb3JtLWVsZW1lbnQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCI+XG4gICAgPGVvLWNoZWNrYm94ICpuZ0lmPVwiaXNOZXdSb3dcIiB0aXRsZT1cInt7J2VvLmZvcm0udGFibGUub3B0aW9ucy5jaGVja2JveC5uZXcudGl0bGUnIHwgdHJhbnNsYXRlfX1cIlxuICAgICAgW2Zvcm1Db250cm9sXT1cImNyZWF0ZU5ld0NoZWNrYm94XCI+PC9lby1jaGVja2JveD5cbiAgICA8c3BhbiAqbmdJZj1cImlzTmV3Um93XCIgY2xhc3M9XCJhZGQtbGFiZWxcIiB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmNoZWNrYm94Lm5ldzwvc3Bhbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImRlbGV0ZUVuYWJsZWQgJiYgIWlzTmV3Um93ICYmICFfcm93Py5mb3JtLmRpc2FibGVkICYmICFxdWVyeUVuYWJsZWRcIlxuICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVEaWFsb2cgPSB0cnVlO1wiIHRpdGxlPVwie3snZW8uY3RhLmJ1dHRvbi5kZWxldGUnIHwgdHJhbnNsYXRlfX1cIj5cbiAgICAgIDxlby1pY29uIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3RyYXNoLnN2ZydcIj48L2VvLWljb24+XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmVDb3B5KClcIiBjbGFzcz1cInNlY29cIiAqbmdJZj1cImNvcHlFbmFibGVkICYmICFpc05ld1JvdyAmJiAhX3Jvdz8uZm9ybS5kaXNhYmxlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwibGltaXRSZWFjaGVkIHx8IHNhdmluZyB8fCBmb3JtU3RhdGU/LmludmFsaWRcIiB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5jb3B5PC9idXR0b24+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInNhdmUoKVwiIGNsYXNzPVwicHJpbWFyeVwiICpuZ0lmPVwic2F2ZUVuYWJsZWQgJiYgIV9yb3c/LmZvcm0uZGlzYWJsZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cIihsaW1pdFJlYWNoZWQgJiYgaXNOZXdSb3cpIHx8IHNhdmluZyB8fCBmb3JtU3RhdGU/LmludmFsaWQgfHwgKCFmb3JtU3RhdGU/LmRpcnR5ICYmICFpc05ld1JvdylcIj57e1xuICAgICAgJ2VvLmZvcm0udGFibGUub3B0aW9ucy5idG4uc2F2ZScgKyAoaXNOZXdSb3cgPyAnLm5ldycgOiAnJykgfCB0cmFuc2xhdGV9fTwvYnV0dG9uPlxuICAgIDwhLS0gcXVlcnkgYnV0dG9uIGZvciBTRUFSQ0ggc2l0dWF0aW9uIC0tPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJzYXZlKClcIiBjbGFzcz1cInByaW1hcnlcIiAqbmdJZj1cInF1ZXJ5RW5hYmxlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybVN0YXRlPy5pbnZhbGlkIHx8ICFmb3JtU3RhdGU/LmluZGV4ZGF0YUNoYW5nZWRcIiB0cmFuc2xhdGU+ZW8uZm9ybS50YWJsZS5vcHRpb25zLmJ0bi5zYXZlPC9idXR0b24+XG4gIDwvZGl2PlxuXG48L2Rpdj5cblxuPGVvLWRpYWxvZyBbdGl0bGVdPVwiKCdlby5mb3JtLnRhYmxlLm9wdGlvbnMuY29uZmlybS5kZWxldGUnIHwgdHJhbnNsYXRlKVwiIFsodmlzaWJsZSldPVwic2hvd0RlbGV0ZURpYWxvZ1wiXG4gIFttaW5XaWR0aF09XCI0MDBcIj5cbiAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGZsZXgtcm93XCIgc3R5bGU9XCJwYWRkaW5nOiA4cHg7XCI+XG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gY2FuY2VsXCIgKGNsaWNrKT1cInNob3dEZWxldGVEaWFsb2cgPSBmYWxzZVwiXG4gICAgICB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5jYW5jZWw8L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAjY29uZmlybURlbGV0ZSAoY2xpY2spPVwiZGVsZXRlKClcIiBjbGFzcz1cImJ1dHRvbiBwcmltYXJ5XCJcbiAgICAgIHRyYW5zbGF0ZT5lby5mb3JtLnRhYmxlLm9wdGlvbnMuYnRuLm9rPC9idXR0b24+XG4gIDwvZGl2PlxuPC9lby1kaWFsb2c+Il19