/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, ViewChild, EventEmitter, Output, NgModule } from '@angular/core';
import { Router } from '@angular/router';
import { DxDataGridComponent, DxDataGridModule } from 'devextreme-angular';
import { FormsModule } from '@angular/forms';
export class CreateAlertComponent {
/**
* @param {?} router
*/
constructor(router) {
// , private request: Request, private common: Common
this.router = router;
this.percent = 0;
this.buttonText = '';
this.onCloseModalError = new EventEmitter();
this.onOkDelete = new EventEmitter();
this.onOkConfirm = new EventEmitter();
this.onCancelDelete = new EventEmitter();
this.onCancelConfirm = new EventEmitter();
this.onOkDeleteAttachment = new EventEmitter();
this.onCancelDeleteAttachment = new EventEmitter();
this.onClickBack = new EventEmitter();
this.onCancelViewWarning = new EventEmitter();
this.onCancelUploadValid = new EventEmitter();
this.onDataErrorExcel = new EventEmitter();
this.onClickExport = new EventEmitter();
this.onClickDeleteExport = new EventEmitter();
this.onOkClone = new EventEmitter();
this.onOkReport = new EventEmitter();
this.onCancelClone = new EventEmitter();
this.onOkDiagramCancel = new EventEmitter();
this.onCancelDiagramCancel = new EventEmitter();
this.onCancelAddVOutlook = new EventEmitter();
this.onOkAddVOutlook = new EventEmitter();
this.onCancelAddMVara = new EventEmitter();
this.onOkAddMVara = new EventEmitter();
this.dataText = {
userTitle: '',
userMessage: ''
};
}
/**
* @return {?}
*/
ngOnInit() { }
/**
* @return {?}
*/
ngAfterViewInit() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
try {
$(this.modalSuccess.nativeElement).on('hidden.bs.modal', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
// put your default event here
this.onClickBack.emit();
}));
$(this.modalEditSuccess.nativeElement).on('hidden.bs.modal', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
// put your default event here
this.onClickBack.emit();
}));
$(this.modalError.nativeElement).on('hidden.bs.modal', () => tslib_1.__awaiter(this, void 0, void 0, function* () {
// put your default event here
// await this.router.navigate([this.urlBack]);
this.onCloseModalError.emit();
}));
// $(this.modalViewWarning.nativeElement).on('hidden.bs.modal', async () => {
// // put your default event here
// // await this.router.navigate([this.urlBack]);
// this.onCancelViewWarning.emit();
// });
// ปรับ html
ให้กลับเป็นปกติเมื่อเปิด-ปิด modal
// document.body.style.paddingRight = '0px';
}
catch (e) {
console.log(e);
}
});
}
/**
* @param {?} data
* @return {?}
*/
openModal(data) {
// console.log(this.elementRef.nativeElement.querySelector('#myModalDelete'));
console.log(data);
// this.userMessage = userMessage;
// let data =
// if(){
//
// }
// ถ้าเป็น myModalExportLoading จะโยน data มาต่างกัน
// if (data.modalId === 'myModalExportLoading') {
// this.dataExport = data.userMessage ? data.userMessage.dataExport : [];
// this.buttonText = data.userMessage ? data.userMessage.buttonText : 'PDF';
// } else {
this.dataText = {
userTitle: data.userTitle,
userMessage: data.userMessage
};
// }
if (data.modalId === 'myModalDelete') {
// $(this.modalDelete.nativeElement).modal('show');
$(this.modalDelete.nativeElement).modal({
backdrop: 'static'
});
}
else if (data.modalId === 'myModalConfirm') {
$(this.modalConfirm.nativeElement).modal('show');
}
else if (data.modalId === 'myModalDeleteAttachment') {
$(this.modalDeleteAttachment.nativeElement).modal('show');
}
else if (data.modalId === 'myModalDeleteWarning') {
$(this.modalDeleteWarning.nativeElement).modal('show');
}
else if (data.modalId === 'myModalSuccessDelete') {
$(this.modalSuccessDelete.nativeElement).modal('show');
}
else if (data.modalId === 'myModalSuccess') {
$(this.modalSuccess.nativeElement).modal('show');
}
else if (data.modalId === 'myModalSuccessWarning') {
$(this.modalSuccessWarning.nativeElement).modal('show');
}
else if (data.modalId === 'myModalEditSuccess') {
$(this.modalEditSuccess.nativeElement).modal('show');
}
else if (data.modalId === 'myModalWarning') {
$(this.modalWarning.nativeElement).modal('show');
}
else if (data.modalId === 'myModalReportWarning') {
$(this.myModalReportWarning.nativeElement).modal('show');
// } else if (data.modalId === 'myModalViewWarning') {
// $(this.modalViewWarning.nativeElement).modal('show');
}
else if (data.modalId === 'myModalUploadImageWarning') {
$(this.modalUploadImageWarning.nativeElement).modal('show');
}
else if (data.modalId === 'myModalUploadImageTypeWarning') {
$(this.modalUploadImageTypeWarning.nativeElement).modal('show');
}
else if (data.modalId === 'myModalWarningNoTextSearch') {
$(this.modalWarningNoTextSearch.nativeElement).modal('show');
}
else if (data.modalId === 'myModalErrorDataExisted') {
$(this.modalErrorDataExisted.nativeElement).modal('show');
}
else if (data.modalId === 'myModalErrorDeleteButHaveMenuGroup') {
$(this.modalErrorDeleteButHaveMenuGroup.nativeElement).modal('show');
}
else if (data.modalId === 'myModalAddVOutlook') {
$(this.modalAddVOutlook.nativeElement).modal('show');
}
else if (data.modalId === 'myModalAddMVara') {
$(this.modalAddMVara.nativeElement).modal('show');
}
else if (data.modalId === 'modalError') {
$(this.modalError.nativeElement).modal('show');
}
else {
$(this.modalError.nativeElement).modal('show');
}
// ปรับ html ให้กลับเป็นปกติเมื่อเปิด-ปิด modal
document.body.style.paddingRight = '0px';
}
/**
* @param {?} modalId
* @return {?}
*/
closeModal(modalId) {
if (modalId === 'myModalDelete') {
$(this.modalDelete.nativeElement).modal('hide');
}
else if (modalId === 'myModalConfirm') {
$(this.modalConfirm.nativeElement).modal('hide');
}
else if (modalId === 'myModalDeleteAttachment') {
$(this.modalDeleteAttachment.nativeElement).modal('hide');
}
else if (modalId === 'myModalDeleteWarning') {
$(this.modalDeleteWarning.nativeElement).modal('hide');
}
else if (modalId === 'myModalAddVOutlook') {
$(this.modalAddVOutlook.nativeElement).modal('hide');
}
else if (modalId === 'myModalAddMVara') {
$(this.modalAddMVara.nativeElement).modal('hide');
}
else if (modalId === 'myModalSuccessDelete') {
$(this.modalSuccessDelete.nativeElement).modal('hide');
}
else if (modalId === 'myModalSuccess') {
$(this.modalSuccess.nativeElement).modal('hide');
}
else if (modalId === 'myModalSuccessWarning') {
$(this.modalSuccessWarning.nativeElement).modal('hide');
}
else if (modalId === 'myModalEditSuccess') {
$(this.modalEditSuccess.nativeElement).modal('hide');
}
else if (modalId === 'myModalWarning') {
$(this.modalWarning.nativeElement).modal('hide');
}
else if (modalId === 'myModalReportWarning') {
$(this.myModalReportWarning.nativeElement).modal('hide');
// } else if (modalId === 'myModalViewWarning') {
// $(this.modalViewWarning.nativeElement).modal('hide');
}
else if (modalId === 'myModalUploadImageWarning') {
$(this.modalUploadImageWarning.nativeElement).modal('hide');
}
else if (modalId === 'myModalUploadImageTypeWarning') {
$(this.modalUploadImageTypeWarning.nativeElement).modal('hide');
}
else if (modalId === 'myModalWarningNoTextSearch') {
$(this.modalWarningNoTextSearch.nativeElement).modal('hide');
}
else if (modalId === 'myModalErrorDataExisted') {
$(this.modalErrorDataExisted.nativeElement).modal('hide');
}
else if (modalId === 'myModalErrorDeleteButHaveMenuGroup') {
$(this.modalErrorDeleteButHaveMenuGroup.nativeElement).modal('hide');
}
else if (modalId === 'myModalAddVOutlook') {
$(this.modalAddVOutlook.nativeElement).modal('hide');
}
else {
console.error('closeModal Error');
}
}
/**
* @param {?} data
* @return {?}
*/
showStringValidDataExcel(data) {
/** @type {?} */
let text = '';
if (data.data && data.data.itemOjb && data.data.itemOjb.failDescription) {
for (let j = 0; j < data.data.itemOjb.failDescription.length; j++) {
text += '[' + data.data.itemOjb.failDescription[j].columeName + ']' + ':"' + data.data.itemOjb.failDescription[j].text + '",
';
}
}
return text;
}
/**
* @param {?} failDescription
* @return {?}
*/
showStringErrorDataExcel(failDescription) {
/** @type {?} */
let text = '';
for (let j = 0; j < failDescription.length; j++) {
text += '[' + failDescription[j].columeName + ']' + ':"' + failDescription[j].text + '",
';
}
return text;
}
/**
* @return {?}
*/
closeProgressbar() {
$(this.modalProgressBarWarning.nativeElement).modal('hide');
}
/**
* @return {?}
*/
onOkDeleteModal() {
$(this.modalDelete.nativeElement).modal('hide');
this.onOkDelete.emit();
}
/**
* @return {?}
*/
onOkConfirmModal() {
$(this.modalConfirm.nativeElement).modal('hide');
this.onOkConfirm.emit();
}
/**
* @return {?}
*/
onOkDeleteAttachmentModal() {
$(this.modalDeleteAttachment.nativeElement).modal('hide');
this.onOkDeleteAttachment.emit();
}
/**
* @return {?}
*/
onOkReportModal() {
$(this.myModalReportWarning.nativeElement).modal('hide');
this.onOkReport.emit();
}
/**
* @return {?}
*/
onCancelDeleteModal() {
this.onCancelDelete.emit();
}
/**
* @return {?}
*/
onCancelConfirmModal() {
this.onCancelConfirm.emit();
}
/**
* @return {?}
*/
onCancelDeleteAttachmentModal() {
this.onCancelDeleteAttachment.emit();
}
/**
* @return {?}
*/
onClickBackModal() {
this.onClickBack.emit();
}
/**
* @return {?}
*/
onCancelViewWarningModal() {
console.log('hjh');
this.onCancelViewWarning.emit();
}
/**
* @return {?}
*/
onCancelUploadValidModal() {
this.onCancelUploadValid.emit();
}
/**
* @return {?}
*/
onDataErrorExcelModal() {
this.onDataErrorExcel.emit();
}
/**
* @return {?}
*/
onCloseModalErrorModal() {
this.onCloseModalError.emit();
}
/**
* @return {?}
*/
onCancelCloneModal() {
this.onCancelClone.emit();
}
/**
* @return {?}
*/
onCancelAddVOutlookModal() {
$(this.modalAddVOutlook.nativeElement).modal('hide');
this.onCancelAddVOutlook.emit();
}
/**
* @return {?}
*/
onOkAddVOutlookModal() {
$(this.modalAddVOutlook.nativeElement).modal('hide');
this.onOkAddVOutlook.emit();
}
/**
* @return {?}
*/
onCancelAddMVaraModal() {
$(this.modalAddMVara.nativeElement).modal('hide');
this.onCancelAddMVara.emit();
}
/**
* @return {?}
*/
onOkAddMVaraModal() {
$(this.modalAddMVara.nativeElement).modal('hide');
this.onOkAddMVara.emit();
}
/**
* @return {?}
*/
onCancelDiagramCancelModal() {
this.onCancelAddVOutlook.emit();
}
}
CreateAlertComponent.decorators = [
{ type: Component, args: [{
selector: 'app-alert',
providers: [],
template: "\n\n\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n
\n
\n
\n\n\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n
\n
\n
\n\n\n\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n
\n
\n
\n\n\n\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n
\n
\n
\n\n\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n
\n
\n
\n\n\n\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n
\n
\n
\n\n\n\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n
\n
\n
\n\n\n\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n
\n
\n
\n\n\n\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n
\n
\n
\n\n\n\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n
\n
\n
\n\n\n\n\n\n\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n
\n
\n
\n\n\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n
\n
\n
\n\n\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n
\n
\n
\n\n\n\n
\n
\n
\n
\n
\n
\n

\n
\n
\n
\n
\n \n
\n
\n
\n"
}] }
];
/** @nocollapse */
CreateAlertComponent.ctorParameters = () => [
{ type: Router }
];
CreateAlertComponent.propDecorators = {
dataGrid: [{ type: ViewChild, args: [DxDataGridComponent,] }],
gridExport: [{ type: ViewChild, args: ['gridExport',] }],
gridAlertValidExcel: [{ type: ViewChild, args: ['gridAlertValidExcel',] }],
gridAlertErrorExcel: [{ type: ViewChild, args: ['gridAlertErrorExcel',] }],
gridAdvance: [{ type: ViewChild, args: ['gridAdvance',] }],
modalSuccess: [{ type: ViewChild, args: ['myModalSuccess',] }],
modalSuccessWarning: [{ type: ViewChild, args: ['myModalSuccessWarning',] }],
modalDelete: [{ type: ViewChild, args: ['myModalDelete',] }],
modalConfirm: [{ type: ViewChild, args: ['myModalConfirm',] }],
modalDeleteAttachment: [{ type: ViewChild, args: ['myModalDeleteAttachment',] }],
modalDeleteWarning: [{ type: ViewChild, args: ['myModalDeleteWarning',] }],
modalSuccessDelete: [{ type: ViewChild, args: ['myModalSuccessDelete',] }],
modalEditSuccess: [{ type: ViewChild, args: ['myModalEditSuccess',] }],
modalWarning: [{ type: ViewChild, args: ['myModalWarning',] }],
myModalReportWarning: [{ type: ViewChild, args: ['myModalReportWarning',] }],
modalError: [{ type: ViewChild, args: ['myModalError',] }],
modalViewWarning: [{ type: ViewChild, args: ['myModalViewWarning',] }],
modalProgressBarWarning: [{ type: ViewChild, args: ['myModalProgressBarWarning',] }],
modalUploadImageWarning: [{ type: ViewChild, args: ['myModalUploadImageWarning',] }],
modalUploadImageTypeWarning: [{ type: ViewChild, args: ['myModalUploadImageTypeWarning',] }],
modalWarningNoTextSearch: [{ type: ViewChild, args: ['myModalWarningNoTextSearch',] }],
modalErrorDataExisted: [{ type: ViewChild, args: ['myModalErrorDataExisted',] }],
modalErrorDeleteButHaveMenuGroup: [{ type: ViewChild, args: ['myModalErrorDeleteButHaveMenuGroup',] }],
modalAddVOutlook: [{ type: ViewChild, args: ['myModalAddVOutlook',] }],
modalAddMVara: [{ type: ViewChild, args: ['myModalAddMVara',] }],
onCloseModalError: [{ type: Output }],
onOkDelete: [{ type: Output }],
onOkConfirm: [{ type: Output }],
onCancelDelete: [{ type: Output }],
onCancelConfirm: [{ type: Output }],
onOkDeleteAttachment: [{ type: Output }],
onCancelDeleteAttachment: [{ type: Output }],
onClickBack: [{ type: Output }],
onCancelViewWarning: [{ type: Output }],
onCancelUploadValid: [{ type: Output }],
onDataErrorExcel: [{ type: Output }],
onClickExport: [{ type: Output }],
onClickDeleteExport: [{ type: Output }],
onOkClone: [{ type: Output }],
onOkReport: [{ type: Output }],
onCancelClone: [{ type: Output }],
onOkDiagramCancel: [{ type: Output }],
onCancelDiagramCancel: [{ type: Output }],
onCancelAddVOutlook: [{ type: Output }],
onOkAddVOutlook: [{ type: Output }],
onCancelAddMVara: [{ type: Output }],
onOkAddMVara: [{ type: Output }]
};
if (false) {
/** @type {?} */
CreateAlertComponent.prototype.dataGrid;
/** @type {?} */
CreateAlertComponent.prototype.gridExport;
/** @type {?} */
CreateAlertComponent.prototype.gridAlertValidExcel;
/** @type {?} */
CreateAlertComponent.prototype.gridAlertErrorExcel;
/** @type {?} */
CreateAlertComponent.prototype.gridAdvance;
/** @type {?} */
CreateAlertComponent.prototype.modalSuccess;
/** @type {?} */
CreateAlertComponent.prototype.modalSuccessWarning;
/** @type {?} */
CreateAlertComponent.prototype.modalDelete;
/** @type {?} */
CreateAlertComponent.prototype.modalConfirm;
/** @type {?} */
CreateAlertComponent.prototype.modalDeleteAttachment;
/** @type {?} */
CreateAlertComponent.prototype.modalDeleteWarning;
/** @type {?} */
CreateAlertComponent.prototype.modalSuccessDelete;
/** @type {?} */
CreateAlertComponent.prototype.modalEditSuccess;
/** @type {?} */
CreateAlertComponent.prototype.modalWarning;
/** @type {?} */
CreateAlertComponent.prototype.myModalReportWarning;
/** @type {?} */
CreateAlertComponent.prototype.modalError;
/** @type {?} */
CreateAlertComponent.prototype.modalViewWarning;
/** @type {?} */
CreateAlertComponent.prototype.modalProgressBarWarning;
/** @type {?} */
CreateAlertComponent.prototype.modalUploadImageWarning;
/** @type {?} */
CreateAlertComponent.prototype.modalUploadImageTypeWarning;
/** @type {?} */
CreateAlertComponent.prototype.modalWarningNoTextSearch;
/** @type {?} */
CreateAlertComponent.prototype.modalErrorDataExisted;
/** @type {?} */
CreateAlertComponent.prototype.modalErrorDeleteButHaveMenuGroup;
/** @type {?} */
CreateAlertComponent.prototype.modalAddVOutlook;
/** @type {?} */
CreateAlertComponent.prototype.modalAddMVara;
/** @type {?} */
CreateAlertComponent.prototype.userMessage;
/** @type {?} */
CreateAlertComponent.prototype.dataText;
/** @type {?} */
CreateAlertComponent.prototype.dxgridPageSize;
/** @type {?} */
CreateAlertComponent.prototype.failDescription;
/** @type {?} */
CreateAlertComponent.prototype.percent;
/** @type {?} */
CreateAlertComponent.prototype.buttonText;
/** @type {?} */
CreateAlertComponent.prototype.onCloseModalError;
/** @type {?} */
CreateAlertComponent.prototype.onOkDelete;
/** @type {?} */
CreateAlertComponent.prototype.onOkConfirm;
/** @type {?} */
CreateAlertComponent.prototype.onCancelDelete;
/** @type {?} */
CreateAlertComponent.prototype.onCancelConfirm;
/** @type {?} */
CreateAlertComponent.prototype.onOkDeleteAttachment;
/** @type {?} */
CreateAlertComponent.prototype.onCancelDeleteAttachment;
/** @type {?} */
CreateAlertComponent.prototype.onClickBack;
/** @type {?} */
CreateAlertComponent.prototype.onCancelViewWarning;
/** @type {?} */
CreateAlertComponent.prototype.onCancelUploadValid;
/** @type {?} */
CreateAlertComponent.prototype.onDataErrorExcel;
/** @type {?} */
CreateAlertComponent.prototype.onClickExport;
/** @type {?} */
CreateAlertComponent.prototype.onClickDeleteExport;
/** @type {?} */
CreateAlertComponent.prototype.onOkClone;
/** @type {?} */
CreateAlertComponent.prototype.onOkReport;
/** @type {?} */
CreateAlertComponent.prototype.onCancelClone;
/** @type {?} */
CreateAlertComponent.prototype.onOkDiagramCancel;
/** @type {?} */
CreateAlertComponent.prototype.onCancelDiagramCancel;
/** @type {?} */
CreateAlertComponent.prototype.onCancelAddVOutlook;
/** @type {?} */
CreateAlertComponent.prototype.onOkAddVOutlook;
/** @type {?} */
CreateAlertComponent.prototype.onCancelAddMVara;
/** @type {?} */
CreateAlertComponent.prototype.onOkAddMVara;
/** @type {?} */
CreateAlertComponent.prototype.router;
}
export class CreateAlertModule {
}
CreateAlertModule.decorators = [
{ type: NgModule, args: [{
imports: [DxDataGridModule, FormsModule],
// , CommonModule
exports: [CreateAlertComponent],
declarations: [CreateAlertComponent]
},] }
];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vc29jLWFwcC1saWJyYXJ5LyIsInNvdXJjZXMiOlsibGliL2FsZXJ0L2FsZXJ0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBR1QsVUFBVSxFQUNWLFNBQVMsRUFFVCxZQUFZLEVBQ1osTUFBTSxFQUNOLFFBQVEsRUFDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsTUFBTSxFQUFpQixNQUFNLGlCQUFpQixDQUFDO0FBRXZELE9BQU8sRUFBQyxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBR3pFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQVUzQyxNQUFNOzs7O0lBRUosWUFBb0IsTUFBYzs7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO3VCQTBDeEIsQ0FBQzswQkFDRSxFQUFFO2lDQUVlLElBQUksWUFBWSxFQUFFOzBCQUN6QixJQUFJLFlBQVksRUFBRTsyQkFDakIsSUFBSSxZQUFZLEVBQUU7OEJBQ2YsSUFBSSxZQUFZLEVBQUU7K0JBQ2pCLElBQUksWUFBWSxFQUFFO29DQUNiLElBQUksWUFBWSxFQUFFO3dDQUNkLElBQUksWUFBWSxFQUFFOzJCQUMvQixJQUFJLFlBQVksRUFBRTttQ0FDVixJQUFJLFlBQVksRUFBRTttQ0FDbEIsSUFBSSxZQUFZLEVBQUU7Z0NBQ3JCLElBQUksWUFBWSxFQUFFOzZCQUNyQixJQUFJLFlBQVksRUFBRTttQ0FDWixJQUFJLFlBQVksRUFBRTt5QkFDNUIsSUFBSSxZQUFZLEVBQUU7MEJBQ2pCLElBQUksWUFBWSxFQUFFOzZCQUNmLElBQUksWUFBWSxFQUFFO2lDQUNkLElBQUksWUFBWSxFQUFFO3FDQUNkLElBQUksWUFBWSxFQUFFO21DQUNwQixJQUFJLFlBQVksRUFBRTsrQkFDdEIsSUFBSSxZQUFZLEVBQUU7Z0NBQ2pC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Q0FDTixNQUFNOzhCQUNOLE1BQU07K0JBQ04sTUFBTTsyQkFDTixNQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBcVFULE1BQU07OztZQU5MLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxXQUFXLENBQUM7O2dCQUN4QyxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQztnQkFDL0IsWUFBWSxFQUFFLENBQUMsb0JBQW9CLENBQUM7YUFFckMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgT25EZXN0cm95LFxuICBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGQsXG4gIEFmdGVyVmlld0luaXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT3V0cHV0LFxuICBOZ01vZHVsZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtGb3JtR3JvdXAsIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtEeERhdGFHcmlkQ29tcG9uZW50LCBEeERhdGFHcmlkTW9kdWxlfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xuaW1wb3J0IHtlbnZpcm9ubWVudH0gZnJvbSAnLi4vLi4vZW52aXJvbm1lbnRzL2Vudmlyb25tZW50JztcbmRlY2xhcmUgbGV0ICQ6IGFueTtcbmltcG9ydCB7Rm9ybXNNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCBDdXN0b21TdG9yZSBmcm9tICdkZXZleHRyZW1lL2RhdGEvY3VzdG9tX3N0b3JlJztcbi8vIGltcG9ydCB7UmVxdWVzdH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL3JlcXVlc3Quc2VydmljZSc7XG4vLyBpbXBvcnQge0NvbW1vbn0gZnJvbSBcIi4uL3NoYXJlZC9zZXJ2aWNlcy9jb21tb24uc2VydmljZVwiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtYWxlcnQnLFxuICBwcm92aWRlcnM6IFtdLFxuICB0ZW1wbGF0ZVVybDogJy4vLi9hbGVydC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQ3JlYXRlQWxlcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHsvLyAsIHByaXZhdGUgcmVxdWVzdDogUmVxdWVzdCwgcHJpdmF0ZSBjb21tb246IENvbW1vblxuXG4gICAgdGhpcy5kYXRhVGV4dCA9IHtcbiAgICAgIHVzZXJUaXRsZTogJycsXG4gICAgICB1c2VyTWVzc2FnZTogJydcbiAgICB9O1xuICB9XG5cbiAgQFZpZXdDaGlsZChEeERhdGFHcmlkQ29tcG9uZW50KSBkYXRhR3JpZDogRHhEYXRhR3JpZENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZ3JpZEV4cG9ydCcpIGdyaWRFeHBvcnQ6IER4RGF0YUdyaWRDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2dyaWRBbGVydFZhbGlkRXhjZWwnKSBncmlkQWxlcnRWYWxpZEV4Y2VsOiBEeERhdGFHcmlkQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdncmlkQWxlcnRFcnJvckV4Y2VsJykgZ3JpZEFsZXJ0RXJyb3JFeGNlbDogRHhEYXRhR3JpZENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnZ3JpZEFkdmFuY2UnKSBncmlkQWR2YW5jZTogRHhEYXRhR3JpZENvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnbXlNb2RhbFN1Y2Nlc3MnKSBtb2RhbFN1Y2Nlc3M6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ215TW9kYWxTdWNjZXNzV2FybmluZycpIG1vZGFsU3VjY2Vzc1dhcm5pbmc6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnbXlNb2RhbERlbGV0ZScpIG1vZGFsRGVsZXRlOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdteU1vZGFsQ29uZmlybScpIG1vZGFsQ29uZmlybTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbXlNb2RhbERlbGV0ZUF0dGFjaG1lbnQnKSBtb2RhbERlbGV0ZUF0dGFjaG1lbnQ6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ215TW9kYWxEZWxldGVXYXJuaW5nJykgbW9kYWxEZWxldGVXYXJuaW5nOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdteU1vZGFsU3VjY2Vzc0RlbGV0ZScpIG1vZGFsU3VjY2Vzc0RlbGV0ZTogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbXlNb2RhbEVkaXRTdWNjZXNzJykgbW9kYWxFZGl0U3VjY2VzczogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbXlNb2RhbFdhcm5pbmcnKSBtb2RhbFdhcm5pbmc6IEVsZW1lbnRSZWY7XG5cblxuICBAVmlld0NoaWxkKCdteU1vZGFsUmVwb3J0V2FybmluZycpIG15TW9kYWxSZXBvcnRXYXJuaW5nOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdteU1vZGFsRXJyb3InKSBtb2RhbEVycm9yOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdteU1vZGFsVmlld1dhcm5pbmcnKSBtb2RhbFZpZXdXYXJuaW5nOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdteU1vZGFsUHJvZ3Jlc3NCYXJXYXJuaW5nJykgbW9kYWxQcm9ncmVzc0Jhcldhcm5pbmc6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ215TW9kYWxVcGxvYWRJbWFnZVdhcm5pbmcnKSBtb2RhbFVwbG9hZEltYWdlV2FybmluZzogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnbXlNb2RhbFVwbG9hZEltYWdlVHlwZVdhcm5pbmcnKSBtb2RhbFVwbG9hZEltYWdlVHlwZVdhcm5pbmc6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnbXlNb2RhbFdhcm5pbmdOb1RleHRTZWFyY2gnKSBtb2RhbFdhcm5pbmdOb1RleHRTZWFyY2g6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ215TW9kYWxFcnJvckRhdGFFeGlzdGVkJykgbW9kYWxFcnJvckRhdGFFeGlzdGVkOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdteU1vZGFsRXJyb3JEZWxldGVCdXRIYXZlTWVudUdyb3VwJykgbW9kYWxFcnJvckRlbGV0ZUJ1dEhhdmVNZW51R3JvdXA6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ215TW9kYWxBZGRWT3V0bG9vaycpIG1vZGFsQWRkVk91dGxvb2s6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ215TW9kYWxBZGRNVmFyYScpIG1vZGFsQWRkTVZhcmE6IEVsZW1lbnRSZWY7XG5cbiAgdXNlck1lc3NhZ2U7XG4gIGRhdGFUZXh0O1xuICBkeGdyaWRQYWdlU2l6ZTtcbiAgZmFpbERlc2NyaXB0aW9uO1xuICBwZXJjZW50ID0gMDtcbiAgYnV0dG9uVGV4dCA9ICcnO1xuXG4gIEBPdXRwdXQoKSBvbkNsb3NlTW9kYWxFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uT2tEZWxldGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbk9rQ29uZmlybSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2FuY2VsRGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25DYW5jZWxDb25maXJtID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Pa0RlbGV0ZUF0dGFjaG1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNhbmNlbERlbGV0ZUF0dGFjaG1lbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNsaWNrQmFjayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2FuY2VsVmlld1dhcm5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNhbmNlbFVwbG9hZFZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25EYXRhRXJyb3JFeGNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2xpY2tFeHBvcnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNsaWNrRGVsZXRlRXhwb3J0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Pa0Nsb25lID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Pa1JlcG9ydCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2FuY2VsQ2xvbmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbk9rRGlhZ3JhbUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2FuY2VsRGlhZ3JhbUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIG9uQ2FuY2VsQWRkVk91dGxvb2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbk9rQWRkVk91dGxvb2sgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBvbkNhbmNlbEFkZE1WYXJhID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgb25Pa0FkZE1WYXJhID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIG5nT25Jbml0KCkge31cblxuICBhc3luYyBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdHJ5IHtcbiAgICAgICQodGhpcy5tb2RhbFN1Y2Nlc3MubmF0aXZlRWxlbWVudCkub24oJ2hpZGRlbi5icy5tb2RhbCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgLy8gcHV0IHlvdXIgZGVmYXVsdCBldmVudCBoZXJlXG5cbiAgICAgICAgdGhpcy5vbkNsaWNrQmFjay5lbWl0KCk7XG4gICAgICB9KTtcblxuICAgICAgJCh0aGlzLm1vZGFsRWRpdFN1Y2Nlc3MubmF0aXZlRWxlbWVudCkub24oJ2hpZGRlbi5icy5tb2RhbCcsIGFzeW5jICgpID0+IHtcbiAgICAgICAgLy8gcHV0IHlvdXIgZGVmYXVsdCBldmVudCBoZXJlXG4gICAgICAgIHRoaXMub25DbGlja0JhY2suZW1pdCgpO1xuICAgICAgfSk7XG5cbiAgICAgICQodGhpcy5tb2RhbEVycm9yLm5hdGl2ZUVsZW1lbnQpLm9uKCdoaWRkZW4uYnMubW9kYWwnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIHB1dCB5b3VyIGRlZmF1bHQgZXZlbnQgaGVyZVxuICAgICAgICAvLyBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy51cmxCYWNrXSk7XG4gICAgICAgIHRoaXMub25DbG9zZU1vZGFsRXJyb3IuZW1pdCgpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vICQodGhpcy5tb2RhbFZpZXdXYXJuaW5nLm5hdGl2ZUVsZW1lbnQpLm9uKCdoaWRkZW4uYnMubW9kYWwnLCBhc3luYyAoKSA9PiB7XG4gICAgICAvLyAgIC8vIHB1dCB5b3VyIGRlZmF1bHQgZXZlbnQgaGVyZVxuICAgICAgLy8gICAvLyBhd2FpdCB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy51cmxCYWNrXSk7XG4gICAgICAvLyAgIHRoaXMub25DYW5jZWxWaWV3V2FybmluZy5lbWl0KCk7XG4gICAgICAvLyB9KTtcblxuICAgICAgLy8g4Lib4Lij4Lix4LiaIGh0bWwgPGJvZHk+IOC5g+C4q+C5ieC4geC4peC4seC4muC5gOC4m+C5h+C4meC4m+C4geC4leC4tOC5gOC4oeC4t+C5iOC4reC5gOC4m+C4tOC4lC3guJvguLTguJQgbW9kYWxcbiAgICAgIC8vIGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0ID0gJzBweCc7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfVxuICB9XG5cbiAgb3Blbk1vZGFsKGRhdGEpIHtcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcjbXlNb2RhbERlbGV0ZScpKTtcbiAgICBjb25zb2xlLmxvZyhkYXRhKTtcbiAgICAvLyB0aGlzLnVzZXJNZXNzYWdlID0gdXNlck1lc3NhZ2U7XG4gICAgLy8gbGV0IGRhdGEgPVxuICAgIC8vIGlmKCl7XG4gICAgLy9cbiAgICAvLyB9XG4gICAgLy8g4LiW4LmJ4Liy4LmA4Lib4LmH4LiZIG15TW9kYWxFeHBvcnRMb2FkaW5nIOC4iOC4sOC5guC4ouC4mSBkYXRhIOC4oeC4suC4leC5iOC4suC4h+C4geC4seC4mVxuICAgIC8vIGlmIChkYXRhLm1vZGFsSWQgPT09ICdteU1vZGFsRXhwb3J0TG9hZGluZycpIHtcbiAgICAvLyAgIHRoaXMuZGF0YUV4cG9ydCA9IGRhdGEudXNlck1lc3NhZ2UgPyBkYXRhLnVzZXJNZXNzYWdlLmRhdGFFeHBvcnQgOiBbXTtcbiAgICAvLyAgIHRoaXMuYnV0dG9uVGV4dCA9IGRhdGEudXNlck1lc3NhZ2UgPyBkYXRhLnVzZXJNZXNzYWdlLmJ1dHRvblRleHQgOiAnUERGJztcbiAgICAvLyB9IGVsc2Uge1xuICAgICAgdGhpcy5kYXRhVGV4dCA9IHtcbiAgICAgICAgdXNlclRpdGxlOiBkYXRhLnVzZXJUaXRsZSxcbiAgICAgICAgdXNlck1lc3NhZ2U6IGRhdGEudXNlck1lc3NhZ2VcbiAgICAgIH07XG4gICAgLy8gfVxuXG4gICAgaWYgKGRhdGEubW9kYWxJZCA9PT0gJ215TW9kYWxEZWxldGUnKSB7XG4gICAgICAvLyAkKHRoaXMubW9kYWxEZWxldGUubmF0aXZlRWxlbWVudCkubW9kYWwoJ3Nob3cnKTtcbiAgICAgICQodGhpcy5tb2RhbERlbGV0ZS5uYXRpdmVFbGVtZW50KS5tb2RhbCh7XG4gICAgICAgIGJhY2tkcm9wOiAnc3RhdGljJ1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChkYXRhLm1vZGFsSWQgPT09ICdteU1vZGFsQ29uZmlybScpIHtcbiAgICAgICQodGhpcy5tb2RhbENvbmZpcm0ubmF0aXZlRWxlbWVudCkubW9kYWwoJ3Nob3cnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubW9kYWxJZCA9PT0gJ215TW9kYWxEZWxldGVBdHRhY2htZW50Jykge1xuICAgICAgJCh0aGlzLm1vZGFsRGVsZXRlQXR0YWNobWVudC5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5tb2RhbElkID09PSAnbXlNb2RhbERlbGV0ZVdhcm5pbmcnKSB7XG4gICAgICAkKHRoaXMubW9kYWxEZWxldGVXYXJuaW5nLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdzaG93Jyk7XG4gICAgfSBlbHNlIGlmIChkYXRhLm1vZGFsSWQgPT09ICdteU1vZGFsU3VjY2Vzc0RlbGV0ZScpIHtcbiAgICAgICQodGhpcy5tb2RhbFN1Y2Nlc3NEZWxldGUubmF0aXZlRWxlbWVudCkubW9kYWwoJ3Nob3cnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubW9kYWxJZCA9PT0gJ215TW9kYWxTdWNjZXNzJykge1xuICAgICAgJCh0aGlzLm1vZGFsU3VjY2Vzcy5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5tb2RhbElkID09PSAnbXlNb2RhbFN1Y2Nlc3NXYXJuaW5nJykge1xuICAgICAgJCh0aGlzLm1vZGFsU3VjY2Vzc1dhcm5pbmcubmF0aXZlRWxlbWVudCkubW9kYWwoJ3Nob3cnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubW9kYWxJZCA9PT0gJ215TW9kYWxFZGl0U3VjY2VzcycpIHtcbiAgICAgICQodGhpcy5tb2RhbEVkaXRTdWNjZXNzLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdzaG93Jyk7XG4gICAgfSBlbHNlIGlmIChkYXRhLm1vZGFsSWQgPT09ICdteU1vZGFsV2FybmluZycpIHtcbiAgICAgICQodGhpcy5tb2RhbFdhcm5pbmcubmF0aXZlRWxlbWVudCkubW9kYWwoJ3Nob3cnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubW9kYWxJZCA9PT0gJ215TW9kYWxSZXBvcnRXYXJuaW5nJykge1xuICAgICAgJCh0aGlzLm15TW9kYWxSZXBvcnRXYXJuaW5nLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdzaG93Jyk7XG4gICAgLy8gfSBlbHNlIGlmIChkYXRhLm1vZGFsSWQgPT09ICdteU1vZGFsVmlld1dhcm5pbmcnKSB7XG4gICAgLy8gICAkKHRoaXMubW9kYWxWaWV3V2FybmluZy5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5tb2RhbElkID09PSAnbXlNb2RhbFVwbG9hZEltYWdlV2FybmluZycpIHtcbiAgICAgICQodGhpcy5tb2RhbFVwbG9hZEltYWdlV2FybmluZy5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5tb2RhbElkID09PSAnbXlNb2RhbFVwbG9hZEltYWdlVHlwZVdhcm5pbmcnKSB7XG4gICAgICAkKHRoaXMubW9kYWxVcGxvYWRJbWFnZVR5cGVXYXJuaW5nLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdzaG93Jyk7XG4gICAgfSBlbHNlIGlmIChkYXRhLm1vZGFsSWQgPT09ICdteU1vZGFsV2FybmluZ05vVGV4dFNlYXJjaCcpIHtcbiAgICAgICQodGhpcy5tb2RhbFdhcm5pbmdOb1RleHRTZWFyY2gubmF0aXZlRWxlbWVudCkubW9kYWwoJ3Nob3cnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubW9kYWxJZCA9PT0gJ215TW9kYWxFcnJvckRhdGFFeGlzdGVkJykge1xuICAgICAgJCh0aGlzLm1vZGFsRXJyb3JEYXRhRXhpc3RlZC5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5tb2RhbElkID09PSAnbXlNb2RhbEVycm9yRGVsZXRlQnV0SGF2ZU1lbnVHcm91cCcpIHtcbiAgICAgICQodGhpcy5tb2RhbEVycm9yRGVsZXRlQnV0SGF2ZU1lbnVHcm91cC5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH0gZWxzZSBpZiAoZGF0YS5tb2RhbElkID09PSAnbXlNb2RhbEFkZFZPdXRsb29rJykge1xuICAgICAgJCh0aGlzLm1vZGFsQWRkVk91dGxvb2submF0aXZlRWxlbWVudCkubW9kYWwoJ3Nob3cnKTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubW9kYWxJZCA9PT0gJ215TW9kYWxBZGRNVmFyYScpIHtcbiAgICAgICQodGhpcy5tb2RhbEFkZE1WYXJhLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdzaG93Jyk7XG4gICAgfSBlbHNlIGlmIChkYXRhLm1vZGFsSWQgPT09ICdtb2RhbEVycm9yJykge1xuICAgICAgICAkKHRoaXMubW9kYWxFcnJvci5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH0gZWxzZSB7XG4gICAgICAkKHRoaXMubW9kYWxFcnJvci5uYXRpdmVFbGVtZW50KS5tb2RhbCgnc2hvdycpO1xuICAgIH1cblxuICAgIC8vIOC4m+C4o+C4seC4miBodG1sIDxib2R5PiDguYPguKvguYnguIHguKXguLHguJrguYDguJvguYfguJnguJvguIHguJXguLTguYDguKHguLfguYjguK3guYDguJvguLTguJQt4Lib4Li04LiUIG1vZGFsXG4gICAgZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnMHB4JztcbiAgfVxuXG4gIGNsb3NlTW9kYWwobW9kYWxJZCkge1xuICAgIGlmIChtb2RhbElkID09PSAnbXlNb2RhbERlbGV0ZScpIHtcbiAgICAgICQodGhpcy5tb2RhbERlbGV0ZS5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgIH0gZWxzZSBpZiAobW9kYWxJZCA9PT0gJ215TW9kYWxDb25maXJtJykge1xuICAgICAgJCh0aGlzLm1vZGFsQ29uZmlybS5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgIH0gZWxzZSBpZiAobW9kYWxJZCA9PT0gJ215TW9kYWxEZWxldGVBdHRhY2htZW50Jykge1xuICAgICAgJCh0aGlzLm1vZGFsRGVsZXRlQXR0YWNobWVudC5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgIH0gZWxzZSBpZiAobW9kYWxJZCA9PT0gJ215TW9kYWxEZWxldGVXYXJuaW5nJykge1xuICAgICAgJCh0aGlzLm1vZGFsRGVsZXRlV2FybmluZy5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgIH0gZWxzZSBpZiAobW9kYWxJZCA9PT0gJ215TW9kYWxBZGRWT3V0bG9vaycpIHtcbiAgICAgICQodGhpcy5tb2RhbEFkZFZPdXRsb29rLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSBlbHNlIGlmIChtb2RhbElkID09PSAnbXlNb2RhbEFkZE1WYXJhJykge1xuICAgICAgJCh0aGlzLm1vZGFsQWRkTVZhcmEubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICB9IGVsc2UgaWYgKG1vZGFsSWQgPT09ICdteU1vZGFsU3VjY2Vzc0RlbGV0ZScpIHtcbiAgICAgICQodGhpcy5tb2RhbFN1Y2Nlc3NEZWxldGUubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcblxuICAgIH0gZWxzZSBpZiAobW9kYWxJZCA9PT0gJ215TW9kYWxTdWNjZXNzJykge1xuICAgICAgJCh0aGlzLm1vZGFsU3VjY2Vzcy5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuXG4gICAgfSBlbHNlIGlmIChtb2RhbElkID09PSAnbXlNb2RhbFN1Y2Nlc3NXYXJuaW5nJykge1xuICAgICAgJCh0aGlzLm1vZGFsU3VjY2Vzc1dhcm5pbmcubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcblxuICAgIH0gZWxzZSBpZiAobW9kYWxJZCA9PT0gJ215TW9kYWxFZGl0U3VjY2VzcycpIHtcbiAgICAgICQodGhpcy5tb2RhbEVkaXRTdWNjZXNzLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSBlbHNlIGlmIChtb2RhbElkID09PSAnbXlNb2RhbFdhcm5pbmcnKSB7XG4gICAgICAkKHRoaXMubW9kYWxXYXJuaW5nLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSBlbHNlIGlmIChtb2RhbElkID09PSAnbXlNb2RhbFJlcG9ydFdhcm5pbmcnKSB7XG4gICAgICAkKHRoaXMubXlNb2RhbFJlcG9ydFdhcm5pbmcubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICAvLyB9IGVsc2UgaWYgKG1vZGFsSWQgPT09ICdteU1vZGFsVmlld1dhcm5pbmcnKSB7XG4gICAgLy8gICAkKHRoaXMubW9kYWxWaWV3V2FybmluZy5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgIH0gZWxzZSBpZiAobW9kYWxJZCA9PT0gJ215TW9kYWxVcGxvYWRJbWFnZVdhcm5pbmcnKSB7XG4gICAgICAkKHRoaXMubW9kYWxVcGxvYWRJbWFnZVdhcm5pbmcubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICB9IGVsc2UgaWYgKG1vZGFsSWQgPT09ICdteU1vZGFsVXBsb2FkSW1hZ2VUeXBlV2FybmluZycpIHtcbiAgICAgICQodGhpcy5tb2RhbFVwbG9hZEltYWdlVHlwZVdhcm5pbmcubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICB9IGVsc2UgaWYgKG1vZGFsSWQgPT09ICdteU1vZGFsV2FybmluZ05vVGV4dFNlYXJjaCcpIHtcbiAgICAgICQodGhpcy5tb2RhbFdhcm5pbmdOb1RleHRTZWFyY2gubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICB9IGVsc2UgaWYgKG1vZGFsSWQgPT09ICdteU1vZGFsRXJyb3JEYXRhRXhpc3RlZCcpIHtcbiAgICAgICQodGhpcy5tb2RhbEVycm9yRGF0YUV4aXN0ZWQubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICB9IGVsc2UgaWYgKG1vZGFsSWQgPT09ICdteU1vZGFsRXJyb3JEZWxldGVCdXRIYXZlTWVudUdyb3VwJykge1xuICAgICAgJCh0aGlzLm1vZGFsRXJyb3JEZWxldGVCdXRIYXZlTWVudUdyb3VwLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdoaWRlJyk7XG4gICAgfSBlbHNlIGlmIChtb2RhbElkID09PSAnbXlNb2RhbEFkZFZPdXRsb29rJykge1xuICAgICAgICAkKHRoaXMubW9kYWxBZGRWT3V0bG9vay5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdjbG9zZU1vZGFsIEVycm9yJyk7XG4gICAgfVxuICB9XG4gIHNob3dTdHJpbmdWYWxpZERhdGFFeGNlbChkYXRhKSB7XG4gICAgbGV0IHRleHQgPSAnJztcbiAgICBpZiAoZGF0YS5kYXRhICYmIGRhdGEuZGF0YS5pdGVtT2piICYmIGRhdGEuZGF0YS5pdGVtT2piLmZhaWxEZXNjcmlwdGlvbikge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkYXRhLmRhdGEuaXRlbU9qYi5mYWlsRGVzY3JpcHRpb24ubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgdGV4dCArPSAnWycgKyBkYXRhLmRhdGEuaXRlbU9qYi5mYWlsRGVzY3JpcHRpb25bal0uY29sdW1lTmFtZSArICddJyArICc6XCInICsgZGF0YS5kYXRhLml0ZW1PamIuZmFpbERlc2NyaXB0aW9uW2pdLnRleHQgKyAnXCIsIDxici8+JztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICBzaG93U3RyaW5nRXJyb3JEYXRhRXhjZWwoZmFpbERlc2NyaXB0aW9uKSB7XG4gICAgbGV0IHRleHQgPSAnJztcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGZhaWxEZXNjcmlwdGlvbi5sZW5ndGg7IGorKykge1xuICAgICAgdGV4dCArPSAnWycgKyBmYWlsRGVzY3JpcHRpb25bal0uY29sdW1lTmFtZSArICddJyArICc6XCInICsgZmFpbERlc2NyaXB0aW9uW2pdLnRleHQgKyAnXCIsIDxici8+JztcbiAgICB9XG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICBjbG9zZVByb2dyZXNzYmFyKCkge1xuICAgICQodGhpcy5tb2RhbFByb2dyZXNzQmFyV2FybmluZy5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICB9XG5cbiAgb25Pa0RlbGV0ZU1vZGFsKCkge1xuICAgICQodGhpcy5tb2RhbERlbGV0ZS5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgIHRoaXMub25Pa0RlbGV0ZS5lbWl0KCk7XG4gIH1cbiAgb25Pa0NvbmZpcm1Nb2RhbCgpIHtcbiAgICAkKHRoaXMubW9kYWxDb25maXJtLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdoaWRlJyk7XG4gICAgdGhpcy5vbk9rQ29uZmlybS5lbWl0KCk7XG4gIH1cblxuICBvbk9rRGVsZXRlQXR0YWNobWVudE1vZGFsKCkge1xuICAgICQodGhpcy5tb2RhbERlbGV0ZUF0dGFjaG1lbnQubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICB0aGlzLm9uT2tEZWxldGVBdHRhY2htZW50LmVtaXQoKTtcbiAgfVxuXG4gIG9uT2tSZXBvcnRNb2RhbCgpIHtcbiAgICAkKHRoaXMubXlNb2RhbFJlcG9ydFdhcm5pbmcubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICB0aGlzLm9uT2tSZXBvcnQuZW1pdCgpO1xuICB9XG5cbiAgb25DYW5jZWxEZWxldGVNb2RhbCgpIHtcbiAgICB0aGlzLm9uQ2FuY2VsRGVsZXRlLmVtaXQoKTtcbiAgfVxuICBvbkNhbmNlbENvbmZpcm1Nb2RhbCgpIHtcbiAgICB0aGlzLm9uQ2FuY2VsQ29uZmlybS5lbWl0KCk7XG4gIH1cblxuICBvbkNhbmNlbERlbGV0ZUF0dGFjaG1lbnRNb2RhbCgpIHtcbiAgICB0aGlzLm9uQ2FuY2VsRGVsZXRlQXR0YWNobWVudC5lbWl0KCk7XG4gIH1cblxuICBvbkNsaWNrQmFja01vZGFsKCkge1xuICAgIHRoaXMub25DbGlja0JhY2suZW1pdCgpO1xuICB9XG5cbiAgb25DYW5jZWxWaWV3V2FybmluZ01vZGFsKCkge1xuICAgIGNvbnNvbGUubG9nKCdoamgnKTtcbiAgICB0aGlzLm9uQ2FuY2VsVmlld1dhcm5pbmcuZW1pdCgpO1xuICB9XG5cbiAgb25DYW5jZWxVcGxvYWRWYWxpZE1vZGFsKCkge1xuICAgIHRoaXMub25DYW5jZWxVcGxvYWRWYWxpZC5lbWl0KCk7XG4gIH1cblxuICBvbkRhdGFFcnJvckV4Y2VsTW9kYWwoKSB7XG4gICAgdGhpcy5vbkRhdGFFcnJvckV4Y2VsLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ2xvc2VNb2RhbEVycm9yTW9kYWwoKSB7XG4gICAgdGhpcy5vbkNsb3NlTW9kYWxFcnJvci5lbWl0KCk7XG4gIH1cblxuICBvbkNhbmNlbENsb25lTW9kYWwoKSB7XG4gICAgdGhpcy5vbkNhbmNlbENsb25lLmVtaXQoKTtcbiAgfVxuXG4gIG9uQ2FuY2VsQWRkVk91dGxvb2tNb2RhbCgpIHtcbiAgICAgICQodGhpcy5tb2RhbEFkZFZPdXRsb29rLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdoaWRlJyk7XG4gICAgICB0aGlzLm9uQ2FuY2VsQWRkVk91dGxvb2suZW1pdCgpO1xuICB9XG5cbiAgb25Pa0FkZFZPdXRsb29rTW9kYWwoKSB7XG4gICAgICAkKHRoaXMubW9kYWxBZGRWT3V0bG9vay5uYXRpdmVFbGVtZW50KS5tb2RhbCgnaGlkZScpO1xuICAgICAgdGhpcy5vbk9rQWRkVk91dGxvb2suZW1pdCgpO1xuICB9XG5cbiAgb25DYW5jZWxBZGRNVmFyYU1vZGFsKCkge1xuICAgICAgJCh0aGlzLm1vZGFsQWRkTVZhcmEubmF0aXZlRWxlbWVudCkubW9kYWwoJ2hpZGUnKTtcbiAgICAgIHRoaXMub25DYW5jZWxBZGRNVmFyYS5lbWl0KCk7XG4gIH1cblxuICBvbk9rQWRkTVZhcmFNb2RhbCgpIHtcbiAgICAgICQodGhpcy5tb2RhbEFkZE1WYXJhLm5hdGl2ZUVsZW1lbnQpLm1vZGFsKCdoaWRlJyk7XG4gICAgICB0aGlzLm9uT2tBZGRNVmFyYS5lbWl0KCk7XG4gIH1cblxuICBvbkNhbmNlbERpYWdyYW1DYW5jZWxNb2RhbCgpIHtcbiAgICB0aGlzLm9uQ2FuY2VsQWRkVk91dGxvb2suZW1pdCgpO1xuICB9XG4gIC8vIGV4cG9ydE9uQ29udGVudFJlYWR5KGUpIHtcbiAgLy8gICB0aGlzLmNvbW1vbi5yZXNwb25zaXZlTW9kYWxFeHBvcnQodGhpcy5ncmlkRXhwb3J0KTtcbiAgLy8gfVxufVxuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbRHhEYXRhR3JpZE1vZHVsZSwgRm9ybXNNb2R1bGVdLCAvLyAsIENvbW1vbk1vZHVsZVxuICBleHBvcnRzOiBbQ3JlYXRlQWxlcnRDb21wb25lbnRdLFxuICBkZWNsYXJhdGlvbnM6IFtDcmVhdGVBbGVydENvbXBvbmVudF1cblxufSlcbmV4cG9ydCBjbGFzcyBDcmVhdGVBbGVydE1vZHVsZSB7XG59XG4iXX0=