UNPKG

e5core-angular-ui

Version:

e5 Anywhere Angular UI

176 lines 18.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ChangeDetectionStrategy, Input, EventEmitter, Output, QueryList, ViewChildren } from '@angular/core'; import { BehaviorSubject } from 'rxjs'; import { Guid } from 'guid-typescript'; import { WorkDocumentFoundationService, WorkAttachmentTypeFoundationService } from 'e5core-angular-services'; import { E5coreUiGenerateDocumentBaseComponent } from './component/e5core-ui-generate-document-base'; import { UiStyleService } from '../../services/ui-style.service'; export class E5coreUiGenerateDocumentComponent { /** * @param {?} style * @param {?} workAttachmentTypeFoundationService * @param {?} workDocumentFoundationService */ constructor(style, workAttachmentTypeFoundationService, workDocumentFoundationService) { this.style = style; this.workAttachmentTypeFoundationService = workAttachmentTypeFoundationService; this.workDocumentFoundationService = workDocumentFoundationService; this.showGenerateButton = true; this.readonly = false; this.generateDocumentEvent = new EventEmitter(); this.selectedDocumentTemplateId = 0; this.selectedAttachmentTypeId = 0; } /** * @return {?} */ ngOnInit() { if (this.workItem$ == null) { console.error('e5core-ui-generate-document [workItem$] must have a BehaviorSubject<WorkItemModel>'); return; } if (typeof this.workItem$ != 'undefined') { this.workItem$.subscribe(wim => { if (wim.workId != null && wim.workId != Guid.EMPTY) { this.populateDocumentTemplates(wim.workId); this.populateAttachmentTypes(wim.workId); } }); } } /** * @param {?} wid * @return {?} */ populateAttachmentTypes(wid) { this.workAttachmentTypeFoundationService.get(wid).subscribe(s => { this.generateDocumentComponents.forEach(element => { element.attachmentTypes = s; }); }, error => { console.error(error); }); } /** * @param {?} wid * @return {?} */ populateDocumentTemplates(wid) { this.workDocumentFoundationService.getDocumentTemplates(wid, null).subscribe(s => { this.generateDocumentComponents.forEach(element => { element.documentTemplates = s; }); }, error => { console.error(error); }); } /** * @param {?} event * @return {?} */ onGenerateDocument(event) { this.generateDocument(); } /** * @return {?} */ generateDocument() { if (this.selectedDocumentTemplateId != 0) { /** @type {?} */ var wid = this.workItem$.getValue().workId; this.workDocumentFoundationService.create(wid, this.selectedDocumentTemplateId, this.selectedAttachmentTypeId).subscribe(s => { if (typeof this.workItem$ != "undefined") { this.workItem$.next(this.workItem$.getValue()); } if (typeof this.fileUpload$ != "undefined") { this.fileUpload$.next(this.fileUpload$.getValue()); } this.generateDocumentEvent.emit({ workId: wid, id: null, name: s.name, fullUrl: s.documentUrl }); }, error => { console.error(error); throw error; }); } } /** * @param {?} event * @return {?} */ onSelectDocumentTemplate(event) { this.selectedDocumentTemplateId = event.value.id; } /** * @param {?} event * @return {?} */ onSelectAttachmentType(event) { this.selectedAttachmentTypeId = event.value.id; } } E5coreUiGenerateDocumentComponent.decorators = [ { type: Component, args: [{ selector: 'e5core-ui-generate-document', template: ` <span *ngIf="workItem$" [ngSwitch]="style.current()"> <e5core-ui-generate-document-box *ngSwitchCase='0' [showGenerateButton]='showGenerateButton' [readonly]='readonly' (selectDocumentTemplateEvent)='onSelectDocumentTemplate($event)' (selectAttachmentTypeEvent)='onSelectAttachmentType($event)' (generateDocumentEvent)='onGenerateDocument($event)'></e5core-ui-generate-document-box> <e5core-ui-generate-document-bootstrap *ngSwitchCase='1' [showGenerateButton]='showGenerateButton' [readonly]='readonly' (selectDocumentTemplateEvent)='onSelectDocumentTemplate($event)' (selectAttachmentTypeEvent)='onSelectAttachmentType($event)' (generateDocumentEvent)='onGenerateDocument($event)'></e5core-ui-generate-document-bootstrap> <e5core-ui-generate-document-material *ngSwitchCase='2' [showGenerateButton]='showGenerateButton' [readonly]='readonly' (selectDocumentTemplateEvent)='onSelectDocumentTemplate($event)' (selectAttachmentTypeEvent)='onSelectAttachmentType($event)' (generateDocumentEvent)='onGenerateDocument($event)'></e5core-ui-generate-document-material> </span> <div *ngIf="!(workItem$)" class="e5core-component-error">&lt;e5core-ui-generate-document&gt; [workItem$] must have a BehaviorSubject&lt;WorkItemModel&gt;</div>`, changeDetection: ChangeDetectionStrategy.OnPush }] } ]; /** @nocollapse */ E5coreUiGenerateDocumentComponent.ctorParameters = () => [ { type: UiStyleService }, { type: WorkAttachmentTypeFoundationService }, { type: WorkDocumentFoundationService } ]; E5coreUiGenerateDocumentComponent.propDecorators = { workItem$: [{ type: Input }], fileUpload$: [{ type: Input }], showGenerateButton: [{ type: Input }], readonly: [{ type: Input }], generateDocumentEvent: [{ type: Output }], generateDocumentComponents: [{ type: ViewChildren, args: [E5coreUiGenerateDocumentBaseComponent,] }] }; if (false) { /** @type {?} */ E5coreUiGenerateDocumentComponent.prototype.workItem$; /** @type {?} */ E5coreUiGenerateDocumentComponent.prototype.fileUpload$; /** @type {?} */ E5coreUiGenerateDocumentComponent.prototype.showGenerateButton; /** @type {?} */ E5coreUiGenerateDocumentComponent.prototype.readonly; /** @type {?} */ E5coreUiGenerateDocumentComponent.prototype.generateDocumentEvent; /** * @type {?} * @private */ E5coreUiGenerateDocumentComponent.prototype.selectedDocumentTemplateId; /** * @type {?} * @private */ E5coreUiGenerateDocumentComponent.prototype.selectedAttachmentTypeId; /** @type {?} */ E5coreUiGenerateDocumentComponent.prototype.generateDocumentComponents; /** @type {?} */ E5coreUiGenerateDocumentComponent.prototype.style; /** * @type {?} * @private */ E5coreUiGenerateDocumentComponent.prototype.workAttachmentTypeFoundationService; /** * @type {?} * @private */ E5coreUiGenerateDocumentComponent.prototype.workDocumentFoundationService; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTVjb3JlLXVpLWdlbmVyYXRlLWRvY3VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2U1Y29yZS1hbmd1bGFyLXVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZTVjb3JlLXVpLWdlbmVyYXRlLWRvY3VtZW50L2U1Y29yZS11aS1nZW5lcmF0ZS1kb2N1bWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsS0FBSyxFQUFpQixZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEosT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHdkMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLG1DQUFtQyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0csT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBYWpFLE1BQU0sT0FBTyxpQ0FBaUM7Ozs7OztJQWM1QyxZQUNTLEtBQW9CLEVBQ25CLG1DQUF3RSxFQUN4RSw2QkFBNEQ7UUFGN0QsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUNuQix3Q0FBbUMsR0FBbkMsbUNBQW1DLENBQXFDO1FBQ3hFLGtDQUE2QixHQUE3Qiw2QkFBNkIsQ0FBK0I7UUFiN0QsdUJBQWtCLEdBQVksSUFBSSxDQUFDO1FBQ25DLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDekIsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFFckUsK0JBQTBCLEdBQVEsQ0FBQyxDQUFDO1FBQ3BDLDZCQUF3QixHQUFRLENBQUMsQ0FBQztJQVN0QyxDQUFDOzs7O0lBRUwsUUFBUTtRQUNOLElB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QUNELEtBQUssQ0FBQyxFQUFFO2dCQUNOLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3JCLE1BQU0sS0FBSyxDQUFDO1lBQ2QsQ0FBQyxDQUNGLENBQUE7U0FDRjtJQUNILENBQUM7Ozs7O0lBRU0sd0JBQXdCLENBQUMsS0FBSztRQUNuQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDbkQsQ0FBQzs7Ozs7SUFFTSxzQkFBc0IsQ0FBQyxLQUFLO1FBQ2pDLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUNqRCxDQUFDOzs7WUEzR0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw2QkFBNkI7Z0JBQ3ZDLFFBQVEsRUFBRTs7Ozs7O2tLQU1zSjtnQkFDaEssZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7Ozs7WUFaUSxjQUFjO1lBSGlCLG1DQUFtQztZQUFsRSw2QkFBNkI7Ozt3QkFrQm5DLEtBQUs7MEJBQ0wsS0FBSztpQ0FDTCxLQUFLO3VCQUNMLEtBQUs7b0NBQ0wsTUFBTTt5Q0FLTixZQUFZLFNBQUMscUNBQXFDOzs7O0lBVG5ELHNEQUFtRDs7SUFDbkQsd0RBQXVEOztJQUN2RCwrREFBNEM7O0lBQzVDLHFEQUFtQzs7SUFDbkMsa0VBQTZFOzs7OztJQUU3RSx1RUFBNEM7Ozs7O0lBQzVDLHFFQUEwQzs7SUFFMUMsdUVBQ29GOztJQUdsRixrREFBMkI7Ozs7O0lBQzNCLGdGQUFnRjs7Ozs7SUFDaEYsMEVBQW9FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBJbnB1dCwgQWZ0ZXJWaWV3SW5pdCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEd1aWQgfSBmcm9tICdndWlkLXR5cGVzY3JpcHQnO1xuaW1wb3J0IHsgV29ya0l0ZW1Nb2RlbCB9IGZyb20gJy4uLy4uL21vZGVscy93b3JrLWl0ZW0nO1xuaW1wb3J0IHsgRmlsZVVwbG9hZE1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2ZpbGUtdXBsb2FkLm1vZGVsJztcbmltcG9ydCB7IFdvcmtEb2N1bWVudEZvdW5kYXRpb25TZXJ2aWNlLCBXb3JrQXR0YWNobWVudFR5cGVGb3VuZGF0aW9uU2VydmljZSB9IGZyb20gJ2U1Y29yZS1hbmd1bGFyLXNlcnZpY2VzJztcbmltcG9ydCB7IEU1Y29yZVVpR2VuZXJhdGVEb2N1bWVudEJhc2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudC9lNWNvcmUtdWktZ2VuZXJhdGUtZG9jdW1lbnQtYmFzZSc7XG5pbXBvcnQgeyBXb3JrQXR0YWNobWVudEFkZEV2ZW50IH0gZnJvbSAnLi4vLi4vZXZlbnRzL3dvcmstYXR0YWNobWVudC1hZGQtZXZlbnQnO1xuaW1wb3J0IHsgVWlTdHlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91aS1zdHlsZS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZTVjb3JlLXVpLWdlbmVyYXRlLWRvY3VtZW50JyxcbiAgdGVtcGxhdGU6IGBcbiAgPHNwYW4gKm5nSWY9XCJ3b3JrSXRlbSRcIiBbbmdTd2l0Y2hdPVwic3R5bGUuY3VycmVudCgpXCI+XG4gIDxlNWNvcmUtdWktZ2VuZXJhdGUtZG9jdW1lbnQtYm94ICpuZ1N3aXRjaENhc2U9JzAnIFtzaG93R2VuZXJhdGVCdXR0b25dPSdzaG93R2VuZXJhdGVCdXR0b24nIFtyZWFkb25seV09J3JlYWRvbmx5JyAoc2VsZWN0RG9jdW1lbnRUZW1wbGF0ZUV2ZW50KT0nb25TZWxlY3REb2N1bWVudFRlbXBsYXRlKCRldmVudCknIChzZWxlY3RBdHRhY2htZW50VHlwZUV2ZW50KT0nb25TZWxlY3RBdHRhY2htZW50VHlwZSgkZXZlbnQpJyAoZ2VuZXJhdGVEb2N1bWVudEV2ZW50KT0nb25HZW5lcmF0ZURvY3VtZW50KCRldmVudCknPjwvZTVjb3JlLXVpLWdlbmVyYXRlLWRvY3VtZW50LWJveD5cbiAgPGU1Y29yZS11aS1nZW5lcmF0ZS1kb2N1bWVudC1ib290c3RyYXAgKm5nU3dpdGNoQ2FzZT0nMScgW3Nob3dHZW5lcmF0ZUJ1dHRvbl09J3Nob3dHZW5lcmF0ZUJ1dHRvbicgW3JlYWRvbmx5XT0ncmVhZG9ubHknIChzZWxlY3REb2N1bWVudFRlbXBsYXRlRXZlbnQpPSdvblNlbGVjdERvY3VtZW50VGVtcGxhdGUoJGV2ZW50KScgKHNlbGVjdEF0dGFjaG1lbnRUeXBlRXZlbnQpPSdvblNlbGVjdEF0dGFjaG1lbnRUeXBlKCRldmVudCknIChnZW5lcmF0ZURvY3VtZW50RXZlbnQpPSdvbkdlbmVyYXRlRG9jdW1lbnQoJGV2ZW50KSc+PC9lNWNvcmUtdWktZ2VuZXJhdGUtZG9jdW1lbnQtYm9vdHN0cmFwPlxuICA8ZTVjb3JlLXVpLWdlbmVyYXRlLWRvY3VtZW50LW1hdGVyaWFsICpuZ1N3aXRjaENhc2U9JzInIFtzaG93R2VuZXJhdGVCdXR0b25dPSdzaG93R2VuZXJhdGVCdXR0b24nIFtyZWFkb25seV09J3JlYWRvbmx5JyAoc2VsZWN0RG9jdW1lbnRUZW1wbGF0ZUV2ZW50KT0nb25TZWxlY3REb2N1bWVudFRlbXBsYXRlKCRldmVudCknIChzZWxlY3RBdHRhY2htZW50VHlwZUV2ZW50KT0nb25TZWxlY3RBdHRhY2htZW50VHlwZSgkZXZlbnQpJyAoZ2VuZXJhdGVEb2N1bWVudEV2ZW50KT0nb25HZW5lcmF0ZURvY3VtZW50KCRldmVudCknPjwvZTVjb3JlLXVpLWdlbmVyYXRlLWRvY3VtZW50LW1hdGVyaWFsPlxuICA8L3NwYW4+XG4gIDxkaXYgKm5nSWY9XCIhKHdvcmtJdGVtJClcIiBjbGFzcz1cImU1Y29yZS1jb21wb25lbnQtZXJyb3JcIj4mbHQ7ZTVjb3JlLXVpLWdlbmVyYXRlLWRvY3VtZW50Jmd0OyBbd29ya0l0ZW0kXSBtdXN0IGhhdmUgYSBCZWhhdmlvclN1YmplY3QmbHQ7V29ya0l0ZW1Nb2RlbCZndDs8L2Rpdj5gLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBFNWNvcmVVaUdlbmVyYXRlRG9jdW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIEBJbnB1dCgpIHdvcmtJdGVtJDogQmVoYXZpb3JTdWJqZWN0PFdvcmtJdGVtTW9kZWw+O1xuICBASW5wdXQoKSBmaWxlVXBsb2FkJDogQmVoYXZpb3JTdWJqZWN0PEZpbGVVcGxvYWRNb2RlbD47XG4gIEBJbnB1dCgpIHNob3dHZW5lcmF0ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XG4gIEBJbnB1dCgpIHJlYWRvbmx5OiBib29sZWFuID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBnZW5lcmF0ZURvY3VtZW50RXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPFdvcmtBdHRhY2htZW50QWRkRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBzZWxlY3RlZERvY3VtZW50VGVtcGxhdGVJZDogYW55ID0gMDtcbiAgcHJpdmF0ZSBzZWxlY3RlZEF0dGFjaG1lbnRUeXBlSWQ6IGFueSA9IDA7XG5cbiAgQFZpZXdDaGlsZHJlbihFNWNvcmVVaUdlbmVyYXRlRG9jdW1lbnRCYXNlQ29tcG9uZW50KVxuICBwdWJsaWMgZ2VuZXJhdGVEb2N1bWVudENvbXBvbmVudHM6IFF1ZXJ5TGlzdDxFNWNvcmVVaUdlbmVyYXRlRG9jdW1lbnRCYXNlQ29tcG9uZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc3R5bGU6VWlTdHlsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSB3b3JrQXR0YWNobWVudFR5cGVGb3VuZGF0aW9uU2VydmljZTogV29ya0F0dGFjaG1lbnRUeXBlRm91bmRhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSB3b3JrRG9jdW1lbnRGb3VuZGF0aW9uU2VydmljZTogV29ya0RvY3VtZW50Rm91bmRhdGlvblNlcnZpY2VcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy53b3JrSXRlbSQgPT0gbnVsbCkge1xuICAgICAgY29uc29sZS5lcnJvcignZTVjb3JlLXVpLWdlbmVyYXRlLWRvY3VtZW50IFt3b3JrSXRlbSRdIG11c3QgaGF2ZSBhIEJlaGF2aW9yU3ViamVjdDxXb3JrSXRlbU1vZGVsPicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdGhpcy53b3JrSXRlbSQgIT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMud29ya0l0ZW0kLnN1YnNjcmliZShcbiAgICAgICAgd2ltID0+IHtcbiAgICAgICAgICBpZiAod2ltLndvcmtJZCAhPSBudWxsICYmIHdpbS53b3JrSWQgIT0gR3VpZC5FTVBUWSkge1xuICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZURvY3VtZW50VGVtcGxhdGVzKHdpbS53b3JrSWQpO1xuICAgICAgICAgICAgdGhpcy5wb3B1bGF0ZUF0dGFjaG1lbnRUeXBlcyh3aW0ud29ya0lkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcG9wdWxhdGVBdHRhY2htZW50VHlwZXMod2lkOiBzdHJpbmcpIHtcbiAgICB0aGlzLndvcmtBdHRhY2htZW50VHlwZUZvdW5kYXRpb25TZXJ2aWNlLmdldCh3aWQpLnN1YnNjcmliZShcbiAgICAgIHMgPT4ge1xuICAgICAgICB0aGlzLmdlbmVyYXRlRG9jdW1lbnRDb21wb25lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgZWxlbWVudC5hdHRhY2htZW50VHlwZXMgPSBzO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgfVxuICAgIClcbiAgfVxuXG4gIHB1YmxpYyBwb3B1bGF0ZURvY3VtZW50VGVtcGxhdGVzKHdpZDogc3RyaW5nKSB7XG4gICAgdGhpcy53b3JrRG9jdW1lbnRGb3VuZGF0aW9uU2VydmljZS5nZXREb2N1bWVudFRlbXBsYXRlcyh3aWQsIG51bGwpLnN1YnNjcmliZShcbiAgICAgIHMgPT4ge1xuICAgICAgICB0aGlzLmdlbmVyYXRlRG9jdW1lbnRDb21wb25lbnRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgZWxlbWVudC5kb2N1bWVudFRlbXBsYXRlcyA9IHM7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgcHVibGljIG9uR2VuZXJhdGVEb2N1bWVudChldmVudCk6IHZvaWQge1xuICAgIHRoaXMuZ2VuZXJhdGVEb2N1bWVudCgpO1xuICB9XG5cbiAgcHVibGljIGdlbmVyYXRlRG9jdW1lbnQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREb2N1bWVudFRlbXBsYXRlSWQgIT0gMCkge1xuICAgICAgdmFyIHdpZCA9IHRoaXMud29ya0l0ZW0kLmdldFZhbHVlKCkud29ya0lkO1xuXG4gICAgICB0aGlzLndvcmtEb2N1bWVudEZvdW5kYXRpb25TZXJ2aWNlLmNyZWF0ZSh3aWQsIHRoaXMuc2VsZWN0ZWREb2N1bWVudFRlbXBsYXRlSWQsIHRoaXMuc2VsZWN0ZWRBdHRhY2htZW50VHlwZUlkKS5zdWJzY3JpYmUoXG4gICAgICAgIHMgPT4ge1xuICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy53b3JrSXRlbSQgIT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgdGhpcy53b3JrSXRlbSQubmV4dCh0aGlzLndvcmtJdGVtJC5nZXRWYWx1ZSgpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZpbGVVcGxvYWQkICE9IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZVVwbG9hZCQubmV4dCh0aGlzLmZpbGVVcGxvYWQkLmdldFZhbHVlKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmdlbmVyYXRlRG9jdW1lbnRFdmVudC5lbWl0KHt3b3JrSWQ6IHdpZCwgaWQ6IG51bGwsIG5hbWU6IHMubmFtZSwgZnVsbFVybDogcy5kb2N1bWVudFVybH0pO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvciA9PiB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3REb2N1bWVudFRlbXBsYXRlKGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZERvY3VtZW50VGVtcGxhdGVJZCA9IGV2ZW50LnZhbHVlLmlkO1xuICB9XG5cbiAgcHVibGljIG9uU2VsZWN0QXR0YWNobWVudFR5cGUoZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkQXR0YWNobWVudFR5cGVJZCA9IGV2ZW50LnZhbHVlLmlkO1xuICB9XG5cbn1cbiJdfQ==