@huntsman-cancer-institute/help 17.9.2 → 17.9.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.
@@ -184,8 +184,8 @@ export class HelpComponent {
184
184
  this._modalDetail = this.staticHelp;
185
185
  }
186
186
  }
187
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpComponent, deps: [{ token: i1.HelpService }, { token: i2.AuthenticationService }, { token: i3.NgbModal }], target: i0.ɵɵFactoryTarget.Component }); }
188
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: HelpComponent, selector: "hci-help", inputs: { id: "id", tooltipId: "tooltipId", tooltipPlacement: "tooltipPlacement", applicationContext: "applicationContext", staticTooltip: "staticTooltip", editRole: ["helpEditRole", "editRole"], modalId: "modalId", staticHelp: "staticHelp", useDefaultTitle: "useDefaultTitle" }, viewQueries: [{ propertyName: "_helpModalDirective", first: true, predicate: ["helpModal"], descendants: true }, { propertyName: "_helpTooltipDirective", first: true, predicate: ["helpTooltip"], descendants: true }], exportAs: ["hciHelp"], ngImport: i0, template: `
187
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpComponent, deps: [{ token: i1.HelpService }, { token: i2.AuthenticationService }, { token: i3.NgbModal }], target: i0.ɵɵFactoryTarget.Component }); }
188
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: HelpComponent, selector: "hci-help", inputs: { id: "id", tooltipId: "tooltipId", tooltipPlacement: "tooltipPlacement", applicationContext: "applicationContext", staticTooltip: "staticTooltip", editRole: ["helpEditRole", "editRole"], modalId: "modalId", staticHelp: "staticHelp", useDefaultTitle: "useDefaultTitle" }, viewQueries: [{ propertyName: "_helpModalDirective", first: true, predicate: ["helpModal"], descendants: true }, { propertyName: "_helpTooltipDirective", first: true, predicate: ["helpTooltip"], descendants: true }], exportAs: ["hciHelp"], ngImport: i0, template: `
189
189
  <div class="hci-help-container" [ngbTooltip]="helpTooltip">
190
190
  <span>
191
191
  <i class="fas fa-lg fa-question-circle" (click)="showHelp()"></i>
@@ -223,7 +223,7 @@ export class HelpComponent {
223
223
  </ng-template>
224
224
  `, isInline: true, styles: [".hci-help-container{display:inline-block}.hci-loading-help{margin:auto;width:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i5.RoleCheckDirective, selector: "[hciHasRole]", inputs: ["hciHasRole"] }] }); }
225
225
  }
226
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpComponent, decorators: [{
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpComponent, decorators: [{
227
227
  type: Component,
228
228
  args: [{ selector: "hci-help", exportAs: "hciHelp", template: `
229
229
  <div class="hci-help-container" [ngbTooltip]="helpTooltip">
@@ -296,4 +296,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
296
296
  type: ViewChild,
297
297
  args: ["helpTooltip", { static: false }]
298
298
  }] } });
299
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9oZWxwL3NyYy9oZWxwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7O0FBRWhGOzs7Ozs7O0dBT0c7QUFvREgsTUFBTSxPQUFPLGFBQWE7YUFFRCw2QkFBd0IsR0FBRyxrQkFBa0IsQUFBckIsQ0FBc0I7SUE2RHJFLFlBQW9CLFlBQXlCLEVBQVUsc0JBQTZDLEVBQVUsWUFBc0I7UUFBaEgsaUJBQVksR0FBWixZQUFZLENBQWE7UUFBVSwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQVU7UUFoRHBJOztXQUVHO1FBQytCLHFCQUFnQixHQUF3QyxLQUFLLENBQUM7UUF3Q2pHLHFCQUFnQixHQUFZLEtBQUssQ0FBQztJQUtzRyxDQUFDO0lBRXhJOzs7T0FHRztJQUNJLGVBQWU7UUFDcEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQXdCLEVBQUUsRUFBRTtZQUNuRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztR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QUFDLGNBQWM7Z0JBS0ksT0FBTztzQkFBL0IsS0FBSzt1QkFBQyxTQUFTO2dCQU1ZLFVBQVU7c0JBQXJDLEtBQUs7dUJBQUMsWUFBWTtnQkFFYyxlQUFlO3NCQUEvQyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFFeUIsbUJBQW1CO3NCQUFuRSxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBRVkscUJBQXFCO3NCQUF2RSxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYgSHVudHNtYW4gQ2FuY2VyIEluc3RpdHV0ZSBhdCB0aGUgVW5pdmVyc2l0eSBvZiBVdGFoLCBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5XHJcbiAqL1xyXG5pbXBvcnQge0NvbXBvbmVudCwgVmlld0NoaWxkLCBJbnB1dCwgT25Jbml0LCBBZnRlclZpZXdJbml0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge05nYk1vZGFsLCBOZ2JNb2RhbFJlZiwgTmdiVG9vbHRpcH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7SGVscFNlcnZpY2V9IGZyb20gXCIuL2hlbHAuc2VydmljZVwiO1xyXG5pbXBvcnQge0F1dGhlbnRpY2F0aW9uU2VydmljZX0gZnJvbSBcIkBodW50c21hbi1jYW5jZXItaW5zdGl0dXRlL2F1dGhlbnRpY2F0aW9uXCI7XHJcblxyXG4vKipcclxuICogQSBoZWxwIGNvbXBvbmVudCBwcm92aWRpbmcgYSBoZWxwIHRvb2x0aXAgb24gaG92ZXIgYW5kIGhlbHAgZGlhbG9nIHdoZW4gY2xpY2tlZC4gVGhpcyBpbmZvcm1hdGlvbiBjYW4gYmUgcHJvdmlkZWRcclxuICogc3RhdGljYWxseSBieSB0aGUgYXBwbGljYXRpb24gYnkgc2V0dGluZyB0aGUgYXR0cmlidXRlcyAnc3RhdGljVG9vbHRpcCcgYW5kL29yICdzdGF0aWNIZWxwJyBvciBkZWZpbmluZyB0aGVcclxuICogYXBwcm9wcmlhdGUgdG9vbHRpcCBhbmQgaGVscCBpZHMgYW5kIGEgdmFsaWQgYXBwbGljYXRpb24gY29udGV4dCAoc2VlIHtAbGluayBIZWxwQ29tcG9uZW50I2dldEFwcGxpY2F0aW9uQ29udGV4dHN9XHJcbiAqIGFuZCB7QGxpbmsgQXBwbGljYXRpb25Db250ZXh0RW51bX0pLlxyXG4gKlxyXG4gKiBAc2luY2UgMS4wLjBcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1oZWxwXCIsXHJcbiAgZXhwb3J0QXM6IFwiaGNpSGVscFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwiaGNpLWhlbHAtY29udGFpbmVyXCIgW25nYlRvb2x0aXBdPVwiaGVscFRvb2x0aXBcIj5cclxuICAgICAgPHNwYW4+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbGcgZmEtcXVlc3Rpb24tY2lyY2xlXCIgKGNsaWNrKT1cInNob3dIZWxwKClcIj48L2k+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICNoZWxwVG9vbHRpcD5cclxuICAgICAgPGRpdiAqbmdJZj1cIl90b29sdGlwQ29udGVudCAmJiAhX2lzUmV0cmlldmluZ1Rvb2x0aXBcIiBbaW5uZXJIVE1MXT1cIl90b29sdGlwQ29udGVudFwiPjwvZGl2PlxyXG4gICAgICA8c3BhbiAqbmdJZj1cIiFzdGF0aWNUb29sdGlwICYmIF9pc1JldHJpZXZpbmdUb29sdGlwXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1wdWxzZSBmYS1md1wiPjwvaT5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIFxyXG4gICAgPG5nLXRlbXBsYXRlICNoZWxwTW9kYWwgY2xhc3M9XCJtb2RhbCBmYWRlXCIgdGFiaW5kZXg9XCItMVwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJteUxhcmdlTW9kYWxMYWJlbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICA8ZGl2ICpuZ0lmID1cIl9tb2RhbERldGFpbCAmJiBfbW9kYWxEZXRhaWwudGl0bGVcIiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxoNCAqbmdJZj1cIl9tb2RhbERldGFpbFwiIFtpbm5lckhUTUxdID0gXCJfbW9kYWxEZXRhaWwudGl0bGVcIj48L2g0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiX21vZGFsRGV0YWlsICYmICFfbW9kYWxEZXRhaWwuYm9keVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1wdWxzZSBmYS1mdyBmYS00eCBoY2ktbG9hZGluZy1oZWxwXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJfbW9kYWxEZXRhaWxcIiBbaW5uZXJIVE1MXSA9IFwiX21vZGFsRGV0YWlsLmJvZHlcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIChjbGljayk9XCJjbG9zZU1vZGFsKClcIj5DbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIl9pc0F1dGhlbnRpY2F0ZWRcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtoY2lIYXNSb2xlXT1cImVkaXRSb2xlXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFfaXNFZGl0aW5nICYmICFfaGFzRXJyb3JcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiZWRpdEhlbHAoKVwiPkVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIl9pc0VkaXRpbmdcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIj5TdWJtaXQ8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgLmhjaS1oZWxwLWNvbnRhaW5lciB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICAgIFxyXG4gICAgLmhjaS1sb2FkaW5nLWhlbHAge1xyXG4gICAgICBtYXJnaW46IGF1dG87XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG4gIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWxwQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9IRUxQX01PREFMX1RJVExFID0gXCJIZWxwIEluZm9ybWF0aW9uXCI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgZ2VuZXJhbCBpZCBhdHRyaWJ1dGUgdGhhdCB3aWxsIGJlIGFwcGxpZWQgZm9yIGJvdGggaGVscCB0b29sdGlwIGFuZCBkaWFsb2cgcmVzb3VyY2VzIGlmIHNldCwgaWYgdGhpcyBkZXRhaWwgbmVlZHNcclxuICAgKiB0byBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqL1xyXG4gIEBJbnB1dChcImlkXCIpIHB1YmxpYyBpZDogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBBbiBhdHRyaWJ1dGUgZm9yIHRoZSBpZCBvZiB0aGUgaGVscCB0b29sdGlwIHJlc291cmNlLCBpZiB0aGlzIGRldGFpbCBuZWVkcyB0byBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqL1xyXG4gIEBJbnB1dChcInRvb2x0aXBJZFwiKSBwdWJsaWMgdG9vbHRpcElkOiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuIGF0dHJpYnV0ZSB0aGF0IGRpcmVjdHMgdG9vbHRpcCBwbGFjZW1lbnQsIHdoZXJlIHRoZSBkZWZhdWx0IGlzICd0b3AnLiBPdGhlciBvcHRpb25zIGFyZSAnYm90dG9tJywgJ2xlZnQnIGFuZCAncmlnaHQnLlxyXG4gICAqL1xyXG4gIEBJbnB1dChcInRvb2x0aXBQbGFjZW1lbnRcIikgcHVibGljIHRvb2x0aXBQbGFjZW1lbnQ6IFwidG9wXCIgfCBcImJvdHRvbVwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgPSBcInRvcFwiO1xyXG5cclxuICAvKipcclxuICAgKiBBbiBhdHRyaWJ1dGUgZGVmaW5pbmcgdGhpcyBoZWxwIGNvbXBvbmVudHMgYXBwbGljYXRpb24gY29udGV4dCwgaWYgdGhlIHRvb2x0aXAgYW5kL29yIGRpYWxvZyBuZWVkcyB0byBiZSByZXRyaWV2ZWRcclxuICAgKiBmcm9tIHRoZSBzZXJ2ZXIuXHJcbiAgICovXHJcbiAgQElucHV0KFwiYXBwbGljYXRpb25Db250ZXh0XCIpIHB1YmxpYyBhcHBsaWNhdGlvbkNvbnRleHQ6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogQW4gYXR0cmlidXRlIGRlZmluaW5nIHRoZSBzdGF0aWMgdGV4dCwgd2hpY2ggY2FuIGluY2x1ZGUgbWFya3VwLCB0byBiZSBwcm92aWRlZCBmb3IgdGhpcyBoZWxwIGNvbXBvbmVudHMgdG9vbHRpcC5cclxuICAgKiBJZiB0aGlzIGlzIHNldCB0aGUgdG9vbHRpcCB3aWxsIG5vdCBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqL1xyXG4gIEBJbnB1dChcInN0YXRpY1Rvb2x0aXBcIikgcHVibGljIHN0YXRpY1Rvb2x0aXA6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQW4gYXR0cmlidXRlIHRvIHNldCB0aGUgcm9sZSBuZWNlc3NhcnkgdG8gZWRpdCB0aGUgaGVscCBpbmZvcm1hdGlvbiBwcm92aWRlZCBieSB0aGlzIGNvbXBvbmVudC4gVGhpcyBhdHRyaWJ1dGUgaXMgb25seVxyXG4gICAqIHZhbGlkIGZvciBkeW5hbWljIGNvbnRlbnQgKHJldHJpZXZlZCBmcm9tIHNlcnZlciByZXNvdXJjZXMpLlxyXG4gICAqL1xyXG4gIEBJbnB1dChcImhlbHBFZGl0Um9sZVwiKSBwdWJsaWMgZWRpdFJvbGU6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQW4gYXR0cmlidXRlIGZvciB0aGUgaWQgb2YgdGhlIGhlbHAgbW9kYWwgcmVzb3VyY2UsIGlmIHRoaXMgZGV0YWlsIG5lZWRzIHRvIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBzZXJ2ZXIuXHJcbiAgICovXHJcbiAgQElucHV0KFwibW9kYWxJZFwiKSBwdWJsaWMgbW9kYWxJZDogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBBbiBhdHRyaWJ1dGUgZGVmaW5pbmcgdGhlIHN0YXRpYyB0ZXh0LCB3aGljaCBjYW4gaW5jbHVkZSBtYXJrdXAsIHRvIGJlIHByb3ZpZGVkIGZvciB0aGlzIGhlbHAgY29tcG9uZW50cyBtb2RhbCBkaWFsb2cuXHJcbiAgICogSWYgdGhpcyBpcyBzZXQgdGhlIG1vZGFsIGRldGFpbCB3aWxsIG5vdCBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqL1xyXG4gIEBJbnB1dChcInN0YXRpY0hlbHBcIikgcHVibGljIHN0YXRpY0hlbHA6IHN0cmluZztcclxuXHJcbiAgQElucHV0KFwidXNlRGVmYXVsdFRpdGxlXCIpIHB1YmxpYyB1c2VEZWZhdWx0VGl0bGU6IGJvb2xlYW47XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJoZWxwTW9kYWxcIiwge3N0YXRpYzogZmFsc2V9KSBwcml2YXRlIF9oZWxwTW9kYWxEaXJlY3RpdmU6IE5nYk1vZGFsUmVmO1xyXG4gIHByaXZhdGUgX2hlbHBNb2RhbERpcmVjdGl2ZVJlZjogTmdiTW9kYWxSZWY7XHJcbiAgQFZpZXdDaGlsZChcImhlbHBUb29sdGlwXCIsIHtzdGF0aWM6IGZhbHNlfSkgcHJpdmF0ZSBfaGVscFRvb2x0aXBEaXJlY3RpdmU6IE5nYlRvb2x0aXA7XHJcblxyXG4gX2lzRWRpdGluZzogYm9vbGVhbjtcclxuIF9oYXNFcnJvcjogYm9vbGVhbjtcclxuIF9tb2RhbERldGFpbDogYW55O1xyXG4gX2lzQXV0aGVudGljYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gX3Rvb2x0aXBJbkZvY3VzOiBib29sZWFuO1xyXG4gX2lzUmV0cmlldmluZ1Rvb2x0aXA6IGJvb2xlYW47XHJcbiBfdG9vbHRpcENvbnRlbnQ6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaGVscFNlcnZpY2U6IEhlbHBTZXJ2aWNlLCBwcml2YXRlIF9hdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGF0ZXMgdGhlIGNvbXBvbmVudCBjb25maWd1cmF0aW9uLCBzZXRzIHVwIHRoZSBpZHMgZm9yIHRoZSB0b29sdGlwIGFuZCBtb2RhbCBkaWFsb2csIGVzdGFibGlzaGVzIHRoZSBjb3JyZWN0XHJcbiAgICogYmVnaW5uaW5nIHN0YXRlIChvciBwb3RlbnRpYWxseSwgdGhlIGFic29sdXRlIHN0YXRlIGlmIGFsbCB2YWx1ZXMgYXJlIHN0YXRpYykgZm9yIGJvdGggdGhlIHRvb2x0aXAgYW5kIG1vZGFsIGhlbHAuXHJcbiAgICovXHJcbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKS5zdWJzY3JpYmUoKGlzQXV0aGVudGljYXRlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICB0aGlzLl9pc0F1dGhlbnRpY2F0ZWQgPSBpc0F1dGhlbnRpY2F0ZWQ7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudmFsaWRhdGVDb25maWd1cmF0aW9uKCk7XHJcbiAgICB0aGlzLnNldHVwSWRzKCk7XHJcbiAgICB0aGlzLnNldHVwVG9vbHRpcCgpO1xyXG4gICAgdGhpcy5zZXR1cE1vZGFsKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbiBhY2Nlc3NvciBmb3IgYW4gZW51bWVyYXRpb24gb2YgdmFsaWQgYXBwbGljYXRpb24gY29udGV4dHMuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7QXBwbGljYXRpb25Db250ZXh0RW51bX0gZGVmaW5pbmcgYWxsIHZhbGlkIGNvbnRleHRzXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBhcHBsaWNhdGlvbkNvbnRleHRzKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5faGVscFNlcnZpY2UuYXBwbGljYXRpb25Db250ZXh0cztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBmdW5jdGlvbiByZWdpc3RlcmVkIHRvIGhhbmRsZSBzdGF0ZSBjaGFuZ2UgZXZlbnRzIG9uIHRoZSBoZWxwIHRvb2wgdGlwLlxyXG4gICAqIDxwPlxyXG4gICAqIEJhc2VkIG9uIHRoZSBob3ZlciBzdGF0ZSBhbmQgdGhlIHN0YXRlIG9mIHRoZSBjb21wb25lbnQgdGhlIHRvb2x0aXAgd2lsbCBiZSBkaXNwbGF5ZWQgYW5kIHRoZSB0b29sdGlwIGRldGFpbCB3aWxsXHJcbiAgICogYmUgcmV0cmlldmVkIGZyb20gdGhlIHNlcnZlciwgaWYgbmVjZXNzYXJ5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHN0YXRlIG9mIHRoZSB1c2VyIGhvdmVyIG9uIHRoZSBoZWxwIHRvb2x0aXBcclxuICAgKi9cclxuICBwdWJsaWMgdG9vbHRpcFN0YXRlQ2hhbmdlZChzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHN0YXRlICYmICF0aGlzLnN0YXRpY1Rvb2x0aXAgJiYgIXRoaXMuX2lzUmV0cmlldmluZ1Rvb2x0aXApIHtcclxuICAgICAgdGhpcy5fdG9vbHRpcEluRm9jdXMgPSB0cnVlO1xyXG4gICAgICB0aGlzLl9pc1JldHJpZXZpbmdUb29sdGlwID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuX2hlbHBTZXJ2aWNlLmxvb2t1cFRvb2x0aXAodGhpcy50b29sdGlwSWQsIHRoaXMuX2hlbHBTZXJ2aWNlLmFwcGxpY2F0aW9uQ29udGV4dHNbdGhpcy5hcHBsaWNhdGlvbkNvbnRleHRdKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHRvb2x0aXA6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fdG9vbHRpcENvbnRlbnQgPSB0b29sdGlwO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLl90b29sdGlwSW5Gb2N1cykge1xyXG4gICAgICAgICAgICB0aGlzLl9oZWxwTW9kYWxEaXJlY3RpdmVSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuX2hlbHBNb2RhbERpcmVjdGl2ZSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5faXNSZXRyaWV2aW5nVG9vbHRpcCA9IGZhbHNlO1xyXG4gICAgICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAvLyBUT0RPOiBCSFkgKDEwLzIwLzE2KSAtIENvbnNpZGVyIGNvbW11bmljYXRpbmcgYW4gZXJyb3IgaW4gdG9vbHRpcC4gSG93ZXZlciwgSSB0aGluayBsZWF2aW5nIHRoZSBzcGlubmVyIGFuaW1hdGlvbiB3b3Jrcy5cclxuICAgICAgICAgIHRoaXMuX2lzUmV0cmlldmluZ1Rvb2x0aXAgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgZnVuY3Rpb24gdG8gc2V0IHRoZSBhcHByb3ByaWF0ZSBjb21wb25lbnQgc3RhdGUgd2hlbiB0aGUgdXNlcidzIG1vdXNlIGxlYXZlcyB0aGUgaGVscCBpY29uLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBvbkxlYXZlVG9vbHRpcCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Rvb2x0aXBJbkZvY3VzID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBIGZ1bmN0aW9uIHRvIGRpc3BsYXkgdGhlIGhlbHAgbW9kYWwgZGlhbG9nIGFuZCBoaWRlIHRoZSBjb3JyZXNwb25kaW5nIHRvb2x0aXAsIHJldHJpZXZpbmcgaXQgZnJvbSB0aGUgc2VydmVyIGlmXHJcbiAgICogbmVjZXNzYXJ5LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzaG93SGVscCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2hlbHBNb2RhbERpcmVjdGl2ZVJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5faGVscE1vZGFsRGlyZWN0aXZlKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuX21vZGFsRGV0YWlsIHx8IHRoaXMuX2hhc0Vycm9yKSB7XHJcbiAgICAgIHRoaXMuX21vZGFsRGV0YWlsID0ge1xyXG4gICAgICAgIHRpdGxlOiBcIkxvYWRpbmcgSGVscC4uLlwiXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuX2hlbHBTZXJ2aWNlLmxvb2t1cEhlbHAodGhpcy5tb2RhbElkLCB0aGlzLl9oZWxwU2VydmljZS5hcHBsaWNhdGlvbkNvbnRleHRzW3RoaXMuYXBwbGljYXRpb25Db250ZXh0XSlcclxuICAgICAgICAuc3Vic2NyaWJlKChoZWxwRGV0YWlsOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2hhc0Vycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9tb2RhbERldGFpbCA9IGhlbHBEZXRhaWw7XHJcblxyXG4gICAgICAgICAgaWYgKCF0aGlzLl9tb2RhbERldGFpbC50aXRsZSAmJiB0aGlzLnVzZURlZmF1bHRUaXRsZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9tb2RhbERldGFpbC50aXRsZSA9IEhlbHBDb21wb25lbnQuREVGQVVMVF9IRUxQX01PREFMX1RJVExFO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9oYXNFcnJvciA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5fbW9kYWxEZXRhaWwgPSB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBcIkVycm9yXCIsXHJcbiAgICAgICAgICAgIGJvZHk6IGVycm9yXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQSBtZXRob2QgdG8gY2xvc2UgdGhlIGhlbHAgbW9kYWwgZGlhbG9nIGFuZCByZXNldCB0aGlzIGNvbXBvbmVudHMgaGVscCBtb2RhbCBpbnRlcm5hbCBzdGF0ZS5cclxuICAgKi9cclxuICBwdWJsaWMgY2xvc2VNb2RhbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzRWRpdGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5faGVscE1vZGFsRGlyZWN0aXZlUmVmLmNsb3NlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQSBtZXRob2QgdG8gc3VibWl0IHRoZSBtb2RhbCBkaWFsb2cgZm9ybS5cclxuICAgKi9cclxuICBwdWJsaWMgZWRpdEhlbHAoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pc0VkaXRpbmcgPSB0cnVlO1xyXG4gICAgLy8gVE9ETzogQkhZICgxMC8xNy8xNikgLSBJbXBsZW1lbnQgZWRpdC5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgdXRpbGl0eSBmdW5jdGlvbiB0byB2ZXJpZnkgdGhhdCB0aGUgc3RhdGUgb2YgdGhpcyBjb21wb25lbnQgaXMgdmFsaWQuXHJcbiAgICogPHA+XHJcbiAgICogQSB2YWxpZCBIZWxwQ29tcG9uZW50IGNvbmZpZ3VyYXRpb24gd2lsbCByZXF1aXJlIHRoYXQgZWl0aGVyIHN0YXRpYyBoZWxwIGFuZC9vciB0b29sdGlwIGRldGFpbCAoc3RhdGljVG9vbHRpcCBhbmRcclxuICAgKiBzdGF0aWNIZWxwIGF0dHJpYnV0ZXMpLCBvciB0aGF0IGFuIGlkIGFuZCBhcHBsaWNhdGlvbiBjb250ZXh0IGlzIGNvbmZpZ3VyZWQgdG8gcmV0cmlldmUgdGhpcyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzZXJ2ZXIuXHJcbiAgICogPHA+XHJcbiAgICogSWYgdGhlIHRvb2x0aXAgYW5kIGhlbHAgaWRzIGFyZSB0aGUgc2FtZSBvbmx5IHRoZSBpZCBhdHRyaWJ1dGUgbmVlZHMgdG8gYmUgY29uZmlndXJlZCwgb3RoZXJ3aXNlIGJvdGggdGhlIHRvb2x0aXBJZFxyXG4gICAqIGFuZCBtb2RhbElkIGF0dHJpYnV0ZXMgbmVlZCB0byBiZSBjb25maWd1cmVkIGluZGVwZW5kZW50bHkuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc3RhdGljVG9vbHRpcCAmJiAoKHRoaXMuaWQgPCAwICYmIHRoaXMudG9vbHRpcElkIDwgMCkgfHwgdGhpcy5hcHBsaWNhdGlvbkNvbnRleHQgPCAwKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCVUcgQUxFUlQhIEludmFsaWQgSGVscENvbXBvbmVudCBjb25maWd1cmF0aW9uLiBJZiBbc3RhdGljVG9vbHRpcF0gaXMgbm90IHNldCwgdGhlbiBcIiArXHJcbiAgICAgICAgXCJbaWRdIG9yIFt0b29sdGlwSWRdIGFuZCBbYXBwbGljYXRpb25Db250ZXh0XSBtdXN0IGJlIGNvbmZpZ3VyZWQuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5zdGF0aWNIZWxwICYmICgodGhpcy5pZCA8IDAgJiYgdGhpcy5tb2RhbElkIDwgMCkgfHwgdGhpcy5hcHBsaWNhdGlvbkNvbnRleHQgPCAwKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCVUcgQUxFUlQhIEludmFsaWQgSGVscENvbXBvbmVudCBjb25maWd1cmF0aW9uLiBJZiBbc3RhdGljSGVscF0gaXMgbm90IHNldCwgdGhlbiBcIiArXHJcbiAgICAgICAgXCJbaWRdIG9yIFttb2RhbElkXSBhbmQgW2FwcGxpY2F0aW9uQ29udGV4dF0gbXVzdCBiZSBjb25maWd1cmVkLlwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgdXRpbGl0eSBmdW5jdGlvbiB0byBzZXR1cCB0aGUgaWRzLCBnaXZlbiB0aGUgdmFyaW91cyBjb25maWd1cmF0aW9ucy5cclxuICAgKi9cclxuICBwcml2YXRlIHNldHVwSWRzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaWQpIHtcclxuICAgICAgdGhpcy50b29sdGlwSWQgPSB0aGlzLmlkO1xyXG4gICAgICB0aGlzLm1vZGFsSWQgPSB0aGlzLmlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQSB1dGlsaXR5IGZ1bmN0aW9uIHRvIHNldHVwIHRoZSBoZWxwIHRvb2x0aXAgd2l0aCBhICd3YWl0IGZvciBhc3luYyByZXNwb25zZScgdGVtcGxhdGUgb3IgdGhlIHN0YXRpYyBoZWxwIHRvb2x0aXAgYW5kXHJcbiAgICogY29uZmlndXJlIHRoZSB0b29sdGlwIHBsYWNlbWVudCwgaWYgc2V0LlxyXG4gICAqIDxwPlxyXG4gICAqIFRoZSBjYXBhYmlsaXR5IHRvIHNldCBhIGN1c3RvbSB0b29sdGlwIGNsYXNzIHdhcyBpbnRlbnRpb25hbGx5IGV4Y2x1ZGVkIHRvIGFsbG93IHRoZSBDT1JFIHRlYW0gdG8gY29uc2lkZXIgdGhlXHJcbiAgICogY29uc2lzdGVuY3kgb2YgdGhlIENPUkUgYnJhbmRlZCBzdHlsaW5nIGJlZm9yZSBhbGxvd2luZyBzdWNoIGN1c3RvbWl6YXRpb24gdG8gYXBwbGljYXRpb24gZW5naW5lZXJzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0dXBUb29sdGlwKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcFBsYWNlbWVudCkge1xyXG4gICAgICB0aGlzLl9oZWxwVG9vbHRpcERpcmVjdGl2ZS5wbGFjZW1lbnQgPSB0aGlzLnRvb2x0aXBQbGFjZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3RhdGljVG9vbHRpcCkge1xyXG4gICAgICB0aGlzLl90b29sdGlwQ29udGVudCA9IHRoaXMuc3RhdGljVG9vbHRpcDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2hlbHBTZXJ2aWNlLmxvb2t1cFRvb2x0aXAodGhpcy50b29sdGlwSWQsIHRoaXMuX2hlbHBTZXJ2aWNlLmFwcGxpY2F0aW9uQ29udGV4dHNbdGhpcy5hcHBsaWNhdGlvbkNvbnRleHRdKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHRvb2x0aXA6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fdG9vbHRpcENvbnRlbnQgPSB0b29sdGlwO1xyXG5cclxuICAgICAgICAgIHRoaXMuX2lzUmV0cmlldmluZ1Rvb2x0aXAgPSBmYWxzZTtcclxuICAgICAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8gVE9ETzogQkhZICgxMC8yMC8xNikgLSBDb25zaWRlciBjb21tdW5pY2F0aW5nIGFuIGVycm9yIGluIHRvb2x0aXAuIEhvd2V2ZXIsIEkgdGhpbmsgbGVhdmluZyB0aGUgc3Bpbm5lciBhbmltYXRpb24gd29ya3MuXHJcbiAgICAgICAgICB0aGlzLl9pc1JldHJpZXZpbmdUb29sdGlwID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBIHV0aWxpdHkgZnVuY3Rpb24gdG8gc2V0dXAgdGhlIGhlbHAgbW9kYWwgZGlhbG9nIHdpdGggc3RhdGljIGhlbHAgbW9kYWwgY29udGVudCwgaWYgYXZhaWxhYmxlLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0dXBNb2RhbCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnN0YXRpY0hlbHApIHtcclxuICAgICAgdGhpcy5fbW9kYWxEZXRhaWwgPSB0aGlzLnN0YXRpY0hlbHA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9oZWxwL3NyYy9oZWxwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBd0IsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDN0UsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLDJDQUEyQyxDQUFDOzs7Ozs7O0FBRWhGOzs7Ozs7O0dBT0c7QUFvREgsTUFBTSxPQUFPLGFBQWE7YUFFRCw2QkFBd0IsR0FBRyxrQkFBa0IsQUFBckIsQ0FBc0I7SUE2RHJFLFlBQW9CLFlBQXlCLEVBQVUsc0JBQTZDLEVBQVUsWUFBc0I7UUFBaEgsaUJBQVksR0FBWixZQUFZLENBQWE7UUFBVSwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXVCO1FBQVUsaUJBQVksR0FBWixZQUFZLENBQVU7UUFoRHBJOztXQUVHO1FBQytCLHFCQUFnQixHQUF3QyxLQUFLLENBQUM7UUF3Q2pHLHFCQUFnQixHQUFZLEtBQUssQ0FBQztJQUtzRyxDQUFDO0lBRXhJOzs7T0FHRztJQUNJLGVBQWU7UUFDcEIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGVBQXdCLEVBQUUsRUFBRTtZQUNuRixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztR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QUFDLGNBQWM7Z0JBS0ksT0FBTztzQkFBL0IsS0FBSzt1QkFBQyxTQUFTO2dCQU1ZLFVBQVU7c0JBQXJDLEtBQUs7dUJBQUMsWUFBWTtnQkFFYyxlQUFlO3NCQUEvQyxLQUFLO3VCQUFDLGlCQUFpQjtnQkFFeUIsbUJBQW1CO3NCQUFuRSxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUM7Z0JBRVkscUJBQXFCO3NCQUF2RSxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTYgSHVudHNtYW4gQ2FuY2VyIEluc3RpdHV0ZSBhdCB0aGUgVW5pdmVyc2l0eSBvZiBVdGFoLCBDb25maWRlbnRpYWwgYW5kIFByb3ByaWV0YXJ5XHJcbiAqL1xyXG5pbXBvcnQge0NvbXBvbmVudCwgVmlld0NoaWxkLCBJbnB1dCwgT25Jbml0LCBBZnRlclZpZXdJbml0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge05nYk1vZGFsLCBOZ2JNb2RhbFJlZiwgTmdiVG9vbHRpcH0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcbmltcG9ydCB7SGVscFNlcnZpY2V9IGZyb20gXCIuL2hlbHAuc2VydmljZVwiO1xyXG5pbXBvcnQge0F1dGhlbnRpY2F0aW9uU2VydmljZX0gZnJvbSBcIkBodW50c21hbi1jYW5jZXItaW5zdGl0dXRlL2F1dGhlbnRpY2F0aW9uXCI7XHJcblxyXG4vKipcclxuICogQSBoZWxwIGNvbXBvbmVudCBwcm92aWRpbmcgYSBoZWxwIHRvb2x0aXAgb24gaG92ZXIgYW5kIGhlbHAgZGlhbG9nIHdoZW4gY2xpY2tlZC4gVGhpcyBpbmZvcm1hdGlvbiBjYW4gYmUgcHJvdmlkZWRcclxuICogc3RhdGljYWxseSBieSB0aGUgYXBwbGljYXRpb24gYnkgc2V0dGluZyB0aGUgYXR0cmlidXRlcyAnc3RhdGljVG9vbHRpcCcgYW5kL29yICdzdGF0aWNIZWxwJyBvciBkZWZpbmluZyB0aGVcclxuICogYXBwcm9wcmlhdGUgdG9vbHRpcCBhbmQgaGVscCBpZHMgYW5kIGEgdmFsaWQgYXBwbGljYXRpb24gY29udGV4dCAoc2VlIHtAbGluayBIZWxwQ29tcG9uZW50I2dldEFwcGxpY2F0aW9uQ29udGV4dHN9XHJcbiAqIGFuZCB7QGxpbmsgQXBwbGljYXRpb25Db250ZXh0RW51bX0pLlxyXG4gKlxyXG4gKiBAc2luY2UgMS4wLjBcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImhjaS1oZWxwXCIsXHJcbiAgZXhwb3J0QXM6IFwiaGNpSGVscFwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwiaGNpLWhlbHAtY29udGFpbmVyXCIgW25nYlRvb2x0aXBdPVwiaGVscFRvb2x0aXBcIj5cclxuICAgICAgPHNwYW4+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtbGcgZmEtcXVlc3Rpb24tY2lyY2xlXCIgKGNsaWNrKT1cInNob3dIZWxwKClcIj48L2k+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPG5nLXRlbXBsYXRlICNoZWxwVG9vbHRpcD5cclxuICAgICAgPGRpdiAqbmdJZj1cIl90b29sdGlwQ29udGVudCAmJiAhX2lzUmV0cmlldmluZ1Rvb2x0aXBcIiBbaW5uZXJIVE1MXT1cIl90b29sdGlwQ29udGVudFwiPjwvZGl2PlxyXG4gICAgICA8c3BhbiAqbmdJZj1cIiFzdGF0aWNUb29sdGlwICYmIF9pc1JldHJpZXZpbmdUb29sdGlwXCI+XHJcbiAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1wdWxzZSBmYS1md1wiPjwvaT5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIFxyXG4gICAgPG5nLXRlbXBsYXRlICNoZWxwTW9kYWwgY2xhc3M9XCJtb2RhbCBmYWRlXCIgdGFiaW5kZXg9XCItMVwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJteUxhcmdlTW9kYWxMYWJlbFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICA8ZGl2ICpuZ0lmID1cIl9tb2RhbERldGFpbCAmJiBfbW9kYWxEZXRhaWwudGl0bGVcIiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCI+XHJcbiAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxoNCAqbmdJZj1cIl9tb2RhbERldGFpbFwiIFtpbm5lckhUTUxdID0gXCJfbW9kYWxEZXRhaWwudGl0bGVcIj48L2g0PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiX21vZGFsRGV0YWlsICYmICFfbW9kYWxEZXRhaWwuYm9keVwiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtc3Bpbm5lciBmYS1wdWxzZSBmYS1mdyBmYS00eCBoY2ktbG9hZGluZy1oZWxwXCI+PC9pPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJfbW9kYWxEZXRhaWxcIiBbaW5uZXJIVE1MXSA9IFwiX21vZGFsRGV0YWlsLmJvZHlcIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIChjbGljayk9XCJjbG9zZU1vZGFsKClcIj5DbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIl9pc0F1dGhlbnRpY2F0ZWRcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtoY2lIYXNSb2xlXT1cImVkaXRSb2xlXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFfaXNFZGl0aW5nICYmICFfaGFzRXJyb3JcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwiZWRpdEhlbHAoKVwiPkVkaXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIl9pc0VkaXRpbmdcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIj5TdWJtaXQ8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIGAsXHJcbiAgc3R5bGVzOiBbYFxyXG4gICAgLmhjaS1oZWxwLWNvbnRhaW5lciB7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIH1cclxuICAgIFxyXG4gICAgLmhjaS1sb2FkaW5nLWhlbHAge1xyXG4gICAgICBtYXJnaW46IGF1dG87XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgfVxyXG4gIGBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWxwQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9IRUxQX01PREFMX1RJVExFID0gXCJIZWxwIEluZm9ybWF0aW9uXCI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgZ2VuZXJhbCBpZCBhdHRyaWJ1dGUgdGhhdCB3aWxsIGJlIGFwcGxpZWQgZm9yIGJvdGggaGVscCB0b29sdGlwIGFuZCBkaWFsb2cgcmVzb3VyY2VzIGlmIHNldCwgaWYgdGhpcyBkZXRhaWwgbmVlZHNcclxuICAgKiB0byBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqL1xyXG4gIEBJbnB1dChcImlkXCIpIHB1YmxpYyBpZDogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBBbiBhdHRyaWJ1dGUgZm9yIHRoZSBpZCBvZiB0aGUgaGVscCB0b29sdGlwIHJlc291cmNlLCBpZiB0aGlzIGRldGFpbCBuZWVkcyB0byBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqL1xyXG4gIEBJbnB1dChcInRvb2x0aXBJZFwiKSBwdWJsaWMgdG9vbHRpcElkOiBudW1iZXI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuIGF0dHJpYnV0ZSB0aGF0IGRpcmVjdHMgdG9vbHRpcCBwbGFjZW1lbnQsIHdoZXJlIHRoZSBkZWZhdWx0IGlzICd0b3AnLiBPdGhlciBvcHRpb25zIGFyZSAnYm90dG9tJywgJ2xlZnQnIGFuZCAncmlnaHQnLlxyXG4gICAqL1xyXG4gIEBJbnB1dChcInRvb2x0aXBQbGFjZW1lbnRcIikgcHVibGljIHRvb2x0aXBQbGFjZW1lbnQ6IFwidG9wXCIgfCBcImJvdHRvbVwiIHwgXCJsZWZ0XCIgfCBcInJpZ2h0XCIgPSBcInRvcFwiO1xyXG5cclxuICAvKipcclxuICAgKiBBbiBhdHRyaWJ1dGUgZGVmaW5pbmcgdGhpcyBoZWxwIGNvbXBvbmVudHMgYXBwbGljYXRpb24gY29udGV4dCwgaWYgdGhlIHRvb2x0aXAgYW5kL29yIGRpYWxvZyBuZWVkcyB0byBiZSByZXRyaWV2ZWRcclxuICAgKiBmcm9tIHRoZSBzZXJ2ZXIuXHJcbiAgICovXHJcbiAgQElucHV0KFwiYXBwbGljYXRpb25Db250ZXh0XCIpIHB1YmxpYyBhcHBsaWNhdGlvbkNvbnRleHQ6IG51bWJlcjtcclxuXHJcbiAgLyoqXHJcbiAgICogQW4gYXR0cmlidXRlIGRlZmluaW5nIHRoZSBzdGF0aWMgdGV4dCwgd2hpY2ggY2FuIGluY2x1ZGUgbWFya3VwLCB0byBiZSBwcm92aWRlZCBmb3IgdGhpcyBoZWxwIGNvbXBvbmVudHMgdG9vbHRpcC5cclxuICAgKiBJZiB0aGlzIGlzIHNldCB0aGUgdG9vbHRpcCB3aWxsIG5vdCBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqL1xyXG4gIEBJbnB1dChcInN0YXRpY1Rvb2x0aXBcIikgcHVibGljIHN0YXRpY1Rvb2x0aXA6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQW4gYXR0cmlidXRlIHRvIHNldCB0aGUgcm9sZSBuZWNlc3NhcnkgdG8gZWRpdCB0aGUgaGVscCBpbmZvcm1hdGlvbiBwcm92aWRlZCBieSB0aGlzIGNvbXBvbmVudC4gVGhpcyBhdHRyaWJ1dGUgaXMgb25seVxyXG4gICAqIHZhbGlkIGZvciBkeW5hbWljIGNvbnRlbnQgKHJldHJpZXZlZCBmcm9tIHNlcnZlciByZXNvdXJjZXMpLlxyXG4gICAqL1xyXG4gIEBJbnB1dChcImhlbHBFZGl0Um9sZVwiKSBwdWJsaWMgZWRpdFJvbGU6IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogQW4gYXR0cmlidXRlIGZvciB0aGUgaWQgb2YgdGhlIGhlbHAgbW9kYWwgcmVzb3VyY2UsIGlmIHRoaXMgZGV0YWlsIG5lZWRzIHRvIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBzZXJ2ZXIuXHJcbiAgICovXHJcbiAgQElucHV0KFwibW9kYWxJZFwiKSBwdWJsaWMgbW9kYWxJZDogbnVtYmVyO1xyXG5cclxuICAvKipcclxuICAgKiBBbiBhdHRyaWJ1dGUgZGVmaW5pbmcgdGhlIHN0YXRpYyB0ZXh0LCB3aGljaCBjYW4gaW5jbHVkZSBtYXJrdXAsIHRvIGJlIHByb3ZpZGVkIGZvciB0aGlzIGhlbHAgY29tcG9uZW50cyBtb2RhbCBkaWFsb2cuXHJcbiAgICogSWYgdGhpcyBpcyBzZXQgdGhlIG1vZGFsIGRldGFpbCB3aWxsIG5vdCBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgc2VydmVyLlxyXG4gICAqL1xyXG4gIEBJbnB1dChcInN0YXRpY0hlbHBcIikgcHVibGljIHN0YXRpY0hlbHA6IHN0cmluZztcclxuXHJcbiAgQElucHV0KFwidXNlRGVmYXVsdFRpdGxlXCIpIHB1YmxpYyB1c2VEZWZhdWx0VGl0bGU6IGJvb2xlYW47XHJcblxyXG4gIEBWaWV3Q2hpbGQoXCJoZWxwTW9kYWxcIiwge3N0YXRpYzogZmFsc2V9KSBwcml2YXRlIF9oZWxwTW9kYWxEaXJlY3RpdmU6IE5nYk1vZGFsUmVmO1xyXG4gIHByaXZhdGUgX2hlbHBNb2RhbERpcmVjdGl2ZVJlZjogTmdiTW9kYWxSZWY7XHJcbiAgQFZpZXdDaGlsZChcImhlbHBUb29sdGlwXCIsIHtzdGF0aWM6IGZhbHNlfSkgcHJpdmF0ZSBfaGVscFRvb2x0aXBEaXJlY3RpdmU6IE5nYlRvb2x0aXA7XHJcblxyXG4gX2lzRWRpdGluZzogYm9vbGVhbjtcclxuIF9oYXNFcnJvcjogYm9vbGVhbjtcclxuIF9tb2RhbERldGFpbDogYW55O1xyXG4gX2lzQXV0aGVudGljYXRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gX3Rvb2x0aXBJbkZvY3VzOiBib29sZWFuO1xyXG4gX2lzUmV0cmlldmluZ1Rvb2x0aXA6IGJvb2xlYW47XHJcbiBfdG9vbHRpcENvbnRlbnQ6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfaGVscFNlcnZpY2U6IEhlbHBTZXJ2aWNlLCBwcml2YXRlIF9hdXRoZW50aWNhdGlvblNlcnZpY2U6IEF1dGhlbnRpY2F0aW9uU2VydmljZSwgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsKSB7fVxyXG5cclxuICAvKipcclxuICAgKiBWYWxpZGF0ZXMgdGhlIGNvbXBvbmVudCBjb25maWd1cmF0aW9uLCBzZXRzIHVwIHRoZSBpZHMgZm9yIHRoZSB0b29sdGlwIGFuZCBtb2RhbCBkaWFsb2csIGVzdGFibGlzaGVzIHRoZSBjb3JyZWN0XHJcbiAgICogYmVnaW5uaW5nIHN0YXRlIChvciBwb3RlbnRpYWxseSwgdGhlIGFic29sdXRlIHN0YXRlIGlmIGFsbCB2YWx1ZXMgYXJlIHN0YXRpYykgZm9yIGJvdGggdGhlIHRvb2x0aXAgYW5kIG1vZGFsIGhlbHAuXHJcbiAgICovXHJcbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uU2VydmljZS5pc0F1dGhlbnRpY2F0ZWQoKS5zdWJzY3JpYmUoKGlzQXV0aGVudGljYXRlZDogYm9vbGVhbikgPT4ge1xyXG4gICAgICB0aGlzLl9pc0F1dGhlbnRpY2F0ZWQgPSBpc0F1dGhlbnRpY2F0ZWQ7XHJcbiAgICB9KTtcclxuICAgIHRoaXMudmFsaWRhdGVDb25maWd1cmF0aW9uKCk7XHJcbiAgICB0aGlzLnNldHVwSWRzKCk7XHJcbiAgICB0aGlzLnNldHVwVG9vbHRpcCgpO1xyXG4gICAgdGhpcy5zZXR1cE1vZGFsKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBbiBhY2Nlc3NvciBmb3IgYW4gZW51bWVyYXRpb24gb2YgdmFsaWQgYXBwbGljYXRpb24gY29udGV4dHMuXHJcbiAgICpcclxuICAgKiBAcmV0dXJucyB7QXBwbGljYXRpb25Db250ZXh0RW51bX0gZGVmaW5pbmcgYWxsIHZhbGlkIGNvbnRleHRzXHJcbiAgICovXHJcbiAgcHVibGljIGdldCBhcHBsaWNhdGlvbkNvbnRleHRzKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5faGVscFNlcnZpY2UuYXBwbGljYXRpb25Db250ZXh0cztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZSBmdW5jdGlvbiByZWdpc3RlcmVkIHRvIGhhbmRsZSBzdGF0ZSBjaGFuZ2UgZXZlbnRzIG9uIHRoZSBoZWxwIHRvb2wgdGlwLlxyXG4gICAqIDxwPlxyXG4gICAqIEJhc2VkIG9uIHRoZSBob3ZlciBzdGF0ZSBhbmQgdGhlIHN0YXRlIG9mIHRoZSBjb21wb25lbnQgdGhlIHRvb2x0aXAgd2lsbCBiZSBkaXNwbGF5ZWQgYW5kIHRoZSB0b29sdGlwIGRldGFpbCB3aWxsXHJcbiAgICogYmUgcmV0cmlldmVkIGZyb20gdGhlIHNlcnZlciwgaWYgbmVjZXNzYXJ5LlxyXG4gICAqXHJcbiAgICogQHBhcmFtIHN0YXRlIG9mIHRoZSB1c2VyIGhvdmVyIG9uIHRoZSBoZWxwIHRvb2x0aXBcclxuICAgKi9cclxuICBwdWJsaWMgdG9vbHRpcFN0YXRlQ2hhbmdlZChzdGF0ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHN0YXRlICYmICF0aGlzLnN0YXRpY1Rvb2x0aXAgJiYgIXRoaXMuX2lzUmV0cmlldmluZ1Rvb2x0aXApIHtcclxuICAgICAgdGhpcy5fdG9vbHRpcEluRm9jdXMgPSB0cnVlO1xyXG4gICAgICB0aGlzLl9pc1JldHJpZXZpbmdUb29sdGlwID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuX2hlbHBTZXJ2aWNlLmxvb2t1cFRvb2x0aXAodGhpcy50b29sdGlwSWQsIHRoaXMuX2hlbHBTZXJ2aWNlLmFwcGxpY2F0aW9uQ29udGV4dHNbdGhpcy5hcHBsaWNhdGlvbkNvbnRleHRdKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHRvb2x0aXA6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fdG9vbHRpcENvbnRlbnQgPSB0b29sdGlwO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLl90b29sdGlwSW5Gb2N1cykge1xyXG4gICAgICAgICAgICB0aGlzLl9oZWxwTW9kYWxEaXJlY3RpdmVSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRoaXMuX2hlbHBNb2RhbERpcmVjdGl2ZSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5faXNSZXRyaWV2aW5nVG9vbHRpcCA9IGZhbHNlO1xyXG4gICAgICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAvLyBUT0RPOiBCSFkgKDEwLzIwLzE2KSAtIENvbnNpZGVyIGNvbW11bmljYXRpbmcgYW4gZXJyb3IgaW4gdG9vbHRpcC4gSG93ZXZlciwgSSB0aGluayBsZWF2aW5nIHRoZSBzcGlubmVyIGFuaW1hdGlvbiB3b3Jrcy5cclxuICAgICAgICAgIHRoaXMuX2lzUmV0cmlldmluZ1Rvb2x0aXAgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgZnVuY3Rpb24gdG8gc2V0IHRoZSBhcHByb3ByaWF0ZSBjb21wb25lbnQgc3RhdGUgd2hlbiB0aGUgdXNlcidzIG1vdXNlIGxlYXZlcyB0aGUgaGVscCBpY29uLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBvbkxlYXZlVG9vbHRpcCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Rvb2x0aXBJbkZvY3VzID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBIGZ1bmN0aW9uIHRvIGRpc3BsYXkgdGhlIGhlbHAgbW9kYWwgZGlhbG9nIGFuZCBoaWRlIHRoZSBjb3JyZXNwb25kaW5nIHRvb2x0aXAsIHJldHJpZXZpbmcgaXQgZnJvbSB0aGUgc2VydmVyIGlmXHJcbiAgICogbmVjZXNzYXJ5LlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzaG93SGVscCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2hlbHBNb2RhbERpcmVjdGl2ZVJlZiA9IHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGhpcy5faGVscE1vZGFsRGlyZWN0aXZlKTtcclxuXHJcbiAgICBpZiAoIXRoaXMuX21vZGFsRGV0YWlsIHx8IHRoaXMuX2hhc0Vycm9yKSB7XHJcbiAgICAgIHRoaXMuX21vZGFsRGV0YWlsID0ge1xyXG4gICAgICAgIHRpdGxlOiBcIkxvYWRpbmcgSGVscC4uLlwiXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuX2hlbHBTZXJ2aWNlLmxvb2t1cEhlbHAodGhpcy5tb2RhbElkLCB0aGlzLl9oZWxwU2VydmljZS5hcHBsaWNhdGlvbkNvbnRleHRzW3RoaXMuYXBwbGljYXRpb25Db250ZXh0XSlcclxuICAgICAgICAuc3Vic2NyaWJlKChoZWxwRGV0YWlsOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuX2hhc0Vycm9yID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9tb2RhbERldGFpbCA9IGhlbHBEZXRhaWw7XHJcblxyXG4gICAgICAgICAgaWYgKCF0aGlzLl9tb2RhbERldGFpbC50aXRsZSAmJiB0aGlzLnVzZURlZmF1bHRUaXRsZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9tb2RhbERldGFpbC50aXRsZSA9IEhlbHBDb21wb25lbnQuREVGQVVMVF9IRUxQX01PREFMX1RJVExFO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sIChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9oYXNFcnJvciA9IHRydWU7XHJcblxyXG4gICAgICAgICAgdGhpcy5fbW9kYWxEZXRhaWwgPSB7XHJcbiAgICAgICAgICAgIHRpdGxlOiBcIkVycm9yXCIsXHJcbiAgICAgICAgICAgIGJvZHk6IGVycm9yXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQSBtZXRob2QgdG8gY2xvc2UgdGhlIGhlbHAgbW9kYWwgZGlhbG9nIGFuZCByZXNldCB0aGlzIGNvbXBvbmVudHMgaGVscCBtb2RhbCBpbnRlcm5hbCBzdGF0ZS5cclxuICAgKi9cclxuICBwdWJsaWMgY2xvc2VNb2RhbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX2lzRWRpdGluZyA9IGZhbHNlO1xyXG4gICAgdGhpcy5faGVscE1vZGFsRGlyZWN0aXZlUmVmLmNsb3NlKG51bGwpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQSBtZXRob2QgdG8gc3VibWl0IHRoZSBtb2RhbCBkaWFsb2cgZm9ybS5cclxuICAgKi9cclxuICBwdWJsaWMgZWRpdEhlbHAoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pc0VkaXRpbmcgPSB0cnVlO1xyXG4gICAgLy8gVE9ETzogQkhZICgxMC8xNy8xNikgLSBJbXBsZW1lbnQgZWRpdC5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgdXRpbGl0eSBmdW5jdGlvbiB0byB2ZXJpZnkgdGhhdCB0aGUgc3RhdGUgb2YgdGhpcyBjb21wb25lbnQgaXMgdmFsaWQuXHJcbiAgICogPHA+XHJcbiAgICogQSB2YWxpZCBIZWxwQ29tcG9uZW50IGNvbmZpZ3VyYXRpb24gd2lsbCByZXF1aXJlIHRoYXQgZWl0aGVyIHN0YXRpYyBoZWxwIGFuZC9vciB0b29sdGlwIGRldGFpbCAoc3RhdGljVG9vbHRpcCBhbmRcclxuICAgKiBzdGF0aWNIZWxwIGF0dHJpYnV0ZXMpLCBvciB0aGF0IGFuIGlkIGFuZCBhcHBsaWNhdGlvbiBjb250ZXh0IGlzIGNvbmZpZ3VyZWQgdG8gcmV0cmlldmUgdGhpcyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBzZXJ2ZXIuXHJcbiAgICogPHA+XHJcbiAgICogSWYgdGhlIHRvb2x0aXAgYW5kIGhlbHAgaWRzIGFyZSB0aGUgc2FtZSBvbmx5IHRoZSBpZCBhdHRyaWJ1dGUgbmVlZHMgdG8gYmUgY29uZmlndXJlZCwgb3RoZXJ3aXNlIGJvdGggdGhlIHRvb2x0aXBJZFxyXG4gICAqIGFuZCBtb2RhbElkIGF0dHJpYnV0ZXMgbmVlZCB0byBiZSBjb25maWd1cmVkIGluZGVwZW5kZW50bHkuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB2YWxpZGF0ZUNvbmZpZ3VyYXRpb24oKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc3RhdGljVG9vbHRpcCAmJiAoKHRoaXMuaWQgPCAwICYmIHRoaXMudG9vbHRpcElkIDwgMCkgfHwgdGhpcy5hcHBsaWNhdGlvbkNvbnRleHQgPCAwKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCVUcgQUxFUlQhIEludmFsaWQgSGVscENvbXBvbmVudCBjb25maWd1cmF0aW9uLiBJZiBbc3RhdGljVG9vbHRpcF0gaXMgbm90IHNldCwgdGhlbiBcIiArXHJcbiAgICAgICAgXCJbaWRdIG9yIFt0b29sdGlwSWRdIGFuZCBbYXBwbGljYXRpb25Db250ZXh0XSBtdXN0IGJlIGNvbmZpZ3VyZWQuXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5zdGF0aWNIZWxwICYmICgodGhpcy5pZCA8IDAgJiYgdGhpcy5tb2RhbElkIDwgMCkgfHwgdGhpcy5hcHBsaWNhdGlvbkNvbnRleHQgPCAwKSkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCVUcgQUxFUlQhIEludmFsaWQgSGVscENvbXBvbmVudCBjb25maWd1cmF0aW9uLiBJZiBbc3RhdGljSGVscF0gaXMgbm90IHNldCwgdGhlbiBcIiArXHJcbiAgICAgICAgXCJbaWRdIG9yIFttb2RhbElkXSBhbmQgW2FwcGxpY2F0aW9uQ29udGV4dF0gbXVzdCBiZSBjb25maWd1cmVkLlwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgdXRpbGl0eSBmdW5jdGlvbiB0byBzZXR1cCB0aGUgaWRzLCBnaXZlbiB0aGUgdmFyaW91cyBjb25maWd1cmF0aW9ucy5cclxuICAgKi9cclxuICBwcml2YXRlIHNldHVwSWRzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaWQpIHtcclxuICAgICAgdGhpcy50b29sdGlwSWQgPSB0aGlzLmlkO1xyXG4gICAgICB0aGlzLm1vZGFsSWQgPSB0aGlzLmlkO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQSB1dGlsaXR5IGZ1bmN0aW9uIHRvIHNldHVwIHRoZSBoZWxwIHRvb2x0aXAgd2l0aCBhICd3YWl0IGZvciBhc3luYyByZXNwb25zZScgdGVtcGxhdGUgb3IgdGhlIHN0YXRpYyBoZWxwIHRvb2x0aXAgYW5kXHJcbiAgICogY29uZmlndXJlIHRoZSB0b29sdGlwIHBsYWNlbWVudCwgaWYgc2V0LlxyXG4gICAqIDxwPlxyXG4gICAqIFRoZSBjYXBhYmlsaXR5IHRvIHNldCBhIGN1c3RvbSB0b29sdGlwIGNsYXNzIHdhcyBpbnRlbnRpb25hbGx5IGV4Y2x1ZGVkIHRvIGFsbG93IHRoZSBDT1JFIHRlYW0gdG8gY29uc2lkZXIgdGhlXHJcbiAgICogY29uc2lzdGVuY3kgb2YgdGhlIENPUkUgYnJhbmRlZCBzdHlsaW5nIGJlZm9yZSBhbGxvd2luZyBzdWNoIGN1c3RvbWl6YXRpb24gdG8gYXBwbGljYXRpb24gZW5naW5lZXJzLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0dXBUb29sdGlwKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMudG9vbHRpcFBsYWNlbWVudCkge1xyXG4gICAgICB0aGlzLl9oZWxwVG9vbHRpcERpcmVjdGl2ZS5wbGFjZW1lbnQgPSB0aGlzLnRvb2x0aXBQbGFjZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc3RhdGljVG9vbHRpcCkge1xyXG4gICAgICB0aGlzLl90b29sdGlwQ29udGVudCA9IHRoaXMuc3RhdGljVG9vbHRpcDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuX2hlbHBTZXJ2aWNlLmxvb2t1cFRvb2x0aXAodGhpcy50b29sdGlwSWQsIHRoaXMuX2hlbHBTZXJ2aWNlLmFwcGxpY2F0aW9uQ29udGV4dHNbdGhpcy5hcHBsaWNhdGlvbkNvbnRleHRdKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHRvb2x0aXA6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fdG9vbHRpcENvbnRlbnQgPSB0b29sdGlwO1xyXG5cclxuICAgICAgICAgIHRoaXMuX2lzUmV0cmlldmluZ1Rvb2x0aXAgPSBmYWxzZTtcclxuICAgICAgICB9LCAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgLy8gVE9ETzogQkhZICgxMC8yMC8xNikgLSBDb25zaWRlciBjb21tdW5pY2F0aW5nIGFuIGVycm9yIGluIHRvb2x0aXAuIEhvd2V2ZXIsIEkgdGhpbmsgbGVhdmluZyB0aGUgc3Bpbm5lciBhbmltYXRpb24gd29ya3MuXHJcbiAgICAgICAgICB0aGlzLl9pc1JldHJpZXZpbmdUb29sdGlwID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBIHV0aWxpdHkgZnVuY3Rpb24gdG8gc2V0dXAgdGhlIGhlbHAgbW9kYWwgZGlhbG9nIHdpdGggc3RhdGljIGhlbHAgbW9kYWwgY29udGVudCwgaWYgYXZhaWxhYmxlLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc2V0dXBNb2RhbCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnN0YXRpY0hlbHApIHtcclxuICAgICAgdGhpcy5fbW9kYWxEZXRhaWwgPSB0aGlzLnN0YXRpY0hlbHA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -12,17 +12,17 @@ import * as i0 from "@angular/core";
12
12
  * @since 1.0.0
13
13
  */
14
14
  export class HelpModule {
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
16
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: HelpModule, declarations: [HelpComponent], imports: [CommonModule,
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
16
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: HelpModule, declarations: [HelpComponent], imports: [CommonModule,
17
17
  NgbModule,
18
18
  UserModule], exports: [HelpComponent] }); }
19
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpModule, providers: [
19
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpModule, providers: [
20
20
  HelpService
21
21
  ], imports: [CommonModule,
22
22
  NgbModule,
23
23
  UserModule] }); }
24
24
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpModule, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpModule, decorators: [{
26
26
  type: NgModule,
27
27
  args: [{
28
28
  imports: [
@@ -41,4 +41,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
41
41
  ]
42
42
  }]
43
43
  }] });
44
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9oZWxwL3NyYy9oZWxwLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUVyRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFM0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFL0M7O0dBRUc7QUFpQkgsTUFBTSxPQUFPLFVBQVU7OEdBQVYsVUFBVTsrR0FBVixVQUFVLGlCQVRuQixhQUFhLGFBTGIsWUFBWTtZQUNaLFNBQVM7WUFDVCxVQUFVLGFBTVYsYUFBYTsrR0FNSixVQUFVLGFBSlY7WUFDVCxXQUFXO1NBQ1osWUFaQyxZQUFZO1lBQ1osU0FBUztZQUNULFVBQVU7OzJGQVlELFVBQVU7a0JBaEJ0QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFNBQVM7d0JBQ1QsVUFBVTtxQkFDWDtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osYUFBYTtxQkFDZDtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsYUFBYTtxQkFDZDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsV0FBVztxQkFDWjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgMjAxNiBIdW50c21hbiBDYW5jZXIgSW5zdGl0dXRlIGF0IHRoZSBVbml2ZXJzaXR5IG9mIFV0YWgsIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnlcclxuICovXHJcbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcblxyXG5pbXBvcnQge05nYk1vZHVsZX0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcblxyXG5pbXBvcnQge1VzZXJNb2R1bGV9IGZyb20gXCJAaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS91c2VyXCI7XHJcblxyXG5pbXBvcnQge0hlbHBTZXJ2aWNlfSBmcm9tIFwiLi9oZWxwLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtIZWxwQ29tcG9uZW50fSBmcm9tIFwiLi9oZWxwLmNvbXBvbmVudFwiO1xyXG5cclxuLyoqXHJcbiAqIEBzaW5jZSAxLjAuMFxyXG4gKi9cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBOZ2JNb2R1bGUsXHJcbiAgICBVc2VyTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEhlbHBDb21wb25lbnRcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIEhlbHBDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgSGVscFNlcnZpY2VcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWxwTW9kdWxlIHt9XHJcbiJdfQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9oZWxwL3NyYy9oZWxwLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUVyRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFM0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQzs7QUFFL0M7O0dBRUc7QUFpQkgsTUFBTSxPQUFPLFVBQVU7K0dBQVYsVUFBVTtnSEFBVixVQUFVLGlCQVRuQixhQUFhLGFBTGIsWUFBWTtZQUNaLFNBQVM7WUFDVCxVQUFVLGFBTVYsYUFBYTtnSEFNSixVQUFVLGFBSlY7WUFDVCxXQUFXO1NBQ1osWUFaQyxZQUFZO1lBQ1osU0FBUztZQUNULFVBQVU7OzRGQVlELFVBQVU7a0JBaEJ0QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFNBQVM7d0JBQ1QsVUFBVTtxQkFDWDtvQkFDRCxZQUFZLEVBQUU7d0JBQ1osYUFBYTtxQkFDZDtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsYUFBYTtxQkFDZDtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsV0FBVztxQkFDWjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoYykgMjAxNiBIdW50c21hbiBDYW5jZXIgSW5zdGl0dXRlIGF0IHRoZSBVbml2ZXJzaXR5IG9mIFV0YWgsIENvbmZpZGVudGlhbCBhbmQgUHJvcHJpZXRhcnlcclxuICovXHJcbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcblxyXG5pbXBvcnQge05nYk1vZHVsZX0gZnJvbSBcIkBuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwXCI7XHJcblxyXG5pbXBvcnQge1VzZXJNb2R1bGV9IGZyb20gXCJAaHVudHNtYW4tY2FuY2VyLWluc3RpdHV0ZS91c2VyXCI7XHJcblxyXG5pbXBvcnQge0hlbHBTZXJ2aWNlfSBmcm9tIFwiLi9oZWxwLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtIZWxwQ29tcG9uZW50fSBmcm9tIFwiLi9oZWxwLmNvbXBvbmVudFwiO1xyXG5cclxuLyoqXHJcbiAqIEBzaW5jZSAxLjAuMFxyXG4gKi9cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBOZ2JNb2R1bGUsXHJcbiAgICBVc2VyTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIEhlbHBDb21wb25lbnRcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtcclxuICAgIEhlbHBDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW1xyXG4gICAgSGVscFNlcnZpY2VcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIZWxwTW9kdWxlIHt9XHJcbiJdfQ==
@@ -186,10 +186,10 @@ export class HelpService {
186
186
  let errMsg = (error.message) ? error.message : HelpService.GENERIC_ERR_MSG;
187
187
  return throwError(errMsg);
188
188
  }
189
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpService, deps: [{ token: i1.HttpClient }, { token: TOOLTIP_BASE_ENDPOINT }, { token: HELP_BASE_ENDPOINT }, { token: HELP_CACHE_SIZE }], target: i0.ɵɵFactoryTarget.Injectable }); }
190
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpService }); }
189
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpService, deps: [{ token: i1.HttpClient }, { token: TOOLTIP_BASE_ENDPOINT }, { token: HELP_BASE_ENDPOINT }, { token: HELP_CACHE_SIZE }], target: i0.ɵɵFactoryTarget.Injectable }); }
190
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpService }); }
191
191
  }
192
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpService, decorators: [{
192
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpService, decorators: [{
193
193
  type: Injectable
194
194
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
195
195
  type: Inject,
@@ -201,4 +201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
201
201
  type: Inject,
202
202
  args: [HELP_CACHE_SIZE]
203
203
  }] }] });
204
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvaGVscC9zcmMvaGVscC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxVQUFVLEVBQW9CLE1BQU0sc0JBQXNCLENBQUM7QUFFbkUsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvQyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBRXpDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLElBQUkscUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUUvRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxJQUFJLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFekU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxJQUFJLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRW5FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFFSCxNQUFNLE9BQU8sV0FBVztJQUN0Qjs7OztPQUlHO2FBQ29CLG9CQUFlLEdBQVcsZ0RBQWdELEFBQTNELENBQTREO2FBQzNFLG9CQUFlLEdBQVcsNENBQTRDLEFBQXZELENBQXdEO0lBVzlGLFlBQW9CLEtBQWlCLEVBQ2MsZ0JBQXdCLEVBQzNCLGFBQXFCLEVB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L0IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVO1FBQzVCLElBQUksTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDO1FBRTNFLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7OEdBM0pVLFdBQVcsNENBbUJGLHFCQUFxQixhQUNyQixrQkFBa0IsYUFDbEIsZUFBZTtrSEFyQnhCLFdBQVc7OzJGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQW9CSSxNQUFNOzJCQUFDLHFCQUFxQjs7MEJBQzVCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSAyMDE2IEh1bnRzbWFuIENhbmNlciBJbnN0aXR1dGUgYXQgdGhlIFVuaXZlcnNpdHkgb2YgVXRhaCwgQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeVxyXG4gKi9cclxuaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2NhdGNoRXJyb3IsIG1hcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5pbXBvcnQge0FwcGxpY2F0aW9uQ29udGV4dEVudW19IGZyb20gXCIuL2FwcGxpY2F0aW9uLWNvbnRleHQuZW51bVwiO1xyXG5pbXBvcnQge0hlbHBDYWNoZX0gZnJvbSBcIi4vaGVscC1jYWNoZS5jbGFzc1wiO1xyXG5pbXBvcnQge0hlbHBFbnRpdHl9IGZyb20gXCIuL2hlbHAuZW50aXR5XCI7XHJcblxyXG4vKipcclxuICogQHR5cGUge09wYXF1ZVRva2VufSBkZWZpbmluZyB0aGUgYmFzZSBlbmRwb2ludCBmb3IgdGhlIHRvb2x0aXAgcmVzb3VyY2UuXHJcbiAqL1xyXG5leHBvcnQgbGV0IFRPT0xUSVBfQkFTRV9FTkRQT0lOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbihcInRvb2x0aXBfYmFzZV9lbmRwb2ludFwiKTtcclxuXHJcbi8qKlxyXG4gKiBAdHlwZSB7T3BhcXVlVG9rZW59IGRlZmluaW5nIHRoZSBiYXNlIGVuZHBvaW50IGZvciB0aGUgaGVscCByZXNvdXJjZVxyXG4gKi9cclxuZXhwb3J0IGxldCBIRUxQX0JBU0VfRU5EUE9JTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW4oXCJoZWxwX2Jhc2VfZW5kcG9pbnRcIik7XHJcblxyXG4vKipcclxuICogSWYgc2V0IHRvIG51bGwsIHRoZSBjYWNoZSB3aWxsIGJlIGluaXRpYWxpemUgd2l0aCBpdHMgZGVmYXVsdCBzaXplLlxyXG4gKlxyXG4gKiBAdHlwZSB7T3BhcXVlVG9rZW59IGRlZmluaW5nIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGFwcGxpY2F0aW9uIGhlbHAgY2FjaGUuXHJcbiAqL1xyXG5leHBvcnQgbGV0IEhFTFBfQ0FDSEVfU0laRSA9IG5ldyBJbmplY3Rpb25Ub2tlbihcImhlbHBfY2FjaGVfc2l6ZVwiKTtcclxuXHJcbi8qKlxyXG4gKiBBIHNlcnZpY2UgZm9yIGFjY2Vzc2luZyBoZWxwIGFuZCB0b29sdGlwIGluZm9ybWF0aW9uIGZyb20gdGhlIHNlcnZlciBhbmQgbWFpbnRhaW5pbmcgdGhlIGFwcGxpY2F0aW9uIGNsaWVudCBzdGF0ZSBhc1xyXG4gKiBpdCBpcyByZWxhdGVkIHRvIHRoaXMgaGVscCBkZXRhaWwuIEFsbCBzZXJ2ZXIgaW50ZXJhY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIHVzZXIgc2hvdWxkIGJlIGVuY2Fwc3VsYXRlZCBpbiB0aGlzIHNlcnZpY2VcclxuICogYW5kIHRoaXMgc2VydmljZSBzaG91bGQgcHJvdGVjdCByZWxhdGVkIHN0YXRlIGZyb20gdW53YW50ZWQgbW9kaWZpY2F0aW9uLlxyXG4gKiA8cD5cclxuICogVGhpcyBzZXJ2aWNlIGxldmVyYWdlcyBhbiBhcHBsaWNhdGlvbiBjYWNoaW5nIHN0cmF0ZWd5IHRoYXQgaXMgaW50ZW5kZWQgdG8gc3VwcGxlbWVudCBhbnkgY2xpZW50IGNhY2hpbmcgdGhhdCBtYXkgZXhpc3QuXHJcbiAqIFRoaXMgY2FjaGUgd2lsbCwgb2YgY291cnNlLCBiZSBjbGVhcmVkIGlmIHRoZSBjbGllbnQgaXMgcmVmcmVzaGVkLCBidXQsIGlkZWFsbHksIGl0IHNob3VsZCBhbHNvIGJlIGNsZWFyZWQgd2hlbiBhIHVzZXJzXHJcbiAqIHNlc3Npb24gaXMgdGVybWluYXRlZC5cclxuICogPHA+XHJcbiAqIFRoaXMgc2VydmljZSBpcyBleHBlY3RlZCB0byBiZSBpbmplY3RlZCB3aXRoIGtub3duIHNlcnZlciBlbmRwb2ludHMgYW5kLiBUaGlzIGluamVjdGlvbiBjYW4gYmUgYWNoaWV2ZWQgdGhyb3VnaCB0aGUgaG9zdFxyXG4gKiBhcHBsaWNhdGlvbnMgcm9vdCBtb2R1bGUgcHJvdmlkZXJzIGNvbmZpZ3VyYXRpb24uXHJcbiAqIDxwPlxyXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5FeGFtcGxlIG9mIG1vZHVsZSBjb25maWd1cmF0aW9uIGZvciB7QGNvZGUgSGVscFNlcnZpY2V9PC9jYXB0aW9uPlxyXG4gKiA8cHJlPlxyXG4gKiAgICZjb21tYXQ7TmdNb2R1bGUoe1xyXG4gKiAgICAgaW1wb3J0czogW0Jyb3dzZXJNb2R1bGUsIEh0dHBNb2R1bGVdLFxyXG4gKiAgICAgZGVjbGFyYXRpb25zOiBbRGVtb0FwcENvbXBvbmVudF0sXHJcbiAqICAgICBib290c3RyYXA6IFtEZW1vQXBwQ29tcG9uZW50XSxcclxuICogICAgIHByb3ZpZGVyczogW1xyXG4gKiAgICAgICB7cHJvdmlkZTogSEVMUF9DQUNIRV9TSVpFLCB1c2VWYWx1ZTogMjB9LFxyXG4gKiAgICAgICB7cHJvdmlkZTogVE9PTFRJUF9CQVNFX0VORFBPSU5ULCB1c2VWYWx1ZTogXCJodHRwczovL2xvY2FsaG9zdDo4MDgwL2NvcmUvYXBpL3Rvb2x0aXBzXCJ9LFxyXG4gKiAgICAgICB7cHJvdmlkZTogSEVMUF9CQVNFX0VORFBPSU5ULCB1c2VWYWx1ZTogXCJodHRwczovL2xvY2FsaG9zdDo4MDgwL2NvcmUvYXBpL2hlbHBzXCJ9XHJcbiAqICAgICBdXHJcbiAqICAgfSlcclxuICogPC9wcmU+XHJcbiAqXHJcbiAqIEBzaW5jZSAxLjAuMFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSGVscFNlcnZpY2Uge1xyXG4gIC8qKlxyXG4gICAqIFRoZSBnZW5lcmljIGVycm9yIG1lc3NhZ2UgdXNlZCB3aGVuIGEgc2VydmVyIGVycm9yIGlzIHRocm93biB3aXRob3V0IGEgc3RhdHVzLlxyXG4gICAqXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdFTkVSSUNfRVJSX01TRzogc3RyaW5nID0gXCJGYWlsdXJlIGludGVyYWN0aW5nIHdpdGggZHluYW1pYyBoZWxwIFJFU1QgQVBJXCI7XHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBJTlZBTElEX0VSUl9NU0c6IHN0cmluZyA9IFwiVW5leHBlY3RlZCByZXNwb25zZSByZWNlaXZlZCB3aXRoIHN0YXR1czogXCI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgcmVhZG9ubHkgcmVmZXJlbmNlIHRvIHRoZSB7QGxpbmsgQXBwbGljYXRpb25Db250ZXh0RW51bX0uXHJcbiAgICpcclxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25Db250ZXh0RW51bX1cclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgYXBwbGljYXRpb25Db250ZXh0cyA9IEFwcGxpY2F0aW9uQ29udGV4dEVudW07XHJcblxyXG4gIHByaXZhdGUgX2hlbHBDYWNoZTogSGVscENhY2hlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgICAgICAgIEBJbmplY3QoVE9PTFRJUF9CQVNFX0VORFBPSU5UKSBwcml2YXRlIF90b29sdGlwRW5kcG9pbnQ6IHN0cmluZyxcclxuICAgICAgICAgICAgICBASW5qZWN0KEhFTFBfQkFTRV9FTkRQT0lOVCkgcHJpdmF0ZSBfaGVscEVuZHBvaW50OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgQEluamVjdChIRUxQX0NBQ0hFX1NJWkUpIGhlbHBDYWNoZVNpemU/OiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2hlbHBDYWNoZSA9IGhlbHBDYWNoZVNpemUgPyBuZXcgSGVscENhY2hlKGhlbHBDYWNoZVNpemUpIDogbmV3IEhlbHBDYWNoZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSB0b29sdGlwIGdpdmVuIHRoZSBzdWJtaXR0ZWQgc2VydmVyIHNpZGUgaWRlbnRpZmllciBhbmQgYXBwbGljYXRpb24gY29udGV4dFxyXG4gICAqIChzZWUge0BsaW5rIEFwcGxpY2F0aW9uQ29udGV4dEVudW19KS4gVGhlIHJlc291cmNlIHdpbGwgYmUgcmV0cmlldmVkIGZyb20gdGhlIHNlcnZlciBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0IGluIHRoZVxyXG4gICAqIGFwcGxpY2F0aW9uIG9yIGNsaWVudCBjYWNoZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCBvZiB0aGUgdG9vbHRpcCByZXNvdXJjZVxyXG4gICAqIEBwYXJhbSBhcHBDdHh0IG9mIHRoZSB0b29sdGlwIHJlc291cmNlXHJcbiAgICogQHJldHVybnMge2FueX1cclxuICAgKi9cclxuICBwdWJsaWMgbG9va3VwVG9vbHRpcChpZDogbnVtYmVyLCBhcHBDdHh0OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFN0cmluZz4ge1xyXG4gICAgbGV0IGxvb2t1cEtleTogSGVscEVudGl0eS5LZXkgPSBuZXcgSGVscEVudGl0eS5LZXkoaWQsIHRoaXMuYXBwbGljYXRpb25Db250ZXh0c1s8YW55PmFwcEN0eHRdKTtcclxuICAgIGxldCBjYWNoZUVudHJ5OiBbSGVscEVudGl0eS5LZXksIEhlbHBFbnRpdHldID0gdGhpcy5faGVscENhY2hlLmdldChsb29rdXBLZXkpO1xyXG5cclxuICAgIGlmIChjYWNoZUVudHJ5ICYmIGNhY2hlRW50cnlbMV0uVG9vbHRpcCkge1xyXG4gICAgICByZXR1cm4gb2YoY2FjaGVFbnRyeVsxXS5Ub29sdGlwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldCh0aGlzLmJ1aWxkVG9vbHRpcEVuZHBvaW50VXJsKGlkLCBhcHBDdHh0KSkucGlwZShtYXAoKHJlc3A6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FjaGVUb29sdGlwKHJlc3AudG9vbHRpcCwgY2FjaGVFbnRyeSA/IGNhY2hlRW50cnlbMV0gOiBudWxsLCBsb29rdXBLZXkpO1xyXG4gICAgICAgIHJldHVybiByZXNwLnRvb2x0aXA7XHJcbiAgICAgIH0sIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBoZWxwIGRldGFpbCBnaXZlbiB0aGUgc3VibWl0dGVkIHNlcnZlciBzaWRlIGlkZW50aWZpZXIgYW5kIGFwcGxpY2F0aW9uIGNvbnRleHRcclxuICAgKiAoc2VlIHtAbGluayBBcHBsaWNhdGlvbkNvbnRleHRFbnVtfSkuIFRoZSByZXNvdXJjZSB3aWxsIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBzZXJ2ZXIgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdCBpbiB0aGVcclxuICAgKiBhcHBsaWNhdGlvbiBvciBjbGllbnQgY2FjaGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgb2YgdGhlIHRvb2x0aXAgcmVzb3VyY2VcclxuICAgKiBAcGFyYW0gYXBwQ3R4dCBvZiB0aGUgdG9vbHRpcCByZXNvdXJjZVxyXG4gICAqIEByZXR1cm5zIHthbnl9XHJcbiAgICovXHJcbiAgcHVibGljIGxvb2t1cEhlbHAoaWQ6IG51bWJlciwgYXBwQ3R4dDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCBsb29rdXBLZXk6IEhlbHBFbnRpdHkuS2V5ID0gbmV3IEhlbHBFbnRpdHkuS2V5KGlkLCB0aGlzLmFwcGxpY2F0aW9uQ29udGV4dHNbPGFueT5hcHBDdHh0XSk7XHJcbiAgICBsZXQgY2FjaGVFbnRyeTogW0hlbHBFbnRpdHkuS2V5LCBIZWxwRW50aXR5XSA9IHRoaXMuX2hlbHBDYWNoZS5nZXQobG9va3VwS2V5KTtcclxuXHJcbiAgICBpZiAoY2FjaGVFbnRyeSAmJiBjYWNoZUVudHJ5WzFdLkJvZHkpIHtcclxuICAgICAgcmV0dXJuIG9mKGNhY2hlRW50cnlbMV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0KHRoaXMuYnVpbGRIZWxwRW5kcG9pbnRVcmwoaWQsIGFwcEN0eHQpKS5waXBlKG1hcCgocmVzcDogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYWNoZUhlbHAocmVzcCwgY2FjaGVFbnRyeSA/IGNhY2hlRW50cnlbMV0gOiBudWxsLCBsb29rdXBLZXkpO1xyXG4gICAgICAgIHJldHVybiByZXNwO1xyXG4gICAgICB9LCAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICAgIH0pKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbG93cyBhbiBpZGVtcG90ZW50IHVwZGF0ZSBvZiBoZWxwIGRldGFpbCB0byB0aGUgc2VydmVyLiBTcGVjaWZpY2FsbHksIHRoaXMgd2lsbCB1cGRhdGUgdGhlIHRpdGxlIGFuZCBib2R5IHRoYXQgaXNcclxuICAgKiBkaXNwbGF5ZWQgaW4gdGhlIHtAbGluayBIZWxwQ29tcG9uZW50fSBtb2RhbCBoZWxwIGRpYWxvZy4gVGhpcyBzZXJ2aWNlIG1ldGhvZCBleHBlY3RzIHRoYXQgdGhlIHN1Ym1pdHRlZCB1c2VyIGlucHV0XHJcbiAgICogcHJvdmlkZWQgaW4ge0BsaW5rIEhlbHBFbnRpdHl9IGhhcyBiZWVuIHNhbml0aXplZCBieSB0aGUgY29tcG9uZW50IGluIGZvcm0gc3VibWlzc2lvbi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCBvZiB0aGUgaGVscCByZXNvdXJjZVxyXG4gICAqIEBwYXJhbSBhcHBDdHh0IG9mIHRoZSBoZWxwIHJlc291cmNlXHJcbiAgICogQHBhcmFtIGhlbHBEZXRhaWwgZGVmaW5lcyB0aGUgY29tcGxldGUgaGVscCBkZXRhaWwgKHRpdGxlIGFuZCBib2R5KSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb25lIG9yIGJvdGggd2VyZSBjaGFuZ2VkXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8Ym9vbGVhbj59IHRydWUgaWYgc3VibWl0dGVkIHN1Y2Nlc3NmdWxseVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdWJtaXRIZWxwVXBkYXRlKGlkOiBudW1iZXIsIGFwcEN0eHQ6IHN0cmluZywgaGVscERldGFpbDogSGVscEVudGl0eSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KHRoaXMuYnVpbGRIZWxwRW5kcG9pbnRVcmwoaWQsIGFwcEN0eHQpLFxyXG4gICAgICBKU09OLnN0cmluZ2lmeShoZWxwRGV0YWlsKSwge3dpdGhDcmVkZW50aWFsczogdHJ1ZX0pLnBpcGUobWFwKChyZXNwOiBhbnkpID0+IHtcclxuICAgICAgbGV0IGxvb2t1cEtleTogSGVscEVudGl0eS5LZXkgPSBuZXcgSGVscEVudGl0eS5LZXkoaWQsIHRoaXMuYXBwbGljYXRpb25Db250ZXh0c1s8YW55PmFwcEN0eHRdKTtcclxuXHJcbiAgICAgIHRoaXMuX2hlbHBDYWNoZS5wdXQobG9va3VwS2V5LCBoZWxwRGV0YWlsKTtcclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWxsb3dzIGFuIGlkZW1wb3RlbnQgdXBkYXRlIG9mIGEgdG9vbHRpcCB0byB0aGUgc2VydmVyLiBTcGVjaWZpY2FsbHksIHRoaXMgd2lsbCB1cGRhdGUgdGhlIHRvb2x0aXAgdGhhdCBpc1xyXG4gICAqIGRpc3BsYXllZCBpbiB0aGUge0BsaW5rIEhlbHBDb21wb25lbnR9IHdoZW4gaG92ZXJpbmcgb24gYSBoZWxwIGljb24uIFRoaXMgc2VydmljZSBtZXRob2QgZXhwZWN0cyB0aGF0IHRoZSBzdWJtaXR0ZWRcclxuICAgKiB1c2VyIGlucHV0IHByb3ZpZGVkIGluIHtAbGluayBIZWxwRW50aXR5fSBoYXMgYmVlbiBzYW5pdGl6ZWQgYnkgdGhlIGNvbXBvbmVudCBpbiBmb3JtIHN1Ym1pc3Npb24uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgb2YgdGhlIHRvb2x0aXAgcmVzb3VyY2VcclxuICAgKiBAcGFyYW0gYXBwQ3R4dCBvZiB0aGUgdG9vbHRpcCByZXNvdXJjZVxyXG4gICAqIEBwYXJhbSBoZWxwRGV0YWlsIGRlZmluZXMgdGhlIGNvbXBsZXRlIHRvb2x0aXAsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvbmUgb3IgYm90aCB3ZXJlIGNoYW5nZWRcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxib29sZWFuPn0gdHJ1ZSBpZiBzdWJtaXR0ZWQgc3VjY2Vzc2Z1bGx5XHJcbiAgICovXHJcbiAgcHVibGljIHN1Ym1pdFRvb2x0aXBVcGRhdGUoaWQ6IG51bWJlciwgYXBwQ3R4dDogc3RyaW5nLCBoZWxwRGV0YWlsOiBIZWxwRW50aXR5KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQodGhpcy5idWlsZFRvb2x0aXBFbmRwb2ludFVybChpZCwgYXBwQ3R4dCksXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KGhlbHBEZXRhaWwpLCB7d2l0aENyZWRlbnRpYWxzOiB0cnVlfSkucGlwZShtYXAoKHJlc3A6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChyZXNwLnN0YXR1cyA9PT0gMjA0KSB7XHJcbiAgICAgICAgbGV0IGxvb2t1cEtleTogSGVscEVudGl0eS5LZXkgPSBuZXcgSGVscEVudGl0eS5LZXkoaWQsIHRoaXMuYXBwbGljYXRpb25Db250ZXh0c1s8YW55PmFwcEN0eHRdKTtcclxuXHJcbiAgICAgICAgdGhpcy5faGVscENhY2hlLnB1dChsb29rdXBLZXksIGhlbHBEZXRhaWwpO1xyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSGVscFNlcnZpY2UuSU5WQUxJRF9FUlJfTVNHICsgcmVzcC5zdGF0dXMpO1xyXG4gICAgICB9XHJcbiAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkSGVscEVuZHBvaW50VXJsKGlkOiBudW1iZXIsIGFwcEN0eHQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hlbHBFbmRwb2ludCArIFwiL1wiICsgYXBwQ3R4dCArIFwiL1wiICsgaWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkVG9vbHRpcEVuZHBvaW50VXJsKGlkOiBudW1iZXIsIGFwcEN0eHQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Rvb2x0aXBFbmRwb2ludCArIFwiL1wiICsgYXBwQ3R4dCArIFwiL1wiICsgaWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhY2hlSGVscChqc29uOiBhbnksIGhlbHBFbnRpdHk6IEhlbHBFbnRpdHksIGtleTogSGVscEVudGl0eS5LZXkpOiB2b2lkIHtcclxuICAgIGlmIChoZWxwRW50aXR5KSB7XHJcbiAgICAgIGhlbHBFbnRpdHkuVGl0bGUgPSBqc29uLnRpdGxlO1xyXG4gICAgICBoZWxwRW50aXR5LkJvZHkgPSBqc29uLmJvZHk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9oZWxwQ2FjaGUucHV0KGtleSwgbmV3IEhlbHBFbnRpdHkoXHJcbiAgICAgICAgbnVsbCxcclxuICAgICAgICBqc29uLnRpdGxlLFxyXG4gICAgICAgIGpzb24uYm9keSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWNoZVRvb2x0aXAodG9vbHRpcDogc3RyaW5nLCBoZWxwRW50aXR5OiBIZWxwRW50aXR5LCBrZXk6IEhlbHBFbnRpdHkuS2V5KTogdm9pZCB7XHJcbiAgICBpZiAoaGVscEVudGl0eSkge1xyXG4gICAgICBoZWxwRW50aXR5LlRvb2x0aXAgPSB0b29sdGlwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5faGVscENhY2hlLnB1dChrZXksIG5ldyBIZWxwRW50aXR5KHRvb2x0aXApKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgZXJyTXNnID0gKGVycm9yLm1lc3NhZ2UpID8gZXJyb3IubWVzc2FnZSA6IEhlbHBTZXJ2aWNlLkdFTkVSSUNfRVJSX01TRztcclxuXHJcbiAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJNc2cpO1xyXG4gIH1cclxufVxyXG4iXX0=
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvaGVscC9zcmMvaGVscC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsT0FBTyxFQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxVQUFVLEVBQW9CLE1BQU0sc0JBQXNCLENBQUM7QUFFbkUsT0FBTyxFQUFjLEVBQUUsRUFBRSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUvQyxPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNsRSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sb0JBQW9CLENBQUM7QUFDN0MsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBRXpDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLElBQUkscUJBQXFCLEdBQUcsSUFBSSxjQUFjLENBQUMsdUJBQXVCLENBQUMsQ0FBQztBQUUvRTs7R0FFRztBQUNILE1BQU0sQ0FBQyxJQUFJLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFekU7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxJQUFJLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0FBRW5FOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFFSCxNQUFNLE9BQU8sV0FBVztJQUN0Qjs7OztPQUlHO2FBQ29CLG9CQUFlLEdBQVcsZ0RBQWdELEFBQTNELENBQTREO2FBQzNFLG9CQUFlLEdBQVcsNENBQTRDLEFBQXZELENBQXdEO0lBVzlGLFlBQW9CLEtBQWlCLEVBQ2MsZ0JBQXdCLEVBQzNCLGFBQXFCLEVB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L0IsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxLQUFVO1FBQzVCLElBQUksTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDO1FBRTNFLE9BQU8sVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVCLENBQUM7K0dBM0pVLFdBQVcsNENBbUJGLHFCQUFxQixhQUNyQixrQkFBa0IsYUFDbEIsZUFBZTttSEFyQnhCLFdBQVc7OzRGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQW9CSSxNQUFNOzJCQUFDLHFCQUFxQjs7MEJBQzVCLE1BQU07MkJBQUMsa0JBQWtCOzswQkFDekIsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChjKSAyMDE2IEh1bnRzbWFuIENhbmNlciBJbnN0aXR1dGUgYXQgdGhlIFVuaXZlcnNpdHkgb2YgVXRhaCwgQ29uZmlkZW50aWFsIGFuZCBQcm9wcmlldGFyeVxyXG4gKi9cclxuaW1wb3J0IHtJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgSW5qZWN0fSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0h0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuXHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mLCB0aHJvd0Vycm9yfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge2NhdGNoRXJyb3IsIG1hcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcblxyXG5pbXBvcnQge0FwcGxpY2F0aW9uQ29udGV4dEVudW19IGZyb20gXCIuL2FwcGxpY2F0aW9uLWNvbnRleHQuZW51bVwiO1xyXG5pbXBvcnQge0hlbHBDYWNoZX0gZnJvbSBcIi4vaGVscC1jYWNoZS5jbGFzc1wiO1xyXG5pbXBvcnQge0hlbHBFbnRpdHl9IGZyb20gXCIuL2hlbHAuZW50aXR5XCI7XHJcblxyXG4vKipcclxuICogQHR5cGUge09wYXF1ZVRva2VufSBkZWZpbmluZyB0aGUgYmFzZSBlbmRwb2ludCBmb3IgdGhlIHRvb2x0aXAgcmVzb3VyY2UuXHJcbiAqL1xyXG5leHBvcnQgbGV0IFRPT0xUSVBfQkFTRV9FTkRQT0lOVCA9IG5ldyBJbmplY3Rpb25Ub2tlbihcInRvb2x0aXBfYmFzZV9lbmRwb2ludFwiKTtcclxuXHJcbi8qKlxyXG4gKiBAdHlwZSB7T3BhcXVlVG9rZW59IGRlZmluaW5nIHRoZSBiYXNlIGVuZHBvaW50IGZvciB0aGUgaGVscCByZXNvdXJjZVxyXG4gKi9cclxuZXhwb3J0IGxldCBIRUxQX0JBU0VfRU5EUE9JTlQgPSBuZXcgSW5qZWN0aW9uVG9rZW4oXCJoZWxwX2Jhc2VfZW5kcG9pbnRcIik7XHJcblxyXG4vKipcclxuICogSWYgc2V0IHRvIG51bGwsIHRoZSBjYWNoZSB3aWxsIGJlIGluaXRpYWxpemUgd2l0aCBpdHMgZGVmYXVsdCBzaXplLlxyXG4gKlxyXG4gKiBAdHlwZSB7T3BhcXVlVG9rZW59IGRlZmluaW5nIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGFwcGxpY2F0aW9uIGhlbHAgY2FjaGUuXHJcbiAqL1xyXG5leHBvcnQgbGV0IEhFTFBfQ0FDSEVfU0laRSA9IG5ldyBJbmplY3Rpb25Ub2tlbihcImhlbHBfY2FjaGVfc2l6ZVwiKTtcclxuXHJcbi8qKlxyXG4gKiBBIHNlcnZpY2UgZm9yIGFjY2Vzc2luZyBoZWxwIGFuZCB0b29sdGlwIGluZm9ybWF0aW9uIGZyb20gdGhlIHNlcnZlciBhbmQgbWFpbnRhaW5pbmcgdGhlIGFwcGxpY2F0aW9uIGNsaWVudCBzdGF0ZSBhc1xyXG4gKiBpdCBpcyByZWxhdGVkIHRvIHRoaXMgaGVscCBkZXRhaWwuIEFsbCBzZXJ2ZXIgaW50ZXJhY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIHVzZXIgc2hvdWxkIGJlIGVuY2Fwc3VsYXRlZCBpbiB0aGlzIHNlcnZpY2VcclxuICogYW5kIHRoaXMgc2VydmljZSBzaG91bGQgcHJvdGVjdCByZWxhdGVkIHN0YXRlIGZyb20gdW53YW50ZWQgbW9kaWZpY2F0aW9uLlxyXG4gKiA8cD5cclxuICogVGhpcyBzZXJ2aWNlIGxldmVyYWdlcyBhbiBhcHBsaWNhdGlvbiBjYWNoaW5nIHN0cmF0ZWd5IHRoYXQgaXMgaW50ZW5kZWQgdG8gc3VwcGxlbWVudCBhbnkgY2xpZW50IGNhY2hpbmcgdGhhdCBtYXkgZXhpc3QuXHJcbiAqIFRoaXMgY2FjaGUgd2lsbCwgb2YgY291cnNlLCBiZSBjbGVhcmVkIGlmIHRoZSBjbGllbnQgaXMgcmVmcmVzaGVkLCBidXQsIGlkZWFsbHksIGl0IHNob3VsZCBhbHNvIGJlIGNsZWFyZWQgd2hlbiBhIHVzZXJzXHJcbiAqIHNlc3Npb24gaXMgdGVybWluYXRlZC5cclxuICogPHA+XHJcbiAqIFRoaXMgc2VydmljZSBpcyBleHBlY3RlZCB0byBiZSBpbmplY3RlZCB3aXRoIGtub3duIHNlcnZlciBlbmRwb2ludHMgYW5kLiBUaGlzIGluamVjdGlvbiBjYW4gYmUgYWNoaWV2ZWQgdGhyb3VnaCB0aGUgaG9zdFxyXG4gKiBhcHBsaWNhdGlvbnMgcm9vdCBtb2R1bGUgcHJvdmlkZXJzIGNvbmZpZ3VyYXRpb24uXHJcbiAqIDxwPlxyXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5FeGFtcGxlIG9mIG1vZHVsZSBjb25maWd1cmF0aW9uIGZvciB7QGNvZGUgSGVscFNlcnZpY2V9PC9jYXB0aW9uPlxyXG4gKiA8cHJlPlxyXG4gKiAgICZjb21tYXQ7TmdNb2R1bGUoe1xyXG4gKiAgICAgaW1wb3J0czogW0Jyb3dzZXJNb2R1bGUsIEh0dHBNb2R1bGVdLFxyXG4gKiAgICAgZGVjbGFyYXRpb25zOiBbRGVtb0FwcENvbXBvbmVudF0sXHJcbiAqICAgICBib290c3RyYXA6IFtEZW1vQXBwQ29tcG9uZW50XSxcclxuICogICAgIHByb3ZpZGVyczogW1xyXG4gKiAgICAgICB7cHJvdmlkZTogSEVMUF9DQUNIRV9TSVpFLCB1c2VWYWx1ZTogMjB9LFxyXG4gKiAgICAgICB7cHJvdmlkZTogVE9PTFRJUF9CQVNFX0VORFBPSU5ULCB1c2VWYWx1ZTogXCJodHRwczovL2xvY2FsaG9zdDo4MDgwL2NvcmUvYXBpL3Rvb2x0aXBzXCJ9LFxyXG4gKiAgICAgICB7cHJvdmlkZTogSEVMUF9CQVNFX0VORFBPSU5ULCB1c2VWYWx1ZTogXCJodHRwczovL2xvY2FsaG9zdDo4MDgwL2NvcmUvYXBpL2hlbHBzXCJ9XHJcbiAqICAgICBdXHJcbiAqICAgfSlcclxuICogPC9wcmU+XHJcbiAqXHJcbiAqIEBzaW5jZSAxLjAuMFxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSGVscFNlcnZpY2Uge1xyXG4gIC8qKlxyXG4gICAqIFRoZSBnZW5lcmljIGVycm9yIG1lc3NhZ2UgdXNlZCB3aGVuIGEgc2VydmVyIGVycm9yIGlzIHRocm93biB3aXRob3V0IGEgc3RhdHVzLlxyXG4gICAqXHJcbiAgICogQHR5cGUge3N0cmluZ31cclxuICAgKi9cclxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEdFTkVSSUNfRVJSX01TRzogc3RyaW5nID0gXCJGYWlsdXJlIGludGVyYWN0aW5nIHdpdGggZHluYW1pYyBoZWxwIFJFU1QgQVBJXCI7XHJcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBJTlZBTElEX0VSUl9NU0c6IHN0cmluZyA9IFwiVW5leHBlY3RlZCByZXNwb25zZSByZWNlaXZlZCB3aXRoIHN0YXR1czogXCI7XHJcblxyXG4gIC8qKlxyXG4gICAqIEEgcmVhZG9ubHkgcmVmZXJlbmNlIHRvIHRoZSB7QGxpbmsgQXBwbGljYXRpb25Db250ZXh0RW51bX0uXHJcbiAgICpcclxuICAgKiBAdHlwZSB7QXBwbGljYXRpb25Db250ZXh0RW51bX1cclxuICAgKi9cclxuICBwdWJsaWMgcmVhZG9ubHkgYXBwbGljYXRpb25Db250ZXh0cyA9IEFwcGxpY2F0aW9uQ29udGV4dEVudW07XHJcblxyXG4gIHByaXZhdGUgX2hlbHBDYWNoZTogSGVscENhY2hlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9odHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgICAgICAgIEBJbmplY3QoVE9PTFRJUF9CQVNFX0VORFBPSU5UKSBwcml2YXRlIF90b29sdGlwRW5kcG9pbnQ6IHN0cmluZyxcclxuICAgICAgICAgICAgICBASW5qZWN0KEhFTFBfQkFTRV9FTkRQT0lOVCkgcHJpdmF0ZSBfaGVscEVuZHBvaW50OiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgQEluamVjdChIRUxQX0NBQ0hFX1NJWkUpIGhlbHBDYWNoZVNpemU/OiBudW1iZXIpIHtcclxuICAgIHRoaXMuX2hlbHBDYWNoZSA9IGhlbHBDYWNoZVNpemUgPyBuZXcgSGVscENhY2hlKGhlbHBDYWNoZVNpemUpIDogbmV3IEhlbHBDYWNoZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSB0b29sdGlwIGdpdmVuIHRoZSBzdWJtaXR0ZWQgc2VydmVyIHNpZGUgaWRlbnRpZmllciBhbmQgYXBwbGljYXRpb24gY29udGV4dFxyXG4gICAqIChzZWUge0BsaW5rIEFwcGxpY2F0aW9uQ29udGV4dEVudW19KS4gVGhlIHJlc291cmNlIHdpbGwgYmUgcmV0cmlldmVkIGZyb20gdGhlIHNlcnZlciBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0IGluIHRoZVxyXG4gICAqIGFwcGxpY2F0aW9uIG9yIGNsaWVudCBjYWNoZS5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCBvZiB0aGUgdG9vbHRpcCByZXNvdXJjZVxyXG4gICAqIEBwYXJhbSBhcHBDdHh0IG9mIHRoZSB0b29sdGlwIHJlc291cmNlXHJcbiAgICogQHJldHVybnMge2FueX1cclxuICAgKi9cclxuICBwdWJsaWMgbG9va3VwVG9vbHRpcChpZDogbnVtYmVyLCBhcHBDdHh0OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFN0cmluZz4ge1xyXG4gICAgbGV0IGxvb2t1cEtleTogSGVscEVudGl0eS5LZXkgPSBuZXcgSGVscEVudGl0eS5LZXkoaWQsIHRoaXMuYXBwbGljYXRpb25Db250ZXh0c1s8YW55PmFwcEN0eHRdKTtcclxuICAgIGxldCBjYWNoZUVudHJ5OiBbSGVscEVudGl0eS5LZXksIEhlbHBFbnRpdHldID0gdGhpcy5faGVscENhY2hlLmdldChsb29rdXBLZXkpO1xyXG5cclxuICAgIGlmIChjYWNoZUVudHJ5ICYmIGNhY2hlRW50cnlbMV0uVG9vbHRpcCkge1xyXG4gICAgICByZXR1cm4gb2YoY2FjaGVFbnRyeVsxXS5Ub29sdGlwKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9odHRwLmdldCh0aGlzLmJ1aWxkVG9vbHRpcEVuZHBvaW50VXJsKGlkLCBhcHBDdHh0KSkucGlwZShtYXAoKHJlc3A6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY2FjaGVUb29sdGlwKHJlc3AudG9vbHRpcCwgY2FjaGVFbnRyeSA/IGNhY2hlRW50cnlbMV0gOiBudWxsLCBsb29rdXBLZXkpO1xyXG4gICAgICAgIHJldHVybiByZXNwLnRvb2x0aXA7XHJcbiAgICAgIH0sIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmV0cmlldmVzIHRoZSBoZWxwIGRldGFpbCBnaXZlbiB0aGUgc3VibWl0dGVkIHNlcnZlciBzaWRlIGlkZW50aWZpZXIgYW5kIGFwcGxpY2F0aW9uIGNvbnRleHRcclxuICAgKiAoc2VlIHtAbGluayBBcHBsaWNhdGlvbkNvbnRleHRFbnVtfSkuIFRoZSByZXNvdXJjZSB3aWxsIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBzZXJ2ZXIgaWYgaXQgZG9lcyBub3QgYWxyZWFkeSBleGlzdCBpbiB0aGVcclxuICAgKiBhcHBsaWNhdGlvbiBvciBjbGllbnQgY2FjaGUuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgb2YgdGhlIHRvb2x0aXAgcmVzb3VyY2VcclxuICAgKiBAcGFyYW0gYXBwQ3R4dCBvZiB0aGUgdG9vbHRpcCByZXNvdXJjZVxyXG4gICAqIEByZXR1cm5zIHthbnl9XHJcbiAgICovXHJcbiAgcHVibGljIGxvb2t1cEhlbHAoaWQ6IG51bWJlciwgYXBwQ3R4dDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCBsb29rdXBLZXk6IEhlbHBFbnRpdHkuS2V5ID0gbmV3IEhlbHBFbnRpdHkuS2V5KGlkLCB0aGlzLmFwcGxpY2F0aW9uQ29udGV4dHNbPGFueT5hcHBDdHh0XSk7XHJcbiAgICBsZXQgY2FjaGVFbnRyeTogW0hlbHBFbnRpdHkuS2V5LCBIZWxwRW50aXR5XSA9IHRoaXMuX2hlbHBDYWNoZS5nZXQobG9va3VwS2V5KTtcclxuXHJcbiAgICBpZiAoY2FjaGVFbnRyeSAmJiBjYWNoZUVudHJ5WzFdLkJvZHkpIHtcclxuICAgICAgcmV0dXJuIG9mKGNhY2hlRW50cnlbMV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2h0dHAuZ2V0KHRoaXMuYnVpbGRIZWxwRW5kcG9pbnRVcmwoaWQsIGFwcEN0eHQpKS5waXBlKG1hcCgocmVzcDogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5jYWNoZUhlbHAocmVzcCwgY2FjaGVFbnRyeSA/IGNhY2hlRW50cnlbMV0gOiBudWxsLCBsb29rdXBLZXkpO1xyXG4gICAgICAgIHJldHVybiByZXNwO1xyXG4gICAgICB9LCAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICAgIH0pKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFsbG93cyBhbiBpZGVtcG90ZW50IHVwZGF0ZSBvZiBoZWxwIGRldGFpbCB0byB0aGUgc2VydmVyLiBTcGVjaWZpY2FsbHksIHRoaXMgd2lsbCB1cGRhdGUgdGhlIHRpdGxlIGFuZCBib2R5IHRoYXQgaXNcclxuICAgKiBkaXNwbGF5ZWQgaW4gdGhlIHtAbGluayBIZWxwQ29tcG9uZW50fSBtb2RhbCBoZWxwIGRpYWxvZy4gVGhpcyBzZXJ2aWNlIG1ldGhvZCBleHBlY3RzIHRoYXQgdGhlIHN1Ym1pdHRlZCB1c2VyIGlucHV0XHJcbiAgICogcHJvdmlkZWQgaW4ge0BsaW5rIEhlbHBFbnRpdHl9IGhhcyBiZWVuIHNhbml0aXplZCBieSB0aGUgY29tcG9uZW50IGluIGZvcm0gc3VibWlzc2lvbi5cclxuICAgKlxyXG4gICAqIEBwYXJhbSBpZCBvZiB0aGUgaGVscCByZXNvdXJjZVxyXG4gICAqIEBwYXJhbSBhcHBDdHh0IG9mIHRoZSBoZWxwIHJlc291cmNlXHJcbiAgICogQHBhcmFtIGhlbHBEZXRhaWwgZGVmaW5lcyB0aGUgY29tcGxldGUgaGVscCBkZXRhaWwgKHRpdGxlIGFuZCBib2R5KSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb25lIG9yIGJvdGggd2VyZSBjaGFuZ2VkXHJcbiAgICogQHJldHVybnMge09ic2VydmFibGU8Ym9vbGVhbj59IHRydWUgaWYgc3VibWl0dGVkIHN1Y2Nlc3NmdWxseVxyXG4gICAqL1xyXG4gIHB1YmxpYyBzdWJtaXRIZWxwVXBkYXRlKGlkOiBudW1iZXIsIGFwcEN0eHQ6IHN0cmluZywgaGVscERldGFpbDogSGVscEVudGl0eSk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2h0dHAucHV0KHRoaXMuYnVpbGRIZWxwRW5kcG9pbnRVcmwoaWQsIGFwcEN0eHQpLFxyXG4gICAgICBKU09OLnN0cmluZ2lmeShoZWxwRGV0YWlsKSwge3dpdGhDcmVkZW50aWFsczogdHJ1ZX0pLnBpcGUobWFwKChyZXNwOiBhbnkpID0+IHtcclxuICAgICAgbGV0IGxvb2t1cEtleTogSGVscEVudGl0eS5LZXkgPSBuZXcgSGVscEVudGl0eS5LZXkoaWQsIHRoaXMuYXBwbGljYXRpb25Db250ZXh0c1s8YW55PmFwcEN0eHRdKTtcclxuXHJcbiAgICAgIHRoaXMuX2hlbHBDYWNoZS5wdXQobG9va3VwS2V5LCBoZWxwRGV0YWlsKTtcclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSksXHJcbiAgICAgIGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcikpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWxsb3dzIGFuIGlkZW1wb3RlbnQgdXBkYXRlIG9mIGEgdG9vbHRpcCB0byB0aGUgc2VydmVyLiBTcGVjaWZpY2FsbHksIHRoaXMgd2lsbCB1cGRhdGUgdGhlIHRvb2x0aXAgdGhhdCBpc1xyXG4gICAqIGRpc3BsYXllZCBpbiB0aGUge0BsaW5rIEhlbHBDb21wb25lbnR9IHdoZW4gaG92ZXJpbmcgb24gYSBoZWxwIGljb24uIFRoaXMgc2VydmljZSBtZXRob2QgZXhwZWN0cyB0aGF0IHRoZSBzdWJtaXR0ZWRcclxuICAgKiB1c2VyIGlucHV0IHByb3ZpZGVkIGluIHtAbGluayBIZWxwRW50aXR5fSBoYXMgYmVlbiBzYW5pdGl6ZWQgYnkgdGhlIGNvbXBvbmVudCBpbiBmb3JtIHN1Ym1pc3Npb24uXHJcbiAgICpcclxuICAgKiBAcGFyYW0gaWQgb2YgdGhlIHRvb2x0aXAgcmVzb3VyY2VcclxuICAgKiBAcGFyYW0gYXBwQ3R4dCBvZiB0aGUgdG9vbHRpcCByZXNvdXJjZVxyXG4gICAqIEBwYXJhbSBoZWxwRGV0YWlsIGRlZmluZXMgdGhlIGNvbXBsZXRlIHRvb2x0aXAsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvbmUgb3IgYm90aCB3ZXJlIGNoYW5nZWRcclxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxib29sZWFuPn0gdHJ1ZSBpZiBzdWJtaXR0ZWQgc3VjY2Vzc2Z1bGx5XHJcbiAgICovXHJcbiAgcHVibGljIHN1Ym1pdFRvb2x0aXBVcGRhdGUoaWQ6IG51bWJlciwgYXBwQ3R4dDogc3RyaW5nLCBoZWxwRGV0YWlsOiBIZWxwRW50aXR5KTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faHR0cC5wdXQodGhpcy5idWlsZFRvb2x0aXBFbmRwb2ludFVybChpZCwgYXBwQ3R4dCksXHJcbiAgICAgIEpTT04uc3RyaW5naWZ5KGhlbHBEZXRhaWwpLCB7d2l0aENyZWRlbnRpYWxzOiB0cnVlfSkucGlwZShtYXAoKHJlc3A6IFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIGlmIChyZXNwLnN0YXR1cyA9PT0gMjA0KSB7XHJcbiAgICAgICAgbGV0IGxvb2t1cEtleTogSGVscEVudGl0eS5LZXkgPSBuZXcgSGVscEVudGl0eS5LZXkoaWQsIHRoaXMuYXBwbGljYXRpb25Db250ZXh0c1s8YW55PmFwcEN0eHRdKTtcclxuXHJcbiAgICAgICAgdGhpcy5faGVscENhY2hlLnB1dChsb29rdXBLZXksIGhlbHBEZXRhaWwpO1xyXG5cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoSGVscFNlcnZpY2UuSU5WQUxJRF9FUlJfTVNHICsgcmVzcC5zdGF0dXMpO1xyXG4gICAgICB9XHJcbiAgICB9KSxcclxuICAgICAgY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkSGVscEVuZHBvaW50VXJsKGlkOiBudW1iZXIsIGFwcEN0eHQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuX2hlbHBFbmRwb2ludCArIFwiL1wiICsgYXBwQ3R4dCArIFwiL1wiICsgaWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkVG9vbHRpcEVuZHBvaW50VXJsKGlkOiBudW1iZXIsIGFwcEN0eHQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuX3Rvb2x0aXBFbmRwb2ludCArIFwiL1wiICsgYXBwQ3R4dCArIFwiL1wiICsgaWQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhY2hlSGVscChqc29uOiBhbnksIGhlbHBFbnRpdHk6IEhlbHBFbnRpdHksIGtleTogSGVscEVudGl0eS5LZXkpOiB2b2lkIHtcclxuICAgIGlmIChoZWxwRW50aXR5KSB7XHJcbiAgICAgIGhlbHBFbnRpdHkuVGl0bGUgPSBqc29uLnRpdGxlO1xyXG4gICAgICBoZWxwRW50aXR5LkJvZHkgPSBqc29uLmJvZHk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9oZWxwQ2FjaGUucHV0KGtleSwgbmV3IEhlbHBFbnRpdHkoXHJcbiAgICAgICAgbnVsbCxcclxuICAgICAgICBqc29uLnRpdGxlLFxyXG4gICAgICAgIGpzb24uYm9keSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYWNoZVRvb2x0aXAodG9vbHRpcDogc3RyaW5nLCBoZWxwRW50aXR5OiBIZWxwRW50aXR5LCBrZXk6IEhlbHBFbnRpdHkuS2V5KTogdm9pZCB7XHJcbiAgICBpZiAoaGVscEVudGl0eSkge1xyXG4gICAgICBoZWxwRW50aXR5LlRvb2x0aXAgPSB0b29sdGlwO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5faGVscENhY2hlLnB1dChrZXksIG5ldyBIZWxwRW50aXR5KHRvb2x0aXApKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyb3I6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBsZXQgZXJyTXNnID0gKGVycm9yLm1lc3NhZ2UpID8gZXJyb3IubWVzc2FnZSA6IEhlbHBTZXJ2aWNlLkdFTkVSSUNfRVJSX01TRztcclxuXHJcbiAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJNc2cpO1xyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, Injectable, Inject, Component, Input, ViewChild, NgModule } from '@angular/core';
2
+ import { InjectionToken, Inject, Injectable, ViewChild, Input, Component, NgModule } from '@angular/core';
3
3
  import * as i4 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i3 from '@ng-bootstrap/ng-bootstrap';
@@ -362,10 +362,10 @@ class HelpService {
362
362
  let errMsg = (error.message) ? error.message : HelpService.GENERIC_ERR_MSG;
363
363
  return throwError(errMsg);
364
364
  }
365
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpService, deps: [{ token: i1.HttpClient }, { token: TOOLTIP_BASE_ENDPOINT }, { token: HELP_BASE_ENDPOINT }, { token: HELP_CACHE_SIZE }], target: i0.ɵɵFactoryTarget.Injectable }); }
366
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpService }); }
365
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpService, deps: [{ token: i1.HttpClient }, { token: TOOLTIP_BASE_ENDPOINT }, { token: HELP_BASE_ENDPOINT }, { token: HELP_CACHE_SIZE }], target: i0.ɵɵFactoryTarget.Injectable }); }
366
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpService }); }
367
367
  }
368
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpService, decorators: [{
368
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpService, decorators: [{
369
369
  type: Injectable
370
370
  }], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
371
371
  type: Inject,
@@ -554,8 +554,8 @@ class HelpComponent {
554
554
  this._modalDetail = this.staticHelp;
555
555
  }
556
556
  }
557
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpComponent, deps: [{ token: HelpService }, { token: i2.AuthenticationService }, { token: i3.NgbModal }], target: i0.ɵɵFactoryTarget.Component }); }
558
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.2", type: HelpComponent, selector: "hci-help", inputs: { id: "id", tooltipId: "tooltipId", tooltipPlacement: "tooltipPlacement", applicationContext: "applicationContext", staticTooltip: "staticTooltip", editRole: ["helpEditRole", "editRole"], modalId: "modalId", staticHelp: "staticHelp", useDefaultTitle: "useDefaultTitle" }, viewQueries: [{ propertyName: "_helpModalDirective", first: true, predicate: ["helpModal"], descendants: true }, { propertyName: "_helpTooltipDirective", first: true, predicate: ["helpTooltip"], descendants: true }], exportAs: ["hciHelp"], ngImport: i0, template: `
557
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpComponent, deps: [{ token: HelpService }, { token: i2.AuthenticationService }, { token: i3.NgbModal }], target: i0.ɵɵFactoryTarget.Component }); }
558
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: HelpComponent, selector: "hci-help", inputs: { id: "id", tooltipId: "tooltipId", tooltipPlacement: "tooltipPlacement", applicationContext: "applicationContext", staticTooltip: "staticTooltip", editRole: ["helpEditRole", "editRole"], modalId: "modalId", staticHelp: "staticHelp", useDefaultTitle: "useDefaultTitle" }, viewQueries: [{ propertyName: "_helpModalDirective", first: true, predicate: ["helpModal"], descendants: true }, { propertyName: "_helpTooltipDirective", first: true, predicate: ["helpTooltip"], descendants: true }], exportAs: ["hciHelp"], ngImport: i0, template: `
559
559
  <div class="hci-help-container" [ngbTooltip]="helpTooltip">
560
560
  <span>
561
561
  <i class="fas fa-lg fa-question-circle" (click)="showHelp()"></i>
@@ -593,7 +593,7 @@ class HelpComponent {
593
593
  </ng-template>
594
594
  `, isInline: true, styles: [".hci-help-container{display:inline-block}.hci-loading-help{margin:auto;width:100%}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i5.RoleCheckDirective, selector: "[hciHasRole]", inputs: ["hciHasRole"] }] }); }
595
595
  }
596
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpComponent, decorators: [{
596
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpComponent, decorators: [{
597
597
  type: Component,
598
598
  args: [{ selector: "hci-help", exportAs: "hciHelp", template: `
599
599
  <div class="hci-help-container" [ngbTooltip]="helpTooltip">
@@ -674,17 +674,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImpor
674
674
  * @since 1.0.0
675
675
  */
676
676
  class HelpModule {
677
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
678
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.2", ngImport: i0, type: HelpModule, declarations: [HelpComponent], imports: [CommonModule,
677
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
678
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: HelpModule, declarations: [HelpComponent], imports: [CommonModule,
679
679
  NgbModule,
680
680
  UserModule], exports: [HelpComponent] }); }
681
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpModule, providers: [
681
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpModule, providers: [
682
682
  HelpService
683
683
  ], imports: [CommonModule,
684
684
  NgbModule,
685
685
  UserModule] }); }
686
686
  }
687
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.2", ngImport: i0, type: HelpModule, decorators: [{
687
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HelpModule, decorators: [{
688
688
  type: NgModule,
689
689
  args: [{
690
690
  imports: [
@@ -1 +1 @@
1
- {"version":3,"file":"huntsman-cancer-institute-help.mjs","sources":["../../../projects/help/src/application-context.enum.ts","../../../projects/help/src/help-cache.class.ts","../../../projects/help/src/help.entity.ts","../../../projects/help/src/help.service.ts","../../../projects/help/src/help.component.ts","../../../projects/help/src/help.module.ts","../../../projects/help/src/huntsman-cancer-institute-help.ts"],"sourcesContent":["/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\n\r\n/**\r\n * @since 1.0.0\r\n */\r\n// TODO: BHY (10/16/16) - Consider moving this to a more generic feature module as it may be more generally applicable.\r\nexport enum ApplicationContextEnum {\r\n GNOMEX,\r\n // TODO: BHY (10/16/16) - Add more application contexts as they are implemented\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {HelpEntity} from \"./help.entity\";\r\n\r\n/**\r\n * A cache store with {@code Map} semantics for application cache management of {@link HelpEntity} objects. However,\r\n * the delegated data structure is an array storing a tuple of {@code [HelpEntity.Key, HelpEntity]}. This array is managed\r\n * in a way to behave as a circular or ring array. The result of this management is that once the maximum\r\n * size for the array is reached, the oldest cached tuple will be dropped when the next one is added. If the dropped detail\r\n * is required again, the client will have to obtain it from the server where, hopefully, browser caching will come into\r\n * play ({@see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag}). The default maximum size is '10'.\r\n * <p>\r\n * This application cache was included with the understanding that help detail will be largely stable and that the notion\r\n * of eventual consistency for the help details is accpetable in all the various application contexts. Using this strategy\r\n * eliminates any server communication to determine whether or not cached entities are valid (e.g. using ETAGs) improving\r\n * client application performance (which can be significant given the client specifications). This approach should be used\r\n * in conjunction with browser caching strategies as mentioned above. If these assumptions are invalid, then eliminating\r\n * this application cache might be the right course of action.\r\n * <p>\r\n * This cache will be cleared by a browser refresh, and should be cleared when a user session is terminated.\r\n *\r\n * @since 1.0.0\r\n */\r\nexport class HelpCache {\r\n /**\r\n * The maximum default cache size for this application cache.\r\n *\r\n * @type {number}\r\n */\r\n private static readonly DEFAULT_MAX_SIZE: number = 10;\r\n\r\n private _delegate: Array<[HelpEntity.Key, HelpEntity]> = [];\r\n\r\n constructor(private _maxSize?: number) {\r\n if(!this._maxSize) {\r\n this._maxSize = HelpCache.DEFAULT_MAX_SIZE;\r\n }\r\n }\r\n\r\n /**\r\n * Put the {@link HelpEntity} into this cache with the submitted {@link HelpEntity.Key}. Duplicate values will be stored\r\n * in the underlying data structure.\r\n * @param key\r\n * @param helpEntity\r\n */\r\n public put(key: HelpEntity.Key, helpEntity: HelpEntity): void {\r\n let existing: [HelpEntity.Key, HelpEntity] = this.get(key);\r\n\r\n if (existing) {\r\n existing[1] = helpEntity;\r\n } else if(this._delegate.length >= this._maxSize) {\r\n this._delegate.pop();\r\n }\r\n\r\n this._delegate.unshift([key, helpEntity]);\r\n }\r\n\r\n /**\r\n * Gets the first {@link HelpEntity} associated with the submitted {@link HelpEntity.Key}. If no entity exists with the\r\n * submitted key the response will be undefined.\r\n *\r\n * @param key for a cached {@code HelpEntity}\r\n * @returns {any} the cached {@code HelpEntity} if it exists or 'undefined'\r\n */\r\n public get(key: HelpEntity.Key): [HelpEntity.Key, HelpEntity] {\r\n return this._delegate.find((entry: [HelpEntity.Key, HelpEntity]) => {\r\n return key.equals(entry[0]);\r\n });\r\n }\r\n\r\n /**\r\n * Clears the cache.\r\n */\r\n public clear(): void {\r\n this._delegate = [];\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\n/**\r\n * A common entity intended to be used to define the api used in client/server interactions and as a transient client\r\n * representation. This entity is defined by a composite key that is made up of a server side entity identifier and an\r\n * application context enumeration. The help entity includes:\r\n * <ul>\r\n * <li>tooltip - the content provided for tooltip hover</li>\r\n * <li>modalTitle - the content provided for the modal help title</li>\r\n * <li>modalBody - the content provided for the modal help body</li>\r\n * </ul>\r\n * <p>\r\n * @example <caption>Example of the {@code HelpEntity} JSON representation</caption>\r\n * <pre>\r\n * {\r\n * \"tooltip\":\"foo\",\r\n * \"modalTitle\":\"foo title\",\r\n * \"modalBody\":\"foo body\"\r\n * }\r\n * </pre>\r\n *\r\n * @since 1.0.0\r\n */\r\nexport class HelpEntity {\r\n constructor(private tooltip?: string, private title?: string, private body?: string) {\r\n }\r\n\r\n public get Tooltip(): string {\r\n return this.tooltip;\r\n }\r\n\r\n public set Tooltip(tooltip: string) {\r\n this.tooltip = tooltip;\r\n }\r\n\r\n public get Title(): string {\r\n return this.title;\r\n }\r\n\r\n public set Title(title: string) {\r\n this.title = title;\r\n }\r\n\r\n public get Body(): string {\r\n return this.body;\r\n }\r\n\r\n public set Body(body: string) {\r\n this.body = body;\r\n }\r\n}\r\n\r\nexport module HelpEntity {\r\n /**\r\n * An inner class to {@link HelpEntity} to describe the composite key of this entity which is made up of an {@code integer}\r\n * id and a {@link ApplicationContextEnum}.\r\n */\r\n export class Key {\r\n constructor(private id: number, private applicationContext: string) {\r\n }\r\n\r\n /**\r\n * An accessor for this {@link HelpEntity} object's server side identifier.\r\n *\r\n * @returns {number}\r\n * @constructor\r\n */\r\n public get Id(): number {\r\n return this.id;\r\n }\r\n\r\n /**\r\n * An accessor for this {@link HelpEntity} object's application context as described by the {@link ApplicationContextEnum}\r\n *\r\n * @returns {string}\r\n * @constructor\r\n */\r\n public get ApplicationContext(): string {\r\n return this.applicationContext;\r\n }\r\n\r\n /**\r\n * A method for deep comparison of two {@code} Key objects via JSON representation.\r\n *\r\n * @param that the key to compare to\r\n * @returns {boolean} true if equal, false otherwise\r\n */\r\n public equals(that: Key): boolean {\r\n return JSON.stringify(this) === JSON.stringify(that);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {Injectable, InjectionToken, Inject} from \"@angular/core\";\r\nimport {HttpClient, HttpErrorResponse} from \"@angular/common/http\";\r\n\r\nimport { Observable, of, throwError} from \"rxjs\";\r\nimport {catchError, map} from \"rxjs/operators\";\r\n\r\nimport {ApplicationContextEnum} from \"./application-context.enum\";\r\nimport {HelpCache} from \"./help-cache.class\";\r\nimport {HelpEntity} from \"./help.entity\";\r\n\r\n/**\r\n * @type {OpaqueToken} defining the base endpoint for the tooltip resource.\r\n */\r\nexport let TOOLTIP_BASE_ENDPOINT = new InjectionToken(\"tooltip_base_endpoint\");\r\n\r\n/**\r\n * @type {OpaqueToken} defining the base endpoint for the help resource\r\n */\r\nexport let HELP_BASE_ENDPOINT = new InjectionToken(\"help_base_endpoint\");\r\n\r\n/**\r\n * If set to null, the cache will be initialize with its default size.\r\n *\r\n * @type {OpaqueToken} defining the maximum size of the application help cache.\r\n */\r\nexport let HELP_CACHE_SIZE = new InjectionToken(\"help_cache_size\");\r\n\r\n/**\r\n * A service for accessing help and tooltip information from the server and maintaining the application client state as\r\n * it is related to this help detail. All server interactions related to the user should be encapsulated in this service\r\n * and this service should protect related state from unwanted modification.\r\n * <p>\r\n * This service leverages an application caching strategy that is intended to supplement any client caching that may exist.\r\n * This cache will, of course, be cleared if the client is refreshed, but, ideally, it should also be cleared when a users\r\n * session is terminated.\r\n * <p>\r\n * This service is expected to be injected with known server endpoints and. This injection can be achieved through the host\r\n * applications root module providers configuration.\r\n * <p>\r\n * @example <caption>Example of module configuration for {@code HelpService}</caption>\r\n * <pre>\r\n * &commat;NgModule({\r\n * imports: [BrowserModule, HttpModule],\r\n * declarations: [DemoAppComponent],\r\n * bootstrap: [DemoAppComponent],\r\n * providers: [\r\n * {provide: HELP_CACHE_SIZE, useValue: 20},\r\n * {provide: TOOLTIP_BASE_ENDPOINT, useValue: \"https://localhost:8080/core/api/tooltips\"},\r\n * {provide: HELP_BASE_ENDPOINT, useValue: \"https://localhost:8080/core/api/helps\"}\r\n * ]\r\n * })\r\n * </pre>\r\n *\r\n * @since 1.0.0\r\n */\r\n@Injectable()\r\nexport class HelpService {\r\n /**\r\n * The generic error message used when a server error is thrown without a status.\r\n *\r\n * @type {string}\r\n */\r\n public static readonly GENERIC_ERR_MSG: string = \"Failure interacting with dynamic help REST API\";\r\n public static readonly INVALID_ERR_MSG: string = \"Unexpected response received with status: \";\r\n\r\n /**\r\n * A readonly reference to the {@link ApplicationContextEnum}.\r\n *\r\n * @type {ApplicationContextEnum}\r\n */\r\n public readonly applicationContexts = ApplicationContextEnum;\r\n\r\n private _helpCache: HelpCache;\r\n\r\n constructor(private _http: HttpClient,\r\n @Inject(TOOLTIP_BASE_ENDPOINT) private _tooltipEndpoint: string,\r\n @Inject(HELP_BASE_ENDPOINT) private _helpEndpoint: string,\r\n @Inject(HELP_CACHE_SIZE) helpCacheSize?: number) {\r\n this._helpCache = helpCacheSize ? new HelpCache(helpCacheSize) : new HelpCache();\r\n }\r\n\r\n /**\r\n * Retrieves the tooltip given the submitted server side identifier and application context\r\n * (see {@link ApplicationContextEnum}). The resource will be retrieved from the server if it does not already exist in the\r\n * application or client cache.\r\n *\r\n * @param id of the tooltip resource\r\n * @param appCtxt of the tooltip resource\r\n * @returns {any}\r\n */\r\n public lookupTooltip(id: number, appCtxt: string): Observable<String> {\r\n let lookupKey: HelpEntity.Key = new HelpEntity.Key(id, this.applicationContexts[<any>appCtxt]);\r\n let cacheEntry: [HelpEntity.Key, HelpEntity] = this._helpCache.get(lookupKey);\r\n\r\n if (cacheEntry && cacheEntry[1].Tooltip) {\r\n return of(cacheEntry[1].Tooltip);\r\n } else {\r\n return this._http.get(this.buildTooltipEndpointUrl(id, appCtxt)).pipe(map((resp: any) => {\r\n this.cacheTooltip(resp.tooltip, cacheEntry ? cacheEntry[1] : null, lookupKey);\r\n return resp.tooltip;\r\n }, (error: HttpErrorResponse) => {\r\n this.handleError(error);\r\n }));\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the help detail given the submitted server side identifier and application context\r\n * (see {@link ApplicationContextEnum}). The resource will be retrieved from the server if it does not already exist in the\r\n * application or client cache.\r\n *\r\n * @param id of the tooltip resource\r\n * @param appCtxt of the tooltip resource\r\n * @returns {any}\r\n */\r\n public lookupHelp(id: number, appCtxt: string): Observable<any> {\r\n let lookupKey: HelpEntity.Key = new HelpEntity.Key(id, this.applicationContexts[<any>appCtxt]);\r\n let cacheEntry: [HelpEntity.Key, HelpEntity] = this._helpCache.get(lookupKey);\r\n\r\n if (cacheEntry && cacheEntry[1].Body) {\r\n return of(cacheEntry[1]);\r\n } else {\r\n return this._http.get(this.buildHelpEndpointUrl(id, appCtxt)).pipe(map((resp: any) => {\r\n this.cacheHelp(resp, cacheEntry ? cacheEntry[1] : null, lookupKey);\r\n return resp;\r\n }, (error: HttpErrorResponse) => {\r\n this.handleError(error);\r\n }));\r\n }\r\n }\r\n\r\n /**\r\n * Allows an idempotent update of help detail to the server. Specifically, this will update the title and body that is\r\n * displayed in the {@link HelpComponent} modal help dialog. This service method expects that the submitted user input\r\n * provided in {@link HelpEntity} has been sanitized by the component in form submission.\r\n *\r\n * @param id of the help resource\r\n * @param appCtxt of the help resource\r\n * @param helpDetail defines the complete help detail (title and body) regardless of whether one or both were changed\r\n * @returns {Observable<boolean>} true if submitted successfully\r\n */\r\n public submitHelpUpdate(id: number, appCtxt: string, helpDetail: HelpEntity): Observable<boolean> {\r\n return this._http.put(this.buildHelpEndpointUrl(id, appCtxt),\r\n JSON.stringify(helpDetail), {withCredentials: true}).pipe(map((resp: any) => {\r\n let lookupKey: HelpEntity.Key = new HelpEntity.Key(id, this.applicationContexts[<any>appCtxt]);\r\n\r\n this._helpCache.put(lookupKey, helpDetail);\r\n\r\n return true;\r\n }),\r\n catchError(this.handleError));\r\n }\r\n\r\n /**\r\n * Allows an idempotent update of a tooltip to the server. Specifically, this will update the tooltip that is\r\n * displayed in the {@link HelpComponent} when hovering on a help icon. This service method expects that the submitted\r\n * user input provided in {@link HelpEntity} has been sanitized by the component in form submission.\r\n *\r\n * @param id of the tooltip resource\r\n * @param appCtxt of the tooltip resource\r\n * @param helpDetail defines the complete tooltip, regardless of whether one or both were changed\r\n * @returns {Observable<boolean>} true if submitted successfully\r\n */\r\n public submitTooltipUpdate(id: number, appCtxt: string, helpDetail: HelpEntity): Observable<boolean> {\r\n return this._http.put(this.buildTooltipEndpointUrl(id, appCtxt),\r\n JSON.stringify(helpDetail), {withCredentials: true}).pipe(map((resp: Response) => {\r\n if (resp.status === 204) {\r\n let lookupKey: HelpEntity.Key = new HelpEntity.Key(id, this.applicationContexts[<any>appCtxt]);\r\n\r\n this._helpCache.put(lookupKey, helpDetail);\r\n\r\n return true;\r\n } else {\r\n throw new Error(HelpService.INVALID_ERR_MSG + resp.status);\r\n }\r\n }),\r\n catchError(this.handleError));\r\n }\r\n\r\n private buildHelpEndpointUrl(id: number, appCtxt: string) {\r\n return this._helpEndpoint + \"/\" + appCtxt + \"/\" + id;\r\n }\r\n\r\n private buildTooltipEndpointUrl(id: number, appCtxt: string) {\r\n return this._tooltipEndpoint + \"/\" + appCtxt + \"/\" + id;\r\n }\r\n\r\n private cacheHelp(json: any, helpEntity: HelpEntity, key: HelpEntity.Key): void {\r\n if (helpEntity) {\r\n helpEntity.Title = json.title;\r\n helpEntity.Body = json.body;\r\n } else {\r\n this._helpCache.put(key, new HelpEntity(\r\n null,\r\n json.title,\r\n json.body));\r\n }\r\n }\r\n\r\n private cacheTooltip(tooltip: string, helpEntity: HelpEntity, key: HelpEntity.Key): void {\r\n if (helpEntity) {\r\n helpEntity.Tooltip = tooltip;\r\n } else {\r\n this._helpCache.put(key, new HelpEntity(tooltip));\r\n }\r\n }\r\n\r\n private handleError(error: any): Observable<any> {\r\n let errMsg = (error.message) ? error.message : HelpService.GENERIC_ERR_MSG;\r\n\r\n return throwError(errMsg);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {Component, ViewChild, Input, OnInit, AfterViewInit} from \"@angular/core\";\r\nimport {NgbModal, NgbModalRef, NgbTooltip} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {HelpService} from \"./help.service\";\r\nimport {AuthenticationService} from \"@huntsman-cancer-institute/authentication\";\r\n\r\n/**\r\n * A help component providing a help tooltip on hover and help dialog when clicked. This information can be provided\r\n * statically by the application by setting the attributes 'staticTooltip' and/or 'staticHelp' or defining the\r\n * appropriate tooltip and help ids and a valid application context (see {@link HelpComponent#getApplicationContexts}\r\n * and {@link ApplicationContextEnum}).\r\n *\r\n * @since 1.0.0\r\n */\r\n@Component({\r\n selector: \"hci-help\",\r\n exportAs: \"hciHelp\",\r\n template: `\r\n <div class=\"hci-help-container\" [ngbTooltip]=\"helpTooltip\">\r\n <span>\r\n <i class=\"fas fa-lg fa-question-circle\" (click)=\"showHelp()\"></i>\r\n </span>\r\n </div>\r\n <ng-template #helpTooltip>\r\n <div *ngIf=\"_tooltipContent && !_isRetrievingTooltip\" [innerHTML]=\"_tooltipContent\"></div>\r\n <span *ngIf=\"!staticTooltip && _isRetrievingTooltip\">\r\n <i class=\"fas fa-spinner fa-pulse fa-fw\"></i>\r\n </span>\r\n </ng-template>\r\n \r\n <ng-template #helpModal class=\"modal fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myLargeModalLabel\" aria-hidden=\"true\">\r\n <div *ngIf =\"_modalDetail && _modalDetail.title\" class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" (click)=\"closeModal()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n <h4 *ngIf=\"_modalDetail\" [innerHTML] = \"_modalDetail.title\"></h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div *ngIf=\"_modalDetail && !_modalDetail.body\">\r\n <i class=\"fas fa-spinner fa-pulse fa-fw fa-4x hci-loading-help\"></i>\r\n </div>\r\n <div *ngIf=\"_modalDetail\" [innerHTML] = \"_modalDetail.body\"></div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" (click)=\"closeModal()\">Close</button>\r\n <ng-template [ngIf]=\"_isAuthenticated\">\r\n <ng-template [hciHasRole]=\"editRole\">\r\n <button *ngIf=\"!_isEditing && !_hasError\" type=\"button\" class=\"btn btn-primary\" (click)=\"editHelp()\">Edit</button>\r\n </ng-template>\r\n </ng-template>\r\n <button *ngIf=\"_isEditing\" type=\"submit\" class=\"btn btn-success\">Submit</button>\r\n </div>\r\n </ng-template>\r\n `,\r\n styles: [`\r\n .hci-help-container {\r\n display: inline-block;\r\n }\r\n \r\n .hci-loading-help {\r\n margin: auto;\r\n width: 100%;\r\n }\r\n `]\r\n})\r\nexport class HelpComponent implements AfterViewInit {\r\n\r\n public static readonly DEFAULT_HELP_MODAL_TITLE = \"Help Information\";\r\n\r\n /**\r\n * A general id attribute that will be applied for both help tooltip and dialog resources if set, if this detail needs\r\n * to be retrieved from the server.\r\n */\r\n @Input(\"id\") public id: number;\r\n\r\n /**\r\n * An attribute for the id of the help tooltip resource, if this detail needs to be retrieved from the server.\r\n */\r\n @Input(\"tooltipId\") public tooltipId: number;\r\n\r\n /**\r\n * An attribute that directs tooltip placement, where the default is 'top'. Other options are 'bottom', 'left' and 'right'.\r\n */\r\n @Input(\"tooltipPlacement\") public tooltipPlacement: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\r\n\r\n /**\r\n * An attribute defining this help components application context, if the tooltip and/or dialog needs to be retrieved\r\n * from the server.\r\n */\r\n @Input(\"applicationContext\") public applicationContext: number;\r\n\r\n /**\r\n * An attribute defining the static text, which can include markup, to be provided for this help components tooltip.\r\n * If this is set the tooltip will not be retrieved from the server.\r\n */\r\n @Input(\"staticTooltip\") public staticTooltip: string;\r\n\r\n /**\r\n * An attribute to set the role necessary to edit the help information provided by this component. This attribute is only\r\n * valid for dynamic content (retrieved from server resources).\r\n */\r\n @Input(\"helpEditRole\") public editRole: string;\r\n\r\n /**\r\n * An attribute for the id of the help modal resource, if this detail needs to be retrieved from the server.\r\n */\r\n @Input(\"modalId\") public modalId: number;\r\n\r\n /**\r\n * An attribute defining the static text, which can include markup, to be provided for this help components modal dialog.\r\n * If this is set the modal detail will not be retrieved from the server.\r\n */\r\n @Input(\"staticHelp\") public staticHelp: string;\r\n\r\n @Input(\"useDefaultTitle\") public useDefaultTitle: boolean;\r\n\r\n @ViewChild(\"helpModal\", {static: false}) private _helpModalDirective: NgbModalRef;\r\n private _helpModalDirectiveRef: NgbModalRef;\r\n @ViewChild(\"helpTooltip\", {static: false}) private _helpTooltipDirective: NgbTooltip;\r\n\r\n _isEditing: boolean;\r\n _hasError: boolean;\r\n _modalDetail: any;\r\n _isAuthenticated: boolean = false;\r\n _tooltipInFocus: boolean;\r\n _isRetrievingTooltip: boolean;\r\n _tooltipContent: string;\r\n\r\n constructor(private _helpService: HelpService, private _authenticationService: AuthenticationService, private modalService: NgbModal) {}\r\n\r\n /**\r\n * Validates the component configuration, sets up the ids for the tooltip and modal dialog, establishes the correct\r\n * beginning state (or potentially, the absolute state if all values are static) for both the tooltip and modal help.\r\n */\r\n public ngAfterViewInit(): void {\r\n this._authenticationService.isAuthenticated().subscribe((isAuthenticated: boolean) => {\r\n this._isAuthenticated = isAuthenticated;\r\n });\r\n this.validateConfiguration();\r\n this.setupIds();\r\n this.setupTooltip();\r\n this.setupModal();\r\n }\r\n\r\n /**\r\n * An accessor for an enumeration of valid application contexts.\r\n *\r\n * @returns {ApplicationContextEnum} defining all valid contexts\r\n */\r\n public get applicationContexts(): any {\r\n return this._helpService.applicationContexts;\r\n }\r\n\r\n /**\r\n * The function registered to handle state change events on the help tool tip.\r\n * <p>\r\n * Based on the hover state and the state of the component the tooltip will be displayed and the tooltip detail will\r\n * be retrieved from the server, if necessary.\r\n *\r\n * @param state of the user hover on the help tooltip\r\n */\r\n public tooltipStateChanged(state: boolean): void {\r\n if (state && !this.staticTooltip && !this._isRetrievingTooltip) {\r\n this._tooltipInFocus = true;\r\n this._isRetrievingTooltip = true;\r\n\r\n this._helpService.lookupTooltip(this.tooltipId, this._helpService.applicationContexts[this.applicationContext])\r\n .subscribe((tooltip: string) => {\r\n this._tooltipContent = tooltip;\r\n\r\n if (this._tooltipInFocus) {\r\n this._helpModalDirectiveRef = this.modalService.open(this._helpModalDirective);\r\n }\r\n\r\n this._isRetrievingTooltip = false;\r\n }, (error: any) => {\r\n // TODO: BHY (10/20/16) - Consider communicating an error in tooltip. However, I think leaving the spinner animation works.\r\n this._isRetrievingTooltip = false;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * A function to set the appropriate component state when the user's mouse leaves the help icon.\r\n */\r\n public onLeaveTooltip(): void {\r\n this._tooltipInFocus = false;\r\n }\r\n\r\n /**\r\n * A function to display the help modal dialog and hide the corresponding tooltip, retrieving it from the server if\r\n * necessary.\r\n */\r\n public showHelp(): void {\r\n this._helpModalDirectiveRef = this.modalService.open(this._helpModalDirective);\r\n\r\n if (!this._modalDetail || this._hasError) {\r\n this._modalDetail = {\r\n title: \"Loading Help...\"\r\n };\r\n this._helpService.lookupHelp(this.modalId, this._helpService.applicationContexts[this.applicationContext])\r\n .subscribe((helpDetail: any) => {\r\n this._hasError = false;\r\n this._modalDetail = helpDetail;\r\n\r\n if (!this._modalDetail.title && this.useDefaultTitle) {\r\n this._modalDetail.title = HelpComponent.DEFAULT_HELP_MODAL_TITLE;\r\n }\r\n }, (error: any) => {\r\n this._hasError = true;\r\n\r\n this._modalDetail = {\r\n title: \"Error\",\r\n body: error\r\n };\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * A method to close the help modal dialog and reset this components help modal internal state.\r\n */\r\n public closeModal(): void {\r\n this._isEditing = false;\r\n this._helpModalDirectiveRef.close(null);\r\n }\r\n\r\n /**\r\n * A method to submit the modal dialog form.\r\n */\r\n public editHelp(): void {\r\n this._isEditing = true;\r\n // TODO: BHY (10/17/16) - Implement edit.\r\n }\r\n\r\n /**\r\n * A utility function to verify that the state of this component is valid.\r\n * <p>\r\n * A valid HelpComponent configuration will require that either static help and/or tooltip detail (staticTooltip and\r\n * staticHelp attributes), or that an id and application context is configured to retrieve this information from the server.\r\n * <p>\r\n * If the tooltip and help ids are the same only the id attribute needs to be configured, otherwise both the tooltipId\r\n * and modalId attributes need to be configured independently.\r\n */\r\n private validateConfiguration(): void {\r\n if (!this.staticTooltip && ((this.id < 0 && this.tooltipId < 0) || this.applicationContext < 0)) {\r\n throw new Error(\"BUG ALERT! Invalid HelpComponent configuration. If [staticTooltip] is not set, then \" +\r\n \"[id] or [tooltipId] and [applicationContext] must be configured.\");\r\n }\r\n\r\n if (!this.staticHelp && ((this.id < 0 && this.modalId < 0) || this.applicationContext < 0)) {\r\n throw new Error(\"BUG ALERT! Invalid HelpComponent configuration. If [staticHelp] is not set, then \" +\r\n \"[id] or [modalId] and [applicationContext] must be configured.\");\r\n }\r\n }\r\n\r\n /**\r\n * A utility function to setup the ids, given the various configurations.\r\n */\r\n private setupIds(): void {\r\n if (this.id) {\r\n this.tooltipId = this.id;\r\n this.modalId = this.id;\r\n }\r\n }\r\n\r\n /**\r\n * A utility function to setup the help tooltip with a 'wait for async response' template or the static help tooltip and\r\n * configure the tooltip placement, if set.\r\n * <p>\r\n * The capability to set a custom tooltip class was intentionally excluded to allow the CORE team to consider the\r\n * consistency of the CORE branded styling before allowing such customization to application engineers.\r\n */\r\n private setupTooltip(): void {\r\n if (this.tooltipPlacement) {\r\n this._helpTooltipDirective.placement = this.tooltipPlacement;\r\n }\r\n\r\n if (this.staticTooltip) {\r\n this._tooltipContent = this.staticTooltip;\r\n } else {\r\n this._helpService.lookupTooltip(this.tooltipId, this._helpService.applicationContexts[this.applicationContext])\r\n .subscribe((tooltip: string) => {\r\n this._tooltipContent = tooltip;\r\n\r\n this._isRetrievingTooltip = false;\r\n }, (error: any) => {\r\n // TODO: BHY (10/20/16) - Consider communicating an error in tooltip. However, I think leaving the spinner animation works.\r\n this._isRetrievingTooltip = false;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * A utility function to setup the help modal dialog with static help modal content, if available.\r\n */\r\n private setupModal(): void {\r\n if (this.staticHelp) {\r\n this._modalDetail = this.staticHelp;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\n\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {UserModule} from \"@huntsman-cancer-institute/user\";\r\n\r\nimport {HelpService} from \"./help.service\";\r\nimport {HelpComponent} from \"./help.component\";\r\n\r\n/**\r\n * @since 1.0.0\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n NgbModule,\r\n UserModule\r\n ],\r\n declarations: [\r\n HelpComponent\r\n ],\r\n exports: [\r\n HelpComponent\r\n ],\r\n providers: [\r\n HelpService\r\n ]\r\n})\r\nexport class HelpModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.HelpService"],"mappings":"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"}
1
+ {"version":3,"file":"huntsman-cancer-institute-help.mjs","sources":["../../../projects/help/src/application-context.enum.ts","../../../projects/help/src/help-cache.class.ts","../../../projects/help/src/help.entity.ts","../../../projects/help/src/help.service.ts","../../../projects/help/src/help.component.ts","../../../projects/help/src/help.module.ts","../../../projects/help/src/huntsman-cancer-institute-help.ts"],"sourcesContent":["/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\n\r\n/**\r\n * @since 1.0.0\r\n */\r\n// TODO: BHY (10/16/16) - Consider moving this to a more generic feature module as it may be more generally applicable.\r\nexport enum ApplicationContextEnum {\r\n GNOMEX,\r\n // TODO: BHY (10/16/16) - Add more application contexts as they are implemented\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {HelpEntity} from \"./help.entity\";\r\n\r\n/**\r\n * A cache store with {@code Map} semantics for application cache management of {@link HelpEntity} objects. However,\r\n * the delegated data structure is an array storing a tuple of {@code [HelpEntity.Key, HelpEntity]}. This array is managed\r\n * in a way to behave as a circular or ring array. The result of this management is that once the maximum\r\n * size for the array is reached, the oldest cached tuple will be dropped when the next one is added. If the dropped detail\r\n * is required again, the client will have to obtain it from the server where, hopefully, browser caching will come into\r\n * play ({@see https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag}). The default maximum size is '10'.\r\n * <p>\r\n * This application cache was included with the understanding that help detail will be largely stable and that the notion\r\n * of eventual consistency for the help details is accpetable in all the various application contexts. Using this strategy\r\n * eliminates any server communication to determine whether or not cached entities are valid (e.g. using ETAGs) improving\r\n * client application performance (which can be significant given the client specifications). This approach should be used\r\n * in conjunction with browser caching strategies as mentioned above. If these assumptions are invalid, then eliminating\r\n * this application cache might be the right course of action.\r\n * <p>\r\n * This cache will be cleared by a browser refresh, and should be cleared when a user session is terminated.\r\n *\r\n * @since 1.0.0\r\n */\r\nexport class HelpCache {\r\n /**\r\n * The maximum default cache size for this application cache.\r\n *\r\n * @type {number}\r\n */\r\n private static readonly DEFAULT_MAX_SIZE: number = 10;\r\n\r\n private _delegate: Array<[HelpEntity.Key, HelpEntity]> = [];\r\n\r\n constructor(private _maxSize?: number) {\r\n if(!this._maxSize) {\r\n this._maxSize = HelpCache.DEFAULT_MAX_SIZE;\r\n }\r\n }\r\n\r\n /**\r\n * Put the {@link HelpEntity} into this cache with the submitted {@link HelpEntity.Key}. Duplicate values will be stored\r\n * in the underlying data structure.\r\n * @param key\r\n * @param helpEntity\r\n */\r\n public put(key: HelpEntity.Key, helpEntity: HelpEntity): void {\r\n let existing: [HelpEntity.Key, HelpEntity] = this.get(key);\r\n\r\n if (existing) {\r\n existing[1] = helpEntity;\r\n } else if(this._delegate.length >= this._maxSize) {\r\n this._delegate.pop();\r\n }\r\n\r\n this._delegate.unshift([key, helpEntity]);\r\n }\r\n\r\n /**\r\n * Gets the first {@link HelpEntity} associated with the submitted {@link HelpEntity.Key}. If no entity exists with the\r\n * submitted key the response will be undefined.\r\n *\r\n * @param key for a cached {@code HelpEntity}\r\n * @returns {any} the cached {@code HelpEntity} if it exists or 'undefined'\r\n */\r\n public get(key: HelpEntity.Key): [HelpEntity.Key, HelpEntity] {\r\n return this._delegate.find((entry: [HelpEntity.Key, HelpEntity]) => {\r\n return key.equals(entry[0]);\r\n });\r\n }\r\n\r\n /**\r\n * Clears the cache.\r\n */\r\n public clear(): void {\r\n this._delegate = [];\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\n/**\r\n * A common entity intended to be used to define the api used in client/server interactions and as a transient client\r\n * representation. This entity is defined by a composite key that is made up of a server side entity identifier and an\r\n * application context enumeration. The help entity includes:\r\n * <ul>\r\n * <li>tooltip - the content provided for tooltip hover</li>\r\n * <li>modalTitle - the content provided for the modal help title</li>\r\n * <li>modalBody - the content provided for the modal help body</li>\r\n * </ul>\r\n * <p>\r\n * @example <caption>Example of the {@code HelpEntity} JSON representation</caption>\r\n * <pre>\r\n * {\r\n * \"tooltip\":\"foo\",\r\n * \"modalTitle\":\"foo title\",\r\n * \"modalBody\":\"foo body\"\r\n * }\r\n * </pre>\r\n *\r\n * @since 1.0.0\r\n */\r\nexport class HelpEntity {\r\n constructor(private tooltip?: string, private title?: string, private body?: string) {\r\n }\r\n\r\n public get Tooltip(): string {\r\n return this.tooltip;\r\n }\r\n\r\n public set Tooltip(tooltip: string) {\r\n this.tooltip = tooltip;\r\n }\r\n\r\n public get Title(): string {\r\n return this.title;\r\n }\r\n\r\n public set Title(title: string) {\r\n this.title = title;\r\n }\r\n\r\n public get Body(): string {\r\n return this.body;\r\n }\r\n\r\n public set Body(body: string) {\r\n this.body = body;\r\n }\r\n}\r\n\r\nexport module HelpEntity {\r\n /**\r\n * An inner class to {@link HelpEntity} to describe the composite key of this entity which is made up of an {@code integer}\r\n * id and a {@link ApplicationContextEnum}.\r\n */\r\n export class Key {\r\n constructor(private id: number, private applicationContext: string) {\r\n }\r\n\r\n /**\r\n * An accessor for this {@link HelpEntity} object's server side identifier.\r\n *\r\n * @returns {number}\r\n * @constructor\r\n */\r\n public get Id(): number {\r\n return this.id;\r\n }\r\n\r\n /**\r\n * An accessor for this {@link HelpEntity} object's application context as described by the {@link ApplicationContextEnum}\r\n *\r\n * @returns {string}\r\n * @constructor\r\n */\r\n public get ApplicationContext(): string {\r\n return this.applicationContext;\r\n }\r\n\r\n /**\r\n * A method for deep comparison of two {@code} Key objects via JSON representation.\r\n *\r\n * @param that the key to compare to\r\n * @returns {boolean} true if equal, false otherwise\r\n */\r\n public equals(that: Key): boolean {\r\n return JSON.stringify(this) === JSON.stringify(that);\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {Injectable, InjectionToken, Inject} from \"@angular/core\";\r\nimport {HttpClient, HttpErrorResponse} from \"@angular/common/http\";\r\n\r\nimport { Observable, of, throwError} from \"rxjs\";\r\nimport {catchError, map} from \"rxjs/operators\";\r\n\r\nimport {ApplicationContextEnum} from \"./application-context.enum\";\r\nimport {HelpCache} from \"./help-cache.class\";\r\nimport {HelpEntity} from \"./help.entity\";\r\n\r\n/**\r\n * @type {OpaqueToken} defining the base endpoint for the tooltip resource.\r\n */\r\nexport let TOOLTIP_BASE_ENDPOINT = new InjectionToken(\"tooltip_base_endpoint\");\r\n\r\n/**\r\n * @type {OpaqueToken} defining the base endpoint for the help resource\r\n */\r\nexport let HELP_BASE_ENDPOINT = new InjectionToken(\"help_base_endpoint\");\r\n\r\n/**\r\n * If set to null, the cache will be initialize with its default size.\r\n *\r\n * @type {OpaqueToken} defining the maximum size of the application help cache.\r\n */\r\nexport let HELP_CACHE_SIZE = new InjectionToken(\"help_cache_size\");\r\n\r\n/**\r\n * A service for accessing help and tooltip information from the server and maintaining the application client state as\r\n * it is related to this help detail. All server interactions related to the user should be encapsulated in this service\r\n * and this service should protect related state from unwanted modification.\r\n * <p>\r\n * This service leverages an application caching strategy that is intended to supplement any client caching that may exist.\r\n * This cache will, of course, be cleared if the client is refreshed, but, ideally, it should also be cleared when a users\r\n * session is terminated.\r\n * <p>\r\n * This service is expected to be injected with known server endpoints and. This injection can be achieved through the host\r\n * applications root module providers configuration.\r\n * <p>\r\n * @example <caption>Example of module configuration for {@code HelpService}</caption>\r\n * <pre>\r\n * &commat;NgModule({\r\n * imports: [BrowserModule, HttpModule],\r\n * declarations: [DemoAppComponent],\r\n * bootstrap: [DemoAppComponent],\r\n * providers: [\r\n * {provide: HELP_CACHE_SIZE, useValue: 20},\r\n * {provide: TOOLTIP_BASE_ENDPOINT, useValue: \"https://localhost:8080/core/api/tooltips\"},\r\n * {provide: HELP_BASE_ENDPOINT, useValue: \"https://localhost:8080/core/api/helps\"}\r\n * ]\r\n * })\r\n * </pre>\r\n *\r\n * @since 1.0.0\r\n */\r\n@Injectable()\r\nexport class HelpService {\r\n /**\r\n * The generic error message used when a server error is thrown without a status.\r\n *\r\n * @type {string}\r\n */\r\n public static readonly GENERIC_ERR_MSG: string = \"Failure interacting with dynamic help REST API\";\r\n public static readonly INVALID_ERR_MSG: string = \"Unexpected response received with status: \";\r\n\r\n /**\r\n * A readonly reference to the {@link ApplicationContextEnum}.\r\n *\r\n * @type {ApplicationContextEnum}\r\n */\r\n public readonly applicationContexts = ApplicationContextEnum;\r\n\r\n private _helpCache: HelpCache;\r\n\r\n constructor(private _http: HttpClient,\r\n @Inject(TOOLTIP_BASE_ENDPOINT) private _tooltipEndpoint: string,\r\n @Inject(HELP_BASE_ENDPOINT) private _helpEndpoint: string,\r\n @Inject(HELP_CACHE_SIZE) helpCacheSize?: number) {\r\n this._helpCache = helpCacheSize ? new HelpCache(helpCacheSize) : new HelpCache();\r\n }\r\n\r\n /**\r\n * Retrieves the tooltip given the submitted server side identifier and application context\r\n * (see {@link ApplicationContextEnum}). The resource will be retrieved from the server if it does not already exist in the\r\n * application or client cache.\r\n *\r\n * @param id of the tooltip resource\r\n * @param appCtxt of the tooltip resource\r\n * @returns {any}\r\n */\r\n public lookupTooltip(id: number, appCtxt: string): Observable<String> {\r\n let lookupKey: HelpEntity.Key = new HelpEntity.Key(id, this.applicationContexts[<any>appCtxt]);\r\n let cacheEntry: [HelpEntity.Key, HelpEntity] = this._helpCache.get(lookupKey);\r\n\r\n if (cacheEntry && cacheEntry[1].Tooltip) {\r\n return of(cacheEntry[1].Tooltip);\r\n } else {\r\n return this._http.get(this.buildTooltipEndpointUrl(id, appCtxt)).pipe(map((resp: any) => {\r\n this.cacheTooltip(resp.tooltip, cacheEntry ? cacheEntry[1] : null, lookupKey);\r\n return resp.tooltip;\r\n }, (error: HttpErrorResponse) => {\r\n this.handleError(error);\r\n }));\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the help detail given the submitted server side identifier and application context\r\n * (see {@link ApplicationContextEnum}). The resource will be retrieved from the server if it does not already exist in the\r\n * application or client cache.\r\n *\r\n * @param id of the tooltip resource\r\n * @param appCtxt of the tooltip resource\r\n * @returns {any}\r\n */\r\n public lookupHelp(id: number, appCtxt: string): Observable<any> {\r\n let lookupKey: HelpEntity.Key = new HelpEntity.Key(id, this.applicationContexts[<any>appCtxt]);\r\n let cacheEntry: [HelpEntity.Key, HelpEntity] = this._helpCache.get(lookupKey);\r\n\r\n if (cacheEntry && cacheEntry[1].Body) {\r\n return of(cacheEntry[1]);\r\n } else {\r\n return this._http.get(this.buildHelpEndpointUrl(id, appCtxt)).pipe(map((resp: any) => {\r\n this.cacheHelp(resp, cacheEntry ? cacheEntry[1] : null, lookupKey);\r\n return resp;\r\n }, (error: HttpErrorResponse) => {\r\n this.handleError(error);\r\n }));\r\n }\r\n }\r\n\r\n /**\r\n * Allows an idempotent update of help detail to the server. Specifically, this will update the title and body that is\r\n * displayed in the {@link HelpComponent} modal help dialog. This service method expects that the submitted user input\r\n * provided in {@link HelpEntity} has been sanitized by the component in form submission.\r\n *\r\n * @param id of the help resource\r\n * @param appCtxt of the help resource\r\n * @param helpDetail defines the complete help detail (title and body) regardless of whether one or both were changed\r\n * @returns {Observable<boolean>} true if submitted successfully\r\n */\r\n public submitHelpUpdate(id: number, appCtxt: string, helpDetail: HelpEntity): Observable<boolean> {\r\n return this._http.put(this.buildHelpEndpointUrl(id, appCtxt),\r\n JSON.stringify(helpDetail), {withCredentials: true}).pipe(map((resp: any) => {\r\n let lookupKey: HelpEntity.Key = new HelpEntity.Key(id, this.applicationContexts[<any>appCtxt]);\r\n\r\n this._helpCache.put(lookupKey, helpDetail);\r\n\r\n return true;\r\n }),\r\n catchError(this.handleError));\r\n }\r\n\r\n /**\r\n * Allows an idempotent update of a tooltip to the server. Specifically, this will update the tooltip that is\r\n * displayed in the {@link HelpComponent} when hovering on a help icon. This service method expects that the submitted\r\n * user input provided in {@link HelpEntity} has been sanitized by the component in form submission.\r\n *\r\n * @param id of the tooltip resource\r\n * @param appCtxt of the tooltip resource\r\n * @param helpDetail defines the complete tooltip, regardless of whether one or both were changed\r\n * @returns {Observable<boolean>} true if submitted successfully\r\n */\r\n public submitTooltipUpdate(id: number, appCtxt: string, helpDetail: HelpEntity): Observable<boolean> {\r\n return this._http.put(this.buildTooltipEndpointUrl(id, appCtxt),\r\n JSON.stringify(helpDetail), {withCredentials: true}).pipe(map((resp: Response) => {\r\n if (resp.status === 204) {\r\n let lookupKey: HelpEntity.Key = new HelpEntity.Key(id, this.applicationContexts[<any>appCtxt]);\r\n\r\n this._helpCache.put(lookupKey, helpDetail);\r\n\r\n return true;\r\n } else {\r\n throw new Error(HelpService.INVALID_ERR_MSG + resp.status);\r\n }\r\n }),\r\n catchError(this.handleError));\r\n }\r\n\r\n private buildHelpEndpointUrl(id: number, appCtxt: string) {\r\n return this._helpEndpoint + \"/\" + appCtxt + \"/\" + id;\r\n }\r\n\r\n private buildTooltipEndpointUrl(id: number, appCtxt: string) {\r\n return this._tooltipEndpoint + \"/\" + appCtxt + \"/\" + id;\r\n }\r\n\r\n private cacheHelp(json: any, helpEntity: HelpEntity, key: HelpEntity.Key): void {\r\n if (helpEntity) {\r\n helpEntity.Title = json.title;\r\n helpEntity.Body = json.body;\r\n } else {\r\n this._helpCache.put(key, new HelpEntity(\r\n null,\r\n json.title,\r\n json.body));\r\n }\r\n }\r\n\r\n private cacheTooltip(tooltip: string, helpEntity: HelpEntity, key: HelpEntity.Key): void {\r\n if (helpEntity) {\r\n helpEntity.Tooltip = tooltip;\r\n } else {\r\n this._helpCache.put(key, new HelpEntity(tooltip));\r\n }\r\n }\r\n\r\n private handleError(error: any): Observable<any> {\r\n let errMsg = (error.message) ? error.message : HelpService.GENERIC_ERR_MSG;\r\n\r\n return throwError(errMsg);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {Component, ViewChild, Input, OnInit, AfterViewInit} from \"@angular/core\";\r\nimport {NgbModal, NgbModalRef, NgbTooltip} from \"@ng-bootstrap/ng-bootstrap\";\r\nimport {HelpService} from \"./help.service\";\r\nimport {AuthenticationService} from \"@huntsman-cancer-institute/authentication\";\r\n\r\n/**\r\n * A help component providing a help tooltip on hover and help dialog when clicked. This information can be provided\r\n * statically by the application by setting the attributes 'staticTooltip' and/or 'staticHelp' or defining the\r\n * appropriate tooltip and help ids and a valid application context (see {@link HelpComponent#getApplicationContexts}\r\n * and {@link ApplicationContextEnum}).\r\n *\r\n * @since 1.0.0\r\n */\r\n@Component({\r\n selector: \"hci-help\",\r\n exportAs: \"hciHelp\",\r\n template: `\r\n <div class=\"hci-help-container\" [ngbTooltip]=\"helpTooltip\">\r\n <span>\r\n <i class=\"fas fa-lg fa-question-circle\" (click)=\"showHelp()\"></i>\r\n </span>\r\n </div>\r\n <ng-template #helpTooltip>\r\n <div *ngIf=\"_tooltipContent && !_isRetrievingTooltip\" [innerHTML]=\"_tooltipContent\"></div>\r\n <span *ngIf=\"!staticTooltip && _isRetrievingTooltip\">\r\n <i class=\"fas fa-spinner fa-pulse fa-fw\"></i>\r\n </span>\r\n </ng-template>\r\n \r\n <ng-template #helpModal class=\"modal fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"myLargeModalLabel\" aria-hidden=\"true\">\r\n <div *ngIf =\"_modalDetail && _modalDetail.title\" class=\"modal-header\">\r\n <button type=\"button\" class=\"close\" (click)=\"closeModal()\" aria-label=\"Close\">\r\n <span aria-hidden=\"true\">&times;</span>\r\n </button>\r\n <h4 *ngIf=\"_modalDetail\" [innerHTML] = \"_modalDetail.title\"></h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <div *ngIf=\"_modalDetail && !_modalDetail.body\">\r\n <i class=\"fas fa-spinner fa-pulse fa-fw fa-4x hci-loading-help\"></i>\r\n </div>\r\n <div *ngIf=\"_modalDetail\" [innerHTML] = \"_modalDetail.body\"></div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-default\" (click)=\"closeModal()\">Close</button>\r\n <ng-template [ngIf]=\"_isAuthenticated\">\r\n <ng-template [hciHasRole]=\"editRole\">\r\n <button *ngIf=\"!_isEditing && !_hasError\" type=\"button\" class=\"btn btn-primary\" (click)=\"editHelp()\">Edit</button>\r\n </ng-template>\r\n </ng-template>\r\n <button *ngIf=\"_isEditing\" type=\"submit\" class=\"btn btn-success\">Submit</button>\r\n </div>\r\n </ng-template>\r\n `,\r\n styles: [`\r\n .hci-help-container {\r\n display: inline-block;\r\n }\r\n \r\n .hci-loading-help {\r\n margin: auto;\r\n width: 100%;\r\n }\r\n `]\r\n})\r\nexport class HelpComponent implements AfterViewInit {\r\n\r\n public static readonly DEFAULT_HELP_MODAL_TITLE = \"Help Information\";\r\n\r\n /**\r\n * A general id attribute that will be applied for both help tooltip and dialog resources if set, if this detail needs\r\n * to be retrieved from the server.\r\n */\r\n @Input(\"id\") public id: number;\r\n\r\n /**\r\n * An attribute for the id of the help tooltip resource, if this detail needs to be retrieved from the server.\r\n */\r\n @Input(\"tooltipId\") public tooltipId: number;\r\n\r\n /**\r\n * An attribute that directs tooltip placement, where the default is 'top'. Other options are 'bottom', 'left' and 'right'.\r\n */\r\n @Input(\"tooltipPlacement\") public tooltipPlacement: \"top\" | \"bottom\" | \"left\" | \"right\" = \"top\";\r\n\r\n /**\r\n * An attribute defining this help components application context, if the tooltip and/or dialog needs to be retrieved\r\n * from the server.\r\n */\r\n @Input(\"applicationContext\") public applicationContext: number;\r\n\r\n /**\r\n * An attribute defining the static text, which can include markup, to be provided for this help components tooltip.\r\n * If this is set the tooltip will not be retrieved from the server.\r\n */\r\n @Input(\"staticTooltip\") public staticTooltip: string;\r\n\r\n /**\r\n * An attribute to set the role necessary to edit the help information provided by this component. This attribute is only\r\n * valid for dynamic content (retrieved from server resources).\r\n */\r\n @Input(\"helpEditRole\") public editRole: string;\r\n\r\n /**\r\n * An attribute for the id of the help modal resource, if this detail needs to be retrieved from the server.\r\n */\r\n @Input(\"modalId\") public modalId: number;\r\n\r\n /**\r\n * An attribute defining the static text, which can include markup, to be provided for this help components modal dialog.\r\n * If this is set the modal detail will not be retrieved from the server.\r\n */\r\n @Input(\"staticHelp\") public staticHelp: string;\r\n\r\n @Input(\"useDefaultTitle\") public useDefaultTitle: boolean;\r\n\r\n @ViewChild(\"helpModal\", {static: false}) private _helpModalDirective: NgbModalRef;\r\n private _helpModalDirectiveRef: NgbModalRef;\r\n @ViewChild(\"helpTooltip\", {static: false}) private _helpTooltipDirective: NgbTooltip;\r\n\r\n _isEditing: boolean;\r\n _hasError: boolean;\r\n _modalDetail: any;\r\n _isAuthenticated: boolean = false;\r\n _tooltipInFocus: boolean;\r\n _isRetrievingTooltip: boolean;\r\n _tooltipContent: string;\r\n\r\n constructor(private _helpService: HelpService, private _authenticationService: AuthenticationService, private modalService: NgbModal) {}\r\n\r\n /**\r\n * Validates the component configuration, sets up the ids for the tooltip and modal dialog, establishes the correct\r\n * beginning state (or potentially, the absolute state if all values are static) for both the tooltip and modal help.\r\n */\r\n public ngAfterViewInit(): void {\r\n this._authenticationService.isAuthenticated().subscribe((isAuthenticated: boolean) => {\r\n this._isAuthenticated = isAuthenticated;\r\n });\r\n this.validateConfiguration();\r\n this.setupIds();\r\n this.setupTooltip();\r\n this.setupModal();\r\n }\r\n\r\n /**\r\n * An accessor for an enumeration of valid application contexts.\r\n *\r\n * @returns {ApplicationContextEnum} defining all valid contexts\r\n */\r\n public get applicationContexts(): any {\r\n return this._helpService.applicationContexts;\r\n }\r\n\r\n /**\r\n * The function registered to handle state change events on the help tool tip.\r\n * <p>\r\n * Based on the hover state and the state of the component the tooltip will be displayed and the tooltip detail will\r\n * be retrieved from the server, if necessary.\r\n *\r\n * @param state of the user hover on the help tooltip\r\n */\r\n public tooltipStateChanged(state: boolean): void {\r\n if (state && !this.staticTooltip && !this._isRetrievingTooltip) {\r\n this._tooltipInFocus = true;\r\n this._isRetrievingTooltip = true;\r\n\r\n this._helpService.lookupTooltip(this.tooltipId, this._helpService.applicationContexts[this.applicationContext])\r\n .subscribe((tooltip: string) => {\r\n this._tooltipContent = tooltip;\r\n\r\n if (this._tooltipInFocus) {\r\n this._helpModalDirectiveRef = this.modalService.open(this._helpModalDirective);\r\n }\r\n\r\n this._isRetrievingTooltip = false;\r\n }, (error: any) => {\r\n // TODO: BHY (10/20/16) - Consider communicating an error in tooltip. However, I think leaving the spinner animation works.\r\n this._isRetrievingTooltip = false;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * A function to set the appropriate component state when the user's mouse leaves the help icon.\r\n */\r\n public onLeaveTooltip(): void {\r\n this._tooltipInFocus = false;\r\n }\r\n\r\n /**\r\n * A function to display the help modal dialog and hide the corresponding tooltip, retrieving it from the server if\r\n * necessary.\r\n */\r\n public showHelp(): void {\r\n this._helpModalDirectiveRef = this.modalService.open(this._helpModalDirective);\r\n\r\n if (!this._modalDetail || this._hasError) {\r\n this._modalDetail = {\r\n title: \"Loading Help...\"\r\n };\r\n this._helpService.lookupHelp(this.modalId, this._helpService.applicationContexts[this.applicationContext])\r\n .subscribe((helpDetail: any) => {\r\n this._hasError = false;\r\n this._modalDetail = helpDetail;\r\n\r\n if (!this._modalDetail.title && this.useDefaultTitle) {\r\n this._modalDetail.title = HelpComponent.DEFAULT_HELP_MODAL_TITLE;\r\n }\r\n }, (error: any) => {\r\n this._hasError = true;\r\n\r\n this._modalDetail = {\r\n title: \"Error\",\r\n body: error\r\n };\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * A method to close the help modal dialog and reset this components help modal internal state.\r\n */\r\n public closeModal(): void {\r\n this._isEditing = false;\r\n this._helpModalDirectiveRef.close(null);\r\n }\r\n\r\n /**\r\n * A method to submit the modal dialog form.\r\n */\r\n public editHelp(): void {\r\n this._isEditing = true;\r\n // TODO: BHY (10/17/16) - Implement edit.\r\n }\r\n\r\n /**\r\n * A utility function to verify that the state of this component is valid.\r\n * <p>\r\n * A valid HelpComponent configuration will require that either static help and/or tooltip detail (staticTooltip and\r\n * staticHelp attributes), or that an id and application context is configured to retrieve this information from the server.\r\n * <p>\r\n * If the tooltip and help ids are the same only the id attribute needs to be configured, otherwise both the tooltipId\r\n * and modalId attributes need to be configured independently.\r\n */\r\n private validateConfiguration(): void {\r\n if (!this.staticTooltip && ((this.id < 0 && this.tooltipId < 0) || this.applicationContext < 0)) {\r\n throw new Error(\"BUG ALERT! Invalid HelpComponent configuration. If [staticTooltip] is not set, then \" +\r\n \"[id] or [tooltipId] and [applicationContext] must be configured.\");\r\n }\r\n\r\n if (!this.staticHelp && ((this.id < 0 && this.modalId < 0) || this.applicationContext < 0)) {\r\n throw new Error(\"BUG ALERT! Invalid HelpComponent configuration. If [staticHelp] is not set, then \" +\r\n \"[id] or [modalId] and [applicationContext] must be configured.\");\r\n }\r\n }\r\n\r\n /**\r\n * A utility function to setup the ids, given the various configurations.\r\n */\r\n private setupIds(): void {\r\n if (this.id) {\r\n this.tooltipId = this.id;\r\n this.modalId = this.id;\r\n }\r\n }\r\n\r\n /**\r\n * A utility function to setup the help tooltip with a 'wait for async response' template or the static help tooltip and\r\n * configure the tooltip placement, if set.\r\n * <p>\r\n * The capability to set a custom tooltip class was intentionally excluded to allow the CORE team to consider the\r\n * consistency of the CORE branded styling before allowing such customization to application engineers.\r\n */\r\n private setupTooltip(): void {\r\n if (this.tooltipPlacement) {\r\n this._helpTooltipDirective.placement = this.tooltipPlacement;\r\n }\r\n\r\n if (this.staticTooltip) {\r\n this._tooltipContent = this.staticTooltip;\r\n } else {\r\n this._helpService.lookupTooltip(this.tooltipId, this._helpService.applicationContexts[this.applicationContext])\r\n .subscribe((tooltip: string) => {\r\n this._tooltipContent = tooltip;\r\n\r\n this._isRetrievingTooltip = false;\r\n }, (error: any) => {\r\n // TODO: BHY (10/20/16) - Consider communicating an error in tooltip. However, I think leaving the spinner animation works.\r\n this._isRetrievingTooltip = false;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * A utility function to setup the help modal dialog with static help modal content, if available.\r\n */\r\n private setupModal(): void {\r\n if (this.staticHelp) {\r\n this._modalDetail = this.staticHelp;\r\n }\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {NgModule} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\n\r\nimport {NgbModule} from \"@ng-bootstrap/ng-bootstrap\";\r\n\r\nimport {UserModule} from \"@huntsman-cancer-institute/user\";\r\n\r\nimport {HelpService} from \"./help.service\";\r\nimport {HelpComponent} from \"./help.component\";\r\n\r\n/**\r\n * @since 1.0.0\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n NgbModule,\r\n UserModule\r\n ],\r\n declarations: [\r\n HelpComponent\r\n ],\r\n exports: [\r\n HelpComponent\r\n ],\r\n providers: [\r\n HelpService\r\n ]\r\n})\r\nexport class HelpModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.HelpService"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@huntsman-cancer-institute/help",
3
- "version": "17.9.2",
3
+ "version": "17.9.4",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git@gitlab.com:huntsman-cancer-institute/risr/ng/hci-ng-lib.git"