e5core-angular-ui
Version:
e5 Anywhere Angular UI
197 lines • 20.1 kB
JavaScript
/**
* @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';
var E5coreUiGenerateDocumentComponent = /** @class */ (function () {
function E5coreUiGenerateDocumentComponent(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 {?}
*/
E5coreUiGenerateDocumentComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
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(function (wim) {
if (wim.workId != null && wim.workId != Guid.EMPTY) {
_this.populateDocumentTemplates(wim.workId);
_this.populateAttachmentTypes(wim.workId);
}
});
}
};
/**
* @param {?} wid
* @return {?}
*/
E5coreUiGenerateDocumentComponent.prototype.populateAttachmentTypes = /**
* @param {?} wid
* @return {?}
*/
function (wid) {
var _this = this;
this.workAttachmentTypeFoundationService.get(wid).subscribe(function (s) {
_this.generateDocumentComponents.forEach(function (element) {
element.attachmentTypes = s;
});
}, function (error) {
console.error(error);
});
};
/**
* @param {?} wid
* @return {?}
*/
E5coreUiGenerateDocumentComponent.prototype.populateDocumentTemplates = /**
* @param {?} wid
* @return {?}
*/
function (wid) {
var _this = this;
this.workDocumentFoundationService.getDocumentTemplates(wid, null).subscribe(function (s) {
_this.generateDocumentComponents.forEach(function (element) {
element.documentTemplates = s;
});
}, function (error) {
console.error(error);
});
};
/**
* @param {?} event
* @return {?}
*/
E5coreUiGenerateDocumentComponent.prototype.onGenerateDocument = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.generateDocument();
};
/**
* @return {?}
*/
E5coreUiGenerateDocumentComponent.prototype.generateDocument = /**
* @return {?}
*/
function () {
var _this = this;
if (this.selectedDocumentTemplateId != 0) {
/** @type {?} */
var wid = this.workItem$.getValue().workId;
this.workDocumentFoundationService.create(wid, this.selectedDocumentTemplateId, this.selectedAttachmentTypeId).subscribe(function (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 });
}, function (error) {
console.error(error);
throw error;
});
}
};
/**
* @param {?} event
* @return {?}
*/
E5coreUiGenerateDocumentComponent.prototype.onSelectDocumentTemplate = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.selectedDocumentTemplateId = event.value.id;
};
/**
* @param {?} event
* @return {?}
*/
E5coreUiGenerateDocumentComponent.prototype.onSelectAttachmentType = /**
* @param {?} event
* @return {?}
*/
function (event) {
this.selectedAttachmentTypeId = event.value.id;
};
E5coreUiGenerateDocumentComponent.decorators = [
{ type: Component, args: [{
selector: 'e5core-ui-generate-document',
template: "\n <span *ngIf=\"workItem$\" [ngSwitch]=\"style.current()\">\n <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>\n <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>\n <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>\n </span>\n <div *ngIf=\"!(workItem$)\" class=\"e5core-component-error\"><e5core-ui-generate-document> [workItem$] must have a BehaviorSubject<WorkItemModel></div>",
changeDetection: ChangeDetectionStrategy.OnPush
}] }
];
/** @nocollapse */
E5coreUiGenerateDocumentComponent.ctorParameters = function () { return [
{ 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,] }]
};
return E5coreUiGenerateDocumentComponent;
}());
export { E5coreUiGenerateDocumentComponent };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZTVjb3JlLXVpLWdlbmVyYXRlLWRvY3VtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL2U1Y29yZS1hbmd1bGFyLXVpLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvZTVjb3JlLXVpLWdlbmVyYXRlLWRvY3VtZW50L2U1Y29yZS11aS1nZW5lcmF0ZS1kb2N1bWVudC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsdUJBQXVCLEVBQUUsS0FBSyxFQUFpQixZQUFZLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEosT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHdkMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLG1DQUFtQyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDN0csT0FBTyxFQUFFLHFDQUFxQyxFQUFFLE1BQU0sOENBQThDLENBQUM7QUFFckcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRWpFO0lBeUJFLDJDQUNTLEtBQW9CLEVBQ25CLG1DQUF3RSxFQUN4RSw2QkFBNEQ7UUFGN0QsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUNuQix3Q0FBbUMsR0FBbkMsbUNBQW1DLENBQXFDO1FBQ3hFLGtDQUE2QixHQUE3Qiw2QkFBNkIsQ0FBK0I7UUFiN0QsdUJBQWtCLEdBQVksSUFBSSxDQUFDO1FBQ25DLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDekIsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFFckUsK0JBQTBCLEdBQVEsQ0FBQyxDQUFDO1FBQ3BDLDZCQUF3QixHQUFRLENBQUMsQ0FBQztJQVN0QyxDQUFDOzs7O0lBRUwsb0RBQVE7OztJQUFSO1FBQUEsaUJBZ0JDO1FBZkMsSUFB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QUFXLEVBQUMsQ0FBQyxDQUFDO1lBQ2pHLENBQUMsRUFDRCxVQUFBLEtBQUs7Z0JBQ0gsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDckIsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDLENBQ0YsQ0FBQTtTQUNGO0lBQ0gsQ0FBQzs7Ozs7SUFFTSxvRUFBd0I7Ozs7SUFBL0IsVUFBZ0MsS0FBSztRQUNuQyxJQUFJLENBQUMsMEJBQTBCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDbkQsQ0FBQzs7Ozs7SUFFTSxrRUFBc0I7Ozs7SUFBN0IsVUFBOEIsS0FBSztRQUNqQyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7SUFDakQsQ0FBQzs7Z0JBM0dGLFNBQVMsU0FBQztvQkFDVCxRQUFRLEVBQUUsNkJBQTZCO29CQUN2QyxRQUFRLEVBQUUsMnVDQU1zSjtvQkFDaEssZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEOzs7O2dCQVpRLGNBQWM7Z0JBSGlCLG1DQUFtQztnQkFBbEUsNkJBQTZCOzs7NEJBa0JuQyxLQUFLOzhCQUNMLEtBQUs7cUNBQ0wsS0FBSzsyQkFDTCxLQUFLO3dDQUNMLE1BQU07NkNBS04sWUFBWSxTQUFDLHFDQUFxQzs7SUF1RnJELHdDQUFDO0NBQUEsQUE3R0QsSUE2R0M7U0FsR1ksaUNBQWlDOzs7SUFFNUMsc0RBQW1EOztJQUNuRCx3REFBdUQ7O0lBQ3ZELCtEQUE0Qzs7SUFDNUMscURBQW1DOztJQUNuQyxrRUFBNkU7Ozs7O0lBRTdFLHVFQUE0Qzs7Ozs7SUFDNUMscUVBQTBDOztJQUUxQyx1RUFDb0Y7O0lBR2xGLGtEQUEyQjs7Ozs7SUFDM0IsZ0ZBQWdGOzs7OztJQUNoRiwwRUFBb0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIElucHV0LCBBZnRlclZpZXdJbml0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR3VpZCB9IGZyb20gJ2d1aWQtdHlwZXNjcmlwdCc7XG5pbXBvcnQgeyBXb3JrSXRlbU1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3dvcmstaXRlbSc7XG5pbXBvcnQgeyBGaWxlVXBsb2FkTW9kZWwgfSBmcm9tICcuLi8uLi9tb2RlbHMvZmlsZS11cGxvYWQubW9kZWwnO1xuaW1wb3J0IHsgV29ya0RvY3VtZW50Rm91bmRhdGlvblNlcnZpY2UsIFdvcmtBdHRhY2htZW50VHlwZUZvdW5kYXRpb25TZXJ2aWNlIH0gZnJvbSAnZTVjb3JlLWFuZ3VsYXItc2VydmljZXMnO1xuaW1wb3J0IHsgRTVjb3JlVWlHZW5lcmF0ZURvY3VtZW50QmFzZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50L2U1Y29yZS11aS1nZW5lcmF0ZS1kb2N1bWVudC1iYXNlJztcbmltcG9ydCB7IFdvcmtBdHRhY2htZW50QWRkRXZlbnQgfSBmcm9tICcuLi8uLi9ldmVudHMvd29yay1hdHRhY2htZW50LWFkZC1ldmVudCc7XG5pbXBvcnQgeyBVaVN0eWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3VpLXN0eWxlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlNWNvcmUtdWktZ2VuZXJhdGUtZG9jdW1lbnQnLFxuICB0ZW1wbGF0ZTogYFxuICA8c3BhbiAqbmdJZj1cIndvcmtJdGVtJFwiIFtuZ1N3aXRjaF09XCJzdHlsZS5jdXJyZW50KClcIj5cbiAgPGU1Y29yZS11aS1nZW5lcmF0ZS1kb2N1bWVudC1ib3ggKm5nU3dpdGNoQ2FzZT0nMCcgW3Nob3dHZW5lcmF0ZUJ1dHRvbl09J3Nob3dHZW5lcmF0ZUJ1dHRvbicgW3JlYWRvbmx5XT0ncmVhZG9ubHknIChzZWxlY3REb2N1bWVudFRlbXBsYXRlRXZlbnQpPSdvblNlbGVjdERvY3VtZW50VGVtcGxhdGUoJGV2ZW50KScgKHNlbGVjdEF0dGFjaG1lbnRUeXBlRXZlbnQpPSdvblNlbGVjdEF0dGFjaG1lbnRUeXBlKCRldmVudCknIChnZW5lcmF0ZURvY3VtZW50RXZlbnQpPSdvbkdlbmVyYXRlRG9jdW1lbnQoJGV2ZW50KSc+PC9lNWNvcmUtdWktZ2VuZXJhdGUtZG9jdW1lbnQtYm94PlxuICA8ZTVjb3JlLXVpLWdlbmVyYXRlLWRvY3VtZW50LWJvb3RzdHJhcCAqbmdTd2l0Y2hDYXNlPScxJyBbc2hvd0dlbmVyYXRlQnV0dG9uXT0nc2hvd0dlbmVyYXRlQnV0dG9uJyBbcmVhZG9ubHldPSdyZWFkb25seScgKHNlbGVjdERvY3VtZW50VGVtcGxhdGVFdmVudCk9J29uU2VsZWN0RG9jdW1lbnRUZW1wbGF0ZSgkZXZlbnQpJyAoc2VsZWN0QXR0YWNobWVudFR5cGVFdmVudCk9J29uU2VsZWN0QXR0YWNobWVudFR5cGUoJGV2ZW50KScgKGdlbmVyYXRlRG9jdW1lbnRFdmVudCk9J29uR2VuZXJhdGVEb2N1bWVudCgkZXZlbnQpJz48L2U1Y29yZS11aS1nZW5lcmF0ZS1kb2N1bWVudC1ib290c3RyYXA+XG4gIDxlNWNvcmUtdWktZ2VuZXJhdGUtZG9jdW1lbnQtbWF0ZXJpYWwgKm5nU3dpdGNoQ2FzZT0nMicgW3Nob3dHZW5lcmF0ZUJ1dHRvbl09J3Nob3dHZW5lcmF0ZUJ1dHRvbicgW3JlYWRvbmx5XT0ncmVhZG9ubHknIChzZWxlY3REb2N1bWVudFRlbXBsYXRlRXZlbnQpPSdvblNlbGVjdERvY3VtZW50VGVtcGxhdGUoJGV2ZW50KScgKHNlbGVjdEF0dGFjaG1lbnRUeXBlRXZlbnQpPSdvblNlbGVjdEF0dGFjaG1lbnRUeXBlKCRldmVudCknIChnZW5lcmF0ZURvY3VtZW50RXZlbnQpPSdvbkdlbmVyYXRlRG9jdW1lbnQoJGV2ZW50KSc+PC9lNWNvcmUtdWktZ2VuZXJhdGUtZG9jdW1lbnQtbWF0ZXJpYWw+XG4gIDwvc3Bhbj5cbiAgPGRpdiAqbmdJZj1cIiEod29ya0l0ZW0kKVwiIGNsYXNzPVwiZTVjb3JlLWNvbXBvbmVudC1lcnJvclwiPiZsdDtlNWNvcmUtdWktZ2VuZXJhdGUtZG9jdW1lbnQmZ3Q7IFt3b3JrSXRlbSRdIG11c3QgaGF2ZSBhIEJlaGF2aW9yU3ViamVjdCZsdDtXb3JrSXRlbU1vZGVsJmd0OzwvZGl2PmAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEU1Y29yZVVpR2VuZXJhdGVEb2N1bWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgd29ya0l0ZW0kOiBCZWhhdmlvclN1YmplY3Q8V29ya0l0ZW1Nb2RlbD47XG4gIEBJbnB1dCgpIGZpbGVVcGxvYWQkOiBCZWhhdmlvclN1YmplY3Q8RmlsZVVwbG9hZE1vZGVsPjtcbiAgQElucHV0KCkgc2hvd0dlbmVyYXRlQnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIGdlbmVyYXRlRG9jdW1lbnRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8V29ya0F0dGFjaG1lbnRBZGRFdmVudD4oKTtcblxuICBwcml2YXRlIHNlbGVjdGVkRG9jdW1lbnRUZW1wbGF0ZUlkOiBhbnkgPSAwO1xuICBwcml2YXRlIHNlbGVjdGVkQXR0YWNobWVudFR5cGVJZDogYW55ID0gMDtcblxuICBAVmlld0NoaWxkcmVuKEU1Y29yZVVpR2VuZXJhdGVEb2N1bWVudEJhc2VDb21wb25lbnQpXG4gIHB1YmxpYyBnZW5lcmF0ZURvY3VtZW50Q29tcG9uZW50czogUXVlcnlMaXN0PEU1Y29yZVVpR2VuZXJhdGVEb2N1bWVudEJhc2VDb21wb25lbnQ+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBzdHlsZTpVaVN0eWxlU2VydmljZSxcbiAgICBwcml2YXRlIHdvcmtBdHRhY2htZW50VHlwZUZvdW5kYXRpb25TZXJ2aWNlOiBXb3JrQXR0YWNobWVudFR5cGVGb3VuZGF0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHdvcmtEb2N1bWVudEZvdW5kYXRpb25TZXJ2aWNlOiBXb3JrRG9jdW1lbnRGb3VuZGF0aW9uU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICh0aGlzLndvcmtJdGVtJCA9PSBudWxsKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdlNWNvcmUtdWktZ2VuZXJhdGUtZG9jdW1lbnQgW3dvcmtJdGVtJF0gbXVzdCBoYXZlIGEgQmVoYXZpb3JTdWJqZWN0PFdvcmtJdGVtTW9kZWw+Jyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiB0aGlzLndvcmtJdGVtJCAhPSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy53b3JrSXRlbSQuc3Vic2NyaWJlKFxuICAgICAgICB3aW0gPT4ge1xuICAgICAgICAgIGlmICh3aW0ud29ya0lkICE9IG51bGwgJiYgd2ltLndvcmtJZCAhPSBHdWlkLkVNUFRZKSB7XG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlRG9jdW1lbnRUZW1wbGF0ZXMod2ltLndvcmtJZCk7XG4gICAgICAgICAgICB0aGlzLnBvcHVsYXRlQXR0YWNobWVudFR5cGVzKHdpbS53b3JrSWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwb3B1bGF0ZUF0dGFjaG1lbnRUeXBlcyh3aWQ6IHN0cmluZykge1xuICAgIHRoaXMud29ya0F0dGFjaG1lbnRUeXBlRm91bmRhdGlvblNlcnZpY2UuZ2V0KHdpZCkuc3Vic2NyaWJlKFxuICAgICAgcyA9PiB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVEb2N1bWVudENvbXBvbmVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICBlbGVtZW50LmF0dGFjaG1lbnRUeXBlcyA9IHM7XG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9XG4gICAgKVxuICB9XG5cbiAgcHVibGljIHBvcHVsYXRlRG9jdW1lbnRUZW1wbGF0ZXMod2lkOiBzdHJpbmcpIHtcbiAgICB0aGlzLndvcmtEb2N1bWVudEZvdW5kYXRpb25TZXJ2aWNlLmdldERvY3VtZW50VGVtcGxhdGVzKHdpZCwgbnVsbCkuc3Vic2NyaWJlKFxuICAgICAgcyA9PiB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVEb2N1bWVudENvbXBvbmVudHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgICBlbGVtZW50LmRvY3VtZW50VGVtcGxhdGVzID0gcztcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3IgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIH1cbiAgICApXG4gIH1cblxuICBwdWJsaWMgb25HZW5lcmF0ZURvY3VtZW50KGV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5nZW5lcmF0ZURvY3VtZW50KCk7XG4gIH1cblxuICBwdWJsaWMgZ2VuZXJhdGVEb2N1bWVudCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZERvY3VtZW50VGVtcGxhdGVJZCAhPSAwKSB7XG4gICAgICB2YXIgd2lkID0gdGhpcy53b3JrSXRlbSQuZ2V0VmFsdWUoKS53b3JrSWQ7XG5cbiAgICAgIHRoaXMud29ya0RvY3VtZW50Rm91bmRhdGlvblNlcnZpY2UuY3JlYXRlKHdpZCwgdGhpcy5zZWxlY3RlZERvY3VtZW50VGVtcGxhdGVJZCwgdGhpcy5zZWxlY3RlZEF0dGFjaG1lbnRUeXBlSWQpLnN1YnNjcmliZShcbiAgICAgICAgcyA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLndvcmtJdGVtJCAhPSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICB0aGlzLndvcmtJdGVtJC5uZXh0KHRoaXMud29ya0l0ZW0kLmdldFZhbHVlKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuZmlsZVVwbG9hZCQgIT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgdGhpcy5maWxlVXBsb2FkJC5uZXh0KHRoaXMuZmlsZVVwbG9hZCQuZ2V0VmFsdWUoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuZ2VuZXJhdGVEb2N1bWVudEV2ZW50LmVtaXQoe3dvcmtJZDogd2lkLCBpZDogbnVsbCwgbmFtZTogcy5uYW1lLCBmdWxsVXJsOiBzLmRvY3VtZW50VXJsfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNlbGVjdERvY3VtZW50VGVtcGxhdGUoZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkRG9jdW1lbnRUZW1wbGF0ZUlkID0gZXZlbnQudmFsdWUuaWQ7XG4gIH1cblxuICBwdWJsaWMgb25TZWxlY3RBdHRhY2htZW50VHlwZShldmVudCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRBdHRhY2htZW50VHlwZUlkID0gZXZlbnQudmFsdWUuaWQ7XG4gIH1cblxufVxuIl19